poedit-3.5/0000755000175100001770000000000014664354154007665 500000000000000poedit-3.5/COPYING0000644000175100001770000000204614664354065010643 00000000000000Copyright (c) 1999-2024 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.5/configure.ac0000644000175100001770000002101514664354065012073 00000000000000dnl Process this file with autoconf to produce a configure script. AC_PREREQ([2.61]) AC_INIT([poedit], [3.5], [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([ Please check that wx-config is in path, the directory where wxWidgets libraries are installed (returned by 'wx-config --unicode --libs' command) is in LD_LIBRARY_PATH or equivalent variable and wxWidgets is version 3.0.0 or above, with Unicode build available. ]) fi dnl Check if wxWidgets includes XRC library and if it does, don't build it dnl ourselves: AC_MSG_CHECKING([if wxWidgets includes XRC]) saved_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS $WX_CXXFLAGS" 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!]) ]) CXXFLAGS="$saved_CXXFLAGS" CXXFLAGS="$CXXFLAGS $WX_CXXFLAGS" WXRC_CHECK([], [AC_MSG_ERROR([wxrc is needed to compile Poedit.])]) AC_CHECK_FUNCS([mkdtemp]) 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.5/configure0000755000175100001770000116062014664354142011517 00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.71 for poedit 3.5. # # 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.5' PACKAGE_STRING='poedit 3.5' 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.5 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.5:";; 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.5 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.5, 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.5' 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_11+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cxx_11=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_98+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cxx_98=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" >&5 printf %s "checking for LIBSECRET... " >&6; } if test -n "$LIBSECRET_CFLAGS"; then pkg_cv_LIBSECRET_CFLAGS="$LIBSECRET_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { 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_LIBS=`$WX_CONFIG_WITH_ARGS --libs $WXLIBS_USED` { 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 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 $? " Please check that wx-config is in path, the directory where wxWidgets libraries are installed (returned by 'wx-config --unicode --libs' command) is in LD_LIBRARY_PATH or equivalent variable and wxWidgets is version 3.0.0 or above, with Unicode build available. " "$LINENO" 5 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if wxWidgets includes XRC" >&5 printf %s "checking if wxWidgets includes XRC... " >&6; } saved_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS $WX_CXXFLAGS" 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 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 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 fi pkg_failed=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ICU" >&5 printf %s "checking for ICU... " >&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" >&5 printf %s "checking for GTKSPELL... " >&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 LUCENE" >&5 printf %s "checking for LUCENE... " >&6; } if test -n "$LUCENE_CFLAGS"; then pkg_cv_LUCENE_CFLAGS="$LUCENE_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { 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" >&5 printf %s "checking for PUGIXML... " >&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.5, 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.5 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.5/docs/0000755000175100001770000000000014664354152010613 500000000000000poedit-3.5/docs/man_fix.xsl0000644000175100001770000000134014664354065012705 00000000000000 poedit-3.5/docs/Makefile.am0000644000175100001770000000015014664354065012566 00000000000000 dist_man_MANS = poedit.1 EXTRA_DIST = generate-docs.make man_asciidoc.conf man_fix.xsl poedit_man.txt poedit-3.5/docs/generate-docs.make0000644000175100001770000000047614664354065014124 00000000000000 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.5/docs/poedit_man.txt0000644000175100001770000000127014664354065013416 00000000000000POEDIT(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-2024 Vaclav Slavik. Free use of this software is granted under the terms of the MIT license. poedit-3.5/docs/man_asciidoc.conf0000644000175100001770000000064014664354065014016 00000000000000[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.5/docs/Makefile.in0000644000175100001770000003735714664354142012616 00000000000000# 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.5/docs/poedit.10000644000175100001770000000411314664354065012103 00000000000000'\" 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\-2024 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.5/net.poedit.Poedit.appdata.xml0000644000175100001770000000300414664354065015232 00000000000000 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://crowdin.com/project/poedit translation gettext po localization i18n l10n wordpress xliff flutter net.poedit.Poedit.desktop poedit Václav Slavík poedit
poedit-3.5/aclocal.m40000644000175100001770000015705114664354142011453 00000000000000# 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 utilise pkg-config. -*- Autoconf -*- # serial 11 (pkg-config-0.29.1) 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.1]) 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 occurence 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 $1]) _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.5/bootstrap0000755000175100001770000000054514664354065011555 00000000000000#!/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.5/NEWS0000644000175100001770000011274414664354065010316 00000000000000Version 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. 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.5/Makefile.am0000644000175100001770000000076014664354065011645 00000000000000 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 poedit-3.5/README.md0000644000175100001770000000751714664354065011077 00000000000000 # 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.5/locales/0000755000175100001770000000000014664354154011307 500000000000000poedit-3.5/locales/da.po0000644000175100001770000017557314664354153012174 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "Skjul denne notifikation" msgid "Don’t Show Again" msgstr "Vis ikke igen" msgid "Don’t show again" msgstr "Vis ikke igen" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(Nye: %i, forældede: %i)" msgid "Collecting source files…" msgstr "Indsamler kildefiler…" msgid "Extracting translatable strings…" msgstr "Udpakker oversættelige strenge…" msgid "Failed to load file with extracted translations." msgstr "Kunne ikke indlæse filen med udpakkede oversættelser." msgid "Merging differences…" msgstr "Fletter forskelle…" msgid "Updating translations" msgstr "Opdaterer oversættelser" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "Filen “%s” kunne ikke åbnes." msgid "Invalid file" msgstr "Ugyldig fil" #, c-format msgid "Malformed header: “%s”" msgstr "Forkert udformet header: “%s”" msgid "PO Translation Files" msgstr "PO-oversættelsesfiler" msgid "POT Translation Templates" msgstr "POT-oversættelsesskabeloner" msgid "XLIFF Translation Files" msgstr "XLIFF-oversættelsesfiler" msgid "JSON Translation Files" msgstr "JSON-oversættelsesfiler" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "Flutter-oversættelsesfiler" msgid "All Translation Files" msgstr "Alle oversættelsesfiler" msgid "The file is in a format not recognized by Poedit." msgstr "Filen har et af Poedit ukendt format." 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." #, c-format msgid "Reading file content failed with the following error: %s" msgstr "Læsning af filindhold mislykkedes med flg. fejl: %s" #, 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." #, c-format msgid "Couldn’t save file %s." msgstr "Kunne ikke gemme filen %s." msgid "Screenshots:" msgstr "Skærmfoto:" #, 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." #, 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)." msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "PO-filfejl: Entalsform msgstr anvendt sammen med msgid_plural" msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "PO-filfejl: Flertalsform msgstr anvendt uden msgid_plural" msgid "Couldn’t load the file, it is probably damaged." msgstr "Kunne ikke indlæse filen, den er sandsynligvis ødelagt." msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "Fejl under indlæsning af filen. Visse data kan som følge heraf mangle eller " "være ødelagte." 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)." #, 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." msgid "Error saving file" msgstr "Fejl under lagring af fil" #, c-format msgid "“%s” is not a valid POT file." msgstr "\"%s\" er ikke en gyldig POT-fil." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "En fejl opstod under indlæsningen af XLIFF-filen %s" #, 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 msgid "Broken markup in translation string." msgstr "Fejlbehæftet markup i oversættelsesstrengen." msgid "(Use default language)" msgstr "(vælg standardsprog)" msgid "Language selection" msgstr "Sprogvalg" msgid "Select your preferred language" msgstr "Vælg dit foretrukne sprog" msgid "You must restart Poedit for this change to take effect." msgstr "Du skal genstarte Poedit før denne ændring træder i kraft." msgid "Add Account" msgstr "Tilføj konto" msgid "Add account" msgstr "Tilføj konto" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "Læs mere om %s" 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." msgid "How does cloud sync work?" msgstr "Hvordan fungerer cloud-synk?" msgid "Account" msgstr "Konto" msgid "(not signed in)" msgstr "(ikke logget ind)" msgid "File" msgstr "Fil" msgid "Open cloud translation" msgstr "Åbn cloud-oversættelse" msgid "Manage accounts" msgstr "Håndtér konti" msgid "Project:" msgstr "Projekt:" msgid "Language:" msgstr "Sprog:" msgid "Sign in to Cloud Account" msgstr "Log ind på Cloud-konto" msgid "Sign in to cloud account" msgstr "Log ind på cloud-konto" msgid "No translation projects listed in your account." msgstr "Ingen oversættelsesprojekter opført i kontoen." msgid "Downloading latest translations…" msgstr "Downloader seneste oversættelser…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #, c-format msgid "Sign in to %s" msgstr "Log ind på %s" msgid "Syncing" msgstr "Synkronisering" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, 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. #, c-format msgid "Uploading translations to %s failed." msgstr "Upload af oversættelser til %s mislykkedes." msgid "Syncing error" msgstr "Synkfejl" msgid "Add" msgstr "Tilføj" msgid "Unknown Crowdin error." msgstr "Ukendt Crowdin-fejl." msgid "Not authorized, please sign in again." msgstr "Ikke godkendt, log venligst ind igen." msgid "Downloading translations is disabled in this project." msgstr "Download af oversættelser er deaktiveret i dette projekt." msgid "Sign In" msgstr "Log ind" msgid "Sign in" msgstr "Log ind" msgid "Sign Out" msgstr "Log ud" msgid "Sign out" msgstr "Log ud" msgid "Learn more about Crowdin" msgstr "Læs mere om Crowdin" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" "Crowdin er en online lokaliseringshåndteringsplatform og et " "oversættelsessamarbejdsværktøj." msgid "Waiting for authentication…" msgstr "Venter på godkendelse…" msgid "Updating user information…" msgstr "Opdaterer brugeroplysninger…" msgid "Sign in to Crowdin" msgstr "Log ind på Crowdin" msgid "Syncing with Crowdin failed." msgstr "Synkronisering med Crowdin mislykkedes." msgid "Crowdin error" msgstr "Crowdin-fejl" msgid "Uploading translations…" msgstr "Uploader oversættelser…" msgid "&Copy" msgstr "Kopiér (&C)" msgid "Learn more" msgstr "Find ud af mere" msgid "&Help" msgstr "&Hjælp" msgid "MO files can’t be directly edited in Poedit." msgstr "MO-filer kan ikke redigeres direkte i Poedit." msgid "Error opening file" msgstr "Fejl ved åbning af filen" 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." msgid "don’t delete temporary files (for debugging)" msgstr "slet ikke midlertidige filer (til fejlfinding)" msgid "handle a poedit:// URI" msgstr "håndtér en poedit://-URI" msgid "go to item at given line number" msgstr "gå til emnet på et givent linjenummer" msgid "Failed to communicate with Poedit process." msgstr "Mislykkedes at kommunikere med Poedit-proces." #, c-format msgid "Unhandled exception occurred: %s" msgstr "Uhåndteret undtagelse opstod: %s" msgid "Select translation template" msgstr "Vælg oversættelsesskabelon" msgid "Select translation file" msgstr "Vælg oversættelsesfil" msgid "Poedit is an easy to use translation editor." msgstr "Poedit er et letanvendeligt oversættelsesværktøj." msgid "You can’t drop more than one file on Poedit window." msgstr "Maks. én fil kan droppes i Poedit-vinduet." #, c-format msgid "File “%s” is not a translation file." msgstr "Filen \"%s\" er ikke en oversættelsesfil." #, c-format msgid "File “%s” doesn’t exist." msgstr "Filen \"%s\" findes ikke." 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". #, 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." msgid "Install" msgstr "Installer" #, c-format msgid "The file “%s” has been changed by another application." msgstr "Filen “%s” er blevet ændret af en anden applikation." msgid "Reload file" msgstr "Genindlæs fil" 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." msgid "Ignore" msgstr "Ignorer" msgid "Reload File" msgstr "Genindlæs fil" msgid "The file has been modified. Do you want to save changes?" msgstr "Filen er blevet ændret. Vil du gemme ændringerne?" msgid "Save changes" msgstr "Gem ændringer" msgid "Your changes will be lost if you don’t save them." msgstr "Dine ændringer vil gå tabt hvis du ikke gemmer dem." msgid "Save" msgstr "Gem" msgid "Do&n’t save" msgstr "Ge&m ikke" msgid "Don’t Save" msgstr "Gem ikke" 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." msgid "Cancel" msgstr "Annullér" msgid "Save Anyway" msgstr "Gem alligevel" msgid "Save anyway" msgstr "Gem alligevel" msgid "Save as…" msgstr "Gem som…" msgid "Compile to…" msgstr "Kompilér til…" msgid "Compiled Translation Files" msgstr "Kompilerede oversættelsesfiler" msgid "Export to HTML…" msgstr "Eksportér til HTML…" msgid "HTML Files" msgstr "HTML-filer" #, c-format msgid "In: %s" msgstr "I: %s" msgid "Source code not available." msgstr "Kildekoden er ikke tilgængelig." msgid "Updating failed" msgstr "Opdatering mislykkedes" 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." msgid "Permission denied." msgstr "Adgang nægtet." 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. 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. 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." msgid "Translation entries in the file are probably incorrect." msgstr "Oversættelsesposter i filen er sandsynligvis forkerte." msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "Opdatering af filen mislykkedes. Klik på 'Detaljer >>' for detaljer." msgid "Open translation template" msgstr "Åbn oversættelsesskabelon" #, 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." msgid "Validation results" msgstr "Valideringsresultatet" 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." msgid "The file was saved safely." msgstr "Filen blev gemt sikkert." 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." 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." 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." msgid "The file cannot be compiled into the MO format and used." msgstr "Filen kan ikke kompileres til MO-formatet og bruges." msgid "No problems with the translation found." msgstr "Der blev ikke fundet nogle problemer med oversættelsen." #, 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." msgid "The translation is ready for use." msgstr "Oversættelsen er klar til brug." #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "Poedit rettede automatisk ugyldigt indhold i filen \"%s\"." msgid "" "The file contained duplicate items, which is not allowed in PO files and " "would prevent the file from being used. Poedit fixed the issue, but you " "should review translations of any items marked as 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." msgid "Language of the translation isn’t set." msgstr "Oversættelsessproget er ikke angivet." msgid "Set Language" msgstr "Angiv sprog" 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)." msgid "" "Suggestions are not available if the translation language is not set " "correctly. Other features, such as plural forms, may be affected as well." msgstr "" "Forslag er ikke tilgængelige hvis oversættelsessproget ikke er angivet " "korrekt. Andre ting, såsom flertalsformer kan også blive påvirket." msgid "Language of the translation is the same as source language." msgstr "Oversættelsessproget er det samme som kildesproget." msgid "Fix Language" msgstr "Ret sprog" msgid "Fix language" msgstr "Ret sprog" msgid "" "This 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." 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" msgid "Required header Plural-Forms is missing." msgstr "Det påkrævede filhovede Plural-Forms mangler." #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Syntaksfejl i Plural-Forms-filhovede (\"%s\")." msgid "Fix the Header" msgstr "Ret filhovedet" 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". #, 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.")" msgid "Review" msgstr "Korrektur" msgid "Would you like to use English for source text?" msgstr "Vil du bruge engelsk som kildetekst?" #, 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" msgid "Load English" msgstr "Indlæs engelsk" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Oversat: %d af %d (%d %%)" #, c-format msgid "Remaining: %d" msgstr "Resterende: %d" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d fejl" msgstr[1] "%d fejl" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d post" msgstr[1] "%d poster" msgid " (unsaved)" msgstr " (ikke gemt)" msgid " (modified)" msgstr " (ændret)" #, c-format msgid "Failed to update translation memory: %s" msgstr "Kunne ikke opdatere oversættelseshukommelsen: %s" msgid "Remove same-as-source translations" msgstr "Fjern samme-som-kilde oversættelser" 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?" 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." msgid "Keep" msgstr "Behold" msgid "Remove" msgstr "Fjern" msgid "Purge deleted translations" msgstr "Tøm slettede oversættelser" 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?" 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." msgid "Purge" msgstr "Tøm" msgid "Copy from source text" msgstr "Kopiér fra kildetekst" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "Ryd oversættelse" msgid "Clear Translation" msgstr "Ryd oversættelse" msgid "Edit comment" msgstr "Redigér kommentar" msgid "Edit Comment" msgstr "Redigér kommentar" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "Kodeforekomster" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "Kodeforekomster" msgid "Hide Sidebar" msgstr "Skjul sidepanel" msgid "Show Sidebar" msgstr "Vis sidepanel" msgid "Hide Status Bar" msgstr "Skjul statuslinje" msgid "Show Status Bar" msgstr "Vis statuslinje" msgid "String length in characters: translation | source" msgstr "Strenglængde i tegn: oversættelse | kilde" msgid "String length in characters" msgstr "Strenglængde i tegn" msgid "Source text" msgstr "Kildetekst" msgid "Singular" msgstr "Ental" msgid "Plural" msgstr "Flertal" msgid "Translation" msgstr "Oversættelse" msgid "Pre-translated" msgstr "Præ-oversat" 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. msgid "Needs work" msgstr "Skal efterses" msgid "" "POT files are only templates and don’t contain any translations themselves.\n" "To make a translation, create a new PO file based on the template." msgstr "" "POT-filer er kun skabeloner som ikke indeholder nogen oversættelser.\n" "For at oprette en oversættelse skal du oprette en ny PO-fil fra skabelonen." msgid "Create new translation" msgstr "Opret ny oversættelse" 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 msgid "Source text ID" msgstr "Kildetekst-ID" msgid "Everything" msgstr "Alt" #, c-format msgid "Form %i" msgstr "Form %i" #, c-format msgid "Form %i (unused)" msgstr "Form %i (ubrugt)" msgid "Zero" msgstr "Nul" msgid "One" msgstr "En" msgid "Two" msgstr "To" msgid "Other" msgstr "Andet" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, c-format msgid "String context: %s" msgstr "Strengkontekst: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #, c-format msgid "String identifier: %s" msgstr "Strengidentifikator: %s" #, c-format msgid "%s Format" msgstr "%s format" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "%s format" #, c-format msgid "Translation — %s" msgstr "Oversættelse — %s" msgid "ID" msgstr "ID" #, c-format msgid "Source text — %s" msgstr "Kildetekst — %s" msgid "unknown language" msgstr "ukendt sprog" #, c-format msgid "Network error: %s (%d)" msgstr "Netværksfejl: %s (%d)" msgid "Unknown error" msgstr "Ukendt fejl" #, c-format msgid "Failed command: %s" msgstr "Fejlet kommando: %s" msgid "Failed to merge gettext catalogs." msgstr "Der opstod en fejl ved sammenfletning af gettext-kataloger." msgid "Open in Editor" msgstr "Åbn i editor" msgid "Open in editor" msgstr "Åbn i editor" 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." msgid "No usage information" msgstr "Ingen brugsinformation" #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d kodeforekomst" msgstr[1] "%d kodeforekomster" msgid "Source code not found" msgstr "Kildekode ikke fundet" 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." msgid "File cannot be opened" msgstr "Filen kan ikke åbnes" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "Poedit kunne ikke åbne filen “%s”." msgid "Find" msgstr "Find" msgid "Replace" msgstr "Erstat" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "Indstillinger" msgid "Ignore case" msgstr "Ignorer forskelle på store og små bogstaver" msgid "Wrap around" msgstr "Ombrydning" msgid "Whole words only" msgstr "Kun hele ord" msgid "Find in source texts" msgstr "Find i kildetekster" msgid "Find in translations" msgstr "Find i oversættelser" msgid "Find in comments" msgstr "Find i kommentarer" msgid "Close" msgstr "Luk" msgid "Replace &All" msgstr "Erstat &alle" msgid "Replace &all" msgstr "Erstat &alle" msgid "&Replace" msgstr "&Erstat" msgid "< &Previous" msgstr "< &Forrige" msgid "&Next >" msgstr "&Næste >" msgid "String to find" msgstr "Streng som skal findes" msgid "Replacement string" msgstr "Erstatningsstreng" #, c-format msgid "Cannot execute program: %s" msgstr "Kan ikke udføre program: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "Sprognavn eller -kode" msgid "Translation Language" msgstr "Oversættelsessprog" msgid "Language of the translation:" msgstr "Sprog for oversættelsen:" msgid "All strings" msgstr "Alle strenge" msgid "Couldn’t download Localazy project details." msgstr "Kunne ikke downloade Localazy-projektoplysninger." msgid "There was an error when uploading translations to Localazy." msgstr "En fejl opstod under upload af oversættelser til Localazy." msgid "Projects" msgstr "Projekter" 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." msgid "Add Project" msgstr "Tilføj projekt" msgid "Add project" msgstr "Tilføj projekt" msgid "Poedit - Catalogs manager" msgstr "Poedit - Kataloghåndtering" msgid "Edit…" msgstr "Rediger…" msgid "Create new translations project" msgstr "Opret nyt oversættelsesprojekt" msgid "Delete the project" msgstr "Slet projektet" msgid "Edit the project" msgstr "Redigér projektet" msgid "Update all" msgstr "Opdatér alle" msgid "Update all catalogs in the project" msgstr "Opdatér alle kataloger i projektet" msgid "Total" msgstr "I alt" msgid "Untrans" msgstr "Ikke-oversat" msgctxt "column/row header" msgid "Needs Work" msgstr "Skal efterses" msgid "Errors" msgstr "Fejl" msgid "Last modified" msgstr "Sidst ændret" msgid "Select directory" msgstr "Vælg mappe" msgid "Directories:" msgstr "Mapper:" msgid "" msgstr "" #, c-format msgid "Do you want to delete project “%s”?" msgstr "Vil du slette projektet “%s”?" msgid "Delete project" msgstr "Slet projekt" msgid "Deleting the project will not delete any translation files." msgstr "Sletning af projektet vil ikke slette nogen oversættelsesfiler." msgid "Confirmation" msgstr "Bekræftelse" msgid "Update all catalogs in this project?" msgstr "Opdater alle kataloger i dette projekt?" msgid "Performs update from source code on all files in the project." msgstr "Udfører opdatering fra kildekoden på alle filer i projektet." msgid "Check for Updates…" msgstr "Søg efter opdateringer…" msgid "Catalogs Manager" msgstr "Kataloghåndtering" msgid "&Preferences…" msgstr "&Indstillinger…" msgid "&Edit" msgstr "&Redigér" msgid "Undo" msgstr "Fortryd" msgid "Redo" msgstr "Gentag" msgid "Paste and Match Style" msgstr "Indsæt og tilpas stil" msgid "Delete" msgstr "Slet" msgid "Spelling and Grammar" msgstr "Stavning og grammatik" msgid "Show Spelling and Grammar" msgstr "Vis stavning og grammatik" msgid "Check Document Now" msgstr "Tjek dokument nu" msgid "Check Spelling While Typing" msgstr "Tjek stavning mens du skriver" msgid "Check Grammar With Spelling" msgstr "Kontrollér grammatik med stavning" msgid "Correct Spelling Automatically" msgstr "Kontroller automatisk stavning" msgid "Substitutions" msgstr "Erstatninger" msgid "Show Substitutions" msgstr "Vis erstatninger" msgid "Smart Copy/Paste" msgstr "Smart kopier/indsæt" msgid "Smart Quotes" msgstr "Smarte citater" msgid "Smart Dashes" msgstr "Smarte bindestreger" msgid "Smart Links" msgstr "Smarte links" msgid "Text Replacement" msgstr "Tekst erstatning" msgid "Transformations" msgstr "Transformeringer" msgid "Make Upper Case" msgstr "Lav til store bogstaver" msgid "Make Lower Case" msgstr "Lav til små bogstaver" msgid "Capitalize" msgstr "Stort begyndelsesbogstav" msgid "Speech" msgstr "Tale" msgid "Start Speaking" msgstr "Start tale" msgid "Stop Speaking" msgstr "Stop tale" msgid "&View" msgstr "&Vis" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Show Toolbar" msgstr "Vis værktøjslinje" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Customize Toolbar…" msgstr "Tilpas værktøjslinje…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Enter Full Screen" msgstr "Fuldskærm" msgid "Window" msgstr "Vindue" msgid "Minimize" msgstr "Minimer" msgid "Zoom" msgstr "Zoom" msgid "Welcome to Poedit" msgstr "Velkommen til Poedit" msgid "Bring All to Front" msgstr "Bring alle frem" msgid "Information about the translator" msgstr "Information om oversætteren" msgid "Name:" msgstr "Navn:" msgid "Your Name" msgstr "Dit navn" msgid "Email:" msgstr "E-mail:" msgid "you@example.com" msgstr "dig@eksempel.dk" 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." msgid "Editing" msgstr "Redigering" msgid "Automatically compile MO file when saving" msgstr "Kompilér automatisk MO-fil når der gemmes" msgid "Show summary after updating files" msgstr "Vis resumé efter opdatering af filer" msgid "Check spelling" msgstr "Stavekontrol" msgid "Always change focus to text input field" msgstr "Skift altid fokus til indtastningsfeltet for tekst" 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." msgid "Appearance" msgstr "Udseende" msgid "Use custom list font:" msgstr "Brug tilpasset skrifttype til lister:" msgid "Use custom text fields font:" msgstr "Brug tilpasset skrifttype til tekstfelter:" msgid "Change UI language" msgstr "Skift brugerfladens sprog" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions msgid "(requires Windows 8 or newer)" msgstr "(kræver Windows 8 eller nyere)" msgid "General" msgstr "Generelt" msgid "Use translation memory" msgstr "Brug oversættelseshukommelse" msgid "Manage…" msgstr "Administrere…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "Ved opdatering fra kilder" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "lav uafklaret søgning i filen" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "præ-oversæt fra TM" 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." msgid "Stored translations:" msgstr "Gemte oversættelser:" msgid "Database size on disk:" msgstr "Databasestørrelse på disk:" msgid "Import Translation Files…" msgstr "Importer oversættelsesfiler…" msgid "Import translation files…" msgstr "Importer oversættelsesfiler…" msgid "Import From TMX…" msgstr "Importer fra TMX…" msgid "Import from TMX…" msgstr "Importer fra TMX…" msgid "Export To TMX…" msgstr "Eksporter til TMX…" 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). msgid "Reset" msgstr "Nulstil" msgid "Select translation files to import" msgstr "Vælg oversættelsesfiler der skal importeres" msgid "Translation Memory" msgstr "Oversættelseshukommelse" msgid "Importing translations…" msgstr "Importerer oversættelser…" #, c-format msgid "Error loading translation file “%s”." msgstr "Fejl ved indlæsning af oversættelsesfilen “%s”." msgid "Finalizing…" msgstr "Færdiggører…" msgid "Select TMX files to import" msgstr "Vælg en TMX fil til at importere" msgid "TMX Files" msgstr "TMX filer" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "Importen af oversættelseshukommelse fra \"%s\" mislykkedes." msgid "Import error" msgstr "Import fejl" msgid "Export as…" msgstr "Eksporter som…" msgid "Exporting translations…" msgstr "Eksporterer oversættelser…" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "Eksportdn af oversættelseshukommelse fra \"%s\" mislykkedes." msgid "Export error" msgstr "Eksport fejl" msgid "Reset translation memory" msgstr "Nulstil oversættelseshukommelsen" msgid "Are you sure you want to reset the translation memory?" msgstr "Er du sikker på at du ønsker at nulstille oversættelseshukommelsen?" 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. msgid "TM" msgstr "OH" 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." msgid "Custom Extractors:" msgstr "Tilpassede udtrækkere:" msgid "Custom extractors:" msgstr "Tilpassede udtrækkere:" msgid "GNU gettext" msgstr "GNU gettext" 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)." msgid "Delete extractor" msgstr "Slet udtrækker" #, 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?" msgid "Extractors" msgstr "Udtrækkere" msgid "Accounts" msgstr "Konti" msgid "Automatically check for updates" msgstr "Søg automatisk efter opdateringer" msgid "Include beta versions" msgstr "Medtag betaversioner" 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." msgid "Updates" msgstr "Opdateringer" 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." msgid "Line endings:" msgstr "Linjeafslutninger:" msgid "Unix (recommended)" msgstr "Unix (anbefalet)" msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "Ombryd ved:" msgid "Preserve formatting of existing files" msgstr "Bevar formatering af eksisterende filer" msgid "Advanced" msgstr "Avanceret" msgid "Settings" msgstr "Indstillinger" msgid "Preparing strings…" msgstr "Forbereder strenge…" msgid "Pre-translating from translation memory…" msgstr "Præoversætter fra oversættelseshukommelse…" #, 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" msgid "Pre-translating…" msgstr "Præ-oversætter…" 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. msgid "Pre-translate" msgstr "Præ-oversæt" 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." msgid "Cannot pre-translate from unknown language." msgstr "Kan ikke præoversætte fra ukendt sprog." 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." msgid "Only fill in exact matches" msgstr "Udfyld kun nøjagtige overensstemmelser" 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." msgid "Don’t mark exact matches as needing work" msgstr "Marker ikke nøjagtige overensstemmelser som \"skal efterses\"" 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." 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." #, 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." 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." msgid "No entries could be pre-translated." msgstr "Ingen emner kunne præ-oversættes." 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." msgid "Cancelling…" msgstr "Annullerer…" msgid "Drag Folders or Files Here" msgstr "Træk mapper eller filer hertil" msgid "Drag folders or files here" msgstr "Træk mapper eller filer hertil" msgid "Add Folders…" msgstr "Tilføj mapper…" msgid "Add folders…" msgstr "Tilføj mapper…" msgid "Add Files…" msgstr "Tilføj filer…" msgid "Add files…" msgstr "Tilføj filer…" msgid "Add Wildcard…" msgstr "Tilføj wildcard…" msgid "Add wildcard…" msgstr "Tilføj wildcard…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) 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" msgid "Show in Explorer" msgstr "Vis i Stifinder" msgid "Show in Folder" msgstr "Vis i mappe" msgid "Paths" msgstr "Stier" msgid "Excluded paths" msgstr "Udelukkede stier" msgid "Advanced extraction settings" msgstr "Avancerede udtræksindstillinger" msgid "Extract notes for translators from:" msgstr "Udtræk noter til oversættere fra:" msgid "Comments prefixed with:" msgstr "Kommentarer som starter med:" msgid "All comments" msgstr "Alle kommentarer" msgid "Additional xgettext flags:" msgstr "Yderligere xgettext flag:" msgid "Additional keywords" msgstr "Yderligere nøgleord" msgid "Name of the project the translation is for" msgstr "Navn på projektet som oversættelsen er til" msgid "Team name and email address or URL" msgstr "Holdnavn og e-mailadresse eller URL" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "f.eks. nplurals=2; plural=(n != 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (anbefalet)" 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." msgid "Placeholders correctness" msgstr "Pladsholderes korrekthed" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "Pladsholder “%s” mangler i oversættelsen." #, c-format msgid "Superfluous placeholder “%s” that isn’t in source text." msgstr "Overflødig pladsholder “%s” der ikke er i kildeteksten." msgid "Plural form translations" msgstr "Flertalsform-oversættelser" msgid "Not all plural forms are translated." msgstr "Elle alle flertalsformer er oversat." msgid "Inconsistent upper/lower case" msgstr "Inkonsistent brug af store og små bogstaver" msgid "The translation should start as a sentence." msgstr "Oversættelsen bør starte som en sætning." msgid "The translation should start with a lowercase character." msgstr "Oversættelsen bør starte med et lille tegn." msgid "Inconsistent whitespace" msgstr "Inkonsistent brug af whitespace (blanktegn og linjeskift)" msgid "The translation doesn’t start with a space." msgstr "Oversættelsen starter ikke med et mellemrum." 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." msgid "The translation is missing a newline at the end." msgstr "Oversættelsen mangler et linjeskift i enden." 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." msgid "The translation is missing a space at the end." msgstr "Oversættelsen mangler et mellemrum i enden." 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." msgid "Punctuation checks" msgstr "Tegnsætningskontrol" #, c-format msgid "The translation should end with “%s”." msgstr "Oversættelsen bør ende med \"%s\"." #, c-format msgid "The translation should not end with “%s”." msgstr "Oversættelsen bør ikke ende med \"%s\"." #, 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\"." msgid "Cloud" msgstr "Cloud" msgid "Clear Menu" msgstr "Ryd menu" msgid "Clear menu" msgstr "Ryd menu" msgid "Comment:" msgstr "Kommentar:" msgid "Update" msgstr "Opdatér" msgid "&Delete" msgstr "&Slet" msgid "Delete the comment" msgstr "Slet kommentaren" msgid "Edit project" msgstr "Redigér projekt" msgid "Project name:" msgstr "Projektnavn:" msgid "Browse" msgstr "Gennemse" msgid "Add directory to the list" msgstr "Tilføj mappe til listen" msgid "OK" msgstr "OK" msgid "&File" msgstr "&Fil" msgid "&New…" msgstr "%Ny…" msgid "New from &POT/PO file…" msgstr "Ny fra &POT/PO fil…" msgid "New From &POT/PO File…" msgstr "Ny fra &POT/PO fil…" msgid "&Open…" msgstr "&Åbn…" msgid "Open Recent" msgstr "Åbn seneste" msgid "Open recent" msgstr "Åbn seneste" msgid "Open cloud translation…" msgstr "Åbn cloud-oversættelse…" msgid "Open Cloud Translation…" msgstr "Åbn Cloud Translation…" msgid "&Start window" msgstr "O&pstartsvindue" msgid "&Start Window" msgstr "O&pstartsvindue" msgid "Catalogs &manager" msgstr "&Kataloghåndtering" msgid "Catalogs &Manager" msgstr "&Kataloghåndtering" msgid "&Close" msgstr "&Luk" msgid "&Save" msgstr "&Gem" msgid "Save &as…" msgstr "Gem &som…" msgid "Save &As…" msgstr "Gem &som…" msgid "Compile to MO…" msgstr "Kompilér til MO…" msgid "E&xport to HTML…" msgstr "Eksportér(&x) til HTML…" msgid "Check for updates…" msgstr "Søg efter opdateringer…" msgid "Settings…" msgstr "Indstillinger…" msgid "&Preferences" msgstr "&Indstillinger" msgid "E&xit" msgstr "&Afslut" msgid "Quit" msgstr "Afslut" msgid "Copy from singular" msgstr "Kopiér fra ental" msgid "Copy From Singular" msgstr "Kopiér fra ental" msgid "Translation needs &work" msgstr "Oversættelse skal &efterses" msgid "Translation Needs &Work" msgstr "Oversættelse skal &efterses" msgid "Edit &comment" msgstr "Redigér &kommentar" msgid "Edit &Comment" msgstr "Redigér &kommentar" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "Forslag" msgid "&Find…" msgstr "&Find…" msgid "Replace…" msgstr "Erstat…" msgid "Find next" msgstr "Find næste" msgid "Find previous" msgstr "Find forrige" msgid "Find and Replace…" msgstr "Find og erstat…" msgid "Find Next" msgstr "Find næste" msgid "Find Previous" msgstr "Find forrige" msgid "Show string &ID" msgstr "Vis streng &ID" msgid "Show String &ID" msgstr "Vis streng &ID" msgid "Show warnings" msgstr "Vis advarsler" msgid "Show Warnings" msgstr "Vis advarsler" msgid "Sort by &file order" msgstr "Sortér efter &filrækkefølge" msgid "Sort by &File Order" msgstr "Sortér efter &filrækkefølge" msgid "Sort by &source" msgstr "Sortér efter &kilde" msgid "Sort by &Source" msgstr "Sortér efter &kilde" msgid "Sort by &translation" msgstr "Sortér efter &oversættelse" msgid "Sort by &Translation" msgstr "Sortér efter &oversættelse" msgid "&Group by context" msgstr "&Gruppér efter kontekst" msgid "&Group By Context" msgstr "&Gruppér efter kontekst" msgid "Entries with errors first" msgstr "Emner med fejl først" msgid "Entries with Errors First" msgstr "Emner med fejl først" msgid "&Untranslated entries first" msgstr "&Ikke-oversatte poster først" msgid "&Untranslated Entries First" msgstr "&Ikke-oversatte poster først" msgid "&Show code occurrences" msgstr "&Vis kodeforekomster" msgid "&Show Code Occurrences" msgstr "&Vis kodeforekomster" msgid "Show sidebar" msgstr "Vis sidepanel" msgid "Show status bar" msgstr "Vis statuslinje" msgid "&Translation" msgstr "&Oversættelse" msgid "&Update from source code" msgstr "&Opdatér fra kildekode" msgid "&Update from Source Code" msgstr "&Opdatér fra kildekode" msgid "Update from &POT file…" msgstr "Opdatér fra &POT-fil…" msgid "Update from &POT File…" msgstr "Opdatér fra &POT-fil…" msgid "Sync with Crowdin" msgstr "Synkronisér med Crowdin" msgid "Pre-&translate…" msgstr "For&oversæt…" msgid "&Validate translations" msgstr "&Validér oversættelser" msgid "&Validate Translations" msgstr "&Validér oversættelser" msgid "Remove Same-as-Source Translations" msgstr "Fjern samme-som-kilde oversættelser" msgid "&Purge deleted translations" msgstr "&Tøm slettede oversættelser" msgid "&Purge Deleted Translations" msgstr "&Tøm slettede oversættelser" msgid "&Properties…" msgstr "&Egenskaber…" msgid "&Go" msgstr "&Gå til" msgid "&Done and next" msgstr "Fæ&rdig og næste" msgid "&Done and Next" msgstr "Fæ&rdig og næste" msgid "Previously edited" msgstr "Tidligere redigeret" msgid "Previously Edited" msgstr "Tidligere redigeret" msgid "&Previous translation" msgstr "&Forrige oversættelse" msgid "&Previous Translation" msgstr "&Forrige oversættelse" msgid "&Next translation" msgstr "&Næste oversættelse" msgid "&Next Translation" msgstr "&Næste oversættelse" msgid "P&revious unfinished" msgstr "F&orrige ufærdige" msgid "P&revious Unfinished" msgstr "F&orrige ufærdige" msgid "Ne&xt unfinished" msgstr "N&æste ufærdige" msgid "Ne&xt Unfinished" msgstr "N&æste ufærdige" msgid "Previous plural form" msgstr "Forrige flertalsform" msgid "Previous Plural Form" msgstr "Forrige flertalsform" msgid "Next plural form" msgstr "Næste flertalsform" msgid "Next Plural Form" msgstr "Næste flertalsform" msgid "&Online help" msgstr "&Onlinehjælp" msgid "&Online Help" msgstr "&Onlinehjælp" msgid "&GNU gettext manual" msgstr "&GNU gettext manual" msgid "&GNU gettext Manual" msgstr "&GNU gettext manual" msgid "&About Poedit" msgstr "&Om Poedit" msgid "&About" msgstr "&Om" msgid "Extractor setup" msgstr "Opsætning af udtrækker" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Liste med filendelser, adskilt med semikolon (f.eks. *.cpp, *.h):" msgid "Invocation:" msgstr "Udførsel:" msgid "Command to extract translations:" msgstr "Kommando til at udtrække oversættelser:" 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)." msgid "An item in keywords list:" msgstr "En post i nøgleordslisten:" 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." msgid "An item in input files list:" msgstr "En post i listen over inddatafiler:" #, 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." msgid "Source code charset:" msgstr "Kildekodens tegnsæt:" #, 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." msgid "Translation Properties" msgstr "Oversættelsesegenskaber" msgid "Project name and version:" msgstr "Projektnavn og version:" msgid "Language team:" msgstr "Sprog team:" msgid "Plural forms:" msgstr "Flertalsformer:" msgid "Use default rules for this language" msgstr "Brug standardregler for dette sprog" msgid "Use custom expression" msgstr "Brug tilpasset udtryk" msgid "Learn about plural forms" msgstr "Lær mere om flertalsformer" msgid "Charset:" msgstr "Tegnsæt:" msgid "Advanced Extraction Settings…" msgstr "Avancerede udtrækningsindstillinger…" msgid "Advanced extraction settings…" msgstr "Avancerede udtrækningsindstillinger…" msgid "Translation properties" msgstr "Oversættelsesegenskaber" msgid "Sources Paths" msgstr "Søgestier" msgid "Sources paths" msgstr "Søgestier" msgid "Extract text from source files in the following directories:" msgstr "Udtræk tekst fra kildefiler i følgende mapper:" msgid "Base path:" msgstr "Grundlæggende sti:" msgid "Sources Keywords" msgstr "Nøgleord i kildefil" msgid "Sources keywords" msgstr "Nøgleord i kildefil" 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:" msgid "Also use default keywords for supported languages" msgstr "Brug også standard nøgleord for understøttede sprog" msgid "Learn about gettext keywords" msgstr "Lær om gettext nøgleord" msgid "Update summary" msgstr "Opdatér resumé" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" "Disse strenge blev fundet i kilderne, men var ikke i filen.\n" "Poedit vil føje dem til filen nu." msgid "New strings" msgstr "Nye strenge" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" "Disse strenge er ikke længere i kildekoden.\n" "Poedit vil fjerne dem fra filen nu." msgid "Obsolete strings" msgstr "Forældede strenge" msgid "(0 new, 0 obsolete)" msgstr "(0 nye, 0 forældede)" msgid "Open" msgstr "" msgid "Open file" msgstr "Åbn fil" msgid "Save file" msgstr "Gem fil" msgid "Validate" msgstr "Validér" msgid "Check for errors in the translation" msgstr "Find fejl i oversættelsen" msgid "Update from code" msgstr "Opdater fra kode" msgid "Update from Code" msgstr "Opdater fra kode" msgid "Update from source code" msgstr "Opdatér fra kildekode" msgid "Sidebar" msgstr "Sidepanel" msgid "Show or hide the sidebar" msgstr "Vis eller skjul sidepanelet" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. msgid "Previous source text" msgstr "Forrige kildetekst" 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." msgid "Notes for translators" msgstr "Noter til oversættere" msgid "Comment" msgstr "Kommentar" msgid "Add comment" msgstr "Tilføj kommentar" msgid "Add Comment" msgstr "Tilføj kommentar" msgid "Delete From Translation Memory" msgstr "Slet fra Oversættelseshukommelse" msgid "Delete from translation memory" msgstr "Slet fra Oversættelseshukommelse" msgid "Translation suggestions" msgstr "Oversættelsesforslag" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). msgid "No matches found" msgstr "Ingen fundet" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). msgid "No Matches Found" msgstr "Ingen fundet" msgid "This string was found in Poedit’s translation memory." msgstr "Denne streng blev fundet i Poedit's oversættelseshukommelse." 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." 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." msgid "The TMX file is malformed." msgstr "TMX filen er forkert udformet." msgid "No translations were found in the TMX file." msgstr "Ingen oversættelser blev fundet i TMX filen." #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Oversættelses databasen er ødelagt: %s (%d)." #, c-format msgid "Translation memory error: %s (%d)." msgstr "Oversættelses hukommelsesfejl: %s (%d)." msgid "Cannot create temporary directory." msgstr "Kan ikke oprette midlertidig mappe." msgid "There are no translations. That’s unusual." msgstr "Der er ikke nogen oversættelser. Det er usædvanligt." msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "Translators typically use PO template files (POTs) prepared for them by the " "developer." msgstr "" "Oversættelige emner tilføjes ikke manuelt i Gettext-systemet, men udtrækkes " "automatisk\n" "fra kildekoden. På denne måde er de altid opdateret og korrekte.\n" "Oversættere bruger typisk PO-skabelonfiler (POT) som er lavet til dem af " "udvikleren." msgid "(Learn more about GNU gettext)" msgstr "(lær mere om GNU gettext)" 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:" msgid "Update from POT" msgstr "Opdatér fra POT" msgid "Take translatable strings from an existing POT template." msgstr "Tag oversætbare strenge fra en eksisterende POT-skabelon." msgid "" "You can also extract translatable strings directly from the source code:" msgstr "Du kan også udtrække oversætbare strenge direkte fra kildekoden:" msgid "Extract from sources" msgstr "Udtræk fra kilder" 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 #, c-format msgid "Version %s" msgstr "Version %s" msgid "Create new" msgstr "Opret ny" msgid "Create new translation from POT template." msgstr "Opret ny oversættelse fra POT-skabelon." msgid "Browse files" msgstr "Gennemse filer" msgid "Open and edit translation files." msgstr "Åbn og rediger oversættelsesfiler." msgid "Translate cloud project" msgstr "Oversæt cloud-projekt" msgid "Collaborate with other people online." msgstr "Samarbejd med andre personer online." msgid "Recent files" msgstr "Seneste filer" msgid "Sync" msgstr "Synk" 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") #, 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. #, c-format msgid "%s Preferences" msgstr "%s indstillinger" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "Tjenester" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "Skjul %s" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "Skjul øvrige" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "Vis alle" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "Afslut %s" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "Indstillinger…" msgid "Preferences..." msgstr "Indstillinger..." #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "Seneste" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "Mest brugte" msgid "&Apply" msgstr "&Anvend" msgid "Apply" msgstr "Anvend" msgid "&Back" msgstr "Til&bage" msgid "Back" msgstr "Tilbage" msgid "&Cancel" msgstr "Annullér" msgid "&Clear" msgstr "&Ryd" msgid "Clear" msgstr "Ryd" msgid "Copy" msgstr "Kopier" msgid "Cu&t" msgstr "Kli&p" msgid "Cut" msgstr "Klip" msgid "Edit" msgstr "Redigér" msgid "&Quit" msgstr "&Afslut" msgid "Help" msgstr "Hjælp" msgid "&New" msgstr "&Ny" msgid "New" msgstr "Ny" msgid "&No" msgstr "&Nej" msgid "No" msgstr "Nej" msgid "&OK" msgstr "&Ok" msgid "Open…" msgstr "Åbn…" msgid "&Open..." msgstr "&Åbn..." msgid "Open..." msgstr "&Åbn..." msgid "&Paste" msgstr "&Sæt ind" msgid "Paste" msgstr "Indsæt" msgid "Preferences" msgstr "Indstillinger" msgid "&Redo" msgstr "&Gentag" msgid "Refresh" msgstr "Genopfrisk" msgid "&Save as" msgstr "&Gem som" msgid "Save as" msgstr "Gem som" msgid "Select &All" msgstr "Vælg &alle" msgid "Select All" msgstr "Vælg alle" msgid "&Undo" msgstr "&Fortryd" msgid "&Yes" msgstr "&Ja" msgid "Yes" msgstr "Ja" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Skift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "Op" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "Ned" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "Venstre" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "Højre" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "skift" poedit-3.5/locales/de.po0000644000175100001770000020661714664354153012172 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "Diese Benachrichtigung nicht anzeigen" msgid "Don’t Show Again" msgstr "Nicht erneut anzeigen" msgid "Don’t show again" msgstr "Nicht erneut anzeigen" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(Neu: %i, veraltet: %i)" msgid "Collecting source files…" msgstr "Quelldateien werden gesammelt …" msgid "Extracting translatable strings…" msgstr "Übersetzbare Zeichenketten werden extrahiert …" msgid "Failed to load file with extracted translations." msgstr "Fehler beim Laden der Datei mit extrahierten Übersetzungen." msgid "Merging differences…" msgstr "Änderungen werden zusammengefügt …" msgid "Updating translations" msgstr "Übersetzungen werden aktualisiert" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "Die Datei »%s« konnte nicht geöffnet werden." msgid "Invalid file" msgstr "Ungültige Datei" #, c-format msgid "Malformed header: “%s”" msgstr "Fehlerhafter Header: »%s«" msgid "PO Translation Files" msgstr "PO-Übersetzungsdateien" msgid "POT Translation Templates" msgstr "POT-Übersetzungsvorlagen" msgid "XLIFF Translation Files" msgstr "XLIFF-Übersetzungsdateien" msgid "JSON Translation Files" msgstr "JSON-Übersetzungsdateien" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "Flutter-Übersetzungsdateien" msgid "All Translation Files" msgstr "Alle Übersetzungsdateien" msgid "The file is in a format not recognized by Poedit." msgstr "Die Datei liegt in einem von Poedit nicht erkannten Format vor." 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." #, 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" #, 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." #, c-format msgid "Couldn’t save file %s." msgstr "Datei »%s« konnte nicht gespeichert werden." msgid "Screenshots:" msgstr "Bildschirmfotos:" #, 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." #, 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)." 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" msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" "Beschädigte PO-Datei: Verwendung von msgstr in Pluralform ohne msgid_plural" msgid "Couldn’t load the file, it is probably damaged." msgstr "Die Datei konnte nicht geladen werden. Sie ist vermutlich beschädigt." 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." 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." #, 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." msgid "Error saving file" msgstr "Fehler beim Speichern der Datei" #, c-format msgid "“%s” is not a valid POT file." msgstr "»%s« ist keine gültige POT-Datei." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Fehler beim Laden der XLIFF-Datei: %s" #, 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 msgid "Broken markup in translation string." msgstr "Fehlerhaftes Markup in Übersetzungszeichenkette." msgid "(Use default language)" msgstr "(Standardsprache verwenden)" msgid "Language selection" msgstr "Sprachauswahl" msgid "Select your preferred language" msgstr "Bitte wählen Sie Ihre bevorzugte Sprache aus" msgid "You must restart Poedit for this change to take effect." msgstr "Sie müssen Poedit neu starten, damit diese Änderung wirksam wird." msgid "Add Account" msgstr "Konto hinzufügen" msgid "Add account" msgstr "Konto hinzufügen" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "Mehr erfahren über %s" 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." msgid "How does cloud sync work?" msgstr "Wie funktioniert die Cloud-Synchronisierung?" msgid "Account" msgstr "Konto" msgid "(not signed in)" msgstr "(nicht angemeldet)" msgid "File" msgstr "Datei" msgid "Open cloud translation" msgstr "Cloud-Übersetzung öffnen" msgid "Manage accounts" msgstr "Konten verwalten" msgid "Project:" msgstr "Projekt:" msgid "Language:" msgstr "Sprache:" msgid "Sign in to Cloud Account" msgstr "Auf dem Cloud-Konto anmelden" msgid "Sign in to cloud account" msgstr "Auf dem Cloud-Konto anmelden" msgid "No translation projects listed in your account." msgstr "Es sind keine Übersetzungsprojekte in Ihrem Konto vorhanden." msgid "Downloading latest translations…" msgstr "Neueste Übersetzungen werden heruntergeladen …" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #, c-format msgid "Sign in to %s" msgstr "Bei %s anmelden" msgid "Syncing" msgstr "Synchronisierung läuft" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, 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. #, c-format msgid "Uploading translations to %s failed." msgstr "Hochladen von Übersetzungen auf %s fehlgeschlagen." msgid "Syncing error" msgstr "Fehler bei der Synchronisierung" msgid "Add" msgstr "Hinzufügen" msgid "Unknown Crowdin error." msgstr "Unbekannter Crowdin-Fehler." msgid "Not authorized, please sign in again." msgstr "Nicht autorisiert, bitte melden Sie sich erneut an." msgid "Downloading translations is disabled in this project." msgstr "Herunterladen von Übersetzungen ist in diesem Projekt deaktiviert." msgid "Sign In" msgstr "Anmelden" msgid "Sign in" msgstr "Anmelden" msgid "Sign Out" msgstr "Abmelden" msgid "Sign out" msgstr "Abmelden" msgid "Learn more about Crowdin" msgstr "Erfahren Sie mehr über Crowdin" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" "Crowdin ist eine Online-Übersetzungsplattform und ein gemeinschaftliches " "Übersetzungswerkzeug." msgid "Waiting for authentication…" msgstr "Auf Authentifizierung warten …" msgid "Updating user information…" msgstr "Benutzerinformationen werden aktualisiert …" msgid "Sign in to Crowdin" msgstr "Bei Crowdin anmelden" msgid "Syncing with Crowdin failed." msgstr "Fehler bei der Synchronisierung mit Crowdin." msgid "Crowdin error" msgstr "Crowdin Fehler" msgid "Uploading translations…" msgstr "Übersetzungen werden hochgeladen …" msgid "&Copy" msgstr "&Kopieren" msgid "Learn more" msgstr "Weitere Informationen" msgid "&Help" msgstr "&Hilfe" msgid "MO files can’t be directly edited in Poedit." msgstr "MO-Dateien können nicht direkt in Poedit bearbeitet werden." msgid "Error opening file" msgstr "Fehler beim Öffnen der Datei" 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." msgid "don’t delete temporary files (for debugging)" msgstr "Temporäre Dateien nicht entfernen (für Fehlersuche)" msgid "handle a poedit:// URI" msgstr "poedit://-Adresse verwenden" msgid "go to item at given line number" msgstr "zum Element in der angegebenen Zeilennummer springen" msgid "Failed to communicate with Poedit process." msgstr "Kommunikation mit Poedit-Prozess fehlgeschlagen." #, c-format msgid "Unhandled exception occurred: %s" msgstr "Ein unerwarteter Fehler ist aufgetreten: %s" msgid "Select translation template" msgstr "Übersetzungsvorlage auswählen" msgid "Select translation file" msgstr "Übersetzungsdatei auswählen" msgid "Poedit is an easy to use translation editor." msgstr "Poedit ist ein einfach zu bedienender Übersetzungseditor." 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." #, c-format msgid "File “%s” is not a translation file." msgstr "Die Datei »%s« ist keine Übersetzungsdatei." #, c-format msgid "File “%s” doesn’t exist." msgstr "Datei »%s« existiert nicht." 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". #, 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." msgid "Install" msgstr "Installieren" #, c-format msgid "The file “%s” has been changed by another application." msgstr "Die Datei »%s« wurde von einer anderen Anwendung geändert." msgid "Reload file" msgstr "Datei neu laden" 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." msgid "Ignore" msgstr "Ignorieren" msgid "Reload File" msgstr "Datei neu laden" msgid "The file has been modified. Do you want to save changes?" msgstr "Die Datei wurde verändert. Möchten Sie die Änderungen speichern?" msgid "Save changes" msgstr "Änderungen speichern" msgid "Your changes will be lost if you don’t save them." msgstr "Ihre Änderungen gehen verloren, wenn Sie diese nicht speichern." msgid "Save" msgstr "Speichern" msgid "Do&n’t save" msgstr "&Nicht speichern" msgid "Don’t Save" msgstr "Nicht speichern" 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." msgid "Cancel" msgstr "Abbrechen" msgid "Save Anyway" msgstr "Trotzdem speichern" msgid "Save anyway" msgstr "Trotzdem speichern" msgid "Save as…" msgstr "Speichern unter …" msgid "Compile to…" msgstr "Kompilieren nach …" msgid "Compiled Translation Files" msgstr "Kompilierte Übersetzungsdateien" msgid "Export to HTML…" msgstr "E&xportieren als HTML …" msgid "HTML Files" msgstr "HTML-Dateien" #, c-format msgid "In: %s" msgstr "In: %s" msgid "Source code not available." msgstr "Der Quellcode steht nicht zur Verfügung." msgid "Updating failed" msgstr "Die Aktualisierung ist fehlgeschlagen" 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." msgid "Permission denied." msgstr "Zugriff verweigert." 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. 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. 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." msgid "Translation entries in the file are probably incorrect." msgstr "" "In der Datei befinden sich wahrscheinlich fehlerhafte Übersetzungseinträge." msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "" "Aktualisierung der Datei fehlgeschlagen. Klicken Sie auf »Details >>« für " "weitere Informationen." msgid "Open translation template" msgstr "Übersetzungsvorlage öffnen" #, 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." msgid "Validation results" msgstr "Überprüfungsergebnisse" 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." msgid "The file was saved safely." msgstr "Die Datei wurde sicher gespeichert." 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." 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." 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." 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." msgid "No problems with the translation found." msgstr "Es wurden keine Probleme mit der Übersetzung gefunden." #, 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." msgid "The translation is ready for use." msgstr "Die Übersetzung kann verwendet werden." #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "" "Ungültige Inhalte der Datei »%s« wurden von Poedit automatisch korrigiert." msgid "" "The file contained duplicate items, which is not allowed in PO files and " "would prevent the file from being used. Poedit fixed the issue, but you " "should review translations of any items marked as 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." msgid "Language of the translation isn’t set." msgstr "Sprache der Übersetzung ist nicht festgelegt." msgid "Set Language" msgstr "Sprache festlegen" msgid "Set language" msgstr "Sprache festlegen" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." msgid "" "Suggestions are not available if the translation language is not set " "correctly. Other features, such as plural forms, may be affected as well." msgstr "" "Vorschläge sind nicht verfügbar, wenn die Übersetzungssprache nicht richtig " "eingestellt ist. Andere Funktionen wie z. B. Pluralformen können ebenfalls " "betroffen sein." msgid "Language of the translation is the same as source language." msgstr "Sprache der Übersetzung ist dieselbe wie die Ausgangssprache." msgid "Fix Language" msgstr "Sprache korrekt festlegen" msgid "Fix language" msgstr "Sprache korrekt festlegen" msgid "" "This 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." 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" msgid "Required header Plural-Forms is missing." msgstr "Im Kopfbereich der Datei fehlt die Angabe »Plural-Forms«." #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Syntaxfehler im Dateikopf bei »Plural-Forms« (»%s«)." msgid "Fix the Header" msgstr "Kopfbereich reparieren" 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". #, 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.")" msgid "Review" msgstr "Überprüfen" msgid "Would you like to use English for source text?" msgstr "Möchten Sie Englisch für den Quelltext verwenden?" #, 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" msgid "Load English" msgstr "Englisch laden" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Übersetzt: %d von %d (%d %%)" #, c-format msgid "Remaining: %d" msgstr "Verbleibend: %d" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d Fehler" msgstr[1] "%d Fehler" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d Eintrag" msgstr[1] "%d Einträge" msgid " (unsaved)" msgstr " (ungespeichert)" msgid " (modified)" msgstr " (geändert)" #, c-format msgid "Failed to update translation memory: %s" msgstr "Fehler beim Aktualisieren des Übersetzungsspeichers: %s" msgid "Remove same-as-source translations" msgstr "Übersetzungen mit gleicher Quelle entfernen" msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" "Sollen alle nicht mit dem Quelltext identischen Übersetzungen entfernt " "werden?" 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." msgid "Keep" msgstr "Behalten" msgid "Remove" msgstr "Entfernen" msgid "Purge deleted translations" msgstr "Ungenutzte Übersetzungen entfernen" msgid "Do you want to remove all translations that are no longer used?" msgstr "Sollen alle nicht mehr verwendeten Übersetzungen entfernt werden?" 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." msgid "Purge" msgstr "Bereinigen" msgid "Copy from source text" msgstr "Quelltext übernehmen" 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 msgid "Ctrl+" msgstr "Strg+" msgid "Clear translation" msgstr "Übersetzung löschen" msgid "Clear Translation" msgstr "Übersetzung löschen" msgid "Edit comment" msgstr "Kommentar bearbeiten" msgid "Edit Comment" msgstr "Kommentar bearbeiten" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "Code-Vorkommen" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "Code-Vorkommen" msgid "Hide Sidebar" msgstr "Seitenleiste ausblenden" msgid "Show Sidebar" msgstr "Seitenleiste anzeigen" msgid "Hide Status Bar" msgstr "Statusleiste ausblenden" msgid "Show Status Bar" msgstr "Statusleiste anzeigen" msgid "String length in characters: translation | source" msgstr "Zeichenkettenlänge in Zeichen: Übersetzung | Quelle" msgid "String length in characters" msgstr "Länge der Zeichenkette in Zeichen" msgid "Source text" msgstr "Quelltext" msgid "Singular" msgstr "Singular" msgid "Plural" msgstr "Plural" msgid "Translation" msgstr "Übersetzung" msgid "Pre-translated" msgstr "Vorübersetzt" 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. msgid "Needs work" msgstr "Benötigt Überarbeitung" msgid "" "POT files are only templates and don’t contain any translations themselves.\n" "To make a translation, create a new PO file based on the template." msgstr "" "POT-Dateien sind nur Vorlagen, sie enthalten selbst keine Übersetzungen.\n" "Um eine Übersetzung zu starten, legen Sie eine neue PO-Datei an, die auf der " "Vorlage basiert." msgid "Create new translation" msgstr "Neue Übersetzung erstellen" 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 msgid "Source text ID" msgstr "Quelltext-ID" msgid "Everything" msgstr "Alles" #, c-format msgid "Form %i" msgstr "Form %i" #, c-format msgid "Form %i (unused)" msgstr "Form %i (ungenutzt)" msgid "Zero" msgstr "Null" msgid "One" msgstr "Singular" msgid "Two" msgstr "Zwei" msgid "Other" msgstr "Plural" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, c-format msgid "String context: %s" msgstr "Zeichenkettenkontext: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #, c-format msgid "String identifier: %s" msgstr "Zeichenkettenidentifikator: %s" #, c-format msgid "%s Format" msgstr "%s-Format" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "%s-Format" #, c-format msgid "Translation — %s" msgstr "Übersetzung – %s" msgid "ID" msgstr "ID" #, c-format msgid "Source text — %s" msgstr "Quelltext — %s" msgid "unknown language" msgstr "unbekannte Sprache" #, c-format msgid "Network error: %s (%d)" msgstr "Netzwerkfehler: %s (%d)" msgid "Unknown error" msgstr "Unbekannter Fehler" #, c-format msgid "Failed command: %s" msgstr "Fehlgeschlagener Befehl: %s" msgid "Failed to merge gettext catalogs." msgstr "Zusammenführen der gettext-Kataloge fehlgeschlagen." msgid "Open in Editor" msgstr "Im Editor öffnen" msgid "Open in editor" msgstr "Im Editor öffnen" 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." msgid "No usage information" msgstr "Keine Nutzungsinformationen" #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d Code-Vorkommen" msgstr[1] "%d Code-Vorkommen" msgid "Source code not found" msgstr "Quellcode nicht gefunden" 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." msgid "File cannot be opened" msgstr "Datei kann nicht geöffnet werden" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "Poedit konnte die Datei »%s« nicht öffnen." msgid "Find" msgstr "Suchen" msgid "Replace" msgstr "Ersetzen" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "Optionen" msgid "Ignore case" msgstr "Groß-/Kleinschreibung ignorieren" msgid "Wrap around" msgstr "Am Ende von vorne beginnen" msgid "Whole words only" msgstr "Nur ganze Wörter" msgid "Find in source texts" msgstr "In Quelltexten suchen" msgid "Find in translations" msgstr "In Übersetzungen suchen" msgid "Find in comments" msgstr "In Kommentaren suchen" msgid "Close" msgstr "Schließen" msgid "Replace &All" msgstr "&Alle ersetzen" msgid "Replace &all" msgstr "&Alle ersetzen" msgid "&Replace" msgstr "Erset&zen" msgid "< &Previous" msgstr "< &Zurück" msgid "&Next >" msgstr "&Weiter >" msgid "String to find" msgstr "Zu suchende Zeichenkette" msgid "Replacement string" msgstr "Ersetzungszeichenkette" #, c-format msgid "Cannot execute program: %s" msgstr "Programm konnte nicht ausgeführt werden: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "Sprachname oder -code" msgid "Translation Language" msgstr "Übersetzungssprache" msgid "Language of the translation:" msgstr "Sprache der Übersetzung:" msgid "All strings" msgstr "Alle Zeichenketten" msgid "Couldn’t download Localazy project details." msgstr "" "Die Details des Localazy-Projekts konnten nicht heruntergeladen werden." msgid "There was an error when uploading translations to Localazy." msgstr "" "Beim Hochladen der Übersetzungen auf Localazy ist ein Fehler aufgetreten." msgid "Projects" msgstr "Projekte" 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." msgid "Add Project" msgstr "Projekt hinzufügen" msgid "Add project" msgstr "Projekt hinzufügen" msgid "Poedit - Catalogs manager" msgstr "Poedit-Katalogverwaltung" msgid "Edit…" msgstr "Bearbeiten …" msgid "Create new translations project" msgstr "Neues Übersetzungsprojekt erstellen" msgid "Delete the project" msgstr "Projekt löschen" msgid "Edit the project" msgstr "Projekt bearbeiten" msgid "Update all" msgstr "Alle aktualisieren" msgid "Update all catalogs in the project" msgstr "Alle Kataloge des Projektes aktualisieren" msgid "Total" msgstr "Gesamt" msgid "Untrans" msgstr "Nicht übersetzt" msgctxt "column/row header" msgid "Needs Work" msgstr "Benötigt Überarbeitung" msgid "Errors" msgstr "Fehler" msgid "Last modified" msgstr "Letzte Änderung" msgid "Select directory" msgstr "Ordner auswählen" msgid "Directories:" msgstr "Ordner:" msgid "" msgstr "" #, c-format msgid "Do you want to delete project “%s”?" msgstr "Möchten Sie das Projekt »%s« löschen?" msgid "Delete project" msgstr "Projekt löschen" msgid "Deleting the project will not delete any translation files." msgstr "Das Löschen des Projekts löscht keine Übersetzungsdateien." msgid "Confirmation" msgstr "Bestätigung" msgid "Update all catalogs in this project?" msgstr "Alle Kataloge in diesem Projekt aktualisieren?" 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." msgid "Check for Updates…" msgstr "Auf Aktualisierungen prüfen …" msgid "Catalogs Manager" msgstr "Katalogverwaltung" msgid "&Preferences…" msgstr "&Einstellungen …" msgid "&Edit" msgstr "&Bearbeiten" msgid "Undo" msgstr "Rückgängig" msgid "Redo" msgstr "Wiederherstellen" msgid "Paste and Match Style" msgstr "Einsetzen und Stil anpassen" msgid "Delete" msgstr "Löschen" msgid "Spelling and Grammar" msgstr "Rechtschreibung und Grammatik" msgid "Show Spelling and Grammar" msgstr "Rechtschreibung und Grammatik anzeigen" msgid "Check Document Now" msgstr "Dokument jetzt prüfen" msgid "Check Spelling While Typing" msgstr "Rechtschreibung während der Eingabe prüfen" msgid "Check Grammar With Spelling" msgstr "Grammatik zusätzlich zur Rechtschreibung prüfen" msgid "Correct Spelling Automatically" msgstr "Automatische Rechtschreibkorrektur" msgid "Substitutions" msgstr "Ersetzungen" msgid "Show Substitutions" msgstr "Ersetzungen anzeigen" msgid "Smart Copy/Paste" msgstr "Intelligentes Kopieren/Einsetzen" msgid "Smart Quotes" msgstr "Intelligente Anführungszeichen" msgid "Smart Dashes" msgstr "Intelligente Bindestriche" msgid "Smart Links" msgstr "Intelligente Links" msgid "Text Replacement" msgstr "Textersetzung" msgid "Transformations" msgstr "Transformationen" msgid "Make Upper Case" msgstr "Großschreiben" msgid "Make Lower Case" msgstr "Kleinschreiben" msgid "Capitalize" msgstr "Wortanfänge großschreiben" msgid "Speech" msgstr "Sprache" msgid "Start Speaking" msgstr "Sprechen starten" msgid "Stop Speaking" msgstr "Sprechen stoppen" msgid "&View" msgstr "&Ansicht" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Show Toolbar" msgstr "Werkzeugleiste anzeigen" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Customize Toolbar…" msgstr "Werkzeugleiste anpassen …" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Enter Full Screen" msgstr "Vollbild" msgid "Window" msgstr "Fenster" msgid "Minimize" msgstr "Minimieren" msgid "Zoom" msgstr "Vergrößern" msgid "Welcome to Poedit" msgstr "Willkommen bei Poedit" msgid "Bring All to Front" msgstr "Alle in den Vordergrund bringen" msgid "Information about the translator" msgstr "Informationen zum Übersetzer" msgid "Name:" msgstr "Name:" msgid "Your Name" msgstr "Ihr Name" msgid "Email:" msgstr "E-Mail:" msgid "you@example.com" msgstr "du@example.com" 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." msgid "Editing" msgstr "Bearbeiten" msgid "Automatically compile MO file when saving" msgstr "MO-Datei beim Speichern automatisch erstellen" msgid "Show summary after updating files" msgstr "Zusammenfassung nach dem Aktualisieren der Dateien anzeigen" msgid "Check spelling" msgstr "Rechtschreibung prüfen" msgid "Always change focus to text input field" msgstr "Den Fokus immer auf das Eingabefeld setzen" 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." msgid "Appearance" msgstr "Erscheinungsbild" msgid "Use custom list font:" msgstr "Benutzerdefinierte Schriftart für Listen verwenden:" msgid "Use custom text fields font:" msgstr "Benutzerdefinierte Schriftart für Textfelder verwenden:" msgid "Change UI language" msgstr "GUI-Sprache auswählen" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions msgid "(requires Windows 8 or newer)" msgstr "(benötigt Windows 8 oder neuer)" msgid "General" msgstr "Allgemein" msgid "Use translation memory" msgstr "Übersetzungsspeicher verwenden" msgid "Manage…" msgstr "Verwalten …" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "Beim Aktualisieren von Quelldaten" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "unklare Übereinstimmung innerhalb der Datei" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "Vorübersetzung aus dem Übersetzungsspeicher" 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." msgid "Stored translations:" msgstr "Gespeicherte Übersetzungen:" msgid "Database size on disk:" msgstr "Größe der Datenbank auf der Festplatte:" msgid "Import Translation Files…" msgstr "Übersetzungsdateien importieren …" msgid "Import translation files…" msgstr "Übersetzungsdateien importieren …" msgid "Import From TMX…" msgstr "Aus TMX importieren …" msgid "Import from TMX…" msgstr "Aus TMX importieren …" msgid "Export To TMX…" msgstr "Nach TMX exportieren …" 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). msgid "Reset" msgstr "Zurücksetzen" msgid "Select translation files to import" msgstr "Übersetzungsdateien zum Importieren auswählen" msgid "Translation Memory" msgstr "Übersetzungsspeicher" msgid "Importing translations…" msgstr "Übersetzungen werden importiert …" #, c-format msgid "Error loading translation file “%s”." msgstr "Fehler beim Laden der Übersetzungsdatei »%s«." msgid "Finalizing…" msgstr "Wird abgeschlossen …" msgid "Select TMX files to import" msgstr "TMX-Dateien zum Importieren auswählen" msgid "TMX Files" msgstr "TMX-Dateien" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "Importieren des Übersetzungsspeichers aus »%s« ist fehlgeschlagen." msgid "Import error" msgstr "Importfehler" msgid "Export as…" msgstr "Exportieren als …" msgid "Exporting translations…" msgstr "Übersetzungen werden exportiert …" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "Exportieren des Übersetzungsspeichers nach »%s« ist fehlgeschlagen." msgid "Export error" msgstr "Exportfehler" msgid "Reset translation memory" msgstr "Übersetzungsspeicher zurücksetzen" msgid "Are you sure you want to reset the translation memory?" msgstr "" "Sind Sie sicher, dass der Übersetzungsspeicher zurückgesetzt werden soll?" 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. msgid "TM" msgstr "TM" msgid "" "Source code extractors are used to find translatable strings in the source " "code files and extract them so that they can be translated." msgstr "" "Quellcode-Extraktoren werden verwendet, um übersetzbare Zeichenketten in den " "Quellcode-Dateien zu suchen und diese zu extrahieren, so dass sie übersetzt " "werden können." msgid "Custom Extractors:" msgstr "Benutzerdefinierte Extraktoren:" msgid "Custom extractors:" msgstr "Benutzerdefinierte Extraktoren:" msgid "GNU gettext" msgstr "GNU gettext" 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)." msgid "Delete extractor" msgstr "Extraktor entfernen" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "Sind Sie sicher, dass der Extraktor »%s« entfernt werden soll?" msgid "Extractors" msgstr "Extraktoren" msgid "Accounts" msgstr "Konten" msgid "Automatically check for updates" msgstr "Automatisch nach Aktualisierungen suchen" msgid "Include beta versions" msgstr "Beta-Versionen einbeziehen" 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." msgid "Updates" msgstr "Aktualisierungen" 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." msgid "Line endings:" msgstr "Zeilenenden:" msgid "Unix (recommended)" msgstr "Unix (empfohlen)" msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "Umbrechen bei:" msgid "Preserve formatting of existing files" msgstr "Formatierung vorhandener Dateien beibehalten" msgid "Advanced" msgstr "Erweitert" msgid "Settings" msgstr "Einstellungen" msgid "Preparing strings…" msgstr "Zeichenketten werden vorbereitet …" msgid "Pre-translating from translation memory…" msgstr "Vorübersetzen aus dem Übersetzungsspeicher …" #, 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" msgid "Pre-translating…" msgstr "Vorübersetzen …" 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. msgid "Pre-translate" msgstr "Vorübersetzung" 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." msgid "Cannot pre-translate from unknown language." msgstr "Eine unbekannte Sprache kann nicht vorübersetzt werden." 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." msgid "Only fill in exact matches" msgstr "Nur genaue Treffer ausfüllen" 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." msgid "Don’t mark exact matches as needing work" msgstr "Genaue Treffer nicht mit »Benötigt Überarbeitung« markieren" 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." 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." #, 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." 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." msgid "No entries could be pre-translated." msgstr "Es konnten keine Einträge vorübersetzt werden." 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." msgid "Cancelling…" msgstr "Abbrechen …" msgid "Drag Folders or Files Here" msgstr "Ordner oder Dateien hierherziehen" msgid "Drag folders or files here" msgstr "Ordner oder Dateien hierherziehen" msgid "Add Folders…" msgstr "Ordner hinzufügen …" msgid "Add folders…" msgstr "Ordner hinzufügen …" msgid "Add Files…" msgstr "Dateien hinzufügen …" msgid "Add files…" msgstr "Dateien hinzufügen …" msgid "Add Wildcard…" msgstr "Platzhalter hinzufügen …" msgid "Add wildcard…" msgstr "Platzhalter hinzufügen …" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) 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" msgid "Show in Explorer" msgstr "Im Explorer anzeigen" msgid "Show in Folder" msgstr "Im Ordner anzeigen" msgid "Paths" msgstr "Pfade" msgid "Excluded paths" msgstr "Ausgeschlossene Pfade" msgid "Advanced extraction settings" msgstr "Erweiterte Extraktionseinstellungen" msgid "Extract notes for translators from:" msgstr "Anmerkungen für Übersetzer extrahieren aus:" msgid "Comments prefixed with:" msgstr "Kommentare mit Präfix:" msgid "All comments" msgstr "Alle Kommentare" msgid "Additional xgettext flags:" msgstr "Zusätzliche xgettext-Parameter:" msgid "Additional keywords" msgstr "Zusätzliche Schlüsselwörter" msgid "Name of the project the translation is for" msgstr "Name des Projektes der Übersetzung" msgid "Team name and email address or URL" msgstr "Name des Teams und E-Mail-Adresse oder URL" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "z. B. nplurals=2; plural=(n != 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (empfohlen)" 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." msgid "Placeholders correctness" msgstr "Platzhalter-Korrektheit" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "Platzhalter »%s« fehlt in der Übersetzung." #, c-format msgid "Superfluous placeholder “%s” that isn’t in source text." msgstr "Überflüssiger Platzhalter »%s«, der nicht im Quelltext vorhanden ist." msgid "Plural form translations" msgstr "Plural-Form-Übersetzungen" msgid "Not all plural forms are translated." msgstr "Es sind nicht alle Pluralformen übersetzt." msgid "Inconsistent upper/lower case" msgstr "Inkonsistente Groß-/Kleinschreibung" msgid "The translation should start as a sentence." msgstr "Die Übersetzung sollte als Satz beginnen." msgid "The translation should start with a lowercase character." msgstr "Die Übersetzung sollte mit einem Kleinbuchstaben beginnen." msgid "Inconsistent whitespace" msgstr "Inkonsistenter Leerraum" msgid "The translation doesn’t start with a space." msgstr "Die Übersetzung beginnt nicht mit einem Leerzeichen." msgid "The translation starts with a space, but the source text doesn’t." msgstr "" "Die Übersetzung beginnt mit einem Leerzeichen, der Quelltext allerdings " "nicht." msgid "The translation is missing a newline at the end." msgstr "Am Ende der Übersetzung fehlt ein Zeilenumbruch." msgid "The translation ends with a newline, but the source text doesn’t." msgstr "" "Die Übersetzung endet mit einem Zeilenumbruch, der Quelltext allerdings " "nicht." msgid "The translation is missing a space at the end." msgstr "Am Ende der Übersetzung fehlt ein Leerzeichen." msgid "The translation ends with a space, but the source text doesn’t." msgstr "" "Die Übersetzung endet mit einem Leerzeichen, der Quelltext allerdings nicht." msgid "Punctuation checks" msgstr "Satzzeichenprüfungen" #, c-format msgid "The translation should end with “%s”." msgstr "Die Übersetzung sollte mit »%s« enden." #, c-format msgid "The translation should not end with “%s”." msgstr "Die Übersetzung sollte nicht mit »%s« enden." #, 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«." msgid "Cloud" msgstr "Cloud" msgid "Clear Menu" msgstr "Menü leeren" msgid "Clear menu" msgstr "Menü leeren" msgid "Comment:" msgstr "Kommentar:" msgid "Update" msgstr "Aktualisieren" msgid "&Delete" msgstr "&Löschen" msgid "Delete the comment" msgstr "Den Kommentar löschen" msgid "Edit project" msgstr "Projekt bearbeiten" msgid "Project name:" msgstr "Projektname:" msgid "Browse" msgstr "Durchsuchen" msgid "Add directory to the list" msgstr "Ordner zur Liste hinzufügen" msgid "OK" msgstr "OK" msgid "&File" msgstr "&Datei" msgid "&New…" msgstr "&Neu …" msgid "New from &POT/PO file…" msgstr "Neu aus &POT-/PO-Datei …" msgid "New From &POT/PO File…" msgstr "Neu aus &POT-/PO-Datei …" msgid "&Open…" msgstr "Ö&ffnen …" msgid "Open Recent" msgstr "Benutzte Dokumente" msgid "Open recent" msgstr "Zuletzt verwendete öffnen" msgid "Open cloud translation…" msgstr "Cloud-Übersetzung öffnen …" msgid "Open Cloud Translation…" msgstr "Cloud-Übersetzung öffnen …" msgid "&Start window" msgstr "&Startfenster" msgid "&Start Window" msgstr "&Startfenster" msgid "Catalogs &manager" msgstr "&Katalogverwaltung" msgid "Catalogs &Manager" msgstr "&Katalogverwaltung" msgid "&Close" msgstr "S&chließen" msgid "&Save" msgstr "&Speichern" msgid "Save &as…" msgstr "Speichern &unter …" msgid "Save &As…" msgstr "Speichern &unter …" msgid "Compile to MO…" msgstr "MO-Datei erstellen …" msgid "E&xport to HTML…" msgstr "E&xportieren als HTML …" msgid "Check for updates…" msgstr "Auf Aktualisierungen prüfen …" msgid "Settings…" msgstr "Einstellungen …" msgid "&Preferences" msgstr "&Einstellungen" msgid "E&xit" msgstr "&Beenden" msgid "Quit" msgstr "Beenden" msgid "Copy from singular" msgstr "Vom Singular kopieren" msgid "Copy From Singular" msgstr "Vom Singular kopieren" msgid "Translation needs &work" msgstr "Übersetzung benötigt &Überarbeitung" msgid "Translation Needs &Work" msgstr "Übersetzung benötigt &Überarbeitung" msgid "Edit &comment" msgstr "&Kommentar bearbeiten" msgid "Edit &Comment" msgstr "&Kommentar bearbeiten" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "Vorschläge" msgid "&Find…" msgstr "&Suchen …" msgid "Replace…" msgstr "Ersetzen …" msgid "Find next" msgstr "Nächstes Vorkommen suchen" msgid "Find previous" msgstr "Vorheriges Vorkommen suchen" msgid "Find and Replace…" msgstr "Suchen und Ersetzen …" msgid "Find Next" msgstr "Nächstes Vorkommen suchen" msgid "Find Previous" msgstr "Vorheriges Vorkommen suchen" msgid "Show string &ID" msgstr "String &ID anzeigen" msgid "Show String &ID" msgstr "String &ID anzeigen" msgid "Show warnings" msgstr "Warnungen anzeigen" msgid "Show Warnings" msgstr "Warnungen anzeigen" msgid "Sort by &file order" msgstr "Nach &Datei sortieren" msgid "Sort by &File Order" msgstr "Nach &Datei sortieren" msgid "Sort by &source" msgstr "Nach &Quelltext sortieren" msgid "Sort by &Source" msgstr "Nach &Quelltext sortieren" msgid "Sort by &translation" msgstr "Nach &Übersetzung sortieren" msgid "Sort by &Translation" msgstr "Nach &Übersetzung sortieren" msgid "&Group by context" msgstr "Nach Zusammenhang &gruppieren" msgid "&Group By Context" msgstr "Nach Zusammenhang &gruppieren" msgid "Entries with errors first" msgstr "Einträge mit Fehlern zuerst" msgid "Entries with Errors First" msgstr "Einträge mit Fehlern zuerst" msgid "&Untranslated entries first" msgstr "&Nicht übersetzte Einträge zuerst" msgid "&Untranslated Entries First" msgstr "&Nicht übersetzte Einträge zuerst" msgid "&Show code occurrences" msgstr "Code-Vorkommen &anzeigen" msgid "&Show Code Occurrences" msgstr "Code-Vorkommen &anzeigen" msgid "Show sidebar" msgstr "Seitenleiste anzeigen" msgid "Show status bar" msgstr "Statusleiste anzeigen" msgid "&Translation" msgstr "&Übersetzung" msgid "&Update from source code" msgstr "&Aktualisieren aus Quellcode" msgid "&Update from Source Code" msgstr "&Aktualisieren aus Quellcode" msgid "Update from &POT file…" msgstr "Aus &POT-Datei aktualisieren …" msgid "Update from &POT File…" msgstr "Aus &POT-Datei aktualisieren …" msgid "Sync with Crowdin" msgstr "Mit Crowdin synchronisieren" msgid "Pre-&translate…" msgstr "Vorüberse&tzung …" msgid "&Validate translations" msgstr "&Übersetzungen prüfen" msgid "&Validate Translations" msgstr "&Übersetzungen prüfen" msgid "Remove Same-as-Source Translations" msgstr "Übersetzungen mit gleicher Quelle entfernen" msgid "&Purge deleted translations" msgstr "&Ungenutzte Übersetzungen entfernen" msgid "&Purge Deleted Translations" msgstr "&Ungenutzte Übersetzungen entfernen" msgid "&Properties…" msgstr "&Eigenschaften …" msgid "&Go" msgstr "&Navigieren" msgid "&Done and next" msgstr "&Erledigt und weiter" msgid "&Done and Next" msgstr "&Erledigt und weiter" msgid "Previously edited" msgstr "Zuvor bearbeitet" msgid "Previously Edited" msgstr "Zuvor bearbeitet" msgid "&Previous translation" msgstr "&Vorherige Übersetzung" msgid "&Previous Translation" msgstr "&Vorherige Übersetzung" msgid "&Next translation" msgstr "&Nächste Übersetzung" msgid "&Next Translation" msgstr "&Nächste Übersetzung" msgid "P&revious unfinished" msgstr "V&orherige unfertige" msgid "P&revious Unfinished" msgstr "V&orherige unfertige" msgid "Ne&xt unfinished" msgstr "N&ächste unfertige" msgid "Ne&xt Unfinished" msgstr "N&ächste unfertige" msgid "Previous plural form" msgstr "Vorige Plural-Form" msgid "Previous Plural Form" msgstr "Vorige Plural-Form" msgid "Next plural form" msgstr "Nächste Plural-Form" msgid "Next Plural Form" msgstr "Nächste Plural-Form" msgid "&Online help" msgstr "&Online-Hilfe" msgid "&Online Help" msgstr "&Online-Hilfe" msgid "&GNU gettext manual" msgstr "&GNU gettext Dokumentation" msgid "&GNU gettext Manual" msgstr "&GNU gettext Dokumentation" msgid "&About Poedit" msgstr "&Über Poedit" msgid "&About" msgstr "&Über" msgid "Extractor setup" msgstr "Extraktor-Einrichtung" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Durch Semikola getrennte Liste der Dateiendungen (z. B. *.cpp;*.h):" msgid "Invocation:" msgstr "Aufruf:" msgid "Command to extract translations:" msgstr "Befehl, um Übersetzungen zu extrahieren:" 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)." msgid "An item in keywords list:" msgstr "Ein Eintrag in der Schlüsselwortliste:" 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." msgid "An item in input files list:" msgstr "Ein Eintrag in der Eingabedatei-Liste:" #, 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." msgid "Source code charset:" msgstr "Zeichensatz des Quellcodes:" #, 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." msgid "Translation Properties" msgstr "Übersetzungseigenschaften" msgid "Project name and version:" msgstr "Projektname und -version:" msgid "Language team:" msgstr "Übersetzungsteam:" msgid "Plural forms:" msgstr "Pluralformen:" msgid "Use default rules for this language" msgstr "Standard-Regeln für diese Sprache verwenden" msgid "Use custom expression" msgstr "Benutzerdefinierten Ausdruck verwenden" msgid "Learn about plural forms" msgstr "Weitere Informationen zu Pluralformen" msgid "Charset:" msgstr "Zeichensatz:" msgid "Advanced Extraction Settings…" msgstr "Erweiterte Extraktionseinstellungen …" msgid "Advanced extraction settings…" msgstr "Erweiterte Extraktionseinstellungen …" msgid "Translation properties" msgstr "Übersetzungseinstellungen" msgid "Sources Paths" msgstr "Quell-Pfade" msgid "Sources paths" msgstr "Quell-Pfade" msgid "Extract text from source files in the following directories:" msgstr "Text aus Quelldateien in den folgenden Ordnern extrahieren:" msgid "Base path:" msgstr "Ausgangspfad:" msgid "Sources Keywords" msgstr "Schlüsselwörter aus Quelltexten" msgid "Sources keywords" msgstr "Schlüsselwörter aus Quelltexten" 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:" msgid "Also use default keywords for supported languages" msgstr "Standard-Schlüsselwörter ebenso für unterstützte Sprachen verwenden" msgid "Learn about gettext keywords" msgstr "Weitere Informationen zu gettext-Schlüsselwörtern" msgid "Update summary" msgstr "Zusammenfassung der Aktualisierung" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" "Diese Zeichenketten wurden in den Quellen gefunden, aber nicht in der " "Datei.\n" "Poedit wird sie jetzt zur Datei hinzufügen." msgid "New strings" msgstr "Neue Zeichenketten" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" "Diese Zeichenketten befinden sich nicht mehr im Quellcode.\n" "Poedit wird sie jetzt aus der Datei entfernen." msgid "Obsolete strings" msgstr "Veraltete Zeichenketten" msgid "(0 new, 0 obsolete)" msgstr "(0 neu, 0 veraltet)" msgid "Open" msgstr "" msgid "Open file" msgstr "Datei öffnen" msgid "Save file" msgstr "Datei speichern" msgid "Validate" msgstr "Prüfen" msgid "Check for errors in the translation" msgstr "Auf Fehler in der Übersetzung prüfen" msgid "Update from code" msgstr "Aktualisieren aus Quellcode" msgid "Update from Code" msgstr "Aktualisieren aus Quellcode" msgid "Update from source code" msgstr "Aktualisieren aus Quellcode" msgid "Sidebar" msgstr "Seitenleiste" msgid "Show or hide the sidebar" msgstr "Seitenleiste anzeigen oder verbergen" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. msgid "Previous source text" msgstr "Vorheriger Quelltext" 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." msgid "Notes for translators" msgstr "Anmerkungen für Übersetzer" msgid "Comment" msgstr "Kommentar" msgid "Add comment" msgstr "Kommentar hinzufügen" msgid "Add Comment" msgstr "Kommentar hinzufügen" msgid "Delete From Translation Memory" msgstr "Aus Übersetzungsspeicher löschen" msgid "Delete from translation memory" msgstr "Aus Übersetzungsspeicher löschen" msgid "Translation suggestions" msgstr "Übersetzungsvorschläge" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). msgid "No matches found" msgstr "Keine Treffer gefunden" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). msgid "No Matches Found" msgstr "Keine Treffer gefunden" msgid "This string was found in Poedit’s translation memory." msgstr "Diese Zeichenkette wurde im Übersetzungsspeicher von Poedit gefunden." 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." 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." msgid "The TMX file is malformed." msgstr "Die TMX-Datei ist fehlerhaft." msgid "No translations were found in the TMX file." msgstr "In der TMX-Datei wurden keine Übersetzungen gefunden." #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Übersetzungsspeicher-Datenbank ist beschädigt: %s (%d)." #, c-format msgid "Translation memory error: %s (%d)." msgstr "Übersetzungsspeicherfehler: %s (%d)." msgid "Cannot create temporary directory." msgstr "Temporäres Verzeichnis konnte nicht erstellt werden." msgid "There are no translations. That’s unusual." msgstr "Es gibt keine Übersetzungen. Das ist ungewöhnlich." msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "Translators typically use PO template files (POTs) prepared for them by the " "developer." msgstr "" "Übersetzbare Einträge werden nicht manuell in das Gettext-System " "hinzugefügt, sondern automatisch aus dem \n" "Quellcode extrahiert. So bleibt immer alles aktuell und genau.\n" "Übersetzer verwenden üblicherweise PO-Vorlagen (POTs), welche von " "Programmierern vorbereitet werden." msgid "(Learn more about GNU gettext)" msgstr "(Mehr über GNU gettext erfahren)" 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:" msgid "Update from POT" msgstr "Aus POT-Datei aktualisieren" msgid "Take translatable strings from an existing POT template." msgstr "Übersetzbare Zeichenketten aus existierender POT-Vorlage verwenden." 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:" msgid "Extract from sources" msgstr "Aus Quellcode extrahieren" 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 #, c-format msgid "Version %s" msgstr "Version %s" msgid "Create new" msgstr "Neu erstellen" msgid "Create new translation from POT template." msgstr "Neue Übersetzung aus POT-Vorlage erstellen." msgid "Browse files" msgstr "Dateien durchsuchen" msgid "Open and edit translation files." msgstr "Übersetzungsdateien öffnen und bearbeiten." msgid "Translate cloud project" msgstr "Cloud-Projekt übersetzen" msgid "Collaborate with other people online." msgstr "Mit anderen online zusammenarbeiten." msgid "Recent files" msgstr "Zuletzt verwendete Dateien" msgid "Sync" msgstr "Sync" 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") #, 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. #, c-format msgid "%s Preferences" msgstr "%s-Einstellungen" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "Dienste" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "%s ausblenden" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "Andere ausblenden" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "Alle anzeigen" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "%s beenden" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "Einstellungen …" msgid "Preferences..." msgstr "Einstellungen …" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "Zuletzt verwendet" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "Häufig verwendet" msgid "&Apply" msgstr "&Anwenden" msgid "Apply" msgstr "Anwenden" msgid "&Back" msgstr "&Zurück" msgid "Back" msgstr "Zurück" msgid "&Cancel" msgstr "A&bbrechen" msgid "&Clear" msgstr "&Bereinigen" msgid "Clear" msgstr "Bereinigen" msgid "Copy" msgstr "Kopieren" msgid "Cu&t" msgstr "&Ausschneiden" msgid "Cut" msgstr "Ausschneiden" msgid "Edit" msgstr "Bearbeiten" msgid "&Quit" msgstr "&Beenden" msgid "Help" msgstr "Hilfe" msgid "&New" msgstr "&Neu" msgid "New" msgstr "Neu" msgid "&No" msgstr "&Nein" msgid "No" msgstr "Nein" msgid "&OK" msgstr "&OK" msgid "Open…" msgstr "Öffnen …" msgid "&Open..." msgstr "Ö&ffnen …" msgid "Open..." msgstr "Öffnen …" msgid "&Paste" msgstr "E&infügen" msgid "Paste" msgstr "Einfügen" msgid "Preferences" msgstr "Einstellungen" msgid "&Redo" msgstr "&Wiederherstellen" msgid "Refresh" msgstr "Aktualisieren" msgid "&Save as" msgstr "Speichern &unter" msgid "Save as" msgstr "Speichern unter" msgid "Select &All" msgstr "&Alles auswählen" msgid "Select All" msgstr "Alles auswählen" msgid "&Undo" msgstr "&Rückgängig" msgid "&Yes" msgstr "&Ja" msgid "Yes" msgstr "Ja" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Umschalt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Eingabe" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "Hoch" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "Runter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "Links" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "Rechts" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "strg" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "umschalt" poedit-3.5/locales/zh_TW.mo0000644000175100001770000015424214664354143012625 00000000000000*X9 Y9 e9&p99<99J9gF: :: :: :::::; ;;;&;5;;;A;J;^;r;v;;;;;;;;;; ; ;;< < <!<1<G<]<l<<<<<<<<< < = ==%=A=]=v========>*>:> X> d>n>w>>> > > >> >> > >> ?? *?6?F?Z?u?~???? ? ?1 @<@'A@i@@ @@7@6@ A)@AjA oA]zAA<AD(B$mBB BB'C .C"R Xcv%ɚК  % 23? s}e-/ @M6] !͜ -8?P a n {  \ҝ/Kfg)Ξ'-U\r '՟'#.Kz  ˠ*! 9Zat P $4GZm ǢԢ   , 3 =JZj~6LSiť%ۥ 0C Vc j w$Ҧ  %8W mz <8 3u@* & " C PZ pz  ԩ ީԪ۪ 6OS-r?$#@d$w'Ĭ׬ ެ­2E [h~  ȮϮ֮ .ӯ9گ1$VRlHA" dqx5ʱ(E$n $޳lxm s*޵&6F_ oy  2  2Ebiz &ɷзZAS Zdk  Ǹ Ը  -:Ml ƹ ͹ڹ$7GZpк   +APfmt ϻ1Hrd׼  .G]v=ѽ $!9?[ ~¾=A( AK^-z 2* +E:?zpR*%CaXU)/GTwD$E6E|:''%=M #$E-is!T+TQSaVA DNg5jX?[42 9FV j'w%" xm c ov    !*:!e!  &E3y!.!PUr !,Ndk*s 68H?8 6`fjq u$"! $DJZrKCDo=Ift!-L P59' S{ Om&TNW6 Tq^Ej"Z_iw>5Ba<D+`MU+,;.$QF.>O.hB1^:\p* >i0)_4 Yx7_7g:CAjG @ArkwT)E dsV|czF2d5[QK,v| -M{2&oy8sew ~HHL4HV=k*ye3hriat/3d !/%p10]3 G@I:6F'uvq{ 9bY#XU NrAn fu9EJn%)1$tWW48sg/`-bkpX0Sx?#R}S}"o?;VY`#6KDf,@Uzx;[gNczcqMZ|RZ\~&X<2a(?PCu(j(n<O+P8Bhvl %*G"J']Ime^y$ Rl~=}Q[L\bl!7Jm]  (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd AccountAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add accountAdd 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 languagesAlt+Always 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 errorCrowdin is an online localization management platform and collaborative translation tool.Ctrl+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 no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownDownloading 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:EnterEnter 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 loading translation file “%s”.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export errorExport 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…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)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport from TMX…Import translation files…Importing translation memory from “%s” 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 CrowdinLeftLine %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 translations were found in the TMX file.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKObsolete stringsOneOnly 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 translation templateOpen...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 translationsQuitQuit %sReading file content failed with the following error: %sRecentRecent 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 FinderReviewRightSaveSave &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 languageServicesSet LanguageSet languageSettings…Shift+Show AllShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow summary after updating filesShow 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.These strings are no longer in the source code. Poedit will remove them from the file now.These strings were found in the sources but were not in the file. Poedit will add them to the file now.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 entries in the file are probably incorrect.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 errorUntransUpUpdateUpdate 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 the file failed. Click on 'Details >>' for details.Updating 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown 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: 2024-08-30 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 個問題。總計 %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)(0 筆新增字串,0 筆過時字串)(深入瞭解 GNU gettext)(新增:%i,棄用:%i)(使用預設語言)(尚未登入)(需要 Windows 8 或更新版本)< 前一筆(&P)<未命名>關於 %s帳戶帳號加入新增帳戶新增註解加入檔案…加入資料夾…新增專案加入萬用字元…新增帳戶新增註解將目錄加入清單加入檔案…加入資料夾…新增專案加入萬用字元…額外的關鍵字額外的 xgettext 旗標:進階進階擷取設定…進階擷取設定進階擷取設定…全部譯文檔案全部註解所有字串同時為支援的語言使用預設關鍵字Alt+永遠將焦點放在文字輸入欄位中輸入檔清單中的一個項目:關鍵字清單中的一個項目:外觀套用確定要刪除「%s」擷取器?確定要重設譯文記憶庫?自動檢查更新儲存時自動編譯 MO 檔案返回基底路徑:Beta 版本包含最新功能和改進,但可能有點不穩定。全部帶到最前方損毀的 PO 檔:沒有 msgid_plural,卻使用複數形式的 msgstr損毀的 PO 檔:單數形式的 msgstr 跟 msgid_plural 一同使用翻譯字串中有損壞的標記。瀏覽瀏覽檔案預設情況下,不精確的項目也會包含在內,但會將之標記為需要處理。勾選此選項以僅只納入完美符合的項目。取消取消中...無法建立暫存目錄。無法執行程式:%s無法前置未知語言的翻譯。無法在沒有來源文字時進行預先翻譯。轉為大寫編目檔管理員(&M)編目檔管理員(&M)編目檔管理員變更使用者介面語言字元集:立刻檢查文件檢查文法與拼字打字同時檢查拼字檢查更新…檢查譯文中是否有錯誤檢查更新…拼字檢查清除清除選單清除譯文清除選單清除譯文關閉雲端程式碼出現處程式碼出現處與其他人在線上協作。正在收集來源檔...擷取譯文的命令:註解註解:註解前置詞:編譯成 MO 檔案…編譯成…已編譯的譯文檔案在「屬性」中設定原始碼抽出項目。確認將 Poedit 和支援的雲端在地化平台連線,無縫同步代管平台上的翻譯。複製從單數型內容複製從原文複製從單數型內容複製從原文複製自動校正拼字無法下載 Localazy 專案詳細資訊。無法載入檔案,檔案可能損壞。無法儲存檔案 %s。新增建立新譯文從 POT 模板建立新翻譯。建立譯文專案Crowdin 錯誤Crowdin 是線上在地化管理平臺暨翻譯協作工具。Ctrl+剪下(&T)自訂擷取器:自訂擷取器:自訂工具列…剪下譯文記憶庫使用的儲存空間:刪除從譯文記憶庫中刪除刪除擷取器從譯文記憶庫中刪除刪除專案刪除註解刪除專案「刪除專案」不會刪除其他翻譯檔案。目錄:是否刪除「%s」專案?是否從硬碟重新載入檔案?這麼做會導致您在 Poedit 的未儲存編輯消失不見。確定要移除全部不再使用的譯文?不要儲存(&N)不要儲存不要再顯示不要將完全相符的譯文標示為「待校閱」不要再顯示向下鍵正在下載最新的翻譯⋯此專案已停用翻譯下載。拖曳資料夾或檔案至此拖曳資料夾或檔案至此結束(&X)編輯編輯註解(&C)編輯註解(&C)編輯註解編輯註解編輯專案編輯專案編輯編輯…電子郵件地址:Enter進入全螢幕這個檔案中條目的複數形式數目,與檔案中 Plural-Forms 標頭的記錄不符包含錯誤的項目優先包含錯誤的項目優先出錯的項目在清單中以紅色標記。您可以點選該項目以顯示詳細的錯誤資訊。載入「%s」翻譯檔時發生錯誤。開啟檔案發生錯誤儲存檔案時發生錯誤載入 XLIFF 檔案時發生錯誤:%s錯誤單複數合併譯文排除的路徑匯出成 TMX 檔案…匯出成…匯出時發生錯誤匯出成 TMX 檔案…無法將譯文記憶庫匯出至 %s。正在匯出譯文…從來源更新「譯者注意事項」擷取來源:擷取下列目錄中的原始程式檔文字:正在擷取可翻譯字串…擷取器設定擷取器指令執行失敗:%s無法與 Poedit 程序溝通。無法載入包含擷取翻譯的檔案。無法合併 gettext 編目檔。無法更新譯文記憶庫:%s檔案無法開啟檔案檔案 %s 不存在。「%s」檔案不是翻譯檔。檔案 %s 因設定為唯讀而無法儲存。 請以不同檔名儲存檔案。正在完成…尋找尋找下一筆尋找上一筆尋找及取代…在註解中尋找在原文中尋找在譯文中尋找尋找下一筆尋找上一筆修正語言修正語言修正標頭修正標頭Flutter 翻譯檔形式 %i形式 %i (未使用)常用GNU gettext一般HTML 檔案說明隱藏 %s隱藏其他隱藏側邊欄隱藏狀態列隱藏這項通知訊息雲端同步如何運作?ID如果繼續清除,全部標示為已刪除的譯文便會永久移除。如果未來這些訊息再次加入,就必須再重新翻譯一次。若您先前拒絕檔案存取,可以到系統偏好設定 > 安全性與隱私權 > 隱私權 > 檔案與資料夾放行。若您先前拒絕檔案存取,可依循「系統設定」 >「 隱私權與安全性」 > 「隱私權」 > 「檔案與檔案夾」變更放行。忽略忽略字母大小寫從 TMX 檔案匯入…匯入譯文檔案…匯入時發生錯誤從 TMX 檔案匯入…匯入譯文檔案…無法從 %s 匯入譯文記憶庫。正在匯入譯文…在:%s包含 Beta 版大小寫不一致空白數不一致譯者資訊安裝檔案無效喚起:JSON 翻譯檔保留語言名稱或代碼目標語言與來源語言相同。尚未設定目標語言。譯文語言:語言選擇語言團隊:語言:上次修改時間深入瞭解 gettext 關鍵字深入瞭解複數型深入瞭解深入瞭解 %s深入瞭解 Crowdin向左鍵第 %d 列 (檔案為 %s) 已毀損 (無效的 %s 資料)。行尾結束符號:請以分號隔開副檔名清單 (例如 *.cpp; *.h):載入英文Localazy 是一個高度自動化的在地化平台,可讓任何人輕鬆將產品和內容翻譯成多種語言。無法在 Poedit 中直接編輯 MO 檔。轉為小寫轉為大寫從這個 POT 檔案建立新翻譯。格式錯誤的檔案標頭:%s管理帳戶管理…正在合併差異…最小化本地化專案名稱姓名:下一筆未完成譯文(&X)下一筆未完成譯文(&X)待校閱待校閱網路錯誤:%s (%d)永遠不要讓字串清單取得焦點。如果您啟用這個選項,就得並用 Ctrl 鍵與方向鍵才能以鍵盤導覽,不過同時您能立即輸入文字,而不必先按 Tab 鍵變更輸入焦點。新增從 &POT/PO 檔案新增…從 &POT/PO 檔案新增…新字串下一筆複數型譯文下一筆複數型譯文否找不到符合條件的項目沒有任何原文可以完成前置翻譯。檔案中沒有這個字串在原始碼中的出現處資料。找不到符合條件的項目找不到譯文的問題。您的帳戶中尚無翻譯專案。在 TMX 檔案中找不到譯文。沒有用量資訊複數型內容並未全部翻譯。尚未獲得授權,請重新登入。給譯者的備註確定過時字串單數只有在信任譯文記憶的品質時才啟用這項設定。依照預設,與譯文記憶比對後,完全相符的項目代入的譯文都會標記為「待校閱」,並請在採用前先行校閱。僅代入完全相符的譯文開啟雲端翻譯…開啟最近使用的檔案開啟及編輯翻譯檔案。開啟雲端翻譯開啟雲端翻譯…開啟檔案在編輯器中開啟在編輯器中開啟開啟最近開啟翻譯模板開啟...開啟…選項其他前一筆未完成譯文(&R)前一筆未完成譯文(&R)PO 翻譯檔POT 譯文模本POT 檔案僅是譯文範本,檔案內不包含任何譯文。 若要進行翻譯,請以這個範本建立新的 PO 譯文檔案。貼上貼上並比對樣式路徑自來源碼進行所有專案中的檔案的字串更新權限不足。預留位置 “%s” 並未出現在翻譯中。預留位置準確性請改開啟並編輯對應的 PO 檔。當您儲存時,MO 檔會同時更新。請先儲存檔案。儲存完畢後,這個區段才能進行編輯。複數複數形式翻譯檔案所採用的複數形式表述式,對%s來說不常見。複數型:PoeditPoedit - 編目檔管理員Poedit 已自動修正 %s 檔案中無效的內容。Poedit 會嘗試將舊版檔案中的譯文或譯文記憶中的譯文代入新項目中。如果譯文記憶中累積的譯文量很少,這項功能的效果就不會很好,但是會隨著譯文量的增加逐漸改善效果。Poedit 無法顯示使用這個字串的原始碼,因為檔案無法從參考位置取得,或是一個未指向真實檔案的符號參考。Poedit 是個易用的翻譯編輯器。Poedit 無法開啟「%s」檔案。前置翻譯(&T)…前置翻譯前置翻譯已前置翻譯 %u 筆字串從翻譯記憶體前置翻譯中...正在進行前置翻譯…前置翻譯會從譯文記憶庫中自動尋找完全相同或相似的譯文代入未翻譯的項目中。預先翻譯需要可供使用的來源文字。如果僅使用沒有實際文字的 ID,預先翻譯將無法運作。需要先知道來源文字的語言,才能進行前置翻譯。Poedit 無法從這個檔案偵測語言。偏好設定設定偏好...偏好設定…準備字串中...保留現有檔案的格式化處理方式前一筆複數型譯文前一筆複數型譯文過去的來源文字先前編輯過先前編輯過專案名稱及版本:專案名稱:專案:專案標點檢查清除清除已刪除的譯文退出結束 %s讀取檔案內容時發生錯誤,錯誤為:%s最近最近檔案再次動作重新整理重新載入檔案重新載入檔案尚餘 %d 筆原文未翻譯取代全部取代(&A)全部取代(&A)取代字串取代…遺失必要的 Plural-Forms 標頭。重設重設譯文記憶庫重設譯文記憶庫將永久刪除全部已儲存的譯文。這項操作無法復原。在 Finder 顯示校閱向右鍵儲存另存新檔(&A)…另存新檔(&A)…仍要儲存仍要儲存另存為另存新檔…儲存變更儲存檔案螢幕截圖:選取全部(&A)選取全部選取要匯入的 TMX 檔案選取目錄選擇翻譯檔案選取要匯入的譯文檔案選擇翻譯模板選取您偏好的語言服務設定語言設定語言系統設定Shift+顯示全部顯示側邊欄顯示拼字與文法顯示狀態列顯示字串 ID(&I)顯示替換項目顯示工具列顯示警告訊息在檔案總管顯示在資料夾顯示顯示或隱藏側邊欄顯示側邊欄顯示狀態列顯示字串 ID(&I)更新檔案後顯示摘要顯示警告訊息側邊欄登入登出登入登入至 %s登入至雲端帳戶登入 Crowdin登入至雲端帳戶登出單數智慧複製/貼上智慧破折號智慧連結智慧引號依據檔案順序排序(&F)依據原文排序(&S)依據譯文排序(&T)依據檔案順序排序(&F)依據原文排序(&S)依據譯文排序(&T)原始程式碼字元集:原始程式碼擷取器用於尋找原始程式碼中的可翻譯字串,並將之擷取出來進行本地化。原始程式碼無法使用。找不到原始碼原文來源文字 ID原文 — %s原始程式碼關鍵字原始程式碼路徑原始程式碼關鍵字原始程式碼路徑朗讀由於尚未安裝 %s 字典,因此拼字檢查已停用。拼字與文法開始朗讀停止朗讀已儲存的譯文:字串上下文:%s字串識別碼:%s以字元數表示的字串長度以字元數表示的字串長度:翻譯字串 | 來源字串尋找字串替換項目譯文建議如果沒有正確設定目標語言,便無法使用建議譯文;其他功能如複數型設定,也可能受到影響。多餘的預留位置 “%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」檔案已被其他應用程式修改。現在的不精確譯文對應的是(在用模板檔更新之前)舊的源文。填充翻譯至檔案的最簡易解法,就是從 POT 檔更新:譯文應該以空白字元開始。譯文以新行字元結尾,但原文並未以新行字元結尾。譯文以空白字元結尾,但原文並未以空白字元結尾。譯文以「%s」結尾,但原文是以「%s」結尾。譯文結束位置遺漏新行字元。譯文結束位置遺漏空白字元。譯文已準備就緒,但仍有 %d 個項目尚未翻譯。譯文已準備就緒。譯文應該以「%s」結束。譯文不應該以「%s」結束。譯文應該以句子開始。譯文應該以小寫字元開始。譯文以空白字元開始,但原文並未以空白字元開始。這些譯文已標示為「待校閱」,可能翻譯尚未明確。你應該校閱它們是否正確。沒有譯文。這並不尋常。試圖讓檔案的排版格式變得整齊時遭遇問題 (但仍舊順利儲存)。上傳翻譯至 Localazy 時發生錯誤。載入檔案時發生錯誤,因此可能導致部分資料遺失或是損毀。這些設定會影響 PO 檔案的內部格式化處理方式。如果有特定需求才需要調整它們,例如需要進行版本控制。原始碼已經沒有這些字串。 Poedit 現在會從檔案移除這些字串。來源有這些檔案沒有的字串。 Poedit 現在會將這些字串加到檔案。本 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由於在檔案「屬性」指定的路徑中找不到程式碼,翻譯無法從原始碼更新。複數UTF-8 (建議採用)取消動作遭遇未處理的例外:%sUnix (建議採用)未知的 Crowdin 錯誤。未知錯誤未譯向上鍵更新更新全部更新專案中的所有編目檔是否更新專案中的所有編目檔?從 POT 檔案進行更新(&P)…從 POT 檔案進行更新(&P)…從原始程式碼進行更新從 POT 檔更新從原始程式碼進行更新從原始程式碼更新更新摘要更新更新失敗更新檔案失敗。點選「詳細資料 >>」取得深入資訊。正在更新翻譯正在更新使用者資訊⋯無法上傳翻譯至 %s。正在上傳翻譯至 %s……正在上傳翻譯⋯使用自訂運算式使用自訂清單字型:使用自訂文字欄位字型:使用這個語言的預設規則在原始程式碼中使用這些關鍵字 (函式名稱) 以辨識可翻譯字串:使用譯文記憶庫驗證驗證結果版本 %s正在等候身分核對⋯歡迎使用 Poedit從原始程式碼進行更新時全字拼寫須相符視窗Windows您要使用英文作為來源文字嗎?循環尋找換行位置:XLIFF 翻譯檔是您也可以直接從原始碼抽出可翻譯字串:請不要拖放超過一個檔案至 Poedit 視窗中。您無權讀取檔案「屬性」指定之路徑中的原始碼檔案。您得要重新啟動 Poedit 這項更動才會生效。您的姓名如果不儲存,便會失去剛剛進行的變更。您的姓名與電子郵件位址僅用於設定 GNU gettext 檔案的 Last-Translator 標頭。零縮放alt待校閱ctrl不要刪除暫存檔 (用於偵錯)例如 nplurals=2; plural=(n > 1);在檔案內部進行模糊比對前往指定列號的項目處理 poedit:// URI使用譯文記憶進行前置翻譯shift未知的語言不支援的版本 (%s)you@example.com「%s」是無效的 POT 檔。poedit-3.5/locales/nl.mo0000644000175100001770000016505514664354154012211 00000000000000<+9 9 9&99<:P:Jc:g: ; ; /;9; @;N;U;[;c;j;q;w;;;;;;;;;;;<< <<</<A<E< I< V<c<l<u< |<<<<<<< ===!='=0=G= ^= l= z=======>%>+>0>D>c>{>>> > >>>>> > ? ?? (?4? D? P?\? v?? ??????@#@C@ Y@ f@1r@@'@@@ AA7A6QAA)AA A]A@B<SBDB$BB CCC C"CC+C)D 8DCDUDgDxDDDDDD#DE-ELFLMLSLfeLLLuM(vMMM"MM MMN N &N3NEN0VNNN#N<N"O:O JOUO*hO0O!O'OPP)P(HPTqP PP P PPQQ+Q @Q JQ XQ eQrQQQQQQ QQ QQQ Q RR!R@RZR]RSzS T TT0T LTYTlT2TTTTTU (UIU QU ^UjUUU;U(UVV1V @V JVXVuV VVVV:V W<W QW^W.WX*X*:XeXX XXX*XXXX Y Y#Y:YYYZ ,Z8ZIZZZ]Z#nZ\ZZ'[/([+X[[$[%[[[[\\\\ \ \]] 8]B]Q] `]l]]]]]]]]]]^^^=^^1_3_nL_E_``;!` ]`k`r`@``a,b,bb bb2 c*?cjc}cw djd dd ee%.eTeie~eeee eeeef f%f*f82fkf rfff f f fff f ff f(f"g(gzAggggg g g g hh h "h /h 9h Fh Rh]hxhh"hhhh i i"i +i7i>i GiTini~ii i iiii ijj!"j DjRjZjbjkj sjjjjjjj j j kk#k3kHk\klkkkl8l NlZlil|l ll llKl m"m 1m?mTmgm}m1mm m mm=nnAoFo(Xoo oo+oo o8o"&pIpZpqC8q8|qqr8Ds1}sRsctQftt't:tl6uPu-uC"vAfvKv0v.%wTw!w)x-/x+]x8xCxuy,|yLy;y]2zzZ{gq{J{c$|[|o|T}7~m8~_~[bhxr Ȁۀ7 2B"uǁ~߁q^Ђlp  ԃ "$"G`yÄ҄ڄ<'=$Zυ#V&} ن.& UajH5χm7s 3aKPUYv.{ ˉ4:Kd!t =J;\>NhL ΍ٍ ߍ     %2E Xb kv ˎ .3 9 E R ]h q}++  % 3> GTt ɐ9Pgnr&ˑ  )19 BL^rђ);Md &#&ٓ'89r.w) Д 95>"t5͕ ӕcݕALYP.&/H #(,H*uИ "7"Z}"ҙ  *28N$d& ̚ ֚12P | "9"Tw!,=(H[6y! ҝ\ߝ<BKe !Ş!#5LF^ "k՟BA 0.?."n" ȡݡ': C O\bz "}:2( IPVh~ 1̤,4@a&ɥ +B/%r)¦ʦ(_.  ֧ (6ETh{ ̨ը ,Aad0ɪZb īܫ2-GN1d" լ3*+^ *ح&*> Vw@ ȮDծ &9 1 !Rt  .)?TPVvزܲ5g/)4޳5I(a#ɴδ#ʵ#/FWh y Զ!ַFܷ#/6fJNWPq¹ӹڹK@R840m¼4Ҽ-5Hph پ (F[p ÿ ֿ̿, -7AF  ' 8+Eqz4=NVf v (1H(^   :Ocu !7Pdl u  $1Ifx   )Y0$>4s 85|n&<K#^* <*+i:R 87ZOsx!)9sd(D<d::2J#$(&'O1w;z0`UIy1_<|Pzjt|Z>kjg nz C'3kq 4& 5@ GQ%a(##.GdP!0"Ss*0)]0  $%9A'I q}LBi;D:{- :!,0+]! 41jCt#9hd ><Pu] MfoO71@'_T%VODOWq:+TJZsG6(Yar\\7XuVb?#{ 8IL6t%AIXXU86K,&`,)gyH+wG|]8_!{om0[[)Lg2US$p(Zl>~T$pK;}iC=c@ MQz3/ w  dj*1.D0W piwmke;kncj-4U45:^( 'YZH5 qv0bEs&=7J2b.DLt{B<v_+3v|V%lK C)>"9m3  JaSEN GyE"nog/:S<PhnRrRYaQiuR$ `hB[@xAl #WI-]5MAs^~z-xec?B` xf~=Q?^*rf;\d!H'N!}NeF&9"F/z.2 PqFky,}*| (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd AccountAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add accountAdd 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 languagesAlt+Always 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 errorCrowdin is an online localization management platform and collaborative translation tool.Ctrl+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 no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownDownloading 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:EnterEnter 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 loading translation file “%s”.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export errorExport 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…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)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport from TMX…Import translation files…Importing translation memory from “%s” 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 CrowdinLeftLine %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 translations were found in the TMX file.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKObsolete stringsOneOnly 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 translation templateOpen...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 translationsQuitQuit %sReading file content failed with the following error: %sRecentRecent 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 FinderReviewRightSaveSave &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 languageServicesSet LanguageSet languageSettingsSettings…Shift+Show AllShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow summary after updating filesShow 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.These strings are no longer in the source code. Poedit will remove them from the file now.These strings were found in the sources but were not in the file. Poedit will add them to the file now.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 entries in the file are probably incorrect.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 errorUntransUpUpdateUpdate 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 the file failed. Click on 'Details >>' for details.Updating 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown 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: 2024-08-30 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 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&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(0 nieuw, 0 verouderd)(Meer te weten komen over GNU-gettext)(Nieuw: %i, verouderd: %i)(Gebruik de standaardtaal)(niet aangemeld)(vereist Windows 8 of hoger)< &VorigeOver %sAccountAccountsToevoegenAccount toevoegenOpmerking toevoegenVoeg bestanden toe…Voeg mappen toe…Project toevoegenVoeg joker toe…Account toevoegenOpmerking 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 talenAlt+Altijd de cursor in het tekstinvoerveld zettenEen 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-foutCrowdin is een online lokalisatiebeheerplatform en hulpmiddel voor gezamenlijke vertalingen.Ctrl+Kni&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.Wilt u alle vertalingen verwijderen die niet meer worden gebruikt?&Niet opslaanNiet opslaanNiet meer weergevenExacte overeenkomsten niet markeren ter controleNiet meer weergevenOmlaagDe recentste vertalingen aan het downloaden…Het downloaden van vertalingen is uitgeschakeld in dit project.Sleep mappen of bestanden hierheenSleep mappen of bestanden hierheen&AfsluitenBewerkenBewerk de &opmerkingBewerk de &opmerkingOpmerking bewerkenOpmerking bewerkenWijzig projectBewerk het projectBewerkenBewerken…E-mailadres:EnterGa 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 het laden van het vertalingsbestand "%s".Fout bij openen van bestandFout bij opslaan bestandFout bij het laden van XLIFF-bestand: %sFoutenAllesUitgesloten padenExporteer naar TMX…Exporteren als...ExporteerfoutExporteren naar HTML…Exporteer naar TMX…Vertaalgeheugen exporteren naar “%s” mislukt.Vertalingen exporteren…Extraheer vanuit de bronnenExtraheer opmerkingen voor vertalers vanuit:Extraheer tekst uit de bronbestanden in de volgende directory's:Vertaalbare tekenreeksen extraheren…Instellen extraheerderExtraheerdersCommando mislukt: %sCommunicatie 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.Afronden...ZoekenVolgende zoekenVorige zoekenZoeken en vervangen…In opmerkingen zoekenIn bronteksten zoekenIn vertalingen zoekenVolgende zoekenVorige zoekenTaal reparerenTaal reparerenDe header reparerenRepareer de headerFlutter VertaalbestandenVorm %iFormulier %i (ongebruikt)FrequenteGNU-gettextAlgemeenHTML-bestandenHulpVerberg %sVerberg overigeVerberg 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…ImporteerfoutImporteer vanuit TMX…Importeer vertaalbestanden…Vertaalgeheugen importeren vanaf “%s” mislukt.Vertalingen importeren...In: %sNeem bèta-versies opInconsistent gebruik van hoofd- en kleine lettersInconsistent gebruik van witruimteInformatie over de vertalerInstallerenOngeldig bestandOproep:JSON 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 CrowdinPijl naar linksRegel %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...Nieuw vanuit &POT/PO-bestand...Nieuwe tekenreeksenVolgende 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.Er zijn geen vertalingen gevonden in het TMX-bestand.Geen gebruiksinformatieNiet alle meervoudsvormen zijn vertaald.Niet geautoriseerd; log opnieuw in.Opmerkingen voor vertalersOkéVerouderde tekenreeksenÉé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 recenteVertaalsjabloon openenOpenen...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 definitiefAfsluitenStoppen met %sHet lezen van bestandsinhoud is mislukt door de volgende fout: %sRecenteRecente bestandenOpnieuwVernieuwenBestand opnieuw ladenBestand opnieuw ladenResterend: %dVerwijderenVervangen&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 FinderNakijkenPijl naar rechtsOpslaanOpslaan &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 voorkeurstaalServicesStel de taal inStel de taal inInstellingenInstellingen…Shift+Toon alleZijbalk 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 een samenvatting na het bijwerken van de bestandenToon 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" 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.Deze tekenreeksen staan niet meer in de broncode; Poedit zal ze nu uit het bestand verwijderen.Deze tekenreeksen zijn in de bronnen gevonden, maar stonden niet in het bestand; Poedit zal ze nu toevoegen aan het bestand.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.TotaalOmzettingenVertaalbare invoer wordt niet handmatig aan het Gettext-systeem toegevoegd, maar automatisch geëxtraheerd uit de broncode. Op deze manier blijven ze up-to-date en accuraat. Vertalers gebruiken meestal PO-sjabloonbestanden (POT's) die de ontwikkelaar voor hen gemaakt heeft.Cloud project vertalenVertaald: %d van %d (%d %%)VertalingTaal van de vertalingVertaalgeheugenDe vertaling behoeft &controleVertalingseigenschappenDe vertaal-invoergegevens in het bestand zijn vermoedelijk onjuist.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 foutOnvertaaldOmhoogBijwerkenAlles 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 misluktBijwerken van het bestand is mislukt; klik op 'Details >>' voor meer informatie.Vertalingen 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 %sWachten op autorisatie…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-/uitzoomenaltControle nodigctrltijdelijke bestanden niet verwijderen (voor foutopsporing)bijv. nplurals=2; plural=(n > 1);onduidelijke overeenkomst binnen het bestandga naar het item op het gegeven regelnummeromgaan met een poedit://-URIgebruik vooraf-vertalen vanuit TMshiftonbekende taalniet-ondersteunde versie (%s)jij@voorbeeld.nl"%s" is geen geldig POT-bestand.poedit-3.5/locales/sl.po0000644000175100001770000017745514664354065012231 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "Skrij to obvestilo" msgid "Don’t Show Again" msgstr "Ne prikazuj več" msgid "Don’t show again" msgstr "Ne prikazuj več" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(novo: %i, opuščeno: %i)" msgid "Collecting source files…" msgstr "Zbiranje izvornih datotek …" msgid "Extracting translatable strings…" msgstr "Razširjanje prevedljivih nizov …" msgid "Failed to load file with extracted translations." msgstr "Datoteke z razširjenimi prevodi ni bilo mogoče naložiti." msgid "Merging differences…" msgstr "Združevanje razlik …" msgid "Updating translations" msgstr "Posodabljanje prevodov" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "Datoteke “%s” ni bilo mogoče odpreti." msgid "Invalid file" msgstr "Neveljavna datoteka" #, c-format msgid "Malformed header: “%s”" msgstr "Nepravilno oblikovana glava: »%s«" msgid "PO Translation Files" msgstr "Datoteke PO za prevajanje" msgid "POT Translation Templates" msgstr "Predloge POT za prevajanje" msgid "XLIFF Translation Files" msgstr "Datoteke s prevodi XLIFF" msgid "JSON Translation Files" msgstr "Prevajalske datoteke JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "Prevajalske datoteke Flutter" msgid "All Translation Files" msgstr "Vse prevajalske datoteke" msgid "The file is in a format not recognized by Poedit." msgstr "Datoteka je v formatu, ki ga Poedit ne prepozna." 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." #, c-format msgid "Reading file content failed with the following error: %s" msgstr "Branje vsebine datoteke ni uspelo z naslednjo napako: %s" #, 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." #, c-format msgid "Couldn’t save file %s." msgstr "Datoteke %s ni možno shraniti." msgid "Screenshots:" msgstr "Posnetki zaslona:" #, 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." #, 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)." 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" 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" msgid "Couldn’t load the file, it is probably damaged." msgstr "Datoteke ni bilo mogoče naložiti, verjetno je poškodovana." 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." 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)." #, 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." msgid "Error saving file" msgstr "Napaka pri shranjevanju datoteke" #, c-format msgid "“%s” is not a valid POT file." msgstr "»%s« ni veljavna datoteka POT." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Napaka pri nalaganju datoteke XLIFF: %s" #, 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 msgid "Broken markup in translation string." msgstr "Okvarjena oznaka v prevajalskem nizu." msgid "(Use default language)" msgstr "(uporabi privzeti jezik)" msgid "Language selection" msgstr "Izbor jezika" msgid "Select your preferred language" msgstr "Izberite želeni jezik" msgid "You must restart Poedit for this change to take effect." msgstr "Poedit morate ponovno zagnati, da bo sprememba začela veljati." msgid "Add Account" msgstr "Dodaj račun" msgid "Add account" msgstr "Dodaj račun" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "Več o %s" 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." msgid "How does cloud sync work?" msgstr "Kako deluje sinhronizacija v oblaku?" msgid "Account" msgstr "Račun" msgid "(not signed in)" msgstr "(niste vpisani)" msgid "File" msgstr "Datoteka" msgid "Open cloud translation" msgstr "Odpri prevod v oblaku" msgid "Manage accounts" msgstr "Upravljaj račune" msgid "Project:" msgstr "Projekt:" msgid "Language:" msgstr "Jezik:" msgid "Sign in to Cloud Account" msgstr "Vpiši se v račun v oblaku" msgid "Sign in to cloud account" msgstr "Vpiši se v račun v oblaku" msgid "No translation projects listed in your account." msgstr "V vašem računu ni navedenih prevajalskih projektov." msgid "Downloading latest translations…" msgstr "Prenašanje najnovejših prevodov ..." #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #, c-format msgid "Sign in to %s" msgstr "Vpis v %s" msgid "Syncing" msgstr "Usklajevanje" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, 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. #, c-format msgid "Uploading translations to %s failed." msgstr "Ni uspelo nalaganje prevodov na %s." msgid "Syncing error" msgstr "Napaka usklajevanja" msgid "Add" msgstr "Dodaj" msgid "Unknown Crowdin error." msgstr "Neznana napaka Crowdin." msgid "Not authorized, please sign in again." msgstr "Niste pooblaščeni, ponovno se prijavite." msgid "Downloading translations is disabled in this project." msgstr "Prenos prevodov je v tem projektu onemogočen." msgid "Sign In" msgstr "Prijava" msgid "Sign in" msgstr "Prijavi" msgid "Sign Out" msgstr "Odjava" msgid "Sign out" msgstr "Odjavi" msgid "Learn more about Crowdin" msgstr "Več o Crowdin" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" "Crowdin je spletna platforma za upravljanje lokalizacij in orodje za skupno " "prevajanje." msgid "Waiting for authentication…" msgstr "Čakanje na preverjanje pristnosti …" msgid "Updating user information…" msgstr "Posodabljanje uporabniških podatkov …" msgid "Sign in to Crowdin" msgstr "Prijava v Crowdin" msgid "Syncing with Crowdin failed." msgstr "Usklajevanje s Crowdin ni uspelo." msgid "Crowdin error" msgstr "Napaka v Crowdin" msgid "Uploading translations…" msgstr "Nalaganje prevodov …" msgid "&Copy" msgstr "&Kopiraj" msgid "Learn more" msgstr "Več o tem" msgid "&Help" msgstr "Po&moč" msgid "MO files can’t be directly edited in Poedit." msgstr "Datotek MO ni mogoče neposredno urejati s programom Poedit." msgid "Error opening file" msgstr "Napaka pri odpiranju datoteke" 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." msgid "don’t delete temporary files (for debugging)" msgstr "ne izbriši začasnih datotek (za razhroščevanje)" msgid "handle a poedit:// URI" msgstr "upravljaj z naslovom URI poedit://" msgid "go to item at given line number" msgstr "pojdi na element v vrstici z dano številko" msgid "Failed to communicate with Poedit process." msgstr "Povezovanje s programom Poedit je spodletelo." #, c-format msgid "Unhandled exception occurred: %s" msgstr "Neobravnavana izjema: %s" msgid "Select translation template" msgstr "Izberi pedlogo prevoda" msgid "Select translation file" msgstr "Izberi datoteko za prevod" msgid "Poedit is an easy to use translation editor." msgstr "Poedit je enostaven in priročen urejevalnik prevodov." 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." #, c-format msgid "File “%s” is not a translation file." msgstr "Datoteka »%s« ni datoteka s prevodom." #, c-format msgid "File “%s” doesn’t exist." msgstr "Datoteka »%s« ne obstaja." 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". #, 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." msgid "Install" msgstr "Namesti" #, c-format msgid "The file “%s” has been changed by another application." msgstr "Datoteko »%s« je spremenil drug program." msgid "Reload file" msgstr "Znova naloži datoteko" 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." msgid "Ignore" msgstr "Prezri" msgid "Reload File" msgstr "Znova naloži datoteko" msgid "The file has been modified. Do you want to save changes?" msgstr "Datoteka je bila spremenjena. Ali želite shraniti spremembe?" msgid "Save changes" msgstr "Shrani spremembe" msgid "Your changes will be lost if you don’t save them." msgstr "Če opravljenih sprememb ne shranite, bodo trajno izgubljene." msgid "Save" msgstr "Shrani" msgid "Do&n’t save" msgstr "&Ne shrani" msgid "Don’t Save" msgstr "Ne shrani" 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." msgid "Cancel" msgstr "Prekliči" msgid "Save Anyway" msgstr "Vseeno shrani" msgid "Save anyway" msgstr "Vseeno shrani" msgid "Save as…" msgstr "Shrani kot …" msgid "Compile to…" msgstr "Prevedi v …" msgid "Compiled Translation Files" msgstr "Pretvorjene prevodne datoteke" msgid "Export to HTML…" msgstr "" msgid "HTML Files" msgstr "Datoteke HTML" #, c-format msgid "In: %s" msgstr "V: %s" msgid "Source code not available." msgstr "Izvorna koda ni na voljo." msgid "Updating failed" msgstr "Posodobitev ni uspela" 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." msgid "Permission denied." msgstr "Dovoljenje zavrnjeno." 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. 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. 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." msgid "Translation entries in the file are probably incorrect." msgstr "Vnosi za prevod v datoteki so verjetno napačni." msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "" "Posodabljanje datoteke ni uspelo. Za podrobnosti kliknite 'Podrobnosti >>'." msgid "Open translation template" msgstr "Odpri predlogo prevoda" #, 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." msgid "Validation results" msgstr "Rezultati preverjanja" 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." msgid "The file was saved safely." msgstr "Datoteka je varno shranjena." 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." 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." 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." msgid "The file cannot be compiled into the MO format and used." msgstr "Datoteke ni mogoče prevesti v format MO in uporabiti." msgid "No problems with the translation found." msgstr "Ni bilo najdenih nobenih težav pri prevodu." #, 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." msgid "The translation is ready for use." msgstr "Prevod je pripravljen za uporabo." #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "Program je samodejno popravil neveljavno vsebino v datoteki \"%s\"." msgid "" "The file contained duplicate items, which is not allowed in PO files and " "would prevent the file from being used. Poedit fixed the issue, but you " "should review translations of any items marked as 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." msgid "Language of the translation isn’t set." msgstr "Jezik prevoda ni nastavljen." msgid "Set Language" msgstr "Nastavi jezik" 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)." 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." msgid "Language of the translation is the same as source language." msgstr "Jezik prevoda je enak izvornemu jeziku." msgid "Fix Language" msgstr "Popravi jezik" msgid "Fix language" msgstr "Popravi jezik" 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'." 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" msgid "Required header Plural-Forms is missing." msgstr "V glavi manjka zahtevano določilo za množinske oblike." #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Napaka skladnje v glavi množinskih oblik (\"%s\")." msgid "Fix the Header" msgstr "Popravi glavo" 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". #, 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.")" msgid "Review" msgstr "Pregled" msgid "Would you like to use English for source text?" msgstr "Ali želite za izvorno besedilo uporabiti angleščino?" #, 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" msgid "Load English" msgstr "Naloži angleščino" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Prevedeno: %d %d (%d %%)" #, c-format msgid "Remaining: %d" msgstr "Preostalo: %d" #, 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" #, 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" msgid " (unsaved)" msgstr " (neshranjeno)" msgid " (modified)" msgstr " (spremenjeno)" #, c-format msgid "Failed to update translation memory: %s" msgstr "Ni uspela posodobitev pomnilnika prevodov: %s" msgid "Remove same-as-source translations" msgstr "" msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" msgid "Keep" msgstr "Ohrani" msgid "Remove" msgstr "" msgid "Purge deleted translations" msgstr "Odstrani izbrisane prevode" 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?" 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." msgid "Purge" msgstr "Počisti" msgid "Copy from source text" msgstr "Kopiraj iz izvornega besedila" 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 msgid "Ctrl+" msgstr "Krmilka+" msgid "Clear translation" msgstr "Počisti prevod" msgid "Clear Translation" msgstr "Počisti prevod" msgid "Edit comment" msgstr "Uredi komentar" msgid "Edit Comment" msgstr "Uredi komentar" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "Pojavitve v kodi" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "Pojavitve v kodi" msgid "Hide Sidebar" msgstr "Skrij stransko vrstico" msgid "Show Sidebar" msgstr "Prikaži stransko vrstico" msgid "Hide Status Bar" msgstr "Skrij vrstico stanja" msgid "Show Status Bar" msgstr "Pokaži vrstico stanja" msgid "String length in characters: translation | source" msgstr "Dolžina niza v znakih: prevod | vir" msgid "String length in characters" msgstr "Dolžina niza v znakih" msgid "Source text" msgstr "Izvorno besedilo" msgid "Singular" msgstr "Ednina" msgid "Plural" msgstr "Množina" msgid "Translation" msgstr "Prevod" msgid "Pre-translated" msgstr "Vnaprej prevedeno" 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. msgid "Needs work" msgstr "Potrebno predelave" 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." msgid "Create new translation" msgstr "Ustvari nov prevod" 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 msgid "Source text ID" msgstr "ID izvornega besedila" msgid "Everything" msgstr "Vse" #, c-format msgid "Form %i" msgstr "Oblika %i" #, c-format msgid "Form %i (unused)" msgstr "Oblika %i (ni uporabljeno)" msgid "Zero" msgstr "Nič" msgid "One" msgstr "Eden" msgid "Two" msgstr "Dva" msgid "Other" msgstr "Drugo" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, c-format msgid "String context: %s" msgstr "Zveza niza: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #, c-format msgid "String identifier: %s" msgstr "Identifikator niza: %s" #, c-format msgid "%s Format" msgstr "Oblika %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "Oblika %s" #, c-format msgid "Translation — %s" msgstr "Prevod — %s" msgid "ID" msgstr "ID" #, c-format msgid "Source text — %s" msgstr "Izvorno besedilo — %s" msgid "unknown language" msgstr "neznani jezik" #, c-format msgid "Network error: %s (%d)" msgstr "" msgid "Unknown error" msgstr "" #, c-format msgid "Failed command: %s" msgstr "Neuspeli ukaz: %s" msgid "Failed to merge gettext catalogs." msgstr "Povezovalnih katalogov ni bilo mogoče združiti." msgid "Open in Editor" msgstr "Odpri v urejevalniku" msgid "Open in editor" msgstr "Odpri v urejevalniku" 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." msgid "No usage information" msgstr "Ni podatkov o uporabi" #, 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" msgid "Source code not found" msgstr "Izvorne kode ni mogoče najti" 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." msgid "File cannot be opened" msgstr "Datoteke ni mogoče odpreti" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "Poedit ne more odpreti datoteke »%s«." msgid "Find" msgstr "Najdi" msgid "Replace" msgstr "Zamenjaj" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "Možnosti" msgid "Ignore case" msgstr "Prezri velikost črk" msgid "Wrap around" msgstr "Prelomi besedilo" msgid "Whole words only" msgstr "Le cele besede" msgid "Find in source texts" msgstr "Poišči v izvirnih besedilih" msgid "Find in translations" msgstr "Poišči v prevodih" msgid "Find in comments" msgstr "Najdi v komentarjih" msgid "Close" msgstr "Zapri" msgid "Replace &All" msgstr "Zamenjaj &vse" msgid "Replace &all" msgstr "Zamenjaj &vse" msgid "&Replace" msgstr "&Zamenjaj" msgid "< &Previous" msgstr "< &Prejšnji" msgid "&Next >" msgstr "&Naslednji >" msgid "String to find" msgstr "Iskalni niz" msgid "Replacement string" msgstr "Nadomestni niz" #, c-format msgid "Cannot execute program: %s" msgstr "Ni mogoče izvesti programa: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "Ime ali koda jezika" msgid "Translation Language" msgstr "Jezik prevoda" msgid "Language of the translation:" msgstr "Jezik prevoda:" msgid "All strings" msgstr "Vsi nizi" msgid "Couldn’t download Localazy project details." msgstr "Ni bilo mogoče prenesti podrobnosti projekta Localazy." msgid "There was an error when uploading translations to Localazy." msgstr "Pri nalaganju prevodov v Localazy je prišlo do napake." msgid "Projects" msgstr "Projekti" 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." msgid "Add Project" msgstr "Dodaj projekt" msgid "Add project" msgstr "Dodaj projekt" msgid "Poedit - Catalogs manager" msgstr "Poedit – upravljalnik katalogov" msgid "Edit…" msgstr "Uredi ..." msgid "Create new translations project" msgstr "Ustvari nov projekt prevajanja" msgid "Delete the project" msgstr "Izbriši projekt" msgid "Edit the project" msgstr "Uredi projekt" msgid "Update all" msgstr "Posodobi vse" msgid "Update all catalogs in the project" msgstr "Posodobi vse kataloge projekta" msgid "Total" msgstr "Skupno" msgid "Untrans" msgstr "Neprevedeno" msgctxt "column/row header" msgid "Needs Work" msgstr "Potrebno predelave" msgid "Errors" msgstr "Napake" msgid "Last modified" msgstr "Zadnjič spremenjeno" msgid "Select directory" msgstr "Izberite mapo" msgid "Directories:" msgstr "Mape:" msgid "" msgstr "" #, c-format msgid "Do you want to delete project “%s”?" msgstr "Ali želite izbrisati projekt »%s«?" msgid "Delete project" msgstr "Izbriši projekt" msgid "Deleting the project will not delete any translation files." msgstr "Brisanje projekta ne bo izbrisalo nobene prevajalske datoteke." msgid "Confirmation" msgstr "Potrditev" msgid "Update all catalogs in this project?" msgstr "Ali želite posodobiti vse kataloge v tem projektu?" msgid "Performs update from source code on all files in the project." msgstr "Izvede posodobitev iz izvorne kode za vse datoteke v projektu." msgid "Check for Updates…" msgstr "Preveri obstoj posodobitev…" msgid "Catalogs Manager" msgstr "Upravitelj katalogov" msgid "&Preferences…" msgstr "&Nastavitve ..." msgid "&Edit" msgstr "&Uredi" msgid "Undo" msgstr "Razveljavi" msgid "Redo" msgstr "Povrni" msgid "Paste and Match Style" msgstr "Prilepi in uskladi slog" msgid "Delete" msgstr "Izbriši" msgid "Spelling and Grammar" msgstr "Črkovanje in slovnica" msgid "Show Spelling and Grammar" msgstr "Prikaži črkovanje in slovnico" msgid "Check Document Now" msgstr "Preveri dokument zdaj" msgid "Check Spelling While Typing" msgstr "Preverjanje črkovanja med vnosom" msgid "Check Grammar With Spelling" msgstr "Ob preverjanju črkovanja preveri tudi slovnico" msgid "Correct Spelling Automatically" msgstr "Samodejno odpravljaj napake črkovanja" msgid "Substitutions" msgstr "Zamenjave" msgid "Show Substitutions" msgstr "Prikaži zamenjave" msgid "Smart Copy/Paste" msgstr "Pametno kopiranje/lepljenje" msgid "Smart Quotes" msgstr "Pametni narekovaji" msgid "Smart Dashes" msgstr "Pametni pomišljaji" msgid "Smart Links" msgstr "Pametne povezave" msgid "Text Replacement" msgstr "Zamenjava besedila" msgid "Transformations" msgstr "Preobliovanja" msgid "Make Upper Case" msgstr "Izpiši z velikimi črkami" msgid "Make Lower Case" msgstr "Izpiši z malimi črkami" msgid "Capitalize" msgstr "Z velikimi začetnicami" msgid "Speech" msgstr "Govor" msgid "Start Speaking" msgstr "Začni govoriti" msgid "Stop Speaking" msgstr "Nehaj govoriti" msgid "&View" msgstr "&Pogled" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Show Toolbar" msgstr "Prikaži orodno vrstico" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Customize Toolbar…" msgstr "Prilagodi orodno vrstico …" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Enter Full Screen" msgstr "Celozaslonski način" msgid "Window" msgstr "Okno" msgid "Minimize" msgstr "Pomanjšaj" msgid "Zoom" msgstr "Povečava" msgid "Welcome to Poedit" msgstr "Dobrodošli v Poedit" msgid "Bring All to Front" msgstr "Postavi vse v ospredje" msgid "Information about the translator" msgstr "Podatki o prevajalcu" msgid "Name:" msgstr "Ime:" msgid "Your Name" msgstr "Vaše ime" msgid "Email:" msgstr "E-pošta:" msgid "you@example.com" msgstr "vi@primer.com" 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." msgid "Editing" msgstr "Urejanje" msgid "Automatically compile MO file when saving" msgstr "Med shranjevanjem samodejno ustvari datoteko MO" msgid "Show summary after updating files" msgstr "Po posodobitvi datotek prikaži povzetek" msgid "Check spelling" msgstr "Preveri črkovanje" msgid "Always change focus to text input field" msgstr "Vedno spremeni fokus na polje za vnos besedila" 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." msgid "Appearance" msgstr "Videz" msgid "Use custom list font:" msgstr "Uporabi pisavo seznama po meri:" msgid "Use custom text fields font:" msgstr "Uporabi pisavo po meri besedilnih polj:" 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 msgid "(requires Windows 8 or newer)" msgstr "(zahteva Windows 8 ali novejše)" msgid "General" msgstr "Splošno" msgid "Use translation memory" msgstr "Uporabi pomnilnik prevodov" msgid "Manage…" msgstr "Upravljaj …" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "Pri posodabljanju iz virov" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "mehko ujemanje znotraj datoteke" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "vnaprej prevedi iz pomnilnika prevodov" 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." msgid "Stored translations:" msgstr "Shranjeni prevodi:" msgid "Database size on disk:" msgstr "Velikost zbirke podatkov na disku:" msgid "Import Translation Files…" msgstr "Uvoz datoteke s prevodom …" msgid "Import translation files…" msgstr "Uvoz datoteke s prevodom …" msgid "Import From TMX…" msgstr "Uvozi iz TMX …" msgid "Import from TMX…" msgstr "Uvozi iz TMX …" msgid "Export To TMX…" msgstr "Izvozi v TMX …" 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). msgid "Reset" msgstr "Ponastavi" msgid "Select translation files to import" msgstr "Izberite prevodne datoteke za uvoz" msgid "Translation Memory" msgstr "Pomnilnik prevodov" msgid "Importing translations…" msgstr "Uvažanje prevodov…" #, c-format msgid "Error loading translation file “%s”." msgstr "Napaka pri nalaganju datoteke za prevod “%s”." msgid "Finalizing…" msgstr "Dokončanje…" msgid "Select TMX files to import" msgstr "Izberi datoteke TMX za uvoz" msgid "TMX Files" msgstr "Datoteke TMX" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "Uvoz pomnilnika prevodov iz \"%s\" je spodletel." msgid "Import error" msgstr "Napaka pri uvozu" msgid "Export as…" msgstr "Izvozi kot ..." msgid "Exporting translations…" msgstr "Izvažanje prevodov…" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "Izvažanje pomnilnika prevodov v \"%s\" je spodletelo." msgid "Export error" msgstr "Napaka pri izvozu" msgid "Reset translation memory" msgstr "Ponastavi pomnilnik prevodov" msgid "Are you sure you want to reset the translation memory?" msgstr "Ali ste prepričani, da želite ponastaviti pomnilnik prevodov?" 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. msgid "TM" msgstr "PP" 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." msgid "Custom Extractors:" msgstr "Pretvorniki po meri:" msgid "Custom extractors:" msgstr "Pretvorniki po meri:" msgid "GNU gettext" msgstr "GNU gettext" 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)." msgid "Delete extractor" msgstr "Izbriši pretvornik" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "Ali ste prepričani, da želite izbrisati razširjevalca \"%s\"?" msgid "Extractors" msgstr "Pretvorniki" msgid "Accounts" msgstr "Računi" msgid "Automatically check for updates" msgstr "Samodejno preveri obstoj posodobitve" msgid "Include beta versions" msgstr "Vključi različice beta" 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." msgid "Updates" msgstr "Posodobitve" 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." msgid "Line endings:" msgstr "Konci vrstic:" msgid "Unix (recommended)" msgstr "Unix (priporočeno)" msgid "Windows" msgstr "MS Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "Prelomi na:" msgid "Preserve formatting of existing files" msgstr "Ohrani oblikovanje obstoječih datotek" msgid "Advanced" msgstr "Napredno" msgid "Settings" msgstr "" msgid "Preparing strings…" msgstr "Priprava nizov …" msgid "Pre-translating from translation memory…" msgstr "Predhodno prevajanje iz pomnilnika prevodov …" #, 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" msgid "Pre-translating…" msgstr "Prevajanje vnaprej ..." 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. msgid "Pre-translate" msgstr "Prevedi vnaprej" 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." msgid "Cannot pre-translate from unknown language." msgstr "Ni mogoče vnaprej prevesti iz neznanega jezika." 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." msgid "Only fill in exact matches" msgstr "Zapolni le natančna ujemanja" 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." msgid "Don’t mark exact matches as needing work" msgstr "Natančnih ujemanj ne označi kot potrebnih predelave" 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." 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." #, 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." 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." msgid "No entries could be pre-translated." msgstr "Noben vnos ni bil vnaprej preveden." 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." msgid "Cancelling…" msgstr "Preklic …" msgid "Drag Folders or Files Here" msgstr "Sem povlecite mape ali datoteke" msgid "Drag folders or files here" msgstr "Sem povlecite mape ali datoteke" msgid "Add Folders…" msgstr "Dodaj mape ..." msgid "Add folders…" msgstr "Dodaj mape ..." msgid "Add Files…" msgstr "Dodaj datoteke ..." msgid "Add files…" msgstr "Dodaj datoteke ..." msgid "Add Wildcard…" msgstr "Dodaj nadomestni znak ..." 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) 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" msgid "Show in Explorer" msgstr "Pokaži v Raziskovalcu" msgid "Show in Folder" msgstr "Pokaži v mapi" msgid "Paths" msgstr "Poti" msgid "Excluded paths" msgstr "Izključene poti" msgid "Advanced extraction settings" msgstr "Napredne nastavitve razširjanja" msgid "Extract notes for translators from:" msgstr "Razširi opombe za prevajalce iz:" msgid "Comments prefixed with:" msgstr "Pripombe s predpono:" msgid "All comments" msgstr "Vsi komentarji" msgid "Additional xgettext flags:" msgstr "Dodatne zastavice xgettext:" msgid "Additional keywords" msgstr "Dodatne ključne besede" msgid "Name of the project the translation is for" msgstr "Ime projekta, za katerega je prevod namenjen" msgid "Team name and email address or URL" msgstr "Ime ekipe ter e-poštni naslov ali URL" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "npr. nplurals=2; plural=(n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (priporočeno)" 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." msgid "Placeholders correctness" msgstr "Pravilnost oznak mest" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "V prevodu manjka oznaka mesta \"%s\"." #, c-format msgid "Superfluous placeholder “%s” that isn’t in source text." msgstr "Odvečna oznaka mesta \"%s\", ki je ni v izvornem besedilu." msgid "Plural form translations" msgstr "Množinske oblike prevodov" msgid "Not all plural forms are translated." msgstr "Vse množinske oblike niso prevedene." msgid "Inconsistent upper/lower case" msgstr "Nedosledena V/m črka presledek" msgid "The translation should start as a sentence." msgstr "Prevod se mora začeti kot stavek." msgid "The translation should start with a lowercase character." msgstr "Prevod se mora začeti z malo črko." msgid "Inconsistent whitespace" msgstr "Nedosleden presledek" msgid "The translation doesn’t start with a space." msgstr "Prevod se ne začne s presledkom." 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." msgid "The translation is missing a newline at the end." msgstr "Nizu prevoda manjka na koncu oznaka za novo vrstico." 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." msgid "The translation is missing a space at the end." msgstr "Na koncu prevoda manjka presledek." 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." msgid "Punctuation checks" msgstr "Preverjanja ločil" #, c-format msgid "The translation should end with “%s”." msgstr "Prevod se mora končati z znakom \"%s\"." #, c-format msgid "The translation should not end with “%s”." msgstr "Prevod se ne sme končati z znakom \"%s\"." #, 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\"." msgid "Cloud" msgstr "" msgid "Clear Menu" msgstr "Počisti meni" msgid "Clear menu" msgstr "Počisti meni" msgid "Comment:" msgstr "Komentar:" msgid "Update" msgstr "Posodobi" msgid "&Delete" msgstr "&Izbriši" msgid "Delete the comment" msgstr "Izbriši komentar" msgid "Edit project" msgstr "Uredi projekt" msgid "Project name:" msgstr "Ime projekta:" msgid "Browse" msgstr "Prebrskaj" msgid "Add directory to the list" msgstr "Dodaj mapo na seznam" msgid "OK" msgstr "V redu" msgid "&File" msgstr "&Datoteka" msgid "&New…" msgstr "&Nov…" msgid "New from &POT/PO file…" msgstr "Nov iz datoteke &POT/PO …" msgid "New From &POT/PO File…" msgstr "Nov iz datoteke &POT/PO …" msgid "&Open…" msgstr "&Odpri …" msgid "Open Recent" msgstr "Odpri nedavne" msgid "Open recent" msgstr "Odpri nedavno" msgid "Open cloud translation…" msgstr "Odpri prevod v oblaku…" msgid "Open Cloud Translation…" msgstr "Odpri prevod v oblaku…" msgid "&Start window" msgstr "&Začetno okno" msgid "&Start Window" msgstr "&Začetno okno" msgid "Catalogs &manager" msgstr "&Upravitelj katalogov" msgid "Catalogs &Manager" msgstr "Upravitelj katalogov" msgid "&Close" msgstr "&Zapri" msgid "&Save" msgstr "&Shrani" msgid "Save &as…" msgstr "Shrani &kot…" msgid "Save &As…" msgstr "Shrani &kot …" msgid "Compile to MO…" msgstr "Prevedi v MO ..." msgid "E&xport to HTML…" msgstr "" msgid "Check for updates…" msgstr "Preveri obstoj posodobitev ..." msgid "Settings…" msgstr "Nastavitve…" msgid "&Preferences" msgstr "Nas&tavitve " msgid "E&xit" msgstr "Iz&hod" msgid "Quit" msgstr "Izhod" msgid "Copy from singular" msgstr "Kopiraj iz edninske oblike" msgid "Copy From Singular" msgstr "Kopiraj iz edninske oblike" msgid "Translation needs &work" msgstr "Prevo&d potrebuje predelavo" msgid "Translation Needs &Work" msgstr "Prevo&d potrebuje predelavo" msgid "Edit &comment" msgstr "Uredi &komentar" msgid "Edit &Comment" msgstr "Uredi &komentar" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "Predlogi" msgid "&Find…" msgstr "&Najdi …" msgid "Replace…" msgstr "Zamenjaj …" msgid "Find next" msgstr "Poišči naslednjega" msgid "Find previous" msgstr "Poišči prejšnjega" msgid "Find and Replace…" msgstr "Poišči in zamenjaj …" msgid "Find Next" msgstr "Poišči naslednjega" msgid "Find Previous" msgstr "Poišči prejšnjega" msgid "Show string &ID" msgstr "Prikaži &ID niza" msgid "Show String &ID" msgstr "Prikaži &ID niza" msgid "Show warnings" msgstr "Prikaži opozorila" msgid "Show Warnings" msgstr "Prikaži opozorila" msgid "Sort by &file order" msgstr "Razvrsti po &datotekah" msgid "Sort by &File Order" msgstr "Razvrsti po &datotekah" msgid "Sort by &source" msgstr "Razvrsti po &viru" msgid "Sort by &Source" msgstr "Razvrsti po &viru" msgid "Sort by &translation" msgstr "Razvrsti po &prevodu" msgid "Sort by &Translation" msgstr "Razvrsti po &prevodu" msgid "&Group by context" msgstr "&Združi po vsebini" msgid "&Group By Context" msgstr "&Združi po vsebini" msgid "Entries with errors first" msgstr "Najprej vnosi z napakami" msgid "Entries with Errors First" msgstr "Najprej vnosi z napakami" msgid "&Untranslated entries first" msgstr "&Najprej neprevedeni nizi" msgid "&Untranslated Entries First" msgstr "&Najprej neprevedeni nizi" msgid "&Show code occurrences" msgstr "&Prikaži pojavitve kode" msgid "&Show Code Occurrences" msgstr "Prikaži poja&vitve kode" msgid "Show sidebar" msgstr "Prikaži stransko vrstico" msgid "Show status bar" msgstr "Prikaži statusno vrstico" msgid "&Translation" msgstr "&Prevod" msgid "&Update from source code" msgstr "&Posodobi iz izvorne kode" msgid "&Update from Source Code" msgstr "&Posodobi iz izvorne kode" msgid "Update from &POT file…" msgstr "Posodobi iz datoteke &POT …" msgid "Update from &POT File…" msgstr "Posodobi z datoteko &POT ..." msgid "Sync with Crowdin" msgstr "Uskladi s Crowdinom" msgid "Pre-&translate…" msgstr "Vnapre&j prevedi ..." msgid "&Validate translations" msgstr "&Preveri ustreznost prevoda" msgid "&Validate Translations" msgstr "&Preveri ustreznost prevoda" msgid "Remove Same-as-Source Translations" msgstr "" msgid "&Purge deleted translations" msgstr "Poči&sti izbrisane prevode" msgid "&Purge Deleted Translations" msgstr "&Počisti izbrisane prevode" msgid "&Properties…" msgstr "&Lastnosti ..." msgid "&Go" msgstr "&Pojdi" msgid "&Done and next" msgstr "&Dokončano in naprej" msgid "&Done and Next" msgstr "&Dokončano in naprej" msgid "Previously edited" msgstr "Prej urejeno" msgid "Previously Edited" msgstr "Prej urejeno" msgid "&Previous translation" msgstr "&Prejšnji prevod" msgid "&Previous Translation" msgstr "&Prejšnji prevod" msgid "&Next translation" msgstr "&Naslednji prevod" msgid "&Next Translation" msgstr "&Naslednji prevod" msgid "P&revious unfinished" msgstr "&Prejšnji nedokončan" msgid "P&revious Unfinished" msgstr "&Prejšnji nedokončan" msgid "Ne&xt unfinished" msgstr "&Naslednji nedokončan" msgid "Ne&xt Unfinished" msgstr "&Naslednji nedokončan" msgid "Previous plural form" msgstr "Prejšnja množinska oblika" msgid "Previous Plural Form" msgstr "Prejšnja množinska oblika" msgid "Next plural form" msgstr "Naslednja množinska oblika" msgid "Next Plural Form" msgstr "Naslednja množinska oblika" msgid "&Online help" msgstr "Spletna pomo&č" msgid "&Online Help" msgstr "Spletna pomo&č" msgid "&GNU gettext manual" msgstr "Priročnik GNU &gettext" msgid "&GNU gettext Manual" msgstr "Priročnik GNU &gettext" msgid "&About Poedit" msgstr "&Vizitka Poedita" msgid "&About" msgstr "&Vizitka programa" msgid "Extractor setup" msgstr "Nastavitve pretvornikov" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Seznam končnic, ločenih s podpičjem (npr. *.cpp;*.h):" msgid "Invocation:" msgstr "Priklic:" msgid "Command to extract translations:" msgstr "Ukaz za razširjanje prevodov:" 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)." msgid "An item in keywords list:" msgstr "Vnos na seznamu ključnih besed:" 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." msgid "An item in input files list:" msgstr "Vnos na seznamu vhodnih datotek:" #, 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." msgid "Source code charset:" msgstr "Kodni nabor izvorne kode:" #, 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." msgid "Translation Properties" msgstr "Lastnosti prevoda" msgid "Project name and version:" msgstr "Ime in različica projekta:" msgid "Language team:" msgstr "Ekipa prevajalcev:" msgid "Plural forms:" msgstr "Množinske oblike:" msgid "Use default rules for this language" msgstr "Uporabi privzeta pravila za ta jezik" msgid "Use custom expression" msgstr "Uporabi izraz po meri" msgid "Learn about plural forms" msgstr "Več o množinskih oblikah" msgid "Charset:" msgstr "Nabor znakov:" msgid "Advanced Extraction Settings…" msgstr "Napredne nastavitve razširjanja ..." msgid "Advanced extraction settings…" msgstr "Napredne nastavitve razširjanja ..." msgid "Translation properties" msgstr "Lastnosti prevoda" msgid "Sources Paths" msgstr "Poti virov" msgid "Sources paths" msgstr "Poti virov" msgid "Extract text from source files in the following directories:" msgstr "Razširi besedilo iz izvornih datotek v naslednjih mapah:" msgid "Base path:" msgstr "Osnovna pot:" msgid "Sources Keywords" msgstr "Ključne besede virov" msgid "Sources keywords" msgstr "Ključne besede virov" 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:" msgid "Also use default keywords for supported languages" msgstr "Uporabi tudi privzete ključne besede za podprte jezike" msgid "Learn about gettext keywords" msgstr "Več o gettext ključnih besedah" msgid "Update summary" msgstr "Posodobi povzetek" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" "Ti nizi so bili najdeni v virih, niso pa bili v datoteki.\n" "Poedit jih bo zdaj dodal v datoteko." msgid "New strings" msgstr "Novi nizi" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" "Teh nizov ni več v izvorni kodi.\n" "Poedit jih bo zdaj odstranil iz datoteke." msgid "Obsolete strings" msgstr "Zastareli nizi" msgid "(0 new, 0 obsolete)" msgstr "(novi: 0, zastareli: 0)" msgid "Open" msgstr "" msgid "Open file" msgstr "Odpri datoteko" msgid "Save file" msgstr "Shrani datoteko" msgid "Validate" msgstr "Preveri ustreznost" msgid "Check for errors in the translation" msgstr "Preveri napake v prevodu" msgid "Update from code" msgstr "Posodobi iz kode" msgid "Update from Code" msgstr "Posodobi iz kode" msgid "Update from source code" msgstr "Posodobi iz izvorne kode" msgid "Sidebar" msgstr "Stranska vrstica" 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. msgid "Previous source text" msgstr "Prejšnje izvorno besedilo" 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." msgid "Notes for translators" msgstr "Opombe za prevajalce" msgid "Comment" msgstr "Komentar" msgid "Add comment" msgstr "Dodaj komentar" msgid "Add Comment" msgstr "Dodaj komentar" msgid "Delete From Translation Memory" msgstr "Izbriši iz pomnilnika prevodov" msgid "Delete from translation memory" msgstr "Izbriši iz pomnilnika prevodov" msgid "Translation suggestions" msgstr "Predlogi prevoda" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). msgid "No matches found" msgstr "Ni zadetkov" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). msgid "No Matches Found" msgstr "Ni zadetkov" msgid "This string was found in Poedit’s translation memory." msgstr "Ta niz se nahaja v pomnilniku prevodov Poedita." 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." 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." msgid "The TMX file is malformed." msgstr "Datoteka TMX ni pravilno oblikovana." msgid "No translations were found in the TMX file." msgstr "V datoteki TMX ni mogoče najti prevodov." #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Zbirka podatkov pomnilnika prevodov je poškodovana: %s (%d)." #, c-format msgid "Translation memory error: %s (%d)." msgstr "Napaka pomnilnika prevodov: %s (%d)." msgid "Cannot create temporary directory." msgstr "Ni mogoče ustvariti začasne mape." msgid "There are no translations. That’s unusual." msgstr "Ni prevodov. To je nenavadno." msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "Translators typically use PO template files (POTs) prepared for them by the " "developer." msgstr "" "Prevedljivi vnosi niso bili ročno dodani v sistem Gettext, temveč so " "samodejno razširjeni\n" "iz izvorne kode. Na ta način ostanejo posodobljeni in točni.\n" "Prevajalci običajno uporabljajo datoteke predlog PO (s končnico POT), ki jih " "zanje pripravi razvijalec." msgid "(Learn more about GNU gettext)" msgstr "(Več o GNU gettext)" 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:" msgid "Update from POT" msgstr "Posodobi iz datoteke POT" msgid "Take translatable strings from an existing POT template." msgstr "Prevzame prevedljive nize iz obstoječe predloge POT." msgid "" "You can also extract translatable strings directly from the source code:" msgstr "Prav tako lahko razširite prevedljive nize neposredno iz izvorne kode:" msgid "Extract from sources" msgstr "Razširi iz izvorne kode" 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 #, c-format msgid "Version %s" msgstr "Različica %s" msgid "Create new" msgstr "Ustvari nov" msgid "Create new translation from POT template." msgstr "Ustvari nov prevod iz predloge POT." msgid "Browse files" msgstr "Prebrskaj datoteke" msgid "Open and edit translation files." msgstr "Odpri in uredi datoteke za prevajanje." msgid "Translate cloud project" msgstr "Prevedi projekt v oblaku" msgid "Collaborate with other people online." msgstr "Sodelujte z drugimi na spletu." msgid "Recent files" msgstr "Nedavne datoteke" msgid "Sync" msgstr "Uskladi" 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") #, 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. #, c-format msgid "%s Preferences" msgstr "Nastavitve %s" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "Storitve" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "Skrij %s" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "Skrij druge" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "Prikaži vse" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "Izhod iz %s" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "Nastavitve ..." msgid "Preferences..." msgstr "Nastavitve ..." #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "Nedavno" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "Pogosto" msgid "&Apply" msgstr "&Uporabi" msgid "Apply" msgstr "Uporabi" msgid "&Back" msgstr "Naza&j" msgid "Back" msgstr "Nazaj" msgid "&Cancel" msgstr "Pre&kliči" msgid "&Clear" msgstr "Po&čisti" msgid "Clear" msgstr "Počisti" msgid "Copy" msgstr "Kopiraj" msgid "Cu&t" msgstr "I&zreži" msgid "Cut" msgstr "Izreži" msgid "Edit" msgstr "Uredi" msgid "&Quit" msgstr "I&zhod" msgid "Help" msgstr "Pomoč" msgid "&New" msgstr "&Nov" msgid "New" msgstr "Novo" msgid "&No" msgstr "&Ne" msgid "No" msgstr "Ne" msgid "&OK" msgstr "V&redu" msgid "Open…" msgstr "Odpri ..." msgid "&Open..." msgstr "&Odpri ..." msgid "Open..." msgstr "Odpri ..." msgid "&Paste" msgstr "&Prilepi" msgid "Paste" msgstr "Prilepi" msgid "Preferences" msgstr "Nastavitve" msgid "&Redo" msgstr "&Povrni" msgid "Refresh" msgstr "Osveži" msgid "&Save as" msgstr "&Shrani kot" msgid "Save as" msgstr "Shrani kot" msgid "Select &All" msgstr "Izberi &vse" msgid "Select All" msgstr "Izberi vse" msgid "&Undo" msgstr "&Razveljavi" msgid "&Yes" msgstr "&Da" msgid "Yes" msgstr "Da" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Izmenjalka+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Dvigalka+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Vnašalka" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "Navzgor" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "Navzdol" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "Levo" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "Desno" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "krmilka" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "izmenjalka" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "dvigalka" poedit-3.5/locales/nl.po0000644000175100001770000020221614664354154012203 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "Verberg deze melding" msgid "Don’t Show Again" msgstr "Niet meer weergeven" msgid "Don’t show again" msgstr "Niet meer weergeven" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(Nieuw: %i, verouderd: %i)" msgid "Collecting source files…" msgstr "Bronbestanden verzamelen..." msgid "Extracting translatable strings…" msgstr "Vertaalbare tekenreeksen extraheren…" msgid "Failed to load file with extracted translations." msgstr "Niet mogelijk het bestand met geëxtraheerde vertalingen te laden." msgid "Merging differences…" msgstr "Verschillen samenvoegen..." msgid "Updating translations" msgstr "Vertalingen bijwerken" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "Het bestand \"%s\" kon niet worden geopend." msgid "Invalid file" msgstr "Ongeldig bestand" #, c-format msgid "Malformed header: “%s”" msgstr "Verkeerd vormgegeven header: \"%s\"" msgid "PO Translation Files" msgstr "PO-vertaalbestanden" msgid "POT Translation Templates" msgstr "POT-vertaalsjablonen" msgid "XLIFF Translation Files" msgstr "XLIFF-vertaalbestanden" msgid "JSON Translation Files" msgstr "JSON vertaalbestanden" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "Flutter Vertaalbestanden" msgid "All Translation Files" msgstr "Alle vertaalbestanden" msgid "The file is in a format not recognized by Poedit." msgstr "Het bestand is in een formaat niet herkend door Poedit." 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." #, c-format msgid "Reading file content failed with the following error: %s" msgstr "Het lezen van bestandsinhoud is mislukt door de volgende fout: %s" #, 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." #, c-format msgid "Couldn’t save file %s." msgstr "Bestand '%s' kon niet worden opgeslagen." msgid "Screenshots:" msgstr "Schermafbeeldingen:" #, 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." #, 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)." msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" "Beschadigd PO-bestand: enkelvoudsvorm 'msgstr' samen met 'msgid_plural' " "gebruikt" msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" "Beschadigd PO-bestand: meervoudsvorm 'msgstr' gebruikt zonder 'msgid_plural'" msgid "Couldn’t load the file, it is probably damaged." msgstr "Kon het bestand niet laden, het is waarschijnlijk beschadigd." 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." 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)." #, 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." msgid "Error saving file" msgstr "Fout bij opslaan bestand" #, c-format msgid "“%s” is not a valid POT file." msgstr "\"%s\" is geen geldig POT-bestand." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Fout bij het laden van XLIFF-bestand: %s" #, 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 msgid "Broken markup in translation string." msgstr "Beschadigde markering in vertalingstekenreeks." msgid "(Use default language)" msgstr "(Gebruik de standaardtaal)" msgid "Language selection" msgstr "Taalselectie" msgid "Select your preferred language" msgstr "Kies uw voorkeurstaal" msgid "You must restart Poedit for this change to take effect." msgstr "U moet Poedit opnieuw starten voordat deze verandering effect heeft." msgid "Add Account" msgstr "Account toevoegen" msgid "Add account" msgstr "Account toevoegen" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "Meer informatie over %s" 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." msgid "How does cloud sync work?" msgstr "Hoe werkt cloud synchronisatie?" msgid "Account" msgstr "Account" msgid "(not signed in)" msgstr "(niet aangemeld)" msgid "File" msgstr "Bestand" msgid "Open cloud translation" msgstr "Open cloudvertaling" msgid "Manage accounts" msgstr "Accounts beheren" msgid "Project:" msgstr "Project:" msgid "Language:" msgstr "Taal:" msgid "Sign in to Cloud Account" msgstr "Aanmelden bij Cloud-account" msgid "Sign in to cloud account" msgstr "Aanmelden bij Cloud-account" msgid "No translation projects listed in your account." msgstr "Er zijn geen vertaalprojecten in uw account vermeld." msgid "Downloading latest translations…" msgstr "De recentste vertalingen aan het downloaden…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #, c-format msgid "Sign in to %s" msgstr "Aanmelden bij %s" msgid "Syncing" msgstr "Synchroniseren" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, 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. #, c-format msgid "Uploading translations to %s failed." msgstr "Het uploaden van vertalingen naar %s is mislukt." msgid "Syncing error" msgstr "Synchronisatiefout" msgid "Add" msgstr "Toevoegen" msgid "Unknown Crowdin error." msgstr "Onbekende Crowdin-fout." msgid "Not authorized, please sign in again." msgstr "Niet geautoriseerd; log opnieuw in." msgid "Downloading translations is disabled in this project." msgstr "Het downloaden van vertalingen is uitgeschakeld in dit project." msgid "Sign In" msgstr "Inloggen" msgid "Sign in" msgstr "Inloggen" msgid "Sign Out" msgstr "Uitloggen" msgid "Sign out" msgstr "Uitloggen" msgid "Learn more about Crowdin" msgstr "Meer te weten komen over Crowdin" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" "Crowdin is een online lokalisatiebeheerplatform en hulpmiddel voor " "gezamenlijke vertalingen." msgid "Waiting for authentication…" msgstr "Wachten op autorisatie…" msgid "Updating user information…" msgstr "Gebruikersinformatie bijwerken…" msgid "Sign in to Crowdin" msgstr "Inloggen bij Crowdin" msgid "Syncing with Crowdin failed." msgstr "Synchronisatie met Crowdin mislukt." msgid "Crowdin error" msgstr "Crowdin-fout" msgid "Uploading translations…" msgstr "Vertalingen uploaden…" msgid "&Copy" msgstr "&Kopiëren" msgid "Learn more" msgstr "Meer te weten komen" msgid "&Help" msgstr "&Hulp" msgid "MO files can’t be directly edited in Poedit." msgstr "MO-bestanden kunnen niet direct bewerkt worden in Poedit." msgid "Error opening file" msgstr "Fout bij openen van bestand" 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." msgid "don’t delete temporary files (for debugging)" msgstr "tijdelijke bestanden niet verwijderen (voor foutopsporing)" msgid "handle a poedit:// URI" msgstr "omgaan met een poedit://-URI" msgid "go to item at given line number" msgstr "ga naar het item op het gegeven regelnummer" msgid "Failed to communicate with Poedit process." msgstr "Communicatie met het Poedit-proces mislukt." #, c-format msgid "Unhandled exception occurred: %s" msgstr "Er is een niet-verwerkte uitzondering opgetreden: %s" msgid "Select translation template" msgstr "Vertaalsjabloon kiezen" msgid "Select translation file" msgstr "Vertaalbestand kiezen" msgid "Poedit is an easy to use translation editor." msgstr "Poedit is een eenvoudig te gebruiken vertalingsbewerker." 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." #, c-format msgid "File “%s” is not a translation file." msgstr "Bestand \"%s\" is niet een vertaalbestand." #, c-format msgid "File “%s” doesn’t exist." msgstr "Bestand \"%s\" bestaat niet." 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". #, 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." msgid "Install" msgstr "Installeren" #, c-format msgid "The file “%s” has been changed by another application." msgstr "Het bestand \"%s\" werd aangepast door een ander programma." msgid "Reload file" msgstr "Bestand opnieuw laden" 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." msgid "Ignore" msgstr "Negeren" msgid "Reload File" msgstr "Bestand opnieuw laden" msgid "The file has been modified. Do you want to save changes?" msgstr "Het bestand is veranderd; wilt u de wijzigingen opslaan?" msgid "Save changes" msgstr "Sla de wijzigingen op" msgid "Your changes will be lost if you don’t save them." msgstr "De wijzigingen zullen verloren gaan als u ze niet opslaat." msgid "Save" msgstr "Opslaan" msgid "Do&n’t save" msgstr "&Niet opslaan" msgid "Don’t Save" msgstr "Niet opslaan" 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." msgid "Cancel" msgstr "Annuleren" msgid "Save Anyway" msgstr "Toch opslaan" msgid "Save anyway" msgstr "Toch opslaan" msgid "Save as…" msgstr "Opslaan als" msgid "Compile to…" msgstr "Compileren naar..." msgid "Compiled Translation Files" msgstr "Gecompileerde vertaalbestanden" msgid "Export to HTML…" msgstr "Exporteren naar HTML…" msgid "HTML Files" msgstr "HTML-bestanden" #, c-format msgid "In: %s" msgstr "In: %s" msgid "Source code not available." msgstr "Broncode niet beschikbaar." msgid "Updating failed" msgstr "Bijwerken mislukt" 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." msgid "Permission denied." msgstr "Toegang geweigerd." 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. 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. 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." msgid "Translation entries in the file are probably incorrect." msgstr "De vertaal-invoergegevens in het bestand zijn vermoedelijk onjuist." msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "" "Bijwerken van het bestand is mislukt; klik op 'Details >>' voor meer " "informatie." msgid "Open translation template" msgstr "Vertaalsjabloon openen" #, 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." msgid "Validation results" msgstr "Valideringsresultaten" msgid "" "Entries with errors were marked in red in the list. Details of the error " "will be shown when you select such an entry." msgstr "" "Invoer met fouten is rood gemarkeerd in de lijst. Details van de fout zullen " "weergegeven worden als u zo'n invoer selecteert." msgid "The file was saved safely." msgstr "Het bestand is veilig opgeslagen." msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "Het bestand is veilig opgeslagen en gecompileerd naar het mo-formaat, maar " "het zal waarschijnlijk niet goed werken." msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "Het bestand is veilig opgeslagen, maar het kan niet gecompileerd worden naar " "het mo-formaat en dus niet gebruikt worden." msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "Het bestand is gecompileerd naar het MO-formaat, maar zal waarschijnlijk " "niet goed werken." 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." msgid "No problems with the translation found." msgstr "Geen problemen met de vertaling gevonden." #, 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." msgid "The translation is ready for use." msgstr "De vertaling is klaar voor gebruik." #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "" "Poedit heeft automatisch ongeldige content gerepareerd in het bestand '%s'." msgid "" "The file contained duplicate items, which is not allowed in PO files and " "would prevent the file from being used. Poedit fixed the issue, but you " "should review translations of any items marked as 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." msgid "Language of the translation isn’t set." msgstr "De taal van de vertaling is niet ingesteld." msgid "Set Language" msgstr "Stel de taal in" 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)." 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." msgid "Language of the translation is the same as source language." msgstr "Taal van de vertaling is hetzelfde als de brontaal." msgid "Fix Language" msgstr "Taal repareren" msgid "Fix language" msgstr "Taal repareren" msgid "" "This 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." 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" msgid "Required header Plural-Forms is missing." msgstr "De vereiste meervoudsvorm-header ontbreekt." #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Syntaxfout in meervoudsvorm-header ('%s')." msgid "Fix the Header" msgstr "De header repareren" 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". #, 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.")" msgid "Review" msgstr "Nakijken" msgid "Would you like to use English for source text?" msgstr "Wil je Engels gebruiken voor brontekst?" #, 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" msgid "Load English" msgstr "Laad Engels" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Vertaald: %d van %d (%d %%)" #, c-format msgid "Remaining: %d" msgstr "Resterend: %d" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d fout" msgstr[1] "%d fouten" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d woord" msgstr[1] "%d woorden" msgid " (unsaved)" msgstr "(niet-opgeslagen)" msgid " (modified)" msgstr " (gewijzigd)" #, c-format msgid "Failed to update translation memory: %s" msgstr "Bijwerken van vertaalgeheugen mislukt: %s" msgid "Remove same-as-source translations" msgstr "" msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" 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." msgid "Keep" msgstr "Behouden" msgid "Remove" msgstr "Verwijderen" msgid "Purge deleted translations" msgstr "Verwijder de &gewiste vertalingen definitief" msgid "Do you want to remove all translations that are no longer used?" msgstr "Wilt u alle vertalingen verwijderen die niet meer worden gebruikt?" 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." msgid "Purge" msgstr "Definitief verwijderen" msgid "Copy from source text" msgstr "Kopiëren vanuit brontekst" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "Vertaling wissen" msgid "Clear Translation" msgstr "Vertaling wissen" msgid "Edit comment" msgstr "Opmerking bewerken" msgid "Edit Comment" msgstr "Opmerking bewerken" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "Voorkomen van de code" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "Voorkomen van de code" msgid "Hide Sidebar" msgstr "Verberg de zijbalk" msgid "Show Sidebar" msgstr "Zijbalk tonen" msgid "Hide Status Bar" msgstr "Statusbalk verbergen" msgid "Show Status Bar" msgstr "Statusbalk weergeven" msgid "String length in characters: translation | source" msgstr "Lengte van de tekenreeks in aantal karakters: vertaling | bron" msgid "String length in characters" msgstr "Tekenreekslengte in aantal karakters" msgid "Source text" msgstr "Brontekst" msgid "Singular" msgstr "Enkelvoudig" msgid "Plural" msgstr "Meervoud" msgid "Translation" msgstr "Vertaling" msgid "Pre-translated" msgstr "Vooraf vertaald" 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. msgid "Needs work" msgstr "Moet worden nagekeken" msgid "" "POT files are only templates and don’t contain any translations themselves.\n" "To make a translation, create a new PO file based on the template." msgstr "" "POT-bestanden zijn slechts sjablonen en bevatten zelf geen vertalingen.\n" "Maak een nieuw PO-bestand aan op basis van dit sjabloon om een vertaling te " "maken." msgid "Create new translation" msgstr "Maak een nieuwe vertaling aan" 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 msgid "Source text ID" msgstr "Brontekst-ID" msgid "Everything" msgstr "Alles" #, c-format msgid "Form %i" msgstr "Vorm %i" #, c-format msgid "Form %i (unused)" msgstr "Formulier %i (ongebruikt)" msgid "Zero" msgstr "Nul" msgid "One" msgstr "Één" msgid "Two" msgstr "Twee" msgid "Other" msgstr "Overige" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, 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 #, c-format msgid "String identifier: %s" msgstr "Tekenreeks-ID: %s" #, c-format msgid "%s Format" msgstr "%s-Formaat" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "%s-formaat" #, c-format msgid "Translation — %s" msgstr "Vertaling — %s" msgid "ID" msgstr "ID" #, c-format msgid "Source text — %s" msgstr "Brontekst — %s" msgid "unknown language" msgstr "onbekende taal" #, c-format msgid "Network error: %s (%d)" msgstr "Netwerkfout: %s (%d)" msgid "Unknown error" msgstr "Onbekende fout" #, c-format msgid "Failed command: %s" msgstr "Commando mislukt: %s" msgid "Failed to merge gettext catalogs." msgstr "Gettext-catalogi samenvoegen mislukt." msgid "Open in Editor" msgstr "Openen in editor" msgid "Open in editor" msgstr "Openen in editor" 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." msgid "No usage information" msgstr "Geen gebruiksinformatie" #, 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" msgid "Source code not found" msgstr "Broncode niet gevonden" 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." msgid "File cannot be opened" msgstr "Bestand kan niet geopend worden" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "Poedit was niet in staat bestand \"%s\" te openen." msgid "Find" msgstr "Zoeken" msgid "Replace" msgstr "Vervangen" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "Opties" msgid "Ignore case" msgstr "Hoofd-/kleine letters negeren" msgid "Wrap around" msgstr "Tekstomloop" msgid "Whole words only" msgstr "Alleen hele woorden" msgid "Find in source texts" msgstr "In bronteksten zoeken" msgid "Find in translations" msgstr "In vertalingen zoeken" msgid "Find in comments" msgstr "In opmerkingen zoeken" msgid "Close" msgstr "Sluiten" msgid "Replace &All" msgstr "&Alles vervangen" msgid "Replace &all" msgstr "&Alles vervangen" msgid "&Replace" msgstr "Ve&rvangen" msgid "< &Previous" msgstr "< &Vorige" msgid "&Next >" msgstr "&Volgende >" msgid "String to find" msgstr "Te zoeken term" msgid "Replacement string" msgstr "Vervangende term" #, c-format msgid "Cannot execute program: %s" msgstr "Programma: %s kan niet uitgevoerd worden" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "Taalnaam of code" msgid "Translation Language" msgstr "Taal van de vertaling" msgid "Language of the translation:" msgstr "Taal van de vertaling:" msgid "All strings" msgstr "Alle tekenreeksen" msgid "Couldn’t download Localazy project details." msgstr "Kon Localazy projectdetails niet downloaden." msgid "There was an error when uploading translations to Localazy." msgstr "" "Er is een fout opgetreden bij het uploaden van vertalingen naar Localazy." msgid "Projects" msgstr "Projecten" 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." msgid "Add Project" msgstr "Project toevoegen" msgid "Add project" msgstr "Project toevoegen" msgid "Poedit - Catalogs manager" msgstr "Poedit-catalogusbeheerder" msgid "Edit…" msgstr "Bewerken…" msgid "Create new translations project" msgstr "Maak een nieuw vertaalproject aan" msgid "Delete the project" msgstr "Verwijder project" msgid "Edit the project" msgstr "Bewerk het project" msgid "Update all" msgstr "Alles bijwerken" msgid "Update all catalogs in the project" msgstr "Werk alle catalogi in het project bij" msgid "Total" msgstr "Totaal" msgid "Untrans" msgstr "Onvertaald" msgctxt "column/row header" msgid "Needs Work" msgstr "Controle nodig" msgid "Errors" msgstr "Fouten" msgid "Last modified" msgstr "Voor het laatst gewijzigd" msgid "Select directory" msgstr "Selecteer de directory" msgid "Directories:" msgstr "Directory's:" msgid "" msgstr "" #, c-format msgid "Do you want to delete project “%s”?" msgstr "Wilt u project \"%s\" \" verwijderen?" msgid "Delete project" msgstr "Verwijder project" msgid "Deleting the project will not delete any translation files." msgstr "Het verwijderen van het project zal geen vertaalbestanden verwijderen." msgid "Confirmation" msgstr "Bevestiging" msgid "Update all catalogs in this project?" msgstr "Alle catalogen in dit project bijwerken?" 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." msgid "Check for Updates…" msgstr "Controleer op updates…" msgid "Catalogs Manager" msgstr "Catalogusbeheerder" msgid "&Preferences…" msgstr "&Voorkeuren…" msgid "&Edit" msgstr "B&ewerken" msgid "Undo" msgstr "Ongedaan maken" msgid "Redo" msgstr "Opnieuw" msgid "Paste and Match Style" msgstr "Plakken en aan de stijl aanpassen" msgid "Delete" msgstr "Verwijderen" msgid "Spelling and Grammar" msgstr "Spelling en grammatica" msgid "Show Spelling and Grammar" msgstr "Spelling en grammatica weergeven" msgid "Check Document Now" msgstr "Document nu controleren" msgid "Check Spelling While Typing" msgstr "Spelling controleren tijdens typen" msgid "Check Grammar With Spelling" msgstr "Grammatica en spelling controleren" msgid "Correct Spelling Automatically" msgstr "Corrigeer de spelling automatisch" msgid "Substitutions" msgstr "Vervanging" msgid "Show Substitutions" msgstr "Toon vervangingen" msgid "Smart Copy/Paste" msgstr "Slim kopiëren/plakken" msgid "Smart Quotes" msgstr "Slimme aanhalingstekens" msgid "Smart Dashes" msgstr "Slimme streepjes" msgid "Smart Links" msgstr "Slimme links" msgid "Text Replacement" msgstr "Tekstvervanging" msgid "Transformations" msgstr "Omzettingen" msgid "Make Upper Case" msgstr "Zet om in hoofdletters" msgid "Make Lower Case" msgstr "Zet om in kleine letters" msgid "Capitalize" msgstr "Zet om in beginhoofdletters" msgid "Speech" msgstr "Spraak" msgid "Start Speaking" msgstr "Beginnen met spreken" msgid "Stop Speaking" msgstr "Stoppen met spreken" msgid "&View" msgstr "B&eeld" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Show Toolbar" msgstr "Toon de taakbalk" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Customize Toolbar…" msgstr "Pas de taakbalk aan…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Enter Full Screen" msgstr "Ga naar volledig scherm" msgid "Window" msgstr "Venster" msgid "Minimize" msgstr "Minimaliseren" msgid "Zoom" msgstr "In-/uitzoomen" msgid "Welcome to Poedit" msgstr "Welkom bij Poedit" msgid "Bring All to Front" msgstr "Alles naar de voorgrond" msgid "Information about the translator" msgstr "Informatie over de vertaler" msgid "Name:" msgstr "Naam:" msgid "Your Name" msgstr "Uw naam" msgid "Email:" msgstr "E-mailadres:" msgid "you@example.com" msgstr "jij@voorbeeld.nl" 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." msgid "Editing" msgstr "Bewerken" msgid "Automatically compile MO file when saving" msgstr "Automatisch het MO-bestand compileren bij het opslaan" msgid "Show summary after updating files" msgstr "Toon een samenvatting na het bijwerken van de bestanden" msgid "Check spelling" msgstr "Controleer de spelling" msgid "Always change focus to text input field" msgstr "Altijd de cursor in het tekstinvoerveld zetten" 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." msgid "Appearance" msgstr "Weergave" msgid "Use custom list font:" msgstr "Aangepast lettertype voor lijst gebruiken:" msgid "Use custom text fields font:" msgstr "Aangepast lettertype voor tekstvelden gebruiken:" msgid "Change UI language" msgstr "Verander de interface-taal" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions msgid "(requires Windows 8 or newer)" msgstr "(vereist Windows 8 of hoger)" msgid "General" msgstr "Algemeen" msgid "Use translation memory" msgstr "Gebruik het vertaalgeheugen" msgid "Manage…" msgstr "Beheren…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "Tijdens het bijwerken vanuit bronnen" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "onduidelijke overeenkomst binnen het bestand" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "gebruik vooraf-vertalen vanuit TM" 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." msgid "Stored translations:" msgstr "Opgeslagen vertalingen:" msgid "Database size on disk:" msgstr "Databasegrootte op schijf:" msgid "Import Translation Files…" msgstr "Importeer vertaalbestanden…" msgid "Import translation files…" msgstr "Importeer vertaalbestanden…" msgid "Import From TMX…" msgstr "Importeer vanuit TMX…" msgid "Import from TMX…" msgstr "Importeer vanuit TMX…" msgid "Export To TMX…" msgstr "Exporteer naar TMX…" 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). msgid "Reset" msgstr "Resetten" msgid "Select translation files to import" msgstr "Selecteer de te importeren taalbestanden" msgid "Translation Memory" msgstr "Vertaalgeheugen" msgid "Importing translations…" msgstr "Vertalingen importeren..." #, c-format msgid "Error loading translation file “%s”." msgstr "Fout bij het laden van het vertalingsbestand \"%s\"." msgid "Finalizing…" msgstr "Afronden..." msgid "Select TMX files to import" msgstr "Selecteer de te importeren TMX-bestanden" msgid "TMX Files" msgstr "TMX-bestanden" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "Vertaalgeheugen importeren vanaf “%s” mislukt." msgid "Import error" msgstr "Importeerfout" msgid "Export as…" msgstr "Exporteren als..." msgid "Exporting translations…" msgstr "Vertalingen exporteren…" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "Vertaalgeheugen exporteren naar “%s” mislukt." msgid "Export error" msgstr "Exporteerfout" msgid "Reset translation memory" msgstr "Reset het vertaalgeheugen" msgid "Are you sure you want to reset the translation memory?" msgstr "Weet u zeker dat u het vertaalgeheugen wilt resetten?" 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. msgid "TM" msgstr "TM" msgid "" "Source code extractors are used to find translatable strings in the source " "code files and extract them so that they can be translated." msgstr "" "Er worden broncode-extraheerders gebruikt om vertaalbare tekenreeksen in de " "broncode-bestanden te vinden en te extraheren, zodat ze vertaald kunnen " "worden." msgid "Custom Extractors:" msgstr "Aangepaste extraheerders:" msgid "Custom extractors:" msgstr "Aangepaste extraheerders:" msgid "GNU gettext" msgstr "GNU-gettext" 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)." msgid "Delete extractor" msgstr "Verwijder de extraheerder" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "Weet u zeker dat u de extraheerder '%s' wilt verwijderen?" msgid "Extractors" msgstr "Extraheerders" msgid "Accounts" msgstr "Accounts" msgid "Automatically check for updates" msgstr "Automatisch op updates controleren" msgid "Include beta versions" msgstr "Neem bèta-versies op" 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." msgid "Updates" msgstr "Updates" 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." msgid "Line endings:" msgstr "Regeleindes:" msgid "Unix (recommended)" msgstr "Unix (aanbevolen)" msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "Tekstterugloop bij:" msgid "Preserve formatting of existing files" msgstr "Behoud de opmaak van bestaande bestanden" msgid "Advanced" msgstr "Geavanceerd" msgid "Settings" msgstr "Instellingen" msgid "Preparing strings…" msgstr "Tekenreeksen voorbereiden…" msgid "Pre-translating from translation memory…" msgstr "Vooraf vertalen vanuit het vertaalgeheugen…" #, 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" msgid "Pre-translating…" msgstr "Vooraf vertalen…" 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. msgid "Pre-translate" msgstr "Vooraf vertalen" 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." msgid "Cannot pre-translate from unknown language." msgstr "Kan niet vooraf vertalen uit onbekende taal." 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." msgid "Only fill in exact matches" msgstr "Vul alleen exacte overeenkomsten in" 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." msgid "Don’t mark exact matches as needing work" msgstr "Exacte overeenkomsten niet markeren ter controle" 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." 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." #, 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." 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." msgid "No entries could be pre-translated." msgstr "Er konden geen invoergegevens vooraf vertaald worden." 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." msgid "Cancelling…" msgstr "Annuleren…" msgid "Drag Folders or Files Here" msgstr "Sleep mappen of bestanden hierheen" msgid "Drag folders or files here" msgstr "Sleep mappen of bestanden hierheen" msgid "Add Folders…" msgstr "Voeg mappen toe…" msgid "Add folders…" msgstr "Voeg mappen toe…" msgid "Add Files…" msgstr "Voeg bestanden toe…" msgid "Add files…" msgstr "Voeg bestanden toe…" msgid "Add Wildcard…" msgstr "Voeg joker toe…" 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) 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" msgid "Show in Explorer" msgstr "Toon in de Verkenner" msgid "Show in Folder" msgstr "Toon in Map" msgid "Paths" msgstr "Paden" msgid "Excluded paths" msgstr "Uitgesloten paden" msgid "Advanced extraction settings" msgstr "Geavanceerde extractie-instellingen" msgid "Extract notes for translators from:" msgstr "Extraheer opmerkingen voor vertalers vanuit:" msgid "Comments prefixed with:" msgstr "Opmerkingen voorafgegaan door:" msgid "All comments" msgstr "Alle opmerkingen" msgid "Additional xgettext flags:" msgstr "Aanvullende xgettext-vlaggen:" msgid "Additional keywords" msgstr "Aanvullende zoektermen" msgid "Name of the project the translation is for" msgstr "Naam van het project waar de vertaling voor is" msgid "Team name and email address or URL" msgstr "Teamnaam en e-mailadres of URL" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "bijv. nplurals=2; plural=(n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (aanbevolen)" 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." msgid "Placeholders correctness" msgstr "Placeholders correctheid" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "Plaatsvervanger \"%s\" ontbreekt in de vertaling." #, c-format msgid "Superfluous placeholder “%s” that isn’t in source text." msgstr "Een overbodige aanduiding \"%s\" die geen brontekst bevat." msgid "Plural form translations" msgstr "Meervoudsvorm-vertalingen" msgid "Not all plural forms are translated." msgstr "Niet alle meervoudsvormen zijn vertaald." msgid "Inconsistent upper/lower case" msgstr "Inconsistent gebruik van hoofd- en kleine letters" msgid "The translation should start as a sentence." msgstr "De vertaling moet beginnen als een zin." msgid "The translation should start with a lowercase character." msgstr "De vertaling moet beginnen met een kleine letter." msgid "Inconsistent whitespace" msgstr "Inconsistent gebruik van witruimte" msgid "The translation doesn’t start with a space." msgstr "De vertaling begint niet met een spatie." msgid "The translation starts with a space, but the source text doesn’t." msgstr "De vertaling begint met een spatie, maar de brontekst niet." msgid "The translation is missing a newline at the end." msgstr "In de vertaling ontbreekt een regelafbreking aan het eind." msgid "The translation ends with a newline, but the source text doesn’t." msgstr "De vertaling eindigt met een regelafbreking, maar de brontekst niet." msgid "The translation is missing a space at the end." msgstr "In de vertaling ontbreekt een spatie aan het eind." msgid "The translation ends with a space, but the source text doesn’t." msgstr "De vertaling eindigt met een spatie, maar de brontekst niet." msgid "Punctuation checks" msgstr "Leestekencontroles" #, c-format msgid "The translation should end with “%s”." msgstr "De vertaling moet eindigen met \"%s\"." #, c-format msgid "The translation should not end with “%s”." msgstr "De vertaling mag niet eindigen met \"%s\"." #, 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\"." msgid "Cloud" msgstr "Cloud" msgid "Clear Menu" msgstr "Menu wissen" msgid "Clear menu" msgstr "Menu wissen" msgid "Comment:" msgstr "Opmerking:" msgid "Update" msgstr "Bijwerken" msgid "&Delete" msgstr "&Verwijderen" msgid "Delete the comment" msgstr "Verwijder de opmerking" msgid "Edit project" msgstr "Wijzig project" msgid "Project name:" msgstr "Projectnaam:" msgid "Browse" msgstr "Bladeren" msgid "Add directory to the list" msgstr "Map aan de lijst toevoegen" msgid "OK" msgstr "Oké" msgid "&File" msgstr "&Bestand" msgid "&New…" msgstr "&Nieuw..." msgid "New from &POT/PO file…" msgstr "Nieuw vanuit &POT/PO-bestand..." msgid "New From &POT/PO File…" msgstr "Nieuw vanuit &POT/PO-bestand..." msgid "&Open…" msgstr "&Openen..." msgid "Open Recent" msgstr "Recent bestand openen" msgid "Open recent" msgstr "Open recente" msgid "Open cloud translation…" msgstr "Open cloudvertaling…" msgid "Open Cloud Translation…" msgstr "Open cloudvertaling…" msgid "&Start window" msgstr "&Startscherm" msgid "&Start Window" msgstr "&Startscherm" msgid "Catalogs &manager" msgstr "Catalogus&beheerder" msgid "Catalogs &Manager" msgstr "Catalogus&beheerder" msgid "&Close" msgstr "&Sluiten" msgid "&Save" msgstr "Op&slaan" msgid "Save &as…" msgstr "Opslaan &als…" msgid "Save &As…" msgstr "Opslaan &als…" msgid "Compile to MO…" msgstr "Naar MO-formaat compileren..." msgid "E&xport to HTML…" msgstr "" msgid "Check for updates…" msgstr "Controleer op updates…" msgid "Settings…" msgstr "Instellingen…" msgid "&Preferences" msgstr "&Voorkeuren" msgid "E&xit" msgstr "&Afsluiten" msgid "Quit" msgstr "Afsluiten" msgid "Copy from singular" msgstr "Kopiëren vanuit de enkelvoudsvorm" msgid "Copy From Singular" msgstr "Kopiëren vanuit de enkelvoudsvorm" msgid "Translation needs &work" msgstr "De vertaling behoeft &controle" msgid "Translation Needs &Work" msgstr "De vertaling behoeft &controle" msgid "Edit &comment" msgstr "Bewerk de &opmerking" msgid "Edit &Comment" msgstr "Bewerk de &opmerking" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "Suggesties" msgid "&Find…" msgstr "&Zoeken…" msgid "Replace…" msgstr "Vervangen…" msgid "Find next" msgstr "Volgende zoeken" msgid "Find previous" msgstr "Vorige zoeken" msgid "Find and Replace…" msgstr "Zoeken en vervangen…" msgid "Find Next" msgstr "Volgende zoeken" msgid "Find Previous" msgstr "Vorige zoeken" msgid "Show string &ID" msgstr "Toon het tekenreeks-&ID" msgid "Show String &ID" msgstr "Toon tekenreeks-&ID" msgid "Show warnings" msgstr "Toon waarschuwingen" msgid "Show Warnings" msgstr "Toon waarschuwingen" msgid "Sort by &file order" msgstr "Sorteren op bestands&volgorde" msgid "Sort by &File Order" msgstr "Sorteer op bestands&volgorde" msgid "Sort by &source" msgstr "Sorteren op &bron" msgid "Sort by &Source" msgstr "Sorteren op &bron" msgid "Sort by &translation" msgstr "Sorteren op ver&taling" msgid "Sort by &Translation" msgstr "Sorteren op ver&taling" msgid "&Group by context" msgstr "&Groeperen naar context" msgid "&Group By Context" msgstr "&Groeperen naar context" msgid "Entries with errors first" msgstr "Invoer met fouten eerst" msgid "Entries with Errors First" msgstr "Invoer met fouten eerst" msgid "&Untranslated entries first" msgstr "&Onvertaalde invoer eerst" msgid "&Untranslated Entries First" msgstr "&Onvertaalde invoer eerst" msgid "&Show code occurrences" msgstr "&Toon hoe vaak de code voorkomt" msgid "&Show Code Occurrences" msgstr "&Toon hoe vaak de code voorkomt" msgid "Show sidebar" msgstr "Toon de zijbalk" msgid "Show status bar" msgstr "Toon de statusbalk" msgid "&Translation" msgstr "&Vertaling" msgid "&Update from source code" msgstr "&Bijwerken vanuit de broncode" msgid "&Update from Source Code" msgstr "&Bijwerken vanuit de broncode" msgid "Update from &POT file…" msgstr "Werk bij vanuit het &POT-bestand…" msgid "Update from &POT File…" msgstr "Werk bij vanuit het &POT-bestand…" msgid "Sync with Crowdin" msgstr "Synchroniseren met Crowdin" msgid "Pre-&translate…" msgstr "Vooraf-ver&talen…" msgid "&Validate translations" msgstr "Vertalingen &valideren" msgid "&Validate Translations" msgstr "Vertalingen &valideren" msgid "Remove Same-as-Source Translations" msgstr "" msgid "&Purge deleted translations" msgstr "&Gewiste vertalingen definitief verwijderen" msgid "&Purge Deleted Translations" msgstr "&Gewiste vertalingen definitief verwijderen" msgid "&Properties…" msgstr "Eigenscha&ppen..." msgid "&Go" msgstr "&Navigeren" msgid "&Done and next" msgstr "&Klaar en volgende" msgid "&Done and Next" msgstr "&Klaar en volgende" msgid "Previously edited" msgstr "Eerder bewerkt" msgid "Previously Edited" msgstr "Eerder bewerkt" msgid "&Previous translation" msgstr "&Vorige vertaling" msgid "&Previous Translation" msgstr "&Vorige vertaling" msgid "&Next translation" msgstr "&Volgende vertaling" msgid "&Next Translation" msgstr "&Volgende vertaling" msgid "P&revious unfinished" msgstr "Vo&rige onvoltooide" msgid "P&revious Unfinished" msgstr "Vo&rige onvoltooide" msgid "Ne&xt unfinished" msgstr "&Volgende onvoltooide" msgid "Ne&xt Unfinished" msgstr "&Volgende onvoltooide" msgid "Previous plural form" msgstr "Vorige meervoudsvorm" msgid "Previous Plural Form" msgstr "Vorige meervoudsvorm" msgid "Next plural form" msgstr "Volgende meervoudsvorm" msgid "Next Plural Form" msgstr "Volgende meervoudsvorm" msgid "&Online help" msgstr "Online-&hulp" msgid "&Online Help" msgstr "Online-hulp" msgid "&GNU gettext manual" msgstr "Handleiding &GNU-gettext" msgid "&GNU gettext Manual" msgstr "&GNU-gettext-handleiding" msgid "&About Poedit" msgstr "&Over Poedit" msgid "&About" msgstr "&Over" msgid "Extractor setup" msgstr "Instellen extraheerder" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Lijst met extensies, gescheiden door puntkomma's (bijv. *.cpp; *.h):" msgid "Invocation:" msgstr "Oproep:" msgid "Command to extract translations:" msgstr "Commando om vertalingen te extraheren:" 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)." msgid "An item in keywords list:" msgstr "Een item in de trefwoordenlijst:" 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." msgid "An item in input files list:" msgstr "Een item in de lijst met invoerbestanden:" #, 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." msgid "Source code charset:" msgstr "Broncode-karakterset:" #, 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." msgid "Translation Properties" msgstr "Vertalingseigenschappen" msgid "Project name and version:" msgstr "Projectnaam en versie:" msgid "Language team:" msgstr "Taalteam:" msgid "Plural forms:" msgstr "Meervoudsvormen:" msgid "Use default rules for this language" msgstr "Gebruik de standaardregels voor deze taal" msgid "Use custom expression" msgstr "Aangepaste expressie gebruiken" msgid "Learn about plural forms" msgstr "Kom meer te weten over meervoudsvormen" msgid "Charset:" msgstr "Karakterset:" msgid "Advanced Extraction Settings…" msgstr "Geavanceerde extraheer-instellingen…" msgid "Advanced extraction settings…" msgstr "Geavanceerde extraheer-instellingen…" msgid "Translation properties" msgstr "Vertalingseigenschappen" msgid "Sources Paths" msgstr "Bronpaden" msgid "Sources paths" msgstr "Bronpaden" msgid "Extract text from source files in the following directories:" msgstr "Extraheer tekst uit de bronbestanden in de volgende directory's:" msgid "Base path:" msgstr "Root-pad:" msgid "Sources Keywords" msgstr "Trefwoorden van de bronnen" msgid "Sources keywords" msgstr "Trefwoorden van bronnen" 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:" msgid "Also use default keywords for supported languages" msgstr "Gebruik ook standaardtrefwoorden voor ondersteunde talen" msgid "Learn about gettext keywords" msgstr "Kom meer te weten over gettext-trefwoorden" msgid "Update summary" msgstr "Samenvatting van de update" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" "Deze tekenreeksen zijn in de bronnen gevonden, maar stonden niet in het " "bestand;\n" "Poedit zal ze nu toevoegen aan het bestand." msgid "New strings" msgstr "Nieuwe tekenreeksen" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" "Deze tekenreeksen staan niet meer in de broncode;\n" "Poedit zal ze nu uit het bestand verwijderen." msgid "Obsolete strings" msgstr "Verouderde tekenreeksen" msgid "(0 new, 0 obsolete)" msgstr "(0 nieuw, 0 verouderd)" msgid "Open" msgstr "" msgid "Open file" msgstr "Open het bestand" msgid "Save file" msgstr "Sla het bestand op" msgid "Validate" msgstr "Valideren" msgid "Check for errors in the translation" msgstr "De vertaling op fouten controleren" msgid "Update from code" msgstr "Bijwerken vanuit de code" msgid "Update from Code" msgstr "Bijwerken vanuit de code" msgid "Update from source code" msgstr "Bijwerken vanuit de broncode" msgid "Sidebar" msgstr "Zijbalk" msgid "Show or hide the sidebar" msgstr "De zijbalk weergeven of verbergen" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. msgid "Previous source text" msgstr "Vorige brontekst" 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." msgid "Notes for translators" msgstr "Opmerkingen voor vertalers" msgid "Comment" msgstr "Opmerking" msgid "Add comment" msgstr "Opmerking toevoegen" msgid "Add Comment" msgstr "Opmerking toevoegen" msgid "Delete From Translation Memory" msgstr "Verwijder uit het vertaalgeheugen" msgid "Delete from translation memory" msgstr "Verwijder uit het vertaalgeheugen" msgid "Translation suggestions" msgstr "Vertaalsuggesties" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). msgid "No matches found" msgstr "Geen overeenkomsten gevonden" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). msgid "No Matches Found" msgstr "Geen overeenkomsten gevonden" msgid "This string was found in Poedit’s translation memory." msgstr "Deze tekenreeks is gevonden in het vertaalgeheugen van Poedit." 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." 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." msgid "The TMX file is malformed." msgstr "Het TMX-bestand heeft een verkeerde opmaak." msgid "No translations were found in the TMX file." msgstr "Er zijn geen vertalingen gevonden in het TMX-bestand." #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "De vertaalgeheugen-database is beschadigd: %s (%d)." #, c-format msgid "Translation memory error: %s (%d)." msgstr "Vertaalgeheugenfout: %s (%d)." msgid "Cannot create temporary directory." msgstr "Tijdelijke map maken niet mogelijk." msgid "There are no translations. That’s unusual." msgstr "Er zijn geen vertalingen; dat is ongebruikelijk." msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "Translators typically use PO template files (POTs) prepared for them by the " "developer." msgstr "" "Vertaalbare invoer wordt niet handmatig aan het Gettext-systeem toegevoegd, " "maar automatisch geëxtraheerd\n" "uit de broncode. Op deze manier blijven ze up-to-date en accuraat.\n" "Vertalers gebruiken meestal PO-sjabloonbestanden (POT's) die de ontwikkelaar " "voor hen gemaakt heeft." msgid "(Learn more about GNU gettext)" msgstr "(Meer te weten komen over GNU-gettext)" 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:" msgid "Update from POT" msgstr "Bijwerken vanuit POT-bestand" msgid "Take translatable strings from an existing POT template." msgstr "Haal vertaalbare tekenreeksen uit een bestaand POT-sjabloon." msgid "" "You can also extract translatable strings directly from the source code:" msgstr "" "U kunt ook vertaalbare tekenreeksen rechtstreeks extraheren uit de broncode:" msgid "Extract from sources" msgstr "Extraheer vanuit de bronnen" 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 #, c-format msgid "Version %s" msgstr "Versie %s" msgid "Create new" msgstr "Maak een nieuw aan" msgid "Create new translation from POT template." msgstr "Maak een nieuwe vertaling aan vanuit een POT-sjabloon." msgid "Browse files" msgstr "Blader door de bestanden" msgid "Open and edit translation files." msgstr "Open en bewerk de vertaalbestanden." msgid "Translate cloud project" msgstr "Cloud project vertalen" msgid "Collaborate with other people online." msgstr "Werk online samen met andere mensen." msgid "Recent files" msgstr "Recente bestanden" msgid "Sync" msgstr "Synchroniseren" 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") #, 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. #, c-format msgid "%s Preferences" msgstr "%s-voorkeuren" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "Services" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "Verberg %s" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "Verberg overige" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "Toon alle" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "Stoppen met %s" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "Voorkeuren…" msgid "Preferences..." msgstr "Voorkeuren..." #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "Recente" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "Frequente" msgid "&Apply" msgstr "&Toepassen" msgid "Apply" msgstr "Toepassen" msgid "&Back" msgstr "&Terug" msgid "Back" msgstr "Terug" msgid "&Cancel" msgstr "&Annuleren" msgid "&Clear" msgstr "&Wissen" msgid "Clear" msgstr "Wissen" msgid "Copy" msgstr "Kopiëren" msgid "Cu&t" msgstr "Kni&ppen" msgid "Cut" msgstr "Knippen" msgid "Edit" msgstr "Bewerken" msgid "&Quit" msgstr "&Afsluiten" msgid "Help" msgstr "Hulp" msgid "&New" msgstr "&Nieuw" msgid "New" msgstr "Nieuw" msgid "&No" msgstr "&Nee" msgid "No" msgstr "Nee" msgid "&OK" msgstr "&Oké" msgid "Open…" msgstr "Openen…" msgid "&Open..." msgstr "&Openen..." msgid "Open..." msgstr "Openen..." msgid "&Paste" msgstr "&Plakken" msgid "Paste" msgstr "Plakken" msgid "Preferences" msgstr "Voorkeuren" msgid "&Redo" msgstr "Opnie&uw doen" msgid "Refresh" msgstr "Vernieuwen" msgid "&Save as" msgstr "&Opslaan als" msgid "Save as" msgstr "Opslaan als" msgid "Select &All" msgstr "&Alles selecteren" msgid "Select All" msgstr "Alles selecteren" msgid "&Undo" msgstr "&Ongedaan maken" msgid "&Yes" msgstr "&Ja" msgid "Yes" msgstr "Ja" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "Omhoog" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "Omlaag" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "Pijl naar links" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "Pijl naar rechts" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "shift" poedit-3.5/locales/id.po0000644000175100001770000017626614664354153012204 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "Sembunyikan pesan pemberitahuan ini" msgid "Don’t Show Again" msgstr "Jangan Tampilkan Lagi" msgid "Don’t show again" msgstr "Jangan tampilkan lagi" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(Baru: %i, usang: %i)" msgid "Collecting source files…" msgstr "Mengumpulkan berkas sumber…" msgid "Extracting translatable strings…" msgstr "Mengekstrak string yang dapat diterjemahkan…" msgid "Failed to load file with extracted translations." msgstr "Gagal memuat berkas dengan terjemahan yang terekstrak." msgid "Merging differences…" msgstr "Menggabungkan perbedaan…" msgid "Updating translations" msgstr "Memperbarui terjemahan" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "Berkas “%s” tidak bisa dibuka." msgid "Invalid file" msgstr "Berkas tak valid" #, c-format msgid "Malformed header: “%s”" msgstr "Header cacat: \"%s\"" msgid "PO Translation Files" msgstr "Berkas Terjemahan PO" msgid "POT Translation Templates" msgstr "Templat Terjemahan POT" msgid "XLIFF Translation Files" msgstr "Berkas Terjemahan XLIFF" msgid "JSON Translation Files" msgstr "Berkas Terjemahan JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "Berkas Translasi Flutter" msgid "All Translation Files" msgstr "Semua Berkas Terjemahan" msgid "The file is in a format not recognized by Poedit." msgstr "Berkas dalam format yang tidak dikenali oleh Poedit." msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" "Berkas JSON ini bukan berkas translasi dan tidak bisa diedit di Poedit." #, c-format msgid "Reading file content failed with the following error: %s" msgstr "" "Gagal membaca isi berkas dengan kesalahan:\n" "%s" #, 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." #, c-format msgid "Couldn’t save file %s." msgstr "Tak bisa menyimpan berkas %s." msgid "Screenshots:" msgstr "Tangkapan layar:" #, 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." #, 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)." msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" "Berkas PO rusak: msgstr bentuk tunggal dipakai bersama dengan msgid_plural" msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "Berkas PO rusak: msgstr bentuk jamak dipakai tanpa msgid_plural" msgid "Couldn’t load the file, it is probably damaged." msgstr "Tidak dapat memuat berkas, mungkin rusak." msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "Ada kesalahan ketika memuat berkas. Akibatnya sebagian data mungkin hilang " "atau rusak." 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)." #, 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." msgid "Error saving file" msgstr "Kesalahan saat menyimpan berkas" #, c-format msgid "“%s” is not a valid POT file." msgstr "\"%s\" bukan berkas POT yang valid." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Masalah saat memuat berkas XLIFF: %s" #, 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 msgid "Broken markup in translation string." msgstr "Markup yang rusak di string terjemahan." msgid "(Use default language)" msgstr "(Pakai bahasa bawaan)" msgid "Language selection" msgstr "Pilihan bahasa" msgid "Select your preferred language" msgstr "Pilih bahasa yang disukai" msgid "You must restart Poedit for this change to take effect." msgstr "Jalankan ulang Poedit agar efek perubahan terlihat." msgid "Add Account" msgstr "Tambahkan Akun" msgid "Add account" msgstr "Tambah akun" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "Pelajari lebih lanjut mengenai %s" msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "Hubungkan Poedit dengan dukungan platform translasi daring untuk memudahkan " "memanajeme nsinkronisasi translasi." msgid "How does cloud sync work?" msgstr "Bagaimana sinkronisasi awan bekerja?" msgid "Account" msgstr "Akun" msgid "(not signed in)" msgstr "(tidak masuk)" msgid "File" msgstr "Berkas" msgid "Open cloud translation" msgstr "Buka terjemahan awan" msgid "Manage accounts" msgstr "Kelola akun" msgid "Project:" msgstr "Proyek:" msgid "Language:" msgstr "Bahasa:" msgid "Sign in to Cloud Account" msgstr "Masuk ke Akun Awan" msgid "Sign in to cloud account" msgstr "Masuk ke akun awan" msgid "No translation projects listed in your account." msgstr "Tidak ada proyek terjemahan yang terdaftar dalam akun Anda." msgid "Downloading latest translations…" msgstr "Unduh terjemahan terbaru…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #, c-format msgid "Sign in to %s" msgstr "Masuk ke %s" msgid "Syncing" msgstr "Menyelaraskan" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, 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. #, c-format msgid "Uploading translations to %s failed." msgstr "Mengunggah terjemahan ke %s gagal." msgid "Syncing error" msgstr "Galat penyelarasan" msgid "Add" msgstr "Tambah" msgid "Unknown Crowdin error." msgstr "Masalah Crowdin yang tak diketahui." msgid "Not authorized, please sign in again." msgstr "Tidak berwenang, silakan masuk lagi." msgid "Downloading translations is disabled in this project." msgstr "Mengunduh terjemahan dinonaktifkan dalam proyek ini." msgid "Sign In" msgstr "Masuk" msgid "Sign in" msgstr "Masuk" msgid "Sign Out" msgstr "Keluar" msgid "Sign out" msgstr "Keluar" msgid "Learn more about Crowdin" msgstr "Pelajari lebih lanjut tentang Crowdin" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" "Crowdin adalah sebuah platform manajemen pelokalan daring dan alat " "penerjemahan kolaboratif." msgid "Waiting for authentication…" msgstr "Menunggu otentikasi…" msgid "Updating user information…" msgstr "Memutakhirkan informasi pengguna…" msgid "Sign in to Crowdin" msgstr "Masuk ke Crowdin" msgid "Syncing with Crowdin failed." msgstr "Penyelarasan dengan Crowdin gagal." msgid "Crowdin error" msgstr "Kesalahan Crowdin" msgid "Uploading translations…" msgstr "Mengunggah terjemahan…" msgid "&Copy" msgstr "&Salin" msgid "Learn more" msgstr "Belajar lagi" msgid "&Help" msgstr "&Bantuan" msgid "MO files can’t be directly edited in Poedit." msgstr "Berkas MO tak dapat langsung disunting di Poedit." msgid "Error opening file" msgstr "Kesalahan saat membuka berkas" 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." msgid "don’t delete temporary files (for debugging)" msgstr "jangan hapus berkas sementara (untuk pengawakutuan)" msgid "handle a poedit:// URI" msgstr "menangani URI poedit://" msgid "go to item at given line number" msgstr "pergi ke butir pada nomor baris yang didiberikan" msgid "Failed to communicate with Poedit process." msgstr "Gagal berkomunikasi dengan proses Poedit." #, c-format msgid "Unhandled exception occurred: %s" msgstr "Eksepsi tidak tertangani terjadi: %s" msgid "Select translation template" msgstr "Pilih templat terjemahan" msgid "Select translation file" msgstr "Pilih berkas terjemahan" msgid "Poedit is an easy to use translation editor." msgstr "Poedit adalah penyunting terjemahan yang mudah dipakai." msgid "You can’t drop more than one file on Poedit window." msgstr "Anda tak bisa menjatuhkan lebih dari satu berkas pada jendela Poedit." #, c-format msgid "File “%s” is not a translation file." msgstr "Berkas \"%s\" bukan sebuah berkas terjemahan." #, c-format msgid "File “%s” doesn’t exist." msgstr "Berkas \"%s\" tidak ada." 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". #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "Pemeriksaan ejaan dinonaktifkan, karena kamus untuk %s tidak diinstal." msgid "Install" msgstr "Instal" #, c-format msgid "The file “%s” has been changed by another application." msgstr "Berkas \"%s\" telah diubah oleh aplikasi lain." msgid "Reload file" msgstr "Muat ulang berkas" 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." msgid "Ignore" msgstr "Abaikan" msgid "Reload File" msgstr "Muat Ulang Berkas" msgid "The file has been modified. Do you want to save changes?" msgstr "Berkas telah diubah. Apakah Anda ingin menyimpan perubahan?" msgid "Save changes" msgstr "Simpan perubahan" msgid "Your changes will be lost if you don’t save them." msgstr "Perubahan yang Anda buat akan hilang bila tidak Anda simpan." msgid "Save" msgstr "Simpan" msgid "Do&n’t save" msgstr "Jangan simpan" msgid "Don’t Save" msgstr "Jangan Simpan" 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." msgid "Cancel" msgstr "Batal" msgid "Save Anyway" msgstr "Simpan Saja" msgid "Save anyway" msgstr "Simpan saja" msgid "Save as…" msgstr "Simpan sebagai…" msgid "Compile to…" msgstr "Kompail ke…" msgid "Compiled Translation Files" msgstr "Berkas Terjemahan Dikompilasi" msgid "Export to HTML…" msgstr "Ekspor ke HTML…" msgid "HTML Files" msgstr "Berkas HTML" #, c-format msgid "In: %s" msgstr "Pada: %s" msgid "Source code not available." msgstr "Kode sumber tidak tersedia." msgid "Updating failed" msgstr "Gagal Memperbarui" 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." msgid "Permission denied." msgstr "Izin ditolak." 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. 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. 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." msgid "Translation entries in the file are probably incorrect." msgstr "Entri-entri terjemahan dalam berkas mungkin tidak benar." msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "Memutakhirkan berkas gagal. Klik pada 'Rincian >>' untuk rinciannya." msgid "Open translation template" msgstr "Buka templat terjemahan" #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "%d masalah pada terjemahan ditemukan." msgid "Validation results" msgstr "Hasil validasi" 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." msgid "The file was saved safely." msgstr "Berkas disimpan dengan aman." 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." 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." 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." msgid "The file cannot be compiled into the MO format and used." msgstr "Berkas tak dapat dikompail ke dalam format MO dan digunakan." msgid "No problems with the translation found." msgstr "Tidak ditemukan masalah dengan terjemahan." #, 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." msgid "The translation is ready for use." msgstr "Terjemahan siap digunakan." #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "" "Poedit secara otomatis memperbaiki isi yang tak valid dalam berkas \"%s\"." msgid "" "The file contained duplicate items, which is not allowed in PO files and " "would prevent the file from being used. Poedit fixed the issue, but you " "should review translations of any items marked as 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." msgid "Language of the translation isn’t set." msgstr "Bahasa terjemahan belum dipilih." msgid "Set Language" msgstr "Atur bahasa" msgid "Set language" msgstr "Atur bahasa" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." msgid "" "Suggestions are not available if the translation language is not set " "correctly. Other features, such as plural forms, may be affected as well." msgstr "" "Saran tidak tersedia jika bahasa terjemahan tidak diatur dengan benar. Fitur " "lainnya, seperti bentuk jamak, mungkin akan terpengaruh juga." msgid "Language of the translation is the same as source language." msgstr "Bahasa terjemahan sama dengan bahasa sumber." msgid "Fix Language" msgstr "Perbaiki Bahasa" msgid "Fix language" msgstr "Perbaiki bahasa" msgid "" "This 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." 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" msgid "Required header Plural-Forms is missing." msgstr "Kurang tajuk Plural-Forms yang diperlukan." #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Kesalahan sintaks di header Plural-Forms (\"%s\")." msgid "Fix the Header" msgstr "Perbaiki Header" 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". #, 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.")" msgid "Review" msgstr "Tinjau" msgid "Would you like to use English for source text?" msgstr "Maukah Anda menggunakan Bahasa Inggris sebagai teks sumbernya?" #, 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" msgid "Load English" msgstr "Muat Bahasa Inggris" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Diterjemahkan: %d dari %d (%d %%)" #, c-format msgid "Remaining: %d" msgstr "Sisa: %d" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d kesalahan" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d entri" msgid " (unsaved)" msgstr " (belum disimpan)" msgid " (modified)" msgstr " (telah diubah)" #, c-format msgid "Failed to update translation memory: %s" msgstr "Gagal memperbarui ingatan terjemahan: %s" msgid "Remove same-as-source translations" msgstr "" 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?" msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" msgid "Keep" msgstr "Pertahankan" msgid "Remove" msgstr "Hapus" msgid "Purge deleted translations" msgstr "Buang terjemahan yang dihapus" msgid "Do you want to remove all translations that are no longer used?" msgstr "Apakah Anda ingin menghapus semua terjemahan yang tak dipakai lagi?" 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." msgid "Purge" msgstr "Buang" msgid "Copy from source text" msgstr "Salin dari teks sumber" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "Bersihkan terjemahan" msgid "Clear Translation" msgstr "Bersihkan Terjemahan" msgid "Edit comment" msgstr "Sunting komentar" msgid "Edit Comment" msgstr "Sunting Komentar" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "Kemunculan Kode" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "Kemunculan kode" msgid "Hide Sidebar" msgstr "Sembunyikan Bilah Sisi" msgid "Show Sidebar" msgstr "Tampilkan Bilah Sisi" msgid "Hide Status Bar" msgstr "Sembunyikan Bilah Status" msgid "Show Status Bar" msgstr "Tampilkan Bilah Status" msgid "String length in characters: translation | source" msgstr "Panjang string dalam karakter: terjemahan | sumber" msgid "String length in characters" msgstr "Panjang string dalam karakter" msgid "Source text" msgstr "Teks sumber" msgid "Singular" msgstr "Tunggal" msgid "Plural" msgstr "Jamak" msgid "Translation" msgstr "Terjemahan" msgid "Pre-translated" msgstr "Dipraterjemahkan" 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. msgid "Needs work" msgstr "Belum tuntas" msgid "" "POT files are only templates and don’t contain any translations themselves.\n" "To make a translation, create a new PO file based on the template." msgstr "" "Berkas POT hanya templat dan tidak memuat terjemahan apapun.\n" "Untuk membuat suatu terjemahan, buatlah sebuah berkas PO baru berbasis " "templat itu." msgid "Create new translation" msgstr "Buat terjemahan baru" msgid "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 msgid "Source text ID" msgstr "ID teks sumber" msgid "Everything" msgstr "Segalanya" #, c-format msgid "Form %i" msgstr "Formulir %i" #, c-format msgid "Form %i (unused)" msgstr "Bentuk %i (tidak terpakai)" msgid "Zero" msgstr "Nol" msgid "One" msgstr "Satu" msgid "Two" msgstr "Dua" msgid "Other" msgstr "Lainnya" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, c-format msgid "String context: %s" msgstr "Konteks string: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #, c-format msgid "String identifier: %s" msgstr "Identifier string: %s" #, c-format msgid "%s Format" msgstr "Format %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "Format %s" #, c-format msgid "Translation — %s" msgstr "Terjemahan — %s" msgid "ID" msgstr "ID" #, c-format msgid "Source text — %s" msgstr "Teks sumber — %s" msgid "unknown language" msgstr "bahasa tak dikenal" #, c-format msgid "Network error: %s (%d)" msgstr "" msgid "Unknown error" msgstr "" #, c-format msgid "Failed command: %s" msgstr "Perintah gagal: %s" msgid "Failed to merge gettext catalogs." msgstr "Gagal menggabung katalog-katalog gettext." msgid "Open in Editor" msgstr "Buka Dalam Penyunting" msgid "Open in editor" msgstr "Buka dalam penyunting" 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." msgid "No usage information" msgstr "Tidak ada informasi penggunaan" #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d kemunculan kode" msgid "Source code not found" msgstr "Kode sumber tidak ditemukan" 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." msgid "File cannot be opened" msgstr "Berkas tidak dapat dibuka" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "Poedit tidak bisa membuka berkas \"%s\"." msgid "Find" msgstr "Cari" msgid "Replace" msgstr "Ganti" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "Opsi" msgid "Ignore case" msgstr "Abaikan besar kecil huruf" msgid "Wrap around" msgstr "Ulang dari awal" msgid "Whole words only" msgstr "Hanya kata lengkap" msgid "Find in source texts" msgstr "Cari dalam teks sumber" msgid "Find in translations" msgstr "Cari dalam terjemahan" msgid "Find in comments" msgstr "Cari dalam komentar" msgid "Close" msgstr "Tutup" msgid "Replace &All" msgstr "Ganti Semu&a" msgid "Replace &all" msgstr "Ganti semu&a" msgid "&Replace" msgstr "&Gantikan" msgid "< &Previous" msgstr "< Se&belumnya" msgid "&Next >" msgstr "Berikut&nya >" msgid "String to find" msgstr "Kalimat yang dicari" msgid "Replacement string" msgstr "Kalimat pengganti" #, c-format msgid "Cannot execute program: %s" msgstr "Tak bisa menjalankan program: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "Nama atau kode bahasa" msgid "Translation Language" msgstr "Bahasa Terjemahan" msgid "Language of the translation:" msgstr "Bahasa terjemahan:" msgid "All strings" msgstr "Seluruh string" msgid "Couldn’t download Localazy project details." msgstr "Tidak bisa mengunduh rincian proyek Localazy." msgid "There was an error when uploading translations to Localazy." msgstr "Ada kesalahan saat mengunggah terjemahan ke Localazy." msgid "Projects" msgstr "Proyek" 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." msgid "Add Project" msgstr "Tambah Proyek" msgid "Add project" msgstr "Tambah proyek" msgid "Poedit - Catalogs manager" msgstr "Poedit - Manajer katalog" msgid "Edit…" msgstr "Sunting…" msgid "Create new translations project" msgstr "Buat projek terjemahan baru" msgid "Delete the project" msgstr "Hapus projek" msgid "Edit the project" msgstr "Menyunting projek" msgid "Update all" msgstr "Perbarui semua" msgid "Update all catalogs in the project" msgstr "Perbarui semua katalog dalam projek" msgid "Total" msgstr "Total" msgid "Untrans" msgstr "Belum" msgctxt "column/row header" msgid "Needs Work" msgstr "Belum Tuntas" msgid "Errors" msgstr "Galat" msgid "Last modified" msgstr "Terakhir berubah" msgid "Select directory" msgstr "Pilih direktori" msgid "Directories:" msgstr "Direktori:" msgid "" msgstr "" #, c-format msgid "Do you want to delete project “%s”?" msgstr "Apakah Anda ingin menghapus proyek \"%s\"?" msgid "Delete project" msgstr "Hapus proyek" msgid "Deleting the project will not delete any translation files." msgstr "Menghapus proyek tidak akan menghapus sebarang berkas terjemahan." msgid "Confirmation" msgstr "Konfirmasi" msgid "Update all catalogs in this project?" msgstr "Perbarui semua katalog dalam proyek ini?" msgid "Performs update from source code on all files in the project." msgstr "Lakukan pembaruan dari kode sumber pada semua berkas dalam proyek." msgid "Check for Updates…" msgstr "Periksa Pemutakhiran…" msgid "Catalogs Manager" msgstr "Manajer Katalog" msgid "&Preferences…" msgstr "&Preferensi…" msgid "&Edit" msgstr "&Sunting" msgid "Undo" msgstr "Batal" msgid "Redo" msgstr "Jadi Lagi" msgid "Paste and Match Style" msgstr "Tempel dan Cocokkan Gaya" msgid "Delete" msgstr "Hapus" msgid "Spelling and Grammar" msgstr "Ejaan dan Tata Bahasa" msgid "Show Spelling and Grammar" msgstr "Tampilkan Ejaan dan Tata Bahasa" msgid "Check Document Now" msgstr "Periksa Dokumen Sekarang" msgid "Check Spelling While Typing" msgstr "Periksa Ejaan Saat Mengetik" msgid "Check Grammar With Spelling" msgstr "Periksa Tata Bahasa Dengan Ejaan" msgid "Correct Spelling Automatically" msgstr "Perbaiki Ejaan Secara Otomatis" msgid "Substitutions" msgstr "Substitusi" msgid "Show Substitutions" msgstr "Tampilkan Substitusi" msgid "Smart Copy/Paste" msgstr "Salin/Tempel Cerdas" msgid "Smart Quotes" msgstr "Tanda Kutip Cerdas" msgid "Smart Dashes" msgstr "Garis Hubung Cerdas" msgid "Smart Links" msgstr "Taut Cerdas" msgid "Text Replacement" msgstr "Teks Pengganti" msgid "Transformations" msgstr "Transformasi" msgid "Make Upper Case" msgstr "Jadikan Huruf Besar" msgid "Make Lower Case" msgstr "Jadikan Huruf Kecil" msgid "Capitalize" msgstr "Kapitalkan" msgid "Speech" msgstr "Pidato" msgid "Start Speaking" msgstr "Mulai Bicara" msgid "Stop Speaking" msgstr "Berhenti Bicara" msgid "&View" msgstr "&Lihat" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Show Toolbar" msgstr "Tampilkan Bilah Alat" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Customize Toolbar…" msgstr "Menyesuaikan Bilah Alat…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Enter Full Screen" msgstr "Masuk Layar Penuh" msgid "Window" msgstr "Jendela" msgid "Minimize" msgstr "Minimalkan" msgid "Zoom" msgstr "Zum" msgid "Welcome to Poedit" msgstr "Selamat Datang di Poedit" msgid "Bring All to Front" msgstr "Bawa Semua ke Depan" msgid "Information about the translator" msgstr "Informasi tentang penerjemah" msgid "Name:" msgstr "Nama:" msgid "Your Name" msgstr "Nama Anda" msgid "Email:" msgstr "Surel:" msgid "you@example.com" msgstr "anda@contoh.com" 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." msgid "Editing" msgstr "Penyuntingan" msgid "Automatically compile MO file when saving" msgstr "Otomatis mengkompilasi berkas MO saat menyimpan" msgid "Show summary after updating files" msgstr "Tampilkan ringkasan setelah memutakhirkan berkas" msgid "Check spelling" msgstr "Periksa ejaan" msgid "Always change focus to text input field" msgstr "Selalu ubah fokus ke ruas masukan teks" 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." msgid "Appearance" msgstr "Penampilan" msgid "Use custom list font:" msgstr "Gunakan fonta daftar ubahan:" msgid "Use custom text fields font:" msgstr "Gunakan fonta ruas teks ubahan:" msgid "Change UI language" msgstr "Ubah bahasa UI" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions msgid "(requires Windows 8 or newer)" msgstr "(memerlukan Windows 8 atau yang lebih baru)" msgid "General" msgstr "Umum" msgid "Use translation memory" msgstr "Pakai ingatan terjemahan" msgid "Manage…" msgstr "Mengelola…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "Ketika memperbarui dari sumber" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "fuzzy cocok dengan file" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "pra-menerjemahkan dari TM" 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." msgid "Stored translations:" msgstr "Terjemahan tersimpan:" msgid "Database size on disk:" msgstr "Ukuran basis data pada disk:" msgid "Import Translation Files…" msgstr "Impor Berkas Terjemahan…" msgid "Import translation files…" msgstr "Impor berkas terjemahan…" msgid "Import From TMX…" msgstr "Impor Dari TMX…" msgid "Import from TMX…" msgstr "Impor dari TMX…" msgid "Export To TMX…" msgstr "Ekspor Ke TMX…" 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). msgid "Reset" msgstr "Reset" msgid "Select translation files to import" msgstr "Pilih berkas terjemahan yang akan diimpor" msgid "Translation Memory" msgstr "Ingatan Terjemahan" msgid "Importing translations…" msgstr "Mengimpor terjemahan…" #, c-format msgid "Error loading translation file “%s”." msgstr "Kesalahan saat memuat berkas terjemahan \"%s\"." msgid "Finalizing…" msgstr "Finalisasi…" msgid "Select TMX files to import" msgstr "Pilih berkas TMX yang akan diimpor" msgid "TMX Files" msgstr "Berkas TMX" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "Mengimpor memori terjemahan dari \"%s\" gagal." msgid "Import error" msgstr "Kesalahan impor" msgid "Export as…" msgstr "Ekspor sebagai…" msgid "Exporting translations…" msgstr "Mengekspor terjemahan…" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "Mengekspor memori terjemahan ke \"%s\" gagal." msgid "Export error" msgstr "Kesalahan ekspor" msgid "Reset translation memory" msgstr "Reset memori terjemahan" msgid "Are you sure you want to reset the translation memory?" msgstr "Apakah Anda yakin Anda ingin me-reset memori terjemahan?" 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. msgid "TM" msgstr "TM" msgid "" "Source code extractors are used to find translatable strings in the source " "code files and extract them so that they can be translated." msgstr "" "Pengekstrak kode sumber digunakan untuk menemukan kalimat yang dapat " "diterjemahkan dalam berkas kode sumber dan mengekstrak mereka sehingga dapat " "diterjemahkan." msgid "Custom Extractors:" msgstr "Pengekstraksi Ubahan:" msgid "Custom extractors:" msgstr "Pengekstraksi ubahan:" msgid "GNU gettext" msgstr "GNU gettext" 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)." msgid "Delete extractor" msgstr "Hapus ekstraktor" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "Anda yakin Anda ingin menghapus ekstraktor \"%s\"?" msgid "Extractors" msgstr "Pengekstrak" msgid "Accounts" msgstr "Akun" msgid "Automatically check for updates" msgstr "Secara otomatis memeriksa pembaruan" msgid "Include beta versions" msgstr "Termasuk versi beta" 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." msgid "Updates" msgstr "Pembaruan" 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." msgid "Line endings:" msgstr "Akhiran baris:" msgid "Unix (recommended)" msgstr "Unix (disarankan)" msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "Tekuk pada:" msgid "Preserve formatting of existing files" msgstr "Pertahankan format berkas yang sudah ada" msgid "Advanced" msgstr "Tingkat lanjut" msgid "Settings" msgstr "Pengaturan" msgid "Preparing strings…" msgstr "Menyiapkan string…" msgid "Pre-translating from translation memory…" msgstr "Pra-terjemah dari ingatan terjemahan…" #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "Dipraterjemahkan %u string" msgid "Pre-translating…" msgstr "Memraterjemahkan…" 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. msgid "Pre-translate" msgstr "Pra-terjemah" 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." msgid "Cannot pre-translate from unknown language." msgstr "Tidak bisa mempraterjemahkan dari bahasa yang tidak dikenal." 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." msgid "Only fill in exact matches" msgstr "Hanya mengisi yang sama persis" 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." msgid "Don’t mark exact matches as needing work" msgstr "Jangan tandai yang cocok persis sebagai perlu tindak lanjut" 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." 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." #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%d entri dipraterjemahkan." 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." msgid "No entries could be pre-translated." msgstr "Tidak ada entri yang bisa dipraterjemahkan." 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." msgid "Cancelling…" msgstr "Membatalkan…" msgid "Drag Folders or Files Here" msgstr "Seret Folder atau Berkas Ke Sini" msgid "Drag folders or files here" msgstr "Seret folder atau berkas ke sini" msgid "Add Folders…" msgstr "Tambah Folder…" msgid "Add folders…" msgstr "Tambah folder…" msgid "Add Files…" msgstr "Tambah Berkas…" msgid "Add files…" msgstr "Tambah berkas…" msgid "Add Wildcard…" msgstr "Tambah Wildcard…" msgid "Add wildcard…" msgstr "Tambah wildcard…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) 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" msgid "Show in Explorer" msgstr "Tampilkan dalam Explorer" msgid "Show in Folder" msgstr "Tampilkan dalam Folder" msgid "Paths" msgstr "Path" msgid "Excluded paths" msgstr "Path yang dikecualikan" msgid "Advanced extraction settings" msgstr "Pengaturan ekstraksi tingkat lanjut" msgid "Extract notes for translators from:" msgstr "Ekstrak catatan untuk penerjemah dari:" msgid "Comments prefixed with:" msgstr "Komentar diawali dengan:" msgid "All comments" msgstr "Semua komentar" msgid "Additional xgettext flags:" msgstr "Flag xgettext tambahan:" msgid "Additional keywords" msgstr "Kata kunci tambahan" msgid "Name of the project the translation is for" msgstr "Terjemahan ini untuk projek bernama tersebut" msgid "Team name and email address or URL" msgstr "URL atau alamat surel dan nama tim" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "mis. nplurals=2; plural=(n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (disarankan)" msgid "Please save the file first. This section cannot be edited until then." msgstr "Harap simpan dulu. Seksi ini tak bisa disunting sebelum itu." msgid "Placeholders correctness" msgstr "Kebenaran pewakil" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "Pewakil \"%s\" kurang dalam terjemahan." #, c-format msgid "Superfluous placeholder “%s” that isn’t in source text." msgstr "Pewakil berlebih \"%s\" yang tak ada dalam teks sumber." msgid "Plural form translations" msgstr "Terjemahan bentuk jamak" msgid "Not all plural forms are translated." msgstr "Tidak semua bentuk jamak diterjemahkan." msgid "Inconsistent upper/lower case" msgstr "Huruf besar/kecil yang tidak konsisten" msgid "The translation should start as a sentence." msgstr "Terjemahan harus mulai sebagai satu kalimat." msgid "The translation should start with a lowercase character." msgstr "Terjemahan harus mulai dengan karakter huruf kecil." msgid "Inconsistent whitespace" msgstr "Whitespace yang tidak konsisten" msgid "The translation doesn’t start with a space." msgstr "Terjemahan tidak diawali dengan sebuah spasi." msgid "The translation starts with a space, but the source text doesn’t." msgstr "Terjemahan diawali dengan sebuah spasi, tapi teks sumber tidak." msgid "The translation is missing a newline at the end." msgstr "Terjemahan kurang ganti baris di akhir." msgid "The translation ends with a newline, but the source text doesn’t." msgstr "Terjemahan berakhir dengan ganti baris, tapi teks sumber tidak." msgid "The translation is missing a space at the end." msgstr "Terjemahan kekurangan spasi di akhir." msgid "The translation ends with a space, but the source text doesn’t." msgstr "Terjemahan berakhir dengan spasi, tapi teks sumber tidak." msgid "Punctuation checks" msgstr "Pemeriksaan tanda baca" #, c-format msgid "The translation should end with “%s”." msgstr "Terjemahan harus berakhir dengan \"%s\"." #, c-format msgid "The translation should not end with “%s”." msgstr "Terjemahan tidak boleh berakhir dengan \"%s\"." #, 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\"." msgid "Cloud" msgstr "" msgid "Clear Menu" msgstr "Bersihkan Menu" msgid "Clear menu" msgstr "Bersihkan menu" msgid "Comment:" msgstr "Komentar:" msgid "Update" msgstr "Perbarui" msgid "&Delete" msgstr "&Hapus" msgid "Delete the comment" msgstr "Hapus komentar" msgid "Edit project" msgstr "Sunting projek" msgid "Project name:" msgstr "Nama projek:" msgid "Browse" msgstr "Ramban" msgid "Add directory to the list" msgstr "Tambahkan direktori ke daftar" msgid "OK" msgstr "OK" msgid "&File" msgstr "&Berkas" msgid "&New…" msgstr "&Baru…" msgid "New from &POT/PO file…" msgstr "Baru dari berkas &POT/PO…" msgid "New From &POT/PO File…" msgstr "Baru Dari Berkas &POT/PO…" msgid "&Open…" msgstr "&Buka…" msgid "Open Recent" msgstr "Buka Yang Baru-baru Ini" msgid "Open recent" msgstr "Buka yang baru-baru ini" msgid "Open cloud translation…" msgstr "Buka terjemahan awan…" msgid "Open Cloud Translation…" msgstr "Buka Terjemahan Awan…" msgid "&Start window" msgstr "&Jendela awal mula" msgid "&Start Window" msgstr "&Jendela Awal Mula" msgid "Catalogs &manager" msgstr "&Manajer katalog" msgid "Catalogs &Manager" msgstr "&Manajer Katalog" msgid "&Close" msgstr "&Tutup" msgid "&Save" msgstr "&Simpan" msgid "Save &as…" msgstr "Simpan seb&agai…" msgid "Save &As…" msgstr "Simp&an Sebagai…" msgid "Compile to MO…" msgstr "Kompail ke MO…" msgid "E&xport to HTML…" msgstr "E&kspor sebagai HTML…" msgid "Check for updates…" msgstr "Periksa pemutakhiran…" msgid "Settings…" msgstr "Pengaturan…" msgid "&Preferences" msgstr "&Preferensi" msgid "E&xit" msgstr "&Keluar" msgid "Quit" msgstr "Keluar" msgid "Copy from singular" msgstr "Salin dari bentuk tunggal" msgid "Copy From Singular" msgstr "Salin Dari Bentuk Tunggal" msgid "Translation needs &work" msgstr "Terjemahan perlu tindak &lanjut" msgid "Translation Needs &Work" msgstr "Terjemahan Perlu Tindak &Lanjut" msgid "Edit &comment" msgstr "Sunting &komentar" msgid "Edit &Comment" msgstr "Sunting &Komentar" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "Saran" msgid "&Find…" msgstr "&Cari…" msgid "Replace…" msgstr "Ganti…" msgid "Find next" msgstr "Cari berikutnya" msgid "Find previous" msgstr "Cari sebelumnya" msgid "Find and Replace…" msgstr "Cari dan Ganti…" msgid "Find Next" msgstr "Cari Berikutnya" msgid "Find Previous" msgstr "Cari Sebelumnya" msgid "Show string &ID" msgstr "Tampilkan &ID string" msgid "Show String &ID" msgstr "Tampilkan &ID String" msgid "Show warnings" msgstr "Tampilkan peringatan" msgid "Show Warnings" msgstr "Tampilkan Peringatan" msgid "Sort by &file order" msgstr "Urutkan berdasar urutan &berkas" msgid "Sort by &File Order" msgstr "Urutkan Berdasar Urutan &Berkas" msgid "Sort by &source" msgstr "Urutkan berdasar &sumber" msgid "Sort by &Source" msgstr "Urutkan Berdasar &Sumber" msgid "Sort by &translation" msgstr "Urutkan berdasar &terjemahan" msgid "Sort by &Translation" msgstr "Urutkan Berdasar &Terjemahan" msgid "&Group by context" msgstr "&Kelompokkan menurut konteks" msgid "&Group By Context" msgstr "&Kelompokkan Menurut Konteks" msgid "Entries with errors first" msgstr "Entri dengan kesalahan di awal" msgid "Entries with Errors First" msgstr "Entri dengan Kesalahan Dulu" msgid "&Untranslated entries first" msgstr "Entri bel&um diterjemahkan di awal" msgid "&Untranslated Entries First" msgstr "Entri Bel&um Diterjemahkan Di Awal" msgid "&Show code occurrences" msgstr "Tampilkan &kemunculan kode" msgid "&Show Code Occurrences" msgstr "Tampilkan &Kemunculan Kode" msgid "Show sidebar" msgstr "Tampilkan bilah sisi" msgid "Show status bar" msgstr "Tampilkan bilah status" msgid "&Translation" msgstr "&Terjemahan" msgid "&Update from source code" msgstr "Perbar&ui dari kode sumber" msgid "&Update from Source Code" msgstr "Perbar&ui dari Kode Sumber" msgid "Update from &POT file…" msgstr "Mutakhirkan dari berkas &POT…" msgid "Update from &POT File…" msgstr "Mutakhirkan dari Berkas &POT…" msgid "Sync with Crowdin" msgstr "Selaraskan dengan Crowdin" msgid "Pre-&translate…" msgstr "Pra&terjemahkan…" msgid "&Validate translations" msgstr "&Validasikan terjemahan" msgid "&Validate Translations" msgstr "&Validasikan Terjemahan" msgid "Remove Same-as-Source Translations" msgstr "" msgid "&Purge deleted translations" msgstr "Buang terjemahan yang diha&pus" msgid "&Purge Deleted Translations" msgstr "Buang Terjemahan Yang Diha&pus" msgid "&Properties…" msgstr "&Properti…" msgid "&Go" msgstr "&Lompat" msgid "&Done and next" msgstr "&Beres dan berikutnya" msgid "&Done and Next" msgstr "&Beres dan Berikutnya" msgid "Previously edited" msgstr "Suntingan sebelumnya" msgid "Previously Edited" msgstr "Suntingan Sebelumnya" msgid "&Previous translation" msgstr "Terjemahan se&belumnya" msgid "&Previous Translation" msgstr "Terjemahan Se&belumnya" msgid "&Next translation" msgstr "Terjemahan sela&njutnya" msgid "&Next Translation" msgstr "Terjemahan Sela&njutnya" msgid "P&revious unfinished" msgstr "Belum dite&rjemahkan sebelumnya" msgid "P&revious Unfinished" msgstr "Belum Dite&rjemahkan Sebelumnya" msgid "Ne&xt unfinished" msgstr "Belum diterjemahkan berikutn&ya" msgid "Ne&xt Unfinished" msgstr "Belum Diterjemahkan Berikutn&ya" msgid "Previous plural form" msgstr "Bentuk jamak sebelumnya" msgid "Previous Plural Form" msgstr "Bentuk Jamak Sebelumnya" msgid "Next plural form" msgstr "Bentuk jamak berikutnya" msgid "Next Plural Form" msgstr "Bentuk Jamak Selanjutnya" msgid "&Online help" msgstr "Bantuan &daring" msgid "&Online Help" msgstr "Bantuan &Daring" msgid "&GNU gettext manual" msgstr "Manual gettext &GNU" msgid "&GNU gettext Manual" msgstr "Manual gettext &GNU" msgid "&About Poedit" msgstr "Tent&ang Poedit" msgid "&About" msgstr "Ihw&al" msgid "Extractor setup" msgstr "Penyiapan ekstraktor" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Daftar ekstensi dipisah dengan titik koma (mis. *.cpp;*.h):" msgid "Invocation:" msgstr "Invokasi:" msgid "Command to extract translations:" msgstr "Perintah untuk mengekstrak terjemahan:" 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)." msgid "An item in keywords list:" msgstr "Satu item di daftar kata kunci:" 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." msgid "An item in input files list:" msgstr "Satu item di daftar berkas masukan:" #, 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" msgid "Source code charset:" msgstr "Set karakter kode sumber:" #, 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." msgid "Translation Properties" msgstr "Properti Terjemahan" msgid "Project name and version:" msgstr "Nama dan versi projek:" msgid "Language team:" msgstr "Tim bahasa:" msgid "Plural forms:" msgstr "Bentuk jamak:" msgid "Use default rules for this language" msgstr "Pakai aturan baku untuk bahasa ini" msgid "Use custom expression" msgstr "Gunakan ekspresi pilihan sendiri" msgid "Learn about plural forms" msgstr "Belajar tentang bentuk jamak" msgid "Charset:" msgstr "Set karakter:" msgid "Advanced Extraction Settings…" msgstr "Pengaturan Ekstraksi Tingkat Lanjut…" msgid "Advanced extraction settings…" msgstr "Pengaturan ekstraksi tingkat lanjut…" msgid "Translation properties" msgstr "Properti terjemahan" msgid "Sources Paths" msgstr "Path Sumber" msgid "Sources paths" msgstr "Path sumber" msgid "Extract text from source files in the following directories:" msgstr "Ekstrak teks dari berkas sumber di direktori berikut:" msgid "Base path:" msgstr "Path dasar:" msgid "Sources Keywords" msgstr "Kata Kunci Sumber" msgid "Sources keywords" msgstr "Kata-kata kunci sumber" 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:" msgid "Also use default keywords for supported languages" msgstr "Juga menggunakan kata kunci default untuk bahasa yang didukung" msgid "Learn about gettext keywords" msgstr "Belajar tentang kata kunci gettext" msgid "Update summary" msgstr "Perbarui rangkuman" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" "String ini ditemukan dalam sumber tapi tidak di berkas.\n" "Sekarang Poedit akan menambahkan mereka ke berkas." msgid "New strings" msgstr "Kalimat baru" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" "String ini tidak ada lagi di kode sumber.\n" "Sekarang Poedit akan menghapus mereka dari berkas." msgid "Obsolete strings" msgstr "Kalimat usang" msgid "(0 new, 0 obsolete)" msgstr "(0 baru, 0 usang)" msgid "Open" msgstr "" msgid "Open file" msgstr "Buka berkas" msgid "Save file" msgstr "Simpan berkas" msgid "Validate" msgstr "Validasikan" msgid "Check for errors in the translation" msgstr "Periksa kesalahan dalam terjemahan" msgid "Update from code" msgstr "Perbarui dari kode" msgid "Update from Code" msgstr "Perbarui dari Kode" msgid "Update from source code" msgstr "Perbarui dari kode sumber" msgid "Sidebar" msgstr "Bilah Sisi" msgid "Show or hide the sidebar" msgstr "Tampilkan atau sembunyikan bilah sisi" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. msgid "Previous source text" msgstr "Teks sumber sebelumnya" 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." msgid "Notes for translators" msgstr "Catatan bagi para penerjemah" msgid "Comment" msgstr "Komentar" msgid "Add comment" msgstr "Tambah komentar" msgid "Add Comment" msgstr "Tambah Komentar" msgid "Delete From Translation Memory" msgstr "Hapus Dari Memori Terjemahan" msgid "Delete from translation memory" msgstr "Menghapus dari memori terjemahan" msgid "Translation suggestions" msgstr "Saran terjemahan" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). 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). msgid "No Matches Found" msgstr "Tak Ditemukan Yang Cocok" msgid "This string was found in Poedit’s translation memory." msgstr "String ini ditemukan dalam memori terjemahan Poedit." 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." 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." msgid "The TMX file is malformed." msgstr "Berkas TMX cacat." msgid "No translations were found in the TMX file." msgstr "Tidak ada terjemahan yang ditemukan dalam berkas TMX." #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Basis data memori terjemahan rusak: %s (%d)." #, c-format msgid "Translation memory error: %s (%d)." msgstr "Kesalahan memori terjemahan: %s (%d)." msgid "Cannot create temporary directory." msgstr "Tak bisa membuat direktori sementara." msgid "There are no translations. That’s unusual." msgstr "Tidak ada terjemahan. Itu tidak biasa." msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "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, tapi\n" "diekstrak secara otomatis dari kode sumber. Dengan cara ini, mereka tetap " "mutakhir dan akurat.\n" "Penerjemah biasanya memakai berkas templat PO (POT) yang disiapkan untuk " "mereka oleh pengembang." msgid "(Learn more about GNU gettext)" msgstr "(Belajar lebih banyak tentang gettext GNU)" 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:" msgid "Update from POT" msgstr "Perbarui dari POT" msgid "Take translatable strings from an existing POT template." msgstr "" "Ambil kalimat-kalimat yang dapat diterjemahkan dari templat POT yang ada." 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:" msgid "Extract from sources" msgstr "Ekstrak dari sumber" 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 #, c-format msgid "Version %s" msgstr "Versi %s" msgid "Create new" msgstr "Buat baru" msgid "Create new translation from POT template." msgstr "Buat terjemahan baru dari templat POT." msgid "Browse files" msgstr "Ramban berkas" msgid "Open and edit translation files." msgstr "Buka dan sunting berkas-berkas terjemahan." msgid "Translate cloud project" msgstr "Terjemahkan proyek cloud" msgid "Collaborate with other people online." msgstr "Berkolaborasi dengan orang lain daring." msgid "Recent files" msgstr "Berkas baru-baru ini" msgid "Sync" msgstr "Selaraskan" 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") #, 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. #, c-format msgid "%s Preferences" msgstr "Preferensi %s" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "Layanan" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "Sembunyikan %s" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "Sembunyikan Yang Lain" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "Tampilkan Semua" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "Keluar %s" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "Preferensi…" msgid "Preferences..." msgstr "Preferensi..." #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "Baru-baru Ini" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "Sering" msgid "&Apply" msgstr "Ter&apkan" msgid "Apply" msgstr "Terapkan" msgid "&Back" msgstr "Mun&dur" msgid "Back" msgstr "Mundur" msgid "&Cancel" msgstr "&Batal" msgid "&Clear" msgstr "&Bersihkan" msgid "Clear" msgstr "Bersihkan" msgid "Copy" msgstr "Salin" msgid "Cu&t" msgstr "Po&tong" msgid "Cut" msgstr "Memotong" msgid "Edit" msgstr "Sunting" msgid "&Quit" msgstr "&Keluar" msgid "Help" msgstr "Bantuan" msgid "&New" msgstr "&Baru" msgid "New" msgstr "Baru" msgid "&No" msgstr "&Tidak" msgid "No" msgstr "Tidak" msgid "&OK" msgstr "&OK" msgid "Open…" msgstr "Buka…" msgid "&Open..." msgstr "&Buka..." msgid "Open..." msgstr "Buka..." msgid "&Paste" msgstr "Tem&pel" msgid "Paste" msgstr "Tempel" msgid "Preferences" msgstr "Preferensi" msgid "&Redo" msgstr "Jadi &Lagi" msgid "Refresh" msgstr "Segarkan" msgid "&Save as" msgstr "&Simpan sebagai" msgid "Save as" msgstr "Simpan sebagai" msgid "Select &All" msgstr "Pilih Semu&a" msgid "Select All" msgstr "Pilih Semua" msgid "&Undo" msgstr "&Batalkan" msgid "&Yes" msgstr "&Ya" msgid "Yes" msgstr "Ya" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "Naik" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "Turun" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "Kiri" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "Kanan" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "shift" poedit-3.5/locales/ms.po0000644000175100001770000017574214664354154012226 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "Sembunyi mesej pemberitahuan ini" msgid "Don’t Show Again" msgstr "Jangan Tunjuk Lagi" msgid "Don’t show again" msgstr "Jangan tunjuk lagi" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(Baharu: %i, lapuk: %i)" msgid "Collecting source files…" msgstr "Mengutip fail sumber…" msgid "Extracting translatable strings…" msgstr "Mengekstrak rentetan boleh terjemah…" msgid "Failed to load file with extracted translations." msgstr "Gagal memuatkan fail dengan terjemahan yang diekstrak." msgid "Merging differences…" msgstr "Menggabungkan perbezaan…" msgid "Updating translations" msgstr "Mengemas kini terjemahan" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "Fail \"%s\" gagal dibuka." msgid "Invalid file" msgstr "Fail tidak sah" #, c-format msgid "Malformed header: “%s”" msgstr "Pengepala cacat: “%s”" msgid "PO Translation Files" msgstr "Fail Terjemahan PO" msgid "POT Translation Templates" msgstr "Templat Terjemahan POT" msgid "XLIFF Translation Files" msgstr "Fail Terjemahan XLIFF" msgid "JSON Translation Files" msgstr "Fail Terjemahan JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "Fail Terjemahan Flutter" msgid "All Translation Files" msgstr "Semua Fail Terjemahan" msgid "The file is in a format not recognized by Poedit." msgstr "Fail ini dalam format yang tidak dikenal pasti oleh Poedit." 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." #, c-format msgid "Reading file content failed with the following error: %s" msgstr "Gagal membaca kandungan fail dengan ralat berikut: %s" #, 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." #, c-format msgid "Couldn’t save file %s." msgstr "Tidak dapat menyimpan fail %s." msgid "Screenshots:" msgstr "Tangkapan skrin:" #, 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." #, 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)." msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" "Fail PO rosak: msgstr bentuk tunggal digunakan bersama dengan msgid_plural" msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "Fail katalog rosak: msgstr bentuk jamak digunakan tanpa msgid_plural" msgid "Couldn’t load the file, it is probably damaged." msgstr "Tidak dapat memuatkan fail, ia berkemungkinan telah rosak." 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." 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)." #, 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." msgid "Error saving file" msgstr "Ralat menyimpan fail" #, c-format msgid "“%s” is not a valid POT file." msgstr "\"%s\" bukanlah fail POT yang sah." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Ralat ketika memuatkan fail XLIFF: %s" #, 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 msgid "Broken markup in translation string." msgstr "Penanda rosak dalam rentetan terjemahan." msgid "(Use default language)" msgstr "(Guna bahasa lalai)" msgid "Language selection" msgstr "Pemilihan bahasa" msgid "Select your preferred language" msgstr "Pilih bahasa yang anda kehendaki" msgid "You must restart Poedit for this change to take effect." msgstr "Anda mesti mulakan semula Poedit supaya perubahan ini berkesan." msgid "Add Account" msgstr "Tambah Akaun" msgid "Add account" msgstr "Tambah akaun" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "Ketahui lebih lanjut tentang %s" 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." msgid "How does cloud sync work?" msgstr "Bagaimanakah penyegerakan awan berfungsi?" msgid "Account" msgstr "Akaun" msgid "(not signed in)" msgstr "(belum daftar masuk)" msgid "File" msgstr "Fail" msgid "Open cloud translation" msgstr "Terjemahan awan terbuka" msgid "Manage accounts" msgstr "Urus akaun" msgid "Project:" msgstr "Projek:" msgid "Language:" msgstr "Bahasa:" msgid "Sign in to Cloud Account" msgstr "Daftar masuk ke Akaun Awan" msgid "Sign in to cloud account" msgstr "Daftar masuk ke akaun awan" msgid "No translation projects listed in your account." msgstr "Tiada projek terjemahan tersenarai dalam akaun anda." msgid "Downloading latest translations…" msgstr "Memuat turun terjemahan terkini…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #, c-format msgid "Sign in to %s" msgstr "Daftar masuk ke %s" msgid "Syncing" msgstr "Menyegerak" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, 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. #, c-format msgid "Uploading translations to %s failed." msgstr "Muat naik terjemahan ke %s gagal." msgid "Syncing error" msgstr "Ralat menyegerak" msgid "Add" msgstr "Tambah" msgid "Unknown Crowdin error." msgstr "Ralat Crowdin tidak diketahui." msgid "Not authorized, please sign in again." msgstr "Tidak diizinkan, sila daftar masuk sekali lagi." msgid "Downloading translations is disabled in this project." msgstr "Memuat turun terjemahan dilumpuhkan dalam projek ini." msgid "Sign In" msgstr "Daftar Masuk" msgid "Sign in" msgstr "Daftar masuk" msgid "Sign Out" msgstr "Daftar Keluar" msgid "Sign out" msgstr "Daftar keluar" msgid "Learn more about Crowdin" msgstr "Ketahui lebih lanjut berkenaan Crowdin" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" "Crowdin ialah satu platform pengurusan penyetempatan dalam talian dan alat " "terjemahan kolaboratif." msgid "Waiting for authentication…" msgstr "Menunggu pengesahihan…" msgid "Updating user information…" msgstr "Mengemas kini maklumat pengguna…" msgid "Sign in to Crowdin" msgstr "Daftar masuk ke Crowdin" msgid "Syncing with Crowdin failed." msgstr "Penyegerakan dengan Crowdin gagal." msgid "Crowdin error" msgstr "Ralat Crowdin" msgid "Uploading translations…" msgstr "Memuat naik terjemahan…" msgid "&Copy" msgstr "&Salin" msgid "Learn more" msgstr "Ketahui lebih lanjut" msgid "&Help" msgstr "&Bantuan" msgid "MO files can’t be directly edited in Poedit." msgstr "Fail MO tidak boleh disunting terus dalam Poedit." msgid "Error opening file" msgstr "Ralat membuka fail" 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." msgid "don’t delete temporary files (for debugging)" msgstr "jangan padam fail sementara (untuk penyahpepijatan)" msgid "handle a poedit:// URI" msgstr "kendali satu poedit:// URI" msgid "go to item at given line number" msgstr "pergi ke item pada nombor baris diberikan" msgid "Failed to communicate with Poedit process." msgstr "Gagal berkomunikasi dengan proses Poedit." #, c-format msgid "Unhandled exception occurred: %s" msgstr "Pengecualian tidak dikendalikan berlaku: %s" msgid "Select translation template" msgstr "Pilih templat terjemahan" msgid "Select translation file" msgstr "Pilih fail terjemahan" msgid "Poedit is an easy to use translation editor." msgstr "Poedit ialah sebuah penyunting terjemahan yang mudah digunakan." msgid "You can’t drop more than one file on Poedit window." msgstr "Anda tidak boleh lepas lebih daripada satu fail pada tetingkap Poedit." #, c-format msgid "File “%s” is not a translation file." msgstr "Fail “%s” bukan satu fail terjemahan." #, c-format msgid "File “%s” doesn’t exist." msgstr "Fail \"%s\" tidak wujud." 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". #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "Semakan ejaan dilumpuhkan, kerana kamus untuk %s tidak dipasang." msgid "Install" msgstr "Pasang" #, c-format msgid "The file “%s” has been changed by another application." msgstr "Fail \"%s\" telah diubah oleh aplikasi lain." msgid "Reload file" msgstr "Muat semula fail" 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." msgid "Ignore" msgstr "Abai" msgid "Reload File" msgstr "Muat Semula Fail" msgid "The file has been modified. Do you want to save changes?" msgstr "Fail telah diubah suai. Anda mahu menyimpan perubahan yang dibuat?" msgid "Save changes" msgstr "Simpan perubahan" msgid "Your changes will be lost if you don’t save them." msgstr "Perubahan anda akan hilang jika anda tidak menyimpannya." msgid "Save" msgstr "Simpan" msgid "Do&n’t save" msgstr "&Jangan simpan" msgid "Don’t Save" msgstr "Jangan Simpan" 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." msgid "Cancel" msgstr "Batal" msgid "Save Anyway" msgstr "Simpan Jua" msgid "Save anyway" msgstr "Simpan jua" msgid "Save as…" msgstr "Simpan sebagai…" msgid "Compile to…" msgstr "Kompil ke…" msgid "Compiled Translation Files" msgstr "Fail Terjemahan Terkompil" msgid "Export to HTML…" msgstr "" msgid "HTML Files" msgstr "Fail HTML" #, c-format msgid "In: %s" msgstr "Dalam: %s" msgid "Source code not available." msgstr "Kod sumber tidak tersedia." msgid "Updating failed" msgstr "Mengemas kini gagal" 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." msgid "Permission denied." msgstr "Keizinan dinafikan." 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. 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. 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." msgid "Translation entries in the file are probably incorrect." msgstr "Masukan-masukan terjemahan di dalam fail berkemungkinan tidak betul." msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "Gagal mengemas kini fail. Klik 'Perincian >>' untuk perincian." msgid "Open translation template" msgstr "Buka templat terjemahan" #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "%d isu berkaitan terjemahan ditemui." msgid "Validation results" msgstr "Keputusan pengesahan" 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." msgid "The file was saved safely." msgstr "Fail telah disimpan secara selamat." 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." 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." 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." msgid "The file cannot be compiled into the MO format and used." msgstr "Fail tidak dapat dikompil dalam format MO dan boleh digunakan." msgid "No problems with the translation found." msgstr "Tiada masalah berkaitan terjemahan ditemui." #, 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." msgid "The translation is ready for use." msgstr "Terjemahan sedia digunakan." #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "" "Poedit secara automatik dapat tetapkan kandungan tidak sah dalam fail " "\"% s\"." msgid "" "The file contained duplicate items, which is not allowed in PO files and " "would prevent the file from being used. Poedit fixed the issue, but you " "should review translations of any items marked as 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." msgid "Language of the translation isn’t set." msgstr "Bahasa terjemahan tidak ditetapkan." msgid "Set Language" msgstr "Tetapkan Bahasa" msgid "Set language" msgstr "Tetapkan bahasa " #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." msgid "" "Suggestions are not available if the translation language is not set " "correctly. Other features, such as plural forms, may be affected as well." msgstr "" "Cadangan tidak tersedia jika bahasa terjemahan tidak ditetapkan dengan baik. " "Fitur-fitur lain, seperti bentuk majmuk, mungkin terjejas juga." msgid "Language of the translation is the same as source language." msgstr "Bahasa terjemahan adalah sama dengan bahasa sumber." msgid "Fix Language" msgstr "Baiki Bahasa" msgid "Fix language" msgstr "Baiki bahasa" 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." 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" msgid "Required header Plural-Forms is missing." msgstr "Pengepala Bentuk-Jamak yang diperlukan telah hilang." #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Rakat sintaks dalam pengepala Bentuk-Jamak (\"%s\")." msgid "Fix the Header" msgstr "Baiki Pengepala" 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". #, 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.")" msgid "Review" msgstr "Kaji semula" msgid "Would you like to use English for source text?" msgstr "Adakah anda mahu menggunakan Bahasa Inggeris untuk teks sumber?" #, 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" msgid "Load English" msgstr "Muatkan Bahasa Inggeris" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Sudah terjemah: %d dari %d (%d %%)" #, c-format msgid "Remaining: %d" msgstr "Berbaki: %d" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d ralat" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d masukan" msgid " (unsaved)" msgstr " (tidak disimpan)" msgid " (modified)" msgstr " (diubah suai)" #, c-format msgid "Failed to update translation memory: %s" msgstr "Gagal mengemas kini ingatan terjemahan: %s" msgid "Remove same-as-source translations" msgstr "" msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" msgid "Keep" msgstr "Kekalkan" msgid "Remove" msgstr "" msgid "Purge deleted translations" msgstr "Singkir terjemahan terpadam" msgid "Do you want to remove all translations that are no longer used?" msgstr "Anda mahu membuang semua terjemahan yang tidak digunakan lagi?" 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." msgid "Purge" msgstr "Singkir" msgid "Copy from source text" msgstr "Salin dari sumber teks" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "Kosongkan terjemahan" msgid "Clear Translation" msgstr "Kosongkan Terjemahan" msgid "Edit comment" msgstr "Sunting ulasan" msgid "Edit Comment" msgstr "Sunting Ulasan" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "Kemunculan Kod" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "Kemunculan kod" msgid "Hide Sidebar" msgstr "Sembunyi Palang sisi" msgid "Show Sidebar" msgstr "Tunjuk Palang Sisi" msgid "Hide Status Bar" msgstr "Sembunyi Palang Status" msgid "Show Status Bar" msgstr "Tunjuk Palang Status" msgid "String length in characters: translation | source" msgstr "Panjang rentetan dalam aksara: terjemahan | sumber" msgid "String length in characters" msgstr "Panjang rentetan dalam aksara" msgid "Source text" msgstr "Teks sumber" msgid "Singular" msgstr "Tunggal" msgid "Plural" msgstr "Jamak" msgid "Translation" msgstr "Terjemahan" msgid "Pre-translated" msgstr "Pra-terjemah" 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. msgid "Needs work" msgstr "Perlu semak" 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." msgid "Create new translation" msgstr "Cipta terjemahan baru" 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 msgid "Source text ID" msgstr "ID teks sumber" msgid "Everything" msgstr "Kesemuanya" #, c-format msgid "Form %i" msgstr "Bentuk %i" #, c-format msgid "Form %i (unused)" msgstr "Bentuk %i (tidak digunakan)" msgid "Zero" msgstr "Sifar" msgid "One" msgstr "Satu" msgid "Two" msgstr "Dua" msgid "Other" msgstr "Lain-lain" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, c-format msgid "String context: %s" msgstr "Konteks rentetan: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #, c-format msgid "String identifier: %s" msgstr "Pengecam rentetan: %s" #, c-format msgid "%s Format" msgstr "Format %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "format %s" #, c-format msgid "Translation — %s" msgstr "Terjemahan — %s" msgid "ID" msgstr "ID" #, c-format msgid "Source text — %s" msgstr "Teks sumber — %s" msgid "unknown language" msgstr "bahasa tidak diketahui" #, c-format msgid "Network error: %s (%d)" msgstr "" msgid "Unknown error" msgstr "" #, c-format msgid "Failed command: %s" msgstr "Perintah gagal: %s" msgid "Failed to merge gettext catalogs." msgstr "Gagal menggabungkan katalog gettext." msgid "Open in Editor" msgstr "Buka dalam Penyunting" msgid "Open in editor" msgstr "Buka dalam penyunting" 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." msgid "No usage information" msgstr "Tiada maklumat penggunaan" #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d kod kemunculan" msgid "Source code not found" msgstr "Kod sumber tidak ditemui" 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." msgid "File cannot be opened" msgstr "Fail tidak dapat dibuka" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "Poedit tidak dapat membuka fail \"%s\"." msgid "Find" msgstr "Cari" msgid "Replace" msgstr "Ganti" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "Pilihan" msgid "Ignore case" msgstr "Abai kata" msgid "Wrap around" msgstr "Lilit sekeliling" msgid "Whole words only" msgstr "Keseluruhan kata sahaja" msgid "Find in source texts" msgstr "Cari dalam teks sumber" msgid "Find in translations" msgstr "Cari dalam terjemahan" msgid "Find in comments" msgstr "Cari dalam ulasan" msgid "Close" msgstr "Tutup" msgid "Replace &All" msgstr "Ganti Semu&a" msgid "Replace &all" msgstr "Ganti semu&a" msgid "&Replace" msgstr "&Ganti" msgid "< &Previous" msgstr "< &Terdahulu" msgid "&Next >" msgstr "&Berikutnya >" msgid "String to find" msgstr "Rentetan dicari" msgid "Replacement string" msgstr "Rentetan gantian" #, c-format msgid "Cannot execute program: %s" msgstr "Tidak dapat melakukan program: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "Nama atau kod bahasa" msgid "Translation Language" msgstr "Bahasa Terjemahan " msgid "Language of the translation:" msgstr "Bahasa bagi terjemahan:" msgid "All strings" msgstr "Semua rentetan" msgid "Couldn’t download Localazy project details." msgstr "Tidak dapat memuat turun maklumat project Localazy." msgid "There was an error when uploading translations to Localazy." msgstr "Terdapat ralat semasa memuat naik terjemahan ke Localazy." msgid "Projects" msgstr "Projek" 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." msgid "Add Project" msgstr "Tambah Projek" msgid "Add project" msgstr "Tambah projek" msgid "Poedit - Catalogs manager" msgstr "Poedit - Pengurus katalog" msgid "Edit…" msgstr "Sunting…" msgid "Create new translations project" msgstr "Cipta projek terjemahan baharu" msgid "Delete the project" msgstr "Padam projek" msgid "Edit the project" msgstr "Sunting projek" msgid "Update all" msgstr "Kemas kini semua" msgid "Update all catalogs in the project" msgstr "Kemas kini semua katalog dalam projek" msgid "Total" msgstr "Jumlah" msgid "Untrans" msgstr "Belum Terjemah" msgctxt "column/row header" msgid "Needs Work" msgstr "Perlu Semak" msgid "Errors" msgstr "Ralat" msgid "Last modified" msgstr "Terakhir diubah suai" msgid "Select directory" msgstr "Pilih direktori" msgid "Directories:" msgstr "Direktori:" msgid "" msgstr "" #, c-format msgid "Do you want to delete project “%s”?" msgstr "Anda pasti mahu memadam projek \"%s\"?" msgid "Delete project" msgstr "Padam Projek" msgid "Deleting the project will not delete any translation files." msgstr "Memadam projek tidak akan memadam apa-apa fail terjemahan." msgid "Confirmation" msgstr "Pengesahan" msgid "Update all catalogs in this project?" msgstr "Kemas kini semua katalog dalam projek ini?" msgid "Performs update from source code on all files in the project." msgstr "Jalankan kemas kini daripada kod sumber semua fail di dalam projek." msgid "Check for Updates…" msgstr "Periksa Kemas Kini…" msgid "Catalogs Manager" msgstr "Pengurus Katalog" msgid "&Preferences…" msgstr "&Keutamaan…" msgid "&Edit" msgstr "&Sunting" msgid "Undo" msgstr "Buat asal" msgid "Redo" msgstr "Buat semula" msgid "Paste and Match Style" msgstr "Gaya Tampal dan Padan" msgid "Delete" msgstr "Padam" msgid "Spelling and Grammar" msgstr "Ejaan dan Tata Bahasa" msgid "Show Spelling and Grammar" msgstr "Tunjuk Ejaan dan Tata Bahasa" msgid "Check Document Now" msgstr "Periksa Dokumen Sekarang" msgid "Check Spelling While Typing" msgstr "Periksa Ejaan Ketika Menaip" msgid "Check Grammar With Spelling" msgstr "Periksa Tata Bahasa Dengan Ejaan" msgid "Correct Spelling Automatically" msgstr "Betul Ejaan secara Automatik" msgid "Substitutions" msgstr "Penggantian" msgid "Show Substitutions" msgstr "Tunjuk Penggantian" msgid "Smart Copy/Paste" msgstr "Salin/Tampal Pintar" msgid "Smart Quotes" msgstr "Petikan Pintar" msgid "Smart Dashes" msgstr "Sempang Pintar" msgid "Smart Links" msgstr "Pautan Pintar" msgid "Text Replacement" msgstr "Penggantian Teks" msgid "Transformations" msgstr "Pengubahan" msgid "Make Upper Case" msgstr "Jadikan Huruf Besar" msgid "Make Lower Case" msgstr "Jadikan Huruf Kecil" msgid "Capitalize" msgstr "Penghurufbesaran" msgid "Speech" msgstr "Pertuturan" msgid "Start Speaking" msgstr "Mula Bercakap" msgid "Stop Speaking" msgstr "Henti Bercakap" msgid "&View" msgstr "&Lihat" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Show Toolbar" msgstr "Tunjuk Palang Alat" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Customize Toolbar…" msgstr "Suai Palang Alat…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Enter Full Screen" msgstr "Masuk Skrin Penuh" msgid "Window" msgstr "Tetingkap" msgid "Minimize" msgstr "Minimumkan" msgid "Zoom" msgstr "Zum" msgid "Welcome to Poedit" msgstr "Selamat Datang ke Poedit" msgid "Bring All to Front" msgstr "Bawa Semua ke Hadapan" msgid "Information about the translator" msgstr "Maklumat berkenaan penterjemah" msgid "Name:" msgstr "Nama:" msgid "Your Name" msgstr "Nama Anda" msgid "Email:" msgstr "E-mel:" msgid "you@example.com" msgstr "anda@contoh.com" 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." msgid "Editing" msgstr "Penyuntingan" msgid "Automatically compile MO file when saving" msgstr "Kompil fail MO secara automatik ketika menyimpan" msgid "Show summary after updating files" msgstr "Tunjuk ringkasan selepas mengemas kini fail" msgid "Check spelling" msgstr "Periksa ejaan" msgid "Always change focus to text input field" msgstr "Sentiasa ubah fokus ke medan input teks" 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." msgid "Appearance" msgstr "Penampilan" msgid "Use custom list font:" msgstr "Guna fon senarai suai:" msgid "Use custom text fields font:" msgstr "Guna fon medan teks suai:" msgid "Change UI language" msgstr "Ubah bahasa UI" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions msgid "(requires Windows 8 or newer)" msgstr "(memerlukan Windows 8 atau lebih baharu)" msgid "General" msgstr "Am" msgid "Use translation memory" msgstr "Guna ingatan terjemahan" msgid "Manage…" msgstr "Urus…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "Bila mengemas kini dari sumber" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "padanan kabur di dalam fail" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "pra-terjemah dari TM" 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." msgid "Stored translations:" msgstr "Terjemahan tersimpan:" msgid "Database size on disk:" msgstr "Saiz pangkalan data dalam cakera:" msgid "Import Translation Files…" msgstr "Import Fail Terjemahan…" msgid "Import translation files…" msgstr "Import fail terjemahan…" msgid "Import From TMX…" msgstr "Import Daripada TMX…" msgid "Import from TMX…" msgstr "Import daripada TMX…" msgid "Export To TMX…" msgstr "Eksport Ke TMX…" 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). msgid "Reset" msgstr "Tetap semula" msgid "Select translation files to import" msgstr "Plih fail terjemahan untuk diimport" msgid "Translation Memory" msgstr "Ingatan Terjemahan" msgid "Importing translations…" msgstr "Mengimport terjemahan…" #, c-format msgid "Error loading translation file “%s”." msgstr "Ralat memuatkan fail terjemahan \"%s”." msgid "Finalizing…" msgstr "Memuktamadkan…" msgid "Select TMX files to import" msgstr "Pilih fail TMX untuk diimport" msgid "TMX Files" msgstr "Fail TMX" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "Mengimport ingatan terjemahan dari \"%s\" gagal." msgid "Import error" msgstr "Ralat import" msgid "Export as…" msgstr "Eksport sebagai…" msgid "Exporting translations…" msgstr "Mengeksport terjemahan…" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "Mengeksport ingatan terjemahan dari \"%s\" gagal." msgid "Export error" msgstr "Ralat eksport" msgid "Reset translation memory" msgstr "Tetap semula ingatan terjemahan" msgid "Are you sure you want to reset the translation memory?" msgstr "Anda pasti mahu menetap semula ingatan terjemahan?" 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. msgid "TM" msgstr "TM" msgid "" "Source code extractors are used to find translatable strings in the source " "code files and extract them so that they can be translated." msgstr "" "Pengekstrak kod sumber digunakan untuk mencari rentetan yang boleh terjemah " "dalam fail kod sumber dan mengekstraknya supaya ia boleh diterjemah." msgid "Custom Extractors:" msgstr "Pengekstrak Suai:" msgid "Custom extractors:" msgstr "Pengekstrak suai:" msgid "GNU gettext" msgstr "Gettext GNU" 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)." msgid "Delete extractor" msgstr "Padam pengekstrak" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "Anda pasti mahu memadam pengekstrak \"%s\"?" msgid "Extractors" msgstr "Pengekstrak" msgid "Accounts" msgstr "Akaun" msgid "Automatically check for updates" msgstr "Periksa kemas kini secara automatik" msgid "Include beta versions" msgstr "Termasuk versi beta" 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." msgid "Updates" msgstr "Kemas Kini" 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." msgid "Line endings:" msgstr "Penghujung baris:" msgid "Unix (recommended)" msgstr "Unix (disarankan)" msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "Lilit pada:" msgid "Preserve formatting of existing files" msgstr "Kekal pemformatan bagi fail sedia ada" msgid "Advanced" msgstr "Lanjutan" msgid "Settings" msgstr "" msgid "Preparing strings…" msgstr "Menyediakan rentetan…" msgid "Pre-translating from translation memory…" msgstr "Membuat pra-terjemahan daripada ingatan terjemahan…" #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "Pra-terjemah %u rentetan" msgid "Pre-translating…" msgstr "Pra-menterjemah…" 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. msgid "Pre-translate" msgstr "Pra-terjemah" 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." msgid "Cannot pre-translate from unknown language." msgstr "Tidak dapat pra-terjemah bahasa yang tidak diketahui." 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." msgid "Only fill in exact matches" msgstr "Hanya isi padanan tepat" 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." msgid "Don’t mark exact matches as needing work" msgstr "Jangan tanda padanan tepat sebagai perlu semak" 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." 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." #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%d masukan telah dipra-terjemah." 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." msgid "No entries could be pre-translated." msgstr "Tiada masukan boleh dipra-terjemah." 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." msgid "Cancelling…" msgstr "Membatalkan…" msgid "Drag Folders or Files Here" msgstr "Seret Folder atau Fail Di Sini" msgid "Drag folders or files here" msgstr "Seret folder atau fail di sini" msgid "Add Folders…" msgstr "Tambah Folder…" msgid "Add folders…" msgstr "Tambah folder…" msgid "Add Files…" msgstr "Tambah Fail…" msgid "Add files…" msgstr "Tambah fail…" msgid "Add Wildcard…" msgstr "Tambah Kad Liar…" 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) 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" msgid "Show in Explorer" msgstr "Tunjuk dalam Explorer" msgid "Show in Folder" msgstr "Tunjuk dalam Folder" msgid "Paths" msgstr "Laluan" msgid "Excluded paths" msgstr "Laluan dikecualikan" msgid "Advanced extraction settings" msgstr "Tetapan pengekstrakan lanjutan" msgid "Extract notes for translators from:" msgstr "Ekstrak nota untuk penterjemah dari:" msgid "Comments prefixed with:" msgstr "Ulasan diawali dengan:" msgid "All comments" msgstr "Semua ulasan" msgid "Additional xgettext flags:" msgstr "Bendera xgettext tambahan:" msgid "Additional keywords" msgstr "Kata kunci tambahan" msgid "Name of the project the translation is for" msgstr "Nama bagi projek terjemahan" msgid "Team name and email address or URL" msgstr "Nama pasukan dan alamat e-mel atau URL" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "cth. nplurals=2; plural=(n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (disarankan)" msgid "Please save the file first. This section cannot be edited until then." msgstr "" "Sila simpan fail dahulu. Seksyen ini tidak boleh disunting buat masa ini." msgid "Placeholders correctness" msgstr "Ketepatan ruang letak" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "Ruang letak “%s” tiada dalam terjemahan." #, c-format msgid "Superfluous placeholder “%s” that isn’t in source text." msgstr "Ruang letak berlebihan “%s” yang tiada dalam teks sumber." msgid "Plural form translations" msgstr "Terjemahan bentuk jamak" msgid "Not all plural forms are translated." msgstr "Bukan semua bentuk jamak telah diterjemah." msgid "Inconsistent upper/lower case" msgstr "Huruf besar/kecil tidak konsisten" msgid "The translation should start as a sentence." msgstr "Terjemahan sepatutnya dimulakan sebagai satu ayat." msgid "The translation should start with a lowercase character." msgstr "Terjemahan sepatutnya dimulakan dengan satu aksara huruf kecil." msgid "Inconsistent whitespace" msgstr "Ruang kosong tidak konsisten" msgid "The translation doesn’t start with a space." msgstr "Terjemahan tidak dimulakan dengan satu jarak." msgid "The translation starts with a space, but the source text doesn’t." msgstr "" "Terjemahan dimulakan dengan satu jarak, tetapi tiada dalam teks sumber." msgid "The translation is missing a newline at the end." msgstr "Terjemahan tidak mempunyai baris baharu di penghujung." 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." msgid "The translation is missing a space at the end." msgstr "Terjemahan tidak mempunyai satu jarak di penghujung." msgid "The translation ends with a space, but the source text doesn’t." msgstr "Terjemahan berakhir dengan satu jarak, tetapi tiada dalam teks sumber." msgid "Punctuation checks" msgstr "Semakan tanda baca" #, c-format msgid "The translation should end with “%s”." msgstr "Terjemahan patut berakhir dengan \"%s\"." #, c-format msgid "The translation should not end with “%s”." msgstr "Terjemahan tidak patut berakhir dengan \"%s\"." #, 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\"." msgid "Cloud" msgstr "" msgid "Clear Menu" msgstr "Kosongkan Menu" msgid "Clear menu" msgstr "Kosongkan menu" msgid "Comment:" msgstr "Ulasan:" msgid "Update" msgstr "Kemas kini" msgid "&Delete" msgstr "Pa&dam" msgid "Delete the comment" msgstr "Padam Ulasan" msgid "Edit project" msgstr "Sunting projek" msgid "Project name:" msgstr "Nama projek:" msgid "Browse" msgstr "Layar" msgid "Add directory to the list" msgstr "Tambah direktori ke dalam senarai" msgid "OK" msgstr "OK" msgid "&File" msgstr "&Fail" msgid "&New…" msgstr "Ba&haru…" msgid "New from &POT/PO file…" msgstr "Baharu dari fail &POT/PO…" msgid "New From &POT/PO File…" msgstr "Baharu Dari Fail &POT/PO…" msgid "&Open…" msgstr "&Buka…" msgid "Open Recent" msgstr "Buka Baru-baru Ini" msgid "Open recent" msgstr "Buka baru-baru ini" msgid "Open cloud translation…" msgstr "Terjemahan awan terbuka…" msgid "Open Cloud Translation…" msgstr "Terjemahan Awan Terbuka…" msgid "&Start window" msgstr "Tetingkap &mula" msgid "&Start Window" msgstr "Tetingkap &Mula" msgid "Catalogs &manager" msgstr "&Pegurus katalog" msgid "Catalogs &Manager" msgstr "&Pengurus Katalog" msgid "&Close" msgstr "&Tutup" msgid "&Save" msgstr "&Simpan" msgid "Save &as…" msgstr "Simpan seb&agai…" msgid "Save &As…" msgstr "Simpan Seb&agai…" msgid "Compile to MO…" msgstr "Kompil ke MO…" msgid "E&xport to HTML…" msgstr "" msgid "Check for updates…" msgstr "Periksa kemas kini…" msgid "Settings…" msgstr "Tetapan…" msgid "&Preferences" msgstr "&Keutamaan" msgid "E&xit" msgstr "K&eluar" msgid "Quit" msgstr "Keluar" msgid "Copy from singular" msgstr "Salin daripada tunggal" msgid "Copy From Singular" msgstr "Salin Dari Tunggal" msgid "Translation needs &work" msgstr "Terjemahan perlu di&semak" msgid "Translation Needs &Work" msgstr "Terjemahan Perlu Di&semak" msgid "Edit &comment" msgstr "Sunting &ulasan" msgid "Edit &Comment" msgstr "Sunting &Ulasan" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "Cadangan" msgid "&Find…" msgstr "&Cari…" msgid "Replace…" msgstr "Ganti…" msgid "Find next" msgstr "Cari berikutnya" msgid "Find previous" msgstr "Cari terdahulu" msgid "Find and Replace…" msgstr "Cari dan Ganti…" msgid "Find Next" msgstr "Cari Berikutnya" msgid "Find Previous" msgstr "Cari Terdahulu" msgid "Show string &ID" msgstr "Tunjuk &ID rentetan" msgid "Show String &ID" msgstr "Tunjuk &ID Rentetan" msgid "Show warnings" msgstr "Tunjuk amaran" msgid "Show Warnings" msgstr "Tunjuk Amaran" msgid "Sort by &file order" msgstr "Isih mengikut tertib &fail" msgid "Sort by &File Order" msgstr "Isih mengikut Tertib &Fail" msgid "Sort by &source" msgstr "Isih mengikut &sumber" msgid "Sort by &Source" msgstr "Isih mengikut &Sumber" msgid "Sort by &translation" msgstr "Isih mengikut &terjemahan" msgid "Sort by &Translation" msgstr "Isih mengikut &Terjemahan" msgid "&Group by context" msgstr "&Kumpul mengikut konteks" msgid "&Group By Context" msgstr "&Kumpul Mengikut Konteks" msgid "Entries with errors first" msgstr "Masukan dengan ralat dahulu" msgid "Entries with Errors First" msgstr "Masukan dengan Ralat Dahulu" msgid "&Untranslated entries first" msgstr "&Masukan belum terjemah dahulu" msgid "&Untranslated Entries First" msgstr "&Masukan Belum Terjemah Dahulu" msgid "&Show code occurrences" msgstr "T&unjuk kemunculan kod" msgid "&Show Code Occurrences" msgstr "T&unjuk Kemunculan Kod" msgid "Show sidebar" msgstr "Tunjuk palang sisi" msgid "Show status bar" msgstr "Tunjuk palang status" msgid "&Translation" msgstr "&Terjemahan" msgid "&Update from source code" msgstr "&Kemas kini dari kod sumber" msgid "&Update from Source Code" msgstr "&Kemas kini dari Kod Sumber" msgid "Update from &POT file…" msgstr "Kemas kini dari fail &POT…" msgid "Update from &POT File…" msgstr "Kemas Kini dari Fail &POT…" msgid "Sync with Crowdin" msgstr "Segerak dengan Crowdin" msgid "Pre-&translate…" msgstr "Pra-&terjemah…" msgid "&Validate translations" msgstr "&Sahkan terjemahan" msgid "&Validate Translations" msgstr "&Sahkan Terjemahan" msgid "Remove Same-as-Source Translations" msgstr "" msgid "&Purge deleted translations" msgstr "&Singkir terjemahan terpadam" msgid "&Purge Deleted Translations" msgstr "&Singkir Terjemahan Terpadam" msgid "&Properties…" msgstr "&Sifat…" msgid "&Go" msgstr "&Pergi" msgid "&Done and next" msgstr "&Selesai dan berikutnya" msgid "&Done and Next" msgstr "&Selesai dan Berikutnya" msgid "Previously edited" msgstr "Disunting sebelum ini" msgid "Previously Edited" msgstr "Disunting Sebelum Ini" msgid "&Previous translation" msgstr "Terjemahan &terdahulu" msgid "&Previous Translation" msgstr "Terjemahan &Terdahulu" msgid "&Next translation" msgstr "Terjemahan &berikutnya" msgid "&Next Translation" msgstr "Terjemahan &Berikutnya" msgid "P&revious unfinished" msgstr "Tidak selesai t&erdahulu" msgid "P&revious Unfinished" msgstr "Tidak Selesai T&erdahulu" msgid "Ne&xt unfinished" msgstr "Tidak selesai be&rikutnya" msgid "Ne&xt Unfinished" msgstr "Tidak Selesai Be&rikutnya" msgid "Previous plural form" msgstr "Bentuk majmuk terdahulu" msgid "Previous Plural Form" msgstr "Bentuk majmuk Terdahulu" msgid "Next plural form" msgstr "Bentuk majmuk berikutnya" msgid "Next Plural Form" msgstr "Bentuk majmuk Berikutnya" msgid "&Online help" msgstr "&Bantuan dalam talian" msgid "&Online Help" msgstr "Bantuan &Dalam Talian" msgid "&GNU gettext manual" msgstr "Manual &GNU gettext" msgid "&GNU gettext Manual" msgstr "Manual &GNU gettext" msgid "&About Poedit" msgstr "Perih&al Poedit" msgid "&About" msgstr "Perih&al" msgid "Extractor setup" msgstr "Persediaan pengekstrak" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Senarai sambungan dipisah oleh tanda titik bertindih (cth: *.cpp,*.h):" msgid "Invocation:" msgstr "Seruan:" msgid "Command to extract translations:" msgstr "Perintah untuk mengekstrak terjemahan:" 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)." msgid "An item in keywords list:" msgstr "Satu item dalam senarai kata kunci:" 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." msgid "An item in input files list:" msgstr "Satu item dalam senarai fail input:" #, 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." msgid "Source code charset:" msgstr "Set aksara kod sumber:" #, 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." msgid "Translation Properties" msgstr "Sifat Terjemahan" msgid "Project name and version:" msgstr "Nama dan versi projek:" msgid "Language team:" msgstr "Pasukan bahasa:" msgid "Plural forms:" msgstr "Bentuk jamak:" msgid "Use default rules for this language" msgstr "Guna peraturan lalai untuk bahasa ini" msgid "Use custom expression" msgstr "Guna ungkapan suai" msgid "Learn about plural forms" msgstr "Ketahui berkenaan bentuk jamak" msgid "Charset:" msgstr "Set Aksara:" msgid "Advanced Extraction Settings…" msgstr "Tetapan Pengekstrakan Lanjutan…" msgid "Advanced extraction settings…" msgstr "Tetapan pengekstrakan lanjutan…" msgid "Translation properties" msgstr "Sifat terjemahan" msgid "Sources Paths" msgstr "Laluan Sumber" msgid "Sources paths" msgstr "Laluan sumber" msgid "Extract text from source files in the following directories:" msgstr "Ekstrak teks dari fail sumber dalam direktori berikut:" msgid "Base path:" msgstr "Laluan dasar:" msgid "Sources Keywords" msgstr "Kata Kunci Sumber" msgid "Sources keywords" msgstr "Kata kunci sumber" 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:" msgid "Also use default keywords for supported languages" msgstr "Guna juga kata kunci lalai untuk bahasa tersokong" msgid "Learn about gettext keywords" msgstr "Ketahui berkenaan kata kunci gettext" msgid "Update summary" msgstr "Kemas kini ringkasan" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" "Rentetan-rentetan ini telah ditemui dalam sumber tetapi tidak di dalam " "fail.\n" "Poedit akan menambahnya ke fail sekarang." msgid "New strings" msgstr "Rentetan baharu" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" "Rentetan-rentetan tiada lagi dalam kod sumber. Poedit\n" "akan membuangnya dari fail sekarang." msgid "Obsolete strings" msgstr "Rentetan lapuk" msgid "(0 new, 0 obsolete)" msgstr "(0 baru, 0 usang)" msgid "Open" msgstr "" msgid "Open file" msgstr "Buka fail" msgid "Save file" msgstr "Simpan fail" msgid "Validate" msgstr "Sahkan" msgid "Check for errors in the translation" msgstr "Periksa kesalahan dalam terjemahan" msgid "Update from code" msgstr "Kemas kini dari kod" msgid "Update from Code" msgstr "Kemas Kini dari Kod" msgid "Update from source code" msgstr "Kemas kini dari kod sumber" msgid "Sidebar" msgstr "Palang sisi" msgid "Show or hide the sidebar" msgstr "Tunjuk atau sembunyi palang sisi" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. msgid "Previous source text" msgstr "Teks sumber terdahulu" 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." msgid "Notes for translators" msgstr "Nota untuk penterjemah" msgid "Comment" msgstr "Ulasan" msgid "Add comment" msgstr "Tambah ulasan" msgid "Add Comment" msgstr "Tambah Ulasan" msgid "Delete From Translation Memory" msgstr "Padam Dari Ingatan Terjemahan" msgid "Delete from translation memory" msgstr "Padam dari ingatan terjemahan" msgid "Translation suggestions" msgstr "Cadangan terjemahan" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). msgid "No matches found" msgstr "Tiada padanan ditemui" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). msgid "No Matches Found" msgstr "Tiada Padanan Ditemui" msgid "This string was found in Poedit’s translation memory." msgstr "Rentetan ini telah ditemui dalam ingatan terjemahan Poedit." 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." 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." msgid "The TMX file is malformed." msgstr "Fail TMX adalah cacat." msgid "No translations were found in the TMX file." msgstr "Tiada terjemahan ditemui dalam fail TMX." #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Pangkalan data ingatan terjemahan rosak: %s (%d)." #, c-format msgid "Translation memory error: %s (%d)." msgstr "Ralat ingatan terjemahan: %s (%d)." msgid "Cannot create temporary directory." msgstr "Tidak dapat mencipta direktori sementara." msgid "There are no translations. That’s unusual." msgstr "Tiada terjemahan. Ini luar biasa." msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "Translators typically use PO template files (POTs) prepared for them by the " "developer." msgstr "" "Masukan boleh terjemah tidak ditambah secara manual dalam sistem Gettext, " "tetapi diekstrak secara automatik\n" "dari kod sumber. Dengan cara ini, ianya akan sentiasa dikemas kini dan " "tepat.\n" "Penterjemah biasanya menggunakan fail templat PO (POT) yang disediakan untuk " "mereka oleh pembangun." msgid "(Learn more about GNU gettext)" msgstr "(Ketahui lebih lanjut mengenai GNU gettext)" 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:" msgid "Update from POT" msgstr "Kemas kini dari POT" msgid "Take translatable strings from an existing POT template." msgstr "Ambil rentetan boleh terjemah dari satu templat POT sedia ada." msgid "" "You can also extract translatable strings directly from the source code:" msgstr "" "Anda juga boleh mengekstrak rentetan boleh terjemah terus dari kod sumber:" msgid "Extract from sources" msgstr "Ekstrak dari sumber" 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 #, c-format msgid "Version %s" msgstr "Versi %s" msgid "Create new" msgstr "Cipta baharu" msgid "Create new translation from POT template." msgstr "Cipta terjemahan baharu daripada templat POT." msgid "Browse files" msgstr "Layar fail" msgid "Open and edit translation files." msgstr "Buka dan sunting fail terjemahan." msgid "Translate cloud project" msgstr "Terjemah projek awan" msgid "Collaborate with other people online." msgstr "Bekerjasama dengan orang lain secara dalam talian." msgid "Recent files" msgstr "Fail baru-baru ini" msgid "Sync" msgstr "Segerak" 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") #, 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. #, c-format msgid "%s Preferences" msgstr "Keutamaan %s" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "Perkhidmatan" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "Sembunyi %s" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "Sembunyi Lain" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "Tunjuk Semua" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "Keluar dari %s" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "Keutamaan…" msgid "Preferences..." msgstr "Keutamaan..." #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "Baru-baru Ini" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "Kerap" msgid "&Apply" msgstr "&Terap" msgid "Apply" msgstr "Terap" msgid "&Back" msgstr "&Undur" msgid "Back" msgstr "Undur" msgid "&Cancel" msgstr "&Batal" msgid "&Clear" msgstr "&Kosongkan" msgid "Clear" msgstr "Kosongkan" msgid "Copy" msgstr "Salin" msgid "Cu&t" msgstr "Po&tong" msgid "Cut" msgstr "Potong" msgid "Edit" msgstr "Sunting" msgid "&Quit" msgstr "&Keluar" msgid "Help" msgstr "Bantuan" msgid "&New" msgstr "Ba&haru" msgid "New" msgstr "Baharu" msgid "&No" msgstr "&Tidak" msgid "No" msgstr "Tidak" msgid "&OK" msgstr "&OK" msgid "Open…" msgstr "Buka…" msgid "&Open..." msgstr "&Buka..." msgid "Open..." msgstr "Buka..." msgid "&Paste" msgstr "&Tampal" msgid "Paste" msgstr "Tampal" msgid "Preferences" msgstr "Keutamaan" msgid "&Redo" msgstr "Buat &Semula" msgid "Refresh" msgstr "Segar semula" msgid "&Save as" msgstr "&Simpan sebagai" msgid "Save as" msgstr "Simpan sebagai" msgid "Select &All" msgstr "Pilih Semu&a" msgid "Select All" msgstr "Pilih Semua" msgid "&Undo" msgstr "Buat &Asal" msgid "&Yes" msgstr "&Ya" msgid "Yes" msgstr "Ya" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "Up" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "Down" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "Kiri" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "Right" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "shift" poedit-3.5/locales/ckb.mo0000644000175100001770000006366414664354153012341 00000000000000?    #)-38@R d q~ 6RXl      '4CLb'g 76 @` ep "28J\b}   $ * / D H O ` s ?   !" !5.!d!j! o! }! ! ! !!!!!!! ! ""</""l" ""0"!"#(#.# 3# =#K#\# q# {# # ##### ## # ## $)$,$$$ $% %)%(.%W%t% % % %%%<%.&4& O&Y&p&y&&& & &&s'w'' ''%'''' '(( (,(4(<(D(J(_(t(((4):)@)nS)))),) *%* 4*@*O*^* x******** * **** ++++ $+ /+ <+ H+S+d+ + +++ ++ ++ ++ ,,,&,.,A,J,S,g,w,,,,,, ,-- %-3-K:-- --- --+-.!.L9.m._.[T/// ///0002070J0M0 T0"_00000000V 1 c1n111111171 232aP222222.23(3.3!?3a35'575 P5^5x555555 666*6 26=6\6{6666 667 7=?7=}7 77 7C7C28 v88"808;8(9=9 Q9^9o9 9"9919 :">:a:.v::L:E:8=; v;U;S;7-<e<v<%< <<<?<=;=(y=(===)=">!7>!Y> {>9> >@>?*?=C?=?.?A?0@C@ I@3S@@@!@@@@gA{AA,AA=A\1BBB(B(B'C'9C%aC)CCCCC4D7DKD4fDfDTEWE.nEtEDF WF7bFFFF*F*G=G[GyGG)G)G GHH"H 1H#RH"vHGHHIH.J$EJ,jJJ"JJ5JK%-K SK!]KK2KKYKn)L)LL*LMM$$M$IM(nM(MMTO:[O:OO OYOVP_PPP.P.PQ Q2QDQ _Q$mQ$Q"Q'QR RR( S6S TT0TuJTTTT U%U"AUdU yUU@UUU U V!V AVNV]V4rVVVVV% W80W"iW!W$W;WX)XCXJX#iX$X2X5X#Y$?YdYuYYY#YYY.Y%Z+AZ.mZ%Z+Z#Z5[H[\[%{[%[[w[ H\%V\(|\\/\K\K6]]B]]U^__ k`(v````` aa0aGaeaa!aLa b$b09b/jbIb,b1cCc d,.d[dzddd%ddd ne[|eefff(ffIf2*g]gcg4g&v^7RYF&,GLJ@PZ=]OBr}*n05:'=/w!>Qh".:253i '1<$7m9ldkEMpA4f 3 06 xy21*+T.K?)q -;e t (aU\#6#%-z" 4)% D[; u/!8b>s8c|IX_VSoWC~N`j(gH$? {<,+9 (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(0 new, 0 obsolete)(New: %i, obsolete: %i)(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 FilesAlt+Always 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 errorCtrl+Cu&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 againDownDownloading latest translations…Downloading translations is disabled in this project.E&xitEditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEmail:EnterEnter Full ScreenError opening fileEverythingExport as…Exporting translations…Extract text from source files in the following directories:Extracting translatable strings…ExtractorsFailed command: %sFailed 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 OthersHide 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 CrowdinLeftList 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.OKObsolete stringsOneOpen 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 translationsQuitRecentRedoRefreshReload FileRemaining: %dReplaceResetReset translation memoryReviewRightSaveSave asSave as…Save changesSelect &AllSelect AllSelect directorySelect your preferred languageSet LanguageSet languageShift+Show AllShow 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)UpUpdateUpdate 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’t delete temporary files (for debugging)handle a poedit:// URIshiftunknown language“%s” is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2024-08-30 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 دەربارەی&داخستن&لەبەرگرتنەوە&سڕینەوە&جێبەجێکراو و بچۆ دانەی دواتر&جێبەجێکراو و بچۆ دانەی دواتر&دەستکاری&پەڕگە&بڕۆ&یارمەتی&نوێ&نوێ…&وەرگێڕانی دواتر&وەرگێڕانی دواتر&یارمەتی سەرهێڵ&یارمەتی سەرهێڵ&کردنەوە...&کردنەوە…&دانان&سازکارییەکان&وەرگێڕانی پێشتر&وەرگێڕانی پێشتر&پاکژکردنەوەی وەرگێڕانە سڕاوەکان&پاکژکردنەوەی وەرگێڕانە سڕاوەکان&دواتر&پاشەکەوت کردن&پێشتر&سەرەتا وەرنەگێڕدراوە تێئاخنراوەکان&سەرەتا وەرنەگێڕدراوە تێئاخنراوەکان&بینین(0 نوێ، 0 کۆن)(نوێ: %i, بەسەرچوو: %i)(زمانی بنەڕەتی بەکاربهێنە)(پێویستی بە ویندۆزی ٨ یان نوێترە)<ناونەنراو>دەربارەی %sهەژمارزیادکردننووسینی لێدوانزیادکردنی پەڕگە…زیادکردنی فۆڵدەر…نووسینی لێدوانزیادکردنی پێڕست بۆ لیستەکەزیادکردنی پەڕگە…زیادکردنی فۆڵدەر…پەرەسەندووهەموو فایلەکانی وەرگێڕانAlt+هەمیشە سەرنج بگۆڕە بۆ خانەی تێئاخنینی دەقدانەیەک لە لیستەی تێئاخنینی پەڕگەکان:دانەیەک لە لیستەی وشەکلیلەکان:ڕووکارئایا دڵنیایت لە سڕینەوەی دەرهێنەری “%s” extractor؟ئایا دڵنیایت لە سفرکردنەوەی بیرگەی وەرگێڕان؟پشکنین بۆ نوێکردنەوە بەخۆکاریبڕۆدواوەڕێچکەی بنچینە:گشتی بۆ پێشەوە بهێنەگەڕانهەڵوەشاندنەوەهەڵوەشاندنەوە…ناتوانرێت پێڕستی کاتی دروست بکرێت.ناتوانرێت پرۆگرام جێبەجێ بکرێت: %sسازکاریی &کەتەلۆگەکانسازکاریی &کەتەلۆگەکانگۆڕینی زمانKoma tîpan (Charset):پشکنین بۆ نوێکردنەوە…پاککردنەوەسڕینەوەی وەرگێڕانسڕینەوەی وەرگێڕانداخستنکۆکردنەوەی پەڕگەکانی سەرچاوە…لێدوان:فایلە وەرگێڕدراوە بەراوردکراوەکاندڵنیاییپێدانلەبەرگرتنەوەلەبەرگرتنەوەی لە دەقی ژێدەرەکەوەلەبەرگرتنەوەی لە دەقی ژێدەرەکەوەدروستکردنی وەرگێڕانی نوێدروستکردنی پرۆژەیەکی نوێی وەرگێڕانهەڵەی CrowdinCtrl+بڕ&ینڕێکخستنی شریتی ئامرازەکان…بڕینسڕینەوەسڕینەوەی دەرهێنەرسڕینەوەی لێدوانسڕینەوەی پرۆژەکەپێڕستەکان:دەتەوێت هەموو ئەو وەرگێڕانە لاببەیت کە چیتر بەکارنایەن؟پاشەکەوتی مەکەDon’t Show Againدووبارە پیشانی مەدەرەوەدوگمەی خوارەوەدابەزاندنی دوایین وەرگێرانەکان…لە پڕۆژەیەدا دابەزاندنی وەڕگێرانەکان لەکار خراوە.چوو&نەدەرەوەدەستکاریکردندەستکاریکردنی &لێدواندەستکاریکردنی &لێدواندەستکاریکردنی لێدواندەستکاریکردنی لێدواندەستکاریکردنی پرۆژەدەستکاریکردنی پرۆژەکەدەستکاریکردنپۆستی ئەلکترۆنی:Enterپڕ بە شاشەهەڵە هەیە لە کردنەوەی فایلداهەموو شتێکهەناردن وەکو...هەناردەکردنی وەرگێڕانەکان...دەرهێنانی دەق لە پەڕگەکانی ژێدەرەوە لە پێڕستەکانی دادێ:دەرهێنانی ئەو ڕیزبەندانەی شیاون بۆ وەرگێڕان…دەهێنەرەکانفەرمان سەرکەوتوو نەبوو: %sنەتوانرا فایلەکە لەگەڵ وەرگێڕانە دەرهێندراوەکان بخوێندرێنەوە.لکاندنی کەتەلۆگەکان سەرکەوتوو نەبوو.پەڕگەپەڕگەی "%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جێگۆڕینڕێکخستنەوەسفرکردنەوەی بیرگەی وەرگێڕانچاو پیاخشاندنەوەڕاستپاشەکەوت کردنپاشەکەوتکردن وەکپاشەکەوت کردن وەکو…پاشەکەوت کردنی گۆڕانکارییەکاندیاریکردنی &هەموویدیاریکردنی هەموویپێڕست دەستنیشان بکەزمانی پەسەندکراوت دەستنیشان بکەڕێکخستنی زمانڕێکخستنی زمانShift+هەمووی پیشان بدەپیشاندانی لاتەنیشتپیشاندانی شریتی دۆخپیشاندانی شریتی ئامرازەکانپیشاندان و شارنەوەی لاتەنیشتپیشاندانی لاتەنیشتپیشاندانی شریتی دۆخلاتەنیشتچونەژوورەوەدەرچوونچونەژوورەوەCrowdin چونەژوورەوە بۆدەرچوونتاکڕێکخستن بەپێی &ڕیزی پەڕگەڕێکخستن بەپێی &ژێدەرڕێکخستن بەپێی &وەرگێڕانڕێکخستن بەپێی &ڕیزی پەڕگەڕێکخستن بەپێی &ژێدەرڕێکخستن بەپێی &وەرگێڕانهێڵکاری کۆدی ژێدەر:کۆدی سەرچاوە کراوە بوونی نیە.دەقی ژێدەرسەرچاوەی دەق — %sژێدەرەکانی کلیلەوشەژێدەرەکانی ڕێچکەکاندەنگهەڵەگری زمانەوەانی ناچالاکە چونکە فەرهەنگ نامە بۆ %s دانەمەزراوە.قسە بکەراوەستاندنی قشەکردنCrowdin هاوکاتکردن لەگەڵ هاوکاتگەریهەڵە ڕوویدا لە هاوکاتکردنهەماهەنگ کردن لەگەڵ Crowdin سەرکەوتوو نەبوو.هەڵەی ڕستەکار لە ناوونیشانی فۆڕمی کۆ ("%s").TMوەرگێڕانەکە ئامادەیە بۆ بەکارهێنان.کێشەیەک ڕوویدا لە کاتی بەمەرجکردنی پەڕگەکە(بەڵام هەرچۆنێک بێت پاشەکەوتکرا).ئەمە هاوپێچ دەکرێت بۆ دێڕی فەرمان تەنیا ئەگەر کۆدی هێڵکاریی ژێدەر درابوو. %c فرااوانی دەکات بۆ نرخی هێڵکاریی.ئەمە هاوپێچ دەکرێت بۆ دێڕی فەرمی یەکجار بۆ هەر پەڕگەیەکی تێچوو. %f فراوانی دەکات بۆ ناوی پەڕگە.ئەمە هاوپێچ دەکرێت بۆ دێڕی فەرمی یەکجار بۆ هەر کلیلەوشەیەک. %k فراوانی دەکات بۆ کلیلەوشەکە.هەموووەرگێڕدراو: %d لە %d (%d %%)وەرگێڕانەکانزمانی وەرگێڕانبیرگەی وەرگێڕانوەرگێڕان — %sدووUTF-8 (پێشنیارکراو)پووچکردنەوەUnix (پێشنیارکراو)دوگمەی سەرەوەنوێکردنەوەنوێکردنەوەی هەموونوێکردنەوەی هەموو کەتەلۆگەکان لە پرۆژەکەکورتە نوێ بکەرەوەنوێکردنەوەنوێکردنەوە سەرکەوتو نەبوونوێکردنەوەی وەرگێڕانەکاننوێکردنەوەی زانیارییەکانی بەکارهێنەر…بەرزکردنەوەی وەرگێران…بەکارهێنانی فۆنتی تایبەتی:ئەم کلیلەوشانە بەکاربهێنە(ناوی نەخشەکان) بۆ ناسینەوەی ئەو زنجیرەنووسانەی دەتوانرێت وەربگێڕدرێت لە پەڕگەکانی ژێدەرەکە:وەشان %sچاوەڕوانی ڕێگەپێدانبە…Poedit بەخێربێیت بۆتەنیا گشت وشەکانپەنجەرەWindowsپەڕگەی وەرگێڕانی XLIFFبەڵێپێویستە دووبارە Poedit دەستپێبکەیتەوە بۆ ئەوەی گۆڕانکارییەکان شوێنی خۆیان بگرن.ناوی تۆگۆڕانکارییەکانت دەفەوتێت ئەگەر پاشەکەوتی نەکەیت.ناوەکەت و پۆستی ئەلکترۆنییەکەت تەنها بۆ ئەوە بەکاردێت کە کۆتا-وەرگێڕ دیاریدەکات لە پەڕگەی وەرگێڕان.سفرنزیکخستنەوەaltپێویستی بە دەستکارییەctrlپەڕگە کاتییەکان مەسڕەوە(بۆ ڕاستکردنەوە)هەڵسوکەوت بکە لەگەڵ poedit:// URIshiftزمانی نەزانراو“%s' پەڕگەیەکی دروستی POT نییە.poedit-3.5/locales/cs.mo0000644000175100001770000016700014664354153012174 00000000000000|+: : :&:?:<S::J:g: V;`; o;y; ;;;;;;;;;;;;;;<<<0<B<H<M<U<]<o<<< < <<<< <<<<==0=L=R=X=a=g=p== = = ====>>7>N>e>k>p>>>>>> ? ???'?0? 4? @? L?Y? h?t? ? ?? ?? ???@@&@F@c@@ @ @1@@'@A.A HASA7YA6AA)AB B]"BB<BDB$C:C ACNCC C"CD+"D)ND xDDDDDDDDEE#4EXEmE|E EE EEEEEE%EF +FLFTF]FuF FF/F FkFXG]GpGGGG-G1G.H GHRH)iHH HYHI!I&I9ILIaIeI|IIIIIII;J CJ'PJ^xJLJ?$K dK rKK*KKK"K5K.LILdLjL}L L L L L LLLLLLLfMlMMuM(N?NRN"dNN NNN N NNN0N'OAO#VO<zO"OO OO*P03P!dP'PPPP(PTQ fQtQ yQ QQQQQ Q Q Q RR!R0RJRRRcR lRxR RRR R RRRRRRSz/TT TTT TT U2(U[UuU|UUU UU U U V!V&V;^D^Y^n^^^._4_J_=P__1__n_E[```;` ` aa@,amacb,#c,Pc}c cc2c*c ddwdj$e eeee%ee ff3fEfWf qffffffff8f g gg$g ,g 8g DgRg"Yg"|gg g gg g(ghhz'hhhhh h h h hh h i i i ,i 8iCi^ioi"iiii i ij jj$j -j:jTjdjtj j jjjj jjj!k *k8k@kHkQk Ykgkkkkkk k k kk ll.lBlRlgl|lmm 4m@mOmbm smm mmKmmn n%n:nMncn1nn n nn=ioo'p,p(>pgp op}p+pp p8p" q/q@qrCr8brrs8*t1ctRtctQLuu'u:ulvPv-vCwALwKw0w. x:x!x)x-y+Cy8oyCyuy,bzLz;z]{v{Z{gW|J|c }[n}o}:~7~m_[HN^Xp ف72("[~~łqDɃRVj o ȄЄӄ ڄ"$-F_p<Ѕ #$@eˆ#V cz ч. ;GPhHl5m7Y 3aω16;?\.a ͊ 1J!Z| > KPY/ڍ!j   ) <FMU ^ ht| Ԑ  (4 ; EPbtx|  Ǒӑ6OV fp y ˒ ْ$$"4"Wz !ד'%:` o |”Ք':Wj}ƕ ""5XvA,%#8\c)l,/×0$*d<DJ$M r}E L/Y!56/CW jx"؛+4IQbr'Ĝ3! B M&Y"Nʝ $ Ş ߞ ;3Z6şޟ($0 U]cǠР (<Cbs=ˡ "m8Q8 1 =H8`)7&&@gnȤۤ l8ĥ=m)զ)%*:O bp/̧")@82y ¨ͨ%8-@2n(۩ej|Ҫ ' 5CUg  ˫ ֫ $8]`&­ R\w  ή.=B%]% ïЯ ,'Tt*ð 7SAZ<0ٲ.!A R_ y.ճ&2M]t+\Ե1/KB{1+9;u"ʸ*1Ml} ӹ 6Ld!H'p,}лDND :,-g(^$ҿ|.a#}Fg , 7ET,m )BS\ez :  / E Q3[3 26>[  (9JZ jw 6Rl  -EWq% )$Nbs $$  $!.Pap"!"!%?Y!0?Tj{U1Ibw. Hxq!&7F I=U)>Q LV+#'VKlYi -yXR%H?GZ*!=#-(Q*z&,Cs=6J93dmU\gFxaQ{,;zzG~A H U`}>78$ph\gk#  )$*Ny! 4@]T&, >Y$r++wg (/"'R zQ:g0? 2r+'$&7^'v #45nCv#=ld B@Twa QjqO 91B)aT'ZSFQYu>"/VJZsG6*[ar`^;XyVb?' <IL:x%AMZ\W88O,*d0)i{J-yK|]:c%}oo0][-Pg6YS&r(\p@X(tM?iE=eD"OU|53 w  fj,#32H 4[ pk {qke;mpgl16U85:`, +Y^L9$qz2fGu(A7N4!d0DNt{F<x_+7vX)nKG+>&9m3 LeUIN Iy E"nsk/<W>PhrVvT]cQmuR$bjD !_@xEl%WK-_7MCwbz/|gcAB` zh~?SC^*tf=\h!H'P#RiF&;$H1~.2 RsJo}.} .~ (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd AccountAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add accountAdd 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 languagesAlt+Always 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 errorCrowdin is an online localization management platform and collaborative translation tool.Ctrl+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 againDownDownloading 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:EnterEnter 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 loading translation file “%s”.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export errorExport 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…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)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport from TMX…Import translation files…Importing translation memory from “%s” 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 CrowdinLeftLine %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 translations were found in the TMX file.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKObsolete stringsOneOnly 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 translation templateOpen...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 translationsQuitQuit %sReading file content failed with the following error: %sRecentRecent 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 FinderReviewRightSaveSave &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 languageServicesSet LanguageSet languageSettingsSettings…Shift+Show AllShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow summary after updating filesShow 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.These strings are no longer in the source code. Poedit will remove them from the file now.These strings were found in the sources but were not in the file. Poedit will add them to the file now.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 entries in the file are probably incorrect.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 errorUntransUpUpdateUpdate 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 the file failed. Click on 'Details >>' for details.Updating 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown 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: 2024-08-30 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 chybNalezen %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át&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(0 nových, 0 odstraněných)(další informace o GNU gettext)(Nové: %i, zastaralé: %i)(výchozí jazyk)(napřihlášený)(vyžaduje Windows 8 nebo novější)< &PředchozíO aplikaci %sÚčetÚčtyPřidatPřidat účetPřidat komentářPřidat soubory…Přidat složky…Přidat projektPřidat zástupný řetězec…Přidat účetPř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é jazykyAlt+Vždy zaměřovat vstupní pole pro překladPoložka seznamu vstupních souborů:Položka seznamu klíčových slov:VzhledPoužítOpravdu 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 lokalizace a nástroj pro spolupráci při překladu.Ctrl+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.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ě nezobrazovatDolůStahová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:EnterZobrazit 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 načítání souboru překladu „%s“ došlo k chybě.Při otevírání souboru došlo k chyběChyba při ukládání souboruChyba při načítání souboru XLIFF: %sChybyVšeIgnorovat cestyExportovat do TMX…Exportovat jako…Chyba exportuE&xportovat do HTML…Exportovat do TMX…Export 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ů…Nastavení extraktoruExtraktoryPříkaz selhal: %sNelze komunikovat s procesem Poeditu.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.Dokončování…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á)ČastéGNU gettextObecnéSoubory HTMLNápovědaSkrýt %sSkrýt ostatníSkrý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ů…Chyba importuImportovat z TMX…Importovat soubory překladů…Import překladové paměti z „%s“ selhal.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í:Soubory 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 CrowdinDolevaŘá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ý z &POT/PO souboru…Nové řetězceDalší 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.V souboru TMX nebyly nalezeny žádné překlady.Žá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řekladateleOKOdstraněné řetězceJedenPovolte 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éVybrat šablonu překladuOtevří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čitUkončit %sČtení obsahu souboru selhalo s následující chybou: %sPosledníNedávné souboryZnovuAktualizovatZnovu načíst souborZnovu načíst souborZbývá: %dOdstranitOdstranit překlady identické se zdrojovým textemOdstranit překlady identické se zdrojovým textemNahraditN&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 FinderuZkontrolovatDopravaUložitUložit j&ako…Uložit j&ako…Přesto uložitPřesto uložitUložit jakoUložit jako…Uložit změnyUložit souborSní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ý jazykSlužbyNastavit jazykNastavit jazykNastaveníNastavení…Shift+Zobrazit všeZobrazit 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ůPo aktualizaci souborů zobrazit shrnutí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ězecNá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“ 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í.Tyto řetězce již nejsou ve zdrojovém kódu. Poedit je nyní ze souboru odstraní.Tyto řetězce se vyskytují ve zdrojácích, ale nejsou v souboru. Poedit je nyní do souboru přidá.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řekladuPoložky překladu v souboru jsou pravděpodobně nesprávné.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ětDošlo k neošetřené výjimce: %sUnix (doporučeno)Neznámá chyba Crowdinu.Neznámá chybaNepřeložNahoruAktualizovatAktualizovat 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 souboru se nezdařila. Klikněte na 'Podrobnosti >>' pro získání podrobností.Aktualizace 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 %sČekání na ověření…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ů XLIFFAnoPř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 velikostaltVyžaduje úpravyctrlnemazat dočasné soubory (kvůli ladění)například nplurals=2; plural=(n > 1);použít podobné položky v souborupřejít na položku na daném řádkuzpracovat poedit:// URIpřed-přeložit z překladové pamětishiftneznámý jazyknepodporovaná verze (%s)vy@example.czPOT soubor „%s“ je poškozený.poedit-3.5/locales/sq.po0000644000175100001770000020311014664354065012210 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "Fshihe këtë mesazh njoftimi" msgid "Don’t Show Again" msgstr "Mos e Shfaq Sërish" msgid "Don’t show again" msgstr "Mos e shfaq sërish" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(Të rinj: %i, të vjetruar: %i)" msgid "Collecting source files…" msgstr "Po grumbullohen kartela burim…" msgid "Extracting translatable strings…" msgstr "Po përftohen vargje të përkthyeshëm…" msgid "Failed to load file with extracted translations." msgstr "S’u arrit të ngarkohej kartela me përkthimet e përftuara." msgid "Merging differences…" msgstr "Po përzihen dallimet…" msgid "Updating translations" msgstr "Përditësim kartelash përkthimi" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "Kartela “%s” s’u hap dot." msgid "Invalid file" msgstr "Kartelë e pavlefshme" #, c-format msgid "Malformed header: “%s”" msgstr "Krye e keqformuar: “%s”" msgid "PO Translation Files" msgstr "Kartela Përkthimi PO" msgid "POT Translation Templates" msgstr "Gjedhe Përkthimi POT" msgid "XLIFF Translation Files" msgstr "Kartela XLIFF Përkthimi" msgid "JSON Translation Files" msgstr "Kartela JSON Përkthimi" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "Kartela Flutter Përkthimi" msgid "All Translation Files" msgstr "Krejt Kartelat e Përkthimit" msgid "The file is in a format not recognized by Poedit." msgstr "Kartela është në një format jo të njohur nga Poedit." 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." #, 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" #, 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." #, c-format msgid "Couldn’t save file %s." msgstr "S’u ruajt dot kartela %s." msgid "Screenshots:" msgstr "Foto ekrani:" #, 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." #, 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)." 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" 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" msgid "Couldn’t load the file, it is probably damaged." msgstr "S’u ngarkua dot kartela, ka gjasa të jetë dëmtuar." 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." 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)." #, 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." msgid "Error saving file" msgstr "Gabim në ruajtje kartele" #, c-format msgid "“%s” is not a valid POT file." msgstr "“%s” s’është kartelë POT e vlefshme." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Gabim teksa ngarkohej kartelë XLIFF: %s" #, 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 msgid "Broken markup in translation string." msgstr "Markup i dëmtuar në varg përkthimi." msgid "(Use default language)" msgstr "(Përdor gjuhë parazgjedhje)" msgid "Language selection" msgstr "Përzgjedhje gjuhe" msgid "Select your preferred language" msgstr "Përzgjidhni gjuhën tuaj të parapëlqyer" msgid "You must restart Poedit for this change to take effect." msgstr "Duhet të rinisni Poedit-in, pa të hyjnë në fuqi ndryshimet." msgid "Add Account" msgstr "Shtoni Llogari" msgid "Add account" msgstr "Shtoni llogari" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "Mësoni më tepër rreth %s" 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." msgid "How does cloud sync work?" msgstr "Si funksionon njëkohësimi me renë?" msgid "Account" msgstr "Llogari" msgid "(not signed in)" msgstr "(pa bërë hyrjen)" msgid "File" msgstr "Kartelë" msgid "Open cloud translation" msgstr "Hapni përkthim në re" msgid "Manage accounts" msgstr "Administroni llogari" msgid "Project:" msgstr "Projekt:" msgid "Language:" msgstr "Gjuhë:" msgid "Sign in to Cloud Account" msgstr "Hyni në Llogari Reje" msgid "Sign in to cloud account" msgstr "Hyni në llogari reje" msgid "No translation projects listed in your account." msgstr "Në llogarinë tuaj s’ka projekte përkthimi." 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" #, c-format msgid "Sign in to %s" msgstr "Bëni hyrjen në %s" msgid "Syncing" msgstr "Njëkohësim" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, 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. #, c-format msgid "Uploading translations to %s failed." msgstr "Ngarkimi i përkthimeve në %s dështoi." msgid "Syncing error" msgstr "Gabim njëkohësimi" msgid "Add" msgstr "Shtoje" msgid "Unknown Crowdin error." msgstr "Gabim Crowdin i panjohur." msgid "Not authorized, please sign in again." msgstr "Jo i autorizuar, ju lutemi, ribëni hyrjen." msgid "Downloading translations is disabled in this project." msgstr "Shkarkimi i përkthimeve është i çaktivizuar për këtë projekt." msgid "Sign In" msgstr "Hyni" msgid "Sign in" msgstr "Hyni" msgid "Sign Out" msgstr "Dilni" msgid "Sign out" msgstr "Dilni" msgid "Learn more about Crowdin" msgstr "Mësoni më tepër mbi Crowdin-in" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" "Crowdin-i është një platformë internetore administrimi përkthimesh dhe një " "mjet përkthimi në bashkëpunim." msgid "Waiting for authentication…" msgstr "Po pritet për mirëfilltësim…" msgid "Updating user information…" msgstr "Po përditësohen të dhëna mbi përdoruesin…" msgid "Sign in to Crowdin" msgstr "Hyni në Crowdin" msgid "Syncing with Crowdin failed." msgstr "Njëkohësimi me Crowdin-in dështoi." msgid "Crowdin error" msgstr "Gabim Crowdin-i" msgid "Uploading translations…" msgstr "Po ngarkohen përkthime…" msgid "&Copy" msgstr "&Kopjoje" msgid "Learn more" msgstr "Mësoni më tepër" msgid "&Help" msgstr "&Ndihmë" msgid "MO files can’t be directly edited in Poedit." msgstr "Kartelat MO s’mund të përpunohen drejt e në Poedit." msgid "Error opening file" msgstr "Gabim gjatë hapjes së kartelës" msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "Ju 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." msgid "don’t delete temporary files (for debugging)" msgstr "mos fshi kartela të përkohshme (për diagnostikim)" msgid "handle a poedit:// URI" msgstr "trajto një URI poedit://" msgid "go to item at given line number" msgstr "shko tek objekti në rreshtin me numrin e dhënë" msgid "Failed to communicate with Poedit process." msgstr "S’u arrit të komunikohej me procesin Poedit." #, c-format msgid "Unhandled exception occurred: %s" msgstr "Ndodhi një përjashtim i patrajtuar: %s" msgid "Select translation template" msgstr "Përzgjidhni gjedhe përkthimi" msgid "Select translation file" msgstr "Përzgjidhni kartelë përkthimi" 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." 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." #, c-format msgid "File “%s” is not a translation file." msgstr "Kartela “%s” s’është kartelë përkthimesh." #, c-format msgid "File “%s” doesn’t exist." msgstr "Kartela “%s” s’ekziston." 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". #, 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." msgid "Install" msgstr "Instaloje" #, c-format msgid "The file “%s” has been changed by another application." msgstr "Kartela “%s” është ndryshuar nga një tjetër aplikacion." msgid "Reload file" msgstr "Ringarkoje kartelën" 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." msgid "Ignore" msgstr "Shpërfille" msgid "Reload File" msgstr "Ringarkoje Kartelën" msgid "The file has been modified. Do you want to save changes?" msgstr "Kartela është ndryshuar. Doni të ruhen ndryshimet?" msgid "Save changes" msgstr "Ruaji ndryshimet" msgid "Your changes will be lost if you don’t save them." msgstr "Ndryshimet tuaja do të humbasin, nëse s’i ruani." msgid "Save" msgstr "Ruaje" msgid "Do&n’t save" msgstr "&Mos e ruaj" msgid "Don’t Save" msgstr "Mos e Ruaj" 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." msgid "Cancel" msgstr "Anuloje" msgid "Save Anyway" msgstr "Ruaje, Sido Qoftë" msgid "Save anyway" msgstr "Ruaje, sido qoftë" msgid "Save as…" msgstr "Ruajeni si…" msgid "Compile to…" msgstr "Përpiloje te…" msgid "Compiled Translation Files" msgstr "Kartela Përkthimi të Përpiluara" msgid "Export to HTML…" msgstr "Eksportojeni si HTML…" msgid "HTML Files" msgstr "Kartela HTML" #, c-format msgid "In: %s" msgstr "Te: %s" msgid "Source code not available." msgstr "Pa kod burim të gatshëm." msgid "Updating failed" msgstr "Përditësimi dështoi" msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the 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." msgid "Permission denied." msgstr "Leje e mohuar." 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. 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. 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." msgid "Translation entries in the file are probably incorrect." msgstr "Ka mundësi të ketë zëra të pasaktë përkthimi te kartela." msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "Përditësimi i katalogut dështoi. Për hollësi, klikoni te 'Hollësi >>'." msgid "Open translation template" msgstr "Hapni gjedhe përkthimi" #, 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." msgid "Validation results" msgstr "Përfundime vleftësimi" msgid "" "Entries with errors were marked in red in the list. Details of the error " "will be shown when you select such an entry." msgstr "" "Zërat me gabime janë shënuar me të kuqe te lista. Hollësitë e gabimit do të " "shfaqen pasi të keni përzgjedhur një zë të tillë." msgid "The file was saved safely." msgstr "Kartela u ruajt pa cen." 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." 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." 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." 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." msgid "No problems with the translation found." msgstr "S’u gjetën probleme me përkthimin." #, c-format msgid "The translation is ready for use, but %d entry is not translated yet." msgid_plural "" "The translation is ready for use, but %d entries are not translated yet." msgstr[0] "" "Përkthimi është gati për përdorim, por %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." msgid "The translation is ready for use." msgstr "Përkthimi është gati për përdorim." #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "Poedit-i ndreqi vetvetiu lëndë të pavlefshme te kartela “%s”." msgid "" "The file contained duplicate items, which is not allowed in PO files and " "would prevent the file from being used. Poedit fixed the issue, but you " "should review translations of any items marked as 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." msgid "Language of the translation isn’t set." msgstr "S’është caktuar gjuha e përkthimit." msgid "Set Language" msgstr "Caktoni Gjuhën" 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)." 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." msgid "Language of the translation is the same as source language." msgstr "Gjuha e përkthimit është e njëjtë me gjuhën burim." msgid "Fix Language" msgstr "Ndreqeni Gjuhën" msgid "Fix language" msgstr "Ndreqeni gjuhën" msgid "" "This 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." 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" msgid "Required header Plural-Forms is missing." msgstr "I mungon krye e domosdoshme Plural-Forms." #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Gabim sintakse te kryet Plural-Forms (\"%s\")." msgid "Fix the Header" msgstr "Ndreqni Kryet" 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". #, 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.")" msgid "Review" msgstr "Shqyrtojeni" msgid "Would you like to use English for source text?" msgstr "Doni të përdoret anglishtja për tekst burim?" #, 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" msgid "Load English" msgstr "Ngarko anglishten" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Të përkthyera: %d nga %d (%d %%)" #, c-format msgid "Remaining: %d" msgstr "Të mbetura: %d" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d gabim" msgstr[1] "%d gabime" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d zë" msgstr[1] "%d zëra" msgid " (unsaved)" msgstr " (i paruajtur)" msgid " (modified)" msgstr " (i ndryshuar)" #, c-format msgid "Failed to update translation memory: %s" msgstr "S’u arrit të përditësohej kujtesë përkthimesh: %s" msgid "Remove same-as-source translations" msgstr "Hiq përkthime njësoj-me-burimin" 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?" 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." msgid "Keep" msgstr "Mbaji" msgid "Remove" msgstr "Hiqi" msgid "Purge deleted translations" msgstr "Spastroji përkthimet e fshira" 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ë?" 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." msgid "Purge" msgstr "Spastroji" msgid "Copy from source text" msgstr "Kopjoje prej teksti burim" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "Spastroje përkthimin" msgid "Clear Translation" msgstr "Spastroje Përkthimin" msgid "Edit comment" msgstr "Përpunoni koment" msgid "Edit Comment" msgstr "Përpunoni Komentin" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "Hasje Në Kod" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "Hasje në kod" msgid "Hide Sidebar" msgstr "Fshihe Anështyllën" msgid "Show Sidebar" msgstr "Shfaqe Anështyllën" msgid "Hide Status Bar" msgstr "Fshihe Shtyllën e Gjendjeve" msgid "Show Status Bar" msgstr "Shfaqe Shtyllën e Gjendjeve" msgid "String length in characters: translation | source" msgstr "Gjatësi vargu në shenja: përkthim | burim" msgid "String length in characters" msgstr "Gjatësi vargu në shenja" msgid "Source text" msgstr "Teksti burim" msgid "Singular" msgstr "Njëjës" msgid "Plural" msgstr "Shumës" msgid "Translation" msgstr "Përkthim" msgid "Pre-translated" msgstr "Përkthyer paraprakisht" 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. msgid "Needs work" msgstr "Lyp punë" 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." msgid "Create new translation" msgstr "Krijoni përkthim të ri" 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 msgid "Source text ID" msgstr "ID teksti burim" msgid "Everything" msgstr "Gjithçka" #, c-format msgid "Form %i" msgstr "Forma %i" #, c-format msgid "Form %i (unused)" msgstr "Formular %i (i papërdorur)" msgid "Zero" msgstr "Zero" msgid "One" msgstr "Një" msgid "Two" msgstr "Dy" msgid "Other" msgstr "Tjetër" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, c-format msgid "String context: %s" msgstr "Kontekst vargu: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #, c-format msgid "String identifier: %s" msgstr "Identifikues vargu: %s" #, c-format msgid "%s Format" msgstr "Format %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "Format %s" #, c-format msgid "Translation — %s" msgstr "Përkthim — %s" msgid "ID" msgstr "ID" #, c-format msgid "Source text — %s" msgstr "Teksti burim — %s" msgid "unknown language" msgstr "gjuhë e panjohur" #, c-format msgid "Network error: %s (%d)" msgstr "Gabim rrjeti: %s (%d)" msgid "Unknown error" msgstr "Gabim i panjohur" #, c-format msgid "Failed command: %s" msgstr "Urdhri që dështoi: %s" msgid "Failed to merge gettext catalogs." msgstr "S’u arrit të përziheshin katalogë gettext." msgid "Open in Editor" msgstr "Hape në Përpunues" msgid "Open in editor" msgstr "Hape në përpunues" 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." msgid "No usage information" msgstr "S’ka të dhëna përdorimi" #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d hasje në kod" msgstr[1] "%d hasje në kod\t" msgid "Source code not found" msgstr "S’u gjet kod burim" 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." msgid "File cannot be opened" msgstr "Kartela s’hapet dot" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "Poedit-i s’qe në gjendje të hapë kartelën “%s”." msgid "Find" msgstr "Gjej" msgid "Replace" msgstr "Zëvendësoje" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "Mundësi" msgid "Ignore case" msgstr "Shpërfille shkrimin me të madhe/me të vogël" msgid "Wrap around" msgstr "Mbështille" msgid "Whole words only" msgstr "Vetëm fjalë të plota" msgid "Find in source texts" msgstr "Gjej në tekste burim" msgid "Find in translations" msgstr "Gjej në përkthime" msgid "Find in comments" msgstr "Gjej në komente" msgid "Close" msgstr "Mbylle" msgid "Replace &All" msgstr "Zëvendësoji &Krejt" msgid "Replace &all" msgstr "Zëvendësoji &krejt" msgid "&Replace" msgstr "&Zëvendësoje" msgid "< &Previous" msgstr "< I &mëparshmi" msgid "&Next >" msgstr "&Pasuesi >" msgid "String to find" msgstr "Varg për t’u gjetur" msgid "Replacement string" msgstr "Varg zëvendësimi" #, c-format msgid "Cannot execute program: %s" msgstr "S’përmbushet dot programi: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "Emër ose kode gjuhe" msgid "Translation Language" msgstr "Gjuhë Përkthimi" msgid "Language of the translation:" msgstr "Gjuha e përkthimit:" msgid "All strings" msgstr "Krejt vargjet" msgid "Couldn’t download Localazy project details." msgstr "S’u shkakrkuan dot hollësi projekti Localazy." msgid "There was an error when uploading translations to Localazy." msgstr "Pati një gabim, teksa ngarkoheshin përkthime te Localazy." msgid "Projects" msgstr "Projekte" 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." msgid "Add Project" msgstr "Shtoni Projekt" msgid "Add project" msgstr "Shtoni projekt" msgid "Poedit - Catalogs manager" msgstr "Poedit - Përgjegjës katalogësh" msgid "Edit…" msgstr "Përpunoni…" msgid "Create new translations project" msgstr "Krijoni projekt të ri përkthimi" msgid "Delete the project" msgstr "Fshije projektin" msgid "Edit the project" msgstr "Përpunoni projektin" msgid "Update all" msgstr "Përditësoji krejt" msgid "Update all catalogs in the project" msgstr "Përditëso tërë katalogët në projekt" msgid "Total" msgstr "Gjithsej" msgid "Untrans" msgstr "Papërkth" msgctxt "column/row header" msgid "Needs Work" msgstr "Lyp Punë" msgid "Errors" msgstr "Gabime" msgid "Last modified" msgstr "Ndryshuar së fundi" msgid "Select directory" msgstr "Përzgjidhni drejtori" msgid "Directories:" msgstr "Drejtori:" msgid "" msgstr "" #, c-format msgid "Do you want to delete project “%s”?" msgstr "Doni të fshihet projekti “%s”?" msgid "Delete project" msgstr "Fshije projektin" msgid "Deleting the project will not delete any translation files." msgstr "Fshirja e projektit s’do të fshijë ndonjë kartelë përkthimi." msgid "Confirmation" msgstr "Ripohim" msgid "Update all catalogs in this project?" msgstr "Të përditësohen krejt katalogët në këtë projekt?" 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." msgid "Check for Updates…" msgstr "Kontrollo për Përditësime…" msgid "Catalogs Manager" msgstr "Përgjegjës Katalogësh" msgid "&Preferences…" msgstr "&Parapëlqime…" msgid "&Edit" msgstr "&Përpunoni" msgid "Undo" msgstr "Zhbëje" msgid "Redo" msgstr "Ribëje" msgid "Paste and Match Style" msgstr "Ngjite dhe Përputhi Stilin" msgid "Delete" msgstr "Fshije" msgid "Spelling and Grammar" msgstr "Drejtshkrim dhe Gramatikë" msgid "Show Spelling and Grammar" msgstr "Shfaq Drejtshkrim dhe Gramatikë" msgid "Check Document Now" msgstr "Kontrolloje Dokumentin Tani" msgid "Check Spelling While Typing" msgstr "Kontrolloji Drejtshkrimin Teksa Shtypet" msgid "Check Grammar With Spelling" msgstr "Kontrollojini Gramatikën Me Drejtshkrimin" msgid "Correct Spelling Automatically" msgstr "Ndreqe Vetvetiu Drejtshkrimin" msgid "Substitutions" msgstr "Zëvendësime" msgid "Show Substitutions" msgstr "Shfaq Zëvendësime" msgid "Smart Copy/Paste" msgstr "Kopjim/Ngjitje e Mençur" msgid "Smart Quotes" msgstr "Thonjëza të Mençura" msgid "Smart Dashes" msgstr "Vija Ndarëse të Mençura" msgid "Smart Links" msgstr "Lidhje të Mençura" msgid "Text Replacement" msgstr "Zëvendësim Teksti" msgid "Transformations" msgstr "Shndërrime" msgid "Make Upper Case" msgstr "Kaloje në Shkronja të Mëdha" msgid "Make Lower Case" msgstr "Kaloje në Shkronja të Vogla" msgid "Capitalize" msgstr "Shkronja e parë e madhe" msgid "Speech" msgstr "E folur" msgid "Start Speaking" msgstr "Filloni të Folurën" msgid "Stop Speaking" msgstr "Ndalni të Folurën" msgid "&View" msgstr "&Parje" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Show Toolbar" msgstr "Shfaq Panelin" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Customize Toolbar…" msgstr "Përshtateni Panelin…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Enter Full Screen" msgstr "Kaloni Në Gjendjen Sa Krejt Ekrani" msgid "Window" msgstr "Dritare" msgid "Minimize" msgstr "Minimizoje" msgid "Zoom" msgstr "Zoom" msgid "Welcome to Poedit" msgstr "Mirë se vini te Poedit" msgid "Bring All to Front" msgstr "Sill Gjithçka Përpara" msgid "Information about the translator" msgstr "Të dhëna rreth përkthyesit" msgid "Name:" msgstr "Emër:" msgid "Your Name" msgstr "Emri Juaj" msgid "Email:" msgstr "Email:" msgid "you@example.com" msgstr "ju@example.com" 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." msgid "Editing" msgstr "Përpunim" msgid "Automatically compile MO file when saving" msgstr "Gjatë daljes, përpilo vetvetiu kartelën MO" msgid "Show summary after updating files" msgstr "Pas përditësimesh kartelash, shfaq përmbledhje" msgid "Check spelling" msgstr "Kontrolloji drejtshkrimin" msgid "Always change focus to text input field" msgstr "Ndryshoje përherë fokusin për te fushë futjeje teksti" msgid "" "Never let the list of strings take focus. If enabled, you must use Ctrl-" "arrows for keyboard navigation but you can also type text immediately, " "without having to press Tab to change focus." msgstr "" "Mos e lër kurrë listën e vargjeve të kontrollojë fokusin. Nëse është aktiv, " "duhet të përdorni Ctrl-shigjeta për lëvizje me tastierë, por gjithashtu mund " "të shtypni tekst përnjëherë, pa qenë nevoja të shtypni Tab për të ndryshuar " "fokusin." msgid "Appearance" msgstr "Dukje" msgid "Use custom list font:" msgstr "Përdor shkronja vetjake liste:" msgid "Use custom text fields font:" msgstr "Përdor shkronja vetjake për fusha tekstesh:" 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 msgid "(requires Windows 8 or newer)" msgstr "(lyp Windows 8 ose më të ri)" msgid "General" msgstr "Të përgjithshme" msgid "Use translation memory" msgstr "Përdor kujtesë përkthimesh" msgid "Manage…" msgstr "Administroni…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "Kur përditësohet që nga burimi" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "plotëso përputhje të turbullta nga kartela" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "përkthe paraprakisht prej KP-je" 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ë." msgid "Stored translations:" msgstr "Përkthime të depozituara:" msgid "Database size on disk:" msgstr "Madhësi baze të dhënash në disk:" msgid "Import Translation Files…" msgstr "Importoni Kartela Përkthimi…" msgid "Import translation files…" msgstr "Importoni kartela përkthimi…" msgid "Import From TMX…" msgstr "Importoni Prej TMX…" msgid "Import from TMX…" msgstr "Importoni prej TMX…" msgid "Export To TMX…" msgstr "Eksportoni Në TMX…" 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). msgid "Reset" msgstr "Zeroje" msgid "Select translation files to import" msgstr "Përzgjidhni kartela përkthimi për importim" msgid "Translation Memory" msgstr "Kujtesë Përkthimesh" msgid "Importing translations…" msgstr "Po importohen përkthimet…" #, c-format msgid "Error loading translation file “%s”." msgstr "Gabim gjatë ngarkimit të kartelës së përkthimit “%s”." msgid "Finalizing…" msgstr "Po përfundohet…" msgid "Select TMX files to import" msgstr "Përzgjidhni kartela TMX për importim" msgid "TMX Files" msgstr "Kartela TMX" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "Importimi i kujtesës së përkthimeve nga “%s” dështoi." msgid "Import error" msgstr "Gabim importimi" msgid "Export as…" msgstr "Eksportojeni si…" msgid "Exporting translations…" msgstr "Po eksportohen përkthime…" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "Eksportimi i kujtesës së përkthimeve në “%s” dështoi." msgid "Export error" msgstr "Gabim eksportimi" msgid "Reset translation memory" msgstr "Të zerohet kujtesa e përkthimeve" msgid "Are you sure you want to reset the translation memory?" msgstr "Jeni i sigurt se doni të zerohet kujtesa e përkthimeve?" msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "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. msgid "TM" msgstr "KP" 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." msgid "Custom Extractors:" msgstr "Përftues të Përshtatur:" msgid "Custom extractors:" msgstr "Përftues të përshtatur:" msgid "GNU gettext" msgstr "GNU gettext" 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)." msgid "Delete extractor" msgstr "Fshije përftuesin" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "Jeni i sigurt se doni të fshihet përftuesi “%s”?" msgid "Extractors" msgstr "Përftues" msgid "Accounts" msgstr "Llogari" msgid "Automatically check for updates" msgstr "Kontrollo vetvetiu për përditësime" msgid "Include beta versions" msgstr "Përfshi versione beta" msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "Versionet beta përmbajnë veçoritë dhe përmirësimet më të reja, por mund të " "jenë më pak të qëndrueshme." msgid "Updates" msgstr "Përditësime" msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Këto rregullime prekin formatim të brendshëm të kartelave PO. Prekini nëse " "keni domosdoshmëri specifike, për shembull, për shkak sistemi kontrolli " "versionesh." msgid "Line endings:" msgstr "Funde rreshtash:" msgid "Unix (recommended)" msgstr "Unix (e këshillueshme)" msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "Mbështille në gjatësinë:" msgid "Preserve formatting of existing files" msgstr "Ruaje formatimin e kartelave ekzistuese" msgid "Advanced" msgstr "Të mëtejshme" msgid "Settings" msgstr "Rregullime" msgid "Preparing strings…" msgstr "Po përgatiten vargjet…" msgid "Pre-translating from translation memory…" msgstr "Po bëhet përkthim paraprak prej kujtesës së përkthimeve…" #, 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" msgid "Pre-translating…" msgstr "Parapërkthim…" 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. msgid "Pre-translate" msgstr "Përkthim paraprak" 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." msgid "Cannot pre-translate from unknown language." msgstr "S’mund të bëhet përkthim paraprak prej një gjuhe të panjohur." 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ë." msgid "Only fill in exact matches" msgstr "Plotëso vetëm përputhjet e përpikta" 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." msgid "Don’t mark exact matches as needing work" msgstr "Përputhjeve të përpikta mos u vër shenjë si të lypnin punë" 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." 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." #, 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." 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ë." msgid "No entries could be pre-translated." msgstr "S’u përkthye dot paraprakisht ndonjë zë." 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." msgid "Cancelling…" msgstr "Po anulohet…" msgid "Drag Folders or Files Here" msgstr "Tërhiqni Këtu Dosje ose Kartela" msgid "Drag folders or files here" msgstr "Tërhiqni këtu dosje ose kartela" msgid "Add Folders…" msgstr "Shtoni Dosje…" msgid "Add folders…" msgstr "Shtoni dosje…" msgid "Add Files…" msgstr "Shtoni Kartela…" msgid "Add files…" msgstr "Shtoni kartela…" msgid "Add Wildcard…" msgstr "Shtoni Shenja të Gjithëpushtetshme…" 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) 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" msgid "Show in Explorer" msgstr "Shfaqe në Explorer" msgid "Show in Folder" msgstr "Shfaqe në Dosje" msgid "Paths" msgstr "Shtigje" msgid "Excluded paths" msgstr "Shtigje të përjashtuar" msgid "Advanced extraction settings" msgstr "Rregullime të thelluara përftimesh" msgid "Extract notes for translators from:" msgstr "Përfto shënime për përkthyesin nga:" msgid "Comments prefixed with:" msgstr "Komente të paraprira me:" msgid "All comments" msgstr "Krejt komentet" msgid "Additional xgettext flags:" msgstr "Shenja xgettext shtesë:" msgid "Additional keywords" msgstr "Fjalëkyçe shtesë" msgid "Name of the project the translation is for" msgstr "Emri i projektit për të cilin bëhet përkthimi" msgid "Team name and email address or URL" msgstr "Emër ekipi dhe adresë email ose URL" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "p.sh. nplurals=2; plural=(n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (e këshillueshme)" 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." msgid "Placeholders correctness" msgstr "Saktësi vendmbajtësesh" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "Në përkthim mungon vendmbajtësja “%s”." #, 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." msgid "Plural form translations" msgstr "Përkthime formash shumësi" msgid "Not all plural forms are translated." msgstr "S’janë përkthyer krejt format e shumësit." msgid "Inconsistent upper/lower case" msgstr "Shkronja të mëdha/të vogla jo njësoj" msgid "The translation should start as a sentence." msgstr "Përkthimi duhet të fillojë me një togfjalësh." msgid "The translation should start with a lowercase character." msgstr "Përkthimi duhet të fillojë me një shkronjë të vogël." msgid "Inconsistent whitespace" msgstr "Hapësira të zbrazëta jo njësoj" msgid "The translation doesn’t start with a space." msgstr "Përkthimi nuk fillon me një hapësirë." msgid "The translation starts with a space, but the source text doesn’t." msgstr "Përkthimi fillon me një hapësirë, por jo burimi." msgid "The translation is missing a newline at the end." msgstr "Përkthimit i mungon një simbol rreshti të ri në fund." 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." msgid "The translation is missing a space at the end." msgstr "Përkthimit i mungon një hapësirë në fund." 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." msgid "Punctuation checks" msgstr "Kontrolle pikësimi" #, c-format msgid "The translation should end with “%s”." msgstr "Përkthimi duhet të mbarojë me një “%s”." #, c-format msgid "The translation should not end with “%s”." msgstr "Përkthimi s’duhet të mbarojë me një “%s”." #, 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”." msgid "Cloud" msgstr "Re" msgid "Clear Menu" msgstr "Spastroje Menunë" msgid "Clear menu" msgstr "Spastroje menunë" msgid "Comment:" msgstr "Koment:" msgid "Update" msgstr "Përditësoje" msgid "&Delete" msgstr "&Fshije" msgid "Delete the comment" msgstr "Fshije komentin" msgid "Edit project" msgstr "Përpunoni projekt" msgid "Project name:" msgstr "Emër projekti:" msgid "Browse" msgstr "Shfletoni" msgid "Add directory to the list" msgstr "Shtoni drejtori te lista" msgid "OK" msgstr "OK" msgid "&File" msgstr "&Kartelë" msgid "&New…" msgstr "E &re…" msgid "New from &POT/PO file…" msgstr "E re prej kartele &POT/PO…" msgid "New From &POT/PO File…" msgstr "E re prej Kartele &POT/PO…" msgid "&Open…" msgstr "&Hapni…" msgid "Open Recent" msgstr "Hap Një Nga të Rejat" msgid "Open recent" msgstr "Hap një nga të rejat" msgid "Open cloud translation…" msgstr "Hapni përkthim në re…" msgid "Open Cloud Translation…" msgstr "Hapni Përkthim Në Re…" msgid "&Start window" msgstr "Dritare &nisjeje" msgid "&Start Window" msgstr "Dritare &Nisjeje" msgid "Catalogs &manager" msgstr "&Përgjegjës katalogësh" msgid "Catalogs &Manager" msgstr "&Përgjegjës Katalogësh" msgid "&Close" msgstr "&Mbylle" msgid "&Save" msgstr "&Ruaje" msgid "Save &as…" msgstr "Ruajeni &si…" msgid "Save &As…" msgstr "Ruajeni &Si…" msgid "Compile to MO…" msgstr "Përpilojeni si MO…" msgid "E&xport to HTML…" msgstr "E&ksportoje si HTML…" msgid "Check for updates…" msgstr "Kontrollo për përditësime…" msgid "Settings…" msgstr "Rregullime…" msgid "&Preferences" msgstr "&Parapëlqime" msgid "E&xit" msgstr "&Dil" msgid "Quit" msgstr "Mbylle" msgid "Copy from singular" msgstr "Kopjoje prej njëjësit" msgid "Copy From Singular" msgstr "Kopjoje Prej Njëjësit" msgid "Translation needs &work" msgstr "Përkthimi lyp &punë" msgid "Translation Needs &Work" msgstr "Përkthimi Lyp &Punë" msgid "Edit &comment" msgstr "Përpunoni &koment" msgid "Edit &Comment" msgstr "Përpunoni &Komentin" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "Sugjerime" msgid "&Find…" msgstr "&Gjeni…" msgid "Replace…" msgstr "Zëvendësoni…" msgid "Find next" msgstr "Gjej pasuesin" msgid "Find previous" msgstr "Gjej të mëparshmin" msgid "Find and Replace…" msgstr "Gjeni dhe Zëvendësoni…" msgid "Find Next" msgstr "Gjej Pasuesin" msgid "Find Previous" msgstr "Gjej të Mëparshmin" msgid "Show string &ID" msgstr "Shfaq &ID vargu" msgid "Show String &ID" msgstr "Shfaq &ID Vargu" msgid "Show warnings" msgstr "Shfaq sinjalizime" msgid "Show Warnings" msgstr "Shfaq Sinjalizime" msgid "Sort by &file order" msgstr "Renditi sipas rendi &kartelash" msgid "Sort by &File Order" msgstr "Renditi sipas Rendi &Kartelash" msgid "Sort by &source" msgstr "Renditi sipas &burimesh" msgid "Sort by &Source" msgstr "Renditi sipas &Burimesh" msgid "Sort by &translation" msgstr "Renditi sipas &përkthimesh" msgid "Sort by &Translation" msgstr "Renditi sipas &Përkthimesh" msgid "&Group by context" msgstr "&Grupoji sipas kontekstit" msgid "&Group By Context" msgstr "&Grupoji Sipas Kontekstit" msgid "Entries with errors first" msgstr "Së pari zërat me gabime" msgid "Entries with Errors First" msgstr "Së Pari Zërat me Gabime" msgid "&Untranslated entries first" msgstr "Së pari zërat e &papërkthyer" msgid "&Untranslated Entries First" msgstr "Së Pari Zërat e &Papërkthyer" msgid "&Show code occurrences" msgstr "&Shfaq hasje në kod" msgid "&Show Code Occurrences" msgstr "&Shfaq Hasje Në Kod" msgid "Show sidebar" msgstr "Shfaq anështyllë" msgid "Show status bar" msgstr "Shfaq shtyllë gjendjesh" msgid "&Translation" msgstr "&Përkthim" msgid "&Update from source code" msgstr "&Përditësoje prej kodi burim" msgid "&Update from Source Code" msgstr "&Përditësoje prej Kodi Burim" msgid "Update from &POT file…" msgstr "Përditësojeni prej kartele &POT…" msgid "Update from &POT File…" msgstr "Përditësojeni prej Kartele &POT…" msgid "Sync with Crowdin" msgstr "Njëkohësoje me Crowdin-in" msgid "Pre-&translate…" msgstr "Përkthe p&araprakisht…" msgid "&Validate translations" msgstr "&Vleftësoni përkthime" msgid "&Validate Translations" msgstr "&Vleftësoni Përkthime" msgid "Remove Same-as-Source Translations" msgstr "Hiq Përkthime Njësoj-Me-Burimin" msgid "&Purge deleted translations" msgstr "&Spastroji përkthimet e fshira" msgid "&Purge Deleted Translations" msgstr "&Spastroji Përkthimet e Fshira" msgid "&Properties…" msgstr "&Veti…" msgid "&Go" msgstr "&Lëvizje" msgid "&Done and next" msgstr "&U bë, tjetri" msgid "&Done and Next" msgstr "&U bë, Tjetri" msgid "Previously edited" msgstr "Përpunuar më parë" msgid "Previously Edited" msgstr "Përpunuar Më Parë" msgid "&Previous translation" msgstr "Përkthimi i &mëparshëm" msgid "&Previous Translation" msgstr "Përkthimi i &Mëparshëm" msgid "&Next translation" msgstr "Përkthimi &pasues" msgid "&Next Translation" msgstr "Përkthimi &Pasues" msgid "P&revious unfinished" msgstr "I më&parshmi i pambaruar" msgid "P&revious Unfinished" msgstr "I më&parshmi i Pambaruar" msgid "Ne&xt unfinished" msgstr "Pas&uesi i pambaruar" msgid "Ne&xt Unfinished" msgstr "Pas&uesi i Pambaruar" msgid "Previous plural form" msgstr "Forma e mëparshme e shumësit" msgid "Previous Plural Form" msgstr "Forma e Mëparshme e Shumësit" msgid "Next plural form" msgstr "Forma pasuese e shumësit" msgid "Next Plural Form" msgstr "Forma Pasuese e Shumësit" msgid "&Online help" msgstr "Ndihmë në &Internet" msgid "&Online Help" msgstr "Ndihmë Në &Internet" msgid "&GNU gettext manual" msgstr "Doracaku &GNU gettext" msgid "&GNU gettext Manual" msgstr "Doracaku &GNU gettext" msgid "&About Poedit" msgstr "&Mbi Poedit-in" msgid "&About" msgstr "&Mbi" msgid "Extractor setup" msgstr "Rregullim i përftuesit" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Listë zgjatimesh, të ndarë me pikëpresje (p.sh. *.cpp;*.h):" msgid "Invocation:" msgstr "Thirrje:" msgid "Command to extract translations:" msgstr "Urdhër për përftim përkthimesh:" 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ë)." msgid "An item in keywords list:" msgstr "Një zë në listë fjalëkyçesh:" msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Kjo do t’i bashkëngjitet rreshtit të urdhrave një herë\n" "për çdo fjalëkyç. %k bëhet vlera e fjalëkyçit." msgid "An item in input files list:" msgstr "Një zë në listë futje kartelash:" #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "Kjo do t’i bashkëngjitet rreshtit të urdhrave një herë\n" "për çdo kartelë hyrje. %f bëhet emri i kartelës." msgid "Source code charset:" msgstr "Shkronja kodi burim:" #, 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." msgid "Translation Properties" msgstr "Veti Përkthimesh" msgid "Project name and version:" msgstr "Emër dhe version projekti:" msgid "Language team:" msgstr "Ekip gjuhe:" msgid "Plural forms:" msgstr "Forma shumësi:" msgid "Use default rules for this language" msgstr "Për këtë gjuhë përdor rregullat parazgjedhje" msgid "Use custom expression" msgstr "Përdor shprehje vetjake" msgid "Learn about plural forms" msgstr "Mësoni më tepër rreth formash shumësi" msgid "Charset:" msgstr "Shkronja:" msgid "Advanced Extraction Settings…" msgstr "Rregullime të Thelluara Përftimesh…" msgid "Advanced extraction settings…" msgstr "Rregullime të thelluara përftimesh…" msgid "Translation properties" msgstr "Veti përkthimesh" msgid "Sources Paths" msgstr "Shtigje Burimesh" msgid "Sources paths" msgstr "Shtigje burimesh" msgid "Extract text from source files in the following directories:" msgstr "Përfto tekst prej kartelash burim nga drejtoritë vijuese:" msgid "Base path:" msgstr "Shteg bazë:" msgid "Sources Keywords" msgstr "Fjalëkyçe Burimesh" msgid "Sources keywords" msgstr "Fjalëkyçe burimesh" 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:" msgid "Also use default keywords for supported languages" msgstr "Veç kësaj, përdor fjalëkyçe parazgjedhje për gjuhët e mbuluara" msgid "Learn about gettext keywords" msgstr "Mësoni rreth fjalëkyçesh gettext" msgid "Update summary" msgstr "Përditëso përmbledhjen" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" "Këto vargje u gjetën në burime, por s’qenë te kartela.\n" "Poedit do t’i shtojë te kartela tani." msgid "New strings" msgstr "Vargje të rinj" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" "Këto vargje s’janë më te kodi burim.\n" "Poedit-i do t’i heqë nga kartela tani." msgid "Obsolete strings" msgstr "Vargje të vjetruar" msgid "(0 new, 0 obsolete)" msgstr "(0 të rinj, 0 të vjetruar)" msgid "Open" msgstr "" msgid "Open file" msgstr "Hap kartelë" msgid "Save file" msgstr "Ruaje kartelën" msgid "Validate" msgstr "Vleftësoje" msgid "Check for errors in the translation" msgstr "Kontrolloni për gabime te përkthimi" msgid "Update from code" msgstr "Përditësoje prej kodi" msgid "Update from Code" msgstr "Përditësoje prej Kodi" msgid "Update from source code" msgstr "Përditësoje prej kodi burim" msgid "Sidebar" msgstr "Anështyllë" msgid "Show or hide the sidebar" msgstr "Shfaqni ose fshihni anështyllën" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. msgid "Previous source text" msgstr "Teksti burim i dikurshëm" 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ë." msgid "Notes for translators" msgstr "Shënime për përkthyesit" msgid "Comment" msgstr "Koment" msgid "Add comment" msgstr "Shto koment" msgid "Add Comment" msgstr "Shtoni Koment" msgid "Delete From Translation Memory" msgstr "Fshije Prej Kujtesës së Përkthimeve" msgid "Delete from translation memory" msgstr "Fshije prej kujtesës së përkthimeve" msgid "Translation suggestions" msgstr "Sugjerime përkthimi" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). 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). msgid "No Matches Found" msgstr "S’u Gjetën Përputhje" msgid "This string was found in Poedit’s translation memory." msgstr "Ky varg u gjet në kujtesën e përkthimeve të Poedit-it." 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." 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ë." msgid "The TMX file is malformed." msgstr "Kartela TMX është e keqformuar." msgid "No translations were found in the TMX file." msgstr "S’u gjetën përkthime te kartel TMX." #, 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)." #, c-format msgid "Translation memory error: %s (%d)." msgstr "Gabim kujtese përkthimesh: %s (%d)." msgid "Cannot create temporary directory." msgstr "S’krijohet dot drejtori e përkohshme." msgid "There are no translations. That’s unusual." msgstr "S’ka përkthime. Kjo është e pazakontë." msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "Translators typically use PO template files (POTs) prepared for them by the " "developer." msgstr "" "Në sistemin Gettext, zërat e përkthyeshëm nuk shtohen dorazi, përftohen " "automatikisht\n" "që nga kodi burim. Në këtë mënyrë, ata mbeten të përditësuar dhe të saktë.\n" "Zakonisht përkthyesit përdorin kartela PO (POT) të përgatitura për ta nga " "zhvilluesi." msgid "(Learn more about GNU gettext)" msgstr "(Mësoni më tepër mbi GNU gettext-in)" 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:" msgid "Update from POT" msgstr "Përditësojeni prej POT-i" msgid "Take translatable strings from an existing POT template." msgstr "Merri vargjet e përkthyeshëm prej një gjedheje POT ekzistuese." 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:" msgid "Extract from sources" msgstr "Përftoji prej burimesh" 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 #, c-format msgid "Version %s" msgstr "Versioni %s" msgid "Create new" msgstr "Krijoni të ri" msgid "Create new translation from POT template." msgstr "Krijoni përkthim të ri nga një gjedhe POT." msgid "Browse files" msgstr "Shfletoni kartela" msgid "Open and edit translation files." msgstr "Hapni dhe përpunoni kartela përkthimi." msgid "Translate cloud project" msgstr "Përktheni projekt në re" msgid "Collaborate with other people online." msgstr "Bashkëpunoni me persona të tjerë në internet." msgid "Recent files" msgstr "Kartela së fundi" msgid "Sync" msgstr "Njëkohësoje" 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") #, 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. #, c-format msgid "%s Preferences" msgstr "Parapëlqime mbi %s" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "Shërbime" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "Fshihe %s" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "Fshihi të Tjerët" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "Shfaqi Krejt" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "Mbylleni %s" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "Parapëlqime…" msgid "Preferences..." msgstr "Parapëlqime…" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "Së fundi" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "Të shpeshta" msgid "&Apply" msgstr "&Zbatoje" msgid "Apply" msgstr "Zbatoje" msgid "&Back" msgstr "&Mbrapsht" msgid "Back" msgstr "Mbrapsht" msgid "&Cancel" msgstr "&Anuloje" msgid "&Clear" msgstr "&Spastroje" msgid "Clear" msgstr "Spastroje" msgid "Copy" msgstr "Kopjoje" msgid "Cu&t" msgstr "&Prije" msgid "Cut" msgstr "Prijeni" msgid "Edit" msgstr "Përpunoni" msgid "&Quit" msgstr "&Mbylle" msgid "Help" msgstr "Ndihmë" msgid "&New" msgstr "E &re" msgid "New" msgstr "E re" msgid "&No" msgstr "&Jo" msgid "No" msgstr "Jo" msgid "&OK" msgstr "&OK" msgid "Open…" msgstr "Hapni…" msgid "&Open..." msgstr "&Hapni…" msgid "Open..." msgstr "Hapni…" msgid "&Paste" msgstr "&Ngjite" msgid "Paste" msgstr "Ngjitni" msgid "Preferences" msgstr "Parapëlqime" msgid "&Redo" msgstr "&Ribëje" msgid "Refresh" msgstr "Rifreskoje" msgid "&Save as" msgstr "&Ruaje si" msgid "Save as" msgstr "Ruaje si" msgid "Select &All" msgstr "Përzgjidhe &Krejt" msgid "Select All" msgstr "Përzgjidheni Krejt" msgid "&Undo" msgstr "&Zhbëje" msgid "&Yes" msgstr "&Po" msgid "Yes" msgstr "Po" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "ENTER" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "Up" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "Down" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "Majtas" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "Djathtas" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "shift" poedit-3.5/locales/da.mo0000644000175100001770000016113414664354153012155 00000000000000|+: : :&:?:<S::J:g: V;`; o;y; ;;;;;;;;;;;;;;<<<0<B<H<M<U<]<o<<< < <<<< <<<<==0=L=R=X=a=g=p== = = ====>>7>N>e>k>p>>>>>> ? ???'?0? 4? @? L?Y? h?t? ? ?? ?? ???@@&@F@c@@ @ @1@@'@A.A HASA7YA6AA)AB B]"BB<BDB$C:C ACNCC C"CD+"D)ND xDDDDDDDDEE#4EXEmE|E EE EEEEEE%EF +FLFTF]FuF FF/F FkFXG]GpGGGG-G1G.H GHRH)iHH HYHI!I&I9ILIaIeI|IIIIIII;J CJ'PJ^xJLJ?$K dK rKK*KKK"K5K.LILdLjL}L L L L L LLLLLLLfMlMMuM(N?NRN"dNN NNN N NNN0N'OAO#VO<zO"OO OO*P03P!dP'PPPP(PTQ fQtQ yQ QQQQQ Q Q Q RR!R0RJRRRcR lRxR RRR R RRRRRRSz/TT TTT TT U2(U[UuU|UUU UU U U V!V&V;^D^Y^n^^^._4_J_=P__1__n_E[```;` ` aa@,amacb,#c,Pc}c cc2c*c ddwdj$e eeee%ee ff3fEfWf qffffffff8f g gg$g ,g 8g DgRg"Yg"|gg g gg g(ghhz'hhhhh h h h hh h i i i ,i 8iCi^ioi"iiii i ij jj$j -j:jTjdjtj j jjjj jjj!k *k8k@kHkQk Ykgkkkkkk k k kk ll.lBlRlgl|lmm 4m@mOmbm smm mmKmmn n%n:nMncn1nn n nn=ioo'p,p(>pgp op}p+pp p8p" q/q@qrCr8brrs8*t1ctRtctQLuu'u:ulvPv-vCwALwKw0w. x:x!x)x-y+Cy8oyCyuy,bzLz;z]{v{Z{gW|J|c }[n}o}:~7~m_[HN^Xp ف72("[~~łqDɃRVj o ȄЄӄ ڄ"$-F_p<Ѕ #$@eˆ#V cz ч. ;GPhHl5m7Y 3aω16;?\.a ͊ 1J!Z| $ /#<`6rKn t~   ÎȎ ͎ڎ 2FOh ʏϏ ӏ   ,CZiː$-KiˑБԑ5G g r ʒܒ  9J\l ' '*C T6a2#Д4 FU"+ai9y=. )8 ė Η#ܗ)(GpĘ ޘ":Up ҙ֙ܙ$!)9 c mx/ښ yӛ1 9;u(ٜ _flrޝ!! 7DU@d!eϞ=5>s  ş<ӟ $":G ʠ)<M ` kv~ e p!5Ȣ416:K` q~;#0;"l -Ȥ7;.1j(ΥPHY ^ jw Ʀ Ҧ ߦ -5 F R^ gry ˧,-ĩ &2F:fĪ,٪9@ ] g s~4& * 4@ GUo?ȬA]m- 7*O!zѮ,ٮ  0 >LcCF\ r~ #O۰ +880q-б$% 2IL_b' 3 M$Z ˳ ٳ !':Md3>9x.gеP8@8!Z]4'Qy ,/ѹyg( 'ֻ(;Oc { Ҽ ټ4 . 5@O^m$s$ Ľ ѽ޽ /*!2T ݾ   %3 ;FU ] i u! -ƿ , 6 B N\mt }   /=M%\  & :GVu~    $/D4y +& =JR<'',,Y \:f#M4/+3%P)dzO/!H9jlY-kED?$-d, H"i'+-DnS69;3^oP[^K jWZs=S}fhv (<Ur7.(8QwgcCX!*; P \il u#'#4K \iE,!+Mh%~*#ZNlu  $ +7QCT+i=.l5ug ..3#b' ,<45nCv#=ld B@Twa QjqO 91B)aT'ZSFQYu>"/VJZsG6*[ar`^;XyVb?' <IL:x%AMZ\W88O,*d0)i{J-yK|]:c%}oo0][-Pg6YS&r(\p@X(tM?iE=eD"OU|53 w  fj,#32H 4[ pk {qke;mpgl16U85:`, +Y^L9$qz2fGu(A7N4!d0DNt{F<x_+7vX)nKG+>&9m3 LeUIN Iy E"nsk/<W>PhrVvT]cQmuR$bjD !_@xEl%WK-_7MCwbz/|gcAB` zh~?SC^*tf=\h!H'P#RiF&;$H1~.2 RsJo}.} .~ (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd AccountAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add accountAdd 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 languagesAlt+Always 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 errorCrowdin is an online localization management platform and collaborative translation tool.Ctrl+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 againDownDownloading 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:EnterEnter 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 loading translation file “%s”.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export errorExport 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…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)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport from TMX…Import translation files…Importing translation memory from “%s” 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 CrowdinLeftLine %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 translations were found in the TMX file.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKObsolete stringsOneOnly 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 translation templateOpen...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 translationsQuitQuit %sReading file content failed with the following error: %sRecentRecent 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 FinderReviewRightSaveSave &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 languageServicesSet LanguageSet languageSettingsSettings…Shift+Show AllShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow summary after updating filesShow 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.These strings are no longer in the source code. Poedit will remove them from the file now.These strings were found in the sources but were not in the file. Poedit will add them to the file now.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 entries in the file are probably incorrect.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 errorUntransUpUpdateUpdate 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 the file failed. Click on 'Details >>' for details.Updating 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown 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: 2024-08-30 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 fejlFandt %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&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(0 nye, 0 forældede)(lær mere om GNU gettext)(Nye: %i, forældede: %i)(vælg standardsprog)(ikke logget ind)(kræver Windows 8 eller nyere)< &ForrigeOm %sKontoKontiTilføjTilføj kontoTilføj kommentarTilføj filer…Tilføj mapper…Tilføj projektTilføj wildcard…Tilføj kontoTilfø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 sprogAlt+Skift altid fokus til indtastningsfeltet for tekstEn post i listen over inddatafiler:En post i nøgleordslisten:UdseendeAnvendEr 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 fremPO-filfejl: Flertalsform msgstr anvendt uden msgid_pluralPO-filfejl: Entalsform msgstr anvendt 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 ødelagt.Kunne ikke gemme filen %s.Opret nyOpret ny oversættelseOpret ny oversættelse fra POT-skabelon.Opret nyt oversættelsesprojektCrowdin-fejlCrowdin er en online lokaliseringshåndteringsplatform og et oversættelsessamarbejdsværktøj.Ctrl+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.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 igenNedDownloader 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:EnterFuldskæ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 indlæsning af oversættelsesfilen “%s”.Fejl ved åbning af filenFejl under lagring af filEn fejl opstod under indlæsningen af XLIFF-filen %sFejlAltUdelukkede stierEksporter til TMX…Eksporter som…Eksport fejlEksportér til HTML…Eksporter til TMX…Eksportdn 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…Opsætning af udtrækkerUdtrækkereFejlet kommando: %sMislykkedes at kommunikere med Poedit-proces.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.Færdiggører…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)Mest brugteGNU gettextGenereltHTML-filerHjælpSkjul %sSkjul øvrigeSkjul 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…Import fejlImporter fra TMX…Importer oversættelsesfiler…Importen af oversættelseshukommelse fra "%s" 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:JSON-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 flertalsformerFind ud af mereLæs mere om %sLæs mere om CrowdinVenstreLinje %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…Ny fra &POT/PO fil…Nye strengeNæ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 oversættelser blev fundet i TMX filen.Ingen brugsinformationElle alle flertalsformer er oversat.Ikke godkendt, log venligst ind igen.Noter til oversættereOKForældede strengeEnMarker 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 oversættelsesskabelon&Å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ættelserAfslutAfslut %sLæsning af filindhold mislykkedes med flg. fejl: %sSenesteSeneste filerGentagGenopfriskGenindlæs filGenindlæs filResterende: %dFjernFjern samme-som-kilde oversættelserFjern samme-som-kilde oversættelserErstatErstat &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 FinderKorrekturHøjreGemGem &som…Gem &som…Gem alligevelGem alligevelGem somGem som…Gem ændringerGem filSkærmfoto: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 sprogTjenesterAngiv sprogAngiv sprogIndstillingerIndstillinger…Skift+Vis alleVis sidepanelVis stavning og grammatikVis statuslinjeVis streng &IDVis erstatningerVis værktøjslinjeVis advarslerVis i StifinderVis i mappeVis eller skjul sidepaneletVis sidepanelVis statuslinjeVis streng &IDVis resumé efter opdatering af filerVis 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 findesErstatningerForslagForslag 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 CrowdinSynkroniseringSynkfejlSynkronisering 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 har et af Poedit ukendt format.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” 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 under indlæsning af filen. Visse data kan som følge heraf mangle eller være ødelagte.Disse indstillinger påvirker den interne formatering af PO filer. Tilpas dem hvis du har specielle krav f.eks på grund af versionskontrol.Disse strenge er ikke længere i kildekoden. Poedit vil fjerne dem fra filen nu.Disse strenge blev fundet i kilderne, men var ikke i filen. Poedit vil føje dem til filen nu.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 emner tilføjes ikke manuelt i Gettext-systemet, men udtrækkes automatisk fra kildekoden. På denne måde er de altid opdateret og korrekte. Oversættere bruger typisk PO-skabelonfiler (POT) som er lavet til dem af udvikleren.Oversæt cloud-projektOversat: %d af %d (%d %%)OversættelseOversættelsessprogOversættelseshukommelseOversættelse skal &eftersesOversættelsesegenskaberOversættelsesposter i filen er sandsynligvis forkerte.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)FortrydUhåndteret undtagelse opstod: %sUnix (anbefalet)Ukendt Crowdin-fejl.Ukendt fejlIkke-oversatOpOpdatérOpdaté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 mislykkedesOpdatering af filen mislykkedes. Klik på 'Detaljer >>' for detaljer.Opdaterer 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 %sVenter på godkendelse…Velkommen til PoeditVed opdatering fra kilderKun hele ordVindueWindowsVil du bruge engelsk som kildetekst?OmbrydningOmbryd ved:XLIFF-oversættelsesfilerJaDu 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.NulZoomaltSkal eftersesctrlslet ikke midlertidige filer (til fejlfinding)f.eks. nplurals=2; plural=(n != 1);lav uafklaret søgning i filengå til emnet på et givent linjenummerhåndtér en poedit://-URIpræ-oversæt fra TMskiftukendt sproguunderstøttet version (%s)dig@eksempel.dk"%s" er ikke en gyldig POT-fil.poedit-3.5/locales/ko.po0000644000175100001770000020372114664354154012205 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "이 알림 메시지 숨김" msgid "Don’t Show Again" msgstr "다시 표시하지 않기" msgid "Don’t show again" msgstr "다시 표시하지 않기" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(새 문자열: %i개, 오래된 문자열: %i개)" msgid "Collecting source files…" msgstr "소스 파일 수집 중…" msgid "Extracting translatable strings…" msgstr "번역 가능한 문자열 추출 중…" msgid "Failed to load file with extracted translations." msgstr "추출한 번역이 들어있는 파일 불러오기에 실패했습니다." msgid "Merging differences…" msgstr "차이점 병합 중…" msgid "Updating translations" msgstr "번역 업데이트 중" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "\"%s\" 파일을 열 수 없습니다." msgid "Invalid file" msgstr "잘못된 파일" #, c-format msgid "Malformed header: “%s”" msgstr "잘못된 헤더: “%s”" msgid "PO Translation Files" msgstr "PO 번역 파일" msgid "POT Translation Templates" msgstr "POT 번역 양식" msgid "XLIFF Translation Files" msgstr "XLIFF 번역 파일" msgid "JSON Translation Files" msgstr "JSON 번역 파일" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "플루터 번역 파일" msgid "All Translation Files" msgstr "모든 번역 파일" msgid "The file is in a format not recognized by Poedit." msgstr "Poedit에서 인식할 수 없는 파일 형식입니다." msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "이 JSON 파일은 번역 파일이 아니므로 Poedit에서 편집할 수 없습니다." #, c-format msgid "Reading file content failed with the following error: %s" msgstr "다음 오류로 인해 파일 내용 읽기에 실패했습니다: %s" #, c-format msgid "" "File “%s” is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "“%s” 파일은 읽기 전용이며 저장할 수 없습니다.\n" "다른 이름으로 저장하세요." #, c-format msgid "Couldn’t save file %s." msgstr "%s 파일을 저장할 수 없습니다." msgid "Screenshots:" msgstr "스크린샷:" #, c-format msgid "%i line of file “%s” was not loaded correctly." msgid_plural "%i lines of file “%s” were not loaded correctly." msgstr[0] "“%2$s” 파일의 %1$i번째 줄을 제대로 불러오지 못했습니다." #, c-format msgid "Line %d of file “%s” is corrupted (not valid %s data)." msgstr "" "“%2$s” 파일의 %1$d번째 줄이 손상되었습니다 (올바르지 않은 %3$s 데이터)." msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "PO 파일 오류: msgid_plural을 사용한 단수 형식의 msgstr" msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "PO 파일 오류: msgid_plural 없이 사용한 복수 형식의 msgstr" msgid "Couldn’t load the file, it is probably damaged." msgstr "파일을 불러오지 못했습니다. 손상되었을 수 있습니다." msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "파일을 불러올 때 오류가 있었습니다. 데이터 일부가 빠지거나 깨졌을 수도 있습니" "다." msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "파일 구조를 다듬는 중 문제가 발생했습니다(하지만 문제 없이 저장했습니다)." #, 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로 저장했으며 이에 따라 설정 값도 수정했습니다." msgid "Error saving file" msgstr "파일 저장 오류" #, c-format msgid "“%s” is not a valid POT file." msgstr "“%s” 파일은 정상적인 POT 파일이 아닙니다." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "XLIFF 파일 불러오기 오류: %s" #, c-format msgid "unsupported version (%s)" msgstr "지원하지 않는 버전 (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML msgid "Broken markup in translation string." msgstr "번역 문자열의 마크업이 깨졌습니다." msgid "(Use default language)" msgstr "(기본 언어 사용)" msgid "Language selection" msgstr "언어 선택" msgid "Select your preferred language" msgstr "선호하는 언어 선택" msgid "You must restart Poedit for this change to take effect." msgstr "바뀐 내용을 반영하려면 Poedit을 다시 시작해야 합니다." msgid "Add Account" msgstr "계정 추가" msgid "Add account" msgstr "계정 추가" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "%s 자세히 알아보기" msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "poedit에서 지원하는 클라우드 기반 지역화 플랫폼에서 관리하는 번역을 감쪽같이 " "동기화하려면 플랫폼에 연결합니다." msgid "How does cloud sync work?" msgstr "클라우드 동작을 어떻게 처리할까요?" msgid "Account" msgstr "계정" msgid "(not signed in)" msgstr "(로그인하지 않음)" msgid "File" msgstr "파일" msgid "Open cloud translation" msgstr "클라우드 번역 열기" msgid "Manage accounts" msgstr "계정 관리" msgid "Project:" msgstr "프로젝트:" msgid "Language:" msgstr "언어:" msgid "Sign in to Cloud Account" msgstr "클라우드 계정에 로그인" msgid "Sign in to cloud account" msgstr "클라우드 계정에 로그인합니다" msgid "No translation projects listed in your account." msgstr "이 계정에 번역 프로젝트가 없습니다." msgid "Downloading latest translations…" msgstr "최신 번역 다운로드 중…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #, c-format msgid "Sign in to %s" msgstr "%s에 로그인" msgid "Syncing" msgstr "동기화 중" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s…" msgstr "%s에 번역 업로드중…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s failed." msgstr "%s(으)로의 번역 업로드에 실패했습니다." msgid "Syncing error" msgstr "동기화 오류" msgid "Add" msgstr "추가" msgid "Unknown Crowdin error." msgstr "알 수 없는 Crowdin 오류." msgid "Not authorized, please sign in again." msgstr "인증하지 않았습니다. 다시 로그인하십시오." msgid "Downloading translations is disabled in this project." msgstr "이 프로젝트에서는 번역을 다운로드할 수 없습니다." msgid "Sign In" msgstr "로그인" msgid "Sign in" msgstr "로그인" msgid "Sign Out" msgstr "로그아웃" msgid "Sign out" msgstr "로그아웃" msgid "Learn more about Crowdin" msgstr "Crowdin 더 알아보기" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "크라우드인은 지역화 관리 플랫폼이며 공동 번역 도구입니다." msgid "Waiting for authentication…" msgstr "인증 대기 중…" msgid "Updating user information…" msgstr "사용자 정보 업데이트 중…" msgid "Sign in to Crowdin" msgstr "Crowdin에 로그인" msgid "Syncing with Crowdin failed." msgstr "Crowdin과 동기화에 실패했습니다." msgid "Crowdin error" msgstr "Crowdin 오류" msgid "Uploading translations…" msgstr "번역 업데이트 중…" msgid "&Copy" msgstr "복사(&C)" msgid "Learn more" msgstr "더 알아보기" msgid "&Help" msgstr "도움말(&H)" msgid "MO files can’t be directly edited in Poedit." msgstr "MO 파일은 Poedit에서 직접 편집할 수 없습니다." msgid "Error opening file" msgstr "파일 여는 중 오류" msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "대신 관련 PO 파일을 열어 편집하십시오. 저장하면, 마찬가지로 MO 파일도 업데이" "트합니다." msgid "don’t delete temporary files (for debugging)" msgstr "임시 파일 삭제 안함 (디버깅용)" msgid "handle a poedit:// URI" msgstr "poedit:// URI 처리" msgid "go to item at given line number" msgstr "입력한 줄 수에 해당되는 항목으로 이동" msgid "Failed to communicate with Poedit process." msgstr "Poedit 프로세스와의 통신에 실패했습니다." #, c-format msgid "Unhandled exception occurred: %s" msgstr "처리하지 못한 오류 발생: %s" msgid "Select translation template" msgstr "번역 양식 선택" msgid "Select translation file" msgstr "번역 파일 선택" msgid "Poedit is an easy to use translation editor." msgstr "Poedit는 사용하기 쉬운 번역 편집기입니다." msgid "You can’t drop more than one file on Poedit window." msgstr "Poedit 윈도우에 하나를 초과하는 항목을 드롭할 수 없습니다." #, c-format msgid "File “%s” is not a translation file." msgstr "“%s” 파일은 번역 파일이 아닙니다." #, c-format msgid "File “%s” doesn’t exist." msgstr "“%s” 파일이 없습니다." 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". #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "%s 언어 사전을 설치하지 않아 맞춤법 검사를 비활성화했습니다." msgid "Install" msgstr "설치" #, c-format msgid "The file “%s” has been changed by another application." msgstr "다른 프로그램에서 “%s” 파일의 내용을 바꾸었습니다." msgid "Reload file" msgstr "파일 다시 불러오기" msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "디스크에서 파일을 다시 불러올까요? poedit에서 편집했지만 저장하지 않은 내용" "을 잃습니다." msgid "Ignore" msgstr "무시" msgid "Reload File" msgstr "파일 다시 불러오기" msgid "The file has been modified. Do you want to save changes?" msgstr "파일의 내용을 수정했습니다. 바뀐 내용을 저장하시겠습니까?" msgid "Save changes" msgstr "바뀐 내용 저장" msgid "Your changes will be lost if you don’t save them." msgstr "저장하지 않으면 바뀐 내용을 잃어버립니다." msgid "Save" msgstr "저장" msgid "Do&n’t save" msgstr "저장하지 않음(&N)" msgid "Don’t Save" msgstr "저장하지 않음" msgid "The changes made by the other application will be lost if you save." msgstr "저장하면 다른 프로그램에서 바꾼 내용을 잃습니다." msgid "Cancel" msgstr "취소" msgid "Save Anyway" msgstr "무시하고 저장" msgid "Save anyway" msgstr "무시하고 저장" msgid "Save as…" msgstr "다음 이름으로 저장…" msgid "Compile to…" msgstr "다음으로 컴파일…" msgid "Compiled Translation Files" msgstr "컴파일한 번역 파일" msgid "Export to HTML…" msgstr "HTML로 내보내기…" msgid "HTML Files" msgstr "HTML 파일" #, c-format msgid "In: %s" msgstr "파일 위치: %s" msgid "Source code not available." msgstr "소스 코드가 없습니다." msgid "Updating failed" msgstr "업데이트 실패" 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 "" "파일 속성에 지정한 위치에 코드가 없어, 소스 코드에서 번역 항목을 새로 가져올 " "수 없습니다." msgid "Permission denied." msgstr "권한을 거부했습니다." 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. 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. msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "파일 접근 권한을 예전에 거부했던 적이 있었다면, 시스템 설정 > 보안 및 개인정" "보 > 개인정보 > 파일 및 폴더에서 허용할 수 있습니다." msgid "Translation entries in the file are probably incorrect." msgstr "파일의 번역 항목이 올바르지 않은 것 같습니다." msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "파일 업데이트에 실패했습니다. 자세히 보려면 '자세히 >>'를 누르십시오." msgid "Open translation template" msgstr "번역 양식 열기" #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "번역에서 문제 %d개를 찾았습니다." msgid "Validation results" msgstr "검증 결과" msgid "" "Entries with errors were marked in red in the list. Details of the error " "will be shown when you select such an entry." msgstr "" "오류가 있는 항목은 붉은색으로 표시했습니다. 자세한 오류 내용은 각각의 항목을 " "선택했을 때 나타납니다." msgid "The file was saved safely." msgstr "파일을 안전하게 저장했습니다." msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "파일을 안전하게 저장하고 MO 형식으로 컴파일했지만 올바르게 작동하지 않을 수 " "있습니다." msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "파일을 안전하게 저장했지만 MO 형식으로 컴파일할 수 없었습니다." msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "MO 형식으로 파일을 컴파일했지만 올바르게 작동하지 않을 수 있습니다." msgid "The file cannot be compiled into the MO format and used." msgstr "MO 파일로 컴파일할 수 없습니다." msgid "No problems with the translation found." msgstr "번역에 문제가 없습니다." #, 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개를 번역하지 않았습니다." msgid "The translation is ready for use." msgstr "번역을 사용할 준비가 되었습니다." #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "Poedit가 “%s” 파일의 잘못된 내용을 자동으로 수정했습니다." msgid "" "The file contained duplicate items, which is not allowed in PO files and " "would prevent the file from being used. Poedit fixed the issue, but you " "should review translations of any items marked as needing work and correct " "them if necessary." msgstr "" "PO 파일에서 허용하지 않는 중복 항목이 있어 파일 활용을 막았습니다. Poedit에" "서 문제를 해결했지만 필요한 경우 작업할 항목을 표시해둔 부분의 번역을 검토해" "야합니다." msgid "Language of the translation isn’t set." msgstr "번역 언어를 설정하지 않았습니다." msgid "Set Language" msgstr "언어 설정" msgid "Set language" msgstr "언어 설정" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." msgid "" "Suggestions are not available if the translation language is not set " "correctly. Other features, such as plural forms, may be affected as well." msgstr "" "번역 언어를 올바르게 선택하지 않으면 제안 기능을 사용할 수 없습니다. 서수 형" "식 같은 기능도 마찬가지로 영향을 받을 수 있습니다." msgid "Language of the translation is the same as source language." msgstr "번역 언어가 원본 언어와 같습니다." msgid "Fix Language" msgstr "언어 수정" msgid "Fix language" msgstr "언어 수정" msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "이 파일에는 서수 형식 항목이 들어있으나 서수 형식 헤더를 구성하지 않았습니다." msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "이 파일의 항목은 파일의 Plural-Forms 헤더에 명시한 서수 형식 카운트와 다른 값" "을 가지고 있습니다." msgid "Required header Plural-Forms is missing." msgstr "필요한 Plural-Forms 헤더가 빠졌습니다." #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Plural-Forms 헤더(\"%s\")에 문법 오류." msgid "Fix the Header" msgstr "헤더 수정" 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". #, 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.")" msgid "Review" msgstr "검토" msgid "Would you like to use English for source text?" msgstr "영어를 원문 언어로 사용하시겠습니까?" #, 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" msgid "Load English" msgstr "영어 불러오기" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "번역함: 문장 %2$d개 중 %1$d개 (%3$d%%)" #, c-format msgid "Remaining: %d" msgstr "남음: %d개" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "오류 %d개" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "항목 %d개" msgid " (unsaved)" msgstr " (저장하지 않음)" msgid " (modified)" msgstr " (수정함)" #, c-format msgid "Failed to update translation memory: %s" msgstr "번역 기억 장소 업데이트에 실패했습니다: %s" msgid "Remove same-as-source translations" msgstr "원본과 동일한 번역 제거" msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "원본 문자열과 동일한 모든 번역을 제거할까요?" msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" "이 동작은 원본 문자열과 정확히 일치하는 번역을 모두 삭제합니다. 되돌릴 수 없" "습니다." msgid "Keep" msgstr "그대로 유지" msgid "Remove" msgstr "제거" msgid "Purge deleted translations" msgstr "삭제한 번역을 완전히 제거" msgid "Do you want to remove all translations that are no longer used?" msgstr "더 이상 사용하지 않는 모든 번역을 제거하시겠습니까?" 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 "" "계속 제거를 진행하면 삭제 표시한 모든 번역을 완전히 제거합니다. 다음에 다시 " "추가하면 다시 번역해야 합니다." msgid "Purge" msgstr "제거" msgid "Copy from source text" msgstr "원본 텍스트 복사" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "번역 지우기" msgid "Clear Translation" msgstr "번역 지우기" msgid "Edit comment" msgstr "주석 편집" msgid "Edit Comment" msgstr "주석 편집" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "코드 출현 횟수" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "코드 출현 횟수" msgid "Hide Sidebar" msgstr "가장자리 창 숨김" msgid "Show Sidebar" msgstr "가장자리 창 표시" msgid "Hide Status Bar" msgstr "상태 표시줄 숨기기" msgid "Show Status Bar" msgstr "상태 표시줄 표시" msgid "String length in characters: translation | source" msgstr "문자 단위 문자열 길이: 번역 | 원본" msgid "String length in characters" msgstr "문자 단위 문자열 길이" msgid "Source text" msgstr "원본 텍스트" msgid "Singular" msgstr "단수" msgid "Plural" msgstr "복수" msgid "Translation" msgstr "번역" msgid "Pre-translated" msgstr "사전 번역함" 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. msgid "Needs work" msgstr "작업 필요" msgid "" "POT files are only templates and don’t contain any translations themselves.\n" "To make a translation, create a new PO file based on the template." msgstr "" "POT 파일은 양식일 뿐이며 어떤 번역 내용도 들어있지 않습니다.\n" "번역하려면 이 양식을 기반으로 새 PO 파일을 만드십시오." msgid "Create new translation" msgstr "새 번역 만들기" msgid "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 msgid "Source text ID" msgstr "원문 ID" msgid "Everything" msgstr "모두" #, c-format msgid "Form %i" msgstr "%i번 양식" #, c-format msgid "Form %i (unused)" msgstr "양식 %i (미사용)" msgid "Zero" msgstr "영" msgid "One" msgstr "하나" msgid "Two" msgstr "둘" msgid "Other" msgstr "기타" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, c-format msgid "String context: %s" msgstr "문자열 문맥: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #, c-format msgid "String identifier: %s" msgstr "문자열 ID: %s" #, c-format msgid "%s Format" msgstr "%s 형식" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "%s 형식" #, c-format msgid "Translation — %s" msgstr "번역 — %s" msgid "ID" msgstr "ID" #, c-format msgid "Source text — %s" msgstr "원본 텍스트 — %s" msgid "unknown language" msgstr "알 수 없는 언어" #, c-format msgid "Network error: %s (%d)" msgstr "네트워크 오류: %s (%d)" msgid "Unknown error" msgstr "알 수 없는 오류" #, c-format msgid "Failed command: %s" msgstr "명령 실패: %s" msgid "Failed to merge gettext catalogs." msgstr "gettext 카탈로그 병합에 실패했습니다." msgid "Open in Editor" msgstr "편집기에서 열기" msgid "Open in editor" msgstr "편집기에서 열기" msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "이 파일에 언급한 소스 코드에서 문자열 출현 정보가 없습니다." msgid "No usage information" msgstr "사용 정보 없음" #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "코드 %d회 나타남" msgid "Source code not found" msgstr "소스 코드가 없습니다" 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에서는 문자열을 활용하는 참조 위치에 파일이 없거나 실제 파일이 아닌 심" "볼릭 참조여서 소스 코드를 나타낼 수 없습니다." msgid "File cannot be opened" msgstr "파일을 열 수 없습니다" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "poedit에서 “%s” 파일을 열 수 없습니다." msgid "Find" msgstr "찾기" msgid "Replace" msgstr "바꾸기" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "옵션" msgid "Ignore case" msgstr "대소문자 무시" msgid "Wrap around" msgstr "자동 줄 바꾸기" msgid "Whole words only" msgstr "단어 단위로 검색" msgid "Find in source texts" msgstr "원본 문자열에서 찾기" msgid "Find in translations" msgstr "번역에서 찾기" msgid "Find in comments" msgstr "주석에서 찾기" msgid "Close" msgstr "닫기" msgid "Replace &All" msgstr "모두 바꾸기(&A)" msgid "Replace &all" msgstr "모두 바꾸기(&A)" msgid "&Replace" msgstr "바꾸기(&R)" msgid "< &Previous" msgstr "< 이전(&P)" msgid "&Next >" msgstr "다음(&N) >" msgid "String to find" msgstr "찾을 문자열" msgid "Replacement string" msgstr "바꿀 문자열" #, c-format msgid "Cannot execute program: %s" msgstr "프로그램을 실행할 수 없습니다: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "언어 이름 또는 코드" msgid "Translation Language" msgstr "번역 언어" msgid "Language of the translation:" msgstr "번역 언어:" msgid "All strings" msgstr "모든 문자열" msgid "Couldn’t download Localazy project details." msgstr "로컬레이지 프로젝트 세부 정보를 다운로드할 수 없습니다." msgid "There was an error when uploading translations to Localazy." msgstr "로컬레이지로 번역을 업로드하는 중 오류가 발생했습니다." msgid "Projects" msgstr "프로젝트" msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "로컬레이지는 누구에게든 자신의 제품과 내용물을 여러 언어로 번역하는 과정을 상" "당 부분 자동화해주는 지역화 플랫폼입니다." msgid "Add Project" msgstr "프로젝트 추가" msgid "Add project" msgstr "프로젝트 추가" msgid "Poedit - Catalogs manager" msgstr "Poedit - 카탈로그 관리자" msgid "Edit…" msgstr "수정…" msgid "Create new translations project" msgstr "새 번역 프로젝트 만들기" msgid "Delete the project" msgstr "프로젝트 삭제" msgid "Edit the project" msgstr "프로젝트 편집" msgid "Update all" msgstr "모두 업데이트" msgid "Update all catalogs in the project" msgstr "이 프로젝트의 모든 카탈로그 업데이트" msgid "Total" msgstr "전체" msgid "Untrans" msgstr "미번역" msgctxt "column/row header" msgid "Needs Work" msgstr "작업 필요" msgid "Errors" msgstr "오류" msgid "Last modified" msgstr "최종 편집" msgid "Select directory" msgstr "디렉터리 선택" msgid "Directories:" msgstr "디렉터리:" msgid "" msgstr "" #, c-format msgid "Do you want to delete project “%s”?" msgstr "“%s” 프로젝트를 삭제하시겠습니까?" msgid "Delete project" msgstr "프로젝트 삭제" msgid "Deleting the project will not delete any translation files." msgstr "프로젝트 삭제 동작은 번역 파일을 삭제하지는 않습니다" msgid "Confirmation" msgstr "확인" msgid "Update all catalogs in this project?" msgstr "이 프로젝트의 모든 카탈로그를 업데이트하시겠습니까?" msgid "Performs update from source code on all files in the project." msgstr "이 프로젝트의 모든 소스 코드 파일에서 업데이트를 수행합니다." msgid "Check for Updates…" msgstr "업데이트 확인…" msgid "Catalogs Manager" msgstr "카탈로그 관리자" msgid "&Preferences…" msgstr "기본 설정(&P)..." msgid "&Edit" msgstr "편집(&E)" msgid "Undo" msgstr "실행 취소" msgid "Redo" msgstr "재실행" msgid "Paste and Match Style" msgstr "붙여넣기 및 일치 비교 방식" msgid "Delete" msgstr "삭제" msgid "Spelling and Grammar" msgstr "맞춤법 및 문법" msgid "Show Spelling and Grammar" msgstr "맞춤법 및 문법 표시" msgid "Check Document Now" msgstr "지금 문서 검사" msgid "Check Spelling While Typing" msgstr "입력하는 동안 맞춤법 검사" msgid "Check Grammar With Spelling" msgstr "맞춤법과 문법 검사" msgid "Correct Spelling Automatically" msgstr "자동으로 맞춤법 교정" msgid "Substitutions" msgstr "대체 항목" msgid "Show Substitutions" msgstr "대체 항목 표시" msgid "Smart Copy/Paste" msgstr "스마트 복사/붙여넣기" msgid "Smart Quotes" msgstr "스마트 인용" msgid "Smart Dashes" msgstr "스마트 대시 입력" msgid "Smart Links" msgstr "스마트 링크" msgid "Text Replacement" msgstr "텍스트 바꾸기" msgid "Transformations" msgstr "변환" msgid "Make Upper Case" msgstr "대문자로 만들기" msgid "Make Lower Case" msgstr "소문자로 만들기" msgid "Capitalize" msgstr "대문자화" msgid "Speech" msgstr "말하기" msgid "Start Speaking" msgstr "말하기 시작" msgid "Stop Speaking" msgstr "말하기 중지" msgid "&View" msgstr "보기(&V)" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Show Toolbar" msgstr "도구 모음 표시" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Customize Toolbar…" msgstr "도구 모음 사용자 지정…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Enter Full Screen" msgstr "전체 화면상태 진입" msgid "Window" msgstr "창" msgid "Minimize" msgstr "최소화" msgid "Zoom" msgstr "확대" msgid "Welcome to Poedit" msgstr "Poedit에 잘 오셨습니다" msgid "Bring All to Front" msgstr "모두 앞으로" msgid "Information about the translator" msgstr "번역자 정보" msgid "Name:" msgstr "이름:" msgid "Your Name" msgstr "이름" msgid "Email:" msgstr "이메일:" msgid "you@example.com" msgstr "gdhong@website.co.kr" msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "이름 및 전자메일 주소는 GNU gettext 파일의 Last-Translator 헤더를 설정할 때" "만 사용합니다." msgid "Editing" msgstr "편집 중" msgid "Automatically compile MO file when saving" msgstr "저장할 때 MO 파일 자동 컴파일" msgid "Show summary after updating files" msgstr "파일 업데이트 후 요약 표시" msgid "Check spelling" msgstr "맞춤법 검사" msgid "Always change focus to text input field" msgstr "항상 포커스를 입력 창으로 옮김" msgid "" "Never let the list of strings take focus. If enabled, you must use Ctrl-" "arrows for keyboard navigation but you can also type text immediately, " "without having to press Tab to change focus." msgstr "" "문자열 목록에 포커스가 가지 않게 합니다. 이 상태에서는 키보드 상의 Ctrl-화살" "표를 눌러 이동한 후 문자열을 편집해야 합니다. 탭 키를 누르실 필요는 없습니다." msgid "Appearance" msgstr "모양새" msgid "Use custom list font:" msgstr "목록에 사용자 지정 글꼴 사용:" msgid "Use custom text fields font:" msgstr "텍스트 입력 창에 사용자 지정 글꼴 사용:" msgid "Change UI language" msgstr "사용자 언어 바꾸기" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions msgid "(requires Windows 8 or newer)" msgstr "(Windows 8 이상 필요)" msgid "General" msgstr "일반" msgid "Use translation memory" msgstr "번역 기억 장소 사용" msgid "Manage…" msgstr "관리…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "원본 업데이트 방식" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "파일내 퍼지 일치" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "번역 기억 장소의 사전 번역" 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은 해당 파일의 이전 번역만을 활용하거나 보유한 번역 기억 장소 전체를 활" "용하여 새 항목 채우기를 시도할 수 있습니다. 번역 기억 장소가 거의 비어 있을 " "경우 효율적이지는 않지만, 번역을 더 많이 저장하면 좋은 결과를 얻을 수 있습니" "다." msgid "Stored translations:" msgstr "저장한 번역:" msgid "Database size on disk:" msgstr "디스크의 데이터베이스 크기:" msgid "Import Translation Files…" msgstr "번역 파일 가져오기…" msgid "Import translation files…" msgstr "번역 파일 가져오기…" msgid "Import From TMX…" msgstr "TMX에서 가져오기…" msgid "Import from TMX…" msgstr "TMX에서 가져오기…" msgid "Export To TMX…" msgstr "TMX로 내보내기…" msgid "Export to TMX…" msgstr "TMX로 내보내기…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). msgid "Reset" msgstr "초기화" msgid "Select translation files to import" msgstr "가져올 번역 파일을 선택하세요" msgid "Translation Memory" msgstr "번역 기억 장소(TM)" msgid "Importing translations…" msgstr "번역 가져오는 중…" #, c-format msgid "Error loading translation file “%s”." msgstr "“%s” 번역 파일 불러오는 중 오류가 있습니다." msgid "Finalizing…" msgstr "마무리 중…" msgid "Select TMX files to import" msgstr "가져올 TMX 파일을 선택하세요" msgid "TMX Files" msgstr "TMX 파일" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "\"%s\" TM 가져오기에 실패했습니다." msgid "Import error" msgstr "가져오기 오류" msgid "Export as…" msgstr "다음으로 내보내기…" msgid "Exporting translations…" msgstr "번역 내보내는 중…" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "\"%s\" TM 내보내기에 실패했습니다." msgid "Export error" msgstr "내보내기 오류" msgid "Reset translation memory" msgstr "번역 기억장소 초기화" msgid "Are you sure you want to reset the translation memory?" msgstr "번역 기억 장소를 초기화하시겠습니까?" 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. msgid "TM" msgstr "번역 기억 장소" msgid "" "Source code extractors are used to find translatable strings in the source " "code files and extract them so that they can be translated." msgstr "" "소스 코드 추출 프로그램은 소스 코드 파일에서 번역할 수 있는 문자열을 찾고 추" "출하여 번역할 수 있게 합니다." msgid "Custom Extractors:" msgstr "사용자 지정 추출 프로그램:" msgid "Custom extractors:" msgstr "사용자 지정 추출 프로그램:" msgid "GNU gettext" msgstr "GNU gettext" 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 등)를 지원합니다." msgid "Delete extractor" msgstr "추출 프로그램 삭제" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "정말로 “%s” 추출 프로그램을 삭제하시겠습니까?" msgid "Extractors" msgstr "추출 프로그램" msgid "Accounts" msgstr "계정" msgid "Automatically check for updates" msgstr "업데이트 자동 확인" msgid "Include beta versions" msgstr "베타 버전 포함" msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "베타 버전에는 최신 기능과 개선 사항이 있지만, 덜 안정적일 수 있습니다." msgid "Updates" msgstr "업데이트" msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "이 설정은 PO 파일 내부 형식에 영향을 줍니다. 버전 관리 등의 특별한 필요성이 " "있다면 값을 설정하십시오." msgid "Line endings:" msgstr "행 종결 문자:" msgid "Unix (recommended)" msgstr "Unix (추천)" msgid "Windows" msgstr "윈도우" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "줄 바꿈 위치:" msgid "Preserve formatting of existing files" msgstr "기존 파일 서식 유지" msgid "Advanced" msgstr "고급" msgid "Settings" msgstr "설정" msgid "Preparing strings…" msgstr "문자열 준비 중…" msgid "Pre-translating from translation memory…" msgstr "번역 기억 장소에서 번역 미리 가져오는 중…" #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "사전 번역한 문자열 %u개" msgid "Pre-translating…" msgstr "사전 번역 중…" 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. msgid "Pre-translate" msgstr "사전 번역" msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "원문이 주어져야 사전 번역 기능을 이용할 수 있습니다. 실제 텍스트가 아닌 ID만 " "있는 경우 작업을 실행할 수 없습니다." msgid "Cannot pre-translate from unknown language." msgstr "알 수 없는 언어를 사전 번역할 수 없습니다." msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "사전 번역 작업시 원본 내용의 언어를 알아야 합니다. Poedit에서 이 파일의 언어" "를 확인하지 못했습니다." msgid "Only fill in exact matches" msgstr "정확하게 일치하는 내용만 채우기" msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "기본적으로, 부정확한 결과도 들어있을 수 있지만, 해당 부분은 작업이 필요한 상" "태로 표시합니다. 완전히 일치하는 결과를 넣을 경우에만 이 옵션을 표시하세요." msgid "Don’t mark exact matches as needing work" msgstr "정확하게 일치하는 내용은 작업 필요로 표시하지 않기" 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 "" "기본 설정으로는 번역 기억 장소에서 가져온 모든 일치 항목은 작업 필요 항목으" "로 표시하여 활용 전에 검토해야 합니다. 번역 기억 장소 품질을 신뢰하는 경우에" "만 이 설정을 켜세요." msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "사전 번역은 번역 기억 장소에서 번역하지 않은 문자열과 정확한 항목 또는 모호" "한 항목과 일치하는 번역을 자동으로 찾아 번역 내용을 채웁니다." #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "항목 %d개를 사전 번역했습니다." msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "부정확할지도 모르는 번역을 '작업 필요'로 표시했습니다. 정확성 여부를 검토하시" "는 것이 좋습니다." msgid "No entries could be pre-translated." msgstr "사전 번역할 수 있는 항목이 없습니다." msgid "" "The TM doesn’t contain any strings similar to the content of this file. It " "is only effective for semi-automatic translations after Poedit learns enough " "from files that you translated manually." msgstr "" "이 파일의 내용과 유사한 어떤 문자열도 번역 기억 장소에 없습니다. poedit에서" "는 직접 번역한 파일의 내용을 충분히 학습한 후에야 반자동 번역의 결과가 제대" "로 나옵니다." msgid "Cancelling…" msgstr "취소 중…" msgid "Drag Folders or Files Here" msgstr "폴더 또는 파일을 여기에 끌어다 놓으세요" msgid "Drag folders or files here" msgstr "폴더 또는 파일을 여기에 끌어다 놓으세요" msgid "Add Folders…" msgstr "폴더 추가…" msgid "Add folders…" msgstr "폴더 추가…" msgid "Add Files…" msgstr "파일 추가…" msgid "Add files…" msgstr "파일 추가…" msgid "Add Wildcard…" msgstr "와일드카드 추가…" msgid "Add wildcard…" msgstr "와일드카드 추가…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) msgid "Reveal in Finder" msgstr "Finder에 표시" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" msgid "Show in Explorer" msgstr "탐색기에 표시" msgid "Show in Folder" msgstr "폴더 보기" msgid "Paths" msgstr "경로" msgid "Excluded paths" msgstr "제외 경로" msgid "Advanced extraction settings" msgstr "고급 추출 설정" msgid "Extract notes for translators from:" msgstr "번역 참고 주석 추출 대상:" msgid "Comments prefixed with:" msgstr "다음 접두부를 붙인 주석:" msgid "All comments" msgstr "모든 주석" msgid "Additional xgettext flags:" msgstr "xgettext 추가 플래그:" msgid "Additional keywords" msgstr "추가 키워드" msgid "Name of the project the translation is for" msgstr "번역 프로젝트 이름" msgid "Team name and email address or URL" msgstr "팀 이름과 이메일 주소 또는 URL" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "예: nplurals=2; plural=(n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (추천)" msgid "Please save the file first. This section cannot be edited until then." msgstr "" "먼저 파일을 저장하세요. 저장하기 전까지는 이 구역을 편집할 수 없습니다." msgid "Placeholders correctness" msgstr "자리 표시자 정확성 검토" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "자리 표시자 \"%s\"가 번역문에서 누락되었습니다." #, c-format msgid "Superfluous placeholder “%s” that isn’t in source text." msgstr "원문에 없는 \"%s\" 자리 표시자가 번역문에 들어갔습니다." msgid "Plural form translations" msgstr "복수 형식 번역" msgid "Not all plural forms are translated." msgstr "모든 서수 형식이 번역되지 않았습니다." msgid "Inconsistent upper/lower case" msgstr "일치하지 않는 대소문자" msgid "The translation should start as a sentence." msgstr "번역문은 문장처럼 시작해야 합니다." msgid "The translation should start with a lowercase character." msgstr "번역문은 소문자로 시작해야 합니다." msgid "Inconsistent whitespace" msgstr "일치하지 않는 공백 문자" msgid "The translation doesn’t start with a space." msgstr "번역문이 공백으로 시작하지 않았습니다." msgid "The translation starts with a space, but the source text doesn’t." msgstr "번역문이 공백으로 시작했으나, 원문은 그렇지 않습니다." msgid "The translation is missing a newline at the end." msgstr "번역문의 끝에 줄 바꿈이 없습니다." msgid "The translation ends with a newline, but the source text doesn’t." msgstr "번역문의 끝은 줄 바꿈이 되나 원문은 줄 바꿈이 되지 않습니다." msgid "The translation is missing a space at the end." msgstr "번역문 마지막에 공백이 없습니다." msgid "The translation ends with a space, but the source text doesn’t." msgstr "번역문 마지막에 공백이 있으나, 원문은 그렇지 않습니다." msgid "Punctuation checks" msgstr "문장 부호 검사" #, c-format msgid "The translation should end with “%s”." msgstr "번역문은 \"%s\"(으)로 끝나야 합니다." #, c-format msgid "The translation should not end with “%s”." msgstr "번역문은 \"%s\"로 끝나지 말아야 합니다." #, c-format msgid "The translation ends with “%s”, but the source text ends with “%s”." msgstr "번역문은 \"%s\"(으)로 끝나나, 원문은 \"%s\"(으)로 끝납니다." msgid "Cloud" msgstr "클라우드" msgid "Clear Menu" msgstr "메뉴 지우기" msgid "Clear menu" msgstr "메뉴 지우기" msgid "Comment:" msgstr "주석:" msgid "Update" msgstr "업데이트" msgid "&Delete" msgstr "삭제(&D)" msgid "Delete the comment" msgstr "설명 삭제" msgid "Edit project" msgstr "프로젝트 편집" msgid "Project name:" msgstr "프로젝트 이름:" msgid "Browse" msgstr "찾아보기" msgid "Add directory to the list" msgstr "디렉터리를 목록에 추가" msgid "OK" msgstr "확인" msgid "&File" msgstr "파일(&F)" msgid "&New…" msgstr "새로 만들기(&N)…" msgid "New from &POT/PO file…" msgstr "POT/PO 파일로 새로 만들기(&P)..." msgid "New From &POT/PO File…" msgstr "POT/PO 파일로 새로 만들기(&P)..." msgid "&Open…" msgstr "열기(&O)…" msgid "Open Recent" msgstr "최근 파일 열기" msgid "Open recent" msgstr "최근 파일 열기" msgid "Open cloud translation…" msgstr "클라우드 번역 열기…" msgid "Open Cloud Translation…" msgstr "클라우드 번역 열기…" msgid "&Start window" msgstr "시작 창(&S)" msgid "&Start Window" msgstr "시작 창(&S)" msgid "Catalogs &manager" msgstr "카탈로그 관리자(&M)" msgid "Catalogs &Manager" msgstr "카탈로그 관리자(&M)" msgid "&Close" msgstr "닫기(&C)" msgid "&Save" msgstr "저장(&S)" msgid "Save &as…" msgstr "다른 이름으로 저장(&A)…" msgid "Save &As…" msgstr "다른 이름으로 저장(&A)…" msgid "Compile to MO…" msgstr "MO로 컴파일…" msgid "E&xport to HTML…" msgstr "HTML로 내보내기(&X)…" msgid "Check for updates…" msgstr "업데이트 확인…" msgid "Settings…" msgstr "설정…" msgid "&Preferences" msgstr "기본 설정(&P)" msgid "E&xit" msgstr "나가기(&X)" msgid "Quit" msgstr "끝내기" msgid "Copy from singular" msgstr "단수 표현 복사" msgid "Copy From Singular" msgstr "단수 표현 복사" msgid "Translation needs &work" msgstr "작업이 필요한 번역(&W)" msgid "Translation Needs &Work" msgstr "작업이 필요한 번역(&W)" msgid "Edit &comment" msgstr "주석 편집(&C)" msgid "Edit &Comment" msgstr "주석 편집(&C)" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "제안" msgid "&Find…" msgstr "찾기(&F)…" msgid "Replace…" msgstr "바꾸기…" msgid "Find next" msgstr "다음 찾기" msgid "Find previous" msgstr "이전 찾기" msgid "Find and Replace…" msgstr "찾고 바꾸기…" msgid "Find Next" msgstr "다음 찾기" msgid "Find Previous" msgstr "이전 찾기" msgid "Show string &ID" msgstr "문자열 ID 표시(&I)" msgid "Show String &ID" msgstr "문자열 ID 표시(&I)" msgid "Show warnings" msgstr "경고 표시" msgid "Show Warnings" msgstr "경고 표시" msgid "Sort by &file order" msgstr "파일순 정렬(&F)" msgid "Sort by &File Order" msgstr "파일순 정렬(&F)" msgid "Sort by &source" msgstr "원본순 정렬(&S)" msgid "Sort by &Source" msgstr "원본순 정렬(&S)" msgid "Sort by &translation" msgstr "번역순 정렬(&T)" msgid "Sort by &Translation" msgstr "번역순 정렬(&T)" msgid "&Group by context" msgstr "상태별 모음(&G)" msgid "&Group By Context" msgstr "상태별 모음(&G)" msgid "Entries with errors first" msgstr "오류 항목을 우선 표시" msgid "Entries with Errors First" msgstr "오류 항목을 우선 표시" msgid "&Untranslated entries first" msgstr "번역하지 않은 항목 먼저(&U)" msgid "&Untranslated Entries First" msgstr "번역하지 않은 항목 먼저(&U)" msgid "&Show code occurrences" msgstr "코드 출현 횟수 표시(&S)" msgid "&Show Code Occurrences" msgstr "코드 출현 횟수 표시(&S)" msgid "Show sidebar" msgstr "가장자리 표시줄 표시" msgid "Show status bar" msgstr "상태 표시줄 표시" msgid "&Translation" msgstr "번역(&T)" msgid "&Update from source code" msgstr "소스 코드에서 업데이트(&U)" msgid "&Update from Source Code" msgstr "소스 코드에서 업데이트(&U)" msgid "Update from &POT file…" msgstr "POT 파일에서 업데이트(&P)…" msgid "Update from &POT File…" msgstr "POT 파일에서 업데이트(&P)…" msgid "Sync with Crowdin" msgstr "Crowdin 동기화" msgid "Pre-&translate…" msgstr "사전 번역(&T)…" msgid "&Validate translations" msgstr "번역 검증(&V)" msgid "&Validate Translations" msgstr "번역 검증(&V)" msgid "Remove Same-as-Source Translations" msgstr "원본과 동일한 번역 제거" msgid "&Purge deleted translations" msgstr "삭제한 번역을 완전히 제거(&P)" msgid "&Purge Deleted Translations" msgstr "삭제한 번역을 완전히 제거(&P)" msgid "&Properties…" msgstr "속성(&P)…" msgid "&Go" msgstr "이동(&G)" msgid "&Done and next" msgstr "끝내고 다음으로 진행(&D)" msgid "&Done and Next" msgstr "끝내고 다음으로 진행(&D)" msgid "Previously edited" msgstr "이전 편집 항목" msgid "Previously Edited" msgstr "이전 편집 항목" msgid "&Previous translation" msgstr "이전 번역(&P)" msgid "&Previous Translation" msgstr "이전 번역(&P)" msgid "&Next translation" msgstr "다음 번역(&N)" msgid "&Next Translation" msgstr "다음 번역(&N)" msgid "P&revious unfinished" msgstr "이전 미완료(&R)" msgid "P&revious Unfinished" msgstr "이전 미완료(&R)" msgid "Ne&xt unfinished" msgstr "다음 미완료(&X)" msgid "Ne&xt Unfinished" msgstr "다음 미완료(&X)" msgid "Previous plural form" msgstr "이전 복수 형태" msgid "Previous Plural Form" msgstr "이전 복수 형태" msgid "Next plural form" msgstr "다음 복수 형태" msgid "Next Plural Form" msgstr "다음 복수 형태" msgid "&Online help" msgstr "온라인 도움말(&O)" msgid "&Online Help" msgstr "온라인 도움말(&O)" msgid "&GNU gettext manual" msgstr "GNU gettext 설명서(&G)" msgid "&GNU gettext Manual" msgstr "GNU gettext 설명서(&G)" msgid "&About Poedit" msgstr "Poedit 정보(&A)" msgid "&About" msgstr "정보(&A)" msgid "Extractor setup" msgstr "추출 프로그램 설정" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "세미콜론(;)으로 구분한 확장자 목록(예 *.cpp;*.h):" msgid "Invocation:" msgstr "실행:" msgid "Command to extract translations:" msgstr "번역을 추출할 명령:" 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" "입니다(하단 참조)." msgid "An item in keywords list:" msgstr "키워드 목록의 항목:" msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "키워드 명령줄에 하나 붙일 수 있습니다.\n" "%k는 키워드를 의미합니다." msgid "An item in input files list:" msgstr "입력 파일 목록의 항목:" #, 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는 파일 이름을 의미합니다." msgid "Source code charset:" msgstr "소스 코드 문자 집합:" #, 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는 문자 집합을 의미합니다." msgid "Translation Properties" msgstr "번역 속성" msgid "Project name and version:" msgstr "프로젝트 이름과 버전:" msgid "Language team:" msgstr "언어 팀:" msgid "Plural forms:" msgstr "복수 형태:" msgid "Use default rules for this language" msgstr "이 언어에 기본 규칙 사용" msgid "Use custom expression" msgstr "사용자 정의 표현식 사용" msgid "Learn about plural forms" msgstr "서수 형식 알아보기" msgid "Charset:" msgstr "문자 집합:" msgid "Advanced Extraction Settings…" msgstr "고급 확장 프로그램 설정…" msgid "Advanced extraction settings…" msgstr "고급 확장 프로그램 설정…" msgid "Translation properties" msgstr "번역 속성" msgid "Sources Paths" msgstr "소스 경로" msgid "Sources paths" msgstr "소스 경로" msgid "Extract text from source files in the following directories:" msgstr "다음 디렉터리의 소스 파일에서 텍스트를 추출합니다:" msgid "Base path:" msgstr "기본 경로:" msgid "Sources Keywords" msgstr "소스 키워드" msgid "Sources keywords" msgstr "소스 키워드" msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "다음 키워드(함수 이름)를 사용하여 소스 파일에서\n" "번역할 문자열을 인식합니다:" msgid "Also use default keywords for supported languages" msgstr "지원되는 언어의 기본 키워드 또한 사용" msgid "Learn about gettext keywords" msgstr "gettext 키워드에 대해 알아보기" msgid "Update summary" msgstr "업데이트 요약" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" "이 문자열은 소스에는 있지만 파일에는 없습니다.\n" "poedit에서 해당 문자열을 파일에 바로 추가하겠습니다." msgid "New strings" msgstr "새 문자열" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" "이 문자열이 더 이상 소스 코드에 없습니다.\n" "poedit에서 해당 문자열을 파일에서 제거하겠습니다." msgid "Obsolete strings" msgstr "제거한 문자열" msgid "(0 new, 0 obsolete)" msgstr "(신규 0, 제거 0)" msgid "Open" msgstr "" msgid "Open file" msgstr "파일 열기" msgid "Save file" msgstr "파일 저장" msgid "Validate" msgstr "검증하기" msgid "Check for errors in the translation" msgstr "번역 오류 검사" msgid "Update from code" msgstr "코드에서 업데이트" msgid "Update from Code" msgstr "코드에서 업데이트" msgid "Update from source code" msgstr "소스 코드에서 업데이트" msgid "Sidebar" msgstr "가장자리 창" msgid "Show or hide the sidebar" msgstr "가장자리 창을 표시하거나 숨깁니다" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. msgid "Previous source text" msgstr "이전 원본 텍스트" msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "부정확한 번역을 채워둔, 업데이트하여 바뀌기 전의 오래된 원본 텍스트입니다." msgid "Notes for translators" msgstr "번역 참고" msgid "Comment" msgstr "참고 설명" msgid "Add comment" msgstr "주석 추가" msgid "Add Comment" msgstr "주석 추가" msgid "Delete From Translation Memory" msgstr "TM에서 삭제" msgid "Delete from translation memory" msgstr "TM에서 삭제" msgid "Translation suggestions" msgstr "번역 제안" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). msgid "No matches found" msgstr "일치하는 결과가 없습니다" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). msgid "No Matches Found" msgstr "일치하는 결과 없음" msgid "This string was found in Poedit’s translation memory." msgstr "이 문자열은 Poedit의 번역 기억 장소에 있습니다." msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "원문이 주어져야 번역 제안 기능을 이용할 수 있습니다. 실제 텍스트가 아닌 ID만 " "있는 경우 작업을 실행할 수 없습니다." msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "번역 제안 기능에서 원본 내용의 언어를 알아야 합니다. Poedit에서 이 파일의 언" "어를 확인하지 못했습니다." msgid "The TMX file is malformed." msgstr "TMX 파일이 잘못되었습니다." msgid "No translations were found in the TMX file." msgstr "TMX 파일에서 번역을 찾을 수 없습니다." #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "TM 데이터베이스가 손상되었습니다: %s(%d)." #, c-format msgid "Translation memory error: %s (%d)." msgstr "TM 오류: %s (%d)." msgid "Cannot create temporary directory." msgstr "임시 디렉터리를 만들 수 없습니다." msgid "There are no translations. That’s unusual." msgstr "번역이 없습니다. 흔한 일은 아니네요." msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "Translators typically use PO template files (POTs) prepared for them by the " "developer." msgstr "" "소스 코드에서 번역 가능한 항목은 Gettext 시스템이 자동으로 추출합니다.\n" "이 방법으로 최신 버전으로 정확하게 유지할 수 있습니다.\n" "번역자들은 보통 개발자들이 준비한 PO 양식 파일(POT)를 사용합니다." msgid "(Learn more about GNU gettext)" msgstr "(GNU gettext에 대해 자세히 알아보기)" msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "이 파일의 번역을 채우는 가장 간단한 방법은 POT에서 업데이트하는 방법입니다:" msgid "Update from POT" msgstr "POT 파일로 업데이트" msgid "Take translatable strings from an existing POT template." msgstr "기존 POT 양식에서 번역할 수 있는 문자열을 가져옵니다." msgid "" "You can also extract translatable strings directly from the source code:" msgstr "소스 코드에서 직접 번역 가능 문자열을 가져올 수도 있습니다:" msgid "Extract from sources" msgstr "소스에서 가져오기" msgid "Configure source code extraction in Properties." msgstr "속성에서 소스 코드 추출을 설정합니다." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #, c-format msgid "Version %s" msgstr "버전 %s" msgid "Create new" msgstr "새로 만들기" msgid "Create new translation from POT template." msgstr "POT 양식에서 새 번역을 만듭니다." msgid "Browse files" msgstr "파일 찾아보기" msgid "Open and edit translation files." msgstr "번역 파일을 열어 편집합니다." msgid "Translate cloud project" msgstr "클라우드 프로젝트 번역" msgid "Collaborate with other people online." msgstr "다른 번역가와 온라인에서 공동 번역을 진행합니다." msgid "Recent files" msgstr "최근 파일" msgid "Sync" msgstr "동기화" 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") #, c-format msgid "About %s" msgstr "%s 정보" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #, c-format msgid "%s Preferences" msgstr "%s 설정" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "서비스" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "%s 숨기기" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "다른 항목 숨기기" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "모두 표시" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "%s 끝내기" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "설정…" msgid "Preferences..." msgstr "설정…" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "최근 목록" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "자주 보는 항목" msgid "&Apply" msgstr "적용(&A)" msgid "Apply" msgstr "적용" msgid "&Back" msgstr "뒤로(&B)" msgid "Back" msgstr "뒤로" msgid "&Cancel" msgstr "취소(&C)" msgid "&Clear" msgstr "지우기(&C)" msgid "Clear" msgstr "지우기" msgid "Copy" msgstr "복사" msgid "Cu&t" msgstr "잘라내기(&T)" msgid "Cut" msgstr "잘라내기" msgid "Edit" msgstr "편집" msgid "&Quit" msgstr "끝내기(&Q)" msgid "Help" msgstr "도움말" msgid "&New" msgstr "새로 만들기(&N)" msgid "New" msgstr "새 파일" msgid "&No" msgstr "아니요(&N)" msgid "No" msgstr "아니요" msgid "&OK" msgstr "확인(&O)" msgid "Open…" msgstr "열기…" msgid "&Open..." msgstr "열기(&O)..." msgid "Open..." msgstr "열기..." msgid "&Paste" msgstr "붙여넣기(&P)" msgid "Paste" msgstr "붙여넣기" msgid "Preferences" msgstr "설정" msgid "&Redo" msgstr "다시 실행(&R)" msgid "Refresh" msgstr "새로 고침" msgid "&Save as" msgstr "다른 이름으로 저장(&S)" msgid "Save as" msgstr "다른 이름으로 저장" msgid "Select &All" msgstr "모두 선택(&A)" msgid "Select All" msgstr "모두 선택" msgid "&Undo" msgstr "실행 취소(&U)" msgid "&Yes" msgstr "예(&Y)" msgid "Yes" msgstr "예" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "위쪽 방향키" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "아래쪽 방향키" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "왼쪽 방향키" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "오른쪽 방향키" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "shift" poedit-3.5/locales/kk.mo0000644000175100001770000022142214664354154012174 00000000000000t*9 9 9& 9G9<[99J9g9 ^:h: w:: ::::::::::::::;";&;8;J;P;U;];e;w;;; ; ;;;; ;;;; <<8<T<Z<`<i<o<x<< < < <<<< =&=?=V=m=s=x====== > >>'>/>8> <> H> T>a> p>|> > >> >> >>> ?%?.?N?k?? ? ?1??'?@6@ P@[@7a@6@@)@A A]*AA<ADA$BBB IBVBB B"BC+*C)VC CCCCCCCC D'D#OCOYO(xOTO OP P P!P5PFP[P pP zP P PPPPPPP PQ QQ Q (Q 4QAQQQpQQQ7RzR:S ASMS`S |SSS2SST T"T@T XTyT T TTTT;T(U1UNUaU pU zUUU UUUU:U 6V<DV VV.WJWZW*jWWW WWW*WXX,X =X HXSXYY,Y EYQYbYsYvY#Y\YZ'Z/AZ+qZZ$Z%ZZ[['[+[[[ [ [ \7\ Q\[\j\ y\\\\\\\\\\]]]]=]^1^L^ne^E^_!_;:_ v___@__`,a,aa bb2%b*Xbbbw%cjc dd#d2d%Gdmdddddd dde ee#e>eCe8Kee eee e e ee e ee f( f4f:fzSfffff f f g g!g )g 4g Ag Kg Xg dgoggg"gggh h 'h 4h@hGh Ph]hwhhh h hhhh h ii!+i Mi[icikiti |iiiiiii i i jj,jH6&s-9+E(e+$" G Q[ l&w&"# A 3w@ 8+>{ Q*\g 0\BI\U-"*M&laI!?axA$.`S""/,*,W& .2F O`[$ $2Wf$y$@ 60Ct"n 3O%nCG(aR*(1D\t(L/'W+q0'$57(m/g'Hp,, 7 @5M!#8: /[8:/)/Y1T,$8"/4=d/= ~9(!;#]?g)G`sPq1D!-POI}T!x3p~h#0WFY %/IQNgMC-=AYEA#Tqe#4z  B Z r )   al(91b!4#_<U24%#Z'~t'=)0KO^& $ED]''8#Tx,,w#';_C_(6BWFT2#,"#OAs q5[%mseM U  !!!1!d6!!=!E!>"0^""")""*"|Lo[GvO1~M<Jf^\^tSJIM`'W oYL3NF1Bl0nqg3Rm{X/'|ibk)+&j_A"0-}_Z~Z)c]yt..mi'6 kr?@jay{W:7!,w4,U 46@9}BR Uufn+Gd EL/YCin/=x#>p`z%FC8V~4DuJXb-G [c|As*[7#gdem O*QSw*2Pv; ?"Dq`]p0br H1NT":5h+Q,eA> Yke<X ]@RQcu Hpr!%jf;(8xC7TB^{V=dKEPlWIFx\V(Twl KhO. q-}Z) NU#IM?6=(&Etva>zS\D<5z2H9ys5;:KP3 go$$ 8a&h!_s%92$  (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd AccountAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add accountAdd 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 languagesAlt+Always 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 errorCrowdin is an online localization management platform and collaborative translation tool.Ctrl+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 no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownDownloading 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:EnterEnter 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 loading translation file “%s”.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export errorExport 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…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)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport from TMX…Import translation files…Importing translation memory from “%s” 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 CrowdinLeftLine %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 translations were found in the TMX file.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKObsolete stringsOneOnly 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 translation templateOpen...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 translationsQuitQuit %sReading file content failed with the following error: %sRecentRecent 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 FinderReviewRightSaveSave &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 languageServicesSet LanguageSet languageSettings…Shift+Show AllShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow summary after updating filesShow 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.These strings are no longer in the source code. Poedit will remove them from the file now.These strings were found in the sources but were not in the file. Poedit will add them to the file now.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 entries in the file are probably incorrect.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.UntransUpUpdateUpdate 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 the file failed. Click on 'Details >>' for details.Updating 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown 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: 2024-08-30 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 нұсқаулығыӨ&туКонтекст бойынша &топтауКонтекст бойынша &топтау&Көмек&Жаңа&Жаңа…&Келесі >&Келесі аударма&Келесі аударма&Жоқ&ОКЖе&лідегі көмекЖе&лідегі көмекА&шу...А&шу…&Кірістіру&Баптаулар&Баптаулар…&Алдыңғы аударма&Алдыңғы аудармаҚас&иеттері…Ө&шірілген аудармаларды жою&Өшірілген аудармаларды жою&ШығуҚа&йталауАлмасты&ру&СақтауҚалайша &сақтауКод кездесулерін көр&сетуКод кездесулерін көр&сетуІ&ске қосылу терезесіІ&ске қосылу терезесі&Аударма&БолдырмауАлд&ымен аударылмаған нәрселер Алд&ымен аударылмаған нәрселер &Бастапқы кодтан жаңарту&Бастапқы кодтан жаңартуАудармаларды &тексеруАудармаларды &тексеруТү&рі&Иә(0 жаңа, 0 ескірген)(GNU gettext туралы көбірек білу)(Жаңа: %i, ескірген: %i)(Негізгі тілді қолдану)(кіру орындалмаған)(Windows 8 немесе одан жаңасын талап етеді)< &Алдыңғы<атаусыз>%s туралыТіркелгіТіркелгілерҚосуТіркелгіні қосуПікір қосуФайлдарды қосу…Бумаларды қосу…Жобаны қосуШаблон бойынша қосу…Тіркелгіні қосуПікір қосуТізімге буманы қосуФайлдарды қосу…Бумаларды қосу…Жобаны қосуШаблон бойынша қосу…Қосымша кілттік сөздерҚосымша xgettext жалаушалары:КеңейтілгенЭкстракторлардың кеңейтілген баптаулары…Экстракторлардың кеңейтілген баптауларыЭкстракторлардың кеңейтілген баптаулары…Барлық аудармалар файлдарыБарлық пікірлерБарлық жолдарСонымен қатар, үнсіз келісім бойынша кілтсөздерді қолдауы бар тілдер үшін қолдануAlt+Фокусты әрқашан мәтін енгізу жолына орнатуКіріс файлдар тізімінің біреуі:Кілт сөздер тізімінің біреуі:Сыртқы түріІске асыру"%s" экстракторын өшіруді шынымен қалайсыз ба?Аудармалар жадысын тастауды шынымен қалайсыз ба?Жаңартуларға автотексеруСақтағанда, MO файлын авто жасауАртқаНегізгі жолы:Бета нұсқаларында соңғы мүмкіндіктер және жақсартулар бар, бірақ, олар тұрақсыздау болуы мүмкін.Барлығын алдына әкелуPO файлы қате: msgstr көпше түрі msgid_plural нәрсесіз көрсетілгенPO файлы қате: msgstr жекеше түрі msgid_plural нәрсесімен бірге қолданылғанАударма жолындағы жарамсыз белгілеу.ШолуФайлдарды шолуҮнсіз келісім бойынша, дәлсіз нәтижелер де қосылады, бірақ, жөндеу керек етіп белгіленеді. Тек дәл сәйкестіктерді қолдану үшін бұл опцияны іске қосыңыз.Бас тартуБас тарту…Уақытша буманы жасау мүмкін емес.Бағдарламаны орындау мүмкін емес: %sБелгісіз тілден алдын-ала аудару мүмкін емес.Қайнар көз мәтіні болмаған кезде алдын-ала аудару мүмкін емес.Бас әріппенКаталогтар &басқарушысыКаталогтар &басқарушысыКаталогтар басқарушысыБағдарлама тілін өзгертуКодтауы:Құжатты қазір тексеруГрамматиканы теру кезінде тексеріп отыруЕмлені теру кезінде тексеріп отыруЖаңартуларды тексеру…Аударманы қателерге тексеруЖаңартуларды тексеру…Емлені тексеруТазартуМәзірді тазартуАударманы тазартуМәзірді тазартуАударманы тазартуЖабуКод кездесулеріКод кездесулеріБасқа адамдармен бірігіп онлайн жұмыс жасаңыз.Бастапқы код файлдарын жинау…Аудармаларды шығарып алу командасы:ТүсіндірмеТүсіндірме:Пікірлер префиксі:MO файлына компиляциялау…Қалайша компиляциялау…Компиляцияланған аудармалар файлдарыБаптаулар ішінен бастапқы кодтан аудармаларды шығарып алуды баптаңыз.РастауҚолдау көрсетілетін бұлттық локализация платформаларында басқарылатын аудармаларды синхрондау үшін оларды Poedit қолданбасына байланыстырыңыз.КөшіруЖекеше түрден көшіріп алуБастапқы код мәтінінен көшіруЖекеше түрден көшіріп алуБастапқы код мәтінінен көшіруЕмлені автоматты түрде түзетіп отыруLocalazy жоба ақпаратын жүктеп алу мүмкін емес.Файлдын жүктеу мүмкін емес, ол зақымдалған болуы мүмкін.%s файлын сақтау мүмкін емес.Жаңасын жасауЖаңа аударманы жасауPOT файлынан жаңа аударманы жасау.Жаңа аудармалар жобасын жасауCrowdin қатесіCrowdin - локализацияны онлайн басқару платформасы және бірлескен аударма құралы.Ctrl+Қ&иып алуТаңдауыңызша экстракторлар:Таңдауыңызша экстракторлар:Саймандар панелін баптау…Қиып алуДерекқордың дискідегі өлшемі:ӨшіруАудармалар жадысынан өшіруЭкстракторды өшіруАудармалар жадысынан өшіруЖобаны өшіруТүсіндірмені өшіруЖобаны өшіруЖобаны өшіру ешбір аударма файлын өшірмейді.Бумалар:"%s" жобасын өшіруді қалайсыз ба?Файлды дисктен қайта жүктеуді қалайсыз ба? Олай істесеңіз, Poedit ішіндегі сақталмаған өзгерістеріңіз жоғалатын болады.Осыдан былай қолданылмайтын аудармаларды өшіруді қалайсыз ба?СақтамауСақтамауКелесіде көрсетпеуДәл сәйкестіктерді жөндеу керек етіп белгілемеуКелесіде көрсетпеуТөменСоңғы аудармаларды жүктеп алу…Бұл жобада аудармаларды жүктеп алу мүмкіндігі сөндірілген.Осында бумалар немесе файлдарды тартып әкеліңізОсында бумалар немесе файлдарды тартып әкеліңіз&ШығуТүзетуТү&сіндірмені түзетуТү&сіндірмені түзетуТүсіндірмені түзетуТүсіндірмені түзетуЖобаны түзетуЖобаны түзетуӨңдеуТүзету…Пошта:EnterТолық экранға өтуБұл файлдағы нәрселердің көпше түрлері файлдың Plural-Forms өрісіндегі көрсетілген көпше түрінен өзгешеАлдымен қателері бар нәрселерАлдымен қателері бар нәрселерҚателері бар жолдар қызыл түспен белгіленді. Қате ақпараты ондай жол таңдалған кезде көрсетіледі."%s" аудармалар файлын жүктеу қатемен аяқталды.Файлды ашу қатесіФайлды сақтау қатесіXLIFF файлын жүктеу қатесі: %sҚателерБарлығыЕлемейтін жолдарTMX пішіміне экспорттау…Қалайша экспорттау…Экспорттау қатесіTMX пішіміне экспорттау…"%s" ішіне аудармалар жадысын экспорттау сәтсіз аяқталды.Аудармаларды экспорттау…Бастапқы кодтардан алуАудармашылар үшін пікірлерді қайдан алу:Келесі бумалардағы бастапқы код файлдарынан мәтінді алу:Аударуға келетін жолдарды шығару…Экстрактор баптауларыЭкстракторларСәтсіз команда: %sPoedit үрдісімен байланысу қатесі.Алынған аудармалары бар файлды жүктеу сәтсіз аяқталды.Gettext каталогтарын біріктіру сәтсіз аяқталды.Аудармалар жадысын жаңарту сәтсіз аяқталды: %sФайлФайлды ашу мүмкін емес"%s" файлы жоқ болып тұр."%s" файлы аударма файлы емес."%s" файлы тек оқу үшін қолжетерліқ, сақталмайды. Оны басқа атымен сақтаңыз.Аяқтау…ТабуКелесіАлдыңғыТабу және алмастыру…Түсіндірмелер ішінен іздеуБастапқы мәтіндерден табуАудармалардан табуКелесіАлдыңғыТілді түзетуТілді түзетуТақырыптаманы дұрыстауӨрісті дұрыстауFlutter аудармалар файлдарыПішім %iФорма %i (қолданылмайды)Жиі қолданылатынGNU gettextЖалпыHTML файлдарыКөмек%s жасыруҚалғанын жасыруБүйір панелін жасыруҚалып-күй жолағын жасыруБұл хабарламаны жасыруБұлттық синхрондау қалай жұмыс істейді?IDЖоюды таңдасаңыз, өшірілген деп белгіленген барлық аудармалар өшірілетін болады. Олар болашақта қайта қосылса, оларды қайта аударуға керек болады.Егер сіз файлдарыңызға қатынауды бұрын тайдырсаңыз, оны Жүйелік баптаулар > Қауіпсіздік және жекелік > Жекелік > Файлдар және бумалар ішінен іске қоса аласыз.Егер сіз файлдарыңызға қатынауды бұрын тайдырсаңыз, оны Жүйелік баптаулар > Қауіпсіздік және жекелік > Файлдар және бумалар ішінен іске қоса аласыз.ЕлемеуРегистрді елемеуTMX-тан импорттау…Аударма файлдарын импорттау…Импорттау қатесіTMX-тан импорттау…Аударма файлдарын импорттау…"%s" ішінен аудармалар жадысын импорттау сәтсіз аяқталды.Аудармаларды импорттау…Қайда: %sБета нұсқаларын қосаЖоғарғы/төменгі регистр сәйкессіздігіБос аралықтар сәйкессіздігіАудармашы жөніндегі ақпаратОрнатуЖарамсыз файлШақыру:JSON аударма файлдарыҰстауТіл атауы немесе кодыАударма тілі бастапқы тілмен бірдей.Аударма тілі әлі көрсетілмеген.Аударманың тілі:Тілді таңдауТілдік топ:Тіл:Соңғы рет өзгертілгенGettext кілттік сөздері туралы көбірек біліңізКөпше түрлері жөнінде білуКөбірек білу%s туралы көбірек білуCrowdin туралыСол жақЖол %d, "%s" файлында, зақымдалған (жарамсыз %s дерегі).Жол аяқтаулары:Нүктелі үтірмен ажыратылған кеңейтулер тізімі (мыс. *.cpp;*.h):Ағылшын тілін жүктеуLocalazy – кез келген адамға өз өнімдері мен мазмұнын бірнеше тілге оңай аударуға мүмкіндік беретін жоғары автоматтандырылған локализация платформасы.MO файлдарын Poedit ішінде түзетуге болмайды.Кіші әріпті қылуБас әріпті қылуБұл POT файлынан жаңа аударманы жасау.Жарамсыз тақырыптама: "%s"Тіркелгілерді басқаруБасқару…Өзгерістерді біріктіру…БүктеуКелесі үшін аударма жобасының аталуыАты:Келе&сі аяқталмағанКеле&сі аяқталмағанЖөндеу керекЖөндеу керекЖолдарға фокус алуға тыйым салу. Қосулы тұрса, пернетақта навигациясы үшін Ctrl мен жақтар пернелерін қолдануғы тиістісіз, бірақ мәтінді тере аласыз, фокусты алу үшін Tab пернесін басу керек емес.ЖаңаPOT/PO &файлынан жаңа…POT/PO &файлынан жаңа…Жаңа жолдарКелесі көпше түріКелесі көпше түріЖоқСәйкестік табылмадыБірде-бір жазбаны алдын-ала аудару мүмкін емес.Файлда бұл жолдың бастапқы кодтарда кездесетіні туралы ақпарат жоқ.Сәйкестік табылмадыАудармалар мәселелері табылмады.Сіздің тіркелгіңізде бірде-бір аударма жобасы тіркелмеген.TMX файлынан аудармалар табылмады.Қолданылу ақпараты жоқКөпше түрлер толығымен аударылмаған.Авторизацияланбаған, қайтадан кіріңіз.Аудармашылар үшін ескертулерОКЕскірген жолдарБірӨзіңіздің АЖ сапасына сенімді болсаңыз ғана іске қосыңыз. Үнсіз келісім бойынша, АЖ ішінен келген барлық сәйкестіктер жөндеу керек ретінде белгіленеді және оларды қолдану алдында тексеру керек болады.Тек дәл сәйкестіктерді толтыруБұлттық аударманы ашу…Соңғысын ашуАудармалар файлдарын ашу және түзету.Бұлттық аударманы ашуБұлттық аударманы ашу…Файлды ашуТүзеткіште ашуТүзеткіште ашуЖуырдағыны ашуАударма үлгісін ашуАшу...Ашу…ОпцияларБасқаАлдыңғ&ы аяқталмағанАлдыңғ&ы аяқталмағанPO аударма файлдарыPOT аударма үлгілеріPOT файлдары тек үлгілер, олардың ішінде аудармалар жоқ. Аударманы жасау үшін, үлгі негізінде жаңа PO файлын жасаңыз.КірістіруКірістіру және сәйкестендіру стиліЖолдарЖобадағы барлық файлдардан бастапқы кодтан жаңартуды орындайды.Рұқсат етілмеген.“%s” толтырғышы аудармада жоқ.Толтырғыштың дұрыстығыОрнына сәйкес PO файлын ашып, түзетіңіз. Оны сақтаған кезде, MO файлы да жаңартылады.Алдымен файлды сақтаңыз. Оған дейін бұл санатты түзету мүмкін емес.КөпшеКөпше түрі аудармаларыФайл қолданатын көпше түрлерінің өрнегі %s үшін тән емес.Көпше түрлері:PoeditPoedit - каталогтарды басқаруPoedit "%s" файлындағы жарамсыз құраманы автотүзеткен.Poedit жаңа жолдарды тек файлдың алдыңғы аудармаларынан, немесе сіздің аудармалар жадысынан толтыру талабын жасай алады. Аудармалар жадысы бос болған кезде оны қолдану пайдасы аз, бірақ, оған жаңа аудармаларды қосқан кезде, пайдасы арта түседі.Poedit бұл жол қолданылатын бастапқы код жерін көрсете алмайды, өйткені ол файл көрсетілген жерде жоқ болып тұр, немесе ол нақты файлға көрсетіп тұрмаған символдық сілтеме болып тұр.Poedit - қолдануға ыңғайлы аудармалар түзетушісі.Poedit "%s" файлын аша алмады.Алдын-ала ау&дару…Алдын-ала аударуАлдын-ала аударылған%u жол алдын-ала аударылған%u жол алдын-ала аударылғанАудармалар жадысынан алдын-ала аудару…Алдын-ала аудару…Алдын-ала аудару әрекеті аудармалар жадысынан аудармалары әлі жоқ жолдар үшін дәл немесе дәлсіз сәйкестіктерді тауып, олардың аудармаларын толтырады.Алдын-ала аудару қайнар көз мәтінінің бар болуын талап етеді. Нақты мәтін орнына тек ID қолданса, ол жасамайды.Алдын-ала аудару қайнар көз тілінің белгілі болуы талап етеді. Poedit оны бұл файлдан таба алмады.БаптауларБаптаулар...Баптаулар…Жолдарды дайындау…Бар болып тұрған файлдардың пішімдеуін сақтап отыруАлдыңғы көпше түріАлдыңғы көпше түріБұрынғы қайнар көз мәтініОсыған дейін түзетілгенОсыған дейін түзетілгенЖоба аты мен нұсқасы:Жоба аты:Жоба:ЖобаларТыныс белгілерін тексеруТазартуӨшірілген аудармаларды жоюШығу%s шығуФайл құрамасын оқу келесі қатемен сәтсіз аяқталды: %sЖуырдағыЖуырдағы файлдарҚайталауЖаңартуФайлды қайта жүктеуФайлды қайта жүктеуҚалды: %dАлмастыруБ&арлығын алмастыруБ&арлығын алмастыруАлмастыру жолыАлмастыру…Міндетті Plural-Forms тақырыптамасы жоқ.ТастауАудармалар жадысын тастауАудармалар жадысын тастау әрекеті одан барлық сақталған аудармаларды қайтармастай өшіреді. Бұл әрекетті болдырмау мүмкін емес болады.Finder ішінен көрсетуТексеруОң жақСақтауҚала&йша сақтау…Қала&йша сақтау…Сонда да сақтауСонда да сақтауҚалайша сақтауҚалайша сақтау…Өзгерістерді сақтауФайлды сақтауСкриншоттар:Б&арлығын таңдауБарлығын таңдауИмпорттау үшін TMX файлдарын таңдаңызБуманы таңдауАударма файлын таңдауИмпорттау үшін аудармалар файларын таңдаңызАударма үлгісін таңдауӨз тіліңізді таңдаңызҚызметтерТілді орнатуТілді орнатуБаптаулар…Shift+Барлығын көрсетуБүйір панелін көрсетуЕмлені тексеру және грамматиканы көрсетуҚалып-күй жолағын көрсетуЖол &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 файлдарының ішкі құрылымына әсер етеді. Сізде арнайы талаптар болса ғана оларды өзгертіңіз, мысалы, нұсқаларды басқару жүйелерді қолдансаңыз.Бұл жолдар бастапқы кодтарда енді жоқ. Poedit оларды файл ішінен қазір өшіреді.Бұл жолдар бастапқы кодтардан табылды, бірақ файлда жоқ. Poedit оларды файл ішіне қазір қосады.Бұл JSON файлы жарамды аудармалар файлы емес және оны Poedit көмегімен түзету мүмкін емес.Бұл файлда көпше түрі бар жолдар бар, бірақ файлдың Plural-Forms өрісі бапталмаған.Бұл файл қайнар көз мәтіні орнына жолдар ID қолданады. Poedit сіз үшін "%s" файлынан ағылшын мәтіндерін жүктей алады.Бұл - экстракторды жөнелту үшін қолданылатын команда. %o шығыс файл атын, %K кілттік сөздер тізімін, %F кіріс файлдар тізімін, ал, %C - кодталу жалаушасын (төменде қараңыз) білдіреді.Бұл жол Poedit-тің аудармалар жадысы ішінен табылды.Бұл жол бастапқы кодталу көрсетсе ғана командалық жолға қосылады. %c кодталу мәнімен алмастырылады.Бұл жол әр кіріс файлы үшін командалық жолына қосылады. %f - файл атымен алмастырылады.Бұл жол әр кілт сөзі үшін командалық жолына қосылады. %k - кілт сөзімен алмастырылады.ЖалпыТүрлендірулерАударуға келетін жазбалар Gettext жүйелерінде қолмен қосылмайды, олар бастапқы кодтан автоматты түрде шығарылады. Осылайша, жүйе ескірмеген және дәл күйде болады. Аудармашылар әдетте өңдіруші дайындаған PO үлгілер файлдарын (POT) қолданады.Бұлттық жобаны аударыАударылды: %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 жолы үшін керек.НөлМасштабaltЖөндеу керекctrlуақытша файлдарды өшірмеу (жөндеу режимі үшін пайдалы)мыс., nplurals=1; plural=0;файл ішінен дәлсіз сәйкестендіруберілген жол нөмірі бар элементке өтуpoedit:// URI-ін талдауАЖ ішінен алдын-ала аударуshiftтіл белгісізқолдауы жоқ нұсқасы (%s)you@example.com"%s" - дұрыс POT файлы емес.poedit-3.5/locales/he.po0000644000175100001770000021570314664354153012172 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "הסתר התראה זו" msgid "Don’t Show Again" msgstr "לא להציג שוב" msgid "Don’t show again" msgstr "לא להציג שוב" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(חדש: %i, מיושן: %i)" msgid "Collecting source files…" msgstr "קובצי המקור נאספים…" msgid "Extracting translatable strings…" msgstr "מחרוזות הניתנות לתרגום מחולצות…" msgid "Failed to load file with extracted translations." msgstr "טעינת הקובץ עם התרגומים המחולצים נכשלה." msgid "Merging differences…" msgstr "ממזג בין ההבדלים…" msgid "Updating translations" msgstr "התרגומים מתעדכנים" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "אי אפשר לפתוח את הקובץ „%s”." msgid "Invalid file" msgstr "קובץ שגוי" #, c-format msgid "Malformed header: “%s”" msgstr "כותרת פגומה: „%s”" msgid "PO Translation Files" msgstr "קובצי תרגום PO" msgid "POT Translation Templates" msgstr "תבניות תרגום POT" msgid "XLIFF Translation Files" msgstr "קובצי תרגום מסוג XLIFF" msgid "JSON Translation Files" msgstr "קובצי תרגום JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "קובצי תרגום Flutter" msgid "All Translation Files" msgstr "כל קובצי התרגום" msgid "The file is in a format not recognized by Poedit." msgstr "הקובץ הוא במבנה שאינו מזוהה על ידי Poedit." msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "קובץ ה־JSON אינו קובץ תרגומים ואי אפשר לערוך אותו ב־Poedit." #, c-format msgid "Reading file content failed with the following error: %s" msgstr "קריאת תוכן הקובץ נכשלה עקב השגיאה הבאה: %s" #, c-format msgid "" "File “%s” is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "הקובץ “%s” הינו לקריאה בלבד ולא ניתן לשמור אותו.\n" "יש לשמור אותו תחת שם אחר." #, c-format msgid "Couldn’t save file %s." msgstr "לא ניתן לשמור את הקובץ %s." msgid "Screenshots:" msgstr "צילומי מסך:" #, c-format msgid "%i line of file “%s” was not loaded correctly." msgid_plural "%i lines of file “%s” were not loaded correctly." msgstr[0] "שורה %i בקובץ „%s” לא נטענה כראוי." msgstr[1] "%i שורות בקובץ „%s” לא נטענו כראוי." msgstr[2] "%i שורות בקובץ „%s” לא נטענו כראוי." msgstr[3] "%i שורות בקובץ „%s” לא נטענו כראוי." #, c-format msgid "Line %d of file “%s” is corrupted (not valid %s data)." msgstr "שורה %d בקובץ “%s” הינה פגומה (נתוני %s לא חוקיים)." msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "קובץ PO פגום: msgstr של צורת יחיד בשימוש יחד עם msgid_plural" msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "קובץ PO פגום: msgstr של צורת ריבוי בשימוש בלי mdgid_plural" msgid "Couldn’t load the file, it is probably damaged." msgstr "לא ניתן לטעון את הקובץ, הוא ככל הנראה פגום." msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "אירעו שגיאות בעת טעינת הקובץ. כתוצאה מכך, ייתכן שחלק מהמידע חסר או פגום." msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "הייתה בעיה בעת עיצוב הקובץ בצורה נקייה (אך הוא נשמר כראוי)." #, 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 וההגדרה שונתה בהתאם." msgid "Error saving file" msgstr "שגיאה בשמירת הקובץ" #, c-format msgid "“%s” is not a valid POT file." msgstr "“%s” אינו קובץ POT חוקי." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "שגיאה בטעינת קובץ XLIFF‏: %s" #, c-format msgid "unsupported version (%s)" msgstr "גרסה בלתי־נתמכת (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML msgid "Broken markup in translation string." msgstr "סימון שגוי במחרוזת תרגום." msgid "(Use default language)" msgstr "(שימוש בשפת ברירת המחדל)" msgid "Language selection" msgstr "בחירת שפה" msgid "Select your preferred language" msgstr "נא לבחור את השפה המועדפת עליך" msgid "You must restart Poedit for this change to take effect." msgstr "יש להפעיל מחדש את Poedit כדי שהשינויים ייכנסו לתוקף." msgid "Add Account" msgstr "הוספת חשבון" msgid "Add account" msgstr "הוספת חשבון" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "מידע נוסף על %s" msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "אפשר לחבר את Poedit לפלטפורמות תרגום ענניות נתמכות כדי לסנכרן מאחורי הקלעים " "תרגומים שמנוהלים בהן." msgid "How does cloud sync work?" msgstr "איך עובד סנכרון ענן?" msgid "Account" msgstr "חשבון" msgid "(not signed in)" msgstr "(לא מחובר)" msgid "File" msgstr "קובץ" msgid "Open cloud translation" msgstr "פתיחת תרגום בענן" msgid "Manage accounts" msgstr "ניהול חשבונות" msgid "Project:" msgstr "מיזם:" msgid "Language:" msgstr "שפה:" msgid "Sign in to Cloud Account" msgstr "כניסה לחשבון ענן" msgid "Sign in to cloud account" msgstr "כניסה לחשבון ענן" msgid "No translation projects listed in your account." msgstr "לא מופיעים מיזמי תרגום בחשבון שלך." msgid "Downloading latest translations…" msgstr "התרגומים העדכניים מתקבלים…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #, c-format msgid "Sign in to %s" msgstr "כניסה אל %s" msgid "Syncing" msgstr "מסנכרן" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s…" msgstr "תרגומים נשלחים אל %s…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s failed." msgstr "שליחת התרגומים אל %s נכשלה." msgid "Syncing error" msgstr "שגיאת סנכרון" msgid "Add" msgstr "הוספה" msgid "Unknown Crowdin error." msgstr "שגיאת Crowdin לא ידועה." msgid "Not authorized, please sign in again." msgstr "לא מורשה, נא להתחבר שנית." msgid "Downloading translations is disabled in this project." msgstr "הורדת תרגומים מושבתת במיזם זה." msgid "Sign In" msgstr "התחברות" msgid "Sign in" msgstr "התחברות" msgid "Sign Out" msgstr "התנתקות" msgid "Sign out" msgstr "התנתקות" msgid "Learn more about Crowdin" msgstr "מידע נוסף אודות Crowdin" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "Crowdin זאת פלטפורמת ניהול תרגום מקוונת וכלי לתרגום שיתופי." msgid "Waiting for authentication…" msgstr "מחכה לאימות…" msgid "Updating user information…" msgstr "מעדכן נתוני משתמש…" msgid "Sign in to Crowdin" msgstr "התחברות אל Crowdin" msgid "Syncing with Crowdin failed." msgstr "הסנכרון עם Crowdin נכשל." msgid "Crowdin error" msgstr "שגיאת Crowdin" msgid "Uploading translations…" msgstr "מעלה תרגומים…" msgid "&Copy" msgstr "ה&עתק" msgid "Learn more" msgstr "מידע נוסף" msgid "&Help" msgstr "ע&זרה" msgid "MO files can’t be directly edited in Poedit." msgstr "לא ניתן לערוך קובצי MO ישירות ב־Poedit." msgid "Error opening file" msgstr "שגיאה בפתיחת הקובץ" msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "אנא פתח וערוך את קובץ ה-PO המקביל במקום. כשתשמור אותו, קובץ ה-MO יתעדכן " "בהתאם." msgid "don’t delete temporary files (for debugging)" msgstr "לא למחוק קבצים זמניים (לצורך ניפוי שגיאות)" msgid "handle a poedit:// URI" msgstr "handle a poedit:// URI" msgid "go to item at given line number" msgstr "מעבר לפריט במספר שורה נתון" msgid "Failed to communicate with Poedit process." msgstr "התקשורת עם התהליך Poedit נכשלה." #, c-format msgid "Unhandled exception occurred: %s" msgstr "אירעה חריגה: %s" msgid "Select translation template" msgstr "בחירת תבנית תרגום" msgid "Select translation file" msgstr "בחירת קובץ תרגום" msgid "Poedit is an easy to use translation editor." msgstr "Poedit הינו עורך תרגומים פשוט לתפעול." msgid "You can’t drop more than one file on Poedit window." msgstr "לא ניתן לשחרר יותר מקובץ אחד בחלון של Poedit." #, c-format msgid "File “%s” is not a translation file." msgstr "הקובץ ”%s” אינו קובץ תרגום." #, c-format msgid "File “%s” doesn’t exist." msgstr "הקובץ “%s” אינו קיים." 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". #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "בדיקת איות מושבתת, מכיוון שהמילון לשפה %s אינו מותקן." msgid "Install" msgstr "התקנה" #, c-format msgid "The file “%s” has been changed by another application." msgstr "הקובץ “%s” נערך ע״י יישום אחר." msgid "Reload file" msgstr "טעינת הקובץ מחדש" msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "לטעון את הקובץ מהכונן מחדש? פעולה זאת תגרום לאובדן השינויים שלא שמרת " "ב־Poedit." msgid "Ignore" msgstr "להתעלם" msgid "Reload File" msgstr "טעינת הקובץ מחדש" msgid "The file has been modified. Do you want to save changes?" msgstr "הקובץ שונה. האם ברצונך לשמור את השינויים?" msgid "Save changes" msgstr "שמירת שינויים" msgid "Your changes will be lost if you don’t save them." msgstr "השינויים שביצעת יאבדו אם לא תשמור אותם." msgid "Save" msgstr "שמור" msgid "Do&n’t save" msgstr "&לא לשמור" msgid "Don’t Save" msgstr "אל תשמור" msgid "The changes made by the other application will be lost if you save." msgstr "בחירה בשמירת השינויים תגרום לאובדן השינויים שבוצעו ע״י היישום האחר." msgid "Cancel" msgstr "ביטול" msgid "Save Anyway" msgstr "לשמור בכל מקרה" msgid "Save anyway" msgstr "לשמור בכל מקרה" msgid "Save as…" msgstr "שמירה בשם…" msgid "Compile to…" msgstr "ביצוע הידור ל…" msgid "Compiled Translation Files" msgstr "קובצי תרגום מהודרים" msgid "Export to HTML…" msgstr "ייצוא ל־HTML…" msgid "HTML Files" msgstr "קובצי HTML" #, c-format msgid "In: %s" msgstr "בקובץ: %s" msgid "Source code not available." msgstr "קוד המקור אינו זמין." msgid "Updating failed" msgstr "העדכון נכשל" 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 "" "לא ניתן לעדכן תרגומים מקוד המקור, מכיוון שלא נמצא קוד במיקום שצויין במאפייני " "הקובץ." msgid "Permission denied." msgstr "ההרשאה נדחתה." 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. 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. msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "אם בעבר מנעת גישה לקבצים שלך, ניתן לאפשר אותה תחת העדפות המערכת > אבטחה " "ופרטיות > פרטיות > קבצים ותיקיות." msgid "Translation entries in the file are probably incorrect." msgstr "רשומות התרגום כנראה שגויות." msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "עדכון הקובץ נכשל. יש ללחוץ על 'עוד >>' לקבלת פרטים נוספים." msgid "Open translation template" msgstr "פתיחת תבנית תרגום" #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "נמצאו %d בעיות עם התרגום." msgstr[1] "נמצאו %d בעיות עם התרגום." msgstr[2] "נמצאו %d בעיות עם התרגום." msgstr[3] "נמצאו %d בעיות עם התרגום." msgid "Validation results" msgstr "תוצאות האימות" msgid "" "Entries with errors were marked in red in the list. Details of the error " "will be shown when you select such an entry." msgstr "" "רשומות עם שגיאות סומנו באדום ברשימה. פרטי השגיאה יופיעו בעת בחירת רשומה " "שכזאת." msgid "The file was saved safely." msgstr "הקובץ נשמר בבטחה." msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "הקובץ נשמר בבטחה והודר לפורמט ה-MO, אך יתכן שהוא לא יעבוד כראוי." msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "הקובץ נשמר בבטחה, אך לא ניתן להדר אותו לפורמט ה-MO לצורך שימוש." msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "הקובץ הודר לפורמט ה-MO, אך יתכן שהוא לא יעבוד כראוי." msgid "The file cannot be compiled into the MO format and used." msgstr "לא ניתן להדר קובץ זה לפורמט ה-MO לצורך שימוש." msgid "No problems with the translation found." msgstr "לא נמצאו בעיות בתרגום." #, 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 רשומות לא תורגמו עדיין." msgid "The translation is ready for use." msgstr "התרגום מוכן לשימוש." #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "Poedit תיקן באופן אוטומטי תוכן שגוי בקובץ \"%s\"." msgid "" "The file contained duplicate items, which is not allowed in PO files and " "would prevent the file from being used. Poedit fixed the issue, but you " "should review translations of any items marked as needing work and correct " "them if necessary." msgstr "" "הקובץ הכיל פריטים כפולים, מצב שאסור שיתקיים בקובצי PO ועלול למנוע שימוש " "בקובץ. התקלה תוקנה על ידי Poedit אך עליך לסקור תרגומים של פריטים כלשהם " "שדורשים טיפול ולתקן אותם אם יש צורך בכך." msgid "Language of the translation isn’t set." msgstr "שפת התרגום אינה מוגדרת." msgid "Set Language" msgstr "הגדרת שפה" msgid "Set language" msgstr "הגדרת שפה" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." msgid "" "Suggestions are not available if the translation language is not set " "correctly. Other features, such as plural forms, may be affected as well." msgstr "" "הצעות אינן זמינות אם שפת התרגום לא מוגדרת כראוי. יתכן שמאפיינים אחרים, כמו " "לשון רבים, יושפעו גם כן." msgid "Language of the translation is the same as source language." msgstr "שפת התרגום זהה לשפת המקור." msgid "Fix Language" msgstr "תיקון שפה" msgid "Fix language" msgstr "תיקון שפה" msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "לקובץ זה יש רשומות עם צורות רבים, אך לא מוגדרת כותרת Plural-Forms." msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "לרשומות בקובץ זה יש כמות של צורות רבים שונה ממה שמצוין בכותרת Plural-Forms " "של הקובץ" msgid "Required header Plural-Forms is missing." msgstr "הכותרת ההכרחית Plural-Forms חסרה." #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "שגיאת תחביר בכותרת ה-Plural-Forms‏ (\"%s\")." msgid "Fix the Header" msgstr "תיקון הכותרת" 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". #, 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.")" msgid "Review" msgstr "סקירה" msgid "Would you like to use English for source text?" msgstr "האם ברצונך להשתמש באנגלית עבור טקסט המקור?" #, 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" msgid "Load English" msgstr "טעינת אנגלית" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "תורגמו: %d מתוך %d (%d%%)" #, c-format msgid "Remaining: %d" msgstr "נותרו: %d" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "שגיאה %d" msgstr[1] "%d שגיאות" msgstr[2] "%d שגיאות" msgstr[3] "%d שגיאות" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "רשומה %d" msgstr[1] "%d רשומות" msgstr[2] "%d רשומות" msgstr[3] "%d רשומות" msgid " (unsaved)" msgstr " (לא נשמר)" msgid " (modified)" msgstr " (שונה)" #, c-format msgid "Failed to update translation memory: %s" msgstr "עדכון זיכרון התרגום נכשל: %s" msgid "Remove same-as-source translations" msgstr "הסרת תרגומים שזהים למקור" msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "להסיר את כל התרגומים שזהים לטקסט המקור?" msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" "הפעולה הזאת תמחק את כל התרגומים שזהים לטקסט המקור במדויק. זאת פעולה בלתי " "הפיכה." msgid "Keep" msgstr "שמירה" msgid "Remove" msgstr "להסיר" msgid "Purge deleted translations" msgstr "פינוי תרגומים שנמחקו" msgid "Do you want to remove all translations that are no longer used?" msgstr "האם ברצונך להסיר את כל התרגומים שאינם עוד בשימוש?" 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 "" "אם הליך הפינוי יימשך, כל התרגומים שסומנו כמחוקים יוסרו לצמיתות. יהיה עליך " "לתרגם אותם מחדש אם הם יתווספו שוב בעתיד." msgid "Purge" msgstr "פינוי" msgid "Copy from source text" msgstr "העתקה מטקסט המקור" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "מחיקת התרגום" msgid "Clear Translation" msgstr "מחיקת התרגום" msgid "Edit comment" msgstr "עריכת הערה" msgid "Edit Comment" msgstr "עריכת הערה" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "מופעים בקוד" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "מופעים בקוד" msgid "Hide Sidebar" msgstr "הסתרת סרגל הצד" msgid "Show Sidebar" msgstr "הצגת סרגל הצד" msgid "Hide Status Bar" msgstr "הסתרת שורת המצב" msgid "Show Status Bar" msgstr "הצגת שורת המצב" msgid "String length in characters: translation | source" msgstr "אורך המחרוזת בתווים: תרגום | מקור" msgid "String length in characters" msgstr "אורך המחרוזת בתווים" msgid "Source text" msgstr "טקסט המקור" msgid "Singular" msgstr "יחיד" msgid "Plural" msgstr "רבים" msgid "Translation" msgstr "תרגום" msgid "Pre-translated" msgstr "תורגמה מראש" 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. msgid "Needs work" msgstr "דורש סקירה" msgid "" "POT files are only templates and don’t contain any translations themselves.\n" "To make a translation, create a new PO file based on the template." msgstr "" "קובצי POT הינם תבניות בלבד ולא מכילים תרגומים.\n" "על מנת ליצור תרגום, יש ליצור קובץ PO חדש המבוסס על התבנית." msgid "Create new translation" msgstr "יצירת תרגום חדש" msgid "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 msgid "Source text ID" msgstr "מזהה טקסט מקור" msgid "Everything" msgstr "הכל" #, c-format msgid "Form %i" msgstr "צורה %i" #, c-format msgid "Form %i (unused)" msgstr "צורה %i (לא בשימוש)" msgid "Zero" msgstr "אפס" msgid "One" msgstr "אחד" msgid "Two" msgstr "שתיים" msgid "Other" msgstr "אחר" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, c-format msgid "String context: %s" msgstr "הקשר המחרוזת: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #, c-format msgid "String identifier: %s" msgstr "מזהה המחרוזת: %s" #, c-format msgid "%s Format" msgstr "פורמט %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "פורמט %s" #, c-format msgid "Translation — %s" msgstr "תרגום — %s" msgid "ID" msgstr "מזהה" #, c-format msgid "Source text — %s" msgstr "טקסט המקור — %s" msgid "unknown language" msgstr "שפה לא ידועה" #, c-format msgid "Network error: %s (%d)" msgstr "שגיאת רשת: %s (%d)" msgid "Unknown error" msgstr "שגיאה לא ידועה" #, c-format msgid "Failed command: %s" msgstr "הפקודה נכשלה: %s" msgid "Failed to merge gettext catalogs." msgstr "מיזוג קטלוגים של gettext נכשל." msgid "Open in Editor" msgstr "פתיחה בעורך" msgid "Open in editor" msgstr "פתיחה בעורך" msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "אין מידע בקובץ על מספר המופעים של המחרוזת בקוד המקור." msgid "No usage information" msgstr "אין פרטי שימוש" #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "מופע %d בקוד" msgstr[1] "%d מופעים בקוד" msgstr[2] "%d מופעים בקוד" msgstr[3] "%d מופעים בקוד" msgid "Source code not found" msgstr "קוד המקור לא נמצא" 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 אין אפשרות להציג את קוד המקור בו נעשה שימוש במחרוזת כיוון שאו " "שהקובץ אינו זמין במיקום ההפניה או שזאת הפנייה סמלית שלא מצביעה לקובץ אמתי." msgid "File cannot be opened" msgstr "לא ניתן לפתוח את הקובץ" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "ל־Poedit לא הייתה אפשרות לפתוח את הקובץ “%s”." msgid "Find" msgstr "חיפוש" msgid "Replace" msgstr "החלפה" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "אפשרויות" msgid "Ignore case" msgstr "התעלמות מרישיות" msgid "Wrap around" msgstr "חזרה להתחלה בסיום" msgid "Whole words only" msgstr "מילים שלמות בלבד" msgid "Find in source texts" msgstr "חיפוש בטקסט המקור" msgid "Find in translations" msgstr "חיפוש בתרגומים" msgid "Find in comments" msgstr "חיפוש בהערות" msgid "Close" msgstr "סגירה" msgid "Replace &All" msgstr "החלפת ה&כל" msgid "Replace &all" msgstr "החלפת ה&כל" msgid "&Replace" msgstr "ה&חלפה" msgid "< &Previous" msgstr "< ה&קודם" msgid "&Next >" msgstr "ה&בא >" msgid "String to find" msgstr "מחרוזת לחיפוש" msgid "Replacement string" msgstr "מחרוזת להחלפה" #, c-format msgid "Cannot execute program: %s" msgstr "לא ניתן להריץ את היישום: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "שם או קוד שפה" msgid "Translation Language" msgstr "שפת התרגום" msgid "Language of the translation:" msgstr "שפת התרגום:" msgid "All strings" msgstr "כל המחרוזות" msgid "Couldn’t download Localazy project details." msgstr "לא ניתן להוריד את פרטי המיזם ב־Localazy." msgid "There was an error when uploading translations to Localazy." msgstr "אירעה שגיאה בהעלאת תרגומים ל־Localazy." msgid "Projects" msgstr "מיזמים" msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Localazy היא פלטפורמת תרגום עם יכולות אוטומציה מתקדמות שמאפשרת לכל אחד ואחת " "לתרגם את המוצרים והתוכן שלהם למגוון שפות בקלות." msgid "Add Project" msgstr "הוספת מיזם" msgid "Add project" msgstr "הוספת מיזם" msgid "Poedit - Catalogs manager" msgstr "Poedit - מנהל הקטלוגים" msgid "Edit…" msgstr "עריכה…" msgid "Create new translations project" msgstr "יצירת מיזם תרגומים חדש" msgid "Delete the project" msgstr "מחיקת המיזם" msgid "Edit the project" msgstr "עריכת המיזם" msgid "Update all" msgstr "עדכון הכל" msgid "Update all catalogs in the project" msgstr "עדכון כל הקטלוגים בפרוייקט" msgid "Total" msgstr "סה״כ" msgid "Untrans" msgstr "לא מתורגמים" msgctxt "column/row header" msgid "Needs Work" msgstr "דורש סקירה" msgid "Errors" msgstr "שגיאות" msgid "Last modified" msgstr "שונה לאחרונה" msgid "Select directory" msgstr "בחירת ספרייה" msgid "Directories:" msgstr "ספריות:" msgid "" msgstr "<ללא שם>" #, c-format msgid "Do you want to delete project “%s”?" msgstr "למחוק את המיזם „%s”?" msgid "Delete project" msgstr "מחיקת מיזם" msgid "Deleting the project will not delete any translation files." msgstr "מחיקת המיזם לא תמחק קובצי תרגום כלשהם." msgid "Confirmation" msgstr "אימות" msgid "Update all catalogs in this project?" msgstr "לעדכן את כל הקטלוגים במיזם הזה?" msgid "Performs update from source code on all files in the project." msgstr "מבצע עדכון מקוד המקור על כל הקבצים במיזם." msgid "Check for Updates…" msgstr "בדיקה אחר עדכונים…" msgid "Catalogs Manager" msgstr "מנהל הקטלוגים" msgid "&Preferences…" msgstr "&העדפות…" msgid "&Edit" msgstr "&עריכה" msgid "Undo" msgstr "בטל" msgid "Redo" msgstr "בצע שוב" msgid "Paste and Match Style" msgstr "הדבק והתאם לסגנון" msgid "Delete" msgstr "מחיקה" msgid "Spelling and Grammar" msgstr "איות ודקדוק" msgid "Show Spelling and Grammar" msgstr "הצג איות ודקדוק" msgid "Check Document Now" msgstr "בדוק את המסמך כעת" msgid "Check Spelling While Typing" msgstr "בדוק איות במהלך ההקלדה" msgid "Check Grammar With Spelling" msgstr "בדוק דקדוק ביחד עם איות" msgid "Correct Spelling Automatically" msgstr "תקן איות באופן אוטומטי" msgid "Substitutions" msgstr "החלפות" msgid "Show Substitutions" msgstr "הצג החלפות" msgid "Smart Copy/Paste" msgstr "העתקה והדבקה חכמות" msgid "Smart Quotes" msgstr "מרכאות חכמות" msgid "Smart Dashes" msgstr "מיקוף חכם" msgid "Smart Links" msgstr "קישורים חכמים" msgid "Text Replacement" msgstr "מלל חלופי" msgid "Transformations" msgstr "המרות" msgid "Make Upper Case" msgstr "הפוך לאותיות גדולות" msgid "Make Lower Case" msgstr "הפוך לאותיות קטנות" msgid "Capitalize" msgstr "הפוך לאותיות רישיות" msgid "Speech" msgstr "דיבור" msgid "Start Speaking" msgstr "הקרא" msgid "Stop Speaking" msgstr "הפסק הקראה" msgid "&View" msgstr "ת&צוגה" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Show Toolbar" msgstr "הצג את סרגל הכרטיסיות" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Customize Toolbar…" msgstr "התאם אישית את סרגל הכלים…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Enter Full Screen" msgstr "עבור למסך מלא" msgid "Window" msgstr "חלון" msgid "Minimize" msgstr "מזעור" msgid "Zoom" msgstr "הגדל/הקטן" msgid "Welcome to Poedit" msgstr "ברוך בואך ל־Poedit" msgid "Bring All to Front" msgstr "הבא הכל קדימה" msgid "Information about the translator" msgstr "מידע על המתרגם" msgid "Name:" msgstr "שם:" msgid "Your Name" msgstr "השם שלך" msgid "Email:" msgstr "אימייל:" msgid "you@example.com" msgstr "you@example.com" msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "שמך וכתובת הדוא״ל שלך ישמשו אך ורק כדי להגדיר את כותרת ה-Last-Translator " "בקובצי gettext של GNU." msgid "Editing" msgstr "עריכה" msgid "Automatically compile MO file when saving" msgstr "ביצוע הידור קובץ MO באופן אוטומטי בעת שמירה" msgid "Show summary after updating files" msgstr "להציג תקציר לאחר עדכון הקבצים" msgid "Check spelling" msgstr "בדיקת איות" msgid "Always change focus to text input field" msgstr "שנה תמיד את המיקוד לשדה הקלט של הטקסט" msgid "" "Never let the list of strings take focus. If enabled, you must use Ctrl-" "arrows for keyboard navigation but you can also type text immediately, " "without having to press Tab to change focus." msgstr "" "לא מאפשר לרשימת המחרוזות לקבל מיקוד. אם מופעל, עליך להשתמש במקשי החיצים " "בצירוף מקש ה-Ctrl לניווט, אבל גם ניתן לכתוב טקסט מיידית, ללא צורך בלחיצה על " "Tab לשינוי המיקוד." msgid "Appearance" msgstr "תצוגה" msgid "Use custom list font:" msgstr "שימוש בגופן מותאם אישית לרשימה:" msgid "Use custom text fields font:" msgstr "שימוש בגופן מותאם אישית לשדות טקסט:" msgid "Change UI language" msgstr "החלפת שפת הממשק" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions msgid "(requires Windows 8 or newer)" msgstr "(דורש Windows 8 ומעלה)" msgid "General" msgstr "כללי" msgid "Use translation memory" msgstr "שימוש בזיכרון תרגום" msgid "Manage…" msgstr "ניהול…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "בעת עדכון ממקורות" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "התאם תרגומים דומים מתוך הקובץ" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "בצע תרגום מראש מזיכרון התרגום" 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 יכול לנסות להשלים רשומות חדשות מהתרגומים הקודמים שלך בקובץ או מזיכרון " "התרגום כולו. שימוש בזיכרון התרגום לא יהיה אפקטיבי אם הוא כמעט ריק, אבל הוא " "ישתפר ככל שתרגומים חדשים יתווספו אליו." msgid "Stored translations:" msgstr "תרגומים מאוחסנים:" msgid "Database size on disk:" msgstr "גודל מסד הנתונים בכונן:" msgid "Import Translation Files…" msgstr "ייבוא קובצי תרגום…" msgid "Import translation files…" msgstr "ייבוא קובצי תרגום…" msgid "Import From TMX…" msgstr "ייבוא מ־TMX…" msgid "Import from TMX…" msgstr "ייבוא מ־TMX…" msgid "Export To TMX…" msgstr "ייצוא ל־TMX…" msgid "Export to TMX…" msgstr "ייצוא ל־TMX…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). msgid "Reset" msgstr "איפוס" msgid "Select translation files to import" msgstr "בחירת קובצי תרגום לייבוא" msgid "Translation Memory" msgstr "זיכרון תרגום" msgid "Importing translations…" msgstr "מייבא תרגומים…" #, c-format msgid "Error loading translation file “%s”." msgstr "שגיאה בטעינת קובץ התרגום “%s”." msgid "Finalizing…" msgstr "מתבצעת סגירה…" msgid "Select TMX files to import" msgstr "בחירת קובצי TMX לייבוא" msgid "TMX Files" msgstr "קובצי TMX" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "ייבוא זיכרון תרגום מתוך „%s” נכשל." msgid "Import error" msgstr "שגיאת ייבוא" msgid "Export as…" msgstr "ייצוא בשם…" msgid "Exporting translations…" msgstr "התרגומים מיוצאים…" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "ייצוא זיכרון התרגום אל „%s” נכשל." msgid "Export error" msgstr "שגיאת ייצוא" msgid "Reset translation memory" msgstr "איפוס זיכרון התרגום" msgid "Are you sure you want to reset the translation memory?" msgstr "האם אתה בטוח שברצונך לאפס את זיכרון התרגום?" 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. msgid "TM" msgstr "TM" msgid "" "Source code extractors are used to find translatable strings in the source " "code files and extract them so that they can be translated." msgstr "" "מחלצי קוד המקור משמשים לאיתור וחילוץ מחרוזות הניתנות לתרגום בקובצי קוד " "המקור, כדי שניתן יהיה לתרגם אותם." msgid "Custom Extractors:" msgstr "מחלצים מותאמים אישית:" msgid "Custom extractors:" msgstr "מחלצים מותאמים אישית:" msgid "GNU gettext" msgstr "GNU gettext" 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 ואחרים)." msgid "Delete extractor" msgstr "מחיקת מחלץ" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "האם אתה בטוח שברצונך למחוק את המחלץ \"%s\"?" msgid "Extractors" msgstr "מחלצים" msgid "Accounts" msgstr "חשבונות" msgid "Automatically check for updates" msgstr "בדיקה אחר עדכונים באופן אוטומטי" msgid "Include beta versions" msgstr "לכלול גרסאות בטא" msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "גרסאות בטא מכילות את התכונות והעדכונים החדשים ביותר, אך עשויות להיות פחות " "יציבות." msgid "Updates" msgstr "עדכונים" msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "הגדרות אלו משפיעות על העיצוב הפנימי של קובצי PO. שנה אותן אם יש לך דרישות " "מסוימות, למשל בגלל שליטה על גרסה." msgid "Line endings:" msgstr "סיומות שורה:" msgid "Unix (recommended)" msgstr "Unix (מומלץ)" msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "גלישת שורה ב:" msgid "Preserve formatting of existing files" msgstr "שמירה על עיצוב של קבצים קיימים" msgid "Advanced" msgstr "מתקדם" msgid "Settings" msgstr "הגדרות" msgid "Preparing strings…" msgstr "המחרוזות בהכנה…" msgid "Pre-translating from translation memory…" msgstr "מתבצע תרגום מראש מזיכרון התרגום…" #, 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 מחרוזות מתורגמות מראש" msgid "Pre-translating…" msgstr "מבצע תרגום מראש…" 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. msgid "Pre-translate" msgstr "תרגום מראש" msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "תרגום מראש דורש שטקסט המקור יהיה זמין. זה לא עובד אם נעשה שימוש במזהים בלבד " "ללא הטקסט עצמו." msgid "Cannot pre-translate from unknown language." msgstr "לא ניתן לתרגם מראש משפה לא ידועה." msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "תרגום מראש דורש ששפת טקסט המקור תהיה מוכרת. זיהוי השפה בקובץ הזה על ידי " "Poedit לא הצליחה." msgid "Only fill in exact matches" msgstr "השלם רק התאמות מדויקות" msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "כברירת מחדל, תוצאות שאינן מדויקות נכללות גם כן, אך מסומנות ככאלו הדורשות " "סקירה. יש לבחור באפשרות זו כדי לכלול רק התאמות מושלמות." msgid "Don’t mark exact matches as needing work" msgstr "אל תסמן התאמות מדויקות ככאלו הדורשות סקירה" 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 "" "הפעל אפשרות זו רק אם אתה בוטח באיכות של זיכרון התרגום שלך. כברירת מחדל, כל " "ההתאמות מזיכרון התרגום מסומנות ככאלו הדורשות סקירה, ויש לעבור עליהם." msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "'תרגום מראש' מאתר באופן אוטומטי בזיכרון התרגום התאמות מדויקות או מעורפלות " "עבור מחרוזות שאינן מתורגמות, ומשלים את התרגומים שלהן." #, 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 רשומות תורגמו מראש." msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "התרגומים סומנו ככאלו הדורשים סקירה, מכיוון שיתכן שאינם מדויקים. כדאי לסקור " "אותם ולתקנם במידת הצורך." msgid "No entries could be pre-translated." msgstr "לא ניתן לתרגם מראש שום רשומה." msgid "" "The TM doesn’t contain any strings similar to the content of this file. It " "is only effective for semi-automatic translations after Poedit learns enough " "from files that you translated manually." msgstr "" "זיכרון התרגום לא מכיל שום מחרוזות הדומות לתוכן של קובץ זה. הוא יעיל לתרגומים " "חצי אוטומטיים רק לאחר ש-Poedit ילמד מספיק מקבצים שיתורגמו באופן ידני." msgid "Cancelling…" msgstr "בתהליך ביטול…" msgid "Drag Folders or Files Here" msgstr "יש לגרור לכאן תיקיות או קבצים" msgid "Drag folders or files here" msgstr "יש לגרור לכאן תיקיות או קבצים" msgid "Add Folders…" msgstr "הוספת תיקיות…" msgid "Add folders…" msgstr "הוספת תיקיות…" msgid "Add Files…" msgstr "הוספת קבצים…" msgid "Add files…" msgstr "הוספת קבצים…" msgid "Add Wildcard…" msgstr "הוספת Wildcard…" msgid "Add wildcard…" msgstr "הוספת Wildcard…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) msgid "Reveal in Finder" msgstr "הצגה ב־Finder" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" msgid "Show in Explorer" msgstr "הצגה בסייר" msgid "Show in Folder" msgstr "הצגה בתיקייה" msgid "Paths" msgstr "נתיבים" msgid "Excluded paths" msgstr "נתיבים לא כלולים" msgid "Advanced extraction settings" msgstr "הגדרות חילוץ מתקדמות" msgid "Extract notes for translators from:" msgstr "חילוץ הערות למתרגמים מתוך:" msgid "Comments prefixed with:" msgstr "הערות המתחילות ב:" msgid "All comments" msgstr "כל ההערות" msgid "Additional xgettext flags:" msgstr "דגלי xgettext נוספים:" msgid "Additional keywords" msgstr "מילות מפתח נוספות" msgid "Name of the project the translation is for" msgstr "שם המיזם עבורו מיועד התרגום" msgid "Team name and email address or URL" msgstr "שם הצוות וכתובת הדוא״ל או כתובת האתר" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "לדוגמה ‪nplurals=2; plural=(n > 1);‬" msgid "UTF-8 (recommended)" msgstr "UTF-8 (מומלץ)" msgid "Please save the file first. This section cannot be edited until then." msgstr "נא לשמור את הקובץ תחילה. לא ניתן לערוך סעיף זה עד אז." msgid "Placeholders correctness" msgstr "תקינות ממלאי מקום" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "ממלא המקום „%s” חסר בתרגום." #, c-format msgid "Superfluous placeholder “%s” that isn’t in source text." msgstr "ממלא מקום מיותר „%s” שאינו בטקסט המקור." msgid "Plural form translations" msgstr "תרגום צורות רבים" msgid "Not all plural forms are translated." msgstr "לא כל צורות הרבים מתורגמות." msgid "Inconsistent upper/lower case" msgstr "חוסר אחידות באותיות גדולות/קטנות" msgid "The translation should start as a sentence." msgstr "התרגום אמור להתחיל כמשפט." msgid "The translation should start with a lowercase character." msgstr "התרגום אמור להתחיל באות לטינית קטנה." msgid "Inconsistent whitespace" msgstr "רווחים לא אחידים" msgid "The translation doesn’t start with a space." msgstr "התרגום לא מתחיל ברווח." msgid "The translation starts with a space, but the source text doesn’t." msgstr "התרגום מתחיל ברווח, בניגוד לטקסט המקור." msgid "The translation is missing a newline at the end." msgstr "בסוף התרגום חסרה שורה חדשה." msgid "The translation ends with a newline, but the source text doesn’t." msgstr "התרגום מסתיים בשורה חדשה, בניגוד לטקסט המקור." msgid "The translation is missing a space at the end." msgstr "בסוף התרגום חסר רווח." msgid "The translation ends with a space, but the source text doesn’t." msgstr "התרגום מסתיים ברווח, בניגוד לטקסט המקור." msgid "Punctuation checks" msgstr "בדיקות פיסוק" #, c-format msgid "The translation should end with “%s”." msgstr "התרגום אמור להסתיים ב-“%s”." #, c-format msgid "The translation should not end with “%s”." msgstr "התרגום לא אמור להסתיים ב-“%s”." #, c-format msgid "The translation ends with “%s”, but the source text ends with “%s”." msgstr "התרגום מסתיים ב-“%s”, אבל טקסט המקור מסתיים ב-“%s”." msgid "Cloud" msgstr "ענן" msgid "Clear Menu" msgstr "ניקוי התפריט" msgid "Clear menu" msgstr "ניקוי התפריט" msgid "Comment:" msgstr "הערה:" msgid "Update" msgstr "עדכון" msgid "&Delete" msgstr "&מחיקה" msgid "Delete the comment" msgstr "מחיקת ההערה" msgid "Edit project" msgstr "עריכת המיזם" msgid "Project name:" msgstr "שם המיזם:" msgid "Browse" msgstr "עיון" msgid "Add directory to the list" msgstr "הוספת ספרייה לרשימה" msgid "OK" msgstr "אישור" msgid "&File" msgstr "&קובץ" msgid "&New…" msgstr "&חדש…" msgid "New from &POT/PO file…" msgstr "חדש מקובץ &POT/PO…" msgid "New From &POT/PO File…" msgstr "חדש מקובץ &POT/PO…" msgid "&Open…" msgstr "&פתיחה…" msgid "Open Recent" msgstr "פתח אחרונים" msgid "Open recent" msgstr "לפתוח את האחרונים" msgid "Open cloud translation…" msgstr "פתיחת תרגומים בענן…" msgid "Open Cloud Translation…" msgstr "פתיחת תרגומים בענן…" msgid "&Start window" msgstr "חלון &פתיחה" msgid "&Start Window" msgstr "חלון &פתיחה" msgid "Catalogs &manager" msgstr "מ&נהל הקטלוגים" msgid "Catalogs &Manager" msgstr "מ&נהל הקטלוגים" msgid "&Close" msgstr "&סגירה" msgid "&Save" msgstr "ש&מירה" msgid "Save &as…" msgstr "שמירה &בשם…" msgid "Save &As…" msgstr "שמירה &בשם…" msgid "Compile to MO…" msgstr "ביצוע הידור ל-MO…" msgid "E&xport to HTML…" msgstr "יי&צוא ל־HTML…" msgid "Check for updates…" msgstr "בדיקה אחר עדכונים…" msgid "Settings…" msgstr "הגדרות…" msgid "&Preferences" msgstr "ה&עדפות" msgid "E&xit" msgstr "י&ציאה" msgid "Quit" msgstr "יציאה" msgid "Copy from singular" msgstr "להעתיק מצורת היחיד" msgid "Copy From Singular" msgstr "להעתיק מצורת היחיד" msgid "Translation needs &work" msgstr "סימון כתרגום הדורש &סקירה" msgid "Translation Needs &Work" msgstr "סימון כתרגום הדורש &סקירה" msgid "Edit &comment" msgstr "עריכת &הערה" msgid "Edit &Comment" msgstr "עריכת &הערה" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "הצעות" msgid "&Find…" msgstr "&חיפוש…" msgid "Replace…" msgstr "החלפה…" msgid "Find next" msgstr "חיפוש הבא" msgid "Find previous" msgstr "חיפוש הקודם" msgid "Find and Replace…" msgstr "חיפוש והחלפה…" msgid "Find Next" msgstr "חיפוש הבא" msgid "Find Previous" msgstr "חיפוש הקודם" msgid "Show string &ID" msgstr "הצגת מ&זהה מחרוזת" msgid "Show String &ID" msgstr "הצגת מ&זהה מחרוזת" msgid "Show warnings" msgstr "הצגת אזהרות" msgid "Show Warnings" msgstr "הצגת אזהרות" msgid "Sort by &file order" msgstr "מיון לפי ה&סדר שבקובץ" msgid "Sort by &File Order" msgstr "מיון לפי ה&סדר שבקובץ" msgid "Sort by &source" msgstr "מיון לפי המ&קור" msgid "Sort by &Source" msgstr "מיון לפי המ&קור" msgid "Sort by &translation" msgstr "מיון לפי ה&תרגום" msgid "Sort by &Translation" msgstr "מיון לפי ה&תרגום" msgid "&Group by context" msgstr "קיבו&ץ לפי הקשר" msgid "&Group By Context" msgstr "קיבו&ץ לפי הקשר" msgid "Entries with errors first" msgstr "רשומות עם שגיאות תחילה" msgid "Entries with Errors First" msgstr "רשומות עם שגיאות תחילה" msgid "&Untranslated entries first" msgstr "רשומות ש&אינן מתורגמות תחילה" msgid "&Untranslated Entries First" msgstr "רשומות ש&אינן מתורגמות תחילה" msgid "&Show code occurrences" msgstr "הצגת מופעים ב&קוד" msgid "&Show Code Occurrences" msgstr "הצגת מופעים ב&קוד" msgid "Show sidebar" msgstr "הצגת סרגל הצד" msgid "Show status bar" msgstr "הצגת שורת המצב" msgid "&Translation" msgstr "&תרגום" msgid "&Update from source code" msgstr "עדכון מ&קוד המקור" msgid "&Update from Source Code" msgstr "עדכון מ&קוד המקור" msgid "Update from &POT file…" msgstr "עדכון מקובץ &POT…" msgid "Update from &POT File…" msgstr "עדכון מקובץ &POT…" msgid "Sync with Crowdin" msgstr "סנכרון עם Crowdin" msgid "Pre-&translate…" msgstr "&תרגום מראש…" msgid "&Validate translations" msgstr "&אימות התרגומים" msgid "&Validate Translations" msgstr "&אימות התרגומים" msgid "Remove Same-as-Source Translations" msgstr "הסרת תרגומים זהים למקור" msgid "&Purge deleted translations" msgstr "פינוי תרגומים ש&נמחקו" msgid "&Purge Deleted Translations" msgstr "פינוי תרגומים ש&נמחקו" msgid "&Properties…" msgstr "מא&פיינים…" msgid "&Go" msgstr "מע&בר אל" msgid "&Done and next" msgstr "ב&צע והמשך" msgid "&Done and Next" msgstr "ב&צע והמשך" msgid "Previously edited" msgstr "נערך בעבר" msgid "Previously Edited" msgstr "נערך בעבר" msgid "&Previous translation" msgstr "התרגום ה&קודם" msgid "&Previous Translation" msgstr "התרגום ה&קודם" msgid "&Next translation" msgstr "התרגום ה&בא" msgid "&Next Translation" msgstr "התרגום ה&בא" msgid "P&revious unfinished" msgstr "הקו&דם שלא הושלם" msgid "P&revious Unfinished" msgstr "הקו&דם שלא הושלם" msgid "Ne&xt unfinished" msgstr "&הבא שלא הושלם" msgid "Ne&xt Unfinished" msgstr "&הבא שלא הושלם" msgid "Previous plural form" msgstr "צורת הריבוי הקודמת" msgid "Previous Plural Form" msgstr "צורת הריבוי הקודמת" msgid "Next plural form" msgstr "צורת הריבוי הבאה" msgid "Next Plural Form" msgstr "צורת הריבוי הבאה" msgid "&Online help" msgstr "עזרה מ&קוונת" msgid "&Online Help" msgstr "עזרה מ&קוונת" msgid "&GNU gettext manual" msgstr "הדרכה ל-&GNU gettext" msgid "&GNU gettext Manual" msgstr "הדרכה ל-&GNU gettext" msgid "&About Poedit" msgstr "&אודות Poedit" msgid "&About" msgstr "&אודות" msgid "Extractor setup" msgstr "הגדרת מחלץ" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "רשימה של הרחבות המופרדות בנקודה פסיק (לדוגמה: ‎*.cpp;*.h):" msgid "Invocation:" msgstr "קריאה:" msgid "Command to extract translations:" msgstr "פקודה לחילוץ תרגומים:" 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 בדגל הקידוד (ראה למטה)." msgid "An item in keywords list:" msgstr "פריט ברשימת מילות המפתח:" msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "משתנה זה יתווסף לשורת הפקודה פעם אחת\n" "עבור כל מילת מפתח. %k יוחלף במילת המפתח." msgid "An item in input files list:" msgstr "פריט ברשימת קובצי הקלט:" #, 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 יוחלף בשם הקובץ." msgid "Source code charset:" msgstr "קידוד קוד המקור:" #, 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 יוחלף בערך הקידוד." msgid "Translation Properties" msgstr "מאפייני התרגום" msgid "Project name and version:" msgstr "שם וגרסת המיזם:" msgid "Language team:" msgstr "צוות המתרגמים:" msgid "Plural forms:" msgstr "צורות רבים:" msgid "Use default rules for this language" msgstr "שימוש בכללי בררת המחדל לשפה זו" msgid "Use custom expression" msgstr "שימוש בביטוי מותאם אישית" msgid "Learn about plural forms" msgstr "מידע על לשון רבים" msgid "Charset:" msgstr "קידוד:" msgid "Advanced Extraction Settings…" msgstr "הגדרות חילוץ מתקדמות…" msgid "Advanced extraction settings…" msgstr "הגדרות חילוץ מתקדמות…" msgid "Translation properties" msgstr "מאפייני התרגום" msgid "Sources Paths" msgstr "נתיבי המקורות" msgid "Sources paths" msgstr "נתיבי המקורות" msgid "Extract text from source files in the following directories:" msgstr "חילוץ טקסט מקובצי המקור בספריות הבאות:" msgid "Base path:" msgstr "נתיב הבסיס:" msgid "Sources Keywords" msgstr "מילות מפתח המקורות" msgid "Sources keywords" msgstr "מילות מפתח המקורות" msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "השתמש במילות מפתח אלה (שמות פונקציות) על מנת לזהות מחרוזות הניתנות לתרגום\n" "בקובצי המקור:" msgid "Also use default keywords for supported languages" msgstr "השתמש בנוסף במילות מפתח ברירת מחדל עבור שפות נתמכות" msgid "Learn about gettext keywords" msgstr "מידע נוסף אודות מילות מפתח של gettext" msgid "Update summary" msgstr "תקציר העדכון" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" "המחרוזות האלו נמצאו במקורות אך לא בקובץ.\n" "הן תווספנה על ידי Poedit לקובץ כעת." msgid "New strings" msgstr "מחרוזות חדשות" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" "המחרוזות האלו אינן בקוד המקור עוד.\n" "הן יוסרו על ידי Poedit מהקובץ כעת." msgid "Obsolete strings" msgstr "מחרוזות מיושנות" msgid "(0 new, 0 obsolete)" msgstr "(0 חדשות, 0 מיושנות)" msgid "Open" msgstr "" msgid "Open file" msgstr "פתיחת קובץ" msgid "Save file" msgstr "שמירת קובץ" msgid "Validate" msgstr "אימות" msgid "Check for errors in the translation" msgstr "בדיקת שגיאות בתרגום" msgid "Update from code" msgstr "עדכון מקוד" msgid "Update from Code" msgstr "עדכון מקוד" msgid "Update from source code" msgstr "עדכון מקוד המקור" msgid "Sidebar" msgstr "סרגל הצד" msgid "Show or hide the sidebar" msgstr "הצגה או הסתרה של סרגל הצד" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. msgid "Previous source text" msgstr "טקסט המקור הקודם" msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "טקסט המקור הקודם (לפני ששונה במהלך עדכון) אליו תואם התרגום שכעת אינו מדויק." msgid "Notes for translators" msgstr "הערות למתרגמים" msgid "Comment" msgstr "הערה" msgid "Add comment" msgstr "הוספת הערה" msgid "Add Comment" msgstr "הוספת הערה" msgid "Delete From Translation Memory" msgstr "מחיקה מזיכרון התרגום" msgid "Delete from translation memory" msgstr "מחיקה מזיכרון התרגום" msgid "Translation suggestions" msgstr "הצעות תרגום" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). msgid "No matches found" msgstr "לא נמצאו התאמות" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). msgid "No Matches Found" msgstr "לא נמצאו התאמות" msgid "This string was found in Poedit’s translation memory." msgstr "מחרוזת זו אותרה בזיכרון התרגום של Poedit." msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "הצעות תרגומים דורשות שטקסט המקור יהיה זמין. הן לא עובדות אם נעשה שימוש " "במזהים בלבד ללא הטקסט עצמו." msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "הצעות תרגום דורשות ששפת טקסט המקור תהיה מוכרת. זיהוי השפה בקובץ הזה על ידי " "Poedit לא הצליחה." msgid "The TMX file is malformed." msgstr "קובץ ה־TMX פגום." msgid "No translations were found in the TMX file." msgstr "לא נמצאו תרגומים בקובץ ה־TMX." #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "מסד הנתונים של זיכרון התרגום פגום: %s ‏(%d)." #, c-format msgid "Translation memory error: %s (%d)." msgstr "שגיאת זיכרון תרגום: %s ‏(%d)." msgid "Cannot create temporary directory." msgstr "לא ניתן ליצור ספרייה זמנית." msgid "There are no translations. That’s unusual." msgstr "אין תרגומים. זה מצב חריג." msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "Translators typically use PO template files (POTs) prepared for them by the " "developer." msgstr "" "רשומות הניתנות לתרגום אינן מתווספות באופן ידני למערכת ה-Gettext, אבל מחולצות " "באופן אוטומטי מקוד המקור.\n" "בצורה הזו, הן נשארות מעודכנות ומדויקות.\n" "מתרגמים משתמשים בדרך כלל בקובצי תבנית PO (ובקיצור POTs) המוכנים עבורם ע״י " "המפתח." msgid "(Learn more about GNU gettext)" msgstr "(מידע נוסף אודות GNU gettext)" msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "הדרך הפשוטה ביותר למילוי קובץ זה עם תרגומים היא לעדכן אותו מ-POT:" msgid "Update from POT" msgstr "עדכון מ-POT" msgid "Take translatable strings from an existing POT template." msgstr "שימוש במחרוזות הניתנות לתרגום מתבנית POT קיימת." msgid "" "You can also extract translatable strings directly from the source code:" msgstr "ניתן גם לחלץ את המחרוזות הניתנות לתרגום ישירות מקוד המקור:" msgid "Extract from sources" msgstr "חילוץ ממקורות" msgid "Configure source code extraction in Properties." msgstr "ניתן להגדיר את חילוץ קוד המקור במאפיינים." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #, c-format msgid "Version %s" msgstr "גרסה %s" msgid "Create new" msgstr "ליצור חדש" msgid "Create new translation from POT template." msgstr "יצירת תרגום חדש מתבנית POT." msgid "Browse files" msgstr "עיון בקבצים" msgid "Open and edit translation files." msgstr "פתיחה ועריכת קובצי תרגום." msgid "Translate cloud project" msgstr "תרגום מיזם בענן" msgid "Collaborate with other people online." msgstr "שיתוף פעולה מקוון עם אנשים אחרים." msgid "Recent files" msgstr "קבצים אחרונים" msgid "Sync" msgstr "סנכרון" 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") #, c-format msgid "About %s" msgstr "על %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #, c-format msgid "%s Preferences" msgstr "העדפות של %s" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "שירותים" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "להסתיר את %s" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "להסתיר אחרים" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "להציג הכול" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "יציאה מ־%s" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "העדפות…" msgid "Preferences..." msgstr "העדפות…" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "אחרונים" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "תכוף" msgid "&Apply" msgstr "ה&חל" msgid "Apply" msgstr "החל" msgid "&Back" msgstr "ה&קודם" msgid "Back" msgstr "הקודם" msgid "&Cancel" msgstr "בי&טול" msgid "&Clear" msgstr "&נקה" msgid "Clear" msgstr "נקה" msgid "Copy" msgstr "העתק" msgid "Cu&t" msgstr "ג&זור" msgid "Cut" msgstr "גזור" msgid "Edit" msgstr "עריכה" msgid "&Quit" msgstr "י&ציאה" msgid "Help" msgstr "עזרה" msgid "&New" msgstr "ח&דש" msgid "New" msgstr "חדש" msgid "&No" msgstr "&לא" msgid "No" msgstr "לא" msgid "&OK" msgstr "&אישור" msgid "Open…" msgstr "פתיחה…" msgid "&Open..." msgstr "&פתיחה..." msgid "Open..." msgstr "פתיחה..." msgid "&Paste" msgstr "ה&דבק" msgid "Paste" msgstr "הדבק" msgid "Preferences" msgstr "העדפות" msgid "&Redo" msgstr "בצע &שוב" msgid "Refresh" msgstr "רענון" msgid "&Save as" msgstr "שמירה &בשם" msgid "Save as" msgstr "שמירה בשם" msgid "Select &All" msgstr "בחר ה&כל" msgid "Select All" msgstr "בחר הכל" msgid "&Undo" msgstr "&בטל" msgid "&Yes" msgstr "&כן" msgid "Yes" msgstr "כן" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "Up" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "Down" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "Left" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "Right" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "shift" poedit-3.5/locales/poedit-quicklook.pot0000644000175100001770000000375614664354065015252 00000000000000# 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 2.1\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+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:433 ../src/export_html.cpp:77 msgid "Project:" msgstr "" #: ../src/cloud_accounts_ui.cpp:437 ../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:2611 ../src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "" #: ../src/edframe.cpp:2615 ../src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "" #: ../src/edframe.cpp:2625 ../src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "" msgstr[1] "" #: ../src/editing_area.cpp:397 ../src/editing_area.cpp:706 #: ../src/edlistctrl.cpp:661 ../src/edlistctrl.cpp:715 #: ../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:704 ../src/edlistctrl.cpp:709 #: ../src/export_html.cpp:137 msgid "Source text ID" msgstr "" #: ../src/edlistctrl.cpp:666 ../src/edlistctrl.cpp:737 #: ../src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "" #: ../src/edlistctrl.cpp:714 ../src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "" #: ../src/edlistctrl.cpp:736 ../src/export_html.cpp:146 msgid "unknown language" msgstr "" poedit-3.5/locales/zh_CN.po0000644000175100001770000016753014664354065012605 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "隐藏这条消息" msgid "Don’t Show Again" msgstr "不再显示" msgid "Don’t show again" msgstr "不再显示" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(新条目:%i 项;已过时:%i 项)" msgid "Collecting source files…" msgstr "正在收集源文件…" msgid "Extracting translatable strings…" msgstr "正在提取可翻译字符串…" msgid "Failed to load file with extracted translations." msgstr "无法加载提取翻译的文件。" msgid "Merging differences…" msgstr "正在合并差异…" msgid "Updating translations" msgstr "正在更新翻译" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "无法打开文件“%s”。" msgid "Invalid file" msgstr "无效文件" #, c-format msgid "Malformed header: “%s”" msgstr "首部格式异常:“%s”" msgid "PO Translation Files" msgstr "PO 翻译文件" msgid "POT Translation Templates" msgstr "POT 翻译模板" msgid "XLIFF Translation Files" msgstr "XLIFF 翻译文件" msgid "JSON Translation Files" msgstr "JSON 翻译文件" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "Flutter 翻译文件" msgid "All Translation Files" msgstr "所有翻译文件" msgid "The file is in a format not recognized by Poedit." msgstr "Poedit 无法识别该文件的格式。" msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "该 JSON 文件不是一份翻译文件,不能使用 Poedit 编辑。" #, c-format msgid "Reading file content failed with the following error: %s" msgstr "读取文件内容失败,错误:%s" #, c-format msgid "" "File “%s” is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "文件“%s”为只读,不能保存。\n" "请使用其他名称保存。" #, c-format msgid "Couldn’t save file %s." msgstr "不能保存文件 %s。" msgid "Screenshots:" msgstr "屏幕截图:" #, c-format msgid "%i line of file “%s” was not loaded correctly." msgid_plural "%i lines of file “%s” were not loaded correctly." msgstr[0] "文件“%2$s”的第 %1$i 行未能正确加载。" #, c-format msgid "Line %d of file “%s” is corrupted (not valid %s data)." msgstr "文件“%2$s”的第 %1$d 行已损坏(不是有效的 %3$s 数据)。" msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "PO文件不当:单数形式的 msgstr 被用在 msgid_plural" msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "PO文件不当:复数形式的 msgstr 被用在没有 msgid_plural 的位置" msgid "Couldn’t load the file, it is probably damaged." msgstr "未能加载文件,该文件可能已损坏。" msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "加载文件时遇到错误。有些数据可能缺失或损坏。" msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "在精确格式化文件时有一个问题(但文件保存正确)。" #, 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 字符集,设置也会相应地被修改。" msgid "Error saving file" msgstr "保存文件时发生错误" #, c-format msgid "“%s” is not a valid POT file." msgstr "“%s”不是一个有效的 POT 文件。" #, c-format msgid "Error while loading XLIFF file: %s" msgstr "加载 XLIFF文件:%s 时出错" #, c-format msgid "unsupported version (%s)" msgstr "不支持的版本 (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML msgid "Broken markup in translation string." msgstr "翻译文件中的标记不正确。" msgid "(Use default language)" msgstr "(使用默认语言)" msgid "Language selection" msgstr "语言选择" msgid "Select your preferred language" msgstr "选择您的首选语言" msgid "You must restart Poedit for this change to take effect." msgstr "您必须重新启动 Poedit 才能使这个更改生效。" msgid "Add Account" msgstr "添加账户" msgid "Add account" msgstr "添加账户" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "了解更多关于 %s 的信息" msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "将 Poedit 与支持的云端本地化平台连接,以无缝同步翻译。" msgid "How does cloud sync work?" msgstr "云同步如何工作?" msgid "Account" msgstr "账户" msgid "(not signed in)" msgstr "(未登录)" msgid "File" msgstr "文件" msgid "Open cloud translation" msgstr "打开云翻译" msgid "Manage accounts" msgstr "管理账户" msgid "Project:" msgstr "项目:" msgid "Language:" msgstr "语言:" msgid "Sign in to Cloud Account" msgstr "登录云账户" msgid "Sign in to cloud account" msgstr "登录云账户" msgid "No translation projects listed in your account." msgstr "您的账户中没有列出翻译项目。" msgid "Downloading latest translations…" msgstr "正在下载最新的翻译…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #, c-format msgid "Sign in to %s" msgstr "登录至 %s" msgid "Syncing" msgstr "同步中" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s…" msgstr "正在上传翻译到 %s…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s failed." msgstr "上传翻译到 %s 失败。" msgid "Syncing error" msgstr "同步出错" msgid "Add" msgstr "添加" msgid "Unknown Crowdin error." msgstr "未知的 Crowdin 错误。" msgid "Not authorized, please sign in again." msgstr "未授权,请尝试重新登录。" msgid "Downloading translations is disabled in this project." msgstr "此项目禁用了下载翻译。" msgid "Sign In" msgstr "登录" msgid "Sign in" msgstr "登录" msgid "Sign Out" msgstr "退出" msgid "Sign out" msgstr "退出" msgid "Learn more about Crowdin" msgstr "了解更多有关 Crowdin" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "Crowdin 是一个在线的本地化管理平台和协作翻译工具。" msgid "Waiting for authentication…" msgstr "正在等待身份验证…" msgid "Updating user information…" msgstr "正在更新用户信息…" msgid "Sign in to Crowdin" msgstr "登录到 Crowdin" msgid "Syncing with Crowdin failed." msgstr "与 Crowdin 同步失败。" msgid "Crowdin error" msgstr "Crowdin 错误" msgid "Uploading translations…" msgstr "正在上传翻译…" msgid "&Copy" msgstr "复制(&C)" msgid "Learn more" msgstr "了解更多" msgid "&Help" msgstr "帮助(&H)" msgid "MO files can’t be directly edited in Poedit." msgstr "MO 文件不能直接在 Poedit 中编辑。" msgid "Error opening file" msgstr "打开文件时出错" msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "请打开并编辑对应的 PO 文件。当你保存它时,MO 文件也将被更新。" msgid "don’t delete temporary files (for debugging)" msgstr "不删除临时文件(用于调试)" msgid "handle a poedit:// URI" msgstr "处理 poedit:// URI" msgid "go to item at given line number" msgstr "跳转到给定行号项目" msgid "Failed to communicate with Poedit process." msgstr "无法与 Poedit 的进程通信。" #, c-format msgid "Unhandled exception occurred: %s" msgstr "发生了不能处理的异常:%s" msgid "Select translation template" msgstr "选择翻译模板" msgid "Select translation file" msgstr "选择翻译文件" msgid "Poedit is an easy to use translation editor." msgstr "Poedit 是一个易于使用的翻译编辑器。" msgid "You can’t drop more than one file on Poedit window." msgstr "您不能拖放一个以上的文件到 Poedit 窗口。" #, c-format msgid "File “%s” is not a translation file." msgstr "文件“%s”不是一个翻译文件。" #, c-format msgid "File “%s” doesn’t exist." msgstr "文件“%s”不存在。" 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". #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "拼写检查被禁用,因为 %s 的字典没有安装。" msgid "Install" msgstr "安装" #, c-format msgid "The file “%s” has been changed by another application." msgstr "文件“%s”已被另一个应用程序更改。" msgid "Reload file" msgstr "重新载入文件" msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "您要从磁盘重载此文件?如此您会失去在 Poedit 内未保存的更改。" msgid "Ignore" msgstr "忽略" msgid "Reload File" msgstr "重新载入文件" msgid "The file has been modified. Do you want to save changes?" msgstr "文件已修改。您要保存更改?" msgid "Save changes" msgstr "保存更改" msgid "Your changes will be lost if you don’t save them." msgstr "如果您不保存,您的更改将丢失。" msgid "Save" msgstr "保存" msgid "Do&n’t save" msgstr "不保存(&N)" msgid "Don’t Save" msgstr "不保存" msgid "The changes made by the other application will be lost if you save." msgstr "如您保存,则会失去由其它程序所作的更改。" msgid "Cancel" msgstr "取消" msgid "Save Anyway" msgstr "仍然保存" msgid "Save anyway" msgstr "仍然保存" msgid "Save as…" msgstr "另存为…" msgid "Compile to…" msgstr "编译到…" msgid "Compiled Translation Files" msgstr "已编译的翻译文件" msgid "Export to HTML…" msgstr "导出到 HTML…" msgid "HTML Files" msgstr "HTML 文件" #, c-format msgid "In: %s" msgstr "在: %s" msgid "Source code not available." msgstr "源代码不可用。" msgid "Updating failed" msgstr "更新失败" 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 "无法利用源码更新,因为未能在文件属性所指定的位置内找到代码。" msgid "Permission denied." msgstr "权限被拒绝。" 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. 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. msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "如果您之前禁用了相应的访问权限,可以在系统首选项 > 安全和隐私 > 隐私 > 文件和" "文件夹 中重新允许。" msgid "Translation entries in the file are probably incorrect." msgstr "文件内的翻译条目或许是错误的。" msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "更新文件失败。详细信息请点击 '详细信息 >>'。" msgid "Open translation template" msgstr "打开翻译模板" #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "在翻译中发现了 %d 个问题。" msgid "Validation results" msgstr "验证结果" msgid "" "Entries with errors were marked in red in the list. Details of the error " "will be shown when you select such an entry." msgstr "" "有错误的条目在列表中被标记为红色。您选择这样的条目时将显示错误的详细信息。" msgid "The file was saved safely." msgstr "文件已被安全地保存。" msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "文件已安全地保存,并编译成 MO 格式的文件,但它可能不能正常工作。" msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "文件已安全地保存,但它不能被编译成 MO 格式并使用。" msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "文件被编译成 MO 格式,但它可能不能正确工作。" msgid "The file cannot be compiled into the MO format and used." msgstr "文件不能编译成 MO 格式并使用。" msgid "No problems with the translation found." msgstr "翻译中未发现问题。" #, 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 个条目没有被翻译。" msgid "The translation is ready for use." msgstr "翻译可以使用了。" #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "Poedit 自动修复了“%s”文件中的无效内容。" msgid "" "The file contained duplicate items, which is not allowed in PO files and " "would prevent the file from being used. Poedit fixed the issue, but you " "should review translations of any items marked as needing work and correct " "them if necessary." msgstr "" "该文件中包含重复的项目,这是不允许的,并且影响了该文件被使用。Poedit 修复了该" "问题,但您应该审阅任何已被标记为“需要处理”的翻译和纠正它们(如有必要)。" msgid "Language of the translation isn’t set." msgstr "翻译语言未设置。" msgid "Set Language" msgstr "设置语言" msgid "Set language" msgstr "选择语言" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." msgid "" "Suggestions are not available if the translation language is not set " "correctly. Other features, such as plural forms, may be affected as well." msgstr "" "如果翻译语言设置不正确,建议将不可用。其他特性(例如复数形式)也可能受到影" "响。" msgid "Language of the translation is the same as source language." msgstr "翻译语言与源语言相同。" msgid "Fix Language" msgstr "修复语言" msgid "Fix language" msgstr "修复语言" msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "此文件包含有复数形式的条目,但未配置复数形式头部。" msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "这个文件中的条目的复数形式数量与文件的 Plural-Forms 头所说明的不同" msgid "Required header Plural-Forms is missing." msgstr "缺少必需的头 Plural-Forms。" #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "在 Plural-Forms 头中存在语法错误 (\"%s\")。" msgid "Fix the Header" msgstr "修复文件头" 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". #, 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.")" msgid "Review" msgstr "检查" msgid "Would you like to use English for source text?" msgstr "是否要使用英文作为源文本?" #, 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" msgid "Load English" msgstr "加载英文" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "已翻译:%d 共计 %d (%d %%)" #, c-format msgid "Remaining: %d" msgstr "剩余:%d" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d 错误" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d 条目" msgid " (unsaved)" msgstr " (未保存)" msgid " (modified)" msgstr " (已修改)" #, c-format msgid "Failed to update translation memory: %s" msgstr "更新翻译记忆库失败: %s " msgid "Remove same-as-source translations" msgstr "移除相同源文的翻译" msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "确定移除所有与源文本相同的翻译吗?" msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "此操作将移除与源文本完全匹配的所有翻译。不能撤消此操作。" msgid "Keep" msgstr "保持" msgid "Remove" msgstr "移除" msgid "Purge deleted translations" msgstr "清除已删除的翻译" msgid "Do you want to remove all translations that are no longer used?" msgstr "您确定要移除所有不再使用的翻译吗?" 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 "" "如果您继续清除,则所有被标记为已删除的翻译都将被永久移除。如果未来它们被添加" "回来,您必须再翻译一遍。" msgid "Purge" msgstr "清除" msgid "Copy from source text" msgstr "复制源文本" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "清除翻译" msgid "Clear Translation" msgstr "清除翻译" msgid "Edit comment" msgstr "编辑注释" msgid "Edit Comment" msgstr "编辑注释" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "代码出现位置" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "代码出现位置" msgid "Hide Sidebar" msgstr "隐藏侧边栏" msgid "Show Sidebar" msgstr "显示侧边栏" msgid "Hide Status Bar" msgstr "隐藏状态栏" msgid "Show Status Bar" msgstr "显示状态栏" msgid "String length in characters: translation | source" msgstr "字符串长度:翻译 | 原文" msgid "String length in characters" msgstr "字符串长度(字符)" msgid "Source text" msgstr "源文本" msgid "Singular" msgstr "单数" msgid "Plural" msgstr "复数" msgid "Translation" msgstr "翻译" msgid "Pre-translated" msgstr "已预翻译" 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. msgid "Needs work" msgstr "需要处理" msgid "" "POT files are only templates and don’t contain any translations themselves.\n" "To make a translation, create a new PO file based on the template." msgstr "" "POT 文件只是模板,不包含任何翻译内容。\n" "若要制作一个翻译,请基于模板创建一个新的 PO 文件。" msgid "Create new translation" msgstr "创建新的翻译" msgid "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 msgid "Source text ID" msgstr "源文本 ID" msgid "Everything" msgstr "一切" #, c-format msgid "Form %i" msgstr "表格 %i" #, c-format msgid "Form %i (unused)" msgstr "来自 %i (未使用)" msgid "Zero" msgstr "零" msgid "One" msgstr "一" msgid "Two" msgstr "二" msgid "Other" msgstr "其他" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, c-format msgid "String context: %s" msgstr "字符串上下文:%s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #, c-format msgid "String identifier: %s" msgstr "字符串标识符:%s" #, c-format msgid "%s Format" msgstr "%s 格式" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "%s 格式" #, c-format msgid "Translation — %s" msgstr "翻译 — %s" msgid "ID" msgstr "ID" #, c-format msgid "Source text — %s" msgstr "源文本 — %s" msgid "unknown language" msgstr "未知语言" #, c-format msgid "Network error: %s (%d)" msgstr "网络错误:%s (%d)" msgid "Unknown error" msgstr "未知错误" #, c-format msgid "Failed command: %s" msgstr "命令失败:%s" msgid "Failed to merge gettext catalogs." msgstr "无法合并 gettext 编目。" msgid "Open in Editor" msgstr "在编辑器中打开" msgid "Open in editor" msgstr "在编辑器中打开" msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "文件中未提供有关此字符串在源代码中的出现位置信息。" msgid "No usage information" msgstr "暂无用法信息" #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d 个代码出现位置" msgid "Source code not found" msgstr "未找到源码" 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 无法显示字符串所用的源码,因为相应的文件未存在于引用位置或其是未指向实" "际文件的符号引用。" msgid "File cannot be opened" msgstr "无法打开文件" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "Poedit 无法打开 “%s” 文件。" msgid "Find" msgstr "查找" msgid "Replace" msgstr "替换" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "选项" msgid "Ignore case" msgstr "忽略大小写" msgid "Wrap around" msgstr "全字匹配" msgid "Whole words only" msgstr "仅整个单词" msgid "Find in source texts" msgstr "在源文本中查找" msgid "Find in translations" msgstr "在翻译中查找" msgid "Find in comments" msgstr "在注释中查找" msgid "Close" msgstr "关闭" msgid "Replace &All" msgstr "全部替换(&A)" msgid "Replace &all" msgstr "全部替换(&A)" msgid "&Replace" msgstr "替换(&R)" msgid "< &Previous" msgstr "< 上一个(&P)" msgid "&Next >" msgstr "下一个(&N) >" msgid "String to find" msgstr "要查找的字符串" msgid "Replacement string" msgstr "替换字符串" #, c-format msgid "Cannot execute program: %s" msgstr "不能执行程序: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "语言名称或代码" msgid "Translation Language" msgstr "翻译" msgid "Language of the translation:" msgstr "要翻译的语言:" msgid "All strings" msgstr "所有字符串" msgid "Couldn’t download Localazy project details." msgstr "未能下载 Localazy 项目详情。" msgid "There was an error when uploading translations to Localazy." msgstr "上传翻译到 Localazy 出错。" msgid "Projects" msgstr "项目" msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Localazy 是一个高度自动化的本地化平台,人人都能轻松将自己的产品和内容翻译到多" "种语言。" msgid "Add Project" msgstr "添加项目" msgid "Add project" msgstr "添加项目" msgid "Poedit - Catalogs manager" msgstr "Poedit - 编目管理器" msgid "Edit…" msgstr "编辑…" msgid "Create new translations project" msgstr "创建新的翻译项目" msgid "Delete the project" msgstr "删除项目" msgid "Edit the project" msgstr "编辑项目" msgid "Update all" msgstr "更新全部" msgid "Update all catalogs in the project" msgstr "更新项目中的所有编目" msgid "Total" msgstr "总计" msgid "Untrans" msgstr "未翻译" msgctxt "column/row header" msgid "Needs Work" msgstr "需要处理" msgid "Errors" msgstr "错误" msgid "Last modified" msgstr "最后修改" msgid "Select directory" msgstr "选择目录" msgid "Directories:" msgstr "目录:" msgid "" msgstr "<未命名>" #, c-format msgid "Do you want to delete project “%s”?" msgstr "您想要删除项目“%s”吗?" msgid "Delete project" msgstr "删除项目." msgid "Deleting the project will not delete any translation files." msgstr "删除项目不会删除其他翻译文件。" msgid "Confirmation" msgstr "确认" msgid "Update all catalogs in this project?" msgstr "更新此项目中的所有目录?" msgid "Performs update from source code on all files in the project." msgstr "从源代码对项目中的所有文件执行更新。" msgid "Check for Updates…" msgstr "检查更新…" msgid "Catalogs Manager" msgstr "编目管理器" msgid "&Preferences…" msgstr "首选项(&P)…" msgid "&Edit" msgstr "编辑(&E)" msgid "Undo" msgstr "撤销" msgid "Redo" msgstr "重做" msgid "Paste and Match Style" msgstr "粘贴并匹配样式" msgid "Delete" msgstr "删除" msgid "Spelling and Grammar" msgstr "拼写和语法" msgid "Show Spelling and Grammar" msgstr "显示拼写和语法" msgid "Check Document Now" msgstr "立即检查文档" msgid "Check Spelling While Typing" msgstr "在输入时检查拼写" msgid "Check Grammar With Spelling" msgstr "检查拼写和语法" msgid "Correct Spelling Automatically" msgstr "自动更正拼写错误" msgid "Substitutions" msgstr "替换" msgid "Show Substitutions" msgstr "显示替换项目" msgid "Smart Copy/Paste" msgstr "智能复制/粘贴" msgid "Smart Quotes" msgstr "智能引号" msgid "Smart Dashes" msgstr "智能短划线" msgid "Smart Links" msgstr "智能链接" msgid "Text Replacement" msgstr "文本替换" msgid "Transformations" msgstr "转换" msgid "Make Upper Case" msgstr "转为大写" msgid "Make Lower Case" msgstr "转为小写" msgid "Capitalize" msgstr "大写" msgid "Speech" msgstr "朗读" msgid "Start Speaking" msgstr "开始朗读" msgid "Stop Speaking" msgstr "停止朗读" msgid "&View" msgstr "查看(&V)" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Show Toolbar" msgstr "显示工具栏" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Customize Toolbar…" msgstr "自定义工具栏…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Enter Full Screen" msgstr "进入全屏模式" msgid "Window" msgstr "窗口" msgid "Minimize" msgstr "最小化" msgid "Zoom" msgstr "缩放" msgid "Welcome to Poedit" msgstr "欢迎使用 Poedit" msgid "Bring All to Front" msgstr "全部带到最前方" msgid "Information about the translator" msgstr "关于翻译者的信息" msgid "Name:" msgstr "名称:" msgid "Your Name" msgstr "你的名字" msgid "Email:" msgstr "电子邮件:" msgid "you@example.com" msgstr "you@example.com" msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "你的名称和电子邮件地址仅用于设置 GNU gettext 文件的 Last-Translator 信息。" msgid "Editing" msgstr "编辑" msgid "Automatically compile MO file when saving" msgstr "在保存时自动编译 MO 文件" msgid "Show summary after updating files" msgstr "更新文件后显示摘要" msgid "Check spelling" msgstr "检查拼写" msgid "Always change focus to text input field" msgstr "总是将焦点移动到文本输入字段" msgid "" "Never let the list of strings take focus. If enabled, you must use Ctrl-" "arrows for keyboard navigation but you can also type text immediately, " "without having to press Tab to change focus." msgstr "" "从不让字串列表取得焦点。如果启用,您必须使用 “Ctrl-方向键” 进行键盘导航,但您" "也可以立即输入文本,不用按 Tab 改变焦点。" msgid "Appearance" msgstr "外观" msgid "Use custom list font:" msgstr "使用自定义的列表字体:" msgid "Use custom text fields font:" msgstr "使用自定义的编辑区字体:" msgid "Change UI language" msgstr "更改用户界面语言" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions msgid "(requires Windows 8 or newer)" msgstr "(需要 Windows 8 或更高版本)" msgid "General" msgstr "常规" msgid "Use translation memory" msgstr "使用翻译记忆" msgid "Manage…" msgstr "管理…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "当从源文更新时" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "在文件内模糊匹配" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "根据翻译记忆预翻译" 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 可以根据以前的翻译文件或你的翻译记忆库来尝试填写新条目。接近空的翻译记" "忆库不会很有效,但如果你为它添加了更多的翻译,它也会变得更好。" msgid "Stored translations:" msgstr "存储翻译:" msgid "Database size on disk:" msgstr "磁盘上数据文件的大小:" msgid "Import Translation Files…" msgstr "导入译文文件…" msgid "Import translation files…" msgstr "导入译文文件…" msgid "Import From TMX…" msgstr "导入 TMX…" msgid "Import from TMX…" msgstr "导入 TMX…" msgid "Export To TMX…" msgstr "导出 TMX…" msgid "Export to TMX…" msgstr "导出 TMX…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). msgid "Reset" msgstr "重置" msgid "Select translation files to import" msgstr "选择需要导入的翻译文件" msgid "Translation Memory" msgstr "翻译记忆" msgid "Importing translations…" msgstr "正在导入翻译…" #, c-format msgid "Error loading translation file “%s”." msgstr "加载翻译文件 “%s” 时发生错误。" msgid "Finalizing…" msgstr "正在完成…" msgid "Select TMX files to import" msgstr "选择要导出的 TMX 文件" msgid "TMX Files" msgstr "TMX 文件" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "导入翻译记忆 “%s” 失败。" msgid "Import error" msgstr "导入出错" msgid "Export as…" msgstr "导出为…" msgid "Exporting translations…" msgstr "正在导出译文…" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "导出翻译记忆 “%s” 失败。" msgid "Export error" msgstr "导出出错" msgid "Reset translation memory" msgstr "重置翻译记忆库" msgid "Are you sure you want to reset the translation memory?" msgstr "你确定你要重置翻译记忆库吗?" 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. msgid "TM" msgstr "翻译记忆" msgid "" "Source code extractors are used to find translatable strings in the source " "code files and extract them so that they can be translated." msgstr "" "源代码提取器用于在源代码文件中找到可翻译字符串和提取它们,以便它们可以被翻" "译。" msgid "Custom Extractors:" msgstr "自定义提取器:" msgid "Custom extractors:" msgstr "自定义提取器:" msgid "GNU gettext" msgstr "GNU gettext" 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 等)。" msgid "Delete extractor" msgstr "删除提取器" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "您确定要删除“%s”提取器吗?" msgid "Extractors" msgstr "提取器" msgid "Accounts" msgstr "账号" msgid "Automatically check for updates" msgstr "自动检查更新" msgid "Include beta versions" msgstr "包括测试版本" msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "测试版包含最新功能和改进,但可能有点不太稳定。" msgid "Updates" msgstr "更新" msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "这些设置会影响 PO 文件的内部格式。如果你有特定的要求例如版本控制时,调整它" "们。" msgid "Line endings:" msgstr "行尾风格:" msgid "Unix (recommended)" msgstr "Unix(推荐)" msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "换行在:" msgid "Preserve formatting of existing files" msgstr "保留现有文件的格式" msgid "Advanced" msgstr "高级" msgid "Settings" msgstr "设置" msgid "Preparing strings…" msgstr "正在准备字符串…" msgid "Pre-translating from translation memory…" msgstr "利用翻译内存预翻译..." #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "已预翻译 %u 个字符串" msgid "Pre-translating…" msgstr "正在预翻译…" 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. msgid "Pre-translate" msgstr "预翻译" msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "预翻译需要源文本。如果只有非实际文本的 ID 则不能用。" msgid "Cannot pre-translate from unknown language." msgstr "无法从未知语言预翻译。" msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "预翻译需要了解源文本的语言。Poedit 在此文件中没有检测到。" msgid "Only fill in exact matches" msgstr "仅填补完全匹配的项" msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "默认设置下,会包含不准确的结果,但标记为需要处理。选中此选项则只包含精确匹配" "的项。" msgid "Don’t mark exact matches as needing work" msgstr "不将精确匹配标为需要处理" 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 "" "仅在您信任你的翻译记忆的质量时启用。默认情况下,从翻译记忆匹配的所有条目被标" "记为模糊,在使用前应加以审查。" msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "预翻译自动在翻译记忆库中查找未翻译字符串的精确或模糊匹配项,并将其填入翻译。" #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%d 个条目已进行预翻译。" msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "这些翻译被标记为需要处理,因为其可能不准确。请检查它们的准确性。" msgid "No entries could be pre-translated." msgstr "没有条目可预翻译。" msgid "" "The TM doesn’t contain any strings similar to the content of this file. It " "is only effective for semi-automatic translations after Poedit learns enough " "from files that you translated manually." msgstr "" "翻译记忆库中没有包含任何与此文件内容相似的字符串。 Poedit 需要通过你手动翻译" "的文件来得到充分的学习,然后才能在半自动翻译中发挥作用。" msgid "Cancelling…" msgstr "正在取消…" msgid "Drag Folders or Files Here" msgstr "拖拽文件夹或文件于此" msgid "Drag folders or files here" msgstr "拖拽文件夹或文件于此" msgid "Add Folders…" msgstr "添加文件夹…" msgid "Add folders…" msgstr "添加文件夹…" msgid "Add Files…" msgstr "添加文件…" msgid "Add files…" msgstr "添加文件…" msgid "Add Wildcard…" msgstr "添加通配符…" msgid "Add wildcard…" msgstr "添加通配符…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) msgid "Reveal in Finder" msgstr "显示于查找器" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" msgid "Show in Explorer" msgstr "显示于资源管理器" msgid "Show in Folder" msgstr "显示于文件夹之内" msgid "Paths" msgstr "路径" msgid "Excluded paths" msgstr "排除的路径" msgid "Advanced extraction settings" msgstr "高级提取设置" msgid "Extract notes for translators from:" msgstr "为译者提取注释自:" msgid "Comments prefixed with:" msgstr "有此前缀的注释:" msgid "All comments" msgstr "所有注释" msgid "Additional xgettext flags:" msgstr "额外的 xgettext 标志︰:" msgid "Additional keywords" msgstr "额外的关键字" msgid "Name of the project the translation is for" msgstr "翻译的项目名称" msgid "Team name and email address or URL" msgstr "团队名称和电子邮件地址或 URL" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "例如: nplurals=2; plural=(n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8(推荐)" msgid "Please save the file first. This section cannot be edited until then." msgstr "请先保存文件。以下内容在此之前不能被编辑。" msgid "Placeholders correctness" msgstr "占位符正确性" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "译文缺少占位符“%s”。" #, c-format msgid "Superfluous placeholder “%s” that isn’t in source text." msgstr "存在原文没有的占位符“%s”。" msgid "Plural form translations" msgstr "复数形式翻译" msgid "Not all plural forms are translated." msgstr "复数形式不需全部翻译。" msgid "Inconsistent upper/lower case" msgstr "大小写不一致" msgid "The translation should start as a sentence." msgstr "翻译应该为一个句子。" msgid "The translation should start with a lowercase character." msgstr "翻译开头应该为小写字母。" msgid "Inconsistent whitespace" msgstr "空格不一致" msgid "The translation doesn’t start with a space." msgstr "翻译没有以空格开头。" msgid "The translation starts with a space, but the source text doesn’t." msgstr "翻译开头存在源文本没有的空格。" msgid "The translation is missing a newline at the end." msgstr "翻译结尾缺少换行。" msgid "The translation ends with a newline, but the source text doesn’t." msgstr "翻译以换行符结尾,但是源文本没有换行符。" msgid "The translation is missing a space at the end." msgstr "翻译结尾缺少空格。" msgid "The translation ends with a space, but the source text doesn’t." msgstr "翻译以空格结尾,但是源文本没有空格。" msgid "Punctuation checks" msgstr "标点检查" #, c-format msgid "The translation should end with “%s”." msgstr "翻译应以“%s”结尾。" #, c-format msgid "The translation should not end with “%s”." msgstr "翻译不应以“%s”结尾。" #, c-format msgid "The translation ends with “%s”, but the source text ends with “%s”." msgstr "翻译以“%s”结尾,但是源文本是“%s”。" msgid "Cloud" msgstr "云" msgid "Clear Menu" msgstr "清除菜单" msgid "Clear menu" msgstr "清除菜单" msgid "Comment:" msgstr "注释:" msgid "Update" msgstr "更新" msgid "&Delete" msgstr "刪除(&D)" msgid "Delete the comment" msgstr "删除注释" msgid "Edit project" msgstr "编辑项目" msgid "Project name:" msgstr "项目名称:" msgid "Browse" msgstr "浏览" msgid "Add directory to the list" msgstr "将目录添加到列表" msgid "OK" msgstr "确定" msgid "&File" msgstr "文件(&F)" msgid "&New…" msgstr "新建(&N)…" msgid "New from &POT/PO file…" msgstr "从 POT/PO 文件新建(&P)..." msgid "New From &POT/PO File…" msgstr "从 POT/PO 文件新建(&P)..." msgid "&Open…" msgstr "打开(&O)…" msgid "Open Recent" msgstr "打开最近的" msgid "Open recent" msgstr "打开最近的" msgid "Open cloud translation…" msgstr "打开云翻译..." msgid "Open Cloud Translation…" msgstr "打开云翻译..." msgid "&Start window" msgstr "启动窗口(&S)" msgid "&Start Window" msgstr "启动窗口(&S)" msgid "Catalogs &manager" msgstr "编目管理器(&M)" msgid "Catalogs &Manager" msgstr "编目管理器(&M)" msgid "&Close" msgstr "关闭(&C)" msgid "&Save" msgstr "保存(&S)" msgid "Save &as…" msgstr "另存为(&A)…" msgid "Save &As…" msgstr "另存为(&A)…" msgid "Compile to MO…" msgstr "编译为 MO…" msgid "E&xport to HTML…" msgstr "导出到 HTML(&X)…" msgid "Check for updates…" msgstr "检查更新…" msgid "Settings…" msgstr "设置…" msgid "&Preferences" msgstr "首选项(&P)" msgid "E&xit" msgstr "退出(&X)" msgid "Quit" msgstr "退出" msgid "Copy from singular" msgstr "复制单数" msgid "Copy From Singular" msgstr "复制单数" msgid "Translation needs &work" msgstr "翻译需要处理(&W)" msgid "Translation Needs &Work" msgstr "翻译需要处理(&W)" msgid "Edit &comment" msgstr "编辑注释(&C)" msgid "Edit &Comment" msgstr "编辑注释(&C)" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "建议" msgid "&Find…" msgstr "查找(&F)…" msgid "Replace…" msgstr "替换…" msgid "Find next" msgstr "查找下一个" msgid "Find previous" msgstr "查找上一个" msgid "Find and Replace…" msgstr "查找和替换…" msgid "Find Next" msgstr "查找下一个" msgid "Find Previous" msgstr "查找上一个" msgid "Show string &ID" msgstr "显示字符串 ID(&I)" msgid "Show String &ID" msgstr "显示字符串 ID(&I)" msgid "Show warnings" msgstr "显示警告" msgid "Show Warnings" msgstr "显示警告" msgid "Sort by &file order" msgstr "按文件顺序排序(&F)" msgid "Sort by &File Order" msgstr "按文件顺序排序(&F)" msgid "Sort by &source" msgstr "按源文排序(&S)" msgid "Sort by &Source" msgstr "按源文排序(&S)" msgid "Sort by &translation" msgstr "按翻译排序(&T)" msgid "Sort by &Translation" msgstr "按翻译排序(&T)" msgid "&Group by context" msgstr "按上下文分组(&G)" msgid "&Group By Context" msgstr "按上下文分组(&G)" msgid "Entries with errors first" msgstr "带有错误的条目优先" msgid "Entries with Errors First" msgstr "带有错误的条目优先" msgid "&Untranslated entries first" msgstr "未翻译条目优先(&U)" msgid "&Untranslated Entries First" msgstr "未翻译条目优先(&U)" msgid "&Show code occurrences" msgstr "显示代码出现位置(&S)" msgid "&Show Code Occurrences" msgstr "显示代码出现位置(&S)" msgid "Show sidebar" msgstr "显示侧边栏" msgid "Show status bar" msgstr "显示状态栏" msgid "&Translation" msgstr "翻译(&T)" msgid "&Update from source code" msgstr "从源代码更新(&U)" msgid "&Update from Source Code" msgstr "从源代码更新(&U)" msgid "Update from &POT file…" msgstr "从 POT 文件更新(&P)…" msgid "Update from &POT File…" msgstr "从 POT 文件更新(&P)…" msgid "Sync with Crowdin" msgstr "与 Crowdin 同步" msgid "Pre-&translate…" msgstr "预翻译(&T)…" msgid "&Validate translations" msgstr "验证翻译(&V)" msgid "&Validate Translations" msgstr "验证翻译(&V)" msgid "Remove Same-as-Source Translations" msgstr "移除相同源文的翻译" msgid "&Purge deleted translations" msgstr "清除已删除的翻译(&P)" msgid "&Purge Deleted Translations" msgstr "清除已删除的翻译(&P)" msgid "&Properties…" msgstr "属性(&P)…" msgid "&Go" msgstr "转到(&G)" msgid "&Done and next" msgstr "完成并转到下一个(&D)" msgid "&Done and Next" msgstr "完成并转到下一个(&D)" msgid "Previously edited" msgstr "已被编辑" msgid "Previously Edited" msgstr "已被编辑" msgid "&Previous translation" msgstr "前一个翻译(&P)" msgid "&Previous Translation" msgstr "前一个翻译(&P)" msgid "&Next translation" msgstr "下一个翻译(&N)" msgid "&Next Translation" msgstr "下一个翻译(&N)" msgid "P&revious unfinished" msgstr "上一个未完成(&R)" msgid "P&revious Unfinished" msgstr "上一个未完成(&R)" msgid "Ne&xt unfinished" msgstr "下一个未完成(&X)" msgid "Ne&xt Unfinished" msgstr "下一个未完成(&X)" msgid "Previous plural form" msgstr "上一个复数形式" msgid "Previous Plural Form" msgstr "上一个复数形式" msgid "Next plural form" msgstr "下一个复数形式" msgid "Next Plural Form" msgstr "下一个复数形式" msgid "&Online help" msgstr "在线帮助(&O)" msgid "&Online Help" msgstr "在线帮助(&O)" msgid "&GNU gettext manual" msgstr "GNU gettext 手册(&G)" msgid "&GNU gettext Manual" msgstr "GNU gettext 手册(&G)" msgid "&About Poedit" msgstr "关于 Poedit (&A)" msgid "&About" msgstr "关于(&A)" msgid "Extractor setup" msgstr "提取器安装" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "用分号分隔的扩展名列表(例如 *.cpp;*.h):" msgid "Invocation:" msgstr "调用:" msgid "Command to extract translations:" msgstr "提取翻译的命令:" 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" "字符集标记(见下面)。" msgid "An item in keywords list:" msgstr "在关键字列表中的项:" msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "对于每个关键字,这将被附加到命令行一次。\n" "%k 展开成关键字。" msgid "An item in input files list:" msgstr "在输入文件列表中的项:" #, 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 展开成文件名。" msgid "Source code charset:" msgstr "源代码字符集:" #, 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 展开成字符集值。" msgid "Translation Properties" msgstr "翻译属性" msgid "Project name and version:" msgstr "项目名称和版本:" msgid "Language team:" msgstr "语言团队:" msgid "Plural forms:" msgstr "复数形式:" msgid "Use default rules for this language" msgstr "使用默认语言" msgid "Use custom expression" msgstr "使用自定义表达式" msgid "Learn about plural forms" msgstr "了解复数形式" msgid "Charset:" msgstr "字符集:" msgid "Advanced Extraction Settings…" msgstr "高级提取设置…" msgid "Advanced extraction settings…" msgstr "高级提取设置…" msgid "Translation properties" msgstr "翻译属性" msgid "Sources Paths" msgstr "源路径" msgid "Sources paths" msgstr "源路径" msgid "Extract text from source files in the following directories:" msgstr "从下列目录中的源文件提取文本:" msgid "Base path:" msgstr "基本路径:" msgid "Sources Keywords" msgstr "源关键字" msgid "Sources keywords" msgstr "源关键字" msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "使用这些关键字(函数名)来识别源文件中的可翻译字串:" msgid "Also use default keywords for supported languages" msgstr "支持的语言也使用默认的关键字" msgid "Learn about gettext keywords" msgstr "了解 gettext 关键字" msgid "Update summary" msgstr "更新摘要" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" "这些字符串在源中发现,但不在文件中。\n" "Poedit 现在会将它们添加到文件中。" msgid "New strings" msgstr "新建字串" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" "源文件中不再有这些字符串。\n" "Poedit 现在将从文件中移除这些字符串。" msgid "Obsolete strings" msgstr "已废弃的字串" msgid "(0 new, 0 obsolete)" msgstr "(0 个新建,0 个已废弃)" msgid "Open" msgstr "" msgid "Open file" msgstr "打开文件" msgid "Save file" msgstr "保存文件" msgid "Validate" msgstr "验证" msgid "Check for errors in the translation" msgstr "检查翻译中的错误" msgid "Update from code" msgstr "从代码更新" msgid "Update from Code" msgstr "从代码更新" msgid "Update from source code" msgstr "从源代码更新" msgid "Sidebar" msgstr "侧边栏" msgid "Show or hide the sidebar" msgstr "显示或隐藏侧边栏" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. msgid "Previous source text" msgstr "先前的源文本" msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "现在不准确的翻译对应的旧的源文本(在此次更新的变更前)。" msgid "Notes for translators" msgstr "翻译者注释" msgid "Comment" msgstr "注释" msgid "Add comment" msgstr "添加注释" msgid "Add Comment" msgstr "添加注释" msgid "Delete From Translation Memory" msgstr "从翻译记忆中删除" msgid "Delete from translation memory" msgstr "从翻译记忆中删除" msgid "Translation suggestions" msgstr "翻译建议" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). msgid "No matches found" msgstr "未找到匹配项" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). msgid "No Matches Found" msgstr "未找到匹配项" msgid "This string was found in Poedit’s translation memory." msgstr "Poedit 的翻译记忆库中找到此字符串。" msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "翻译建议需要源文本。如果只有非实际文本的 ID 则不能用。" msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "翻译建议需要了解源文本的语言。Poedit 在此文件中没有检测到。" msgid "The TMX file is malformed." msgstr "TMX 文件格式不正确。" msgid "No translations were found in the TMX file." msgstr "TMX 文件中没有找到译文。" #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "翻译记忆数据库已损坏:%s (%d)。" #, c-format msgid "Translation memory error: %s (%d)." msgstr "翻译记忆错误:%s (%d)。" msgid "Cannot create temporary directory." msgstr "不能创建临时目录。" msgid "There are no translations. That’s unusual." msgstr "找不到翻译文件,这不正常。" msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "Translators typically use PO template files (POTs) prepared for them by the " "developer." msgstr "" "翻译条目不会在 Gettext 系统中手动添加条目,但是会自动从源代码中提取。\n" "这样一来,我们可以掌握最新和最准确的需要翻译的条目。\n" "翻译人员通常使用由开发商为他们准备 PO 模板文件(POT)。" msgid "(Learn more about GNU gettext)" msgstr "(了解更多关于 GNU gettext 的内容)" msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "用翻译填写此文件最简单的方式就是利用 POT 更新它:" msgid "Update from POT" msgstr "从 POT 文件更新" msgid "Take translatable strings from an existing POT template." msgstr "从现有的 POT 模板中提取可翻译的字符串。" msgid "" "You can also extract translatable strings directly from the source code:" msgstr "你也可以直接从源代码中提取可翻译的字符串:" msgid "Extract from sources" msgstr "从源代码中提取" msgid "Configure source code extraction in Properties." msgstr "在属性中配置源代码提取。" #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #, c-format msgid "Version %s" msgstr "版本 %s" msgid "Create new" msgstr "新建" msgid "Create new translation from POT template." msgstr "利用 POT 模板创建新翻译。" msgid "Browse files" msgstr "浏览文件" msgid "Open and edit translation files." msgstr "打开并编辑翻译文件。" msgid "Translate cloud project" msgstr "翻译云工程" msgid "Collaborate with other people online." msgstr "与其他人在线合作。" msgid "Recent files" msgstr "最近的文件" msgid "Sync" msgstr "同步" 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") #, c-format msgid "About %s" msgstr "关于 %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #, c-format msgid "%s Preferences" msgstr "%s 首选项" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "服务" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "隐藏 %s" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "隐藏其他" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "全部显示" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "退出 %s" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "首选项…" msgid "Preferences..." msgstr "首选项..." #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "最近" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "频繁" msgid "&Apply" msgstr "应用(&A)" msgid "Apply" msgstr "应用" msgid "&Back" msgstr "返回(&B)" msgid "Back" msgstr "返回" msgid "&Cancel" msgstr "取消(&C)" msgid "&Clear" msgstr "清除(&C)" msgid "Clear" msgstr "清除" msgid "Copy" msgstr "复制" msgid "Cu&t" msgstr "剪切(&T)" msgid "Cut" msgstr "剪切" msgid "Edit" msgstr "编辑" msgid "&Quit" msgstr "退出(&Q)" msgid "Help" msgstr "帮助" msgid "&New" msgstr "新建(&N)" msgid "New" msgstr "新建" msgid "&No" msgstr "否(&N)" msgid "No" msgstr "否" msgid "&OK" msgstr "确定(&O)" msgid "Open…" msgstr "打开…" msgid "&Open..." msgstr "打开(&O)..." msgid "Open..." msgstr "打开..." msgid "&Paste" msgstr "粘贴(&P)" msgid "Paste" msgstr "粘贴" msgid "Preferences" msgstr "首选项" msgid "&Redo" msgstr "恢复(&R)" msgid "Refresh" msgstr "刷新" msgid "&Save as" msgstr "另存为(&S)" msgid "Save as" msgstr "另存为" msgid "Select &All" msgstr "全选(&A)" msgid "Select All" msgstr "全选" msgid "&Undo" msgstr "撤销(&U)" msgid "&Yes" msgstr "是(&Y)" msgid "Yes" msgstr "是" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "Up" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "Down" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "左" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "右" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "shift" poedit-3.5/locales/it.po0000644000175100001770000020270214664354153012205 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "Nascondi questo messaggio di notifica" msgid "Don’t Show Again" msgstr "Non mostrare più" msgid "Don’t show again" msgstr "Non mostrare più" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(nuove stringhe: %i, stringhe obsolete: %i)" msgid "Collecting source files…" msgstr "Raccolta dei file sorgenti…" msgid "Extracting translatable strings…" msgstr "Estraendo le stringhe traducibili…" msgid "Failed to load file with extracted translations." msgstr "Impossibile caricare il file con le traduzioni estratte." msgid "Merging differences…" msgstr "Unione delle differenze…" msgid "Updating translations" msgstr "Aggiornando le traduzioni" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "Impossibile aprire il file \"%s\"." msgid "Invalid file" msgstr "File non valido" #, c-format msgid "Malformed header: “%s”" msgstr "Intestazione malformata: “%s”" msgid "PO Translation Files" msgstr "File traduzione PO " msgid "POT Translation Templates" msgstr "Modelli traduzione POT" msgid "XLIFF Translation Files" msgstr "File traduzione XLIFF" msgid "JSON Translation Files" msgstr "File traduzione JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "File traduzione Flutter" msgid "All Translation Files" msgstr "Tutti i file di traduzione" msgid "The file is in a format not recognized by Poedit." msgstr "Il file è in un formato non riconosciuto da Poedit." 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." #, c-format msgid "Reading file content failed with the following error: %s" msgstr "La lettura del contenuto del file non è riuscita. Errore: %s" #, 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." #, c-format msgid "Couldn’t save file %s." msgstr "Impossibile salvare il file %s." msgid "Screenshots:" msgstr "Schermate:" #, 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." #, 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)." msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "File PO corrotto: forma msgstr singolare usata con msgid_plural" msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "File PO corrotto: forma msgstr plurale usata senza msgid_plural" msgid "Couldn’t load the file, it is probably damaged." msgstr "Impossibile caricare il file, probabilmente è danneggiato." 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." 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)" #, 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." msgid "Error saving file" msgstr "Errore durante il salvataggio del file" #, c-format msgid "“%s” is not a valid POT file." msgstr "\"%s\" non è un file POT valido." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Errore durante il caricamento del file XLIFF: %s" #, 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 msgid "Broken markup in translation string." msgstr "Marcatore corrotto nella stringa traduzione." msgid "(Use default language)" msgstr "(Utilizza la lingua predefinita)" msgid "Language selection" msgstr "Selezione della lingua" msgid "Select your preferred language" msgstr "Seleziona la lingua preferita" msgid "You must restart Poedit for this change to take effect." msgstr "Riavvia Poedit affinché questo cambiamento abbia effetto." msgid "Add Account" msgstr "Aggiungi Account" msgid "Add account" msgstr "Aggiungi account" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "Scopri di più su %s" 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." msgid "How does cloud sync work?" msgstr "Come funziona la sincronizzazione cloud?" msgid "Account" msgstr "Account" msgid "(not signed in)" msgstr "(non registrato)" msgid "File" msgstr "File" msgid "Open cloud translation" msgstr "Apri traduzione cloud" msgid "Manage accounts" msgstr "Gestisci account" msgid "Project:" msgstr "Progetto:" msgid "Language:" msgstr "Lingua:" msgid "Sign in to Cloud Account" msgstr "Accedi all'account cloud" msgid "Sign in to cloud account" msgstr "Accedi all'account cloud" msgid "No translation projects listed in your account." msgstr "Nell'account non è elencato nessun progetto." msgid "Downloading latest translations…" msgstr "Download versione aggiornata traduzione…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #, c-format msgid "Sign in to %s" msgstr "Accedi a %s" msgid "Syncing" msgstr "Sincronizzazione" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, 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. #, c-format msgid "Uploading translations to %s failed." msgstr "Caricamento traduzioni in '%s' non riuscito." msgid "Syncing error" msgstr "Errore di sincronizzazione" msgid "Add" msgstr "Aggiungi" msgid "Unknown Crowdin error." msgstr "Errore Crowdin sconosciuto." msgid "Not authorized, please sign in again." msgstr "Non autorizzato. È necessario autenticarsi per procedere, grazie." msgid "Downloading translations is disabled in this project." msgstr "Il download delle traduzioni è disabilitato in questo progetto." msgid "Sign In" msgstr "Autenticati" msgid "Sign in" msgstr "Accedi" msgid "Sign Out" msgstr "Disconnettiti" msgid "Sign out" msgstr "Disconnetti" msgid "Learn more about Crowdin" msgstr "Scopri di più su Crowdin" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" "Crowdin è una piattaforma online di gestione della localizzazione e uno " "strumento di traduzione collaborativa." msgid "Waiting for authentication…" msgstr "Autenticazione…" msgid "Updating user information…" msgstr "Aggiornamento informazioni utente…" msgid "Sign in to Crowdin" msgstr "Accedi a Crowdin" msgid "Syncing with Crowdin failed." msgstr "Sincronizzazione con Crowdin fallita." msgid "Crowdin error" msgstr "Errore di Crowdin" msgid "Uploading translations…" msgstr "Aggiornamento traduzioni…" msgid "&Copy" msgstr "&Copia" msgid "Learn more" msgstr "Scopri di più" msgid "&Help" msgstr "&Aiuto" msgid "MO files can’t be directly edited in Poedit." msgstr "I file MO non possono essere modificati direttamente con Poedit." msgid "Error opening file" msgstr "Errore durante l'apertura del file" 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." msgid "don’t delete temporary files (for debugging)" msgstr "non eliminare i file temporanei (per il debug)" msgid "handle a poedit:// URI" msgstr "gestisce un URI poedit://" msgid "go to item at given line number" msgstr "vai all'elemento al numero di riga dato" msgid "Failed to communicate with Poedit process." msgstr "Errore di comunicazione con il processo di Poedit." #, c-format msgid "Unhandled exception occurred: %s" msgstr "Si è verificata un'eccezione non gestita: %s" msgid "Select translation template" msgstr "Seleziona il modello traduzione" msgid "Select translation file" msgstr "Seleziona il file traduzione" msgid "Poedit is an easy to use translation editor." msgstr "Poedit è un editor per traduzioni semplice da utilizzare." msgid "You can’t drop more than one file on Poedit window." msgstr "Impossibile trascinare più file nella finestra di Poedit." #, c-format msgid "File “%s” is not a translation file." msgstr "Il file “%s” non è un file traduzione." #, c-format msgid "File “%s” doesn’t exist." msgstr "Il file \"%s\" non esiste." 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". #, 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." msgid "Install" msgstr "Installa" #, c-format msgid "The file “%s” has been changed by another application." msgstr "Il file “%s” è stato modificato da un'altra applicazione." msgid "Reload file" msgstr "Ricarica il file" 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." msgid "Ignore" msgstr "Ignora" msgid "Reload File" msgstr "Ricarica il File" msgid "The file has been modified. Do you want to save changes?" msgstr "" "Il file è stato modificato.\n" "Vuoi salvare le modifiche?" msgid "Save changes" msgstr "Salva le modifiche" msgid "Your changes will be lost if you don’t save them." msgstr "Le modifiche saranno perse se non le salvi." msgid "Save" msgstr "Salva" msgid "Do&n’t save" msgstr "&Non salvare" msgid "Don’t Save" msgstr "Non salvare" 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." msgid "Cancel" msgstr "Annulla" msgid "Save Anyway" msgstr "Salva Comunque" msgid "Save anyway" msgstr "Salva comunque" msgid "Save as…" msgstr "Salva come…" msgid "Compile to…" msgstr "Compila in…" msgid "Compiled Translation Files" msgstr "File traduzione compilati" msgid "Export to HTML…" msgstr "Esporta in HTML…" msgid "HTML Files" msgstr "FIle HTML" #, c-format msgid "In: %s" msgstr "In: %s" msgid "Source code not available." msgstr "Codice sorgente non disponibile." msgid "Updating failed" msgstr "Aggiornamento non riuscito" 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." msgid "Permission denied." msgstr "Permesso negato." 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. 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. 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." msgid "Translation entries in the file are probably incorrect." msgstr "Le voci traduzione nel file sono probabilmente errate." msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "" "Aggiornamento del file fallito. Clicca su 'Dettagli >>' per i dettagli." msgid "Open translation template" msgstr "Apri modello traduzione" #, 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." msgid "Validation results" msgstr "Risultati della convalida" 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." msgid "The file was saved safely." msgstr "Il file è stato correttamente salvato." 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." 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." 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." msgid "The file cannot be compiled into the MO format and used." msgstr "Il file non può essere compilato nel formato MO e usato." msgid "No problems with the translation found." msgstr "Nessun problema trovato nella traduzione." #, 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." msgid "The translation is ready for use." msgstr "La traduzione è pronta per l'uso." #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "" "Poedit correggerà automaticamente il contenuto non valido nel file \"%s\"." msgid "" "The file contained duplicate items, which is not allowed in PO files and " "would prevent the file from being used. Poedit fixed the issue, but you " "should review translations of any items marked as 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." msgid "Language of the translation isn’t set." msgstr "La lingua traduzione non è impostata." msgid "Set Language" msgstr "Imposta lingua" msgid "Set language" msgstr "Imposta lingua" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." msgid "" "Suggestions are not available if the translation language is not set " "correctly. Other features, such as plural forms, may be affected as well." msgstr "" "I suggerimenti non sono disponibili se la lingua traduzione non è impostata " "correttamente.\n" "Anche altre caratteristiche, come i plurali, possono presentare dei problemi." msgid "Language of the translation is the same as source language." msgstr "La lingua del file traduzione è la stessa lingua del file sorgente." msgid "Fix Language" msgstr "Correggi la lingua" msgid "Fix language" msgstr "Correggi la lingua" 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." 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" msgid "Required header Plural-Forms is missing." msgstr "Manca l'intestazione richiesta per i plurali." #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Errore di sintassi nell'intestazione delle forme plurali (\"%s\")." msgid "Fix the Header" msgstr "Correggi l'intestazione" 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". #, 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.")" msgid "Review" msgstr "Revisiona" msgid "Would you like to use English for source text?" msgstr "Vuoi usare l'inglese per il testo sorgente?" #, 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" msgid "Load English" msgstr "Carica inglese" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Tradotti: %d di %d (%d %%)" #, c-format msgid "Remaining: %d" msgstr "Rimanenti: %d" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d errore" msgstr[1] "%d errori" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d voce" msgstr[1] "%d voci" msgid " (unsaved)" msgstr " (non salvato)" msgid " (modified)" msgstr " (modificato)" #, c-format msgid "Failed to update translation memory: %s" msgstr "Impossibile aggiornare la memoria traduzione: %s" msgid "Remove same-as-source translations" msgstr "Rimuovi traduzioni identiche a sorgente" 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?" 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." msgid "Keep" msgstr "Mantieni" msgid "Remove" msgstr "Rimuovi" msgid "Purge deleted translations" msgstr "Rimuovi le traduzioni eliminate" 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?" 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." msgid "Purge" msgstr "Rimuovi" msgid "Copy from source text" msgstr "Copia dal testo sorgente" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "Cancella traduzione" msgid "Clear Translation" msgstr "Cancella traduzione" msgid "Edit comment" msgstr "Modifica commento" msgid "Edit Comment" msgstr "Modifica commento" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "Occorrenze del Codice" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "Occorrenze del codice" msgid "Hide Sidebar" msgstr "Nascondi barra laterale" msgid "Show Sidebar" msgstr "Mostra barra laterale" msgid "Hide Status Bar" msgstr "Nascondi barra di stato" msgid "Show Status Bar" msgstr "Visualizza barra di stato" msgid "String length in characters: translation | source" msgstr "Lunghezza stringa in caratteri: traduzione | sorgente" msgid "String length in characters" msgstr "Lunghezza della stringa in caratteri" msgid "Source text" msgstr "Testo sorgente" msgid "Singular" msgstr "Singolare" msgid "Plural" msgstr "Plurale" msgid "Translation" msgstr "Traduzione" msgid "Pre-translated" msgstr "Pre-tradotta" 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. msgid "Needs work" msgstr "Richiede verifica" msgid "" "POT files are only templates and don’t contain any translations themselves.\n" "To make a translation, create a new PO file based on the template." msgstr "" "I file POT sono solo modelli e non contengono traduzioni.\n" "Per fare una traduzione, crea un nuovo file PO utilizzando un modello." msgid "Create new translation" msgstr "Crea una nuova traduzione" 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 msgid "Source text ID" msgstr "ID testo sorgente" msgid "Everything" msgstr "Qualsiasi" #, c-format msgid "Form %i" msgstr "Forma %i" #, c-format msgid "Form %i (unused)" msgstr "Forma %i (inutilizzata)" msgid "Zero" msgstr "Zero" msgid "One" msgstr "Uno" msgid "Two" msgstr "Due" msgid "Other" msgstr "Altro" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, c-format msgid "String context: %s" msgstr "Contesto stringa: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #, c-format msgid "String identifier: %s" msgstr "Identificatore stringa: %s" #, c-format msgid "%s Format" msgstr "Formato %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "formato %s" #, c-format msgid "Translation — %s" msgstr "Traduzione — %s" msgid "ID" msgstr "ID" #, c-format msgid "Source text — %s" msgstr "Testo sorgente — %s" msgid "unknown language" msgstr "lingua sconosciuta" #, c-format msgid "Network error: %s (%d)" msgstr "Errore di rete: %s (%d)" msgid "Unknown error" msgstr "Errore sconosciuto" #, c-format msgid "Failed command: %s" msgstr "Comando non riuscito: %s" msgid "Failed to merge gettext catalogs." msgstr "Impossibile unire i cataloghi gettext." msgid "Open in Editor" msgstr "Apri nell'editor" msgid "Open in editor" msgstr "Apri nell'editor" 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." msgid "No usage information" msgstr "Nessun'informazione d'uso" #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d occorrenza del codice" msgstr[1] "%d occorrenze del codice" msgid "Source code not found" msgstr "Codice sorgente non trovato" 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." msgid "File cannot be opened" msgstr "Impossibile aprire il file" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "Poedit non è riuscito ad aprire il file “%s”." msgid "Find" msgstr "Trova" msgid "Replace" msgstr "Sostituisci" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "Opzioni" msgid "Ignore case" msgstr "Ignora maiuscole" msgid "Wrap around" msgstr "Torna su se raggiungi la fine" msgid "Whole words only" msgstr "Solo parole intere" msgid "Find in source texts" msgstr "Trova nel testo sorgente" msgid "Find in translations" msgstr "Trova nella traduzione" msgid "Find in comments" msgstr "Trova nei commenti" msgid "Close" msgstr "Chiudi" msgid "Replace &All" msgstr "Sostituisci t&utto" msgid "Replace &all" msgstr "Sostituisci t&utto" msgid "&Replace" msgstr "&Sostituisci" msgid "< &Previous" msgstr "< &Indietro" msgid "&Next >" msgstr "Ava&nti >" msgid "String to find" msgstr "Stringa da trovare" msgid "Replacement string" msgstr "Stringa di sostituzione" #, c-format msgid "Cannot execute program: %s" msgstr "Impossibile eseguire il programma: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "Nome o codice lingua" msgid "Translation Language" msgstr "Lingua della traduzione" msgid "Language of the translation:" msgstr "Lingua della traduzione:" msgid "All strings" msgstr "Tutte le stringhe" msgid "Couldn’t download Localazy project details." msgstr "Impossibile scaricare i dettagli del progetto Localazy." msgid "There was an error when uploading translations to Localazy." msgstr "" "Si è verificato un errore durante il caricamento delle traduzioni in " "Localazy." msgid "Projects" msgstr "Progetti" 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." msgid "Add Project" msgstr "Aggiungi progetto" msgid "Add project" msgstr "Aggiungi progetto" msgid "Poedit - Catalogs manager" msgstr "Poedit - Gestore cataloghi" msgid "Edit…" msgstr "Modifica…" msgid "Create new translations project" msgstr "Crea nuovo progetto di traduzione" msgid "Delete the project" msgstr "Elimina il progetto" msgid "Edit the project" msgstr "Modifica il progetto" msgid "Update all" msgstr "Aggiorna tutto" msgid "Update all catalogs in the project" msgstr "Aggiorna tutti i cataloghi nel progetto" msgid "Total" msgstr "Totale" msgid "Untrans" msgstr "Non tradotte" msgctxt "column/row header" msgid "Needs Work" msgstr "Necessita Verifica" msgid "Errors" msgstr "Errori" msgid "Last modified" msgstr "Ultima modifica" msgid "Select directory" msgstr "Seleziona la cartella" msgid "Directories:" msgstr "Cartelle:" msgid "" msgstr "" #, c-format msgid "Do you want to delete project “%s”?" msgstr "Vuoi eliminare il progetto “%s”?" msgid "Delete project" msgstr "Elimina il progetto" msgid "Deleting the project will not delete any translation files." msgstr "Eliminare il progetto non eliminerà alcun file traduzione." msgid "Confirmation" msgstr "Conferma" msgid "Update all catalogs in this project?" msgstr "Aggiornare tutti i cataloghi in questo progetto?" 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." msgid "Check for Updates…" msgstr "Verifica Aggiornamenti…" msgid "Catalogs Manager" msgstr "Gestore cataloghi" msgid "&Preferences…" msgstr "&Preferenze…" msgid "&Edit" msgstr "&Modifica" msgid "Undo" msgstr "Annulla" msgid "Redo" msgstr "Ripeti" msgid "Paste and Match Style" msgstr "Incolla e verifica corrispondenze stile" msgid "Delete" msgstr "Elimina" msgid "Spelling and Grammar" msgstr "Ortografia e Grammatica" msgid "Show Spelling and Grammar" msgstr "Visualizza ortografia e grammatica" msgid "Check Document Now" msgstr "Verifica ora il documento" msgid "Check Spelling While Typing" msgstr "Controllo ortografico durante la digitazione" msgid "Check Grammar With Spelling" msgstr "Verifica grammatica ed ortografia" msgid "Correct Spelling Automatically" msgstr "Correggi automaticamente l'ortografia" msgid "Substitutions" msgstr "Sostituzioni" msgid "Show Substitutions" msgstr "Visualizza sostituzioni " msgid "Smart Copy/Paste" msgstr "Copia/incolla rapido" msgid "Smart Quotes" msgstr "Virgolette Smart" msgid "Smart Dashes" msgstr "Trattini veloci" msgid "Smart Links" msgstr "Collegamenti rapidi" msgid "Text Replacement" msgstr "Sostituzione testo" msgid "Transformations" msgstr "Trasformazioni" msgid "Make Upper Case" msgstr "Trasforma in maiuscolo" msgid "Make Lower Case" msgstr "Trasforma in minuscolo" msgid "Capitalize" msgstr "Rendi maiuscolo" msgid "Speech" msgstr "Voce" msgid "Start Speaking" msgstr "Avvia parlato" msgid "Stop Speaking" msgstr "Ferma parlato" msgid "&View" msgstr "&Visualizza" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item 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 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 msgid "Enter Full Screen" msgstr "Modalità a schermo intero" msgid "Window" msgstr "Finestra" msgid "Minimize" msgstr "Riduci a icona" msgid "Zoom" msgstr "Ingrandisci" msgid "Welcome to Poedit" msgstr "Benvenuto in Poedit" msgid "Bring All to Front" msgstr "Mostra tutto in primo piano" msgid "Information about the translator" msgstr "Informazioni sul traduttore" msgid "Name:" msgstr "Nome:" msgid "Your Name" msgstr "Il tuo nome" msgid "Email:" msgstr "Email:" msgid "you@example.com" msgstr "you@example.com" 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." msgid "Editing" msgstr "Modifica" msgid "Automatically compile MO file when saving" msgstr "Compila automaticamente il file MO durante il salvataggio" msgid "Show summary after updating files" msgstr "Dopo l'aggiornamento del file visualizza riepilogo" msgid "Check spelling" msgstr "Controllo ortografico" msgid "Always change focus to text input field" msgstr "Posiziona sempre il cursore nel campo di immissione del testo" 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." msgid "Appearance" msgstr "Aspetto" msgid "Use custom list font:" msgstr "Font personalizzato per gli elenchi:" msgid "Use custom text fields font:" msgstr "Usa un carattere personalizzato per i campi di testo:" msgid "Change UI language" msgstr "Cambia la lingua dell'interfaccia" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions msgid "(requires Windows 8 or newer)" msgstr "(richiede Windows 8 o successivo)" msgid "General" msgstr "Generale" msgid "Use translation memory" msgstr "Usa la memoria di traduzione" msgid "Manage…" msgstr "Gestione…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "Quando aggiorni dai sorgenti" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "corrispondenza parziale nel file" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "pre-traduci dalla MT" 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." msgid "Stored translations:" msgstr "Traduzioni memorizzate:" msgid "Database size on disk:" msgstr "Dimensione database sul disco:" msgid "Import Translation Files…" msgstr "Importazione dei file della traduzione…" msgid "Import translation files…" msgstr "Importazione dei file della traduzione…" msgid "Import From TMX…" msgstr "Importazione da TMX…" msgid "Import from TMX…" msgstr "Importazione da TMX…" msgid "Export To TMX…" msgstr "Esportazione in TMX…" 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). msgid "Reset" msgstr "Resetta" msgid "Select translation files to import" msgstr "Seleziona i file di traduzione da importare" msgid "Translation Memory" msgstr "Memoria di traduzione (TM)" msgid "Importing translations…" msgstr "Importazione traduzioni…" #, c-format msgid "Error loading translation file “%s”." msgstr "Errore nbel caricamento del file traduzione \"%s\"." msgid "Finalizing…" msgstr "Finalizzazione in corso…" msgid "Select TMX files to import" msgstr "Seleziona i file TMX da importare" msgid "TMX Files" msgstr "File TMX" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "L'importazione della memoria traduzione da \"%s\" è fallita." msgid "Import error" msgstr "Errore d'importazione" msgid "Export as…" msgstr "Esporta come…" msgid "Exporting translations…" msgstr "Esportazione traduzioni…" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "L'esportazione della memoria traduzione in \"%s\" è fallita." msgid "Export error" msgstr "Errore d'esportazione" msgid "Reset translation memory" msgstr "Azzera la memoria di traduzione" msgid "Are you sure you want to reset the translation memory?" msgstr "Sei sicuro di voler azzerare la memoria di traduzione?" 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. msgid "TM" msgstr "MT" 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." msgid "Custom Extractors:" msgstr "Estrattori personalizzati:" msgid "Custom extractors:" msgstr "Estrattori personalizzati:" msgid "GNU gettext" msgstr "GNU gettext" 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)." msgid "Delete extractor" msgstr "Elimina estrattore" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "Sei sicuro di voler eliminare l'estrattore \"%s\"?" msgid "Extractors" msgstr "Estrattori" msgid "Accounts" msgstr "Account" msgid "Automatically check for updates" msgstr "Controlla automaticamente gli aggiornamenti" msgid "Include beta versions" msgstr "Includi versioni beta" 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." msgid "Updates" msgstr "Aggiornamenti" 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." msgid "Line endings:" msgstr "Terminazioni di riga:" msgid "Unix (recommended)" msgstr "Unix (consigliato)" msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "A capo a:" msgid "Preserve formatting of existing files" msgstr "Non modificare la formattazione dei file" msgid "Advanced" msgstr "Avanzate" msgid "Settings" msgstr "Impostazioni" msgid "Preparing strings…" msgstr "Preparando le stringhe…" msgid "Pre-translating from translation memory…" msgstr "Pretraduzione dalla memoria traduzione…" #, 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" msgid "Pre-translating…" msgstr "Pre-traduzione in corso…" 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. msgid "Pre-translate" msgstr "Pre-traduzione" 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." msgid "Cannot pre-translate from unknown language." msgstr "Impossibile pre-tradurre da una lingua sconosciuta." 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." msgid "Only fill in exact matches" msgstr "Riempi solo quelle con corrispondenza esatta" 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." msgid "Don’t mark exact matches as needing work" msgstr "Non segnare le corrispondenze esatte come 'Da verificare'" 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." 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." #, 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." 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." msgid "No entries could be pre-translated." msgstr "Nessun elemento è stato pre-tradotto." 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." msgid "Cancelling…" msgstr "Annullando…" msgid "Drag Folders or Files Here" msgstr "Trascina Qui Cartelle o File" msgid "Drag folders or files here" msgstr "Trascina qui cartelle o file" msgid "Add Folders…" msgstr "Aggiungi Cartelle…" msgid "Add folders…" msgstr "Aggiungi cartelle…" msgid "Add Files…" msgstr "Aggiungi file…" msgid "Add files…" msgstr "Aggiungi file…" msgid "Add Wildcard…" msgstr "Aggiungi carattere jolly…" 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) 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" msgid "Show in Explorer" msgstr "Visualizza in Explorer" msgid "Show in Folder" msgstr "Visualizza nella cartella" msgid "Paths" msgstr "Percorsi" msgid "Excluded paths" msgstr "Percorsi esclusi" msgid "Advanced extraction settings" msgstr "Impostazioni di estrazione avanzate" msgid "Extract notes for translators from:" msgstr "Estrai le note per i traduttori da:" msgid "Comments prefixed with:" msgstr "Commenti preceduti da:" msgid "All comments" msgstr "Tutti i commenti" msgid "Additional xgettext flags:" msgstr "Attributi xgettext aggiuntivi:" msgid "Additional keywords" msgstr "Parole chiave aggiuntive" msgid "Name of the project the translation is for" msgstr "Nome del progetto per la traduzione" msgid "Team name and email address or URL" msgstr "Nome e indirizzo email della squadra o URL" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "esempio. nplurals=2; plural=(n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (consigliato)" msgid "Please save the file first. This section cannot be edited until then." msgstr "" "Salva prima il file. Questa sezione non può essere modificata fino ad allora." msgid "Placeholders correctness" msgstr "Correttezza dei segnaposto" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "Il segnaposto \"%s\" è mancante dalla traduzione." #, c-format msgid "Superfluous placeholder “%s” that isn’t in source text." msgstr "Il segnaposto superfluo \"%s\" non è presente nel testo sorgente." msgid "Plural form translations" msgstr "Traduzioni della forma plurale" msgid "Not all plural forms are translated." msgstr "Non tutte le forme plurali sono tradotte." msgid "Inconsistent upper/lower case" msgstr "Maiuscole/minuscole inconsistenti" msgid "The translation should start as a sentence." msgstr "La traduzione dovrebbe iniziare come una frase." msgid "The translation should start with a lowercase character." msgstr "La traduzione dovrebbe iniziare con un carattere minuscolo." msgid "Inconsistent whitespace" msgstr "Spazio bianco inconsistente" msgid "The translation doesn’t start with a space." msgstr "La traduzione non inizia con uno spazio." 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." msgid "The translation is missing a newline at the end." msgstr "Manca un fine riga alla fine della traduzione." 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." msgid "The translation is missing a space at the end." msgstr "Manca uno spazio alla fine della traduzione." 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." msgid "Punctuation checks" msgstr "Controlli di punteggiatura" #, c-format msgid "The translation should end with “%s”." msgstr "La traduzione dovrebbe terminare con \"%s\"." #, c-format msgid "The translation should not end with “%s”." msgstr "La traduzione non dovrebbe terminare con \"%s\"." #, 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\"." msgid "Cloud" msgstr "Rete" msgid "Clear Menu" msgstr "Azzera elenco voci file recenti" msgid "Clear menu" msgstr "Azzera elenco voci file recenti" msgid "Comment:" msgstr "Commento:" msgid "Update" msgstr "Aggiornamento" msgid "&Delete" msgstr "&Elimina" msgid "Delete the comment" msgstr "Elimina il commento" msgid "Edit project" msgstr "Modifica progetto" msgid "Project name:" msgstr "Nome del progetto:" msgid "Browse" msgstr "Sfoglia" msgid "Add directory to the list" msgstr "Aggiungi cartella all'elenco" msgid "OK" msgstr "OK" msgid "&File" msgstr "&File" msgid "&New…" msgstr "&Nuovo…" msgid "New from &POT/PO file…" msgstr "Nuovo da file &POT/PO…" msgid "New From &POT/PO File…" msgstr "Nuovo da file &POT/PO…" msgid "&Open…" msgstr "&Apri…" msgid "Open Recent" msgstr "Apri recente" msgid "Open recent" msgstr "Apri recente" msgid "Open cloud translation…" msgstr "Apri traduzione cloud…" msgid "Open Cloud Translation…" msgstr "Apri traduzione cloud…" msgid "&Start window" msgstr "Finestra d'avvio" msgid "&Start Window" msgstr "Finestra d'Avvio" msgid "Catalogs &manager" msgstr "&Gestore dei cataloghi" msgid "Catalogs &Manager" msgstr "&Gestore cataloghi" msgid "&Close" msgstr "&Chiudi" msgid "&Save" msgstr "&Salva" msgid "Save &as…" msgstr "S&alva come…" msgid "Save &As…" msgstr "S&alva come…" msgid "Compile to MO…" msgstr "Compila in MO…" msgid "E&xport to HTML…" msgstr "E&sporta in HTML…" msgid "Check for updates…" msgstr "Verifica aggiornamenti…" msgid "Settings…" msgstr "Impostazioni…" msgid "&Preferences" msgstr "&Preferenze" msgid "E&xit" msgstr "E&sci" msgid "Quit" msgstr "Esci" msgid "Copy from singular" msgstr "Copia dal singolare" msgid "Copy From Singular" msgstr "Copia dal singolare" msgid "Translation needs &work" msgstr "La traduzione richiede una &verifica" msgid "Translation Needs &Work" msgstr "La traduzione richiede una &verifica" msgid "Edit &comment" msgstr "Modifica il &commento" msgid "Edit &Comment" msgstr "Modifica &Commento" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "Suggerimenti" msgid "&Find…" msgstr "Trova…" msgid "Replace…" msgstr "Sostituisci…" msgid "Find next" msgstr "Trova successivo" msgid "Find previous" msgstr "Trova precedente" msgid "Find and Replace…" msgstr "Trova e sostituisci…" msgid "Find Next" msgstr "Trova successivo" msgid "Find Previous" msgstr "Trova precedente" msgid "Show string &ID" msgstr "Visualizza &ID stringa" msgid "Show String &ID" msgstr "Visualizza &ID stringa" msgid "Show warnings" msgstr "Mostra avvisi" msgid "Show Warnings" msgstr "Mostra avvisi" msgid "Sort by &file order" msgstr "Ordina per ordine &file" msgid "Sort by &File Order" msgstr "Ordina per ordine &file" msgid "Sort by &source" msgstr "Ordina per &sorgente" msgid "Sort by &Source" msgstr "Ordina per &sorgente" msgid "Sort by &translation" msgstr "Ordina per &traduzione" msgid "Sort by &Translation" msgstr "Ordina per &traduzione" msgid "&Group by context" msgstr "&Raggruppa per contesto" msgid "&Group By Context" msgstr "&Raggruppa per contesto" msgid "Entries with errors first" msgstr "Prima le voci con errori" msgid "Entries with Errors First" msgstr "Prima le voci con errori" msgid "&Untranslated entries first" msgstr "&Prima le voci non tradotte" msgid "&Untranslated Entries First" msgstr "&Prima voci non tradotte" msgid "&Show code occurrences" msgstr "Visualizza occorrenze codice" msgid "&Show Code Occurrences" msgstr "Visualizza occorrenze codice" msgid "Show sidebar" msgstr "Visualizza barra laterale" msgid "Show status bar" msgstr "Visualizza barra di stato" msgid "&Translation" msgstr "Traduzione" msgid "&Update from source code" msgstr "&Aggiorna dal codice sorgente" msgid "&Update from Source Code" msgstr "&Aggiorna dal codice sorgente" msgid "Update from &POT file…" msgstr "Aggiorna da file &POT…" msgid "Update from &POT File…" msgstr "Aggiorna da file &POT…" msgid "Sync with Crowdin" msgstr "Sincronizza con Crowdin" msgid "Pre-&translate…" msgstr "Pre-&traduci…" msgid "&Validate translations" msgstr "&Verifica traduzioni" msgid "&Validate Translations" msgstr "Verifica traduzioni" msgid "Remove Same-as-Source Translations" msgstr "Rimuovi traduzioni identiche a sorgente" msgid "&Purge deleted translations" msgstr "&Rimuovi traduzioni eliminate" msgid "&Purge Deleted Translations" msgstr "&Rimuovi traduzioni eliminate" msgid "&Properties…" msgstr "&Proprietà…" msgid "&Go" msgstr "&Vai" msgid "&Done and next" msgstr "&Applica e prosegui" msgid "&Done and Next" msgstr "&Applica e prosegui" msgid "Previously edited" msgstr "Modificato precedentemente" msgid "Previously Edited" msgstr "Modificato precedentemente" msgid "&Previous translation" msgstr "Traduzione &precedente" msgid "&Previous Translation" msgstr "Traduzione &precedente" msgid "&Next translation" msgstr "Traduzione &successiva" msgid "&Next Translation" msgstr "Traduzione &successiva" msgid "P&revious unfinished" msgstr "Non tradotta p&recedente" msgid "P&revious Unfinished" msgstr "Non tradotta p&recedente" msgid "Ne&xt unfinished" msgstr "Non tradotta &successiva" msgid "Ne&xt Unfinished" msgstr "Non tradotta &successiva" msgid "Previous plural form" msgstr "Forma plurale precedente" msgid "Previous Plural Form" msgstr "Forma plurale precedente" msgid "Next plural form" msgstr "Forma plurale successiva" msgid "Next Plural Form" msgstr "Forma plurale successiva" msgid "&Online help" msgstr "&Guida in linea" msgid "&Online Help" msgstr "&Guida in linea" msgid "&GNU gettext manual" msgstr "Documentazione &GNU gettext" msgid "&GNU gettext Manual" msgstr "Documentazione &GNU gettext" msgid "&About Poedit" msgstr "Inform&azioni su Poedit" msgid "&About" msgstr "Inform&azioni" msgid "Extractor setup" msgstr "Installazione di estrattore" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Elenco di estensioni separate da punto e virgola (ad es. *.cpp;*.h):" msgid "Invocation:" msgstr "Invocazione:" msgid "Command to extract translations:" msgstr "Comando per estrarre le traduzioni:" 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)." msgid "An item in keywords list:" msgstr "Oggetto nell'elenco delle parole chiave:" 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." msgid "An item in input files list:" msgstr "Oggetto nell'elenco dei file di input:" #, 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." msgid "Source code charset:" msgstr "Codifica dei caratteri del codice sorgente:" #, 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." msgid "Translation Properties" msgstr "Proprietà della traduzione" msgid "Project name and version:" msgstr "Nome e versione del progetto:" msgid "Language team:" msgstr "Squadra di traduzione:" msgid "Plural forms:" msgstr "Forme plurali:" msgid "Use default rules for this language" msgstr "Usa regole predefinite per questa lingua" msgid "Use custom expression" msgstr "Usa espressione personalizzata" msgid "Learn about plural forms" msgstr "Scopri di più sulle forme plurali" msgid "Charset:" msgstr "Set di caratteri:" msgid "Advanced Extraction Settings…" msgstr "Impostazioni di estrazione avanzate…" msgid "Advanced extraction settings…" msgstr "Impostazioni di estrazione avanzate…" msgid "Translation properties" msgstr "Proprietà traduzione" msgid "Sources Paths" msgstr "Percorsi dei sorgenti" msgid "Sources paths" msgstr "Percorsi sorgente" msgid "Extract text from source files in the following directories:" msgstr "Estrai testo dai file sorgenti nelle seguenti cartelle:" msgid "Base path:" msgstr "Percorso base:" msgid "Sources Keywords" msgstr "Parole chiave sorgenti" msgid "Sources keywords" msgstr "Chiavi ricerca sorgente" 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:" msgid "Also use default keywords for supported languages" msgstr "Usa anche parole chiave predefinite per le lingue supportate" msgid "Learn about gettext keywords" msgstr "Scopri di più sulle parole chiave gettext" msgid "Update summary" msgstr "Aggiorna riepilogo" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" "Nel file sorgente sono state trovate queste nuove stringhe che non sono " "presenti nel file traduzione.\n" "Poedit le aggiungerà ora al file traduzione." msgid "New strings" msgstr "Nuove stringhe" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" "Queste stringhe non sono più presenti nel file sorgente.\n" "Poedit rimuoverà queste stringhe dal file traduzione." msgid "Obsolete strings" msgstr "Stringhe obsolete" msgid "(0 new, 0 obsolete)" msgstr "(0 nuove, 0 obsolete)" msgid "Open" msgstr "" msgid "Open file" msgstr "Apri file" msgid "Save file" msgstr "Salva file" msgid "Validate" msgstr "Verifica" msgid "Check for errors in the translation" msgstr "Controlla gli errori nella traduzione" msgid "Update from code" msgstr "Aggiorna dal codice" msgid "Update from Code" msgstr "Aggiorna dal codice" msgid "Update from source code" msgstr "Aggiorna dal codice sorgente" msgid "Sidebar" msgstr "Barra laterale" msgid "Show or hide the sidebar" msgstr "Visualizza/nascondi la barra laterale" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. msgid "Previous source text" msgstr "Testo sorgente precedente" 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." msgid "Notes for translators" msgstr "Note per traduttori" msgid "Comment" msgstr "Commento" msgid "Add comment" msgstr "Aggiungi commento" msgid "Add Comment" msgstr "Aggiungi commento" msgid "Delete From Translation Memory" msgstr "Cancella dalla memoria di traduzione" msgid "Delete from translation memory" msgstr "Cancella dalla memoria di traduzione" msgid "Translation suggestions" msgstr "Suggerimenti traduzione" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). msgid "No matches found" msgstr "Nessuna corrispondenza trovata" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). msgid "No Matches Found" msgstr "Nessuna corrispondenza trovata" msgid "This string was found in Poedit’s translation memory." msgstr "Nella memoria traduzione è stata trovata questa stringa." 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." 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." msgid "The TMX file is malformed." msgstr "Il file TMX presenta anomalie." msgid "No translations were found in the TMX file." msgstr "Non è stata trovata alcuna traduzione nel file TMX." #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Il database della memoria traduzione è danneggiato: %s (%d)." #, c-format msgid "Translation memory error: %s (%d)." msgstr "Errore nella memoria traduzione: %s (%d)." msgid "Cannot create temporary directory." msgstr "Impossibile creare la cartella temporanea." msgid "There are no translations. That’s unusual." msgstr "Non ci sono traduzioni, questo è strano." msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "Translators typically use PO template files (POTs) prepared for them by the " "developer." msgstr "" "Le voci traduzione non sono state aggiunte manualmente nel sistema Gettext, " "ma sono state estratte automaticamente dal codice sorgente.\n" "In questo modo, rimangono aggiornate e accurate.\n" "I traduttori di solito usano i file modello (POT) preparati per loro dagli " "sviluppatori." msgid "(Learn more about GNU gettext)" msgstr "(Scopri di più su GNU gettext)" 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:" msgid "Update from POT" msgstr "Aggiorna da file POT" msgid "Take translatable strings from an existing POT template." msgstr "Estrai le stringhe da tradurre da un modello POT esistente." msgid "" "You can also extract translatable strings directly from the source code:" msgstr "" "Puoi anche estrarre stringhe da tradurre direttamente dal codice sorgente:" msgid "Extract from sources" msgstr "Estrai dai sorgenti" 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 #, c-format msgid "Version %s" msgstr "Versione %s" msgid "Create new" msgstr "Crea nuovo" msgid "Create new translation from POT template." msgstr "Crea nuova traduzione dal modello POT." msgid "Browse files" msgstr "Naviga file" msgid "Open and edit translation files." msgstr "Apri e modifica i file traduzione." msgid "Translate cloud project" msgstr "Traduci progetto cloud" msgid "Collaborate with other people online." msgstr "Collabora online con altre persone." msgid "Recent files" msgstr "File recenti" msgid "Sync" msgstr "Sincronizza" 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") #, c-format msgid "About %s" msgstr "Informazioni su %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #, c-format msgid "%s Preferences" msgstr "Preferenze di %s" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "Servizi" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "Nascondi %s" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "Nascondi altri" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "Visualizza tutto" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "Esci da %s" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "Preferenze…" msgid "Preferences..." msgstr "Preferenze..." #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "Recenti" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "Frequenti" msgid "&Apply" msgstr "&Applica" msgid "Apply" msgstr "Applica" msgid "&Back" msgstr "&Indietro" msgid "Back" msgstr "Indietro" msgid "&Cancel" msgstr "&Annulla" msgid "&Clear" msgstr "&Rimuovi" msgid "Clear" msgstr "Rimuovi" msgid "Copy" msgstr "Copia" msgid "Cu&t" msgstr "&Taglia" msgid "Cut" msgstr "Taglia" msgid "Edit" msgstr "Modifica" msgid "&Quit" msgstr "&Esci" msgid "Help" msgstr "Aiuto" msgid "&New" msgstr "&Nuovo" msgid "New" msgstr "Nuovo" msgid "&No" msgstr "&No" msgid "No" msgstr "No" msgid "&OK" msgstr "&OK" msgid "Open…" msgstr "Apri…" msgid "&Open..." msgstr "&Apri..." msgid "Open..." msgstr "Apri..." msgid "&Paste" msgstr "&Incolla" msgid "Paste" msgstr "Incolla" msgid "Preferences" msgstr "Preferenze" msgid "&Redo" msgstr "&Ripeti" msgid "Refresh" msgstr "Aggiorna" msgid "&Save as" msgstr "&Salva come" msgid "Save as" msgstr "Salva come" msgid "Select &All" msgstr "Seleziona &tutto" msgid "Select All" msgstr "Seleziona tutto" msgid "&Undo" msgstr "&Annulla" msgid "&Yes" msgstr "&Sì" msgid "Yes" msgstr "Sì" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Maiusc+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Invio" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "Su" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "Giù" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "Sinistra" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "Destra" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "maiusc" poedit-3.5/locales/pt_PT.po0000644000175100001770000020304114664354065012616 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "Ocultar esta mensagem de notificação" msgid "Don’t Show Again" msgstr "Não mostrar novamente" msgid "Don’t show again" msgstr "Não mostrar novamente" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(Novas: %i, obsoletas: %i)" msgid "Collecting source files…" msgstr "A obter os ficheiros fonte…" msgid "Extracting translatable strings…" msgstr "A extrair entradas traduzíveis…" msgid "Failed to load file with extracted translations." msgstr "Falha ao carregar ficheiro com traduções extraídas." msgid "Merging differences…" msgstr "A incorporar diferenças…" msgid "Updating translations" msgstr "Atualizar traduções" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "Não foi possível abrir o ficheiro “%s”." msgid "Invalid file" msgstr "Ficheiro inválido" #, c-format msgid "Malformed header: “%s”" msgstr "Cabeçalho mal formado: “%s“" msgid "PO Translation Files" msgstr "Ficheiros de tradução PO" msgid "POT Translation Templates" msgstr "Modelos de tradução POT" msgid "XLIFF Translation Files" msgstr "Ficheiros de tradução XLIFF" msgid "JSON Translation Files" msgstr "Ficheiros de tradução JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "Ficheiros de tradução Flutter" msgid "All Translation Files" msgstr "Todos os ficheiros de tradução" msgid "The file is in a format not recognized by Poedit." msgstr "O ficheiro está num formato não reconhecido pelo Poedit." 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." #, 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" #, 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." #, c-format msgid "Couldn’t save file %s." msgstr "Não foi possível guardar o ficheiro %s." msgid "Screenshots:" msgstr "Capturas de ecrã:" #, 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." #, 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)." 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" msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "Ficheiro PO danificado: usadas formas plurais msgstr sem msgid_plural" msgid "Couldn’t load the file, it is probably damaged." msgstr "Não foi possível carregar o ficheiro, provavelmente está danificado." 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." 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)." #, 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." msgid "Error saving file" msgstr "Erro ao guardar o ficheiro" #, c-format msgid "“%s” is not a valid POT file." msgstr "“%s“ não é um ficheiro POT válido." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Erro ao carregar o ficheiro XLIFF: %s" #, 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 msgid "Broken markup in translation string." msgstr "Marcação danificada na cadeia de tradução." msgid "(Use default language)" msgstr "(Utilizar idioma predefinido)" msgid "Language selection" msgstr "Seleção de idioma" msgid "Select your preferred language" msgstr "Selecione o seu idioma preferido" msgid "You must restart Poedit for this change to take effect." msgstr "Tem que reiniciar o Poedit para aplicar a alteração." msgid "Add Account" msgstr "Adicionar conta" msgid "Add account" msgstr "Adicionar conta" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "Saber mais acerca de %s" 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." msgid "How does cloud sync work?" msgstr "Como é que funciona a sincronização na nuvem?" msgid "Account" msgstr "Conta" msgid "(not signed in)" msgstr "(sessão não iniciada)" msgid "File" msgstr "Ficheiro" msgid "Open cloud translation" msgstr "Abrir tradução na nuvem" msgid "Manage accounts" msgstr "Gerir contas" msgid "Project:" msgstr "Projeto:" msgid "Language:" msgstr "Idioma:" msgid "Sign in to Cloud Account" msgstr "Inicie sessão na sua conta" msgid "Sign in to cloud account" msgstr "Inicie sessão na sua conta" msgid "No translation projects listed in your account." msgstr "Não existem projetos de tradução associados à sua conta." msgid "Downloading latest translations…" msgstr "A descarregar traduções mais recentes..." #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #, c-format msgid "Sign in to %s" msgstr "Iniciar sessão em %s" msgid "Syncing" msgstr "Sincronização" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, 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. #, c-format msgid "Uploading translations to %s failed." msgstr "Não foi possível carregar as traduções para %s." msgid "Syncing error" msgstr "Erro de sincronização" msgid "Add" msgstr "Adicionar" msgid "Unknown Crowdin error." msgstr "Erro desconhecido do Crowdin." msgid "Not authorized, please sign in again." msgstr "Não autorizado. Inicie novamente a sessão." msgid "Downloading translations is disabled in this project." msgstr "Este projeto desativou a descarga de traduções." msgid "Sign In" msgstr "Iniciar sessão" msgid "Sign in" msgstr "Iniciar sessão" msgid "Sign Out" msgstr "Terminar sessão" msgid "Sign out" msgstr "Terminar sessão" msgid "Learn more about Crowdin" msgstr "Saber mais sobre o Crowdin" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" "Crowdin é uma plataforma online de gestão de traduções e uma ferramenta " "colaborativa." msgid "Waiting for authentication…" msgstr "A aguardar autenticação…" msgid "Updating user information…" msgstr "A atualizar informações do utilizador…" msgid "Sign in to Crowdin" msgstr "Inicie a sessão na Crowdin" msgid "Syncing with Crowdin failed." msgstr "Falha ao sincronizar com o Crowdin." msgid "Crowdin error" msgstr "Erro do Crowdin" msgid "Uploading translations…" msgstr "A enviar traduções…" msgid "&Copy" msgstr "&Copiar" msgid "Learn more" msgstr "Saber mais" msgid "&Help" msgstr "Aj&uda" msgid "MO files can’t be directly edited in Poedit." msgstr "Os ficheiros MO não podem ser editados com o Poedit." msgid "Error opening file" msgstr "Erro ao abrir ficheiro" 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." msgid "don’t delete temporary files (for debugging)" msgstr "não apagar ficheiros temporários (depuração)" msgid "handle a poedit:// URI" msgstr "gerir um URI poedit://" msgid "go to item at given line number" msgstr "ir para o item indicado pelo número de linha" msgid "Failed to communicate with Poedit process." msgstr "Falha ao comunicar com o processo do Poedit." #, c-format msgid "Unhandled exception occurred: %s" msgstr "Ocorreu uma exceção não tratada: %s" msgid "Select translation template" msgstr "Selecione modelo de tradução" msgid "Select translation file" msgstr "Selecione ficheiro de tradução" msgid "Poedit is an easy to use translation editor." msgstr "O Poedit é um editor de traduções fácil de usar." 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." #, c-format msgid "File “%s” is not a translation file." msgstr "O ficheiro \"%s\" não é um ficheiro de tradução." #, c-format msgid "File “%s” doesn’t exist." msgstr "O ficheiro “%s“ não existe." 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". #, 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." msgid "Install" msgstr "Instalar" #, c-format msgid "The file “%s” has been changed by another application." msgstr "O ficheiro “%s\" foi alterado por outra aplicação." msgid "Reload file" msgstr "Recarregar ficheiro" 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." msgid "Ignore" msgstr "Ignorar" msgid "Reload File" msgstr "Recarregar ficheiro" msgid "The file has been modified. Do you want to save changes?" msgstr "O ficheiro foi alterado. Deseja guardar as alterações?" msgid "Save changes" msgstr "Guardar alterações" msgid "Your changes will be lost if you don’t save them." msgstr "Se não guardar as alterações, estas serão perdidas." msgid "Save" msgstr "Guardar" msgid "Do&n’t save" msgstr "&Não guardar" msgid "Don’t Save" msgstr "Não guardar" 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." msgid "Cancel" msgstr "Cancelar" msgid "Save Anyway" msgstr "Guardar mesmo assim" msgid "Save anyway" msgstr "Guardar mesmo assim" msgid "Save as…" msgstr "Guardar como…" msgid "Compile to…" msgstr "Compilar para…" msgid "Compiled Translation Files" msgstr "Ficheiros de tradução compilados" msgid "Export to HTML…" msgstr "Exportar para HTML…" msgid "HTML Files" msgstr "Ficheiros HTML" #, c-format msgid "In: %s" msgstr "Em: %s" msgid "Source code not available." msgstr "O código fonte não está disponível." msgid "Updating failed" msgstr "Falha ao atualizar" 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." msgid "Permission denied." msgstr "Permissão recusada." 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. 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. 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." msgid "Translation entries in the file are probably incorrect." msgstr "Provavelmente as entradas de tradução no ficheiro estão incorretas." msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "" "Falha ao atualizar o ficheiro. Clique em 'Detalhes >>' para saber mais." msgid "Open translation template" msgstr "Abrir modelo de tradução" #, 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." msgid "Validation results" msgstr "Resultados da validação" 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." msgid "The file was saved safely." msgstr "O ficheiro foi guardado com sucesso." msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "O ficheiro foi guardado com sucesso e o ficheiro MO foi compilado. No " "entanto, é possível que não funcione corretamente." msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "O ficheiro foi guardado mas o ficheiro MO não foi criado." 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." msgid "The file cannot be compiled into the MO format and used." msgstr "O ficheiro não pode ser compilado para o formato MO." msgid "No problems with the translation found." msgstr "Não foram encontrados erros na tradução." #, c-format msgid "The translation is ready for use, but %d entry is not translated yet." msgid_plural "" "The translation is ready for use, but %d entries are not translated yet." msgstr[0] "" "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." msgid "The translation is ready for use." msgstr "A tradução está pronta para utilização." #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "" "O Poedit corrigiu automaticamente o conteúdo inválido do ficheiro “%s“." msgid "" "The file contained duplicate items, which is not allowed in PO files and " "would prevent the file from being used. Poedit fixed the issue, but you " "should review translations of any items marked as 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." msgid "Language of the translation isn’t set." msgstr "O idioma da tradução não está definido." msgid "Set Language" msgstr "Definir idioma" msgid "Set language" msgstr "Definir idioma" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." msgid "" "Suggestions are not available if the translation language is not set " "correctly. Other features, such as plural forms, may be affected as well." msgstr "" "As sugestões 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." msgid "Language of the translation is the same as source language." msgstr "O idioma de tradução é o mesmo que o idioma fonte." msgid "Fix Language" msgstr "Corrigir idioma" msgid "Fix language" msgstr "Corrigir idioma" 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." 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" msgid "Required header Plural-Forms is missing." msgstr "O cabeçalho Plural-Forms não existe." #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Erro de sintaxe no cabeçalho Plural-Forms (\"%s\")." msgid "Fix the Header" msgstr "Corrigir cabeçalho" 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". #, 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.")" msgid "Review" msgstr "Rever" msgid "Would you like to use English for source text?" msgstr "Gostaria de usar o inglês para o texto de origem?" #, 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" msgid "Load English" msgstr "Carregar inglês" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Traduzido: %d de %d (%d %%)" #, c-format msgid "Remaining: %d" msgstr "Faltam: %d" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d erro" msgstr[1] "%d erros" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d entrada" msgstr[1] "%d entradas" msgid " (unsaved)" msgstr " (não guardado)" msgid " (modified)" msgstr " (modificado)" #, c-format msgid "Failed to update translation memory: %s" msgstr "Falha ao atualizar a memória de traduções: %s" msgid "Remove same-as-source translations" msgstr "Remover traduções iguais à fonte" 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?" 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." msgid "Keep" msgstr "Manter" msgid "Remove" msgstr "Remover" msgid "Purge deleted translations" msgstr "Remover traduções eliminadas" 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?" 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." msgid "Purge" msgstr "Remover" msgid "Copy from source text" msgstr "Copiar entrada original" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "Limpar tradução" msgid "Clear Translation" msgstr "Limpar tradução" msgid "Edit comment" msgstr "Editar comentário" msgid "Edit Comment" msgstr "Editar comentário" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "Ocorrências de código" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "Ocorrências de código" msgid "Hide Sidebar" msgstr "Ocultar barra lateral" msgid "Show Sidebar" msgstr "Mostrar barra lateral" msgid "Hide Status Bar" msgstr "Ocultar barra de estado" msgid "Show Status Bar" msgstr "Mostrar barra de estado" msgid "String length in characters: translation | source" msgstr "Comprimento da frase em caracteres: tradução | fonte" msgid "String length in characters" msgstr "Comprimento da frase em caracteres" msgid "Source text" msgstr "Texto fonte" msgid "Singular" msgstr "Singular" msgid "Plural" msgstr "Plurais" msgid "Translation" msgstr "Tradução" msgid "Pre-translated" msgstr "Pré-traduzida" 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. msgid "Needs work" msgstr "Por rever" 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." msgid "Create new translation" msgstr "Criar nova tradução" 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 msgid "Source text ID" msgstr "ID do texto fonte" msgid "Everything" msgstr "Tudo" #, c-format msgid "Form %i" msgstr "Forma %i" #, c-format msgid "Form %i (unused)" msgstr "Forma %i (não usada)" msgid "Zero" msgstr "Zero" msgid "One" msgstr "Uma" msgid "Two" msgstr "Duas" msgid "Other" msgstr "Outra" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, 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 #, c-format msgid "String identifier: %s" msgstr "Identificador da frase: %s" #, c-format msgid "%s Format" msgstr "Formato %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "Formato %s" #, c-format msgid "Translation — %s" msgstr "Tradução — %s" msgid "ID" msgstr "ID" #, c-format msgid "Source text — %s" msgstr "Texto fonte — %s" msgid "unknown language" msgstr "idioma desconhecido" #, c-format msgid "Network error: %s (%d)" msgstr "Erro de rede: %s (%d)" msgid "Unknown error" msgstr "Erro desconhecido" #, c-format msgid "Failed command: %s" msgstr "Falha do comando: %s" msgid "Failed to merge gettext catalogs." msgstr "Não foi possível unir os catálogos do gettext." msgid "Open in Editor" msgstr "Abrir no editor" msgid "Open in editor" msgstr "Abrir no editor" 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." msgid "No usage information" msgstr "Sem informações de utilização" #, 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" msgid "Source code not found" msgstr "Código fonte não encontrado" 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." msgid "File cannot be opened" msgstr "Não é possível abrir o ficheiro" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "O Poedit não conseguiu abrir o ficheiro “%s”." msgid "Find" msgstr "Localizar" msgid "Replace" msgstr "Substituir" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "Opções" msgid "Ignore case" msgstr "Ignorar maiúsculas/minúsculas" msgid "Wrap around" msgstr "Moldar texto" msgid "Whole words only" msgstr "Só palavras inteiras" msgid "Find in source texts" msgstr "Localizar nos textos fonte" msgid "Find in translations" msgstr "Localizar nas traduções" msgid "Find in comments" msgstr "Localizar nos comentários" msgid "Close" msgstr "Fechar" msgid "Replace &All" msgstr "Substituir t&udo" msgid "Replace &all" msgstr "Substituir t&udo" msgid "&Replace" msgstr "Substitui&r" msgid "< &Previous" msgstr "< An&terior" msgid "&Next >" msgstr "Segui&nte >" msgid "String to find" msgstr "Texto a procurar" msgid "Replacement string" msgstr "Texto de substituição" #, c-format msgid "Cannot execute program: %s" msgstr "Não foi possível executar o programa: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "Nome ou código do idioma" msgid "Translation Language" msgstr "Idioma da tradução" msgid "Language of the translation:" msgstr "Idioma da tradução:" msgid "All strings" msgstr "Todas as cadeias" msgid "Couldn’t download Localazy project details." msgstr "Não foi possível descarregar os detalhes do projeto Localazy." msgid "There was an error when uploading translations to Localazy." msgstr "Ocorreu um erro ao carregar as traduções para Localazy." msgid "Projects" msgstr "Projetos" 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." msgid "Add Project" msgstr "Adicionar projeto" msgid "Add project" msgstr "Adicionar projeto" msgid "Poedit - Catalogs manager" msgstr "Poedit - Gestor de catálogos" msgid "Edit…" msgstr "Editar…" msgid "Create new translations project" msgstr "Criar novo projeto de traduções" msgid "Delete the project" msgstr "Apagar projeto" msgid "Edit the project" msgstr "Editar projeto" msgid "Update all" msgstr "Atualizar tudo" msgid "Update all catalogs in the project" msgstr "Atualizar todos os catálogos do projeto" msgid "Total" msgstr "Total" msgid "Untrans" msgstr "Por traduzir" msgctxt "column/row header" msgid "Needs Work" msgstr "Por rever" msgid "Errors" msgstr "Erros" msgid "Last modified" msgstr "Última modificação" msgid "Select directory" msgstr "Escolha o diretório" msgid "Directories:" msgstr "Diretórios:" msgid "" msgstr "" #, c-format msgid "Do you want to delete project “%s”?" msgstr "Tem a certeza de que deseja remover o projeto \"%s\"?" msgid "Delete project" msgstr "Remover projeto" 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." msgid "Confirmation" msgstr "Confirmação" msgid "Update all catalogs in this project?" msgstr "Atualizar todos os catálogos deste projeto?" 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." msgid "Check for Updates…" msgstr "Procurar atualizações…" msgid "Catalogs Manager" msgstr "Gestor de catálogos" msgid "&Preferences…" msgstr "&Preferências…" msgid "&Edit" msgstr "&Editar" msgid "Undo" msgstr "Desfazer" msgid "Redo" msgstr "Refazer" msgid "Paste and Match Style" msgstr "Colar com a formatação do documento" msgid "Delete" msgstr "Apagar" msgid "Spelling and Grammar" msgstr "Ortografia e gramática" msgid "Show Spelling and Grammar" msgstr "Mostrar ortografia e gramática" msgid "Check Document Now" msgstr "Analisar documento agora" msgid "Check Spelling While Typing" msgstr "Verificar ortografia ao escrever" msgid "Check Grammar With Spelling" msgstr "Verificar gramática com ortografia" msgid "Correct Spelling Automatically" msgstr "Corrigir ortografia automaticamente" msgid "Substitutions" msgstr "Substituições" msgid "Show Substitutions" msgstr "Mostrar substituições" msgid "Smart Copy/Paste" msgstr "Colar/Colar inteligente" msgid "Smart Quotes" msgstr "Aspas inteligentes" msgid "Smart Dashes" msgstr "Travessões inteligentes" msgid "Smart Links" msgstr "Ligações inteligentes" msgid "Text Replacement" msgstr "Substituição de texto" msgid "Transformations" msgstr "Transformações" msgid "Make Upper Case" msgstr "Converter em maiúsculas" msgid "Make Lower Case" msgstr "Converter em minúsculas" msgid "Capitalize" msgstr "Capitalizar" msgid "Speech" msgstr "Fala" msgid "Start Speaking" msgstr "Iniciar fala" msgid "Stop Speaking" msgstr "Parar fala" msgid "&View" msgstr "&Ver" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Show Toolbar" msgstr "Mostrar barra de ferramentas" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Customize Toolbar…" msgstr "Personalizar barra de ferramentas…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Enter Full Screen" msgstr "Entrar no modo de ecrã completo" msgid "Window" msgstr "Janela" msgid "Minimize" msgstr "Minimizar" msgid "Zoom" msgstr "Ampliação" msgid "Welcome to Poedit" msgstr "Bem-vindo ao Poedit" msgid "Bring All to Front" msgstr "Trazer para primeiro plano" msgid "Information about the translator" msgstr "Informações do tradutor" msgid "Name:" msgstr "Nome:" msgid "Your Name" msgstr "O seu nome" msgid "Email:" msgstr "E-mail:" msgid "you@example.com" msgstr "você@exemplo.com" 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." msgid "Editing" msgstr "Edição" msgid "Automatically compile MO file when saving" msgstr "Compilar ficheiro MO ao guardar" msgid "Show summary after updating files" msgstr "Mostrar resumo depois de atualizar ficheiros" msgid "Check spelling" msgstr "Verificação ortográfica" msgid "Always change focus to text input field" msgstr "Focar sempre o campo da entrada de texto" msgid "" "Never let the list of strings take focus. If enabled, you must use Ctrl-" "arrows for keyboard navigation but you can also type text immediately, " "without having to press Tab to change focus." msgstr "" "Nunca deixar que a lista de entradas obtenha o foco. Se ativa, tem que usar " "Control+Teclas do cursor para mudar de linhas com o teclado, mas também pode " "digitar o texto imediatamente, sem ter que premir a tecla Tab para mudar de " "campo." msgid "Appearance" msgstr "Aspeto" msgid "Use custom list font:" msgstr "Utilizar tipo de letra personalizada:" msgid "Use custom text fields font:" msgstr "Utilizar tipo de letra personalizada nos campos de texto:" 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 msgid "(requires Windows 8 or newer)" msgstr "(requer Windows 8 ou mais recente)" msgid "General" msgstr "Geral" msgid "Use translation memory" msgstr "Utilizar memória de tradução" msgid "Manage…" msgstr "Gerir…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "Ao atualizar das fontes" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "preencher com ocorrências do ficheiro" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "pré-traduzir com a MT" 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." msgid "Stored translations:" msgstr "Traduções guardadas:" msgid "Database size on disk:" msgstr "Tamanho da base de dados no disco:" msgid "Import Translation Files…" msgstr "Importar ficheiros de tradução…" msgid "Import translation files…" msgstr "Importar ficheiros de tradução…" msgid "Import From TMX…" msgstr "Importar de TMX…" msgid "Import from TMX…" msgstr "Importar de TMX…" msgid "Export To TMX…" msgstr "Exportar para TMX…" 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). msgid "Reset" msgstr "Repor" msgid "Select translation files to import" msgstr "Selecione os ficheiros de tradução a importar" msgid "Translation Memory" msgstr "Memória de traduções" msgid "Importing translations…" msgstr "A importar traduções…" #, c-format msgid "Error loading translation file “%s”." msgstr "Erro ao carregar o ficheiro de tradução “%s“." msgid "Finalizing…" msgstr "A finalizar…" msgid "Select TMX files to import" msgstr "Selecione os ficheiros TMX a importar" msgid "TMX Files" msgstr "Ficheiros TMX" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "Ocorreu uma falha ao importar a memória de traduções de “%s”." msgid "Import error" msgstr "Erro de importação" msgid "Export as…" msgstr "Exportar como…" msgid "Exporting translations…" msgstr "A exportar traduções…" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "Ocorreu uma falha ao exportar a memória de traduções para “%s”." msgid "Export error" msgstr "Erro de exportação" msgid "Reset translation memory" msgstr "Reiniciar memória de traduções" msgid "Are you sure you want to reset the translation memory?" msgstr "Tem a certeza que pretende reiniciar a memória de traduções?" 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. msgid "TM" msgstr "MT" 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." msgid "Custom Extractors:" msgstr "Extratores personalizados:" msgid "Custom extractors:" msgstr "Extratores personalizados:" msgid "GNU gettext" msgstr "GNU gettext" 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)." msgid "Delete extractor" msgstr "Remover extrator" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "Tem a certeza de que deseja remover o extrator “%s“?" msgid "Extractors" msgstr "Extratores" msgid "Accounts" msgstr "Contas" msgid "Automatically check for updates" msgstr "Procurar atualizações automaticamente" msgid "Include beta versions" msgstr "Incluir versões beta" 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." msgid "Updates" msgstr "Atualizações" 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." msgid "Line endings:" msgstr "Final de linha:" msgid "Unix (recommended)" msgstr "Unix (recomendado)" msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "Quebra em:" msgid "Preserve formatting of existing files" msgstr "Manter formatação dos ficheiros existentes" msgid "Advanced" msgstr "Avançado" msgid "Settings" msgstr "Definições" msgid "Preparing strings…" msgstr "A preparar frases…" msgid "Pre-translating from translation memory…" msgstr "Pré-tradução da memória de tradução…" #, 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" msgid "Pre-translating…" msgstr "A pré-traduzir…" 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. msgid "Pre-translate" msgstr "Pré-traduzir" 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." msgid "Cannot pre-translate from unknown language." msgstr "Não foi possível pré-traduzir de um idioma desconhecido." 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." msgid "Only fill in exact matches" msgstr "Preencher apenas as ocorrências exatas" 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." msgid "Don’t mark exact matches as needing work" msgstr "Não marcar ocorrências exatas como imprecisas" 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." 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 correspondências exatas ou " "similares para as entradas não traduzidas, a partir da memória de tradução, " "e preenche as suas traduções." #, 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." 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." msgid "No entries could be pre-translated." msgstr "Não foi possível pré-traduzir as entradas." 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 entradas similares às deste " "ficheiro. Só será útil para traduções semi-automáticas e após o Poedit " "aprender os dados dos ficheiros que traduziu manualmente." msgid "Cancelling…" msgstr "A cancelar…" msgid "Drag Folders or Files Here" msgstr "Arraste pastas ou ficheiros para aqui" msgid "Drag folders or files here" msgstr "Arraste pastas ou ficheiros para aqui" msgid "Add Folders…" msgstr "Adicionar pastas…" msgid "Add folders…" msgstr "Adicionar pastas…" msgid "Add Files…" msgstr "Adicionar ficheiros…" msgid "Add files…" msgstr "Adicionar ficheiros…" msgid "Add Wildcard…" msgstr "Adicionar \"wildcard\"…" msgid "Add wildcard…" msgstr "Adicionar \"wildcard\"…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) 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" msgid "Show in Explorer" msgstr "Mostrar no Explorador" msgid "Show in Folder" msgstr "Mostrar na Pasta" msgid "Paths" msgstr "Caminhos" msgid "Excluded paths" msgstr "Caminhos excluídos" msgid "Advanced extraction settings" msgstr "Definições avançadas de extração" msgid "Extract notes for translators from:" msgstr "Extrair notas de tradução em:" msgid "Comments prefixed with:" msgstr "Comentários prefixados com:" msgid "All comments" msgstr "Todos os comentários" msgid "Additional xgettext flags:" msgstr "Marcas xgettext adicionais:" msgid "Additional keywords" msgstr "Palavras-chave adicionais" msgid "Name of the project the translation is for" msgstr "Nome do projeto de tradução" msgid "Team name and email address or URL" msgstr "Nome da equipa e endereço de e-mail ou URL" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "ex.: nplurals=2; plural=(n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (recomendado)" 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." msgid "Placeholders correctness" msgstr "Correção de marcadores de posição" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "O marcador de posição \"%s\" não existe na tradução." #, 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." msgid "Plural form translations" msgstr "Traduções plurais de forma" msgid "Not all plural forms are translated." msgstr "Nem todas as formas plurais estão traduzidas." msgid "Inconsistent upper/lower case" msgstr "Maiúsculas/minúsculas inconsistentes" msgid "The translation should start as a sentence." msgstr "A tradução deve começar como uma frase." msgid "The translation should start with a lowercase character." msgstr "A tradução deve começar com uma letra minúscula." msgid "Inconsistent whitespace" msgstr "Espaço branco inconsistente" msgid "The translation doesn’t start with a space." msgstr "A tradução não começa com um espaço." 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." msgid "The translation is missing a newline at the end." msgstr "A tradução não tem uma nova linha no fim." 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." msgid "The translation is missing a space at the end." msgstr "A tradução não tem um espaço no fim." 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." msgid "Punctuation checks" msgstr "Verificações de pontuação" #, c-format msgid "The translation should end with “%s”." msgstr "A tradução deve terminar com “%s”." #, c-format msgid "The translation should not end with “%s”." msgstr "A tradução não deve terminar com “%s”." #, 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”." msgid "Cloud" msgstr "Nuvem" msgid "Clear Menu" msgstr "Limpar menu" msgid "Clear menu" msgstr "Limpar menu" msgid "Comment:" msgstr "Comentário:" msgid "Update" msgstr "Atualizar" msgid "&Delete" msgstr "&Apagar" msgid "Delete the comment" msgstr "Eliminar comentário" msgid "Edit project" msgstr "Editar projeto" msgid "Project name:" msgstr "Nome do projeto:" msgid "Browse" msgstr "Explorar" msgid "Add directory to the list" msgstr "Adicionar diretório à lista" msgid "OK" msgstr "Aceitar" msgid "&File" msgstr "&Ficheiro" msgid "&New…" msgstr "&Novo…" msgid "New from &POT/PO file…" msgstr "Novo a partir de ficheiro &POT/PO…" msgid "New From &POT/PO File…" msgstr "Novo a partir de ficheiro &POT/PO…" msgid "&Open…" msgstr "&Abrir…" msgid "Open Recent" msgstr "Abrir recentes" msgid "Open recent" msgstr "Abrir recentes" msgid "Open cloud translation…" msgstr "Abrir tradução na nuvem…" msgid "Open Cloud Translation…" msgstr "Abrir tradução na nuvem…" msgid "&Start window" msgstr "Janela i&nicial" msgid "&Start Window" msgstr "Janela i&nicial" msgid "Catalogs &manager" msgstr "Gest&or de catálogos" msgid "Catalogs &Manager" msgstr "Gest&or de catálogos" msgid "&Close" msgstr "Fe&char" msgid "&Save" msgstr "&Guardar" msgid "Save &as…" msgstr "Guardar &como…" msgid "Save &As…" msgstr "Guardar &como…" msgid "Compile to MO…" msgstr "Compilar para MO…" msgid "E&xport to HTML…" msgstr "E&xportar para HTML…" msgid "Check for updates…" msgstr "Procurar atualizações…" msgid "Settings…" msgstr "Definições…" msgid "&Preferences" msgstr "&Preferências" msgid "E&xit" msgstr "&Sair" msgid "Quit" msgstr "Sair" msgid "Copy from singular" msgstr "Copiar da forma singular" msgid "Copy From Singular" msgstr "Copiar da forma singular" msgid "Translation needs &work" msgstr "Tradução por re&ver" msgid "Translation Needs &Work" msgstr "Tradução por re&ver" msgid "Edit &comment" msgstr "Editar &comentário" msgid "Edit &Comment" msgstr "Editar &comentário" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "Sugestões" msgid "&Find…" msgstr "Locali&zar…" msgid "Replace…" msgstr "Substituir…" msgid "Find next" msgstr "Localizar seguinte" msgid "Find previous" msgstr "Localizar anterior" msgid "Find and Replace…" msgstr "Localizar e substituir…" msgid "Find Next" msgstr "Localizar seguinte" msgid "Find Previous" msgstr "Localizar anterior" msgid "Show string &ID" msgstr "Mostrar &ID da linha" msgid "Show String &ID" msgstr "Mostrar &ID da linha" msgid "Show warnings" msgstr "Mostrar avisos" msgid "Show Warnings" msgstr "Mostrar avisos" msgid "Sort by &file order" msgstr "Ordenar pela ordem do &ficheiro" msgid "Sort by &File Order" msgstr "Ordenar pela ordem do &ficheiro" msgid "Sort by &source" msgstr "&Ordenar por fonte" msgid "Sort by &Source" msgstr "&Ordenar por fonte" msgid "Sort by &translation" msgstr "Ordenar por &tradução" msgid "Sort by &Translation" msgstr "Ordenar por &tradução" msgid "&Group by context" msgstr "A&grupar por contexto" msgid "&Group By Context" msgstr "A&grupar por contexto" msgid "Entries with errors first" msgstr "Entradas com erros primeiro" msgid "Entries with Errors First" msgstr "Entradas com erros primeiro" msgid "&Untranslated entries first" msgstr "Não trad&uzidas primeiro" msgid "&Untranslated Entries First" msgstr "Não trad&uzidas primeiro" msgid "&Show code occurrences" msgstr "Mostrar ocorrência&s de código" msgid "&Show Code Occurrences" msgstr "Mostrar ocorrência&s de código" msgid "Show sidebar" msgstr "Mostrar barra lateral" msgid "Show status bar" msgstr "Mostrar barra de estado" msgid "&Translation" msgstr "&Tradução" msgid "&Update from source code" msgstr "At&ualizar a partir do código fonte" msgid "&Update from Source Code" msgstr "At&ualizar a partir do código fonte" msgid "Update from &POT file…" msgstr "Atualizar a partir de ficheiro &POT…" msgid "Update from &POT File…" msgstr "Atualizar a partir de ficheiro &POT…" msgid "Sync with Crowdin" msgstr "Sincronizar com o Crowdin" msgid "Pre-&translate…" msgstr "Pré-&tradução…" msgid "&Validate translations" msgstr "&Validar traduções" msgid "&Validate Translations" msgstr "&Validar traduções" msgid "Remove Same-as-Source Translations" msgstr "Remover traduções iguais à fonte" msgid "&Purge deleted translations" msgstr "&Remover traduções eliminadas" msgid "&Purge Deleted Translations" msgstr "&Remover traduções eliminadas" msgid "&Properties…" msgstr "&Propriedades…" msgid "&Go" msgstr "&Ir" msgid "&Done and next" msgstr "&Pronta e avançar" msgid "&Done and Next" msgstr "&Pronta e avançar" msgid "Previously edited" msgstr "Editada anteriormente" msgid "Previously Edited" msgstr "Editada anteriormente" msgid "&Previous translation" msgstr "Tradução &anterior" msgid "&Previous Translation" msgstr "Tradução &anterior" msgid "&Next translation" msgstr "Tradução &seguinte" msgid "&Next Translation" msgstr "Tradução &seguinte" msgid "P&revious unfinished" msgstr "An&terior não terminada" msgid "P&revious Unfinished" msgstr "An&terior não terminada" msgid "Ne&xt unfinished" msgstr "Seguinte &não terminada" msgid "Ne&xt Unfinished" msgstr "Seguinte &não terminada" msgid "Previous plural form" msgstr "Forma plural anterior" msgid "Previous Plural Form" msgstr "Forma plural anterior" msgid "Next plural form" msgstr "Forma plural seguinte" msgid "Next Plural Form" msgstr "Forma plural seguinte" msgid "&Online help" msgstr "Ajuda na &web" msgid "&Online Help" msgstr "Ajuda na &web" msgid "&GNU gettext manual" msgstr "Manual &GNU gettext" msgid "&GNU gettext Manual" msgstr "Manual &GNU gettext" msgid "&About Poedit" msgstr "&Sobre o Poedit" msgid "&About" msgstr "&Acerca" msgid "Extractor setup" msgstr "Configurar extrator" 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):" msgid "Invocation:" msgstr "Invocação:" msgid "Command to extract translations:" msgstr "Comando para extrair traduções:" 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)." msgid "An item in keywords list:" msgstr "Um item na lista de palavras-chave:" msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Isto será anexado à linha de comandos uma vez para cada\n" "palavra-chave. %k será substituído pela palavra-chave." msgid "An item in input files list:" msgstr "Um item na lista de ficheiros de entrada:" #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "Isto será anexado à linha de comandos uma vez para cada\n" "ficheiro de entrada. %f será substituído pelo nome do ficheiro." msgid "Source code charset:" msgstr "Codificação do código fonte:" #, 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." msgid "Translation Properties" msgstr "Propriedades da tradução" msgid "Project name and version:" msgstr "Nome e versão do projeto:" msgid "Language team:" msgstr "Equipa de tradução:" msgid "Plural forms:" msgstr "Formas plurais:" msgid "Use default rules for this language" msgstr "Utilizar regras pré-definidas para este idioma" msgid "Use custom expression" msgstr "Utilizar expressão personalizada" msgid "Learn about plural forms" msgstr "Saber mais sobre formas plurais" msgid "Charset:" msgstr "Codificação:" msgid "Advanced Extraction Settings…" msgstr "Definições avançadas de extração…" msgid "Advanced extraction settings…" msgstr "Definições avançadas de extração…" msgid "Translation properties" msgstr "Propriedades da tradução" msgid "Sources Paths" msgstr "Caminho das fontes" msgid "Sources paths" msgstr "Caminho das fontes" msgid "Extract text from source files in the following directories:" msgstr "Extrair texto dos ficheiros fonte nestes diretórios:" msgid "Base path:" msgstr "Caminho base:" msgid "Sources Keywords" msgstr "Palavras-chave das fontes" msgid "Sources keywords" msgstr "Palavras-chave das fontes" msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Utilizar estas palavras-chave (nomes de funções) para reconhecer as " "entradas\n" "passíveis de tradução nos ficheiros fonte:" msgid "Also use default keywords for supported languages" msgstr "Utilizar também palavras-chave para os idiomas suportados" msgid "Learn about gettext keywords" msgstr "Saber mais sobre as palavras-chave gettext" msgid "Update summary" msgstr "Resumo da atualização" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" "Estas frases foram encontradas nas fontes mas não estavam no ficheiro\n" "O Poedit vai adicioná-las agora ao ficheiro." msgid "New strings" msgstr "Novas entradas" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" "Estas frases já não estão no código fonte.\n" "O Poedit vai remove-las agora do ficheiro." msgid "Obsolete strings" msgstr "Entradas obsoletas" msgid "(0 new, 0 obsolete)" msgstr "(0 novas, 0 obsoletas)" msgid "Open" msgstr "" msgid "Open file" msgstr "Abrir ficheiro" msgid "Save file" msgstr "Guardar ficheiro" msgid "Validate" msgstr "Validar" msgid "Check for errors in the translation" msgstr "Procurar erros na tradução" msgid "Update from code" msgstr "Atualizar a partir do código" msgid "Update from Code" msgstr "Atualizar a partir do código" msgid "Update from source code" msgstr "Atualizar a partir do código fonte" msgid "Sidebar" msgstr "Barra lateral" msgid "Show or hide the sidebar" msgstr "Mostrar ou ocultar a barra lateral" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. msgid "Previous source text" msgstr "Texto fonte anterior" 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." msgid "Notes for translators" msgstr "Notas para tradutores" msgid "Comment" msgstr "Comentário" msgid "Add comment" msgstr "Adicionar comentário" msgid "Add Comment" msgstr "Adicionar comentário" msgid "Delete From Translation Memory" msgstr "Apagar da memória de traduções" msgid "Delete from translation memory" msgstr "Apagar da memória de traduções" msgid "Translation suggestions" msgstr "Sugestões de tradução" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). msgid "No matches found" msgstr "Nenhuma ocorrência" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). msgid "No Matches Found" msgstr "Nenhuma ocorrência" msgid "This string was found in Poedit’s translation memory." msgstr "Esta linha foi encontrada na memória de traduções do Poedit." 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." 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." msgid "The TMX file is malformed." msgstr "O ficheiro TMX está danificado." msgid "No translations were found in the TMX file." msgstr "Não foram encontradas traduções no ficheiro TMX." #, 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)." #, c-format msgid "Translation memory error: %s (%d)." msgstr "Erro na memória de traduções: %s (%d)." msgid "Cannot create temporary directory." msgstr "Não foi possível criar o diretório temporário." msgid "There are no translations. That’s unusual." msgstr "Não existem traduções. Isto é estranho." msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "Translators typically use PO template files (POTs) prepared for them by the " "developer." msgstr "" "As entradas para tradução não são adicionadas manualmente ao sistema gettext " "mas sim extraídas automaticamente\n" "do código fonte. Desta forma, estão sempre atualizadas.\n" "Normalmente, os tradutores utilizam os ficheiros POT disponibilizados pelos " "programadores." msgid "(Learn more about GNU gettext)" msgstr "(Saber mais sobre o GNU gettext)" 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:" msgid "Update from POT" msgstr "Atualizar com base em ficheiro POT..." msgid "Take translatable strings from an existing POT template." msgstr "Obter entradas a traduzir a partir de um modelo POT." msgid "" "You can also extract translatable strings directly from the source code:" msgstr "" "Também pode extrair as entradas a traduzir diretamente do código fonte:" msgid "Extract from sources" msgstr "Extrair das fontes" 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 #, c-format msgid "Version %s" msgstr "Versão %s" msgid "Create new" msgstr "Criar novo" msgid "Create new translation from POT template." msgstr "Criar nova tradução a partir do modelo POT." msgid "Browse files" msgstr "Explorar ficheiros" msgid "Open and edit translation files." msgstr "Abrir e editar ficheiros de tradução." msgid "Translate cloud project" msgstr "Traduzir projeto na nuvem" msgid "Collaborate with other people online." msgstr "Colabore online com outras pessoas" msgid "Recent files" msgstr "Ficheiros recentes" msgid "Sync" msgstr "Sincronização" 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") #, 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. #, c-format msgid "%s Preferences" msgstr "Preferências do %s" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "Serviços" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "Ocultar %s" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "Ocultar outros" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "Mostrar tudo" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "Sair do %s" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "Preferências…" msgid "Preferences..." msgstr "Preferências..." #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "Recentes" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "Frequentes" msgid "&Apply" msgstr "&Aplicar" msgid "Apply" msgstr "Aplicar" msgid "&Back" msgstr "&Recuar" msgid "Back" msgstr "Recuar" msgid "&Cancel" msgstr "&Cancelar" msgid "&Clear" msgstr "&Limpar" msgid "Clear" msgstr "Limpar" msgid "Copy" msgstr "Copiar" msgid "Cu&t" msgstr "Cor&tar" msgid "Cut" msgstr "Cortar" msgid "Edit" msgstr "Editar" msgid "&Quit" msgstr "&Sair" msgid "Help" msgstr "Ajuda" msgid "&New" msgstr "&Novo" msgid "New" msgstr "Novo" msgid "&No" msgstr "&Não" msgid "No" msgstr "Não" msgid "&OK" msgstr "&OK" msgid "Open…" msgstr "Abrir…" msgid "&Open..." msgstr "&Abrir..." msgid "Open..." msgstr "Abrir..." msgid "&Paste" msgstr "Co&lar" msgid "Paste" msgstr "Colar" msgid "Preferences" msgstr "Preferências" msgid "&Redo" msgstr "&Refazer" msgid "Refresh" msgstr "Recarregar" msgid "&Save as" msgstr "Guardar &como" msgid "Save as" msgstr "Guardar como" msgid "Select &All" msgstr "Selecion&ar tudo" msgid "Select All" msgstr "Selecionar tudo" msgid "&Undo" msgstr "&Desfazer" msgid "&Yes" msgstr "&Sim" msgid "Yes" msgstr "Sim" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "Up" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "Down" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "Esquerda" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "Direita" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "shift" poedit-3.5/locales/poedit.pot0000644000175100001770000012366314664354065013253 00000000000000# 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 2.1\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+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" msgid "Hide this notification message" msgstr "" msgid "Don’t Show Again" msgstr "" msgid "Don’t show again" msgstr "" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "" msgid "Collecting source files…" msgstr "" msgid "Extracting translatable strings…" msgstr "" msgid "Failed to load file with extracted translations." msgstr "" msgid "Merging differences…" msgstr "" msgid "Updating translations" msgstr "" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "" msgid "Invalid file" msgstr "" #, c-format msgid "Malformed header: “%s”" msgstr "" msgid "PO Translation Files" msgstr "" msgid "POT Translation Templates" msgstr "" msgid "XLIFF Translation Files" msgstr "" msgid "JSON Translation Files" msgstr "" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "" msgid "All Translation Files" msgstr "" msgid "The file is in a format not recognized by Poedit." msgstr "" msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" #, c-format msgid "Reading file content failed with the following error: %s" msgstr "" #, c-format msgid "" "File “%s” is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" #, c-format msgid "Couldn’t save file %s." msgstr "" msgid "Screenshots:" msgstr "" #, c-format msgid "%i line of file “%s” was not loaded correctly." msgid_plural "%i lines of file “%s” were not loaded correctly." msgstr[0] "" msgstr[1] "" #, c-format msgid "Line %d of file “%s” is corrupted (not valid %s data)." msgstr "" msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" msgid "Couldn’t load the file, it is probably damaged." msgstr "" msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" #, 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 "" msgid "Error saving file" msgstr "" #, c-format msgid "“%s” is not a valid POT file." msgstr "" #, c-format msgid "Error while loading XLIFF file: %s" msgstr "" #, c-format msgid "unsupported version (%s)" msgstr "" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML msgid "Broken markup in translation string." msgstr "" msgid "(Use default language)" msgstr "" msgid "Language selection" msgstr "" msgid "Select your preferred language" msgstr "" msgid "You must restart Poedit for this change to take effect." msgstr "" msgid "Add Account" msgstr "" msgid "Add account" msgstr "" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "" msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" msgid "How does cloud sync work?" msgstr "" msgid "Account" msgstr "" msgid "(not signed in)" msgstr "" msgid "File" msgstr "" msgid "Open cloud translation" msgstr "" msgid "Manage accounts" msgstr "" msgid "Project:" msgstr "" msgid "Language:" msgstr "" msgid "Sign in to Cloud Account" msgstr "" msgid "Sign in to cloud account" msgstr "" msgid "No translation projects listed in your account." msgstr "" msgid "Downloading latest translations…" msgstr "" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #, c-format msgid "Sign in to %s" msgstr "" msgid "Syncing" msgstr "" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s…" msgstr "" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s failed." msgstr "" msgid "Syncing error" msgstr "" msgid "Add" msgstr "" msgid "Unknown Crowdin error." msgstr "" msgid "Not authorized, please sign in again." msgstr "" msgid "Downloading translations is disabled in this project." msgstr "" msgid "Sign In" msgstr "" msgid "Sign in" msgstr "" msgid "Sign Out" msgstr "" msgid "Sign out" msgstr "" msgid "Learn more about Crowdin" msgstr "" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" msgid "Waiting for authentication…" msgstr "" msgid "Updating user information…" msgstr "" msgid "Sign in to Crowdin" msgstr "" msgid "Syncing with Crowdin failed." msgstr "" msgid "Crowdin error" msgstr "" msgid "Uploading translations…" msgstr "" msgid "&Copy" msgstr "" msgid "Learn more" msgstr "" msgid "&Help" msgstr "" msgid "MO files can’t be directly edited in Poedit." msgstr "" msgid "Error opening file" msgstr "" msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" msgid "don’t delete temporary files (for debugging)" msgstr "" msgid "handle a poedit:// URI" msgstr "" msgid "go to item at given line number" msgstr "" msgid "Failed to communicate with Poedit process." msgstr "" #, c-format msgid "Unhandled exception occurred: %s" msgstr "" msgid "Select translation template" msgstr "" msgid "Select translation file" msgstr "" msgid "Poedit is an easy to use translation editor." msgstr "" msgid "You can’t drop more than one file on Poedit window." msgstr "" #, c-format msgid "File “%s” is not a translation file." msgstr "" #, c-format msgid "File “%s” doesn’t exist." msgstr "" 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". #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "" msgid "Install" msgstr "" #, c-format msgid "The file “%s” has been changed by another application." msgstr "" msgid "Reload file" msgstr "" msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" msgid "Ignore" msgstr "" msgid "Reload File" msgstr "" msgid "The file has been modified. Do you want to save changes?" msgstr "" msgid "Save changes" msgstr "" msgid "Your changes will be lost if you don’t save them." msgstr "" msgid "Save" msgstr "" msgid "Do&n’t save" msgstr "" msgid "Don’t Save" msgstr "" msgid "The changes made by the other application will be lost if you save." msgstr "" msgid "Cancel" msgstr "" msgid "Save Anyway" msgstr "" msgid "Save anyway" msgstr "" msgid "Save as…" msgstr "" msgid "Compile to…" msgstr "" msgid "Compiled Translation Files" msgstr "" msgid "Export to HTML…" msgstr "" msgid "HTML Files" msgstr "" #, c-format msgid "In: %s" msgstr "" msgid "Source code not available." msgstr "" msgid "Updating failed" msgstr "" 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 "" msgid "Permission denied." msgstr "" 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. 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. msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" msgid "Translation entries in the file are probably incorrect." msgstr "" msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "" msgid "Open translation template" msgstr "" #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "" msgstr[1] "" msgid "Validation results" msgstr "" msgid "" "Entries with errors were marked in red in the list. Details of the error " "will be shown when you select such an entry." msgstr "" msgid "The file was saved safely." msgstr "" msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" msgid "The file cannot be compiled into the MO format and used." msgstr "" msgid "No problems with the translation found." msgstr "" #, 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] "" msgid "The translation is ready for use." msgstr "" #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "" msgid "" "The file contained duplicate items, which is not allowed in PO files and " "would prevent the file from being used. Poedit fixed the issue, but you " "should review translations of any items marked as needing work and correct " "them if necessary." msgstr "" msgid "Language of the translation isn’t set." msgstr "" msgid "Set Language" msgstr "" msgid "Set language" msgstr "" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." msgid "" "Suggestions are not available if the translation language is not set " "correctly. Other features, such as plural forms, may be affected as well." msgstr "" msgid "Language of the translation is the same as source language." msgstr "" msgid "Fix Language" msgstr "" msgid "Fix language" msgstr "" msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" msgid "Required header Plural-Forms is missing." msgstr "" #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "" msgid "Fix the Header" msgstr "" 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". #, 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.")" msgid "Review" msgstr "" msgid "Would you like to use English for source text?" msgstr "" #, 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" msgid "Load English" msgstr "" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "" #, c-format msgid "Remaining: %d" msgstr "" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "" msgstr[1] "" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "" msgstr[1] "" msgid " (unsaved)" msgstr "" msgid " (modified)" msgstr "" #, c-format msgid "Failed to update translation memory: %s" msgstr "" msgid "Remove same-as-source translations" msgstr "" msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" msgid "Keep" msgstr "" msgid "Remove" msgstr "" msgid "Purge deleted translations" msgstr "" msgid "Do you want to remove all translations that are no longer used?" msgstr "" 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 "" msgid "Purge" msgstr "" msgid "Copy from source text" msgstr "" 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 msgid "Ctrl+" msgstr "" msgid "Clear translation" msgstr "" msgid "Clear Translation" msgstr "" msgid "Edit comment" msgstr "" msgid "Edit Comment" msgstr "" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "" msgid "Hide Sidebar" msgstr "" msgid "Show Sidebar" msgstr "" msgid "Hide Status Bar" msgstr "" msgid "Show Status Bar" msgstr "" msgid "String length in characters: translation | source" msgstr "" msgid "String length in characters" msgstr "" msgid "Source text" msgstr "" msgid "Singular" msgstr "" msgid "Plural" msgstr "" msgid "Translation" msgstr "" msgid "Pre-translated" msgstr "" 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. msgid "Needs work" msgstr "" msgid "" "POT files are only templates and don’t contain any translations themselves.\n" "To make a translation, create a new PO file based on the template." msgstr "" msgid "Create new translation" msgstr "" msgid "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 msgid "Source text ID" msgstr "" msgid "Everything" msgstr "" #, c-format msgid "Form %i" msgstr "" #, c-format msgid "Form %i (unused)" msgstr "" msgid "Zero" msgstr "" msgid "One" msgstr "" msgid "Two" msgstr "" msgid "Other" msgstr "" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, c-format msgid "String context: %s" msgstr "" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #, c-format msgid "String identifier: %s" msgstr "" #, c-format msgid "%s Format" msgstr "" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "" #, c-format msgid "Translation — %s" msgstr "" msgid "ID" msgstr "" #, c-format msgid "Source text — %s" msgstr "" msgid "unknown language" msgstr "" #, c-format msgid "Network error: %s (%d)" msgstr "" msgid "Unknown error" msgstr "" #, c-format msgid "Failed command: %s" msgstr "" msgid "Failed to merge gettext catalogs." msgstr "" msgid "Open in Editor" msgstr "" msgid "Open in editor" msgstr "" msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" msgid "No usage information" msgstr "" #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "" msgstr[1] "" msgid "Source code not found" msgstr "" 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 "" msgid "File cannot be opened" msgstr "" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "" msgid "Find" msgstr "" msgid "Replace" msgstr "" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "" msgid "Ignore case" msgstr "" msgid "Wrap around" msgstr "" msgid "Whole words only" msgstr "" msgid "Find in source texts" msgstr "" msgid "Find in translations" msgstr "" msgid "Find in comments" msgstr "" msgid "Close" msgstr "" msgid "Replace &All" msgstr "" msgid "Replace &all" msgstr "" msgid "&Replace" msgstr "" msgid "< &Previous" msgstr "" msgid "&Next >" msgstr "" msgid "String to find" msgstr "" msgid "Replacement string" msgstr "" #, c-format msgid "Cannot execute program: %s" msgstr "" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "" msgid "Translation Language" msgstr "" msgid "Language of the translation:" msgstr "" msgid "All strings" msgstr "" msgid "Couldn’t download Localazy project details." msgstr "" msgid "There was an error when uploading translations to Localazy." msgstr "" msgid "Projects" msgstr "" msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" msgid "Add Project" msgstr "" msgid "Add project" msgstr "" msgid "Poedit - Catalogs manager" msgstr "" msgid "Edit…" msgstr "" msgid "Create new translations project" msgstr "" msgid "Delete the project" msgstr "" msgid "Edit the project" msgstr "" msgid "Update all" msgstr "" msgid "Update all catalogs in the project" msgstr "" msgid "Total" msgstr "" msgid "Untrans" msgstr "" msgctxt "column/row header" msgid "Needs Work" msgstr "" msgid "Errors" msgstr "" msgid "Last modified" msgstr "" msgid "Select directory" msgstr "" msgid "Directories:" msgstr "" msgid "" msgstr "" #, c-format msgid "Do you want to delete project “%s”?" msgstr "" msgid "Delete project" msgstr "" msgid "Deleting the project will not delete any translation files." msgstr "" msgid "Confirmation" msgstr "" msgid "Update all catalogs in this project?" msgstr "" msgid "Performs update from source code on all files in the project." msgstr "" msgid "Check for Updates…" msgstr "" msgid "Catalogs Manager" msgstr "" msgid "&Preferences…" msgstr "" msgid "&Edit" msgstr "" msgid "Undo" msgstr "" msgid "Redo" msgstr "" msgid "Paste and Match Style" msgstr "" msgid "Delete" msgstr "" msgid "Spelling and Grammar" msgstr "" msgid "Show Spelling and Grammar" msgstr "" msgid "Check Document Now" msgstr "" msgid "Check Spelling While Typing" msgstr "" msgid "Check Grammar With Spelling" msgstr "" msgid "Correct Spelling Automatically" msgstr "" msgid "Substitutions" msgstr "" msgid "Show Substitutions" msgstr "" msgid "Smart Copy/Paste" msgstr "" msgid "Smart Quotes" msgstr "" msgid "Smart Dashes" msgstr "" msgid "Smart Links" msgstr "" msgid "Text Replacement" msgstr "" msgid "Transformations" msgstr "" msgid "Make Upper Case" msgstr "" msgid "Make Lower Case" msgstr "" msgid "Capitalize" msgstr "" msgid "Speech" msgstr "" msgid "Start Speaking" msgstr "" msgid "Stop Speaking" msgstr "" msgid "&View" msgstr "" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Show Toolbar" msgstr "" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Customize Toolbar…" msgstr "" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Enter Full Screen" msgstr "" msgid "Window" msgstr "" msgid "Minimize" msgstr "" msgid "Zoom" msgstr "" msgid "Welcome to Poedit" msgstr "" msgid "Bring All to Front" msgstr "" msgid "Information about the translator" msgstr "" msgid "Name:" msgstr "" msgid "Your Name" msgstr "" msgid "Email:" msgstr "" msgid "you@example.com" msgstr "" msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" msgid "Editing" msgstr "" msgid "Automatically compile MO file when saving" msgstr "" msgid "Show summary after updating files" msgstr "" msgid "Check spelling" msgstr "" msgid "Always change focus to text input field" msgstr "" msgid "" "Never let the list of strings take focus. If enabled, you must use Ctrl-" "arrows for keyboard navigation but you can also type text immediately, " "without having to press Tab to change focus." msgstr "" msgid "Appearance" msgstr "" msgid "Use custom list font:" msgstr "" msgid "Use custom text fields font:" msgstr "" msgid "Change UI language" msgstr "" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions msgid "(requires Windows 8 or newer)" msgstr "" msgid "General" msgstr "" msgid "Use translation memory" msgstr "" msgid "Manage…" msgstr "" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "" 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 "" msgid "Stored translations:" msgstr "" msgid "Database size on disk:" msgstr "" msgid "Import Translation Files…" msgstr "" msgid "Import translation files…" msgstr "" msgid "Import From TMX…" msgstr "" msgid "Import from TMX…" msgstr "" msgid "Export To TMX…" msgstr "" msgid "Export to TMX…" msgstr "" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). msgid "Reset" msgstr "" msgid "Select translation files to import" msgstr "" msgid "Translation Memory" msgstr "" msgid "Importing translations…" msgstr "" #, c-format msgid "Error loading translation file “%s”." msgstr "" msgid "Finalizing…" msgstr "" msgid "Select TMX files to import" msgstr "" msgid "TMX Files" msgstr "" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "" msgid "Import error" msgstr "" msgid "Export as…" msgstr "" msgid "Exporting translations…" msgstr "" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "" msgid "Export error" msgstr "" msgid "Reset translation memory" msgstr "" msgid "Are you sure you want to reset the translation memory?" msgstr "" 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. msgid "TM" msgstr "" msgid "" "Source code extractors are used to find translatable strings in the source " "code files and extract them so that they can be translated." msgstr "" msgid "Custom Extractors:" msgstr "" msgid "Custom extractors:" msgstr "" msgid "GNU gettext" msgstr "" msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" msgid "Delete extractor" msgstr "" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "" msgid "Extractors" msgstr "" msgid "Accounts" msgstr "" msgid "Automatically check for updates" msgstr "" msgid "Include beta versions" msgstr "" msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" msgid "Updates" msgstr "" msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" msgid "Line endings:" msgstr "" msgid "Unix (recommended)" msgstr "" msgid "Windows" msgstr "" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "" msgid "Preserve formatting of existing files" msgstr "" msgid "Advanced" msgstr "" msgid "Settings" msgstr "" msgid "Preparing strings…" msgstr "" msgid "Pre-translating from translation memory…" msgstr "" #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "" msgstr[1] "" msgid "Pre-translating…" msgstr "" 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. msgid "Pre-translate" msgstr "" msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" msgid "Cannot pre-translate from unknown language." msgstr "" msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" msgid "Only fill in exact matches" msgstr "" msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" msgid "Don’t mark exact matches as needing work" msgstr "" 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 "" msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "" msgstr[1] "" msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" msgid "No entries could be pre-translated." msgstr "" msgid "" "The TM doesn’t contain any strings similar to the content of this file. It " "is only effective for semi-automatic translations after Poedit learns enough " "from files that you translated manually." msgstr "" msgid "Cancelling…" msgstr "" msgid "Drag Folders or Files Here" msgstr "" msgid "Drag folders or files here" msgstr "" msgid "Add Folders…" msgstr "" msgid "Add folders…" msgstr "" msgid "Add Files…" msgstr "" msgid "Add files…" msgstr "" msgid "Add Wildcard…" msgstr "" msgid "Add wildcard…" msgstr "" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) msgid "Reveal in Finder" msgstr "" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" msgid "Show in Explorer" msgstr "" msgid "Show in Folder" msgstr "" msgid "Paths" msgstr "" msgid "Excluded paths" msgstr "" msgid "Advanced extraction settings" msgstr "" msgid "Extract notes for translators from:" msgstr "" msgid "Comments prefixed with:" msgstr "" msgid "All comments" msgstr "" msgid "Additional xgettext flags:" msgstr "" msgid "Additional keywords" msgstr "" msgid "Name of the project the translation is for" msgstr "" msgid "Team name and email address or URL" msgstr "" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "" msgid "UTF-8 (recommended)" msgstr "" msgid "Please save the file first. This section cannot be edited until then." msgstr "" msgid "Placeholders correctness" msgstr "" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "" #, c-format msgid "Superfluous placeholder “%s” that isn’t in source text." msgstr "" msgid "Plural form translations" msgstr "" msgid "Not all plural forms are translated." msgstr "" msgid "Inconsistent upper/lower case" msgstr "" msgid "The translation should start as a sentence." msgstr "" msgid "The translation should start with a lowercase character." msgstr "" msgid "Inconsistent whitespace" msgstr "" msgid "The translation doesn’t start with a space." msgstr "" msgid "The translation starts with a space, but the source text doesn’t." msgstr "" msgid "The translation is missing a newline at the end." msgstr "" msgid "The translation ends with a newline, but the source text doesn’t." msgstr "" msgid "The translation is missing a space at the end." msgstr "" msgid "The translation ends with a space, but the source text doesn’t." msgstr "" msgid "Punctuation checks" msgstr "" #, c-format msgid "The translation should end with “%s”." msgstr "" #, c-format msgid "The translation should not end with “%s”." msgstr "" #, c-format msgid "The translation ends with “%s”, but the source text ends with “%s”." msgstr "" msgid "Cloud" msgstr "" msgid "Clear Menu" msgstr "" msgid "Clear menu" msgstr "" msgid "Comment:" msgstr "" msgid "Update" msgstr "" msgid "&Delete" msgstr "" msgid "Delete the comment" msgstr "" msgid "Edit project" msgstr "" msgid "Project name:" msgstr "" msgid "Browse" msgstr "" msgid "Add directory to the list" msgstr "" msgid "OK" msgstr "" msgid "&File" msgstr "" msgid "&New…" msgstr "" msgid "New from &POT/PO file…" msgstr "" msgid "New From &POT/PO File…" msgstr "" msgid "&Open…" msgstr "" msgid "Open Recent" msgstr "" msgid "Open recent" msgstr "" msgid "Open cloud translation…" msgstr "" msgid "Open Cloud Translation…" msgstr "" msgid "&Start window" msgstr "" msgid "&Start Window" msgstr "" msgid "Catalogs &manager" msgstr "" msgid "Catalogs &Manager" msgstr "" msgid "&Close" msgstr "" msgid "&Save" msgstr "" msgid "Save &as…" msgstr "" msgid "Save &As…" msgstr "" msgid "Compile to MO…" msgstr "" msgid "E&xport to HTML…" msgstr "" msgid "Check for updates…" msgstr "" msgid "Settings…" msgstr "" msgid "&Preferences" msgstr "" msgid "E&xit" msgstr "" msgid "Quit" msgstr "" msgid "Copy from singular" msgstr "" msgid "Copy From Singular" msgstr "" msgid "Translation needs &work" msgstr "" msgid "Translation Needs &Work" msgstr "" msgid "Edit &comment" msgstr "" msgid "Edit &Comment" msgstr "" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "" msgid "&Find…" msgstr "" msgid "Replace…" msgstr "" msgid "Find next" msgstr "" msgid "Find previous" msgstr "" msgid "Find and Replace…" msgstr "" msgid "Find Next" msgstr "" msgid "Find Previous" msgstr "" msgid "Show string &ID" msgstr "" msgid "Show String &ID" msgstr "" msgid "Show warnings" msgstr "" msgid "Show Warnings" msgstr "" msgid "Sort by &file order" msgstr "" msgid "Sort by &File Order" msgstr "" msgid "Sort by &source" msgstr "" msgid "Sort by &Source" msgstr "" msgid "Sort by &translation" msgstr "" msgid "Sort by &Translation" msgstr "" msgid "&Group by context" msgstr "" msgid "&Group By Context" msgstr "" msgid "Entries with errors first" msgstr "" msgid "Entries with Errors First" msgstr "" msgid "&Untranslated entries first" msgstr "" msgid "&Untranslated Entries First" msgstr "" msgid "&Show code occurrences" msgstr "" msgid "&Show Code Occurrences" msgstr "" msgid "Show sidebar" msgstr "" msgid "Show status bar" msgstr "" msgid "&Translation" msgstr "" msgid "&Update from source code" msgstr "" msgid "&Update from Source Code" msgstr "" msgid "Update from &POT file…" msgstr "" msgid "Update from &POT File…" msgstr "" msgid "Sync with Crowdin" msgstr "" msgid "Pre-&translate…" msgstr "" msgid "&Validate translations" msgstr "" msgid "&Validate Translations" msgstr "" msgid "Remove Same-as-Source Translations" msgstr "" msgid "&Purge deleted translations" msgstr "" msgid "&Purge Deleted Translations" msgstr "" msgid "&Properties…" msgstr "" msgid "&Go" msgstr "" msgid "&Done and next" msgstr "" msgid "&Done and Next" msgstr "" msgid "Previously edited" msgstr "" msgid "Previously Edited" msgstr "" msgid "&Previous translation" msgstr "" msgid "&Previous Translation" msgstr "" msgid "&Next translation" msgstr "" msgid "&Next Translation" msgstr "" msgid "P&revious unfinished" msgstr "" msgid "P&revious Unfinished" msgstr "" msgid "Ne&xt unfinished" msgstr "" msgid "Ne&xt Unfinished" msgstr "" msgid "Previous plural form" msgstr "" msgid "Previous Plural Form" msgstr "" msgid "Next plural form" msgstr "" msgid "Next Plural Form" msgstr "" msgid "&Online help" msgstr "" msgid "&Online Help" msgstr "" msgid "&GNU gettext manual" msgstr "" msgid "&GNU gettext Manual" msgstr "" msgid "&About Poedit" msgstr "" msgid "&About" msgstr "" msgid "Extractor setup" msgstr "" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "" msgid "Invocation:" msgstr "" msgid "Command to extract translations:" msgstr "" 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 "" msgid "An item in keywords list:" msgstr "" msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" msgid "An item in input files list:" msgstr "" #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" msgid "Source code charset:" msgstr "" #, 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 "" msgid "Translation Properties" msgstr "" msgid "Project name and version:" msgstr "" msgid "Language team:" msgstr "" msgid "Plural forms:" msgstr "" msgid "Use default rules for this language" msgstr "" msgid "Use custom expression" msgstr "" msgid "Learn about plural forms" msgstr "" msgid "Charset:" msgstr "" msgid "Advanced Extraction Settings…" msgstr "" msgid "Advanced extraction settings…" msgstr "" msgid "Translation properties" msgstr "" msgid "Sources Paths" msgstr "" msgid "Sources paths" msgstr "" msgid "Extract text from source files in the following directories:" msgstr "" msgid "Base path:" msgstr "" msgid "Sources Keywords" msgstr "" msgid "Sources keywords" msgstr "" msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" msgid "Also use default keywords for supported languages" msgstr "" msgid "Learn about gettext keywords" msgstr "" msgid "Update summary" msgstr "" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" msgid "New strings" msgstr "" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" msgid "Obsolete strings" msgstr "" msgid "(0 new, 0 obsolete)" msgstr "" msgid "Open" msgstr "" msgid "Open file" msgstr "" msgid "Save file" msgstr "" msgid "Validate" msgstr "" msgid "Check for errors in the translation" msgstr "" msgid "Update from code" msgstr "" msgid "Update from Code" msgstr "" msgid "Update from source code" msgstr "" msgid "Sidebar" msgstr "" msgid "Show or hide the sidebar" msgstr "" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. msgid "Previous source text" msgstr "" msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" msgid "Notes for translators" msgstr "" msgid "Comment" msgstr "" msgid "Add comment" msgstr "" msgid "Add Comment" msgstr "" msgid "Delete From Translation Memory" msgstr "" msgid "Delete from translation memory" msgstr "" msgid "Translation suggestions" msgstr "" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). msgid "No matches found" msgstr "" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). msgid "No Matches Found" msgstr "" msgid "This string was found in Poedit’s translation memory." msgstr "" msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" msgid "The TMX file is malformed." msgstr "" msgid "No translations were found in the TMX file." msgstr "" #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "" #, c-format msgid "Translation memory error: %s (%d)." msgstr "" msgid "Cannot create temporary directory." msgstr "" msgid "There are no translations. That’s unusual." msgstr "" msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "Translators typically use PO template files (POTs) prepared for them by the " "developer." msgstr "" msgid "(Learn more about GNU gettext)" msgstr "" msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" msgid "Update from POT" msgstr "" msgid "Take translatable strings from an existing POT template." msgstr "" msgid "" "You can also extract translatable strings directly from the source code:" msgstr "" msgid "Extract from sources" msgstr "" msgid "Configure source code extraction in Properties." msgstr "" #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #, c-format msgid "Version %s" msgstr "" msgid "Create new" msgstr "" msgid "Create new translation from POT template." msgstr "" msgid "Browse files" msgstr "" msgid "Open and edit translation files." msgstr "" msgid "Translate cloud project" msgstr "" msgid "Collaborate with other people online." msgstr "" msgid "Recent files" msgstr "" msgid "Sync" msgstr "" msgid "Synchronize the translation with Crowdin" msgstr "" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #, c-format msgid "About %s" msgstr "" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #, c-format msgid "%s Preferences" msgstr "" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "" msgid "Preferences..." msgstr "" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "" msgid "&Apply" msgstr "" msgid "Apply" msgstr "" msgid "&Back" msgstr "" msgid "Back" msgstr "" msgid "&Cancel" msgstr "" msgid "&Clear" msgstr "" msgid "Clear" msgstr "" msgid "Copy" msgstr "" msgid "Cu&t" msgstr "" msgid "Cut" msgstr "" msgid "Edit" msgstr "" msgid "&Quit" msgstr "" msgid "Help" msgstr "" msgid "&New" msgstr "" msgid "New" msgstr "" msgid "&No" msgstr "" msgid "No" msgstr "" msgid "&OK" msgstr "" msgid "Open…" msgstr "" msgid "&Open..." msgstr "" msgid "Open..." msgstr "" msgid "&Paste" msgstr "" msgid "Paste" msgstr "" msgid "Preferences" msgstr "" msgid "&Redo" msgstr "" msgid "Refresh" msgstr "" msgid "&Save as" msgstr "" msgid "Save as" msgstr "" msgid "Select &All" msgstr "" msgid "Select All" msgstr "" msgid "&Undo" msgstr "" msgid "&Yes" msgstr "" msgid "Yes" msgstr "" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "" poedit-3.5/locales/nb.mo0000644000175100001770000014647214664354154012201 00000000000000|m(6 6 6&66<6 7J37g~7 77 7 8 88%8+838:8A8G8O8^8m8s8y88888888888899 9 &939<9E9 L9Y9i9999999999:: .: <: J:W:]:y:::::::;;3;K;b;r; ; ;;;;; ; ; ;; ;< < <,< F<S< b<n<~<<<<<<= )= 6=1B=t='y=== ==7=6!>X>)x>> >]>?<#?D`?$?? ?? ?"?@ 1@<@N@`@q@@@@@@#@A&A5A ;AFA XAcAuA{AAA AAAAB B!B/E ~E EE*EEE"E5FHFcF~FF F F F F FFFFFFFf GsGGuG(HFHYHkH rH}HH H HH0HHI#(I<LI"II II*I0J!6J'XJJJJ(JTJ 8KFK KK UKcKwKKK K K K KKKLL$L5L >LJL RL]LbL jL vLLLLLLyMzN|N NNN NNN2N-OGONOdOO OO O OOOO;P(JPsPPP P PPP Q QQ8Q:=Q xQ<Q Q.QQR*RJReR uRRR*RRRR R RSSSS STT(T+T# f p{-ڍ -EWo*Ǝ  #-F_xӏ7 X"`^8  '2/Aq"=#,?Rdv aϒ1Nsk,ߓ (BGK]r2ݔ$ 41(f,•$))>hl'\– - 2 =J]p ї - 9E NY_ ht#Ҙ՘s Ț 1%Ws{ ˛ $8;(t ĜϜ ל +?3G{AН-+*Hs Ğ*̞ *9ߟ /CG.ZMנ)+@'W*¡ơءۡ{ $ ˢբ 09 BOUgy4<T?Z-ۤl;^=>0oxI3'}ΨG.)Xp )8I+`ͪު  $/CJg oz   ѫ߫  - N[{  " 0 > L Z dq  έ٭+1 I S _k|̮ۮ  (DTd+s ȯѯ  +8A^rٰ{h ͱ ޱ F Rn- < iu% %Դ,' *54*jOHk8޷0lK[KE2ɹv^s,Һ@D@B+Ȼ/$$м)+1KH}ƽ/OSYӾ-U]dr7p]Cc  5BWj8/ *Hdyu<M_c l%z+#7 N Yg?}-"$Gc"~'&^Ogp   )@,5m^F I4S )/.'^& !mUlSm"6S0Tq?z h(Z}D5_.YHv q#~VQZ"Juyz9d CG)a{I4  rXs&0m<YRo^]cW48H7J4suDF^$i!v L|bV D}e[3jcg@f)-@lnMLek-`B5=,I(HGO1`+G\+o;<awK!RvTdh{\bFxQ_EZK=Q&W>r~c$  %6t x7{\Pr#K $qg.|:0:+k3XC yiz7(?_,* 'Vkt/nL5&.d!e;EO[wA8jNpj2">`]= #Uh2|'*~NY6ToC?%>P%/bpgA@NIU:J'13/ iAw B9 8;^2ynFpf1PRx9<W*sEfOl-a]MX,) SBMt[u} (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd AccountAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add accountAdd 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 languagesAlt+Always 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 save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCtrl+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 no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownDownloading 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:EnterEnter 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 loading translation file “%s”.Error opening fileError saving fileErrorsEverythingExcluded pathsExport To TMX…Export as…Export errorExport 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…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)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport from TMX…Import translation files…Importing translation memory from “%s” 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 CrowdinLeftLine %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 translations were found in the TMX file.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKObsolete stringsOneOnly 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 translation templateOpen...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 translationsQuitQuit %sRecentRecent 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 FinderReviewRightSaveSave &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 languageServicesSet LanguageSet languageSettings…Shift+Show AllShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow summary after updating filesShow 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 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.These strings are no longer in the source code. Poedit will remove them from the file now.These strings were found in the sources but were not in the file. Poedit will add them to the file now.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.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.Translated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation entries in the file are probably incorrect.Translation 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)UntransUpUpdateUpdate 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 the file failed. Click on 'Details >>' for details.Updating 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown languageyou@example.com“%s” is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2024-08-30 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) (ulagret)%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.linje %i i filen '%s' ble ikke riktig lastet inn.%i linjer i filen «%s» ble ikke lastet korrekt.%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&Start vindu&Start vindu&Oversettelse&Angre&Uoversatte poster først&Uoversatte poster først&Oppdater fra kildekode&Oppdater fra kildekode&Valider oversettelser&Valider oversettelser&VisJa(0 nye, 0 utgåtte)(Lær mer om GNU gettext)(Ny: %i, foreldet: %i)(Bruk standard språk)(ikke pålogget)(krever Windows 8 eller nyere)← &TidligereOm %sKontoKontoerLegg tilLegg til kontoLegg til kommentarLegg til filer…Legg til mapper…Legg til prosjektLegg til jokertegn…Legg til kontoLegg 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åkAlt+&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 tegnsett i oversettelses strengen.Bla &gjennomBla gjennom filer&AvbrytAvbryter…Kan ikke opprette midlertidig katalog.Kan ikke kjøre program: %sStor 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 oversettelseLukkKode forekomsterForekomster av kodeSamler kildefiler…Kommando for å pakke ut oversettelser:KommentarKommentar:Kommentarer som innledes med:Kompiler til MO…Kompiler til…Kompilerte oversettelsesfilerKonfigurer kildekodeutvinningen i Egenskaper.BekreftelseKopierKopier fra entallKopier fra kildetekstenKopier fra entallKopier fra kildetekstenKorrigere stavefeil automatiskKunne ikke lagre fil %s.Lag nyOpprett ny oversettelseLag en ny oversettelse ut i fra en POT-malLag nytt oversettelsesprosjektCrowdin-feilCtrl+Klipp &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 filen inn fra disken? Den ulagrede redigeringen i Poedit går tapt hvis du gjør.Vil du fjerne alle oversettelser som ikke lenger brukes?Ik&ke lagreIkke lagreIkke vis igjenIkke marker nøyaktige treff som Trenger arbeidIkke vis igjenNedLaster ned nyeste oversettelser...Nedlasting av oversettelser er deaktivert i dette prosjektet.Dra mapper eller filer hitDra mapper eller filer hitAvslutt&RedigerRediger &kommentar&Rediger kommentarRediger kommentarRediger kommentarRediger prosjektRediger prosjektRedigeringRediger…E-post:SkrivGå til fullskjermOppføringer i denne filen har forskjellige flertallsformer ut fra hodet i filens flertallsformerOppfø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 sådan oppføring.Feil ved lasting av oversettelsesfil «%s».Feil under åpning av filenFeil under lagring av filFeilAltEkskluderte banerEksporter til TMX…Eksporter som…EksporteringsfeilEksporter 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:Trekker ut oversettbare tekststrenger…Utpakker-oppsettUtpakkerKommandoen mislyktes: %sKunne ikke kommunisere med Poedit-prosessen.Kunne ikke lese oversettelses-filen.Klarte ikke slå sammen gettex-kataloger.Kan ikke oppdatere oversettingsminnet: %sFilFilen kan ikke åpnesFilen "%s" finnes ikke.Filen "%s" er ikke en oversettelsesfil.Filen "%s" er skrivebeskyttet og kan ikke lagres. Vennligst lagre filen under et annet navn.Fullfører…FinnFinn nesteFinn forrigeSøk og erstatt…Finn i kommentarerFinn i kildeteksterFinn i oversettelserFinn nesteFinn forrigeRett opp språkRett opp språkReparer prefiksenReparer prefiksenFlutter-oversettelsesfilerForm %iSkjemaet %i (ubrukt)GjentakendeGNU gettextGenereltHTML-filerHjelpSkjul %sSkjul andreSkjul sidepaneletSkjul statuslinjeSkjul denne meldingenHvordan fungerer skysynkronisering?IDHvis du fortsetter med rensingen, vil alle oversettelser merket som slettet fjernes permanent. Du må oversette dem igjen hvis de legges tilbake i fremtiden.Hvis du tidligere nektet tilgang til dine filer, kan du gi tilgangen igjen ved å gå til Systeminnstillinger > Sikkerhet & Personvern > Filer og mapper.Hvis du tidligere nektet tilgang til dine filer, kan du gi den i Systeminnstillinger > Personvern og Sikkerhet > Filer og mapper.IgnorerIgnorer små/STORE bokstaverImporter fra TMX…Importer oversettelsesfiler…ImportfeilImporter fra TMX…Importer oversettelsesfiler…Kunne ikke importere oversettelsesminne fra "%s".Importerer oversettelser…Inn: %sInkluder betaversjonerUkonsekvent øvre/små bokstaverInconsistent whitespaceInformasjon om oversetterenInstallerUgyldig filStart: JSON-oversettelsesfilerBeholdSpråknavn eller -kodeSpråket i oversettelsen er det samme som kildespråket.Språket for oversettelsen er ikke satt.Språket til oversettelsen:SpråkvalgSpråklag:Språk:Sist endretLær om gettext-søkeordLær om flertallsformerLær merLes mer om %sLær mer om CrowdinVenstreLinje %d i filen "%s" er korrupt (ugyldig %s data).Linjeavslutninger:Liste over etternavn skilt med semikolon (f.eks. «*.cpp; *.h»):Last inn engelskMO-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 arbeidLa 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 oversettelser ble funnet i TMX filen.Ingen bruksinformasjonIkke alle flertallsformer er oversatte.Ikke autorisert, vennligst logg inn igjen.Notater for oversettere&OKUtgåtte strengerEnBare 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 senesteÅpne og rediger oversettelsesfiler.Åpne filÅpne i redigeringsprogramÅpne i redigeringsprogramÅpne senesteÅpne oversettelsesmalÅ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.Tillatelse nektet.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.InnstillingerPreferanser...Innstillinger…Forbereder strenger…Beholde formateringen av eksisterende filerForrige flertallsformForrige flertallsformTidligere kildetekstTidligere endretTidligere redigert&Prosjektnavn og -versjon:Prosjektnavn:Prosjekt:ProsjekterStikkprøvekontrollTømmeFjern slettede oversettelserAvsluttAvslutt %sNyligeNylige filerGjør omOppdatérLast inn filen på nyttLast inn filen på nyttGjenstår: %dErstattErstatt &alleErstatt &alleErstatningsstrengErstatt…Den påkrevde prefiksen Plural-Forms mangler.TilbakestillTilbakestill oversettingsminnetÅ tilbakestille oversettelsesminnet vil ugjenkallelig slette alle lagrede oversettelser fra den. Du kan ikke angre operasjonen.Vis i FinderGjennomgangHøyreLagreLagre &som…Lagre &som…Lagre uansettLagre uansettLagre somLagre som…Lagre endringerLagre filenSkjermklipp:&Merk alleMerk alleVelg TMX filer for importeringVelg mappeVelg oversettelsesfilVelg oversettelsesfiler som skal importeresVelg oversettelsesmalVelg foretrukket språkTjenesterAngi språkAngi språkInnstillinger…Shift+Vis alleVis sidepaneletVis stavekontroll og grammatikkVis statuslinjeVis string-&IDVis erstatningerVis verktøylinjeVis advarslerVis i utforskerVis i mappeVis eller skjul sidepaneletVis sidepaneletVis statuslinjeVis string-&IDVis oppsummering etter oppdatering av filerVis advarslerSidepanelLogg innLogg utLogg innLogg inn på %sLogg inn på CrowdinLogg 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:Tekst 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 CrowdinSynkronisererSynkronseringsfeilSynkronisering med Crowdin mislyktes.Syntaksfeil i prefiksen Plural-Forms ("%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 inn i MO-formatet og brukes.Filen inneholder dupliserte elementer, som ikke er tillatt i PO-filer og vil hindre at filen blir brukt. Poedit har løst problemet, men du bør vurdere oversettelser av alle elementer merket 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?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 bli kompilert i MO-format 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).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.Disse strengene finnes ikke lenger i kildekoden. Poedit vil fjerne dem fra filen nå.Disse strengene ble funnet i kildene, men ikke i filen. Poedit vil legge dem til i filen nå.Denne filen har oppføringer med flertallsformer, men har ikke satt opp et hode med flertallsformer.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.TotaltTransformasjonerOversettbare oppføringer legges ikke inn manuelt i Gettext-systemet, men er automatisk utviklet fra kildekoden. På denne måten vil de holde seg oppdatert og nøyaktige. Oversettere bruker vanligvis PO-malfiler (POT) forberedt for dem av utvikleren.Oversatt: %d av %d (%d %%)OversettelseOversettelsespråketOversettelsesminneOversettelsen trenger &arbeidOversettelsesegenskaperOversettelsesoppføringer i filen er sannsynligvis feil.Oversettelsesminnedatabasen er skadet: %s (%d).Oversettelsesminnefeil: %s (%d).Oversettelsen trenger &arbeidEgenskaper for oversettelseOversettelsesforslagOversettelse — %sOversettelser kunne ikke oppdateres fra kildekoden, fordi ingen var funnet i plasseringen angitt i filens egenskaper.ToUTF-8 (anbefales)AngreUbehandlet unntak oppstod: %sUNIX (anbefales)Ikke oversettbartOppOppdaterOppdater 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 mislyktesKan ikke oppdatere filen. Klikk på 'detaljer >>' for detaljer.Oppdaterer 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 oversettelsesminneValidereResultater av valideringVersjon %sVenter på godkjenning...Velkommen til PoeditVed oppdatering fra kilderBare hele ordVinduWindowsPakk 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 filens egenskaper.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.NullZoomaltTrenger arbeidctrlikke 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://-URIforhånds-oversatt fra TMshiftUkjent språkdeg@eksempel.no«%s» er ikke en gyldig POT-fil.poedit-3.5/locales/ms.mo0000644000175100001770000016022714664354154012213 00000000000000t*9 9 9& 9G9<[99J9g9 ^:h: w:: ::::::::::::::;";&;8;J;P;U;];e;w;;; ; ;;;; ;;;; <<8<T<Z<`<i<o<x<< < < <<<< =&=?=V=m=s=x====== > >>'>/>8> <> H> T>a> p>|> > >> >> >>> ?%?.?N?k?? ? ?1??'?@6@ P@[@7a@6@@)@A A]*AA<ADA$BBB IBVBB B"BC+*C)VC CCCCCCCC D'D#OCOYO(xOTO OP P P!P5PFP[P pP zP P PPPPPPP PQ QQ Q (Q 4QAQQQpQQQ7RzR:S ASMS`S |SSS2SST T"T@T XTyT T TTTT;T(U1UNUaU pU zUUU UUUU:U 6V<DV VV.WJWZW*jWWW WWW*WXX,X =X HXSXYY,Y EYQYbYsYvY#Y\YZ'Z/AZ+qZZ$Z%ZZ[['[+[[[ [ [ \7\ Q\[\j\ y\\\\\\\\\\]]]]=]^1^L^ne^E^_!_;:_ v___@__`,a,aa bb2%b*Xbbbw%cjc dd#d2d%Gdmdddddd dde ee#e>eCe8Kee eee e e ee e ee f( f4f:fzSfffff f f g g!g )g 4g Ag Kg Xg dgoggg"gggh h 'h 4h@hGh Ph]hwhhh h hhhh h ii!+i Mi[icikiti |iiiiiii i i jj,jݜ . <O"T5w̝ *9H W dov|ky2'ԟ%" (3GY lz/֠$6&Fm )6͡$*)TYq)Z #3BTf} ̣ܣ * 0< ?I Q ]k ) Ҧ .*Y r|!ϧ !*3?#sШب$1F&f8˩Fݩ$<1-2At  ǫ  )50@Yrx#`+)4U(*ͮ/(?BQV,!?ay ʰݰ 0I\s *C1u,l̲I9L Ljq?E% ɶֶ5%8mѷ}? Ǹ Ը%7Oe{ Ĺ׹߹5 GU h t  ºϺ4 +Kλ  +6EW ht ̼#  @M] ny ҽ 0 Dex+ ; ۾ "=U p~ ƿ,B\s 8DSf x @ %;Pf2 =i4<!S u"2>&2Yj8GO>Bu;ZvOb#)M*em\-[MFI6h4D&5,\2?G{D!\9?UyxZHvSfn_;6srabH " 1D^Do1" #4sHs0B +'FU Xc%t*';V kv>"!'E_r%a+CJ_h ?# 4@VJYFi?U 8lEKO S_3d )/5Lf v|Lo[GvO1~M<Jf^\^tSJIM`'W oYL3NF1Bl0nqg3Rm{X/'|ibk)+&j_A"0-}_Z~Z)c]yt..mi'6 kr?@jay{W:7!,w4,U 46@9}BR Uufn+Gd EL/YCin/=x#>p`z%FC8V~4DuJXb-G [c|As*[7#gdem O*QSw*2Pv; ?"Dq`]p0br H1NT":5h+Q,eA> Yke<X ]@RQcu Hpr!%jf;(8xC7TB^{V=dKEPlWIFx\V(Twl KhO. q-}Z) NU#IM?6=(&Etva>zS\D<5z2H9ys5;:KP3 go$$ 8a&h!_s%92$  (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd AccountAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add accountAdd 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 languagesAlt+Always 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 errorCrowdin is an online localization management platform and collaborative translation tool.Ctrl+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 no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownDownloading 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:EnterEnter 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 loading translation file “%s”.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export errorExport 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…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)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport from TMX…Import translation files…Importing translation memory from “%s” 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 CrowdinLeftLine %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 translations were found in the TMX file.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKObsolete stringsOneOnly 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 translation templateOpen...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 translationsQuitQuit %sReading file content failed with the following error: %sRecentRecent 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 FinderReviewRightSaveSave &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 languageServicesSet LanguageSet languageSettings…Shift+Show AllShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow summary after updating filesShow 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.These strings are no longer in the source code. Poedit will remove them from the file now.These strings were found in the sources but were not in the file. Poedit will add them to the file now.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 entries in the file are probably incorrect.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.UntransUpUpdateUpdate 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 the file failed. Click on 'Details >>' for details.Updating 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown 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: 2024-08-30 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(0 baru, 0 usang)(Ketahui lebih lanjut mengenai GNU gettext)(Baharu: %i, lapuk: %i)(Guna bahasa lalai)(belum daftar masuk)(memerlukan Windows 8 atau lebih baharu)< &TerdahuluPerihal %sAkaunAkaunTambahTambah AkaunTambah UlasanTambah Fail…Tambah Folder…Tambah ProjekTambah Kad Liar…Tambah akaunTambah 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 tersokongAlt+Sentiasa 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 terjemahanTutupKemunculan 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 CrowdinCrowdin ialah satu platform pengurusan penyetempatan dalam talian dan alat terjemahan kolaboratif.Ctrl+Po&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.Anda mahu membuang semua terjemahan yang tidak digunakan lagi?&Jangan simpanJangan SimpanJangan Tunjuk LagiJangan tanda padanan tepat sebagai perlu semakJangan tunjuk lagiDownMemuat turun terjemahan terkini…Memuat turun terjemahan dilumpuhkan dalam projek ini.Seret Folder atau Fail Di SiniSeret folder atau fail di siniK&eluarSuntingSunting &UlasanSunting &ulasanSunting UlasanSunting ulasanSunting projekSunting projekPenyuntinganSunting…E-mel:EnterMasuk 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 memuatkan fail terjemahan "%s”.Ralat membuka failRalat menyimpan failRalat ketika memuatkan fail XLIFF: %sRalatKesemuanyaLaluan dikecualikanEksport Ke TMX…Eksport sebagai…Ralat eksportEksport 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:Mengekstrak rentetan boleh terjemah…Persediaan pengekstrakPengekstrakPerintah gagal: %sGagal 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.Memuktamadkan…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)KerapGettext GNUAmFail HTMLBantuanSembunyi %sSembunyi LainSembunyi 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…Ralat importImport daripada TMX…Import fail terjemahan…Mengimport ingatan terjemahan dari "%s" gagal.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 CrowdinKiriBaris %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 semakJangan 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 terjemahan ditemui dalam fail TMX.Tiada maklumat penggunaanBukan semua bentuk jamak telah diterjemah.Tidak diizinkan, sila daftar masuk sekali lagi.Nota untuk penterjemahOKRentetan lapukSatuHanya 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 templat terjemahanBuka...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 terpadamKeluarKeluar dari %sGagal membaca kandungan fail dengan ralat berikut: %sBaru-baru IniFail baru-baru iniBuat semulaSegar semulaMuat Semula FailMuat semula failBerbaki: %dGantiGanti 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 semulaRightSimpanSimpan 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 kehendakiPerkhidmatanTetapkan BahasaTetapkan bahasa Tetapan…Shift+Tunjuk SemuaTunjuk 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 ringkasan selepas mengemas kini failTunjuk 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.Rentetan-rentetan tiada lagi dalam kod sumber. Poedit akan membuangnya dari fail sekarang.Rentetan-rentetan ini telah ditemui dalam sumber tetapi tidak di dalam fail. Poedit akan menambahnya ke fail sekarang.Fail JSON ini bukan sebuah fail terjemahan dan tidak dapat disunting dengan Poedit.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.JumlahPengubahanMasukan boleh terjemah tidak ditambah secara manual dalam sistem Gettext, tetapi diekstrak secara automatik dari kod sumber. Dengan cara ini, ianya akan sentiasa dikemas kini dan tepat. Penterjemah biasanya menggunakan fail templat PO (POT) yang disediakan untuk mereka oleh pembangun.Terjemah projek awanSudah terjemah: %d dari %d (%d %%)TerjemahanBahasa Terjemahan Ingatan TerjemahanTerjemahan Perlu Di&semakSifat TerjemahanMasukan-masukan terjemahan di dalam fail berkemungkinan tidak betul.Pangkalan 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.Belum TerjemahUpKemas 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 gagalGagal mengemas kini fail. Klik 'Perincian >>' untuk perincian.Mengemas 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.SifarZumaltPerlu Semakctrljangan padam fail sementara (untuk penyahpepijatan)cth. nplurals=2; plural=(n > 1);padanan kabur di dalam failpergi ke item pada nombor baris diberikankendali satu poedit:// URIpra-terjemah dari TMshiftbahasa tidak diketahuiversi tidak disokong (%s)anda@contoh.com"%s" bukanlah fail POT yang sah.poedit-3.5/locales/fi.mo0000644000175100001770000016442614664354153012176 00000000000000|+: : :&:?:<S::J:g: V;`; o;y; ;;;;;;;;;;;;;;<<<0<B<H<M<U<]<o<<< < <<<< <<<<==0=L=R=X=a=g=p== = = ====>>7>N>e>k>p>>>>>> ? ???'?0? 4? @? L?Y? h?t? ? ?? ?? ???@@&@F@c@@ @ @1@@'@A.A HASA7YA6AA)AB B]"BB<BDB$C:C ACNCC C"CD+"D)ND xDDDDDDDDEE#4EXEmE|E EE EEEEEE%EF +FLFTF]FuF FF/F FkFXG]GpGGGG-G1G.H GHRH)iHH HYHI!I&I9ILIaIeI|IIIIIII;J CJ'PJ^xJLJ?$K dK rKK*KKK"K5K.LILdLjL}L L L L L LLLLLLLfMlMMuM(N?NRN"dNN NNN N NNN0N'OAO#VO<zO"OO OO*P03P!dP'PPPP(PTQ fQtQ yQ QQQQQ Q Q Q RR!R0RJRRRcR lRxR RRR R RRRRRRSz/TT TTT TT U2(U[UuU|UUU UU U U V!V&V;^D^Y^n^^^._4_J_=P__1__n_E[```;` ` aa@,amacb,#c,Pc}c cc2c*c ddwdj$e eeee%ee ff3fEfWf qffffffff8f g gg$g ,g 8g DgRg"Yg"|gg g gg g(ghhz'hhhhh h h h hh h i i i ,i 8iCi^ioi"iiii i ij jj$j -j:jTjdjtj j jjjj jjj!k *k8k@kHkQk Ykgkkkkkk k k kk ll.lBlRlgl|lmm 4m@mOmbm smm mmKmmn n%n:nMncn1nn n nn=ioo'p,p(>pgp op}p+pp p8p" q/q@qrCr8brrs8*t1ctRtctQLuu'u:ulvPv-vCwALwKw0w. x:x!x)x-y+Cy8oyCyuy,bzLz;z]{v{Z{gW|J|c }[n}o}:~7~m_[HN^Xp ف72("[~~łqDɃRVj o ȄЄӄ ڄ"$-F_p<Ѕ #$@eˆ#V cz ч. ;GPhHl5m7Y 3aω16;?\.a ͊ 1J!Z| %1/Br6JՍg  ͎ ֎  3 <FOgŏˏ ԏ !09B J Ucy!!   > \ j xÑݑ%.6Qq! ے   );Qfw Ɠܓ+IXtĔՔ2' #Hl,0•%5O XkdЖV`8&Ɨח!2ؘ: FYn ™,ڙ+3Ih~ Țښ$%J.j ˛ 1 :rDќ&+;>g ǝН! "S0מߞ *EUf5v$pڟGKIݠ3EZ"cB&ɡ&7?Sgz ŢӢ٢`Vt/Lh%Ϥ 7.f.@ƥ%-@I3dG.,<E#\,Y .=O`w  Ĩ Ҩ 0<DS X bnʩͩ2 5AX7t ƬӬ(!:SZ pz-&ݭ(9@$Rw ծHۮ $I2|1$Vk,#Ѱ  6OUn²޲ 47)OJyij'ܳ',,Y*l#״ڴ#׵%% =K[k~˶зFַ '+Sgk@ӸH:J/̻1. ?L7[(Ѽaw t ~ /%6Ga q { ǿ ο*ؿ  ) 7AZs** ' GQl "8N]l~$2Wo $"<Odx47 KV _mv .,Hu ( 0$ ,@Vg}b$5Pj. 9u EO d %4 H)^B?,(4.L?k_%X~0cN#<=FQ*++.'1&;X'EG0o.RfUu^NA3p-d` d ny ;)5e! w'9'3 D O Yc$t-6Oh S$2;+n)l" 186@ wB2t$J.p:!1)@j )45nCv#=ld B@Twa QjqO 91B)aT'ZSFQYu>"/VJZsG6*[ar`^;XyVb?' <IL:x%AMZ\W88O,*d0)i{J-yK|]:c%}oo0][-Pg6YS&r(\p@X(tM?iE=eD"OU|53 w  fj,#32H 4[ pk {qke;mpgl16U85:`, +Y^L9$qz2fGu(A7N4!d0DNt{F<x_+7vX)nKG+>&9m3 LeUIN Iy E"nsk/<W>PhrVvT]cQmuR$bjD !_@xEl%WK-_7MCwbz/|gcAB` zh~?SC^*tf=\h!H'P#RiF&;$H1~.2 RsJo}.} .~ (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd AccountAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add accountAdd 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 languagesAlt+Always 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 errorCrowdin is an online localization management platform and collaborative translation tool.Ctrl+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 againDownDownloading 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:EnterEnter 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 loading translation file “%s”.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export errorExport 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…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)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport from TMX…Import translation files…Importing translation memory from “%s” 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 CrowdinLeftLine %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 translations were found in the TMX file.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKObsolete stringsOneOnly 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 translation templateOpen...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 translationsQuitQuit %sReading file content failed with the following error: %sRecentRecent 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 FinderReviewRightSaveSave &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 languageServicesSet LanguageSet languageSettingsSettings…Shift+Show AllShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow summary after updating filesShow 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.These strings are no longer in the source code. Poedit will remove them from the file now.These strings were found in the sources but were not in the file. Poedit will add them to the file now.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 entries in the file are probably incorrect.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 errorUntransUpUpdateUpdate 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 the file failed. Click on 'Details >>' for details.Updating 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown 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: 2024-08-30 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ä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&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ä(0 uutta, 0 vanhentunutta)(Lisätietoja GNU gettextistä)(Uusia: %i, vanhentuneita: %i)(Käytä oletuskieltä)(ei kirjautunut)(vaatii Windows 8:n tai uudemman)< &EdellinenTietoja %s-ohjelmastaTiliTilitLisääLisää tiliLisää kommenttiLisää tiedostoja…Lisää kansioita…Lisää projektiLisää korvausmerkki…Lisää tiliLisää 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 kielilleAlt+Kohdista aina tekstinsyöttökenttäänKohde syöttötiedostojen listassa:Kohde avainsanalistassa:UlkoasuKäytäHaluatko 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 verkkopohjainen lokalisointialusta ja yhteisöllinen käännöstyökalu.Ctrl+&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.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ääAlanuoliLadataan 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:EnterSiirry 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 ladattaessa käännöstiedostoa “%s”.Virhe tiedoston avaamisessaVirhe tallennettaessa tiedostoaVirhe ladattaessa XLIF-tiedostoa: %s.VirheetKaikkiOhitettavat polutVie TMX-tiedostoon…Vie nimellä…VientivirheVie HTML-tiedostoon…Vie TMX-tiedostoon…Kää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ävät tekstit…Poimimen asetuksetPoimimetEpäonnistunut komento: %sKommunikointi Poedit-prosessin kanssa epäonnistui.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ä.Viimeistellään…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)Usein käytetytGNU gettextYleisetHTML-tiedostotOhjeKätke %sKätke muutPiilota 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…TuontivirheTuo TMX-tiedostosta…Tuo käännöstiedostoja…Käännösmuistin tuonti polusta ”%s” 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:JSON-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 CrowdinistaVasenRivi %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…Uusi &POT/PO-tiedostosta…Uudet tekstitSeuraava 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.TMX-tiedostosta ei löytynyt käännöksiä.Ei käyttötietojaKaikkia monikkomuotoja ei ole käännetty.Ei valtuutusta; kirjaudu uudelleen.Huomautukset kääntäjilleOKVanhentuneet tekstitYksiOta 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 käännöspohjaAvaa...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öksetLopetaLopeta %sTiedoston sisällön luku epäonnistui: %sÄskettäisetÄskettäiset tiedostotTee uudelleenVirkistäLataa tiedosto uudelleenLataa tiedosto uudelleenJäljellä: %dPoistaPoista lähteestä kopioidut käännöksetPoista lähteestä kopioidut käännöksetKorvaaKorvaa 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ä FinderissaKatselmointiOikeaTallennaTallenna &nimellä…Tallenna &nimellä…Tallenna siltiTallenna siltiTallenna nimelläTallenna nimellä…Tallenna muutoksetTallenna tiedostoKuvankaappaukset:Valitse k&aikkiValitse kaikkiValitse tuotavat TMX-tiedostotValitse kansioValitse käännöstiedostoValitse tuotavat käännöstiedostotValitse käännösmalliValitse ensisijainen kieliPalvelutAseta kieliAseta kieliAsetuksetAsetukset…Vaihto+Näytä kaikkiNä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ä yhteenveto tiedostojen päivityksen jälkeenNä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ä tekstiKorvauksetEhdotuksetEhdotukset 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.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.Näitä tekstejä ei ole enää lähdekoodissa. Poedit poistaa ne nyt tiedostosta.Nämä tekstit löytyivät lähdekoodista, mutta eivät tiedostosta. Poedit lisää ne nyt tiedostoon.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 automaattisesti lähdekoodista. 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-mallipohjatiedostoja (POT).Käännä pilviprojektiKäännetty: %d/%d (%d %%)KäännösKäännöksen kieliKäännösmuistiKäännös on &keskeneräinenKäännöksen ominaisuudetTiedoston käännösviestit ovat luultavasti virheellisiä.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)KumoaTapahtui käsittelemätön poikkeus: %sUnix (suositeltu)Tuntematon Crowdin-virhe.Tuntematon virheEi käännYlänuoliPäivitäPä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äonnistuiTiedoston päivitys epäonnistui. Valitse ”Lisää >>” saadaksesi lisätietoja.Pä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 %sOdotetaan todennusta…Tervetuloa PoeditiinPäivitettäessä lähteistäVain kokonaiset sanatIkkunaWindowsHaluatko käyttää englanninkielistä lähdetekstiä?Jatka alustaRivitys:XLIFF-käännöstiedostotKyllä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.NollaZoomaaaltKeskeneräisiäctrlälä poista tilapäistiedostoja (vianjäljitystä varten)esim. nplurals=2; plural=(n > 1);käytä sumeaa täsmäystä tiedoston sisäisestisiirry annetulla rivillä olevaan kohtaankäsittele poedit://-osoiteesikäännä käännösmuististavaihtotuntematon kieliei-tuettu versio (%s)osoitteesi@example.com”%s” ei ole kelvollinen POT-tiedosto.poedit-3.5/locales/ka.po0000644000175100001770000025062414664354153012172 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "დამალე ეს შეტყობინება" msgid "Don’t Show Again" msgstr "აღარ მაჩვენო" msgid "Don’t show again" msgstr "აღარ მაჩვენო" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(ახალი: %i, მოძველებული: %i)" msgid "Collecting source files…" msgstr "მონაცემების საწყისი კოდიდან შეგროვება…" msgid "Extracting translatable strings…" msgstr "მიმდინარეობს სათარგმნი ფრაზების ამოღება…" msgid "Failed to load file with extracted translations." msgstr "ვერ მოხერხდა ფაილის ჩატვირთვა ამოღებული თარგმანებით." msgid "Merging differences…" msgstr "განსხვავებების შერწყმა…" msgid "Updating translations" msgstr "მიმდინარეობს თარგმანების განახლება" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "ფაილის \"%s\" გახსნა შეუძლებელია." msgid "Invalid file" msgstr "არასწორი ფაილი" #, c-format msgid "Malformed header: “%s”" msgstr "არასწორი ჰედერი: \"%s\"" msgid "PO Translation Files" msgstr "PO თარგმნის ფაილები" msgid "POT Translation Templates" msgstr "POT თარგმნის შაბლონები" msgid "XLIFF Translation Files" msgstr "XLIFF თარგმანის ფაილები" msgid "JSON Translation Files" msgstr "JSON თარგმნის ფაილები" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "Flutter თარგმნის ფაილები" msgid "All Translation Files" msgstr "თარგმნის ყველა ფაილი" msgid "The file is in a format not recognized by Poedit." msgstr "ფაილის ფორმატი Poedit-სთვის უცნობია." msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "ეს JSON ფაილი სათარგმნი ფაილი არაა და მას Poedit-ით ვერ ჩაასწორებთ." #, c-format msgid "Reading file content failed with the following error: %s" msgstr "ფაილის შიგთავსის წაკითხვა დასრულდა შემდეგი შეცდომით: %s" #, c-format msgid "" "File “%s” is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "ფაილი “%s” არის მხოლოდ წაკითხვადი და მისი შენახვა შეუძლებელია.\n" "გთხოვთ, შეინახოთ სხვა სახელით." #, c-format msgid "Couldn’t save file %s." msgstr "%s ფაილის შენახვა ვერ მოხერხდა." msgid "Screenshots:" msgstr "ეკრანის ანაბეჭდები:" #, c-format msgid "%i line of file “%s” was not loaded correctly." msgid_plural "%i lines of file “%s” were not loaded correctly." msgstr[0] "“%2$s” ფაილის %1$i ხაზი სწორად არ ჩაიტვირთა." msgstr[1] "“%2$s” ფაილის %1$i ხაზი სწორად არ ჩაიტვირთა." #, c-format msgid "Line %d of file “%s” is corrupted (not valid %s data)." msgstr "“%2$s” ფაილის %1$d ხაზი დაზიანებულია (მონაცემი %3$s არ არის ვალიდური)." msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" "დაზიანებული PO ფაილი: msgstr-ის მხოლობითი ფორმა გამოყენებულია msgid_plural-" "თან ერთად" msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" "დაზიანებული PO ფაილი: msgstr-ის მრავლობითი ფორმა გამოყენებულია msgid_plural-" "ის გარეშე" msgid "Couldn’t load the file, it is probably damaged." msgstr "ფაილის ჩატვირთვა შეუძლებელია. სავარაუდოდ იგი დაზიანებულია." msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "ფაილის ჩატვირთვისას წარმოიშვა შეცდომები. შედეგად, ზოგიერთი მონაცემი შესაძლოა " "იყოს გამოკლებული ან დაზიანებული." msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "ფაილის უკეთ ფორმატირებისას პრობლემა შეიქმნა (თუმცა ფაილი გამართულად იქნა " "შენახული)." #, 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 კოდირებით და პარამეტრიც შესაბამისად " "შეიცვალა." msgid "Error saving file" msgstr "შეცდომა ფაილის შენახვისას" #, c-format msgid "“%s” is not a valid POT file." msgstr "'%s' არ არის ვალიდური POT ფაილი." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "XLIFF ფაილის ჩატვირთვის შეცდომა: %s" #, c-format msgid "unsupported version (%s)" msgstr "მხარდაუჭერელი ვერსია (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML msgid "Broken markup in translation string." msgstr "დაზიანებული მარკირებათარგმანის ხაზში." msgid "(Use default language)" msgstr "(გამოიყენე სისტემის სტანდარტული ენა)" msgid "Language selection" msgstr "ენის არჩევა" msgid "Select your preferred language" msgstr "აირჩიეთ თქვენთვის სასურველი ენა" msgid "You must restart Poedit for this change to take effect." msgstr "თქვენ უნდა გადატვირთოთ Poedit, რათა ეს ცვლილება ძალაში შევიდეს." msgid "Add Account" msgstr "ანგარიშის დამატება" msgid "Add account" msgstr "ანგარიშის დამატება" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "შეიტყვეთ მეტი %s-ის შესახებ" msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "დააკავშირეთ Poedit ღრუბლოვან ლოკალიზაციის მხარდაჭერილ პლატფორმებთან, მათზე " "არსებული თარგმანების შეუფერხებლად სინქრონიზაციისთვის." msgid "How does cloud sync work?" msgstr "როგორ მუშაობს ღრუბლოვანი სინქრონიზაცია?" msgid "Account" msgstr "ანგარიში" msgid "(not signed in)" msgstr "( არ არის ავტორიზებული)" msgid "File" msgstr "ფაილი" msgid "Open cloud translation" msgstr "ღრუბლოვანი თარგმანის გახსნა" msgid "Manage accounts" msgstr "ანგარიშების მართვა" msgid "Project:" msgstr "პროექტი:" msgid "Language:" msgstr "ენა:" msgid "Sign in to Cloud Account" msgstr "გაიარეთ ავტორიზაცია ღრუბლოვან ანგარიშში" msgid "Sign in to cloud account" msgstr "გაიარეთ ავტორიზაცია ღრუბლოვან ანგარიშში" msgid "No translation projects listed in your account." msgstr "თქვენს ანგარიშში თარგმანის პროექტები არ არის." msgid "Downloading latest translations…" msgstr "მიმდინარეობს უახლესი თარგმანების ჩამოტვირთვა…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #, c-format msgid "Sign in to %s" msgstr "შედით %s-ში" msgid "Syncing" msgstr "სინქრონიზაცია" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s…" msgstr "მიმდინარეობს თარგმანების ატვირთვა %s-ზე…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s failed." msgstr "%s-ზე თარგმანების ატვირთვა ვერ მოხერხდა." msgid "Syncing error" msgstr "სინქრონიზაციის შეცდომა" msgid "Add" msgstr "დამატება" msgid "Unknown Crowdin error." msgstr "Crowdin-ის უცნობი შეცდომა." msgid "Not authorized, please sign in again." msgstr "არ ხართ ავტორიზებული. გთხოვთ, ხელახლა გაიაროთ ავტორიზაცია." msgid "Downloading translations is disabled in this project." msgstr "ამ პროექტში თარგმანების ჩამოტვირთვა გამორთულია." msgid "Sign In" msgstr "შესვლა" msgid "Sign in" msgstr "შესვლა" msgid "Sign Out" msgstr "გამოსვლა" msgid "Sign out" msgstr "გამოსვლა" msgid "Learn more about Crowdin" msgstr "შეიტყვეთ მეტი Crowdin-ის შესახებ" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" "Crowdin არის ონლაინ პლატფორმა ლოკალიზაციის მართვისა და ერთობლივი " "თარგმანისთვის." msgid "Waiting for authentication…" msgstr "აუთენთიფიკაციის ლოდინი…" msgid "Updating user information…" msgstr "მიმდინარეობს მომხმარებლის ინფორმაციის განახლება…" msgid "Sign in to Crowdin" msgstr "შედით Crowdin-ში" msgid "Syncing with Crowdin failed." msgstr "Crowdin-თან სინქრონიზაცია ვერ მოხერხდა." msgid "Crowdin error" msgstr "Crowdin-ის შეცდომა" msgid "Uploading translations…" msgstr "მიმდინარეობს თარგმანების ატვირთვა…" msgid "&Copy" msgstr "&კოპირება" msgid "Learn more" msgstr "დამატებითი ინფორმაცია" msgid "&Help" msgstr "&დახმარება" msgid "MO files can’t be directly edited in Poedit." msgstr "MO ფაილების რედაქტირება შეუძლებელია Poedit-ში." msgid "Error opening file" msgstr "შეცდომა ფაილის გახსნისას" 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 ფაილიც განახლდება." msgid "don’t delete temporary files (for debugging)" msgstr "არ მოხდეს დროებითი ფაილების წაშლა (გამართვისთვის)" msgid "handle a poedit:// URI" msgstr "poedit:// URI-ების გახსნა" msgid "go to item at given line number" msgstr "მითითებული ხაზის ნომრით ელემენტზე გადასვლა" msgid "Failed to communicate with Poedit process." msgstr "ვერ მოხერხდა Poedit-ის პროცესთან დაკავშირება." #, c-format msgid "Unhandled exception occurred: %s" msgstr "წარმოიშვა მოულოდნელი გამონაკლისი: %s" msgid "Select translation template" msgstr "აირჩიეთ თარგმანის შაბლონი" msgid "Select translation file" msgstr "აირჩიეთ თარგმანის ფაილი" msgid "Poedit is an easy to use translation editor." msgstr "Poedit არის მარტივი გამოსაყენებელი თარგმანის რედაქტორი." msgid "You can’t drop more than one file on Poedit window." msgstr "თქვენ არ შეგიძლიათ ერთზე მეტი ფაილის ჩაგდება Poedit-ის ფანჯარაში." #, c-format msgid "File “%s” is not a translation file." msgstr "ფაილი “%s” არ არის თარგმნის ფაილი." #, c-format msgid "File “%s” doesn’t exist." msgstr "ფაილი \"%s\" არ არსებობს." 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". #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "" "მართლწერის შემოწმება გამორთულია, რადგან %s-ისთვის ლექსიკონი არ არის " "დაყენებული." msgid "Install" msgstr "დაყენება" #, c-format msgid "The file “%s” has been changed by another application." msgstr "ფაილი “%s” შეიცვალა სხვა აპლიკაციის მიერ." msgid "Reload file" msgstr "ფაილის თავიდან ჩატვირთვა" msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "გსურთ ფაილის ხელახლა ჩატვირთვა დისკიდან? თუ ხელახლა ჩატვირთავთ, Poedit-ში " "თქვენს მიერ განხორციელებული ცვლილებები დაიკარგება." msgid "Ignore" msgstr "იგნორირება" msgid "Reload File" msgstr "ფაილის ხელახლა ჩატვირთვა" msgid "The file has been modified. Do you want to save changes?" msgstr "ფაილი შეიცვალა. გსურთ ცვლილებების შენახვა?" msgid "Save changes" msgstr "ცვლილებების შენახვა" msgid "Your changes will be lost if you don’t save them." msgstr "თქვენი ცვლილებები დაიკარგება, თუ მათ არ შეინახავთ." msgid "Save" msgstr "შენახვა" msgid "Do&n’t save" msgstr "&არ შეინახო" msgid "Don’t Save" msgstr "არ შეინახო" msgid "The changes made by the other application will be lost if you save." msgstr "" "თუ შეინახავთ, სხვა აპლიკაციის მხრიდან განხორციელებული ცვლილებები დაიკარგება." msgid "Cancel" msgstr "გაუქმება" msgid "Save Anyway" msgstr "შეინახე მაინც" msgid "Save anyway" msgstr "შეინახე მაინც" msgid "Save as…" msgstr "შენახვა როგორც…" msgid "Compile to…" msgstr "კომპილაცია ფაილში…" msgid "Compiled Translation Files" msgstr "თარგმანის კომპილირებული ფაილები" msgid "Export to HTML…" msgstr "" msgid "HTML Files" msgstr "HTML ფაილები" #, c-format msgid "In: %s" msgstr "%s -ში" msgid "Source code not available." msgstr "წყაროს კოდი მიუწვდომელია." msgid "Updating failed" msgstr "განახლება ვერ მოხერხდა" 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 "" "წყაროს კოდიდან თარგმანების განახლება ვერ მოხერხდა, რადგან ფაილის თვისებებში " "მითითებულ ადგილას კოდი ვერ მოიძებნა." msgid "Permission denied." msgstr "ნებართვა უარყოფილია." 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. 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. msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "თუ თქვენ შეზღუდეთ წვდომა თქვენს ფაილებზე, შეგიძლიათ წვდომის მიცემა სისტემის " "პარამეტრებში > უსაფრთხოება & კონფიდენციალურობა > კონფიდენციალურობა > ფაილები " "& საქაღალდეები." msgid "Translation entries in the file are probably incorrect." msgstr "სავარაუდოდ, ფაილში თარგმანის ჩანაწერები არასწორია." msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "" "ფაილის განახლება ვერ მოხერხდა. დააჭირეთ ღილაკს 'დეტალები >>' დამატებითი " "ინფორმაციისთვის." msgid "Open translation template" msgstr "ღია თარგმანის შაბლონი" #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "თარგმანთან დაკავშირებით წარმოიშვა %d შეფერხება." msgstr[1] "თარგმანთან დაკავშირებით წარმოიშვა %d შეფერხება." msgid "Validation results" msgstr "ვალიდაციის შედეგები" msgid "" "Entries with errors were marked in red in the list. Details of the error " "will be shown when you select such an entry." msgstr "" "ჩანაწერები, რომელიც შეიცავს შეცდომას, სიაში მონიშნულია წითლად. შეცდომის " "დეტალები გამოჩნდება მაშინ, როდესაც აირჩევთ შეცდომის შემცველ ჩანაწერს." msgid "The file was saved safely." msgstr "ფაილი უსაფრთხოდ იქნა შენახული." msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "ფაილი უსაფრთხოდ იქნა შენახული და დაკომპილირებული MO ფორმატში, მაგრამ ის " "სავარაუდოდ არ იმუშავებს სწორად." msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "ფაილი წარმატებით იქნა შენახული, თუმცა მისი MO ფორმატში კომპილაცია და " "გამოყენება ვერ მოხერხდა." msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "ფაილი დაკომპილირებულია MO ფორმატში, თუმცა შესაძლოა, არ იმუშაოს სწორად." msgid "The file cannot be compiled into the MO format and used." msgstr "ფაილის MO ფორმატში დაკომპილირება და გამოყენება შეუძლებელია." msgid "No problems with the translation found." msgstr "თარგმანში შეცდომები ვერ მოიძებნა." #, 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 ჩანაწერი ჯერ არ არის ნათარგმნი." msgid "The translation is ready for use." msgstr "თარგმანი გამოსაყენებლად მზად არის." #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "Poedit-მა ავტომატურად გაასწორა არასწორი შინაარსი “%s” ფაილში." msgid "" "The file contained duplicate items, which is not allowed in PO files and " "would prevent the file from being used. Poedit fixed the issue, but you " "should review translations of any items marked as needing work and correct " "them if necessary." msgstr "" msgid "Language of the translation isn’t set." msgstr "თარგმანის ენა არ არის დაყენებული." msgid "Set Language" msgstr "ენის არჩევა" msgid "Set language" msgstr "ენის არჩევა" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." msgid "" "Suggestions are not available if the translation language is not set " "correctly. Other features, such as plural forms, may be affected as well." msgstr "" msgid "Language of the translation is the same as source language." msgstr "" msgid "Fix Language" msgstr "ენის გასწორება" msgid "Fix language" msgstr "ენის გასწორება" msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" msgid "Required header Plural-Forms is missing." msgstr "" "ფაილს აკლია აუცილებელი ჰედერი მრავლობითის ფორმებთან (Plural-Forms) " "დაკავშირებით." #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "სინტაქსური შეცდომა Plural-Forms ჰედერის ჩანაწერში (\"%s\")." msgid "Fix the Header" msgstr "ჰედერის გამოსწორება" 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". #, 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.")" msgid "Review" msgstr "გადახედვა" msgid "Would you like to use English for source text?" msgstr "გსურთ გამოიყენოთ ინგლისური ენა საწყისი ტექსტისთვის?" #, 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" msgid "Load English" msgstr "ინგლისურის ჩატვირთვა" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "ნათარგმნია: %d %d-დან (%d %%)" #, c-format msgid "Remaining: %d" msgstr "დარჩენილია: %d" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d შეცდომა" msgstr[1] "%d შეცდომა" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d ჩანაწერი" msgstr[1] "%d ჩანაწერი" msgid " (unsaved)" msgstr " (შეუნახავი)" msgid " (modified)" msgstr " (შეიცვალა)" #, c-format msgid "Failed to update translation memory: %s" msgstr "თარგმანის მეხსიერების განახლების შეცდომა: %s" msgid "Remove same-as-source translations" msgstr "" msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" msgid "Keep" msgstr "შენარჩუნება" msgid "Remove" msgstr "" msgid "Purge deleted translations" msgstr "წაშლილი თარგმანებისგან გაწმენდა" msgid "Do you want to remove all translations that are no longer used?" msgstr "გსურთ ყველა იმ თარგმანის წაშლა, რომლებიც აღარ გამოიყენება?" 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 "" "თუ გაწმენდას გააგრძელებთ, სამუდამოდ წაიშლება ყველა ის თარგმანი, რომლებიც " "აღარ გამოიყენება. მომავალში მათი ხელახლა თარგმნა მოგიწევთ, თუ კატალოგს კვლავ " "დაემატება." msgid "Purge" msgstr "გაწმენდა" msgid "Copy from source text" msgstr "საწყისი ტექსტიდან კოპირება" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "თარგმანის გაწმენდა" msgid "Clear Translation" msgstr "თარგმანის გაწმენდა" msgid "Edit comment" msgstr "შენიშვნის დამუშავება" msgid "Edit Comment" msgstr "შენიშვნის რედაქტირება" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "კოდი ჩანს" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "კოდი ჩანს" msgid "Hide Sidebar" msgstr "გვერდითა ზოლის დამალვა" msgid "Show Sidebar" msgstr "გვერდითა ზოლის ჩვენება" msgid "Hide Status Bar" msgstr "მდგომარეობის ზოლის დამალვა" msgid "Show Status Bar" msgstr "მდგომარეობის ზოლის ჩვენება" msgid "String length in characters: translation | source" msgstr "" msgid "String length in characters" msgstr "სტრიქონში სიმბოლოების რაოდენობა" msgid "Source text" msgstr "წყაროს ტექსტი" msgid "Singular" msgstr "მხოლობითში" msgid "Plural" msgstr "მრავლობითი" msgid "Translation" msgstr "თარგმანი" msgid "Pre-translated" msgstr "წინასწარი თარგმანი" 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. msgid "Needs work" msgstr "საჭიროებს დამუშავებას" msgid "" "POT files are only templates and don’t contain any translations themselves.\n" "To make a translation, create a new PO file based on the template." msgstr "" msgid "Create new translation" msgstr "ახალი თარგმანის შექმნა" msgid "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 msgid "Source text ID" msgstr "წყაროს ტექსტის ID" msgid "Everything" msgstr "ყველაფერი" #, c-format msgid "Form %i" msgstr "%i-დან" #, c-format msgid "Form %i (unused)" msgstr "ფორმა %i (არ გამოიყენება)" msgid "Zero" msgstr "ნული" msgid "One" msgstr "ერთი" msgid "Two" msgstr "ორი" msgid "Other" msgstr "სხვა" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, c-format msgid "String context: %s" msgstr "სტრიქონის კონტექსტი: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #, c-format msgid "String identifier: %s" msgstr "სტრიქონის იდენტიფიკატორი: %s" #, c-format msgid "%s Format" msgstr "ფორმატი: %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "ფორმატი: %s" #, c-format msgid "Translation — %s" msgstr "თარგმანი - %s" msgid "ID" msgstr "ID" #, c-format msgid "Source text — %s" msgstr "წყაროს ტექსტი - %s" msgid "unknown language" msgstr "უცნობი ენა" #, c-format msgid "Network error: %s (%d)" msgstr "" msgid "Unknown error" msgstr "უცნობი შეცდომა" #, c-format msgid "Failed command: %s" msgstr "ვერ შესრულებული ბრძანება: %s" msgid "Failed to merge gettext catalogs." msgstr "'gettext' კატალოგების შერწყმა ჩავარდა." msgid "Open in Editor" msgstr "რედაქტორში გახსნა" msgid "Open in editor" msgstr "რედაქტორში გახსნა" msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" msgid "No usage information" msgstr "გამოყენების მონაცემები არაა" #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "კოდში ჩანს %d-ხელ" msgstr[1] "კოდში ჩანს %d-ჯერ" msgid "Source code not found" msgstr "წყაროს კოდი ნაპოვნი არაა" 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 "" msgid "File cannot be opened" msgstr "ფაილის გახსნა შეუძლებელია" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "" msgid "Find" msgstr "ძებნა" msgid "Replace" msgstr "ჩანაცვლება" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "პარამეტრები" msgid "Ignore case" msgstr "რეგისტრის იგნორი" msgid "Wrap around" msgstr "სიტყვების გადატანა" msgid "Whole words only" msgstr "მხოლოდ მთლიანი სიტყვები" msgid "Find in source texts" msgstr "წყაროს ტექსტში ძებნა" msgid "Find in translations" msgstr "თარგმანში ძებნა" msgid "Find in comments" msgstr "შენიშვნებში ძიება" msgid "Close" msgstr "დახურვა" msgid "Replace &All" msgstr "ყველას &ჩანაცვლება" msgid "Replace &all" msgstr "ყველას &ჩანაცვლება" msgid "&Replace" msgstr "&ჩანაცვლება" msgid "< &Previous" msgstr "< &წინა" msgid "&Next >" msgstr "&შემდეგი >" msgid "String to find" msgstr "საძიებელი ტექსტი" msgid "Replacement string" msgstr "ჩასანაცვლებელი სტრიქონი" #, c-format msgid "Cannot execute program: %s" msgstr "%s პროგრამის გაშვება ვერ ხერხდება" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "ენის სახელი ან კოდი" msgid "Translation Language" msgstr "თარგმანის ენა" msgid "Language of the translation:" msgstr "თარგმანის ენა:" msgid "All strings" msgstr "ახალი სტრიქონები" msgid "Couldn’t download Localazy project details." msgstr "Localazy-ის პროექტის დეტალების გადმოწერის შეცდომა." msgid "There was an error when uploading translations to Localazy." msgstr "შეცდომა თარგმანების Localazy-ზე ატვირთვისას." msgid "Projects" msgstr "პროექტები" msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Localazy ავტომატიზებული ლოკალიზაციის პლატფორმაა, რომელიც ყველას აძლევს " "საშუალებას, თავისი პროდუქტი და შემცველობა სხვადასხვა ენაზე ადვილად თარგმნოს." msgid "Add Project" msgstr "პროექტის დამატება" msgid "Add project" msgstr "პროექტის დამატება" msgid "Poedit - Catalogs manager" msgstr "Poedit - კატალოგების მენეჯერი" msgid "Edit…" msgstr "ჩასწორება…" msgid "Create new translations project" msgstr "შექმენი ახალი სათარგმი პროექტი" msgid "Delete the project" msgstr "პროექტის წაშლა" msgid "Edit the project" msgstr "პროექტის დამუშავება" msgid "Update all" msgstr "ყველას განახლება" msgid "Update all catalogs in the project" msgstr "განაახლე ყველა კატალოგი პროექტში" msgid "Total" msgstr "სულ" msgid "Untrans" msgstr "უთარგმნ" msgctxt "column/row header" msgid "Needs Work" msgstr "საჭიროებს დამუშავებას" msgid "Errors" msgstr "შეცდომები" msgid "Last modified" msgstr "ბოლო ცვლილება" msgid "Select directory" msgstr "უჯრის ამორჩევა" msgid "Directories:" msgstr "უჯრები:" msgid "" msgstr "<უსახელო>" #, c-format msgid "Do you want to delete project “%s”?" msgstr "გნებავთ პროექტის \"%s\" წაშლა”?" msgid "Delete project" msgstr "პროექტის წაშლა" msgid "Deleting the project will not delete any translation files." msgstr "" msgid "Confirmation" msgstr "დასტური" msgid "Update all catalogs in this project?" msgstr "" msgid "Performs update from source code on all files in the project." msgstr "" msgid "Check for Updates…" msgstr "განახლებების შემოწმება…" msgid "Catalogs Manager" msgstr "კატალოგების მმართველი" msgid "&Preferences…" msgstr "&მორგება…" msgid "&Edit" msgstr "&რედაქტირება" msgid "Undo" msgstr "დაბრუნება" msgid "Redo" msgstr "აღდგენა" msgid "Paste and Match Style" msgstr "კოპირებისა და ჩასმის სტილი" msgid "Delete" msgstr "წაშლა" msgid "Spelling and Grammar" msgstr "მართლწერა და გრამატიკა" msgid "Show Spelling and Grammar" msgstr "მართლწერისა და გრამატიკის ჩვენება" msgid "Check Document Now" msgstr "შეამოწმე დოკუმენტი ახლა" msgid "Check Spelling While Typing" msgstr "მართლწერის რეალურ დროში შემოწმება" msgid "Check Grammar With Spelling" msgstr "შეამოწმეთ გრამატიკა მართლწერით" msgid "Correct Spelling Automatically" msgstr "მართლწერის ავტომატური შემოწმება" msgid "Substitutions" msgstr "შენაცვლებები" msgid "Show Substitutions" msgstr "შენაცვლებების ჩვენება" msgid "Smart Copy/Paste" msgstr "ჭკვიანი კოპირება/ჩასმა" msgid "Smart Quotes" msgstr "ჭკვიანი ბრჭყალები" msgid "Smart Dashes" msgstr "ჭკვიანი ტირეები" msgid "Smart Links" msgstr "ჭკვიანი ბმულები" msgid "Text Replacement" msgstr "ტექსტის ჩანაცვლება" msgid "Transformations" msgstr "გარდაქმნები" msgid "Make Upper Case" msgstr "დიდ ასოებში გადაყვანა" msgid "Make Lower Case" msgstr "პატარა ასოებში გადაყვანა" msgid "Capitalize" msgstr "დიდი ასოთი აღნიშვნა" msgid "Speech" msgstr "საუბარი" msgid "Start Speaking" msgstr "ლაპარაკის დაწყება" msgid "Stop Speaking" msgstr "ლაპარაკის დასრულება" msgid "&View" msgstr "&ხედი" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Show Toolbar" msgstr "პანელის ჩვენება" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Customize Toolbar…" msgstr "ხელსაწყოთა ზოლის მორგება…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Enter Full Screen" msgstr "სრული ეკრანი" msgid "Window" msgstr "ფანჯარა" msgid "Minimize" msgstr "ჩაკეცვა" msgid "Zoom" msgstr "დაახლოება" msgid "Welcome to Poedit" msgstr "მოგესალმებით Poedit-ში" msgid "Bring All to Front" msgstr "ყველას წინ გამოტანა" msgid "Information about the translator" msgstr "ინფორმაცია მთარგმნელის შესახებ" msgid "Name:" msgstr "სახელი:" msgid "Your Name" msgstr "თქვენი სახელი" msgid "Email:" msgstr "ელ-ფოსტა:" msgid "you@example.com" msgstr "you@example.com" msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" msgid "Editing" msgstr "რედაქტირება" msgid "Automatically compile MO file when saving" msgstr "" msgid "Show summary after updating files" msgstr "ფაილების განახლების შემდეგ შეჯამების ჩვენება" msgid "Check spelling" msgstr "მართლწერის შემოწმება" msgid "Always change focus to text input field" msgstr "ყოველთვის გააქტიურე ტექსტის ჩასაწერი ველი" msgid "" "Never let the list of strings take focus. If enabled, you must use Ctrl-" "arrows for keyboard navigation but you can also type text immediately, " "without having to press Tab to change focus." msgstr "" "არასოდეს გააქტიურდეს სათარგმნი ტექსტების სარკმელი. თუ ამ ფუნქციას ჩართავთ, " "Ctrl+ისრების საშუალებით შეგეძლებათ ტექსტებს შორის ნავიგაცია, მაგრამ ტექსტის " "შეყვანა პირდაპირ იქნება შესაძლებელი, შესაბამისად ტექსტის ჩასაწერად Tab " "ღილაკზე ხელის დაჭერა აღარ მოგიწევთ." msgid "Appearance" msgstr "გარეგნობა" msgid "Use custom list font:" msgstr "სიის ფონტის ხელით მითითება:" msgid "Use custom text fields font:" msgstr "ხელით მითითებული ტექსტური ველის ფონტი:" msgid "Change UI language" msgstr "ინტერფეისის ენის შეცვლა" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions msgid "(requires Windows 8 or newer)" msgstr "(საჭიროებს Windows 8 ან უფრო ახალს)" msgid "General" msgstr "საერთო" msgid "Use translation memory" msgstr "თარგმანის მეხსიერების გამოყენება" msgid "Manage…" msgstr "მართვა…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "წყაროს კოდიდან განახლებისას" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "მსგავსი დამთხვევები ამავე ფაილში" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "პრე-თარგმანი TM-დან" 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 "" msgid "Stored translations:" msgstr "დამახსოვრებული თარგმანები:" msgid "Database size on disk:" msgstr "ბაზის ზომა დისკზე:" msgid "Import Translation Files…" msgstr "თარგმანის ფაილების შემოტანა…" msgid "Import translation files…" msgstr "თარგმანის ფაილების შემოტანა…" msgid "Import From TMX…" msgstr "TMX-დან შემოტანა…" msgid "Import from TMX…" msgstr "TMX-დან შემოტანა…" msgid "Export To TMX…" msgstr "TMX-ში გატანა…" msgid "Export to TMX…" msgstr "TMX-ში გატანა…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). msgid "Reset" msgstr "გადატვირთვა" msgid "Select translation files to import" msgstr "აირჩიეთ შემოსატანი სათარგმნი ფაილები" msgid "Translation Memory" msgstr "თარგმანის მეხსიერება" msgid "Importing translations…" msgstr "თარგმანების შემოტანა…" #, c-format msgid "Error loading translation file “%s”." msgstr "" msgid "Finalizing…" msgstr "დასრულება…" msgid "Select TMX files to import" msgstr "აირჩიეთ შემოსატანი TMX ფაილები" msgid "TMX Files" msgstr "TMX ფაილები" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "" msgid "Import error" msgstr "შემოტანის შეცდომა" msgid "Export as…" msgstr "გატანა როგორც…" msgid "Exporting translations…" msgstr "თარგმანების გატანა…" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "" msgid "Export error" msgstr "გატანის შეცდომა" msgid "Reset translation memory" msgstr "თარგმანის მეხსიერების ჩამოყრა" msgid "Are you sure you want to reset the translation memory?" msgstr "" 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. msgid "TM" msgstr "TM" msgid "" "Source code extractors are used to find translatable strings in the source " "code files and extract them so that they can be translated." msgstr "" msgid "Custom Extractors:" msgstr "მორგებული ექსტრაქტორები:" msgid "Custom extractors:" msgstr "მორგებული ექსტრაქტორები:" msgid "GNU gettext" msgstr "GNU gettext" msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" msgid "Delete extractor" msgstr "ექსტრაქტორის წაშლა" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "" msgid "Extractors" msgstr "ექსტრაქტორები" msgid "Accounts" msgstr "ანგარიშები" msgid "Automatically check for updates" msgstr "განახლების ავტომატური შემოწმება" msgid "Include beta versions" msgstr "ბეტა ვერსიების ჩათვლით" msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" msgid "Updates" msgstr "განახლებები" msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" msgid "Line endings:" msgstr "სტრიქონის დასრულების სიმბოლო:" msgid "Unix (recommended)" msgstr "Unix (რეკომენდებულია)" msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "სიტყვების გადატანისას მაქსიმალური სიგრძე:" msgid "Preserve formatting of existing files" msgstr "არსებული ფაილების ფორმატირების შენარჩუნება" msgid "Advanced" msgstr "დამატებითი" msgid "Settings" msgstr "" msgid "Preparing strings…" msgstr "სტრიქონების მომზადება…" msgid "Pre-translating from translation memory…" msgstr "წინასწარი თარგმანი თარგმანის მეხსიერებიდან…" #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "პრე-ნათარგმნია %u სტრიქონი" msgstr[1] "პრე-ნათარგმნია %u სტრიქონი" msgid "Pre-translating…" msgstr "წინასწარი თარგმანი…" 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. msgid "Pre-translate" msgstr "წინასწარი თარგმანი" msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "წინასწარ თარგმანს საწყისი ტექსტი სჭირდება. ის არ მუშაობს, თუ გამოყენებულია " "მხოლოდ ID-ები, ტექსტის გარეშე." msgid "Cannot pre-translate from unknown language." msgstr "უცნობი ენიდან თარგმნა შეუძლებელია." msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" msgid "Only fill in exact matches" msgstr "მხოლოდ ზუსტი მნიშვნელობებით შევსება" msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "ნაგულისხმევად ასევე არასწორ პასუხებსაც გაჩვენებთ, მაგრამ, მოინიშნებიან, " "როგორც ჯერ კიდევ დასამუშავებელი. ჩართეთ ეს, რათა მხოლოდ ზუსტი დამთხვევები " "ჩაანაცვლოთ." msgid "Don’t mark exact matches as needing work" msgstr "" 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 "" msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "წინასწარ თარგმნილია %d ჩანაწერი." msgstr[1] "წინასწარ თარგმნილია %d ჩანაწერი." msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" msgid "No entries could be pre-translated." msgstr "წინასწარ-თარგმნადი ჩანაწერები აღმოჩენილი არაა." msgid "" "The TM doesn’t contain any strings similar to the content of this file. It " "is only effective for semi-automatic translations after Poedit learns enough " "from files that you translated manually." msgstr "" msgid "Cancelling…" msgstr "გაუქმება…" msgid "Drag Folders or Files Here" msgstr "გადმოათრიეთ საქაღალდეები ან ფაილები" msgid "Drag folders or files here" msgstr "გადმოათრიეთ საქაღალდეები ან ფაილები" msgid "Add Folders…" msgstr "საქაღალდეების დამატება…" msgid "Add folders…" msgstr "საქაღალდეების დამატება…" msgid "Add Files…" msgstr "ფაილების დამატება…" msgid "Add files…" msgstr "ფაილების დამატება…" msgid "Add Wildcard…" msgstr "ვაილდ კარდის ჩამატება…" msgid "Add wildcard…" msgstr "ვაილდ კარდის ჩამატება…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) msgid "Reveal in Finder" msgstr "საქაღალდეში ჩვენება" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" msgid "Show in Explorer" msgstr "ექსპლორერში ჩვენება" msgid "Show in Folder" msgstr "საქაღალდეში ჩვენება" msgid "Paths" msgstr "მდებარეობები" msgid "Excluded paths" msgstr "ამოღებული ბილიკები" msgid "Advanced extraction settings" msgstr "გამოტანის დამატებითი პარამეტრები" msgid "Extract notes for translators from:" msgstr "" msgid "Comments prefixed with:" msgstr "კომენტარები იწყება პრეფიქსით:" msgid "All comments" msgstr "ყველა კომენტარი" msgid "Additional xgettext flags:" msgstr "Xgettext-ს დამატებითი პარამეტრები:" msgid "Additional keywords" msgstr "დამატებითი საკვანძო სიტყვები" msgid "Name of the project the translation is for" msgstr "" msgid "Team name and email address or URL" msgstr "გუნდის სახელი და ელფოსტის მისამართი ან ბმული" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "მაგ: nplurals=2; plural=(n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (რეკომენდებულია)" msgid "Please save the file first. This section cannot be edited until then." msgstr "" msgid "Placeholders correctness" msgstr "ადგილმჭერების სისწორე" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "" #, c-format msgid "Superfluous placeholder “%s” that isn’t in source text." msgstr "" msgid "Plural form translations" msgstr "მრავლობითი ფორმის თარგმანები" msgid "Not all plural forms are translated." msgstr "ყველა მრავლობითი ფორმა გადართარგმნილი არაა." msgid "Inconsistent upper/lower case" msgstr "არამდგრადი რეგისტრი" msgid "The translation should start as a sentence." msgstr "" msgid "The translation should start with a lowercase character." msgstr "" msgid "Inconsistent whitespace" msgstr "შეუთანხმებელი ჰარეები" msgid "The translation doesn’t start with a space." msgstr "" msgid "The translation starts with a space, but the source text doesn’t." msgstr "" msgid "The translation is missing a newline at the end." msgstr "" msgid "The translation ends with a newline, but the source text doesn’t." msgstr "" msgid "The translation is missing a space at the end." msgstr "" msgid "The translation ends with a space, but the source text doesn’t." msgstr "" msgid "Punctuation checks" msgstr "პუნქტუაციის შემოწმება" #, c-format msgid "The translation should end with “%s”." msgstr "" #, c-format msgid "The translation should not end with “%s”." msgstr "" #, c-format msgid "The translation ends with “%s”, but the source text ends with “%s”." msgstr "" msgid "Cloud" msgstr "ღრუბელი" msgid "Clear Menu" msgstr "მენიუს გასუფთავება" msgid "Clear menu" msgstr "მენიუს გასუფთავება" msgid "Comment:" msgstr "შენიშვნები:" msgid "Update" msgstr "განახლება" msgid "&Delete" msgstr "&წაშლა" msgid "Delete the comment" msgstr "კომენტარის წაშლა" msgid "Edit project" msgstr "პროექტის დამუშავება" msgid "Project name:" msgstr "პროექტის სახელი:" msgid "Browse" msgstr "მოძიება" msgid "Add directory to the list" msgstr "უჯრის სიაში დამატება" msgid "OK" msgstr "კარგი" msgid "&File" msgstr "&ფაილი" msgid "&New…" msgstr "&ახალი…" msgid "New from &POT/PO file…" msgstr "ახალი &POT/PO ფაილიდან…" msgid "New From &POT/PO File…" msgstr "ახალი &POT/PO ფაილიდან…" msgid "&Open…" msgstr "&გახსნა…" msgid "Open Recent" msgstr "ბოლოს გახსნილი ფაილების გახსნა" msgid "Open recent" msgstr "ბოლოს გახსნილი ფაილების გახსნა" msgid "Open cloud translation…" msgstr "ღრუბლოვანი თარგმანის გახსნა…" msgid "Open Cloud Translation…" msgstr "ღრუბლოვანი თარგმანის გახსნა…" msgid "&Start window" msgstr "&საწყისი ფანჯარა" msgid "&Start Window" msgstr "&საწყისი ფანჯარა" msgid "Catalogs &manager" msgstr "კატალოგების &მენეჯერი" msgid "Catalogs &Manager" msgstr "კატალოგთა &მმართველი" msgid "&Close" msgstr "&დახურვა" msgid "&Save" msgstr "შ&ენახვა" msgid "Save &as…" msgstr "შენახვა როგორც…" msgid "Save &As…" msgstr "შენახვა როგორც…" msgid "Compile to MO…" msgstr "კომპილაცია MO ფაილში…" msgid "E&xport to HTML…" msgstr "" msgid "Check for updates…" msgstr "განახლებების შემოწმება…" msgid "Settings…" msgstr "მორგება…" msgid "&Preferences" msgstr "&პარამეტრები" msgid "E&xit" msgstr "გა&სვლა" msgid "Quit" msgstr "გასვლა" msgid "Copy from singular" msgstr "მხოლობითიდან დაკოპირება" msgid "Copy From Singular" msgstr "მხოლობითიდან დაკოპირება" msgid "Translation needs &work" msgstr "თარგმანს &დამუშავება სჭირდება" msgid "Translation Needs &Work" msgstr "თარგმანს &დამუშავება სჭირდება" msgid "Edit &comment" msgstr "შე&ნიშვნის დამუშავება" msgid "Edit &Comment" msgstr "შენიშვნის &რედაქტირება" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "რჩევები" msgid "&Find…" msgstr "&ძებნა…" msgid "Replace…" msgstr "ჩანაცვლება…" msgid "Find next" msgstr "მომდევნოს მოძებნა" msgid "Find previous" msgstr "წინანდელის ძიება" msgid "Find and Replace…" msgstr "ძებნა და შეცვლა…" msgid "Find Next" msgstr "მომდევნოს მოძებნა" msgid "Find Previous" msgstr "წინანდელის ძიება" msgid "Show string &ID" msgstr "სტრიქონის &ID-ის ჩვენება" msgid "Show String &ID" msgstr "სტრიქონის &ID-ის ჩვენება" msgid "Show warnings" msgstr "გაფრთხილების ჩვენება" msgid "Show Warnings" msgstr "გაფრთხილების ჩვენება" msgid "Sort by &file order" msgstr "&ფაილის წყობით დალაგება" msgid "Sort by &File Order" msgstr "&ფაილის წყობით დალაგება" msgid "Sort by &source" msgstr "&წყაროთი დალაგება" msgid "Sort by &Source" msgstr "&წყაროთი დალაგება" msgid "Sort by &translation" msgstr "თ&არგმანის მიხედვით დალაგება" msgid "Sort by &Translation" msgstr "თ&არგმანის მიხედვით დალაგება" msgid "&Group by context" msgstr "&კონტექსტის მიხედვით დაჯგუფება" msgid "&Group By Context" msgstr "&კონტექსტის მიხედვით დაჯგუფება" msgid "Entries with errors first" msgstr "სიაში ჯერ შეცდომების ჩვენება" msgid "Entries with Errors First" msgstr "სიაში ჯერ შეცდომების ჩვენება" msgid "&Untranslated entries first" msgstr "&ჯერ უთარგმნელი შენატანები" msgid "&Untranslated Entries First" msgstr "&ჯერ უთარგმნელი შენატანები" msgid "&Show code occurrences" msgstr "&კოდის აღმოჩენების ჩვენება" msgid "&Show Code Occurrences" msgstr "&კოდის აღმოჩენების ჩვენება" msgid "Show sidebar" msgstr "გვერდითა ზოლის ჩვენება" msgid "Show status bar" msgstr "მდგომარეობის ზოლის ჩვენება" msgid "&Translation" msgstr "&თარგმანი" msgid "&Update from source code" msgstr "&საწყისი კოდიდან განახლება" msgid "&Update from Source Code" msgstr "&საწყისი კოდიდან განახლება" msgid "Update from &POT file…" msgstr "&POT ფაილიდან განახლება…" msgid "Update from &POT File…" msgstr "&POT ფაილიდან განახლება…" msgid "Sync with Crowdin" msgstr "Crowdin-თან სინქრონიზაცია" msgid "Pre-&translate…" msgstr "წინასწარი &თარგმანი…" msgid "&Validate translations" msgstr "თარგმანის &ვალიდაცია" msgid "&Validate Translations" msgstr "თარგმანის &ვალიდაცია" msgid "Remove Same-as-Source Translations" msgstr "" msgid "&Purge deleted translations" msgstr "წაშლილი თარგმანების &ამოშლა" msgid "&Purge Deleted Translations" msgstr "&წაშლილ თარგმანთა გაწმენდა" msgid "&Properties…" msgstr "&თვისებები…" msgid "&Go" msgstr "&გადასვლა" msgid "&Done and next" msgstr "&დასრულება და შემდეგი" msgid "&Done and Next" msgstr "&დასრულება და შემდეგი" msgid "Previously edited" msgstr "წარსულში ჩასწორებულზე" msgid "Previously Edited" msgstr "წარსულში ჩასწორებულზე" msgid "&Previous translation" msgstr "&წინა თარგმანი" msgid "&Previous Translation" msgstr "&წინა თარგმანი" msgid "&Next translation" msgstr "&შემდეგი თარგმანი" msgid "&Next Translation" msgstr "&შემდეგი თარგმანი" msgid "P&revious unfinished" msgstr "წ&ინა დაუსრულებელი" msgid "P&revious Unfinished" msgstr "წ&ინა დაუსრულებელი" msgid "Ne&xt unfinished" msgstr "შემ&დეგი დაუსრულებელი" msgid "Ne&xt Unfinished" msgstr "შემ&დეგი დაუსრულებელი" msgid "Previous plural form" msgstr "წინა მრავლობითი ფორმა" msgid "Previous Plural Form" msgstr "წინა მრავლობითი ფორმა" msgid "Next plural form" msgstr "შემდეგი მრავლობითი ფორმა" msgid "Next Plural Form" msgstr "შემდეგი მრავლობითი ფორმა" msgid "&Online help" msgstr "&ონლაინ-სახელმძღვანელო" msgid "&Online Help" msgstr "&ონლაინ-სახელმძღვანელო" msgid "&GNU gettext manual" msgstr "&GNU gettext-ის დახმარების ფაილები" msgid "&GNU gettext Manual" msgstr "&GNU gettext-ის დახმარების ფაილები" msgid "&About Poedit" msgstr "Poedit-ის შ&ესახებ" msgid "&About" msgstr "შ&ესახებ" msgid "Extractor setup" msgstr "ექსტრაქტორის მორგება" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "გაფართოებების სია წერტილ-მძიმეებით გამოყოფილი (მაგ. *.cpp;*.h):" msgid "Invocation:" msgstr "ინვოკაცია:" msgid "Command to extract translations:" msgstr "ბრძანება თარგმანების გამოსაღებად:" 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 "" msgid "An item in keywords list:" msgstr "ელემენტი სიტყვათა სიაში:" msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "ეს ბრძანებათა სტრიქონს მიემაგრება ერთხელ\n" "ყოველ სიტყვაზე. %k იშლება როგორც სიტყვა." msgid "An item in input files list:" msgstr "ელემენტი შესაყვანი ფაილის სიაში:" #, 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 გაიშლება ფაილის სახელად." msgid "Source code charset:" msgstr "პროგრ. წყაროს კოდირება:" #, 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 ჩანაცვლდება კოდირების " "სახელით." msgid "Translation Properties" msgstr "თარგმანის თვისებები" msgid "Project name and version:" msgstr "პროექტის სახელი და ვერსია:" msgid "Language team:" msgstr "მთარგმნელი გუნდი:" msgid "Plural forms:" msgstr "მრავლობითი ფორმები:" msgid "Use default rules for this language" msgstr "ამ ენისთვის ნაგულისხმები წესების გამოყენება" msgid "Use custom expression" msgstr "გამოსახულების ხელით მითითება" msgid "Learn about plural forms" msgstr "დამატებითი ინფორმაცია მრავლობითის ფორმებთან დაკავშირებით" msgid "Charset:" msgstr "კოდირება:" msgid "Advanced Extraction Settings…" msgstr "განშლის დამატებითი პარამეტრები…" msgid "Advanced extraction settings…" msgstr "განშლის დამატებითი პარამეტრები…" msgid "Translation properties" msgstr "თარგმანის თვისებები" msgid "Sources Paths" msgstr "წყაროს მდებარეობები" msgid "Sources paths" msgstr "წყაროს მდებარეობები" msgid "Extract text from source files in the following directories:" msgstr "შემდეგი ფოლდერებში წყარო-ფაილებიდან ტექსტის ამოღება:" msgid "Base path:" msgstr "ძირითადი მდებარეობა:" msgid "Sources Keywords" msgstr "წყაროს საკვანძო სიტყვები" msgid "Sources keywords" msgstr "წყაროს საკვანძო სიტყვები" msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "წყაროს ფაილებში თარგმნადი სტრიქონების ამოსაცნობად ამ საკვანძო სიტყვების\n" " (ფუნქციათა სახელების) გამოყენება:" msgid "Also use default keywords for supported languages" msgstr "" msgid "Learn about gettext keywords" msgstr "შეიტყვეთ მეტი gettext-ის საკვანძო სიტყვების შესახებ" msgid "Update summary" msgstr "შეჯამების განახლება" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" msgid "New strings" msgstr "ახალი შეტყობინებები" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" msgid "Obsolete strings" msgstr "მოძველებული სტრიქონები" msgid "(0 new, 0 obsolete)" msgstr "(0 ახალი, 0 მოძველებული)" msgid "Open" msgstr "" msgid "Open file" msgstr "ფაილის გახსნა" msgid "Save file" msgstr "ფაილის შენახვა" msgid "Validate" msgstr "ვალიდაცია" msgid "Check for errors in the translation" msgstr "თარგმანში შეცდომების შემოწმება" msgid "Update from code" msgstr "კოდიდან განახლება" msgid "Update from Code" msgstr "კოდიდან განახლება" msgid "Update from source code" msgstr "საწყისი კოდიდან განახლება" msgid "Sidebar" msgstr "გვერდითა ზოლი" msgid "Show or hide the sidebar" msgstr "ხელსაწყოთა პანელის ხილვადობის ჩართ/გამორთ" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. msgid "Previous source text" msgstr "წინა წყაროს ტექსტი" msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" msgid "Notes for translators" msgstr "შენიშვნები მთარგმნელებისთვის" msgid "Comment" msgstr "კომენტარი" msgid "Add comment" msgstr "კომენტარის დამატება" msgid "Add Comment" msgstr "კომენტარის დამატება" msgid "Delete From Translation Memory" msgstr "თარგმანის მეხსიერებიდან წაშლა" msgid "Delete from translation memory" msgstr "თარგმანის მეხსიერებიდან წაშლა" msgid "Translation suggestions" msgstr "თარგმანის მინიშნებები" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). msgid "No matches found" msgstr "არაფერი მოიძებნა" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). msgid "No Matches Found" msgstr "არაფერი მოიძებნა" msgid "This string was found in Poedit’s translation memory." msgstr "" msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" msgid "The TMX file is malformed." msgstr "TMX ფაილი დაზიანებულია." msgid "No translations were found in the TMX file." msgstr "" #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "" #, c-format msgid "Translation memory error: %s (%d)." msgstr "თარგმანის მეხსიერების შეცდომა: %s (%d)." msgid "Cannot create temporary directory." msgstr "დროებითი საქაღალდის შექმნა შეუძლებელია." msgid "There are no translations. That’s unusual." msgstr "" msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "Translators typically use PO template files (POTs) prepared for them by the " "developer." msgstr "" msgid "(Learn more about GNU gettext)" msgstr "(შეიტყვეთ მეტი GNU gettext-ის შესახებ)" msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" msgid "Update from POT" msgstr "POT-ფაილიდან განახლება" msgid "Take translatable strings from an existing POT template." msgstr "" msgid "" "You can also extract translatable strings directly from the source code:" msgstr "" msgid "Extract from sources" msgstr "წყაროდან ამოღება" msgid "Configure source code extraction in Properties." msgstr "" #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #, c-format msgid "Version %s" msgstr "ვერსია %s" msgid "Create new" msgstr "ახლის შექმნა" msgid "Create new translation from POT template." msgstr "ახალი თარგმანის შექმნა POT შაბლონიდან." msgid "Browse files" msgstr "ფაილის არჩევა" msgid "Open and edit translation files." msgstr "თარგმანის ფაილების გახსნა და რედაქტირება." msgid "Translate cloud project" msgstr "ღრუბლოვანი პროექტის თარგმნა" msgid "Collaborate with other people online." msgstr "ითანამშრომლეთ სხვა ადამიანებთან ონლაინ." msgid "Recent files" msgstr "უკანასკნელი ფაილების სია" msgid "Sync" msgstr "სინქრონიზაცია" msgid "Synchronize the translation with Crowdin" msgstr "" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #, c-format msgid "About %s" msgstr "%s-ის შესახებ" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #, c-format msgid "%s Preferences" msgstr "%s-ის პარამეტრები" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "სერვისები" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "%s-ის დამალვა" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "სხვების დამალვა" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "ყველას ჩვენება" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "%s-დან გასვლა" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "პარამეტრები…" msgid "Preferences..." msgstr "პარამეტრები..." #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "ახლახანს" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "ხშირი" msgid "&Apply" msgstr "&დადასტურება" msgid "Apply" msgstr "დადასტურება" msgid "&Back" msgstr "&უკან" msgid "Back" msgstr "უკან" msgid "&Cancel" msgstr "&გაუქმება" msgid "&Clear" msgstr "&გასუფთავება" msgid "Clear" msgstr "გასუფთავება" msgid "Copy" msgstr "კოპირება" msgid "Cu&t" msgstr "ამ&ოჭრა" msgid "Cut" msgstr "ამოჭრა" msgid "Edit" msgstr "რედაქტირება" msgid "&Quit" msgstr "&გამოსვლა" msgid "Help" msgstr "დახმარება" msgid "&New" msgstr "&ახალი" msgid "New" msgstr "ახალი" msgid "&No" msgstr "&არა" msgid "No" msgstr "არა" msgid "&OK" msgstr "&დიახ" msgid "Open…" msgstr "გახსნა…" msgid "&Open..." msgstr "&გახსნა..." msgid "Open..." msgstr "გახსნა..." msgid "&Paste" msgstr "ჩ&ასმა" msgid "Paste" msgstr "ჩასმა" msgid "Preferences" msgstr "პარამეტრები" msgid "&Redo" msgstr "&გამეორება" msgid "Refresh" msgstr "განახლება" msgid "&Save as" msgstr "შენახვა &როგორც" msgid "Save as" msgstr "შენახვა როგორც" msgid "Select &All" msgstr "ყველას &მონიშვნა" msgid "Select All" msgstr "ყველას მონიშვნა" msgid "&Undo" msgstr "&გაუქმება" msgid "&Yes" msgstr "&დიახ" msgid "Yes" msgstr "დიახ" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "მაღლა" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "ქვემოთ" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "მარცხნივ" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "მარჯვნივ" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "shift" poedit-3.5/locales/kab.mo0000644000175100001770000015010614664354154012324 00000000000000m(6 6 6&66<7@7JS7g7 88 8)8 08>8E8K8S8Z8a8g8o8~8888888888889 991959 99 F9S9\9e9 l9y9999999:::: :7: N: \: j:w:}::::::;; ;4;S;k;; ; ;;;;; ; ; ;; << $< 0<<< V<c< r<~<<<<<<=#= 9= F=1R=='=== ==7=61>h>)>> >]> ?<3?Dp?$?? ?? ?"@&@ A@L@^@p@@@@@@@#@!A6AEA KAVA hAsAAAAA AAAAB #B1B/LB |BBBBBBB1B1C JCUC)lCC CCCCCC DD%D,DKD\D{DDD;D D'D^!E?E E EE*EF,F"1F5TFFFFF F F F F GGG'G/G6GxVxmxxx!y%y9y >y_yryyyy y"y$yyz z1zAzRzjzyzz<zzz{!{;{Q{g{#{V{{|| 2|=|[|m||||.| |||}H}5Q}m}7} -~37~ak~~~~~~.~ ,Mi!ÁӁ.-6dAuł ;E U_ dpu~ Ń̓Ճ 4= F Q^qɄ ф ݄  $A^d ku }̅ ޅ""6Rp Ԇ * 9CK T_ c p |  ̇؇  3Mj#r #ۈ @ K)P'z' ʉԉ1ى; G'`k# G1Qy(ˋ  ">Yrʌ!!8Hfv  ɍ΍/7@[ lz,Ǝ̎܎"1?#q-#'-3EZu'z ΐ 5 G'Qy;9IX3vȒВ(%%>dkr ͓ דr"y"/?o- ו 50Gx3' /9*N-y*+җ+6gb ʘ՘ ژ 3 D Q \j y  ƙҙ ؙ ,BE!%<Kdw0М14K`fx5$ӝ /8*I"t  ͞CמE0v>ş))%O akǠ ޠ $BTm/WҢ*B(Z-,ȣ  !& $ ?J]p ͥ ¦Dʦ9"a\QP4> 0ʪ&"6HA]'ǫ۫ o z ɬ  3N^ gs ǭڭ  '5K _*k îJ[bho ~ ȯ ٯ   2>$Ty ǰ հ'=Na xDZܱ% )4DIO Ta|β*9Ra*p & Ghxϴ@C ]ix/޵ Ns`f{3ѷ 9*Mx%2;XB׹8Z@ZԻY/ %)м_JZ Aƽ6A?2'ܾd")#̿.6fV'?Y%vY`PMcc0)Z_kE9-5g& * & -8"X{  @%fy+&#rJ ?RZ4bVJ&vq@)=<kz + #5Y(y&kT|jQl"6R/Ro? f'X~D5`9-X2Hw p"WO[!Hszw9d AG)`xI4 qWr%.m<WSn\^cU48H7J2ttBF_#g!t L{`U DzcY3iag>f-~@lmLKek,_B5;(,I'FEM0^*G+o;:_vK PuScg|[bFwP^CY=R%X<p}b$  ?$6s y7zZ Nr"I #qe,y:08)i1YC viy5(]+) 'Tjr-nJ3&.b d;ENZx?6hLoj1!>a\=#Sh~2}&*{NZ4UmC=%>Q$.OanfA@MGV:J&/3/hA @9 8]}0xlDpd1OQu7<V(qEePk+{[KVs* TBM]u\v| (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd AccountAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add accountAdd 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 languagesAlt+Always 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 errorCtrl+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 no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownDownloading 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:EnterEnter 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 loading translation file “%s”.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export errorExport 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerForm %iForm %i (unused)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport from TMX…Import translation files…Importing translation memory from “%s” failed.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 CrowdinLeftLine %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 translations were found in the TMX file.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKObsolete stringsOneOnly 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 translation templateOpen...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 translationsQuitQuit %sRecentRecent 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 FinderReviewRightSaveSave &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 languageServicesSet LanguageSet languageSettings…Shift+Show AllShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow summary after updating filesShow 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.These strings are no longer in the source code. Poedit will remove them from the file now.These strings were found in the sources but were not in the file. Poedit will add them to the file now.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.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.Translated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation entries in the file are probably incorrect.Translation 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.UntransUpUpdateUpdate 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 the file failed. Click on 'Details >>' for details.Updating 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown 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: 2024-08-30 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(0 amaynut, 0 yezri)(Issin ugar ɣef GNU gettext)(Amaynut : %i, yezri : %i)(Seqdec tutlayt n lexṣas)(yesra Windows 8 neɣ amaynut)< &Ɣer deffirƔef %sAmiḍanImiḍanenRnuRnu amiḍanRnu awennitRnu ifuyla…Rnu ikaramen…Rnu asenfaṛRnu asekkil awsiyan…Rnu amiḍanRnu 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 yettwadehlenAlt+Yalas 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 CrowdinCtrl+&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ḍenAkessarAsider 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:KcemƐ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 usali n ufaylu n tsuqilt “%s”.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…Tuccḍa deg usifeḍ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:Tussfa n yizraren ara yettwasuqqelen…Asbeddi n umassafImassafenTaladna terreẓ: %sTuccḍ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.Akemmel…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)Yettuɣal-dGNU gettextAmatuIfuyla HTMLTalleltFfer %sFfer wiyaḍFfer 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…Tuccḍa deg ukterKter si TMX…Kter ifuyla n tsuqilt…Taktert n tkatut n tsuqilt si "%s" ur yeddi ara.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ǧǧTutlayt 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 CrowdinAzelmaḍIzirig %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 tisuqilin yettwafen deg ufaylu TMX.Ulac talɣut n useqdecTalɣiwin n usget ur ttwasuqqelent ara merra.Ur yurig ara, ttxil-k qqen tikkelt-nniḍen.Tamawt i yemsuqqlenIhIzraren yezrinYiwenSermed 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 taneɣruft n tsuqiltLdi...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ɣFfeɣ si %sMelmi kanIfuyla n melmi kanErr-dSismeḍAles asali n ufayluAles asali n ufayluYeggra-d: %dSemselsiSemselsi &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 unaramCeggerAyfusSeklesSekles 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 tamenyiftImeẓluyenSbadu tutlaytSbadu tutlaytIɣewwaren…Shift+Sken akkSken 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 agzul ticki ttwaleqqemen yifuylaSken 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.Izraren-agi dayen ur llin ara di tengalt taɣbalut. Poedit ad ten-yekkes seg ufaylu tura.Izraren-agi ttwafen deg uɣbalu maca ulac-iten deg ufaylu. Poedit ad ten-yernu ɣer ufaylu tura.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ɣrudAselketInekcam i izzemren ad ttwasuqqlen ur ttwarnan ara s ufus ar unagraw Gettext, acu kan ttwakksen-d s wudem awurman seg tengalt taɣbalut. Akka, ad qqimen ttwaleqqemen, d iseddiyen. Imsuqqelen sseqdacen yifuyla s tneɣruft PO (POT) i d-heggan ineflayen.Tasuqilt n: %d seg %d (%d %%)TasuqiltTutlayt n tsuqiltTakatut n tsuqiltTasuqilt tesra amahilIraten n tsuqiltInekcumen n tsuqilt deg ufaylu zemren ad ilin d irmeɣta.Azadur 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 araAsawenLeqqemLeqqem 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 ufaylu ur yeddi ara. Ssit ɣef 'Talqayt >>' i telqayt.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ɣuraltYesra amahilctrlur 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:// URIsuqqel s uzwer si TMshifttutlayt tarussintlqem-gi ur yettwadel ara (%s)kečč·kem@amedya.com“%s” mačči d afaylu POT ameɣtu.poedit-3.5/locales/zh_TW.po0000644000175100001770000017113214664354065012630 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "隱藏這項通知訊息" msgid "Don’t Show Again" msgstr "不要再顯示" msgid "Don’t show again" msgstr "不要再顯示" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(新增:%i,棄用:%i)" msgid "Collecting source files…" msgstr "正在收集來源檔..." msgid "Extracting translatable strings…" msgstr "正在擷取可翻譯字串…" msgid "Failed to load file with extracted translations." msgstr "無法載入包含擷取翻譯的檔案。" msgid "Merging differences…" msgstr "正在合併差異…" msgid "Updating translations" msgstr "正在更新翻譯" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "無法開啟檔案「%s」。" msgid "Invalid file" msgstr "檔案無效" #, c-format msgid "Malformed header: “%s”" msgstr "格式錯誤的檔案標頭:%s" msgid "PO Translation Files" msgstr "PO 翻譯檔" msgid "POT Translation Templates" msgstr "POT 譯文模本" msgid "XLIFF Translation Files" msgstr "XLIFF 翻譯檔" msgid "JSON Translation Files" msgstr "JSON 翻譯檔" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "Flutter 翻譯檔" msgid "All Translation Files" msgstr "全部譯文檔案" msgid "The file is in a format not recognized by Poedit." msgstr "Poedit 不認識這個檔案格式。" msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "本 JSON 檔案不是翻譯檔案,故無法在 Poedit 編輯。" #, c-format msgid "Reading file content failed with the following error: %s" msgstr "讀取檔案內容時發生錯誤,錯誤為:%s" #, c-format msgid "" "File “%s” is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "檔案 %s 因設定為唯讀而無法儲存。\n" "請以不同檔名儲存檔案。" #, c-format msgid "Couldn’t save file %s." msgstr "無法儲存檔案 %s。" msgid "Screenshots:" msgstr "螢幕截圖:" #, c-format msgid "%i line of file “%s” was not loaded correctly." msgid_plural "%i lines of file “%s” were not loaded correctly." msgstr[0] "總計 %i 列 (檔案為 %s) 沒有正確載入。" #, c-format msgid "Line %d of file “%s” is corrupted (not valid %s data)." msgstr "第 %d 列 (檔案為 %s) 已毀損 (無效的 %s 資料)。" msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "損毀的 PO 檔:單數形式的 msgstr 跟 msgid_plural 一同使用" msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "損毀的 PO 檔:沒有 msgid_plural,卻使用複數形式的 msgstr" msgid "Couldn’t load the file, it is probably damaged." msgstr "無法載入檔案,檔案可能損壞。" msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "載入檔案時發生錯誤,因此可能導致部分資料遺失或是損毀。" msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "試圖讓檔案的排版格式變得整齊時遭遇問題 (但仍舊順利儲存)。" #, 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,亦已修改對應設定。" msgid "Error saving file" msgstr "儲存檔案時發生錯誤" #, c-format msgid "“%s” is not a valid POT file." msgstr "「%s」是無效的 POT 檔。" #, c-format msgid "Error while loading XLIFF file: %s" msgstr "載入 XLIFF 檔案時發生錯誤:%s" #, c-format msgid "unsupported version (%s)" msgstr "不支援的版本 (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML msgid "Broken markup in translation string." msgstr "翻譯字串中有損壞的標記。" msgid "(Use default language)" msgstr "(使用預設語言)" msgid "Language selection" msgstr "語言選擇" msgid "Select your preferred language" msgstr "選取您偏好的語言" msgid "You must restart Poedit for this change to take effect." msgstr "您得要重新啟動 Poedit 這項更動才會生效。" msgid "Add Account" msgstr "新增帳戶" msgid "Add account" msgstr "新增帳戶" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "深入瞭解 %s" msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "將 Poedit 和支援的雲端在地化平台連線,無縫同步代管平台上的翻譯。" msgid "How does cloud sync work?" msgstr "雲端同步如何運作?" msgid "Account" msgstr "帳戶" msgid "(not signed in)" msgstr "(尚未登入)" msgid "File" msgstr "檔案" msgid "Open cloud translation" msgstr "開啟雲端翻譯" msgid "Manage accounts" msgstr "管理帳戶" msgid "Project:" msgstr "專案:" msgid "Language:" msgstr "語言:" msgid "Sign in to Cloud Account" msgstr "登入至雲端帳戶" msgid "Sign in to cloud account" msgstr "登入至雲端帳戶" msgid "No translation projects listed in your account." msgstr "您的帳戶中尚無翻譯專案。" msgid "Downloading latest translations…" msgstr "正在下載最新的翻譯⋯" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #, c-format msgid "Sign in to %s" msgstr "登入至 %s" msgid "Syncing" msgstr "同步中" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s…" msgstr "正在上傳翻譯至 %s……" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s failed." msgstr "無法上傳翻譯至 %s。" msgid "Syncing error" msgstr "同步發生錯誤" msgid "Add" msgstr "加入" msgid "Unknown Crowdin error." msgstr "未知的 Crowdin 錯誤。" msgid "Not authorized, please sign in again." msgstr "尚未獲得授權,請重新登入。" msgid "Downloading translations is disabled in this project." msgstr "此專案已停用翻譯下載。" msgid "Sign In" msgstr "登入" msgid "Sign in" msgstr "登入" msgid "Sign Out" msgstr "登出" msgid "Sign out" msgstr "登出" msgid "Learn more about Crowdin" msgstr "深入瞭解 Crowdin" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "Crowdin 是線上在地化管理平臺暨翻譯協作工具。" msgid "Waiting for authentication…" msgstr "正在等候身分核對⋯" msgid "Updating user information…" msgstr "正在更新使用者資訊⋯" msgid "Sign in to Crowdin" msgstr "登入 Crowdin" msgid "Syncing with Crowdin failed." msgstr "與 Crowdin 同步失敗。" msgid "Crowdin error" msgstr "Crowdin 錯誤" msgid "Uploading translations…" msgstr "正在上傳翻譯⋯" msgid "&Copy" msgstr "複製(&C)" msgid "Learn more" msgstr "深入瞭解" msgid "&Help" msgstr "說明(&H)" msgid "MO files can’t be directly edited in Poedit." msgstr "無法在 Poedit 中直接編輯 MO 檔。" msgid "Error opening file" msgstr "開啟檔案發生錯誤" msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "請改開啟並編輯對應的 PO 檔。當您儲存時,MO 檔會同時更新。" msgid "don’t delete temporary files (for debugging)" msgstr "不要刪除暫存檔 (用於偵錯)" msgid "handle a poedit:// URI" msgstr "處理 poedit:// URI" msgid "go to item at given line number" msgstr "前往指定列號的項目" msgid "Failed to communicate with Poedit process." msgstr "無法與 Poedit 程序溝通。" #, c-format msgid "Unhandled exception occurred: %s" msgstr "遭遇未處理的例外:%s" msgid "Select translation template" msgstr "選擇翻譯模板" msgid "Select translation file" msgstr "選擇翻譯檔案" msgid "Poedit is an easy to use translation editor." msgstr "Poedit 是個易用的翻譯編輯器。" msgid "You can’t drop more than one file on Poedit window." msgstr "請不要拖放超過一個檔案至 Poedit 視窗中。" #, c-format msgid "File “%s” is not a translation file." msgstr "「%s」檔案不是翻譯檔。" #, c-format msgid "File “%s” doesn’t exist." msgstr "檔案 %s 不存在。" 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". #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "由於尚未安裝 %s 字典,因此拼字檢查已停用。" msgid "Install" msgstr "安裝" #, c-format msgid "The file “%s” has been changed by another application." msgstr "「%s」檔案已被其他應用程式修改。" msgid "Reload file" msgstr "重新載入檔案" msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "是否從硬碟重新載入檔案?這麼做會導致您在 Poedit 的未儲存編輯消失不見。" msgid "Ignore" msgstr "忽略" msgid "Reload File" msgstr "重新載入檔案" msgid "The file has been modified. Do you want to save changes?" msgstr "檔案已經修改。是否儲存變更?" msgid "Save changes" msgstr "儲存變更" msgid "Your changes will be lost if you don’t save them." msgstr "如果不儲存,便會失去剛剛進行的變更。" msgid "Save" msgstr "儲存" msgid "Do&n’t save" msgstr "不要儲存(&N)" msgid "Don’t Save" msgstr "不要儲存" msgid "The changes made by the other application will be lost if you save." msgstr "如果儲存,其他應用程式所做的變更就會消失不見。" msgid "Cancel" msgstr "取消" msgid "Save Anyway" msgstr "仍要儲存" msgid "Save anyway" msgstr "仍要儲存" msgid "Save as…" msgstr "另存新檔…" msgid "Compile to…" msgstr "編譯成…" msgid "Compiled Translation Files" msgstr "已編譯的譯文檔案" msgid "Export to HTML…" msgstr "" msgid "HTML Files" msgstr "HTML 檔案" #, c-format msgid "In: %s" msgstr "在:%s" msgid "Source code not available." msgstr "原始程式碼無法使用。" msgid "Updating failed" msgstr "更新失敗" 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 "由於在檔案「屬性」指定的路徑中找不到程式碼,翻譯無法從原始碼更新。" msgid "Permission denied." msgstr "權限不足。" 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. 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. msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "若您先前拒絕檔案存取,可以到系統偏好設定 > 安全性與隱私權 > 隱私權 > 檔案與資" "料夾放行。" msgid "Translation entries in the file are probably incorrect." msgstr "檔案中的翻譯條目可能有誤。" msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "更新檔案失敗。點選「詳細資料 >>」取得深入資訊。" msgid "Open translation template" msgstr "開啟翻譯模板" #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "譯文中發現 %d 個問題。" msgid "Validation results" msgstr "驗證結果" msgid "" "Entries with errors were marked in red in the list. Details of the error " "will be shown when you select such an entry." msgstr "出錯的項目在清單中以紅色標記。您可以點選該項目以顯示詳細的錯誤資訊。" msgid "The file was saved safely." msgstr "檔案已順利儲存。" msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "檔案已順利儲存,且成功編譯為 MO 格式的檔案,但有可能無法正確運作。" msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "檔案已順利儲存,但無法編譯成 MO 格式的檔案,所以無法使用。" msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "已編譯成 MO 格式的檔案,但有可能無法正確運作。" msgid "The file cannot be compiled into the MO format and used." msgstr "無法編譯成 MO 格式的檔案,所以無法使用。" msgid "No problems with the translation found." msgstr "找不到譯文的問題。" #, 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 個項目尚未翻譯。" msgid "The translation is ready for use." msgstr "譯文已準備就緒。" #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "Poedit 已自動修正 %s 檔案中無效的內容。" msgid "" "The file contained duplicate items, which is not allowed in PO files and " "would prevent the file from being used. Poedit fixed the issue, but you " "should review translations of any items marked as needing work and correct " "them if necessary." msgstr "" "檔案包含重複項目,然而 PO 檔並不允許重複,進而使檔案無法使用。Poedit 已修正這" "個問題,但您應該校閱任何標記為需要處理的項目,如有需要也請校正其內容。" msgid "Language of the translation isn’t set." msgstr "尚未設定目標語言。" msgid "Set Language" msgstr "設定語言" msgid "Set language" msgstr "設定語言" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." msgid "" "Suggestions are not available if the translation language is not set " "correctly. Other features, such as plural forms, may be affected as well." msgstr "" "如果沒有正確設定目標語言,便無法使用建議譯文;其他功能如複數型設定,也可能受" "到影響。" msgid "Language of the translation is the same as source language." msgstr "目標語言與來源語言相同。" msgid "Fix Language" msgstr "修正語言" msgid "Fix language" msgstr "修正語言" msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "這個檔案有複數型條目,卻未設定 Plural-Forms 標頭。" msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "這個檔案中條目的複數形式數目,與檔案中 Plural-Forms 標頭的記錄不符" msgid "Required header Plural-Forms is missing." msgstr "遺失必要的 Plural-Forms 標頭。" #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Plural-Forms 標頭中有語法錯誤 (%s)。" msgid "Fix the Header" msgstr "修正標頭" 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". #, 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.")" msgid "Review" msgstr "校閱" msgid "Would you like to use English for source text?" msgstr "您要使用英文作為來源文字嗎?" #, 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" msgid "Load English" msgstr "載入英文" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "已翻譯 %d 筆,總計 %d 筆 (完成度為 %d%%)" #, c-format msgid "Remaining: %d" msgstr "尚餘 %d 筆原文未翻譯" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d 項錯誤" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d 個項目" msgid " (unsaved)" msgstr " (未儲存)" msgid " (modified)" msgstr " (已修改)" #, c-format msgid "Failed to update translation memory: %s" msgstr "無法更新譯文記憶庫:%s" msgid "Remove same-as-source translations" msgstr "" msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" msgid "Keep" msgstr "保留" msgid "Remove" msgstr "" msgid "Purge deleted translations" msgstr "清除已刪除的譯文" msgid "Do you want to remove all translations that are no longer used?" msgstr "確定要移除全部不再使用的譯文?" 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 "" "如果繼續清除,全部標示為已刪除的譯文便會永久移除。如果未來這些訊息再次加入," "就必須再重新翻譯一次。" msgid "Purge" msgstr "清除" msgid "Copy from source text" msgstr "從原文複製" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "清除譯文" msgid "Clear Translation" msgstr "清除譯文" msgid "Edit comment" msgstr "編輯註解" msgid "Edit Comment" msgstr "編輯註解" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "程式碼出現處" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "程式碼出現處" msgid "Hide Sidebar" msgstr "隱藏側邊欄" msgid "Show Sidebar" msgstr "顯示側邊欄" msgid "Hide Status Bar" msgstr "隱藏狀態列" msgid "Show Status Bar" msgstr "顯示狀態列" msgid "String length in characters: translation | source" msgstr "以字元數表示的字串長度:翻譯字串 | 來源字串" msgid "String length in characters" msgstr "以字元數表示的字串長度" msgid "Source text" msgstr "原文" msgid "Singular" msgstr "單數" msgid "Plural" msgstr "複數" msgid "Translation" msgstr "譯文" msgid "Pre-translated" msgstr "前置翻譯" 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. msgid "Needs work" msgstr "待校閱" msgid "" "POT files are only templates and don’t contain any translations themselves.\n" "To make a translation, create a new PO file based on the template." msgstr "" "POT 檔案僅是譯文範本,檔案內不包含任何譯文。\n" "若要進行翻譯,請以這個範本建立新的 PO 譯文檔案。" msgid "Create new translation" msgstr "建立新譯文" msgid "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 msgid "Source text ID" msgstr "來源文字 ID" msgid "Everything" msgstr "單複數合併譯文" #, c-format msgid "Form %i" msgstr "形式 %i" #, c-format msgid "Form %i (unused)" msgstr "形式 %i (未使用)" msgid "Zero" msgstr "零" msgid "One" msgstr "單數" msgid "Two" msgstr "複數" msgid "Other" msgstr "其他" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, c-format msgid "String context: %s" msgstr "字串上下文:%s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #, c-format msgid "String identifier: %s" msgstr "字串識別碼:%s" #, c-format msgid "%s Format" msgstr "%s 格式" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "%s 格式" #, c-format msgid "Translation — %s" msgstr "譯文 — %s" msgid "ID" msgstr "ID" #, c-format msgid "Source text — %s" msgstr "原文 — %s" msgid "unknown language" msgstr "未知的語言" #, c-format msgid "Network error: %s (%d)" msgstr "網路錯誤:%s (%d)" msgid "Unknown error" msgstr "未知錯誤" #, c-format msgid "Failed command: %s" msgstr "指令執行失敗:%s" msgid "Failed to merge gettext catalogs." msgstr "無法合併 gettext 編目檔。" msgid "Open in Editor" msgstr "在編輯器中開啟" msgid "Open in editor" msgstr "在編輯器中開啟" msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "檔案中沒有這個字串在原始碼中的出現處資料。" msgid "No usage information" msgstr "沒有用量資訊" #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d 個程式碼出現處" msgid "Source code not found" msgstr "找不到原始碼" 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 無法顯示使用這個字串的原始碼,因為檔案無法從參考位置取得,或是一個未指" "向真實檔案的符號參考。" msgid "File cannot be opened" msgstr "無法開啟檔案" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "Poedit 無法開啟「%s」檔案。" msgid "Find" msgstr "尋找" msgid "Replace" msgstr "取代" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "選項" msgid "Ignore case" msgstr "忽略字母大小寫" msgid "Wrap around" msgstr "循環尋找" msgid "Whole words only" msgstr "全字拼寫須相符" msgid "Find in source texts" msgstr "在原文中尋找" msgid "Find in translations" msgstr "在譯文中尋找" msgid "Find in comments" msgstr "在註解中尋找" msgid "Close" msgstr "關閉" msgid "Replace &All" msgstr "全部取代(&A)" msgid "Replace &all" msgstr "全部取代(&A)" msgid "&Replace" msgstr "取代(&R)" msgid "< &Previous" msgstr "< 前一筆(&P)" msgid "&Next >" msgstr "下一筆(&N) >" msgid "String to find" msgstr "尋找字串" msgid "Replacement string" msgstr "取代字串" #, c-format msgid "Cannot execute program: %s" msgstr "無法執行程式:%s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "語言名稱或代碼" msgid "Translation Language" msgstr "譯文語言" msgid "Language of the translation:" msgstr "譯文語言:" msgid "All strings" msgstr "所有字串" msgid "Couldn’t download Localazy project details." msgstr "無法下載 Localazy 專案詳細資訊。" msgid "There was an error when uploading translations to Localazy." msgstr "上傳翻譯至 Localazy 時發生錯誤。" msgid "Projects" msgstr "專案" msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Localazy 是一個高度自動化的在地化平台,可讓任何人輕鬆將產品和內容翻譯成多種語" "言。" msgid "Add Project" msgstr "新增專案" msgid "Add project" msgstr "新增專案" msgid "Poedit - Catalogs manager" msgstr "Poedit - 編目檔管理員" msgid "Edit…" msgstr "編輯…" msgid "Create new translations project" msgstr "建立譯文專案" msgid "Delete the project" msgstr "刪除專案" msgid "Edit the project" msgstr "編輯專案" msgid "Update all" msgstr "更新全部" msgid "Update all catalogs in the project" msgstr "更新專案中的所有編目檔" msgid "Total" msgstr "總計" msgid "Untrans" msgstr "未譯" msgctxt "column/row header" msgid "Needs Work" msgstr "待校閱" msgid "Errors" msgstr "錯誤" msgid "Last modified" msgstr "上次修改時間" msgid "Select directory" msgstr "選取目錄" msgid "Directories:" msgstr "目錄:" msgid "" msgstr "<未命名>" #, c-format msgid "Do you want to delete project “%s”?" msgstr "是否刪除「%s」專案?" msgid "Delete project" msgstr "刪除專案" msgid "Deleting the project will not delete any translation files." msgstr "「刪除專案」不會刪除其他翻譯檔案。" msgid "Confirmation" msgstr "確認" msgid "Update all catalogs in this project?" msgstr "是否更新專案中的所有編目檔?" msgid "Performs update from source code on all files in the project." msgstr "自來源碼進行所有專案中的檔案的字串更新" msgid "Check for Updates…" msgstr "檢查更新…" msgid "Catalogs Manager" msgstr "編目檔管理員" msgid "&Preferences…" msgstr "偏好設定(&P)…" msgid "&Edit" msgstr "編輯(&E)" msgid "Undo" msgstr "取消動作" msgid "Redo" msgstr "再次動作" msgid "Paste and Match Style" msgstr "貼上並比對樣式" msgid "Delete" msgstr "刪除" msgid "Spelling and Grammar" msgstr "拼字與文法" msgid "Show Spelling and Grammar" msgstr "顯示拼字與文法" msgid "Check Document Now" msgstr "立刻檢查文件" msgid "Check Spelling While Typing" msgstr "打字同時檢查拼字" msgid "Check Grammar With Spelling" msgstr "檢查文法與拼字" msgid "Correct Spelling Automatically" msgstr "自動校正拼字" msgid "Substitutions" msgstr "替換項目" msgid "Show Substitutions" msgstr "顯示替換項目" msgid "Smart Copy/Paste" msgstr "智慧複製/貼上" msgid "Smart Quotes" msgstr "智慧引號" msgid "Smart Dashes" msgstr "智慧破折號" msgid "Smart Links" msgstr "智慧連結" msgid "Text Replacement" msgstr "文字取代" msgid "Transformations" msgstr "轉換" msgid "Make Upper Case" msgstr "轉為大寫" msgid "Make Lower Case" msgstr "轉為小寫" msgid "Capitalize" msgstr "轉為大寫" msgid "Speech" msgstr "朗讀" msgid "Start Speaking" msgstr "開始朗讀" msgid "Stop Speaking" msgstr "停止朗讀" msgid "&View" msgstr "檢視(&V)" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Show Toolbar" msgstr "顯示工具列" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Customize Toolbar…" msgstr "自訂工具列…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Enter Full Screen" msgstr "進入全螢幕" msgid "Window" msgstr "視窗" msgid "Minimize" msgstr "最小化" msgid "Zoom" msgstr "縮放" msgid "Welcome to Poedit" msgstr "歡迎使用 Poedit" msgid "Bring All to Front" msgstr "全部帶到最前方" msgid "Information about the translator" msgstr "譯者資訊" msgid "Name:" msgstr "姓名:" msgid "Your Name" msgstr "您的姓名" msgid "Email:" msgstr "電子郵件地址:" msgid "you@example.com" msgstr "you@example.com" msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "您的姓名與電子郵件位址僅用於設定 GNU gettext 檔案的 Last-Translator 標頭。" msgid "Editing" msgstr "編輯" msgid "Automatically compile MO file when saving" msgstr "儲存時自動編譯 MO 檔案" msgid "Show summary after updating files" msgstr "更新檔案後顯示摘要" msgid "Check spelling" msgstr "拼字檢查" msgid "Always change focus to text input field" msgstr "永遠將焦點放在文字輸入欄位中" msgid "" "Never let the list of strings take focus. If enabled, you must use Ctrl-" "arrows for keyboard navigation but you can also type text immediately, " "without having to press Tab to change focus." msgstr "" "永遠不要讓字串清單取得焦點。如果您啟用這個選項,就得並用 Ctrl 鍵與方向鍵才能" "以鍵盤導覽,不過同時您能立即輸入文字,而不必先按 Tab 鍵變更輸入焦點。" msgid "Appearance" msgstr "外觀" msgid "Use custom list font:" msgstr "使用自訂清單字型:" msgid "Use custom text fields font:" msgstr "使用自訂文字欄位字型:" msgid "Change UI language" msgstr "變更使用者介面語言" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions msgid "(requires Windows 8 or newer)" msgstr "(需要 Windows 8 或更新版本)" msgid "General" msgstr "一般" msgid "Use translation memory" msgstr "使用譯文記憶庫" msgid "Manage…" msgstr "管理…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "從原始程式碼進行更新時" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "在檔案內部進行模糊比對" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "使用譯文記憶進行前置翻譯" 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 會嘗試將舊版檔案中的譯文或譯文記憶中的譯文代入新項目中。如果譯文記憶中" "累積的譯文量很少,這項功能的效果就不會很好,但是會隨著譯文量的增加逐漸改善效" "果。" msgid "Stored translations:" msgstr "已儲存的譯文:" msgid "Database size on disk:" msgstr "譯文記憶庫使用的儲存空間:" msgid "Import Translation Files…" msgstr "匯入譯文檔案…" msgid "Import translation files…" msgstr "匯入譯文檔案…" msgid "Import From TMX…" msgstr "從 TMX 檔案匯入…" msgid "Import from TMX…" msgstr "從 TMX 檔案匯入…" msgid "Export To TMX…" msgstr "匯出成 TMX 檔案…" msgid "Export to TMX…" msgstr "匯出成 TMX 檔案…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). msgid "Reset" msgstr "重設" msgid "Select translation files to import" msgstr "選取要匯入的譯文檔案" msgid "Translation Memory" msgstr "譯文記憶庫" msgid "Importing translations…" msgstr "正在匯入譯文…" #, c-format msgid "Error loading translation file “%s”." msgstr "載入「%s」翻譯檔時發生錯誤。" msgid "Finalizing…" msgstr "正在完成…" msgid "Select TMX files to import" msgstr "選取要匯入的 TMX 檔案" msgid "TMX Files" msgstr "TMX 檔案" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "無法從 %s 匯入譯文記憶庫。" msgid "Import error" msgstr "匯入時發生錯誤" msgid "Export as…" msgstr "匯出成…" msgid "Exporting translations…" msgstr "正在匯出譯文…" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "無法將譯文記憶庫匯出至 %s。" msgid "Export error" msgstr "匯出時發生錯誤" msgid "Reset translation memory" msgstr "重設譯文記憶庫" msgid "Are you sure you want to reset the translation memory?" msgstr "確定要重設譯文記憶庫?" 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. msgid "TM" msgstr "譯文記憶" msgid "" "Source code extractors are used to find translatable strings in the source " "code files and extract them so that they can be translated." msgstr "" "原始程式碼擷取器用於尋找原始程式碼中的可翻譯字串,並將之擷取出來進行本地化。" msgid "Custom Extractors:" msgstr "自訂擷取器:" msgid "Custom extractors:" msgstr "自訂擷取器:" msgid "GNU gettext" msgstr "GNU gettext" 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 等程式語言。" msgid "Delete extractor" msgstr "刪除擷取器" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "確定要刪除「%s」擷取器?" msgid "Extractors" msgstr "擷取器" msgid "Accounts" msgstr "帳號" msgid "Automatically check for updates" msgstr "自動檢查更新" msgid "Include beta versions" msgstr "包含 Beta 版" msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "Beta 版本包含最新功能和改進,但可能有點不穩定。" msgid "Updates" msgstr "更新" msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "這些設定會影響 PO 檔案的內部格式化處理方式。如果有特定需求才需要調整它們,例" "如需要進行版本控制。" msgid "Line endings:" msgstr "行尾結束符號:" msgid "Unix (recommended)" msgstr "Unix (建議採用)" msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "換行位置:" msgid "Preserve formatting of existing files" msgstr "保留現有檔案的格式化處理方式" msgid "Advanced" msgstr "進階" msgid "Settings" msgstr "" msgid "Preparing strings…" msgstr "準備字串中..." msgid "Pre-translating from translation memory…" msgstr "從翻譯記憶體前置翻譯中..." #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "已前置翻譯 %u 筆字串" msgid "Pre-translating…" msgstr "正在進行前置翻譯…" 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. msgid "Pre-translate" msgstr "前置翻譯" msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "預先翻譯需要可供使用的來源文字。如果僅使用沒有實際文字的 ID,預先翻譯將無法運" "作。" msgid "Cannot pre-translate from unknown language." msgstr "無法前置未知語言的翻譯。" msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "需要先知道來源文字的語言,才能進行前置翻譯。Poedit 無法從這個檔案偵測語言。" msgid "Only fill in exact matches" msgstr "僅代入完全相符的譯文" msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "預設情況下,不精確的項目也會包含在內,但會將之標記為需要處理。勾選此選項以僅" "只納入完美符合的項目。" msgid "Don’t mark exact matches as needing work" msgstr "不要將完全相符的譯文標示為「待校閱」" 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 "" "只有在信任譯文記憶的品質時才啟用這項設定。依照預設,與譯文記憶比對後,完全相" "符的項目代入的譯文都會標記為「待校閱」,並請在採用前先行校閱。" msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "前置翻譯會從譯文記憶庫中自動尋找完全相同或相似的譯文代入未翻譯的項目中。" #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%d 筆原文已完成前置翻譯。" msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "這些譯文已標示為「待校閱」,可能翻譯尚未明確。你應該校閱它們是否正確。" msgid "No entries could be pre-translated." msgstr "沒有任何原文可以完成前置翻譯。" msgid "" "The TM doesn’t contain any strings similar to the content of this file. It " "is only effective for semi-automatic translations after Poedit learns enough " "from files that you translated manually." msgstr "" "譯文記憶並未包含任何與這個檔案內容類似的字串。這項功能在 Poedit 儲存使用者夠" "多的手動翻譯結果後,對半自動翻譯才會產生效果。" msgid "Cancelling…" msgstr "取消中..." msgid "Drag Folders or Files Here" msgstr "拖曳資料夾或檔案至此" msgid "Drag folders or files here" msgstr "拖曳資料夾或檔案至此" msgid "Add Folders…" msgstr "加入資料夾…" msgid "Add folders…" msgstr "加入資料夾…" msgid "Add Files…" msgstr "加入檔案…" msgid "Add files…" msgstr "加入檔案…" msgid "Add Wildcard…" msgstr "加入萬用字元…" msgid "Add wildcard…" msgstr "加入萬用字元…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) msgid "Reveal in Finder" msgstr "在 Finder 顯示" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" msgid "Show in Explorer" msgstr "在檔案總管顯示" msgid "Show in Folder" msgstr "在資料夾顯示" msgid "Paths" msgstr "路徑" msgid "Excluded paths" msgstr "排除的路徑" msgid "Advanced extraction settings" msgstr "進階擷取設定" msgid "Extract notes for translators from:" msgstr "「譯者注意事項」擷取來源:" msgid "Comments prefixed with:" msgstr "註解前置詞:" msgid "All comments" msgstr "全部註解" msgid "Additional xgettext flags:" msgstr "額外的 xgettext 旗標:" msgid "Additional keywords" msgstr "額外的關鍵字" msgid "Name of the project the translation is for" msgstr "本地化專案名稱" msgid "Team name and email address or URL" msgstr "團隊名稱和電子郵件位址或網址" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "例如 nplurals=2; plural=(n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (建議採用)" msgid "Please save the file first. This section cannot be edited until then." msgstr "請先儲存檔案。儲存完畢後,這個區段才能進行編輯。" msgid "Placeholders correctness" msgstr "預留位置準確性" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "預留位置 “%s” 並未出現在翻譯中。" #, c-format msgid "Superfluous placeholder “%s” that isn’t in source text." msgstr "多餘的預留位置 “%s” 並未出現在原始本文。" msgid "Plural form translations" msgstr "複數形式翻譯" msgid "Not all plural forms are translated." msgstr "複數型內容並未全部翻譯。" msgid "Inconsistent upper/lower case" msgstr "大小寫不一致" msgid "The translation should start as a sentence." msgstr "譯文應該以句子開始。" msgid "The translation should start with a lowercase character." msgstr "譯文應該以小寫字元開始。" msgid "Inconsistent whitespace" msgstr "空白數不一致" msgid "The translation doesn’t start with a space." msgstr "譯文應該以空白字元開始。" msgid "The translation starts with a space, but the source text doesn’t." msgstr "譯文以空白字元開始,但原文並未以空白字元開始。" msgid "The translation is missing a newline at the end." msgstr "譯文結束位置遺漏新行字元。" msgid "The translation ends with a newline, but the source text doesn’t." msgstr "譯文以新行字元結尾,但原文並未以新行字元結尾。" msgid "The translation is missing a space at the end." msgstr "譯文結束位置遺漏空白字元。" msgid "The translation ends with a space, but the source text doesn’t." msgstr "譯文以空白字元結尾,但原文並未以空白字元結尾。" msgid "Punctuation checks" msgstr "標點檢查" #, c-format msgid "The translation should end with “%s”." msgstr "譯文應該以「%s」結束。" #, c-format msgid "The translation should not end with “%s”." msgstr "譯文不應該以「%s」結束。" #, c-format msgid "The translation ends with “%s”, but the source text ends with “%s”." msgstr "譯文以「%s」結尾,但原文是以「%s」結尾。" msgid "Cloud" msgstr "雲端" msgid "Clear Menu" msgstr "清除選單" msgid "Clear menu" msgstr "清除選單" msgid "Comment:" msgstr "註解:" msgid "Update" msgstr "更新" msgid "&Delete" msgstr "刪除(&D)" msgid "Delete the comment" msgstr "刪除註解" msgid "Edit project" msgstr "編輯專案" msgid "Project name:" msgstr "專案名稱:" msgid "Browse" msgstr "瀏覽" msgid "Add directory to the list" msgstr "將目錄加入清單" msgid "OK" msgstr "確定" msgid "&File" msgstr "檔案(&F)" msgid "&New…" msgstr "新增(&N)…" msgid "New from &POT/PO file…" msgstr "從 &POT/PO 檔案新增…" msgid "New From &POT/PO File…" msgstr "從 &POT/PO 檔案新增…" msgid "&Open…" msgstr "開啟(&O)…" msgid "Open Recent" msgstr "開啟最近使用的檔案" msgid "Open recent" msgstr "開啟最近" msgid "Open cloud translation…" msgstr "開啟雲端翻譯…" msgid "Open Cloud Translation…" msgstr "開啟雲端翻譯…" msgid "&Start window" msgstr "啟動視窗(&S)" msgid "&Start Window" msgstr "啟動視窗(&S)" msgid "Catalogs &manager" msgstr "編目檔管理員(&M)" msgid "Catalogs &Manager" msgstr "編目檔管理員(&M)" msgid "&Close" msgstr "關閉(&C)" msgid "&Save" msgstr "儲存(&S)" msgid "Save &as…" msgstr "另存新檔(&A)…" msgid "Save &As…" msgstr "另存新檔(&A)…" msgid "Compile to MO…" msgstr "編譯成 MO 檔案…" msgid "E&xport to HTML…" msgstr "" msgid "Check for updates…" msgstr "檢查更新…" msgid "Settings…" msgstr "系統設定" msgid "&Preferences" msgstr "偏好設定(&P)" msgid "E&xit" msgstr "結束(&X)" msgid "Quit" msgstr "退出" msgid "Copy from singular" msgstr "從單數型內容複製" msgid "Copy From Singular" msgstr "從單數型內容複製" msgid "Translation needs &work" msgstr "譯文待校閱(&W)" msgid "Translation Needs &Work" msgstr "譯文待校閱(&W)" msgid "Edit &comment" msgstr "編輯註解(&C)" msgid "Edit &Comment" msgstr "編輯註解(&C)" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "譯文建議" msgid "&Find…" msgstr "尋找(&F)…" msgid "Replace…" msgstr "取代…" msgid "Find next" msgstr "尋找下一筆" msgid "Find previous" msgstr "尋找上一筆" msgid "Find and Replace…" msgstr "尋找及取代…" msgid "Find Next" msgstr "尋找下一筆" msgid "Find Previous" msgstr "尋找上一筆" msgid "Show string &ID" msgstr "顯示字串 ID(&I)" msgid "Show String &ID" msgstr "顯示字串 ID(&I)" msgid "Show warnings" msgstr "顯示警告訊息" msgid "Show Warnings" msgstr "顯示警告訊息" msgid "Sort by &file order" msgstr "依據檔案順序排序(&F)" msgid "Sort by &File Order" msgstr "依據檔案順序排序(&F)" msgid "Sort by &source" msgstr "依據原文排序(&S)" msgid "Sort by &Source" msgstr "依據原文排序(&S)" msgid "Sort by &translation" msgstr "依據譯文排序(&T)" msgid "Sort by &Translation" msgstr "依據譯文排序(&T)" msgid "&Group by context" msgstr "依據上下文分組(&G)" msgid "&Group By Context" msgstr "依據上下文分組(&G)" msgid "Entries with errors first" msgstr "包含錯誤的項目優先" msgid "Entries with Errors First" msgstr "包含錯誤的項目優先" msgid "&Untranslated entries first" msgstr "未翻譯項目優先(&U)" msgid "&Untranslated Entries First" msgstr "未翻譯項目優先(&U)" msgid "&Show code occurrences" msgstr "顯示程式碼出現處(&S)" msgid "&Show Code Occurrences" msgstr "顯示程式碼出現處(&S)" msgid "Show sidebar" msgstr "顯示側邊欄" msgid "Show status bar" msgstr "顯示狀態列" msgid "&Translation" msgstr "翻譯(&T)" msgid "&Update from source code" msgstr "從原始程式碼進行更新(&U)" msgid "&Update from Source Code" msgstr "從原始程式碼進行更新(&U)" msgid "Update from &POT file…" msgstr "從 POT 檔案進行更新(&P)…" msgid "Update from &POT File…" msgstr "從 POT 檔案進行更新(&P)…" msgid "Sync with Crowdin" msgstr "與 Crowdin 進行同步" msgid "Pre-&translate…" msgstr "前置翻譯(&T)…" msgid "&Validate translations" msgstr "驗證譯文(&V)" msgid "&Validate Translations" msgstr "驗證譯文(&V)" msgid "Remove Same-as-Source Translations" msgstr "" msgid "&Purge deleted translations" msgstr "清除已刪除的譯文(&P)" msgid "&Purge Deleted Translations" msgstr "清除已刪除的譯文(&P)" msgid "&Properties…" msgstr "屬性(&P)…" msgid "&Go" msgstr "前往(&G)" msgid "&Done and next" msgstr "完成並前往下一筆譯文(&D)" msgid "&Done and Next" msgstr "完成並前往下一筆譯文(&D)" msgid "Previously edited" msgstr "先前編輯過" msgid "Previously Edited" msgstr "先前編輯過" msgid "&Previous translation" msgstr "前一筆譯文(&P)" msgid "&Previous Translation" msgstr "前一筆譯文(&P)" msgid "&Next translation" msgstr "下一筆譯文(&N)" msgid "&Next Translation" msgstr "下一筆譯文(&N)" msgid "P&revious unfinished" msgstr "前一筆未完成譯文(&R)" msgid "P&revious Unfinished" msgstr "前一筆未完成譯文(&R)" msgid "Ne&xt unfinished" msgstr "下一筆未完成譯文(&X)" msgid "Ne&xt Unfinished" msgstr "下一筆未完成譯文(&X)" msgid "Previous plural form" msgstr "前一筆複數型譯文" msgid "Previous Plural Form" msgstr "前一筆複數型譯文" msgid "Next plural form" msgstr "下一筆複數型譯文" msgid "Next Plural Form" msgstr "下一筆複數型譯文" msgid "&Online help" msgstr "線上說明(&O)" msgid "&Online Help" msgstr "線上說明(&O)" msgid "&GNU gettext manual" msgstr "GNU gettext 手冊(&G)" msgid "&GNU gettext Manual" msgstr "GNU gettext 手冊(&G)" msgid "&About Poedit" msgstr "關於 Poedit(&A)" msgid "&About" msgstr "關於(&A)" msgid "Extractor setup" msgstr "擷取器設定" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "請以分號隔開副檔名清單 (例如 *.cpp; *.h):" msgid "Invocation:" msgstr "喚起:" msgid "Command to extract translations:" msgstr "擷取譯文的命令:" 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 是字集旗標 (參閱下方)。" msgid "An item in keywords list:" msgstr "關鍵字清單中的一個項目:" msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "這個內容會按照每個關鍵字逐次\n" "附到命令列中。%k 會展開成關鍵字。" msgid "An item in input files list:" msgstr "輸入檔清單中的一個項目:" #, 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 會展開成檔名。" msgid "Source code charset:" msgstr "原始程式碼字元集:" #, 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 會展開成字集的值。" msgid "Translation Properties" msgstr "譯文屬性" msgid "Project name and version:" msgstr "專案名稱及版本:" msgid "Language team:" msgstr "語言團隊:" msgid "Plural forms:" msgstr "複數型:" msgid "Use default rules for this language" msgstr "使用這個語言的預設規則" msgid "Use custom expression" msgstr "使用自訂運算式" msgid "Learn about plural forms" msgstr "深入瞭解複數型" msgid "Charset:" msgstr "字元集:" msgid "Advanced Extraction Settings…" msgstr "進階擷取設定…" msgid "Advanced extraction settings…" msgstr "進階擷取設定…" msgid "Translation properties" msgstr "譯文屬性" msgid "Sources Paths" msgstr "原始程式碼路徑" msgid "Sources paths" msgstr "原始程式碼路徑" msgid "Extract text from source files in the following directories:" msgstr "擷取下列目錄中的原始程式檔文字:" msgid "Base path:" msgstr "基底路徑:" msgid "Sources Keywords" msgstr "原始程式碼關鍵字" msgid "Sources keywords" msgstr "原始程式碼關鍵字" msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "在原始程式碼中使用這些關鍵字 (函式名稱) 以辨識可翻譯字串:" msgid "Also use default keywords for supported languages" msgstr "同時為支援的語言使用預設關鍵字" msgid "Learn about gettext keywords" msgstr "深入瞭解 gettext 關鍵字" msgid "Update summary" msgstr "更新摘要" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" "來源有這些檔案沒有的字串。\n" "Poedit 現在會將這些字串加到檔案。" msgid "New strings" msgstr "新字串" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" "原始碼已經沒有這些字串。\n" "Poedit 現在會從檔案移除這些字串。" msgid "Obsolete strings" msgstr "過時字串" msgid "(0 new, 0 obsolete)" msgstr "(0 筆新增字串,0 筆過時字串)" msgid "Open" msgstr "" msgid "Open file" msgstr "開啟檔案" msgid "Save file" msgstr "儲存檔案" msgid "Validate" msgstr "驗證" msgid "Check for errors in the translation" msgstr "檢查譯文中是否有錯誤" msgid "Update from code" msgstr "從原始程式碼進行更新" msgid "Update from Code" msgstr "從原始程式碼進行更新" msgid "Update from source code" msgstr "從原始程式碼更新" msgid "Sidebar" msgstr "側邊欄" msgid "Show or hide the sidebar" msgstr "顯示或隱藏側邊欄" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. msgid "Previous source text" msgstr "過去的來源文字" msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "現在的不精確譯文對應的是(在用模板檔更新之前)舊的源文。" msgid "Notes for translators" msgstr "給譯者的備註" msgid "Comment" msgstr "註解" msgid "Add comment" msgstr "新增註解" msgid "Add Comment" msgstr "新增註解" msgid "Delete From Translation Memory" msgstr "從譯文記憶庫中刪除" msgid "Delete from translation memory" msgstr "從譯文記憶庫中刪除" msgid "Translation suggestions" msgstr "翻譯建議" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). msgid "No matches found" msgstr "找不到符合條件的項目" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). msgid "No Matches Found" msgstr "找不到符合條件的項目" msgid "This string was found in Poedit’s translation memory." msgstr "這個字串已儲存於 Poedit 的譯文記憶庫。" msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "翻譯建議需要可供使用的來源文字。如果僅使用沒有實際文字的 ID,翻譯建議將無法運" "作。" msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "需要先知道來源文字的語言,才能提供翻譯建議。Poedit 無法從這個檔案偵測語言。" msgid "The TMX file is malformed." msgstr "TMX 檔案格式錯誤。" msgid "No translations were found in the TMX file." msgstr "在 TMX 檔案中找不到譯文。" #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "譯文記憶庫已損毀:%s (%d)。" #, c-format msgid "Translation memory error: %s (%d)." msgstr "譯文記憶庫錯誤:%s (%d)。" msgid "Cannot create temporary directory." msgstr "無法建立暫存目錄。" msgid "There are no translations. That’s unusual." msgstr "沒有譯文。這並不尋常。" msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "Translators typically use PO template files (POTs) prepared for them by the " "developer." msgstr "" "可翻譯條目並非以手動方式加入 Gettext 系統中,而是自動從源碼\n" "中抽出。如此一來,條目不只能維持在最新狀態,還能保持精確。\n" "譯者通常使用開發者提供的 PO 模板檔 (POT)。" msgid "(Learn more about GNU gettext)" msgstr "(深入瞭解 GNU gettext)" msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "填充翻譯至檔案的最簡易解法,就是從 POT 檔更新:" msgid "Update from POT" msgstr "從 POT 檔更新" msgid "Take translatable strings from an existing POT template." msgstr "從既有的 POT 模板檔拿取可翻譯字串。" msgid "" "You can also extract translatable strings directly from the source code:" msgstr "您也可以直接從原始碼抽出可翻譯字串:" msgid "Extract from sources" msgstr "從來源更新" msgid "Configure source code extraction in Properties." msgstr "在「屬性」中設定原始碼抽出項目。" #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #, c-format msgid "Version %s" msgstr "版本 %s" msgid "Create new" msgstr "新增" msgid "Create new translation from POT template." msgstr "從 POT 模板建立新翻譯。" msgid "Browse files" msgstr "瀏覽檔案" msgid "Open and edit translation files." msgstr "開啟及編輯翻譯檔案。" msgid "Translate cloud project" msgstr "翻譯雲端專案" msgid "Collaborate with other people online." msgstr "與其他人在線上協作。" msgid "Recent files" msgstr "最近檔案" msgid "Sync" msgstr "同步" 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") #, c-format msgid "About %s" msgstr "關於 %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #, c-format msgid "%s Preferences" msgstr "%s 偏好設定" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "服務" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "隱藏 %s" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "隱藏其他" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "顯示全部" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "結束 %s" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "偏好設定…" msgid "Preferences..." msgstr "設定偏好..." #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "最近" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "常用" msgid "&Apply" msgstr "套用(&A)" msgid "Apply" msgstr "套用" msgid "&Back" msgstr "返回(&B)" msgid "Back" msgstr "返回" msgid "&Cancel" msgstr "取消(&C)" msgid "&Clear" msgstr "清除(&C)" msgid "Clear" msgstr "清除" msgid "Copy" msgstr "複製" msgid "Cu&t" msgstr "剪下(&T)" msgid "Cut" msgstr "剪下" msgid "Edit" msgstr "編輯" msgid "&Quit" msgstr "離開(&Q)" msgid "Help" msgstr "說明" msgid "&New" msgstr "新增(&N)" msgid "New" msgstr "新增" msgid "&No" msgstr "否(&N)" msgid "No" msgstr "否" msgid "&OK" msgstr "確定(&O)" msgid "Open…" msgstr "開啟…" msgid "&Open..." msgstr "開啟(&O)..." msgid "Open..." msgstr "開啟..." msgid "&Paste" msgstr "貼上(&P)" msgid "Paste" msgstr "貼上" msgid "Preferences" msgstr "偏好設定" msgid "&Redo" msgstr "重做(&R)" msgid "Refresh" msgstr "重新整理" msgid "&Save as" msgstr "另存為(&S)" msgid "Save as" msgstr "另存為" msgid "Select &All" msgstr "選取全部(&A)" msgid "Select All" msgstr "選取全部" msgid "&Undo" msgstr "復原(&U)" msgid "&Yes" msgstr "是(&Y)" msgid "Yes" msgstr "是" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "向上鍵" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "向下鍵" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "向左鍵" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "向右鍵" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "shift" poedit-3.5/locales/it.mo0000644000175100001770000016607714664354153012220 00000000000000|+: : :&:?:<S::J:g: V;`; o;y; ;;;;;;;;;;;;;;<<<0<B<H<M<U<]<o<<< < <<<< <<<<==0=L=R=X=a=g=p== = = ====>>7>N>e>k>p>>>>>> ? ???'?0? 4? @? L?Y? h?t? ? ?? ?? ???@@&@F@c@@ @ @1@@'@A.A HASA7YA6AA)AB B]"BB<BDB$C:C ACNCC C"CD+"D)ND xDDDDDDDDEE#4EXEmE|E EE EEEEEE%EF +FLFTF]FuF FF/F FkFXG]GpGGGG-G1G.H GHRH)iHH HYHI!I&I9ILIaIeI|IIIIIII;J CJ'PJ^xJLJ?$K dK rKK*KKK"K5K.LILdLjL}L L L L L LLLLLLLfMlMMuM(N?NRN"dNN NNN N NNN0N'OAO#VO<zO"OO OO*P03P!dP'PPPP(PTQ fQtQ yQ QQQQQ Q Q Q RR!R0RJRRRcR lRxR RRR R RRRRRRSz/TT TTT TT U2(U[UuU|UUU UU U U V!V&V;^D^Y^n^^^._4_J_=P__1__n_E[```;` ` aa@,amacb,#c,Pc}c cc2c*c ddwdj$e eeee%ee ff3fEfWf qffffffff8f g gg$g ,g 8g DgRg"Yg"|gg g gg g(ghhz'hhhhh h h h hh h i i i ,i 8iCi^ioi"iiii i ij jj$j -j:jTjdjtj j jjjj jjj!k *k8k@kHkQk Ykgkkkkkk k k kk ll.lBlRlgl|lmm 4m@mOmbm smm mmKmmn n%n:nMncn1nn n nn=ioo'p,p(>pgp op}p+pp p8p" q/q@qrCr8brrs8*t1ctRtctQLuu'u:ulvPv-vCwALwKw0w. x:x!x)x-y+Cy8oyCyuy,bzLz;z]{v{Z{gW|J|c }[n}o}:~7~m_[HN^Xp ف72("[~~łqDɃRVj o ȄЄӄ ڄ"$-F_p<Ѕ #$@eˆ#V cz ч. ;GPhHl5m7Y 3aω16;?\.a ͊ 1J!Z| %31BtG̍V7 Ď Վ  "+3:CW ku{ُ *AEIYir{ ͐ܐ &3 :Fc ϑ '; P\aw+ Ò!  #-@HPYj|Г!6Hd}&#̔&2C<U=&Օ(%-056f+9ɖ ^z??֗,C KW *$%O3u-י!#EW!q,%ښ08Xl›#؛#> GQh y3՜ޜci}%Ý7;!] }&!ɞoms{(ڟ$-$@ey; ݠ$b ?oP 9+ew*|@"(<EXn £Σգۣ{1?"q&0 %5K^;pǦ#ۦ7$7\ x28ϧ&0/`e+XŨ9?Pax̩ݩ3KT l v  Ϊ%( 580)Gq);ȭ&!<^z ѮڮD&4[t*",F>OD@ձ-!1S dp#IJݲ $3X^wѴԴ&\w)-4#)=BgӶ׶,~ ķ"ѷ #-> O\t|ĸظp'xI05yPNʺ!D@I:2/ >0K)|m u (+Fa  =6 >KR[l }'' --<jr 1;BHWfu  ! +<h ";Ul % $>2U     !+@Pdu+) '=TjT  ":O$j5 @ p|%%@ MP;Y*G95:748Zm_S('| >y[~(A?EF.,("*./5;e>m)N]xOr&p1R6g ts9ffU\k} $6.=e)$ N`-I\x  '0*CWl G!$;,`$5 (Cil "4Hex+ J:Bv}: /+;wg . $; `'45nCv#=ld B@Twa QjqO 91B)aT'ZSFQYu>"/VJZsG6*[ar`^;XyVb?' <IL:x%AMZ\W88O,*d0)i{J-yK|]:c%}oo0][-Pg6YS&r(\p@X(tM?iE=eD"OU|53 w  fj,#32H 4[ pk {qke;mpgl16U85:`, +Y^L9$qz2fGu(A7N4!d0DNt{F<x_+7vX)nKG+>&9m3 LeUIN Iy E"nsk/<W>PhrVvT]cQmuR$bjD !_@xEl%WK-_7MCwbz/|gcAB` zh~?SC^*tf=\h!H'P#RiF&;$H1~.2 RsJo}.} .~ (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd AccountAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add accountAdd 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 languagesAlt+Always 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 errorCrowdin is an online localization management platform and collaborative translation tool.Ctrl+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 againDownDownloading 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:EnterEnter 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 loading translation file “%s”.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export errorExport 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…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)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport from TMX…Import translation files…Importing translation memory from “%s” 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 CrowdinLeftLine %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 translations were found in the TMX file.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKObsolete stringsOneOnly 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 translation templateOpen...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 translationsQuitQuit %sReading file content failed with the following error: %sRecentRecent 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 FinderReviewRightSaveSave &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 languageServicesSet LanguageSet languageSettingsSettings…Shift+Show AllShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow summary after updating filesShow 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.These strings are no longer in the source code. Poedit will remove them from the file now.These strings were found in the sources but were not in the file. Poedit will add them to the file now.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 entries in the file are probably incorrect.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 errorUntransUpUpdateUpdate 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 the file failed. Click on 'Details >>' for details.Updating 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown 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: 2024-08-30 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 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 %sInform&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ì(0 nuove, 0 obsolete)(Scopri di più su GNU gettext)(nuove stringhe: %i, stringhe obsolete: %i)(Utilizza la lingua predefinita)(non registrato)(richiede Windows 8 o successivo)< &IndietroInformazioni su %sAccountAccountAggiungiAggiungi AccountAggiungi commentoAggiungi file…Aggiungi Cartelle…Aggiungi progettoAggiungi carattere jolly…Aggiungi accountAggiungi 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 supportateAlt+Posiziona sempre il cursore nel campo di immissione del testoOggetto nell'elenco dei file di input:Oggetto nell'elenco delle parole chiave:AspettoApplicaSei 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 sorgenti…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 online di gestione della localizzazione e uno strumento di traduzione collaborativa.Ctrl+&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.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ùGiù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:InvioModalità 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 nbel caricamento del file traduzione "%s".Errore durante l'apertura del fileErrore durante il salvataggio del fileErrore durante il caricamento del file XLIFF: %sErroriQualsiasiPercorsi esclusiEsportazione in TMX…Esporta come…Errore d'esportazioneEsporta in HTML…Esporta in TMX…L'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:Estraendo le stringhe traducibili…Installazione di estrattoreEstrattoriComando non riuscito: %sErrore di comunicazione con il processo di Poedit.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.Finalizzazione in corso…TrovaTrova successivoTrova precedenteTrova e sostituisci…Trova nei commentiTrova nel testo sorgenteTrova nella traduzioneTrova successivoTrova precedenteCorreggi la linguaCorreggi la linguaCorreggi l'intestazioneCorreggi l'intestazioneFile traduzione FlutterForma %iForma %i (inutilizzata)FrequentiGNU gettextGeneraleFIle HTMLAiutoNascondi %sNascondi altriNascondi 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…Errore d'importazioneImportazione da TMX…Importazione dei file della traduzione…L'importazione della memoria traduzione da "%s" è fallita.Importazione traduzioni…In: %sIncludi versioni betaMaiuscole/minuscole inconsistentiSpazio bianco inconsistenteInformazioni sul traduttoreInstallaFile non validoInvocazione:File 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 CrowdinSinistraLa 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…Nuovo da file &POT/PO…Nuove stringheForma 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.Non è stata trovata alcuna traduzione nel file TMX.Nessun'informazione d'usoNon tutte le forme plurali sono tradotte.Non autorizzato. È necessario autenticarsi per procedere, grazie.Note per traduttoriOKStringhe obsoleteUnoAbilitala 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 modello traduzioneApri...Apri…OpzioniAltroNon tradotta p&recedenteNon tradotta p&recedenteFile traduzione PO Modelli 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 eliminateEsciEsci da %sLa lettura del contenuto del file non è riuscita. Errore: %sRecentiFile recentiRipetiAggiornaRicarica il FileRicarica il fileRimanenti: %dRimuoviRimuovi traduzioni identiche a sorgenteRimuovi traduzioni identiche a sorgenteSostituisciSostituisci 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 FinderRevisionaDestraSalvaS&alva come…S&alva come…Salva ComunqueSalva comunqueSalva comeSalva come…Salva le modificheSalva fileSchermate:Seleziona &tuttoSeleziona tuttoSeleziona i file TMX da importareSeleziona la cartellaSeleziona il file traduzioneSeleziona i file di traduzione da importareSeleziona il modello traduzioneSeleziona la lingua preferitaServiziImposta linguaImposta linguaImpostazioniImpostazioni…Maiusc+Visualizza tuttoMostra 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 stringaDopo l'aggiornamento del file visualizza riepilogoMostra 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 trovareSostituzioniSuggerimentiI 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.Impossibile aprire il file "%s".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.Queste stringhe non sono più presenti nel file sorgente. Poedit rimuoverà queste stringhe dal file traduzione.Nel file sorgente sono state trovate queste nuove stringhe che non sono presenti nel file traduzione. Poedit le aggiungerà ora al file traduzione.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 traduzione non sono state aggiunte manualmente nel sistema Gettext, ma sono state estratte automaticamente dal codice sorgente. In questo modo, rimangono aggiornate e accurate. I traduttori di solito usano i file modello (POT) preparati per loro dagli sviluppatori.Traduci progetto cloudTradotti: %d di %d (%d %%)TraduzioneLingua della traduzioneMemoria di traduzione (TM)La traduzione richiede una &verificaProprietà della traduzioneLe voci traduzione nel file sono probabilmente errate.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)AnnullaSi è verificata un'eccezione non gestita: %sUnix (consigliato)Errore Crowdin sconosciuto.Errore sconosciutoNon tradotteSuAggiornamentoAggiorna 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 del file fallito. Clicca su 'Dettagli >>' per i dettagli.Aggiornando le 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 %sAutenticazione…Benvenuto in PoeditQuando aggiorni dai sorgentiSolo parole intereFinestraWindowsVuoi usare l'inglese per il testo sorgente?Torna su se raggiungi la fineA capo a:File traduzione XLIFFSì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.ZeroIngrandiscialtNecessita Verificactrlnon eliminare i file temporanei (per il debug)esempio. nplurals=2; plural=(n > 1);corrispondenza parziale nel filevai all'elemento al numero di riga datogestisce un URI poedit://pre-traduci dalla MTmaiusclingua sconosciutaversione non supportata (%s)you@example.com"%s" non è un file POT valido.poedit-3.5/locales/ru.mo0000644000175100001770000023072514664354143012221 00000000000000|+: : :&:?:<S::J:g: V;`; o;y; ;;;;;;;;;;;;;;<<<0<B<H<M<U<]<o<<< < <<<< <<<<==0=L=R=X=a=g=p== = = ====>>7>N>e>k>p>>>>>> ? ???'?0? 4? @? L?Y? h?t? ? ?? ?? ???@@&@F@c@@ @ @1@@'@A.A HASA7YA6AA)AB B]"BB<BDB$C:C ACNCC C"CD+"D)ND xDDDDDDDDEE#4EXEmE|E EE EEEEEE%EF +FLFTF]FuF FF/F FkFXG]GpGGGG-G1G.H GHRH)iHH HYHI!I&I9ILIaIeI|IIIIIII;J CJ'PJ^xJLJ?$K dK rKK*KKK"K5K.LILdLjL}L L L L L LLLLLLLfMlMMuM(N?NRN"dNN NNN N NNN0N'OAO#VO<zO"OO OO*P03P!dP'PPPP(PTQ fQtQ yQ QQQQQ Q Q Q RR!R0RJRRRcR lRxR RRR R RRRRRRSz/TT TTT TT U2(U[UuU|UUU UU U U V!V&V;^D^Y^n^^^._4_J_=P__1__n_E[```;` ` aa@,amacb,#c,Pc}c cc2c*c ddwdj$e eeee%ee ff3fEfWf qffffffff8f g gg$g ,g 8g DgRg"Yg"|gg g gg g(ghhz'hhhhh h h h hh h i i i ,i 8iCi^ioi"iiii i ij jj$j -j:jTjdjtj j jjjj jjj!k *k8k@kHkQk Ykgkkkkkk k k kk ll.lBlRlgl|lmm 4m@mOmbm smm mmKmmn n%n:nMncn1nn n nn=ioo'p,p(>pgp op}p+pp p8p" q/q@qrCr8brrs8*t1ctRtctQLuu'u:ulvPv-vCwALwKw0w. x:x!x)x-y+Cy8oyCyuy,bzLz;z]{v{Z{gW|J|c }[n}o}:~7~m_[HN^Xp ف72("[~~łqDɃRVj o ȄЄӄ ڄ"$-F_p<Ѕ #$@eˆ#V cz ч. ;GPhHl5m7Y 3aω16;?\.a ͊ 1J!ZM|ʍ܍{Cqw?-mOIϒ! 0BXl44Ǔ ,',T55ǔ%<!M&o ))֕.@X(s#9ٖ9M]q11 " CdxOOژ6*6a&& &##*G;r ,Ϛ !:IZk'қ'7'W+ʜ'8/1hA>A6"x͞VM[75-T<ZQ]> AZ)K >2 q~U=l*l "%"Hk.#̧5F&9mB9+$PYsɩ ةS9q<;0S <kNi@EU0Ḙ0UCSV7D|(A9;P887;p31#21V%ʲh OP[|v_Sp&d&;=SR::Zj**%%5Q mz"7EE=A)/k,9Ȼ 6&OvYǼ$!/FBvd9)XHaB`H+*!DL= U ` k!v(/"  *F%b%# - . :E Ubr(,*DX+]< &-,Zv-Y":$AMf-.!& H Tu)N,,G(] %;D7Jj ex'_6G=Z@)">7O225mT---EEE(s( 92Hl7;T)N~4!)j251=%.c1$$&,Fs 44!#@d 31 enp#IFMQA{.3(n}XVd4'IqG};04"$UGGG0-7^70 .%=c4t L%AT#e#ZZ,N O0ZXs !!$$4N'k5**FDq.6+AWj,:0=82v6-(7@V,0=N3- 1 NYIrJ-/54eD54DJ5/-):$V"{9/9/Br{) #4+X*!++N)x e +:)d':N16`E[-VcA8z  0+ 6\ J  q D oA h  M @ )8C&HjORcV=EYb))|S~q,V d3 '(3$!XDzG4 3< !p :  !""###H#$,$$#Q$u$$$$C$D%,[%,%%$%%1&&J&q&$&&']'H'>'5 (&C(3j(S(!(^)s)8*I*%\****)*<*$$+I+R+kZ+++!+,,R,,z-._.~.G/P/_/c//I/-/H0RI0-0H011291$l1C145nCv#=ld B@Twa QjqO 91B)aT'ZSFQYu>"/VJZsG6*[ar`^;XyVb?' <IL:x%AMZ\W88O,*d0)i{J-yK|]:c%}oo0][-Pg6YS&r(\p@X(tM?iE=eD"OU|53 w  fj,#32H 4[ pk {qke;mpgl16U85:`, +Y^L9$qz2fGu(A7N4!d0DNt{F<x_+7vX)nKG+>&9m3 LeUIN Iy E"nsk/<W>PhrVvT]cQmuR$bjD !_@xEl%WK-_7MCwbz/|gcAB` zh~?SC^*tf=\h!H'P#RiF&;$H1~.2 RsJo}.} .~ (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd AccountAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add accountAdd 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 languagesAlt+Always 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 errorCrowdin is an online localization management platform and collaborative translation tool.Ctrl+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 againDownDownloading 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:EnterEnter 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 loading translation file “%s”.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export errorExport 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…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)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport from TMX…Import translation files…Importing translation memory from “%s” 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 CrowdinLeftLine %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 translations were found in the TMX file.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKObsolete stringsOneOnly 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 translation templateOpen...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 translationsQuitQuit %sReading file content failed with the following error: %sRecentRecent 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 FinderReviewRightSaveSave &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 languageServicesSet LanguageSet languageSettingsSettings…Shift+Show AllShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow summary after updating filesShow 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.These strings are no longer in the source code. Poedit will remove them from the file now.These strings were found in the sources but were not in the file. Poedit will add them to the file now.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 entries in the file are probably incorrect.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 errorUntransUpUpdateUpdate 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 the file failed. Click on 'Details >>' for details.Updating 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown 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: 2024-08-30 11:56 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 проблем.%i строка файла "%s" не была корректно загружена.%i строки файла "%s" не были корректно загружены.%i строк файла "%s" не было корректно загружено.%i строк файла "%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)(0 новых, 0 устаревших)(Подробнее о GNU gettext)(Новых: %i, устаревших: %i)(Использовать язык по умолчанию)(вход не выполнен)(требует Windows 8 или новее)< Пред. (&P)<без имени>О программе %sАккаунтАккаунтыДобавитьДобавить аккаунтДобавить комментарийДобавить файлы…Добавить папки…Добавить проектДобавить по шаблону…Добавить аккаунтДобавить комментарийДобавить папку в списокДобавить файлы…Добавить папки…Добавить проектДобавить по шаблону…Дополнительные ключевые словаДополнительные флаги xgettext:ДополнительноРасширенные настройки извлечения…Расширенные настройки извлеченияРасширенные настройки извлечения…Все файлы переводаВсе комментарииВсе строкиТакже использовать ключевые слова по умолчанию для поддерживаемых языковAlt+Всегда переключаться на поле ввода текстаПункт в списке входных файлов:Пункт в списке ключевых слов:Внешний видПринятьВы уверены, что хотите удалить экстрактор «%s»?Вы уверены, что хотите очистить память переводов?Автоматически проверять наличие обновленийАвтоматически компилировать файл MO при сохраненииНазадБазовый путь:Бета-версии содержат новейшие функции и улучшения, но могут быть менее стабильными.Поместить все окна на передний планНеправильный файл PO: форма множественного числа msgstr используется без msgid_pluralНеправильный файл PO: форма единственного числа msgstr используется вместе с msgid_pluralНеправильная разметка в строке перевода.ОбзорПросмотр файловПо умолчанию не полностью совпадающие результаты также будут заполнены и помечены как требующие доработки. Отметьте этот вариант, чтобы заполнять только полные совпадения.ОтменаОтменяется…Не удаётся создать папку для временных файлов.Не удаётся выполнить программу: %sНевозможно предварительно перевести с неизвестного языка.Невозможно предварительно перевести без исходного текста.С заглавной буквыДиспетчер папок (&M)Диспетчер папок (&M)Диспетчер папокИзменить язык интерфейсаКодировка:Проверить документПроверять также и грамматикуПроверять правописание во время вводаПроверить наличие обновлений…Проверить наличие ошибок в переводеПроверить наличие обновлений…Проверять правописаниеЯсноОчистить менюУдалить переводОчистить менюУдалить переводЗакрытьОблакоВхождения кодаВхождения кодаПереводите совместно с другими людьми в сети.Сбор данных в исходных файлах…Команда для извлечения перевода:КомментарийКомментарий:Из комментариев, начинающихся с:Компилировать в формат MO…Компилировать в…Скомпилированные файлы переводаНастройте извлечение исходного кода в разделе «Свойства».ПодтверждениеПодключите Poedit к поддерживаемым облачным платформам локализации, чтобы легко синхронизировать переведённые с ними.КопироватьКопировать форму единственного числаКопировать исходный текстКопировать форму единственного числаКопировать исходный текстАвтоматически исправлять ошибки правописанияНе удалось скачать информацию о проекте Localazy.Не удалось загрузить файл, похоже он повреждён.Не удалось сохранить файл «%s».Создать новыйСоздать новый переводСоздать новый перевод из шаблона POT.Создать новый проект переводовОшибка CrowdinCrowdin - это онлайн-платформа для управления локализацией и совместного перевода.Ctrl+Вырезать (&T)Пользовательские экстракторы:Пользовательские экстракторы:Настроить панель инструментов…ВырезатьРазмер базы данных на диске:УдалитьУдалить из памяти переводаУдалить экстракторУдалить из памяти переводаУдалить проектУдалить комментарийУдалить проектУдаление проекта не приведёт к удалению файлов перевода.Папки:Вы действительно хотите удалить проект «%s»?Вы хотите перезагрузить файл с диска? Ваши несохранённые изменения в Poedit будут потеряны, если вы это сделаете.Вы хотите удалить все переводы, которые идентичны исходному тексту?Действительно удалить все неиспользуемые переводы?Не сохранять (&N)Не сохранятьБольше не показыватьНе помечать полные совпадения как требующие доработкиБольше не показыватьСтрелка внизЗагружаются последние переводы…Загрузка переводов отключена в этом проекте.Перетащите сюда папки или файлыПеретащите сюда папки или файлыВыход (&X)Экспорт в HTML…ПравитьПравить комментарий (&C)Править комментарий (&C)Править комментарийПравить комментарийПравка проектаПравить проектПравкаПравить…Электронная почта:EnterПерейти в полноэкранный режимЗаписи в этом файле имеют количество форм множественного числа, отличное от указанного в заголовке Plural-FormsПоказывать записи с ошибками в началеПоказывать записи с ошибками в началеЗаписи с ошибками были выделены в списке красным цветом. Если выбрать такую запись, будут показаны подробные сведения об ошибке.Ошибка загрузки файла перевода «%s».Ошибка при открытии файлаОшибка сохранения файлаОшибка при загрузке файла XLIFF: %sОшибкиВсёИсключенные путиЭкспорт в TMX…Экспортировать как…Ошибка экспортаЭкспорт в HTML…Экспорт в TMX…Не удалось экспортировать память перевода в «%s».Экспорт переводов…Извлечь из исходного кодаИзвлекать пометки для переводчиков:Извлекать текст из исходных файлов в следующих папках:Извлечение переводимых строк…Настройка экстрактораЭкстракторыСбой команды: %sНе удалось подключиться к процессу Poedit.Не удалось загрузить файл с извлечёнными переводами.Не удалось объединить каталоги gettext.Не удалось обновить память переводов: %sФайлНе удаётся открыть файлФайл «%s» не существует.Файл «%s» не является файлом перевода.Файл «%s» доступен только для чтения, и его нельзя сохранить. Сохраните файл под другим именем.Завершение…НайтиДалееНазадНайти и заменить…Искать в комментарияхИскать в исходных текстахИскать в переводахДалееНазадИсправить языкИсправить языкИсправить заголовокИсправить заголовокФайлы перевода FlutterФорма %iФорма %i (не используется)Часто вызываемыеGNU gettextОбщееФайлы HTMLПомощьСкрыть %sСкрыть остальноеСкрыть боковую панельСкрыть строку состоянияСкрыть это уведомлениеКак работает облачная синхронизация?ИДЕсли продолжить, то все переводы, помеченные как удалённые, будут безвозвратно удалены. Если они будут повторно добавлены в будущем, их придётся заново переводить.Если вы ранее отказали в доступе к файлам, то вы можете разрешить его в «Системные настройки» > «Конфиденциальность и безопасность» > «Конфиденциальность» > «Файлы и папки».Если вы ранее отказали в доступе к файлам, вы можете разрешить это в «Системные настройки» > «Конфиденциальность и безопасность» > «Файлы и папки».ИгнорироватьНе учитывать регистрИмпорт из TMX…Импорт файлов перевода…Ошибка импортаИмпорт из TMX…Импорт файлов перевода…Не удалось импортировать память перевода из «%s».Импорт переводов…В: %sВключая бета-версииНесоответствие верхнего/нижнего регистраНесогласованные пробелыИнформация о переводчикеУстановитьНедопустимый файлВызов:Файлы перевода JSONОставитьНазвание языка или кодЯзык перевода совпадает с исходным языком.Язык перевода не указан.Язык перевода:Выбор языкаКоманда переводчиков:Язык:Последнее изменениеПодробнее о ключевых словах gettextУзнать о формах множественного числаПодробнееУзнать больше о %sПодробнее о CrowdinВлево%d строка файла «%s» повреждена (недопустимые данные в %s).Окончания строк:Список расширений, разделённых точкой с запятой (например, *.cpp; *.h):Загрузить английскийLocalazy - это высоко автоматизированная платформа для локализации, позволяющая любому человеку легко переводить свои продукты и контент на несколько языков.Файлы MO нельзя редактировать непосредственно в Poedit.СтрочныеПрописныеСделать новый перевод из файла POT.Недопустимый формат заголовка: «%s»Управление аккаунтамиУправление…Слияние различий…СвернутьНазвание проекта перевода дляИмя:Следующий незаконченный (&X)Следующий незаконченный (&X)Требует проверкиТребует проверкиОшибка сети: %s (%d)Не фокусироваться на списке строк. Если включено, для перемещения с помощью клавиатуры необходимо нажимать Ctrl+стрелки, но при этом можно вводить текст немедленно, без переключения фокуса клавишей Tab.СоздатьСоздать из файла POT/PO (&P)…Создать из файла POT/PO (&P)…Новые строкиСледующая форма множественного числаСледующая форма множественного числаНетСовпадений не найденоСтроки, которые можно было бы заполнить предварительным переводом, отсутствуют.В файле нет информации о вхождениях этой строки в исходный код.Совпадений не найденоНе найдено проблем с переводом.В вашем аккаунте нет проектов перевода.В TMX-файле не найдены переводы.Нет информация об использованииНе все формы множественного числа переведены.Не авторизованы, пожалуйста войдите снова.Примечания для переводчиковОКУстаревшие строкиОдинВключите это только если вы уверены в качестве вашей памяти переводов. По умолчанию все совпадения из памяти переводов отмечаются как требующие доработки и подлежат проверке перед использованием.Только при точном совпаденииОткрыть облачный перевод…Недавно открытыеОткрыть и править файлы перевода.Открыть облачный переводОткрыть облачный перевод…Открыть файлОткрыть в редактореОткрыть в редактореНедавно открытыеОткрыть шаблон переводаОткрыть...Открыть…НастройкиДругоеПредыдущий незаконченный (&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Чтение файла было прервано из-за ошибки: %sНедавниеНедавние файлыПовторитьОбновитьПерезагрузить файлПерезагрузить файлОсталось: %dУдалитьУдалить переводы, совпадающие с исходным текстомУдалить переводы, совпадающие с исходным текстомЗаменитьЗаменить все (&A)Заменить все (&A)Строка заменыЗаменить…Необходимый заголовок Plural-Forms отсутствует.СбросОчистить память переводовОчистка памяти переводов необратимо удалит все переводы, хранящиеся в ней. Вы не сможете отменить эту операцию.Показать в FinderПроверитьВправоСохранитьСохранить как (&A)…Сохранить как (&A)…Сохранить всё равноСохранить всё равноСохранить какСохранить как…Сохранение измененийСохранить файлСкриншоты:Выбрать все (&A)Выбрать всеВыберите TMX-файлы для импортаВыберите папкуВыберите файл переводаВыберите файлы переводов для импортаВыберите шаблон переводаВыберите предпочитаемый языкСервисыВыбор языкаЗадать языкНастройкиНастройки…Shift+Показать всёПоказать боковую панельПоказывать ошибки правописанияПоказать строку состоянияПоказать идентификатор строки (&I)Показывать варианты заменыПоказать панель инструментовПоказать предупрежденияПоказать в проводникеПоказать в папкеПоказать или скрыть боковую панельПоказать боковую панельПоказать строку состоянияПоказать идентификатор строки (&I)Показывать сводку после обновления файловПоказать предупрежденияБоковая панельВойтиВыйтиВойтиВойти в %sВойти в аккаунтВойти в CrowdinВойти в аккаунтВыйтиЕдинственноеИнтеллектуальное копирование и вставкаИнтеллектуальная расстановка переносовИнтеллектуальные ссылкиИнтеллектуальные кавычкиУпорядочивать как в файле (&F)Упорядочивать по исходному тексту (&S)Упорядочивать по переводу (&T)Упорядочивать как в файле (&F)Упорядочивать по исходному тексту (&S)Упорядочивать по переводу (&T)Кодировка исходного кода:Экстракторы используются для поиска переводимых строк в файлах исходного кода и извлекают их так, чтобы их можно было перевести.Исходный код недоступен.Исходный код не найденИсходный текстИД исходного текстаИсходный текст — %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 и, соответственно, были изменены настройки.Этот файл был изменён. Вы желаете сохранить изменения?Не удалось определить формат файла.Файл был скомпилирован в формат MO, но скорее всего не будет правильно работать.Файл был сохранён и скомпилирован в формат MO. Но он может работать неправильно.Файл был сохранён, но его не удалось скомпилировать в формат MO и использовать.Файл был успешно сохранён.Файл «%s» не может быть открыт.Файл «%s» был изменён другим приложением.Старый исходный текст (до обновления), которому соответствует неточный перевод.Самый простой способ заполнить этот файл переводами, это обновить его из POT:Этот перевод не начинается с пробела.Перевод заканчивается новой строкой, но исходный текст - нет.Перевод заканчивается пробелом, но исходная строка - нет.Перевод заканчивается на «%s», но исходный текст заканчивается на «%s».В переводе пропущена новая строка в конце.В переводе пропущен пробел в конце.Перевод готов к использованию, но %d запись ещё не переведена.Перевод готов к использованию, но %d записи ещё не переведены.Перевод готов к использованию, но %d записей ещё не переведено.Перевод готов к использованию, но %d записей ещё не переведено.Перевод готов к использованию.Перевод должен заканчиваться на «%s».Перевод не должен заканчиваться на «%s».Перевод должен начинаться как предложение.Перевод должен начинаться с маленькой буквы.Перевод начинается с пробела, но исходная строка - нет.Переводы были отмечены как требующие доработки. Проверьте их правильность.Перевод отсутствует. Это странно.Возникла проблема при форматировании файла (но он был успешно сохранён).Произошла ошибка при загрузке переводов на Localazy.При загрузке файла произошли ошибки. В результате чего некоторые данные могут быть потеряны или повреждены.Эти настройки влияют на внутреннее форматирование файлов PO. Измените их, если у вас есть особые требования, например, если вы используете систему контроля версий.Этих строк больше нет в исходном коде. Сейчас Poedit удалит их из файла.Эти строки были найдены в источниках, но их не было в файле. Сейчас Poedit добавит их в файл.Этот JSON файл — не файл перевода, и не может быть отредактирован в Poedit.Это действие удалит все переводы, совпадающие с исходным текстом. Это невозможно отменить.В этом файле есть записи с формами множественного числа, но нет заголовка Plural-Forms.Этот файл использует идентификаторы вместо исходного текста. Poedit может загрузить английский текст из файла «%s».Эта команда запускает экстрактор. %o означает название выходного файла, %K — список ключевых слов, %F — список входных файлов, %C — кодировку (см. ниже).Эта строка была найдена в памяти переводов Poedit.Это будет добавлено в командную строку, только если была указана кодировка исходного кода. %c означает кодировку.Это будет добавлено в командную строку для каждого входного файла. %f означает название файла.Это будет добавлено в командную строку для каждого ключевого слова. %k означает ключевое слово.ВсегоПреобразованияПереводимые записи не добавляются вручную в систему Gettext, а автоматически извлекаются из исходного кода. Таким образом обеспечивается их актуальность и точность. Переводчики обычно работают с PO-файлами (POT-шаблоны), которые подготовил для них разработчик.Перевести проект CrowdinПереведено: %d из %d (%d %%)ПереводЯзык переводаПамять переводовПеревод требует проверки (&W)Свойства переводаВероятно, записи в файле неправильны.База памяти переводов повреждена: %s (%d).Ошибка памяти перевода: %s (%d).Перевод требует проверки (&W)Свойства переводаПредлагаемые варианты переводаДля предложений перевода нужно, чтобы был доступен исходный текст. Эта функция не будет работать, если используются только идентификаторы без текста.Переводческие переводы требуют, чтобы исходный текст был известен. Poedit не смог обнаружить его в этом файле.Перевод — %sПеревод не может быть обновлён из исходного кода, так как код не был найден в месте, указанном в свойствах файла.ДваUTF-8 (желательна)ОтменитьПроизошло непредвиденное исключение: %sUnix (желательны)Неизвестная ошибка Crowdin.Неизвестная ошибкаНе переведеноСтрелка вверхОбновитьОбновить всёОбновить все каталоги в этом проектеОбновить все каталоги в этом проекте?Обновить из файла POT (&P)…Обновить из файла POT (&P)…Обновить из кодаОбновить из POT-файлаОбновить из кодаОбновить из исходного кодаСводка об обновленииОбновленияНе удалось обновитьНе удалось обновить файл. Нажмите кнопку «Подробности >>» для получения дополнительных сведений.Обновление переводовОбновление информации о пользователе…Загрузка переводов в %s не удалась.Идёт загрузка переводов в %s…Выгрузка переводов…Пользовательское выражениеИспользовать настраиваемый шрифт для списка:Шрифт полей ввода:Использование правила по умолчанию для этого языкаИскать переводимые строки в исходных файлах по этим ключевым словам (именам функций):Использовать память переводовПроверитьРезультаты проверкиВерсия %sОжидание авторизации…Добро пожаловать в PoeditПри обновлении из исходного кодаТолько полные словаОкноWindowsХотите использовать английский язык для исходного текста?Искать по кругуПеренос:Файлы перевода XLIFFДаПереводимые строки можно также извлечь непосредственно из исходного кода:В окно Poedit можно перетащить только один файл.У вас нет разрешения на чтение исходных кодов из места, указанного в свойствах файла.Чтобы это изменение вступило в силу, необходимо перезапустить Poedit.Ваше имяВаши изменения будут потеряны, если не сохранить их.Ваше имя и почта будут использоваться только при указании последнего переводчика в заголовках файлов GNU gettext.НольМасштабaltТребует проверкиctrlне удалять временные файлы (для отладки)например, nplurals=2; plural=(n > 1);подбирать похожий перевод внутри файлаперейти к элементу с заданным номером строкиобрабатывать адрес poedit://переводить начерно из памяти переводовshiftнеизвестный языкнеподдерживаемая версия (%s)ваша_почта@пример.com«%s» не является допустимым файлом POT.poedit-3.5/locales/tr.mo0000644000175100001770000016476014664354143012225 00000000000000|+: : :&:?:<S::J:g: V;`; o;y; ;;;;;;;;;;;;;;<<<0<B<H<M<U<]<o<<< < <<<< <<<<==0=L=R=X=a=g=p== = = ====>>7>N>e>k>p>>>>>> ? ???'?0? 4? @? L?Y? h?t? ? ?? ?? ???@@&@F@c@@ @ @1@@'@A.A HASA7YA6AA)AB B]"BB<BDB$C:C ACNCC C"CD+"D)ND xDDDDDDDDEE#4EXEmE|E EE EEEEEE%EF +FLFTF]FuF FF/F FkFXG]GpGGGG-G1G.H GHRH)iHH HYHI!I&I9ILIaIeI|IIIIIII;J CJ'PJ^xJLJ?$K dK rKK*KKK"K5K.LILdLjL}L L L L L LLLLLLLfMlMMuM(N?NRN"dNN NNN N NNN0N'OAO#VO<zO"OO OO*P03P!dP'PPPP(PTQ fQtQ yQ QQQQQ Q Q Q RR!R0RJRRRcR lRxR RRR R RRRRRRSz/TT TTT TT U2(U[UuU|UUU UU U U V!V&V;^D^Y^n^^^._4_J_=P__1__n_E[```;` ` aa@,amacb,#c,Pc}c cc2c*c ddwdj$e eeee%ee ff3fEfWf qffffffff8f g gg$g ,g 8g DgRg"Yg"|gg g gg g(ghhz'hhhhh h h h hh h i i i ,i 8iCi^ioi"iiii i ij jj$j -j:jTjdjtj j jjjj jjj!k *k8k@kHkQk Ykgkkkkkk k k kk ll.lBlRlgl|lmm 4m@mOmbm smm mmKmmn n%n:nMncn1nn n nn=ioo'p,p(>pgp op}p+pp p8p" q/q@qrCr8brrs8*t1ctRtctQLuu'u:ulvPv-vCwALwKw0w. x:x!x)x-y+Cy8oyCyuy,bzLz;z]{v{Z{gW|J|c }[n}o}:~7~m_[HN^Xp ف72("[~~łqDɃRVj o ȄЄӄ ڄ"$-F_p<Ѕ #$@eˆ#V cz ч. ;GPhHl5m7Y 3aω16;?\.a ͊ 1J!Z|%7GgIyÍ7Ӎu ŽʎЎ؎,4;CZqv Ǐ؏ "* 2 ? JXizȐϐ א5H[d!m!̑ %/6f{ ˒֒ ߒ  . BM do œܓ !7!Vx A((!*J u>;Ǖ'0+\ aelҖMP5%ė "), 7Qf{"ҙ#-QlΚԚښ85#T x ƛ9'М +2/^ )͝l% ˞ *> Wc u; *ǟFvM 91k ~ 7// CNbkɢڢ  t!!!ڣ1`)ͤ/G^qA"ĥ/B,)o0֦92A4t§.٧\ev z ը  0D _i  ĩש#CGJQo$#ЬC 8 Yf̭ӭ  "? \ j v1(̮$ )2\F`D5,)=g y" +>SK P q γճ3Uu)/$ # +Dp ζ,( ?I\o ҷ ĸиG?&QxuI U]NxǺںML;7&#J ^jG#ʽ |a } ##:Q jv}: #*1I ak"s"  . DNk2ETcr+ 15g  %>Tj#-)Wk z  :Kbv3 (<VfM#5Ie1 4e+3G er(8 <+=iz$DRi1A3X{pX'EmAqYA%O=FO7%t&4D)n9]33[!Qd JnZj1o[^IP_bw 50"Psh>w.3E Mn %.7Vua n'7%* =*^*k :C Z(e6%CSlEqHYSZCvrz/!#)E$a *45nCv#=ld B@Twa QjqO 91B)aT'ZSFQYu>"/VJZsG6*[ar`^;XyVb?' <IL:x%AMZ\W88O,*d0)i{J-yK|]:c%}oo0][-Pg6YS&r(\p@X(tM?iE=eD"OU|53 w  fj,#32H 4[ pk {qke;mpgl16U85:`, +Y^L9$qz2fGu(A7N4!d0DNt{F<x_+7vX)nKG+>&9m3 LeUIN Iy E"nsk/<W>PhrVvT]cQmuR$bjD !_@xEl%WK-_7MCwbz/|gcAB` zh~?SC^*tf=\h!H'P#RiF&;$H1~.2 RsJo}.} .~ (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd AccountAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add accountAdd 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 languagesAlt+Always 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 errorCrowdin is an online localization management platform and collaborative translation tool.Ctrl+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 againDownDownloading 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:EnterEnter 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 loading translation file “%s”.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export errorExport 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…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)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport from TMX…Import translation files…Importing translation memory from “%s” 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 CrowdinLeftLine %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 translations were found in the TMX file.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKObsolete stringsOneOnly 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 translation templateOpen...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 translationsQuitQuit %sReading file content failed with the following error: %sRecentRecent 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 FinderReviewRightSaveSave &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 languageServicesSet LanguageSet languageSettingsSettings…Shift+Show AllShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow summary after updating filesShow 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.These strings are no longer in the source code. Poedit will remove them from the file now.These strings were found in the sources but were not in the file. Poedit will add them to the file now.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 entries in the file are probably incorrect.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 errorUntransUpUpdateUpdate 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 the file failed. Click on 'Details >>' for details.Updating 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown 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: 2024-08-30 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Ç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çimiH&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ılavuzu&GitBağ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Ç&eviri&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(0 yeni, 0 eski)(GNU gettext hakkında daha fazla bilgi edinin)(Yeni: %i, eski: %i)(Varsayılan dili kullan)(giriş yapılmadı)(Windows 8 ya da üzeri gerekir)< Ön&ceki%s HakkındaHesapHesaplarEkleHesap EkleAçıklama EkleDosyaları Ekle…Klasörleri Ekle…Proje EkleJoker Karakter Ekle…Hesap ekleAçı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 kullanAlt+İmleç hep çeviri alanına odaklansınGirdi dosyaları listesindeki bir öğe:Anahtar kelimeleri listesindeki bir öğe:GörünüşUygula“%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 bir yerelleştirme yönetimi platformu ve işbirliğine dayalı bir çeviri aracıdır.Ctrl+&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.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östermeAşağı OkEn 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:EnterTam 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.Çeviri dosyası “%s” yüklenirken hata oldu.Dosya açılırken hata olduDosya kaydedilirken hata olduXLIFF dosyası yüklenirken hata oldu: %sHatalarHer şeyHariç tutulan yollarTMX’e Aktar…Dışa farklı aktar…Dışa aktarma hatasıHTML’ye aktar…TMX’e aktar…“%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:Çevrilebilir dizgeler çıkarılıyor…Çıkarıcı kurulumuÇıkarıcılarBaşarısız komut: %sPoedit işlemi ile iletişim kurma başarısız.Çı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.Tamamlanıyor…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ış)SıklıkGNU gettextGenelHTML DosyalarıYardım%s’i GizleDiğerlerini GizleKenar Ç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.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 harfi yoksayTMX’ten Aktar…Çeviri Dosyalarını İçe Aktar…İçe aktarma hatasıTMX’ten aktar…Çeviri dosyalarını içe aktar…“%s” dosyasından çeviri belleğini aktarma başarısız oldu.Çeviriler içe aktarılıyor…İçinde: %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ı:JSON Ç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 edininSolSatı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…&POT/PO dosyasından oluştur…Yeni dizgelerSonraki Ç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.TMX dosyasında bulunan çeviri yok.Kullanım bilgisi yokTüm çoğul biçimler çevrilmedi.Yetkiniz yok, lütfen tekrar giriş yapın.Çevirmenler için notlarTamamEski dizgelerBirBu 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çÇeviri şablonunu 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 referans.Poedit kullanımı kolay bir çeviri düzenleyicisidir.Poedit “%s” dosyasını açamadı.Ön Ç&eviri 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Çık%s’ten ÇıkDosya içeriğini okuma şu hata ile başarısız oldu: %sSonSon dosyalarYineleYenileDosyayı Yeniden YükleDosyayı yeniden yükleKalan: %dKaldırKaynakla Aynı Çevirileri KaldırKaynakla aynı çevirileri kaldırDeğ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çirSağKaydet&Farklı Kaydet…&Farklı kaydet…Yine de KaydetYine de kaydetFarklı kaydetFarklı kaydet…Değişiklikleri kaydetDosyayı kaydetEkran Görüntüleri:&Tümünü SeçTümünü Seçİçe aktarmak için TMX dosyalarını seçDizin seçinÇeviri dosyasını seçinİçe aktarmak için çeviri dosyalarını seçinÇeviri şablonunu seçinTercih ettiğiniz dili seçinHizmetlerDili ayarlaDili ayarlaAyarlarAyarlar…Shift+Tümünü GösterKenar Ç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österDosyalar güncellendikten sonra özet 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 mevcut 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 dizgeDeğ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ı 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 dizgeler artık kaynak kodda yok. Poedit bunları şimdi dosyadan kaldıracak.Bu dizgeler kaynaklarda bulundu ancak dosyada bulunamadı. Poedit bunları şimdi dosyaya ekleyecek.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 dizgeler Gettext sistemine el ile eklenmez ancak kaynak kodundan otomatik olarak çıkarılır. Böylece güncel ve doğru kalırlar. Çevirmenler genellikle geliştirici tarafından hazırlanan PO şablon dosyalarını (POT’ları) kullanır.Bulut projeyi çevirÇevrilen: %d / %d (%% %d)ÇeviriÇeviri DiliÇeviri BelleğiÇalışma &Gereken ÇeviriÇeviri ÖzellikleriDosyadaki çeviri girişleri muhtemelen yanlıştır.Ç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 alBeklenmeyen bir hata oluştu: %sUnix (önerilir)Bilinmeyen Crowdin hatası.Bilinmeyen hataÇevrilmemişYukarı OkGüncelleTü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 olduDosyayı güncelleme başarısız oldu. Ayrıntılar için 'Ayrıntılar >>' üzerine tıklayın.Ç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 %sKimlik doğrulaması için bekleniyor…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ıEvetÇ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ıraltÇalışma Gereklictrlgeçici dosyaları silme (hata ayıklama için)örn. nplurals=2; plural=(n > 1);dosya içinde belirsiz olarak eşleverilen satır numarasındaki öğeye gitBir poedit:// URI'si kullançeviri belleğinden ön çeviri yapshiftbilinmeyen dildesteklenmeyen sürüm (%s)siz@ornek.com“%s” geçerli bir POT dosyası değil.poedit-3.5/locales/co.po0000644000175100001770000020724514664354153012201 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "Piattà stu messaghju di nutificazione" msgid "Don’t Show Again" msgstr "Ùn affissà più" msgid "Don’t show again" msgstr "Ùn affissà più" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(Nove : %i, anziane : %i)" msgid "Collecting source files…" msgstr "Racolta di i schedarii d’origine…" msgid "Extracting translatable strings…" msgstr "Estrazzione di e catene traducevule…" msgid "Failed to load file with extracted translations." msgstr "Fiascu per caricà u schedariu cù e traduzzioni estratte." msgid "Merging differences…" msgstr "Integrazione di e sfarenze…" msgid "Updating translations" msgstr "Mudificazione di e traduzzioni" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "Ùn si pò micca apre u schedariu « %s »." msgid "Invalid file" msgstr "Schedariu inaccettevule" #, c-format msgid "Malformed header: “%s”" msgstr "Intestatura malfuttuta : « %s »" msgid "PO Translation Files" msgstr "Schedarii di Traduzzione PO" msgid "POT Translation Templates" msgstr "Mudelli di traduzzione POT" msgid "XLIFF Translation Files" msgstr "Schedarii di traduzzione XLIFF" msgid "JSON Translation Files" msgstr "Schedarii di traduzzione JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "Schedarii di traduzzione Flutter" msgid "All Translation Files" msgstr "Tutti i schedarii di traduzzione" msgid "The file is in a format not recognized by Poedit." msgstr "U schedariu si trova in un furmatu micca ricunnisciutu da Poedit." 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." #, 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" #, 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." #, c-format msgid "Couldn’t save file %s." msgstr "Ùn si pò micca arregistrà u schedariu %s." msgid "Screenshots:" msgstr "Catture di screnu :" #, 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è." #, 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)." msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" "Schedariu PO alteratu : forma singulare msgstr impiegata inseme cù " "msgid_plural" msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" "Schedariu PO alteratu : forma plurale msgstr impiegata senza msgid_plural" msgid "Couldn’t load the file, it is probably damaged." msgstr "Ùn si pò micca caricà u schedariu, forse hè dannighjatu." 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." msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "Ci hè statu un penseru durante a creazione di u schedariu (ma hè statu " "creatu quantunque)." #, 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." msgid "Error saving file" msgstr "Sbagliu à l’arregistramentu di u schedariu" #, c-format msgid "“%s” is not a valid POT file." msgstr "« %s » ùn hè micca un schedariu POT accettevule." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Sbagliu à u caricamentu di u schedariu XLIFF : %s" #, 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 msgid "Broken markup in translation string." msgstr "Marca rotta in a catena di traduzzione." msgid "(Use default language)" msgstr "(Impiegà a lingua predefinita)" msgid "Language selection" msgstr "Scelta di a lingua" msgid "Select your preferred language" msgstr "Selezziunà a vostra lingua preferita" msgid "You must restart Poedit for this change to take effect." msgstr "Ci vole à rilancià Poedit per piglià stu cambiamentu in contu." msgid "Add Account" msgstr "Aghjunghje un contu" msgid "Add account" msgstr "Aghjunghje un contu" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "Sapene di più nant’à %s" 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." msgid "How does cloud sync work?" msgstr "Cumu funziuneghja a sincrunizazione in u nivulu ?" msgid "Account" msgstr "Contu" msgid "(not signed in)" msgstr "(micca cunnessu)" msgid "File" msgstr "Schedariu" msgid "Open cloud translation" msgstr "Apre a traduzzione in u nivulu" msgid "Manage accounts" msgstr "Amministrà i conti" msgid "Project:" msgstr "Prughjettu :" msgid "Language:" msgstr "Lingua :" msgid "Sign in to Cloud Account" msgstr "Cunnittitevi à u contu di u nivulu" msgid "Sign in to cloud account" msgstr "Cunnittitevi à u contu di u nivulu" msgid "No translation projects listed in your account." msgstr "Ùn ci hè micca prughjettu di traduzzione in u vostru contu." 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" #, c-format msgid "Sign in to %s" msgstr "Cunnettesi à %s" msgid "Syncing" msgstr "Sincrunizazione" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, 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. #, c-format msgid "Uploading translations to %s failed." msgstr "Fiascu di l’incaricamentu di e traduzzioni versu %s." msgid "Syncing error" msgstr "Sbagliu di sincrunizazione" msgid "Add" msgstr "Aghjunghje" msgid "Unknown Crowdin error." msgstr "Sbagliu Crowdin scunnisciutu." msgid "Not authorized, please sign in again." msgstr "Micca auturizatu, autenticassi torna." msgid "Downloading translations is disabled in this project." msgstr "Scaricà e traduzzioni ùn hè micca pussibule cù stu prughjettu." msgid "Sign In" msgstr "Autenticazione" msgid "Sign in" msgstr "Autenticazione" msgid "Sign Out" msgstr "Scunnettassi" msgid "Sign out" msgstr "Scunnettassi" msgid "Learn more about Crowdin" msgstr "Sapene di più nant'à Crowdin" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" "Crowdin hè una piattaforma in linea di ghjestione di lucalizazione è un " "attrezzu di traduzzione in collaborazione." msgid "Waiting for authentication…" msgstr "In attesa d'autenticazione…" msgid "Updating user information…" msgstr "Mudificazione di l’infurmazioni di l’utilizatore…" msgid "Sign in to Crowdin" msgstr "Autenticassi à Crowdin" msgid "Syncing with Crowdin failed." msgstr "Fiascu di a sincrunizazione cù Crowdin." msgid "Crowdin error" msgstr "Sbagliu da Crowdin" msgid "Uploading translations…" msgstr "Incaricamentu di e traduzzioni…" msgid "&Copy" msgstr "Cu&pià" msgid "Learn more" msgstr "Sapene di più" msgid "&Help" msgstr "Ai&utu" msgid "MO files can’t be directly edited in Poedit." msgstr "I schedarii MO ùn ponu micca esse mudificati cù Poedit." msgid "Error opening file" msgstr "Sbagliu à l’apertura di u schedariu" 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ù." msgid "don’t delete temporary files (for debugging)" msgstr "ùn squassà micca i schedarii timpurari (per spannà)" msgid "handle a poedit:// URI" msgstr "manighjà un indirizzu poedit://" msgid "go to item at given line number" msgstr "andà à l’elementu à u numeru di linea specificatu" msgid "Failed to communicate with Poedit process." msgstr "Fiascu di cumunicazione cù u prucessu Poedit." #, c-format msgid "Unhandled exception occurred: %s" msgstr "Un anumalia imprevista hè accaduta : %s" msgid "Select translation template" msgstr "Selezziunà un mudellu di traduzzione" msgid "Select translation file" msgstr "Selezziunà un schedariu di traduzzione" msgid "Poedit is an easy to use translation editor." msgstr "Poedit hè un editore di traduzzione faciule à aduprà." 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." #, c-format msgid "File “%s” is not a translation file." msgstr "U schedariu « %s » ùn hè micca un schedariu di traduzzione." #, c-format msgid "File “%s” doesn’t exist." msgstr "U schedariu « %s » ùn esiste micca." 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". #, 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." msgid "Install" msgstr "Installà" #, c-format msgid "The file “%s” has been changed by another application." msgstr "U schedariu « %s » hè statu mudificatu da un’altra appiecazione." msgid "Reload file" msgstr "Ricaricà u schedariu" 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ì." msgid "Ignore" msgstr "Ignurà" msgid "Reload File" msgstr "Ricaricà u schedariu" msgid "The file has been modified. Do you want to save changes?" msgstr "U schedariu hè statu mudificatu. Vulete arregistrà i cambiamenti ?" msgid "Save changes" msgstr "Arregistrà i cambiamenti" msgid "Your changes will be lost if you don’t save them." msgstr "I vostri cambiamenti seranu persi s’è voi ùn l’arregistrate micca." msgid "Save" msgstr "Arregistrà" msgid "Do&n’t save" msgstr "Ùn arregistrà &micca" msgid "Don’t Save" msgstr "Ùn arregistrà micca" 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." msgid "Cancel" msgstr "Abbandunà" msgid "Save Anyway" msgstr "Arregistrà quantunque" msgid "Save anyway" msgstr "Arregistrà quantunque" msgid "Save as…" msgstr "Arregistrà cù u nome…" msgid "Compile to…" msgstr "Compilà ver di…" msgid "Compiled Translation Files" msgstr "Schedarii di traduzzione cumpilati" msgid "Export to HTML…" msgstr "Espurtà versu HTML…" msgid "HTML Files" msgstr "Schedarii HTML" #, c-format msgid "In: %s" msgstr "In : %s" msgid "Source code not available." msgstr "U testu d’origine ùn hè micca dispunibule." msgid "Updating failed" msgstr "Fiascu di a mudificazione" 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." msgid "Permission denied." msgstr "Permessu ricusatu." 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. 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. 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." msgid "Translation entries in the file are probably incorrect." msgstr "Forse ci hè elementi di traduzzione in u schedariu chì sò incurretti." msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "" "Fiascu di a mudificazione di u schedariu. Sceglie « Detaglii >> » per sapene " "di più." msgid "Open translation template" msgstr "Apre u mudellu di traduzzione" #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "%d penseru trovu in a traduzzione." msgstr[1] "%d penseri trovi in a traduzzione." msgid "Validation results" msgstr "Risultati di a validazione" 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." msgid "The file was saved safely." msgstr "U schedariu hè statu arregistratu bè." 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è." 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." 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è." msgid "The file cannot be compiled into the MO format and used." msgstr "U schedariu ùn pò micca esse trasfurmatu in furmatu MO è impiegatu." msgid "No problems with the translation found." msgstr "Ùn ci hè penseri cù sta traduzzione." #, 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." msgid "The translation is ready for use." msgstr "A traduzzione hè pronta à l'approdu." #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "" "Poedit hà currettu autumaticamente u cuntenutu gattivu in u schedariu « %s »." msgid "" "The file contained duplicate items, which is not allowed in PO files and " "would prevent the file from being used. Poedit fixed the issue, but you " "should review translations of any items marked as 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 penseru, ma ci vole à verificà e traduzzioni di l’elementi chì sò " "marcati « À rivede » è curregeli s’ella hè bisognu." msgid "Language of the translation isn’t set." msgstr "A lingua di a traduzzione ùn hè micca definita." msgid "Set Language" msgstr "Definisce a Lingua" msgid "Set language" msgstr "Definisce a lingua" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." msgid "" "Suggestions are not available if the translation language is not set " "correctly. Other features, such as plural forms, may be affected as well." msgstr "" "E 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." msgid "Language of the translation is the same as source language." msgstr "A lingua di a traduzzione hè listessa chè quella d'origine." msgid "Fix Language" msgstr "Currege a Lingua" msgid "Fix language" msgstr "Currege a lingua" 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." 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" msgid "Required header Plural-Forms is missing." msgstr "L’intestatura Forme-Plurale richiesta hè assente." #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Sbagliu di sintassa in l’intestatura Forme-Plurale (« %s »)." msgid "Fix the Header" msgstr "Currege l’intestatura" 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". #, 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.")" msgid "Review" msgstr "Verificà" msgid "Would you like to use English for source text?" msgstr "Vi piaceria d’impiegà l’inglese per u testu d’origine ?" #, 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" msgid "Load English" msgstr "Caricà l’inglese" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Traduttu : %d frà %d (%d %%)" #, c-format msgid "Remaining: %d" msgstr "Restu : %d" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d sbagliu" msgstr[1] "%d sbaglii" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d entrata" msgstr[1] "%d entrate" msgid " (unsaved)" msgstr " (micca arregistratu)" msgid " (modified)" msgstr " (mudificatu)" #, c-format msgid "Failed to update translation memory: %s" msgstr "Fiascu per mudificà a memoria di a traduzzione: %s" msgid "Remove same-as-source translations" msgstr "Caccià e traduzzioni uguale à l’origine" 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 ?" 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." msgid "Keep" msgstr "Cunservà" msgid "Remove" msgstr "Caccià" msgid "Purge deleted translations" msgstr "Spurgulà e traduzzioni cacciate" msgid "Do you want to remove all translations that are no longer used?" msgstr "Vulete toglie tutte e traduzzioni chì ùn sò più impiegate ?" msgid "" "If you continue with purging, all translations marked as deleted will be " "permanently removed. You will have to translate them again if they are added " "back in the future." msgstr "" "S’è voi cuntinuate cusì, tutte e traduzzioni marchate cum’è cacciate seranu " "tolte per sempre. Ci vulerà à traducele torna s’elle sò aghjunte à l’avvene." msgid "Purge" msgstr "Spurgulà" msgid "Copy from source text" msgstr "Cupià da u testu d’origine" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "Viutà a traduzzione" msgid "Clear Translation" msgstr "Viutà a traduzzione" msgid "Edit comment" msgstr "Mudificà u cummentu" msgid "Edit Comment" msgstr "Mudificà u Cummentu" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "Occurrenze di testu" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "Occurrenze di testu" msgid "Hide Sidebar" msgstr "Piattà a barra laterale" msgid "Show Sidebar" msgstr "Affissà a barra laterale" msgid "Hide Status Bar" msgstr "Piattà a barra di statu" msgid "Show Status Bar" msgstr "Affissà a barra di statu" msgid "String length in characters: translation | source" msgstr "Longhezza di catena in caratteri : traduzzione | origine" msgid "String length in characters" msgstr "Longhezza di catena in caratteri" msgid "Source text" msgstr "Testu d’origine" msgid "Singular" msgstr "Singulare" msgid "Plural" msgstr "Plurale" msgid "Translation" msgstr "Traduzzione" msgid "Pre-translated" msgstr "Pretraduttu" 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. msgid "Needs work" msgstr "À rivede" 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." msgid "Create new translation" msgstr "Creà una nova traduzzione" 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 msgid "Source text ID" msgstr "ID di u testu d’origine" msgid "Everything" msgstr "Tuttu" #, c-format msgid "Form %i" msgstr "Forma %i" #, c-format msgid "Form %i (unused)" msgstr "Forma %i (micca impiegata)" msgid "Zero" msgstr "Zeru" msgid "One" msgstr "Unu" msgid "Two" msgstr "Dui" msgid "Other" msgstr "Altru" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, 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 #, c-format msgid "String identifier: %s" msgstr "Identificazione di catena : %s" #, c-format msgid "%s Format" msgstr "Furmatu %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "Furmatu %s" #, c-format msgid "Translation — %s" msgstr "Traduzzione — %s" msgid "ID" msgstr "ID" #, c-format msgid "Source text — %s" msgstr "Testu d'origine — %s" msgid "unknown language" msgstr "lingua scunnisciuta" #, c-format msgid "Network error: %s (%d)" msgstr "Sbagliu di reta : %s (%d)" msgid "Unknown error" msgstr "Sbagliu scunnisciutu" #, c-format msgid "Failed command: %s" msgstr "Fiascu di a cumanda : %s" msgid "Failed to merge gettext catalogs." msgstr "Fiascu per unisce i cataloghi gettext." msgid "Open in Editor" msgstr "Apre cù l'Editore" msgid "Open in editor" msgstr "Apre cù l'editore" 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." msgid "No usage information" msgstr "Nisuna infurmazione d’adopru" #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d occurrenza di testu" msgstr[1] "%d occurrenze di testu" msgid "Source code not found" msgstr "Ùn si pò truvà u testu d’origine" 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." msgid "File cannot be opened" msgstr "Ùn si pò micca apre u schedariu" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "Poedit ùn pò micca apre u schedariu « %s »." msgid "Find" msgstr "Circà" msgid "Replace" msgstr "Rimpiazzà" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "Ozzioni" msgid "Ignore case" msgstr "Ùn sfarenzià micca maiuscule è minuscule" msgid "Wrap around" msgstr "Circunvoglie" msgid "Whole words only" msgstr "Solu e parolle sane" msgid "Find in source texts" msgstr "Circà in i testi d'origine" msgid "Find in translations" msgstr "Circà in e traduzzioni" msgid "Find in comments" msgstr "Circà in i cummenti" msgid "Close" msgstr "Chjode" msgid "Replace &All" msgstr "&Tuttu rimpiazzà" msgid "Replace &all" msgstr "&Tuttu rimpiazzà" msgid "&Replace" msgstr "&Rimpiazzà" msgid "< &Previous" msgstr "< &Precedente" msgid "&Next >" msgstr "&Seguente >" msgid "String to find" msgstr "Frasa à circà" msgid "Replacement string" msgstr "Frasa di rimpiazzamentu" #, c-format msgid "Cannot execute program: %s" msgstr "Impussibule d’eseguisce u prugramma : %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "Nome o codice di a lingua" msgid "Translation Language" msgstr "Lingua di Traduzzione" msgid "Language of the translation:" msgstr "Lingua di a traduzzione :" msgid "All strings" msgstr "Tutte e catene" msgid "Couldn’t download Localazy project details." msgstr "Impussibule di scaricà i detaglii di u prughjettu Localazy." msgid "There was an error when uploading translations to Localazy." msgstr "" "Un sbagliu hè accadutu à l’incaricamentu di e traduzzioni versu Localazy." msgid "Projects" msgstr "Prughjetti" 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." msgid "Add Project" msgstr "Aghjunghje un prughjettu" msgid "Add project" msgstr "Aghjunghje un prughjettu" msgid "Poedit - Catalogs manager" msgstr "Poedit - Ghjestiunariu di cataloghi" msgid "Edit…" msgstr "Mudificà…" msgid "Create new translations project" msgstr "Creà un novu prughjettu di traduzzioni" msgid "Delete the project" msgstr "Squassà u prughjettu" msgid "Edit the project" msgstr "Mudificà u prughjettu" msgid "Update all" msgstr "Tuttu mudificà" msgid "Update all catalogs in the project" msgstr "Mudificà tutti i cataloghi di stu prughjettu" msgid "Total" msgstr "Tutale" msgid "Untrans" msgstr "Micca traduttu" msgctxt "column/row header" msgid "Needs Work" msgstr "À rivede" msgid "Errors" msgstr "Sbaglii" msgid "Last modified" msgstr "Ultima mudificazione" msgid "Select directory" msgstr "Selezziunà u cartulare" msgid "Directories:" msgstr "Cartulari :" msgid "" msgstr "" #, c-format msgid "Do you want to delete project “%s”?" msgstr "Vulete squassà u prughjettu « %s » ?" msgid "Delete project" msgstr "Squassà u prughjettu" msgid "Deleting the project will not delete any translation files." msgstr "" "A squassatura di u prughjettu ùn squasserà micca i schedarii di traduzzione." msgid "Confirmation" msgstr "Cunfirmazione" msgid "Update all catalogs in this project?" msgstr "Mudificà tutti i cataloghi in stu prughjettu ?" 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." msgid "Check for Updates…" msgstr "Cuntrollà e nove versioni…" msgid "Catalogs Manager" msgstr "Ghjestiunariu di cataloghi" msgid "&Preferences…" msgstr "&Preferenze…" msgid "&Edit" msgstr "&Mudificà" msgid "Undo" msgstr "Disfà" msgid "Redo" msgstr "Rifà" msgid "Paste and Match Style" msgstr "Incullà è fà currisponde u stilu" msgid "Delete" msgstr "Squassà" msgid "Spelling and Grammar" msgstr "Ortugrafia è Gramatica" msgid "Show Spelling and Grammar" msgstr "Affissà Ortugrafia è Gramatica" msgid "Check Document Now" msgstr "Verificà u ducumentu avà" msgid "Check Spelling While Typing" msgstr "Verificà l’ortugrafia durante a scrittura" msgid "Check Grammar With Spelling" msgstr "Verificà a gramatica cù l’ortugrafia" msgid "Correct Spelling Automatically" msgstr "Currege l’ortugrafia autumaticamente" msgid "Substitutions" msgstr "Sustituzioni" msgid "Show Substitutions" msgstr "Affissà i Sustituzioni" msgid "Smart Copy/Paste" msgstr "Cupià/Incullà astutu" msgid "Smart Quotes" msgstr "Virgulette astute" msgid "Smart Dashes" msgstr "Lineette astute" msgid "Smart Links" msgstr "Liami astuti" msgid "Text Replacement" msgstr "Rimpiazzamentu di testu" msgid "Transformations" msgstr "Trasfurmazioni" msgid "Make Upper Case" msgstr "Mette in maiuscule" msgid "Make Lower Case" msgstr "Mette in minuscule" msgid "Capitalize" msgstr "Tuttu in maiuscule" msgid "Speech" msgstr "Discussione" msgid "Start Speaking" msgstr "Principià a lettura" msgid "Stop Speaking" msgstr "Piantà a lettura" msgid "&View" msgstr "&Affissà" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item 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 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 msgid "Enter Full Screen" msgstr "Modu di screnu sanu" msgid "Window" msgstr "Finestra" msgid "Minimize" msgstr "Impuculì" msgid "Zoom" msgstr "Ingrandamentu" msgid "Welcome to Poedit" msgstr "Benvenuta in Poedit" msgid "Bring All to Front" msgstr "Mette Tuttu di Fronte" msgid "Information about the translator" msgstr "Infurmazione apprupositu di u traduttore" msgid "Name:" msgstr "Nome :" msgid "Your Name" msgstr "U vostru nome, cugnome, o casata" msgid "Email:" msgstr "Indirizzu elettronicu :" msgid "you@example.com" msgstr "voi@esempiu.corsica" 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." msgid "Editing" msgstr "Mudificazione" msgid "Automatically compile MO file when saving" msgstr "Pruduce autumaticamente u schedariu MO à l’arregistramentu" msgid "Show summary after updating files" msgstr "Affissà u riassuntu dopu a mudificazione di schedarii" msgid "Check spelling" msgstr "Verificà l’ortugrafia" msgid "Always change focus to text input field" msgstr "Dà a primura à u testu piuttostu chì à a lista" msgid "" "Never let the list of strings take focus. If enabled, you must use Ctrl-" "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." msgid "Appearance" msgstr "Aspettu" msgid "Use custom list font:" msgstr "Impiegà una grafia persunalizata per a lista :" msgid "Use custom text fields font:" msgstr "Impiegà una grafia persunalizata per i testi :" 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 msgid "(requires Windows 8 or newer)" msgstr "(richiede Windows 8 o più recente)" msgid "General" msgstr "Generale" msgid "Use translation memory" msgstr "Impiegà a memoria di traduzzione (MdT)" msgid "Manage…" msgstr "Urganizà…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "Quandu i testi d’origine sò mudificati" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "currispundenze simile in u schedariu" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "pretraduce grazia à a MdT" 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." msgid "Stored translations:" msgstr "Traduzzioni pruviste :" msgid "Database size on disk:" msgstr "Dimensione di a banca di dati nant'à u dischettu :" msgid "Import Translation Files…" msgstr "Impurtà schedarii di traduzzione…" msgid "Import translation files…" msgstr "Impurtà schedarii di traduzzione…" msgid "Import From TMX…" msgstr "Impurtà à partesi di TMX…" msgid "Import from TMX…" msgstr "Impurtà à partesi di TMX…" msgid "Export To TMX…" msgstr "Espurtà ver di TMX…" 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). msgid "Reset" msgstr "Viutà" msgid "Select translation files to import" msgstr "Selezziunà i schedarii di traduzzione à impurtà" msgid "Translation Memory" msgstr "Memoria di Traduzzione" msgid "Importing translations…" msgstr "Impurtazione di i traduzzioni…" #, c-format msgid "Error loading translation file “%s”." msgstr "Sbagliu à u caricamentu di u schedariu di traduzzione « %s »." msgid "Finalizing…" msgstr "Cumpiimentu…" msgid "Select TMX files to import" msgstr "Selezziunà i schedarii TMX à impurtà" msgid "TMX Files" msgstr "Schedarii TMX" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "" "Fiascu à l’impurtazione di a memoria di traduzzione à partesi di « %s »." msgid "Import error" msgstr "Sbagliu à l’impurtazione" msgid "Export as…" msgstr "Espurtà cum’è…" msgid "Exporting translations…" msgstr "Espurtazione di i traduzzioni…" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "Fiascu à l’espurtazione di a memoria di traduzzione ver di « %s »." msgid "Export error" msgstr "Sbagliu à l’espurtazione" msgid "Reset translation memory" msgstr "Viutà a memoria di traduzzione" msgid "Are you sure you want to reset the translation memory?" msgstr "Da veru, vulete viutà a memoria di traduzzione ?" msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "A viotatura di a memoria di traduzzione 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. msgid "TM" msgstr "MdT" msgid "" "Source code extractors are used to find translatable strings in the source " "code files and extract them so that they can be translated." msgstr "" "L’estrattori di testu sò impiegati per truvà e catene traducevule in i " "schedarii di testu d’origine, è estraelle per ch’elle sianu tradutte." msgid "Custom Extractors:" msgstr "Estrattori persunalizati :" msgid "Custom extractors:" msgstr "Estrattori persunalizati :" msgid "GNU gettext" msgstr "GNU gettext" 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)." msgid "Delete extractor" msgstr "Squassà l'attrezzu d'estrazzione" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "Da veru, vulete squassà l’estrattore « %s » ?" msgid "Extractors" msgstr "Estrattori" msgid "Accounts" msgstr "Conti" msgid "Automatically check for updates" msgstr "Cuntrollà autumaticamente i rinnovi" msgid "Include beta versions" msgstr "Inchjude e versioni « beta »" 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." msgid "Updates" msgstr "Rinnovi" 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." msgid "Line endings:" msgstr "Fine di linea :" msgid "Unix (recommended)" msgstr "Unix (ricumandatu)" msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "Cambià di linea à :" msgid "Preserve formatting of existing files" msgstr "Cunservà u furmatu di i schedarii chì esistenu" msgid "Advanced" msgstr "Espertu" msgid "Settings" msgstr "Parametri" msgid "Preparing strings…" msgstr "Approntu di e catene…" msgid "Pre-translating from translation memory…" msgstr "Pretraduzzione da a memoria di traduzzione…" #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "%u catena pretradutta" msgstr[1] "%u catene pretradutte" msgid "Pre-translating…" msgstr "Pretraduzzione…" 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. msgid "Pre-translate" msgstr "Pretraduce" 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." msgid "Cannot pre-translate from unknown language." msgstr "Ùn si pò pretraduce da una lingua scunnisciuta." 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." msgid "Only fill in exact matches" msgstr "Riempie solu e catene uguale" 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." msgid "Don’t mark exact matches as needing work" msgstr "Ùn marcà micca e catene uguale cum’è « À rivede »" 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." 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." #, 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." 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." msgid "No entries could be pre-translated." msgstr "Nisuna entrata ùn hè stata pretradutta." 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." msgid "Cancelling…" msgstr "Abbandonu…" msgid "Drag Folders or Files Here" msgstr "Sguillà quì cartulari o schedarii" msgid "Drag folders or files here" msgstr "Sguillà quì cartulari o schedarii" msgid "Add Folders…" msgstr "Aghjunghje cartulari…" msgid "Add folders…" msgstr "Aghjunghje cartulari…" msgid "Add Files…" msgstr "Aghjunghje schedarii…" msgid "Add files…" msgstr "Aghjunghje schedarii…" msgid "Add Wildcard…" msgstr "Aghjunghje un caratteru genericu…" msgid "Add wildcard…" msgstr "Aghjunghje un caratteru genericu…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) 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" msgid "Show in Explorer" msgstr "Affissà in l’espluratore" msgid "Show in Folder" msgstr "Affissà in u cartulare" msgid "Paths" msgstr "Chjassi" msgid "Excluded paths" msgstr "Chjassi esclusi" msgid "Advanced extraction settings" msgstr "Parametri esperti d’estrazzione" msgid "Extract notes for translators from:" msgstr "Estrae l’annutazioni per i traduttori da :" msgid "Comments prefixed with:" msgstr "I cummenti preffissati da :" msgid "All comments" msgstr "Tutti i cummenti" msgid "Additional xgettext flags:" msgstr "Indicadori xgettext addizziunali :" msgid "Additional keywords" msgstr "Parolle chjave addiziunale" msgid "Name of the project the translation is for" msgstr "Nome di prughjettu per sta traduzzione" msgid "Team name and email address or URL" msgstr "Nome di a squadra è indirizzu elettronicu o URL" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "i.e. : nplurals=2; plural=(n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (ricumandatu)" 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." msgid "Placeholders correctness" msgstr "Esattezza di i campi di sustituzione" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "U campu di sustituzione « %s » hè assente in a traduzzione." #, 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." msgid "Plural form translations" msgstr "Traduzzioni di forma plurale" msgid "Not all plural forms are translated." msgstr "Tutte e forme plurale ùn sò micca tradutte." msgid "Inconsistent upper/lower case" msgstr "Maiuscule/minuscule cuntradittorie" msgid "The translation should start as a sentence." msgstr "A traduzzione duveria principià cum’è una frasa." msgid "The translation should start with a lowercase character." msgstr "A traduzzione duveria principià cù una lettera minuscula." msgid "Inconsistent whitespace" msgstr "Spaziu biancu cuntradittoriu" msgid "The translation doesn’t start with a space." msgstr "A traduzzione ùn principia micca cù un spaziu." 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." msgid "The translation is missing a newline at the end." msgstr "Un saltu di linea manca à a fine di a traduzzione." 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." msgid "The translation is missing a space at the end." msgstr "Un spaziu manca à a fine di a traduzzione." 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." msgid "Punctuation checks" msgstr "Cuntrolli di puntuazione" #, c-format msgid "The translation should end with “%s”." msgstr "A traduzzione duveria finisce cù « %s »." #, c-format msgid "The translation should not end with “%s”." msgstr "A traduzzione ùn duveria micca finisce cù « %s »." #, 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 »." msgid "Cloud" msgstr "Nivulu" msgid "Clear Menu" msgstr "Viutà sta lista" msgid "Clear menu" msgstr "Viutà sta lista" msgid "Comment:" msgstr "Cummentu :" msgid "Update" msgstr "Mudificà" msgid "&Delete" msgstr "&Squassà" msgid "Delete the comment" msgstr "Squassà u cummentu" msgid "Edit project" msgstr "Mudificà u prughjettu" msgid "Project name:" msgstr "Nome di prughjettu :" msgid "Browse" msgstr "Sfuglià" msgid "Add directory to the list" msgstr "Aghjunghje u cartulare à a lista" msgid "OK" msgstr "Vai" msgid "&File" msgstr "&Schedariu" msgid "&New…" msgstr "&Novu…" msgid "New from &POT/PO file…" msgstr "Novu da un schedariu P&OT/PO…" msgid "New From &POT/PO File…" msgstr "Novu da un schedariu P&OT/PO…" msgid "&Open…" msgstr "&Apre…" msgid "Open Recent" msgstr "Apre Recente" msgid "Open recent" msgstr "Apre recente" msgid "Open cloud translation…" msgstr "Apre a traduzzione in u nivulu…" msgid "Open Cloud Translation…" msgstr "Apre a traduzzione in u nivulu…" msgid "&Start window" msgstr "&Finestra d’accolta" msgid "&Start Window" msgstr "&Finestra d’accolta" msgid "Catalogs &manager" msgstr "A&mministratore di cataloghi" msgid "Catalogs &Manager" msgstr "A&mministratore di Cataloghi" msgid "&Close" msgstr "&Chjode" msgid "&Save" msgstr "A&rregistrà" msgid "Save &as…" msgstr "Arregistrà &cù u nome…" msgid "Save &As…" msgstr "Arregistrà &cù u nome…" msgid "Compile to MO…" msgstr "Trasfurmà in un schedariu MO…" msgid "E&xport to HTML…" msgstr "Espurtà versu &HTML…" msgid "Check for updates…" msgstr "Cuntrollà e nove versioni…" msgid "Settings…" msgstr "Parametri…" msgid "&Preferences" msgstr "&Preferenze" msgid "E&xit" msgstr "&Esce" msgid "Quit" msgstr "Esce" msgid "Copy from singular" msgstr "Cupià da singulare" msgid "Copy From Singular" msgstr "Cupià da singulare" msgid "Translation needs &work" msgstr "Traduzzione « À ri&vede »" msgid "Translation Needs &Work" msgstr "Traduzzione « À ri&vede »" msgid "Edit &comment" msgstr "&Mudificà u cummentu" msgid "Edit &Comment" msgstr "&Mudificà u Cummentu" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "Sugestioni" msgid "&Find…" msgstr "&Circà…" msgid "Replace…" msgstr "Rimpiazzà…" msgid "Find next" msgstr "Circà seguente" msgid "Find previous" msgstr "Circà precedente" msgid "Find and Replace…" msgstr "Circà è rimpiazzà…" msgid "Find Next" msgstr "Circà seguente" msgid "Find Previous" msgstr "Circà precedente" msgid "Show string &ID" msgstr "Affissà &ID di a catena" msgid "Show String &ID" msgstr "Affissà &ID di a catena" msgid "Show warnings" msgstr "Affissà l’avertimenti" msgid "Show Warnings" msgstr "Affissà l’avertimenti" msgid "Sort by &file order" msgstr "&Classificà da l’ordine di u schedariu" msgid "Sort by &File Order" msgstr "&Classificà da l’ordine di u schedariu" msgid "Sort by &source" msgstr "Classificà da u testu d’&origine" msgid "Sort by &Source" msgstr "Classificà da u testu d’&origine" msgid "Sort by &translation" msgstr "Classificà da a &traduzzione" msgid "Sort by &Translation" msgstr "Classificà da a &traduzzione" msgid "&Group by context" msgstr "&Gruppà da u contestu" msgid "&Group By Context" msgstr "&Gruppà da u contestu" msgid "Entries with errors first" msgstr "Elementi cù &sbaglii in primu" msgid "Entries with Errors First" msgstr "Elementi cù Sbaglii in Primu" msgid "&Untranslated entries first" msgstr "&Elementi micca tradutti in primu" msgid "&Untranslated Entries First" msgstr "&Elementi micca tradutti in primu" msgid "&Show code occurrences" msgstr "&Affissà l’occurrenze di testu" msgid "&Show Code Occurrences" msgstr "&Affissà l’occurrenze di testu" msgid "Show sidebar" msgstr "Affissà a barra laterale" msgid "Show status bar" msgstr "Affissà a barra di statu" msgid "&Translation" msgstr "&Traduzzione" msgid "&Update from source code" msgstr "&Mudificà da u testu d’origine" msgid "&Update from Source Code" msgstr "&Mudificà da u testu d’origine" msgid "Update from &POT file…" msgstr "Mudificà da un schedariu P&OT…" msgid "Update from &POT File…" msgstr "Mudificà da un schedariu P&OT…" msgid "Sync with Crowdin" msgstr "Sincrunizà cù Crowdin" msgid "Pre-&translate…" msgstr "Pre-&traduce…" msgid "&Validate translations" msgstr "&Validà e traduzzione" msgid "&Validate Translations" msgstr "&Validà e traduzzione" msgid "Remove Same-as-Source Translations" msgstr "Caccià e traduzzioni uguale à l’origine" msgid "&Purge deleted translations" msgstr "Sp&urgulà e traduzzioni cacciate" msgid "&Purge Deleted Translations" msgstr "Sp&urgulà e traduzzioni cacciate" msgid "&Properties…" msgstr "&Pruprietà…" msgid "&Go" msgstr "&Và" msgid "&Done and next" msgstr "&Fattu eppò seguente" msgid "&Done and Next" msgstr "&Fattu eppò seguente" msgid "Previously edited" msgstr "Mudificatu nanzu" msgid "Previously Edited" msgstr "Mudificatu nanzu" msgid "&Previous translation" msgstr "Traduzzione &precedente" msgid "&Previous Translation" msgstr "Traduzzione &Precedente" msgid "&Next translation" msgstr "Traduzzione &seguente" msgid "&Next Translation" msgstr "Traduzzione &Seguente" msgid "P&revious unfinished" msgstr "Incumpleta p&recedente" msgid "P&revious Unfinished" msgstr "Incumpleta p&recedente" msgid "Ne&xt unfinished" msgstr "Incumpleta s&eguente" msgid "Ne&xt Unfinished" msgstr "Incumpleta s&eguente" msgid "Previous plural form" msgstr "Forma plurale precedente" msgid "Previous Plural Form" msgstr "Forma plurale precedente" msgid "Next plural form" msgstr "Forma plurale seguente" msgid "Next Plural Form" msgstr "Forma plurale seguente" msgid "&Online help" msgstr "Aiutu &inlinea" msgid "&Online Help" msgstr "Aiutu &Inlinea" msgid "&GNU gettext manual" msgstr "&Ducumentazione GNU gettext" msgid "&GNU gettext Manual" msgstr "&Ducumentazione GNU gettext" msgid "&About Poedit" msgstr "&Apprupositu di Poedit" msgid "&About" msgstr "&Apprupositu" msgid "Extractor setup" msgstr "Installazione di l’estrattore" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Lista di l’estensioni staccate da punti-virgule (i.e. *.cpp;*.h) :" msgid "Invocation:" msgstr "Chjama :" msgid "Command to extract translations:" msgstr "Cumanda per estrae e traduzzioni :" 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ò)." msgid "An item in keywords list:" msgstr "Un elementu in a lista di e parolle chjave :" msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Què serà aghjuntu à a linea di cumanda una volta per ogni\n" "parolla chjave. %k serà rimpiazzatu da a parolla chjave." msgid "An item in input files list:" msgstr "Un elementu in a lista di schedarii d’entrata :" #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "Què serà aghjuntu à a linea di cumanda una volta per ogni\n" "schedariu d’entrata.\n" "%f serà rimpiazzatu da u nome di schedariu." msgid "Source code charset:" msgstr "Gruppu di caratteri di u testu d’origine :" #, 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." msgid "Translation Properties" msgstr "Pruprietà di a traduzzione" msgid "Project name and version:" msgstr "Nome è versione di prughjettu :" msgid "Language team:" msgstr "Squadra di traduzzione :" msgid "Plural forms:" msgstr "Forme plurale :" msgid "Use default rules for this language" msgstr "Impiegà e regule predefinite per sta lingua" msgid "Use custom expression" msgstr "Impiegà un espressione predefinita" msgid "Learn about plural forms" msgstr "Per amparà nant’à e forme plurale" msgid "Charset:" msgstr "Gruppu di caratteri :" msgid "Advanced Extraction Settings…" msgstr "Parametri esperti d’estrazzione…" msgid "Advanced extraction settings…" msgstr "Parametri esperti d’estrazzione…" msgid "Translation properties" msgstr "Pruprietà di a traduzzione" msgid "Sources Paths" msgstr "Chjassi d’origine" msgid "Sources paths" msgstr "Chjassi d’origine" msgid "Extract text from source files in the following directories:" msgstr "Estrae testu da i schedarii d’origine in sti cartulari :" msgid "Base path:" msgstr "Chjassu di basa :" msgid "Sources Keywords" msgstr "Parolle chjave di testi d’origine" msgid "Sources keywords" msgstr "Parolle chjave di testi d’origine" 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 :" msgid "Also use default keywords for supported languages" msgstr "Impiegà dinù parolle chjave predefinite per e lingue accettate" msgid "Learn about gettext keywords" msgstr "Per amparà nant’à e parolle chjave gettext" msgid "Update summary" msgstr "Riassuntu di e mudificazioni" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" "Ste catene sò state trove in i testi d’origine ma micca in u schedariu.\n" "Poedit hà da aghjunghjele à u schedariu avà." msgid "New strings" msgstr "Frase nove" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" "Ste catene ùn sò più in u testu d’origine.\n" "Poedit hà da togliele da u schedariu avà." msgid "Obsolete strings" msgstr "Catene anziane" msgid "(0 new, 0 obsolete)" msgstr "(0 nova, 0 anziana)" msgid "Open" msgstr "" msgid "Open file" msgstr "Apre u schedariu" msgid "Save file" msgstr "Arregistrà u schedariu" msgid "Validate" msgstr "Validazione" msgid "Check for errors in the translation" msgstr "Circà i sbaglii in a traduzzione" msgid "Update from code" msgstr "Mudificà da u testu" msgid "Update from Code" msgstr "Mudificà da u testu" msgid "Update from source code" msgstr "Mudificà da u testu d’origine" msgid "Sidebar" msgstr "Barra laterale" 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. msgid "Previous source text" msgstr "U testu d’origine precedente" 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à." msgid "Notes for translators" msgstr "Annutazioni per i traduttori" msgid "Comment" msgstr "Cummentu" msgid "Add comment" msgstr "Aghjunghje un cummentu" msgid "Add Comment" msgstr "Aghjunghje un Cummentu" msgid "Delete From Translation Memory" msgstr "Squassà da a memoria di traduzzione" msgid "Delete from translation memory" msgstr "Squassà da a memoria di traduzzione" msgid "Translation suggestions" msgstr "Sugestioni di traduzzione" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). msgid "No matches found" msgstr "Nisuna currispundenza trova" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). msgid "No Matches Found" msgstr "Nisuna currispundenza trova" msgid "This string was found in Poedit’s translation memory." msgstr "Sta catena hè stata trova in a memoria di traduzzione di Poedit." 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." 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." msgid "The TMX file is malformed." msgstr "U schedariu TMX hè malfuttutu." msgid "No translations were found in the TMX file." msgstr "Ùn ci hè alcuna traduzzione in u schedariu TMX." #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "A basa di dati di a memoria di traduzzione hè alterata : %s (%d)." #, c-format msgid "Translation memory error: %s (%d)." msgstr "Sbagliu di a memoria di traduzzione : %s (%d)." msgid "Cannot create temporary directory." msgstr "Ùn si pò micca creà u cartulare timpurariu." msgid "There are no translations. That’s unusual." msgstr "Ùn ci hè micca elementi. Pare stranu st’affare." msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "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\n" "autumaticamente da u testu d’origine. Cusì, sò sempre attualizati è esatti. " "Di bona regula,\n" "i traduttori impieganu i schedarii di mudellu PO (POT) appruntati da u " "prugrammatore." msgid "(Learn more about GNU gettext)" msgstr "(Sapene di più nant’à GNU gettext)" 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 :" msgid "Update from POT" msgstr "Mudificà da un POT" msgid "Take translatable strings from an existing POT template." msgstr "Piglià e catene traducevule da un mudellu POT chì esiste." msgid "" "You can also extract translatable strings directly from the source code:" msgstr "Pudete dinù estrae e catene traducevule da i schedarii d’origine :" msgid "Extract from sources" msgstr "Estrae da i schedarii d’origine" 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 #, c-format msgid "Version %s" msgstr "Versione %s" msgid "Create new" msgstr "Creà una nova" msgid "Create new translation from POT template." msgstr "Creà una nova traduzzione da un mudellu POT." msgid "Browse files" msgstr "Navigazione" msgid "Open and edit translation files." msgstr "Apre è mudificà schedarii di traduzzione." msgid "Translate cloud project" msgstr "Traduce u prughjettu di u nivulu" msgid "Collaborate with other people online." msgstr "Cullaburate in linea cù d’altre persone." msgid "Recent files" msgstr "Schedarii recente" msgid "Sync" msgstr "Sincrunizà" 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") #, 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. #, c-format msgid "%s Preferences" msgstr "Preferenze di %s" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "Servizii" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "Piattà %s" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "Piattà l’altri" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "Tuttu affissà" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "Esce %s" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "Preferenze…" msgid "Preferences..." msgstr "Preferenze…" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "Recente" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "Frequente" msgid "&Apply" msgstr "&Appiecà" msgid "Apply" msgstr "Appiecà" msgid "&Back" msgstr "&Ritornu" msgid "Back" msgstr "Ritornu" msgid "&Cancel" msgstr "&Abbandunà" msgid "&Clear" msgstr "&Spurgulà" msgid "Clear" msgstr "Squassà" msgid "Copy" msgstr "Cupià" msgid "Cu&t" msgstr "&Taglià" msgid "Cut" msgstr "Taglià" msgid "Edit" msgstr "Mudificà" msgid "&Quit" msgstr "&Esce" msgid "Help" msgstr "Aiutu" msgid "&New" msgstr "&Novu" msgid "New" msgstr "Novu" msgid "&No" msgstr "I&nnò" msgid "No" msgstr "Nò" msgid "&OK" msgstr "&Vai" msgid "Open…" msgstr "Apre…" msgid "&Open..." msgstr "&Apre…" msgid "Open..." msgstr "Apre…" msgid "&Paste" msgstr "&Incullà" msgid "Paste" msgstr "Incullà" msgid "Preferences" msgstr "Preferenze" msgid "&Redo" msgstr "&Rifà" msgid "Refresh" msgstr "Attualizà" msgid "&Save as" msgstr "&Arregistrà cù u nome" msgid "Save as" msgstr "Arregistrà cù u nome" msgid "Select &All" msgstr "T&uttu selezziunà" msgid "Select All" msgstr "Tuttu selezziunà" msgid "&Undo" msgstr "&Disfà" msgid "&Yes" msgstr "&Sì" msgid "Yes" msgstr "Sì" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Maiusc+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Entrée" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "Sù" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "Ghjò" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "Manca" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "Diritta" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "maiusc" poedit-3.5/locales/fi.po0000644000175100001770000020106414664354153012167 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "Piilota tämä ilmoitus" msgid "Don’t Show Again" msgstr "Älä näytä enää" msgid "Don’t show again" msgstr "Älä näytä enää" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(Uusia: %i, vanhentuneita: %i)" msgid "Collecting source files…" msgstr "Kerätään lähdetiedostoja…" msgid "Extracting translatable strings…" msgstr "Poimitaan käännettävät tekstit…" msgid "Failed to load file with extracted translations." msgstr "Poimitut käännökset sisältävän tiedoston lataaminen epäonnistui." msgid "Merging differences…" msgstr "Yhdistetään eroavaisuuksia…" msgid "Updating translations" msgstr "Päivitetään käännöksiä" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "Tiedostoa \"%s\" ei voitu avata." msgid "Invalid file" msgstr "Virheellinen tiedosto" #, c-format msgid "Malformed header: “%s”" msgstr "Vääränmuotoinen otsake: ”%s”" msgid "PO Translation Files" msgstr "PO-käännöstiedostot" msgid "POT Translation Templates" msgstr "POT-käännöspohjat" msgid "XLIFF Translation Files" msgstr "XLIFF-käännöstiedostot" msgid "JSON Translation Files" msgstr "JSON-käännöstiedostot" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "Flutter-käännöstiedostot" msgid "All Translation Files" msgstr "Kaikki käännöstiedostot" msgid "The file is in a format not recognized by Poedit." msgstr "Tiedosto on muodossa, jota Poedit ei tunnista." 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ä." #, c-format msgid "Reading file content failed with the following error: %s" msgstr "Tiedoston sisällön luku epäonnistui: %s" #, 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ä." #, c-format msgid "Couldn’t save file %s." msgstr "Tiedostoa %s ei voitu tallentaa." msgid "Screenshots:" msgstr "Kuvankaappaukset:" #, 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." #, 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)." 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" msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" "Rikkinäinen PO-tiedosto: monikkomuotoista msgstr:ää käytetty ilman " "msgid_plural:ia" msgid "Couldn’t load the file, it is probably damaged." msgstr "Tiedostoa ei voitu ladata. Se on todennäköisesti vioittunut." 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." msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "Tiedoston muotoilemisessa oli ongelma (mutta sen tallennus onnistui)." #, 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." msgid "Error saving file" msgstr "Virhe tallennettaessa tiedostoa" #, c-format msgid "“%s” is not a valid POT file." msgstr "”%s” ei ole kelvollinen POT-tiedosto." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Virhe ladattaessa XLIF-tiedostoa: %s." #, 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 msgid "Broken markup in translation string." msgstr "Käännöstekstissä on merkkausvirhe." msgid "(Use default language)" msgstr "(Käytä oletuskieltä)" msgid "Language selection" msgstr "Kielen valinta" msgid "Select your preferred language" msgstr "Valitse ensisijainen kieli" msgid "You must restart Poedit for this change to take effect." msgstr "Poedit täytyy käynnistää uudestaan muutoksien käyttöön ottamiseksi." msgid "Add Account" msgstr "Lisää tili" msgid "Add account" msgstr "Lisää tili" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "Lisätietoja palvelusta %s" 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." msgid "How does cloud sync work?" msgstr "Miten pilvisynkronointi toimii?" msgid "Account" msgstr "Tili" msgid "(not signed in)" msgstr "(ei kirjautunut)" msgid "File" msgstr "Tiedosto" msgid "Open cloud translation" msgstr "Avaa pilvikäännös" msgid "Manage accounts" msgstr "Hallitse tilejä" msgid "Project:" msgstr "Projekti:" msgid "Language:" msgstr "Kieli:" msgid "Sign in to Cloud Account" msgstr "Kirjaudu pilvitilille" msgid "Sign in to cloud account" msgstr "Kirjaudu pilvitilille" msgid "No translation projects listed in your account." msgstr "Tililläsi ei ole käännösprojekteja." msgid "Downloading latest translations…" msgstr "Ladataan uusimmat käännökset…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #, c-format msgid "Sign in to %s" msgstr "Kirjaudu palveluun %s" msgid "Syncing" msgstr "Synkronoidaan" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, 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. #, c-format msgid "Uploading translations to %s failed." msgstr "Käännösten tallennus palveluun %s epäonnistui." msgid "Syncing error" msgstr "Synkronointivirhe" msgid "Add" msgstr "Lisää" msgid "Unknown Crowdin error." msgstr "Tuntematon Crowdin-virhe." msgid "Not authorized, please sign in again." msgstr "Ei valtuutusta; kirjaudu uudelleen." msgid "Downloading translations is disabled in this project." msgstr "Käännösten lataus on poistettu käytöstä tässä projektissa." msgid "Sign In" msgstr "Kirjaudu" msgid "Sign in" msgstr "Kirjaudu" msgid "Sign Out" msgstr "Kirjaudu ulos" msgid "Sign out" msgstr "Kirjaudu ulos" msgid "Learn more about Crowdin" msgstr "Lisätietoja Crowdinista" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" "Crowdin on verkkopohjainen lokalisointialusta ja yhteisöllinen " "käännöstyökalu." msgid "Waiting for authentication…" msgstr "Odotetaan todennusta…" msgid "Updating user information…" msgstr "Päivitetään käyttäjätietoja…" msgid "Sign in to Crowdin" msgstr "Kirjaudu Crowdiniin" msgid "Syncing with Crowdin failed." msgstr "Synkronointi Crowdiniin epäonnistui." msgid "Crowdin error" msgstr "Crowdin-virhe" msgid "Uploading translations…" msgstr "Lähetetään käännöksiä…" msgid "&Copy" msgstr "&Kopioi" msgid "Learn more" msgstr "Lue lisää" msgid "&Help" msgstr "&Ohje" msgid "MO files can’t be directly edited in Poedit." msgstr "MO-tiedostoja ei voi suoraan muokata Poeditillä." msgid "Error opening file" msgstr "Virhe tiedoston avaamisessa" msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "Avaa ja muokkaa sen sijaan vastaavaa PO-tiedostoa. Kun se tallennetaan, MO-" "tiedosto päivittyy samalla." msgid "don’t delete temporary files (for debugging)" msgstr "älä poista tilapäistiedostoja (vianjäljitystä varten)" msgid "handle a poedit:// URI" msgstr "käsittele poedit://-osoite" msgid "go to item at given line number" msgstr "siirry annetulla rivillä olevaan kohtaan" msgid "Failed to communicate with Poedit process." msgstr "Kommunikointi Poedit-prosessin kanssa epäonnistui." #, c-format msgid "Unhandled exception occurred: %s" msgstr "Tapahtui käsittelemätön poikkeus: %s" msgid "Select translation template" msgstr "Valitse käännösmalli" msgid "Select translation file" msgstr "Valitse käännöstiedosto" msgid "Poedit is an easy to use translation editor." msgstr "Poedit on helppokäyttöinen käännöseditori." msgid "You can’t drop more than one file on Poedit window." msgstr "Poedit-ikkunaan voi pudottaa vain yhden tiedoston." #, c-format msgid "File “%s” is not a translation file." msgstr "Tiedosto ”%s” ei ole käännöstiedosto." #, c-format msgid "File “%s” doesn’t exist." msgstr "Tiedostoa ”%s” ei ole olemassa." 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". #, 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." msgid "Install" msgstr "Asenna" #, c-format msgid "The file “%s” has been changed by another application." msgstr "Toinen sovellus on muuttanut tiedostoa “%s”." msgid "Reload file" msgstr "Lataa tiedosto uudelleen" 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." msgid "Ignore" msgstr "Ohita" msgid "Reload File" msgstr "Lataa tiedosto uudelleen" msgid "The file has been modified. Do you want to save changes?" msgstr "Tiedostoa on muokattu. Haluatko tallentaa muutokset?" msgid "Save changes" msgstr "Tallenna muutokset" msgid "Your changes will be lost if you don’t save them." msgstr "Muutokset menetetään, ellet tallenna niitä." msgid "Save" msgstr "Tallenna" msgid "Do&n’t save" msgstr "&Älä tallenna" msgid "Don’t Save" msgstr "Älä tallenna" msgid "The changes made by the other application will be lost if you save." msgstr "Toisen sovelluksen tekemät muutokset menetetään, jos tallennat." msgid "Cancel" msgstr "Peruuta" msgid "Save Anyway" msgstr "Tallenna silti" msgid "Save anyway" msgstr "Tallenna silti" msgid "Save as…" msgstr "Tallenna nimellä…" msgid "Compile to…" msgstr "Muunna…" msgid "Compiled Translation Files" msgstr "Muunnetut käännöstiedostot" msgid "Export to HTML…" msgstr "Vie HTML-tiedostoon…" msgid "HTML Files" msgstr "HTML-tiedostot" #, c-format msgid "In: %s" msgstr "Tiedosto: %s" msgid "Source code not available." msgstr "Lähdekoodi ei ole käytettävissä." msgid "Updating failed" msgstr "Päivitys epäonnistui" msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "Käännösten päivittäminen lähdekoodista ei onnistunut, koska tiedoston " "ominaisuuksissa annetusta sijainnista ei löytynyt koodia." msgid "Permission denied." msgstr "Lupa evätty." 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. 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. 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." msgid "Translation entries in the file are probably incorrect." msgstr "Tiedoston käännösviestit ovat luultavasti virheellisiä." msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "" "Tiedoston päivitys epäonnistui. Valitse ”Lisää >>” saadaksesi lisätietoja." msgid "Open translation template" msgstr "Avaa käännöspohja" #, 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." msgid "Validation results" msgstr "Validoinnin tulokset" 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ä." msgid "The file was saved safely." msgstr "Tiedosto tallennettiin turvallisesti." 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." 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ää." msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "Tiedosto muunnettiin MO-muotoon, mutta se ei todennäköisesti toimi oikein." msgid "The file cannot be compiled into the MO format and used." msgstr "Tiedostoa ei voi muuntaa MO-muotoon eikä sitä voi käyttää." msgid "No problems with the translation found." msgstr "Käännöksestä ei löytynyt ongelmia." #, 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ä." msgid "The translation is ready for use." msgstr "Käännös on käyttövalmis." #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "Poedit korjasi automaattisesti tiedoston ”%s” virheellisen sisällön." msgid "" "The file contained duplicate items, which is not allowed in PO files and " "would prevent the file from being used. Poedit fixed the issue, but you " "should review translations of any items marked as 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." msgid "Language of the translation isn’t set." msgstr "Käännöksen kieltä ei ole asetettu." msgid "Set Language" msgstr "Aseta kieli" msgid "Set language" msgstr "Aseta kieli" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." msgid "" "Suggestions are not available if the translation language is not set " "correctly. Other features, such as plural forms, may be affected as well." msgstr "" "Ehdotukset eivät ole käytettävissä, jos käännöksen kieltä ei ole asetettu " "oikein. Muut ominaisuudet, kuten monikkomuodot, voivat myös toimia väärin." msgid "Language of the translation is the same as source language." msgstr "Käännöksen kieli on sama kuin lähdekieli." msgid "Fix Language" msgstr "Korjaa kieli" msgid "Fix language" msgstr "Korjaa kieli" msgid "" "This 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." 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" msgid "Required header Plural-Forms is missing." msgstr "Pakollinen otsake Plural-Forms puuttuu." #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Kielioppivirhe Plural-Forms -otsakkeessa (”%s”)." msgid "Fix the Header" msgstr "Korjaa otsake" 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". #, 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.")" msgid "Review" msgstr "Katselmointi" msgid "Would you like to use English for source text?" msgstr "Haluatko käyttää englanninkielistä lähdetekstiä?" #, 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" msgid "Load English" msgstr "Lataa englanti" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Käännetty: %d/%d (%d %%)" #, c-format msgid "Remaining: %d" msgstr "Jäljellä: %d" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d virhe" msgstr[1] "%d virhettä" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d viesti" msgstr[1] "%d viestiä" msgid " (unsaved)" msgstr " (tallentamaton)" msgid " (modified)" msgstr " (muokattu)" #, c-format msgid "Failed to update translation memory: %s" msgstr "Käännösmuistin päivitys epäonnistui: %s" msgid "Remove same-as-source translations" msgstr "Poista lähteestä kopioidut käännökset" 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?" 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." msgid "Keep" msgstr "Pidä" msgid "Remove" msgstr "Poista" msgid "Purge deleted translations" msgstr "Puhdista poistetut käännökset" 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ä?" 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." msgid "Purge" msgstr "Puhdista" msgid "Copy from source text" msgstr "Kopioi lähdetekstistä" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "Tyhjennä käännös" msgid "Clear Translation" msgstr "Tyhjennä käännös" msgid "Edit comment" msgstr "Muokkaa kommenttia" msgid "Edit Comment" msgstr "Muokkaa kommenttia" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "Esiintymät koodissa" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "Esiintymät koodissa" msgid "Hide Sidebar" msgstr "Piilota sivupalkki" msgid "Show Sidebar" msgstr "Näytä sivupalkki" msgid "Hide Status Bar" msgstr "Piilota tilarivi" msgid "Show Status Bar" msgstr "Näytä tilarivi" msgid "String length in characters: translation | source" msgstr "Tekstin pituus merkkeinä: käännös | lähde" msgid "String length in characters" msgstr "Tekstin pituus merkkeinä" msgid "Source text" msgstr "Lähdeteksti" msgid "Singular" msgstr "Yksikkö" msgid "Plural" msgstr "Monikko" msgid "Translation" msgstr "Käännös" msgid "Pre-translated" msgstr "Esikäännetty" 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. msgid "Needs work" msgstr "Keskeneräinen" msgid "" "POT files are only templates and don’t contain any translations themselves.\n" "To make a translation, create a new PO file based on the template." msgstr "" "POT-tiedostot ovat pelkkiä käännöspohjia, eivätkä itse sisällä käännöksiä.\n" "Tee käännös luomalla uusi PO-tiedosto käännöspohjan perusteella." msgid "Create new translation" msgstr "Luo uusi käännös" msgid "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 msgid "Source text ID" msgstr "Lähdetekstin ID" msgid "Everything" msgstr "Kaikki" #, c-format msgid "Form %i" msgstr "Muoto %i" #, c-format msgid "Form %i (unused)" msgstr "Muoto %i (käyttämätön)" msgid "Zero" msgstr "Nolla" msgid "One" msgstr "Yksi" msgid "Two" msgstr "Kaksi" msgid "Other" msgstr "Muut" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, c-format msgid "String context: %s" msgstr "Merkkijonon konteksti: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #, c-format msgid "String identifier: %s" msgstr "Merkkijonon tunniste: %s" #, c-format msgid "%s Format" msgstr "%s-muotoilu" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "%s-muotoilu" #, c-format msgid "Translation — %s" msgstr "Käännös — %s" msgid "ID" msgstr "ID" #, c-format msgid "Source text — %s" msgstr "Lähdeteksti — %s" msgid "unknown language" msgstr "tuntematon kieli" #, c-format msgid "Network error: %s (%d)" msgstr "Verkkovirhe: %s (%d)" msgid "Unknown error" msgstr "Tuntematon virhe" #, c-format msgid "Failed command: %s" msgstr "Epäonnistunut komento: %s" msgid "Failed to merge gettext catalogs." msgstr "Gettext-katalogien yhdistäminen epäonnistui." msgid "Open in Editor" msgstr "Avaa editorissa" msgid "Open in editor" msgstr "Avaa editorissa" 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." msgid "No usage information" msgstr "Ei käyttötietoja" #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d esiintymä koodissa" msgstr[1] "%d esiintymää koodissa" msgid "Source code not found" msgstr "Lähdekoodia ei löydy" 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." msgid "File cannot be opened" msgstr "Tiedostoa ei voi avata" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "Poedit ei onnistunut avaamaan tiedostoa ”%s”." msgid "Find" msgstr "Etsi" msgid "Replace" msgstr "Korvaa" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "Valinnat" msgid "Ignore case" msgstr "Älä huomioi kirjainkokoa" msgid "Wrap around" msgstr "Jatka alusta" msgid "Whole words only" msgstr "Vain kokonaiset sanat" msgid "Find in source texts" msgstr "Etsi lähdeteksteistä" msgid "Find in translations" msgstr "Etsi käännöksistä" msgid "Find in comments" msgstr "Hae kommenteista" msgid "Close" msgstr "Sulje" msgid "Replace &All" msgstr "Korvaa k&aikki" msgid "Replace &all" msgstr "Korvaa k&aikki" msgid "&Replace" msgstr "&Korvaa" msgid "< &Previous" msgstr "< &Edellinen" msgid "&Next >" msgstr "&Seuraava >" msgid "String to find" msgstr "Etsittävä teksti" msgid "Replacement string" msgstr "Korvaava teksti" #, c-format msgid "Cannot execute program: %s" msgstr "Ei voida suorittaa ohjelmaa: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "Kielen nimi tai koodi" msgid "Translation Language" msgstr "Käännöksen kieli" msgid "Language of the translation:" msgstr "Käännöksen kieli:" msgid "All strings" msgstr "Kaikki merkkijonot" msgid "Couldn’t download Localazy project details." msgstr "Localazy-projektin tietoja ei voitu ladata." msgid "There was an error when uploading translations to Localazy." msgstr "Virhe tallennettaessa käännöksiä Localazyyn." msgid "Projects" msgstr "Projektit" 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." msgid "Add Project" msgstr "Lisää projekti" msgid "Add project" msgstr "Lisää projekti" msgid "Poedit - Catalogs manager" msgstr "Poedit - Katalogien hallinta" msgid "Edit…" msgstr "Muokkaa…" msgid "Create new translations project" msgstr "Luo uusi käännösprojekti" msgid "Delete the project" msgstr "Poista projekti" msgid "Edit the project" msgstr "Muokkaa projektia" msgid "Update all" msgstr "Päivitä kaikki" msgid "Update all catalogs in the project" msgstr "Päivitä projektin kaikki katalogit" msgid "Total" msgstr "Yhteensä" msgid "Untrans" msgstr "Ei käänn" msgctxt "column/row header" msgid "Needs Work" msgstr "Keskeneräisiä" msgid "Errors" msgstr "Virheet" msgid "Last modified" msgstr "Muokattu viimeksi" msgid "Select directory" msgstr "Valitse kansio" msgid "Directories:" msgstr "Kansiot:" msgid "" msgstr "" #, c-format msgid "Do you want to delete project “%s”?" msgstr "Haluatko poistaa ”%s”-projektin?" msgid "Delete project" msgstr "Poista projekti" msgid "Deleting the project will not delete any translation files." msgstr "Projektin poistaminen ei poista käännöstiedostoja." msgid "Confirmation" msgstr "Vahvistus" msgid "Update all catalogs in this project?" msgstr "Päivitetäänkö projektin kaikki katalogit?" msgid "Performs update from source code on all files in the project." msgstr "Suorittaa päivityksen lähdekoodista kaikille projektin tiedostoille." msgid "Check for Updates…" msgstr "Etsi päivityksiä…" msgid "Catalogs Manager" msgstr "Katalogien hallinta" msgid "&Preferences…" msgstr "&Asetukset…" msgid "&Edit" msgstr "&Muokkaa" msgid "Undo" msgstr "Kumoa" msgid "Redo" msgstr "Tee uudelleen" msgid "Paste and Match Style" msgstr "Liitä ja sovita tyyliin" msgid "Delete" msgstr "Poista" msgid "Spelling and Grammar" msgstr "Oikeinkirjoitus ja kielioppi" msgid "Show Spelling and Grammar" msgstr "Näytä oikeinkirjoitus ja kielioppi" msgid "Check Document Now" msgstr "Tarkista dokumentti nyt" msgid "Check Spelling While Typing" msgstr "Tarkista oikeinkirjoitus näppäilyn aikana" msgid "Check Grammar With Spelling" msgstr "Tarkista kielioppi oikeinkirjoituksen ohella" msgid "Correct Spelling Automatically" msgstr "Korjaa oikeinkirjoitus automaattisesti" msgid "Substitutions" msgstr "Korvaukset" msgid "Show Substitutions" msgstr "Näytä korvaukset" msgid "Smart Copy/Paste" msgstr "Älykäs kopiointi/liittäminen" msgid "Smart Quotes" msgstr "Älykkäät lainausmerkit" msgid "Smart Dashes" msgstr "Älykkäät yhdysmerkit" msgid "Smart Links" msgstr "Älykkäät linkit" msgid "Text Replacement" msgstr "Tekstin korvaus" msgid "Transformations" msgstr "Muunnokset" msgid "Make Upper Case" msgstr "Muuta suuraakkosiksi" msgid "Make Lower Case" msgstr "Muuta pienaakkosiksi" msgid "Capitalize" msgstr "Isot alkukirjaimet" msgid "Speech" msgstr "Puhe" msgid "Start Speaking" msgstr "Aloita puhuminen" msgid "Stop Speaking" msgstr "Lopeta puhuminen" msgid "&View" msgstr "&Näytä" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Show Toolbar" msgstr "Näytä työkalurivi" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Customize Toolbar…" msgstr "Mukauta työkaluriviä…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Enter Full Screen" msgstr "Siirry koko näytön tilaan" msgid "Window" msgstr "Ikkuna" msgid "Minimize" msgstr "Pienennä" msgid "Zoom" msgstr "Zoomaa" msgid "Welcome to Poedit" msgstr "Tervetuloa Poeditiin" msgid "Bring All to Front" msgstr "Tuo kaikki eteen" msgid "Information about the translator" msgstr "Tietoja kääntäjästä" msgid "Name:" msgstr "Nimi:" msgid "Your Name" msgstr "Nimesi" msgid "Email:" msgstr "Sähköposti:" msgid "you@example.com" msgstr "osoitteesi@example.com" msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "Nimeäsi ja sähköpostiosoitettasi käytetään ainoastaan GNU-gettext-" "tiedostojen Last-Translator-otsakkeessa." msgid "Editing" msgstr "Muokkaus" msgid "Automatically compile MO file when saving" msgstr "Muunna automaattisesti MO-tiedostoksi tallennettaessa" msgid "Show summary after updating files" msgstr "Näytä yhteenveto tiedostojen päivityksen jälkeen" msgid "Check spelling" msgstr "Tarkista oikeinkirjoitus" msgid "Always change focus to text input field" msgstr "Kohdista aina tekstinsyöttökenttään" 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." msgid "Appearance" msgstr "Ulkoasu" msgid "Use custom list font:" msgstr "Listan fontti:" msgid "Use custom text fields font:" msgstr "Tekstikenttien fontti:" msgid "Change UI language" msgstr "Vaihda käyttöliittymän kieli" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions msgid "(requires Windows 8 or newer)" msgstr "(vaatii Windows 8:n tai uudemman)" msgid "General" msgstr "Yleiset" msgid "Use translation memory" msgstr "Käytä käännösmuistia" msgid "Manage…" msgstr "Hallitse…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "Päivitettäessä lähteistä" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "käytä sumeaa täsmäystä tiedoston sisäisesti" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "esikäännä käännösmuistista" 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." msgid "Stored translations:" msgstr "Tallennetut käännökset:" msgid "Database size on disk:" msgstr "Tietokannan koko levyllä:" msgid "Import Translation Files…" msgstr "Tuo käännöstiedostoja…" msgid "Import translation files…" msgstr "Tuo käännöstiedostoja…" msgid "Import From TMX…" msgstr "Tuo TMX-tiedostosta…" msgid "Import from TMX…" msgstr "Tuo TMX-tiedostosta…" msgid "Export To TMX…" msgstr "Vie TMX-tiedostoon…" 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). msgid "Reset" msgstr "Tyhjennä" msgid "Select translation files to import" msgstr "Valitse tuotavat käännöstiedostot" msgid "Translation Memory" msgstr "Käännösmuisti" msgid "Importing translations…" msgstr "Tuodaan käännöksiä…" #, c-format msgid "Error loading translation file “%s”." msgstr "Virhe ladattaessa käännöstiedostoa “%s”." msgid "Finalizing…" msgstr "Viimeistellään…" msgid "Select TMX files to import" msgstr "Valitse tuotavat TMX-tiedostot" msgid "TMX Files" msgstr "TMX-tiedostot" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "Käännösmuistin tuonti polusta ”%s” epäonnistui." msgid "Import error" msgstr "Tuontivirhe" msgid "Export as…" msgstr "Vie nimellä…" msgid "Exporting translations…" msgstr "Viedään käännöksiä…" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "Käännösmuistin vienti polkuun ”%s” epäonnistui." msgid "Export error" msgstr "Vientivirhe" msgid "Reset translation memory" msgstr "Tyhjennä käännösmuisti" msgid "Are you sure you want to reset the translation memory?" msgstr "Haluatko varmasti tyhjentää käännösmuistin?" msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "Käännösmuistin tyhjentäminen tuhoaa kaikki sen sisältämät käännökset " "peruuttamattomasti. Tätä toimenpidettä ei voi perua." #. 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. msgid "TM" msgstr "Muisti" msgid "" "Source code extractors are used to find translatable strings in the source " "code files and extract them so that they can be translated." msgstr "" "Lähdekoodipoimimia käytetään käännettävien tekstien etsimiseen " "lähdekooditiedostoista sekä näiden tekstien poimimiseen käännöksen tekemistä " "varten." msgid "Custom Extractors:" msgstr "Mukautetut poimimet:" msgid "Custom extractors:" msgstr "Mukautetut poimimet:" msgid "GNU gettext" msgstr "GNU gettext" 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)." msgid "Delete extractor" msgstr "Poista poimin" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "Haluatko varmasti poistaa “%s“-poimimen?" msgid "Extractors" msgstr "Poimimet" msgid "Accounts" msgstr "Tilit" msgid "Automatically check for updates" msgstr "Tarkista päivitykset automaattisesti" msgid "Include beta versions" msgstr "Tarkista myös beta-versiot" msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "Beta-versiot sisältävät uusimmat ominaisuudet ja parannukset, mutta " "saattavat olla hieman epävakaampia." msgid "Updates" msgstr "Päivitykset" msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Nämä asetukset vaikuttavat PO-tiedostojen sisäiseen muotoiluun. Niitä voi " "tarvittaessa muuttaa esim. versionhallinnasta johtuvien vaatimusten vuoksi." msgid "Line endings:" msgstr "Rivinvaihdot:" msgid "Unix (recommended)" msgstr "Unix (suositeltu)" msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "Rivitys:" msgid "Preserve formatting of existing files" msgstr "Säilytä olemassa olevien tiedostojen muotoilu" msgid "Advanced" msgstr "Lisäasetukset" msgid "Settings" msgstr "Asetukset" msgid "Preparing strings…" msgstr "Valmistellaan tekstejä…" msgid "Pre-translating from translation memory…" msgstr "Esikäännetään käännösmuistista…" #, 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ä" msgid "Pre-translating…" msgstr "Esikäännetään…" 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. msgid "Pre-translate" msgstr "Esikäännä" 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ä." msgid "Cannot pre-translate from unknown language." msgstr "Ei voida esikääntää tuntemattomalta kieleltä." 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." msgid "Only fill in exact matches" msgstr "Täytä vain tarkat täsmäävyydet" 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." msgid "Don’t mark exact matches as needing work" msgstr "Älä merkitse tarkkoja vastineita keskeneräisiksi" 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öä." 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." #, 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." 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." msgid "No entries could be pre-translated." msgstr "Yhtään kohtaan ei voitu esikääntää." 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." msgid "Cancelling…" msgstr "Peruutetaan…" msgid "Drag Folders or Files Here" msgstr "Vedä kansioita tai tiedostoja tähän" msgid "Drag folders or files here" msgstr "Vedä kansioita tai tiedostoja tähän" msgid "Add Folders…" msgstr "Lisää kansioita…" msgid "Add folders…" msgstr "Lisää kansioita…" msgid "Add Files…" msgstr "Lisää tiedostoja…" msgid "Add files…" msgstr "Lisää tiedostoja…" msgid "Add Wildcard…" msgstr "Lisää korvausmerkki…" msgid "Add wildcard…" msgstr "Lisää korvausmerkki…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) 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" msgid "Show in Explorer" msgstr "Avaa resurssienhallinnassa" msgid "Show in Folder" msgstr "Näytä kansiossa" msgid "Paths" msgstr "Polut" msgid "Excluded paths" msgstr "Ohitettavat polut" msgid "Advanced extraction settings" msgstr "Poiminnan lisäasetukset" msgid "Extract notes for translators from:" msgstr "Poimi huomautukset kääntäjille lähteestä:" msgid "Comments prefixed with:" msgstr "Kommentit, joiden alussa on:" msgid "All comments" msgstr "Kaikki kommentit" msgid "Additional xgettext flags:" msgstr "Lisävalitsimet xgettextille:" msgid "Additional keywords" msgstr "Lisäavainsanat" msgid "Name of the project the translation is for" msgstr "Projektin nimi, jolle tämä käännös on tarkoitettu" msgid "Team name and email address or URL" msgstr "Tiimin nimi ja sähköpostiosoite tai URL" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "esim. nplurals=2; plural=(n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (suositeltu)" msgid "Please save the file first. This section cannot be edited until then." msgstr "Tallenna tiedosto ensin. Tätä osaa ei voi muokata sitä ennen." msgid "Placeholders correctness" msgstr "Muuttujien oikeellisuus" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "Käännöksestä puuttuu muuttuja \"%s\"." #, c-format msgid "Superfluous placeholder “%s” that isn’t in source text." msgstr "Tarpeeton muuttuja \"%s\", joka ei sisälly lähdetekstiin." msgid "Plural form translations" msgstr "Monikkomuotojen käännökset" msgid "Not all plural forms are translated." msgstr "Kaikkia monikkomuotoja ei ole käännetty." msgid "Inconsistent upper/lower case" msgstr "Epäjohdonmukaiset isot/pienet kirjaimet" msgid "The translation should start as a sentence." msgstr "Käännöksen tulisi alkaa virkkeellä." msgid "The translation should start with a lowercase character." msgstr "Käännöksen tulisi alkaa pienellä kirjaimella." msgid "Inconsistent whitespace" msgstr "Epäjohdonmukaisia tyhjemerkkejä" msgid "The translation doesn’t start with a space." msgstr "Käännös ei ala välilyönnillä." 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." msgid "The translation is missing a newline at the end." msgstr "Käännöksen lopusta puuttuu rivinvaihto." msgid "The translation ends with a newline, but the source text doesn’t." msgstr "Käännös päättyy rivinvaihtoon toisin kuin lähdeteksti." msgid "The translation is missing a space at the end." msgstr "Käännöksen lopusta puuttuu välilyönti." 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." msgid "Punctuation checks" msgstr "Välimerkkitarkastukset" #, c-format msgid "The translation should end with “%s”." msgstr "Käännöksen lopussa tulisi olla ”%s”." #, c-format msgid "The translation should not end with “%s”." msgstr "Käännöksen lopussa ei tulisi olla ”%s”." #, 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”." msgid "Cloud" msgstr "Pilvi" msgid "Clear Menu" msgstr "Tyhjennä valikko" msgid "Clear menu" msgstr "Tyhjennä valikko" msgid "Comment:" msgstr "Kommentti:" msgid "Update" msgstr "Päivitä" msgid "&Delete" msgstr "&Poista" msgid "Delete the comment" msgstr "Poista kommentti" msgid "Edit project" msgstr "Muokkaa projektia" msgid "Project name:" msgstr "Projektin nimi:" msgid "Browse" msgstr "Selaa" msgid "Add directory to the list" msgstr "Lisää kansio listaan" msgid "OK" msgstr "OK" msgid "&File" msgstr "&Tiedosto" msgid "&New…" msgstr "&Uusi…" msgid "New from &POT/PO file…" msgstr "Uusi &POT/PO-tiedostosta…" msgid "New From &POT/PO File…" msgstr "Uusi &POT/PO-tiedostosta…" msgid "&Open…" msgstr "&Avaa…" msgid "Open Recent" msgstr "Avaa äskettäinen" msgid "Open recent" msgstr "Avaa äskettäinen" msgid "Open cloud translation…" msgstr "Avaa pilvikäännös…" msgid "Open Cloud Translation…" msgstr "Avaa pilvikäännös…" msgid "&Start window" msgstr "Aloitusikkuna" msgid "&Start Window" msgstr "Aloitusikkuna" msgid "Catalogs &manager" msgstr "Katalo&gien hallinta" msgid "Catalogs &Manager" msgstr "Katalo&gien hallinta" msgid "&Close" msgstr "&Sulje" msgid "&Save" msgstr "Ta&llenna" msgid "Save &as…" msgstr "Tallenna &nimellä…" msgid "Save &As…" msgstr "Tallenna &nimellä…" msgid "Compile to MO…" msgstr "Muunna MO-muotoon…" msgid "E&xport to HTML…" msgstr "V&ie HTML-tiedostoon…" msgid "Check for updates…" msgstr "Etsi päivityksiä…" msgid "Settings…" msgstr "Asetukset…" msgid "&Preferences" msgstr "A&setukset" msgid "E&xit" msgstr "&Lopeta" msgid "Quit" msgstr "Lopeta" msgid "Copy from singular" msgstr "Kopioi yksiköstä" msgid "Copy From Singular" msgstr "Kopioi yksiköstä" msgid "Translation needs &work" msgstr "Käännös on &keskeneräinen" msgid "Translation Needs &Work" msgstr "Käännös on &keskeneräinen" msgid "Edit &comment" msgstr "Muokkaa &kommenttia" msgid "Edit &Comment" msgstr "Muokkaa &kommenttia" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "Ehdotukset" msgid "&Find…" msgstr "&Etsi…" msgid "Replace…" msgstr "&Korvaa…" msgid "Find next" msgstr "Etsi seuraava" msgid "Find previous" msgstr "Etsi edellinen" msgid "Find and Replace…" msgstr "Etsi ja korvaa…" msgid "Find Next" msgstr "Etsi seuraava" msgid "Find Previous" msgstr "Etsi edellinen" msgid "Show string &ID" msgstr "Näytä tekstin &tunniste" msgid "Show String &ID" msgstr "Näytä tekstin &tunniste" msgid "Show warnings" msgstr "Näytä varoitukset" msgid "Show Warnings" msgstr "Näytä varoitukset" msgid "Sort by &file order" msgstr "Järjestä &tiedostojärjestyksen mukaan" msgid "Sort by &File Order" msgstr "Järjestä &tiedostojen järjestyksen mukaan" msgid "Sort by &source" msgstr "Järjestä läht&een mukaan" msgid "Sort by &Source" msgstr "Järjestä läht&een mukaan" msgid "Sort by &translation" msgstr "Järjestä &käännöksen mukaan" msgid "Sort by &Translation" msgstr "Järjestä &käännöksen mukaan" msgid "&Group by context" msgstr "&Ryhmittele konteksteittain" msgid "&Group By Context" msgstr "&Ryhmittele konteksteittain" msgid "Entries with errors first" msgstr "Virheitä sisältävät ensin" msgid "Entries with Errors First" msgstr "Virheitä sisältävät ensin" msgid "&Untranslated entries first" msgstr "Kääntämättö&mät ensin" msgid "&Untranslated Entries First" msgstr "Kääntämättö&mät ensin" msgid "&Show code occurrences" msgstr "&Näytä esiintymät koodissa" msgid "&Show Code Occurrences" msgstr "&Näytä esiintymät koodissa" msgid "Show sidebar" msgstr "Näytä sivupalkki" msgid "Show status bar" msgstr "Näytä tilarivi" msgid "&Translation" msgstr "&Käännös" msgid "&Update from source code" msgstr "&Päivitä lähdekoodista" msgid "&Update from Source Code" msgstr "&Päivitä lähdekoodista" msgid "Update from &POT file…" msgstr "Päivitä &POT-tiedostosta…" msgid "Update from &POT File…" msgstr "Päivitä &POT-tiedostosta…" msgid "Sync with Crowdin" msgstr "Synkronoi Crowdiniin" msgid "Pre-&translate…" msgstr "Esi&käännä…" msgid "&Validate translations" msgstr "&Validoi käännökset" msgid "&Validate Translations" msgstr "&Validoi käännökset" msgid "Remove Same-as-Source Translations" msgstr "Poista lähteestä kopioidut käännökset" msgid "&Purge deleted translations" msgstr "P&uhdista poistetut käännökset" msgid "&Purge Deleted Translations" msgstr "P&uhdista poistetut käännökset" msgid "&Properties…" msgstr "Om&inaisuudet…" msgid "&Go" msgstr "&Siirry" msgid "&Done and next" msgstr "&Valmis ja seuraava" msgid "&Done and Next" msgstr "&Valmis ja seuraava" msgid "Previously edited" msgstr "Aiemmin muokattu" msgid "Previously Edited" msgstr "Aiemmin muokattu" msgid "&Previous translation" msgstr "&Edellinen käännös" msgid "&Previous Translation" msgstr "&Edellinen käännös" msgid "&Next translation" msgstr "&Seuraava käännös" msgid "&Next Translation" msgstr "&Seuraava käännös" msgid "P&revious unfinished" msgstr "E&dellinen keskeneräinen" msgid "P&revious Unfinished" msgstr "E&dellinen keskeneräinen" msgid "Ne&xt unfinished" msgstr "Se&uraava keskeneräinen" msgid "Ne&xt Unfinished" msgstr "Se&uraava keskeneräinen" msgid "Previous plural form" msgstr "Edellinen monikkomuoto" msgid "Previous Plural Form" msgstr "Edellinen monikkomuoto" msgid "Next plural form" msgstr "Seuraava monikkomuoto" msgid "Next Plural Form" msgstr "Seuraava monikkomuoto" msgid "&Online help" msgstr "&Ohje verkossa" msgid "&Online Help" msgstr "&Ohje verkossa" msgid "&GNU gettext manual" msgstr "&GNU gettextin manuaali" msgid "&GNU gettext Manual" msgstr "&GNU gettextin manuaali" msgid "&About Poedit" msgstr "&Tietoja Poeditistä" msgid "&About" msgstr "&Tietoja" msgid "Extractor setup" msgstr "Poimimen asetukset" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Lista tiedostopäätteistä eroteltuna puolipisteillä (esim. *.cpp;*.h):" msgid "Invocation:" msgstr "Suoritus:" msgid "Command to extract translations:" msgstr "Komento käännettävien tekstien poimimiseen:" 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)." msgid "An item in keywords list:" msgstr "Kohde avainsanalistassa:" 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." msgid "An item in input files list:" msgstr "Kohde syöttötiedostojen listassa:" #, 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." msgid "Source code charset:" msgstr "Lähdekoodin merkistö:" #, 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." msgid "Translation Properties" msgstr "Käännöksen ominaisuudet" msgid "Project name and version:" msgstr "Projektin nimi ja versio:" msgid "Language team:" msgstr "Käännöstiimi:" msgid "Plural forms:" msgstr "Monikkomuodot:" msgid "Use default rules for this language" msgstr "Käytä tämän kielen oletussääntöjä" msgid "Use custom expression" msgstr "Käytä omaa lauseketta" msgid "Learn about plural forms" msgstr "Lisätietoja monikkomuodoista" msgid "Charset:" msgstr "Merkistö:" msgid "Advanced Extraction Settings…" msgstr "Poiminnan lisäasetukset…" msgid "Advanced extraction settings…" msgstr "Poiminnan lisäasetukset…" msgid "Translation properties" msgstr "Käännöksen ominaisuudet" msgid "Sources Paths" msgstr "Lähteiden polut" msgid "Sources paths" msgstr "Lähteiden polut" msgid "Extract text from source files in the following directories:" msgstr "Pura tekstit lähdekoodeista, jotka ovat seuraavissa kansioissa:" msgid "Base path:" msgstr "Kantapolku:" msgid "Sources Keywords" msgstr "Lähteiden avainsanat" msgid "Sources keywords" msgstr "Lähteiden avainsanat" 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ä:" msgid "Also use default keywords for supported languages" msgstr "Käytä myös oletusavainsanoja tuetuille kielille" msgid "Learn about gettext keywords" msgstr "Lisätietoja Gettextin avainsanoista" msgid "Update summary" msgstr "Päivityksen yhteenveto" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" "Nämä tekstit löytyivät lähdekoodista, mutta eivät tiedostosta.\n" "Poedit lisää ne nyt tiedostoon." msgid "New strings" msgstr "Uudet tekstit" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" "Näitä tekstejä ei ole enää lähdekoodissa.\n" "Poedit poistaa ne nyt tiedostosta." msgid "Obsolete strings" msgstr "Vanhentuneet tekstit" msgid "(0 new, 0 obsolete)" msgstr "(0 uutta, 0 vanhentunutta)" msgid "Open" msgstr "" msgid "Open file" msgstr "Avaa tiedosto" msgid "Save file" msgstr "Tallenna tiedosto" msgid "Validate" msgstr "Validoi" msgid "Check for errors in the translation" msgstr "Tarkasta käännöksen virheet" msgid "Update from code" msgstr "Päivitä lähdekoodista" msgid "Update from Code" msgstr "Päivitä lähdekoodista" msgid "Update from source code" msgstr "Päivitä lähdekoodista" msgid "Sidebar" msgstr "Sivupalkki" msgid "Show or hide the sidebar" msgstr "Näytä tai piilota sivupalkki" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. msgid "Previous source text" msgstr "Aiempi lähdeteksti" 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)." msgid "Notes for translators" msgstr "Huomautukset kääntäjille" msgid "Comment" msgstr "Kommentti" msgid "Add comment" msgstr "Lisää kommentti" msgid "Add Comment" msgstr "Lisää kommentti" msgid "Delete From Translation Memory" msgstr "Poista käännösmuistista" msgid "Delete from translation memory" msgstr "Poista käännösmuistista" msgid "Translation suggestions" msgstr "Käännösehdotukset" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). 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). msgid "No Matches Found" msgstr "Vastaavuuksia ei löydy" msgid "This string was found in Poedit’s translation memory." msgstr "Tämä teksti löytyi Poeditin käännösmuistista." 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ä." 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." msgid "The TMX file is malformed." msgstr "TMX-tiedosto on viallinen." msgid "No translations were found in the TMX file." msgstr "TMX-tiedostosta ei löytynyt käännöksiä." #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Käännösmuistin tietokanta on turmeltunut: %s (%d)." #, c-format msgid "Translation memory error: %s (%d)." msgstr "Käännösmuistin virhe: %s (%d)." msgid "Cannot create temporary directory." msgstr "Tilapäiskansiota ei voida luoda." msgid "There are no translations. That’s unusual." msgstr "Käännöksiä ei ole. Sepä erikoista." msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "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 automaattisesti\n" "lähdekoodista. Näin ne pysyvät ajan tasalla ja tarkkoina.\n" "Kääntäjät käyttävät yleensä kehittäjän heitä varten luomia PO-" "mallipohjatiedostoja (POT)." msgid "(Learn more about GNU gettext)" msgstr "(Lisätietoja GNU gettextistä)" 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:" msgid "Update from POT" msgstr "Päivitä POT-tiedostosta" msgid "Take translatable strings from an existing POT template." msgstr "Poimi käännettävät tekstit olemassa olevasta POT-käännöspohjasta." 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:" msgid "Extract from sources" msgstr "Poimi lähdekoodista" 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 #, c-format msgid "Version %s" msgstr "Versio %s" msgid "Create new" msgstr "Luo uusi" msgid "Create new translation from POT template." msgstr "Luo uusi käännös POT-pohjasta." msgid "Browse files" msgstr "Selaa tiedostoja" msgid "Open and edit translation files." msgstr "Avaa ja muokkaa käännöstiedostoja." msgid "Translate cloud project" msgstr "Käännä pilviprojekti" msgid "Collaborate with other people online." msgstr "Työskentele verkossa muiden kanssa." msgid "Recent files" msgstr "Äskettäiset tiedostot" msgid "Sync" msgstr "Synkronoi" 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") #, 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. #, c-format msgid "%s Preferences" msgstr "%sin asetukset" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "Palvelut" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "Kätke %s" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "Kätke muut" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "Näytä kaikki" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "Lopeta %s" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "Asetukset…" msgid "Preferences..." msgstr "Asetukset..." #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "Äskettäiset" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "Usein käytetyt" msgid "&Apply" msgstr "&Käytä" msgid "Apply" msgstr "Käytä" msgid "&Back" msgstr "&Takaisin" msgid "Back" msgstr "Takaisin" msgid "&Cancel" msgstr "&Peruuta" msgid "&Clear" msgstr "&Tyhjennä" msgid "Clear" msgstr "Tyhjennä" msgid "Copy" msgstr "Kopioi" msgid "Cu&t" msgstr "&Leikkaa" msgid "Cut" msgstr "Leikkaa" msgid "Edit" msgstr "Muokkaa" msgid "&Quit" msgstr "&Lopeta" msgid "Help" msgstr "Ohje" msgid "&New" msgstr "&Uusi" msgid "New" msgstr "Uusi" msgid "&No" msgstr "&Ei" msgid "No" msgstr "Ei" msgid "&OK" msgstr "&Ok" msgid "Open…" msgstr "Avaa…" msgid "&Open..." msgstr "&Avaa..." msgid "Open..." msgstr "Avaa..." msgid "&Paste" msgstr "L&iitä" msgid "Paste" msgstr "Sijoita" msgid "Preferences" msgstr "Asetukset" msgid "&Redo" msgstr "&Tee uudelleen" msgid "Refresh" msgstr "Virkistä" msgid "&Save as" msgstr "T&allenna nimellä" msgid "Save as" msgstr "Tallenna nimellä" msgid "Select &All" msgstr "Valitse k&aikki" msgid "Select All" msgstr "Valitse kaikki" msgid "&Undo" msgstr "K&umoa" msgid "&Yes" msgstr "K&yllä" msgid "Yes" msgstr "Kyllä" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Vaihto+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "Ylänuoli" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "Alanuoli" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "Vasen" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "Oikea" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "vaihto" poedit-3.5/locales/ko.mo0000644000175100001770000016754314664354154012215 00000000000000|+: : :&:?:<S::J:g: V;`; o;y; ;;;;;;;;;;;;;;<<<0<B<H<M<U<]<o<<< < <<<< <<<<==0=L=R=X=a=g=p== = = ====>>7>N>e>k>p>>>>>> ? ???'?0? 4? @? L?Y? h?t? ? ?? ?? ???@@&@F@c@@ @ @1@@'@A.A HASA7YA6AA)AB B]"BB<BDB$C:C ACNCC C"CD+"D)ND xDDDDDDDDEE#4EXEmE|E EE EEEEEE%EF +FLFTF]FuF FF/F FkFXG]GpGGGG-G1G.H GHRH)iHH HYHI!I&I9ILIaIeI|IIIIIII;J CJ'PJ^xJLJ?$K dK rKK*KKK"K5K.LILdLjL}L L L L L LLLLLLLfMlMMuM(N?NRN"dNN NNN N NNN0N'OAO#VO<zO"OO OO*P03P!dP'PPPP(PTQ fQtQ yQ QQQQQ Q Q Q RR!R0RJRRRcR lRxR RRR R RRRRRRSz/TT TTT TT U2(U[UuU|UUU UU U U V!V&V;^D^Y^n^^^._4_J_=P__1__n_E[```;` ` aa@,amacb,#c,Pc}c cc2c*c ddwdj$e eeee%ee ff3fEfWf qffffffff8f g gg$g ,g 8g DgRg"Yg"|gg g gg g(ghhz'hhhhh h h h hh h i i i ,i 8iCi^ioi"iiii i ij jj$j -j:jTjdjtj j jjjj jjj!k *k8k@kHkQk Ykgkkkkkk k k kk ll.lBlRlgl|lmm 4m@mOmbm smm mmKmmn n%n:nMncn1nn n nn=ioo'p,p(>pgp op}p+pp p8p" q/q@qrCr8brrs8*t1ctRtctQLuu'u:ulvPv-vCwALwKw0w. x:x!x)x-y+Cy8oyCyuy,bzLz;z]{v{Z{gW|J|c }[n}o}:~7~m_[HN^Xp ف72("[~~łqDɃRVj o ȄЄӄ ڄ"$-F_p<Ѕ #$@eˆ#V cz ч. ;GPhHl5m7Y 3aω16;?\.a ͊ 1J!Z| *A X*e -Nˍ  $ . 8C U ` k v !!ǎ  ' ALa v Џ  + 9GXj ((ڐ  # 1<[{ đ%֑%$"$Gl~ .21J d q { Ǔؓ   "CTey$Ɣ$% :H5Y+ C 4Q(ʖіcDGUC1  4 /!.Q;= "=To~$Ӛ '1BSdu |E 1?"Gj}5՝O I[(Ξߞ,!!CRR%%! *'7_fv àKנ #21zd?ߡIiH!(EJ88ɣ ,3E W es ܤ`?.n$Ȧ Ϧݦ%=+T#H٧("Kfz7KĨ2;C 1Ʃg`q x ڪ  & 4B Zg}  ȫ1/ad>EYs+ݮ $6 K!lү/./^ m { (ư %b6@<0H c q{ ճ # ((/ Xf{ 3T#>!b235;6 r-ĸ( ; Yg~ ɹӹڹ . к%ݺV a?!weYƼUۼ1@GQgF85 /= N<o$ (@Uj $ F X f t ~ !! %:O `1m N_fz!!& ; IW i'w* # - ;I PZ ao  0-^|%   "C)X -BWl>\ mw  U-BSdv/  J  ++K `Jk)$E+DpRR9[_yXo*$Jjcj79UqMI/_.]..K3z11L_3hNrETYv:n @~fFZ  !.Bq x @7 EY x 4 ~OS b%p   4JJ$$ .O cpa$5#Yv!)7"k8 3K O4YTP#itI(;/sk * ,M5e%;'45nCv#=ld B@Twa QjqO 91B)aT'ZSFQYu>"/VJZsG6*[ar`^;XyVb?' <IL:x%AMZ\W88O,*d0)i{J-yK|]:c%}oo0][-Pg6YS&r(\p@X(tM?iE=eD"OU|53 w  fj,#32H 4[ pk {qke;mpgl16U85:`, +Y^L9$qz2fGu(A7N4!d0DNt{F<x_+7vX)nKG+>&9m3 LeUIN Iy E"nsk/<W>PhrVvT]cQmuR$bjD !_@xEl%WK-_7MCwbz/|gcAB` zh~?SC^*tf=\h!H'P#RiF&;$H1~.2 RsJo}.} .~ (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd AccountAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add accountAdd 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 languagesAlt+Always 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 errorCrowdin is an online localization management platform and collaborative translation tool.Ctrl+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 againDownDownloading 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:EnterEnter 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 loading translation file “%s”.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export errorExport 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…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)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport from TMX…Import translation files…Importing translation memory from “%s” 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 CrowdinLeftLine %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 translations were found in the TMX file.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKObsolete stringsOneOnly 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 translation templateOpen...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 translationsQuitQuit %sReading file content failed with the following error: %sRecentRecent 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 FinderReviewRightSaveSave &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 languageServicesSet LanguageSet languageSettingsSettings…Shift+Show AllShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow summary after updating filesShow 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.These strings are no longer in the source code. Poedit will remove them from the file now.These strings were found in the sources but were not in the file. Poedit will add them to the file now.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 entries in the file are probably incorrect.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 errorUntransUpUpdateUpdate 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 the file failed. Click on 'Details >>' for details.Updating 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown 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: 2024-08-30 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개를 찾았습니다.“%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)확인(&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)(신규 0, 제거 0)(GNU gettext에 대해 자세히 알아보기)(새 문자열: %i개, 오래된 문자열: %i개)(기본 언어 사용)(로그인하지 않음)(Windows 8 이상 필요)< 이전(&P)%s 정보계정계정추가계정 추가주석 추가파일 추가…폴더 추가…프로젝트 추가와일드카드 추가…계정 추가주석 추가디렉터리를 목록에 추가파일 추가…폴더 추가…프로젝트 추가와일드카드 추가…추가 키워드xgettext 추가 플래그:고급고급 확장 프로그램 설정…고급 추출 설정고급 확장 프로그램 설정…모든 번역 파일모든 주석모든 문자열지원되는 언어의 기본 키워드 또한 사용Alt+항상 포커스를 입력 창으로 옮김입력 파일 목록의 항목:키워드 목록의 항목:모양새적용정말로 “%s” 추출 프로그램을 삭제하시겠습니까?번역 기억 장소를 초기화하시겠습니까?업데이트 자동 확인저장할 때 MO 파일 자동 컴파일뒤로기본 경로:베타 버전에는 최신 기능과 개선 사항이 있지만, 덜 안정적일 수 있습니다.모두 앞으로PO 파일 오류: msgid_plural 없이 사용한 복수 형식의 msgstrPO 파일 오류: msgid_plural을 사용한 단수 형식의 msgstr번역 문자열의 마크업이 깨졌습니다.찾아보기파일 찾아보기기본적으로, 부정확한 결과도 들어있을 수 있지만, 해당 부분은 작업이 필요한 상태로 표시합니다. 완전히 일치하는 결과를 넣을 경우에만 이 옵션을 표시하세요.취소취소 중…임시 디렉터리를 만들 수 없습니다.프로그램을 실행할 수 없습니다: %s알 수 없는 언어를 사전 번역할 수 없습니다.원문 없이는 사전 번역을 진행할 수 없습니다.대문자화카탈로그 관리자(&M)카탈로그 관리자(&M)카탈로그 관리자사용자 언어 바꾸기문자 집합:지금 문서 검사맞춤법과 문법 검사입력하는 동안 맞춤법 검사업데이트 확인…번역 오류 검사업데이트 확인…맞춤법 검사지우기메뉴 지우기번역 지우기메뉴 지우기번역 지우기닫기클라우드코드 출현 횟수코드 출현 횟수다른 번역가와 온라인에서 공동 번역을 진행합니다.소스 파일 수집 중…번역을 추출할 명령:참고 설명주석:다음 접두부를 붙인 주석:MO로 컴파일…다음으로 컴파일…컴파일한 번역 파일속성에서 소스 코드 추출을 설정합니다.확인poedit에서 지원하는 클라우드 기반 지역화 플랫폼에서 관리하는 번역을 감쪽같이 동기화하려면 플랫폼에 연결합니다.복사단수 표현 복사원본 텍스트 복사단수 표현 복사원본 텍스트 복사자동으로 맞춤법 교정로컬레이지 프로젝트 세부 정보를 다운로드할 수 없습니다.파일을 불러오지 못했습니다. 손상되었을 수 있습니다.%s 파일을 저장할 수 없습니다.새로 만들기새 번역 만들기POT 양식에서 새 번역을 만듭니다.새 번역 프로젝트 만들기Crowdin 오류크라우드인은 지역화 관리 플랫폼이며 공동 번역 도구입니다.Ctrl+잘라내기(&T)사용자 지정 추출 프로그램:사용자 지정 추출 프로그램:도구 모음 사용자 지정…잘라내기디스크의 데이터베이스 크기:삭제TM에서 삭제추출 프로그램 삭제TM에서 삭제프로젝트 삭제설명 삭제프로젝트 삭제프로젝트 삭제 동작은 번역 파일을 삭제하지는 않습니다디렉터리:“%s” 프로젝트를 삭제하시겠습니까?디스크에서 파일을 다시 불러올까요? poedit에서 편집했지만 저장하지 않은 내용을 잃습니다.원본 문자열과 동일한 모든 번역을 제거할까요?더 이상 사용하지 않는 모든 번역을 제거하시겠습니까?저장하지 않음(&N)저장하지 않음다시 표시하지 않기정확하게 일치하는 내용은 작업 필요로 표시하지 않기다시 표시하지 않기아래쪽 방향키최신 번역 다운로드 중…이 프로젝트에서는 번역을 다운로드할 수 없습니다.폴더 또는 파일을 여기에 끌어다 놓으세요폴더 또는 파일을 여기에 끌어다 놓으세요나가기(&X)HTML로 내보내기(&X)…편집주석 편집(&C)주석 편집(&C)주석 편집주석 편집프로젝트 편집프로젝트 편집편집 중수정…이메일:Enter전체 화면상태 진입이 파일의 항목은 파일의 Plural-Forms 헤더에 명시한 서수 형식 카운트와 다른 값을 가지고 있습니다.오류 항목을 우선 표시오류 항목을 우선 표시오류가 있는 항목은 붉은색으로 표시했습니다. 자세한 오류 내용은 각각의 항목을 선택했을 때 나타납니다.“%s” 번역 파일 불러오는 중 오류가 있습니다.파일 여는 중 오류파일 저장 오류XLIFF 파일 불러오기 오류: %s오류모두제외 경로TMX로 내보내기…다음으로 내보내기…내보내기 오류HTML로 내보내기…TMX로 내보내기…"%s" TM 내보내기에 실패했습니다.번역 내보내는 중…소스에서 가져오기번역 참고 주석 추출 대상:다음 디렉터리의 소스 파일에서 텍스트를 추출합니다:번역 가능한 문자열 추출 중…추출 프로그램 설정추출 프로그램명령 실패: %sPoedit 프로세스와의 통신에 실패했습니다.추출한 번역이 들어있는 파일 불러오기에 실패했습니다.gettext 카탈로그 병합에 실패했습니다.번역 기억 장소 업데이트에 실패했습니다: %s파일파일을 열 수 없습니다“%s” 파일이 없습니다.“%s” 파일은 번역 파일이 아닙니다.“%s” 파일은 읽기 전용이며 저장할 수 없습니다. 다른 이름으로 저장하세요.마무리 중…찾기다음 찾기이전 찾기찾고 바꾸기…주석에서 찾기원본 문자열에서 찾기번역에서 찾기다음 찾기이전 찾기언어 수정언어 수정헤더 수정헤더 수정플루터 번역 파일%i번 양식양식 %i (미사용)자주 보는 항목GNU gettext일반HTML 파일도움말%s 숨기기다른 항목 숨기기가장자리 창 숨김상태 표시줄 숨기기이 알림 메시지 숨김클라우드 동작을 어떻게 처리할까요?ID계속 제거를 진행하면 삭제 표시한 모든 번역을 완전히 제거합니다. 다음에 다시 추가하면 다시 번역해야 합니다.파일 접근 권한을 예전에 거부했던 적이 있었다면, 시스템 설정 > 보안 및 개인정보 > 개인정보 > 파일 및 폴더에서 허용할 수 있습니다.이전에 파일 접근을 거부했다면, 시스템 설정 > 개인정보 및 보안 > 파일 및 폴더 에서 허용할 수 있습니다.무시대소문자 무시TMX에서 가져오기…번역 파일 가져오기…가져오기 오류TMX에서 가져오기…번역 파일 가져오기…"%s" TM 가져오기에 실패했습니다.번역 가져오는 중…파일 위치: %s베타 버전 포함일치하지 않는 대소문자일치하지 않는 공백 문자번역자 정보설치잘못된 파일실행:JSON 번역 파일그대로 유지언어 이름 또는 코드번역 언어가 원본 언어와 같습니다.번역 언어를 설정하지 않았습니다.번역 언어:언어 선택언어 팀:언어:최종 편집gettext 키워드에 대해 알아보기서수 형식 알아보기더 알아보기%s 자세히 알아보기Crowdin 더 알아보기왼쪽 방향키“%2$s” 파일의 %1$d번째 줄이 손상되었습니다 (올바르지 않은 %3$s 데이터).행 종결 문자:세미콜론(;)으로 구분한 확장자 목록(예 *.cpp;*.h):영어 불러오기로컬레이지는 누구에게든 자신의 제품과 내용물을 여러 언어로 번역하는 과정을 상당 부분 자동화해주는 지역화 플랫폼입니다.MO 파일은 Poedit에서 직접 편집할 수 없습니다.소문자로 만들기대문자로 만들기이 POT 파일로 새 번역을 작성합니다.잘못된 헤더: “%s”계정 관리관리…차이점 병합 중…최소화번역 프로젝트 이름이름:다음 미완료(&X)다음 미완료(&X)작업 필요작업 필요네트워크 오류: %s (%d)문자열 목록에 포커스가 가지 않게 합니다. 이 상태에서는 키보드 상의 Ctrl-화살표를 눌러 이동한 후 문자열을 편집해야 합니다. 탭 키를 누르실 필요는 없습니다.새 파일POT/PO 파일로 새로 만들기(&P)...POT/PO 파일로 새로 만들기(&P)...새 문자열다음 복수 형태다음 복수 형태아니요일치하는 결과 없음사전 번역할 수 있는 항목이 없습니다.이 파일에 언급한 소스 코드에서 문자열 출현 정보가 없습니다.일치하는 결과가 없습니다번역에 문제가 없습니다.이 계정에 번역 프로젝트가 없습니다.TMX 파일에서 번역을 찾을 수 없습니다.사용 정보 없음모든 서수 형식이 번역되지 않았습니다.인증하지 않았습니다. 다시 로그인하십시오.번역 참고확인제거한 문자열하나기본 설정으로는 번역 기억 장소에서 가져온 모든 일치 항목은 작업 필요 항목으로 표시하여 활용 전에 검토해야 합니다. 번역 기억 장소 품질을 신뢰하는 경우에만 이 설정을 켜세요.정확하게 일치하는 내용만 채우기클라우드 번역 열기…최근 파일 열기번역 파일을 열어 편집합니다.클라우드 번역 열기클라우드 번역 열기…파일 열기편집기에서 열기편집기에서 열기최근 파일 열기번역 양식 열기열기...열기…옵션기타이전 미완료(&R)이전 미완료(&R)PO 번역 파일POT 번역 양식POT 파일은 양식일 뿐이며 어떤 번역 내용도 들어있지 않습니다. 번역하려면 이 양식을 기반으로 새 PO 파일을 만드십시오.붙여넣기붙여넣기 및 일치 비교 방식경로이 프로젝트의 모든 소스 코드 파일에서 업데이트를 수행합니다.권한을 거부했습니다.자리 표시자 "%s"가 번역문에서 누락되었습니다.자리 표시자 정확성 검토대신 관련 PO 파일을 열어 편집하십시오. 저장하면, 마찬가지로 MO 파일도 업데이트합니다.먼저 파일을 저장하세요. 저장하기 전까지는 이 구역을 편집할 수 없습니다.복수복수 형식 번역파일에서 사용하는 %s 언어의 서수 형식 표현이 잘못되었습니다.복수 형태:PoeditPoedit - 카탈로그 관리자Poedit가 “%s” 파일의 잘못된 내용을 자동으로 수정했습니다.Poedit은 해당 파일의 이전 번역만을 활용하거나 보유한 번역 기억 장소 전체를 활용하여 새 항목 채우기를 시도할 수 있습니다. 번역 기억 장소가 거의 비어 있을 경우 효율적이지는 않지만, 번역을 더 많이 저장하면 좋은 결과를 얻을 수 있습니다.poedit에서는 문자열을 활용하는 참조 위치에 파일이 없거나 실제 파일이 아닌 심볼릭 참조여서 소스 코드를 나타낼 수 없습니다.Poedit는 사용하기 쉬운 번역 편집기입니다.poedit에서 “%s” 파일을 열 수 없습니다.사전 번역(&T)…사전 번역사전 번역함사전 번역한 문자열 %u개번역 기억 장소에서 번역 미리 가져오는 중…사전 번역 중…사전 번역은 번역 기억 장소에서 번역하지 않은 문자열과 정확한 항목 또는 모호한 항목과 일치하는 번역을 자동으로 찾아 번역 내용을 채웁니다.원문이 주어져야 사전 번역 기능을 이용할 수 있습니다. 실제 텍스트가 아닌 ID만 있는 경우 작업을 실행할 수 없습니다.사전 번역 작업시 원본 내용의 언어를 알아야 합니다. Poedit에서 이 파일의 언어를 확인하지 못했습니다.설정설정…설정…문자열 준비 중…기존 파일 서식 유지이전 복수 형태이전 복수 형태이전 원본 텍스트이전 편집 항목이전 편집 항목프로젝트 이름과 버전:프로젝트 이름:프로젝트:프로젝트문장 부호 검사제거삭제한 번역을 완전히 제거끝내기%s 끝내기다음 오류로 인해 파일 내용 읽기에 실패했습니다: %s최근 목록최근 파일재실행새로 고침파일 다시 불러오기파일 다시 불러오기남음: %d개제거원본과 동일한 번역 제거원본과 동일한 번역 제거바꾸기모두 바꾸기(&A)모두 바꾸기(&A)바꿀 문자열바꾸기…필요한 Plural-Forms 헤더가 빠졌습니다.초기화번역 기억장소 초기화번역 기억장소를 초기화하면 저장한 모든 번역을 완전히 삭제합니다. 이 동작은 취소할 수 없습니다.Finder에 표시검토오른쪽 방향키저장다른 이름으로 저장(&A)…다른 이름으로 저장(&A)…무시하고 저장무시하고 저장다른 이름으로 저장다음 이름으로 저장…바뀐 내용 저장파일 저장스크린샷:모두 선택(&A)모두 선택가져올 TMX 파일을 선택하세요디렉터리 선택번역 파일 선택가져올 번역 파일을 선택하세요번역 양식 선택선호하는 언어 선택서비스언어 설정언어 설정설정설정…Shift+모두 표시가장자리 창 표시맞춤법 및 문법 표시상태 표시줄 표시문자열 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” 파일의 내용을 바꾸었습니다.부정확한 번역을 채워둔, 업데이트하여 바뀌기 전의 오래된 원본 텍스트입니다.이 파일의 번역을 채우는 가장 간단한 방법은 POT에서 업데이트하는 방법입니다:번역문이 공백으로 시작하지 않았습니다.번역문의 끝은 줄 바꿈이 되나 원문은 줄 바꿈이 되지 않습니다.번역문 마지막에 공백이 있으나, 원문은 그렇지 않습니다.번역문은 "%s"(으)로 끝나나, 원문은 "%s"(으)로 끝납니다.번역문의 끝에 줄 바꿈이 없습니다.번역문 마지막에 공백이 없습니다.번역을 사용할 준비가 되지만, 아직 항목 %d개를 번역하지 않았습니다.번역을 사용할 준비가 되었습니다.번역문은 "%s"(으)로 끝나야 합니다.번역문은 "%s"로 끝나지 말아야 합니다.번역문은 문장처럼 시작해야 합니다.번역문은 소문자로 시작해야 합니다.번역문이 공백으로 시작했으나, 원문은 그렇지 않습니다.부정확할지도 모르는 번역을 '작업 필요'로 표시했습니다. 정확성 여부를 검토하시는 것이 좋습니다.번역이 없습니다. 흔한 일은 아니네요.파일 구조를 다듬는 중 문제가 발생했습니다(하지만 문제 없이 저장했습니다).로컬레이지로 번역을 업로드하는 중 오류가 발생했습니다.파일을 불러올 때 오류가 있었습니다. 데이터 일부가 빠지거나 깨졌을 수도 있습니다.이 설정은 PO 파일 내부 형식에 영향을 줍니다. 버전 관리 등의 특별한 필요성이 있다면 값을 설정하십시오.이 문자열이 더 이상 소스 코드에 없습니다. poedit에서 해당 문자열을 파일에서 제거하겠습니다.이 문자열은 소스에는 있지만 파일에는 없습니다. poedit에서 해당 문자열을 파일에 바로 추가하겠습니다.이 JSON 파일은 번역 파일이 아니므로 Poedit에서 편집할 수 없습니다.이 동작은 원본 문자열과 정확히 일치하는 번역을 모두 삭제합니다. 되돌릴 수 없습니다.이 파일에는 서수 형식 항목이 들어있으나 서수 형식 헤더를 구성하지 않았습니다.파일이 원문 대신 문자열 ID를 이용하고 있습니다. Poedit에서 "%s" 파일의 영어 텍스트를 불러올 수 있습니다.이 명령은 추출 프로그램을 실행할 때 사용합니다. %o는 출력 파일의 이름, %K는 키워드 목록, %F는 입력 파일 목록, %C는 문자 집합 플래그 입니다(하단 참조).이 문자열은 Poedit의 번역 기억 장소에 있습니다.소스 코드 문자 집합을 지정했을 경우에만 명령줄에 붙일 수 있습니다. %c는 문자 집합을 의미합니다.각 입력 파일 명령줄에 하나 붙일 수 있습니다. %f는 파일 이름을 의미합니다.키워드 명령줄에 하나 붙일 수 있습니다. %k는 키워드를 의미합니다.전체변환소스 코드에서 번역 가능한 항목은 Gettext 시스템이 자동으로 추출합니다. 이 방법으로 최신 버전으로 정확하게 유지할 수 있습니다. 번역자들은 보통 개발자들이 준비한 PO 양식 파일(POT)를 사용합니다.클라우드 프로젝트 번역번역함: 문장 %2$d개 중 %1$d개 (%3$d%%)번역번역 언어번역 기억 장소(TM)작업이 필요한 번역(&W)번역 속성파일의 번역 항목이 올바르지 않은 것 같습니다.TM 데이터베이스가 손상되었습니다: %s(%d).TM 오류: %s (%d).작업이 필요한 번역(&W)번역 속성번역 제안원문이 주어져야 번역 제안 기능을 이용할 수 있습니다. 실제 텍스트가 아닌 ID만 있는 경우 작업을 실행할 수 없습니다.번역 제안 기능에서 원본 내용의 언어를 알아야 합니다. Poedit에서 이 파일의 언어를 확인하지 못했습니다.번역 — %s파일 속성에 지정한 위치에 코드가 없어, 소스 코드에서 번역 항목을 새로 가져올 수 없습니다.둘UTF-8 (추천)실행 취소처리하지 못한 오류 발생: %sUnix (추천)알 수 없는 Crowdin 오류.알 수 없는 오류미번역위쪽 방향키업데이트모두 업데이트이 프로젝트의 모든 카탈로그 업데이트이 프로젝트의 모든 카탈로그를 업데이트하시겠습니까?POT 파일에서 업데이트(&P)…POT 파일에서 업데이트(&P)…코드에서 업데이트POT 파일로 업데이트코드에서 업데이트소스 코드에서 업데이트업데이트 요약업데이트업데이트 실패파일 업데이트에 실패했습니다. 자세히 보려면 '자세히 >>'를 누르십시오.번역 업데이트 중사용자 정보 업데이트 중…%s(으)로의 번역 업로드에 실패했습니다.%s에 번역 업로드중…번역 업데이트 중…사용자 정의 표현식 사용목록에 사용자 지정 글꼴 사용:텍스트 입력 창에 사용자 지정 글꼴 사용:이 언어에 기본 규칙 사용다음 키워드(함수 이름)를 사용하여 소스 파일에서 번역할 문자열을 인식합니다:번역 기억 장소 사용검증하기검증 결과버전 %s인증 대기 중…Poedit에 잘 오셨습니다원본 업데이트 방식단어 단위로 검색창윈도우영어를 원문 언어로 사용하시겠습니까?자동 줄 바꾸기줄 바꿈 위치:XLIFF 번역 파일예소스 코드에서 직접 번역 가능 문자열을 가져올 수도 있습니다:Poedit 윈도우에 하나를 초과하는 항목을 드롭할 수 없습니다.파일 속성의 지정 위치에서 소스 코드 파일을 불러올 수 있는 권한이 없습니다.바뀐 내용을 반영하려면 Poedit을 다시 시작해야 합니다.이름저장하지 않으면 바뀐 내용을 잃어버립니다.이름 및 전자메일 주소는 GNU gettext 파일의 Last-Translator 헤더를 설정할 때만 사용합니다.영확대alt작업 필요ctrl임시 파일 삭제 안함 (디버깅용)예: nplurals=2; plural=(n > 1);파일내 퍼지 일치입력한 줄 수에 해당되는 항목으로 이동poedit:// URI 처리번역 기억 장소의 사전 번역shift알 수 없는 언어지원하지 않는 버전 (%s)gdhong@website.co.kr“%s” 파일은 정상적인 POT 파일이 아닙니다.poedit-3.5/locales/tg.mo0000644000175100001770000015740414664354143012207 00000000000000!8- 9- E-P-<d--J-g- g.q. .. .............//+///A/S/Y/^/f/n//// / //// ///00%0A0]0c0i0r0x000000011%1*1>1]1u11 1 111 1 111 22 02=2L2\2p222222 313F3'K3s33 337363*4)J4t4 y4]44$45!5"(5K5 f5q55555555 6#"6F6[6j6p6666 6666 77/17 a7n7s77777778 48B8H8M8`8s88888888 9?9 Y9 g9t9*999"959#:): .: <: J: W: d:q::::::::u:[;n; u;;; ; ;;0;;<#+<<O<"<< <<*<!='*=R=W=(v=T= => > >>3>D>Y> n> x> > >>>>>> >> >>? ? ?%?5?T?W?@ @@@ @@@2A3AMA cAA A AA;A(AB,B?B NB XBfBB BBB:B C<C.KCzCCC CCC*C DD!D 2D =DHDEE!E :EFEWEhEkE#|EE'E+E$F%*FPFSFdFhFF G"G1G@GHGPGXG^GsGGGGHHNHdHjHn}HEH2I 9IGINI@hII,JJ JJ2J.KAK KKK%K L5LJL dLrL{LLLLLLL LL L LL M( M4M:MzSMMMM M MM N N N $N/NJN"[N~NN N NNN NNNOO *O 7OEO ^OkO{O OOOOOOOOO O O PP*P:POPcPsPPP$Q ?QKQ^Q oQ}Q QQKQQR R!R6R ER SR_RRnSsS(SS SS+S T T8T"STvTTJU8eUURVcVQDWWlW-XCLXAXKX0Y.OY~Y! Z)/Z-YZ+Z8ZCZu0[,[L[ \\7R]m]_][X^^^^_ __``-`2D`"w``````` `a-a5a 8a"Cafaaaaaaaaa b&b@bVblb#bVbcc$c 7cBc`crcccc ccccHc5'd7]d d3dad5e:e?eCe`e.ee eeeeff$f!5fWfg#h9huUhh{h_ij%j?jQjkjjjjjjj kO$kOtk k kkkll.1l.`l ll ll l lmm m'mBmUmhmzmmmmm<n<>n{n#nnn%n o5&o5\o*o*oop %p3p 9pCZpp,pHp 1q ?qLqaq"pq)q/q-q"r@>r)r/r-r's1/sas5ps2s5s(t8tPttgt?@uRuuu|vv0wc7wwww'xExxyIy9iyy+y+y*z7@zxzz(z1z${5*{(`{{{&{&{|1|BD| |#|*||6|a2} }}<}A}<>~A{~4~/~'"<J++6?AN85߀8"Nq5'Qmy'I[b ΃%ۃ%$'$L&qDŽ - O9Oم$ˆ ' .'Ow Y*(;MdhE,a#6ЉU;].Eъˋ0,"]-(׌""6*Y* ,  ),H5u7@ $I/.y:%@ J%h@Yϒ*)(T3}ǓP ?\Ք &R!It9ޕok9))ϗ+ %03 d/,,  8Y9!@!b((Û-L-lB@ݜQFpܝgBI,&&+ :*E*p&)  *G!Vxj'"?^bZ֦!1SqW0 3PK$$& ".;=y "ʪ'٪++Kw 9J W (5>(V($'ͭ*) (J=s7Ѯ7 ARl$3E5.0d#1(P3e50ϱ()CYl"?Ҳ%#8#\($γ($</\4f)ٵ!$%(Jsx|6 , M(n˷*6*a#z:Uٺ/2uEf">E½r{2Ba3;|r?KFE=IAEBCRiRm, q9a   (2<%oc620%c#@"!D_hL&&)!$K)p)"C6\.1eMZ4k E'3G({)j~e ?hD+>Jc%7A^+<?V r$r7hi 6=q2xD ,K .}ULsmRUL*(zyj@HpCeOY&IkE%;f`7v(_W  )9-WJcO"f gT8NI0#mtQ*PTcaDQ]l?%/.&'4~:MX!^+>Mey5sd~9[8'`kn-"=31_d3FobzAh\6G)w|g#]Z!lqpN5[ 2S : Z uB,j}iw/@bHGoV\; 0<xt JSvY14 Cn{{Xu RP|FB$Ea K>  (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(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 languagesAlt+Always 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 errorCtrl+Cu&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 againDownDownloading latest translations…Downloading translations is disabled in this project.E&xitEditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:EnterEnter 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 errorExport 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerForm %iForm %i (unused)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport from TMX…Import translation files…Importing translation memory from “%s” failed.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 CrowdinLeftLine %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.No translations were found in the TMX file.Not all plural forms are translated.Not authorized, please sign in again.OKObsolete stringsOneOnly 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 translationsQuitQuit %sRecentRedoRefreshRemaining: %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.ReviewRightSaveSave &As…Save &as…Save asSave as…Save changesSelect &AllSelect AllSelect TMX files to importSelect directorySelect translation files to importSelect your preferred languageServicesSet LanguageSet languageShift+Show AllShow 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.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.Translated: %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)UntransUpUpdate 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown language“%s” is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2024-08-30 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&Кумаки онлайн&Кумаки онлайн&Кушодан...&Кушодан…&Гузоштан&Танзими барнома&Танзимот…&Тарҷумаи қаблӣ&Тарҷумаи қаблӣ&Хусусиятҳо…&Пок кардани тарҷумаҳои нестшуда&Пок кардани тарҷумаҳои нестшуда&Баромад&Дубора анҷом додан&Ҷойгузин кардан&Нигоҳ доштан&Нигоҳ доштан ҳамчун&Ботил сохтан&Аввал сатрҳои тарҷуманашуда&Аввал сатрҳои тарҷуманашуда&Навсозӣ аз манбаи рамз&Навсозӣ аз манбаи рамз&Санҷиши тарҷумаСанҷиши тарҷума&Намоиш&Ҳа(0 нав, 0 кӯҳнашуда)(Маълумоти муфассал дар бораи GNU gettext)(Нав: %i, куҳна: %i)(Истифодаи забони асосӣ)(Windows 8 ё версияи навтарро талаб мекунад)< &Қаблӣ<беном>Дар бораи %sҲисобҳоИлова кардани шарҳИлова кардани файлҳо…Илова кардани ҷузвдонҳо…Илова кардани аломатҳо…Илова кардани шарҳИлова кардани директория ба рӯйхатИлова кардани файлҳо…Илова кардани ҷузвдонҳо…Илова кардани аломатҳо…Калидвожаҳои иловагӣБайрақчаҳои иловагии xgettext:ИловагӣТанзимоти иловагии барориш…Танзимоти иловагии бароришТанзимоти иловагии барориш…Ҳамаи файлҳои тарҷумаҲамаи шарҳҳоИнчунин аз калидвожаҳои пешфарз барои забонҳои дастрас истифода баредAlt+Доимо тағйир додани маркази диққат ба ҳошияи матнгузорӣОбъект дар рӯйхати файлҳои вурудӣ:Илова кардани объект ба рӯйхати калидвожаҳо:Намуди зоҳирӣТатбиқ карданШумо мутмаин ҳастед, ки мехоҳед василаи барориши “%s”-ро нест кунед?Шумо мутмаин ҳастед, ки мехоҳед ҳофизаи тарҷумаро дубора танзим кунед?Санҷиши худкори навсозиҳоОмодасозии файли MO ба таври худкор ҳангоми захиракунӣБозгаштМасири асосӣ:Версияҳои бета хусусиятҳои нав ва такмилҳоро дар бар мегиранд, вале метавонанд каме ноустувор бошанд.Ҳамаро ба пеш гузоредҚайди вайроншуда дар сатри тарҷумавӣ.Тамошо карданБекор карданДиректорияи муваққатӣ эҷод карда нашуд.Барнома иҷро карда намешавад: %sҲарфҳои калонМудири &файлҳои тарҷумаМудири &файлҳои тарҷумаМудири файлҳои тарҷумаИваз кардани забони интерфейсРамзгузорӣ:Санҷиши ҳуҷҷатСанҷиши имлои тарҷумаСанҷиши имло ҳангоми нависСанҷиши навсозиҳо…Санҷиши хатогиҳо дар тарҷумаСанҷидани навсозиҳо…Санҷиши имлоПок карданТоза кардани тарҷумаТоза кардани тарҷумаПӯшиданҶамъкунии файлҳои манбаъ…Фармон барои баровардани тарҷумаҳо:Шарҳ:Шарҳҳо бо пешванди:Таҳия кардани файли MO…Таҳия кардан…Файлҳои тарҷумавии таҳияшудаБаровардани рамзи манбаро дар Танзимот танзим кунед.ТасдиқНусха бардоштанНусха бардоштан аз Шумораи танҳоНусха бардоштан аз матни сатри аслӣНусха бардоштан аз шумораи танҳоНусха бардоштан аз матни сатри аслӣСанҷиши имло ба таври худкорФайли %s нигоҳ дошта нашуд.Аз нав тарҷума карданЭҷод кардани лоиҳаи тарҷумаи навХатои CrowdinCtrl+&БуриданИнтихоби тарзи барориш:Интихоби тарзи барориш:Фармоиш додани навори абзор…БуриданАндозаи пойгоҳи иттилоотӣ дар диск:Нест карданНест кардан аз ҳофизаи тарҷумаНест кардани василаи бароришНест кардан аз ҳофизаи тарҷумаНест кардани лоиҳаФеҳристҳоОё шумо мехоҳед, ки ҳамаи тарҷумаҳоеро, ки дигар истифода намешаванд, нест кунед?&Нигоҳ надоштанНигоҳ надоштанАз нав намоиш надоданМутобиқатҳои аниқро ҳамчун "Бозбинӣ лозим аст" қайд накунедАз нав намоиш надоданПоёнДар ҳоли боргирии тарҷумаҳои навтарин…Боргирии тарҷумаҳо барои ин лоиҳа ғайрифаъол шуд.&БаромадТаҳрир&Таҳрир кардани шарҳ&Таҳрир кардани шарҳТаҳрир кардани шарҳТаҳрир кардани шарҳТаҳрир кардани лоиҳаТаҳрири лоиҳаТаҳриркунӣТаҳрир кардан…Почтаи электронӣ:EnterКушодан дар экрани пурраПеш аз ҳама сабтҳоро бо хатоҳо намоиш диҳедПеш аз ҳама сабтҳоро бо хатоҳо намоиш диҳедТарҷумаҳои хато бо ранги сурх дар рӯйхат қайд карда шудаанд. Тафсилоти хатоҳо бо интихоби сатри тарҷумаи хато намоиш дода мешаванд.Хатои кушодани файлХатоҳоҲамаМасирҳои истисношудаБаровардан ба TMX…Содир кардан ҳамчун…Хатои содиркунӣБаровардан ба TMX…Содиркунии ҳофизаи тарҷумаҳо аз “%s” иҷро нашуд.Содиркунии тарҷумаҳо…Баровардан аз манбаҳоБаровардани тавзеҳот барои тарҷумонон аз:Баровардани матн аз файлҳои манбаъ дар ҷузвдонҳои зерин:Баровардани сатрҳои тарҷумашаванда…Танзими василаи бароришВасилаи бароришФармони қатъшуда: %sАлоқа бо раванди Poedit қатъ шуд.Муттаҳид кардани файлҳои gettext баргузор нагашт.Ҳофизаи тарҷума навсозӣ нашуд: %sФайлФайли “%s” вуҷуд надорад.Файли “%s” файли тарҷумавӣ намебошад.Файли “%s” танҳо барои хондан аст ва нигоҳ дошта намешавад. Лутфан, онро бо номи дигар нигоҳ доред.Анҷомдиҳӣ…ҶустуҷӯҶустуҷӯи навбатӣҶустуҷӯи қаблӣЁфтан ва ҷойгузин кардан…Ҷустуҷӯ дар шарҳҳоЁфтан дар матнҳои манбаъҶустуҷӯ дар тарҷумаҳоҶустуҷӯи навбатӣҶустуҷӯи қаблӣИслоҳ кадани забонИслоҳ кадани забонСарварақро ислоҳ кунедСарварақро ислоҳ кунедШакли %iШакли %i (истифоданашуда)РоиҷGNU gettextУмумӣФайлҳои HTMLКумакПинҳон кардани %sДигаронро пинҳон карданПинҳон кардани навори ҷонибӣПинҳон кардани навори вазъиятХабари огоҳии зеринро пинҳон кунедРақамАгар тоза карданро идома диҳед, ҳама тарҷумаҳои ҳамчун нест карда, бе бозгашт нест мешаванд. Агар онҳо дар оянда баргашта илова шаванд, шумо онҳоро дигар тарҷума карда наметавонед.Агар шумо қаблан ба файлҳои худ дастрасиро манъ кардед, шумо метавонед ба онҳо дар Хусусиятҳои низом > Амният ва махфият > Махфият > Файлҳо ва ҷузвадонҳо иҷозат диҳед.Рад кардани ҳарфҳои хурду калонВорид намудан аз TMX…Ворид намудани файлҳои тарҷумавӣ…Хатои воридкунӣВорид намудан аз TMX…Ворид намудани файлҳои тарҷумавӣ…Воридкунии ҳофизаи тарҷумаҳо аз “%s” иҷро нашуд.Воридкунии тарҷумаҳо…Иловаи версияҳои бетаМаълумот дар бораи тарҷумонНасб карданФайли нодурустДархост:Нигоҳ доштанЗабони тарҷума ва забони манбаъ баробаранд.Забони тарҷума танзим карда нашуд.Забони тарҷума:Интихоби забонДастаи забон:Забон:Санаи тағйири охиринМаълумоти бештар дар бораи калидвожаҳои gettextМаълумоти бештар дар бораи шаклҳои ҷамъМаълумоти бештарМаълумоти бештар дар бораи CrowdinЧапСатри %d дар файли “%s” вайрон шудааст (санаи %s беэътибор аст).Анҷоми сатрҳо:Рӯйхати дарозкунии муддат бо нуқта-вергулҳо ҷудо карда мешаванд (мисол *.cpp;*.h):Файлҳои MO метавонанд дар Poedit бевосита таҳрир карда шаванд.Табдил ба ҳарфҳои хурдТабдил ба ҳарфҳои хурдСарлавҳаи бадшакл: “%s”Идора…Муттаҳидшавии фарқиятҳо…Ҳадди ақал сохтанНоми лоиҳаи тарҷума бароиНом:&Тарҷуманашудаи навбатӣ&Тарҷуманашудаи навбатӣБозбинӣ лозим астБозбинӣ лозим астБа рӯйхати сатр ҳаргиз нагузоред, ки маркази диққатро ишғол кунад. Агар фаъол бошад, шумо бояд Ctrl-ақрабаки идора кардан аз клавиатура истифода баред, аммо шумо инчунин имкони ворид кардани матнро бе зарурияти пахш кардани Tab барои тағйироти маркази диққат доред.НавНав аз файли &POT/PO…Нав аз файли &POT/PO…Сатрҳои навШумораи ҷамъи навбатӣШумораи ҷамъи навбатӣНеЯгон мутобиқат ёфт нашудЯгон сатр пешакӣ тарҷума карда намешавад.Ягон мутобиқат ёфт нашудЯгон хато дар тарҷума ёфт нашудааст.Ягон тарҷума дар файли TMX ёфт нашуд.На ҳамаи сатрҳои шакли ҷамъ тарҷума шудаанд.Ворид нашуд, лутфан аз нав ворид шавед.ХубСатри кӯҳнашудаЯкФаъол кунед, танҳо агар ба ТМ-и худ эътимод дошта бошед. Ба сутари пешфарз, ҳамаи мутобиқатҳо аз ТМ ҳамчун "Бозбинӣ лозим аст" ишора карда мешаванд ва бояд пеш аз истифода аз назар гузаронида шаванд.Ворид кардани танҳо мутобиқати аниқКушодани файлҳои охиринКушодан дар муҳаррирКушодан дар муҳаррирКушодан...Кушодан…ИмконотДигар&Тарҷуманашудаи пешина&Тарҷуманашудаи пешинаФайлҳои тарҷумавии POҚолибҳои тарҷумавии POTФайлҳои POT танҳо ҳамчун қолибҳо истифода мешаванд ва худаш тарҷумаҳоро дар бар намегиранд. Барои тарҷума кардан, файли PO-и наверо дар асоси қолиб эҷод кунед.ГузоштанГузоштан мувофиқи сабкМасирҳоДастрасӣ манъ аст.Лутфан, ба ҷояш ягон файли PO-и мувофиқро кушоед ва таҳрир кунед. Вақте ки шумо онро захира мекунед, файли MO низ навсозӣ карда мешавад.Лутфан, аввал файлро нигоҳ доред. То он гоҳ ин қисмат таҳрир карда намешавад.Шумораи ҷамъШаклҳои ҷамъ:Барномаи PoeditМудири файлҳо - PoeditPoedit муҳтавои беэътиборро дар файли “%s” ислоҳ кард.Poedit метавонад тарҷумаҳои навро танҳо аз тарҷумаҳои пешакӣ аз дохили файл ё ин ки аз ҳофизаи тарҷумаҳо пешниҳод кунад. Истифодаи TM (ҳофизаи тарҷумаҳо) бефоида аст, агар он холӣ бошад, вале агар шумо ба TM тарҷумаҳои зиёдро илова кунед, ҳофизаи тарҷумаҳо ба шумо бисёр самаранокии ҳақиқӣ меорад.Барномаи Poedit барои тарҷумаи файлҳо хеле осон аст.&Тарҷумаи пешакӣ…Тарҷумаи пешакӣТарҷумаи пешакӣТарҷумаи пешакии %u сатрТарҷумаи пешакии %u сатрДар ҳоли тарҷумаи пешакӣ…Тарҷумаи пешакӣ мувофиқатҳои аниқ ё монандро аз ҳофизаи тарҷума барои сатрҳои тарҷуманашуда ҷустуҷӯ мекунад ва пешниҳод менамояд.ХусусиятҳоТанзимот...Хусусиятҳо…Истифодаи қолаббандӣ аз файлҳои мавҷудбудаШумораи ҷамъи қаблӣШумораи ҷамъи қаблӣНоми лоиҳа ва версия:Номи лоиҳа:Лоиҳа:ПоксозӣПок кардани тарҷумаҳои нестшудаБаромадПӯшидани %sҚаблӣДубора анҷом доданНавсозӣДар ҳоли ивази номи: %dҶойгузин карданҲамаро ҷойгузин &карданҲамаро ҷойгузин &карданСатри ҷойгузорӣҶойгузин кардан…Сарлавҳаи шакли ҷамъ лозим аст.Танзими дубораДубора танзим кардани ҳофизаи тарҷумаҳоПоксозии тарҷумаҳо аз ҳофизаи тарҷумаҳо ҳамаи тарҷумаҳоро бебозгашт нест мекунад. Ин амал ботил сохта намешавад.ТафтишРостНигоҳ доштан&Нигоҳ доштан ҳамчун…&Нигоҳ доштан ҳамчун…Нигоҳ доштан ҳамчунНигоҳ доштан ҳамчун…Нигоҳ доштани тағйирот&Ҳамаро интихоб карданҲамаро интихоб карданИнтихоби файлҳои TMX барои воридотИнтихоби ҷузвдонИнтихоби файлҳо барои тарҷумаЗабони дилхоҳро интихоб кунедХидматҳоТанзими забонИнтихоби забонShift+Ҳамаро намоиш доданНамоиш додани навори ҷонибӣНамоиши санҷиши имло ва дастури забонНамоиш додани навори вазъиятНамоиш додани рақами &сатрНамоиши ивазкуниҳоНамоиш додани навори абзорНамоиш додани огоҳиҳоНамоиш додан ё пинҳон кардани навори ҷонибӣНамоиш додани навори ҷонибӣНамоиш додани навори вазъиятНамоиш додани рақами &сатрНамоиш додани огоҳиҳоНавори ҷонибӣВорид шуданБаромаданВорид шуданВорид шудан ба 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 ба калимаи калидӣ васеъ мекунад.ҲамагӣТабдилдиҳӣСатрҳое, ки метавонед тарҷума кунед аз низоми Gettext ба таври дастӣ илова намешаванд, вале онҳо аз рамзи манбаъ ба таври худкор бароварда мешаванд. Ин тавр онҳо дақиқ ва навшуда мебошанд. Тарҷумон қолиби файлҳои PO (POTs)-ро истифода мебарад, ки аз ҷониби барномасозон таҳия мешаванд.%d аз %d (%d %%) тарҷума шудТарҷумаЗабони тарҷумаҲофизаи тарҷумаБозбинии тарҷума &лозим астХусусиятҳои тарҷумаПойгоҳи иттилоотии ҳофизаи тарҷумаҳо вайрон аст: %s (%d).Хатои ҳофизаи тарҷумаҳо: %s (%d).Бозбинии тарҷума &лозим астХусусиятҳои тарҷумаТарҷума — %sДуUTF-8 (тавсия мешавад)Ботил сохтанИстиснои иҷронашуда ба амал омад: %sUnix (тавсия мешавад)ТарҷуманашудаБолоҶадидсозии ҳамаҲамаи файлҳоро дар ин лоиҳа навсозӣ кунедНавсозӣ аз файли &POT…Навсозӣ аз файли &POT…Навсозӣ кардан аз рамзНавсозӣ кардан аз POTНавсозӣ кардан аз рамзНавсозӣ аз манбаи рамзХулосаи навсозӣНавсозиҳоНавсозӣ иҷро нашудДар ҳоли навсозии маълумоти корбар…Дар ҳоли боркунии тарҷумаҳо…Истифодаи ибораҳои шахсӣИстифодаи шрифти фармоишӣ:Истифодаи шрифти фармоишӣ барои майдонҳои вуруди матн:Истифодаи қоидаҳои пешфарз барои ин забонИстифодаи калидвожаҳои зерин (номҳои супориш) барои шинохтани сатрҳои тарҷумашаванда дар файлҳои манбаъ:Истифодаи ҳофизаи тарҷумаҳоСанҷишНатиҷаҳои санҷишБарориши %sДар ҳоли интизори санҷиши ҳаққоният…Хуш омадед ба PoeditҲангоми навсозӣ аз манбаъҳоТанҳо калимаҳои пурраРавзанаWindowsҶустуҷӯи даврӣГузарондан:Файлҳои тарҷумавии XLIFFҲаШумо инчунин метавонед сатрҳоро барои тарҷума аз рамзи манбъ бевосита бароред:Шумо зиёда аз як файл ба равзанаи Poedit гузошта наметавонед.Барои татбиқ кардани тағйирот, шумо бояд барномаро аз нав оғоз кунед.Номи шумоТағйироти шумо гум мешаванд, агар онҳоро нигоҳ надоред.Ном ва почтаи электронии шумо танҳо барои намоиш додани тарҷумони охирин дар сарлавҳаҳои файлҳои GNU gettext истифода мешаванд.СифрИнтихоби андозаaltБозбинӣ лозим астctrlфайлҳои муваққатиро нест накунед (барои ислоҳи нуқсонҳо)масалан, nplurals=2; plural=(n > 1);мувофиқати монанд дар дохили файлгузариш ба мавод дар рақами сатри лозимӣкоркарди poedit:// URIтарҷумаи пешакӣ аз TMshiftзабони номаълум“%s” файли POT-и боэътимод нест.poedit-3.5/locales/az.mo0000644000175100001770000010314214664354152012175 00000000000000 WX% Y% e%p%%J%g% J&T& c&m& t&&&&&&&&&&&&&&&''$'6'<'A'I'Q'c'u'y' }' '''' '''''(1(7(=(F(L(U([(w(((((((().) L) X)b)k)t) x) ))))) ))')*4* N*Y*7_*6**)*+ +](++<+D+$,@,G,"N,q, ,,,,,,,,-3-#H-l------- --../1. a.n.s......./ 4/B/H/M/b/f/}///// /?/ 30@0S0f0"k05000 0 0 0 0 11#1+131:1@1R1l1u112!2 (232 B2O2<d2"22 22*203!N3'p33T3 34 4 4414B4W4 l4 v4 4 44444 44 444 4 55"5A5D5 55 616 96 F6R6;W6666 6 667 7+7D7:I7 7<7.778898P8*Y88888h9l99 999999'9%:?:B:S:W: r:~::::::::::;;;;n;E5<{<<<@<,< ==,=%;=a=v== ========= = > > !>.> A>(L>u>{>z>???!? )? 4? A? M?X?"i??? ? ??? ??@@ (@5@ N@[@k@s@{@@@@@@ @ @ @@@ A!A5AEAZAoAA BB0B ABOBKVBBB BBB B CCCC(CC CC+D@D8CD|DD8PEREcEQ@FFF!+hjhh$h!hh-h i$i>iXikjpjj jjjjjj9k<Mkkkk"k"kkkl l l!l(lBl\ltll Hm#Tmxm~m]m\nanhnOn@noo /o$:o_ouooooo"ooop p p p 'p2pJpbp wp.p p!pppQqYq^qfqvqqqqq0qr "r.r 7rArHr]r rrrrrrss 3s=s FsSs\s sss#ssss!s! t+t!Itkttttluuuuu uRu9vNvfvvvvvviwyw)www-w7xSxQVxxxNzy_y)z@z.z"{({;|TC|s| }} ~n~ei! $/?Tq 'ۀ)+Ue)Á# *0([4%`  .) ,7?ZrQQ7@΅օ!"((9"12a`Cia[umgu!<EB we 8n*;N?"?>~ R WA-c)js&K#VB L]!l2U'5T\O%_S|]5l0T{-c9Atm\$;tLwxSb@[19DUoo8%7vrqY$ `z4#IH  VFbiCs3,~K FfI6Zrhh_7Yy.R}QM|XZPk&q}* DvG</+f{=Pe6NxHGgWpX:nM@(J J4.dyQE:p/k('3)^^d=O ,>0j+z (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(requires Windows 8 or newer)< &PreviousAbout %sAccountsAddAdd CommentAdd commentAdd directory to the listAdditional keywordsAdvancedAll Translation FilesAll commentsAlt+Always 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 errorCtrl+Cu&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 againDownDownloading latest translations…Downloading translations is disabled in this project.E&xitEditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:EnterEnter 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerForm %iFrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 CrowdinLeftLine %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.OKObsolete stringsOneOnly 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 translationsQuitQuit %sRecentRedoRefreshRemaining: %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.ReviewRightSaveSave asSave as…Save changesSelect &AllSelect AllSelect directorySelect translation files to importSelect your preferred languageServicesSet LanguageSet languageShift+Show AllShow 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)UntransUpUpdate 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.ZeroZoomaltctrle.g. nplurals=2; plural=(n > 1);handle a poedit:// URIshiftunknown language“%s” is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2024-08-30 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(0 yeni, 0 əski)(GNU GETTEXT haqqında daha ətraflı məlumat)(Yeni: %i, köhnə: %i)(İ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ərAlt+Hə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ıCtrl+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əAşağıƏ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:EnterTam 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:Tərcümə edilə bilən sətirlər ixrac edilir…Ekstraktoru qurEkstraktorlarƏmr xətası: %sPoedit ə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.Tamamlanır…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 %iSıxGNU gettextƏsasHTML FayllarıYardım%s GizlətDigərlərini GizlətYan 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ə edinSol“%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.OKƏski sətirlərBirSadə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Çıx%s ÇıxƏn SonYenilə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ışSağ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çinXidmətlərDili QurDil qurunShift+Hamısını GöstərYan 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şYuxarı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ıraltctrlməs. nplurals=2; plural=(n > 1);bir poedit:// URIshiftbilinməyən dil“%s” etibarlı bir POT faylı deyil.poedit-3.5/locales/uk.mo0000644000175100001770000022752014664354143012211 00000000000000|+: : :&:?:<S::J:g: V;`; o;y; ;;;;;;;;;;;;;;<<<0<B<H<M<U<]<o<<< < <<<< <<<<==0=L=R=X=a=g=p== = = ====>>7>N>e>k>p>>>>>> ? ???'?0? 4? @? L?Y? h?t? ? ?? ?? ???@@&@F@c@@ @ @1@@'@A.A HASA7YA6AA)AB B]"BB<BDB$C:C ACNCC C"CD+"D)ND xDDDDDDDDEE#4EXEmE|E EE EEEEEE%EF +FLFTF]FuF FF/F FkFXG]GpGGGG-G1G.H GHRH)iHH HYHI!I&I9ILIaIeI|IIIIIII;J CJ'PJ^xJLJ?$K dK rKK*KKK"K5K.LILdLjL}L L L L L LLLLLLLfMlMMuM(N?NRN"dNN NNN N NNN0N'OAO#VO<zO"OO OO*P03P!dP'PPPP(PTQ fQtQ yQ QQQQQ Q Q Q RR!R0RJRRRcR lRxR RRR R RRRRRRSz/TT TTT TT U2(U[UuU|UUU UU U U V!V&V;^D^Y^n^^^._4_J_=P__1__n_E[```;` ` aa@,amacb,#c,Pc}c cc2c*c ddwdj$e eeee%ee ff3fEfWf qffffffff8f g gg$g ,g 8g DgRg"Yg"|gg g gg g(ghhz'hhhhh h h h hh h i i i ,i 8iCi^ioi"iiii i ij jj$j -j:jTjdjtj j jjjj jjj!k *k8k@kHkQk Ykgkkkkkk k k kk ll.lBlRlgl|lmm 4m@mOmbm smm mmKmmn n%n:nMncn1nn n nn=ioo'p,p(>pgp op}p+pp p8p" q/q@qrCr8brrs8*t1ctRtctQLuu'u:ulvPv-vCwALwKw0w. x:x!x)x-y+Cy8oyCyuy,bzLz;z]{v{Z{gW|J|c }[n}o}:~7~m_[HN^Xp ف72("[~~łqDɃRVj o ȄЄӄ ڄ"$-F_p<Ѕ #$@eˆ#V cz ч. ;GPhHl5m7Y 3aω16;?\.a ͊ 1J!ZO|̍ލi?cGYWg’ڒ(<2N2 ̓֓%% 3-C-q ʔ##(.4Qnĕ%%-3H3| Ж, ,8e*ɗ*22R&& Ә&!*2]u=ә  ' E*R}Ϛ*1'Owś,-%=EcBE$2WqyV;Y6̞V]ZO\e|4/qd֡Aa"ʢA9Zgwt$$#֥,$'0L?}H*L1;~' +Ec r}C5@%fw)ө8j)*9ݫ*9BS|[Ьd,0­,ޭC =O?E2W2?1@6Q%6!%eC AjGZr$b$7E@\:: Ye&&%% !1!Su 7Ŷ11ԷMĸ-.@<o¹ <X^s2Һ3C9B}@/17H2c?IW,$׽85 !9%[$3$ڿ!A]%y%% *$ 9EVfu&&,:UX'T|#7 '7>Zv0& E0'v0! "7!HMj4 ( GQ=k5# 7VB"s-0^Xg J@K6(Tn5w5++$;` ##>*R*}"W("Jd!=5;A60x 853L#G03Q&k&0  2=9F9 %1 >qI'D/(X(kId+k\U\<X)%-N9Lu;Tp(G,,*4W'', $2'Ai2x c+>Xk'z'TTIM [1j  9Oh3*4D_.& !9Rnu(R( %2X6v-(>!(`(%P-)W o | D< E P8]!;-(-V;--C`3d1&&;)e;?o#'&")B1lT -tU%r8)<RS" YS0}"y?~8KDC t4E4zJ? Ih3 Y C U >5 Gt L R l\ g 17h-{yt; YSb{1B(t"=)+XUU9=>)|' "  < !&!(H!q!! !!!C!D!"$f"$"" ""1#*9#d#&w##'!$HI$F$8$*%F=%[%h%[I&&A'''(((48()m(0( ( ((w( t))#)))cZ**Vr++Y+4,,,-+-F-UK-%-N-U.l.5.....// /45nCv#=ld B@Twa QjqO 91B)aT'ZSFQYu>"/VJZsG6*[ar`^;XyVb?' <IL:x%AMZ\W88O,*d0)i{J-yK|]:c%}oo0][-Pg6YS&r(\p@X(tM?iE=eD"OU|53 w  fj,#32H 4[ pk {qke;mpgl16U85:`, +Y^L9$qz2fGu(A7N4!d0DNt{F<x_+7vX)nKG+>&9m3 LeUIN Iy E"nsk/<W>PhrVvT]cQmuR$bjD !_@xEl%WK-_7MCwbz/|gcAB` zh~?SC^*tf=\h!H'P#RiF&;$H1~.2 RsJo}.} .~ (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd AccountAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add accountAdd 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 languagesAlt+Always 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 errorCrowdin is an online localization management platform and collaborative translation tool.Ctrl+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 againDownDownloading 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:EnterEnter 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 loading translation file “%s”.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export errorExport 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…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)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport from TMX…Import translation files…Importing translation memory from “%s” 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 CrowdinLeftLine %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 translations were found in the TMX file.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKObsolete stringsOneOnly 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 translation templateOpen...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 translationsQuitQuit %sReading file content failed with the following error: %sRecentRecent 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 FinderReviewRightSaveSave &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 languageServicesSet LanguageSet languageSettingsSettings…Shift+Show AllShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow summary after updating filesShow 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.These strings are no longer in the source code. Poedit will remove them from the file now.These strings were found in the sources but were not in the file. Poedit will add them to the file now.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 entries in the file are probably incorrect.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 errorUntransUpUpdateUpdate 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 the file failed. Click on 'Details >>' for details.Updating 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown 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: 2024-08-30 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 проблеми із перекладом.%i рядок файлу «%s» було завантажено некоректно.%i рядки файлу «%s» було завантажено некоректно.%i рядків файлу «%s» було завантажено некоректно.%i рядка файлу «%s» було завантажено некоректно.Формат %sНалаштування %sФормат %s&Про застосунок&Про Poedit...&Застосувати&Повернутися&Скасувати&ОчиститиЗ&акрити&Копіювати&Вилучити&Завершити та до наступного&Завершити та до наступного&Редагування&Файл&Знайти…&Документація GNU gettext&Документація GNU gettextПере&йти&Групувати за контекстом&Групувати за контекстом&Довідка&Новий&Новий…&Наступний >Наступний перекладНаступний переклад&Ні&ОК&Онлайн-довідка&Онлайн-довідка&Відкрити...&Відкрити…&Вставити&Налаштування&Налаштування…Попередній перекладПопередній переклад&Властивості…&Знищити вилучені переклади&Знищити вилучені переклади&Вийти&Повторити&Замінити&Зберегти&Зберегти як&Показувати збіги в коді&Показувати збіги в коді&Початкове вікно&Початкове вікно&Переклад&СкасуватиНеперекладене — &вгорі&Неперекладене — вгорі&Оновити з початкового коду&Оновити з початкового коду&Перевірити переклад&Перевірити переклад&Вигляд&Так(0 нових, 0 застарілих)(Більше про GNU gettext)(Нових: %i, застарілих: %i)(Типова мова)(не авторизовано)(потрібна Windows 8 або новіші версії)< &Попередній<без назви>Про %sОбілковий записОблікові записиДодатиДодати обліковий записДодати коментарДодати файли…Додати теки…Додати проєктДодати шаблон…Додати обліковий записДодати коментарДодати теку до спискуДодати файли…Додати теки…Додати проєктДодати шаблон…Додаткові ключові словаДодаткові прапорці xgettext:Розширені параметриРозширені налаштування видобування…Розширені налаштування видобуванняРозширені налаштування видобування…Усі файли перекладуУсі коментаріУсі рядкиТакож типово використовувати ключові слова для підтримуваних мовAlt+Завжди встановлювати фокус у поле вводу текстуЕлемент в списку вхідних файлів:Елемент списку ключових слів:Зовнішній виглядЗастосуватиВи впевнені, що бажаєте видалити екстрактор "%s"?Ви впевнені, що хочете очистити пам'ять перекладів?Автоматично перевіряти наявність оновленьАвтоматично компілювати файл MO під час збереженняПовернутисяБазовий шлях:Бета-версії містять новітні функції і поліпшення, але можуть бути менш стабільними.Вивести все на передній планПошкоджений файл PO: msgstr у множині використовується без msgid_pluralПошкоджений файл PO: msgstr у однині використана разом із формою множини msgid_pluralЗламана розмітка у рядку перекладу.ВибратиОгляд файлівУсталено, неточні результати також включаються, але позначаються такими, що потребують доопрацювання. Увімкніть цю опцію, щоб включалися лише ідеальні збіги.СкасуватиСкасування…Не вдалося створити тимчасову теку.Не вдалося виконати програму: %sНеможливо зробити попередній переклад з невідомої мови.Неможливо здійснити попередній переклад без початкового тексту.Перша великаМенеджер &каталогівМенеджер &каталогівМенеджер каталогівЗмінити мову інтерфейсуКодування каталогу:Перевірити документ заразПеревірити граматику і орфографіюПеревіряти орфографію під час введенняПеревірити оновлення…Перевірити переклад на наявність помилокПеревірити наявність оновлень…Перевірка орфографіїОчиститиОчистити менюСтерти перекладОчистити менюСтерти перекладЗакритиХмараПоява в кодіПоява в кодіСпівпрацюйте з іншими людьми онлайн.Збирання початкових файлів…Команда для видобування перекладу:КоментарКоментар:Коментарі з префіксом:Компілювати в MO…Компілювати в…Скомпільовані файли перекладуНалаштувати видобування початкового коду у Властивостях.ПідтвердженняЗ'єднайте Poedit з підтримуваними хмарними платформами локалізації, щоб безперешкодно синхронізувати переклади, оброблювані на них.КопіюватиКопіювати форму одниниКопіювати з початкового текстуКопіювати форму одниниКопіювати з початкового текстуВиправляти автоматично орфографічні помилкиНе вдалося завантажити відомості про проєкт Localazy.Неможливо завантажити файл. Імовірно, він пошкоджений.Неможливо зберегти файл %s.Створити новийСтворити новий перекладСтворити новий переклад з POT-шаблону.Створити новий проєкт перекладівПомилка CrowdinCrowdin — це онлайн-платформа для керування локалізацією та засіб спільного перекладу.Ctrl+Ви&різатиКористувацькі екстрактори:Користувацькі екстрактори:Налаштувати панель інструментів…ВирізатиРозмір бази даних на диску:ВидалитиВидалити з пам'яті перекладівВидалити екстракторВидалити з пам'яті перекладівВидалити проєктВидалити коментарВидалити проєктВидалення проєкту не видалить жодного файлу перекладу.Теки:Справді хочете видалити проєкт «%s»?Хочете перезавантажити файл з диска? Якщо це зробити, ваші незбережені зміни в Poedit буде втрачено.Видалити всі переклади, які ідентичні початковому тексту?Що робити з невикористаним перекладом?Не зберігатиНе зберігатиНе показувати зновуНе позначати точні збіги як «потребує доопрацювання»Не показувати зновуВнизЗавантаження найновішого перекладу…Завантаження перекладів вимкнено в цьому проєкті.Перетягніть теки або файли сюдиПеретягніть теки або файли сюди&ВийтиЕ&кспорт до HTML…РедагуватиРедагувати &коментарРедагувати &коментарРедагувати коментарРедагувати коментарРедагувати проєктРедагувати проєктРедагуванняЗмінити…Електронна пошта:EnterПерейти в повноекранний режимЕлементи цього файлу мають форми множини, відмінні від вказаних у заголовку Plural-Formms файлуЗаписи з помилками — вгоріЗаписи з помилками — вгоріЕлементи з помилками позначені у списку червоним. Виділіть елемент, щоб переглянути подробиці помилки.Помилка завантаження файлу перекладу «%s».Не вдалося відкрити файлПомилка збереження файлуПомилка завантаження файлу XLIFF: %sПомилкиУсеВиключені шляхиЕкспорт до TMX…Експортувати як…Помилка експортуЕкспорт до HTML…Експорт до TMX…Не вдалося експортувати пам'ять перекладів до “%s”.Експортування перекладів…Видобути з початкового кодуВидобути нотатки для перекладачів з:Шукати початковий текст у цих теках:Видобування рядків для перекладу…Налаштування екстрактораЕкстракториНе вдалося виконати команду: %sНе вдалося зв'язатися з Poedit.Не вдалося завантажити файл з видобутими перекладами.Не вдалося об'єднати gettext-каталоги.Не вдалося оновити пам'ять перекладів: %sФайлНеможливо відкрити файлФайлу “%s” не існує.Файл «%s» не є файлом перекладу.Файл «%s» доступний лише для читання і не може бути збережений. Будь ласка, збережіть його з іншою назвою.Завершення…ЗнайтиЗнайти наступнийЗнайти попереднійЗнайти та замінити…Шукати в коментаряхШукати у початкових текстахШукати у перекладахЗнайти наступнийЗнайти попереднійВиправити мовуВиправити мовуВиправити заголовокВиправити заголовокФайли перекладу FlutterФорма %iФорма %i (невикористана)НайчастішіGNU gettextЗагальніHTML файлиДовідкаСховати %sСховати іншіСховати бічну панельСховати панель стануСховати це повідомленняЯк працює хмарна синхронізація?IDТочно вилучити з каталогу всі невикористані переклади? Якщо вони знову знадобляться в майбутньому, вам доведеться ще раз перекладати їх.Якщо ви раніше відмовили у доступі до файлів, то можете дозволити його в Системних налаштуваннях > Безпека та конфіденційність > Конфіденційність > Файли та теки.Якщо ви раніше відмовили у доступі до файлів, то можете дозволити його в Системних налаштуваннях > Безпека та конфіденційність > Файли та теки.ЗнехтуватиІгнорувати регістрІмпорт з TMX…Імпортувати файли перекладу…Помилка імпортуІмпорт з TMX…Імпортувати файли перекладу…Не вдалося імпортувати пам'ять перекладів з “%s”.Імпортування перекладів…У: %sВключити бета-версіїНепослідовний верхній/нижній регістрНепослідовний пробілВідомості про перекладачаВстановитиНеправильний файлВиклик:Файли перекладу JSONЗалишитиНазва мови або кодМова перекладу така ж, як і мова оригіналу.Мову перекладу не зазначено.Мова перекладу:Вибір мовиКоманда перекладачів:Мова:Останні зміниДокладніше про ключові слова GettextДокладніше про форми множиниДокладнішеДокладніше про %sДокладніше про CrowdinВлівоРядок %d файлу «%s» пошкоджений (недійсні дані %s).Закінчення рядків:Список розширень, розділених крапкою з комою (наприклад, *.cpp;*.h):Завантажити англійськоюLocalazy — платформа локалізації з високим рівнем автоматизації, що дозволяє будь-кому легко перекладати свої продукти й матеріали різними мовами.Файли MO не можна редагувати безпосередньо в Poedit.У нижній регістрУ верхній регістрСтворити новий переклад з цього POT-файлу.Неправильний формат заголовка: «%s»Керувати обліковими записамиКерувати…Злиття відмінностей…МінімізуватиНазва проєкту, для якого призначений перекладІм'я:До н&аступного незавершеногоДо н&аступного незавершеногоПотребує доопрацюванняПотребує доопрацюванняПомилка мережі: %s (%d)Ніколи не дозволяйте списку рядків отримати фокус. Якщо активовано, можна використовувати Ctrl+стрілки для навігації за допомогою клавіатури, але вводити текст можна починати одразу не натискаючи Tab для зміни фокусу.НовийНовий з &POT/PO-файлу…Новий з &POT/PO-файлу…Нові рядкиНаступна форма множиниНаступна форма множиниНіЗбігів не знайденоНемає записів, які можна попередньо перекласти.Немає даних про виявлення цього рядка у початковому коді вказаному у файлі.Збігів не знайденоЖодних проблем з перекладом не знайдено.У вашому обліковому записі немає проєктів з перекладу.У TMX-файлі перекладів не знайдено.Немає даних про використанняПерекладено не всі форм множини.Не авторизовані, увійдіть повторно.Примітки для перекладачівГараздЗастарілі рядкиОдинУвімкніть це лише якщо ви впевнені в якості своєї пам'яті перекладів. Типово всі збіги з пам'яті перекладів позначаються «потребує доопрацювання» й підлягають перевірці.Заповнювати лише точні збігиВідкрити хмарний переклад…Відкрити нещодавніВідкрити й редагувати файли перекладу.Відкрити хмарний перекладВідкрити хмарний переклад…Відкрити файлВідкрити в редакторіВідкрити в редакторіВідкрити недавніВідкрити шаблон перекладуВідкрити...Відкрити…ОпціїІншеДо п&опереднього незавершеногоДо п&опереднього незавершеногоФайли перекладу POШаблони перекладу POTPOT файли — лише шаблони й самі не містять будь-яких перекладів. Щоб зробити переклад, створіть новий файл PO, заснований на цьому шаблоні.ВставитиВставити в поточному стиліШляхиВиконує оновлення з початкового коду для всіх файлів проєкту.У доступі відмовлено.У перекладі відсутній заповнювач «%s»Коректність заповнювачівБудь ласка, відкрийте і редагуйте відповідний PO-файл. Коли ви збережете його, MO-файл також оновиться.Будь ласка, спершу збережіть файл. Без збереження цей розділ редагувати не можна.МножинаПереклад форм множиниВираз форми множини, застосований у файлі, незвичний для %s.Форми множини:PoeditPoedit. Менеджер каталогівPoedit автоматично виправив хибний вміст у файлі «%s».Poedit може спробувати заповнити нові рядки тільки попередніми перекладами з цього файлу або з вашої пам'яті перекладів. Використання ПП буде не дуже ефективним, якщо вона майже порожня, але буде поліпшуватися в міру додавання перекладів.Poedit не може показати початковий код, де використовується рядок, оскільки файл або недоступний у вказаному розташуванні, або він має символічне посилання, яке не вказує на справжній файл.Poedit — простий у використанні редактор перекладів.Poedit не вдалося відкрити файл «%s».Попередній &переклад…Попередній перекладПопередньо перекладенийПопередньо перекладено %u рядокПопередньо перекладено %u рядкиПопередньо перекладено %u рядківПопередньо перекладено %u рядкаПопередній переклад з пам'яті перекладів…Виконати попередній переклад…Попередній переклад автоматично знаходить точні або нечіткі збіги для неперекладених рядків в пам'яті перекладів і заповнює в їх перекладах.Попередній переклад вимагає, щоб був доступний початковий текст. Він не працює, якщо використовуються лише ID без самого тексту.Попередній переклад потребує, щоб мова початкового тексту була відомою. Poedit не зміг знайти її в цьому файлі.НалаштуванняНалаштування...Налаштування…Підготування рядків…Зберігати форматування наявних файлівПопередня форма множиниПопередня форма множиниПопередній початковий текстРаніше відредагованоРаніше відредагованоНазва та версія проєкту:Назва проєкту:Проєкт:ПроєктиПеревірки пунктуаціїЗнищитиЗнищити вилучені перекладиВийтиВийти з %sНе вдалося прочитати вміст файлу через таку помилку: %sНещодавніНедавні файлиВідновитиОновитиПерезавантажити файлПерезавантажити файлЗалишилося: %dВилучитиВилучити переклади, які збігаються з джереломВилучити переклади, які збігаються з джереломЗамінитиЗамінити &всеЗамінити &всеРядок заміниЗамінити…Відсутній обов’язковий заголовок Plural-Forms.СкинутиСкинути пам'ять перекладівПри очищенні пам'яті перекладів будуть безповоротно видалені всі збережені переклади. Ви не зможете скасувати цю операцію.Показати у FinderОглядВправоЗберегтиЗберегти &як…Зберегти &як…Все одно зберегтиВсе одно зберегтиЗберегти якЗберегти як…Зберегти зміниЗберегти файлЗнімки екрана:Вибрати &всеВибрати всеВиберіть файл TMX для імпортуВиберіть текуВибрати файл перекладуВиберіть файли перекладу для імпортуВибрати шаблон перекладуВиберіть бажану мовуСервісиВибрати мовуВибрати мовуНалаштуванняНалаштування…Shift+Показати всеПоказати бічну панельПоказати орфографічні та граматичні помилкиПоказати панель стануПоказувати &ID рядківПоказати заміниПоказати панель інструментівПоказувати попередженняПоказати у провідникуПоказати в теціПоказати або сховати бічну панельПоказати бічну панельПоказати панель стануПоказувати &ID рядківПоказувати підсумок після оновлення файлівПоказувати попередженняБічна панельУвійтиВийтиУвійтиУвійти до %sУвійти до хмарного облікового записуУвійти до CrowdinУвійти у хмарний обліковий записВийтиОднинаРозумне копіювання/вставленняРозумні тиреРозумні посиланняРозумні цитатиСортувати за положенням у &файліСортувати за &оригіналомСортувати за &перекладомСортувати за положенням у &файліСортувати за &оригіналомСортувати за &перекладомКодування файлів з початковим кодом:Екстрактори застосовуються для пошуку рядків, що перекладаються, у файлах початкового коду та витягують їх так, щоб їх можна було перекласти.Початковий код недоступний.Початковий код не знайденоОригіналID початкового текстуПочатковий текст — %sКлючові слова початкових файлівШлях до джерелКлючові слова джерельних файлівШлях до джерелМовленняПеревірка орфографії вимкнена, тому що не встановлено словник для мови %s.Перевірка орфографії та граматикиПочати озвучуванняЗупинити озвучуванняЗбережені переклади:Контекст рядка: %sІдентифікатор рядка: %sКількість символів у рядкуКількість символів у рядку: переклад | джерелоРядок пошукуЗаміниПропозиціїПропозиції будуть недоступними, якщо неправильно вказано мову перекладу. Це може вплинути на інші функції, як-от форми множини.Зайвий символ-заповнювач «%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» було змінено іншим застосунком.Старий початковий текст (до оновлення), якому відповідає неточний переклад.Найпростіший спосіб заповнити цей файл перекладами — оновити його з POT:Переклад не починається з пробілу.Переклад закінчується символом нового рядка, а початковий текст — ні.Переклад закінчується пробілом, а початковий текст — ні.Переклад закінчується на «%s», але початковий текст закінчується на «%s».У переклад відсутній символ нового рядка вкінці.У перекладі відсутній пробіл вкінці.Переклад готовий до використання, але %d запис ще не перекладено.Переклад готовий до використання, але %d записи ще не перекладено.Переклад готовий до використання, але %d записів ще не перекладено.Переклад готовий до використання, але %d записи ще не перекладено.Переклад готовий до використання.Переклад повинен закінчуватися на «%s».Переклад не повинен закінчуватися на «%s».Переклад повинен починатися з великої букви.Переклад повинен починатися з символу в нижньому регістрі.Переклад починається з пробілу, а початковий текст — ні.Переклади були позначені як "потребує доопрацювання". Перевірте їх правильність.Дивно, але переклад відсутній.Сталися негаразди при спробі правильного форматування файлу (але його все одно збережено).Виникла помилка під час вивантаження перекладів на Localazy.Під час завантаження файлу сталася помилка. В результаті деякі дані можуть бути відсутні або пошкоджені.Ці параметри впливають на внутрішнє форматування файлів PO. Скоректуйте їх, якщо у вас є спеціальні вимоги, наприклад, якщо ви користуєтеся системою контролю версій.Цих рядків вже немає у початковому коді. Poedit вилучить їх з каталогу.Ці рядки було знайдено у початкових текстах, але їх немає у файлі. Poedit додасть їх у файл.Цей файл JSON не є файлом перекладів і не може бути змінений у Poedit.Усі переклади, які збігаються з початковим текстом, буде видалено. Цю дію неможливо скасувати.Цей файл містить елементи з формами множини, але не має налаштованого заголовка Plural-Forms.Цей файл використовує ID рядків замість початкового тексту. Poedit може завантажувати тексти англійською з файлу «%s».Ця команда запускає екстрактор. %o розширює назву початкового файлу, %K — список ключових слів, %F — список вхідних файлів, %C — кодування (див. нижче).Цей рядок був знайдений в пам'яті перекладів Poedit.Це буде додано до командного рядка лише якщо вказано кодування файлів з початкового коду. %c замінюється на значення кодування.Це буде додано до командного рядка для кожного вхідного файлу. %f замінюється на ім'я файлу.Це буде додано до командного рядка для кожного ключового слова. %k замінюється на ключове слово.ЗагаломПеретворенняЗаписи, що перекладаються, не додаються в систему Gettext вручну, але автоматично витягуються з початкового коду. Таким чином забезпечується їхня актуальність і точність. Перекладачі зазвичай працюють з PO-файлами (POT), які підготував для них розробник.Перекласти проєкт із хмариПерекладено: %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 файлів.НульМасштабуватиaltПотребує доопрацюванняctrlне видаляти тимчасові файли (для налагодження)напр. nplurals=2; plural=(n > 1);підбирати схожий переклад всередині файлуперейти до елемента у рядку з указаним номеромобробити poedit:// URIпопередній переклад через ППshiftневідома мованепідтримувана версія (%s)you@example.com«%s» — некоректний POT-файл.poedit-3.5/locales/sr.po0000644000175100001770000023636314664354065012231 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "Сакриј ово обавештење" msgid "Don’t Show Again" msgstr "Не приказуј поново" msgid "Don’t show again" msgstr "Не приказуј поново" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(нових: %i, застарелих: %i)" msgid "Collecting source files…" msgstr "Прикупљање датотека са изворним кодом…" msgid "Extracting translatable strings…" msgstr "Издвајање стрингова за превод…" msgid "Failed to load file with extracted translations." msgstr "Није могуће учитати датотеку са издвојеним преводима." msgid "Merging differences…" msgstr "Обједињавање разлика…" msgid "Updating translations" msgstr "Ажурирање превода" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "Није могуће отворити датотеку „%s”." msgid "Invalid file" msgstr "Неважећа датотека" #, c-format msgid "Malformed header: “%s”" msgstr "Неисправан формат заглавља: „%s”" msgid "PO Translation Files" msgstr "PO датотеке превода" msgid "POT Translation Templates" msgstr "POT шаблони превода" msgid "XLIFF Translation Files" msgstr "XLIFF датотеке превода" msgid "JSON Translation Files" msgstr "JSON датотеке превода" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "Flutter датотеке превода" msgid "All Translation Files" msgstr "Све датотеке превода" msgid "The file is in a format not recognized by Poedit." msgstr "Датотека је у формату који Poedit не препознаје." msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "Ова JSON датотека не садржи преводе и не може се уређивати у Poedit-у." #, c-format msgid "Reading file content failed with the following error: %s" msgstr "Дошло је до следеће грешке при читању датотеке: %s" #, c-format msgid "" "File “%s” is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "Датотека „%s” је доступна само за читање и не може се сачувати.\n" "Сачувајте је под другим именом." #, c-format msgid "Couldn’t save file %s." msgstr "Није могуће сачувати датотеку „%s”." msgid "Screenshots:" msgstr "Снимци екрана:" #, c-format msgid "%i line of file “%s” was not loaded correctly." msgid_plural "%i lines of file “%s” were not loaded correctly." msgstr[0] "%i ред у датотеци „%s” није исправно учитан." msgstr[1] "%i реда у датотеци „%s” нису исправно учитана." msgstr[2] "%i редова у датотеци „%s” није исправно учитано." #, c-format msgid "Line %d of file “%s” is corrupted (not valid %s data)." msgstr "Ред %d у датотеци „%s” је оштећен (неважећи подаци у %s)." msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "PO датотека је оштећена: користи се msgstr за једнину уз msgid_plural" msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "PO датотека је оштећена: користи се msgstr за множину без msgid_plural" msgid "Couldn’t load the file, it is probably damaged." msgstr "Није могуће учитати датотеку. Вероватно је оштећена." msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "Дошло је до грешака при учитавању датотеке. Због тога су неки подаци " "изгубљени или оштећени." msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "Датотека је успешно сачувана, иако је дошло до проблема при форматирању." #, 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 формату, а подешавање је измењено сходно томе." msgid "Error saving file" msgstr "Грешка при чувању датотеке" #, c-format msgid "“%s” is not a valid POT file." msgstr "„%s” је неважећа POT датотека." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Дошло је до грешке при учитавању XLIFF датотеке: %s" #, c-format msgid "unsupported version (%s)" msgstr "неподржана верзија (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML msgid "Broken markup in translation string." msgstr "Неисправна ознака у стрингу за превод." msgid "(Use default language)" msgstr "(подразумевани језик)" msgid "Language selection" msgstr "Избор језика" msgid "Select your preferred language" msgstr "Изаберите жељени језик" msgid "You must restart Poedit for this change to take effect." msgstr "" "Потребно је да поново покренете Poedit како би ова измена ступила на снагу." msgid "Add Account" msgstr "Додај налог" msgid "Add account" msgstr "Додај налог" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "Сазнајте више о услузи %s" msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "Повежите Poedit са подржаним платформама у облаку за локализацију да бисте с " "лакоћом синхронизовали преводе који се налазе на њима." msgid "How does cloud sync work?" msgstr "Како функционише синхронизација у облаку?" msgid "Account" msgstr "Налог" msgid "(not signed in)" msgstr "(нисте пријављени)" msgid "File" msgstr "Датотека" msgid "Open cloud translation" msgstr "Отвори превод из облака" msgid "Manage accounts" msgstr "Управљај налозима" msgid "Project:" msgstr "Пројекат:" msgid "Language:" msgstr "Језик:" msgid "Sign in to Cloud Account" msgstr "Пријава на налог у облаку" msgid "Sign in to cloud account" msgstr "Пријава на налог у облаку" msgid "No translation projects listed in your account." msgstr "Нема преводилачких пројеката на вашем налогу." msgid "Downloading latest translations…" msgstr "Преузимање најновијих превода…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #, c-format msgid "Sign in to %s" msgstr "Пријавите се у %s" msgid "Syncing" msgstr "Синхронизација" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s…" msgstr "Отпремање превода на %s…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s failed." msgstr "Отпремање превода на %s није успело." msgid "Syncing error" msgstr "Грешка при синхронизовању" msgid "Add" msgstr "&Додај" msgid "Unknown Crowdin error." msgstr "Непозната грешка у Crowdin-у." msgid "Not authorized, please sign in again." msgstr "Немате овлашћења. Поново се пријавите." msgid "Downloading translations is disabled in this project." msgstr "Преузимање превода из овог пројекта је онемогућено." msgid "Sign In" msgstr "Пријавите се" msgid "Sign in" msgstr "Пријави ме" msgid "Sign Out" msgstr "Одјави ме" msgid "Sign out" msgstr "Одјави ме" msgid "Learn more about Crowdin" msgstr "Сазнајте више о Crowdin-у" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" "Crowdin је онлајн платформа за управљање локализацијом и заједничко " "превођење." msgid "Waiting for authentication…" msgstr "Чека се потврда идентитета…" msgid "Updating user information…" msgstr "Ажурирање информација о кориснику…" msgid "Sign in to Crowdin" msgstr "Пријава на Crowdin" msgid "Syncing with Crowdin failed." msgstr "Синхронизација са Crowdin-ом није успела." msgid "Crowdin error" msgstr "Грешка у Crowdin-у" msgid "Uploading translations…" msgstr "Преводи се отпремају…" msgid "&Copy" msgstr "&Копирај" msgid "Learn more" msgstr "Сазнајте више" msgid "&Help" msgstr "По&моћ" msgid "MO files can’t be directly edited in Poedit." msgstr "MO датотеке се не могу директно уређивати у Poedit-у." msgid "Error opening file" msgstr "Грешка при отварању датотеке" msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "Уместо тога отворите и уређујте одговарајућу PO датотеку. Када је сачувате, " "ажурираће се и MO датотека." msgid "don’t delete temporary files (for debugging)" msgstr "не бриши привремене датотеке (ради отклањања грешака)" msgid "handle a poedit:// URI" msgstr "обрада URI адресе poedit://" msgid "go to item at given line number" msgstr "иди на ставку у наведеном реду" msgid "Failed to communicate with Poedit process." msgstr "Није могуће комуницирати са Poedit-овим процесом." #, c-format msgid "Unhandled exception occurred: %s" msgstr "Дошло је до неочекиваног изузетка: %s" msgid "Select translation template" msgstr "Избор шаблона превода" msgid "Select translation file" msgstr "Избор датотеке превода" msgid "Poedit is an easy to use translation editor." msgstr "Poedit је једноставан алат за превођење." msgid "You can’t drop more than one file on Poedit window." msgstr "У Poedit-ов прозор можете превући само једну датотеку." #, c-format msgid "File “%s” is not a translation file." msgstr "„%s” није датотека превода." #, c-format msgid "File “%s” doesn’t exist." msgstr "Датотека „%s” не постоји." 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". #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "" "Провера правописа је онемогућена јер није инсталиран речник за %s језик." msgid "Install" msgstr "Инсталирај" #, c-format msgid "The file “%s” has been changed by another application." msgstr "Датотеку „%s” је променила друга апликација." msgid "Reload file" msgstr "Поново учитај датотеку" msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "Желите ли да поново учитате датотеку са диска? Тиме ћете изгубити све " "несачуване промене у Poedit-у." msgid "Ignore" msgstr "Занемари" msgid "Reload File" msgstr "Поново учитај датотеку" msgid "The file has been modified. Do you want to save changes?" msgstr "Датотека је измењена. Желите ли да сачувате промене?" msgid "Save changes" msgstr "Чување промена" msgid "Your changes will be lost if you don’t save them." msgstr "Изгубићете све промене ако их не сачувате." msgid "Save" msgstr "Сачувај" msgid "Do&n’t save" msgstr "&Не чувај" msgid "Don’t Save" msgstr "Не чувај" msgid "The changes made by the other application will be lost if you save." msgstr "" "Ако сачувате, промене које је направила друга апликација ће бити изгубљене." msgid "Cancel" msgstr "&Откажи" msgid "Save Anyway" msgstr "Свеједно сачувај" msgid "Save anyway" msgstr "Свеједно сачувај" msgid "Save as…" msgstr "Сачувај као…" msgid "Compile to…" msgstr "Компајлирање у…" msgid "Compiled Translation Files" msgstr "Компајлиране датотеке превода" msgid "Export to HTML…" msgstr "Извоз у HTML…" msgid "HTML Files" msgstr "HTML датотеке" #, c-format msgid "In: %s" msgstr "Датотека: %s" msgid "Source code not available." msgstr "Изворни кôд је недоступан." msgid "Updating failed" msgstr "Ажурирање није успело" 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 "" "Није могуће ажурирати преводе из изворног кода, јер није пронађен кôд на " "локацији која је наведена у својствима датотеке." msgid "Permission denied." msgstr "Забрањен приступ." 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. 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. 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." msgid "Translation entries in the file are probably incorrect." msgstr "Вероватно су уноси у датотеци нетачни." msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "" "Није могуће ажурирати датотеку. Кликните на „Детаљи >>” за више информација." msgid "Open translation template" msgstr "Отварање шаблона превода" #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "Пронађен је %d проблем у преводу." msgstr[1] "Пронађена су %d проблема у преводу." msgstr[2] "Пронађено је %d проблема у преводу." msgid "Validation results" msgstr "Резултати провере ваљаности" 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" "Када изаберете такав унос, приказаће се детаљи о грешци." msgid "The file was saved safely." msgstr "Датотека је сачувана." msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "Датотека је сачувана и компајлирана у MO формат, али вероватно неће исправно " "радити." msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "Датотека је сачувана, али се не може компајлирати у MO формат за даље " "коришћење." msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "Датотека је компајлирана у MO формат, али вероватно неће исправно радити." msgid "The file cannot be compiled into the MO format and used." msgstr "Датотека се не може компајлирати у MO формат за даље коришћење." msgid "No problems with the translation found." msgstr "Нису пронађени проблеми у преводу." #, 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 уноса још није преведено." msgid "The translation is ready for use." msgstr "Спреман је за коришћење." #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "Poedit је аутоматски исправио неважећи садржај у датотеци „%s”." msgid "" "The file contained duplicate items, which is not allowed in PO files and " "would prevent the file from being used. Poedit fixed the issue, but you " "should review translations of any items marked as needing work and correct " "them if necessary." msgstr "" "Датотека је садржала дупликате, што није дозвољено. Poedit је исправио " "проблем, али је пожељно да проверите и исправите све преводе који су " "означени за дораду." msgid "Language of the translation isn’t set." msgstr "Није наведен језик превода." msgid "Set Language" msgstr "Изабери језик" msgid "Set language" msgstr "Изабери језик" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." msgid "" "Suggestions are not available if the translation language is not set " "correctly. Other features, such as plural forms, may be affected as well." msgstr "" "Предлози нису доступни ако није изабран језик превода. Исто важи и за " "множинске облике и друге функције." msgid "Language of the translation is the same as source language." msgstr "Језик превода се поклапа са изворним језиком." msgid "Fix Language" msgstr "Исправи језик" msgid "Fix language" msgstr "Исправи језик" msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "Ова датотека садржи уносе са множинским облицима, али јој недостаје заглавље " "са правилом за множину." msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "Број множинских облика у уносима се разликује од онога што пише у заглављу " "датотеке" msgid "Required header Plural-Forms is missing." msgstr "У заглављу недостаје образац за множинске облике." #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Синтактичка грешка у заглављу код обрасца за множинске облике („%s”)." msgid "Fix the Header" msgstr "Исправи заглавље" 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". #, 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.")" msgid "Review" msgstr "Прегледај" msgid "Would you like to use English for source text?" msgstr "Желите ли да енглески буде изворни текст?" #, 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" msgid "Load English" msgstr "Учитај енглески" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Преведено: %d од %d (%d%%)" #, c-format msgid "Remaining: %d" msgstr "Преостало: %d" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d грешка" msgstr[1] "%d грешке" msgstr[2] "%d грешака" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d унос" msgstr[1] "%d уноса" msgstr[2] "%d уноса" msgid " (unsaved)" msgstr " (несачувано)" msgid " (modified)" msgstr " (измењено)" #, c-format msgid "Failed to update translation memory: %s" msgstr "Није могуће ажурирати преводилачку меморију: %s" msgid "Remove same-as-source translations" msgstr "Уклони преводе идентичне извору" msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "Желите ли да уклоните све преводе које су идентичне изводном тексту?" msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" "Ова акција ће уклонити све преводе који се у потпуности подударају са " "изворним текстом. Ово није могуће опозвати." msgid "Keep" msgstr "&Задржи" msgid "Remove" msgstr "Уклони" msgid "Purge deleted translations" msgstr "Чишћење избрисаних превода" msgid "Do you want to remove all translations that are no longer used?" msgstr "Желите ли да уклоните све преводе који се више не користе?" 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 "" "Ако наставите, трајно ћете уклонити све преводе означене као избрисане. " "Мораћете да поново преведете стрингове ако буду додати у будућности." msgid "Purge" msgstr "&Обриши" msgid "Copy from source text" msgstr "Копирај из из&ворног текста" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "Обри&ши превод" msgid "Clear Translation" msgstr "Обри&ши превод" msgid "Edit comment" msgstr "Уреди коментар" msgid "Edit Comment" msgstr "Уреди коментар" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "Појављивања у коду" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "Појављивања у коду" msgid "Hide Sidebar" msgstr "Сакриј бочну траку" msgid "Show Sidebar" msgstr "Прикажи бочну траку" msgid "Hide Status Bar" msgstr "Сакриј статусну траку" msgid "Show Status Bar" msgstr "&Статусна трака" msgid "String length in characters: translation | source" msgstr "Дужина стринга у знаковима: превод | извор" msgid "String length in characters" msgstr "Дужина стринга у знаковима" msgid "Source text" msgstr "Изворни текст" msgid "Singular" msgstr "Једнина" msgid "Plural" msgstr "Множина" msgid "Translation" msgstr "Превод" msgid "Pre-translated" msgstr "Прелиминарни превод" 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. msgid "Needs work" msgstr "Потребна дорада" msgid "" "POT files are only templates and don’t contain any translations themselves.\n" "To make a translation, create a new PO file based on the template." msgstr "" "POT датотеке су само шаблони без превода.\n" "Да бисте започели превод, направите нову PO датотеку према шаблону." msgid "Create new translation" msgstr "Направи нови превод" msgid "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 msgid "Source text ID" msgstr "ID изворног текста" msgid "Everything" msgstr "Све" #, c-format msgid "Form %i" msgstr "Облик %i" #, c-format msgid "Form %i (unused)" msgstr "Облик %i (не користи се)" msgid "Zero" msgstr "Нула" msgid "One" msgstr "Један" msgid "Two" msgstr "Два" msgid "Other" msgstr "Друго" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, c-format msgid "String context: %s" msgstr "Контекст стринга: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #, c-format msgid "String identifier: %s" msgstr "Идентификатор стринга: %s" #, c-format msgid "%s Format" msgstr "%s формат" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "%s формат" #, c-format msgid "Translation — %s" msgstr "Превод – %s" msgid "ID" msgstr "ID" #, c-format msgid "Source text — %s" msgstr "Изворни текст – %s" msgid "unknown language" msgstr "непознат језик" #, c-format msgid "Network error: %s (%d)" msgstr "Грешка на мрежи: %s (%d)" msgid "Unknown error" msgstr "Непозната грешка" #, c-format msgid "Failed command: %s" msgstr "Неуспела команда: %s" msgid "Failed to merge gettext catalogs." msgstr "Није могуће објединити gettext каталоге." msgid "Open in Editor" msgstr "Отвори у уређивачу" msgid "Open in editor" msgstr "Отвори у уређивачу" msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" "У датотеци није наведена информација о појављивањима овог стринга у изворном " "коду." msgid "No usage information" msgstr "Нема информација о коришћењу" #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d појављивање у коду" msgstr[1] "%d појављивања у коду" msgstr[2] "%d појављивања у коду" msgid "Source code not found" msgstr "Изворни кôд није пронађен" 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 не може да прикаже изворни кôд у ком се стринг користи, јер датотека " "није доступна на наведеној локацији или се ради о симболичкој референци која " "не упућује на стварну датотеку." msgid "File cannot be opened" msgstr "Није могуће отворити датотеку" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "Poedit не може да отвори датотеку „%s”." msgid "Find" msgstr "Пронађи" msgid "Replace" msgstr "Замени" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "Опције" msgid "Ignore case" msgstr "Не разликуј велика и мала слова" msgid "Wrap around" msgstr "Тражи укруг" msgid "Whole words only" msgstr "Само целе речи" msgid "Find in source texts" msgstr "Изворни текст" msgid "Find in translations" msgstr "Преводи" msgid "Find in comments" msgstr "Коментари" msgid "Close" msgstr "&Затвори" msgid "Replace &All" msgstr "З&амени све" msgid "Replace &all" msgstr "З&амени све" msgid "&Replace" msgstr "За&мени" msgid "< &Previous" msgstr "< &Претходно" msgid "&Next >" msgstr "&Следеће >" msgid "String to find" msgstr "Стринг за претрагу" msgid "Replacement string" msgstr "Стринг за замену" #, c-format msgid "Cannot execute program: %s" msgstr "Није могуће извршити програм: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "Назив или кôд језика" msgid "Translation Language" msgstr "Језик превода" msgid "Language of the translation:" msgstr "Језик превода:" msgid "All strings" msgstr "Сви стрингови" msgid "Couldn’t download Localazy project details." msgstr "Није могуће преузети податке о пројекту на Localazy-ју." msgid "There was an error when uploading translations to Localazy." msgstr "Дошло је до грешке при отпремању превода на Localazy." msgid "Projects" msgstr "Пројекти" msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Localazy је платформа за локализацију са високим нивоом аутоматизације која " "свакоме омогућава да једноставно преведе своје производе и садржај на више " "језика." msgid "Add Project" msgstr "Додај пројекат" msgid "Add project" msgstr "Додај пројекат" msgid "Poedit - Catalogs manager" msgstr "Poedit – менаџер каталога" msgid "Edit…" msgstr "Уреди…" msgid "Create new translations project" msgstr "Направи нови преводилачки пројекат" msgid "Delete the project" msgstr "Избриши пројекат" msgid "Edit the project" msgstr "Уреди пројекат" msgid "Update all" msgstr "А&журирај све" msgid "Update all catalogs in the project" msgstr "Ажурирај све каталоге у пројекту" msgid "Total" msgstr "Укупно" msgid "Untrans" msgstr "Непреведено" msgctxt "column/row header" msgid "Needs Work" msgstr "Потребна дорада" msgid "Errors" msgstr "Грешке" msgid "Last modified" msgstr "Последња измена" msgid "Select directory" msgstr "Избор фолдера" msgid "Directories:" msgstr "Фолдери:" msgid "" msgstr "<неименован>" #, c-format msgid "Do you want to delete project “%s”?" msgstr "Желите ли да избришете пројекат „%s”?" msgid "Delete project" msgstr "Избриши пројекат" msgid "Deleting the project will not delete any translation files." msgstr "Брисањем пројекта нећете избрисати датотеке превода." msgid "Confirmation" msgstr "Потврда" msgid "Update all catalogs in this project?" msgstr "Желите ли да ажурирате све каталоге у овом пројекту?" msgid "Performs update from source code on all files in the project." msgstr "Ажурираћете све датотеке у пројекту из изворног кода." msgid "Check for Updates…" msgstr "Провери д&а ли постоје исправке…" msgid "Catalogs Manager" msgstr "Менаџер каталога" msgid "&Preferences…" msgstr "&Подешавања…" msgid "&Edit" msgstr "&Уређивање" msgid "Undo" msgstr "Опозови" msgid "Redo" msgstr "Понови" msgid "Paste and Match Style" msgstr "Налепи и усклади стил" msgid "Delete" msgstr "&Избриши" msgid "Spelling and Grammar" msgstr "Правопис и граматика" msgid "Show Spelling and Grammar" msgstr "Прикажи правопис и граматику" msgid "Check Document Now" msgstr "Одмах провери документ" msgid "Check Spelling While Typing" msgstr "Проверавај правопис током куцања" msgid "Check Grammar With Spelling" msgstr "Провера граматике са правописом" msgid "Correct Spelling Automatically" msgstr "Аутоматски исправи правопис" msgid "Substitutions" msgstr "Замене" msgid "Show Substitutions" msgstr "Прикажи замене" msgid "Smart Copy/Paste" msgstr "Паметно копирање/налепљивање" msgid "Smart Quotes" msgstr "Паметни наводници" msgid "Smart Dashes" msgstr "Паметне црте" msgid "Smart Links" msgstr "Паметни линкови" msgid "Text Replacement" msgstr "Замена текста" msgid "Transformations" msgstr "Трансформације" msgid "Make Upper Case" msgstr "Претвори у велика слова" msgid "Make Lower Case" msgstr "Претвори у мала слова" msgid "Capitalize" msgstr "Претвори у велика почетна слова" msgid "Speech" msgstr "Говор" msgid "Start Speaking" msgstr "Покрени говор" msgid "Stop Speaking" msgstr "Заустави говор" msgid "&View" msgstr "&Приказ" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Show Toolbar" msgstr "Прикажи траку са алаткама" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Customize Toolbar…" msgstr "Прилагоди траку са алаткама…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Enter Full Screen" msgstr "Пређи у режим целог екрана" msgid "Window" msgstr "Прозор" msgid "Minimize" msgstr "Умањи" msgid "Zoom" msgstr "Зум" msgid "Welcome to Poedit" msgstr "Добро дошли у Poedit" msgid "Bring All to Front" msgstr "Постави све у предњи план" msgid "Information about the translator" msgstr "Информације о преводиоцу" msgid "Name:" msgstr "Име:" msgid "Your Name" msgstr "Ваше име" msgid "Email:" msgstr "&Имејл:" msgid "you@example.com" msgstr "adresa@domen.rs" msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "Ваше име и имејл-адреса се користе само при постављању последњег преводиоца " "у заглављу GNU gettext датотека." msgid "Editing" msgstr "Уређивање" msgid "Automatically compile MO file when saving" msgstr "Аутоматски компајлирај MO датотеку при чувању" msgid "Show summary after updating files" msgstr "Прикажи резиме након ажурирања датотека" msgid "Check spelling" msgstr "Проверавај правопис" msgid "Always change focus to text input field" msgstr "Увек пребаци фокус на поље за унос текста" msgid "" "Never let the list of strings take focus. If enabled, you must use Ctrl-" "arrows for keyboard navigation but you can also type text immediately, " "without having to press Tab to change focus." msgstr "" "Не дозвољава да листа стрингова заузме фокус. Ако је омогућено, морате да " "користите Ctrl и стрелице за навигацију. Текст можете да уносите директно у " "поље а да не притискате Tab за промену фокуса." msgid "Appearance" msgstr "Изглед" msgid "Use custom list font:" msgstr "Фонт за листу:" msgid "Use custom text fields font:" msgstr "Фонт за текстуална поља:" msgid "Change UI language" msgstr "Промените језик интерфејса" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions msgid "(requires Windows 8 or newer)" msgstr "(потребан је Windows 8 или новији)" msgid "General" msgstr "Опште" msgid "Use translation memory" msgstr "Користи преводилачку меморију" msgid "Manage…" msgstr "Управљај…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "При ажурирању из изворног кода" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "користи сличне преводе из датотеке" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "преведи помоћу преводилачке меморије" 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 може покушати да попуни нове уносе само из претходних превода у " "датотеци или из читаве преводилачке меморије. Употреба преводилачке меморије " "неће имати много учинка ако је слабо попуњена, али ће бити све боља како " "додајете нове преводе." msgid "Stored translations:" msgstr "Сачуваних превода:" msgid "Database size on disk:" msgstr "Величина базе на диску:" msgid "Import Translation Files…" msgstr "Увези датотеке превода…" msgid "Import translation files…" msgstr "Увези датотеке превода…" msgid "Import From TMX…" msgstr "Увези из TMX-а…" msgid "Import from TMX…" msgstr "Увези из TMX-а…" msgid "Export To TMX…" msgstr "Извези у TMX…" msgid "Export to TMX…" msgstr "Извези у TMX…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). msgid "Reset" msgstr "Поништи" msgid "Select translation files to import" msgstr "Избор датотеке превода за увоз" msgid "Translation Memory" msgstr "Преводилачка меморија" msgid "Importing translations…" msgstr "Увоз превода…" #, c-format msgid "Error loading translation file “%s”." msgstr "Грешка при учитавању датотеке превода „%s”." msgid "Finalizing…" msgstr "Завршавање…" msgid "Select TMX files to import" msgstr "Избор ТМХ датотека за увоз" msgid "TMX Files" msgstr "TMX датотеке" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "Увоз преводилачке меморије из „%s” није успео." msgid "Import error" msgstr "Грешка при увозу" msgid "Export as…" msgstr "Извези као…" msgid "Exporting translations…" msgstr "Извоз превода…" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "Извоз преводилачке меморије у „%s” није успео." msgid "Export error" msgstr "Грешка при извозу" msgid "Reset translation memory" msgstr "Ресетовање преводилачке меморије" msgid "Are you sure you want to reset the translation memory?" msgstr "Желите ли заиста да ресетујете преводилачку меморију?" 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. msgid "TM" msgstr "Меморија" msgid "" "Source code extractors are used to find translatable strings in the source " "code files and extract them so that they can be translated." msgstr "" "Издвајачи се користе за проналажење и издвајање стрингова за превод у " "датотекама изворног кода." msgid "Custom Extractors:" msgstr "Прилагођени издвајачи:" msgid "Custom extractors:" msgstr "Прилагођени издвајачи:" msgid "GNU gettext" msgstr "GNU gettext" 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 и друге)." msgid "Delete extractor" msgstr "Избриши издвајач" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "Желите ли заиста да избришете издвајач „%s”?" msgid "Extractors" msgstr "Издвајачи" msgid "Accounts" msgstr "Налози" msgid "Automatically check for updates" msgstr "Аутоматски тражи ажурирања" msgid "Include beta versions" msgstr "Укључи бета верзије" msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "Бета верзије садрже најновије функције и побољшања, али могу бити мање " "стабилне." msgid "Updates" msgstr "Ажурирања" msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Ова подешавања утичу на форматирање PO датотека. Прилагодите их својим " "потребама, нпр. ако користите систем за управљање изворним кодом." msgid "Line endings:" msgstr "Завршеци редова:" msgid "Unix (recommended)" msgstr "Unix (препоручено)" msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "Прелом:" msgid "Preserve formatting of existing files" msgstr "Очувај форматирање постојећих датотека" msgid "Advanced" msgstr "Напредно" msgid "Settings" msgstr "Поставке" msgid "Preparing strings…" msgstr "Припрема стрингова…" msgid "Pre-translating from translation memory…" msgstr "Прелиминарно превођење помоћу преводилачке меморије…" #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "Прелиминарно је преведен %u стринг" msgstr[1] "Прелиминарно су преведена %u стринга" msgstr[2] "Прелиминарно је преведено %u стрингова" msgid "Pre-translating…" msgstr "Прелиминарно превођење…" 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. msgid "Pre-translate" msgstr "Прелиминарни превод" msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "За прелиминарни превод је потребан изворни текст. Ова функција неће радити " "само са идентификаторима." msgid "Cannot pre-translate from unknown language." msgstr "Није могуће прелиминарно превести са непознатог језика." msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Да бисте користили прелиминарни превод потребно је да изворни језик буде " "познат. Poedit га није препознао у овој датотеци." msgid "Only fill in exact matches" msgstr "Само потпуна подударања" msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "Подразумевано се приказују и приближни резултати, али су означени да им је " "потребна дорада. Означите ову опцију како би се приказивала само потпуна " "подударања." msgid "Don’t mark exact matches as needing work" msgstr "Потпуна подударања не означавај за дораду" 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 "" "Укључите ову опцију само ако сте сигурни у квалитет ваше преводилачке " "меморије. Подразумевано се свим подударањима додељује ознака „потребна " "дорада” и такве стрингове би требало проверити." msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "Прелиминарни превод аутоматски проналази потпуна или приближна подударања за " "непреведене стрингове у преводилачкој меморији и попуњава њихове преводе." #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "Прелиминарно је преведен %d унос." msgstr[1] "Прелиминарно су преведена %d уноса." msgstr[2] "Прелиминарно је преведено %d уноса." msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "Преводи су означени за дораду. Проверите њихову исправност." msgid "No entries could be pre-translated." msgstr "Ниједан унос се не може прелиминарно превести." msgid "" "The TM doesn’t contain any strings similar to the content of this file. It " "is only effective for semi-automatic translations after Poedit learns enough " "from files that you translated manually." msgstr "" "Преводилачка меморија не садржи стрингове који су слични онима у тренутној " "датотеци. Ова опција је корисна за полуаутоматске преводе тек након што " "Poedit научи довољно из датотека које сте ручно превели." msgid "Cancelling…" msgstr "Отказивање…" msgid "Drag Folders or Files Here" msgstr "Овде превуците фолдере или датотеке" msgid "Drag folders or files here" msgstr "Овде превуците фолдере или датотеке" msgid "Add Folders…" msgstr "Додај фолдере…" msgid "Add folders…" msgstr "Додај фолдере…" msgid "Add Files…" msgstr "Додај датотеке…" msgid "Add files…" msgstr "Додај датотеке…" msgid "Add Wildcard…" msgstr "Додај заменски знак…" msgid "Add wildcard…" msgstr "Додај заменски знак…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) msgid "Reveal in Finder" msgstr "Прикажи у Finder-у" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" msgid "Show in Explorer" msgstr "Прикажи у Explorer-у" msgid "Show in Folder" msgstr "Прикажи у фолдеру" msgid "Paths" msgstr "Путање" msgid "Excluded paths" msgstr "Изузете путање" msgid "Advanced extraction settings" msgstr "Напредна подешавања издвајања" msgid "Extract notes for translators from:" msgstr "Издвој напомене преводиоцима:" msgid "Comments prefixed with:" msgstr "Из коментара који почињу са:" msgid "All comments" msgstr "Из свих коментара" msgid "Additional xgettext flags:" msgstr "Додатне xgettext ознаке:" msgid "Additional keywords" msgstr "Додатне кључне речи" msgid "Name of the project the translation is for" msgstr "Назив пројекта за који је намењен превод" msgid "Team name and email address or URL" msgstr "Назив групе и имејл-адреса или URL" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "нпр. nplurals=2; plural=(n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (препоручује се)" msgid "Please save the file first. This section cannot be edited until then." msgstr "" "Прво сачувајте датотеку. Овај одељак се не може уређивати док то не урадите." msgid "Placeholders correctness" msgstr "Исправност чувара места" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "У преводу недостаје чувар места „%s”." #, c-format msgid "Superfluous placeholder “%s” that isn’t in source text." msgstr "Непотребан чувар места „%s” који не постоји у изворном тексту." msgid "Plural form translations" msgstr "Преводи множинских облика" msgid "Not all plural forms are translated." msgstr "Нису сви множински облици преведени." msgid "Inconsistent upper/lower case" msgstr "Недоследност при употреби великих и малих слова" msgid "The translation should start as a sentence." msgstr "Превод мора почињати великим словом." msgid "The translation should start with a lowercase character." msgstr "Превод мора почињати малим словом." msgid "Inconsistent whitespace" msgstr "Недоследност при употреби размака" msgid "The translation doesn’t start with a space." msgstr "Превод не почиње размаком." msgid "The translation starts with a space, but the source text doesn’t." msgstr "Превод почиње размаком, али изворни текст не." msgid "The translation is missing a newline at the end." msgstr "У преводу недостаје нови ред на крају." msgid "The translation ends with a newline, but the source text doesn’t." msgstr "Превод се завршава новим редом, али изворни текст не." msgid "The translation is missing a space at the end." msgstr "У преводу недостаје размак на крају." msgid "The translation ends with a space, but the source text doesn’t." msgstr "Превод се завршава размаком, али изворни текст не." msgid "Punctuation checks" msgstr "Провере интерпункције" #, c-format msgid "The translation should end with “%s”." msgstr "Превод се мора завршавати знаком „%s”." #, c-format msgid "The translation should not end with “%s”." msgstr "Превод се не сме завршавати знаком „%s”." #, c-format msgid "The translation ends with “%s”, but the source text ends with “%s”." msgstr "Превод се завршава знаком „%s”, а изворни текст знаком „%s”." msgid "Cloud" msgstr "Облак" msgid "Clear Menu" msgstr "Обриши листу" msgid "Clear menu" msgstr "Обриши листу" msgid "Comment:" msgstr "Коментар:" msgid "Update" msgstr "Ажурирај" msgid "&Delete" msgstr "Из&бриши" msgid "Delete the comment" msgstr "Избриши коментар" msgid "Edit project" msgstr "Уређивање пројекта" msgid "Project name:" msgstr "Назив пројекта:" msgid "Browse" msgstr "&Потражи" msgid "Add directory to the list" msgstr "Додајте фолдер на листу" msgid "OK" msgstr "&У реду" msgid "&File" msgstr "&Датотека" msgid "&New…" msgstr "&Ново…" msgid "New from &POT/PO file…" msgstr "Но&во из POT/PO датотеке…" msgid "New From &POT/PO File…" msgstr "Но&во из POT/PO датотеке…" msgid "&Open…" msgstr "&Отвори…" msgid "Open Recent" msgstr "Отвори &недавне" msgid "Open recent" msgstr "Отвори &недавне" msgid "Open cloud translation…" msgstr "Отвори превод из облака…" msgid "Open Cloud Translation…" msgstr "Отвори превод из облака…" msgid "&Start window" msgstr "&Уводни прозор" msgid "&Start Window" msgstr "&Уводни прозор" msgid "Catalogs &manager" msgstr "&Менаџер каталога" msgid "Catalogs &Manager" msgstr "&Менаџер каталога" msgid "&Close" msgstr "&Затвори" msgid "&Save" msgstr "&Сачувај" msgid "Save &as…" msgstr "Сачувај &као…" msgid "Save &As…" msgstr "Сачувај &као…" msgid "Compile to MO…" msgstr "Ко&мпајлирај у MO…" msgid "E&xport to HTML…" msgstr "И&звоз у HTML…" msgid "Check for updates…" msgstr "Потр&ажи ажурирања…" msgid "Settings…" msgstr "Подешавања…" msgid "&Preferences" msgstr "&Подешавања" msgid "E&xit" msgstr "&Изађи" msgid "Quit" msgstr "Изађи" msgid "Copy from singular" msgstr "Копирај из &једнине" msgid "Copy From Singular" msgstr "Копирај из &једнине" msgid "Translation needs &work" msgstr "Означи превод за &дораду" msgid "Translation Needs &Work" msgstr "Означи превод за &дораду" msgid "Edit &comment" msgstr "Уреди ко&ментар" msgid "Edit &Comment" msgstr "Уреди ко&ментар" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "Предлози" msgid "&Find…" msgstr "П&ронађи…" msgid "Replace…" msgstr "&Замени…" msgid "Find next" msgstr "Пронађи &следеће" msgid "Find previous" msgstr "Пронађи пр&етходно" msgid "Find and Replace…" msgstr "Пронађи и замени…" msgid "Find Next" msgstr "Пронађи &следеће" msgid "Find Previous" msgstr "Пронађи пр&етходно" msgid "Show string &ID" msgstr "ID &стринга" msgid "Show String &ID" msgstr "ID &стринга" msgid "Show warnings" msgstr "&Упозорења" msgid "Show Warnings" msgstr "&Упозорења" msgid "Sort by &file order" msgstr "Сортирај као у &датотеци" msgid "Sort by &File Order" msgstr "Сортирај као у &датотеци" msgid "Sort by &source" msgstr "Сортирај према &изворном тексту" msgid "Sort by &Source" msgstr "Сортирај према &изворном тексту" msgid "Sort by &translation" msgstr "Сортирај према п&реводу" msgid "Sort by &Translation" msgstr "Сортирај према п&реводу" msgid "&Group by context" msgstr "&Групиши по контексту" msgid "&Group By Context" msgstr "&Групиши по контексту" msgid "Entries with errors first" msgstr "Прво уноси са грешкама" msgid "Entries with Errors First" msgstr "Прво уноси са грешкама" msgid "&Untranslated entries first" msgstr "Прво &непреведени уноси" msgid "&Untranslated Entries First" msgstr "Прво &непреведени уноси" msgid "&Show code occurrences" msgstr "Појављивања у &коду" msgid "&Show Code Occurrences" msgstr "Појављивања у &коду" msgid "Show sidebar" msgstr "Прикажи бочну траку" msgid "Show status bar" msgstr "&Статусна трака" msgid "&Translation" msgstr "П&ревод" msgid "&Update from source code" msgstr "&Ажурирај из изворног кода" msgid "&Update from Source Code" msgstr "&Ажурирај из изворног кода" msgid "Update from &POT file…" msgstr "А&журирај из POT датотеке…" msgid "Update from &POT File…" msgstr "А&журирај из POT датотеке…" msgid "Sync with Crowdin" msgstr "&Синхронизуј са Crowdin-ом" msgid "Pre-&translate…" msgstr "&Прелиминарни превод…" msgid "&Validate translations" msgstr "П&ровери ваљаност превода" msgid "&Validate Translations" msgstr "П&ровери ваљаност превода" msgid "Remove Same-as-Source Translations" msgstr "Уклони преводе идентичне извору" msgid "&Purge deleted translations" msgstr "&Очисти избрисане преводе" msgid "&Purge Deleted Translations" msgstr "&Очисти избрисане преводе" msgid "&Properties…" msgstr "С&војства…" msgid "&Go" msgstr "&Навигација" msgid "&Done and next" msgstr "&Заврши и настави" msgid "&Done and Next" msgstr "&Заврши и настави" msgid "Previously edited" msgstr "Претходна &измена" msgid "Previously Edited" msgstr "Претходна &измена" msgid "&Previous translation" msgstr "&Претходни превод" msgid "&Previous Translation" msgstr "&Претходни превод" msgid "&Next translation" msgstr "&Следећи превод" msgid "&Next Translation" msgstr "&Следећи превод" msgid "P&revious unfinished" msgstr "П&ретходни недовршени" msgid "P&revious Unfinished" msgstr "П&ретходни недовршени" msgid "Ne&xt unfinished" msgstr "С&ледећи недовршени" msgid "Ne&xt Unfinished" msgstr "С&ледећи недовршени" msgid "Previous plural form" msgstr "Пр&етходни множински облик" msgid "Previous Plural Form" msgstr "Пр&етходни множински облик" msgid "Next plural form" msgstr "Сле&дећи множински облик" msgid "Next Plural Form" msgstr "Сле&дећи множински облик" msgid "&Online help" msgstr "О&нлајн помоћ" msgid "&Online Help" msgstr "О&нлајн помоћ" msgid "&GNU gettext manual" msgstr "П&риручник за GNU gettext" msgid "&GNU gettext Manual" msgstr "П&риручник за GNU gettext" msgid "&About Poedit" msgstr "&О Poedit-у" msgid "&About" msgstr "&О програму" msgid "Extractor setup" msgstr "Подешавање издвајача" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Листа екстензија раздвојених тачка-зарезом (нпр. *.cpp;*.h):" msgid "Invocation:" msgstr "Позивање:" msgid "Command to extract translations:" msgstr "Команда за издвајање превода:" 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 – кодирање (в. испод)." msgid "An item in keywords list:" msgstr "Ставка у листи кључних речи:" msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Ово ће бити додато у командну линију за сваку кључну реч.\n" "Параметар %k означава кључну реч." msgid "An item in input files list:" msgstr "Ставка у листи улазних датотека:" #, 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 означава назив датотеке." msgid "Source code charset:" msgstr "Кодирање изворног кода:" #, 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 означава кодирање." msgid "Translation Properties" msgstr "Својства превода" msgid "Project name and version:" msgstr "Назив и верзија пројекта:" msgid "Language team:" msgstr "Тим преводилаца:" msgid "Plural forms:" msgstr "Множински облици:" msgid "Use default rules for this language" msgstr "&Подразумевана правила за овај језик" msgid "Use custom expression" msgstr "Прилагођени израз" msgid "Learn about plural forms" msgstr "Сазнајте више о множинским облицима" msgid "Charset:" msgstr "Кодирање:" msgid "Advanced Extraction Settings…" msgstr "Напредна подешавања издвајања…" msgid "Advanced extraction settings…" msgstr "Напредна подешавања издвајања…" msgid "Translation properties" msgstr "Својства превода" msgid "Sources Paths" msgstr "Путање до изворних датотека" msgid "Sources paths" msgstr "Путање до изворних датотека" msgid "Extract text from source files in the following directories:" msgstr "Издвој текст из изворних датотека у следеће фолдере:" msgid "Base path:" msgstr "Основна путања:" msgid "Sources Keywords" msgstr "Кључне речи изворних датотека" msgid "Sources keywords" msgstr "Кључне речи изворних датотека" msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Тражи стрингове за превод у изворним датотекама према овим кључним речима " "(називима функција):" msgid "Also use default keywords for supported languages" msgstr "Користи и подразумеване кључне речи за подржане језике" msgid "Learn about gettext keywords" msgstr "Сазнајте више о кључним речима gettext-а" msgid "Update summary" msgstr "Резиме ажурирања" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" "Ови стрингови су пронађени у изворима, али нису у датотеци.\n" "Poedit ће их сада додати у њу." msgid "New strings" msgstr "Нови стрингови" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" "Ови стрингови се више не налазе у изворном коду.\n" "Poedit ће их сада уклонити из датотеке." msgid "Obsolete strings" msgstr "Застарели стрингови" msgid "(0 new, 0 obsolete)" msgstr "(0 нових, 0 застарелих)" msgid "Open" msgstr "" msgid "Open file" msgstr "Отвори датотеку" msgid "Save file" msgstr "Сачувај датотеку" msgid "Validate" msgstr "Провери ваљаност" msgid "Check for errors in the translation" msgstr "Провери да ли има грешака у преводу" msgid "Update from code" msgstr "Ажурирај из кода" msgid "Update from Code" msgstr "Ажурирај из кода" msgid "Update from source code" msgstr "Ажурирај из изворног кода" msgid "Sidebar" msgstr "Бочна трака" msgid "Show or hide the sidebar" msgstr "Прикажи или сакриј бочну траку" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. msgid "Previous source text" msgstr "Претходни изворни текст" msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "Стари изворни текст (до ажурирања) који одговара нетачном преводу." msgid "Notes for translators" msgstr "Напомене преводиоцима" msgid "Comment" msgstr "Коментар" msgid "Add comment" msgstr "Додај коментар" msgid "Add Comment" msgstr "Додај коментар" msgid "Delete From Translation Memory" msgstr "Избриши из преводилачке меморије" msgid "Delete from translation memory" msgstr "Избриши из преводилачке меморије" msgid "Translation suggestions" msgstr "Предложени преводи" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). msgid "No matches found" msgstr "Нема резултата" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). msgid "No Matches Found" msgstr "Нема резултата" msgid "This string was found in Poedit’s translation memory." msgstr "Овај стринг је пронађен у Poedit-овој преводилачкој меморији." msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "За предложене преводе је потребан изворни текст. Ова функција неће радити " "само са идентификаторима." msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Да бисте користили предлоге превода потребно је да изворни језик буде " "познат. Poedit га није препознао у овој датотеци." msgid "The TMX file is malformed." msgstr "Неисправан формат TMX датотеке." msgid "No translations were found in the TMX file." msgstr "У TMX датотеци нису пронађени преводи." #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "База података преводилачке меморије је оштећена: %s (%d)." #, c-format msgid "Translation memory error: %s (%d)." msgstr "Грешка у преводилачкој меморији: %s (%d)." msgid "Cannot create temporary directory." msgstr "Није могуће направити привремени фолдер." msgid "There are no translations. That’s unusual." msgstr "Нема уноса. То је необично." msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "Translators typically use PO template files (POTs) prepared for them by the " "developer." msgstr "" "У систему gettext, уноси за превод се не додају ручно, већ се аутоматски " "издвајају\n" "из изворног кода. Тако остају ажурни и прецизни.\n" "Преводиоци обично користе шаблоне (POT датотеке) које им припреми програмер." msgid "(Learn more about GNU gettext)" msgstr "Сазнајте више о GNU gettext-у" msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "Најједноставнији начин да попуните ову датотеку преводима јесте да је " "ажурирате помоћу POT датотеке:" msgid "Update from POT" msgstr "Ажурирај помоћу POT датотеке" msgid "Take translatable strings from an existing POT template." msgstr "Преузмите стрингове за превод из постојећег POT шаблона." msgid "" "You can also extract translatable strings directly from the source code:" msgstr "Стрингове за превод можете да издвојите и директно из изворног кода:" msgid "Extract from sources" msgstr "Издвој из изворног кода" msgid "Configure source code extraction in Properties." msgstr "Подесите издвајање из изворног кода у својствима." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #, c-format msgid "Version %s" msgstr "Верзија %s" msgid "Create new" msgstr "Направи нови" msgid "Create new translation from POT template." msgstr "Направите нови превод помоћу POT шаблона." msgid "Browse files" msgstr "Прегледај датотеке" msgid "Open and edit translation files." msgstr "Отворите и уређујте датотеке превода." msgid "Translate cloud project" msgstr "Преведите пројекат у облаку" msgid "Collaborate with other people online." msgstr "Сарађујте са другима онлајн." msgid "Recent files" msgstr "Недавне датотеке" msgid "Sync" msgstr "Синхронизуј" 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") #, c-format msgid "About %s" msgstr "О %s-у" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #, c-format msgid "%s Preferences" msgstr "Подешавања %s-а" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "Услуге" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "Сакриј %s" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "Сакриј друге" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "Прикажи све" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "Изађи из %s-а" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "Подешавања…" msgid "Preferences..." msgstr "Подешавања…" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "Недавно" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "Често коришћено" msgid "&Apply" msgstr "&Примени" msgid "Apply" msgstr "Примени" msgid "&Back" msgstr "&Назад" msgid "Back" msgstr "Назад" msgid "&Cancel" msgstr "&Откажи" msgid "&Clear" msgstr "&Обриши" msgid "Clear" msgstr "Обриши" msgid "Copy" msgstr "Копирај" msgid "Cu&t" msgstr "&Исеци" msgid "Cut" msgstr "Исеци" msgid "Edit" msgstr "Уреди" msgid "&Quit" msgstr "&Изађи" msgid "Help" msgstr "Помоћ" msgid "&New" msgstr "&Ново" msgid "New" msgstr "&Ново" msgid "&No" msgstr "&Не" msgid "No" msgstr "Не" msgid "&OK" msgstr "&У реду" msgid "Open…" msgstr "Отвори…" msgid "&Open..." msgstr "&Отвори…" msgid "Open..." msgstr "Отвори…" msgid "&Paste" msgstr "&Налепи" msgid "Paste" msgstr "Налепи" msgid "Preferences" msgstr "Подешавања" msgid "&Redo" msgstr "&Понови" msgid "Refresh" msgstr "Освежи" msgid "&Save as" msgstr "&Сачувај као" msgid "Save as" msgstr "Сачувај као" msgid "Select &All" msgstr "Изабери &све" msgid "Select All" msgstr "Изабери све" msgid "&Undo" msgstr "&Опозови" msgid "&Yes" msgstr "&Да" msgid "Yes" msgstr "Да" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "Up" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "Down" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "Left" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "Right" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "shift" poedit-3.5/locales/uk.po0000644000175100001770000024444714664354065012226 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "Сховати це повідомлення" msgid "Don’t Show Again" msgstr "Не показувати знову" msgid "Don’t show again" msgstr "Не показувати знову" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(Нових: %i, застарілих: %i)" msgid "Collecting source files…" msgstr "Збирання початкових файлів…" msgid "Extracting translatable strings…" msgstr "Видобування рядків для перекладу…" msgid "Failed to load file with extracted translations." msgstr "Не вдалося завантажити файл з видобутими перекладами." msgid "Merging differences…" msgstr "Злиття відмінностей…" msgid "Updating translations" msgstr "Оновлення перекладів" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "Неможливо відкрити файл «%s»." msgid "Invalid file" msgstr "Неправильний файл" #, c-format msgid "Malformed header: “%s”" msgstr "Неправильний формат заголовка: «%s»" msgid "PO Translation Files" msgstr "Файли перекладу PO" msgid "POT Translation Templates" msgstr "Шаблони перекладу POT" msgid "XLIFF Translation Files" msgstr "Файли перекладу XLIFF" msgid "JSON Translation Files" msgstr "Файли перекладу JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "Файли перекладу Flutter" msgid "All Translation Files" msgstr "Усі файли перекладу" msgid "The file is in a format not recognized by Poedit." msgstr "Файл у форматі, який не розпізнає Poedit." msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "Цей файл JSON не є файлом перекладів і не може бути змінений у Poedit." #, c-format msgid "Reading file content failed with the following error: %s" msgstr "Не вдалося прочитати вміст файлу через таку помилку: %s" #, c-format msgid "" "File “%s” is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "Файл «%s» доступний лише для читання і не може бути збережений.\n" "Будь ласка, збережіть його з іншою назвою." #, c-format msgid "Couldn’t save file %s." msgstr "Неможливо зберегти файл %s." msgid "Screenshots:" msgstr "Знімки екрана:" #, c-format msgid "%i line of file “%s” was not loaded correctly." msgid_plural "%i lines of file “%s” were not loaded correctly." msgstr[0] "%i рядок файлу «%s» було завантажено некоректно." msgstr[1] "%i рядки файлу «%s» було завантажено некоректно." msgstr[2] "%i рядків файлу «%s» було завантажено некоректно." msgstr[3] "%i рядка файлу «%s» було завантажено некоректно." #, c-format msgid "Line %d of file “%s” is corrupted (not valid %s data)." msgstr "Рядок %d файлу «%s» пошкоджений (недійсні дані %s)." msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" "Пошкоджений файл PO: msgstr у однині використана разом із формою множини " "msgid_plural" msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" "Пошкоджений файл PO: msgstr у множині використовується без msgid_plural" msgid "Couldn’t load the file, it is probably damaged." msgstr "Неможливо завантажити файл. Імовірно, він пошкоджений." msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "Під час завантаження файлу сталася помилка. В результаті деякі дані можуть " "бути відсутні або пошкоджені." msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "Сталися негаразди при спробі правильного форматування файлу (але його все " "одно збережено)." #, 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, і відповідним чином були змінені налаштування." msgid "Error saving file" msgstr "Помилка збереження файлу" #, c-format msgid "“%s” is not a valid POT file." msgstr "«%s» — некоректний POT-файл." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Помилка завантаження файлу XLIFF: %s" #, c-format msgid "unsupported version (%s)" msgstr "непідтримувана версія (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML msgid "Broken markup in translation string." msgstr "Зламана розмітка у рядку перекладу." msgid "(Use default language)" msgstr "(Типова мова)" msgid "Language selection" msgstr "Вибір мови" msgid "Select your preferred language" msgstr "Виберіть бажану мову" msgid "You must restart Poedit for this change to take effect." msgstr "Зміни набудуть чинності після перезапуску Poedit." msgid "Add Account" msgstr "Додати обліковий запис" msgid "Add account" msgstr "Додати обліковий запис" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "Докладніше про %s" msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "З'єднайте Poedit з підтримуваними хмарними платформами локалізації, щоб " "безперешкодно синхронізувати переклади, оброблювані на них." msgid "How does cloud sync work?" msgstr "Як працює хмарна синхронізація?" msgid "Account" msgstr "Обілковий запис" msgid "(not signed in)" msgstr "(не авторизовано)" msgid "File" msgstr "Файл" msgid "Open cloud translation" msgstr "Відкрити хмарний переклад" msgid "Manage accounts" msgstr "Керувати обліковими записами" msgid "Project:" msgstr "Проєкт:" msgid "Language:" msgstr "Мова:" msgid "Sign in to Cloud Account" msgstr "Увійти до хмарного облікового запису" msgid "Sign in to cloud account" msgstr "Увійти у хмарний обліковий запис" msgid "No translation projects listed in your account." msgstr "У вашому обліковому записі немає проєктів з перекладу." msgid "Downloading latest translations…" msgstr "Завантаження найновішого перекладу…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #, c-format msgid "Sign in to %s" msgstr "Увійти до %s" msgid "Syncing" msgstr "Синхронізація" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s…" msgstr "Вивантаження перекладів до %s…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s failed." msgstr "Не вдалося вивантажити переклади до %s." msgid "Syncing error" msgstr "Помилка синхронізації" msgid "Add" msgstr "Додати" msgid "Unknown Crowdin error." msgstr "Невідома помилка Crowdin." msgid "Not authorized, please sign in again." msgstr "Не авторизовані, увійдіть повторно." msgid "Downloading translations is disabled in this project." msgstr "Завантаження перекладів вимкнено в цьому проєкті." msgid "Sign In" msgstr "Увійти" msgid "Sign in" msgstr "Увійти" msgid "Sign Out" msgstr "Вийти" msgid "Sign out" msgstr "Вийти" msgid "Learn more about Crowdin" msgstr "Докладніше про Crowdin" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" "Crowdin — це онлайн-платформа для керування локалізацією та засіб спільного " "перекладу." msgid "Waiting for authentication…" msgstr "Очікування автентифікації…" msgid "Updating user information…" msgstr "Оновлення відомостей про користувача…" msgid "Sign in to Crowdin" msgstr "Увійти до Crowdin" msgid "Syncing with Crowdin failed." msgstr "Не вдалося синхронізувати з Crowdin." msgid "Crowdin error" msgstr "Помилка Crowdin" msgid "Uploading translations…" msgstr "Надсилання перекладу…" msgid "&Copy" msgstr "&Копіювати" msgid "Learn more" msgstr "Докладніше" msgid "&Help" msgstr "&Довідка" msgid "MO files can’t be directly edited in Poedit." msgstr "Файли MO не можна редагувати безпосередньо в Poedit." msgid "Error opening file" msgstr "Не вдалося відкрити файл" msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "Будь ласка, відкрийте і редагуйте відповідний PO-файл. Коли ви збережете " "його, MO-файл також оновиться." msgid "don’t delete temporary files (for debugging)" msgstr "не видаляти тимчасові файли (для налагодження)" msgid "handle a poedit:// URI" msgstr "обробити poedit:// URI" msgid "go to item at given line number" msgstr "перейти до елемента у рядку з указаним номером" msgid "Failed to communicate with Poedit process." msgstr "Не вдалося зв'язатися з Poedit." #, c-format msgid "Unhandled exception occurred: %s" msgstr "Стався непередбачений виняток: %s" msgid "Select translation template" msgstr "Вибрати шаблон перекладу" msgid "Select translation file" msgstr "Вибрати файл перекладу" msgid "Poedit is an easy to use translation editor." msgstr "Poedit — простий у використанні редактор перекладів." msgid "You can’t drop more than one file on Poedit window." msgstr "Не можна перетягувати у вікно Poedit більше одного файлу." #, c-format msgid "File “%s” is not a translation file." msgstr "Файл «%s» не є файлом перекладу." #, c-format msgid "File “%s” doesn’t exist." msgstr "Файлу “%s” не існує." 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". #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "" "Перевірка орфографії вимкнена, тому що не встановлено словник для мови %s." msgid "Install" msgstr "Встановити" #, c-format msgid "The file “%s” has been changed by another application." msgstr "Файл «%s» було змінено іншим застосунком." msgid "Reload file" msgstr "Перезавантажити файл" msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "Хочете перезавантажити файл з диска? Якщо це зробити, ваші незбережені зміни " "в Poedit буде втрачено." msgid "Ignore" msgstr "Знехтувати" msgid "Reload File" msgstr "Перезавантажити файл" msgid "The file has been modified. Do you want to save changes?" msgstr "Файл був змінений. Хочете зберегти зміни?" msgid "Save changes" msgstr "Зберегти зміни" msgid "Your changes will be lost if you don’t save them." msgstr "Внесені зміни буде втрачено, якщо їх не зберегти." msgid "Save" msgstr "Зберегти" msgid "Do&n’t save" msgstr "Не зберігати" msgid "Don’t Save" msgstr "Не зберігати" msgid "The changes made by the other application will be lost if you save." msgstr "Внесені іншим застосунком зміни буде втрачено під час збереження." msgid "Cancel" msgstr "Скасувати" msgid "Save Anyway" msgstr "Все одно зберегти" msgid "Save anyway" msgstr "Все одно зберегти" msgid "Save as…" msgstr "Зберегти як…" msgid "Compile to…" msgstr "Компілювати в…" msgid "Compiled Translation Files" msgstr "Скомпільовані файли перекладу" msgid "Export to HTML…" msgstr "Експорт до HTML…" msgid "HTML Files" msgstr "HTML файли" #, c-format msgid "In: %s" msgstr "У: %s" msgid "Source code not available." msgstr "Початковий код недоступний." msgid "Updating failed" msgstr "Оновлення не вдалося" 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 "" "Переклади не можуть бути оновлені з початкового коду, оскільки програмний " "код не знайдений у теці, вказаній у властивостях файлу." msgid "Permission denied." msgstr "У доступі відмовлено." 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. 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. msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "Якщо ви раніше відмовили у доступі до файлів, то можете дозволити його в " "Системних налаштуваннях > Безпека та конфіденційність > Конфіденційність > " "Файли та теки." msgid "Translation entries in the file are probably incorrect." msgstr "Записи перекладу в файлі, ймовірно, неправильні." msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "" "Не вдалося оновити файл. Натисніть «Подробиці >>», щоб дізнатися більше." msgid "Open translation template" msgstr "Відкрити шаблон перекладу" #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "Знайдено %d проблему з перекладом." msgstr[1] "Знайдено %d проблеми з перекладом." msgstr[2] "Знайдено %d проблем із перекладом." msgstr[3] "Знайдено %d проблеми із перекладом." msgid "Validation results" msgstr "Результати перевірки" msgid "" "Entries with errors were marked in red in the list. Details of the error " "will be shown when you select such an entry." msgstr "" "Елементи з помилками позначені у списку червоним. Виділіть елемент, щоб " "переглянути подробиці помилки." msgid "The file was saved safely." msgstr "Файл був успішно збережений." msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "Файл був збережений і скомпільований в формат MO. Але, швидше за все, не " "буде правильно працювати." msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "Файл збережений, але не може бути зібраний та використаний як MO." msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "Файл був скомпільований у формат MO, але, швидше за все, не буде правильно " "працювати." msgid "The file cannot be compiled into the MO format and used." msgstr "Не вдалося скомпілювати файл у формат MO для подальшого використання." msgid "No problems with the translation found." msgstr "Жодних проблем з перекладом не знайдено." #, 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 записи ще не перекладено." msgid "The translation is ready for use." msgstr "Переклад готовий до використання." #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "Poedit автоматично виправив хибний вміст у файлі «%s»." msgid "" "The file contained duplicate items, which is not allowed in PO files and " "would prevent the file from being used. Poedit fixed the issue, but you " "should review translations of any items marked as needing work and correct " "them if necessary." msgstr "" "Файл містив дубльовані елементи, що не дозволено у PO-файлах та унеможливлює " "використання файлу. Poedit виправив цю помилку, проте ви повинні переглянути " "переклади, позначені «потребує доопрацювання», та, за потреби, виправити їх." msgid "Language of the translation isn’t set." msgstr "Мову перекладу не зазначено." msgid "Set Language" msgstr "Вибрати мову" msgid "Set language" msgstr "Вибрати мову" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." msgid "" "Suggestions are not available if the translation language is not set " "correctly. Other features, such as plural forms, may be affected as well." msgstr "" "Пропозиції будуть недоступними, якщо неправильно вказано мову перекладу. Це " "може вплинути на інші функції, як-от форми множини." msgid "Language of the translation is the same as source language." msgstr "Мова перекладу така ж, як і мова оригіналу." msgid "Fix Language" msgstr "Виправити мову" msgid "Fix language" msgstr "Виправити мову" msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "Цей файл містить елементи з формами множини, але не має налаштованого " "заголовка Plural-Forms." msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "Елементи цього файлу мають форми множини, відмінні від вказаних у заголовку " "Plural-Formms файлу" msgid "Required header Plural-Forms is missing." msgstr "Відсутній обов’язковий заголовок Plural-Forms." #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Синтаксична помилка в заголовку Plural-Forms («%s»)." msgid "Fix the Header" msgstr "Виправити заголовок" 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". #, 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.")" msgid "Review" msgstr "Огляд" msgid "Would you like to use English for source text?" msgstr "Бажаєте використовувати англійську мову для початкового тексту?" #, 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" msgid "Load English" msgstr "Завантажити англійською" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Перекладено: %d з %d (%d %%)" #, c-format msgid "Remaining: %d" msgstr "Залишилося: %d" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d помилка" msgstr[1] "%d помилки" msgstr[2] "%d помилок" msgstr[3] "%d помилки" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d запис" msgstr[1] "%d записи" msgstr[2] "%d записів" msgstr[3] "%d записи" msgid " (unsaved)" msgstr " (не збережено)" msgid " (modified)" msgstr " (змінено)" #, c-format msgid "Failed to update translation memory: %s" msgstr "Не вдалося оновити пам'ять перекладів: %s" msgid "Remove same-as-source translations" msgstr "Вилучити переклади, які збігаються з джерелом" msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "Видалити всі переклади, які ідентичні початковому тексту?" msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" "Усі переклади, які збігаються з початковим текстом, буде видалено. Цю дію " "неможливо скасувати." msgid "Keep" msgstr "Залишити" msgid "Remove" msgstr "Вилучити" msgid "Purge deleted translations" msgstr "Знищити вилучені переклади" msgid "Do you want to remove all translations that are no longer used?" msgstr "Що робити з невикористаним перекладом?" 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 "" "Точно вилучити з каталогу всі невикористані переклади? Якщо вони знову " "знадобляться в майбутньому, вам доведеться ще раз перекладати їх." msgid "Purge" msgstr "Знищити" msgid "Copy from source text" msgstr "Копіювати з початкового тексту" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "Стерти переклад" msgid "Clear Translation" msgstr "Стерти переклад" msgid "Edit comment" msgstr "Редагувати коментар" msgid "Edit Comment" msgstr "Редагувати коментар" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "Поява в коді" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "Поява в коді" msgid "Hide Sidebar" msgstr "Сховати бічну панель" msgid "Show Sidebar" msgstr "Показати бічну панель" msgid "Hide Status Bar" msgstr "Сховати панель стану" msgid "Show Status Bar" msgstr "Показати панель стану" msgid "String length in characters: translation | source" msgstr "Кількість символів у рядку: переклад | джерело" msgid "String length in characters" msgstr "Кількість символів у рядку" msgid "Source text" msgstr "Оригінал" msgid "Singular" msgstr "Однина" msgid "Plural" msgstr "Множина" msgid "Translation" msgstr "Переклад" msgid "Pre-translated" msgstr "Попередньо перекладений" 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. msgid "Needs work" msgstr "Потребує доопрацювання" msgid "" "POT files are only templates and don’t contain any translations themselves.\n" "To make a translation, create a new PO file based on the template." msgstr "" "POT файли — лише шаблони й самі не містять будь-яких перекладів.\n" " Щоб зробити переклад, створіть новий файл PO, заснований на цьому шаблоні." msgid "Create new translation" msgstr "Створити новий переклад" msgid "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 msgid "Source text ID" msgstr "ID початкового тексту" msgid "Everything" msgstr "Усе" #, c-format msgid "Form %i" msgstr "Форма %i" #, c-format msgid "Form %i (unused)" msgstr "Форма %i (невикористана)" msgid "Zero" msgstr "Нуль" msgid "One" msgstr "Один" msgid "Two" msgstr "Два" msgid "Other" msgstr "Інше" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, c-format msgid "String context: %s" msgstr "Контекст рядка: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #, c-format msgid "String identifier: %s" msgstr "Ідентифікатор рядка: %s" #, c-format msgid "%s Format" msgstr "Формат %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "Формат %s" #, c-format msgid "Translation — %s" msgstr "Переклад — %s" msgid "ID" msgstr "ID" #, c-format msgid "Source text — %s" msgstr "Початковий текст — %s" msgid "unknown language" msgstr "невідома мова" #, c-format msgid "Network error: %s (%d)" msgstr "Помилка мережі: %s (%d)" msgid "Unknown error" msgstr "Невідома помилка" #, c-format msgid "Failed command: %s" msgstr "Не вдалося виконати команду: %s" msgid "Failed to merge gettext catalogs." msgstr "Не вдалося об'єднати gettext-каталоги." msgid "Open in Editor" msgstr "Відкрити в редакторі" msgid "Open in editor" msgstr "Відкрити в редакторі" msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" "Немає даних про виявлення цього рядка у початковому коді вказаному у файлі." msgid "No usage information" msgstr "Немає даних про використання" #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d збіг у коді" msgstr[1] "%d збіги у коді" msgstr[2] "%d збігів у коді" msgstr[3] "%d збігів у коді" msgid "Source code not found" msgstr "Початковий код не знайдено" 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 не може показати початковий код, де використовується рядок, оскільки " "файл або недоступний у вказаному розташуванні, або він має символічне " "посилання, яке не вказує на справжній файл." msgid "File cannot be opened" msgstr "Неможливо відкрити файл" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "Poedit не вдалося відкрити файл «%s»." msgid "Find" msgstr "Знайти" msgid "Replace" msgstr "Замінити" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "Опції" msgid "Ignore case" msgstr "Ігнорувати регістр" msgid "Wrap around" msgstr "По колу" msgid "Whole words only" msgstr "Лише слово цілком" msgid "Find in source texts" msgstr "Шукати у початкових текстах" msgid "Find in translations" msgstr "Шукати у перекладах" msgid "Find in comments" msgstr "Шукати в коментарях" msgid "Close" msgstr "Закрити" msgid "Replace &All" msgstr "Замінити &все" msgid "Replace &all" msgstr "Замінити &все" msgid "&Replace" msgstr "&Замінити" msgid "< &Previous" msgstr "< &Попередній" msgid "&Next >" msgstr "&Наступний >" msgid "String to find" msgstr "Рядок пошуку" msgid "Replacement string" msgstr "Рядок заміни" #, c-format msgid "Cannot execute program: %s" msgstr "Не вдалося виконати програму: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "Назва мови або код" msgid "Translation Language" msgstr "Мова перекладу" msgid "Language of the translation:" msgstr "Мова перекладу:" msgid "All strings" msgstr "Усі рядки" msgid "Couldn’t download Localazy project details." msgstr "Не вдалося завантажити відомості про проєкт Localazy." msgid "There was an error when uploading translations to Localazy." msgstr "Виникла помилка під час вивантаження перекладів на Localazy." msgid "Projects" msgstr "Проєкти" msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Localazy — платформа локалізації з високим рівнем автоматизації, що дозволяє " "будь-кому легко перекладати свої продукти й матеріали різними мовами." msgid "Add Project" msgstr "Додати проєкт" msgid "Add project" msgstr "Додати проєкт" msgid "Poedit - Catalogs manager" msgstr "Poedit. Менеджер каталогів" msgid "Edit…" msgstr "Змінити…" msgid "Create new translations project" msgstr "Створити новий проєкт перекладів" msgid "Delete the project" msgstr "Видалити проєкт" msgid "Edit the project" msgstr "Редагувати проєкт" msgid "Update all" msgstr "Оновити все" msgid "Update all catalogs in the project" msgstr "Оновити всі каталоги в цьому проєкті" msgid "Total" msgstr "Загалом" msgid "Untrans" msgstr "Не перекладено" msgctxt "column/row header" msgid "Needs Work" msgstr "Потребує доопрацювання" msgid "Errors" msgstr "Помилки" msgid "Last modified" msgstr "Останні зміни" msgid "Select directory" msgstr "Виберіть теку" msgid "Directories:" msgstr "Теки:" msgid "" msgstr "<без назви>" #, c-format msgid "Do you want to delete project “%s”?" msgstr "Справді хочете видалити проєкт «%s»?" msgid "Delete project" msgstr "Видалити проєкт" msgid "Deleting the project will not delete any translation files." msgstr "Видалення проєкту не видалить жодного файлу перекладу." msgid "Confirmation" msgstr "Підтвердження" msgid "Update all catalogs in this project?" msgstr "Оновити всі каталоги в цьому проєкті?" msgid "Performs update from source code on all files in the project." msgstr "Виконує оновлення з початкового коду для всіх файлів проєкту." msgid "Check for Updates…" msgstr "Перевірити оновлення…" msgid "Catalogs Manager" msgstr "Менеджер каталогів" msgid "&Preferences…" msgstr "&Налаштування…" msgid "&Edit" msgstr "&Редагування" msgid "Undo" msgstr "Скасувати" msgid "Redo" msgstr "Відновити" msgid "Paste and Match Style" msgstr "Вставити в поточному стилі" msgid "Delete" msgstr "Видалити" msgid "Spelling and Grammar" msgstr "Перевірка орфографії та граматики" msgid "Show Spelling and Grammar" msgstr "Показати орфографічні та граматичні помилки" msgid "Check Document Now" msgstr "Перевірити документ зараз" msgid "Check Spelling While Typing" msgstr "Перевіряти орфографію під час введення" msgid "Check Grammar With Spelling" msgstr "Перевірити граматику і орфографію" msgid "Correct Spelling Automatically" msgstr "Виправляти автоматично орфографічні помилки" msgid "Substitutions" msgstr "Заміни" msgid "Show Substitutions" msgstr "Показати заміни" msgid "Smart Copy/Paste" msgstr "Розумне копіювання/вставлення" msgid "Smart Quotes" msgstr "Розумні цитати" msgid "Smart Dashes" msgstr "Розумні тире" msgid "Smart Links" msgstr "Розумні посилання" msgid "Text Replacement" msgstr "Заміна тексту" msgid "Transformations" msgstr "Перетворення" msgid "Make Upper Case" msgstr "У верхній регістр" msgid "Make Lower Case" msgstr "У нижній регістр" msgid "Capitalize" msgstr "Перша велика" msgid "Speech" msgstr "Мовлення" msgid "Start Speaking" msgstr "Почати озвучування" msgid "Stop Speaking" msgstr "Зупинити озвучування" msgid "&View" msgstr "&Вигляд" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Show Toolbar" msgstr "Показати панель інструментів" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Customize Toolbar…" msgstr "Налаштувати панель інструментів…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Enter Full Screen" msgstr "Перейти в повноекранний режим" msgid "Window" msgstr "Вікно" msgid "Minimize" msgstr "Мінімізувати" msgid "Zoom" msgstr "Масштабувати" msgid "Welcome to Poedit" msgstr "Ласкаво просимо до Poedit" msgid "Bring All to Front" msgstr "Вивести все на передній план" msgid "Information about the translator" msgstr "Відомості про перекладача" msgid "Name:" msgstr "Ім'я:" msgid "Your Name" msgstr "Ваше ім'я" msgid "Email:" msgstr "Електронна пошта:" msgid "you@example.com" msgstr "you@example.com" msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "Ваше ім'я та пошту буде використано лише для вказівки останнього перекладача " "в заголовках GNU gettext файлів." msgid "Editing" msgstr "Редагування" msgid "Automatically compile MO file when saving" msgstr "Автоматично компілювати файл MO під час збереження" msgid "Show summary after updating files" msgstr "Показувати підсумок після оновлення файлів" msgid "Check spelling" msgstr "Перевірка орфографії" msgid "Always change focus to text input field" msgstr "Завжди встановлювати фокус у поле вводу тексту" msgid "" "Never let the list of strings take focus. If enabled, you must use Ctrl-" "arrows for keyboard navigation but you can also type text immediately, " "without having to press Tab to change focus." msgstr "" "Ніколи не дозволяйте списку рядків отримати фокус. Якщо активовано, можна " "використовувати Ctrl+стрілки для навігації за допомогою клавіатури, але " "вводити текст можна починати одразу не натискаючи Tab для зміни фокусу." msgid "Appearance" msgstr "Зовнішній вигляд" msgid "Use custom list font:" msgstr "Використовувати користувацький шрифт для списку:" msgid "Use custom text fields font:" msgstr "Використовувати користувальницький текст в полях вводу:" msgid "Change UI language" msgstr "Змінити мову інтерфейсу" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions msgid "(requires Windows 8 or newer)" msgstr "(потрібна Windows 8 або новіші версії)" msgid "General" msgstr "Загальні" msgid "Use translation memory" msgstr "Використовувати пам'ять перекладів" msgid "Manage…" msgstr "Керувати…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "Під час оновлення з джерел" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "підбирати схожий переклад всередині файлу" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "попередній переклад через ПП" 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 може спробувати заповнити нові рядки тільки попередніми перекладами з " "цього файлу або з вашої пам'яті перекладів. Використання ПП буде не дуже " "ефективним, якщо вона майже порожня, але буде поліпшуватися в міру додавання " "перекладів." msgid "Stored translations:" msgstr "Збережені переклади:" msgid "Database size on disk:" msgstr "Розмір бази даних на диску:" msgid "Import Translation Files…" msgstr "Імпортувати файли перекладу…" msgid "Import translation files…" msgstr "Імпортувати файли перекладу…" msgid "Import From TMX…" msgstr "Імпорт з TMX…" msgid "Import from TMX…" msgstr "Імпорт з TMX…" msgid "Export To TMX…" msgstr "Експорт до TMX…" msgid "Export to TMX…" msgstr "Експорт до TMX…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). msgid "Reset" msgstr "Скинути" msgid "Select translation files to import" msgstr "Виберіть файли перекладу для імпорту" msgid "Translation Memory" msgstr "Пам'ять перекладів" msgid "Importing translations…" msgstr "Імпортування перекладів…" #, c-format msgid "Error loading translation file “%s”." msgstr "Помилка завантаження файлу перекладу «%s»." msgid "Finalizing…" msgstr "Завершення…" msgid "Select TMX files to import" msgstr "Виберіть файл TMX для імпорту" msgid "TMX Files" msgstr "TMX файл" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "Не вдалося імпортувати пам'ять перекладів з “%s”." msgid "Import error" msgstr "Помилка імпорту" msgid "Export as…" msgstr "Експортувати як…" msgid "Exporting translations…" msgstr "Експортування перекладів…" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "Не вдалося експортувати пам'ять перекладів до “%s”." msgid "Export error" msgstr "Помилка експорту" msgid "Reset translation memory" msgstr "Скинути пам'ять перекладів" msgid "Are you sure you want to reset the translation memory?" msgstr "Ви впевнені, що хочете очистити пам'ять перекладів?" 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. msgid "TM" msgstr "Пам'ять перекладів" msgid "" "Source code extractors are used to find translatable strings in the source " "code files and extract them so that they can be translated." msgstr "" "Екстрактори застосовуються для пошуку рядків, що перекладаються, у файлах " "початкового коду та витягують їх так, щоб їх можна було перекласти." msgid "Custom Extractors:" msgstr "Користувацькі екстрактори:" msgid "Custom extractors:" msgstr "Користувацькі екстрактори:" msgid "GNU gettext" msgstr "GNU gettext" 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 тощо)." msgid "Delete extractor" msgstr "Видалити екстрактор" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "Ви впевнені, що бажаєте видалити екстрактор \"%s\"?" msgid "Extractors" msgstr "Екстрактори" msgid "Accounts" msgstr "Облікові записи" msgid "Automatically check for updates" msgstr "Автоматично перевіряти наявність оновлень" msgid "Include beta versions" msgstr "Включити бета-версії" msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "Бета-версії містять новітні функції і поліпшення, але можуть бути менш " "стабільними." msgid "Updates" msgstr "Оновлення" msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Ці параметри впливають на внутрішнє форматування файлів PO. Скоректуйте їх, " "якщо у вас є спеціальні вимоги, наприклад, якщо ви користуєтеся системою " "контролю версій." msgid "Line endings:" msgstr "Закінчення рядків:" msgid "Unix (recommended)" msgstr "Unix (рекомендовано)" msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "Перенесення:" msgid "Preserve formatting of existing files" msgstr "Зберігати форматування наявних файлів" msgid "Advanced" msgstr "Розширені параметри" msgid "Settings" msgstr "Налаштування" msgid "Preparing strings…" msgstr "Підготування рядків…" msgid "Pre-translating from translation memory…" msgstr "Попередній переклад з пам'яті перекладів…" #, 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 рядка" msgid "Pre-translating…" msgstr "Виконати попередній переклад…" 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. msgid "Pre-translate" msgstr "Попередній переклад" msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "Попередній переклад вимагає, щоб був доступний початковий текст. Він не " "працює, якщо використовуються лише ID без самого тексту." msgid "Cannot pre-translate from unknown language." msgstr "Неможливо зробити попередній переклад з невідомої мови." msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Попередній переклад потребує, щоб мова початкового тексту була відомою. " "Poedit не зміг знайти її в цьому файлі." msgid "Only fill in exact matches" msgstr "Заповнювати лише точні збіги" msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "Усталено, неточні результати також включаються, але позначаються такими, що " "потребують доопрацювання. Увімкніть цю опцію, щоб включалися лише ідеальні " "збіги." msgid "Don’t mark exact matches as needing work" msgstr "Не позначати точні збіги як «потребує доопрацювання»" 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 "" "Увімкніть це лише якщо ви впевнені в якості своєї пам'яті перекладів. Типово " "всі збіги з пам'яті перекладів позначаються «потребує доопрацювання» й " "підлягають перевірці." msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "Попередній переклад автоматично знаходить точні або нечіткі збіги для " "неперекладених рядків в пам'яті перекладів і заповнює в їх перекладах." #, 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 записи було попередньо перекладено." msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "Переклади були позначені як \"потребує доопрацювання\". Перевірте їх " "правильність." msgid "No entries could be pre-translated." msgstr "Немає записів, які можна попередньо перекласти." msgid "" "The TM doesn’t contain any strings similar to the content of this file. It " "is only effective for semi-automatic translations after Poedit learns enough " "from files that you translated manually." msgstr "" "Пам'ять перекладів не містить ніяких рядків, схожих на вміст цього файлу. " "Вона підходить тільки для напівавтоматичного перекладу після того, як Poedit " "збере достатньо даних з файлів, які ви переклали самостійно." msgid "Cancelling…" msgstr "Скасування…" msgid "Drag Folders or Files Here" msgstr "Перетягніть теки або файли сюди" msgid "Drag folders or files here" msgstr "Перетягніть теки або файли сюди" msgid "Add Folders…" msgstr "Додати теки…" msgid "Add folders…" msgstr "Додати теки…" msgid "Add Files…" msgstr "Додати файли…" msgid "Add files…" msgstr "Додати файли…" msgid "Add Wildcard…" msgstr "Додати шаблон…" msgid "Add wildcard…" msgstr "Додати шаблон…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) msgid "Reveal in Finder" msgstr "Показати у Finder" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" msgid "Show in Explorer" msgstr "Показати у провіднику" msgid "Show in Folder" msgstr "Показати в теці" msgid "Paths" msgstr "Шляхи" msgid "Excluded paths" msgstr "Виключені шляхи" msgid "Advanced extraction settings" msgstr "Розширені налаштування видобування" msgid "Extract notes for translators from:" msgstr "Видобути нотатки для перекладачів з:" msgid "Comments prefixed with:" msgstr "Коментарі з префіксом:" msgid "All comments" msgstr "Усі коментарі" msgid "Additional xgettext flags:" msgstr "Додаткові прапорці xgettext:" msgid "Additional keywords" msgstr "Додаткові ключові слова" msgid "Name of the project the translation is for" msgstr "Назва проєкту, для якого призначений переклад" msgid "Team name and email address or URL" msgstr "Назва команди та адреса е-пошти або посилання" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "напр. nplurals=2; plural=(n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (рекомендовано)" msgid "Please save the file first. This section cannot be edited until then." msgstr "" "Будь ласка, спершу збережіть файл. Без збереження цей розділ редагувати не " "можна." msgid "Placeholders correctness" msgstr "Коректність заповнювачів" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "У перекладі відсутній заповнювач «%s»" #, c-format msgid "Superfluous placeholder “%s” that isn’t in source text." msgstr "Зайвий символ-заповнювач «%s», якого немає у початковому тексті." msgid "Plural form translations" msgstr "Переклад форм множини" msgid "Not all plural forms are translated." msgstr "Перекладено не всі форм множини." msgid "Inconsistent upper/lower case" msgstr "Непослідовний верхній/нижній регістр" msgid "The translation should start as a sentence." msgstr "Переклад повинен починатися з великої букви." msgid "The translation should start with a lowercase character." msgstr "Переклад повинен починатися з символу в нижньому регістрі." msgid "Inconsistent whitespace" msgstr "Непослідовний пробіл" msgid "The translation doesn’t start with a space." msgstr "Переклад не починається з пробілу." msgid "The translation starts with a space, but the source text doesn’t." msgstr "Переклад починається з пробілу, а початковий текст — ні." msgid "The translation is missing a newline at the end." msgstr "У переклад відсутній символ нового рядка вкінці." msgid "The translation ends with a newline, but the source text doesn’t." msgstr "Переклад закінчується символом нового рядка, а початковий текст — ні." msgid "The translation is missing a space at the end." msgstr "У перекладі відсутній пробіл вкінці." msgid "The translation ends with a space, but the source text doesn’t." msgstr "Переклад закінчується пробілом, а початковий текст — ні." msgid "Punctuation checks" msgstr "Перевірки пунктуації" #, c-format msgid "The translation should end with “%s”." msgstr "Переклад повинен закінчуватися на «%s»." #, c-format msgid "The translation should not end with “%s”." msgstr "Переклад не повинен закінчуватися на «%s»." #, c-format msgid "The translation ends with “%s”, but the source text ends with “%s”." msgstr "" "Переклад закінчується на «%s», але початковий текст закінчується на «%s»." msgid "Cloud" msgstr "Хмара" msgid "Clear Menu" msgstr "Очистити меню" msgid "Clear menu" msgstr "Очистити меню" msgid "Comment:" msgstr "Коментар:" msgid "Update" msgstr "Оновити" msgid "&Delete" msgstr "&Вилучити" msgid "Delete the comment" msgstr "Видалити коментар" msgid "Edit project" msgstr "Редагувати проєкт" msgid "Project name:" msgstr "Назва проєкту:" msgid "Browse" msgstr "Вибрати" msgid "Add directory to the list" msgstr "Додати теку до списку" msgid "OK" msgstr "Гаразд" msgid "&File" msgstr "&Файл" msgid "&New…" msgstr "&Новий…" msgid "New from &POT/PO file…" msgstr "Новий з &POT/PO-файлу…" msgid "New From &POT/PO File…" msgstr "Новий з &POT/PO-файлу…" msgid "&Open…" msgstr "&Відкрити…" msgid "Open Recent" msgstr "Відкрити нещодавні" msgid "Open recent" msgstr "Відкрити недавні" msgid "Open cloud translation…" msgstr "Відкрити хмарний переклад…" msgid "Open Cloud Translation…" msgstr "Відкрити хмарний переклад…" msgid "&Start window" msgstr "&Початкове вікно" msgid "&Start Window" msgstr "&Початкове вікно" msgid "Catalogs &manager" msgstr "Менеджер &каталогів" msgid "Catalogs &Manager" msgstr "Менеджер &каталогів" msgid "&Close" msgstr "З&акрити" msgid "&Save" msgstr "&Зберегти" msgid "Save &as…" msgstr "Зберегти &як…" msgid "Save &As…" msgstr "Зберегти &як…" msgid "Compile to MO…" msgstr "Компілювати в MO…" msgid "E&xport to HTML…" msgstr "Е&кспорт до HTML…" msgid "Check for updates…" msgstr "Перевірити наявність оновлень…" msgid "Settings…" msgstr "Налаштування…" msgid "&Preferences" msgstr "&Налаштування" msgid "E&xit" msgstr "&Вийти" msgid "Quit" msgstr "Вийти" msgid "Copy from singular" msgstr "Копіювати форму однини" msgid "Copy From Singular" msgstr "Копіювати форму однини" msgid "Translation needs &work" msgstr "Переклад потребує &доопрацювання" msgid "Translation Needs &Work" msgstr "Переклад потребує &доопрацювання" msgid "Edit &comment" msgstr "Редагувати &коментар" msgid "Edit &Comment" msgstr "Редагувати &коментар" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "Пропозиції" msgid "&Find…" msgstr "&Знайти…" msgid "Replace…" msgstr "Замінити…" msgid "Find next" msgstr "Знайти наступний" msgid "Find previous" msgstr "Знайти попередній" msgid "Find and Replace…" msgstr "Знайти та замінити…" msgid "Find Next" msgstr "Знайти наступний" msgid "Find Previous" msgstr "Знайти попередній" msgid "Show string &ID" msgstr "Показувати &ID рядків" msgid "Show String &ID" msgstr "Показувати &ID рядків" msgid "Show warnings" msgstr "Показувати попередження" msgid "Show Warnings" msgstr "Показувати попередження" msgid "Sort by &file order" msgstr "Сортувати за положенням у &файлі" msgid "Sort by &File Order" msgstr "Сортувати за положенням у &файлі" msgid "Sort by &source" msgstr "Сортувати за &оригіналом" msgid "Sort by &Source" msgstr "Сортувати за &оригіналом" msgid "Sort by &translation" msgstr "Сортувати за &перекладом" msgid "Sort by &Translation" msgstr "Сортувати за &перекладом" msgid "&Group by context" msgstr "&Групувати за контекстом" msgid "&Group By Context" msgstr "&Групувати за контекстом" msgid "Entries with errors first" msgstr "Записи з помилками — вгорі" msgid "Entries with Errors First" msgstr "Записи з помилками — вгорі" msgid "&Untranslated entries first" msgstr "&Неперекладене — вгорі" msgid "&Untranslated Entries First" msgstr "Неперекладене — &вгорі" msgid "&Show code occurrences" msgstr "&Показувати збіги в коді" msgid "&Show Code Occurrences" msgstr "&Показувати збіги в коді" msgid "Show sidebar" msgstr "Показати бічну панель" msgid "Show status bar" msgstr "Показати панель стану" msgid "&Translation" msgstr "&Переклад" msgid "&Update from source code" msgstr "&Оновити з початкового коду" msgid "&Update from Source Code" msgstr "&Оновити з початкового коду" msgid "Update from &POT file…" msgstr "Оновити з POT-&файлу…" msgid "Update from &POT File…" msgstr "Оновити з POT-&файлу…" msgid "Sync with Crowdin" msgstr "Синхронізація з Crowdin" msgid "Pre-&translate…" msgstr "Попередній &переклад…" msgid "&Validate translations" msgstr "&Перевірити переклад" msgid "&Validate Translations" msgstr "&Перевірити переклад" msgid "Remove Same-as-Source Translations" msgstr "Вилучити переклади, які збігаються з джерелом" msgid "&Purge deleted translations" msgstr "&Знищити вилучені переклади" msgid "&Purge Deleted Translations" msgstr "&Знищити вилучені переклади" msgid "&Properties…" msgstr "&Властивості…" msgid "&Go" msgstr "Пере&йти" msgid "&Done and next" msgstr "&Завершити та до наступного" msgid "&Done and Next" msgstr "&Завершити та до наступного" msgid "Previously edited" msgstr "Раніше відредаговано" msgid "Previously Edited" msgstr "Раніше відредаговано" msgid "&Previous translation" msgstr "Попередній переклад" msgid "&Previous Translation" msgstr "Попередній переклад" msgid "&Next translation" msgstr "Наступний переклад" msgid "&Next Translation" msgstr "Наступний переклад" msgid "P&revious unfinished" msgstr "До п&опереднього незавершеного" msgid "P&revious Unfinished" msgstr "До п&опереднього незавершеного" msgid "Ne&xt unfinished" msgstr "До н&аступного незавершеного" msgid "Ne&xt Unfinished" msgstr "До н&аступного незавершеного" msgid "Previous plural form" msgstr "Попередня форма множини" msgid "Previous Plural Form" msgstr "Попередня форма множини" msgid "Next plural form" msgstr "Наступна форма множини" msgid "Next Plural Form" msgstr "Наступна форма множини" msgid "&Online help" msgstr "&Онлайн-довідка" msgid "&Online Help" msgstr "&Онлайн-довідка" msgid "&GNU gettext manual" msgstr "&Документація GNU gettext" msgid "&GNU gettext Manual" msgstr "&Документація GNU gettext" msgid "&About Poedit" msgstr "&Про Poedit..." msgid "&About" msgstr "&Про застосунок" msgid "Extractor setup" msgstr "Налаштування екстрактора" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Список розширень, розділених крапкою з комою (наприклад, *.cpp;*.h):" msgid "Invocation:" msgstr "Виклик:" msgid "Command to extract translations:" msgstr "Команда для видобування перекладу:" 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 — кодування (див. нижче)." msgid "An item in keywords list:" msgstr "Елемент списку ключових слів:" msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Це буде додано до командного рядка для кожного\n" "ключового слова. %k замінюється на ключове слово." msgid "An item in input files list:" msgstr "Елемент в списку вхідних файлів:" #, 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 замінюється на ім'я файлу." msgid "Source code charset:" msgstr "Кодування файлів з початковим кодом:" #, 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 замінюється на значення кодування." msgid "Translation Properties" msgstr "Властивості перекладу" msgid "Project name and version:" msgstr "Назва та версія проєкту:" msgid "Language team:" msgstr "Команда перекладачів:" msgid "Plural forms:" msgstr "Форми множини:" msgid "Use default rules for this language" msgstr "Використовувати стандартні правила для цієї мови" msgid "Use custom expression" msgstr "Використовувати користувацький вираз" msgid "Learn about plural forms" msgstr "Докладніше про форми множини" msgid "Charset:" msgstr "Кодування каталогу:" msgid "Advanced Extraction Settings…" msgstr "Розширені налаштування видобування…" msgid "Advanced extraction settings…" msgstr "Розширені налаштування видобування…" msgid "Translation properties" msgstr "Властивості перекладу" msgid "Sources Paths" msgstr "Шлях до джерел" msgid "Sources paths" msgstr "Шлях до джерел" msgid "Extract text from source files in the following directories:" msgstr "Шукати початковий текст у цих теках:" msgid "Base path:" msgstr "Базовий шлях:" msgid "Sources Keywords" msgstr "Ключові слова початкових файлів" msgid "Sources keywords" msgstr "Ключові слова джерельних файлів" msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Використовувати ці ключові слова (назви функцій) додатково до\n" "типових для розпізнавання у початкових файлах рядків,\n" "придатних для перекладу:" msgid "Also use default keywords for supported languages" msgstr "Також типово використовувати ключові слова для підтримуваних мов" msgid "Learn about gettext keywords" msgstr "Докладніше про ключові слова Gettext" msgid "Update summary" msgstr "Підсумок про оновлення" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" "Ці рядки було знайдено у початкових текстах, але їх немає у файлі.\n" "Poedit додасть їх у файл." msgid "New strings" msgstr "Нові рядки" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" "Цих рядків вже немає у початковому коді.\n" "Poedit вилучить їх з каталогу." msgid "Obsolete strings" msgstr "Застарілі рядки" msgid "(0 new, 0 obsolete)" msgstr "(0 нових, 0 застарілих)" msgid "Open" msgstr "" msgid "Open file" msgstr "Відкрити файл" msgid "Save file" msgstr "Зберегти файл" msgid "Validate" msgstr "Перевірити" msgid "Check for errors in the translation" msgstr "Перевірити переклад на наявність помилок" msgid "Update from code" msgstr "Оновити з коду" msgid "Update from Code" msgstr "Оновити з коду" msgid "Update from source code" msgstr "Оновити з початкового коду" msgid "Sidebar" msgstr "Бічна панель" msgid "Show or hide the sidebar" msgstr "Показати або сховати бічну панель" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. msgid "Previous source text" msgstr "Попередній початковий текст" msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "Старий початковий текст (до оновлення), якому відповідає неточний переклад." msgid "Notes for translators" msgstr "Примітки для перекладачів" msgid "Comment" msgstr "Коментар" msgid "Add comment" msgstr "Додати коментар" msgid "Add Comment" msgstr "Додати коментар" msgid "Delete From Translation Memory" msgstr "Видалити з пам'яті перекладів" msgid "Delete from translation memory" msgstr "Видалити з пам'яті перекладів" msgid "Translation suggestions" msgstr "Пропозиції перекладу" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). msgid "No matches found" msgstr "Збігів не знайдено" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). msgid "No Matches Found" msgstr "Збігів не знайдено" msgid "This string was found in Poedit’s translation memory." msgstr "Цей рядок був знайдений в пам'яті перекладів Poedit." msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "Пропозиції перекладу потребують, щоб початковий текст був доступний. Вони не " "працювали в разі, якщо використовуються лише ID без самого тексту." msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Пропозиції перекладу потребують, щоб мова початкового тексту була відомою. " "Poedit не зміг визначити її у цьому файлі." msgid "The TMX file is malformed." msgstr "TMX-файл пошкоджено." msgid "No translations were found in the TMX file." msgstr "У TMX-файлі перекладів не знайдено." #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Пошкоджено базу даних пам'яті перекладів: %s (%d)." #, c-format msgid "Translation memory error: %s (%d)." msgstr "Помилка пам'яті перекладу: %s (%d)." msgid "Cannot create temporary directory." msgstr "Не вдалося створити тимчасову теку." msgid "There are no translations. That’s unusual." msgstr "Дивно, але переклад відсутній." msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "Translators typically use PO template files (POTs) prepared for them by the " "developer." msgstr "" "Записи, що перекладаються, не додаються в систему Gettext вручну, але " "автоматично витягуються\n" "з початкового коду. Таким чином забезпечується їхня актуальність і " "точність.\n" "Перекладачі зазвичай працюють з PO-файлами (POT), які підготував для них " "розробник." msgid "(Learn more about GNU gettext)" msgstr "(Більше про GNU gettext)" msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "Найпростіший спосіб заповнити цей файл перекладами — оновити його з POT:" msgid "Update from POT" msgstr "Оновити з POT-файлу" msgid "Take translatable strings from an existing POT template." msgstr "Витяг рядків для перекладу з наявного POT-шаблону." msgid "" "You can also extract translatable strings directly from the source code:" msgstr "" "Рядки, що перекладаються, можна також отримати безпосередньо з програмного " "коду:" msgid "Extract from sources" msgstr "Видобути з початкового коду" msgid "Configure source code extraction in Properties." msgstr "Налаштувати видобування початкового коду у Властивостях." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #, c-format msgid "Version %s" msgstr "Версія %s" msgid "Create new" msgstr "Створити новий" msgid "Create new translation from POT template." msgstr "Створити новий переклад з POT-шаблону." msgid "Browse files" msgstr "Огляд файлів" msgid "Open and edit translation files." msgstr "Відкрити й редагувати файли перекладу." msgid "Translate cloud project" msgstr "Перекласти проєкт із хмари" msgid "Collaborate with other people online." msgstr "Співпрацюйте з іншими людьми онлайн." msgid "Recent files" msgstr "Недавні файли" msgid "Sync" msgstr "Синхронізувати" 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") #, c-format msgid "About %s" msgstr "Про %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #, c-format msgid "%s Preferences" msgstr "Налаштування %s" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "Сервіси" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "Сховати %s" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "Сховати інші" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "Показати все" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "Вийти з %s" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "Налаштування…" msgid "Preferences..." msgstr "Налаштування..." #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "Нещодавні" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "Найчастіші" msgid "&Apply" msgstr "&Застосувати" msgid "Apply" msgstr "Застосувати" msgid "&Back" msgstr "&Повернутися" msgid "Back" msgstr "Повернутися" msgid "&Cancel" msgstr "&Скасувати" msgid "&Clear" msgstr "&Очистити" msgid "Clear" msgstr "Очистити" msgid "Copy" msgstr "Копіювати" msgid "Cu&t" msgstr "Ви&різати" msgid "Cut" msgstr "Вирізати" msgid "Edit" msgstr "Редагувати" msgid "&Quit" msgstr "&Вийти" msgid "Help" msgstr "Довідка" msgid "&New" msgstr "&Новий" msgid "New" msgstr "Новий" msgid "&No" msgstr "&Ні" msgid "No" msgstr "Ні" msgid "&OK" msgstr "&ОК" msgid "Open…" msgstr "Відкрити…" msgid "&Open..." msgstr "&Відкрити..." msgid "Open..." msgstr "Відкрити..." msgid "&Paste" msgstr "&Вставити" msgid "Paste" msgstr "Вставити" msgid "Preferences" msgstr "Налаштування" msgid "&Redo" msgstr "&Повторити" msgid "Refresh" msgstr "Оновити" msgid "&Save as" msgstr "&Зберегти як" msgid "Save as" msgstr "Зберегти як" msgid "Select &All" msgstr "Вибрати &все" msgid "Select All" msgstr "Вибрати все" msgid "&Undo" msgstr "&Скасувати" msgid "&Yes" msgstr "&Так" msgid "Yes" msgstr "Так" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "Вгору" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "Вниз" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "Вліво" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "Вправо" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "shift" poedit-3.5/locales/hr.mo0000644000175100001770000016170714664354153012210 00000000000000*X9 Y9 e9&p99<99J9gF: :: :: :::::; ;;;&;5;;;A;J;^;r;v;;;;;;;;;; ; ;;< < <!<1<G<]<l<<<<<<<<< < = ==%=A=]=v========>*>:> X> d>n>w>>> > > >> >> > >> ?? *?6?F?Z?u?~???? ? ?1 @<@'A@i@@ @@7@6@ A)@AjA oA]zAA<AD(B$mBB BB'C .C"G`y!"ǝ" 1CAT&eÞ;)eu1ɟܟ$6>]| Ǡ ՠ  h!!qˡ==#{#*â(7O0i"7 < P[)q8'Ԥ309W.uU ':Ri Ϧݦ%? FR Xf m w §ʩ20O!Ѫ  $<D(Y  «ҫ٫*  8Ec{CƬF׬/4ƭ))Sr():S*/L iu'N1A/]#˱)07IO )F&U|³׳  &18?Vmu/37k2~fеJ7AD \h70-h N2CWyj[ƻ ϻ ܻ)*C\u ɼҼۼ C+ow ӽ  :#^gb  #2B R]l|  ӿ" "CZ a o }  #7Q a/   *5Fbx "5"MpNi  DXm% (3A{ }"(= ^ a7nM9B870#KT_XY(y<zyZ ;31Ge,$ ),,A*n2f 3YT=n~[W[2@kr;7`w]]n56H<(v*t&" 2> CP$a&!!#8V nzM%$#Hez(g_~ !,!N cq?;c ,m +{LQZ^oCt %  *5`fu#KCDo=Ift!-L P59' S{ Om&TNW6 Tq^Ej"Z_iw>5Ba<D+`MU+,;.$QF.>O.hB1^:\p* >i0)_4 Yx7_7g:CAjG @ArkwT)E dsV|czF2d5[QK,v| -M{2&oy8sew ~HHL4HV=k*ye3hriat/3d !/%p10]3 G@I:6F'uvq{ 9bY#XU NrAn fu9EJn%)1$tWW48sg/`-bkpX0Sx?#R}S}"o?;VY`#6KDf,@Uzx;[gNczcqMZ|RZ\~&X<2a(?PCu(j(n<O+P8Bhvl %*G"J']Ime^y$ Rl~=}Q[L\bl!7Jm]  (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd AccountAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add accountAdd 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 languagesAlt+Always 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 errorCrowdin is an online localization management platform and collaborative translation tool.Ctrl+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 no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownDownloading 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:EnterEnter 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 loading translation file “%s”.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export errorExport 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…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)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport from TMX…Import translation files…Importing translation memory from “%s” 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 CrowdinLeftLine %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 translations were found in the TMX file.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKObsolete stringsOneOnly 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 translation templateOpen...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 translationsQuitQuit %sReading file content failed with the following error: %sRecentRecent 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 FinderReviewRightSaveSave &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 languageServicesSet LanguageSet languageSettings…Shift+Show AllShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow summary after updating filesShow 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.These strings are no longer in the source code. Poedit will remove them from the file now.These strings were found in the sources but were not in the file. Poedit will add them to the file now.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 entries in the file are probably incorrect.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 errorUntransUpUpdateUpdate 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 the file failed. Click on 'Details >>' for details.Updating 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown 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: 2024-08-30 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šakaPronađ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&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(novo: 0, zastarjelo: 0)(Saznaj više o GNU gettext)(Novo: %i, zastarjelo: %i)(Koristi zadani jezik)(nisi prijavljen/a)(potreban je Windows 8 ili noviji)< &PrethodnoO programu %sRačunRačuniDodajDodaj računDodaj komentarDodaj datoteke …Dodaj mape …Dodaj projektDodaj zamjenski znak …Dodaj računDodaj 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 jezikeAlt+Uvijek promijeni fokus na polje za unos tekstaStavka na popisu ulaznih datoteka:Stavka na popisu ključnih riječi:Prikaz tekstaPrimijeniStvarno ž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 internetska platforma za upravljanje lokalizacijom i alat za zajedničko prevođenje.Ctrl+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.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 se više ne koriste?&Nemoj spremitiNemoj spremitiNe prikazuj ponovoNe označuj jednake izraze, da zahtijevaju doraduNe prikazuj ponovoDoljePreuzimanje najnovijih prijevoda …Preuzimanje prijevoda je deaktivirano u ovom projektu.Povuci mape ili datoteke ovamoPovuci mape ili datoteke ovamo&IzlazUrediUredi &komentarUredi &komentarUredi komentarUredi komentarUredi projektUredi projektUređivanjeUredi …E-adresa:EnterCjeloekranski 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 učitavanja prevodilačke datoteke „%s”.Greška prilikom otvaranja datotekeGreška prilikom spremanja datotekeGreška kod učitavanja XLIFF datoteke: %sGreškeSveIsključene putanjeIzvezi u TMX datoteku …Izvezi kao …Greška prilikom izvozaIzvezi u TMX datoteku …Neuspio 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 …Postavke izdvajačaIzdvajačiNeuspjela naredba: %sNeuspjela komunikacija s Poedit procesom.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.Završavanje …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)ČestoGNU gettextOpćeHTML datotekePomoćSakrij %sSakrij ostaloSakrij 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 …Greška prilikom uvozaUvezi iz TMX datoteke …Uvezi datoteke prijevoda …Neuspio uvoz prevodilačke memorije iz „%s”.Uvoz prijevoda …U: %sUključi beta verzijeNedosljednost velikih/malih slovaNedosljednost bjelinePodaci prevodiocaInstalirajNevažeća datotekaPokretanje:JSON 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 CrowdinuLijevoRedak %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 …Nova iz &POT/PO datoteke …Novi izraziSljedeć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 prijevoda u TMX datoteci.Nema informacija o korištenjuNisu prevedeni svi oblici množine.Nemaš potrebna prava. Prijavi se ponovo.Napomene za prevodioceU reduZastarjeli izraziJedanUključ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 prevodilački predložakOtvori …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 mjestaOtvori i uredi pripadajuću PO datoteku. Prilikom spremanja će se MO datoteka također aktualizirati.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 prijevodeZatvoriZatvori %sČitanje sadržaja datoteke nije uspjelo uz sljedeću pogrešku: %sNedavnoNedavno korištene datotekePonoviOsvježiPonovo učitaj datotekuPonovo učitaj datotekuPreostalo: %dZamijeniZamijeni &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 FinderuPregledajDesnoSpremiSpremi k&ao…Spremi k&ao…Svejedno spremiSvejedno spremiSpremi kaoSpremi kao …Spremi promjeneSpremi datotekuSnimke zaslona:Odaberi &sveOdaberi sveOdaberi TMX datoteke za izvozOdaberi mapuOdaberi prevodilačku datotekuOdaberi datoteke prijevoda za uvozOdaberi prevodilački predložakOdaberi željeni jezikUslugePostavi jezikPostavi jezikPostavke …Shift+Prikaži svePrikaž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 sažetak nakon aktualiziranja datotekaPrikaž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 tekt — %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 izrazZamjenePrijedloziPrijedlozi 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.).SinkronizrajSinkronizacija 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” 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.Došlo do problema 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.Ovi se izrazi više ne nalaze u izvornom kodu. Poedit će ih sada ukloniti iz datoteke.Ovi su izrazi pronađeni u izvorima, ali ne u datoteci. Poedit će ih sada dodati datoteci.Ova JSON datoteka nije prijevod i Poedit je ne može uređivati.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 izrazi se ne dodaju ručno u Gettext sustav, već se automatski izvlače iz izvornog koda. Na taj način ostaju aktualni i ispravni. Prevodioci u pravilu koriste predloške (POT datoteke) programera.Prevedi projekt u oblakuPrevedeno: %d od %d (%d %%)PrijevodJezik prijevodaPrevodilačka memorijaPrijevod zahtijeva &doraduSvojstva prijevodaPrevodilački unosi u datoteci su vjerojatno netočni.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 aktualizirati prijevode iz izvornog koda, jer nije pronađen kod na mjestu koje je određeno u svojstvima datoteke.DvaUTF-8 (preporučeno)PoništiDogodila se neobradiva iznimka: %sUnix (preporučeno)Nepoznata Crowdin greška.Nepoznata greškaNeprevedenoGoreAktualizirajAktualiziraj 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 kodaSažetak aktualiziranjaNadogradnjeAktualiziranje nije uspjeloAktualiziranje datoteke nije uspjelo. Za detalje, klikni na „Detalji >>”.Aktualiziranje prijevodaAktualiziranje podataka korisnika …Prijenos prijevoda na %s nije uspio.Prijenos prijevoda na %s …Slanje 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 %sČekanje na autenitifikaciju …Dobrodošli u Poedit!Prilikom aktualiziranja iz izvoraSamo cijele riječiProzorWindowsŽelite li koristiti engleski izvorni tekst?Beskonačna pretragaPrijelom pri:XLIFF datoteke prijevodaDaPrevodive 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ćajaltZahtijeva doraductrlnemoj izbrisati privremene datoteke (služe za uklanjanje grešaka)npr. nplurals=2; plural=(n > 1);koristi slične prijevode iz datotekeidi na stavku u određenom retkuobradi poedit:// URIpretprevedi pomoću prevodilačke memorijeshiftnepoznat jeziknepodržana verzija (%s)tvojeime@primjer.com„%s” nije valjana POT datoteka.poedit-3.5/locales/sk.po0000644000175100001770000020502014664354065012204 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "Skryť túto správu s upozornením" msgid "Don’t Show Again" msgstr "Nabudúce nezobrazovať" msgid "Don’t show again" msgstr "Nabudúce nezobrazovať" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(Nové: %i, zastaralé: %i)" msgid "Collecting source files…" msgstr "Zhromažďovanie zdrojových súborov…" msgid "Extracting translatable strings…" msgstr "Extrahovanie preložiteľných reťazcov…" msgid "Failed to load file with extracted translations." msgstr "Zlyhalo načítanie súboru pri rozbaľovaní prekladu." msgid "Merging differences…" msgstr "Zlučovanie rozdielov…" msgid "Updating translations" msgstr "Aktualizácia prekladu" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "Súbor „%s” nemožno otvoriť." msgid "Invalid file" msgstr "Neplatný súbor" #, c-format msgid "Malformed header: “%s”" msgstr "Poškodená hlavička: „%s\"" msgid "PO Translation Files" msgstr "Súbory rekladu PO" msgid "POT Translation Templates" msgstr "Šablóny prekladov POT" msgid "XLIFF Translation Files" msgstr "Súbory prekladu XLIFF" msgid "JSON Translation Files" msgstr "Prekladové súbory JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "Prekladové súbory Flutter" msgid "All Translation Files" msgstr "Všetky prekladové súbory" msgid "The file is in a format not recognized by Poedit." msgstr "Súbor je vo formáte, ktorý Poedit nerozpoznáva." 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." #, c-format msgid "Reading file content failed with the following error: %s" msgstr "Načítanie obsahu súboru zlyhalo s nasledujúcou chybou: %s" #, 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." #, c-format msgid "Couldn’t save file %s." msgstr "Súbor %s nie je možné uložiť." msgid "Screenshots:" msgstr "Snímky obrazovky:" #, 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." #, 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)." 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" 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" msgid "Couldn’t load the file, it is probably damaged." msgstr "Súbor sa nepodarilo načítať, pravdepodobne je poškodený." 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é." 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ý)." #, 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é." msgid "Error saving file" msgstr "Chyba pri ukladaní súboru" #, c-format msgid "“%s” is not a valid POT file." msgstr "Súbor „%s\" nie je platný POT súbor." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Chyba pri načítaní súboru XLIFF: %s" #, c-format msgid "unsupported version (%s)" msgstr "nepodporovaná verzia (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML msgid "Broken markup in translation string." msgstr "Neplatné značky v reťazci prekladu." msgid "(Use default language)" msgstr "(Použiť pôvodný jazyk)" msgid "Language selection" msgstr "Výber jazyka" msgid "Select your preferred language" msgstr "Vyberte si vami preferovaný jazyk" msgid "You must restart Poedit for this change to take effect." msgstr "Musíte reštartovať Poedit, aby sa zmeny prejavili." msgid "Add Account" msgstr "Pridať účet" msgid "Add account" msgstr "Pridá účet" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "Získať viac informácií o službe %s" 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é." msgid "How does cloud sync work?" msgstr "Ako funguje synchronizácia v cloude?" msgid "Account" msgstr "Účet" msgid "(not signed in)" msgstr "(neprihlásený)" msgid "File" msgstr "Súbor" msgid "Open cloud translation" msgstr "Otvoriť cloud prekladov" msgid "Manage accounts" msgstr "Spravovať účty" msgid "Project:" msgstr "Projekt:" msgid "Language:" msgstr "Jazyk:" msgid "Sign in to Cloud Account" msgstr "Prihlásiť sa do účtu cloudu" msgid "Sign in to cloud account" msgstr "Prihlásenie do cloud účtu" msgid "No translation projects listed in your account." msgstr "Vo vašom účte nie sú uvedené žiadne prekladateľské projekty." msgid "Downloading latest translations…" msgstr "Sťahovanie najnovších prekladov…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #, c-format msgid "Sign in to %s" msgstr "Prihlásiť sa do služby %s" msgid "Syncing" msgstr "Synchronizácia" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, 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. #, c-format msgid "Uploading translations to %s failed." msgstr "Nahrávanie prekladov prostredníctvom %s zlyhalo." msgid "Syncing error" msgstr "Chyba synchronizácie" msgid "Add" msgstr "Pridať" msgid "Unknown Crowdin error." msgstr "Neznáma chyba Crowdinu." msgid "Not authorized, please sign in again." msgstr "Vyskytla sa chyba pri autorizácii, skúste sa prihlásiť znova." msgid "Downloading translations is disabled in this project." msgstr "V tomto projekte je sťahovanie prekladov vypnuté." msgid "Sign In" msgstr "Prihlásiť sa" msgid "Sign in" msgstr "Prihlásiť sa" msgid "Sign Out" msgstr "Odhlásiť sa" msgid "Sign out" msgstr "Odhlásiť sa" msgid "Learn more about Crowdin" msgstr "Dozvedieť sa viac o službe Crowdin" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" "Crowdin je online platforma na správu lokalizácie a nástroj pre spoluprácu " "na preklade." msgid "Waiting for authentication…" msgstr "Čakanie na autentifikáciu…" msgid "Updating user information…" msgstr "Aktualizujú sa informácie o používateľovi…" msgid "Sign in to Crowdin" msgstr "Prihlásiť sa do služby Crowdin" msgid "Syncing with Crowdin failed." msgstr "Synchronizácia so službou Crowdin zlyhala." msgid "Crowdin error" msgstr "Chyba služby Crowdin" msgid "Uploading translations…" msgstr "Obnova prekladov…" msgid "&Copy" msgstr "&Kopírovať" msgid "Learn more" msgstr "Zistiť viac" msgid "&Help" msgstr "&Nápoveda" msgid "MO files can’t be directly edited in Poedit." msgstr "MO súbory nemôžu byť upravované priamo v Poedite." msgid "Error opening file" msgstr "Chyba pri otváraní súboru" 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." msgid "don’t delete temporary files (for debugging)" msgstr "neodstraňovať dočasné súbory (pre ladenie)" msgid "handle a poedit:// URI" msgstr "manipulátor poedit:// URI" msgid "go to item at given line number" msgstr "prejsť na položku na danom čísle riadku" msgid "Failed to communicate with Poedit process." msgstr "Zlyhala komunikácia s procesom Poeditu." #, c-format msgid "Unhandled exception occurred: %s" msgstr "Vyskytla sa neočakávaná výnimka: %s" msgid "Select translation template" msgstr "Vyberte šablónu prekladu" msgid "Select translation file" msgstr "Vybrte súbor prekladu" msgid "Poedit is an easy to use translation editor." msgstr "Poedit je jednoducho použiteľný editor prekladov." 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." #, c-format msgid "File “%s” is not a translation file." msgstr "Súbor „%s\" nie je súborom prekladu." #, c-format msgid "File “%s” doesn’t exist." msgstr "Súbor „%s\" neexistuje." 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". #, 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ý." msgid "Install" msgstr "Inštalovať" #, c-format msgid "The file “%s” has been changed by another application." msgstr "Súbor „%s” bol zmenený inou aplikáciou." msgid "Reload file" msgstr "Znovu načítať súbor" 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é." msgid "Ignore" msgstr "Ignorovať" msgid "Reload File" msgstr "Znovu načítať súbor" msgid "The file has been modified. Do you want to save changes?" msgstr "Súbor bol upravený. Chcete zmeny uložiť?" msgid "Save changes" msgstr "Uložiť zmeny" msgid "Your changes will be lost if you don’t save them." msgstr "Vaše úpravy budú stratené ak ich neuložíte." msgid "Save" msgstr "Uložiť" msgid "Do&n’t save" msgstr "&Neukladať" msgid "Don’t Save" msgstr "Neukladať" 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é." msgid "Cancel" msgstr "Zrušiť" msgid "Save Anyway" msgstr "Napriek tomu uložiť" msgid "Save anyway" msgstr "Napriek tomu uložiť" msgid "Save as…" msgstr "Uložiť ako…" msgid "Compile to…" msgstr "Kompilovať do…" msgid "Compiled Translation Files" msgstr "Skompilované súbory prekladu" msgid "Export to HTML…" msgstr "Exportovať do HTML…" msgid "HTML Files" msgstr "HTML súbory" #, c-format msgid "In: %s" msgstr "V %s" msgid "Source code not available." msgstr "Zdrojový kód je nedostupný." msgid "Updating failed" msgstr "Aktualizácia zlyhala" 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." msgid "Permission denied." msgstr "Prístup zamietnutý." 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. 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. 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." msgid "Translation entries in the file are probably incorrect." msgstr "Položky prekladu v súbore sú pravdepodobne nesprávne." msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "" "Aktualizácia súboru zlyhala. Pre viac informácií kliknite na „Podrobnosti " ">>\"." msgid "Open translation template" msgstr "Otvoriť šablónu prekladu" #, 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." msgid "Validation results" msgstr "Výsledky overovania" 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." msgid "The file was saved safely." msgstr "Súbor bol bezpečne uložený." 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." 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ý." 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." 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ť." msgid "No problems with the translation found." msgstr "Nenašli sa žiadne problémy s prekladom." #, 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." msgid "The translation is ready for use." msgstr "Preklad je pripravený na používanie." #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "Poedit automaticky opraví neplatný obsah v súbore \"%s\"." msgid "" "The file contained duplicate items, which is not allowed in PO files and " "would prevent the file from being used. Poedit fixed the issue, but you " "should review translations of any items marked as 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ť." msgid "Language of the translation isn’t set." msgstr "Jazyk prekladu nie je nastavený." msgid "Set Language" msgstr "Nastaviť jazyk" 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)." msgid "" "Suggestions are not available if the translation language is not set " "correctly. Other features, such as plural forms, may be affected as well." msgstr "" "Návrhy nie sú dostupné ak jazyk prekladu nie je nastavený správne. Ostatné " "funkcie, ako množné číslo, tým môžu byť ovplyvnené." msgid "Language of the translation is the same as source language." msgstr "Jazyk prekladu sa zhoduje so zdrojovým jazykom." msgid "Fix Language" msgstr "Opraviť jazyk" msgid "Fix language" msgstr "Opraviť jazyk" 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." 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" msgid "Required header Plural-Forms is missing." msgstr "V hlavičke chýba položka Tvary množného čísla." #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Chyba syntaxu v hlavičke Tvary množného čísla („%s\")." msgid "Fix the Header" msgstr "Opraviť hlavičku" 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". #, 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.")" msgid "Review" msgstr "Posúdiť" msgid "Would you like to use English for source text?" msgstr "Chcete použiť anglický zdrojový text?" #, 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" msgid "Load English" msgstr "Načítať angličtinu" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Preložené: %d z %d (%d %%)" #, c-format msgid "Remaining: %d" msgstr "Zostáva: %d" #, 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" #, 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" msgid " (unsaved)" msgstr " (neuložené)" msgid " (modified)" msgstr " (zmenené)" #, c-format msgid "Failed to update translation memory: %s" msgstr "Zlyhala aktualizácia pamäte prekladov: %s" msgid "Remove same-as-source translations" msgstr "Odstrániť preklady rovnaké ako zdroj" 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?" 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äť." msgid "Keep" msgstr "Zachovať" msgid "Remove" msgstr "Odstrániť" msgid "Purge deleted translations" msgstr "Vyčistiť zmazané preklady" 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ú?" 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." msgid "Purge" msgstr "Vyčistiť" msgid "Copy from source text" msgstr "Skopírovať zo zdrojového textu" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "Vyčistiť preklad" msgid "Clear Translation" msgstr "Vyčistiť preklad" msgid "Edit comment" msgstr "Upraviť komentár" msgid "Edit Comment" msgstr "Upraviť komentár" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "Výskyty v kóde" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "Výskyty v kóde" msgid "Hide Sidebar" msgstr "Skryť bočný panel" msgid "Show Sidebar" msgstr "Zobraziť bočný panel" msgid "Hide Status Bar" msgstr "Skryť stavový riadok" msgid "Show Status Bar" msgstr "Zobraziť stavový riadok" msgid "String length in characters: translation | source" msgstr "Dĺžka reťazca v znakoch: preklad | zdroj" msgid "String length in characters" msgstr "Dĺžka reťazca v znakoch" msgid "Source text" msgstr "Zdrojový text" msgid "Singular" msgstr "Jednotné číslo" msgid "Plural" msgstr "Množné číslo" msgid "Translation" msgstr "Preklad" msgid "Pre-translated" msgstr "Pred-preložené" 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. msgid "Needs work" msgstr "Vyžaduje spracovanie" msgid "" "POT files are only templates and don’t contain any translations themselves.\n" "To make a translation, create a new PO file based on the template." msgstr "" "Súbory POT sú iba šablóny a samé neobsahujú žiadne preklady.\n" "Ak chcete vytvoriť nový preklad, vytvorte nový PO súbor na základe šablóny." msgid "Create new translation" msgstr "Vytvoriť nový preklad" msgid "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 msgid "Source text ID" msgstr "ID zdrojového textu" msgid "Everything" msgstr "Všetko" #, c-format msgid "Form %i" msgstr "Tvar %i" #, c-format msgid "Form %i (unused)" msgstr "Tvar %i (nepoužitý)" msgid "Zero" msgstr "Nula" msgid "One" msgstr "Jeden" msgid "Two" msgstr "Dva" msgid "Other" msgstr "Ostatné" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, 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 #, c-format msgid "String identifier: %s" msgstr "Identifikátor reťazca: %s" #, 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." #, c-format msgid "%s format" msgstr "%s formát" #, c-format msgid "Translation — %s" msgstr "Preklad — %s" msgid "ID" msgstr "ID" #, c-format msgid "Source text — %s" msgstr "Zdrojový text — %s" msgid "unknown language" msgstr "neznámy jazyk" #, c-format msgid "Network error: %s (%d)" msgstr "Chyba siete: %s (%d)" msgid "Unknown error" msgstr "Neznáma chyba" #, c-format msgid "Failed command: %s" msgstr "Zlyhal príkaz: %s" msgid "Failed to merge gettext catalogs." msgstr "Zlyhalo zlúčenie katalógov gettext." msgid "Open in Editor" msgstr "Otvoriť v editore" msgid "Open in editor" msgstr "Otvoriť v editore" 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." msgid "No usage information" msgstr "Bez použiteľnej informácie" #, 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" msgid "Source code not found" msgstr "Zdrojový kód nenájdený" 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." msgid "File cannot be opened" msgstr "Súbor nemohol byť otvorený" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "Poedit nedokázal otvoriť súbor „%s\"." msgid "Find" msgstr "Vyhľadať" msgid "Replace" msgstr "Nahradiť" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "Voľby" msgid "Ignore case" msgstr "Ignorovať veľkosť písmen" msgid "Wrap around" msgstr "Prehľadávať dookola" msgid "Whole words only" msgstr "Iba celé slová" msgid "Find in source texts" msgstr "Hľadať v zdrojových textoch" msgid "Find in translations" msgstr "Hľadať v prekladoch" msgid "Find in comments" msgstr "Hľadať v komentároch" msgid "Close" msgstr "Zatvoriť" msgid "Replace &All" msgstr "Nahradiť &všetko" msgid "Replace &all" msgstr "Nahradiť &všetko" msgid "&Replace" msgstr "&Nahradiť" msgid "< &Previous" msgstr "< &Predošlý" msgid "&Next >" msgstr "&Nasledujúci >" msgid "String to find" msgstr "Vyhľadávaný reťazec" msgid "Replacement string" msgstr "Reťazec nahradenia" #, c-format msgid "Cannot execute program: %s" msgstr "Nepodarilo sa spustiť program: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "Názov jazyka alebo kódu" msgid "Translation Language" msgstr "Jazyk prekladu" msgid "Language of the translation:" msgstr "Jazyk prekladu:" msgid "All strings" msgstr "Všetky reťazce" msgid "Couldn’t download Localazy project details." msgstr "Nepodarilo sa stiahnuť detaily projektu Localazy." msgid "There was an error when uploading translations to Localazy." msgstr "Pri obnove prekladov do služby Localazy došlo k chybe." msgid "Projects" msgstr "Projekty" 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." msgid "Add Project" msgstr "Pridať projekt" msgid "Add project" msgstr "Pridáva projekt" msgid "Poedit - Catalogs manager" msgstr "Poedit – Správca katalógov" msgid "Edit…" msgstr "Upraviť…" msgid "Create new translations project" msgstr "Vytvoriť nový projekt prekladu" msgid "Delete the project" msgstr "Odstrániť projekt" msgid "Edit the project" msgstr "Upraviť projekt" msgid "Update all" msgstr "Aktualizovať všetko" msgid "Update all catalogs in the project" msgstr "Aktualizovať všetky katalógy v projekte" msgid "Total" msgstr "Celkovo" msgid "Untrans" msgstr "Nepreložené" msgctxt "column/row header" msgid "Needs Work" msgstr "Vyžaduje spracovanie" msgid "Errors" msgstr "Chyby" msgid "Last modified" msgstr "Naposledy upravené" msgid "Select directory" msgstr "Vyberte si priečinok" msgid "Directories:" msgstr "Priečinky:" msgid "" msgstr "" #, c-format msgid "Do you want to delete project “%s”?" msgstr "Chcete odstrániť projekt “%s”?" msgid "Delete project" msgstr "Odstrániť projekt" msgid "Deleting the project will not delete any translation files." msgstr "Odstránením projektu nebudú odstránené žiadne prekladové súbory." msgid "Confirmation" msgstr "Potvrdenie" msgid "Update all catalogs in this project?" msgstr "Aktualizovať všetky katalógy v tomto projekte?" 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." msgid "Check for Updates…" msgstr "Kontrola aktualizácií…" msgid "Catalogs Manager" msgstr "Správca katalógov" msgid "&Preferences…" msgstr "&Predvoľby…" msgid "&Edit" msgstr "&Úpravy" msgid "Undo" msgstr "Späť" msgid "Redo" msgstr "Vpred" msgid "Paste and Match Style" msgstr "Vložiť a prispôsobiť štýl" msgid "Delete" msgstr "Odstrániť" msgid "Spelling and Grammar" msgstr "Pravopis a gramatika" msgid "Show Spelling and Grammar" msgstr "Zobrazovať pravopis a gramatiku" msgid "Check Document Now" msgstr "Skontrolovať dokument teraz" msgid "Check Spelling While Typing" msgstr "Kontrolovať gramatiku počas písania" msgid "Check Grammar With Spelling" msgstr "Skontrolovať gramatiku so slovníkom" msgid "Correct Spelling Automatically" msgstr "Automaticky opravovať gramatiku" msgid "Substitutions" msgstr "Nahradenia" msgid "Show Substitutions" msgstr "Zobraziť nahradenia" msgid "Smart Copy/Paste" msgstr "Chytré kopírovanie/prilepenie" msgid "Smart Quotes" msgstr "Chytré úvodzovky" msgid "Smart Dashes" msgstr "Chytré pomlčky" msgid "Smart Links" msgstr "Chytré odkazy" msgid "Text Replacement" msgstr "Nahradenia textu" msgid "Transformations" msgstr "Transformácie" msgid "Make Upper Case" msgstr "Vyhotoviť VEĽKÝM PÍSMOM" msgid "Make Lower Case" msgstr "Vyhotoviť malým písmom" msgid "Capitalize" msgstr "Prvé písmeno veľkým" msgid "Speech" msgstr "Výslovnosť" msgid "Start Speaking" msgstr "Začať rozprávanie" msgid "Stop Speaking" msgstr "Zastaviť rozprávanie" msgid "&View" msgstr "&Zobrazenie" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item 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 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 msgid "Enter Full Screen" msgstr "Celoobrazovkový režim" msgid "Window" msgstr "Okno" msgid "Minimize" msgstr "Minimalizovať" msgid "Zoom" msgstr "Priblíženie" msgid "Welcome to Poedit" msgstr "Vitajte v programe Poedit" msgid "Bring All to Front" msgstr "Preniesť všetko dopredu" msgid "Information about the translator" msgstr "Informácie o prekladateľovi" msgid "Name:" msgstr "Meno:" msgid "Your Name" msgstr "Vaše meno" msgid "Email:" msgstr "Email:" msgid "you@example.com" msgstr "vase_meno@príklad.com" 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." msgid "Editing" msgstr "Úprava" msgid "Automatically compile MO file when saving" msgstr "Automaticky skompilovať MO súbor pri uložení" msgid "Show summary after updating files" msgstr "Zobraziť súhrn po aktualizácii súborov" msgid "Check spelling" msgstr "Kontrolovať gramatiku" msgid "Always change focus to text input field" msgstr "Vždy zamerať pole pre zadávanie textu" 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." msgid "Appearance" msgstr "Vzhľad" msgid "Use custom list font:" msgstr "Použiť vlastný zoznam písma:" msgid "Use custom text fields font:" msgstr "Použije vlastný zoznam písma polí:" 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 msgid "(requires Windows 8 or newer)" msgstr "(požadovaný Windows 8 alebo novší)" msgid "General" msgstr "Všeobecné" msgid "Use translation memory" msgstr "Použiť Pamäť prekladov" msgid "Manage…" msgstr "Spravovať…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "Pri aktualizácii zo zdrojov" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "označovať v súbore ako nepresné" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "pred-preložiť z Pamäte prekladov" 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." msgid "Stored translations:" msgstr "Počet uložených prekladov:" msgid "Database size on disk:" msgstr "Veľkosť databázy na disku:" msgid "Import Translation Files…" msgstr "Importovať súbory prekladu…" msgid "Import translation files…" msgstr "Importovať súbory prekladu…" msgid "Import From TMX…" msgstr "Importovať z Výmennej pamäte prekladov (TMX)…" msgid "Import from TMX…" msgstr "Importovať z Výmennej pamäte prekladov (TMX)…" msgid "Export To TMX…" msgstr "Exportovať do Výmennej pamäte prekladov (TMX)…" 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). msgid "Reset" msgstr "Vynulovať" msgid "Select translation files to import" msgstr "Vyberte súbor prekladu pre import" msgid "Translation Memory" msgstr "Pamäť prekladov" msgid "Importing translations…" msgstr "Importovanie prekladov…" #, c-format msgid "Error loading translation file “%s”." msgstr "Vyskytla sa pri načítaní súboru prekladu „%s”." msgid "Finalizing…" msgstr "Dokončovanie…" msgid "Select TMX files to import" msgstr "Vyberte súbor Výmennej pamäte prekladov (TMX) na import" msgid "TMX Files" msgstr "Súbory Výmennej pamäte prekladov (TMX)" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "Importovanie prekladovej pamäte do \"%s\" zlyhalo." msgid "Import error" msgstr "Chyba importu" msgid "Export as…" msgstr "Exportovať ako…" msgid "Exporting translations…" msgstr "Exportovanie prekladov…" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "Exportovanie prekladovej pamäte do \"%s\" zlyhalo." msgid "Export error" msgstr "Chyba exportu" msgid "Reset translation memory" msgstr "Vynulovať pamäť prekladov" msgid "Are you sure you want to reset the translation memory?" msgstr "Ste si istý že chcete vynulovať pamäť prekladov?" 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. msgid "TM" msgstr "Pamäť prekladov" 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." msgid "Custom Extractors:" msgstr "Vlastné extraktory:" msgid "Custom extractors:" msgstr "Vlastné extraktory:" msgid "GNU gettext" msgstr "GNU gettext" 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)." msgid "Delete extractor" msgstr "Odstrániť extraktor" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "Ste si istý, že chcete odstrániť extraktor „%s\"?" msgid "Extractors" msgstr "Extraktory" msgid "Accounts" msgstr "Účty" msgid "Automatically check for updates" msgstr "Automaticky kontrolovať aktualizácie" msgid "Include beta versions" msgstr "Vrátane beta verzií" 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é." msgid "Updates" msgstr "Aktualizácie" 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í." msgid "Line endings:" msgstr "Ukončenie riadkov:" msgid "Unix (recommended)" msgstr "Unix (odporúčané)" msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "Zalomiť po:" msgid "Preserve formatting of existing files" msgstr "Zachovať existujúce formátovanie súborov" msgid "Advanced" msgstr "Rozšírené" msgid "Settings" msgstr "Nastavenia" msgid "Preparing strings…" msgstr "Príprava reťazcov…" msgid "Pre-translating from translation memory…" msgstr "Predbežný preklad z pamäte prekladov…" #, 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" msgid "Pre-translating…" msgstr "Prebieha pred-preklad…" 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. msgid "Pre-translate" msgstr "Pred-preložiť" 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." msgid "Cannot pre-translate from unknown language." msgstr "Nemožno predbežne prekladať z neznámeho jazyka." 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ť." msgid "Only fill in exact matches" msgstr "Vyplniť iba presné zhody" 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ť." msgid "Don’t mark exact matches as needing work" msgstr "Neoznačovať presné výsledky ako potrebujúce dopracovanie" 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é." 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." #, 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." 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." msgid "No entries could be pre-translated." msgstr "Žiadne položky neboli pred-preložené." 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." msgid "Cancelling…" msgstr "Zrušenie…" msgid "Drag Folders or Files Here" msgstr "Pretiahnuť priečinok alebo súbor tu" msgid "Drag folders or files here" msgstr "Pretiahnuť priečinok alebo súbor tu" msgid "Add Folders…" msgstr "Pridať priečinky…" msgid "Add folders…" msgstr "Pridať priečinky…" msgid "Add Files…" msgstr "Pridať súbory…" msgid "Add files…" msgstr "Pridať súbory…" msgid "Add Wildcard…" msgstr "Pridať zástupný znak…" 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) 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" msgid "Show in Explorer" msgstr "Ukázať v Prieskumníkovi" msgid "Show in Folder" msgstr "Ukázať v priečinku" msgid "Paths" msgstr "Cesty" msgid "Excluded paths" msgstr "Vylúčené cesty" msgid "Advanced extraction settings" msgstr "Rozšírené nastavenia extrakcie" msgid "Extract notes for translators from:" msgstr "Extrahovať poznámky pre prekladateľov z:" msgid "Comments prefixed with:" msgstr "Komentárov s predponou:" msgid "All comments" msgstr "Všetkých komentárov" msgid "Additional xgettext flags:" msgstr "Prídavné príznaky xgettext:" msgid "Additional keywords" msgstr "Prídavné kľúčové slová" msgid "Name of the project the translation is for" msgstr "Názov projektu prekladu je pre" msgid "Team name and email address or URL" msgstr "Názov tímu a e-mailová adresa alebo URL" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "napr. nplurals=2; plural=(n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (odporúčané)" 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á." msgid "Placeholders correctness" msgstr "Správnosť zástupných znakov" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "V preklade chýba zástupný znak „%s“." #, 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." msgid "Plural form translations" msgstr "Tvary množného čísla prekladov" msgid "Not all plural forms are translated." msgstr "Nie všetky tvary množného čísla sú preložené." msgid "Inconsistent upper/lower case" msgstr "Nezhodné veľké/malé písmená" msgid "The translation should start as a sentence." msgstr "Preklad by mal začať ako veta." msgid "The translation should start with a lowercase character." msgstr "Preklad by mal začať malým písmenom." msgid "Inconsistent whitespace" msgstr "Nezhodné biele znaky" msgid "The translation doesn’t start with a space." msgstr "Preklad nezačína medzerou." msgid "The translation starts with a space, but the source text doesn’t." msgstr "Preklad začína medzerou, ale zdrojový text nie." msgid "The translation is missing a newline at the end." msgstr "Prekladu chýba konci prechod na nový riadok." msgid "The translation ends with a newline, but the source text doesn’t." msgstr "Preklad končí prechodom na nový riadok, ale zdrojový text nie." msgid "The translation is missing a space at the end." msgstr "V preklade chýba medzera na konci." msgid "The translation ends with a space, but the source text doesn’t." msgstr "Preklad končí medzerou, ale zdrojový text nie." msgid "Punctuation checks" msgstr "Kontrola interpunkcie" #, c-format msgid "The translation should end with “%s”." msgstr "Preklad by mal byť ukončený \"%s\"." #, c-format msgid "The translation should not end with “%s”." msgstr "Preklad by nemal končiť „%s\"." #, c-format msgid "The translation ends with “%s”, but the source text ends with “%s”." msgstr "Preklad končí „%s\", ale zdrojový text končí „%s\"." msgid "Cloud" msgstr "Cloud" msgid "Clear Menu" msgstr "Zmazať ponuku" msgid "Clear menu" msgstr "Zmazať ponuku" msgid "Comment:" msgstr "Komentár:" msgid "Update" msgstr "Aktualizovať" msgid "&Delete" msgstr "&Odstrániť" msgid "Delete the comment" msgstr "Odstrániť komentár" msgid "Edit project" msgstr "Upraviť projekt" msgid "Project name:" msgstr "Názov projektu:" msgid "Browse" msgstr "Prehliadať" msgid "Add directory to the list" msgstr "Pridať priečinok do zoznamu" msgid "OK" msgstr "OK" msgid "&File" msgstr "&Súbor" msgid "&New…" msgstr "&Nový…" msgid "New from &POT/PO file…" msgstr "Nový zo súboru &POT/PO…" msgid "New From &POT/PO File…" msgstr "Nový zo súboru &POT/PO…" msgid "&Open…" msgstr "&Otvoriť…" msgid "Open Recent" msgstr "Naposledy otvorené" msgid "Open recent" msgstr "Otvoriť nedávne" msgid "Open cloud translation…" msgstr "Otvoriť cloudovský preklad…" msgid "Open Cloud Translation…" msgstr "Otváranie cloudovského prekladu…" msgid "&Start window" msgstr "Š&tartovacie okno" msgid "&Start Window" msgstr "Š&tartovacie okno" msgid "Catalogs &manager" msgstr "&Správca katalógov" msgid "Catalogs &Manager" msgstr "&Správca katalógov" msgid "&Close" msgstr "&Zatvoriť" msgid "&Save" msgstr "&Uložiť" msgid "Save &as…" msgstr "Uložiť &ako…" msgid "Save &As…" msgstr "Uložiť &ako…" msgid "Compile to MO…" msgstr "Skompilovať do MO súboru…" msgid "E&xport to HTML…" msgstr "E&xportovať do HTML…" msgid "Check for updates…" msgstr "Skontrolovať aktualizácie…" msgid "Settings…" msgstr "Nastavenia…" msgid "&Preferences" msgstr "Pred&voľby" msgid "E&xit" msgstr "U&končiť" msgid "Quit" msgstr "Ukončiť" msgid "Copy from singular" msgstr "Kopírovať z jednotného čísla" msgid "Copy From Singular" msgstr "Kopírovať z jednotého čísla" msgid "Translation needs &work" msgstr "Preklad potrebuje &dopracovanie" msgid "Translation Needs &Work" msgstr "Preklad potrebuje &dopracovanie" msgid "Edit &comment" msgstr "&Upraviť komentár" msgid "Edit &Comment" msgstr "&Upraviť komentár" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "Návrhy" msgid "&Find…" msgstr "&Vyhľadať…" msgid "Replace…" msgstr "Nahradiť…" msgid "Find next" msgstr "Hľadať ďalší" msgid "Find previous" msgstr "Hľadať predošlý" msgid "Find and Replace…" msgstr "Vyhľadať a nahradiť…" msgid "Find Next" msgstr "Hľadať ďalší" msgid "Find Previous" msgstr "Hľadať predošlý" msgid "Show string &ID" msgstr "Zobraziť &ID reťazca" msgid "Show String &ID" msgstr "Zobraziť &ID reťazca" msgid "Show warnings" msgstr "Zobrazovať varovania" msgid "Show Warnings" msgstr "Zobrazovať upozornenia" msgid "Sort by &file order" msgstr "Usporiadať podľa poradia &súborov" msgid "Sort by &File Order" msgstr "Usporiadať podľa poradia &súborov" msgid "Sort by &source" msgstr "Usporiadať podľa &zdroja" msgid "Sort by &Source" msgstr "Usporiadať podľa &zdroja" msgid "Sort by &translation" msgstr "Usporiadať podľa &prekladu" msgid "Sort by &Translation" msgstr "Usporiadať podľa &prekladu" msgid "&Group by context" msgstr "Z&oskupiť podľa súvislostí" msgid "&Group By Context" msgstr "Z&oskupiť podľa súvislostí" msgid "Entries with errors first" msgstr "Najskôr položky s chybami" msgid "Entries with Errors First" msgstr "Najskôr položky s chybami" msgid "&Untranslated entries first" msgstr "&Najskôr nepreložené záznamy" msgid "&Untranslated Entries First" msgstr "&Najskôr nepreložené záznamy" msgid "&Show code occurrences" msgstr "&Zobraziť výskyty kódu" msgid "&Show Code Occurrences" msgstr "&Zobraziť výskyty kódu" msgid "Show sidebar" msgstr "Zobraziť bočný panel" msgid "Show status bar" msgstr "Zobraziť stavový riadok" msgid "&Translation" msgstr "&Preklad" msgid "&Update from source code" msgstr "&Aktualizovať zo zdrojového kódu" msgid "&Update from Source Code" msgstr "&Aktualizovať zo zdrojového kódu" msgid "Update from &POT file…" msgstr "Aktualizovať zo súboru POT…" msgid "Update from &POT File…" msgstr "Aktualizovať zo súboru POT…" msgid "Sync with Crowdin" msgstr "Synchronizovať s Crowdinom" msgid "Pre-&translate…" msgstr "Pred-&preklad…" msgid "&Validate translations" msgstr "&Overiť preklady" msgid "&Validate Translations" msgstr "&Overiť preklady" msgid "Remove Same-as-Source Translations" msgstr "Odstrániť preklady rovnaké ako zdroj" msgid "&Purge deleted translations" msgstr "&Vyčistiť odstránené preklady" msgid "&Purge Deleted Translations" msgstr "&Vyčistiť odstránené preklady" msgid "&Properties…" msgstr "&Vlastnosti…" msgid "&Go" msgstr "P&rejsť" msgid "&Done and next" msgstr "&Dokončiť a prejsť na ďalší" msgid "&Done and Next" msgstr "&Dokončiť a prejsť na ďalší" msgid "Previously edited" msgstr "Predošlá úprava" msgid "Previously Edited" msgstr "Predošlá úprava" msgid "&Previous translation" msgstr "&Predošlý preklad" msgid "&Previous Translation" msgstr "&Predošlý preklad" msgid "&Next translation" msgstr "&Nasledujúci preklad" msgid "&Next Translation" msgstr "&Nasledujúci preklad" msgid "P&revious unfinished" msgstr "P&redošlý nedokončený" msgid "P&revious Unfinished" msgstr "P&redošlý nedokončený" msgid "Ne&xt unfinished" msgstr "Nasledujúci &nedokončený" msgid "Ne&xt Unfinished" msgstr "Nasledujúci &nedokončený" msgid "Previous plural form" msgstr "Predošlý tvar množného čísla" msgid "Previous Plural Form" msgstr "Predošlý tvar množného čísla" msgid "Next plural form" msgstr "Ďalší tvar množného čísla" msgid "Next Plural Form" msgstr "Ďalší tvar množného čísla" msgid "&Online help" msgstr "Online &nápoveda" msgid "&Online Help" msgstr "Online &nápoveda" msgid "&GNU gettext manual" msgstr "Manuál &GNU gettext" msgid "&GNU gettext Manual" msgstr "Manuál &GNU gettext" msgid "&About Poedit" msgstr "&O programe Poedit" msgid "&About" msgstr "&O programe" msgid "Extractor setup" msgstr "Nastavenia extraktora" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Zoznam prípon oddelených bodkočiarkou (napr. *.cpp;*.h):" msgid "Invocation:" msgstr "Volanie príkazu:" msgid "Command to extract translations:" msgstr "Príkaz pre extrakciu prekladov:" 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)." msgid "An item in keywords list:" msgstr "Položka v zozname kľúčových slov:" 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." msgid "An item in input files list:" msgstr "Položka v zozname vstupných súborov:" #, 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." msgid "Source code charset:" msgstr "Zdrojový kód znakovej sady:" #, 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." msgid "Translation Properties" msgstr "Vlastnosti prekladov" msgid "Project name and version:" msgstr "Názov projektu a verzia:" msgid "Language team:" msgstr "Prekladateľský tím:" msgid "Plural forms:" msgstr "Tvary množného čísla:" msgid "Use default rules for this language" msgstr "Použiť predvolené pravidlá pre tento jazyk" msgid "Use custom expression" msgstr "Použiť vlastný výraz" msgid "Learn about plural forms" msgstr "Dozvedieť sa informácie o tvaroch množného čísla" msgid "Charset:" msgstr "Znaková sada:" msgid "Advanced Extraction Settings…" msgstr "Rozšírené nastavenia extrakcie…" msgid "Advanced extraction settings…" msgstr "Rozšírené nastavenia extrakcie…" msgid "Translation properties" msgstr "Vlastnosti prekladov" msgid "Sources Paths" msgstr "Cesty zdrojov" msgid "Sources paths" msgstr "Cesty zdrojov" msgid "Extract text from source files in the following directories:" msgstr "Aktualizovať text zo zdrojových súborov v nasledovných priečinkoch:" msgid "Base path:" msgstr "Základná cesta:" msgid "Sources Keywords" msgstr "Zdrojové kľúčové slová" msgid "Sources keywords" msgstr "Zdrojové kľúčové slová" 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:" msgid "Also use default keywords for supported languages" msgstr "Tiež použiť predvolené kľúčové slová pre podporované jazyky" msgid "Learn about gettext keywords" msgstr "Dozvedieť sa informácie o kľúčových slovách Gettext" msgid "Update summary" msgstr "Súhrn aktualizácie" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" "Tieto reťazce sa našli v zdrojoch, ale neboli v súbore.\n" "Poedit ich teraz pridá do súboru." msgid "New strings" msgstr "Nové reťazce" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" "Tieto reťazce už nie sú v zdrojovom kóde.\n" "Poedit ich teraz odstráni zo súboru." msgid "Obsolete strings" msgstr "Zastaralé preklady" msgid "(0 new, 0 obsolete)" msgstr "(žiadne nové, žiadne zastaralé)" msgid "Open" msgstr "" msgid "Open file" msgstr "Otvoriť súbor" msgid "Save file" msgstr "Uložiť súbor" msgid "Validate" msgstr "Overiť" msgid "Check for errors in the translation" msgstr "Skontroluje chyby v preklade" msgid "Update from code" msgstr "Aktualizovať z kódu" msgid "Update from Code" msgstr "Aktualizovať z kódu" msgid "Update from source code" msgstr "Aktualizovať zo zdrojového kódu" msgid "Sidebar" msgstr "Bočný panel" 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. msgid "Previous source text" msgstr "Predošlý zdrojový text" 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." msgid "Notes for translators" msgstr "Poznámky pre prekladateľov" msgid "Comment" msgstr "Komentár" msgid "Add comment" msgstr "Pridať komentár" msgid "Add Comment" msgstr "Pridať komentár" msgid "Delete From Translation Memory" msgstr "Vymazať z Pamäte prekladov" msgid "Delete from translation memory" msgstr "Vymazať z Pamäte prekladov" msgid "Translation suggestions" msgstr "Návrhy prekladu" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). 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). msgid "No Matches Found" msgstr "Nenašli sa žiadne zhody" msgid "This string was found in Poedit’s translation memory." msgstr "Tento reťazec bol nájdený v Pamäti prekladov Poeditu." 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." 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ť." msgid "The TMX file is malformed." msgstr "Súbor Výmennej pamäte prekladov (TMX) je poškodený." msgid "No translations were found in the TMX file." msgstr "V súbore Výmennej pamäte prekladov (TMX) sa nenašli žiadne preklady." #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Databáza Pamäte prekladov je poškodená: %s (%d)." #, c-format msgid "Translation memory error: %s (%d)." msgstr "Chyba pamäte prekladu: %s (%d)." msgid "Cannot create temporary directory." msgstr "Nepodarilo sa vytvoriť dočasný priečinok." msgid "There are no translations. That’s unusual." msgstr "V súboru nie sú žiadne preklady. Toto je nezvyčajné." msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "Translators typically use PO template files (POTs) prepared for them by the " "developer." msgstr "" "Preložiteľné reťazce nie sú pridávané manuálne v systéme Gettext, ale sú " "automaticky extrahované\n" "zo zdrojového kódu. Takto zostanú aktuálne a správne.\n" "Prekladatelia zvyčajne používajú súbory PO šablón (s príponou POT), ktoré sú " "vytvorené vývojárom." msgid "(Learn more about GNU gettext)" msgstr "(Dozvedieť sa viac o GNU gettext)" 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:" msgid "Update from POT" msgstr "Aktualizovať z POT súboru" msgid "Take translatable strings from an existing POT template." msgstr "Použiť preložiteľné reťazce z existujúcej POT šablóny." 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:" msgid "Extract from sources" msgstr "Vytiahnuť zo zdrojov" 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 #, c-format msgid "Version %s" msgstr "Verzia %s" msgid "Create new" msgstr "Vytvoriť nový" msgid "Create new translation from POT template." msgstr "Vytvoriť nový preklad z POT šablóny." msgid "Browse files" msgstr "Prehľadávať súbory" msgid "Open and edit translation files." msgstr "Otvoriť a upraviť súbory prekladu." msgid "Translate cloud project" msgstr "Preložiť cloudovský projekt" msgid "Collaborate with other people online." msgstr "Spolupracovať s ostatnými ľuďmi online." msgid "Recent files" msgstr "Nedávne súbory" msgid "Sync" msgstr "Synchronizácia" 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") #, 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. #, c-format msgid "%s Preferences" msgstr "Nastavenia %s" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "Služby" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "Skryť %s" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "Skryť ostatné" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "Zobraziť všetko" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "Ukončiť %s" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "Predvoľby…" msgid "Preferences..." msgstr "Predvoľby..." #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "Nedávno otvorené" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "Časté" msgid "&Apply" msgstr "&Použiť" msgid "Apply" msgstr "Použiť" msgid "&Back" msgstr "&Späť" msgid "Back" msgstr "Späť" msgid "&Cancel" msgstr "&Zrušiť" msgid "&Clear" msgstr "&Vyčistiť" msgid "Clear" msgstr "Vyčistiť" msgid "Copy" msgstr "Kopírovať" msgid "Cu&t" msgstr "V&ystrihnúť" msgid "Cut" msgstr "Vystrihnúť" msgid "Edit" msgstr "Upraviť" msgid "&Quit" msgstr "&Ukončiť" msgid "Help" msgstr "Nápoveda" msgid "&New" msgstr "&Nový" msgid "New" msgstr "Nový" msgid "&No" msgstr "&Nie" msgid "No" msgstr "Nie" msgid "&OK" msgstr "&OK" msgid "Open…" msgstr "Otvoriť…" msgid "&Open..." msgstr "&Otvoriť..." msgid "Open..." msgstr "Otvoriť..." msgid "&Paste" msgstr "&Vložiť" msgid "Paste" msgstr "Vložiť" msgid "Preferences" msgstr "Predvoľby" msgid "&Redo" msgstr "&Vpred" msgid "Refresh" msgstr "Obnoviť" msgid "&Save as" msgstr "&Uložiť ako" msgid "Save as" msgstr "Uložiť ako" msgid "Select &All" msgstr "Vybrať &všetko" msgid "Select All" msgstr "Vybrať všetko" msgid "&Undo" msgstr "&Späť" msgid "&Yes" msgstr "&Áno" msgid "Yes" msgstr "Áno" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "↑" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "↓" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "←" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "→" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "shift" poedit-3.5/locales/hu.po0000644000175100001770000020440714664354153012211 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "Ezen értesítő üzenet elrejtése" msgid "Don’t Show Again" msgstr "Ne mutassa újra" msgid "Don’t show again" msgstr "Ne mutassa újra" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(Új: %i, elavult: %i)" msgid "Collecting source files…" msgstr "Forrásfájlok összegyűjtése…" msgid "Extracting translatable strings…" msgstr "Lefordítható karakterláncok kinyerése…" msgid "Failed to load file with extracted translations." msgstr "Nem sikerült betölteni a fájlt kibontott fordításokkal." msgid "Merging differences…" msgstr "Eltérések összefésülése…" msgid "Updating translations" msgstr "Fordítások frissítése" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "A(z) „%s” fájl nem nyitható meg." msgid "Invalid file" msgstr "Érvénytelen fájl" #, c-format msgid "Malformed header: “%s”" msgstr "Hibás fejléc: „%s”" msgid "PO Translation Files" msgstr "PO fordítási fájlok" msgid "POT Translation Templates" msgstr "POT fordítási sablonok" msgid "XLIFF Translation Files" msgstr "XLIFF fordítási fájlok" msgid "JSON Translation Files" msgstr "JSON fordítási fájlok" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "Flutter fordítási fájlok" msgid "All Translation Files" msgstr "Minden fordítási fájl" msgid "The file is in a format not recognized by Poedit." msgstr "A fájl formátumát a Poedit nem ismeri fel." 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." #, 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" #, 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." #, c-format msgid "Couldn’t save file %s." msgstr "A(z) %s fájl mentése nem sikerült." msgid "Screenshots:" msgstr "Képernyőképek:" #, 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." #, c-format msgid "Line %d of file “%s” is corrupted (not valid %s data)." msgstr "%d sor a “%s” fájlban sérült (nem érvényes %s adat)." 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" msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" "Sérült katalógus fájl: többes számú msgstr van használva msgid_plural nélkül" 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." 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 közben. Eredményeként néhány adat " "hiányozhat vagy megsérülhetett." 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)." #, 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." msgid "Error saving file" msgstr "Hiba a fájl mentése során" #, c-format msgid "“%s” is not a valid POT file." msgstr "A(z) „%s” nem érvényes POT fájl." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Hiba az XLIFF-fájl betöltése során: %s" #, 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 msgid "Broken markup in translation string." msgstr "Hibás jelölés a fordítás szövegében." msgid "(Use default language)" msgstr "(Alapértelmezett nyelv használata)" msgid "Language selection" msgstr "Nyelvválasztás" msgid "Select your preferred language" msgstr "Válassza ki a kívánt nyelvet" msgid "You must restart Poedit for this change to take effect." msgstr "Újra kell indítania a Poeditet a módosítás életbe léptetéséhez." msgid "Add Account" msgstr "Fiók hozzáadása" msgid "Add account" msgstr "Fiók hozzáadása" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "Bővebben a %s szolgáltatásról" 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." msgid "How does cloud sync work?" msgstr "Hogyan működik a felhős szinkronizálás?" msgid "Account" msgstr "Fiók" msgid "(not signed in)" msgstr "(nincs bejelentkezve)" msgid "File" msgstr "Fájl" msgid "Open cloud translation" msgstr "Felhős fordítás megnyitása" msgid "Manage accounts" msgstr "Fiókok kezelése" msgid "Project:" msgstr "Projekt:" msgid "Language:" msgstr "Nyelv:" msgid "Sign in to Cloud Account" msgstr "Bejelentkezés egy felhős fiókba" msgid "Sign in to cloud account" msgstr "Bejelentkezés egy felhős fiókba" msgid "No translation projects listed in your account." msgstr "Nem szerepel fordítási projekt a fiókjában." 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" #, c-format msgid "Sign in to %s" msgstr "Bejelentkezés ide: %s" msgid "Syncing" msgstr "Szinkronizálás" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, 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. #, c-format msgid "Uploading translations to %s failed." msgstr "A fordítások feltöltése ide sikertelen: %s." msgid "Syncing error" msgstr "Szinkronizálási hiba" msgid "Add" msgstr "Hozzáadás" msgid "Unknown Crowdin error." msgstr "Ismeretlen Crowdin hiba." msgid "Not authorized, please sign in again." msgstr "Nem engedélyezett, kérjük jelentkezzen be újra." msgid "Downloading translations is disabled in this project." msgstr "A fordítások letöltése ebben a projektben le van tiltva." msgid "Sign In" msgstr "Bejelentkezés" msgid "Sign in" msgstr "Bejelentkezés" msgid "Sign Out" msgstr "Kijelentkezés" msgid "Sign out" msgstr "Kijelentkezés" msgid "Learn more about Crowdin" msgstr "Tudjon meg többet a Crowdinról" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" "A Crowdin egy online honosításkezelő platform és kollaboratív fordítási " "eszköz." msgid "Waiting for authentication…" msgstr "Várakozás a hitelesítésre…" msgid "Updating user information…" msgstr "Felhasználói adatok frissítése…" msgid "Sign in to Crowdin" msgstr "Bejelentkezés a Crowdinra" msgid "Syncing with Crowdin failed." msgstr "Nem sikerült szinkronizálni a Crowdinnel." msgid "Crowdin error" msgstr "Crowdin hiba" msgid "Uploading translations…" msgstr "Fordítások feltöltése…" msgid "&Copy" msgstr "&Másolás" msgid "Learn more" msgstr "Tudjon meg többet" msgid "&Help" msgstr "&Súgó" msgid "MO files can’t be directly edited in Poedit." msgstr "Az MO fájlok nem szerkeszthetők közvetlenül a Poeditben." msgid "Error opening file" msgstr "Hiba a fájl megnyitása során" 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." msgid "don’t delete temporary files (for debugging)" msgstr "ne törölje az ideiglenes fájlokat (hibakereséshez)" msgid "handle a poedit:// URI" msgstr "egy poedit:// URI kezelése" msgid "go to item at given line number" msgstr "ugrás a tételhez a megadott sorszámnál" msgid "Failed to communicate with Poedit process." msgstr "Nem sikerült kommunikálni a Poedit folyamattal." #, c-format msgid "Unhandled exception occurred: %s" msgstr "Nem kezelt kivétel történt: %s" msgid "Select translation template" msgstr "Fordítási sablon kiválasztása" msgid "Select translation file" msgstr "Fordítási fájl kiválasztása" msgid "Poedit is an easy to use translation editor." msgstr "A Poedit egy könnyen használható fordítás szerkesztő." 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." #, c-format msgid "File “%s” is not a translation file." msgstr "A(z) „%s” fájl nem fordítási fájl." #, c-format msgid "File “%s” doesn’t exist." msgstr "A(z) „%s” fájl nem létezik." 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". #, 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." msgid "Install" msgstr "Telepítés" #, c-format msgid "The file “%s” has been changed by another application." msgstr "“%s” fájlt egy másik alkalmazás megváltoztatta." msgid "Reload file" msgstr "Fájl újratöltése" 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." msgid "Ignore" msgstr "Mellőzés" msgid "Reload File" msgstr "Fájl újratöltése" msgid "The file has been modified. Do you want to save changes?" msgstr "A fájl megváltozott. Szeretné menteni a változásokat?" msgid "Save changes" msgstr "Változások mentése" msgid "Your changes will be lost if you don’t save them." msgstr "A változtatások elvesznek, ha nem menti azokat." msgid "Save" msgstr "Mentés" msgid "Do&n’t save" msgstr "Ni&ncs mentés" msgid "Don’t Save" msgstr "Nincs mentés" 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." msgid "Cancel" msgstr "Mégse" msgid "Save Anyway" msgstr "Mentés mindenképp" msgid "Save anyway" msgstr "Mentés mindenképp" msgid "Save as…" msgstr "Mentés másként…" msgid "Compile to…" msgstr "Lefordítás…" msgid "Compiled Translation Files" msgstr "Lefordított fordítási fájlok" msgid "Export to HTML…" msgstr "" msgid "HTML Files" msgstr "HTML fájlok" #, c-format msgid "In: %s" msgstr "Ebben: %s" msgid "Source code not available." msgstr "Nem áll rendelkezésre forráskód." msgid "Updating failed" msgstr "Sikertelen frissítés" 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." msgid "Permission denied." msgstr "Engedély megtagadva." 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. 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. 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." msgid "Translation entries in the file are probably incorrect." msgstr "A fájl fordítási bejegyzései valószínűleg helytelenek." msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "" "A fájl frissítése meghiúsult. Részletekért kattintson a 'Részletek >>' " "gombra." msgid "Open translation template" msgstr "Fordítási sablon megnyitása" #, 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." msgid "Validation results" msgstr "Érvényesítés eredménye" 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." msgid "The file was saved safely." msgstr "A fájl biztonságosan el lett mentve" 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." 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." 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." 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." msgid "No problems with the translation found." msgstr "A fordítással nincsenek problémák." #, 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." msgid "The translation is ready for use." msgstr "A fordítás használatra kész." #, 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." 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." msgid "Language of the translation isn’t set." msgstr "A fordítás nyelve nincs beállítva." msgid "Set Language" msgstr "Nyelv kiválasztása" 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)." 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." msgid "Language of the translation is the same as source language." msgstr "A fordítás nyelve megegyezik a forrásnyelvvel." msgid "Fix Language" msgstr "Nyelv kijavítása" msgid "Fix language" msgstr "Nyelv kijavítása" 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." 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" msgid "Required header Plural-Forms is missing." msgstr "A szükséges Plural-Forms fejléc hiányzik." #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Szintaktikai hiba a Plural-Forms fejlécben („%s”)." msgid "Fix the Header" msgstr "Fejléc javítása" 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". #, 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.")" msgid "Review" msgstr "Felülvizsgálat" msgid "Would you like to use English for source text?" msgstr "Szeretné az angolt használni forrásszövegként?" #, 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" msgid "Load English" msgstr "Angol betöltése" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Lefordítva: %d/%d (%d%%)" #, c-format msgid "Remaining: %d" msgstr "Maradt: %d" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d hiba" msgstr[1] "%d hiba" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d bejegyzés" msgstr[1] "%d bejegyzés" msgid " (unsaved)" msgstr " (nincs mentve)" msgid " (modified)" msgstr " (módosítva)" #, c-format msgid "Failed to update translation memory: %s" msgstr "Nem sikerült frissíteni a fordítási memóriát: %s" msgid "Remove same-as-source translations" msgstr "" msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" msgid "Keep" msgstr "Megtartás" msgid "Remove" msgstr "" msgid "Purge deleted translations" msgstr "Törölt fordítások tisztítása" 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?" 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." msgid "Purge" msgstr "Tisztítás" msgid "Copy from source text" msgstr "Másolás a forrásszövegből" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "Fordítás törlése" msgid "Clear Translation" msgstr "Fordítás törlése" msgid "Edit comment" msgstr "Megjegyzés szerkesztése" msgid "Edit Comment" msgstr "Megjegyzés szerkesztése" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "Kód előfordulásai" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "Kód előfordulásai" msgid "Hide Sidebar" msgstr "Oldalsáv elrejtése" msgid "Show Sidebar" msgstr "Oldalsáv megjelenítése" msgid "Hide Status Bar" msgstr "Állapotsor elrejtése" msgid "Show Status Bar" msgstr "Állapotsor megjelenítése" msgid "String length in characters: translation | source" msgstr "Karakterlánc hossza: fordítás | forrás" msgid "String length in characters" msgstr "Karakterlánc hossza" msgid "Source text" msgstr "Forrásszöveg" msgid "Singular" msgstr "Egyes szám" msgid "Plural" msgstr "Többes szám" msgid "Translation" msgstr "Fordítás" msgid "Pre-translated" msgstr "Előfordított" 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. msgid "Needs work" msgstr "Munkát igényel" msgid "" "POT files are only templates and don’t contain any translations themselves.\n" "To make a translation, create a new PO file based on the template." msgstr "" "A POT fájl csak egy sablon és nem tartalmaz fordításokat.\n" "Fordítás készítéséhez hozzon létre egy új PO fájlt a sablon alapján." msgid "Create new translation" msgstr "Új fordítási projekt létrehozása" 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 msgid "Source text ID" msgstr "Forrásszöveg-azonosító" msgid "Everything" msgstr "Minden" #, c-format msgid "Form %i" msgstr "%i. alak" #, c-format msgid "Form %i (unused)" msgstr "Form %i (nem használt)" msgid "Zero" msgstr "Nulla" msgid "One" msgstr "Egy" msgid "Two" msgstr "Kettő" msgid "Other" msgstr "Egyéb" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, 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 #, c-format msgid "String identifier: %s" msgstr "Karakterláncazonosító: %s" #, 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." #, c-format msgid "%s format" msgstr "%s formátum" #, c-format msgid "Translation — %s" msgstr "Fordítás — %s" msgid "ID" msgstr "Azonosító" #, c-format msgid "Source text — %s" msgstr "Forrásszöveg – %s" msgid "unknown language" msgstr "ismeretlen nyelv" #, c-format msgid "Network error: %s (%d)" msgstr "Hálózati hiba: %s (%d)" msgid "Unknown error" msgstr "Ismeretlen hiba" #, c-format msgid "Failed command: %s" msgstr "Sikertelen parancs: %s" msgid "Failed to merge gettext catalogs." msgstr "A gettext katalógusok egyesítése meghiúsult." msgid "Open in Editor" msgstr "Megnyitás a szerkesztőben" msgid "Open in editor" msgstr "Megnyitás a szerkesztőben" 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." msgid "No usage information" msgstr "Nincs használati információ" #, 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" msgid "Source code not found" msgstr "Forráskód nem található" 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." msgid "File cannot be opened" msgstr "A fájl nem nyitható meg" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "A Poedit nem tudja megnyitni ezt a fájlt: “%s”." msgid "Find" msgstr "Keresés" msgid "Replace" msgstr "Csere" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "Beállítások" msgid "Ignore case" msgstr "Nem kis-nagybetű érzékeny" msgid "Wrap around" msgstr "Körkörös keresés" msgid "Whole words only" msgstr "Csak teljes szóra" msgid "Find in source texts" msgstr "Keresés a forrásszövegben" msgid "Find in translations" msgstr "Keresés a fordításban" msgid "Find in comments" msgstr "Keresés a megjegyzésekben" msgid "Close" msgstr "Bezárás" msgid "Replace &All" msgstr "Össz&es cseréje" msgid "Replace &all" msgstr "Össz&es cseréje" msgid "&Replace" msgstr "Cse&re" msgid "< &Previous" msgstr "< &Előző" msgid "&Next >" msgstr "&Következő >" msgid "String to find" msgstr "Keresendő karakterlánc" msgid "Replacement string" msgstr "Behelyettesítendő karakterlánc" #, c-format msgid "Cannot execute program: %s" msgstr "A programot nem lehet futtatni: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "Nyelv nyeve vagy kódja" msgid "Translation Language" msgstr "Fordítás nyelve" msgid "Language of the translation:" msgstr "A fordítás nyelve:" msgid "All strings" msgstr "Összes karakterlánc" msgid "Couldn’t download Localazy project details." msgstr "Nem sikerült letölteni a Localazy projekt részleteit." 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." msgid "Projects" msgstr "Projektek" msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "A Localaz 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." msgid "Add Project" msgstr "Projekt hozzáadása" msgid "Add project" msgstr "Projekt hozzáadása" msgid "Poedit - Catalogs manager" msgstr "Poedit – Katalóguskezelő" msgid "Edit…" msgstr "Szerkesztés…" msgid "Create new translations project" msgstr "Új fordítási projekt létrehozása" msgid "Delete the project" msgstr "Projekt törlése" msgid "Edit the project" msgstr "Projekt szerkesztése" msgid "Update all" msgstr "Összes frissítése" msgid "Update all catalogs in the project" msgstr "A projekt összes katalógusának frissítése" msgid "Total" msgstr "Összes" msgid "Untrans" msgstr "Lefordítatlan" msgctxt "column/row header" msgid "Needs Work" msgstr "Munkát igényel" msgid "Errors" msgstr "Hibák" msgid "Last modified" msgstr "Utoljára módosítva" msgid "Select directory" msgstr "Válassza ki a könyvtárat" msgid "Directories:" msgstr "Könyvtárak:" msgid "" msgstr "" #, c-format msgid "Do you want to delete project “%s”?" msgstr "Biztos, hogy törli ezt a projektet: „%s”?" msgid "Delete project" msgstr "Projekt törlése" 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." msgid "Confirmation" msgstr "Megerősítés" msgid "Update all catalogs in this project?" msgstr "A projekt összes katalógusának frissítése?" 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." msgid "Check for Updates…" msgstr "Frissítések keresése…" msgid "Catalogs Manager" msgstr "Katalóguskezelő" msgid "&Preferences…" msgstr "&Beállítások…" msgid "&Edit" msgstr "Sz&erkesztés" msgid "Undo" msgstr "Visszavonás" msgid "Redo" msgstr "Mégis" msgid "Paste and Match Style" msgstr "Beillesztés és stílus egyeztetése" msgid "Delete" msgstr "Törlés" msgid "Spelling and Grammar" msgstr "Helyesírás és nyelvhelyesség" msgid "Show Spelling and Grammar" msgstr "Helyesírás és nyelvhelyesség megjelenítése" msgid "Check Document Now" msgstr "Dokumentum ellenőrzése most" msgid "Check Spelling While Typing" msgstr "Helyesírás-ellenőrzés beíráskor" msgid "Check Grammar With Spelling" msgstr "Nyelvhelyesség és helyesírás ellenőrzése" msgid "Correct Spelling Automatically" msgstr "Automatikus helyesírás-javítás" msgid "Substitutions" msgstr "Cserejavaslatok" msgid "Show Substitutions" msgstr "Cserejavaslatok megjelenítése" msgid "Smart Copy/Paste" msgstr "Intelligens másolás/beillesztés" msgid "Smart Quotes" msgstr "Intelligens idézőjelek" msgid "Smart Dashes" msgstr "Intelligens kötőjelek" msgid "Smart Links" msgstr "Intelligens hivatkozások" msgid "Text Replacement" msgstr "Szöveg csere" msgid "Transformations" msgstr "Átalakítások" msgid "Make Upper Case" msgstr "Nagybetűvel" msgid "Make Lower Case" msgstr "Kisbetűvel" msgid "Capitalize" msgstr "Nagy kezdőbetű" msgid "Speech" msgstr "Beszéd" msgid "Start Speaking" msgstr "Beszéd kezdése" msgid "Stop Speaking" msgstr "Beszéd leállítása" msgid "&View" msgstr "&Nézet" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item 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 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 msgid "Enter Full Screen" msgstr "Váltás teljes képernyőre" msgid "Window" msgstr "Ablak" msgid "Minimize" msgstr "Minimalizálás" msgid "Zoom" msgstr "Nagyítás" msgid "Welcome to Poedit" msgstr "Üdvözöljük a Poeditben" msgid "Bring All to Front" msgstr "Összes előrehozása" msgid "Information about the translator" msgstr "Információk a fordítóról" msgid "Name:" msgstr "Név:" msgid "Your Name" msgstr "Az Ön neve" msgid "Email:" msgstr "E-mail:" msgid "you@example.com" msgstr "nev@example.com" 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." msgid "Editing" msgstr "Szerkesztés" msgid "Automatically compile MO file when saving" msgstr "MO fájl automatikus létrehozása mentéskor" msgid "Show summary after updating files" msgstr "Összegzés megjelenítése a fájlok frissítése után" msgid "Check spelling" msgstr "Helyesírás-ellenőrzés" msgid "Always change focus to text input field" msgstr "Mindig a beviteli mező legyen az aktív" 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." msgid "Appearance" msgstr "Megjelenés" msgid "Use custom list font:" msgstr "Egyéni lista betűtípus használata:" msgid "Use custom text fields font:" msgstr "Egyéni szövegmező betűtípus használata:" 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 msgid "(requires Windows 8 or newer)" msgstr "(Windows 8 vagy újabb szükséges)" msgid "General" msgstr "Általános" msgid "Use translation memory" msgstr "Fordítási memória használata" msgid "Manage…" msgstr "Kezelés…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "Forrásokból frissítésekor" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "fuzzy megfelelő a fájlon belül" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "előfordítás FM-ból" 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." msgid "Stored translations:" msgstr "Tárolt fordítások:" msgid "Database size on disk:" msgstr "Adatbázis méret a lemezen:" msgid "Import Translation Files…" msgstr "Fordítási fájlok importálása…" msgid "Import translation files…" msgstr "Fordítási fájlok importálása…" msgid "Import From TMX…" msgstr "Importálás TMX fájlból…" msgid "Import from TMX…" msgstr "Importálás TMX fájlból…" msgid "Export To TMX…" msgstr "Exportálás TMX fájlba…" 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). msgid "Reset" msgstr "Törlés" msgid "Select translation files to import" msgstr "Importálandó fordítás fájlok kiválasztása" msgid "Translation Memory" msgstr "Fordítási memória" msgid "Importing translations…" msgstr "Fordítások importálása…" #, c-format msgid "Error loading translation file “%s”." msgstr "Hiba “%s” fordítási fájl betöltésekor." msgid "Finalizing…" msgstr "Befejezés…" msgid "Select TMX files to import" msgstr "Válasszon importálandó TMX fájlt" msgid "TMX Files" msgstr "TMX fájlok" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "Nem sikerült a fordítási memória importálása ebből: „%s”." msgid "Import error" msgstr "Importálási hiba" msgid "Export as…" msgstr "Exportálás másként…" msgid "Exporting translations…" msgstr "Fordítások exportálása…" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "Nem sikerült a fordítási memória exportálása ide: „%s”." msgid "Export error" msgstr "Exportálási hiba" msgid "Reset translation memory" msgstr "Fordítási memória törlése" msgid "Are you sure you want to reset the translation memory?" msgstr "Biztos, hogy törli a fordítási memóriát?" 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. msgid "TM" msgstr "FM" 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." msgid "Custom Extractors:" msgstr "Egyéni kivonatolók:" msgid "Custom extractors:" msgstr "Egyéni kivonatolók:" msgid "GNU gettext" msgstr "GNU gettext" 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)." msgid "Delete extractor" msgstr "Kivonatoló törlése" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "Biztos, hogy törli a(z) „%s” kivonatolót?" msgid "Extractors" msgstr "Kivonatolók" msgid "Accounts" msgstr "Fiókok" msgid "Automatically check for updates" msgstr "Frissítések automatikus keresése" msgid "Include beta versions" msgstr "Beleértve a béta verziókat is." 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." msgid "Updates" msgstr "Frissítések" 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." msgid "Line endings:" msgstr "Sorvégek:" msgid "Unix (recommended)" msgstr "Unix (javasolt)" msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "Szövegszélesség:" msgid "Preserve formatting of existing files" msgstr "A meglévő fájlok formázásának megőrzése" msgid "Advanced" msgstr "Speciális" msgid "Settings" msgstr "" msgid "Preparing strings…" msgstr "Karakterláncok előkészítése…" msgid "Pre-translating from translation memory…" msgstr "Előfordítás fordítási memóriából…" #, 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" msgid "Pre-translating…" msgstr "Előfordítás…" 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. msgid "Pre-translate" msgstr "Előfordítás" 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." msgid "Cannot pre-translate from unknown language." msgstr "Ismeretlen nyelvről nem lehet előfordítani." 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." msgid "Only fill in exact matches" msgstr "Kitöltés csak pontos egyezés esetén" 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." msgid "Don’t mark exact matches as needing work" msgstr "Ne jelölje meg munkát igénylőként a pontosan egyezőket" 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." 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." #, 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." 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." msgid "No entries could be pre-translated." msgstr "Egy bejegyzést sem lehet előfordítani." 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." msgid "Cancelling…" msgstr "Megszakítás…" msgid "Drag Folders or Files Here" msgstr "Húzza ide a mappákat vagy fájlokat" msgid "Drag folders or files here" msgstr "Húzza ide a mappákat vagy fájlokat" msgid "Add Folders…" msgstr "Mappák hozzáadása…" msgid "Add folders…" msgstr "Mappák hozzáadása…" msgid "Add Files…" msgstr "Fájlok hozzáadása…" msgid "Add files…" msgstr "Fájlok hozzáadása…" msgid "Add Wildcard…" msgstr "Helyettesítő karakter hozzáadása…" 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) 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" msgid "Show in Explorer" msgstr "Megnyitás az Intézőben" msgid "Show in Folder" msgstr "Megjelenítés mappában" msgid "Paths" msgstr "Útvonalak" msgid "Excluded paths" msgstr "Kizárt elérési utak" msgid "Advanced extraction settings" msgstr "Speciális kivonatoló beállítások" msgid "Extract notes for translators from:" msgstr "Fordítóknak szóló jegyzetek kinyerése:" msgid "Comments prefixed with:" msgstr "Megjegyzések előtaggal:" msgid "All comments" msgstr "Összes megjegyzés" msgid "Additional xgettext flags:" msgstr "Kiegészítő xgettext jelzők:" msgid "Additional keywords" msgstr "További kulcsszavak" msgid "Name of the project the translation is for" msgstr "A projekt megnevezése, amelyhez a fordítás tartozik" msgid "Team name and email address or URL" msgstr "Csapat neve és e-mail-címe vagy webcíme" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "például nplurals=2; plural=(n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (javasolt)" 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ő." msgid "Placeholders correctness" msgstr "Helykitöltők helyessége" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "A(z) „%s” helykitöltő hiányzik a fordításból." #, c-format msgid "Superfluous placeholder “%s” that isn’t in source text." msgstr "Felesleges „%s” helykitöltő, amely nem szerepel a forrásszövegben." msgid "Plural form translations" msgstr "Többes számú fordítások" msgid "Not all plural forms are translated." msgstr "Nincs az összes többes számú alak lefordítva." msgid "Inconsistent upper/lower case" msgstr "Inkonzisztens nagy- és kisbetűk" msgid "The translation should start as a sentence." msgstr "A fordítást mondatként kell kezdeni." msgid "The translation should start with a lowercase character." msgstr "A fordítást kisbetűvel kell kezdeni." msgid "Inconsistent whitespace" msgstr "Inkonzisztens szóköz" msgid "The translation doesn’t start with a space." msgstr "A fordítás nem szóközzel kezdődik." 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." msgid "The translation is missing a newline at the end." msgstr "A fordítás végén hiányzik egy sortörés." 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." msgid "The translation is missing a space at the end." msgstr "A fordítás végén hiányzik egy szóköz." 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." msgid "Punctuation checks" msgstr "Írásjelek ellenőrzése" #, c-format msgid "The translation should end with “%s”." msgstr "A fordítás végére „%s” kell." #, c-format msgid "The translation should not end with “%s”." msgstr "A fordítás végére nem kell „%s”." #, 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." msgid "Cloud" msgstr "Felhő" msgid "Clear Menu" msgstr "Menü törlése" msgid "Clear menu" msgstr "Menü törlése" msgid "Comment:" msgstr "Megjegyzés:" msgid "Update" msgstr "Frissítés" msgid "&Delete" msgstr "&Törlés" msgid "Delete the comment" msgstr "A megjegyzés törlése" msgid "Edit project" msgstr "Projekt szerkesztése" msgid "Project name:" msgstr "Projekt neve:" msgid "Browse" msgstr "Tallózás" msgid "Add directory to the list" msgstr "Könyvtár hozzáadása a listához" msgid "OK" msgstr "OK" msgid "&File" msgstr "&Fájl" msgid "&New…" msgstr "Ú&j…" msgid "New from &POT/PO file…" msgstr "Új &POT/PO fájlból…" msgid "New From &POT/PO File…" msgstr "Új &POT/PO fájlból…" msgid "&Open…" msgstr "&Megnyitás…" msgid "Open Recent" msgstr "Legutóbbi megnyitása" msgid "Open recent" msgstr "Legutóbbi megnyitása" msgid "Open cloud translation…" msgstr "Felhős fordítás megnyitása…" msgid "Open Cloud Translation…" msgstr "Felhős fordítás megnyitása…" msgid "&Start window" msgstr "&Kezdő ablak" msgid "&Start Window" msgstr "&Kezdő ablak" msgid "Catalogs &manager" msgstr "&Katalóguskezelő" msgid "Catalogs &Manager" msgstr "&Katalóguskezelő" msgid "&Close" msgstr "Be&zárás" msgid "&Save" msgstr "Menté&s" msgid "Save &as…" msgstr "Mentés &másként…" msgid "Save &As…" msgstr "Mentés &másként…" msgid "Compile to MO…" msgstr "Fordítás MO-ra…" msgid "E&xport to HTML…" msgstr "" msgid "Check for updates…" msgstr "Frissítések ellenőrzése…" msgid "Settings…" msgstr "Beállítások…" msgid "&Preferences" msgstr "&Beállítások" msgid "E&xit" msgstr "K&ilépés" msgid "Quit" msgstr "Kilépés" msgid "Copy from singular" msgstr "Másolás az egyes számból" msgid "Copy From Singular" msgstr "Másolás az egyes számból" msgid "Translation needs &work" msgstr "Fordítási munkát i&gényel" msgid "Translation Needs &Work" msgstr "Fordítási munkát i&gényel" msgid "Edit &comment" msgstr "&Megjegyzés szerkesztése" msgid "Edit &Comment" msgstr "&Megjegyzés szerkesztése" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "Javaslatok" msgid "&Find…" msgstr "&Keresés…" msgid "Replace…" msgstr "Csere…" msgid "Find next" msgstr "Következő keresése" msgid "Find previous" msgstr "Előző keresése" msgid "Find and Replace…" msgstr "Keresés és csere…" msgid "Find Next" msgstr "Következő keresése" msgid "Find Previous" msgstr "Előző keresése" msgid "Show string &ID" msgstr "Karakterlánc-azonosító megjelenítése" msgid "Show String &ID" msgstr "Karakterlánc-&azonosító megjelenítése" msgid "Show warnings" msgstr "Figyelmeztetések megjelenítése" msgid "Show Warnings" msgstr "Figyelmeztetések megjelenítése" msgid "Sort by &file order" msgstr "Rendezés &fájlsorrend szerint" msgid "Sort by &File Order" msgstr "Rendezés &fájlsorrend szerint" msgid "Sort by &source" msgstr "Rendezés f&orrás szerint" msgid "Sort by &Source" msgstr "Rendezés f&orrás szerint" msgid "Sort by &translation" msgstr "Rendezés for&dítás szerint" msgid "Sort by &Translation" msgstr "Rendezés for&dítás szerint" msgid "&Group by context" msgstr "Cs&oportosítás környezet szerint" msgid "&Group By Context" msgstr "Cs&oportosítás környezet szerint" msgid "Entries with errors first" msgstr "Hibás bejegyzések elöl" msgid "Entries with Errors First" msgstr "Hibás bejegyzések elöl" msgid "&Untranslated entries first" msgstr "&Lefordítatlan bejegyzések előre" msgid "&Untranslated Entries First" msgstr "&Lefordítatlan bejegyzések előre" msgid "&Show code occurrences" msgstr "&Kódelőfordulások megjelenítése" msgid "&Show Code Occurrences" msgstr "&Kódelőfordulások megjelenítése" msgid "Show sidebar" msgstr "Oldalsáv megjelenítése" msgid "Show status bar" msgstr "Állapotsor megjelenítése" msgid "&Translation" msgstr "&Fordítás" msgid "&Update from source code" msgstr "Frissítés a &forráskódból" msgid "&Update from Source Code" msgstr "Frissítés a &forráskódból" msgid "Update from &POT file…" msgstr "Frissítés &POT fájlból…" msgid "Update from &POT File…" msgstr "Frissítés &POT fájlból…" msgid "Sync with Crowdin" msgstr "Szinkronizáció a Crowdinnel" msgid "Pre-&translate…" msgstr "&Előfordítás…" msgid "&Validate translations" msgstr "Fordítások ér&vényesítése" msgid "&Validate Translations" msgstr "Fordítások ér&vényesítése" msgid "Remove Same-as-Source Translations" msgstr "" msgid "&Purge deleted translations" msgstr "Törölt fordítások &tisztítása" msgid "&Purge Deleted Translations" msgstr "Törölt fordítások &végleges törlése" msgid "&Properties…" msgstr "&Tulajdonságok…" msgid "&Go" msgstr "&Ugrás" msgid "&Done and next" msgstr "&Kész és következő" msgid "&Done and Next" msgstr "&Kész és következő" msgid "Previously edited" msgstr "Korábban szerkesztve" msgid "Previously Edited" msgstr "Korábban szerkesztve" msgid "&Previous translation" msgstr "&Előző fordítás" msgid "&Previous Translation" msgstr "&Előző fordítás" msgid "&Next translation" msgstr "&Következő fordítás" msgid "&Next Translation" msgstr "&Következő fordítás" msgid "P&revious unfinished" msgstr "El&őző befejezetlen" msgid "P&revious Unfinished" msgstr "El&őző befejezetlen" msgid "Ne&xt unfinished" msgstr "Következő &befejezetlen" msgid "Ne&xt Unfinished" msgstr "Következő &befejezetlen" msgid "Previous plural form" msgstr "Előző többes számú alak" msgid "Previous Plural Form" msgstr "Előző többes számú alak" msgid "Next plural form" msgstr "Következő többes számú alak" msgid "Next Plural Form" msgstr "Következő többes számú alak" msgid "&Online help" msgstr "&Online súgó" msgid "&Online Help" msgstr "&Online súgó" msgid "&GNU gettext manual" msgstr "&GNU gettext kézikönyv" msgid "&GNU gettext Manual" msgstr "&GNU gettext kézikönyv" msgid "&About Poedit" msgstr "A Poedit &névjegye" msgid "&About" msgstr "&Névjegy" msgid "Extractor setup" msgstr "Kivonatoló beállítása" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Kiterjesztések listája pontosvesszővel elválasztva (pl. *.cpp;*.h):" msgid "Invocation:" msgstr "Végrehajtás:" msgid "Command to extract translations:" msgstr "Fordításkinyerési parancs:" 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." msgid "An item in keywords list:" msgstr "Egy elem a kulcsszavak listájában:" 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." msgid "An item in input files list:" msgstr "Egy elem a bemeneti fájlok listájában:" #, 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." msgid "Source code charset:" msgstr "Forráskód karakterkódolás:" #, 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." msgid "Translation Properties" msgstr "Fordítás tulajdonságai" msgid "Project name and version:" msgstr "Projekt neve és verziószáma:" msgid "Language team:" msgstr "Nyelvi csapat:" msgid "Plural forms:" msgstr "Többes számú alakok:" msgid "Use default rules for this language" msgstr "Alapértelmezett szabályok használata ehhez a nyelvhez" msgid "Use custom expression" msgstr "Egyéni kifejezés használata" msgid "Learn about plural forms" msgstr "Tudjon meg többet a többes számú alakokról" msgid "Charset:" msgstr "Karakterkódolás:" msgid "Advanced Extraction Settings…" msgstr "Speciális kivonatolási beállítások…" msgid "Advanced extraction settings…" msgstr "Speciális kivonatolási beállítások…" msgid "Translation properties" msgstr "Fordítás tulajdonságai" msgid "Sources Paths" msgstr "Források útvonalai" msgid "Sources paths" msgstr "Források útvonalai" msgid "Extract text from source files in the following directories:" msgstr "Szövegek kinyerése a következő könyvtárakban lévő forrásfájlokból:" msgid "Base path:" msgstr "Alap útvonal:" msgid "Sources Keywords" msgstr "Források kulcsszavai" msgid "Sources keywords" msgstr "Források kulcsszavai" 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:" msgid "Also use default keywords for supported languages" msgstr "A támogatott nyelvek alapértelmezett kulcsszavai is használhatók" msgid "Learn about gettext keywords" msgstr "Tudjon meg többet a gettext kulcsszavakról" msgid "Update summary" msgstr "Frissítési összefoglaló" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" "Ezek a fájlból hiányzó szövegek voltak megtalálhatóak a forrásokban.\n" "A Poedit most hozzáadja őket a katalógushoz." msgid "New strings" msgstr "Új szövegek" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" "Ezek a szövegek már nem találhatóak meg a forrásokban.\n" "A Poedit most törli őket a fájlból." msgid "Obsolete strings" msgstr "Elavult szövegek" msgid "(0 new, 0 obsolete)" msgstr "(0 új, 0 elavult)" msgid "Open" msgstr "" msgid "Open file" msgstr "Fájl megnyitása" msgid "Save file" msgstr "Fájl mentése" msgid "Validate" msgstr "Érvényesítés" msgid "Check for errors in the translation" msgstr "Hibák keresése a fordításban" msgid "Update from code" msgstr "Frissítés a kódból" msgid "Update from Code" msgstr "Frissítés a kódból" msgid "Update from source code" msgstr "Frissítés a forráskódból" msgid "Sidebar" msgstr "Oldalsáv" msgid "Show or hide the sidebar" msgstr "Oldalsáv megjelenítése/elrejtése" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. msgid "Previous source text" msgstr "Előző forrásszöveg" 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ő." msgid "Notes for translators" msgstr "Megjegyzések a fordítóknak" msgid "Comment" msgstr "Megjegyzés" msgid "Add comment" msgstr "Hozzászólás" msgid "Add Comment" msgstr "Hozzászólás" msgid "Delete From Translation Memory" msgstr "Törlés a fordítási memóriából" msgid "Delete from translation memory" msgstr "Törlés a fordítási memóriából" msgid "Translation suggestions" msgstr "Fordítási javaslatok" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). msgid "No matches found" msgstr "Nincs találat" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). msgid "No Matches Found" msgstr "Nincs találat" 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." 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." 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." msgid "The TMX file is malformed." msgstr "A TMX fájl formátuma hibás." msgid "No translations were found in the TMX file." msgstr "Nem található fordítás a TMX fájlban." #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "A fordítási memória adatbázis sérült: %s (%d)." #, c-format msgid "Translation memory error: %s (%d)." msgstr "Fordítási memória hiba: %s (%d)." msgid "Cannot create temporary directory." msgstr "Az ideiglenes fájlok könyvtárát nem lehet létrehozni." msgid "There are no translations. That’s unusual." msgstr "Nem léteznek fordítások. Ez szokatlan." msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "Translators typically use PO template files (POTs) prepared for them by the " "developer." msgstr "" "A Gettext rendszerben a fordítható bejegyzések nem adhatók hozzá kézzel, a " "kinyerésük a forráskódból\n" "automatikusan történik. Ily módon mindig naprakész és pontos lesz.\n" "A fordítók jellemzően a fejlesztők által számukra készített PO sablon " "fájlokat (POT) használják." msgid "(Learn more about GNU gettext)" msgstr "(Tudjon meg többet a GNU gettextről)" 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:" msgid "Update from POT" msgstr "Frissítés POT fájlból" msgid "Take translatable strings from an existing POT template." msgstr "Lefordítható karakterláncok átvétele egy már létező POT sablonból." 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:" msgid "Extract from sources" msgstr "Kinyerés forrásfájlokból" 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 #, c-format msgid "Version %s" msgstr "%s verzió" msgid "Create new" msgstr "Új készítése" msgid "Create new translation from POT template." msgstr "Új fordítás készítése POT sablonból." msgid "Browse files" msgstr "Fájlok böngészése" msgid "Open and edit translation files." msgstr "Fordítási fájl megnyitása és szerkesztése." msgid "Translate cloud project" msgstr "Felhős projekt fordítása" msgid "Collaborate with other people online." msgstr "Együttműködés más emberekkel online." msgid "Recent files" msgstr "Legutóbbi fájlok" msgid "Sync" msgstr "Szinkronizáció" 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") #, c-format msgid "About %s" msgstr "%s névjegye" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #, c-format msgid "%s Preferences" msgstr "%s beállításai" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "Szolgáltatások" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "%s elrejtése" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "Többi elrejtése" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "Összes megjelenítése" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "Kilépés a %sből" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "Beállítások…" msgid "Preferences..." msgstr "Beállítások..." #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "Legutóbbi" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "Gyakori" msgid "&Apply" msgstr "Alkalmaz" msgid "Apply" msgstr "Alkalmaz" msgid "&Back" msgstr "Vissza" msgid "Back" msgstr "Vissza" msgid "&Cancel" msgstr "Mégse" msgid "&Clear" msgstr "&Törlés" msgid "Clear" msgstr "Törlés" msgid "Copy" msgstr "Másolás" msgid "Cu&t" msgstr "&Kivágás" msgid "Cut" msgstr "Kivágás" msgid "Edit" msgstr "Szerkesztés" msgid "&Quit" msgstr "&Kilépés" msgid "Help" msgstr "Súgó" msgid "&New" msgstr "Ú&j" msgid "New" msgstr "Új" msgid "&No" msgstr "&Nem" msgid "No" msgstr "Nem" msgid "&OK" msgstr "&OK" msgid "Open…" msgstr "Megnyitás…" msgid "&Open..." msgstr "&Megnyitás…" msgid "Open..." msgstr "Megnyitás..." msgid "&Paste" msgstr "&Beillesztés" msgid "Paste" msgstr "Beillesztés" msgid "Preferences" msgstr "Beállítások" msgid "&Redo" msgstr "&Mégis" msgid "Refresh" msgstr "Frissítés" msgid "&Save as" msgstr "Mentés &másként" msgid "Save as" msgstr "Mentés másként" msgid "Select &All" msgstr "Min&den kijelölése" msgid "Select All" msgstr "Minden kijelölése" msgid "&Undo" msgstr "&Visszavonás" msgid "&Yes" msgstr "&Igen" msgid "Yes" msgstr "Igen" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "Fel" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "Le" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "Balra" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "Jobbra" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "shift" poedit-3.5/locales/gl.mo0000644000175100001770000015524114664354153012175 00000000000000qL)7 7 7&(7O7<c77J7g7 f8p8 88 888888888888899*9.9@9R9X9]9e9m9999 9 9999 9999:$:@:\:b:h:q:w::: : : ::::;.;G;^;u;{;;;;;; < <<<'<0< 4< @< L<Y< h<t< < << << <<<==&=F=c== = =1=='=>.> H>S>7Y>6>>)>? ?]"??<?D?$@:@ A@N@ U@"c@@ @@@@@@@A,AHA#]AAAA AA AAAAA% B3B NBoBwBBB BB/B CCC'C=CPCfC1CC CC)CD bEb Nb[bubbb b bbbb b cc!)c KcYcacicrc zccccc c c cccdd1dAdVdkdd e #e/e>eQe bepe eeKeee ff)f6D/D(t'@)h---6rS,L`@R2^Xh=*7 BpgE  ,BWKqA''<Vp"';-Dr  *.$,$Qv  Z"})!!0A3rr :B \h+ %CHF>`8/ h3s>CHLU6Z#!/ 3:Nj'yf)#}Rln/<BL3Kz3hm0l>xk\]p60NSs6 7 R;>wVgYq^UXP&P;8M`(?N6#7 r1T" { E!Um99d&01 =$ip(n]qHkD5_ Jt2Q!1*,ahi I-+g<f-_SCKVb4Wo,\( GZ+/`:D"qxztI=r4Bu[Uf8 B)Yk.$m/Fo+{Y8F[CN#yteJQPGEK~cu'9]&;AneAd _)%@ vHJ"M}Z>a:3Vpj5zcb,w<ey:v\O2hdjLoI$g[vrX*S74-a@WX^sW^GxQ  y|L~O.~T2 }ZR' O .'b5%i=?{!M* H|A|Cs`EDw@u%Flcj?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 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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd AccountAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add accountAdd 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 languagesAlt+Always 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 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 errorCtrl+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 no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownDownloading 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:EnterEnter 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 loading translation file “%s”.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export errorExport 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…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)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport from TMX…Import translation files…Importing translation memory from “%s” failed.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 CrowdinLeftLine %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 translations were found in the TMX file.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKObsolete stringsOneOnly 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 translation templateOpen...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 translationsQuitQuit %sReading file content failed with the following error: %sRecentRecent 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 FinderReviewRightSaveSave &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 languageServicesSet LanguageSet languageSettings…Shift+Show AllShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow summary after updating filesShow 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 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.These strings are no longer in the source code. Poedit will remove them from the file now.These strings were found in the sources but were not in the file. Poedit will add them to the file now.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 entries in the file are probably incorrect.Translation 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.UntransUpUpdateUpdate 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 the file failed. Click on 'Details >>' for details.Updating 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown 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: 2024-08-30 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 %s&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(0 novas, 0 obsoletas)(Saber máis sobre o GNU gettext)(Novas: %i, obsoletas: %i)(Usar idioma predeterminado)(cómpre Windows 8 ou posterior)< &AnteriorSobre %sContaContasEngadirEngadir ContaEngadir comentarioEngadir cartafoles…Engadir cartafoles…Engadir ProxectoEngadir comodín…Engadir contaEngadir 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 aceptadosAlt+Cambiar 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ónPecharAparició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 CrowdinCtrl+Cor&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 xa non se empregan?No&n gardarNon gardarNon mostrar novamenteNon marcar coincidencias exactas como dubidosasNon mostrar novamenteAbaixoDescargando 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:IntroModo 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.Produciuse un erro cargando o ficheiro da tradución «%s».Erro ao abrir o ficheiroProduciuse un erro ao gardar o ficheiroErro ao cargar o ficheiro XLIFF: %sErrosTodoRutas excluídasExportar como TMX…Exportar como…Erro de exportaciónExportar 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:Extraendo cadeas traducíbeis…Configuración do extractorExtractoresProduciuse un erro ao executar a orde: %sErro 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.Rematando…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)FrecuentesGNU gettextXeralFicheiros HTMLAxudaAgochar %sAgochar outrosAgochar barra lateralAgochar a barra de estadoOcultar esta mensaxe de notificaciónIDSe 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…Produciuse un erro na importaciónImportar de TMX…Importar os ficheiros da tradución…Produciuse un erro importando a memoria de tradución «%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 CrowdinEsquerdaA 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 rematarDubidosaDubidosaNunca 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 se atoparon traducións no ficheiro TMX.Non hai información do usoNon se traduciron todas as formas do plural.Acción non autorizada; accede de novo.Notas para os tradutoresAceptarCadeas obsoletasUnActive 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 recentesAbrir e editar os ficheiros de tradución.Abrir ficheiroAbrir no editorAbrir no editorAbrir recentesAbrir o modelo de traduciónAbrir...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írSaír do %sProduciuse un fallo lendo o contido do ficheiro co seguinte erro: %sRecentesFicheiros recentesRefacerActualizarRecargar o ficheiroRecargar o ficheiroPendente: %dSubstituí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 FinderRevisarDereitaGardarGard&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 preferidoServizosDefinir idiomaDefinir o idiomaPreferencias…Maiús+Mostrar todoMostrar 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 o resumo despois de actualizar os ficheirosMostrar avisosBarra lateralAccederSaírAccederIniciar sesión en %sAcceder a CrowdinSaí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: %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.Estas cadeas xa non están no código fonte. Poedit eliminaraas do ficheiro agora.Atopáronse estas cadeas nas fontes pero non no ficheiro. Poedit engadiraas agora ao ficheiro.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. Así, mantéñense actualizadas e precisas. Quen traduce, normalmente emprega os 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 entradas da tradución que hai no ficheiro son probabelmente incorrectas.A 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.Sen traducirArribaActualizarActualizar 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ónProduciuse un erro ao actualizar o ficheiro. Prema en «Detalles>>» para ver os detalles.Actualizando as traduciónsActualizando a información do usuario…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…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.CeroZoomaltDubidosactrlnon eliminar os ficheiros temporais (para depuración)p. ex., nplurals=2; plural=(n > 1);coincidencia dubidosa no ficheiroir ao elemento dun número de liña determinadomanexar un URI de poeditpre-traducir da MTmaiúsidioma descoñecidoversión incompatíbel (%s)ti@exemplo.com«%s» non é un ficheiro POT correcto.poedit-3.5/locales/sr.mo0000644000175100001770000022163014664354143012212 00000000000000|+: : :&:?:<S::J:g: V;`; o;y; ;;;;;;;;;;;;;;<<<0<B<H<M<U<]<o<<< < <<<< <<<<==0=L=R=X=a=g=p== = = ====>>7>N>e>k>p>>>>>> ? ???'?0? 4? @? L?Y? h?t? ? ?? ?? ???@@&@F@c@@ @ @1@@'@A.A HASA7YA6AA)AB B]"BB<BDB$C:C ACNCC C"CD+"D)ND xDDDDDDDDEE#4EXEmE|E EE EEEEEE%EF +FLFTF]FuF FF/F FkFXG]GpGGGG-G1G.H GHRH)iHH HYHI!I&I9ILIaIeI|IIIIIII;J CJ'PJ^xJLJ?$K dK rKK*KKK"K5K.LILdLjL}L L L L L LLLLLLLfMlMMuM(N?NRN"dNN NNN N NNN0N'OAO#VO<zO"OO OO*P03P!dP'PPPP(PTQ fQtQ yQ QQQQQ Q Q Q RR!R0RJRRRcR lRxR RRR R RRRRRRSz/TT TTT TT U2(U[UuU|UUU UU U U V!V&V;^D^Y^n^^^._4_J_=P__1__n_E[```;` ` aa@,amacb,#c,Pc}c cc2c*c ddwdj$e eeee%ee ff3fEfWf qffffffff8f g gg$g ,g 8g DgRg"Yg"|gg g gg g(ghhz'hhhhh h h h hh h i i i ,i 8iCi^ioi"iiii i ij jj$j -j:jTjdjtj j jjjj jjj!k *k8k@kHkQk Ykgkkkkkk k k kk ll.lBlRlgl|lmm 4m@mOmbm smm mmKmmn n%n:nMncn1nn n nn=ioo'p,p(>pgp op}p+pp p8p" q/q@qrCr8brrs8*t1ctRtctQLuu'u:ulvPv-vCwALwKw0w. x:x!x)x-y+Cy8oyCyuy,bzLz;z]{v{Z{gW|J|c }[n}o}:~7~m_[HN^Xp ف72("[~~łqDɃRVj o ȄЄӄ ڄ"$-F_p<Ѕ #$@eˆ#V cz ч. ;GPhHl5m7Y 3aω16;?\.a ͊ 1J!Z|zq'@1.  0> N Z hvƑ $$Di'' ϒ ے !> DQj ɓ $/9/i є## 0K ft++0ܕ0 />/n &+ٖ*'0!X5zƗݗ   <[x'Ҙ+9V'r$%;82;k& Κe oKt;3 0=QLc2S5 .EmtkFN#$ɟ K9`ge:h Ģ28*J;u=<@,%m% Ƥޤ, <"G"j4I¥6 CT3f 8ڦ[o~k#z2#Ѩ24(]]`A^$vIA'BΫ ԫ** 66 m*x==OobD"g}i"!MD";_BVB ܱ  'D`#| ϲ ݲ0!))Pȴ51OV ص 6WmUڶ+7#`[:'#2UVcDVU7.2$W+"J!m˻" 'Aa' (  +6F"^((Mӽ!$'9- 7V-pU$$XI?.!&H$Z %S2:Um CB=,W'ae2X'.+VC<!%*9 dJo$$ *%H]n ))*-F-tU?TCc5CF!)h % _,0.]E+.J"h".  '(2(["! ' b 1DR,}0H * o4J]DA)/%Y%en.&I1i1, .<k) 2 !Y7 **0 G;T; "[3>e3Lh0*8F(* %=D$Z5/1E c8$J]q...]o6~!, ::+u,:+ +5a0/Cs 737;3s &6]w"#-1L:" r)509Ej~/@eU;p7qE_RJ"'KAsRy0:`k[m(EBT,tFIC2?vRm 0wY-0)t_   ] ) k  U  p3J%~ ),"FBcE,3`#\1E$#+OB^.%(9<R_..M2l/(!J!B@<,})!,C=8/h448$] xK %#}(]G MW  c!l!s!w!!b!#!@!"7b"'"E"##(*#S#4c#45nCv#=ld B@Twa QjqO 91B)aT'ZSFQYu>"/VJZsG6*[ar`^;XyVb?' <IL:x%AMZ\W88O,*d0)i{J-yK|]:c%}oo0][-Pg6YS&r(\p@X(tM?iE=eD"OU|53 w  fj,#32H 4[ pk {qke;mpgl16U85:`, +Y^L9$qz2fGu(A7N4!d0DNt{F<x_+7vX)nKG+>&9m3 LeUIN Iy E"nsk/<W>PhrVvT]cQmuR$bjD !_@xEl%WK-_7MCwbz/|gcAB` zh~?SC^*tf=\h!H'P#RiF&;$H1~.2 RsJo}.} .~ (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd AccountAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add accountAdd 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 languagesAlt+Always 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 errorCrowdin is an online localization management platform and collaborative translation tool.Ctrl+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 againDownDownloading 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:EnterEnter 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 loading translation file “%s”.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export errorExport 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…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)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport from TMX…Import translation files…Importing translation memory from “%s” 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 CrowdinLeftLine %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 translations were found in the TMX file.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKObsolete stringsOneOnly 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 translation templateOpen...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 translationsQuitQuit %sReading file content failed with the following error: %sRecentRecent 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 FinderReviewRightSaveSave &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 languageServicesSet LanguageSet languageSettingsSettings…Shift+Show AllShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow summary after updating filesShow 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.These strings are no longer in the source code. Poedit will remove them from the file now.These strings were found in the sources but were not in the file. Poedit will add them to the file now.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 entries in the file are probably incorrect.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 errorUntransUpUpdateUpdate 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 the file failed. Click on 'Details >>' for details.Updating 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown 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: 2024-08-30 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 проблема у преводу.%i ред у датотеци „%s” није исправно учитан.%i реда у датотеци „%s” нису исправно учитана.%i редова у датотеци „%s” није исправно учитано.%s форматПодешавања %s-а%s формат&О програму&О Poedit-у&Примени&Назад&Откажи&Обриши&Затвори&КопирајИз&бриши&Заврши и настави&Заврши и настави&Уређивање&ДатотекаП&ронађи…П&риручник за GNU gettextП&риручник за GNU gettext&Навигација&Групиши по контексту&Групиши по контекстуПо&моћ&Ново&Ново…&Следеће >&Следећи превод&Следећи превод&Не&У редуО&нлајн помоћО&нлајн помоћ&Отвори…&Отвори…&Налепи&Подешавања&Подешавања…&Претходни превод&Претходни преводС&војства…&Очисти избрисане преводе&Очисти избрисане преводе&Изађи&ПоновиЗа&мени&Сачувај&Сачувај каоПојављивања у &кодуПојављивања у &коду&Уводни прозор&Уводни прозорП&ревод&ОпозовиПрво &непреведени уносиПрво &непреведени уноси&Ажурирај из изворног кода&Ажурирај из изворног кодаП&ровери ваљаност преводаП&ровери ваљаност превода&Приказ&Да(0 нових, 0 застарелих)Сазнајте више о GNU gettext-у(нових: %i, застарелих: %i)(подразумевани језик)(нисте пријављени)(потребан је Windows 8 или новији)< &Претходно<неименован>О %s-уНалогНалози&ДодајДодај налогДодај коментарДодај датотеке…Додај фолдере…Додај пројекатДодај заменски знак…Додај налогДодај коментарДодајте фолдер на листуДодај датотеке…Додај фолдере…Додај пројекатДодај заменски знак…Додатне кључне речиДодатне xgettext ознаке:НапредноНапредна подешавања издвајања…Напредна подешавања издвајањаНапредна подешавања издвајања…Све датотеке преводаИз свих коментараСви стринговиКористи и подразумеване кључне речи за подржане језикеAlt+Увек пребаци фокус на поље за унос текстаСтавка у листи улазних датотека:Ставка у листи кључних речи:ИзгледПримениЖелите ли заиста да избришете издвајач „%s”?Желите ли заиста да ресетујете преводилачку меморију?Аутоматски тражи ажурирањаАутоматски компајлирај MO датотеку при чувањуНазадОсновна путања:Бета верзије садрже најновије функције и побољшања, али могу бити мање стабилне.Постави све у предњи планPO датотека је оштећена: користи се msgstr за множину без msgid_pluralPO датотека је оштећена: користи се msgstr за једнину уз msgid_pluralНеисправна ознака у стрингу за превод.&ПотражиПрегледај датотекеПодразумевано се приказују и приближни резултати, али су означени да им је потребна дорада. Означите ову опцију како би се приказивала само потпуна подударања.&ОткажиОтказивање…Није могуће направити привремени фолдер.Није могуће извршити програм: %sНије могуће прелиминарно превести са непознатог језика.Није могуће прелиминарно превести без изворног текста.Претвори у велика почетна слова&Менаџер каталога&Менаџер каталогаМенаџер каталогаПромените језик интерфејсаКодирање:Одмах провери документПровера граматике са правописомПроверавај правопис током куцањаПровери д&а ли постоје исправке…Провери да ли има грешака у преводуПотр&ажи ажурирања…Проверавај правописОбришиОбриши листуОбри&ши преводОбриши листуОбри&ши превод&ЗатвориОблакПојављивања у кодуПојављивања у кодуСарађујте са другима онлајн.Прикупљање датотека са изворним кодом…Команда за издвајање превода:КоментарКоментар:Из коментара који почињу са:Ко&мпајлирај у MO…Компајлирање у…Компајлиране датотеке преводаПодесите издвајање из изворног кода у својствима.ПотврдаПовежите Poedit са подржаним платформама у облаку за локализацију да бисте с лакоћом синхронизовали преводе који се налазе на њима.КопирајКопирај из &једнинеКопирај из из&ворног текстаКопирај из &једнинеКопирај из из&ворног текстаАутоматски исправи правописНије могуће преузети податке о пројекту на Localazy-ју.Није могуће учитати датотеку. Вероватно је оштећена.Није могуће сачувати датотеку „%s”.Направи новиНаправи нови преводНаправите нови превод помоћу POT шаблона.Направи нови преводилачки пројекатГрешка у Crowdin-уCrowdin је онлајн платформа за управљање локализацијом и заједничко превођење.Ctrl+&ИсециПрилагођени издвајачи:Прилагођени издвајачи:Прилагоди траку са алаткама…ИсециВеличина базе на диску:&ИзбришиИзбриши из преводилачке меморијеИзбриши издвајачИзбриши из преводилачке меморијеИзбриши пројекатИзбриши коментарИзбриши пројекатБрисањем пројекта нећете избрисати датотеке превода.Фолдери:Желите ли да избришете пројекат „%s”?Желите ли да поново учитате датотеку са диска? Тиме ћете изгубити све несачуване промене у Poedit-у.Желите ли да уклоните све преводе које су идентичне изводном тексту?Желите ли да уклоните све преводе који се више не користе?&Не чувајНе чувајНе приказуј поновоПотпуна подударања не означавај за дорадуНе приказуј поновоDownПреузимање најновијих превода…Преузимање превода из овог пројекта је онемогућено.Овде превуците фолдере или датотекеОвде превуците фолдере или датотеке&ИзађиИ&звоз у HTML…УредиУреди ко&ментарУреди ко&ментарУреди коментарУреди коментарУређивање пројектаУреди пројекатУређивањеУреди…&Имејл:EnterПређи у режим целог екранаБрој множинских облика у уносима се разликује од онога што пише у заглављу датотекеПрво уноси са грешкамаПрво уноси са грешкамаУноси са грешкама су означени црвеном бојом. Када изаберете такав унос, приказаће се детаљи о грешци.Грешка при учитавању датотеке превода „%s”.Грешка при отварању датотекеГрешка при чувању датотекеДошло је до грешке при учитавању XLIFF датотеке: %sГрешкеСвеИзузете путањеИзвези у TMX…Извези као…Грешка при извозуИзвоз у HTML…Извези у TMX…Извоз преводилачке меморије у „%s” није успео.Извоз превода…Издвој из изворног кодаИздвој напомене преводиоцима:Издвој текст из изворних датотека у следеће фолдере:Издвајање стрингова за превод…Подешавање издвајачаИздвајачиНеуспела команда: %sНије могуће комуницирати са Poedit-овим процесом.Није могуће учитати датотеку са издвојеним преводима.Није могуће објединити gettext каталоге.Није могуће ажурирати преводилачку меморију: %sДатотекаНије могуће отворити датотекуДатотека „%s” не постоји.„%s” није датотека превода.Датотека „%s” је доступна само за читање и не може се сачувати. Сачувајте је под другим именом.Завршавање…ПронађиПронађи &следећеПронађи пр&етходноПронађи и замени…КоментариИзворни текстПреводиПронађи &следећеПронађи пр&етходноИсправи језикИсправи језикИсправи заглављеИсправи заглављеFlutter датотеке преводаОблик %iОблик %i (не користи се)Често коришћеноGNU gettextОпштеHTML датотекеПомоћСакриј %sСакриј другеСакриј бочну тракуСакриј статусну тракуСакриј ово обавештењеКако функционише синхронизација у облаку?IDАко наставите, трајно ћете уклонити све преводе означене као избрисане. Мораћете да поново преведете стрингове ако буду додати у будућности.Ако сте раније забранили приступ датотекама, то можете променити у System Preferences → Security & Privacy → Privacy → Files & Folders.Ако сте раније забранили приступ датотекама, то можете променити у System Settings → Privacy & Security → Files & Folders.ЗанемариНе разликуј велика и мала словаУвези из TMX-а…Увези датотеке превода…Грешка при увозуУвези из TMX-а…Увези датотеке превода…Увоз преводилачке меморије из „%s” није успео.Увоз превода…Датотека: %sУкључи бета верзијеНедоследност при употреби великих и малих словаНедоследност при употреби размакаИнформације о преводиоцуИнсталирајНеважећа датотекаПозивање:JSON датотеке превода&ЗадржиНазив или кôд језикаЈезик превода се поклапа са изворним језиком.Није наведен језик превода.Језик превода:Избор језикаТим преводилаца:Језик:Последња изменаСазнајте више о кључним речима gettext-аСазнајте више о множинским облицимаСазнајте вишеСазнајте више о услузи %sСазнајте више о Crowdin-уLeftРед %d у датотеци „%s” је оштећен (неважећи подаци у %s).Завршеци редова:Листа екстензија раздвојених тачка-зарезом (нпр. *.cpp;*.h):Учитај енглескиLocalazy је платформа за локализацију са високим нивоом аутоматизације која свакоме омогућава да једноставно преведе своје производе и садржај на више језика.MO датотеке се не могу директно уређивати у Poedit-у.Претвори у мала словаПретвори у велика словаНаправите нови превод из POT датотеке.Неисправан формат заглавља: „%s”Управљај налозимаУправљај…Обједињавање разлика…УмањиНазив пројекта за који је намењен преводИме:С&ледећи недовршениС&ледећи недовршениПотребна дорадаПотребна дорадаГрешка на мрежи: %s (%d)Не дозвољава да листа стрингова заузме фокус. Ако је омогућено, морате да користите Ctrl и стрелице за навигацију. Текст можете да уносите директно у поље а да не притискате Tab за промену фокуса.&НовоНо&во из POT/PO датотеке…Но&во из POT/PO датотеке…Нови стринговиСле&дећи множински обликСле&дећи множински обликНеНема резултатаНиједан унос се не може прелиминарно превести.У датотеци није наведена информација о појављивањима овог стринга у изворном коду.Нема резултатаНису пронађени проблеми у преводу.Нема преводилачких пројеката на вашем налогу.У TMX датотеци нису пронађени преводи.Нема информација о коришћењуНису сви множински облици преведени.Немате овлашћења. Поново се пријавите.Напомене преводиоцима&У редуЗастарели стринговиЈеданУкључите ову опцију само ако сте сигурни у квалитет ваше преводилачке меморије. Подразумевано се свим подударањима додељује ознака „потребна дорада” и такве стрингове би требало проверити.Само потпуна подударањаОтвори превод из облака…Отвори &недавнеОтворите и уређујте датотеке превода.Отвори превод из облакаОтвори превод из облака…Отвори датотекуОтвори у уређивачуОтвори у уређивачуОтвори &недавнеОтварање шаблона преводаОтвори…Отвори…ОпцијеДругоП&ретходни недовршениП&ретходни недовршениPO датотеке преводаPOT шаблони преводаPOT датотеке су само шаблони без превода. Да бисте започели превод, направите нову PO датотеку према шаблону.НалепиНалепи и усклади стилПутањеАжурираћете све датотеке у пројекту из изворног кода.Забрањен приступ.У преводу недостаје чувар места „%s”.Исправност чувара местаУместо тога отворите и уређујте одговарајућу PO датотеку. Када је сачувате, ажурираће се и MO датотека.Прво сачувајте датотеку. Овај одељак се не може уређивати док то не урадите.МножинаПреводи множинских обликаПравило за множинске облике које је наведено у датотеци није уобичајено за %s језик.Множински облици:PoeditPoedit – менаџер каталогаPoedit је аутоматски исправио неважећи садржај у датотеци „%s”.Poedit може покушати да попуни нове уносе само из претходних превода у датотеци или из читаве преводилачке меморије. Употреба преводилачке меморије неће имати много учинка ако је слабо попуњена, али ће бити све боља како додајете нове преводе.Poedit не може да прикаже изворни кôд у ком се стринг користи, јер датотека није доступна на наведеној локацији или се ради о симболичкој референци која не упућује на стварну датотеку.Poedit је једноставан алат за превођење.Poedit не може да отвори датотеку „%s”.&Прелиминарни превод…Прелиминарни преводПрелиминарни преводПрелиминарно је преведен %u стрингПрелиминарно су преведена %u стрингаПрелиминарно је преведено %u стринговаПрелиминарно превођење помоћу преводилачке меморије…Прелиминарно превођење…Прелиминарни превод аутоматски проналази потпуна или приближна подударања за непреведене стрингове у преводилачкој меморији и попуњава њихове преводе.За прелиминарни превод је потребан изворни текст. Ова функција неће радити само са идентификаторима.Да бисте користили прелиминарни превод потребно је да изворни језик буде познат. Poedit га није препознао у овој датотеци.ПодешавањаПодешавања…Подешавања…Припрема стрингова…Очувај форматирање постојећих датотекаПр&етходни множински обликПр&етходни множински обликПретходни изворни текстПретходна &изменаПретходна &изменаНазив и верзија пројекта:Назив пројекта:Пројекат:ПројектиПровере интерпункције&ОбришиЧишћење избрисаних преводаИзађиИзађи из %s-аДошло је до следеће грешке при читању датотеке: %sНедавноНедавне датотекеПоновиОсвежиПоново учитај датотекуПоново учитај датотекуПреостало: %dУклониУклони преводе идентичне изворуУклони преводе идентичне изворуЗамениЗ&амени свеЗ&амени свеСтринг за замену&Замени…У заглављу недостаје образац за множинске облике.ПоништиРесетовање преводилачке меморијеОбрисаћете све преводе у преводилачкој меморији. Ова радња је неповратна.Прикажи у Finder-уПрегледајRightСачувајСачувај &као…Сачувај &као…Свеједно сачувајСвеједно сачувајСачувај каоСачувај као…Чување променаСачувај датотекуСнимци екрана:Изабери &свеИзабери свеИзбор ТМХ датотека за увозИзбор фолдераИзбор датотеке преводаИзбор датотеке превода за увозИзбор шаблона преводаИзаберите жељени језикУслугеИзабери језикИзабери језикПоставкеПодешавања…Shift+Прикажи свеПрикажи бочну тракуПрикажи правопис и граматику&Статусна тракаID &стрингаПрикажи заменеПрикажи траку са алаткама&УпозорењаПрикажи у Explorer-уПрикажи у фолдеруПрикажи или сакриј бочну тракуПрикажи бочну траку&Статусна тракаID &стрингаПрикажи резиме након ажурирања датотека&УпозорењаБочна тракаПријавите сеОдјави меПријави меПријавите се у %sПријава на налог у облакуПријава на CrowdinПријава на налог у облакуОдјави меЈеднинаПаметно копирање/налепљивањеПаметне цртеПаметни линковиПаметни наводнициСортирај као у &датотециСортирај према &изворном текстуСортирај према п&реводуСортирај као у &датотециСортирај према &изворном текстуСортирај према п&реводуКодирање изворног кода:Издвајачи се користе за проналажење и издвајање стрингова за превод у датотекама изворног кода.Изворни кôд је недоступан.Изворни кôд није пронађенИзворни текстID изворног текстаИзворни текст – %sКључне речи изворних датотекаПутање до изворних датотекаКључне речи изворних датотекаПутање до изворних датотекаГоворПровера правописа је онемогућена јер није инсталиран речник за %s језик.Правопис и граматикаПокрени говорЗаустави говорСачуваних превода:Контекст стринга: %sИдентификатор стринга: %sДужина стринга у знаковимаДужина стринга у знаковима: превод | изворСтринг за претрагуЗаменеПредлозиПредлози нису доступни ако није изабран језик превода. Исто важи и за множинске облике и друге функције.Непотребан чувар места „%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” је променила друга апликација.Стари изворни текст (до ажурирања) који одговара нетачном преводу.Најједноставнији начин да попуните ову датотеку преводима јесте да је ажурирате помоћу POT датотеке:Превод не почиње размаком.Превод се завршава новим редом, али изворни текст не.Превод се завршава размаком, али изворни текст не.Превод се завршава знаком „%s”, а изворни текст знаком „%s”.У преводу недостаје нови ред на крају.У преводу недостаје размак на крају.Превод је спреман за коришћење, али %d унос још није преведен.Превод је спреман за коришћење, али %d уноса још нису преведена.Превод је спреман за коришћење, али %d уноса још није преведено.Спреман је за коришћење.Превод се мора завршавати знаком „%s”.Превод се не сме завршавати знаком „%s”.Превод мора почињати великим словом.Превод мора почињати малим словом.Превод почиње размаком, али изворни текст не.Преводи су означени за дораду. Проверите њихову исправност.Нема уноса. То је необично.Датотека је успешно сачувана, иако је дошло до проблема при форматирању.Дошло је до грешке при отпремању превода на Localazy.Дошло је до грешака при учитавању датотеке. Због тога су неки подаци изгубљени или оштећени.Ова подешавања утичу на форматирање PO датотека. Прилагодите их својим потребама, нпр. ако користите систем за управљање изворним кодом.Ови стрингови се више не налазе у изворном коду. Poedit ће их сада уклонити из датотеке.Ови стрингови су пронађени у изворима, али нису у датотеци. Poedit ће их сада додати у њу.Ова JSON датотека не садржи преводе и не може се уређивати у Poedit-у.Ова акција ће уклонити све преводе који се у потпуности подударају са изворним текстом. Ово није могуће опозвати.Ова датотека садржи уносе са множинским облицима, али јој недостаје заглавље са правилом за множину.Ова датотека користи идентификаторе уместо изворног текста. Poedit може да учита енглески текст из датотеке „%s”.Ова команда покреће издвајач. %o – назив излазне датотеке, %K – листа кључних речи, %F – листа улазних датотека, %C – кодирање (в. испод).Овај стринг је пронађен у Poedit-овој преводилачкој меморији.Ово ће бити додато у командну линију само ако је наведено кодирање изворног кода. Параметар %c означава кодирање.Ово ће бити додато у командну линију за сваку улазну датотеку. Параметар %f означава назив датотеке.Ово ће бити додато у командну линију за сваку кључну реч. Параметар %k означава кључну реч.УкупноТрансформацијеУ систему gettext, уноси за превод се не додају ручно, већ се аутоматски издвајају из изворног кода. Тако остају ажурни и прецизни. Преводиоци обично користе шаблоне (POT датотеке) које им припреми програмер.Преведите пројекат у облакуПреведено: %d од %d (%d%%)ПреводЈезик преводаПреводилачка меморијаОзначи превод за &дорадуСвојства преводаВероватно су уноси у датотеци нетачни.База података преводилачке меморије је оштећена: %s (%d).Грешка у преводилачкој меморији: %s (%d).Означи превод за &дорадуСвојства преводаПредложени преводиЗа предложене преводе је потребан изворни текст. Ова функција неће радити само са идентификаторима.Да бисте користили предлоге превода потребно је да изворни језик буде познат. Poedit га није препознао у овој датотеци.Превод – %sНије могуће ажурирати преводе из изворног кода, јер није пронађен кôд на локацији која је наведена у својствима датотеке.ДваUTF-8 (препоручује се)ОпозовиДошло је до неочекиваног изузетка: %sUnix (препоручено)Непозната грешка у Crowdin-у.Непозната грешкаНепреведеноUpАжурирајА&журирај свеАжурирај све каталоге у пројектуЖелите ли да ажурирате све каталоге у овом пројекту?А&журирај из POT датотеке…А&журирај из POT датотеке…Ажурирај из кодаАжурирај помоћу POT датотекеАжурирај из кодаАжурирај из изворног кодаРезиме ажурирањаАжурирањаАжурирање није успелоНије могуће ажурирати датотеку. Кликните на „Детаљи >>” за више информација.Ажурирање преводаАжурирање информација о кориснику…Отпремање превода на %s није успело.Отпремање превода на %s…Преводи се отпремају…Прилагођени изразФонт за листу:Фонт за текстуална поља:&Подразумевана правила за овај језикТражи стрингове за превод у изворним датотекама према овим кључним речима (називима функција):Користи преводилачку меморијуПровери ваљаностРезултати провере ваљаностиВерзија %sЧека се потврда идентитета…Добро дошли у PoeditПри ажурирању из изворног кодаСамо целе речиПрозорWindowsЖелите ли да енглески буде изворни текст?Тражи укругПрелом:XLIFF датотеке преводаДаСтрингове за превод можете да издвојите и директно из изворног кода:У Poedit-ов прозор можете превући само једну датотеку.Немате дозволу за читање датотека са изворним кодом на локацији која је наведена у својствима датотеке.Потребно је да поново покренете Poedit како би ова измена ступила на снагу.Ваше имеИзгубићете све промене ако их не сачувате.Ваше име и имејл-адреса се користе само при постављању последњег преводиоца у заглављу GNU gettext датотека.НулаЗумaltПотребна дорадаctrlне бриши привремене датотеке (ради отклањања грешака)нпр. nplurals=2; plural=(n > 1);користи сличне преводе из датотекеиди на ставку у наведеном редуобрада URI адресе poedit://преведи помоћу преводилачке меморијеshiftнепознат језикнеподржана верзија (%s)adresa@domen.rs„%s” је неважећа POT датотека.poedit-3.5/locales/he.mo0000644000175100001770000020113614664354153012162 00000000000000|+: : :&:?:<S::J:g: V;`; o;y; ;;;;;;;;;;;;;;<<<0<B<H<M<U<]<o<<< < <<<< <<<<==0=L=R=X=a=g=p== = = ====>>7>N>e>k>p>>>>>> ? ???'?0? 4? @? L?Y? h?t? ? ?? ?? ???@@&@F@c@@ @ @1@@'@A.A HASA7YA6AA)AB B]"BB<BDB$C:C ACNCC C"CD+"D)ND xDDDDDDDDEE#4EXEmE|E EE EEEEEE%EF +FLFTF]FuF FF/F FkFXG]GpGGGG-G1G.H GHRH)iHH HYHI!I&I9ILIaIeI|IIIIIII;J CJ'PJ^xJLJ?$K dK rKK*KKK"K5K.LILdLjL}L L L L L LLLLLLLfMlMMuM(N?NRN"dNN NNN N NNN0N'OAO#VO<zO"OO OO*P03P!dP'PPPP(PTQ fQtQ yQ QQQQQ Q Q Q RR!R0RJRRRcR lRxR RRR R RRRRRRSz/TT TTT TT U2(U[UuU|UUU UU U U V!V&V;^D^Y^n^^^._4_J_=P__1__n_E[```;` ` aa@,amacb,#c,Pc}c cc2c*c ddwdj$e eeee%ee ff3fEfWf qffffffff8f g gg$g ,g 8g DgRg"Yg"|gg g gg g(ghhz'hhhhh h h h hh h i i i ,i 8iCi^ioi"iiii i ij jj$j -j:jTjdjtj j jjjj jjj!k *k8k@kHkQk Ykgkkkkkk k k kk ll.lBlRlgl|lmm 4m@mOmbm smm mmKmmn n%n:nMncn1nn n nn=ioo'p,p(>pgp op}p+pp p8p" q/q@qrCr8brrs8*t1ctRtctQLuu'u:ulvPv-vCwALwKw0w. x:x!x)x-y+Cy8oyCyuy,bzLz;z]{v{Z{gW|J|c }[n}o}:~7~m_[HN^Xp ف72("[~~łqDɃRVj o ȄЄӄ ڄ"$-F_p<Ѕ #$@eˆ#V cz ч. ;GPhHl5m7Y 3aω16;?\.a ͊ 1J!Z| Vb_s=Ӎ=  ΐ   +> Q ]gvב   /D JVm ˒'': bn } ȓ 4&4[Д  *=h+Õ   !,BVo˖$ߖ8L c )&ٗ)*GY^oΘCӘ*,B ozFNș:MR UVnYś.NWm U`1{.;ܝ;$Tyɞ *)=#g$#ԟ7 OZaw<%ʠ' !+Kj$K " ܢ" )AAkL,'9.V)f¤) /'9'a/*¥ &&3ZnE $GY>O_NvŨܨ375M5 ũ ݩ&:P f q )9)c7"T"w- Ȭլܬ&<S<i"ɭ0F<[ 3ծH 0R1(&1@Ű . Fgϱ )I R^gwȲ$#, bo#ǵݵ#>Vs<޶ # 5A \g/*ڷ$=<z$ƸVGa^ع?"$1;m ! ׻25Ocw#ڽ0OT4q`($>M21ڿ, 9 U`~)%.%<bv 6TmA J kJx1 /]S<"LTq>tL,B=0P9 x7""Bas  & J0{  +-A oz 2 $+ *EWl & -* X5y 3Pk'- 7Pk6(Gc"&(D&b$"/R"l ^)2 Fg$;  '2G, & %6=\TBDVZ|uNCAJPFZp=n2=6pr/(RI[h1&c#16.B=G,~i?Uv bkEco x #) MXl.2J/M.}1C #,Pk 18 *H\nd!C#e/&-9)@c7${   (GPMX $j KtwY8 G}L.6/0f6"%(545nCv#=ld B@Twa QjqO 91B)aT'ZSFQYu>"/VJZsG6*[ar`^;XyVb?' <IL:x%AMZ\W88O,*d0)i{J-yK|]:c%}oo0][-Pg6YS&r(\p@X(tM?iE=eD"OU|53 w  fj,#32H 4[ pk {qke;mpgl16U85:`, +Y^L9$qz2fGu(A7N4!d0DNt{F<x_+7vX)nKG+>&9m3 LeUIN Iy E"nsk/<W>PhrVvT]cQmuR$bjD !_@xEl%WK-_7MCwbz/|gcAB` zh~?SC^*tf=\h!H'P#RiF&;$H1~.2 RsJo}.} .~ (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd AccountAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add accountAdd 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 languagesAlt+Always 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 errorCrowdin is an online localization management platform and collaborative translation tool.Ctrl+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 againDownDownloading 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:EnterEnter 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 loading translation file “%s”.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export errorExport 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…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)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport from TMX…Import translation files…Importing translation memory from “%s” 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 CrowdinLeftLine %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 translations were found in the TMX file.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKObsolete stringsOneOnly 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 translation templateOpen...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 translationsQuitQuit %sReading file content failed with the following error: %sRecentRecent 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 FinderReviewRightSaveSave &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 languageServicesSet LanguageSet languageSettingsSettings…Shift+Show AllShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow summary after updating filesShow 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.These strings are no longer in the source code. Poedit will remove them from the file now.These strings were found in the sources but were not in the file. Poedit will add them to the file now.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 entries in the file are probably incorrect.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 errorUntransUpUpdateUpdate 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 the file failed. Click on 'Details >>' for details.Updating 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown 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: 2024-08-30 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 בעיות עם התרגום.שורה %i בקובץ „%s” לא נטענה כראוי.%i שורות בקובץ „%s” לא נטענו כראוי.%i שורות בקובץ „%s” לא נטענו כראוי.%i שורות בקובץ „%s” לא נטענו כראוי.פורמט %sהעדפות של %sפורמט %s&אודות&אודות Poeditה&חלה&קודםבי&טול&נקה&סגירהה&עתק&מחיקהב&צע והמשךב&צע והמשך&עריכה&קובץ&חיפוש…הדרכה ל-&GNU gettextהדרכה ל-&GNU gettextמע&בר אלקיבו&ץ לפי הקשרקיבו&ץ לפי הקשרע&זרהח&דש&חדש…ה&בא >התרגום ה&באהתרגום ה&בא&לא&אישורעזרה מ&קוונתעזרה מ&קוונת&פתיחה...&פתיחה…ה&דבקה&עדפות&העדפות…התרגום ה&קודםהתרגום ה&קודםמא&פיינים…פינוי תרגומים ש&נמחקופינוי תרגומים ש&נמחקוי&ציאהבצע &שובה&חלפהש&מירהשמירה &בשםהצגת מופעים ב&קודהצגת מופעים ב&קודחלון &פתיחהחלון &פתיחה&תרגום&בטלרשומות ש&אינן מתורגמות תחילהרשומות ש&אינן מתורגמות תחילהעדכון מ&קוד המקורעדכון מ&קוד המקור&אימות התרגומים&אימות התרגומיםת&צוגה&כן(0 חדשות, 0 מיושנות)(מידע נוסף אודות GNU gettext)(חדש: %i, מיושן: %i)(שימוש בשפת ברירת המחדל)(לא מחובר)(דורש Windows 8 ומעלה)< ה&קודם<ללא שם>על %sחשבוןחשבונותהוספההוספת חשבוןהוספת הערההוספת קבצים…הוספת תיקיות…הוספת מיזםהוספת Wildcard…הוספת חשבוןהוספת הערההוספת ספרייה לרשימההוספת קבצים…הוספת תיקיות…הוספת מיזםהוספת Wildcard…מילות מפתח נוספותדגלי xgettext נוספים:מתקדםהגדרות חילוץ מתקדמות…הגדרות חילוץ מתקדמותהגדרות חילוץ מתקדמות…כל קובצי התרגוםכל ההערותכל המחרוזותהשתמש בנוסף במילות מפתח ברירת מחדל עבור שפות נתמכותAlt+שנה תמיד את המיקוד לשדה הקלט של הטקסטפריט ברשימת קובצי הקלט:פריט ברשימת מילות המפתח:תצוגההחלהאם אתה בטוח שברצונך למחוק את המחלץ "%s"?האם אתה בטוח שברצונך לאפס את זיכרון התרגום?בדיקה אחר עדכונים באופן אוטומטיביצוע הידור קובץ MO באופן אוטומטי בעת שמירההקודםנתיב הבסיס:גרסאות בטא מכילות את התכונות והעדכונים החדשים ביותר, אך עשויות להיות פחות יציבות.הבא הכל קדימהקובץ PO פגום: msgstr של צורת ריבוי בשימוש בלי mdgid_pluralקובץ PO פגום: msgstr של צורת יחיד בשימוש יחד עם msgid_pluralסימון שגוי במחרוזת תרגום.עיוןעיון בקבציםכברירת מחדל, תוצאות שאינן מדויקות נכללות גם כן, אך מסומנות ככאלו הדורשות סקירה. יש לבחור באפשרות זו כדי לכלול רק התאמות מושלמות.ביטולבתהליך ביטול…לא ניתן ליצור ספרייה זמנית.לא ניתן להריץ את היישום: %sלא ניתן לתרגם מראש משפה לא ידועה.לא ניתן לתרגם מראש ללא טקסט מקור.הפוך לאותיות רישיותמ&נהל הקטלוגיםמ&נהל הקטלוגיםמנהל הקטלוגיםהחלפת שפת הממשקקידוד:בדוק את המסמך כעתבדוק דקדוק ביחד עם איותבדוק איות במהלך ההקלדהבדיקה אחר עדכונים…בדיקת שגיאות בתרגוםבדיקה אחר עדכונים…בדיקת איותנקהניקוי התפריטמחיקת התרגוםניקוי התפריטמחיקת התרגוםסגירהענןמופעים בקודמופעים בקודשיתוף פעולה מקוון עם אנשים אחרים.קובצי המקור נאספים…פקודה לחילוץ תרגומים:הערההערה:הערות המתחילות ב:ביצוע הידור ל-MO…ביצוע הידור ל…קובצי תרגום מהודריםניתן להגדיר את חילוץ קוד המקור במאפיינים.אימותאפשר לחבר את Poedit לפלטפורמות תרגום ענניות נתמכות כדי לסנכרן מאחורי הקלעים תרגומים שמנוהלים בהן.העתקלהעתיק מצורת היחידהעתקה מטקסט המקורלהעתיק מצורת היחידהעתקה מטקסט המקורתקן איות באופן אוטומטילא ניתן להוריד את פרטי המיזם ב־Localazy.לא ניתן לטעון את הקובץ, הוא ככל הנראה פגום.לא ניתן לשמור את הקובץ %s.ליצור חדשיצירת תרגום חדשיצירת תרגום חדש מתבנית POT.יצירת מיזם תרגומים חדששגיאת CrowdinCrowdin זאת פלטפורמת ניהול תרגום מקוונת וכלי לתרגום שיתופי.Ctrl+ג&זורמחלצים מותאמים אישית:מחלצים מותאמים אישית:התאם אישית את סרגל הכלים…גזורגודל מסד הנתונים בכונן:מחיקהמחיקה מזיכרון התרגוםמחיקת מחלץמחיקה מזיכרון התרגוםמחיקת מיזםמחיקת ההערהמחיקת המיזםמחיקת המיזם לא תמחק קובצי תרגום כלשהם.ספריות:למחוק את המיזם „%s”?לטעון את הקובץ מהכונן מחדש? פעולה זאת תגרום לאובדן השינויים שלא שמרת ב־Poedit.להסיר את כל התרגומים שזהים לטקסט המקור?האם ברצונך להסיר את כל התרגומים שאינם עוד בשימוש?&לא לשמוראל תשמורלא להציג שובאל תסמן התאמות מדויקות ככאלו הדורשות סקירהלא להציג שובDownהתרגומים העדכניים מתקבלים…הורדת תרגומים מושבתת במיזם זה.יש לגרור לכאן תיקיות או קבציםיש לגרור לכאן תיקיות או קבציםי&ציאהיי&צוא ל־HTML…עריכהעריכת &הערהעריכת &הערהעריכת הערהעריכת הערהעריכת המיזםעריכת המיזםעריכהעריכה…אימייל:Enterעבור למסך מלאלרשומות בקובץ זה יש כמות של צורות רבים שונה ממה שמצוין בכותרת Plural-Forms של הקובץרשומות עם שגיאות תחילהרשומות עם שגיאות תחילהרשומות עם שגיאות סומנו באדום ברשימה. פרטי השגיאה יופיעו בעת בחירת רשומה שכזאת.שגיאה בטעינת קובץ התרגום “%s”.שגיאה בפתיחת הקובץשגיאה בשמירת הקובץשגיאה בטעינת קובץ XLIFF‏: %sשגיאותהכלנתיבים לא כלוליםייצוא ל־TMX…ייצוא בשם…שגיאת ייצואייצוא ל־HTML…ייצוא ל־TMX…ייצוא זיכרון התרגום אל „%s” נכשל.התרגומים מיוצאים…חילוץ ממקורותחילוץ הערות למתרגמים מתוך:חילוץ טקסט מקובצי המקור בספריות הבאות:מחרוזות הניתנות לתרגום מחולצות…הגדרת מחלץמחלציםהפקודה נכשלה: %sהתקשורת עם התהליך Poedit נכשלה.טעינת הקובץ עם התרגומים המחולצים נכשלה.מיזוג קטלוגים של gettext נכשל.עדכון זיכרון התרגום נכשל: %sקובץלא ניתן לפתוח את הקובץהקובץ “%s” אינו קיים.הקובץ ”%s” אינו קובץ תרגום.הקובץ “%s” הינו לקריאה בלבד ולא ניתן לשמור אותו. יש לשמור אותו תחת שם אחר.מתבצעת סגירה…חיפושחיפוש הבאחיפוש הקודםחיפוש והחלפה…חיפוש בהערותחיפוש בטקסט המקורחיפוש בתרגומיםחיפוש הבאחיפוש הקודםתיקון שפהתיקון שפהתיקון הכותרתתיקון הכותרתקובצי תרגום Flutterצורה %iצורה %i (לא בשימוש)תכוףGNU gettextכלליקובצי HTMLעזרהלהסתיר את %sלהסתיר אחריםהסתרת סרגל הצדהסתרת שורת המצבהסתר התראה זואיך עובד סנכרון ענן?מזההאם הליך הפינוי יימשך, כל התרגומים שסומנו כמחוקים יוסרו לצמיתות. יהיה עליך לתרגם אותם מחדש אם הם יתווספו שוב בעתיד.אם בעבר מנעת גישה לקבצים שלך, ניתן לאפשר אותה תחת העדפות המערכת > אבטחה ופרטיות > פרטיות > קבצים ותיקיות.אם בעבר מנעת גישה לקבצים שלך, ניתן לאפשר אותה תחת הגדרות המערכת > פרטיות ואבטחה > קבצים ותיקיות.להתעלםהתעלמות מרישיותייבוא מ־TMX…ייבוא קובצי תרגום…שגיאת ייבואייבוא מ־TMX…ייבוא קובצי תרגום…ייבוא זיכרון תרגום מתוך „%s” נכשל.מייבא תרגומים…בקובץ: %sלכלול גרסאות בטאחוסר אחידות באותיות גדולות/קטנותרווחים לא אחידיםמידע על המתרגםהתקנהקובץ שגויקריאה:קובצי תרגום JSONשמירהשם או קוד שפהשפת התרגום זהה לשפת המקור.שפת התרגום אינה מוגדרת.שפת התרגום:בחירת שפהצוות המתרגמים:שפה:שונה לאחרונהמידע נוסף אודות מילות מפתח של gettextמידע על לשון רביםמידע נוסףמידע נוסף על %sמידע נוסף אודות CrowdinLeftשורה %d בקובץ “%s” הינה פגומה (נתוני %s לא חוקיים).סיומות שורה:רשימה של הרחבות המופרדות בנקודה פסיק (לדוגמה: ‎*.cpp;*.h):טעינת אנגליתLocalazy היא פלטפורמת תרגום עם יכולות אוטומציה מתקדמות שמאפשרת לכל אחד ואחת לתרגם את המוצרים והתוכן שלהם למגוון שפות בקלות.לא ניתן לערוך קובצי MO ישירות ב־Poedit.הפוך לאותיות קטנותהפוך לאותיות גדולותיצירת תרגום חדש מקובץ POT זה.כותרת פגומה: „%s”ניהול חשבונותניהול…ממזג בין ההבדלים…מזעורשם המיזם עבורו מיועד התרגוםשם:&הבא שלא הושלם&הבא שלא הושלםדורש סקירהדורש סקירהשגיאת רשת: %s (%d)לא מאפשר לרשימת המחרוזות לקבל מיקוד. אם מופעל, עליך להשתמש במקשי החיצים בצירוף מקש ה-Ctrl לניווט, אבל גם ניתן לכתוב טקסט מיידית, ללא צורך בלחיצה על Tab לשינוי המיקוד.חדשחדש מקובץ &POT/PO…חדש מקובץ &POT/PO…מחרוזות חדשותצורת הריבוי הבאהצורת הריבוי הבאהלאלא נמצאו התאמותלא ניתן לתרגם מראש שום רשומה.אין מידע בקובץ על מספר המופעים של המחרוזת בקוד המקור.לא נמצאו התאמותלא נמצאו בעיות בתרגום.לא מופיעים מיזמי תרגום בחשבון שלך.לא נמצאו תרגומים בקובץ ה־TMX.אין פרטי שימושלא כל צורות הרבים מתורגמות.לא מורשה, נא להתחבר שנית.הערות למתרגמיםאישורמחרוזות מיושנותאחדהפעל אפשרות זו רק אם אתה בוטח באיכות של זיכרון התרגום שלך. כברירת מחדל, כל ההתאמות מזיכרון התרגום מסומנות ככאלו הדורשות סקירה, ויש לעבור עליהם.השלם רק התאמות מדויקותפתיחת תרגומים בענן…פתח אחרוניםפתיחה ועריכת קובצי תרגום.פתיחת תרגום בענןפתיחת תרגומים בענן…פתיחת קובץפתיחה בעורךפתיחה בעורךלפתוח את האחרוניםפתיחת תבנית תרגוםפתיחה...פתיחה…אפשרויותאחרהקו&דם שלא הושלםהקו&דם שלא הושלםקובצי תרגום POתבניות תרגום POTקובצי POT הינם תבניות בלבד ולא מכילים תרגומים. על מנת ליצור תרגום, יש ליצור קובץ PO חדש המבוסס על התבנית.הדבקהדבק והתאם לסגנוןנתיביםמבצע עדכון מקוד המקור על כל הקבצים במיזם.ההרשאה נדחתה.ממלא המקום „%s” חסר בתרגום.תקינות ממלאי מקוםאנא פתח וערוך את קובץ ה-PO המקביל במקום. כשתשמור אותו, קובץ ה-MO יתעדכן בהתאם.נא לשמור את הקובץ תחילה. לא ניתן לערוך סעיף זה עד אז.רביםתרגום צורות רביםביטוי צורות הריבוי שמשמש את הקובץ הוא חריג ב%s.צורות רבים:PoeditPoedit - מנהל הקטלוגיםPoedit תיקן באופן אוטומטי תוכן שגוי בקובץ "%s".Poedit יכול לנסות להשלים רשומות חדשות מהתרגומים הקודמים שלך בקובץ או מזיכרון התרגום כולו. שימוש בזיכרון התרגום לא יהיה אפקטיבי אם הוא כמעט ריק, אבל הוא ישתפר ככל שתרגומים חדשים יתווספו אליו.ל־Poedit אין אפשרות להציג את קוד המקור בו נעשה שימוש במחרוזת כיוון שאו שהקובץ אינו זמין במיקום ההפניה או שזאת הפנייה סמלית שלא מצביעה לקובץ אמתי.Poedit הינו עורך תרגומים פשוט לתפעול.ל־Poedit לא הייתה אפשרות לפתוח את הקובץ “%s”.&תרגום מראש…תרגום מראשתורגמה מראש%u מחרוזות מתורגמות מראש%u מחרוזות מתורגמות מראש%u מחרוזות מתורגמות מראש%u מחרוזות מתורגמות מראשמתבצע תרגום מראש מזיכרון התרגום…מבצע תרגום מראש…'תרגום מראש' מאתר באופן אוטומטי בזיכרון התרגום התאמות מדויקות או מעורפלות עבור מחרוזות שאינן מתורגמות, ומשלים את התרגומים שלהן.תרגום מראש דורש שטקסט המקור יהיה זמין. זה לא עובד אם נעשה שימוש במזהים בלבד ללא הטקסט עצמו.תרגום מראש דורש ששפת טקסט המקור תהיה מוכרת. זיהוי השפה בקובץ הזה על ידי Poedit לא הצליחה.העדפותהעדפות…העדפות…המחרוזות בהכנה…שמירה על עיצוב של קבצים קיימיםצורת הריבוי הקודמתצורת הריבוי הקודמתטקסט המקור הקודםנערך בעברנערך בעברשם וגרסת המיזם:שם המיזם:מיזם:מיזמיםבדיקות פיסוקפינויפינוי תרגומים שנמחקויציאהיציאה מ־%sקריאת תוכן הקובץ נכשלה עקב השגיאה הבאה: %sאחרוניםקבצים אחרוניםבצע שוברענוןטעינת הקובץ מחדשטעינת הקובץ מחדשנותרו: %dלהסירהסרת תרגומים זהים למקורהסרת תרגומים שזהים למקורהחלפההחלפת ה&כלהחלפת ה&כלמחרוזת להחלפההחלפה…הכותרת ההכרחית Plural-Forms חסרה.איפוסאיפוס זיכרון התרגוםאיפוס זיכרון התרגום ימחק את כל התרגומים המאוחסנים בו. לא ניתן לבטל פעולה זו.הצגה ב־FinderסקירהRightשמורשמירה &בשם…שמירה &בשם…לשמור בכל מקרהלשמור בכל מקרהשמירה בשםשמירה בשם…שמירת שינוייםשמירת קובץצילומי מסך:בחר ה&כלבחר הכלבחירת קובצי TMX לייבואבחירת ספרייהבחירת קובץ תרגוםבחירת קובצי תרגום לייבואבחירת תבנית תרגוםנא לבחור את השפה המועדפת עליךשירותיםהגדרת שפההגדרת שפההגדרותהגדרות…Shift+להציג הכולהצגת סרגל הצדהצג איות ודקדוקהצגת שורת המצבהצגת מ&זהה מחרוזתהצג החלפותהצג את סרגל הכרטיסיותהצגת אזהרותהצגה בסיירהצגה בתיקייההצגה או הסתרה של סרגל הצדהצגת סרגל הצדהצגת שורת המצבהצגת מ&זהה מחרוזתלהציג תקציר לאחר עדכון הקבציםהצגת אזהרותסרגל הצדהתחברותהתנתקותהתחברותכניסה אל %sכניסה לחשבון ענןהתחברות אל Crowdinכניסה לחשבון ענןהתנתקותיחידהעתקה והדבקה חכמותמיקוף חכםקישורים חכמיםמרכאות חכמותמיון לפי ה&סדר שבקובץמיון לפי המ&קורמיון לפי ה&תרגוםמיון לפי ה&סדר שבקובץמיון לפי המ&קורמיון לפי ה&תרגוםקידוד קוד המקור:מחלצי קוד המקור משמשים לאיתור וחילוץ מחרוזות הניתנות לתרגום בקובצי קוד המקור, כדי שניתן יהיה לתרגם אותם.קוד המקור אינו זמין.קוד המקור לא נמצאטקסט המקורמזהה טקסט מקורטקסט המקור — %sמילות מפתח המקורותנתיבי המקורותמילות מפתח המקורותנתיבי המקורותדיבורבדיקת איות מושבתת, מכיוון שהמילון לשפה %s אינו מותקן.איות ודקדוקהקראהפסק הקראהתרגומים מאוחסנים:הקשר המחרוזת: %sמזהה המחרוזת: %sאורך המחרוזת בתוויםאורך המחרוזת בתווים: תרגום | מקורמחרוזת לחיפושהחלפותהצעותהצעות אינן זמינות אם שפת התרגום לא מוגדרת כראוי. יתכן שמאפיינים אחרים, כמו לשון רבים, יושפעו גם כן.ממלא מקום מיותר „%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” נערך ע״י יישום אחר.טקסט המקור הקודם (לפני ששונה במהלך עדכון) אליו תואם התרגום שכעת אינו מדויק.הדרך הפשוטה ביותר למילוי קובץ זה עם תרגומים היא לעדכן אותו מ-POT:התרגום לא מתחיל ברווח.התרגום מסתיים בשורה חדשה, בניגוד לטקסט המקור.התרגום מסתיים ברווח, בניגוד לטקסט המקור.התרגום מסתיים ב-“%s”, אבל טקסט המקור מסתיים ב-“%s”.בסוף התרגום חסרה שורה חדשה.בסוף התרגום חסר רווח.התרגום מוכן לשימוש, אבל %d רשומות לא תורגמו עדיין.התרגום מוכן לשימוש, אבל %d רשומות לא תורגמו עדיין.התרגום מוכן לשימוש, אבל %d רשומות לא תורגמו עדיין.התרגום מוכן לשימוש, אבל %d רשומות לא תורגמו עדיין.התרגום מוכן לשימוש.התרגום אמור להסתיים ב-“%s”.התרגום לא אמור להסתיים ב-“%s”.התרגום אמור להתחיל כמשפט.התרגום אמור להתחיל באות לטינית קטנה.התרגום מתחיל ברווח, בניגוד לטקסט המקור.התרגומים סומנו ככאלו הדורשים סקירה, מכיוון שיתכן שאינם מדויקים. כדאי לסקור אותם ולתקנם במידת הצורך.אין תרגומים. זה מצב חריג.הייתה בעיה בעת עיצוב הקובץ בצורה נקייה (אך הוא נשמר כראוי).אירעה שגיאה בהעלאת תרגומים ל־Localazy.אירעו שגיאות בעת טעינת הקובץ. כתוצאה מכך, ייתכן שחלק מהמידע חסר או פגום.הגדרות אלו משפיעות על העיצוב הפנימי של קובצי PO. שנה אותן אם יש לך דרישות מסוימות, למשל בגלל שליטה על גרסה.המחרוזות האלו אינן בקוד המקור עוד. הן יוסרו על ידי Poedit מהקובץ כעת.המחרוזות האלו נמצאו במקורות אך לא בקובץ. הן תווספנה על ידי Poedit לקובץ כעת.קובץ ה־JSON אינו קובץ תרגומים ואי אפשר לערוך אותו ב־Poedit.הפעולה הזאת תמחק את כל התרגומים שזהים לטקסט המקור במדויק. זאת פעולה בלתי הפיכה.לקובץ זה יש רשומות עם צורות רבים, אך לא מוגדרת כותרת Plural-Forms.הקובץ משתמש במזהי מחרוזות במקום בטקסט המקור. ל־Poedit יש אפשרות לטעון את הטקסטים באנגלית מהקובץ „%s” בשבילך.זו הפקודה המשמשת לפתיחת המחלץ. %o יוחלף בשם של קובץ הפלט, %K ברשימת מילות המפתח, %F ברשימת קבצי הקלט, %C בדגל הקידוד (ראה למטה).מחרוזת זו אותרה בזיכרון התרגום של Poedit.משתנה זה יתווסף לשורת הפקודה רק אם הקידוד של קוד המקור סופק. %c יוחלף בערך הקידוד.משתנה זה יתווסף לשורת הפקודה פעם אחת עבור כל קובץ קלט. %f יוחלף בשם הקובץ.משתנה זה יתווסף לשורת הפקודה פעם אחת עבור כל מילת מפתח. %k יוחלף במילת המפתח.סה״כהמרותרשומות הניתנות לתרגום אינן מתווספות באופן ידני למערכת ה-Gettext, אבל מחולצות באופן אוטומטי מקוד המקור. בצורה הזו, הן נשארות מעודכנות ומדויקות. מתרגמים משתמשים בדרך כלל בקובצי תבנית PO (ובקיצור POTs) המוכנים עבורם ע״י המפתח.תרגום מיזם בענןתורגמו: %d מתוך %d (%d%%)תרגוםשפת התרגוםזיכרון תרגוםסימון כתרגום הדורש &סקירהמאפייני התרגוםרשומות התרגום כנראה שגויות.מסד הנתונים של זיכרון התרגום פגום: %s ‏(%d).שגיאת זיכרון תרגום: %s ‏(%d).סימון כתרגום הדורש &סקירהמאפייני התרגוםהצעות תרגוםהצעות תרגומים דורשות שטקסט המקור יהיה זמין. הן לא עובדות אם נעשה שימוש במזהים בלבד ללא הטקסט עצמו.הצעות תרגום דורשות ששפת טקסט המקור תהיה מוכרת. זיהוי השפה בקובץ הזה על ידי Poedit לא הצליחה.תרגום — %sלא ניתן לעדכן תרגומים מקוד המקור, מכיוון שלא נמצא קוד במיקום שצויין במאפייני הקובץ.שתייםUTF-8 (מומלץ)בטלאירעה חריגה: %sUnix (מומלץ)שגיאת Crowdin לא ידועה.שגיאה לא ידועהלא מתורגמיםUpעדכוןעדכון הכלעדכון כל הקטלוגים בפרוייקטלעדכן את כל הקטלוגים במיזם הזה?עדכון מקובץ &POT…עדכון מקובץ &POT…עדכון מקודעדכון מ-POTעדכון מקודעדכון מקוד המקורתקציר העדכוןעדכוניםהעדכון נכשלעדכון הקובץ נכשל. יש ללחוץ על 'עוד >>' לקבלת פרטים נוספים.התרגומים מתעדכניםמעדכן נתוני משתמש…שליחת התרגומים אל %s נכשלה.תרגומים נשלחים אל %s…מעלה תרגומים…שימוש בביטוי מותאם אישיתשימוש בגופן מותאם אישית לרשימה:שימוש בגופן מותאם אישית לשדות טקסט:שימוש בכללי בררת המחדל לשפה זוהשתמש במילות מפתח אלה (שמות פונקציות) על מנת לזהות מחרוזות הניתנות לתרגום בקובצי המקור:שימוש בזיכרון תרגוםאימותתוצאות האימותגרסה %sמחכה לאימות…ברוך בואך ל־Poeditבעת עדכון ממקורותמילים שלמות בלבדחלוןWindowsהאם ברצונך להשתמש באנגלית עבור טקסט המקור?חזרה להתחלה בסיוםגלישת שורה ב:קובצי תרגום מסוג XLIFFכןניתן גם לחלץ את המחרוזות הניתנות לתרגום ישירות מקוד המקור:לא ניתן לשחרר יותר מקובץ אחד בחלון של Poedit.אין לך הרשאה לקרוא קובצי קוד מקור מהמיקום המצויין במאפייני הקובץ.יש להפעיל מחדש את Poedit כדי שהשינויים ייכנסו לתוקף.השם שלךהשינויים שביצעת יאבדו אם לא תשמור אותם.שמך וכתובת הדוא״ל שלך ישמשו אך ורק כדי להגדיר את כותרת ה-Last-Translator בקובצי gettext של GNU.אפסהגדל/הקטןaltדורש סקירהctrlלא למחוק קבצים זמניים (לצורך ניפוי שגיאות)לדוגמה ‪nplurals=2; plural=(n > 1);‬התאם תרגומים דומים מתוך הקובץמעבר לפריט במספר שורה נתוןhandle a poedit:// URIבצע תרגום מראש מזיכרון התרגוםshiftשפה לא ידועהגרסה בלתי־נתמכת (%s)you@example.com“%s” אינו קובץ POT חוקי.poedit-3.5/locales/ga.mo0000644000175100001770000014400314664354153012154 00000000000000\)%2 2 22<22J2gG3 33 33 333334 444'464<4B4K4_4s4w4444444444 4 4455 5"525H5^5m5555555 5 5 555606I6b6y66666666 7 '717:7C7 G7 S7`7o7 77 777778 8)8F8f8 |8188'889 9*97096h99)99 9]9W:<j:D:$:; ;%; ,;":;]; x;;;;;;;;<<#4<X<m<|< << <<<< <<=='= 8=F=/a= =======1>F> _>j>)>> >>>>> ??#?:?A?`?q????;? @'@?6@ v@ @@*@@@"@5 A@A[AvA|A A A A A AAAAAAABBu8B(BBB"BC &C1C@C QC ^CkC0|CCC#C<D"=D`D pD{D*D0D!D' E4E9EOE(nETE EE E FF+FK.{KKKK KKL*L:L@LQL bL mLxL4M8MQM jMvMMMM#MM'M+ N5N$JN%oNNNNNNVO qO }O OOO OOOOOP PP4PIPcPPPQ=QTQngQEQR#R oIogoyoooo ooooHo5.p7dp p3papH)M9'!3&LViZC#]%7nT61Qh !>qb:(m@>jf&c\T-0r545/d1D 2 B#+<\p93"J}QZ 7-,??TJj  zO $YM:O (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&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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(requires Windows 8 or newer)< &PreviousAbout %sAccountsAddAdd 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 languagesAlt+Always 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 translationCloseCollecting 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 errorCtrl+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 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 againDownDownloading 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:EnterEnter 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 loading translation file “%s”.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export errorExport 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…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)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport from TMX…Import translation files…Importing translation memory from “%s” failed.Importing translations…In: %sInclude beta versionsInformation 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 CrowdinLeftLine %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.No translations were found in the TMX file.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKObsolete stringsOneOnly 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 translation templateOpen...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: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 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:PurgePurge deleted translationsQuitQuit %sReading file content failed with the following error: %sRecentRecent 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 FinderReviewRightSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileSelect &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect your preferred languageServicesSet LanguageSet languageShift+Show AllShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow 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 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 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 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 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.Translated: %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 — %sTwoUTF-8 (recommended)UndoUnhandled exception occurred: %sUnix (recommended)UntransUpUpdateUpdate 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 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown 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: 2024-08-30 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 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áidAimsí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 %s&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&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á(0 nua, 0 as feidhm)(Tuilleadh eolais faoi GNU gettext)(Nua: %i, dulta i léig: %i)(Bain feidhm as an béarla réamhshocraithe)(Windows 8 nó níos déanaí)< &Roimhe SeoMaidir le %sCuntaisCuir leisCuir nóta tráchta leisCuir Comhaid Leis…Cuir Fillteáin Leis…Cuir Saoróg leis…Cuir nóta tráchta leisCuir comhadlann leis an réimCuir comhaid leis…Cuir fillteáin leis…Cuir saoróg leis…Lorgfhocail sa bhreisBratacha breise xgettext:CastaArdsocruithe Bailithe…Ardsocruithe bailitheArdsocruithe bailithe…Gach Comhad AistriúcháinGach nóta tráchtaBain úsáid as lorgfhocail réamhshocraithe le haghaidh teangacha a dtacaítear leoAlt+Athruigh an sprioc i gcónaí chuig réimse inchur téacsMír i réim na comhaid inchur:Mír i réim na treoirfhocail:CumaCuir i bhFeidhmAn 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 comhaidCealaighÁ chur i gceal…Ní féidir comhadlann shealadach a chruthú.Ní féidir an clár a rith: %sCeannlitir&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únFoinsí á 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ú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 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 CrowdinCtrl+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.Comhadlannaí:An bhfuil fonn ort tionscadal “%s” a scriosadh?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ísSaighead SíosNa 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&coirDé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:EnterMód LánscáileáinIontrá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 comhad aistriúcháin “%s” á luchtú.Earráid agus an comhad á oscailtEarráid agus an comhad á shábháilEarráid agus comhad XLIFF á lódáil: %sEarráidíGach RudCosáin eisiataBain Amach Chuig an TMX é…Easpórtáil mar…Earráid easpórtálaBain amach chuig an TMX é…Ní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:Teaghráin inaistrithe á mbailiú…Socrú an bhailitheoraBailitheoiríOrdú teipthe: %sTheip ar chumarsáid leis an bpróiseas Poedit.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.Á chríochnú…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)Úsáidte go minicGNU gettextGinearáltaComhaid HTMLCabhairFolaigh %sFolaigh na cinn eileCuir an Barra Taoibh i bhfolachCuir an Barra Stádais i bhfolachCuir an fógra seo i bhfolachAitheantasMá 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.Ná bac le cás uachtair/íochtairTabhair Isteach Ó TMX Iad…Tabhair Isteach Comhaid Aistriúcháin…Earráid ag tabhairt isteachTabhair isteach ó TMX iad…Tabhair isteach comhaid aistriúcháin…Theip ar an iarracht an chuimhne aistriúcháin ó "%s" a thabhairt isteach.Aistriúcháin á n-iompórtáil…I: %sLeaganacha béite san áireamhEolas faoin aistritheoirSuiteáilComhad neamhbhailíGairm:Comhaid Aistriúcháin JSONNá ScriosIs 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 eolaisTuilleadh eolais faoi CrowdinAr ChléLíne %d i gcomhad '%s' truaillithe (ní sonraí bailí %s é).Deireadh líne:Réim breiseáin scartha le leathstadanna (m.sh. *.cpp;*.h):Ní féidir comhaid MO a chur in eagar go díreach in Poedit.Cás ÍochtairCás UachtairCeanntásc míchumtha: '%s'Bainistigh…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íthNá 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…Ceann nua ó chomhad &POT/PO…Teaghráin nuaAn 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.Gan torthaíNíor aimsíodh aon fhadhb leis an aistriúchán.Níor aimsíodh aon aistriúcháin sa chomhad TMX.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 maithTeaghráin as feidhmAonNá 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 cruinneOscail Comhaid Le DéanaíComhaid aistriúcháin a oscailt agus a chur in eagar.Oscail comhadOscail san EagarthóirOscail san eagarthóirOscail comhaid le déanaíOscail teimpléad aistriúcháinOscail...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.Oscail 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 iolraLeaganacha 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.Is eagarthóir aistriúcháin é Poedit atá furasta feidhm a bhaint as.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.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:ScriosGlan aistriúcháin scriostaScoirScoir %sNíorbh fhéidir ábhar an chomhaid a léamh agus fuarthas an earráid seo: %sLe DéanaíComhaid le déanaíAthdhéanAthnuaighAthluchtaigh an ComhadAthluchtaigh an comhadFágtha: %dIonadaighIonadaigh &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úAr DheisCuir 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 dtaisceRoghnaigh &UileRoghnaigh UileRoghnaigh comhaid TMX le tabhairt isteachSelect directoryRoghnaigh comhad aistriúcháinRoghnaigh comhaid aistriúcháin le hiompórtáilRoghnaigh do rogha béarlaSeirbhísíRoghnaigh TeangaRoghnaigh teangaShift+Taispeáin UileTaispeá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 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 isteachLogáil isteach i CrowdinLogá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:Teaghrán le haimsiú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í.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.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í 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.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 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.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 teaghráin inaistrithe nua leis an gcomhad de láimh sa chóras Gettext. Ina áit sin, baintear go díreach ón bhunchod iad. Sa chaoi seo, fanann siad cruinn agus cothrom le dáta. De ghnáth, úsáideann aistritheoirí teimpléid PO (comhaid POT) a ullmhaíonn an forbróir.Aistrithe: %d as %d (%d %%)AistriúchánSprioctheangaCuimhne AistriúcháinTuilleadh &oibre de dhíthAiríonna an AistriúcháinTá 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 mholtaAistriúchán — %sDóUTF-8 (molta)CealaighTharla earráid gan réiteach: %sUnix (molta)NeamhaistritheSaighead SuasNuashonraigh éNuashonraigh 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úAistriúcháin á nuashonrúSonraí an úsáideora á nuashonrú…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 %sAg fanacht le fíordheimhniú…Fáilte go dtí PoeditAgus teaghráin sa bhunteanga á nuashonrúFocail iomlán amháinFuinneogWindowsTimfhilleadhTimfhilleadh ag:Comhaid Aistriúcháin XLIFFTá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.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áilaltTuilleadh oibre de dhíthctrlná scrios comhaid shealadacha (dífhabhtú)m.sh. nplurals=2; plural=(n > 1);garbhmheaitseáil laistigh den chomhadléim go dtí an mhír ar an líne shonraithedéileáil le URI poedit://réamhaistriúchán ón chuimhne aistriúcháinshiftteanga anaithnidleagan nach dtugtar tacaíocht dó (%s)tusa@seoladh.comNí comhad POT ceart é “%s”.poedit-3.5/locales/th.po0000644000175100001770000026750614664354065012223 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "ซ่อนข้อความแจ้งเตือนนี้" msgid "Don’t Show Again" msgstr "ไม่ต้องแสดงอีก" msgid "Don’t show again" msgstr "ไม่ต้องแสดงอีก" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(ใหม่: %i, ล้าสมัย: %i)" msgid "Collecting source files…" msgstr "กำลังรวบรวมไฟล์ต้นฉบับ…" msgid "Extracting translatable strings…" msgstr "กำลังแยกสตริงที่แปลได้…" msgid "Failed to load file with extracted translations." msgstr "ไม่สามารถโหลดไฟล์ที่มีการแปลแยก" msgid "Merging differences…" msgstr "กำลังผสานส่วนที่แตกต่าง…" msgid "Updating translations" msgstr "กำลังอัปเดตการแปลภาษา" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "ไฟล์ “%s” ไม่สามารถเปิดได้" msgid "Invalid file" msgstr "ไฟล์ไม่ถูกต้อง" #, c-format msgid "Malformed header: “%s”" msgstr "ส่วนหัวมีรูปแบบที่ไม่ถูกต้อง: \"%s\"" msgid "PO Translation Files" msgstr "ไฟล์การแปล PO" msgid "POT Translation Templates" msgstr "แม่แบบการแปล POT" msgid "XLIFF Translation Files" msgstr "ไฟล์แปลภาษา XLIFF" msgid "JSON Translation Files" msgstr "ไฟล์แปล JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "ไฟล์แปล Flutter" msgid "All Translation Files" msgstr "ไฟล์การแปลทั้งหมด" msgid "The file is in a format not recognized by Poedit." msgstr "ไฟล์อยู่ในรูปแบบที่ Poedit ไม่รู้จัก" msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "ไฟล์ JSON นี้ไม่ใช่ไฟล์การแปลและไม่สามารถแก้ไขได้ใน Poedit" #, c-format msgid "Reading file content failed with the following error: %s" msgstr "การอ่านเนื้อหาไฟล์ล้มเหลวโดยมีข้อผิดพลาดต่อไปนี้: %s" #, c-format msgid "" "File “%s” is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "ไฟล์ \"%s\" อ่านได้อย่างเดียวและไม่สามารถบันทึกได้\n" "โปรดบันทึกโดยใช้ชื่ออื่น" #, c-format msgid "Couldn’t save file %s." msgstr "ไม่สามารถบันทึกไฟล์ %s" msgid "Screenshots:" msgstr "ภาพหน้าจอ" #, c-format msgid "%i line of file “%s” was not loaded correctly." msgid_plural "%i lines of file “%s” were not loaded correctly." msgstr[0] "ไม่สามารถโหลดข้อมูล %i บรรทัดที่อยู่ในไฟล์ \"%s\" อย่างถูกต้องได้" #, c-format msgid "Line %d of file “%s” is corrupted (not valid %s data)." msgstr "ข้อมูลในบรรทัดที่ %d ในไฟล์ \"%s\" เสียหาย (ข้อมูล %s ไม่ถูกต้อง)" msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "แฟ้มรายการที่เสียหาย: รูปแบบเอกพจน์ถูกใช้ร่วมกับรูปแบบพหูพจน์" msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "ไฟล์ PO เสียหาย: รูปพหูพจน์ msgstr ถูกใช้โดยไม่มี msgid_plural" msgid "Couldn’t load the file, it is probably damaged." msgstr "ไม่สามารถโหลดไฟล์ เนื่องจากอาจเป็นเพราะไฟล์เสียหาย" msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "เกิดข้อผิดพลาดขณะโหลดไฟล์ ข้อมูลบางส่วนอาจขาดหายหรือไม่ถูกต้องดังผลลัพธ์" msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "มีปัญหาในการจัดรูปแบบไฟล์ให้เป็นระเบียบ (แต่ไฟล์ถูกบันทึกเรียบร้อยแล้ว)" #, 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 แทนและการตั้งค่าจะบันทึกตามนี้" msgid "Error saving file" msgstr "ข้อผิดพลาดขณะบันทึกแฟ้ม" #, c-format msgid "“%s” is not a valid POT file." msgstr "“%s” ไม่ใช่ไฟล์ POT ที่ถูกต้อง" #, c-format msgid "Error while loading XLIFF file: %s" msgstr "เกิดข้อผิดพลาดขณะโหลดไฟล์ XLIFF: %s" #, c-format msgid "unsupported version (%s)" msgstr "เวอร์ชั่นที่ไม่สนับสนุน (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML msgid "Broken markup in translation string." msgstr "มาร์กอัปใช้งานไม่ได้ในการแปลสตริง" msgid "(Use default language)" msgstr "(ใช้ภาษาเริ่มต้น)" msgid "Language selection" msgstr "การเลือกภาษา" msgid "Select your preferred language" msgstr "เลือกภาษาที่คุณต้องการ" msgid "You must restart Poedit for this change to take effect." msgstr "คุณต้องเริ่ม Poedit ใหม่เพื่อให้การเปลี่ยนแปลงมีผล" msgid "Add Account" msgstr "เพิ่มบัญชี" msgid "Add account" msgstr "เพิ่มบัญชี" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "เรียนรู้เพิ่มเติมเกี่ยวกับ %s" msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "เชื่อมต่อ Poedit กับแพลตฟอร์มการแปลบนคลาวด์ที่รองรับเพื่อซิงค์การแปลที่จัดการได้อย่างราบรื่น" msgid "How does cloud sync work?" msgstr "การซิงค์บนคลาวด์ทำงานอย่างไร" msgid "Account" msgstr "บัญชีผู้ใช้" msgid "(not signed in)" msgstr "(ไม่ได้เข้าสู่ระบบ)" msgid "File" msgstr "ไฟล์" msgid "Open cloud translation" msgstr "เปิดการแปลบนคลาวด์" msgid "Manage accounts" msgstr "จัดการบัญชี" msgid "Project:" msgstr "โครงการ:" msgid "Language:" msgstr "ภาษา:" msgid "Sign in to Cloud Account" msgstr "ลงชื่อเข้าใช้บัญชีคลาวด์" msgid "Sign in to cloud account" msgstr "ลงชื่อเข้าใช้บัญชีคลาวด์" msgid "No translation projects listed in your account." msgstr "ไม่มีโครงการแปลอยู่ในบัญชีของคุณ" msgid "Downloading latest translations…" msgstr "กำลังดาวน์โหลดการแปลล่าสุด…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #, c-format msgid "Sign in to %s" msgstr "เข้าสู่ระบบ %s" msgid "Syncing" msgstr "กำลังซิงค์" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s…" msgstr "กำลังอัปโหลดงานแปลไปยัง %s" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s failed." msgstr "การอัปโหลดคำแปลไปยัง %s ล้มเหลว" msgid "Syncing error" msgstr "ข้อผิดพลาดการซิงค์" msgid "Add" msgstr "เพิ่ม" msgid "Unknown Crowdin error." msgstr "ข้อผิดพลาด Crowdin ที่ไม่รู้จัก" msgid "Not authorized, please sign in again." msgstr "ไม่ได้รับอนุญาต โปรดเข้าสู่ระบบอีกครั้ง" msgid "Downloading translations is disabled in this project." msgstr "การดาวน์โหลดการแปลถูกปิดใช้งานในโครงการนี้" msgid "Sign In" msgstr "ลงชื่อเข้าใช้" msgid "Sign in" msgstr "ลงชื่อเข้าใช้" msgid "Sign Out" msgstr "ออกจากระบบ" msgid "Sign out" msgstr "ออกจากระบบ" msgid "Learn more about Crowdin" msgstr "เรียนรู้เพิ่มเติมเกี่ยวกับ Crowdin" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "Crowdin เป็นแพลตฟอร์มการจัดการโลคัลไลเซชันออนไลน์และเครื่องมือการแปลแบบร่วมมือกัน" msgid "Waiting for authentication…" msgstr "กำลังรอการรับรองความถูกต้อง..." msgid "Updating user information…" msgstr "กำลังอัปเดตข้อมูลผู้ใช้…" msgid "Sign in to Crowdin" msgstr "ลงชื่อเข้าใช้บัญชี Crowdin" msgid "Syncing with Crowdin failed." msgstr "การซิงค์กับ Crowdin ล้มเหลว" msgid "Crowdin error" msgstr "ข้อผิดพลาดของ Crowdin" msgid "Uploading translations…" msgstr "กำลังอัปโหลดงานแปล…" msgid "&Copy" msgstr "&คัดลอก" msgid "Learn more" msgstr "เรียนรู้เพิ่มเติม" msgid "&Help" msgstr "&ช่วยเหลือ" msgid "MO files can’t be directly edited in Poedit." msgstr "ไฟล์ MO ไม่สามารถแก้ไขโดยตรงใน Poedit ได้" msgid "Error opening file" msgstr "เกิดข้อผิดพลาดในการเปิดไฟล์" msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "โปรดเปิดและแก้ไขไฟล์ PO ที่เกี่ยวข้องแทน เมื่อคุณบันทึก ไฟล์ MO จะถูกอัพเดตไปด้วย" msgid "don’t delete temporary files (for debugging)" msgstr "ไม่ต้องลบไฟล์ชั่วคราว (สำหรับการดีบั๊ก)" msgid "handle a poedit:// URI" msgstr "จัดการ URI poedit://" msgid "go to item at given line number" msgstr "ไปยังรายการที่อยู่ในหมายเลขบรรทัดที่ระบุ" msgid "Failed to communicate with Poedit process." msgstr "การสื่อสารกับกระบวนการ Poedit ล้มเหลว" #, c-format msgid "Unhandled exception occurred: %s" msgstr "เกิดข้อยกเว้นที่จัดการไม่ได้: %s" msgid "Select translation template" msgstr "เลือกเทมเพลตการแปล" msgid "Select translation file" msgstr "เลือกไฟล์แปล" msgid "Poedit is an easy to use translation editor." msgstr "Poedit เป็นโปรแกรมแก้ไขการแปลที่ง่ายต่อการใช้งาน" msgid "You can’t drop more than one file on Poedit window." msgstr "คุณไม่สามารถวางไฟล์มากกว่าหนึ่งไฟล์ในหน้าต่าง Poedit" #, c-format msgid "File “%s” is not a translation file." msgstr "ไฟล์ “%s” ไม่ใช่ไฟล์ในการแปล" #, c-format msgid "File “%s” doesn’t exist." msgstr "ไม่มีไฟล์ \"%s\" อยู่" 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". #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "การตรวจคำสะกดถูกปิดใช้งาน เนื่องจากไม่ได้ติดตั้งพจนานุกรมสำหรับภาษา %s" msgid "Install" msgstr "ติดตั้ง" #, c-format msgid "The file “%s” has been changed by another application." msgstr "ไฟล์ \"%s\" ถูกเปลี่ยนแปลงโดยแอปพลิเคชันอื่นแล้ว" msgid "Reload file" msgstr "โหลดไฟล์ซ้ำ" msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "คุณต้องการรีโหลดไฟล์จากดิสก์หรือไม่? การแก้ไขที่ยังไม่บันทึกของคุณใน Poedit จะสูยหายหากคุณรีโหลด" msgid "Ignore" msgstr "เพิกเฉย" msgid "Reload File" msgstr "โหลดไฟล์ซ้ำ" msgid "The file has been modified. Do you want to save changes?" msgstr "ไฟล์ถูกเปลี่ยนแปลง คุณต้องการบันทึกการเปลี่ยนแปลงหรือไม่?" msgid "Save changes" msgstr "บันทึกการเปลี่ยนแปลง" msgid "Your changes will be lost if you don’t save them." msgstr "การเปลี่ยนแปลงของคุณจะสูญหายถ้าคุณไม่บันทึกไว้" msgid "Save" msgstr "บันทึก" msgid "Do&n’t save" msgstr "&ไม่ต้องบันทึก" msgid "Don’t Save" msgstr "ไม่ต้องบันทึก" msgid "The changes made by the other application will be lost if you save." msgstr "การเปลี่ยนแปลงที่ทำโดยแอปพลิเคชันอื่นจะถูกละทิ้งและการเปลี่นแปลงนั้นจะสูญหาย" msgid "Cancel" msgstr "ยกเลิก" msgid "Save Anyway" msgstr "บันทึกต่อไป" msgid "Save anyway" msgstr "บันทึกต่อไป" msgid "Save as…" msgstr "บันทึกเป็น…" msgid "Compile to…" msgstr "คอมไพล์ไปยัง…" msgid "Compiled Translation Files" msgstr "ไฟล์การแปลที่คอมไพล์แล้ว" msgid "Export to HTML…" msgstr "" msgid "HTML Files" msgstr "ไฟล์ HTML" #, c-format msgid "In: %s" msgstr "ใน: %s" msgid "Source code not available." msgstr "ซอร์สโค้ดไม่พร้อมใช้งาน" msgid "Updating failed" msgstr "การอัปเดตล้มเหลว" 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 "" "ไม่สามารถอัพเดตการแปลจากซอร์สโค้ดได้ เนื่องจากไม่พบโค้ดใดๆ ในตำแหน่งที่ระบุในคุณสมบัติของไฟล์" msgid "Permission denied." msgstr "สิทธิ์การใช้งานถูกปฏิเสธ!" 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. 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. msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "หากก่อนหน้านี้คุณถูกปฏิเสธการเข้าถึงไฟล์ของคุณ คุณสามารถอนุญาตได้ในการตั้งค่าระบบ> " "ความปลอดภัยและความเป็นส่วนตัว> ความเป็นส่วนตัว> ไฟล์และโฟลเดอร์" msgid "Translation entries in the file are probably incorrect." msgstr "รายการการแปลในไฟล์อาจไม่ถูกต้อง" msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "การอัปเดตไฟล์ล้มเหลว คลิกที่ \"รายละเอียด >>\" เพื่อดูรายละเอียด" msgid "Open translation template" msgstr "เปิดแม่แบบการแปล" #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "พบปัญหา %d รายการในการแปล" msgid "Validation results" msgstr "ผลการตรวจสอบ" msgid "" "Entries with errors were marked in red in the list. Details of the error " "will be shown when you select such an entry." msgstr "" "รายการที่มีข้อผิดพลาดจะถูกทำเครื่องหมายเป็นสีแดงไว้ในรายการ " "รายละเอียดของข้อผิดพลาดจะแสดงเมื่อคุณเลือกรายการดังกล่าว" msgid "The file was saved safely." msgstr "บันทึกไฟล์อย่างปลอดภัยแล้ว" msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "บันทึกไฟล์อย่างปลอดภัยและคอมไพล์ไฟล์เป็นรูปแบบ MO แล้ว แต่ไฟล์อาจทำงานอย่างไม่ถูกต้อง" msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "บันทึกไฟล์อย่างปลอดภัยแล้ว แต่ไม่สามารถคอมไพล์เป็นรูปแบบ MO และไม่สามารถนำมาใช้งานได้" msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "คอมไพล์ไฟล์เป็นรูปแบบ MO แล้ว แต่ไฟล์อาจทำงานอย่างไม่ถูกต้อง" msgid "The file cannot be compiled into the MO format and used." msgstr "ไม่สามารถคอมไพล์ไฟล์เป็นรูปแบบ MO และไม่สามารถนำมาใช้งานได้" msgid "No problems with the translation found." msgstr "ไม่พบปัญหาในการแปล" #, 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 รายการ" msgid "The translation is ready for use." msgstr "การแปลพร้อมใช้งานแล้ว" #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "Poedit ได้แก้ไขเนื้อหาที่ไม่ถูกต้องในไฟล์ “%s” โดยอัตโนมัติแล้ว" msgid "" "The file contained duplicate items, which is not allowed in PO files and " "would prevent the file from being used. Poedit fixed the issue, but you " "should review translations of any items marked as needing work and correct " "them if necessary." msgstr "" "ไฟล์นี้ประกอบด้วยรายการที่ซ้ำกัน ซึ่งไม่สามารถมีในไฟล์ PO " "และอาจทำให้ไฟล์ดังกล่าวไม่สามารถนำมาใช้งานได้ Poedit จึงได้แก้ไขปัญหาไว้แล้ว " "แต่คุณก็ควรจะตรวจทานการแปลรายการบางรายการที่ถูกทำเครื่องหมายว่าต้องการตรวจทานและแก้ไขให้ถูกต้องเมื่อจำเป็น" msgid "Language of the translation isn’t set." msgstr "ไม่ได้กำหนดภาษาการแปล" msgid "Set Language" msgstr "กำหนดภาษา" msgid "Set language" msgstr "กำหนดภาษา" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." msgid "" "Suggestions are not available if the translation language is not set " "correctly. Other features, such as plural forms, may be affected as well." msgstr "" "คำแนะนำจะไม่สามารถใช้งานได้ถ้าคุณไม่ได้กำหนดภาษาการแปลอย่างถูกต้อง " "โดยอาจมีผลกระทบต่อคุณสมบัติอื่นๆ ด้วย อย่างเช่นรูปแบบพหูพจน์ ฯลฯ" msgid "Language of the translation is the same as source language." msgstr "ภาษาการแปลเหมือนกับภาษาต้นฉบับ" msgid "Fix Language" msgstr "แก้ไขภาษา" msgid "Fix language" msgstr "แก้ไขภาษา" msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "ไฟล์นี้มีรายการที่มีรูปแบบพหูพจน์ แต่ไม่ได้กำหนดค่าส่วนหัว Plural-Forms ไว้" msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "รายการในไฟล์นี้มีการนับรูปแบบพหูพจน์แตกต่างจากที่กำหนดไว้ในส่วนหัว Plural-Forms ของไฟล์" msgid "Required header Plural-Forms is missing." msgstr "ส่วนหัว Plural-Forms ที่จำเป็นไม่มีอยู่" #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "ไวยากรณ์ผิดพลาดในส่วนหัว Plural-Forms (\"%s\")" msgid "Fix the Header" msgstr "แก้ไขส่วนหัว" 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". #, 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.")" msgid "Review" msgstr "ตรวจทาน" msgid "Would you like to use English for source text?" msgstr "คุณต้องการใช้ภาษาอังกฤษสำหรับข้อความต้นฉบับหรือไม่?" #, 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" msgid "Load English" msgstr "โหลดภาษาอังกฤษ" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "แปลแล้ว: %d จาก %d (%d %%)" #, c-format msgid "Remaining: %d" msgstr "คงเหลือ: %d" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "ข้อผิดพลาด %d รายการ" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d รายการ" msgid " (unsaved)" msgstr " (ยังไม่ได้บันทึก)" msgid " (modified)" msgstr " (ถูกแก้ไข)" #, c-format msgid "Failed to update translation memory: %s" msgstr "ไม่สามารถอัพเดตหน่วยความจำการแปล: %s" msgid "Remove same-as-source translations" msgstr "" msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" msgid "Keep" msgstr "เก็บไว้" msgid "Remove" msgstr "" msgid "Purge deleted translations" msgstr "ล้างข้อมูลการแปลที่ลบไปแล้ว" msgid "Do you want to remove all translations that are no longer used?" msgstr "คุณต้องการลบการแปลทั้งหมดที่ไม่ได้ใช้งานอีกต่อไปหรือไม่" 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 "" "ถ้าคุณดำเนินการล้างข้อมูลต่อไป การแปลทั้งหมดที่ทำเครื่องหมายว่าลบแล้วจะถูกเอาออกอย่างถาวร " "ถ้ามีการนำข้อความเหล่านี้กลับมาใช้อีกในอนาคต คุณจะต้องแปลข้อความเหล่านี้ใหม่" msgid "Purge" msgstr "ล้างข้อมูล" msgid "Copy from source text" msgstr "คัดลอกจากข้อความต้นฉบับ" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "ล้างการแปล" msgid "Clear Translation" msgstr "ล้างการแปล" msgid "Edit comment" msgstr "แก้ไขคำแนะนำ" msgid "Edit Comment" msgstr "แก้ไขคำแนะนำ" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "ตำแหน่งที่พบในรหัส" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "ตำแหน่งที่พบในรหัส" msgid "Hide Sidebar" msgstr "ซ่อนแถบด้านข้าง" msgid "Show Sidebar" msgstr "แสดงแถบด้านข้าง" msgid "Hide Status Bar" msgstr "ซ่อนแถบสถานะ" msgid "Show Status Bar" msgstr "แสดงแถบสถานะ" msgid "String length in characters: translation | source" msgstr "ความยาวสตริงในหน่วยอักขระ: การแปล | ต้นฉบับ" msgid "String length in characters" msgstr "ความยาวสตริงในหน่วยอักขระ" msgid "Source text" msgstr "ข้อความต้นฉบับ" msgid "Singular" msgstr "เอกพจน์" msgid "Plural" msgstr "พหูพจน์" msgid "Translation" msgstr "การแปล" msgid "Pre-translated" msgstr "แปลล่วงหน้าแล้ว" 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. msgid "Needs work" msgstr "ต้องการตรวจทาน" msgid "" "POT files are only templates and don’t contain any translations themselves.\n" "To make a translation, create a new PO file based on the template." msgstr "" "ไฟล์ POT เป็นเพียงแม่แบบเท่านั้นและไม่ประกอบด้วยการแปลใดๆ\n" "เมื่อต้องการทำการแปล ให้สร้างไฟล์ PO ใหม่โดยยึดตามแม่แบบ" msgid "Create new translation" msgstr "สร้างการแปลใหม่" msgid "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 msgid "Source text ID" msgstr "รหัสข้อความต้นฉบับ" msgid "Everything" msgstr "ทุกอย่าง" #, c-format msgid "Form %i" msgstr "ฟอร์ม %i" #, c-format msgid "Form %i (unused)" msgstr "แบบฟอร์ม %i (ไม่ได้ใช้งาน)" msgid "Zero" msgstr "ศูนย์" msgid "One" msgstr "หนึ่ง" msgid "Two" msgstr "สอง" msgid "Other" msgstr "อื่นๆ" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, c-format msgid "String context: %s" msgstr "บริบทสตริง: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #, c-format msgid "String identifier: %s" msgstr "ตัวระบุสตริง: %s" #, c-format msgid "%s Format" msgstr "รูปแบบ %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "รูปแบบ %s" #, c-format msgid "Translation — %s" msgstr "การแปล — %s" msgid "ID" msgstr "ID" #, c-format msgid "Source text — %s" msgstr "ข้อความต้นฉบับ — %s" msgid "unknown language" msgstr "ภาษาที่ไม่รู้จัก" #, c-format msgid "Network error: %s (%d)" msgstr "" msgid "Unknown error" msgstr "" #, c-format msgid "Failed command: %s" msgstr "คำสั่งที่ล้มเหลว: %s" msgid "Failed to merge gettext catalogs." msgstr "การผสานแค็ตตาล็อก gettext ล้มเหลว" msgid "Open in Editor" msgstr "เปิดในตัวแก้ไข" msgid "Open in editor" msgstr "เปิดในตัวแก้ไข" msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "ไม่มีข้อมูลเกี่ยวกับตำแหน่งที่พบของสตริงนี้ในรหัสต้นฉบับในไฟล์" msgid "No usage information" msgstr "ไม่มีข้อมูลการใช้" #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "ตำแหน่งที่พบในรหัส %d ตำแหน่ง" msgid "Source code not found" msgstr "ไม่พบรหัสต้นฉบับ" 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 ไม่สามารถแสดงรหัสต้นฉบับส่วนที่ใช้สตริงได้ เนื่องจากไม่มีไฟล์ในตำแหน่งที่อ้างอิง " "หรือเป็นการอ้างอิงแบบสัญลักษณ์ที่ไม่ชี้ไปยังไฟล์จริง" msgid "File cannot be opened" msgstr "ไม่สามารถเปิดไฟล์" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "Poedit ไม่สามารถเปิดไฟล์ “%s”" msgid "Find" msgstr "ค้นหา" msgid "Replace" msgstr "แทน​ที่" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "ตัวเลือก" msgid "Ignore case" msgstr "ละเว้นตัวพิมพ์" msgid "Wrap around" msgstr "ตัดรอบๆ" msgid "Whole words only" msgstr "ทั้งคำเท่านั้น" msgid "Find in source texts" msgstr "ค้นหาในข้อความต้นฉบับ" msgid "Find in translations" msgstr "ค้นหาในการแปล" msgid "Find in comments" msgstr "ค้นหาในคำแนะนำ" msgid "Close" msgstr "ปิด" msgid "Replace &All" msgstr "แทนที่ &ทั้งหมด" msgid "Replace &all" msgstr "แทนที่ &ทั้งหมด" msgid "&Replace" msgstr "&แทนที่" msgid "< &Previous" msgstr "< &ก่อนหน้า" msgid "&Next >" msgstr "&ถัดไป >" msgid "String to find" msgstr "สตริงที่จะค้นหา" msgid "Replacement string" msgstr "สตริงการแทนที่" #, c-format msgid "Cannot execute program: %s" msgstr "ไม่สามารถเรียกใช้โปรแกรม: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "ชื่อภาษาหรือรหัส" msgid "Translation Language" msgstr "ภาษาการแปล" msgid "Language of the translation:" msgstr "ภาษาของการแปล:" msgid "All strings" msgstr "สตริงทั้งหมด" msgid "Couldn’t download Localazy project details." msgstr "ไม่สามารถดาวน์โหลดรายละเอียดโปรเจ็กต์ Localazy ได้" msgid "There was an error when uploading translations to Localazy." msgstr "เกิดข้อผิดพลาดขณะอัปโหลดคำแปลไปยัง Localazy" msgid "Projects" msgstr "โครงการ" msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Localazy " "เป็นแพลตฟอร์มการแปลอัตโนมัติที่ช่วยให้ทุกคนสามารถแปลผลิตภัณฑ์และเนื้อหาของตนเป็นหลายภาษาได้อย่างง่ายดาย" msgid "Add Project" msgstr "เพิ่มโครงการ" msgid "Add project" msgstr "เพิ่มโครงการ" msgid "Poedit - Catalogs manager" msgstr "Poedit - ตัวจัดการแค็ตตาล็อก" msgid "Edit…" msgstr "แก้ไข…" msgid "Create new translations project" msgstr "สร้างโครงการแปลใหม่" msgid "Delete the project" msgstr "ลบโครงการ" msgid "Edit the project" msgstr "แก้ไขโครงการ" msgid "Update all" msgstr "อัปเดตทั้งหมด" msgid "Update all catalogs in the project" msgstr "อัพเดตแค็ตตาล็อกทั้งหมดในโครงการ" msgid "Total" msgstr "ทั้งหมด" msgid "Untrans" msgstr "ไม่ได้แปล" msgctxt "column/row header" msgid "Needs Work" msgstr "ต้องการตรวจทาน" msgid "Errors" msgstr "ข้อผิดพลาด" msgid "Last modified" msgstr "ปรับเปลี่ยนล่าสุด" msgid "Select directory" msgstr "เลือกไดเรกทอรี" msgid "Directories:" msgstr "ที่ตั้ง:" msgid "" msgstr "<ไม่มีชื่อ>" #, c-format msgid "Do you want to delete project “%s”?" msgstr "คุณต้องการลบโครงการ “%s” หรือไม่?" msgid "Delete project" msgstr "ลบโครงการ" msgid "Deleting the project will not delete any translation files." msgstr "การลบโครงการจะไม่ลบไฟล์การแปลใดๆ" msgid "Confirmation" msgstr "การยืนยัน" msgid "Update all catalogs in this project?" msgstr "ต้องการอัพเดตรายการทั้งหมดในโครงการนี้หรือไม่?" msgid "Performs update from source code on all files in the project." msgstr "ทำการอัพเดตจากรหัสต้นฉบับบนไฟล์ทั้งหมดในโครงการ" msgid "Check for Updates…" msgstr "ตรวจหาการอัพเดต…" msgid "Catalogs Manager" msgstr "ตัวจัดการแค็ตตาล็อก" msgid "&Preferences…" msgstr "&การตั้งค่า..." msgid "&Edit" msgstr "แ&ก้ไข" msgid "Undo" msgstr "เลิกทำ" msgid "Redo" msgstr "ทำซ้ำ" msgid "Paste and Match Style" msgstr "วางและปรับลักษณะให้ตรงกัน" msgid "Delete" msgstr "ลบ" msgid "Spelling and Grammar" msgstr "การสะกดและไวยากรณ์" msgid "Show Spelling and Grammar" msgstr "แสดงการสะกดและไวยากรณ์" msgid "Check Document Now" msgstr "ตรวจสอบเอกสารตอนนี้" msgid "Check Spelling While Typing" msgstr "ตรวจสอบการสะกดขณะป้อน" msgid "Check Grammar With Spelling" msgstr "ตรวจสอบไวยากรณ์ด้วยการสะกด" msgid "Correct Spelling Automatically" msgstr "แก้ไขการสะกดโดยอัตโนมัติ" msgid "Substitutions" msgstr "การเปลี่ยนแทนที่" msgid "Show Substitutions" msgstr "แสดงการเปลี่ยนแทนที่" msgid "Smart Copy/Paste" msgstr "คัดลอกหรือวางอัจฉริยะ" msgid "Smart Quotes" msgstr "อัญประกาศอัจฉริยะ" msgid "Smart Dashes" msgstr "ขีดกลางอัจฉริยะ" msgid "Smart Links" msgstr "ลิงก์อัจฉริยะ" msgid "Text Replacement" msgstr "การแทนที่ข้อความ" msgid "Transformations" msgstr "การแปลงรูปแบบ" msgid "Make Upper Case" msgstr "ทำให้เป็นตัวพิมพ์ใหญ่" msgid "Make Lower Case" msgstr "ทำให้เป็นตัวพิมพ์เล็ก" msgid "Capitalize" msgstr "ขึ้นต้นด้วยตัวพิมพ์ใหญ่" msgid "Speech" msgstr "เสียงพูด" msgid "Start Speaking" msgstr "เริ่มพูด" msgid "Stop Speaking" msgstr "หยุดพูด" msgid "&View" msgstr "&มุมมอง" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Show Toolbar" msgstr "แสดงแถบเครื่องมือ" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Customize Toolbar…" msgstr "กำหนดแถบเครื่องมือ..." #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Enter Full Screen" msgstr "เข้าโหมดเต็มหน้าจอ" msgid "Window" msgstr "หน้าต่าง" msgid "Minimize" msgstr "ย่อให้เล็กที่สุด" msgid "Zoom" msgstr "ย่อ/ขยาย" msgid "Welcome to Poedit" msgstr "ยินดีต้อนรับสู่ Poedit" msgid "Bring All to Front" msgstr "นำทั้งหมดมาด้านหน้า" msgid "Information about the translator" msgstr "ข้อมูลเกี่ยวกับผู้แปล" msgid "Name:" msgstr "ชื่อ:" msgid "Your Name" msgstr "ชื่อของคุณ" msgid "Email:" msgstr "อีเมล:" msgid "you@example.com" msgstr "you@example.com" msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "ชื่อและที่อยู่อีเมลของคุณจะถูกนำไปใช้เพื่อกำหนดส่วนหัว Last-Translator ของไฟล์ GNU gettext " "เท่านั้น" msgid "Editing" msgstr "การแก้ไข" msgid "Automatically compile MO file when saving" msgstr "คอมไพล์ไฟล์ MO โดยอัตโนมัติเมื่อบันทึก" msgid "Show summary after updating files" msgstr "แสดงสรุปหลังจากอัพเดตไฟล์" msgid "Check spelling" msgstr "การตรวจสอบการสะกด" msgid "Always change focus to text input field" msgstr "เปลี่ยนโฟกัสไปยังพื้นที่ป้อนข้อความ" msgid "" "Never let the list of strings take focus. If enabled, you must use Ctrl-" "arrows for keyboard navigation but you can also type text immediately, " "without having to press Tab to change focus." msgstr "" "อย่าโฟกัสไปที่รายการสตริง ถ้าเปิดใช้งาน คุณจะต้องใช้ลูกศรและ Ctrl สำหรับการนำทางแป้นพิมพ์ " "แต่คุณก็สามารถพิมพ์ข้อความได้ทันที โดยไม่ต้องกดปุ่ม Tab เพื่อเปลี่ยนโฟกัส" msgid "Appearance" msgstr "ลักษณะที่ปรากฏ" msgid "Use custom list font:" msgstr "ใช้แบบอักษรรายการแบบกำหนดเอง:" msgid "Use custom text fields font:" msgstr "ใช้แบบอักษรพื้นที่ข้อความแบบกำหนดเอง:" msgid "Change UI language" msgstr "เปลี่ยนภาษา UI" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions msgid "(requires Windows 8 or newer)" msgstr "(จำเป็นต้องใช้ Windows 8 หรือใหม่กว่า)" msgid "General" msgstr "ทั่วไป" msgid "Use translation memory" msgstr "ใช้หน่วยความจำการแปล" msgid "Manage…" msgstr "จัดการ…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "เมื่ออัปเดตจากแหล่งข้อมูล" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "การจับคู่แบบ Fuzzy ภายในไฟล์" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "แปลจากหน่วยความจำการแปลล่วงหน้า" 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 " "สามารถพยายามเติมข้อมูลรายการใหม่จากในการแปลก่อนหน้าในไฟล์หรือจากหน่วยความจำการแปลทั้งหมดของคุณได้ " "การใช้หน่วยความจำการแปลจะไม่ค่อยมีประสิทธิภาพมากถ้าหน่วยความจำการแปลนั้นแทบจะว่างเปล่า " "แต่ถ้าหากคุณแปลมากขึ้น หน่วยความจำการแปลก็จะดีขึ้นเอง" msgid "Stored translations:" msgstr "การแปลที่เก็บไว้:" msgid "Database size on disk:" msgstr "ขนาดฐานข้อมูลบนดิสก์" msgid "Import Translation Files…" msgstr "นำเข้าไฟล์การแปล…" msgid "Import translation files…" msgstr "นำเข้าไฟล์การแปล…" msgid "Import From TMX…" msgstr "นำเข้าจาก TMX…" msgid "Import from TMX…" msgstr "นำเข้าจาก TMX…" msgid "Export To TMX…" msgstr "ส่งออกเป็น TMX…" msgid "Export to TMX…" msgstr "ส่งออกเป็น TMX…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). msgid "Reset" msgstr "รีเซ็ต" msgid "Select translation files to import" msgstr "เลือกไฟล์การแปลที่จะนำเข้า" msgid "Translation Memory" msgstr "หน่วยความจำการแปล" msgid "Importing translations…" msgstr "กำลังนำเข้าการแปล…" #, c-format msgid "Error loading translation file “%s”." msgstr "เกิดข้อผิดพลาดในการโหลดไฟล์การแปล \"%s\"" msgid "Finalizing…" msgstr "กำลังดำเนินการขั้นสุดท้าย…" msgid "Select TMX files to import" msgstr "เลือกไฟล์ TMX ที่จะนำเข้า" msgid "TMX Files" msgstr "ไฟล์ TMX" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "ไม่สามารถนำเข้าหน่วยความจำการแปลจาก “%s”" msgid "Import error" msgstr "ข้อผิดพลาดการนำเข้า" msgid "Export as…" msgstr "ส่งออกเป็น…" msgid "Exporting translations…" msgstr "กำลังส่งออกการแปล…" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "ไม่สามารถส่งออกหน่วยความจำการแปลเป็น “%s”" msgid "Export error" msgstr "ข้อผิดพลาดการส่งออก" msgid "Reset translation memory" msgstr "รีเซ็ตหน่วยความจำการแปล" msgid "Are you sure you want to reset the translation memory?" msgstr "คุณแน่ใจหรือว่าคุณต้องการรีเซ็ตหน่วยความจำการแปล" 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. msgid "TM" msgstr "หน่วยความจำการแปล" msgid "" "Source code extractors are used to find translatable strings in the source " "code files and extract them so that they can be translated." msgstr "ตัวแยกซอร์สโค้ดใช้สำหรับค้นหาสตริงที่แปลได้ในไฟล์ซอร์สโค้ดและแยกสตริงออกมาเพื่อให้สามารถแปลได้" msgid "Custom Extractors:" msgstr "ตัวแยกแบบกำหนดเอง:" msgid "Custom extractors:" msgstr "ตัวแยกแบบกำหนดเอง:" msgid "GNU gettext" msgstr "GNU gettext" 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 และอื่นๆ)" msgid "Delete extractor" msgstr "ลบตัวแยก" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "คุณแน่ใจหรือว่าคุณต้องการลบตัวแยก \"%s\"" msgid "Extractors" msgstr "ตัวแยก" msgid "Accounts" msgstr "บัญชี" msgid "Automatically check for updates" msgstr "ตรวจหาการอัพเดตโดยอัตโนมัติ" msgid "Include beta versions" msgstr "ประกอบด้วยเวอร์ชั่นเบต้า" msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "เวอร์ชั่นเบต้าประกอบด้วยคุณสมบัติและการปรับปรุงใหม่ล่าสุด แต่อาจเสถียรน้อยกว่า" msgid "Updates" msgstr "อัพเดต" msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "การตั้งค่าเหล่านี้มีผลต่อการจัดรูปแบบภายในของไฟล์ PO ปรับการตั้งค่าเหล่านี้ถ้าคุณมีความจำเป็นเฉพาะ " "อย่างเช่น เนื่องจากการควบคุมเวอร์ชั่น" msgid "Line endings:" msgstr "สิ้นสุดบรรทัด:" msgid "Unix (recommended)" msgstr "Unix (แนะนำ)" msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "ตัดที่:" msgid "Preserve formatting of existing files" msgstr "รักษาการจัดรูปแบบของไฟล์ที่มีอยู่" msgid "Advanced" msgstr "ขั้นสูง" msgid "Settings" msgstr "" msgid "Preparing strings…" msgstr "กําลังเตรียมสตริง..." msgid "Pre-translating from translation memory…" msgstr "การแปลล่วงหน้าจากหน่วยความจําการแปล..." #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "%u สตริงที่แปลล่วงหน้าแล้ว" msgid "Pre-translating…" msgstr "กำลังแปลล่วงหน้า…" 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. msgid "Pre-translate" msgstr "แปลล่วงหน้า" msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "การแปลล่วงหน้าจำเป็นต้องมีข้อความต้นฉบับให้พร้อมใช้งาน มันจะไม่ทำงานหากใช้เฉพาะ ID " "ที่ไม่มีข้อความจริงเท่านั้น" msgid "Cannot pre-translate from unknown language." msgstr "ไม่สามารถแปลล่วงหน้าจากภาษาที่ไม่รู้จักได้" msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "การแปลล่วงหน้าจำเป็นต้องทราบภาษาของข้อความต้นฉบับ Poedit ตรวจไม่พบในไฟล์นี้" msgid "Only fill in exact matches" msgstr "เติมข้อมูลลงในรายการที่ตรงกันเท่านั้น" msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "ตามค่าเริ่มต้น ผลลัพธ์ที่ไม่ถูกต้องจะรวมอยู่ด้วย แต่ทำเครื่องหมายว่าต้องดำเนินการ " "เลือกตัวเลือกนี้เพื่อรวมเฉพาะการจับคู่ที่สมบูรณ์แบบเท่านั้น" msgid "Don’t mark exact matches as needing work" msgstr "ไม่ต้องทำเครื่องหมายรายการที่ตรงกันว่าต้องการทำงาน" 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 "" "เปิดใช้งานก็ต่อเมื่อคุณเชื่อถือคุณภาพของหน่วยความจำการแปลของคุณเท่านั้น โดยเริ่มต้น " "รายการที่ตรงกันจากหน่วยความจำการแปลจะถูกทำเครื่องหมายว่าต้องการตรวจทานและควรจะได้รับการตรวจทานก่อนจะนำไปใช้" msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "การแปลล่วงหน้าจะค้นหารายการที่ตรงกับสตริงที่ยังไม่ได้แปลอย่างถูกต้องหรือคลุมเครือในหน่วยความจำการแปลและนำมาเติมข้อมูลลงในการแปลโดยอัตโนมัติ" #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%d รายการได้ถูกแปลล่วงหน้าแล้ว" msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "การแปลจะถูกทำเครื่องหมายว่าต้องการตรวจทาน เนื่องจากอาจไม่แม่นยำ " "คุณควรตรวจทานการแปลเหล่านี้อีกครั้งเพื่อความถูกต้อง" msgid "No entries could be pre-translated." msgstr "ไม่มีรายการที่สามารถแปลล่วงหน้าได้" msgid "" "The TM doesn’t contain any strings similar to the content of this file. It " "is only effective for semi-automatic translations after Poedit learns enough " "from files that you translated manually." msgstr "" "หน่วยความจำการแปลไม่ประกอบด้วยสตริงใดๆ ที่คล้ายกับเนื้อหาในไฟล์นี้ " "จะมีประสิทธิภาพสำหรับการแปลกึ่งอัตโนมัติหลังจาก Poedit " "เรียนรู้จากไฟล์ที่คุณแปลเองมากพอแล้วเท่านั้น" msgid "Cancelling…" msgstr "กำลังยกเลิก…" msgid "Drag Folders or Files Here" msgstr "ลากโฟลเดอร์หรือไฟล์มาที่นี่" msgid "Drag folders or files here" msgstr "ลากโฟลเดอร์หรือไฟล์มาที่นี่" msgid "Add Folders…" msgstr "เพิ่มโฟลเดอร์…" msgid "Add folders…" msgstr "เพิ่มโฟลเดอร์…" msgid "Add Files…" msgstr "เพิ่มไฟล์…" msgid "Add files…" msgstr "เพิ่มไฟล์…" msgid "Add Wildcard…" msgstr "เพิ่มอักขระตัวแทน…" msgid "Add wildcard…" msgstr "เพิ่มอักขระตัวแทน…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) msgid "Reveal in Finder" msgstr "แสดงใน Finder" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" msgid "Show in Explorer" msgstr "แสดงใน Explorer" msgid "Show in Folder" msgstr "แสดงในโฟลเดอร์" msgid "Paths" msgstr "เส้นทาง" msgid "Excluded paths" msgstr "เส้นทางที่คัดออก" msgid "Advanced extraction settings" msgstr "การตั้งค่าการแยกขั้นสูง" msgid "Extract notes for translators from:" msgstr "แยกบันทึกย่อสำหรับนักแปลจาก:" msgid "Comments prefixed with:" msgstr "คำแนะนำที่ขึ้นต้นด้วย:" msgid "All comments" msgstr "คำแนะนำทั้งหมด" msgid "Additional xgettext flags:" msgstr "ค่าสถานะ xgettext เพิ่มเติม:" msgid "Additional keywords" msgstr "คำสำคัญเพิ่มเติม" msgid "Name of the project the translation is for" msgstr "ชื่อโครงการแปล" msgid "Team name and email address or URL" msgstr "ชื่อทีมและที่อยู่อีเมลหรือ URL" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "เช่น nplurals=2; plural=(n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (แนะนำ)" msgid "Please save the file first. This section cannot be edited until then." msgstr "โปรดบันทึกไฟล์ก่อน จึงจะสามารถแก้ไขส่วนนี้ได้" msgid "Placeholders correctness" msgstr "" "ข้อความนี้ไม่มีข้อมูลบริบท ข้อความที่ใช้ใน poedit.pot ตำแหน่งในไฟล์: 526\n" "ไฟล์: App strings" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "ไม่มีตัวยึดตำแหน่ง “%s” จากการแปล" #, c-format msgid "Superfluous placeholder “%s” that isn’t in source text." msgstr "ตัวแทนฟุ่มเฟือย “%s” ที่ไม่ได้อยู่ในข้อความต้นฉบับ" msgid "Plural form translations" msgstr "การแปลรูปพหูพจน์" msgid "Not all plural forms are translated." msgstr "ไม่ได้แปลรูปแบบพหูพจน์ทั้งหมด" msgid "Inconsistent upper/lower case" msgstr "ตัวพิมพ์ใหญ่-เล็กไม่สม่ำเสมอกัน" msgid "The translation should start as a sentence." msgstr "การแปลควรเริ่มต้นด้วยประโยค" msgid "The translation should start with a lowercase character." msgstr "การแปลควรเริ่มต้นด้วยตัวอักษรตัวพิมพ์เล็ก" msgid "Inconsistent whitespace" msgstr "ช่องว่างไม่สม่ำเสมอกัน" msgid "The translation doesn’t start with a space." msgstr "การแปลไม่ได้เริ่มต้นด้วยช่องว่าง" msgid "The translation starts with a space, but the source text doesn’t." msgstr "การแปลเริ่มต้นด้วยช่องว่าง แต่ในข้อความต้นฉบับไม่ได้เริ่มต้นด้วยช่องว่าง" msgid "The translation is missing a newline at the end." msgstr "การแปลไม่มีการขึ้นบรรทัดใหม่ในตอนท้าย" msgid "The translation ends with a newline, but the source text doesn’t." msgstr "การแปลมีการขึ้นบรรทัดใหม่ในตอนท้าย แต่ในข้อความต้นฉบับไม่มีการขึ้นบรรทัดใหม่ในตอนท้าย" msgid "The translation is missing a space at the end." msgstr "การแปลไม่มีช่องว่างในตอนท้าย" msgid "The translation ends with a space, but the source text doesn’t." msgstr "การแปลมีช่องว่างในตอนท้าย แต่ในข้อความต้นฉบับไม่มีช่องว่างในตอนท้าย" msgid "Punctuation checks" msgstr "ตรวจสอบเครื่องหมายวรรคตอน" #, c-format msgid "The translation should end with “%s”." msgstr "การแปลควรสิ้นสุดด้วย \"%s\"" #, c-format msgid "The translation should not end with “%s”." msgstr "การแปลไม่ควรสิ้นสุดด้วย \"%s\"" #, c-format msgid "The translation ends with “%s”, but the source text ends with “%s”." msgstr "การแปลสิ้นสุดด้วย \"%s\" แต่ในข้อความต้นฉบับสิ้นสุดด้วย \"%s\"" msgid "Cloud" msgstr "" msgid "Clear Menu" msgstr "ล้างรายการ" msgid "Clear menu" msgstr "ล้างรายการ" msgid "Comment:" msgstr "คำแนะนำ:" msgid "Update" msgstr "อัปเดต" msgid "&Delete" msgstr "&ลบ" msgid "Delete the comment" msgstr "ลบความคิดเห็น" msgid "Edit project" msgstr "แก้ไขโครงการ" msgid "Project name:" msgstr "ชื่อโครงการ:" msgid "Browse" msgstr "เรียกดู" msgid "Add directory to the list" msgstr "เพิ่มตำแหน่งไปยังรายการ" msgid "OK" msgstr "ตกลง" msgid "&File" msgstr "&ไฟล์" msgid "&New…" msgstr "&สร้างใหม่…" msgid "New from &POT/PO file…" msgstr "สร้างใหม่&จากไฟล์ POT/PO…" msgid "New From &POT/PO File…" msgstr "สร้างใหม่&จากไฟล์ POT/PO…" msgid "&Open…" msgstr "&เปิด…" msgid "Open Recent" msgstr "เปิดล่าสุด" msgid "Open recent" msgstr "เปิดไฟล์ล่าสุด" msgid "Open cloud translation…" msgstr "เปิดการแปลบนคลาวด์" msgid "Open Cloud Translation…" msgstr "เปิดการแปลบนคลาวด์" msgid "&Start window" msgstr "หน้าต่างเมื่อเ&ริ่มทำงาน" msgid "&Start Window" msgstr "หน้าต่างเมื่อเ&ริ่มทำงาน" msgid "Catalogs &manager" msgstr "ตัวจัดการ&แค็ตตาล็อก" msgid "Catalogs &Manager" msgstr "ตัวจัดการ&แค็ตตาล็อก" msgid "&Close" msgstr "&ปิด" msgid "&Save" msgstr "&บันทึก" msgid "Save &as…" msgstr "บันทึกเ&ป็น…" msgid "Save &As…" msgstr "บันทึกเ&ป็น…" msgid "Compile to MO…" msgstr "คอมไพล์เป็น MO…" msgid "E&xport to HTML…" msgstr "" msgid "Check for updates…" msgstr "ตรวจหาการอัพเดต…" msgid "Settings…" msgstr "การตั้งค่า…" msgid "&Preferences" msgstr "&การตั้งค่า" msgid "E&xit" msgstr "&ออก" msgid "Quit" msgstr "ออก" msgid "Copy from singular" msgstr "คัดลอกจากเอกพจน์" msgid "Copy From Singular" msgstr "คัดลอกจากเอกพจน์" msgid "Translation needs &work" msgstr "ต้องการตรวจ&ทานการแปล" msgid "Translation Needs &Work" msgstr "ต้องการตรวจ&ทานการแปล" msgid "Edit &comment" msgstr "แก้ไขคำแ&นะนำ" msgid "Edit &Comment" msgstr "แก้ไขคำแ&นะนำ" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "คำแนะนำ" msgid "&Find…" msgstr "&ค้นหา…" msgid "Replace…" msgstr "แทนที่…" msgid "Find next" msgstr "ค้นหาถัดไป" msgid "Find previous" msgstr "ค้นหาก่อนหน้า" msgid "Find and Replace…" msgstr "ค้นหาและแทนที่…" msgid "Find Next" msgstr "ค้นหาถัดไป" msgid "Find Previous" msgstr "ค้นหาก่อนหน้า" msgid "Show string &ID" msgstr "แสดง &รหัสสตริง" msgid "Show String &ID" msgstr "แสดง &รหัสสตริง" msgid "Show warnings" msgstr "แสดงคำเตือน" msgid "Show Warnings" msgstr "แสดงคำเตือน" msgid "Sort by &file order" msgstr "เรียงตาม &ลำดับไฟล์" msgid "Sort by &File Order" msgstr "เรียงตาม &ลำดับไฟล์" msgid "Sort by &source" msgstr "เรียงตาม &แหล่งข้อมูล" msgid "Sort by &Source" msgstr "เรียงตาม &แหล่งข้อมูล" msgid "Sort by &translation" msgstr "เรียงตาม &การแปล" msgid "Sort by &Translation" msgstr "เรียงตาม &การแปล" msgid "&Group by context" msgstr "&จัดกลุ่มตามบริบท" msgid "&Group By Context" msgstr "&จัดกลุ่มตามบริบท" msgid "Entries with errors first" msgstr "ขึ้นต้นด้วยรายการที่มีข้อผิดพลาดก่อน" msgid "Entries with Errors First" msgstr "ขึ้นต้นด้วยรายการที่มีข้อผิดพลาดก่อน" msgid "&Untranslated entries first" msgstr "&ขึ้นต้นด้วยรายการที่ยังไม่ได้แปลก่อน" msgid "&Untranslated Entries First" msgstr "&ขึ้นต้นด้วยรายการที่ยังไม่ได้แปลก่อน" msgid "&Show code occurrences" msgstr "&แสดงตำแหน่งที่พบในรหัส" msgid "&Show Code Occurrences" msgstr "&แสดงตำแหน่งที่พบในรหัส" msgid "Show sidebar" msgstr "แสดงแถบด้านข้าง" msgid "Show status bar" msgstr "แสดงแถบสถานะ" msgid "&Translation" msgstr "&การแปล" msgid "&Update from source code" msgstr "&อัพเดตจากซอร์สโค้ด" msgid "&Update from Source Code" msgstr "&อัพเดตจากซอร์สโค้ด" msgid "Update from &POT file…" msgstr "อัพเดตจาก&ไฟล์ POT…" msgid "Update from &POT File…" msgstr "อัพเดตจากไ&ฟล์ POT…" msgid "Sync with Crowdin" msgstr "ซิงค์กับ Crowdin" msgid "Pre-&translate…" msgstr "แปล&ล่วงหน้า…" msgid "&Validate translations" msgstr "&ตรวจสอบการแปล" msgid "&Validate Translations" msgstr "&ตรวจสอบการแปล" msgid "Remove Same-as-Source Translations" msgstr "" msgid "&Purge deleted translations" msgstr "&ล้างข้อมูลการแปลที่ลบไปแล้ว" msgid "&Purge Deleted Translations" msgstr "&ล้างข้อมูลการแปลที่ลบไปแล้ว" msgid "&Properties…" msgstr "&คุณสมบัติ…" msgid "&Go" msgstr "&ไป" msgid "&Done and next" msgstr "&เสร็จสิ้นและถัดไป" msgid "&Done and Next" msgstr "&เสร็จสิ้นและถัดไป" msgid "Previously edited" msgstr "การแก้ไขก่อนหน้านี้" msgid "Previously Edited" msgstr "การแก้ไขก่อนหน้านี้" msgid "&Previous translation" msgstr "&การแปลก่อนหน้า" msgid "&Previous Translation" msgstr "&การแปลก่อนหน้า" msgid "&Next translation" msgstr "&การแปลถัดไป" msgid "&Next Translation" msgstr "&การแปลถัดไป" msgid "P&revious unfinished" msgstr "ที่ยังไม่เสร็จก่อน&หน้า" msgid "P&revious Unfinished" msgstr "ที่ยังไม่เสร็จก่อน&หน้า" msgid "Ne&xt unfinished" msgstr "ที่ยังไม่เสร็จถัดไ&ป" msgid "Ne&xt Unfinished" msgstr "ที่ยังไม่เสร็จถัดไ&ป" msgid "Previous plural form" msgstr "รูปแบบพหูพจน์ก่อนหน้า" msgid "Previous Plural Form" msgstr "รูปแบบพหูพจน์ก่อนหน้า" msgid "Next plural form" msgstr "รูปแบบพหูพจน์ถัดไป" msgid "Next Plural Form" msgstr "รูปแบบพหูพจน์ถัดไป" msgid "&Online help" msgstr "&ความช่วยเหลือออนไลน์" msgid "&Online Help" msgstr "&ความช่วยเหลือออนไลน์" msgid "&GNU gettext manual" msgstr "คู่มือ &GNU gettext" msgid "&GNU gettext Manual" msgstr "คู่มือ &GNU gettext" msgid "&About Poedit" msgstr "&เกี่ยวกับ Poedit" msgid "&About" msgstr "&เกี่ยวกับ" msgid "Extractor setup" msgstr "การติดตั้งตัวแยก" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "รายการของส่วนขยายแยกโดยใช้อัฒภาค (เช่น *.cpp;*.h):" msgid "Invocation:" msgstr "การร้องขอ:" msgid "Command to extract translations:" msgstr "คำสั่งที่ใช้แยกการแปล:" 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 ขยายค่าสถานะชุดอักขระ (ดูด้านล่าง)" msgid "An item in keywords list:" msgstr "รายการในรายการคำสำคัญ:" msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "การดำเนินการนี้จะแนบไฟล์ไปยังคำสั่งหนึ่งครั้ง\n" "ต่อคำสำคัญที่ใช้แต่ละคำ %k จะขยายชื่อของคำสำคัญที่ใช้" msgid "An item in input files list:" msgstr "รายการในรายการไฟล์นำเข้า:" #, 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 จะขยายชื่อไฟล์" msgid "Source code charset:" msgstr "รหัสอักขระดั้งเดิม:" #, 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 จะขยายค่าของชุดอักขระ" msgid "Translation Properties" msgstr "คุณสมบัติการแปล" msgid "Project name and version:" msgstr "ชื่อและเวอร์ชั่นโครงการ:" msgid "Language team:" msgstr "ทีมภาษา:" msgid "Plural forms:" msgstr "รูปแบบพหูพจน์:" msgid "Use default rules for this language" msgstr "ใช้กฎเริ่มต้นสำหรับภาษานี้" msgid "Use custom expression" msgstr "ใช้นิพจน์ที่กำหนดเอง" msgid "Learn about plural forms" msgstr "เรียนรู้เกี่ยวกับรูปแบบพหูพจน์" msgid "Charset:" msgstr "ชุดอักขระ:" msgid "Advanced Extraction Settings…" msgstr "การตั้งค่าการแยกขั้นสูง…" msgid "Advanced extraction settings…" msgstr "การตั้งค่าการแยกขั้นสูง…" msgid "Translation properties" msgstr "คุณสมบัติการแปล" msgid "Sources Paths" msgstr "เส้นทางแหล่งข้อมูล" msgid "Sources paths" msgstr "เส้นทางแหล่งข้อมูล" msgid "Extract text from source files in the following directories:" msgstr "แยกข้อความจากไฟล์ต้นฉบับในไดเรกทอรีต่อไปนี้:" msgid "Base path:" msgstr "เส้นทางหลัก:" msgid "Sources Keywords" msgstr "คำสำคัญของแหล่งที่มา" msgid "Sources keywords" msgstr "คำสำคัญของแหล่งที่มา" msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "ใช้คำสำคัญเหล่านี้ (ชื่อฟังก์ชั่น) เพื่อตรวจหาสตริงที่แปลได้\n" "ในไฟล์ต้นฉบับ:" msgid "Also use default keywords for supported languages" msgstr "ใช้คำสำคัญเริ่มต้นสำหรับภาษาที่รองรับด้วย" msgid "Learn about gettext keywords" msgstr "เรียนรู้เกี่ยวกับคำสำคัญ Gettext" msgid "Update summary" msgstr "อัพเดตผลลัพธ์" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" "พบสตริงเหล่านี้ในต้นฉบับ แต่ไม่ได้อยู่ในไฟล์\n" "Poedit จะเพิ่มสตริงเหล่านี้ไปยังไฟล์ทันที" msgid "New strings" msgstr "สตริงใหม่" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" "สตริงเหล่านี้ไม่ได้อยู่ในรหัสต้นฉบับอีกต่อไปแล้ว\n" "Poedit จะเอาสตริงเหล่านี้ออกจากไฟล์ทันที" msgid "Obsolete strings" msgstr "ข้อมูลโดยแท้" msgid "(0 new, 0 obsolete)" msgstr "(0 ใหม่, 0 ล้าสมัย)" msgid "Open" msgstr "" msgid "Open file" msgstr "เปิดไฟล์" msgid "Save file" msgstr "บันทึกไฟล์" msgid "Validate" msgstr "ตรวจสอบ" msgid "Check for errors in the translation" msgstr "ตรวจสอบข้อผิดพลาดในการแปล" msgid "Update from code" msgstr "อัพเดตจากโค้ด" msgid "Update from Code" msgstr "อัพเดตจากโค้ด" msgid "Update from source code" msgstr "อัพเดตจากซอร์สโค้ด" msgid "Sidebar" msgstr "แถบด้านข้าง" msgid "Show or hide the sidebar" msgstr "แสดงหรือซ่อนแถบด้านข้าง" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. msgid "Previous source text" msgstr "ข้อความต้นฉบับก่อนหน้านี้" msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "ข้อความต้นฉบับ (ก่อนที่จะถูกเปลี่ยนระหว่างการอัพเดต) ที่เกี่ยวข้องกับการแปลที่ไม่ถูกต้องในขณะนี้" msgid "Notes for translators" msgstr "หมายเหตุสำหรับนักแปล" msgid "Comment" msgstr "ความคิดเห็น" msgid "Add comment" msgstr "เพิ่มคำแนะนำ" msgid "Add Comment" msgstr "เพิ่มคำแนะนำ" msgid "Delete From Translation Memory" msgstr "ลบออกจากหน่วยความจำการแปล" msgid "Delete from translation memory" msgstr "ลบออกจากหน่วยความจำการแปล" msgid "Translation suggestions" msgstr "คำแนะนำการแปล" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). msgid "No matches found" msgstr "ไม่พบผลลัพธ์ที่ตรงกัน" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). msgid "No Matches Found" msgstr "ไม่พบผลลัพธ์ที่ตรงกัน" msgid "This string was found in Poedit’s translation memory." msgstr "สตริงนี้ถูกพบในหน่วยความจำการแปลของ Poedit" msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "คำแนะนำในการแปลจำเป็นต้องมีข้อความต้นฉบับให้พร้อมใช้งาน สิ่งเหล่านี้จะไม่ทำงานหากใช้เฉพาะ ID " "ที่ไม่มีข้อความจริงเท่านั้น" msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "คำแนะนำในการแปลจำเป็นต้องรู้ภาษาของข้อความต้นฉบับ Poedit ตรวจไม่พบในไฟล์นี้" msgid "The TMX file is malformed." msgstr "ไฟล์ TMX ผิดรูปแบบ" msgid "No translations were found in the TMX file." msgstr "ไม่พบการแปลในไฟล์ TMX" #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "ฐานข้อมูลหน่วยความจำการแปลชำรุด: %s (%d)" #, c-format msgid "Translation memory error: %s (%d)." msgstr "ข้อผิดพลาดหน่วยความจำการแปล: %s (%d)" msgid "Cannot create temporary directory." msgstr "ไม่สามารถสร้างไดเรกทอรีชั่วคราว" msgid "There are no translations. That’s unusual." msgstr "ไม่มีการแปล นั่นผิดปกติ" msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "Translators typically use PO template files (POTs) prepared for them by the " "developer." msgstr "" "รายการที่สามารถแปลได้จะไม่ถูกเพิ่มลงในระบบของ Gettext เอง " "แต่จะถูกแยกจากซอร์สโค้ดโดยอัตโนมัติ\n" "ซึ่งช่วยให้การแปลทันสมัยและแม่นยำ\n" "โดยทั่วไป นักแปลจะใช้ไฟล์แม่แบบ PO (นามสกุลไฟล์ POT) ที่เตรียมไว้ให้โดยนักพัฒนา" msgid "(Learn more about GNU gettext)" msgstr "(เรียนรู้เพิ่มเติมเกี่ยวกับ GNU gettext)" msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "วิธีการเติมการแปลในไฟล์นี้ที่ง่ายที่สุดคือให้อัปเดตข้อมูลจากไฟล์ POT:" msgid "Update from POT" msgstr "อัพเดตจากไฟล์ POT" msgid "Take translatable strings from an existing POT template." msgstr "ดึงสตริงที่สามารถแปลได้จากแม่แบบ POT ที่มีอยู่" msgid "" "You can also extract translatable strings directly from the source code:" msgstr "นอกจากนี้ คุณยังสามารถแยกสตริงที่สามารถแปลได้โดยตรงจากซอร์สโค้ด:" msgid "Extract from sources" msgstr "แยกจากซอร์สโค้ด" msgid "Configure source code extraction in Properties." msgstr "กำหนดค่าการแยกซอร์สโค้ดในคุณสมบัติ" #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #, c-format msgid "Version %s" msgstr "รุ่น %s" msgid "Create new" msgstr "สร้างใหม่" msgid "Create new translation from POT template." msgstr "สร้างการแปลใหม่จากแม่แบบ POT" msgid "Browse files" msgstr "เรียกดูไฟล์" msgid "Open and edit translation files." msgstr "เปิดและแก้ไขไฟล์การแปล" msgid "Translate cloud project" msgstr "แปลโครงการคลาวด์" msgid "Collaborate with other people online." msgstr "ทำงานร่วมกับผู้อื่นทางออนไลน์" msgid "Recent files" msgstr "ไฟล์ล่าสุด" msgid "Sync" msgstr "ซิงค์" 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") #, c-format msgid "About %s" msgstr "เกี่ยวกับ %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #, c-format msgid "%s Preferences" msgstr "การตั้งค่า %s" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "บริการ" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "ซ่อน %s" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "ซ่อนคนอื่น" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "แสดงทั้งหมด" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "ออกจาก %s" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "การตั้งค่า…" msgid "Preferences..." msgstr "การตั้งค่า..." #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "ล่า​สุด" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "ใช้บ่อยที่สุด" msgid "&Apply" msgstr "&นำไปใช้" msgid "Apply" msgstr "นำไปใช้" msgid "&Back" msgstr "&ย้อนกลับ" msgid "Back" msgstr "ย้อนกลับ" msgid "&Cancel" msgstr "&ยกเลิก" msgid "&Clear" msgstr "&ล้าง" msgid "Clear" msgstr "ล้าง" msgid "Copy" msgstr "คัดลอก" msgid "Cu&t" msgstr "&ตัด" msgid "Cut" msgstr "ตัด" msgid "Edit" msgstr "แก้ไข" msgid "&Quit" msgstr "&ออก" msgid "Help" msgstr "วิธีใช้" msgid "&New" msgstr "&สร้าง" msgid "New" msgstr "สร้างใหม่" msgid "&No" msgstr "ไ&ม่ใช่" msgid "No" msgstr "ไม่ใช่" msgid "&OK" msgstr "&ตกลง" msgid "Open…" msgstr "เปิด…" msgid "&Open..." msgstr "&เปิด..." msgid "Open..." msgstr "เปิด..." msgid "&Paste" msgstr "&วาง" msgid "Paste" msgstr "วาง" msgid "Preferences" msgstr "การตั้งค่า" msgid "&Redo" msgstr "&ทำซ้ำ" msgid "Refresh" msgstr "รี​เฟรช" msgid "&Save as" msgstr "&บันทึกเป็น" msgid "Save as" msgstr "บันทึกเป็น" msgid "Select &All" msgstr "เลือก&ทั้งหมด" msgid "Select All" msgstr "เลือกทั้งหมด" msgid "&Undo" msgstr "&เลิกทำ" msgid "&Yes" msgstr "ใ&ช่" msgid "Yes" msgstr "ใช่" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "ขึ้น" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "ลง" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "ซ้าย" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "ขวา" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "shift" poedit-3.5/locales/bs.mo0000644000175100001770000007120414664354153012173 00000000000000{   JgJ        !!!.!2!D!V!\!d!v! ! !!! !!!!"#")"/"5"Q"m"""""""# !# -#7#@# I# U#a#{####'### $7$6U$$)$ $]$?%R%Y%"`%% %%%%%%% &)&#E&i&x&&&& && &&/' @'M'R'e'{''''' '(((((,(C(J([( n(?{( ( ((((")5$)Z)`) e) s) ) ) ))))))))u** ** **<*"+9+ I+T+*g+!+'++ + ++ ,, 4, >, L, Y,f,u,,, , ,,,,, -- -- - --;--.J. ]. g.u.. ..:. /</.U//////*/ 00!0200 001 111'B1%j11111 1111112%2:2T2223n3Ev3333@3,%4%R4x444 444444 4 55('5P5V5zo555 5 6 6 6 &616"B6e6 6 66 6666 66 7"727:7B7K7S7f7o7x7 7 7 777777 8!8688 888 99K9i9~9 999 9 99h:m:(::+::8:-;>;8<R:<c<Q<C=^=!=,>L<>>?7?m?_a@[@A#A3A PA\AqAAAAAA AAAB B"B8BHBWB_BoBBBBB#BVCjCCC CCCCCC CD DH%D7nD DaDEEE E %EFE]EcE!tEE GGG!GxGZH H HHHII!I4I ;IEI`I{IIII IIIIJ J J %J/JDJYJvJJ J J$J$JJK$K,KCKbK}KK K K KKKKLL4L=LXL.]L&L!LL4L:M)LM4vMM\MN &N0N)9N"cN NNNNNNO O%>O#dOOOOOO O P PP0?PpPxPPPPP)P Q #QDQTQZQcQ}QQQQQ Q@Q R "R-R@RSR XR6yRRRRRRR R S S$S+S%1SWSoSS T&T*T :THT9_T#TT TT-T& U.GUvUUUUUUUV V &V4VFVXV aV kVxVVVVVkWWW WW WW,WX %X3X:X*OX zX XX:XXBY2QYYYYY Y2Y$Z)Z@ZWZ5[:[I[b[{[[%[6[[[\!\:\I\^\s\z\\\\\\l]u]]]\^z^^^B^*^)_B_[_t_ _ _____ ___0_.`6`wQ` ````` a a(a$=aba aaaaaaab"b;bQb ibvb~bbbbbbbbb!bc8c!Qcscc ccNdidzddddLde$e6eJe`eue }ee f%f">f)af9ff9fggHgW)hlhdh Siti ;j!\jT~jjVk5lxSljlj7mm mmmmmmn"n&n;n!Ancn wnn n!nnn nn$o(o?oVo*vo$oqo8p Sp^p sp~ppppppppL q@Vq qYqq r rr r6rRrXrgr [CfVP<BJ6'x R `z o{bYOLq:h^&s|(JCp?zv=G0e9KTt%nEl]Ij$WG\67)Y!w2QWE9X;a{ka/% &"*@8uj @;)ri, 81: #tnVI.uS^S27FFH.34OUDR`$U"x MXb-#m1>d,QDy?4+myk<s/opB5Lr_i>w'\hZf+5_PldN3M-HZeK]!}Ng0A qg*Ac( =~T[vc (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(requires Windows 8 or newer)< &PreviousAbout %sAccountsAdd CommentAdd commentAdd directory to the listAdditional keywordsAdvancedAll Translation FilesAlt+Always 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 errorCtrl+Cu&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 againDownDownloading latest translations…Downloading translations is disabled in this project.E&xitEditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEmail:EnterEnter 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.OKObsolete stringsOneOnly 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 languageShift+Show 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)UntransUpUpdate 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.ZeroZoomaltctrle.g. nplurals=2; plural=(n > 1);handle a poedit:// URIshiftunknown language“%s” is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2024-08-30 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(0 novih, 0 suvišnih)(Saznajte više o GNU gettext)(Novo: %i, zastarjelo: %i)(Koristi početni jezik)(barem Windows 8 ili noviji)< &PrethodnoO programu %sRačuniDodaj komentarDodaj komentarDodaj direktorij u listuDodatne ključne riječiNaprednoSve datoteke s prijevodimaAlt+Uvijek 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škaCtrl+Izrež&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 ponovoDolePreuzimam najnovije prijevode...Preuzimanje prijevoda je onemogućeno u ovom projektu.I&zađiUrediUredi &komentarUredi &komentarUredi komentarUredi komentarUredi projektUredi projektUređivanjeEmail:EnterAktiviraj 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:Raspakujem stringove za prijevod…Postavka izdvajanjaIzdvajanjeNeuspjela komanda: %sNije 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 reduZastarjeli stringoviJedanSamo 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 jezikShift+Prikaž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)NeprevedenoGoreAž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ćavanjealtctrlnpr. nplurals=2; plural=(n > 1);upravljač za poedit:// URIshiftnepoznat jezik"%s" nije ispravan POT fajl.poedit-3.5/locales/be.po0000644000175100001770000023746714664354153012177 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "Не паказваць больш гэта апавяшчэнне" msgid "Don’t Show Again" msgstr "Не паказваць зноў" msgid "Don’t show again" msgstr "Не паказваць зноў" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(Новыя: %i, састарэлыя: %i)" msgid "Collecting source files…" msgstr "Збіранне зыходных файлаў…" msgid "Extracting translatable strings…" msgstr "Выманне радкоў для перакладу…" msgid "Failed to load file with extracted translations." msgstr "Не атрымалася загрузіць файл з вынятымі перакладамі." msgid "Merging differences…" msgstr "Зліццё адрозненняў…" msgid "Updating translations" msgstr "Абнаўленне перакладаў" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "Файл «%s» не можа быць адкрыты." msgid "Invalid file" msgstr "Памылковы файл" #, c-format msgid "Malformed header: “%s”" msgstr "Няправільны загаловак: “%s”" msgid "PO Translation Files" msgstr "Файлы перакладу PO" msgid "POT Translation Templates" msgstr "Шаблоны перакладу POT" msgid "XLIFF Translation Files" msgstr "Файлы перакладу XLIFF" msgid "JSON Translation Files" msgstr "Файлы перакладу JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "Файлы перакладу Flutter" msgid "All Translation Files" msgstr "Усе файлы перакладаў" msgid "The file is in a format not recognized by Poedit." msgstr "Файл мае фармат, які не распазнаецца Poedit." msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" "Гэты JSON-файл не з'яўляецца файлам перакладу і не можа быць адрэдагаваны ў " "Poedit." #, c-format msgid "Reading file content failed with the following error: %s" msgstr "Загрузка змесціва файла не атрымалася з наступнай памылкай: %s" #, c-format msgid "" "File “%s” is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "Файл \"%s\" даступны толькі для чытання і не можа быць захаваны.\n" "Захавайце яго пад іншай назвай." #, c-format msgid "Couldn’t save file %s." msgstr "Немагчыма захаваць файл %s." msgid "Screenshots:" msgstr "Скрыншоты:" #, c-format msgid "%i line of file “%s” was not loaded correctly." msgid_plural "%i lines of file “%s” were not loaded correctly." msgstr[0] "%i радок файла \"%s\" быў загружаны некарэктна." msgstr[1] "%i радкі файла \"%s\" былі загружаныя некарэктна." msgstr[2] "%i радкоў файла \"%s\" былі загружаныя некарэктна." msgstr[3] "%i радкоў файла \"%s\" былі загружаныя некарэктна." #, c-format msgid "Line %d of file “%s” is corrupted (not valid %s data)." msgstr "Радок %d файла \"%s\" пашкоджаны (некарэктныя даныя %s)." msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" "Сапсаваны файл PO: форма адзіночнага ліку msgstr ужытая разам з msgid_plural" msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "Сапсаваны файл PO: форма множнага ліку msgstr ужыта без msgid_plural" msgid "Couldn’t load the file, it is probably damaged." msgstr "Файл не можа быць загружаны. Верагодна, ён пашкоджаны." msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "Пры загрузцы файла ўзнікла памылка. У выніку чаго, некаторыя даныя могуць " "быць пашкоджаныя ці адсутнічаць." msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "Узнікла праблема падчас фарматавання файла (але ён быў паспяхова захаваны)." #, 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 з адпаведнымі зменамі." msgid "Error saving file" msgstr "Памылка захавання файла" #, c-format msgid "“%s” is not a valid POT file." msgstr "\"%s\" не з'яўляецца карэктным файлам POT." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Памылка падчас загрузкі файла XLIFF: %s" #, c-format msgid "unsupported version (%s)" msgstr "не падтрымліваецца версія (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML msgid "Broken markup in translation string." msgstr "Пашкоджаная разметка ў радку перакладу." msgid "(Use default language)" msgstr "(Карыстацца мовай па змаўчанні)" msgid "Language selection" msgstr "Выбар мовы" msgid "Select your preferred language" msgstr "Выберыце пажаданую мову" msgid "You must restart Poedit for this change to take effect." msgstr "Вы павінны перазапусціць Poedit, каб змены набылі моц." msgid "Add Account" msgstr "Дадаць Уліковы запіс" msgid "Add account" msgstr "Дадаць уліковы запіс" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "Даведацца больш пра %s" msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "Падлучыце Poedit да падтрымліваемых воблачных платформ лакалізацыі для " "бесперашкоднай сінхранізацыі перакладаў, выкананых на іх." msgid "How does cloud sync work?" msgstr "Як працуе воблачная сінхранізацыя?" msgid "Account" msgstr "Уліковы запіс" msgid "(not signed in)" msgstr "(уваход не выкананы)" msgid "File" msgstr "Файл" msgid "Open cloud translation" msgstr "Адкрыць воблачны пераклад" msgid "Manage accounts" msgstr "Кіраванне ўліковымі запісамі" msgid "Project:" msgstr "Праект:" msgid "Language:" msgstr "Мова:" msgid "Sign in to Cloud Account" msgstr "Увайдзіце ў Воблачны Уліковы запіс" msgid "Sign in to cloud account" msgstr "Увайдзіце ў воблачны ўліковы запіс" msgid "No translation projects listed in your account." msgstr "У вашым уліковым запісе няма праектаў для перакладу." msgid "Downloading latest translations…" msgstr "Спампоўванне апошніх перакладаў…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #, c-format msgid "Sign in to %s" msgstr "Увайсці ў %s" msgid "Syncing" msgstr "Сінхранізацыя" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s…" msgstr "Дасыланне перакладаў у %s…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s failed." msgstr "Дасыланне перакладаў у %s не атрымалася." msgid "Syncing error" msgstr "Памылка сінхранізацыі" msgid "Add" msgstr "Дадаць" msgid "Unknown Crowdin error." msgstr "Невядомая памылка Crowdin." msgid "Not authorized, please sign in again." msgstr "Не аўтарызаваны, увайдзіце яшчэ раз." msgid "Downloading translations is disabled in this project." msgstr "Спампоўванне перакладаў адключана ў гэтым праекце." msgid "Sign In" msgstr "Увайсці" msgid "Sign in" msgstr "Увайсці" msgid "Sign Out" msgstr "Выйсці" msgid "Sign out" msgstr "Выйсці" msgid "Learn more about Crowdin" msgstr "Даведацца больш пра Crowdin" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" "Crowdin - гэта анлайн-платформа для кіравання лакалізацыямі і інструмент для " "сумеснага перакладу." msgid "Waiting for authentication…" msgstr "Чаканне аўтарызацыі…" msgid "Updating user information…" msgstr "Абнаўленне звестак пра карыстальніка…" msgid "Sign in to Crowdin" msgstr "Увайсці ў Crowdin" msgid "Syncing with Crowdin failed." msgstr "Сінхранізаваць з Crowdin не атрымалася." msgid "Crowdin error" msgstr "Памылка Crowdin" msgid "Uploading translations…" msgstr "Дасыланне перакладу…" msgid "&Copy" msgstr "&Скапіяваць" msgid "Learn more" msgstr "Даведацца больш" msgid "&Help" msgstr "&Даведка" msgid "MO files can’t be directly edited in Poedit." msgstr "Файлы з пашырэннем MO нельга змяніць непасрэдна ў Poedit." msgid "Error opening file" msgstr "Памылка адкрыцця файла" msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "Адкрыйце і змяніце адпаведны файл PO. Пасля яго захавання, файл MO таксама " "абновіцца." msgid "don’t delete temporary files (for debugging)" msgstr "не выдаляйце часовыя файлы (для адладкі)" msgid "handle a poedit:// URI" msgstr "апрацаваць адрас poedit://" msgid "go to item at given line number" msgstr "перайсці да элемента з вызначаным нумарам радка" msgid "Failed to communicate with Poedit process." msgstr "Памылка падключэння да працэсу Poedit." #, c-format msgid "Unhandled exception occurred: %s" msgstr "Адбылося непрадбачанае выключэнне: %s" msgid "Select translation template" msgstr "Выбраць шаблон перакладу" msgid "Select translation file" msgstr "Выбраць файл перакладу" msgid "Poedit is an easy to use translation editor." msgstr "Poedit - гэта просты ў выкарыстанні рэдактар перакладаў." msgid "You can’t drop more than one file on Poedit window." msgstr "Нельга перацягваць некалькі файлаў у акно Poedit." #, c-format msgid "File “%s” is not a translation file." msgstr "Файл \"%s\" не з'яўляецца файлам перакладу." #, c-format msgid "File “%s” doesn’t exist." msgstr "Файл “%s” не існуе." 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". #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "Праверка правапісу адключана, таму што, слоўнік для %s не ўсталяваны." msgid "Install" msgstr "Усталяваць" #, c-format msgid "The file “%s” has been changed by another application." msgstr "Файл “%s” зменены іншай праграмай." msgid "Reload file" msgstr "Перазагрузіць файл" msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "Вы сапраўды хочаце перазагрузіць файл з дыска? Усе вашы не захаваныя " "змяненні ў праграме будуць страчаныя, калі вы гэта зробіце." msgid "Ignore" msgstr "Ігнараваць" msgid "Reload File" msgstr "Перазагрузіць файл" msgid "The file has been modified. Do you want to save changes?" msgstr "Файл зменены. Захаваць змены?" msgid "Save changes" msgstr "Захаваць змены" msgid "Your changes will be lost if you don’t save them." msgstr "Вашы змены будуць страчаныя, калі вы не захаваеце іх." msgid "Save" msgstr "Захаваць" msgid "Do&n’t save" msgstr "Не зах&оўваць" msgid "Don’t Save" msgstr "Не захоўваць" msgid "The changes made by the other application will be lost if you save." msgstr "Змены зробленыя іншай праграма будуць страчаныя, калі вы захаваеце." msgid "Cancel" msgstr "Скасаваць" msgid "Save Anyway" msgstr "Усё роўна захаваць" msgid "Save anyway" msgstr "Усё роўна захаваць" msgid "Save as…" msgstr "Захаваць як…" msgid "Compile to…" msgstr "Кампіляваць у…" msgid "Compiled Translation Files" msgstr "Скампіляваныя файлы перакладу" msgid "Export to HTML…" msgstr "" msgid "HTML Files" msgstr "Файл HTML" #, c-format msgid "In: %s" msgstr "У: %s" msgid "Source code not available." msgstr "Зыходны код не даступны." msgid "Updating failed" msgstr "Не атрымалася абнавіць" 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 "" "Пераклады не могуць быць абноўлены з зыходнага кода, таму што код не быў " "знойдзены ў азначаным месцы ва ўласцівасцях файла." msgid "Permission denied." msgstr "У дазволе адмоўлена." 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. 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. msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "Калі вы дагэтуль адмовілі ў доступе да вашых файлаў, вы можаце даць дазвол у " "Параметры > Прыватнасць і бяспека > Прыватнасць > Файлы і папкі." msgid "Translation entries in the file are probably incorrect." msgstr "Запісы перакладу ў файле, напэўна, памылковыя." msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "" "Не атрымалася абнавіць файл. Націсніце на кнопку \"Дэталі>>\", каб атрымаць " "дадатковыя звесткі." msgid "Open translation template" msgstr "Адкрыць шаблон перакладу" #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "У перакладзе знойдзена %d праблема." msgstr[1] "У перакладзе знойдзены %d праблемы." msgstr[2] "У перакладзе знойдзена %d праблем." msgstr[3] "У перакладзе знойдзена %d праблем." msgid "Validation results" msgstr "Вынікі праверкі" msgid "" "Entries with errors were marked in red in the list. Details of the error " "will be shown when you select such an entry." msgstr "" "Запісы з памылкамі былі вылучаны ў спісе чырвоным колерам. Калі выбраць такі " "запіс, будуць паказаныя падрабязныя звесткі пра памылку." msgid "The file was saved safely." msgstr "Файл быў паспяхова захаваны." msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "Файл быў паспяхова захаваны і скампіляваны ў фармат MO, але магчыма будзе " "працаваць некарэктна." msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "Файл быў паспяхова захаваны, але яго не атрымалася скампіляваць у фармат MO " "для далейшага выкарыстання." msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "Файл быў скампіляваны ў фармат MO, але магчыма будзе працаваць некарэктна." msgid "The file cannot be compiled into the MO format and used." msgstr "" "Не атрымалася скампіляваць файл у фармат MO для далейшага выкарыстання." msgid "No problems with the translation found." msgstr "Праблем у перакладзе не знойдзена." #, 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 запісаў яшчэ не перакладзена." msgid "The translation is ready for use." msgstr "Пераклад гатовы да выкарыстання." #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "Poedit аўтаматычна выправіў памылковы змест у файле \"%s\"." msgid "" "The file contained duplicate items, which is not allowed in PO files and " "would prevent the file from being used. Poedit fixed the issue, but you " "should review translations of any items marked as needing work and correct " "them if necessary." msgstr "" "Гэты файл змяшчаў у сабе дубляваныя элементы, якія не дазваляюцца ў файлах " "PO і могуць ствараць перашкоды ў іх выкарыстанні. Poedit выправіў гэту " "праблему, але вы павінны перагледзець пераклады з пазнакамі \"патрабуюць " "дапрацоўкі\" і выправіць іх пры неабходнасці." msgid "Language of the translation isn’t set." msgstr "Не прызначана мова перакладу." msgid "Set Language" msgstr "Выбраць мову" msgid "Set language" msgstr "Выбраць мову" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." msgid "" "Suggestions are not available if the translation language is not set " "correctly. Other features, such as plural forms, may be affected as well." msgstr "" "Прапановы не даступныя, калі мова перакладу не азначаная. Іншыя магчымасці, " "такія як формы множнага ліку, таксама могуць быць парушаныя." msgid "Language of the translation is the same as source language." msgstr "Мова перакладу супадае з зыходнай мовай." msgid "Fix Language" msgstr "Выправіць мову" msgid "Fix language" msgstr "Выправіць мову" msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "Файл змяшчае элементы з формамі множнага ліку, але ён не мае наладаў " "загалоўку Plural-Forms." msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "Элементы ў гэтым файле маюць формы множнага ліку, якія адрозніваюцца ад " "азначаных у загалоўку Plural-Forms" msgid "Required header Plural-Forms is missing." msgstr "Неабходны загаловак \"Plural-Forms\" адсутнічае." #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Сінтаксічная памылка ў загалоўку \"Plural-Forms\" (\"%s\")." msgid "Fix the Header" msgstr "Выправіць загаловак" 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". #, 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.")" msgid "Review" msgstr "Праверыць" msgid "Would you like to use English for source text?" msgstr "" #, 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" msgid "Load English" msgstr "Загрузіць англійскую" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Перакладзена: %d з %d (%d %%)" #, c-format msgid "Remaining: %d" msgstr "Засталося: %d" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d памылка" msgstr[1] "%d памылкі" msgstr[2] "%d памылак" msgstr[3] "%d памылак" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d запіс" msgstr[1] "%d запісы" msgstr[2] "%d запісаў" msgstr[3] "%d запісаў" msgid " (unsaved)" msgstr " (не захавана)" msgid " (modified)" msgstr "(зменены)" #, c-format msgid "Failed to update translation memory: %s" msgstr "Не атрымалася абнавіць памяць перакладаў: %s" msgid "Remove same-as-source translations" msgstr "" msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" msgid "Keep" msgstr "Пакінуць" msgid "Remove" msgstr "" msgid "Purge deleted translations" msgstr "Знішчыць вылучаныя пераклады" msgid "Do you want to remove all translations that are no longer used?" msgstr "Жадаеце выдаліць усе пераклады, якія больш не выкарыстоўваюцца?" 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 "" "Калі працягнуць аперацыю, усе пераклады, пазначаныя як выдаленыя, будуць " "цалкам знішчаныя. Калі яны будуць даданыя назад у будучым, іх прыйдзецца " "перакладаць паўторна." msgid "Purge" msgstr "Знішчыць" msgid "Copy from source text" msgstr "Скапіяваць зыходны тэкст" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "Ачысціць пераклад" msgid "Clear Translation" msgstr "Ачысціць пераклад" msgid "Edit comment" msgstr "Рэдагаваць каментарый" msgid "Edit Comment" msgstr "Рэдагаваць каментарый" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "Код уваходжання" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "Код уваходжання" msgid "Hide Sidebar" msgstr "Схаваць бакавую панэль" msgid "Show Sidebar" msgstr "Паказаць бакавую панэль" msgid "Hide Status Bar" msgstr "Схаваць радок стану" msgid "Show Status Bar" msgstr "Паказаць радок стану" msgid "String length in characters: translation | source" msgstr "Даўжыня радка ў сімвалах: пераклад | крыніца" msgid "String length in characters" msgstr "Даўжыня радка ў сімвалах" msgid "Source text" msgstr "Зыходны тэкст" msgid "Singular" msgstr "Адзіночны лік" msgid "Plural" msgstr "Множны" msgid "Translation" msgstr "Пераклад" msgid "Pre-translated" msgstr "Чарнавы варыянт" 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. msgid "Needs work" msgstr "Патрабуе праверкі" msgid "" "POT files are only templates and don’t contain any translations themselves.\n" "To make a translation, create a new PO file based on the template." msgstr "" "Файлы з пашырэннем POT з'яўляюцца толькі шаблонамі і не змяшчаюць у сабе " "перакладаў.\n" "Каб зрабіць пераклад стварыце файл PO з шаблона." msgid "Create new translation" msgstr "Стварыць новы пераклад" msgid "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 msgid "Source text ID" msgstr "Ідэнтыфікатар зыходнага тэксту" msgid "Everything" msgstr "Усё" #, c-format msgid "Form %i" msgstr "Форма %i" #, c-format msgid "Form %i (unused)" msgstr "Форма %i (не выкарыстоўваецца)" msgid "Zero" msgstr "Нуль" msgid "One" msgstr "Адзін" msgid "Two" msgstr "Два" msgid "Other" msgstr "Iншае" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, c-format msgid "String context: %s" msgstr "Кантэкст радка: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #, c-format msgid "String identifier: %s" msgstr "Ідэнтыфікатар радка: %s" #, c-format msgid "%s Format" msgstr "Фармат %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "Фармат %s" #, c-format msgid "Translation — %s" msgstr "Пераклад — %s" msgid "ID" msgstr "ID" #, c-format msgid "Source text — %s" msgstr "Зыходны тэкст — %s" msgid "unknown language" msgstr "невядомая мова" #, c-format msgid "Network error: %s (%d)" msgstr "" msgid "Unknown error" msgstr "Невядомая памылка" #, c-format msgid "Failed command: %s" msgstr "Памылка выканання каманды: %s" msgid "Failed to merge gettext catalogs." msgstr "Не атрымалася аб'яднаць каталогі gettext." msgid "Open in Editor" msgstr "Адкрыць у рэдактары" msgid "Open in editor" msgstr "Адкрыць у рэдактары" msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" "Звесткі ў файле адсутнічацюь пра ўваходжанне гэтага радка ў зыходны код." msgid "No usage information" msgstr "Няма звестак пра выкарыстанне" #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d уваходжанне кода" msgstr[1] "%d уваходжанні кода" msgstr[2] "%d уваходжанняў кода" msgstr[3] "%d уваходжанні кода" msgid "Source code not found" msgstr "Зыходны код не знойдзены" 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 не можа паказаць зыходны код у якім выкарыстоўваецца радок з той " "прычыны, што файла ў азначаным месцы або ён з'яўляецца сімвалічнай " "спасылкай, якая ўказвае на сапраўдны файл." msgid "File cannot be opened" msgstr "Немагчыма адкрыць файл" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "Poedit не можа адкрыць файл “%s”." msgid "Find" msgstr "Знайсці" msgid "Replace" msgstr "Замяніць" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "Налады" msgid "Ignore case" msgstr "Ігнараваць рэгістр" msgid "Wrap around" msgstr "Шукаць бясконца" msgid "Whole words only" msgstr "Толькі цэлыя словы" msgid "Find in source texts" msgstr "Шукаць у зыходных тэкстах" msgid "Find in translations" msgstr "Шукаць у перакладах" msgid "Find in comments" msgstr "Шукаць у перакладах" msgid "Close" msgstr "Закрыць" msgid "Replace &All" msgstr "Замяніць &усе" msgid "Replace &all" msgstr "Замяніць &усе" msgid "&Replace" msgstr "&Замяніць" msgid "< &Previous" msgstr "< &Папярэдні" msgid "&Next >" msgstr "&Наступны >" msgid "String to find" msgstr "Радок пошуку" msgid "Replacement string" msgstr "Радок замены" #, c-format msgid "Cannot execute program: %s" msgstr "Не атрымліваецца выканаць праграму: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "" msgid "Translation Language" msgstr "Мова перакладу" msgid "Language of the translation:" msgstr "Мова перакладу:" msgid "All strings" msgstr "Усе радкі" msgid "Couldn’t download Localazy project details." msgstr "Немагчыма спампаваць дэталі праекту Localazy." msgid "There was an error when uploading translations to Localazy." msgstr "Памылка падчас загрузкі перакладаў на Localazy." msgid "Projects" msgstr "Праекты" msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" msgid "Add Project" msgstr "Дадаць Праект" msgid "Add project" msgstr "Дадаць праект" msgid "Poedit - Catalogs manager" msgstr "Poedit - кіраўнік каталогаў" msgid "Edit…" msgstr "Змяніць…" msgid "Create new translations project" msgstr "Стварыць новы праект перакладу" msgid "Delete the project" msgstr "Выдаліць праект" msgid "Edit the project" msgstr "Рэдагаваць праект" msgid "Update all" msgstr "Абнавіць усё" msgid "Update all catalogs in the project" msgstr "Абнавіць усе каталогі праекта" msgid "Total" msgstr "Усяго" msgid "Untrans" msgstr "Не перакладзеных" msgctxt "column/row header" msgid "Needs Work" msgstr "Патрабуе праверкі" msgid "Errors" msgstr "Памылкі" msgid "Last modified" msgstr "Апошняе змяненне" msgid "Select directory" msgstr "Выберыце каталог" msgid "Directories:" msgstr "Каталогі:" msgid "" msgstr "<без назвы>" #, c-format msgid "Do you want to delete project “%s”?" msgstr "Вы сапраўды хочаце выдаліць праект “%s”?" msgid "Delete project" msgstr "Выдаліць праект" msgid "Deleting the project will not delete any translation files." msgstr "Выдаленне праекта не прывядзе да выдалення файлаў перакладу." msgid "Confirmation" msgstr "Пацвярджэнне" msgid "Update all catalogs in this project?" msgstr "Абнавіць усе катологі ў гэтым праекце?" msgid "Performs update from source code on all files in the project." msgstr "Выконвае абнаўленне з зыходнага кода усіх файлаў праекта." msgid "Check for Updates…" msgstr "Праверка абнаўленняў…" msgid "Catalogs Manager" msgstr "Менеджар каталогаў" msgid "&Preferences…" msgstr "&Налады…" msgid "&Edit" msgstr "&Змяніць" msgid "Undo" msgstr "Вярнуць" msgid "Redo" msgstr "Аднавіць" msgid "Paste and Match Style" msgstr "Стыль капіявання і ўстаўкі" msgid "Delete" msgstr "Выдаліць" msgid "Spelling and Grammar" msgstr "Праверка правапісу і граматыка" msgid "Show Spelling and Grammar" msgstr "Паказваць арфаграфічныя і граматычныя памылкі" msgid "Check Document Now" msgstr "Праверыць дакумент" msgid "Check Spelling While Typing" msgstr "Правяраць правапіс падчас уводу" msgid "Check Grammar With Spelling" msgstr "Правяраць граматыку і правапіс" msgid "Correct Spelling Automatically" msgstr "Выпраўляць правапіс аўтаматычна" msgid "Substitutions" msgstr "Замены" msgid "Show Substitutions" msgstr "Паказваць замены" msgid "Smart Copy/Paste" msgstr "Інтэлектуальнае капіяванне/устаўка" msgid "Smart Quotes" msgstr "Інтэлектуальныя двукоссі" msgid "Smart Dashes" msgstr "Інтэлектуальны працяжнік" msgid "Smart Links" msgstr "Інтэлектуальныя спасылкі" msgid "Text Replacement" msgstr "Замена тэксту" msgid "Transformations" msgstr "Пераўтварэнні" msgid "Make Upper Case" msgstr "Канвертаваць у вялікія літары" msgid "Make Lower Case" msgstr "Канвертаваць у маленькія літары" msgid "Capitalize" msgstr "Вялікімі літарамі" msgid "Speech" msgstr "Маўленне" msgid "Start Speaking" msgstr "Пачаць агучванне" msgid "Stop Speaking" msgstr "Спыніць агучванне" msgid "&View" msgstr "&Выгляд" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Show Toolbar" msgstr "Паказаць панэль інструментаў" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Customize Toolbar…" msgstr "Наладзіць панэль інструментаў…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Enter Full Screen" msgstr "Перайсці ў поўнаэкранны рэжым" msgid "Window" msgstr "Акно" msgid "Minimize" msgstr "Згарнуць" msgid "Zoom" msgstr "Маштаб" msgid "Welcome to Poedit" msgstr "Сардэчна запрашаем у Poedit" msgid "Bring All to Front" msgstr "Змясціць усё на пярэднім плане" msgid "Information about the translator" msgstr "Звесткі пра перакладчыка" msgid "Name:" msgstr "Імя:" msgid "Your Name" msgstr "Ваша імя" msgid "Email:" msgstr "Электронная пошта:" msgid "you@example.com" msgstr "alyaksandr.koshal@gmail.com" msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "Ваша імя і адрас электроннай пошты будуць выкарыстоўвацца толькі пры " "пазначэнні апошняга перакладчыка ў загалоўках GNU gettext файлаў." msgid "Editing" msgstr "Рэдагаванне" msgid "Automatically compile MO file when saving" msgstr "Аўтаматычна кампіляваць файл MO пры захаванні" msgid "Show summary after updating files" msgstr "Паказваць зводку пасля абнаўлення файлаў" msgid "Check spelling" msgstr "Правяраць правапіс" msgid "Always change focus to text input field" msgstr "Заўсёды рабіць поле для ўводу тэксту актыўным" msgid "" "Never let the list of strings take focus. If enabled, you must use Ctrl-" "arrows for keyboard navigation but you can also type text immediately, " "without having to press Tab to change focus." msgstr "" "Ніколі не рабіць актыўным спіс з радкамі. Калі ўключана, для перамяшчэння з " "дапамогай клавіятуры неабходна выкарыстоўваць Ctrl+стрэлкі. Гэты параметр " "таксама дазваляе ўводзіць тэкст імгненна, без папярэдняга націску клавішы " "TAB для пераключэння фокуса." msgid "Appearance" msgstr "Знешні выгляд" msgid "Use custom list font:" msgstr "Выкарыстоўваць карыстальніцкі шрыфт для спісу:" msgid "Use custom text fields font:" msgstr "Выкарыстоўваць карыстальніцкі тэкст у палях уводу:" msgid "Change UI language" msgstr "Змяніць мову інтэрфейсу" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions msgid "(requires Windows 8 or newer)" msgstr "(патрабуецца Windows 8 ці больш новая версія)" msgid "General" msgstr "Агульныя" msgid "Use translation memory" msgstr "Выкарыстоўваць памяць перакладаў" msgid "Manage…" msgstr "Кіраванне…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "Пры абнаўленні з крыніцы" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "падбіраць падобны пераклад унутры файла" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "чарнавы пераклад з памяці перакладаў" 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 можа паспрабаваць запоўніць новыя радкі толькі папярэднімі " "перакладамі з гэтага файла ці з вашай памяці перакладаў. Выкарыстанне памяці " "перакладаў не будзе вельмі эфектыўным, калі яна амаль пустая, але яна будзе " "станавіцца лепш па меры таго, як вы будзеце дадаваць новыя пераклады." msgid "Stored translations:" msgstr "Захаваныя пераклады:" msgid "Database size on disk:" msgstr "Памер базы даных на дыску:" msgid "Import Translation Files…" msgstr "Імпарт файлаў перакладу…" msgid "Import translation files…" msgstr "Імпарт файлаў перакладу…" msgid "Import From TMX…" msgstr "Імпарт з TMX…" msgid "Import from TMX…" msgstr "Імпарт з TMX…" msgid "Export To TMX…" msgstr "Экспарт у TMX…" msgid "Export to TMX…" msgstr "Экспарт у TMX…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). msgid "Reset" msgstr "Скінуць" msgid "Select translation files to import" msgstr "Выберыце файлы перакладу для імпартавання" msgid "Translation Memory" msgstr "Памяць перакладаў" msgid "Importing translations…" msgstr "Імпартаванне перакладаў…" #, c-format msgid "Error loading translation file “%s”." msgstr "Памылка загрузкі файла перакладу \"%s\"." msgid "Finalizing…" msgstr "Завяршэнне…" msgid "Select TMX files to import" msgstr "Выберыце файлы TMX для імпарту" msgid "TMX Files" msgstr "Файлы TMX" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "Не атрымалася імпартаваць файлы перакладу ў “%s”." msgid "Import error" msgstr "Памылка імпартавання" msgid "Export as…" msgstr "Экспартаваць як…" msgid "Exporting translations…" msgstr "Экспартаванне перакладаў…" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "Не атрымалася экспартаваць файлы перакладу ў “%s”." msgid "Export error" msgstr "Памылка экспарту" msgid "Reset translation memory" msgstr "Скінуць памяць перакладаў" msgid "Are you sure you want to reset the translation memory?" msgstr "Вы ўпэўненыя, што жадаеце скінуць памяць перакладаў?" 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. msgid "TM" msgstr "Памяць перакладаў (ПП)" msgid "" "Source code extractors are used to find translatable strings in the source " "code files and extract them so that they can be translated." msgstr "" "Экстрактары выкарыстоўвацца для пошуку радкоў, якія перакладаюцца ў файлах " "зыходнага кода і вымаюць іх так, каб іх можна было перакласці." msgid "Custom Extractors:" msgstr "Карыстальніцкія экстрактары:" msgid "Custom extractors:" msgstr "Карыстальніцкія экстрактары:" msgid "GNU gettext" msgstr "GNU gettext" 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 і іншыя)." msgid "Delete extractor" msgstr "Выдаліць экстрактар" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "Вы ўпэўненыя, што жадаеце выдаліць экстрактар \"%s\"?" msgid "Extractors" msgstr "Экстрактары" msgid "Accounts" msgstr "Уліковыя запісы" msgid "Automatically check for updates" msgstr "Аўтаматычна правяраць наяўнасць новых версій" msgid "Include beta versions" msgstr "У тым ліку правяраць бэта-версіі" msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "Бэта-версіі ўключаюць усе самыя новыя функцыі і ўдасканаленні, але могуць " "быць менш стабільнымі." msgid "Updates" msgstr "Абнаўленні" msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Гэтыя параметры ўплываюць на ўнутранае фарматаванне файлаў PO. Скарэктуйце " "іх, калі ў вас ёсць адмысловыя патрабаванні, напрыклад, калі вы карыстаецеся " "сістэмай кантролю версій." msgid "Line endings:" msgstr "Сканчэнне радкоў:" msgid "Unix (recommended)" msgstr "Unix (пажадана)" msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "Перанос:" msgid "Preserve formatting of existing files" msgstr "Захоўваць фарматаванне існуючых файлаў" msgid "Advanced" msgstr "Пашыраныя налады" msgid "Settings" msgstr "" msgid "Preparing strings…" msgstr "Падрыхтоўка радкоў…" msgid "Pre-translating from translation memory…" msgstr "Папярэдні пераклад з памяці перакладаў…" #, 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 радкоў" msgid "Pre-translating…" msgstr "Выкананне чарнавога перакладу…" 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. msgid "Pre-translate" msgstr "Чарнавы пераклад" msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" msgid "Cannot pre-translate from unknown language." msgstr "" msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" msgid "Only fill in exact matches" msgstr "Запаўняць толькі пры дакладным супадзенні" msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" msgid "Don’t mark exact matches as needing work" msgstr "Не пазначаць дакладныя супадзенні як \"патрабуюць дапрацоўкі\"" 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 "" "Уключыце толькі ў тым выпадку, калі вы давяраеце якасці вашай памяці " "перакладаў. Па змаўчанні, усе супадзенні з памяці перакладаў пазначаюцца як " "\"патрабуюць дапрацоўкі\" і іх неабходна пераправяраць." msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "Чарнавы пераклад аўтаматычна знаходзіць дакладныя ці недакладныя супадзенні " "для не перакладзеных радкоў у памяці перакладаў і запаўняе іх перакладамі." #, 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 радкоў было запоўнена чарнавым перакладам." msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "Пераклады былі пазначаныя як \"патрабуюць дапрацоўкі\" з той прычыны, што " "могуць змяшчаць памылкі. Вы павінны праверыць ці слушныя яны." msgid "No entries could be pre-translated." msgstr "Няма запісаў для якіх можна зрабіць чарнавы пераклад." msgid "" "The TM doesn’t contain any strings similar to the content of this file. It " "is only effective for semi-automatic translations after Poedit learns enough " "from files that you translated manually." msgstr "" "Памяць перакладаў не змяшчае радкоў, падобных на змесціва гэтага файла. Яна " "падыходзіць толькі для паўаўтаматычнага перакладу пасля таго, як Poedit " "збярэ дастаткова даных з файлаў, якія вы пераклалі ўручную." msgid "Cancelling…" msgstr "Скасоўваецца…" msgid "Drag Folders or Files Here" msgstr "Перацягніце папкі або файлы сюды" msgid "Drag folders or files here" msgstr "Перацягніце папкі або файлы сюды" msgid "Add Folders…" msgstr "Дадаць папкі…" msgid "Add folders…" msgstr "Дадаць папкі…" msgid "Add Files…" msgstr "Дадаць файлы…" msgid "Add files…" msgstr "Дадаць файлы…" msgid "Add Wildcard…" msgstr "Дадаць шаблон…" msgid "Add wildcard…" msgstr "Дадаць шаблон…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) msgid "Reveal in Finder" msgstr "Паказаць у Finder" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" msgid "Show in Explorer" msgstr "Паказаць у правадніку" msgid "Show in Folder" msgstr "Паказаць у папцы" msgid "Paths" msgstr "Шляхі" msgid "Excluded paths" msgstr "Выключаныя шляхі" msgid "Advanced extraction settings" msgstr "Дадатковыя налады вымання" msgid "Extract notes for translators from:" msgstr "Выняць нататкі для перакладчыкаў з:" msgid "Comments prefixed with:" msgstr "Каментарыі, якія пачынаюцца з:" msgid "All comments" msgstr "Усе каментарыі" msgid "Additional xgettext flags:" msgstr "Дадатковыя сцягі xgettext:" msgid "Additional keywords" msgstr "Дадатковыя ключавыя словы" msgid "Name of the project the translation is for" msgstr "Назва праекта перакладу для" msgid "Team name and email address or URL" msgstr "Назва каманды і адрас эл. пошты ці URL" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "напрыклад, plurals=2; plural=(n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (пажадана)" msgid "Please save the file first. This section cannot be edited until then." msgstr "" "Першапачаткова захавайце файл. Да гэтага дадзены раздзел не можа быць " "зменены." msgid "Placeholders correctness" msgstr "" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "" #, c-format msgid "Superfluous placeholder “%s” that isn’t in source text." msgstr "" msgid "Plural form translations" msgstr "Пераклады форм множнага ліку" msgid "Not all plural forms are translated." msgstr "Не ўсе формы множнага ліку перакладзеныя." msgid "Inconsistent upper/lower case" msgstr "Непаслядоўнасць ніжняга/верхняга рэгістра" msgid "The translation should start as a sentence." msgstr "Пераклад павінен пачынацца з вялікай літары." msgid "The translation should start with a lowercase character." msgstr "Пераклад павінен пачынацца з маленькай літары." msgid "Inconsistent whitespace" msgstr "Няўзгодненасць прабелаў" msgid "The translation doesn’t start with a space." msgstr "Пераклад не пачынаецца з прабела." msgid "The translation starts with a space, but the source text doesn’t." msgstr "Пераклад пачынаецца з прабела, а зыходны тэкст не." msgid "The translation is missing a newline at the end." msgstr "У перакладзе адсутнічае сімвал зыходнага радка ў канцы." msgid "The translation ends with a newline, but the source text doesn’t." msgstr "Пераклад скачаецца сімвалам новага радка, а пачатковы тэкст не." msgid "The translation is missing a space at the end." msgstr "У канцы перакладу прапушчаны прабел." msgid "The translation ends with a space, but the source text doesn’t." msgstr "Пераклад пачынаецца сканчаецца прабелам, а зыходны тэкст не." msgid "Punctuation checks" msgstr "Праверка пунктуацыі" #, c-format msgid "The translation should end with “%s”." msgstr "Пераклад павінен сканчацца \"%s\"." #, c-format msgid "The translation should not end with “%s”." msgstr "Пераклад не павінен заканчвацца на \"%s\"." #, c-format msgid "The translation ends with “%s”, but the source text ends with “%s”." msgstr "Пераклад сканчаецца \"%s\", а пачатковы тэкст сканчаецца \"%s\"." msgid "Cloud" msgstr "" msgid "Clear Menu" msgstr "Ачысціць меню" msgid "Clear menu" msgstr "Ачысціць меню" msgid "Comment:" msgstr "Каментарый:" msgid "Update" msgstr "Абнавіць" msgid "&Delete" msgstr "&Выдаліць" msgid "Delete the comment" msgstr "Выдаліць каментарый" msgid "Edit project" msgstr "Рэдагаваць праект" msgid "Project name:" msgstr "Назва праекта:" msgid "Browse" msgstr "Агляд" msgid "Add directory to the list" msgstr "Дадаць каталог у спіс" msgid "OK" msgstr "Добра" msgid "&File" msgstr "&Файл" msgid "&New…" msgstr "&Новы…" msgid "New from &POT/PO file…" msgstr "Новы з файла &POT/PO…" msgid "New From &POT/PO File…" msgstr "Новы з файла &POT/PO…" msgid "&Open…" msgstr "&Адкрыць…" msgid "Open Recent" msgstr "Адкрыць нядаўнія файлы" msgid "Open recent" msgstr "Адкрыць нядаўнія" msgid "Open cloud translation…" msgstr "" msgid "Open Cloud Translation…" msgstr "" msgid "&Start window" msgstr "&Пачатковае акно" msgid "&Start Window" msgstr "&Пачатковае акно" msgid "Catalogs &manager" msgstr "&Менеджар каталогаў" msgid "Catalogs &Manager" msgstr "&Менеджар каталогаў" msgid "&Close" msgstr "&Закрыць" msgid "&Save" msgstr "&Захаваць" msgid "Save &as…" msgstr "Захаваць &як…" msgid "Save &As…" msgstr "Захаваць &як…" msgid "Compile to MO…" msgstr "Кампіляваць у файл MO…" msgid "E&xport to HTML…" msgstr "" msgid "Check for updates…" msgstr "Праверка абнаўленняў…" msgid "Settings…" msgstr "Налады…" msgid "&Preferences" msgstr "&Налады" msgid "E&xit" msgstr "В&ыхад" msgid "Quit" msgstr "Выйсці" msgid "Copy from singular" msgstr "Капіяваць форму адзіночнага ліку" msgid "Copy From Singular" msgstr "Капіяваць форму адзіночнага ліку" msgid "Translation needs &work" msgstr "Пераклад, які патрабуе &дапрацоўкі" msgid "Translation Needs &Work" msgstr "Пераклады, якія патрабуюць &дапрацоўкі" msgid "Edit &comment" msgstr "Змяніць &каментарый" msgid "Edit &Comment" msgstr "Змяніць &каментарый" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "Прапановы" msgid "&Find…" msgstr "&Знайсці…" msgid "Replace…" msgstr "Замяніць…" msgid "Find next" msgstr "Знайсці наступны" msgid "Find previous" msgstr "Знайсці папярэдні" msgid "Find and Replace…" msgstr "Знайсці і замяніць…" msgid "Find Next" msgstr "Знайсці наступны" msgid "Find Previous" msgstr "Знайсці папярэдні" msgid "Show string &ID" msgstr "Паказваць &ID радка" msgid "Show String &ID" msgstr "Паказваць &ID радка" msgid "Show warnings" msgstr "Паказаць папярэджанні" msgid "Show Warnings" msgstr "Паказаць папярэджанні" msgid "Sort by &file order" msgstr "Сартаваць як у &файле" msgid "Sort by &File Order" msgstr "Сартаваць як у &файле" msgid "Sort by &source" msgstr "Сартаваць як у &арыгінале" msgid "Sort by &Source" msgstr "Сартаваць як у &арыгінале" msgid "Sort by &translation" msgstr "Сартаваць як у &перакладзе" msgid "Sort by &Translation" msgstr "Сартаваць як у &перакладзе" msgid "&Group by context" msgstr "&Групаваць па кантэксце" msgid "&Group By Context" msgstr "&Групаваць па кантэксце" msgid "Entries with errors first" msgstr "Першымі адлюстроўваць запісы з памылкамі" msgid "Entries with Errors First" msgstr "Першымі адлюстроўваць запісы з памылкамі" msgid "&Untranslated entries first" msgstr "Спачатку &не перакладзеныя запісы" msgid "&Untranslated Entries First" msgstr "Спачатку &не перакладзеныя запісы" msgid "&Show code occurrences" msgstr "&Паказаць уваходжанні кода" msgid "&Show Code Occurrences" msgstr "&Паказаць уваходжанні кода" msgid "Show sidebar" msgstr "Паказаць бакавую панэль" msgid "Show status bar" msgstr "Паказаць радок стану" msgid "&Translation" msgstr "&Пераклад" msgid "&Update from source code" msgstr "&Абнавіць з зыходнага кода" msgid "&Update from Source Code" msgstr "&Абнавіць з зыходнага кода" msgid "Update from &POT file…" msgstr "Абнавіць з файла &POT…" msgid "Update from &POT File…" msgstr "Абнавіць з файла &POT…" msgid "Sync with Crowdin" msgstr "Сінхранізаваць з Crowdin" msgid "Pre-&translate…" msgstr "Чарнавы &пераклад…" msgid "&Validate translations" msgstr "&Праверыць пераклад" msgid "&Validate Translations" msgstr "&Праверыць пераклад" msgid "Remove Same-as-Source Translations" msgstr "" msgid "&Purge deleted translations" msgstr "&Знішчыць вылучаныя пераклады" msgid "&Purge Deleted Translations" msgstr "&Знішчыць вылучаныя пераклады" msgid "&Properties…" msgstr "&Уласцівасці…" msgid "&Go" msgstr "&Перайсці" msgid "&Done and next" msgstr "&Скончыць і перайсці да наступнага" msgid "&Done and Next" msgstr "&Скончыць і перайсці да наступнага" msgid "Previously edited" msgstr "" msgid "Previously Edited" msgstr "" msgid "&Previous translation" msgstr "&Папярэдні пераклад" msgid "&Previous Translation" msgstr "&Папярэдні пераклад" msgid "&Next translation" msgstr "&Наступны пераклад" msgid "&Next Translation" msgstr "&Наступны пераклад" msgid "P&revious unfinished" msgstr "Па&пярэдні незавершаны" msgid "P&revious Unfinished" msgstr "Па&пярэдні незавершаны" msgid "Ne&xt unfinished" msgstr "На&ступны незавершаны" msgid "Ne&xt Unfinished" msgstr "На&ступны незавершаны" msgid "Previous plural form" msgstr "Папярэдняя форма множнага ліку" msgid "Previous Plural Form" msgstr "Папярэдняя форма множнага ліку" msgid "Next plural form" msgstr "Наступная форма множнага ліку" msgid "Next Plural Form" msgstr "Наступная форма множнага ліку" msgid "&Online help" msgstr "&Сеціўная даведка" msgid "&Online Help" msgstr "&Сеціўная даведка" msgid "&GNU gettext manual" msgstr "&Дакументацыя GNU gettext" msgid "&GNU gettext Manual" msgstr "&Дакументацыя GNU gettext" msgid "&About Poedit" msgstr "&Пра Poedit" msgid "&About" msgstr "&Пра праграму" msgid "Extractor setup" msgstr "Налады экстрактара" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Спіс пышырэнняў, падзеленых кропкай з коскай (напрыклад *.cpp;*.h):" msgid "Invocation:" msgstr "Выклік:" msgid "Command to extract translations:" msgstr "Каманда для вымання перакладу:" 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 - кадаванне (гл. ніжэй)." msgid "An item in keywords list:" msgstr "Элемент у спісе ключавых слоў:" msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Гэта будзе дададзена ў камандны радок для кожнага\n" "ключавога слова. %k азначае ключавое слова." msgid "An item in input files list:" msgstr "Элемент у спісе ўваходных файлаў:" #, 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 азначае назву файла." msgid "Source code charset:" msgstr "Кадаванне зыходнага кода:" #, 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 азначае кадаванне." msgid "Translation Properties" msgstr "Уласцівасці перакладу" msgid "Project name and version:" msgstr "Назва і версія праекта:" msgid "Language team:" msgstr "Каманда перакладчыкаў:" msgid "Plural forms:" msgstr "Формы множнага ліку:" msgid "Use default rules for this language" msgstr "Выкарыстоўваць правілы па змаўчанні для гэтай мовы" msgid "Use custom expression" msgstr "Выкарыстоўваць выраз карыстальніка" msgid "Learn about plural forms" msgstr "Даведацца больш пра формы множнага ліку" msgid "Charset:" msgstr "Кадаванне:" msgid "Advanced Extraction Settings…" msgstr "Дадатковыя налады вымання…" msgid "Advanced extraction settings…" msgstr "Дадатковыя налады вымання…" msgid "Translation properties" msgstr "Уласцівасці перакладу" msgid "Sources Paths" msgstr "Шлях да зыходнага файла" msgid "Sources paths" msgstr "Шлях да зыходнага файла" msgid "Extract text from source files in the following directories:" msgstr "Вымаць тэкст з зыходных файлаў у наступных каталогах:" msgid "Base path:" msgstr "Базавы шлях:" msgid "Sources Keywords" msgstr "Ключавыя словы зыходных файлаў" msgid "Sources keywords" msgstr "Ключавыя словы зыходных файлаў" msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Выкарыстоўвайце гэтыя ключавыя словы (імёны функцый) для распазнання\n" "радкоў, якія перакладаюцца ў зыходных файлах:" msgid "Also use default keywords for supported languages" msgstr "" "Таксама выкарыстоўваць ключавыя словы па змаўчанні для моў, якія " "падтрымліваюцца" msgid "Learn about gettext keywords" msgstr "Даведацца больш пра ключавыя словы gettext" msgid "Update summary" msgstr "Абнавіць зводку" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" "Гэтыя радкі знойдзены у зыходных файлах, але яны адсутнічаюць у файле.\n" "Poedit зараз дадасць іх у файл." msgid "New strings" msgstr "Новыя радкі" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" "Гэтых радкоў больш няма у зыходным кодзе.\n" "Poedit зараз выдаліць іх з файла." msgid "Obsolete strings" msgstr "Састарэлыя радкі" msgid "(0 new, 0 obsolete)" msgstr "(0 новых, 0 састарэлых)" msgid "Open" msgstr "" msgid "Open file" msgstr "Адкрыць файл" msgid "Save file" msgstr "Захаваць файл" msgid "Validate" msgstr "Праверыць" msgid "Check for errors in the translation" msgstr "Праверыць наяўнасць памылак у перакладзе" msgid "Update from code" msgstr "Абнавіць з кода" msgid "Update from Code" msgstr "Абнавіць з кода" msgid "Update from source code" msgstr "Абнавіць з зыходнага кода" msgid "Sidebar" msgstr "Бакавая панэль" msgid "Show or hide the sidebar" msgstr "Паказаць ці схаваць бакавую панэль" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. msgid "Previous source text" msgstr "Папярэдні зыходны тэкст" msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "Стары зыходны тэкст (да таго, як быў адноўлены), якому адпавядае недакладны " "пераклад." msgid "Notes for translators" msgstr "Заўвагі для перакладчыка" msgid "Comment" msgstr "Каментарый" msgid "Add comment" msgstr "Дадаць каментарый" msgid "Add Comment" msgstr "Дадаць каментарый" msgid "Delete From Translation Memory" msgstr "Выдаліць з памяці перакладаў" msgid "Delete from translation memory" msgstr "Выдаліць з памяці перакладаў" msgid "Translation suggestions" msgstr "Варыянты перакладу" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). msgid "No matches found" msgstr "Супадзенняў не знойдзена" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). msgid "No Matches Found" msgstr "Супадзенняў не знойдзена" msgid "This string was found in Poedit’s translation memory." msgstr "Гэты радок быў знойдзены ў памяці перакладаў Poedit." msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" msgid "The TMX file is malformed." msgstr "Няправільны файл TMX." msgid "No translations were found in the TMX file." msgstr "Пераклады не знойдзеныя ў файле TMX." #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "База даных памяці перакладаў пашкоджаная: %s (%d)." #, c-format msgid "Translation memory error: %s (%d)." msgstr "Памылка памяці перакладаў: %s (%d)." msgid "Cannot create temporary directory." msgstr "Не атрымалася стварыць часовы каталог." msgid "There are no translations. That’s unusual." msgstr "Вельмі дзіўна, але пераклад адсутнічае." msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "Translators typically use PO template files (POTs) prepared for them by the " "developer." msgstr "" "Запісы, якія перакладаюцца не дадаюцца ўручную ў сістэму Gettext, а " "аўтаматычна вымаюцца\n" "з зыходнага кода. Такім чынам, забяспечваецца іх актуальнасць і " "дакладнасць.\n" "Перакладчыкі звычайна працуюць з файламі PO (шаблоны POT), якія падрыхтаваў " "для іх распрацоўшчык." msgid "(Learn more about GNU gettext)" msgstr "(Даведацца больш пра GNU gettext)" msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "Самы просты шлях запоўніць гэты файл перакладамі - гэта абнавіць яго з POT:" msgid "Update from POT" msgstr "Абнавіць з POT" msgid "Take translatable strings from an existing POT template." msgstr "Выманне радкоў для перакладу з існуючага шаблона POT." msgid "" "You can also extract translatable strings directly from the source code:" msgstr "" "Вы таксама можаце выняць радкі для перакладу непасрэдна з зыходнага кода:" msgid "Extract from sources" msgstr "Выняць з зыходнага кода" msgid "Configure source code extraction in Properties." msgstr "Наладзьце выманне зыходнага кода ў раздзеле \"Уласцівасці\"." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #, c-format msgid "Version %s" msgstr "Версія %s" msgid "Create new" msgstr "Стварыць новы" msgid "Create new translation from POT template." msgstr "Стварыць новы пераклад з шаблона POT." msgid "Browse files" msgstr "Прагляд файлаў" msgid "Open and edit translation files." msgstr "Адкрыць і змяніць файлы перакладу." msgid "Translate cloud project" msgstr "" msgid "Collaborate with other people online." msgstr "" msgid "Recent files" msgstr "Нядаўнія файлы" msgid "Sync" msgstr "Сінхранізацыя" 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") #, c-format msgid "About %s" msgstr "Пра %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #, c-format msgid "%s Preferences" msgstr "Налады %s" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "Сэрвісы" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "Схаваць %s" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "Схаваць іншыя" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "Паказаць усе" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "Выйсці з %s" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "Налады…" msgid "Preferences..." msgstr "Налады..." #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "Нядаўнія" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "Частыя" msgid "&Apply" msgstr "&Ужыць" msgid "Apply" msgstr "Ужыць" msgid "&Back" msgstr "&Назад" msgid "Back" msgstr "Назад" msgid "&Cancel" msgstr "&Адмена" msgid "&Clear" msgstr "&Ачысціць" msgid "Clear" msgstr "Ачысціць" msgid "Copy" msgstr "Капіяваць" msgid "Cu&t" msgstr "Выра&заць" msgid "Cut" msgstr "Выразаць" msgid "Edit" msgstr "Змяніць" msgid "&Quit" msgstr "&Выйсці" msgid "Help" msgstr "Даведка" msgid "&New" msgstr "&Стварыць" msgid "New" msgstr "Новы" msgid "&No" msgstr "&Не" msgid "No" msgstr "Не" msgid "&OK" msgstr "&Ok" msgid "Open…" msgstr "Адкрыць…" msgid "&Open..." msgstr "&Адкрыць..." msgid "Open..." msgstr "Адкрыць..." msgid "&Paste" msgstr "&Уставіць" msgid "Paste" msgstr "Уставіць" msgid "Preferences" msgstr "Налады" msgid "&Redo" msgstr "&Аднавіць" msgid "Refresh" msgstr "Абнавіць" msgid "&Save as" msgstr "&Захаваць як" msgid "Save as" msgstr "Захаваць як" msgid "Select &All" msgstr "Выбраць у&сё" msgid "Select All" msgstr "Выбраць усё" msgid "&Undo" msgstr "&Вярнуць" msgid "&Yes" msgstr "&Так" msgid "Yes" msgstr "Так" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "Уверх" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "Уніз" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "Улева" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "Управа" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "shift" poedit-3.5/locales/be@latin.po0000644000175100001770000013577614664354153013327 00000000000000# Belarusian latin translation of poedit # Alaksandar Navicki , 2007 msgid "" msgstr "" "Project-Id-Version: Poedit 1.6\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2008-03-03 14:41+0200\n" "Last-Translator: Alaksandar Navicki \n" "Language-Team: \n" "Language: be@latin\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-SourceCharset: utf-8\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2;\n" msgid "Hide this notification message" msgstr "" msgid "Don’t Show Again" msgstr "" msgid "Don’t show again" msgstr "" #, fuzzy, c-format msgid "(New: %i, obsolete: %i)" msgstr "(%i novych, %i sastarełych)" msgid "Collecting source files…" msgstr "" msgid "Extracting translatable strings…" msgstr "" msgid "Failed to load file with extracted translations." msgstr "" msgid "Merging differences…" msgstr "" msgid "Updating translations" msgstr "" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "" msgid "Invalid file" msgstr "" #, c-format msgid "Malformed header: “%s”" msgstr "" #, fuzzy msgid "PO Translation Files" msgstr "Pamiać pierakładaŭ" #, fuzzy msgid "POT Translation Templates" msgstr "Pamiać pierakładaŭ" msgid "XLIFF Translation Files" msgstr "" msgid "JSON Translation Files" msgstr "" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "" msgid "All Translation Files" msgstr "" msgid "The file is in a format not recognized by Poedit." msgstr "" msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" #, c-format msgid "Reading file content failed with the following error: %s" msgstr "" #, c-format msgid "" "File “%s” is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" #, c-format msgid "Couldn’t save file %s." msgstr "" msgid "Screenshots:" msgstr "" #, c-format msgid "%i line of file “%s” was not loaded correctly." msgid_plural "%i lines of file “%s” were not loaded correctly." msgstr[0] "" msgstr[1] "" msgstr[2] "" #, c-format msgid "Line %d of file “%s” is corrupted (not valid %s data)." msgstr "" msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" msgid "Couldn’t load the file, it is probably damaged." msgstr "" msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" #, 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 "" msgid "Error saving file" msgstr "" #, c-format msgid "“%s” is not a valid POT file." msgstr "" #, c-format msgid "Error while loading XLIFF file: %s" msgstr "" #, c-format msgid "unsupported version (%s)" msgstr "" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML msgid "Broken markup in translation string." msgstr "" msgid "(Use default language)" msgstr "(Užyj zmoŭčanuju movu)" msgid "Language selection" msgstr "Vybar movy" msgid "Select your preferred language" msgstr "" msgid "You must restart Poedit for this change to take effect." msgstr "Kab źmieny byli zachavanyja, treba ŭruchomić prahramu Poedit znoŭ." msgid "Add Account" msgstr "" msgid "Add account" msgstr "" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "" msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" msgid "How does cloud sync work?" msgstr "" msgid "Account" msgstr "" msgid "(not signed in)" msgstr "" msgid "File" msgstr "" msgid "Open cloud translation" msgstr "" msgid "Manage accounts" msgstr "" msgid "Project:" msgstr "" msgid "Language:" msgstr "Mova:" msgid "Sign in to Cloud Account" msgstr "" msgid "Sign in to cloud account" msgstr "" msgid "No translation projects listed in your account." msgstr "" msgid "Downloading latest translations…" msgstr "" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #, c-format msgid "Sign in to %s" msgstr "" msgid "Syncing" msgstr "" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s…" msgstr "" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s failed." msgstr "" msgid "Syncing error" msgstr "" msgid "Add" msgstr "" msgid "Unknown Crowdin error." msgstr "" msgid "Not authorized, please sign in again." msgstr "" msgid "Downloading translations is disabled in this project." msgstr "" msgid "Sign In" msgstr "" msgid "Sign in" msgstr "" msgid "Sign Out" msgstr "" msgid "Sign out" msgstr "" msgid "Learn more about Crowdin" msgstr "" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" msgid "Waiting for authentication…" msgstr "" msgid "Updating user information…" msgstr "" msgid "Sign in to Crowdin" msgstr "" msgid "Syncing with Crowdin failed." msgstr "" msgid "Crowdin error" msgstr "" msgid "Uploading translations…" msgstr "" msgid "&Copy" msgstr "" msgid "Learn more" msgstr "" msgid "&Help" msgstr "&Dapamoha" msgid "MO files can’t be directly edited in Poedit." msgstr "" #, fuzzy msgid "Error opening file" msgstr "Pamyłka pry adčynieńni fajłu %s!" msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" msgid "don’t delete temporary files (for debugging)" msgstr "" msgid "handle a poedit:// URI" msgstr "" msgid "go to item at given line number" msgstr "" msgid "Failed to communicate with Poedit process." msgstr "" #, c-format msgid "Unhandled exception occurred: %s" msgstr "" msgid "Select translation template" msgstr "" msgid "Select translation file" msgstr "" msgid "Poedit is an easy to use translation editor." msgstr "" msgid "You can’t drop more than one file on Poedit window." msgstr "" #, c-format msgid "File “%s” is not a translation file." msgstr "" #, c-format msgid "File “%s” doesn’t exist." msgstr "" 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". #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "" msgid "Install" msgstr "" #, c-format msgid "The file “%s” has been changed by another application." msgstr "" msgid "Reload file" msgstr "" msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" msgid "Ignore" msgstr "" msgid "Reload File" msgstr "" msgid "The file has been modified. Do you want to save changes?" msgstr "" msgid "Save changes" msgstr "Zapišy źmieny" msgid "Your changes will be lost if you don’t save them." msgstr "" msgid "Save" msgstr "Zapišy" msgid "Do&n’t save" msgstr "" msgid "Don’t Save" msgstr "" msgid "The changes made by the other application will be lost if you save." msgstr "" msgid "Cancel" msgstr "Anuluj" msgid "Save Anyway" msgstr "" msgid "Save anyway" msgstr "" msgid "Save as…" msgstr "" msgid "Compile to…" msgstr "" #, fuzzy msgid "Compiled Translation Files" msgstr "Pierakład" msgid "Export to HTML…" msgstr "" msgid "HTML Files" msgstr "" #, c-format msgid "In: %s" msgstr "" #, fuzzy msgid "Source code not available." msgstr "Kadavańnie kryničnaha kodu:" #, fuzzy msgid "Updating failed" msgstr "Aktualizacyja katalohu..." 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 "" msgid "Permission denied." msgstr "" 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. 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. msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" msgid "Translation entries in the file are probably incorrect." msgstr "" msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "" msgid "Open translation template" msgstr "" #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "" msgstr[1] "" msgstr[2] "" #, fuzzy msgid "Validation results" msgstr "Pamiać pierakładaŭ" msgid "" "Entries with errors were marked in red in the list. Details of the error " "will be shown when you select such an entry." msgstr "" msgid "The file was saved safely." msgstr "" msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" msgid "The file cannot be compiled into the MO format and used." msgstr "" #, fuzzy msgid "No problems with the translation found." msgstr "Spasyłak da hetaj frazy nia znojdziena." #, fuzzy, 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] "Pierakład &sumniŭny" msgstr[1] "Pierakład &sumniŭny" msgstr[2] "Pierakład &sumniŭny" #, fuzzy msgid "The translation is ready for use." msgstr "Pierakład &sumniŭny" #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "" msgid "" "The file contained duplicate items, which is not allowed in PO files and " "would prevent the file from being used. Poedit fixed the issue, but you " "should review translations of any items marked as needing work and correct " "them if necessary." msgstr "" msgid "Language of the translation isn’t set." msgstr "" #, fuzzy msgid "Set Language" msgstr "Abiary movu" #, fuzzy msgid "Set language" msgstr "Abiary movu" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." msgid "" "Suggestions are not available if the translation language is not set " "correctly. Other features, such as plural forms, may be affected as well." msgstr "" msgid "Language of the translation is the same as source language." msgstr "" msgid "Fix Language" msgstr "" msgid "Fix language" msgstr "" msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" msgid "Required header Plural-Forms is missing." msgstr "" #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "" msgid "Fix the Header" msgstr "" 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". #, 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.")" msgid "Review" msgstr "" msgid "Would you like to use English for source text?" msgstr "" #, 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" msgid "Load English" msgstr "" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "" #, c-format msgid "Remaining: %d" msgstr "" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "" msgstr[1] "" msgstr[2] "" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgid " (unsaved)" msgstr "" msgid " (modified)" msgstr " (zmadyfikavany)" #, fuzzy, c-format msgid "Failed to update translation memory: %s" msgstr "Aktualizuj pamiać pierakładaŭ" msgid "Remove same-as-source translations" msgstr "" msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" msgid "Keep" msgstr "" msgid "Remove" msgstr "" msgid "Purge deleted translations" msgstr "Ačyść ad nieŭžyvanych pierakładaŭ" msgid "Do you want to remove all translations that are no longer used?" msgstr "" #, fuzzy 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 "" "Sapraŭdy vydalić usie nieŭžyvanyja pierakłady z katalohu?\n" "Kali tak, daviadziecca pierakładać ich jašče raz, kali raptam u budučyni ich " "znoŭ dadaduć." msgid "Purge" msgstr "" #, fuzzy msgid "Copy from source text" msgstr "&Aktualizuj z krynicaŭ" 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 msgid "Ctrl+" msgstr "" #, fuzzy msgid "Clear translation" msgstr "Pierakład" #, fuzzy msgid "Clear Translation" msgstr "Pierakład" msgid "Edit comment" msgstr "Redahuj kamentar" #, fuzzy msgid "Edit Comment" msgstr "Redahuj &kamentar" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "" msgid "Hide Sidebar" msgstr "" msgid "Show Sidebar" msgstr "" msgid "Hide Status Bar" msgstr "" msgid "Show Status Bar" msgstr "" msgid "String length in characters: translation | source" msgstr "" msgid "String length in characters" msgstr "" #, fuzzy msgid "Source text" msgstr "Kryničny fajł" msgid "Singular" msgstr "" msgid "Plural" msgstr "" msgid "Translation" msgstr "" msgid "Pre-translated" msgstr "" 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. msgid "Needs work" msgstr "" msgid "" "POT files are only templates and don’t contain any translations themselves.\n" "To make a translation, create a new PO file based on the template." msgstr "" #, fuzzy msgid "Create new translation" msgstr "Stvary novy prajekt pierakładaŭ" 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 msgid "Source text ID" msgstr "" msgid "Everything" msgstr "" #, c-format msgid "Form %i" msgstr "Forma %i" #, c-format msgid "Form %i (unused)" msgstr "" msgid "Zero" msgstr "" msgid "One" msgstr "" msgid "Two" msgstr "" msgid "Other" msgstr "" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, c-format msgid "String context: %s" msgstr "" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #, c-format msgid "String identifier: %s" msgstr "" #, c-format msgid "%s Format" msgstr "" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "" #, fuzzy, c-format msgid "Translation — %s" msgstr "Pierakład" msgid "ID" msgstr "" #, c-format msgid "Source text — %s" msgstr "" msgid "unknown language" msgstr "" #, c-format msgid "Network error: %s (%d)" msgstr "" msgid "Unknown error" msgstr "" #, c-format msgid "Failed command: %s" msgstr "Pamyłka zahadu: %s" msgid "Failed to merge gettext catalogs." msgstr "Nie ŭdałosia spałuvyć katalahi gettext." #, fuzzy msgid "Open in Editor" msgstr "Redaktar" #, fuzzy msgid "Open in editor" msgstr "Redaktar" msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" msgid "No usage information" msgstr "" #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgid "Source code not found" msgstr "" 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 "" msgid "File cannot be opened" msgstr "" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "" #, fuzzy msgid "Find" msgstr "Znajdzi..." msgid "Replace" msgstr "" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "" msgid "Ignore case" msgstr "" msgid "Wrap around" msgstr "" msgid "Whole words only" msgstr "Tolki cełyja słovy" msgid "Find in source texts" msgstr "" #, fuzzy msgid "Find in translations" msgstr "Pierakład" msgid "Find in comments" msgstr "Znajdzi ŭ kamentaroch" #, fuzzy msgid "Close" msgstr "Za&čyni" msgid "Replace &All" msgstr "" msgid "Replace &all" msgstr "" msgid "&Replace" msgstr "" #, fuzzy msgid "< &Previous" msgstr "< Papiaredni" #, fuzzy msgid "&Next >" msgstr "Nastupny >" msgid "String to find" msgstr "" msgid "Replacement string" msgstr "" #, fuzzy, c-format msgid "Cannot execute program: %s" msgstr "Niemahčyma ŭruchomić prahramu: " #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "" #, fuzzy msgid "Translation Language" msgstr "Pierakład" #, fuzzy msgid "Language of the translation:" msgstr "Ačyść ad nieŭžyvanych pierakładaŭ" msgid "All strings" msgstr "" msgid "Couldn’t download Localazy project details." msgstr "" msgid "There was an error when uploading translations to Localazy." msgstr "" msgid "Projects" msgstr "" msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" msgid "Add Project" msgstr "" msgid "Add project" msgstr "" msgid "Poedit - Catalogs manager" msgstr "Poedit – Kiraŭnik katalohaŭ" msgid "Edit…" msgstr "" msgid "Create new translations project" msgstr "Stvary novy prajekt pierakładaŭ" msgid "Delete the project" msgstr "Vydal prajekt" msgid "Edit the project" msgstr "Redahuj prajekt" msgid "Update all" msgstr "Aktualizuj usie" msgid "Update all catalogs in the project" msgstr "Aktualizuj usie katalohi ŭ prajekcie" msgid "Total" msgstr "Usiaho" msgid "Untrans" msgstr "Niepierakł" msgctxt "column/row header" msgid "Needs Work" msgstr "" msgid "Errors" msgstr "" msgid "Last modified" msgstr "Niadaŭna zmadyfikavana" msgid "Select directory" msgstr "Abiary kataloh" msgid "Directories:" msgstr "Katalohi:" msgid "" msgstr "" #, c-format msgid "Do you want to delete project “%s”?" msgstr "" msgid "Delete project" msgstr "" msgid "Deleting the project will not delete any translation files." msgstr "" msgid "Confirmation" msgstr "Paćvierdžańnie" msgid "Update all catalogs in this project?" msgstr "" msgid "Performs update from source code on all files in the project." msgstr "" msgid "Check for Updates…" msgstr "" #, fuzzy msgid "Catalogs Manager" msgstr "&Kiraŭnik katalohaŭ" msgid "&Preferences…" msgstr "" msgid "&Edit" msgstr "&Redahuj" msgid "Undo" msgstr "Viarni" msgid "Redo" msgstr "" msgid "Paste and Match Style" msgstr "" msgid "Delete" msgstr "Vydal" msgid "Spelling and Grammar" msgstr "" msgid "Show Spelling and Grammar" msgstr "" msgid "Check Document Now" msgstr "" msgid "Check Spelling While Typing" msgstr "" msgid "Check Grammar With Spelling" msgstr "" msgid "Correct Spelling Automatically" msgstr "" msgid "Substitutions" msgstr "" msgid "Show Substitutions" msgstr "" msgid "Smart Copy/Paste" msgstr "" msgid "Smart Quotes" msgstr "" msgid "Smart Dashes" msgstr "" msgid "Smart Links" msgstr "" msgid "Text Replacement" msgstr "" #, fuzzy msgid "Transformations" msgstr "Pierakład" msgid "Make Upper Case" msgstr "" msgid "Make Lower Case" msgstr "" msgid "Capitalize" msgstr "" msgid "Speech" msgstr "" msgid "Start Speaking" msgstr "" msgid "Stop Speaking" msgstr "" msgid "&View" msgstr "&Vyhlad" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Show Toolbar" msgstr "" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Customize Toolbar…" msgstr "" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Enter Full Screen" msgstr "" #, fuzzy msgid "Window" msgstr "Windows" msgid "Minimize" msgstr "" msgid "Zoom" msgstr "" #, fuzzy msgid "Welcome to Poedit" msgstr "&Pra..." msgid "Bring All to Front" msgstr "" #, fuzzy msgid "Information about the translator" msgstr "Ačyść ad nieŭžyvanych pierakładaŭ" msgid "Name:" msgstr "" #, fuzzy msgid "Your Name" msgstr "Imia j proźvišča:" msgid "Email:" msgstr "" msgid "you@example.com" msgstr "" msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" #, fuzzy msgid "Editing" msgstr "Redahuj" #, fuzzy msgid "Automatically compile MO file when saving" msgstr "Aŭtamatyčna stvaraj fajł .mo pry zapisie" msgid "Show summary after updating files" msgstr "" msgid "Check spelling" msgstr "" msgid "Always change focus to text input field" msgstr "Zaŭždy pierachodź da pola ŭvodu tekstu" 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 nie davaj fokus śpisu radkoŭ. Kali ŭklučana, treba karystacca " "Ctrl+strełkami dla navihacyi z klavijatury, ale možna taksama ŭvodzić tekst " "adrazu, biez naciskańnia Tab, kab źmianić fokus." msgid "Appearance" msgstr "" #, fuzzy msgid "Use custom list font:" msgstr "Užyj ułasny šryft dla tekstavych paloŭ" #, fuzzy msgid "Use custom text fields font:" msgstr "Užyj ułasny šryft dla tekstavych paloŭ" msgid "Change UI language" msgstr "Źmiani movu interfejsu" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions msgid "(requires Windows 8 or newer)" msgstr "" msgid "General" msgstr "" #, fuzzy msgid "Use translation memory" msgstr "Aktualizuj pamiać pierakładaŭ" msgid "Manage…" msgstr "" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "" 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 "" #, fuzzy msgid "Stored translations:" msgstr "Sumniŭny pierakład" msgid "Database size on disk:" msgstr "" msgid "Import Translation Files…" msgstr "" msgid "Import translation files…" msgstr "" msgid "Import From TMX…" msgstr "" msgid "Import from TMX…" msgstr "" msgid "Export To TMX…" msgstr "" msgid "Export to TMX…" msgstr "" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). msgid "Reset" msgstr "" #, fuzzy msgid "Select translation files to import" msgstr "Aktualizuj pamiać pierakładaŭ" msgid "Translation Memory" msgstr "Pamiać pierakładaŭ" msgid "Importing translations…" msgstr "" #, c-format msgid "Error loading translation file “%s”." msgstr "" msgid "Finalizing…" msgstr "" msgid "Select TMX files to import" msgstr "" msgid "TMX Files" msgstr "" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "" msgid "Import error" msgstr "" msgid "Export as…" msgstr "" msgid "Exporting translations…" msgstr "" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "" msgid "Export error" msgstr "" #, fuzzy msgid "Reset translation memory" msgstr "Aktualizuj pamiać pierakładaŭ" #, fuzzy msgid "Are you sure you want to reset the translation memory?" msgstr "Aktualizuj pamiać pierakładaŭ" 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. msgid "TM" msgstr "" msgid "" "Source code extractors are used to find translatable strings in the source " "code files and extract them so that they can be translated." msgstr "" msgid "Custom Extractors:" msgstr "" msgid "Custom extractors:" msgstr "" msgid "GNU gettext" msgstr "" msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" msgid "Delete extractor" msgstr "" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "" #, fuzzy msgid "Extractors" msgstr "&Aktualizuj z krynicaŭ" msgid "Accounts" msgstr "" #, fuzzy msgid "Automatically check for updates" msgstr "Aŭtamatyčna praviaraj najaŭnaść novaj versii Poedit" msgid "Include beta versions" msgstr "" msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" #, fuzzy msgid "Updates" msgstr "Aktualizuj" msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" #, fuzzy msgid "Line endings:" msgstr "Farmat zakančeńnia radkoŭ:" msgid "Unix (recommended)" msgstr "" msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "" msgid "Preserve formatting of existing files" msgstr "" msgid "Advanced" msgstr "" msgid "Settings" msgstr "" msgid "Preparing strings…" msgstr "" msgid "Pre-translating from translation memory…" msgstr "" #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgid "Pre-translating…" msgstr "" 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. msgid "Pre-translate" msgstr "" msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" msgid "Cannot pre-translate from unknown language." msgstr "" msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" msgid "Only fill in exact matches" msgstr "" msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" msgid "Don’t mark exact matches as needing work" msgstr "" 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 "" msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "" msgstr[1] "" msgstr[2] "" msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" msgid "No entries could be pre-translated." msgstr "" msgid "" "The TM doesn’t contain any strings similar to the content of this file. It " "is only effective for semi-automatic translations after Poedit learns enough " "from files that you translated manually." msgstr "" msgid "Cancelling…" msgstr "" msgid "Drag Folders or Files Here" msgstr "" msgid "Drag folders or files here" msgstr "" msgid "Add Folders…" msgstr "" msgid "Add folders…" msgstr "" msgid "Add Files…" msgstr "" msgid "Add files…" msgstr "" msgid "Add Wildcard…" msgstr "" msgid "Add wildcard…" msgstr "" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) msgid "Reveal in Finder" msgstr "" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" msgid "Show in Explorer" msgstr "" msgid "Show in Folder" msgstr "" msgid "Paths" msgstr "Ściežki" msgid "Excluded paths" msgstr "" msgid "Advanced extraction settings" msgstr "" msgid "Extract notes for translators from:" msgstr "" msgid "Comments prefixed with:" msgstr "" msgid "All comments" msgstr "" msgid "Additional xgettext flags:" msgstr "" #, fuzzy msgid "Additional keywords" msgstr "Abjekt u śpisie klučavych słovaŭ:" #, fuzzy msgid "Name of the project the translation is for" msgstr "Spasyłak da hetaj frazy nia znojdziena." msgid "Team name and email address or URL" msgstr "" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "" msgid "UTF-8 (recommended)" msgstr "" msgid "Please save the file first. This section cannot be edited until then." msgstr "" msgid "Placeholders correctness" msgstr "" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "" #, c-format msgid "Superfluous placeholder “%s” that isn’t in source text." msgstr "" msgid "Plural form translations" msgstr "" msgid "Not all plural forms are translated." msgstr "" msgid "Inconsistent upper/lower case" msgstr "" msgid "The translation should start as a sentence." msgstr "" msgid "The translation should start with a lowercase character." msgstr "" msgid "Inconsistent whitespace" msgstr "" msgid "The translation doesn’t start with a space." msgstr "" msgid "The translation starts with a space, but the source text doesn’t." msgstr "" msgid "The translation is missing a newline at the end." msgstr "" msgid "The translation ends with a newline, but the source text doesn’t." msgstr "" msgid "The translation is missing a space at the end." msgstr "" msgid "The translation ends with a space, but the source text doesn’t." msgstr "" msgid "Punctuation checks" msgstr "" #, c-format msgid "The translation should end with “%s”." msgstr "" #, c-format msgid "The translation should not end with “%s”." msgstr "" #, c-format msgid "The translation ends with “%s”, but the source text ends with “%s”." msgstr "" msgid "Cloud" msgstr "" msgid "Clear Menu" msgstr "" msgid "Clear menu" msgstr "" msgid "Comment:" msgstr "Kamentar:" msgid "Update" msgstr "" #, fuzzy msgid "&Delete" msgstr "Vydal" msgid "Delete the comment" msgstr "" msgid "Edit project" msgstr "Redahuj prajekt" msgid "Project name:" msgstr "Nazva prajektu:" msgid "Browse" msgstr "Prahladaj" msgid "Add directory to the list" msgstr "Dadaj kataloh u śpis" msgid "OK" msgstr "OK" msgid "&File" msgstr "&Fajł" msgid "&New…" msgstr "" msgid "New from &POT/PO file…" msgstr "" msgid "New From &POT/PO File…" msgstr "" msgid "&Open…" msgstr "" #, fuzzy msgid "Open Recent" msgstr "Adčyni kataloh" msgid "Open recent" msgstr "" msgid "Open cloud translation…" msgstr "" msgid "Open Cloud Translation…" msgstr "" msgid "&Start window" msgstr "" msgid "&Start Window" msgstr "" msgid "Catalogs &manager" msgstr "&Kiraŭnik katalohaŭ" #, fuzzy msgid "Catalogs &Manager" msgstr "&Kiraŭnik katalohaŭ" msgid "&Close" msgstr "Za&čyni" msgid "&Save" msgstr "&Zapišy" msgid "Save &as…" msgstr "" msgid "Save &As…" msgstr "" msgid "Compile to MO…" msgstr "" msgid "E&xport to HTML…" msgstr "" msgid "Check for updates…" msgstr "" msgid "Settings…" msgstr "" #, fuzzy msgid "&Preferences" msgstr "Nałady" #, fuzzy msgid "E&xit" msgstr "Redahuj" msgid "Quit" msgstr "" msgid "Copy from singular" msgstr "" msgid "Copy From Singular" msgstr "" msgid "Translation needs &work" msgstr "" msgid "Translation Needs &Work" msgstr "" msgid "Edit &comment" msgstr "Redahuj &kamentar" #, fuzzy msgid "Edit &Comment" msgstr "Redahuj &kamentar" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #, fuzzy msgid "Suggestions" msgstr "Pamiać pierakładaŭ" msgid "&Find…" msgstr "" msgid "Replace…" msgstr "" #, fuzzy msgid "Find next" msgstr "Znajdzi ŭ kamentaroch" #, fuzzy msgid "Find previous" msgstr "< Papiaredni" msgid "Find and Replace…" msgstr "" #, fuzzy msgid "Find Next" msgstr "Znajdzi ŭ kamentaroch" #, fuzzy msgid "Find Previous" msgstr "< Papiaredni" msgid "Show string &ID" msgstr "" msgid "Show String &ID" msgstr "" msgid "Show warnings" msgstr "" msgid "Show Warnings" msgstr "" msgid "Sort by &file order" msgstr "" msgid "Sort by &File Order" msgstr "" #, fuzzy msgid "Sort by &source" msgstr "Pierakład" msgid "Sort by &Source" msgstr "" #, fuzzy msgid "Sort by &translation" msgstr "Sumniŭny pierakład" #, fuzzy msgid "Sort by &Translation" msgstr "Pierakład" msgid "&Group by context" msgstr "" msgid "&Group By Context" msgstr "" msgid "Entries with errors first" msgstr "" msgid "Entries with Errors First" msgstr "" msgid "&Untranslated entries first" msgstr "" msgid "&Untranslated Entries First" msgstr "" msgid "&Show code occurrences" msgstr "" msgid "&Show Code Occurrences" msgstr "" msgid "Show sidebar" msgstr "" msgid "Show status bar" msgstr "" msgid "&Translation" msgstr "" msgid "&Update from source code" msgstr "" msgid "&Update from Source Code" msgstr "" msgid "Update from &POT file…" msgstr "" msgid "Update from &POT File…" msgstr "" msgid "Sync with Crowdin" msgstr "" msgid "Pre-&translate…" msgstr "" #, fuzzy msgid "&Validate translations" msgstr "&Pryciemnieny śpis pierakładaŭ" #, fuzzy msgid "&Validate Translations" msgstr "Pierakład" msgid "Remove Same-as-Source Translations" msgstr "" msgid "&Purge deleted translations" msgstr "&Ačyść ad nieŭžyvanych pierakładaŭ" #, fuzzy msgid "&Purge Deleted Translations" msgstr "&Ačyść ad nieŭžyvanych pierakładaŭ" msgid "&Properties…" msgstr "" msgid "&Go" msgstr "" #, fuzzy msgid "&Done and next" msgstr "Znajdzi ŭ kamentaroch" msgid "&Done and Next" msgstr "" msgid "Previously edited" msgstr "" msgid "Previously Edited" msgstr "" #, fuzzy msgid "&Previous translation" msgstr "Pierakład" #, fuzzy msgid "&Previous Translation" msgstr "Pierakład" #, fuzzy msgid "&Next translation" msgstr "Pierakład" #, fuzzy msgid "&Next Translation" msgstr "Pierakład" msgid "P&revious unfinished" msgstr "" msgid "P&revious Unfinished" msgstr "" msgid "Ne&xt unfinished" msgstr "" msgid "Ne&xt Unfinished" msgstr "" msgid "Previous plural form" msgstr "" msgid "Previous Plural Form" msgstr "" msgid "Next plural form" msgstr "" msgid "Next Plural Form" msgstr "" msgid "&Online help" msgstr "" msgid "&Online Help" msgstr "" #, fuzzy msgid "&GNU gettext manual" msgstr "Dakumentacyja GNU gettext" #, fuzzy msgid "&GNU gettext Manual" msgstr "Dakumentacyja GNU gettext" #, fuzzy msgid "&About Poedit" msgstr "&Pra..." #, fuzzy msgid "&About" msgstr "&Pra..." #, fuzzy msgid "Extractor setup" msgstr "&Aktualizuj z krynicaŭ" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Śpis pašyreńniaŭ, padzielenych znakam ';' (naprykład: *.cpp;*.h):" msgid "Invocation:" msgstr "Vyklik:" #, fuzzy msgid "Command to extract translations:" msgstr "Aŭtamatyčnyja pierakłady:" #, fuzzy 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 "" "Heta zahad, jaki vykarystoŭvajecca dziela ŭruchamleńnia analizatara.\n" "%o aznačaje nazvu vyjściovaha fajłu, %K śpis klučavych słovaŭ,\n" "%F śpis uvachodnych fajłaŭ, %C paznačaje kadavańnie (hladzi nižej)." msgid "An item in keywords list:" msgstr "Abjekt u śpisie klučavych słovaŭ:" msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Heta budzie dałučana da zahadnaha radka\n" "dla kožnaha klučavoha słova. %k razhortvaje klučavoje słova." msgid "An item in input files list:" msgstr "Abjekt u śpisie ŭvachodnych fajłaŭ:" #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "Heta budzie dadadziena da zahdanaha radka\n" "dla kožnaha ŭvachodnaha fajłu. %f razhortvaje nazvu fajłu." msgid "Source code charset:" msgstr "Kadavańnie kryničnaha kodu:" #, 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 "" msgid "Translation Properties" msgstr "" msgid "Project name and version:" msgstr "Nazva prajektu i versija:" msgid "Language team:" msgstr "" msgid "Plural forms:" msgstr "" #, fuzzy msgid "Use default rules for this language" msgstr "(Užyj zmoŭčanuju movu)" msgid "Use custom expression" msgstr "" msgid "Learn about plural forms" msgstr "" msgid "Charset:" msgstr "Nabor znakaŭ:" msgid "Advanced Extraction Settings…" msgstr "" msgid "Advanced extraction settings…" msgstr "" #, fuzzy msgid "Translation properties" msgstr "Pamiać pierakładaŭ" msgid "Sources Paths" msgstr "" #, fuzzy msgid "Sources paths" msgstr "Ściežki pošuku" msgid "Extract text from source files in the following directories:" msgstr "" msgid "Base path:" msgstr "Asnoŭnaja ściežka:" msgid "Sources Keywords" msgstr "" #, fuzzy msgid "Sources keywords" msgstr "Ściežki pošuku" #, fuzzy msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Užyj hetyja klučavyja słovy (nazvy funkcyjaŭ) dziela raspaznańnia\n" "pierakładaŭ u fajłach-krynicach, jak dadatak da zmoŭčanych słovaŭ." msgid "Also use default keywords for supported languages" msgstr "" msgid "Learn about gettext keywords" msgstr "" msgid "Update summary" msgstr "Aktualizuj padsumavańnie" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" msgid "New strings" msgstr "Novyja frazy" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" msgid "Obsolete strings" msgstr "Sastarełyja frazy" msgid "(0 new, 0 obsolete)" msgstr "(0 novych, 0 sastarełych)" msgid "Open" msgstr "Adčyni" msgid "Open file" msgstr "" msgid "Save file" msgstr "" #, fuzzy msgid "Validate" msgstr "Pamiać pierakładaŭ" #, fuzzy msgid "Check for errors in the translation" msgstr "Skapijuj aryhinał u pole pierakładu" msgid "Update from code" msgstr "" msgid "Update from Code" msgstr "" msgid "Update from source code" msgstr "" msgid "Sidebar" msgstr "" msgid "Show or hide the sidebar" msgstr "" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. msgid "Previous source text" msgstr "" msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" msgid "Notes for translators" msgstr "" msgid "Comment" msgstr "" #, fuzzy msgid "Add comment" msgstr "Redahuj kamentar" #, fuzzy msgid "Add Comment" msgstr "Redahuj &kamentar" msgid "Delete From Translation Memory" msgstr "" msgid "Delete from translation memory" msgstr "" msgid "Translation suggestions" msgstr "" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #, fuzzy msgid "No matches found" msgstr "Nia znojdziena fajłaŭ u: " #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). msgid "No Matches Found" msgstr "" #, fuzzy msgid "This string was found in Poedit’s translation memory." msgstr "Aktualizuj pamiać pierakładaŭ" msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" msgid "The TMX file is malformed." msgstr "" msgid "No translations were found in the TMX file." msgstr "" #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "" #, c-format msgid "Translation memory error: %s (%d)." msgstr "" #, fuzzy msgid "Cannot create temporary directory." msgstr "Niemahčyma stvaryć kataloh bazy źviestak!" msgid "There are no translations. That’s unusual." msgstr "" msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "Translators typically use PO template files (POTs) prepared for them by the " "developer." msgstr "" msgid "(Learn more about GNU gettext)" msgstr "" msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" #, fuzzy msgid "Update from POT" msgstr "Aktualizuj z fajłu &POT..." msgid "Take translatable strings from an existing POT template." msgstr "" msgid "" "You can also extract translatable strings directly from the source code:" msgstr "" #, fuzzy msgid "Extract from sources" msgstr "&Aktualizuj z krynicaŭ" msgid "Configure source code extraction in Properties." msgstr "" #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #, fuzzy, c-format msgid "Version %s" msgstr "versija" msgid "Create new" msgstr "" msgid "Create new translation from POT template." msgstr "" msgid "Browse files" msgstr "" msgid "Open and edit translation files." msgstr "" msgid "Translate cloud project" msgstr "" msgid "Collaborate with other people online." msgstr "" msgid "Recent files" msgstr "" msgid "Sync" msgstr "" msgid "Synchronize the translation with Crowdin" msgstr "" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #, fuzzy, c-format msgid "About %s" msgstr "Pra Poedit" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #, c-format msgid "%s Preferences" msgstr "" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "" msgid "Preferences..." msgstr "" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "" msgid "&Apply" msgstr "" msgid "Apply" msgstr "" msgid "&Back" msgstr "" msgid "Back" msgstr "" msgid "&Cancel" msgstr "" msgid "&Clear" msgstr "" msgid "Clear" msgstr "" msgid "Copy" msgstr "" msgid "Cu&t" msgstr "" msgid "Cut" msgstr "" msgid "Edit" msgstr "Redahuj" msgid "&Quit" msgstr "" msgid "Help" msgstr "" msgid "&New" msgstr "" msgid "New" msgstr "Novy" msgid "&No" msgstr "" msgid "No" msgstr "" msgid "&OK" msgstr "" msgid "Open…" msgstr "" msgid "&Open..." msgstr "&Adčyni..." msgid "Open..." msgstr "" msgid "&Paste" msgstr "" msgid "Paste" msgstr "" msgid "Preferences" msgstr "" msgid "&Redo" msgstr "" msgid "Refresh" msgstr "" msgid "&Save as" msgstr "" msgid "Save as" msgstr "" msgid "Select &All" msgstr "" msgid "Select All" msgstr "" #, fuzzy msgid "&Undo" msgstr "Viarni" msgid "&Yes" msgstr "" msgid "Yes" msgstr "" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "" poedit-3.5/locales/zh_CN.mo0000644000175100001770000015360514664354143012575 00000000000000|+: : :&:?:<S::J:g: V;`; o;y; ;;;;;;;;;;;;;;<<<0<B<H<M<U<]<o<<< < <<<< <<<<==0=L=R=X=a=g=p== = = ====>>7>N>e>k>p>>>>>> ? ???'?0? 4? @? L?Y? h?t? ? ?? ?? ???@@&@F@c@@ @ @1@@'@A.A HASA7YA6AA)AB B]"BB<BDB$C:C ACNCC C"CD+"D)ND xDDDDDDDDEE#4EXEmE|E EE EEEEEE%EF +FLFTF]FuF FF/F FkFXG]GpGGGG-G1G.H GHRH)iHH HYHI!I&I9ILIaIeI|IIIIIII;J CJ'PJ^xJLJ?$K dK rKK*KKK"K5K.LILdLjL}L L L L L LLLLLLLfMlMMuM(N?NRN"dNN NNN N NNN0N'OAO#VO<zO"OO OO*P03P!dP'PPPP(PTQ fQtQ yQ QQQQQ Q Q Q RR!R0RJRRRcR lRxR RRR R RRRRRRSz/TT TTT TT U2(U[UuU|UUU UU U U V!V&V;^D^Y^n^^^._4_J_=P__1__n_E[```;` ` aa@,amacb,#c,Pc}c cc2c*c ddwdj$e eeee%ee ff3fEfWf qffffffff8f g gg$g ,g 8g DgRg"Yg"|gg g gg g(ghhz'hhhhh h h h hh h i i i ,i 8iCi^ioi"iiii i ij jj$j -j:jTjdjtj j jjjj jjj!k *k8k@kHkQk Ykgkkkkkk k k kk ll.lBlRlgl|lmm 4m@mOmbm smm mmKmmn n%n:nMncn1nn n nn=ioo'p,p(>pgp op}p+pp p8p" q/q@qrCr8brrs8*t1ctRtctQLuu'u:ulvPv-vCwALwKw0w. x:x!x)x-y+Cy8oyCyuy,bzLz;z]{v{Z{gW|J|c }[n}o}:~7~m_[HN^Xp ف72("[~~łqDɃRVj o ȄЄӄ ڄ"$-F_p<Ѕ #$@eˆ#V cz ч. ;GPhHl5m7Y 3aω16;?\.a ͊ 1J!Z|,=N g!q %4Í   $ 7 B M X c n y Ɏ Ԏ 2 I T _m} ɏ ڏ  4 HVs ʐ & 1<Vp ˑ"ӑ.-%Sl&| ɒВג ޒ  ( ; HUn~ ē* =J*Z*!ה)*.Y"lEN>Q$ {ɖEL\x!'ۗ  3@Si Ș Ϙ ܘ  !4Pi  ə$M\ cp %0ܚ &-#@d}Gԛ ڛ'!.PWp - #V3t3 ܝ $ &38!Wy ž؞ߞ    (5 <FV\\o̟o.t!ՠ  # 0= O%]-ˡ! +5#G$k"Ң٢)H1zģף -: JT is   ͤݤ?Ʀ ֦ %+Qgo ŧ ҧܧ! -F \i y  ɨLU:e {,) V c#p ɪ ߪ   7 DQh= \iKȬ'*C"n!$ƭծ' :G]s ϯ6 X+?ı˱Cޱ"299RZ1&? P ZgrL)Rv ɵ ӵ "8N a n{  ¶ɶ &!18?R eqxȷٷ "f3и   , <GN ly!ڹ    0FVm Ϻ ; HRY` gtȻ ػ   4Nbvu ( 2? P ] g t~: н ݽ*!Fh~u)x, ؿ 3 ? L8W( <+'~(@^Io2T)G~<6"7YC & De$-`'8H`"Bs\eGFTKj/1AasXU.   -+3_ OU VZd# - :DG N[$z , 3?@!$9^Nq  !7GN'V ~ ?8H(;q -`IMT Xe'j% $1I+Y45nCv#=ld B@Twa QjqO 91B)aT'ZSFQYu>"/VJZsG6*[ar`^;XyVb?' <IL:x%AMZ\W88O,*d0)i{J-yK|]:c%}oo0][-Pg6YS&r(\p@X(tM?iE=eD"OU|53 w  fj,#32H 4[ pk {qke;mpgl16U85:`, +Y^L9$qz2fGu(A7N4!d0DNt{F<x_+7vX)nKG+>&9m3 LeUIN Iy E"nsk/<W>PhrVvT]cQmuR$bjD !_@xEl%WK-_7MCwbz/|gcAB` zh~?SC^*tf=\h!H'P#RiF&;$H1~.2 RsJo}.} .~ (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd AccountAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add accountAdd 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 languagesAlt+Always 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 errorCrowdin is an online localization management platform and collaborative translation tool.Ctrl+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 againDownDownloading 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:EnterEnter 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 loading translation file “%s”.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export errorExport 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…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)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport from TMX…Import translation files…Importing translation memory from “%s” 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 CrowdinLeftLine %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 translations were found in the TMX file.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKObsolete stringsOneOnly 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 translation templateOpen...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 translationsQuitQuit %sReading file content failed with the following error: %sRecentRecent 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 FinderReviewRightSaveSave &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 languageServicesSet LanguageSet languageSettingsSettings…Shift+Show AllShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow summary after updating filesShow 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.These strings are no longer in the source code. Poedit will remove them from the file now.These strings were found in the sources but were not in the file. Poedit will add them to the file now.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 entries in the file are probably incorrect.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 errorUntransUpUpdateUpdate 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 the file failed. Click on 'Details >>' for details.Updating 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown 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: 2024-08-30 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 个问题。文件“%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)确定(&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)(0 个新建,0 个已废弃)(了解更多关于 GNU gettext 的内容)(新条目:%i 项;已过时:%i 项)(使用默认语言)(未登录)(需要 Windows 8 或更高版本)< 上一个(&P)<未命名>关于 %s账户账号添加添加账户添加注释添加文件…添加文件夹…添加项目添加通配符…添加账户添加注释将目录添加到列表添加文件…添加文件夹…添加项目添加通配符…额外的关键字额外的 xgettext 标志︰:高级高级提取设置…高级提取设置高级提取设置…所有翻译文件所有注释所有字符串支持的语言也使用默认的关键字Alt+总是将焦点移动到文本输入字段在输入文件列表中的项:在关键字列表中的项:外观应用您确定要删除“%s”提取器吗?你确定你要重置翻译记忆库吗?自动检查更新在保存时自动编译 MO 文件返回基本路径:测试版包含最新功能和改进,但可能有点不太稳定。全部带到最前方PO文件不当:复数形式的 msgstr 被用在没有 msgid_plural 的位置PO文件不当:单数形式的 msgstr 被用在 msgid_plural翻译文件中的标记不正确。浏览浏览文件默认设置下,会包含不准确的结果,但标记为需要处理。选中此选项则只包含精确匹配的项。取消正在取消…不能创建临时目录。不能执行程序: %s无法从未知语言预翻译。无法在没有源文本时预翻译。大写编目管理器(&M)编目管理器(&M)编目管理器更改用户界面语言字符集:立即检查文档检查拼写和语法在输入时检查拼写检查更新…检查翻译中的错误检查更新…检查拼写清除清除菜单清除翻译清除菜单清除翻译关闭云代码出现位置代码出现位置与其他人在线合作。正在收集源文件…提取翻译的命令:注释注释:有此前缀的注释:编译为 MO…编译到…已编译的翻译文件在属性中配置源代码提取。确认将 Poedit 与支持的云端本地化平台连接,以无缝同步翻译。复制复制单数复制源文本复制单数复制源文本自动更正拼写错误未能下载 Localazy 项目详情。未能加载文件,该文件可能已损坏。不能保存文件 %s。新建创建新的翻译利用 POT 模板创建新翻译。创建新的翻译项目Crowdin 错误Crowdin 是一个在线的本地化管理平台和协作翻译工具。Ctrl+剪切(&T)自定义提取器:自定义提取器:自定义工具栏…剪切磁盘上数据文件的大小:删除从翻译记忆中删除删除提取器从翻译记忆中删除删除项目.删除注释删除项目删除项目不会删除其他翻译文件。目录:您想要删除项目“%s”吗?您要从磁盘重载此文件?如此您会失去在 Poedit 内未保存的更改。确定移除所有与源文本相同的翻译吗?您确定要移除所有不再使用的翻译吗?不保存(&N)不保存不再显示不将精确匹配标为需要处理不再显示Down正在下载最新的翻译…此项目禁用了下载翻译。拖拽文件夹或文件于此拖拽文件夹或文件于此退出(&X)导出到 HTML(&X)…编辑编辑注释(&C)编辑注释(&C)编辑注释编辑注释编辑项目编辑项目编辑编辑…电子邮件:Enter进入全屏模式这个文件中的条目的复数形式数量与文件的 Plural-Forms 头所说明的不同带有错误的条目优先带有错误的条目优先有错误的条目在列表中被标记为红色。您选择这样的条目时将显示错误的详细信息。加载翻译文件 “%s” 时发生错误。打开文件时出错保存文件时发生错误加载 XLIFF文件:%s 时出错错误一切排除的路径导出 TMX…导出为…导出出错导出到 HTML…导出 TMX…导出翻译记忆 “%s” 失败。正在导出译文…从源代码中提取为译者提取注释自:从下列目录中的源文件提取文本:正在提取可翻译字符串…提取器安装提取器命令失败:%s无法与 Poedit 的进程通信。无法加载提取翻译的文件。无法合并 gettext 编目。更新翻译记忆库失败: %s 文件无法打开文件文件“%s”不存在。文件“%s”不是一个翻译文件。文件“%s”为只读,不能保存。 请使用其他名称保存。正在完成…查找查找下一个查找上一个查找和替换…在注释中查找在源文本中查找在翻译中查找查找下一个查找上一个修复语言修复语言修复文件头修正头Flutter 翻译文件表格 %i来自 %i (未使用)频繁GNU gettext常规HTML 文件帮助隐藏 %s隐藏其他隐藏侧边栏隐藏状态栏隐藏这条消息云同步如何工作?ID如果您继续清除,则所有被标记为已删除的翻译都将被永久移除。如果未来它们被添加回来,您必须再翻译一遍。如果您之前禁用了相应的访问权限,可以在系统首选项 > 安全和隐私 > 隐私 > 文件和文件夹 中重新允许。如果您以前拒绝了访问您的文件,可以重新在 系统设置>隐私和安全>文件和文件夹 中允许访问。忽略忽略大小写导入 TMX…导入译文文件…导入出错导入 TMX…导入译文文件…导入翻译记忆 “%s” 失败。正在导入翻译…在: %s包括测试版本大小写不一致空格不一致关于翻译者的信息安装无效文件调用:JSON 翻译文件保持语言名称或代码翻译语言与源语言相同。翻译语言未设置。要翻译的语言:语言选择语言团队:语言:最后修改了解 gettext 关键字了解复数形式了解更多了解更多关于 %s 的信息了解更多有关 Crowdin左文件“%2$s”的第 %1$d 行已损坏(不是有效的 %3$s 数据)。行尾风格:用分号分隔的扩展名列表(例如 *.cpp;*.h):加载英文Localazy 是一个高度自动化的本地化平台,人人都能轻松将自己的产品和内容翻译到多种语言。MO 文件不能直接在 Poedit 中编辑。转为小写转为大写利用此 POT 文件创建新翻译首部格式异常:“%s”管理账户管理…正在合并差异…最小化翻译的项目名称名称:下一个未完成(&X)下一个未完成(&X)需要处理需要处理网络错误:%s (%d)从不让字串列表取得焦点。如果启用,您必须使用 “Ctrl-方向键” 进行键盘导航,但您也可以立即输入文本,不用按 Tab 改变焦点。新建从 POT/PO 文件新建(&P)...从 POT/PO 文件新建(&P)...新建字串下一个复数形式下一个复数形式否未找到匹配项没有条目可预翻译。文件中未提供有关此字符串在源代码中的出现位置信息。未找到匹配项翻译中未发现问题。您的账户中没有列出翻译项目。TMX 文件中没有找到译文。暂无用法信息复数形式不需全部翻译。未授权,请尝试重新登录。翻译者注释确定已废弃的字串一仅在您信任你的翻译记忆的质量时启用。默认情况下,从翻译记忆匹配的所有条目被标记为模糊,在使用前应加以审查。仅填补完全匹配的项打开云翻译...打开最近的打开并编辑翻译文件。打开云翻译打开云翻译...打开文件在编辑器中打开在编辑器中打开打开最近的打开翻译模板打开...打开…选项其他上一个未完成(&R)上一个未完成(&R)PO 翻译文件POT 翻译模板POT 文件只是模板,不包含任何翻译内容。 若要制作一个翻译,请基于模板创建一个新的 PO 文件。粘贴粘贴并匹配样式路径从源代码对项目中的所有文件执行更新。权限被拒绝。译文缺少占位符“%s”。占位符正确性请打开并编辑对应的 PO 文件。当你保存它时,MO 文件也将被更新。请先保存文件。以下内容在此之前不能被编辑。复数复数形式翻译该文件中所使用的复数形式对于 %s 是不同寻常的。复数形式:PoeditPoedit - 编目管理器Poedit 自动修复了“%s”文件中的无效内容。Poedit 可以根据以前的翻译文件或你的翻译记忆库来尝试填写新条目。接近空的翻译记忆库不会很有效,但如果你为它添加了更多的翻译,它也会变得更好。Poedit 无法显示字符串所用的源码,因为相应的文件未存在于引用位置或其是未指向实际文件的符号引用。Poedit 是一个易于使用的翻译编辑器。Poedit 无法打开 “%s” 文件。预翻译(&T)…预翻译已预翻译已预翻译 %u 个字符串利用翻译内存预翻译...正在预翻译…预翻译自动在翻译记忆库中查找未翻译字符串的精确或模糊匹配项,并将其填入翻译。预翻译需要源文本。如果只有非实际文本的 ID 则不能用。预翻译需要了解源文本的语言。Poedit 在此文件中没有检测到。首选项首选项...首选项…正在准备字符串…保留现有文件的格式上一个复数形式上一个复数形式先前的源文本已被编辑已被编辑项目名称和版本:项目名称:项目:项目标点检查清除清除已删除的翻译退出退出 %s读取文件内容失败,错误:%s最近最近的文件重做刷新重新载入文件重新载入文件剩余:%d移除移除相同源文的翻译移除相同源文的翻译替换全部替换(&A)全部替换(&A)替换字符串替换…缺少必需的头 Plural-Forms。重置重置翻译记忆库重置翻译记忆库将无可挽回地删除其中存储的所有翻译。你无法撤消此操作。显示于查找器检查右保存另存为(&A)…另存为(&A)…仍然保存仍然保存另存为另存为…保存更改保存文件屏幕截图:全选(&A)全选选择要导出的 TMX 文件选择目录选择翻译文件选择需要导入的翻译文件选择翻译模板选择您的首选语言服务设置语言选择语言设置设置…Shift+全部显示显示侧边栏显示拼写和语法显示状态栏显示字符串 ID(&I)显示替换项目显示工具栏显示警告显示于资源管理器显示于文件夹之内显示或隐藏侧边栏显示侧边栏显示状态栏显示字符串 ID(&I)更新文件后显示摘要显示警告侧边栏登录退出登录登录至 %s登录云账户登录到 Crowdin登录云账户退出单数智能复制/粘贴智能短划线智能链接智能引号按文件顺序排序(&F)按源文排序(&S)按翻译排序(&T)按文件顺序排序(&F)按源文排序(&S)按翻译排序(&T)源代码字符集:源代码提取器用于在源代码文件中找到可翻译字符串和提取它们,以便它们可以被翻译。源代码不可用。未找到源码源文本源文本 ID源文本 — %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 格式并使用。该文件中包含重复的项目,这是不允许的,并且影响了该文件被使用。Poedit 修复了该问题,但您应该审阅任何已被标记为“需要处理”的翻译和纠正它们(如有必要)。不能按翻译设置中所指定的将文件保存为 “%s” 字符集。 将保存为 UTF-8 字符集,设置也会相应地被修改。文件已修改。您要保存更改?Poedit 无法识别该文件的格式。文件被编译成 MO 格式,但它可能不能正确工作。文件已安全地保存,并编译成 MO 格式的文件,但它可能不能正常工作。文件已安全地保存,但它不能被编译成 MO 格式并使用。文件已被安全地保存。无法打开文件“%s”。文件“%s”已被另一个应用程序更改。现在不准确的翻译对应的旧的源文本(在此次更新的变更前)。用翻译填写此文件最简单的方式就是利用 POT 更新它:翻译没有以空格开头。翻译以换行符结尾,但是源文本没有换行符。翻译以空格结尾,但是源文本没有空格。翻译以“%s”结尾,但是源文本是“%s”。翻译结尾缺少换行。翻译结尾缺少空格。翻译可以使用了,不过还有 %d 个条目没有被翻译。翻译可以使用了。翻译应以“%s”结尾。翻译不应以“%s”结尾。翻译应该为一个句子。翻译开头应该为小写字母。翻译开头存在源文本没有的空格。这些翻译被标记为需要处理,因为其可能不准确。请检查它们的准确性。找不到翻译文件,这不正常。在精确格式化文件时有一个问题(但文件保存正确)。上传翻译到 Localazy 出错。加载文件时遇到错误。有些数据可能缺失或损坏。这些设置会影响 PO 文件的内部格式。如果你有特定的要求例如版本控制时,调整它们。源文件中不再有这些字符串。 Poedit 现在将从文件中移除这些字符串。这些字符串在源中发现,但不在文件中。 Poedit 现在会将它们添加到文件中。该 JSON 文件不是一份翻译文件,不能使用 Poedit 编辑。此操作将移除与源文本完全匹配的所有翻译。不能撤消此操作。此文件包含有复数形式的条目,但未配置复数形式头部。此文件采用了字符串 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无法利用源码更新,因为未能在文件属性所指定的位置内找到代码。二UTF-8(推荐)撤销发生了不能处理的异常:%sUnix(推荐)未知的 Crowdin 错误。未知错误未翻译Up更新更新全部更新项目中的所有编目更新此项目中的所有目录?从 POT 文件更新(&P)…从 POT 文件更新(&P)…从代码更新从 POT 文件更新从代码更新从源代码更新更新摘要更新更新失败更新文件失败。详细信息请点击 '详细信息 >>'。正在更新翻译正在更新用户信息…上传翻译到 %s 失败。正在上传翻译到 %s…正在上传翻译…使用自定义表达式使用自定义的列表字体:使用自定义的编辑区字体:使用默认语言使用这些关键字(函数名)来识别源文件中的可翻译字串:使用翻译记忆验证验证结果版本 %s正在等待身份验证…欢迎使用 Poedit当从源文更新时仅整个单词窗口Windows是否要使用英文作为源文本?全字匹配换行在:XLIFF 翻译文件是你也可以直接从源代码中提取可翻译的字符串:您不能拖放一个以上的文件到 Poedit 窗口。您没有读取文件属性所指定位置的源代码文件的权限。您必须重新启动 Poedit 才能使这个更改生效。你的名字如果您不保存,您的更改将丢失。你的名称和电子邮件地址仅用于设置 GNU gettext 文件的 Last-Translator 信息。零缩放alt需要处理ctrl不删除临时文件(用于调试)例如: nplurals=2; plural=(n > 1);在文件内模糊匹配跳转到给定行号项目处理 poedit:// URI根据翻译记忆预翻译shift未知语言不支持的版本 (%s)you@example.com“%s”不是一个有效的 POT 文件。poedit-3.5/locales/uz.po0000644000175100001770000015452614664354065012243 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "Ushbu ogohlantirish xabarini yashirish" msgid "Don’t Show Again" msgstr "Boshqa ko‘rsatilmasin" msgid "Don’t show again" msgstr "Boshqa ko‘rsatilmasin" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(Yangi: %i, eskirgan: %i)" msgid "Collecting source files…" msgstr "Manba fayllari yig‘ilmoqda…" msgid "Extracting translatable strings…" msgstr "Tarjima qilinadigan satrlar ajratilmoqda..." msgid "Failed to load file with extracted translations." msgstr "Ajratib olingan tarjimalar mavjud faylni yuklash amalga oshmadi." msgid "Merging differences…" msgstr "Farqlarni birlashtirish..." msgid "Updating translations" msgstr "Tarjimalarni yangilash" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "" msgid "Invalid file" msgstr "Noto‘g‘ri fayl" #, c-format msgid "Malformed header: “%s”" msgstr "Noto'g'ri sarlavha: “%s”" msgid "PO Translation Files" msgstr "PO tarjima fayllari" msgid "POT Translation Templates" msgstr "POT tarjima namunalari" msgid "XLIFF Translation Files" msgstr "XLIFF Tarjima Fayllari" msgid "JSON Translation Files" msgstr "" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "" msgid "All Translation Files" msgstr "Barcha tarjima fayllari" msgid "The file is in a format not recognized by Poedit." msgstr "" msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" #, c-format msgid "Reading file content failed with the following error: %s" msgstr "" #, 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." #, c-format msgid "Couldn’t save file %s." msgstr "%s faylni saqlab bo'lmadi." msgid "Screenshots:" msgstr "" #, c-format msgid "%i line of file “%s” was not loaded correctly." msgid_plural "%i lines of file “%s” were not loaded correctly." msgstr[0] "\"%2$s\" faylining %1$i satri to'g'ri yuklanmadi." msgstr[1] "\"%2$s\" faylining %1$i satrlari to'g'ri yuklanmadi." #, 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)." msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" "Yaroqsiz PO fayl: msgstr birlik shakli msgid_plural bilan birga ishlatilgan" msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" msgid "Couldn’t load the file, it is probably damaged." msgstr "" 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." 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)." #, 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 "" msgid "Error saving file" msgstr "Faylni saqlashda xato" #, c-format msgid "“%s” is not a valid POT file." msgstr "“%s” bu POT fayli emas." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "" #, c-format msgid "unsupported version (%s)" msgstr "" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML msgid "Broken markup in translation string." msgstr "Tarjima satrida buzilgan belgilar." msgid "(Use default language)" msgstr "(Standart tildan foydalanish)" msgid "Language selection" msgstr "Tilni tanlash" msgid "Select your preferred language" msgstr "Siznig avfzal tilingizni tanlash" msgid "You must restart Poedit for this change to take effect." msgstr "" "O‘zgartirish amalga oshishi uchun Poedit’ni qayta ishga tushirishingiz kerak." msgid "Add Account" msgstr "" msgid "Add account" msgstr "" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "" msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" msgid "How does cloud sync work?" msgstr "" msgid "Account" msgstr "" msgid "(not signed in)" msgstr "" msgid "File" msgstr "Fayl" msgid "Open cloud translation" msgstr "" msgid "Manage accounts" msgstr "" msgid "Project:" msgstr "Loyiha:" msgid "Language:" msgstr "Til:" msgid "Sign in to Cloud Account" msgstr "" msgid "Sign in to cloud account" msgstr "" msgid "No translation projects listed in your account." msgstr "" msgid "Downloading latest translations…" msgstr "So‘nggi tarjimalar yuklab olinmoqda…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #, c-format msgid "Sign in to %s" msgstr "" msgid "Syncing" msgstr "Sinxronizatsiya" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s…" msgstr "" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s failed." msgstr "" msgid "Syncing error" msgstr "Sinxronizatsiyadagi xato" msgid "Add" msgstr "Qoʻshish" msgid "Unknown Crowdin error." msgstr "" msgid "Not authorized, please sign in again." msgstr "Tasdiqdan o‘tmagan, yana kiring." msgid "Downloading translations is disabled in this project." msgstr "Tarjimalarni yuklab olish ushbu loyihada o‘chirib qo‘yilgan." msgid "Sign In" msgstr "Kirish" msgid "Sign in" msgstr "Kirish" msgid "Sign Out" msgstr "Chiqish" msgid "Sign out" msgstr "Chiqish" msgid "Learn more about Crowdin" msgstr "Crowdin haqida ko‘proq ma’lumot olish" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" msgid "Waiting for authentication…" msgstr "Tasdiqdan o‘tkazilmoqda…" msgid "Updating user information…" msgstr "Foydalanuvchi ma’lumoti yangilanmoqda…" msgid "Sign in to Crowdin" msgstr "Crowdin saytiga kiring" msgid "Syncing with Crowdin failed." msgstr "Crowdin bilan sinxronlash amalga oshmadi." msgid "Crowdin error" msgstr "Crowdin’da xatolik" msgid "Uploading translations…" msgstr "Tarjimalar yuklab qo‘yilmoqda…" msgid "&Copy" msgstr "&Nusxa olish" msgid "Learn more" msgstr "Batafsil ma’lumot" msgid "&Help" msgstr "&Yordam" msgid "MO files can’t be directly edited in Poedit." msgstr "Poedit’da MO fayllarni to‘g‘ridan-to‘g‘ri tahrirlab bo‘lmaydi." msgid "Error opening file" msgstr "Faylni ochishda xato yuz berdi" 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." msgid "don’t delete temporary files (for debugging)" msgstr "vaqtinchalik fayllar o'chirilmasin (to'g'irlash uchun)" msgid "handle a poedit:// URI" msgstr "poedit:// URI bilan ishlash" msgid "go to item at given line number" msgstr "raqami berilgan satrdagi elementga o'tish" msgid "Failed to communicate with Poedit process." msgstr "Poedit jarayoni bilan bog‘lab bo‘lmadi." #, c-format msgid "Unhandled exception occurred: %s" msgstr "Qayta ishlab bo‘lmaydigan istisno yuz berdi: %s" msgid "Select translation template" msgstr "Tarjima namunasini tanlash" msgid "Select translation file" msgstr "Tarjima faylini tanlash" msgid "Poedit is an easy to use translation editor." msgstr "Poedit qulay va oson tarjimalar tahrirlagichidir." msgid "You can’t drop more than one file on Poedit window." msgstr "Poedit oynasiga faqat bitta faylni qo'yish mumkin." #, c-format msgid "File “%s” is not a translation file." msgstr "\"%s\" fayli tarjima fayli hisoblanmaydi." #, c-format msgid "File “%s” doesn’t exist." msgstr "\"%s\" fayli mavjud emas." 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". #, 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." msgid "Install" msgstr "O‘rnatish" #, c-format msgid "The file “%s” has been changed by another application." msgstr "%s faylini boshqa ilova oʻzgartirgan." msgid "Reload file" msgstr "" msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" msgid "Ignore" msgstr "" msgid "Reload File" msgstr "" msgid "The file has been modified. Do you want to save changes?" msgstr "" msgid "Save changes" msgstr "O‘zgarishlarni saqlash" msgid "Your changes will be lost if you don’t save them." msgstr "O'zgartirishlaringizni saqlamasangiz, ular yo'qoladi." msgid "Save" msgstr "Saqlash" msgid "Do&n’t save" msgstr "Saqlamaslik" msgid "Don’t Save" msgstr "Saqlamaslik" msgid "The changes made by the other application will be lost if you save." msgstr "" msgid "Cancel" msgstr "Bekor qilish" msgid "Save Anyway" msgstr "" msgid "Save anyway" msgstr "" msgid "Save as…" msgstr "Quyidagiday saqlash…" msgid "Compile to…" msgstr "Quyidagiga kompilyatsiya qilish…" msgid "Compiled Translation Files" msgstr "Kompilyatsiya qilingan tarjima fayllari" msgid "Export to HTML…" msgstr "" msgid "HTML Files" msgstr "HTML fayllar" #, c-format msgid "In: %s" msgstr "" msgid "Source code not available." msgstr "Manba kodi mavjud emas." msgid "Updating failed" msgstr "Yuklash amalga oshmadi" 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 "" msgid "Permission denied." msgstr "Ruxsat berilmadi." 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. 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. msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" msgid "Translation entries in the file are probably incorrect." msgstr "" msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "" msgid "Open translation template" msgstr "" #, 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." msgid "Validation results" msgstr "To‘g‘rilash natijalari" 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." msgid "The file was saved safely." msgstr "Fayl xavfsiz saqlandi." 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." 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." 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." 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." msgid "No problems with the translation found." msgstr "Tarjima bilan bog‘liq hech qanday muammo topilmadi." #, 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." msgid "The translation is ready for use." msgstr "Tarjima foydalanish uchun tayyor." #, 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." 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 "" msgid "Language of the translation isn’t set." msgstr "" msgid "Set Language" msgstr "Tilni o‘rnatish" 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)." 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." msgid "Language of the translation is the same as source language." msgstr "Til nomi manba tildagi bilan bir xil." msgid "Fix Language" msgstr "Tilni to‘g‘rilash" msgid "Fix language" msgstr "Tilni to‘g‘rilash" msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" msgid "Required header Plural-Forms is missing." msgstr "Ko‘plik shakllari yo‘q bosh qatori talab qilinmoqda." #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Ko‘plik shakllari (\"%s\") bosh qatorida sintaktik xato." msgid "Fix the Header" msgstr "Boshlang‘ich qatorni to‘g‘rilash" 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". #, 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.")" msgid "Review" msgstr "Ko‘rib chiqish" msgid "Would you like to use English for source text?" msgstr "" #, 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" msgid "Load English" msgstr "" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Tarjima qilindi: %d / %d (%d %%)" #, c-format msgid "Remaining: %d" msgstr "Qolmoqda: %d" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d ta xato" msgstr[1] "%d ta xato" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d ta kiritilgan" msgstr[1] "%d ta kiritilgan" msgid " (unsaved)" msgstr " (saqlanmagan)" msgid " (modified)" msgstr " (o‘zgartirilgan)" #, c-format msgid "Failed to update translation memory: %s" msgstr "Tarjima xotirasi yangilanmadi: %s" msgid "Remove same-as-source translations" msgstr "" msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" msgid "Keep" msgstr "Saqlab qo‘yish" msgid "Remove" msgstr "" msgid "Purge deleted translations" msgstr "O‘chirilgan tarjimalarni tozalash" msgid "Do you want to remove all translations that are no longer used?" msgstr "Uzoq vaqt foydalanilmagan barcha tarjimalarni o‘chirishni xohlaysizmi?" 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." msgid "Purge" msgstr "Tozalash" msgid "Copy from source text" msgstr "Manba matnidan nusxa ko‘chirish" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "Tarjimani tozalash" msgid "Clear Translation" msgstr "Tarjimani tozalash" msgid "Edit comment" msgstr "Sharhni tahrirlash" msgid "Edit Comment" msgstr "Sharhni tahrirlash" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "" msgid "Hide Sidebar" msgstr "Yon panelni yashirish" msgid "Show Sidebar" msgstr "Yon panelni ko‘rsatish" msgid "Hide Status Bar" msgstr "Holat qatorini yashirish" msgid "Show Status Bar" msgstr "Holat qatorini ko‘rsatish" msgid "String length in characters: translation | source" msgstr "" msgid "String length in characters" msgstr "" msgid "Source text" msgstr "Manba matni" msgid "Singular" msgstr "Birlik" msgid "Plural" msgstr "Ko‘plik" msgid "Translation" msgstr "Tarjima" msgid "Pre-translated" msgstr "" 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. msgid "Needs work" msgstr "" msgid "" "POT files are only templates and don’t contain any translations themselves.\n" "To make a translation, create a new PO file based on the template." msgstr "" "POT fayllar aslida faqat shablonlar hisoblanadi va ularning tarkibida hech " "qanday tarjima bo‘lmaydi.\n" "Tarjima qilish uchun shablonga asoslangan yangi PO fayl yarating." msgid "Create new translation" msgstr "Yangi tarjima yaratish" 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 msgid "Source text ID" msgstr "" msgid "Everything" msgstr "Hammasi" #, c-format msgid "Form %i" msgstr "%i shakli " #, c-format msgid "Form %i (unused)" msgstr "" msgid "Zero" msgstr "Nol" msgid "One" msgstr "Bir" msgid "Two" msgstr "Ikki" msgid "Other" msgstr "Boshqa" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, c-format msgid "String context: %s" msgstr "" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #, c-format msgid "String identifier: %s" msgstr "" #, c-format msgid "%s Format" msgstr "%s format" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "" #, c-format msgid "Translation — %s" msgstr "Tarjima — %s" msgid "ID" msgstr "ID" #, c-format msgid "Source text — %s" msgstr "Manba matn — %s" msgid "unknown language" msgstr "noma’lum til" #, c-format msgid "Network error: %s (%d)" msgstr "" msgid "Unknown error" msgstr "" #, c-format msgid "Failed command: %s" msgstr "Xato buyruq: %s" msgid "Failed to merge gettext catalogs." msgstr "Gettext kataloglarini birlashtirishda xatolik." msgid "Open in Editor" msgstr "Tahrirlagichda ochish" msgid "Open in editor" msgstr "Tahrirlagichda ochish" msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" msgid "No usage information" msgstr "" #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "" msgstr[1] "" msgid "Source code not found" msgstr "" 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 "" msgid "File cannot be opened" msgstr "" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "" msgid "Find" msgstr "Topish" msgid "Replace" msgstr "Almashtirish" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "Tanlamalar" msgid "Ignore case" msgstr "Katta-kichiklikni rad qilish" msgid "Wrap around" msgstr "Uzun qidiruv" msgid "Whole words only" msgstr "Faqat to‘liq so‘zlar" msgid "Find in source texts" msgstr "Manba matnlaridan topish" msgid "Find in translations" msgstr "Tarjimalardan topish" msgid "Find in comments" msgstr "Sharhlardan qidirish" msgid "Close" msgstr "Yopish" msgid "Replace &All" msgstr "" msgid "Replace &all" msgstr "" msgid "&Replace" msgstr "" msgid "< &Previous" msgstr "< &Oldingi" msgid "&Next >" msgstr "&Keyingi >" msgid "String to find" msgstr "Topish uchun qator" msgid "Replacement string" msgstr "Almashadigan qator" #, c-format msgid "Cannot execute program: %s" msgstr "Dastur ishga tushirilmadi: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "" msgid "Translation Language" msgstr "Tarjima tili" msgid "Language of the translation:" msgstr "Tarjima tili:" msgid "All strings" msgstr "" msgid "Couldn’t download Localazy project details." msgstr "" msgid "There was an error when uploading translations to Localazy." msgstr "" msgid "Projects" msgstr "" msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" msgid "Add Project" msgstr "" msgid "Add project" msgstr "" msgid "Poedit - Catalogs manager" msgstr "Poedit - kataloglar boshqaruvchisi" msgid "Edit…" msgstr "Tahrirlash…" msgid "Create new translations project" msgstr "Yangi tarjimalar loyihasini yaratish" msgid "Delete the project" msgstr "Loyihani o‘chirish" msgid "Edit the project" msgstr "Loyihani tahrirlash" msgid "Update all" msgstr "Barchasini yangilash" msgid "Update all catalogs in the project" msgstr "Loyihadagi barcha kataloglarni yangilash" msgid "Total" msgstr "Jami" msgid "Untrans" msgstr "Tarjima qilinmagan" msgctxt "column/row header" msgid "Needs Work" msgstr "" msgid "Errors" msgstr "" msgid "Last modified" msgstr "So‘nggi o‘zgartirish" msgid "Select directory" msgstr "Direktoriyani tanlash" msgid "Directories:" msgstr "Direktoriyalar:" msgid "" msgstr "" #, c-format msgid "Do you want to delete project “%s”?" msgstr "" msgid "Delete project" msgstr "" msgid "Deleting the project will not delete any translation files." msgstr "" msgid "Confirmation" msgstr "Tasdiqlash" msgid "Update all catalogs in this project?" msgstr "" msgid "Performs update from source code on all files in the project." msgstr "" msgid "Check for Updates…" msgstr "Yangilanishlarni tekshirish…" msgid "Catalogs Manager" msgstr "Kataloglar menejeri" msgid "&Preferences…" msgstr "" msgid "&Edit" msgstr "&Tahrirlash" msgid "Undo" msgstr "Orqaga qaytarish" msgid "Redo" msgstr "Qayta bajarish" msgid "Paste and Match Style" msgstr "Nusxa olish va joylash uslubi" msgid "Delete" msgstr "O‘chirish" msgid "Spelling and Grammar" msgstr "Imlo va grammatika" msgid "Show Spelling and Grammar" msgstr "Imlo va grammatikani ko‘rsatish" msgid "Check Document Now" msgstr "Hujjatni hozir tekshirish" msgid "Check Spelling While Typing" msgstr "Yozayotganda imlo xatolari tekshirilsin" msgid "Check Grammar With Spelling" msgstr "Grammatik xatolar imlo xatolar bilan birga tekshirilsin" msgid "Correct Spelling Automatically" msgstr "Imlo xatolar avtomatik to‘g‘rilansin" msgid "Substitutions" msgstr "Almashishlar" msgid "Show Substitutions" msgstr "Almashishlarni ko‘rsatish" msgid "Smart Copy/Paste" msgstr "Qulay nusxa olish/Qo‘yish" msgid "Smart Quotes" msgstr "Qulay qo‘shtirnoqlar" msgid "Smart Dashes" msgstr "Qulay tirelar" msgid "Smart Links" msgstr "Qulay linklar" msgid "Text Replacement" msgstr "Matnni almashtirish" msgid "Transformations" msgstr "Transformatsiya" msgid "Make Upper Case" msgstr "Katta harf qilish" msgid "Make Lower Case" msgstr "Kichik harf qilish" msgid "Capitalize" msgstr "Katta harf qilish" msgid "Speech" msgstr "Nutq" msgid "Start Speaking" msgstr "Gapirishni boshlash" msgid "Stop Speaking" msgstr "Gapirishni to‘xtatish" msgid "&View" msgstr "&Ko‘rinishi" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Show Toolbar" msgstr "Asboblar panelini ko‘rsatish" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Customize Toolbar…" msgstr "Asboblar panelini moslash" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Enter Full Screen" msgstr "\"Butun ekranda\" usuliga o‘tish" msgid "Window" msgstr "Oyna" msgid "Minimize" msgstr "Yig‘ish" msgid "Zoom" msgstr "Kattalashtirish/Kichiklashtirish" msgid "Welcome to Poedit" msgstr "Poedit’ga xush kelibsiz" msgid "Bring All to Front" msgstr "Hammasini oldga o‘tkazish" msgid "Information about the translator" msgstr "Tarjimon haqida ma’lumot" msgid "Name:" msgstr "Nomi:" msgid "Your Name" msgstr "Ismingiz" msgid "Email:" msgstr "E-pochtangiz:" msgid "you@example.com" msgstr "" 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." msgid "Editing" msgstr "Tahrirlanmoqda" msgid "Automatically compile MO file when saving" msgstr "Saylayotganda avtomatik tarzda MO fayl yaratilsin" msgid "Show summary after updating files" msgstr "" msgid "Check spelling" msgstr "Imloni tekshirish" msgid "Always change focus to text input field" msgstr "Fokusni doimo matnni kiritish maydoniga o‘zgartirish" msgid "" "Never let the list of strings take focus. If enabled, you must use Ctrl-" "arrows for keyboard navigation but you can also type text immediately, " "without having to press Tab to change focus." msgstr "" "Hech qachon qatorlar ro‘yxatiga fokusni olishiga yo‘l qo‘yilmasin. Agar u " "yoqib qo‘yilsa, klaviaturadan boshqarish uchun Ctrl-ko‘rsatkichlar’dan " "foydalanishingiz kerak, ammo siz, shuningdek, fokusni o‘zgartirish uchun Tab " "tugmasini bosmasdan ham matnni tez yozishingiz mumkin." msgid "Appearance" msgstr "Ko‘rinishi" msgid "Use custom list font:" msgstr "Boshqa shrift ro‘yxatidan foydalanish:" msgid "Use custom text fields font:" msgstr "Matn maydonlari shriftini o‘zgartirish:" 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 msgid "(requires Windows 8 or newer)" msgstr "(Windows 8 yoki yangirog‘i talab qilinadi)" msgid "General" msgstr "Umumiy" msgid "Use translation memory" msgstr "Tarjima xotirasidan foydalanish" msgid "Manage…" msgstr "" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "" 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 "" msgid "Stored translations:" msgstr "Saqlangan tarjimalar:" msgid "Database size on disk:" msgstr "Diskdagi ma’lumotlar bazasi hajmi:" msgid "Import Translation Files…" msgstr "" msgid "Import translation files…" msgstr "" msgid "Import From TMX…" msgstr "" msgid "Import from TMX…" msgstr "" msgid "Export To TMX…" msgstr "" msgid "Export to TMX…" msgstr "" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). msgid "Reset" msgstr "Tiklash" msgid "Select translation files to import" msgstr "Import qilish uchun tarjimalarni tanlang" msgid "Translation Memory" msgstr "Tarjima xotirasi" msgid "Importing translations…" msgstr "" #, c-format msgid "Error loading translation file “%s”." msgstr "" msgid "Finalizing…" msgstr "" msgid "Select TMX files to import" msgstr "" msgid "TMX Files" msgstr "" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "" msgid "Import error" msgstr "" msgid "Export as…" msgstr "Quyidagiday eksport…" msgid "Exporting translations…" msgstr "" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "" msgid "Export error" msgstr "Ekport qilinmadi" msgid "Reset translation memory" msgstr "Tarjima xotirasini tiklash" msgid "Are you sure you want to reset the translation memory?" msgstr "Tarjima xotirasini tiklamoqchi ekanligingizga ishonchingiz komilmi?" 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. msgid "TM" msgstr "TX" 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." msgid "Custom Extractors:" msgstr "" msgid "Custom extractors:" msgstr "" msgid "GNU gettext" msgstr "" msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" msgid "Delete extractor" msgstr "Ajratkichni o‘chirish" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "“%s” ajratkichni o‘chirmoqchimisiz?" msgid "Extractors" msgstr "Ajratgichlar" msgid "Accounts" msgstr "Hisoblar" msgid "Automatically check for updates" msgstr "Yangilanishlar avtomatik tekshirilsin" msgid "Include beta versions" msgstr "Beta versiyalari ham" 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." msgid "Updates" msgstr "Yangilanishlar" 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." msgid "Line endings:" msgstr "Qator tugashi:" msgid "Unix (recommended)" msgstr "Unix (tavsiya qilingan)" msgid "Windows" msgstr "Oynalar" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "Ushbuda joylashtirish:" msgid "Preserve formatting of existing files" msgstr "Mavjud fayllarni formatlashni saqlash" msgid "Advanced" msgstr "Qo‘shimcha" msgid "Settings" msgstr "" msgid "Preparing strings…" msgstr "" msgid "Pre-translating from translation memory…" msgstr "" #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "" msgstr[1] "" msgid "Pre-translating…" msgstr "" 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. msgid "Pre-translate" msgstr "Avtomatik tarjima" msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" msgid "Cannot pre-translate from unknown language." msgstr "" msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" msgid "Only fill in exact matches" msgstr "Faqat to‘liq mos kelganlar bilan to‘ldirilsin" msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" msgid "Don’t mark exact matches as needing work" msgstr "" 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 "" msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "" msgstr[1] "" msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" msgid "No entries could be pre-translated." msgstr "" msgid "" "The TM doesn’t contain any strings similar to the content of this file. It " "is only effective for semi-automatic translations after Poedit learns enough " "from files that you translated manually." msgstr "" "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." msgid "Cancelling…" msgstr "" msgid "Drag Folders or Files Here" msgstr "" msgid "Drag folders or files here" msgstr "" msgid "Add Folders…" msgstr "" msgid "Add folders…" msgstr "" msgid "Add Files…" msgstr "" msgid "Add files…" msgstr "" msgid "Add Wildcard…" msgstr "" msgid "Add wildcard…" msgstr "" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) msgid "Reveal in Finder" msgstr "" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" msgid "Show in Explorer" msgstr "" msgid "Show in Folder" msgstr "" msgid "Paths" msgstr "Yo‘llar" msgid "Excluded paths" msgstr "Qo‘shilmagan yo‘llar" msgid "Advanced extraction settings" msgstr "" msgid "Extract notes for translators from:" msgstr "" msgid "Comments prefixed with:" msgstr "" msgid "All comments" msgstr "" msgid "Additional xgettext flags:" msgstr "" msgid "Additional keywords" msgstr "Qo‘shimcha kalit so‘zlar" msgid "Name of the project the translation is for" msgstr "Tarjima loyihasi nomi" msgid "Team name and email address or URL" msgstr "" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "masalan: nplurals=2; plural=(n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (tavsiya qilinadi)" msgid "Please save the file first. This section cannot be edited until then." msgstr "Avval faylni saqlang, Saqlamasangiz uchbu qismni tahrirlay olmaysiz." msgid "Placeholders correctness" msgstr "" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "" #, c-format msgid "Superfluous placeholder “%s” that isn’t in source text." msgstr "" msgid "Plural form translations" msgstr "" msgid "Not all plural forms are translated." msgstr "" msgid "Inconsistent upper/lower case" msgstr "" msgid "The translation should start as a sentence." msgstr "" msgid "The translation should start with a lowercase character." msgstr "" msgid "Inconsistent whitespace" msgstr "" msgid "The translation doesn’t start with a space." msgstr "" msgid "The translation starts with a space, but the source text doesn’t." msgstr "" msgid "The translation is missing a newline at the end." msgstr "" msgid "The translation ends with a newline, but the source text doesn’t." msgstr "" msgid "The translation is missing a space at the end." msgstr "" msgid "The translation ends with a space, but the source text doesn’t." msgstr "" msgid "Punctuation checks" msgstr "" #, c-format msgid "The translation should end with “%s”." msgstr "" #, c-format msgid "The translation should not end with “%s”." msgstr "" #, c-format msgid "The translation ends with “%s”, but the source text ends with “%s”." msgstr "" msgid "Cloud" msgstr "" msgid "Clear Menu" msgstr "" msgid "Clear menu" msgstr "" msgid "Comment:" msgstr "Sharh:" msgid "Update" msgstr "" msgid "&Delete" msgstr "&O‘chirish" msgid "Delete the comment" msgstr "" msgid "Edit project" msgstr "Loyihani tahrirlash" msgid "Project name:" msgstr "Loyiha nomi:" msgid "Browse" msgstr "Ko‘rish" msgid "Add directory to the list" msgstr "Ro‘yxatga direktoriyani qo‘shish" msgid "OK" msgstr "OK" msgid "&File" msgstr "&Fayl" msgid "&New…" msgstr "&Yangi" msgid "New from &POT/PO file…" msgstr "" msgid "New From &POT/PO File…" msgstr "" msgid "&Open…" msgstr "" msgid "Open Recent" msgstr "So‘nggisini ochish" msgid "Open recent" msgstr "" msgid "Open cloud translation…" msgstr "" msgid "Open Cloud Translation…" msgstr "" msgid "&Start window" msgstr "" msgid "&Start Window" msgstr "" msgid "Catalogs &manager" msgstr "Kataloglar &menejeri" msgid "Catalogs &Manager" msgstr "Kataloglar &menejeri" msgid "&Close" msgstr "&Yopish" msgid "&Save" msgstr "&Saqlash" msgid "Save &as…" msgstr "" msgid "Save &As…" msgstr "" msgid "Compile to MO…" msgstr "" msgid "E&xport to HTML…" msgstr "" msgid "Check for updates…" msgstr "" msgid "Settings…" msgstr "" msgid "&Preferences" msgstr "&Parametrlar" msgid "E&xit" msgstr "Chi&qish" msgid "Quit" msgstr "Chiqish" msgid "Copy from singular" msgstr "Birlik shaklidan nusxa ko‘chirish" msgid "Copy From Singular" msgstr "Birlik shaklidan nusxa ko‘chirish" msgid "Translation needs &work" msgstr "" msgid "Translation Needs &Work" msgstr "" msgid "Edit &comment" msgstr "&Sharhni tahrirlash" msgid "Edit &Comment" msgstr "&Sharhni tahrirlash" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "Tavsiyalar" msgid "&Find…" msgstr "" msgid "Replace…" msgstr "" msgid "Find next" msgstr "Keyingisini topish" msgid "Find previous" msgstr "Oldingisini topish" msgid "Find and Replace…" msgstr "" msgid "Find Next" msgstr "Keyingisini topish" msgid "Find Previous" msgstr "Oldingisini topish" msgid "Show string &ID" msgstr "" msgid "Show String &ID" msgstr "" msgid "Show warnings" msgstr "" msgid "Show Warnings" msgstr "" msgid "Sort by &file order" msgstr "&Fayl tartibi bo‘yicha saralash" msgid "Sort by &File Order" msgstr "&Fayl tartibi bo‘yicha saralash" msgid "Sort by &source" msgstr "&Manba bo‘yicha saralash" msgid "Sort by &Source" msgstr "&Manba bo‘yicha saralash" msgid "Sort by &translation" msgstr "&Tarjima bo‘yicha saralash" msgid "Sort by &Translation" msgstr "&Tarjima bo‘yicha saralash" msgid "&Group by context" msgstr "Matn bo‘yicha &guruhlash" msgid "&Group By Context" msgstr "Matn bo‘yicha &guruhlash" msgid "Entries with errors first" msgstr "Xato kiritilganlar birinchi" msgid "Entries with Errors First" msgstr "Xato kiritilganlar birinchi" msgid "&Untranslated entries first" msgstr "Avval &tarjima qilinmaganlar" msgid "&Untranslated Entries First" msgstr "Avval &tarjima qilinmaganlar" msgid "&Show code occurrences" msgstr "" msgid "&Show Code Occurrences" msgstr "" msgid "Show sidebar" msgstr "Yon panelni ko‘rsatish" msgid "Show status bar" msgstr "Holat qatorini ko‘rsatish" msgid "&Translation" msgstr "" msgid "&Update from source code" msgstr "" msgid "&Update from Source Code" msgstr "" msgid "Update from &POT file…" msgstr "" msgid "Update from &POT File…" msgstr "" msgid "Sync with Crowdin" msgstr "Crowdin bilan sinxronlash" msgid "Pre-&translate…" msgstr "" msgid "&Validate translations" msgstr "Tarjimalarni to‘g‘rilash" msgid "&Validate Translations" msgstr "Tarjimalarni &to‘g‘rilash" msgid "Remove Same-as-Source Translations" msgstr "" msgid "&Purge deleted translations" msgstr "&O‘chirilgan tarjimalarni tozalash" msgid "&Purge Deleted Translations" msgstr "&O‘chirilgan tarjimalarni tozalash" msgid "&Properties…" msgstr "" msgid "&Go" msgstr "&O‘tish" msgid "&Done and next" msgstr "&Tayyor va keyingisi" msgid "&Done and Next" msgstr "&Tayyor va keyingisi" msgid "Previously edited" msgstr "" msgid "Previously Edited" msgstr "" msgid "&Previous translation" msgstr "&Oldingi tarjima" msgid "&Previous Translation" msgstr "&Oldingi tarjima" msgid "&Next translation" msgstr "&Keyingi tarjima" msgid "&Next Translation" msgstr "&Keyingi tarjima" msgid "P&revious unfinished" msgstr "O&ldingi tugatilmagan" msgid "P&revious Unfinished" msgstr "O&ldingi tugatilmagan" msgid "Ne&xt unfinished" msgstr "Ke&yingi tugatilmagan" msgid "Ne&xt Unfinished" msgstr "Ke&yingi tugatilmagan" msgid "Previous plural form" msgstr "Oldingi ko‘plik shakli" msgid "Previous Plural Form" msgstr "Oldingi ko‘plik shakli" msgid "Next plural form" msgstr "Keyingi ko‘plik shakli" msgid "Next Plural Form" msgstr "Keyingi ko‘plik shakli" msgid "&Online help" msgstr "&Onlayn yordam" msgid "&Online Help" msgstr "&Onlayn yordam" msgid "&GNU gettext manual" msgstr "&GNU gettext yo‘riqnomasi" msgid "&GNU gettext Manual" msgstr "&GNU gettext yo‘riqnomasi" msgid "&About Poedit" msgstr "Poedit h&aqida" msgid "&About" msgstr "H&aqida" msgid "Extractor setup" msgstr "Ajratgichni o‘rnatish" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "" "Nuqtali vergul bilan ajratilgan kengaytmalar ro‘yxati (masalan: *.cpp;*.h):" msgid "Invocation:" msgstr "Chaqirish:" msgid "Command to extract translations:" msgstr "Tarjimalarni ajratish buyrug‘i:" 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." msgid "An item in keywords list:" msgstr "Kalit so‘zlar ro‘yxatidagi band:" 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." msgid "An item in input files list:" msgstr "Kirish fayllari ro'yxatida element:" #, 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." msgid "Source code charset:" msgstr "Manba kodi kodlash usuli:" #, 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." msgid "Translation Properties" msgstr "" msgid "Project name and version:" msgstr "Loyiha nomi va versiyasi:" msgid "Language team:" msgstr "" msgid "Plural forms:" msgstr "" msgid "Use default rules for this language" msgstr "Ushbu til uchun standart qoidalardan foydalanish" msgid "Use custom expression" msgstr "Boshqa ifodadan foydalanish" msgid "Learn about plural forms" msgstr "Ko‘plik shakllari haqida o‘rganish" msgid "Charset:" msgstr "Kodlash usuli:" msgid "Advanced Extraction Settings…" msgstr "" msgid "Advanced extraction settings…" msgstr "" msgid "Translation properties" msgstr "Tarjima xossalari" msgid "Sources Paths" msgstr "" msgid "Sources paths" msgstr "Manbalar yo‘llari" msgid "Extract text from source files in the following directories:" msgstr "Quyidagi direktoriyalardagi manba fayllaridan matnni ajratish:" msgid "Base path:" msgstr "Asosiy yo‘l:" msgid "Sources Keywords" msgstr "" msgid "Sources keywords" msgstr "Manbalar kalit so‘zlari" 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:" msgid "Also use default keywords for supported languages" msgstr "" msgid "Learn about gettext keywords" msgstr "gettext kalit so‘lari haqida o‘rganish" msgid "Update summary" msgstr "Yangilash hisoboti" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" msgid "New strings" msgstr "Yangi qatorlar" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" msgid "Obsolete strings" msgstr "Eski qatorlar" msgid "(0 new, 0 obsolete)" msgstr "(0 ta yangi, 0 ta eski)" msgid "Open" msgstr "" msgid "Open file" msgstr "" msgid "Save file" msgstr "" msgid "Validate" msgstr "To‘g‘rilash" msgid "Check for errors in the translation" msgstr "Tarjimadagi xatolarni tekshirish" msgid "Update from code" msgstr "" msgid "Update from Code" msgstr "" msgid "Update from source code" msgstr "" msgid "Sidebar" msgstr "Yon panel" msgid "Show or hide the sidebar" msgstr "Yon panelni ko‘rsatish yoki yashirish" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. msgid "Previous source text" msgstr "" msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" msgid "Notes for translators" msgstr "" msgid "Comment" msgstr "" msgid "Add comment" msgstr "Sharh qo‘shish" msgid "Add Comment" msgstr "Sharh qo‘shish" msgid "Delete From Translation Memory" msgstr "" msgid "Delete from translation memory" msgstr "" msgid "Translation suggestions" msgstr "" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). msgid "No matches found" msgstr "Topilmadi" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). msgid "No Matches Found" msgstr "Topilmadi" msgid "This string was found in Poedit’s translation memory." msgstr "Ushbu qator Poedit’ning tarjima xotirasida topildi." msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" msgid "The TMX file is malformed." msgstr "" msgid "No translations were found in the TMX file." msgstr "" #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "" #, c-format msgid "Translation memory error: %s (%d)." msgstr "" msgid "Cannot create temporary directory." msgstr "Vaqtinchalik direktoriya yaratilmadi." msgid "There are no translations. That’s unusual." msgstr "Tarjimalar yo‘q. Bu noodatiy." msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "Translators typically use PO template files (POTs) prepared for them by the " "developer." msgstr "" msgid "(Learn more about GNU gettext)" msgstr "(GNU gettext haqida ko‘proq o‘rganing)" msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" msgid "Update from POT" msgstr "POT fayldan yangilash" msgid "Take translatable strings from an existing POT template." msgstr "Mavjud POT namunasidan tarjima qilinadigan qatorlarni oling." 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:" msgid "Extract from sources" msgstr "Manbalardan ajratish" 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 #, c-format msgid "Version %s" msgstr "%s versiya" msgid "Create new" msgstr "" msgid "Create new translation from POT template." msgstr "" msgid "Browse files" msgstr "" msgid "Open and edit translation files." msgstr "" msgid "Translate cloud project" msgstr "" msgid "Collaborate with other people online." msgstr "" msgid "Recent files" msgstr "" msgid "Sync" msgstr "Sinxronlash" 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") #, 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. #, c-format msgid "%s Preferences" msgstr "%s sozlamalar" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "Xizmatlar" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "%sni yashirish" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "Boshqalarini yashirish" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "Barchasini ko‘rsatish" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "%sdan chiqish" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "Parametrlar…" msgid "Preferences..." msgstr "Sozlamalar..." #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "So‘nggi" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "Muntazam" msgid "&Apply" msgstr "&Qo‘llash" msgid "Apply" msgstr "Qo‘llash" msgid "&Back" msgstr "&Orqaga" msgid "Back" msgstr "Orqaga" msgid "&Cancel" msgstr "&Bekor qilish" msgid "&Clear" msgstr "&Tozalash" msgid "Clear" msgstr "Tozalash" msgid "Copy" msgstr "Nusxa olish" msgid "Cu&t" msgstr "Kes&ish" msgid "Cut" msgstr "Kesib olish" msgid "Edit" msgstr "Tahrirlash" msgid "&Quit" msgstr "Chi&qish" msgid "Help" msgstr "Yordam" msgid "&New" msgstr "&Yangi" msgid "New" msgstr "Yangi" msgid "&No" msgstr "&Yo‘q" msgid "No" msgstr "Yo‘q" msgid "&OK" msgstr "&OK" msgid "Open…" msgstr "Ochish…" msgid "&Open..." msgstr "&Ochish..." msgid "Open..." msgstr "Ochish..." msgid "&Paste" msgstr "&Qo‘yish" msgid "Paste" msgstr "Qo‘yish" msgid "Preferences" msgstr "Shaxsiy sozlamalar" msgid "&Redo" msgstr "&Qayta bajarish" msgid "Refresh" msgstr "Yangilash" msgid "&Save as" msgstr "&Boshqacha saqlash" msgid "Save as" msgstr "Boshqacha saqlash" msgid "Select &All" msgstr "B&archasini belgilash" msgid "Select All" msgstr "Barchasini belgilash" msgid "&Undo" msgstr "&Qaytarish" msgid "&Yes" msgstr "&Ha" msgid "Yes" msgstr "Ha" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "Tepaga" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "Pastga" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "Chapga" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "O‘ngga" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "shift" poedit-3.5/locales/sl.mo0000644000175100001770000016134314664354143012210 00000000000000t*9 9 9& 9G9<[99J9g9 ^:h: w:: ::::::::::::::;";&;8;J;P;U;];e;w;;; ; ;;;; ;;;; <<8<T<Z<`<i<o<x<< < < <<<< =&=?=V=m=s=x====== > >>'>/>8> <> H> T>a> p>|> > >> >> >>> ?%?.?N?k?? ? ?1??'?@6@ P@[@7a@6@@)@A A]*AA<ADA$BBB IBVBB B"BC+*C)VC CCCCCCCC D'D#OCOYO(xOTO OP P P!P5PFP[P pP zP P PPPPPPP PQ QQ Q (Q 4QAQQQpQQQ7RzR:S ASMS`S |SSS2SST T"T@T XTyT T TTTT;T(U1UNUaU pU zUUU UUUU:U 6V<DV VV.WJWZW*jWWW WWW*WXX,X =X HXSXYY,Y EYQYbYsYvY#Y\YZ'Z/AZ+qZZ$Z%ZZ[['[+[[[ [ [ \7\ Q\[\j\ y\\\\\\\\\\]]]]=]^1^L^ne^E^_!_;:_ v___@__`,a,aa bb2%b*Xbbbw%cjc dd#d2d%Gdmdddddd dde ee#e>eCe8Kee eee e e ee e ee f( f4f:fzSfffff f f g g!g )g 4g Ag Kg Xg dgoggg"gggh h 'h 4h@hGh Ph]hwhhh h hhhh h ii!+i Mi[icikiti |iiiiiii i i jj,j]?$ܔ/1 7dDSU%j  F P#\04ї3I&^ /!٘2Qd m{ љ- 6@U ft6 ɚӚT\w&Λ7=-k #ΜWV_h}"ڝ7HZ>k%y֞?P 5%.+ZzǠ֠   (y=Сc1M '"44Ez!9̣#* BN-`;1ʤ-*3O'k]0I]{ Ǧ զ  3 ;G P^e nz$ާɩ.%TjpӪ۪'-Ur  ޫ D" g8uì<V%ǭ# #1 I,TǮڮۯ 9 <#HEl ,5)!K%a*DZαݱ ڲ&%>Mb w ׳p#>#2tHE F'n!A6'ĸ`#/˹}Wfպ <GVe&x׻  (6?H[d 8ʼҼ . 7 ES b8o |ϽL_gmt ɾھ  /="Wz Ϳ ۿ  ,CUh#(#L_px *=Tf{v  $/G5}$ ( 4>G9| !1. 15>&t$mM6=0P"asV,*I*tgX!`CAG4P" !&(";$^<Pdn7l xK^KLaY/eNh $28Qj q0=$/Tpe | *5Nb z 32C\m K(#Fj'$d  &.= B7M G9[@? =>$c h r}3 + "9&\  |Lo[GvO1~M<Jf^\^tSJIM`'W oYL3NF1Bl0nqg3Rm{X/'|ibk)+&j_A"0-}_Z~Z)c]yt..mi'6 kr?@jay{W:7!,w4,U 46@9}BR Uufn+Gd EL/YCin/=x#>p`z%FC8V~4DuJXb-G [c|As*[7#gdem O*QSw*2Pv; ?"Dq`]p0br H1NT":5h+Q,eA> Yke<X ]@RQcu Hpr!%jf;(8xC7TB^{V=dKEPlWIFx\V(Twl KhO. q-}Z) NU#IM?6=(&Etva>zS\D<5z2H9ys5;:KP3 go$$ 8a&h!_s%92$  (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd AccountAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add accountAdd 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 languagesAlt+Always 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 errorCrowdin is an online localization management platform and collaborative translation tool.Ctrl+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 no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownDownloading 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:EnterEnter 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 loading translation file “%s”.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export errorExport 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…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)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport from TMX…Import translation files…Importing translation memory from “%s” 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 CrowdinLeftLine %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 translations were found in the TMX file.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKObsolete stringsOneOnly 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 translation templateOpen...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 translationsQuitQuit %sReading file content failed with the following error: %sRecentRecent 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 FinderReviewRightSaveSave &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 languageServicesSet LanguageSet languageSettings…Shift+Show AllShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow summary after updating filesShow 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.These strings are no longer in the source code. Poedit will remove them from the file now.These strings were found in the sources but were not in the file. Poedit will add them to the file now.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 entries in the file are probably incorrect.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.UntransUpUpdateUpdate 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 the file failed. Click on 'Details >>' for details.Updating 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown 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: 2024-08-30 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(novi: 0, zastareli: 0)(Več o GNU gettext)(novo: %i, opuščeno: %i)(uporabi privzeti jezik)(niste vpisani)(zahteva Windows 8 ali novejše)< &PrejšnjiO %sRačunRačuniDodajDodaj računDodaj komentarDodaj datoteke ...Dodaj mape ...Dodaj projektDodaj nadomestni znak ...Dodaj računDodaj 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 jezikeIzmenjalka+Vedno 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 prevodZapriPojavitve 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 CrowdinCrowdin je spletna platforma za upravljanje lokalizacij in orodje za skupno prevajanje.Krmilka+I&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 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čNavzdolPrenašanje najnovejših prevodov ...Prenos prevodov je v tem projektu onemogočen.Sem povlecite mape ali datotekeSem povlecite mape ali datotekeIz&hodUrediUredi &komentarUredi &komentarUredi komentarUredi komentarUredi projektUredi projektUrejanjeUredi ...E-pošta:VnašalkaCelozaslonski 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 nalaganju datoteke za prevod “%s”.Napaka pri odpiranju datotekeNapaka pri shranjevanju datotekeNapaka pri nalaganju datoteke XLIFF: %sNapakeVseIzključene potiIzvozi v TMX …Izvozi kot ...Napaka pri izvozuIzvozi 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:Razširjanje prevedljivih nizov …Nastavitve pretvornikovPretvornikiNeuspeli ukaz: %sPovezovanje 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.Dokončanje…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)PogostoGNU gettextSplošnoDatoteke HTMLPomočSkrij %sSkrij drugeSkrij 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 …Napaka pri uvozuUvozi iz TMX …Uvoz datoteke s prevodom …Uvoz pomnilnika prevodov iz "%s" je spodletel.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 CrowdinLevoVrstica %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 predelaveNikoli 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.V datoteki TMX ni mogoče najti prevodov.Ni podatkov o uporabiVse množinske oblike niso prevedene.Niste pooblaščeni, ponovno se prijavite.Opombe za prevajalceV reduZastareli niziEdenOmogoč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 predlogo prevodaOdpri ...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 prevodeIzhodIzhod iz %sBranje vsebine datoteke ni uspelo z naslednjo napako: %sNedavnoNedavne datotekePovrniOsvežiZnova naloži datotekoZnova naloži datotekoPreostalo: %dZamenjajZamenjaj &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 FinderjuPregledDesnoShraniShrani &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 jezikStoritveNastavi jezikNastavi jezikNastavitve…Dvigalka+Prikaži vsePrikaž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 nizaPo posodobitvi datotek prikaži povzetekPrikaž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.Teh nizov ni več v izvorni kodi. Poedit jih bo zdaj odstranil iz datoteke.Ti nizi so bili najdeni v virih, niso pa bili v datoteki. Poedit jih bo zdaj dodal v datoteko.Ta datoteka JSON ni prevajalska datoteka in je ni mogoče urejati v Poeditu.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.SkupnoPreobliovanjaPrevedljivi vnosi niso bili ročno dodani v sistem Gettext, temveč so samodejno razširjeni iz izvorne kode. Na ta način ostanejo posodobljeni in točni. Prevajalci običajno uporabljajo datoteke predlog PO (s končnico POT), ki jih zanje pripravi razvijalec.Prevedi projekt v oblakuPrevedeno: %d %d (%d %%)PrevodJezik prevodaPomnilnik prevodovPrevo&d potrebuje predelavoLastnosti prevodaVnosi za prevod v datoteki so verjetno napačni.Zbirka 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.NeprevedenoNavzgorPosodobiPosodobi 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 datoteke ni uspelo. Za podrobnosti kliknite 'Podrobnosti >>'.Posodabljanje 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čavaizmenjalkaPotrebno predelavekrmilkane 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://vnaprej prevedi iz pomnilnika prevodovdvigalkaneznani jeziknepodprta različica (%s)vi@primer.com»%s« ni veljavna datoteka POT.poedit-3.5/locales/pl.po0000644000175100001770000020574514664354065012220 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "Nie wyświetlaj tej informacji" msgid "Don’t Show Again" msgstr "Nie pokazuj ponownie" msgid "Don’t show again" msgstr "Nie pokazuj ponownie" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(Nowe: %i, nieaktualne: %i)" msgid "Collecting source files…" msgstr "Zbieranie plików źródłowych…" msgid "Extracting translatable strings…" msgstr "Wyodrębnianie ciągów do tłumaczenia…" msgid "Failed to load file with extracted translations." msgstr "Nie udało się załadować pliku z rozpakowanymi tłumaczeniami." msgid "Merging differences…" msgstr "Scalanie różnic…" msgid "Updating translations" msgstr "Aktualizowanie tłumaczeń" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "Nie można było otworzyć pliku \"%s\"." msgid "Invalid file" msgstr "Nieprawidłowy plik" #, c-format msgid "Malformed header: “%s”" msgstr "Zdeformowany nagłówek: \"%s\"" msgid "PO Translation Files" msgstr "Pliki tłumaczeń PO" msgid "POT Translation Templates" msgstr "Szablony tłumaczeń POT" msgid "XLIFF Translation Files" msgstr "Pliki tłumaczeń XLIFF" msgid "JSON Translation Files" msgstr "Pliki tłumaczeń JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "Pliki tłumaczeń Flutter" msgid "All Translation Files" msgstr "Wszystkie pliki tłumaczeń" msgid "The file is in a format not recognized by Poedit." msgstr "Poedit nie może rozpoznać tego formatu pliku." 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." #, 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" #, 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ą." #, c-format msgid "Couldn’t save file %s." msgstr "Nie można zapisać pliku %s." msgid "Screenshots:" msgstr "Zrzuty ekranu:" #, 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”." #, c-format msgid "Line %d of file “%s” is corrupted (not valid %s data)." msgstr "Wiersz %d pliku „%s” jest uszkodzony (niepoprawne dane „%s”)." 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" msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "Uszkodzony plik PO: użyto liczby mnogiej msgstr bez msgid_plural" msgid "Couldn’t load the file, it is probably damaged." msgstr "Nie można wczytać pliku. Prawdopodobnie jest uszkodzony." 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." 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." #, 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łumaczenia.\n" "\n" "Został on zapisany zamiast tego w UTF-8 i ustawienie zostało odpowiednio " "zmodyfikowane." msgid "Error saving file" msgstr "Błąd zapisu pliku" #, c-format msgid "“%s” is not a valid POT file." msgstr "\"%s\" nie jest prawidłowym plikiem POT." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Błąd podczas ładowania pliku XLIFF: %s" #, 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 msgid "Broken markup in translation string." msgstr "Uszkodzone znaczniki w łańcuchu tłumaczenia." msgid "(Use default language)" msgstr "(Użyj domyślnego języka)" msgid "Language selection" msgstr "Wybór języka" msgid "Select your preferred language" msgstr "Wybierz preferowany język interfejsu" msgid "You must restart Poedit for this change to take effect." msgstr "Aby zmiany zostały zastosowane, należy ponownie uruchomić Poedit." msgid "Add Account" msgstr "Dodaj Konto" msgid "Add account" msgstr "Dodaj konto" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "Więcej informacji o %s" 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." msgid "How does cloud sync work?" msgstr "Jak działa synchronizacja w chmurze?" msgid "Account" msgstr "Konto" msgid "(not signed in)" msgstr "(nie zalogowano)" msgid "File" msgstr "Plik" msgid "Open cloud translation" msgstr "Otwórz tłumaczenie w chmurze" msgid "Manage accounts" msgstr "Zarządzaj kontami" msgid "Project:" msgstr "Projekt:" msgid "Language:" msgstr "Język:" msgid "Sign in to Cloud Account" msgstr "Zaloguj się na Konto w chmurze" msgid "Sign in to cloud account" msgstr "Zaloguj się na konto w chmurze" msgid "No translation projects listed in your account." msgstr "Brak projektów z tłumaczeniami na twoim koncie." msgid "Downloading latest translations…" msgstr "Pobieranie najnowszych tłumaczeń…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #, c-format msgid "Sign in to %s" msgstr "Zaloguj się do %s" msgid "Syncing" msgstr "Synchronizowanie" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, 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. #, c-format msgid "Uploading translations to %s failed." msgstr "Przesyłanie tłumaczeń do %s nie powiodło się." msgid "Syncing error" msgstr "Błąd synchronizacji" msgid "Add" msgstr "Dodaj" msgid "Unknown Crowdin error." msgstr "Nieznany błąd Crowdin." msgid "Not authorized, please sign in again." msgstr "Brak autoryzacji, zaloguj się ponownie." msgid "Downloading translations is disabled in this project." msgstr "Ten projekt ma wyłączone pobieranie tłumaczeń." msgid "Sign In" msgstr "Zaloguj" msgid "Sign in" msgstr "Zaloguj się" msgid "Sign Out" msgstr "Wyloguj" msgid "Sign out" msgstr "Wyloguj się" msgid "Learn more about Crowdin" msgstr "Dowiedz się więcej o Crowdin" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" "Crowdin jest internetową platformą zarządzania lokalizacją i narzędziem do " "wspólnego tłumaczenia." msgid "Waiting for authentication…" msgstr "Oczekiwanie na uwierzytelnienie…" msgid "Updating user information…" msgstr "Aktualizowanie informacji o użytkowniku…" msgid "Sign in to Crowdin" msgstr "Zaloguj się do Crowdin" msgid "Syncing with Crowdin failed." msgstr "Synchronizacja z Crowdin nie powiodła się." msgid "Crowdin error" msgstr "Błąd Crowdin" msgid "Uploading translations…" msgstr "Przesyłanie tłumaczeń…" msgid "&Copy" msgstr "&Kopiuj" msgid "Learn more" msgstr "Dowiedz się więcej" msgid "&Help" msgstr "&Pomoc" msgid "MO files can’t be directly edited in Poedit." msgstr "Plików MO nie można edytować bezpośrednio w programie Poedit." msgid "Error opening file" msgstr "Błąd podczas otwierania pliku" 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." msgid "don’t delete temporary files (for debugging)" msgstr "nie usuwaj plików tymczasowych (dla debugowania)" msgid "handle a poedit:// URI" msgstr "włącz obsługę protokołu poedit://" msgid "go to item at given line number" msgstr "przejdź do elementu w podanym numerze linii" msgid "Failed to communicate with Poedit process." msgstr "Komunikacja z procesem programu Poedit nie powiodła się." #, c-format msgid "Unhandled exception occurred: %s" msgstr "Wystąpił nieobsługiwany wyjątek: %s" msgid "Select translation template" msgstr "Wybierz szablon tłumaczenia" msgid "Select translation file" msgstr "Wybierz plik tłumaczenia" msgid "Poedit is an easy to use translation editor." msgstr "Poedit jest łatwym w użyciu edytorem tłumaczeń." 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." #, c-format msgid "File “%s” is not a translation file." msgstr "Plik “%s” nie jest plikiem tłumaczeń." #, c-format msgid "File “%s” doesn’t exist." msgstr "Plik “%s” nie istnieje." 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". #, 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." msgid "Install" msgstr "Zainstaluj" #, c-format msgid "The file “%s” has been changed by another application." msgstr "Plik \"%s\" został zmieniony przez inną aplikację." msgid "Reload file" msgstr "Wczytaj plik ponownie" 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? Twoje niezapisane zmiany w " "Poedit zostaną utracone, jeśli to zrobisz." msgid "Ignore" msgstr "Ignoruj" msgid "Reload File" msgstr "Wczytaj plik ponownie" msgid "The file has been modified. Do you want to save changes?" msgstr "Plik został zmodyfikowany. Czy chcesz zapisać zmiany?" msgid "Save changes" msgstr "Zapisz zmiany" msgid "Your changes will be lost if you don’t save them." msgstr "Zmiany zostaną utracone, jeśli nie zostały zapisane." msgid "Save" msgstr "Zapisz" msgid "Do&n’t save" msgstr "N&ie zapisuj" msgid "Don’t Save" msgstr "Nie zapisuj" msgid "The changes made by the other application will be lost if you save." msgstr "" "Zmiany wprowadzone przez inną aplikację zostaną utracone, jeśli zapiszesz." msgid "Cancel" msgstr "Anuluj" msgid "Save Anyway" msgstr "Zapisz mimo to" msgid "Save anyway" msgstr "Zapisz mimo to" msgid "Save as…" msgstr "Zapisz jako…" msgid "Compile to…" msgstr "Skompiluj do…" msgid "Compiled Translation Files" msgstr "Skompilowany plik tłumaczenia" msgid "Export to HTML…" msgstr "Wyeksportuj do HTML…" msgid "HTML Files" msgstr "Pliki HTML" #, c-format msgid "In: %s" msgstr "W: %s" msgid "Source code not available." msgstr "Kod źródłowy jest niedostępny." msgid "Updating failed" msgstr "Aktualizacja nie powiodła się" 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." msgid "Permission denied." msgstr "Odmowa dostępu." 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. 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. 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." msgid "Translation entries in the file are probably incorrect." msgstr "Wpisy tłumaczenia w pliku są prawdopodobnie niepoprawne." msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "" "Aktualizacja pliku nie powiodła się. Kliknij na 'Szczegóły >>', aby uzyskać " "więcej informacji." msgid "Open translation template" msgstr "Otwórz szablon tłumaczenia" #, 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." msgid "Validation results" msgstr "Wynik weryfikacji" 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." msgid "The file was saved safely." msgstr "Plik został zapisany bezpiecznie." 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." 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." 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." 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." msgid "No problems with the translation found." msgstr "Nie znaleziono problemów." #, 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." msgid "The translation is ready for use." msgstr "Tłumaczenie jest gotowe do użycia." #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "Poedit automatycznie naprawił nieprawidłowości w pliku „%s”." msgid "" "The file contained duplicate items, which is not allowed in PO files and " "would prevent the file from being used. Poedit fixed the issue, but you " "should review translations of any items marked as 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." msgid "Language of the translation isn’t set." msgstr "Nie określono języka tłumaczenia." msgid "Set Language" msgstr "Wybierz język" msgid "Set language" msgstr "Wybierz język" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." msgid "" "Suggestions are not available if the translation language is not set " "correctly. Other features, such as plural forms, may be affected as well." msgstr "" "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." 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." msgid "Fix Language" msgstr "Napraw język" msgid "Fix language" msgstr "Napraw język" 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." 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" msgid "Required header Plural-Forms is missing." msgstr "Brakuje nagłówka Plural-Forms." #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Błąd składni w nagłówku Plural-Forms („%s”)." msgid "Fix the Header" msgstr "Napraw nagłówek" 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". #, 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.")" msgid "Review" msgstr "Do sprawdzenia" msgid "Would you like to use English for source text?" msgstr "Czy chcesz użyć języka angielskiego dla tekstu źródłowego?" #, 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" msgid "Load English" msgstr "Załaduj angielski" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Przetłumaczone: %d z %d (%d %%)" #, c-format msgid "Remaining: %d" msgstr "Pozostało: %d" #, 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" #, 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" msgid " (unsaved)" msgstr " (niezapisany)" msgid " (modified)" msgstr " (zmodyfikowano)" #, c-format msgid "Failed to update translation memory: %s" msgstr "Nie udało się zaktualizować pamięci tłumaczeniowej: %s" msgid "Remove same-as-source translations" msgstr "Usuń tłumaczenia z tego samego źródła" 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?" 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ąć." msgid "Keep" msgstr "Zachowaj" msgid "Remove" msgstr "Usuń" msgid "Purge deleted translations" msgstr "Wyczyść usunięte tłumaczenia" msgid "Do you want to remove all translations that are no longer used?" msgstr "Czy chcesz usunąć wszystkie nieużywane tłumaczenia?" 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." msgid "Purge" msgstr "Wyczyść" msgid "Copy from source text" msgstr "Skopiuj z tekstu źródłowego" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "Wyczyść tłumaczenie" msgid "Clear Translation" msgstr "Wyczyść tłumaczenie" msgid "Edit comment" msgstr "Edytuj komentarz" msgid "Edit Comment" msgstr "Edytuj komentarz" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "Wystąpienia kodu" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "Wystąpienia kodu" msgid "Hide Sidebar" msgstr "Ukryj pasek boczny" msgid "Show Sidebar" msgstr "Pokaż pasek boczny" msgid "Hide Status Bar" msgstr "Ukryj pasek stanu" msgid "Show Status Bar" msgstr "Pokaż pasek stanu" msgid "String length in characters: translation | source" msgstr "Długość ciągu w znakach: tłumaczenie | źródło" msgid "String length in characters" msgstr "Długość ciągu w znakach" msgid "Source text" msgstr "Tekst źródłowy" msgid "Singular" msgstr "Liczba pojedyncza" msgid "Plural" msgstr "Liczba mnoga" msgid "Translation" msgstr "Tłumaczenie" msgid "Pre-translated" msgstr "Wstępnie przetłumaczone" 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. msgid "Needs work" msgstr "Wymaga pracy" 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." msgid "Create new translation" msgstr "Utwórz nowe tłumaczenie" 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 msgid "Source text ID" msgstr "ID tekstu źródłowego" msgid "Everything" msgstr "Wszystko" #, c-format msgid "Form %i" msgstr "Forma %i" #, c-format msgid "Form %i (unused)" msgstr "Formularz %i (nieużywany)" msgid "Zero" msgstr "Zero" msgid "One" msgstr "Jeden" msgid "Two" msgstr "Dwa" msgid "Other" msgstr "Inne" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, 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 #, c-format msgid "String identifier: %s" msgstr "Identyfikator ciągu: %s" #, c-format msgid "%s Format" msgstr "Format %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "Format %s" #, c-format msgid "Translation — %s" msgstr "Tłumaczenie — %s" msgid "ID" msgstr "ID" #, c-format msgid "Source text — %s" msgstr "Tekst źródłowy — %s" msgid "unknown language" msgstr "nieznany język" #, c-format msgid "Network error: %s (%d)" msgstr "Błąd sieci: %s (%d)" msgid "Unknown error" msgstr "Nieznany błąd" #, c-format msgid "Failed command: %s" msgstr "Błąd polecenia: %s" msgid "Failed to merge gettext catalogs." msgstr "Nie udało się połączyć pakietów gettext." msgid "Open in Editor" msgstr "Otwórz w edytorze" msgid "Open in editor" msgstr "Otwórz w edytorze" 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." msgid "No usage information" msgstr "Nie znaleziono informacji o użyciu" #, 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" msgid "Source code not found" msgstr "Nie znaleziono kodu źródłowego" 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." msgid "File cannot be opened" msgstr "Nie można otworzyć pliku" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "Poedit nie może otworzyć pliku \"%s\"." msgid "Find" msgstr "Znajdź" msgid "Replace" msgstr "Zamień" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "Opcje" msgid "Ignore case" msgstr "Ignoruj wielkość liter" msgid "Wrap around" msgstr "Zawijaj wyszukiwanie" msgid "Whole words only" msgstr "Tylko całe wyrazy" msgid "Find in source texts" msgstr "Szukaj w tekstach źródłowych" msgid "Find in translations" msgstr "Szukaj w tłumaczeniach" msgid "Find in comments" msgstr "Szukaj w komentarzach" msgid "Close" msgstr "Zamknij" msgid "Replace &All" msgstr "Z&amień wszystko" msgid "Replace &all" msgstr "Z&amień wszystko" msgid "&Replace" msgstr "Zamień" msgid "< &Previous" msgstr "« &Poprzednie" msgid "&Next >" msgstr "&Następne »" msgid "String to find" msgstr "Tekst do wyszukania" msgid "Replacement string" msgstr "Zamień na tekst" #, c-format msgid "Cannot execute program: %s" msgstr "Nie można uruchomić programu: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "Nazwa języka lub kod" msgid "Translation Language" msgstr "Język tłumaczenia" msgid "Language of the translation:" msgstr "Język tłumaczenia:" msgid "All strings" msgstr "Wszystkie ciągi" msgid "Couldn’t download Localazy project details." msgstr "Nie można pobrać szczegółów projektu Localazy." msgid "There was an error when uploading translations to Localazy." msgstr "Wystąpił błąd podczas przesyłania tłumaczeń do Localazy." msgid "Projects" msgstr "Projekty" 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." msgid "Add Project" msgstr "Dodaj Projekt" msgid "Add project" msgstr "Dodaj projekt" msgid "Poedit - Catalogs manager" msgstr "Poedit - Menedżer pakietów" msgid "Edit…" msgstr "Edytuj…" msgid "Create new translations project" msgstr "Utwórz nowy projekt tłumaczeń" msgid "Delete the project" msgstr "Usuń projekt" msgid "Edit the project" msgstr "Edytuj projekt" msgid "Update all" msgstr "Aktualizuj wszystkie" msgid "Update all catalogs in the project" msgstr "Aktualizuj wszystkie pakiety w projekcie" msgid "Total" msgstr "Razem" msgid "Untrans" msgstr "Nieprzetłumaczone" msgctxt "column/row header" msgid "Needs Work" msgstr "Wymaga pracy" msgid "Errors" msgstr "Błędy" msgid "Last modified" msgstr "Ostatnio zmodyfikowano" msgid "Select directory" msgstr "Wybierz katalog" msgid "Directories:" msgstr "Katalogi:" msgid "" msgstr "" #, c-format msgid "Do you want to delete project “%s”?" msgstr "Czy chcesz usunąć projekt \"%s\"?" msgid "Delete project" msgstr "Usuń projekt" msgid "Deleting the project will not delete any translation files." msgstr "Usunięcie projektu nie spowoduje usunięcia żadnych plików tłumaczeń." msgid "Confirmation" msgstr "Potwierdzenie" msgid "Update all catalogs in this project?" msgstr "Czy zaktualizować wszystkie katalogi w tym projekcie?" 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." msgid "Check for Updates…" msgstr "Sprawdź dostępność aktualizacji…" msgid "Catalogs Manager" msgstr "Menedżer pakietów" msgid "&Preferences…" msgstr "&Ustawienia…" msgid "&Edit" msgstr "&Edycja" msgid "Undo" msgstr "Cofnij" msgid "Redo" msgstr "Ponów" msgid "Paste and Match Style" msgstr "Wklej i dopasuj styl" msgid "Delete" msgstr "Usuń" msgid "Spelling and Grammar" msgstr "Pisownia i gramatyka" msgid "Show Spelling and Grammar" msgstr "Pokaż pisownię i gramatykę" msgid "Check Document Now" msgstr "Sprawdź dokument teraz" msgid "Check Spelling While Typing" msgstr "Sprawdzaj pisownię w trakcie pisania" msgid "Check Grammar With Spelling" msgstr "Sprawdzaj gramatykę i pisownię" msgid "Correct Spelling Automatically" msgstr "Poprawiaj pisownię automatycznie" msgid "Substitutions" msgstr "Zamienniki" msgid "Show Substitutions" msgstr "Pokaż zamienniki" msgid "Smart Copy/Paste" msgstr "Inteligentne kopiowanie/wklejanie" msgid "Smart Quotes" msgstr "Inteligentne cytaty" msgid "Smart Dashes" msgstr "Inteligentne myślniki" msgid "Smart Links" msgstr "Inteligentne odnośniki" msgid "Text Replacement" msgstr "Zastępowanie tekstu" msgid "Transformations" msgstr "Przekształcenia" msgid "Make Upper Case" msgstr "Zamień na duże litery" msgid "Make Lower Case" msgstr "Zamień na małe litery" msgid "Capitalize" msgstr "Zamień na kapitaliki" msgid "Speech" msgstr "Narracja" msgid "Start Speaking" msgstr "Rozpocznij mówienie" msgid "Stop Speaking" msgstr "Zatrzymaj mówienie" msgid "&View" msgstr "&Widok" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Show Toolbar" msgstr "Pokaż pasek narzędzi" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Customize Toolbar…" msgstr "Dostosuj pasek narzędzi…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Enter Full Screen" msgstr "Tryb pełnoekranowy" msgid "Window" msgstr "Okno" msgid "Minimize" msgstr "Minimalizuj" msgid "Zoom" msgstr "Zoom" msgid "Welcome to Poedit" msgstr "Witamy w Poedit" msgid "Bring All to Front" msgstr "Umieść wszystko na wierzchu" msgid "Information about the translator" msgstr "Informacje o tłumaczu" msgid "Name:" msgstr "Autor:" msgid "Your Name" msgstr "Imię i nazwisko" msgid "Email:" msgstr "Adres e-mail:" msgid "you@example.com" msgstr "twojmail@domena.com" 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." msgid "Editing" msgstr "Edytowanie" msgid "Automatically compile MO file when saving" msgstr "Automatycznie kompiluj plik MO podczas zapisywania" msgid "Show summary after updating files" msgstr "Pokaż podsumowanie po aktualizacji plików" msgid "Check spelling" msgstr "Sprawdzaj pisownię" msgid "Always change focus to text input field" msgstr "Uaktywniaj pole wprowadzania tekstu" 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." msgid "Appearance" msgstr "Wygląd" msgid "Use custom list font:" msgstr "Użyj niestandardowej czcionki listy:" msgid "Use custom text fields font:" msgstr "Użyj niestandardowej czcionki pola tekstowego:" msgid "Change UI language" msgstr "Zmień język interfejsu" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions msgid "(requires Windows 8 or newer)" msgstr "(wymaga Windows 8 lub nowszego)" msgid "General" msgstr "Ustawienia główne" msgid "Use translation memory" msgstr "Używaj pamięci tłumaczeniowej" msgid "Manage…" msgstr "Zarządzaj…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "Podczas aktualizacji ze źródeł" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "wskaż rozmyte dopasowania w ramach pliku" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "wstępnie przetłumacz korzystając z pamięci tłumaczeniowej" 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ń." msgid "Stored translations:" msgstr "Zapisane tłumaczenia:" msgid "Database size on disk:" msgstr "Rozmiar bazy danych na dysku:" msgid "Import Translation Files…" msgstr "Importuj pliki tłumaczeń…" msgid "Import translation files…" msgstr "Importuj pliki tłumaczeń…" msgid "Import From TMX…" msgstr "Importuj z TMX…" msgid "Import from TMX…" msgstr "Importuj z TMX…" msgid "Export To TMX…" msgstr "Eksportuj do TMX…" 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). msgid "Reset" msgstr "Wyczyść" msgid "Select translation files to import" msgstr "Wybierz pliki tłumaczeń do zaimportowania" msgid "Translation Memory" msgstr "Pamięć tłumaczeniowa" msgid "Importing translations…" msgstr "Trwa importowanie tłumaczeń…" #, c-format msgid "Error loading translation file “%s”." msgstr "Błąd ładowania pliku tłumaczenia “%s”." msgid "Finalizing…" msgstr "Finalizowanie…" msgid "Select TMX files to import" msgstr "Wybierz pliki TMX do zaimportowania" msgid "TMX Files" msgstr "Pliki TMX" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "Importowanie pamięci tłumaczeniowej z \"%s\" nie powiodło się." msgid "Import error" msgstr "Błąd importowania" msgid "Export as…" msgstr "Eksportuj jako…" msgid "Exporting translations…" msgstr "Eksportowanie tłumaczeń…" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "Eksportowanie pamięci tłumaczeniowej do \"%s\" nie powiodło się." msgid "Export error" msgstr "Błąd eksportu" msgid "Reset translation memory" msgstr "Wyczyść pamięć tłumaczeniową" msgid "Are you sure you want to reset the translation memory?" msgstr "Czy na pewno chcesz wyczyścić pamięć tłumaczeniową?" 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. msgid "TM" msgstr "TM" msgid "" "Source code extractors are used to find translatable strings in the source " "code files and extract them so that they can be translated." msgstr "" "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." msgid "Custom Extractors:" msgstr "Niestandardowe ekstraktory:" msgid "Custom extractors:" msgstr "Niestandardowe ekstraktory:" msgid "GNU gettext" msgstr "GNU gettext" 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)." msgid "Delete extractor" msgstr "Usuń wyodrębnienie" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "Czy na pewno chcesz usunąć wyodrębnienie “%s”?" msgid "Extractors" msgstr "Wyodrębnianie" msgid "Accounts" msgstr "Konta" msgid "Automatically check for updates" msgstr "Automatycznie sprawdzaj dostępność aktualizacji" msgid "Include beta versions" msgstr "Sprawdzaj także wersje beta" 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." msgid "Updates" msgstr "Aktualizacje" 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." msgid "Line endings:" msgstr "Format zakończeń wierszy:" msgid "Unix (recommended)" msgstr "Unix (zalecane) " msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "Szerokość:" msgid "Preserve formatting of existing files" msgstr "Zachowaj formatowanie istniejących plików" msgid "Advanced" msgstr "Zaawansowane" msgid "Settings" msgstr "Ustawienia" msgid "Preparing strings…" msgstr "Przygotowywanie ciągów…" msgid "Pre-translating from translation memory…" msgstr "Wstępne tłumaczenie z pamięci tłumaczeniowej…" #, 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" msgid "Pre-translating…" msgstr "Wstępne tłumaczenie…" 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. msgid "Pre-translate" msgstr "Wstępnie przetłumacz" 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." msgid "Cannot pre-translate from unknown language." msgstr "Nie można wstępnie przetłumaczyć z nieznanego języka." 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." msgid "Only fill in exact matches" msgstr "Uzupełniaj jedynie dokładne odpowiedniki" 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." msgid "Don’t mark exact matches as needing work" msgstr "Nie oznaczaj dokładnych dopasowań jako wymagających pracy" 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." 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." #, 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." 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ść." msgid "No entries could be pre-translated." msgstr "Żaden z wpisów nie mógł być wstępnie przetłumaczony." 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." msgid "Cancelling…" msgstr "Anulowanie…" msgid "Drag Folders or Files Here" msgstr "Przeciągnij tutaj foldery lub pliki" msgid "Drag folders or files here" msgstr "Przeciągnij tutaj foldery lub pliki" msgid "Add Folders…" msgstr "Dodaj foldery…" msgid "Add folders…" msgstr "Dodaj foldery…" msgid "Add Files…" msgstr "Dodaj pliki…" msgid "Add files…" msgstr "Dodaj pliki…" msgid "Add Wildcard…" msgstr "Dodaj wieloznacznik…" 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) 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" msgid "Show in Explorer" msgstr "Pokaż w Eksploratorze" msgid "Show in Folder" msgstr "Pokaż w folderze" msgid "Paths" msgstr "Ścieżki" msgid "Excluded paths" msgstr "Wykluczone ścieżki" msgid "Advanced extraction settings" msgstr "Zaawansowane ustawienia wyodrębniania" msgid "Extract notes for translators from:" msgstr "Wyodrębnij informacje dla tłumaczy z:" msgid "Comments prefixed with:" msgstr "Komentarzy z prefiksem:" msgid "All comments" msgstr "Wszystkich komentarzy" msgid "Additional xgettext flags:" msgstr "Dodatkowe flagi Xgettext:" msgid "Additional keywords" msgstr "Dodatkowe słowa kluczowe" msgid "Name of the project the translation is for" msgstr "Nazwa dla projektu tłumaczenia" msgid "Team name and email address or URL" msgstr "Nazwa grupy i adres e-mail lub adres URL" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "np. nplurals=2; plural=(n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (zalecane)" 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." msgid "Placeholders correctness" msgstr "Prawidłowość symboli zastępczych" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "W tłumaczeniu brakuje symbolu zastępczego \"%s\"." #, 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." msgid "Plural form translations" msgstr "Tłumaczenia form liczb mnogic" msgid "Not all plural forms are translated." msgstr "Nie wszystkie formy liczby mnogiej są przetłumaczone." msgid "Inconsistent upper/lower case" msgstr "Niespójne wielkie/małe litery" msgid "The translation should start as a sentence." msgstr "Tłumaczenie powinno się zaczynać jak zdanie." msgid "The translation should start with a lowercase character." msgstr "Tłumaczenie powinno zacząć się małą literą." msgid "Inconsistent whitespace" msgstr "Niespójne spacje" msgid "The translation doesn’t start with a space." msgstr "Tłumaczenie nie zaczyna się od spacji." 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." msgid "The translation is missing a newline at the end." msgstr "W tłumaczeniu brakuje nowej linii na końcu." 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." msgid "The translation is missing a space at the end." msgstr "W tłumaczeniu brakuje spacji na końcu." 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." msgid "Punctuation checks" msgstr "Sprawdzanie interpunkcji" #, c-format msgid "The translation should end with “%s”." msgstr "Tłumaczenie powinno kończyć się \"%s\"." #, c-format msgid "The translation should not end with “%s”." msgstr "Tłumaczenie nie powinno kończyć się \"%s\"." #, 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\"." msgid "Cloud" msgstr "Chmura" msgid "Clear Menu" msgstr "Wyczyść Menu" msgid "Clear menu" msgstr "Wyczyść menu" msgid "Comment:" msgstr "Komentarz:" msgid "Update" msgstr "Aktualizuj" msgid "&Delete" msgstr "&Usuń" msgid "Delete the comment" msgstr "Usuń komentarz" msgid "Edit project" msgstr "Edytuj projekt" msgid "Project name:" msgstr "Nazwa projektu:" msgid "Browse" msgstr "Przeglądaj" msgid "Add directory to the list" msgstr "Dodaj katalog do listy" msgid "OK" msgstr "OK" msgid "&File" msgstr "&Plik" msgid "&New…" msgstr "&Nowy…" msgid "New from &POT/PO file…" msgstr "Nowy z pliku &POT/PO…" msgid "New From &POT/PO File…" msgstr "Nowy z pliku &POT/PO…" msgid "&Open…" msgstr "&Otwórz…" msgid "Open Recent" msgstr "Ostatnio otwierane" msgid "Open recent" msgstr "Otwórz ostatnie" msgid "Open cloud translation…" msgstr "Otwórz tłumaczenie w chmurze…" msgid "Open Cloud Translation…" msgstr "Otwórz łumaczenie w chmurze…" msgid "&Start window" msgstr "&Uruchom okno" msgid "&Start Window" msgstr "&Uruchom okno" msgid "Catalogs &manager" msgstr "&Menedżer pakietów" msgid "Catalogs &Manager" msgstr "&Menedżer pakietów" msgid "&Close" msgstr "&Zamknij" msgid "&Save" msgstr "&Zapisz" msgid "Save &as…" msgstr "Zapisz j&ako…" msgid "Save &As…" msgstr "Zapisz j&ako…" msgid "Compile to MO…" msgstr "Skompiluj do MO…" msgid "E&xport to HTML…" msgstr "W&yeksportuj do HTML…" msgid "Check for updates…" msgstr "Sprawdź dostępność aktualizacji…" msgid "Settings…" msgstr "Ustawienia…" msgid "&Preferences" msgstr "&Ustawienia" msgid "E&xit" msgstr "&Zakończ" msgid "Quit" msgstr "Wyjdź" msgid "Copy from singular" msgstr "Skopiuj z liczby pojedynczej" msgid "Copy From Singular" msgstr "Skopiuj z liczby pojedynczej" msgid "Translation needs &work" msgstr "Tłumaczenie &wymagające pracy" msgid "Translation Needs &Work" msgstr "Tłumaczenie &wymagające pracy" msgid "Edit &comment" msgstr "Edytuj &komentarz" msgid "Edit &Comment" msgstr "Edytuj &komentarz" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "Podpowiedzi" msgid "&Find…" msgstr "Znajdź…" msgid "Replace…" msgstr "Zamień…" msgid "Find next" msgstr "Znajdź następne" msgid "Find previous" msgstr "Znajdź poprzednie" msgid "Find and Replace…" msgstr "Znajdź i zamień…" msgid "Find Next" msgstr "Znajdź następne" msgid "Find Previous" msgstr "Znajdź poprzednie" msgid "Show string &ID" msgstr "Pokaż &identyfikator ciągu" msgid "Show String &ID" msgstr "Pokaż ciąg &identyfikator" msgid "Show warnings" msgstr "Pokaż ostrzeżenia" msgid "Show Warnings" msgstr "Pokaż ostrzeżenia" msgid "Sort by &file order" msgstr "Sortuj wg &nazw plików" msgid "Sort by &File Order" msgstr "Sortuj wg &nazw plików" msgid "Sort by &source" msgstr "Sortuj wg &źródła" msgid "Sort by &Source" msgstr "Sortuj wg &źródła" msgid "Sort by &translation" msgstr "Sortuj wg &tłumaczenia" msgid "Sort by &Translation" msgstr "Sortuj wg &tłumaczenia" msgid "&Group by context" msgstr "&Grupuj wg kontekstu" msgid "&Group By Context" msgstr "&Grupuj wg kontekstu" msgid "Entries with errors first" msgstr "Błędne na górze" msgid "Entries with Errors First" msgstr "Błędne na górze" msgid "&Untranslated entries first" msgstr "&Nieprzetłumaczone na górze" msgid "&Untranslated Entries First" msgstr "&Nieprzetłumaczone na górze" msgid "&Show code occurrences" msgstr "&Pokaż wystąpienia kodu" msgid "&Show Code Occurrences" msgstr "&Pokaż wystąpienia kodu" msgid "Show sidebar" msgstr "Pokaż pasek boczny" msgid "Show status bar" msgstr "Pokaż pasek stanu" msgid "&Translation" msgstr "&Tłumaczenie" msgid "&Update from source code" msgstr "Zaktualizuj z kodu źródłowego" msgid "&Update from Source Code" msgstr "Zaktualizuj z kodu źródłowego" msgid "Update from &POT file…" msgstr "Aktualizuj z pliku &POT…" msgid "Update from &POT File…" msgstr "Aktualizuj z pliku &POT…" msgid "Sync with Crowdin" msgstr "Synchronizuj z Crowdin" msgid "Pre-&translate…" msgstr "Wstępnie prze&tłumacz…" msgid "&Validate translations" msgstr "&Weryfikuj tłumaczenia" msgid "&Validate Translations" msgstr "&Weryfikuj tłumaczenie" msgid "Remove Same-as-Source Translations" msgstr "Usuń tłumaczenia takie same jak tekst źródłowy" msgid "&Purge deleted translations" msgstr "&Wyczyść usunięte tłumaczenia" msgid "&Purge Deleted Translations" msgstr "&Wyczyść usunięte tłumaczenia" msgid "&Properties…" msgstr "&Właściwości…" msgid "&Go" msgstr "Nawi&gacja" msgid "&Done and next" msgstr "&Zakończ i przejdź do następnego" msgid "&Done and Next" msgstr "&Zakończ i przejdź do następnego" msgid "Previously edited" msgstr "Poprzednio edytowane" msgid "Previously Edited" msgstr "Poprzednio edytowane" msgid "&Previous translation" msgstr "&Poprzednie tłumaczenie" msgid "&Previous Translation" msgstr "&Poprzednie tłumaczenie" msgid "&Next translation" msgstr "&Następne tłumaczenie" msgid "&Next Translation" msgstr "&Następne tłumaczenie" msgid "P&revious unfinished" msgstr "Pop&rzednie nieukończone" msgid "P&revious Unfinished" msgstr "Pop&rzednie nieukończone" msgid "Ne&xt unfinished" msgstr "&Następne nieukończone" msgid "Ne&xt Unfinished" msgstr "&Następne nieukończone" msgid "Previous plural form" msgstr "Poprzednia forma liczby mnogiej" msgid "Previous Plural Form" msgstr "Poprzednia forma liczby mnogiej" msgid "Next plural form" msgstr "Następna forma liczby mnogiej" msgid "Next Plural Form" msgstr "Następna forma liczby mnogiej" msgid "&Online help" msgstr "Pomoc &online" msgid "&Online Help" msgstr "Pomoc &online" msgid "&GNU gettext manual" msgstr "Dokumentacja &GNU gettext" msgid "&GNU gettext Manual" msgstr "Dokumentacja &GNU gettext" msgid "&About Poedit" msgstr "&O Poedit" msgid "&About" msgstr "&O programie" msgid "Extractor setup" msgstr "Ustawienia wyodrębniania" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Lista rozszerzeń rozdzielonych średnikami, np. *.cpp;*.h:" msgid "Invocation:" msgstr "Wywołanie:" msgid "Command to extract translations:" msgstr "Polecenie do wyodrębnienia tłumaczenia:" 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)." msgid "An item in keywords list:" msgstr "Element na liście słów kluczowych:" 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." msgid "An item in input files list:" msgstr "Element na liście plików wejściowych:" #, 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." msgid "Source code charset:" msgstr "Kodowanie źródła:" #, 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." msgid "Translation Properties" msgstr "Właściwości tłumaczenia" msgid "Project name and version:" msgstr "Nazwa projektu i wersja:" msgid "Language team:" msgstr "Grupa tłumaczeniowa:" msgid "Plural forms:" msgstr "Formy liczby mnogiej:" msgid "Use default rules for this language" msgstr "Użyj domyślnych reguł dla tego języka" msgid "Use custom expression" msgstr "Użyj wyrażenia własnego" msgid "Learn about plural forms" msgstr "Informacje o formach liczby mnogiej" msgid "Charset:" msgstr "Kodowanie:" msgid "Advanced Extraction Settings…" msgstr "Zaawansowane ustawienia wyodrębniania…" msgid "Advanced extraction settings…" msgstr "Zaawansowane ustawienia wyodrębniania…" msgid "Translation properties" msgstr "Właściwości tłumaczenia" msgid "Sources Paths" msgstr "Ścieżki źródeł" msgid "Sources paths" msgstr "Ścieżki źródeł" msgid "Extract text from source files in the following directories:" msgstr "Wyodrębniaj tekst z plików źródłowych do następujących katalogów:" msgid "Base path:" msgstr "Ścieżka podstawowa:" msgid "Sources Keywords" msgstr "Źródłowe słowa kluczowe" msgid "Sources keywords" msgstr "Źródła słów kluczowych" 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):" msgid "Also use default keywords for supported languages" msgstr "Użyj także domyślnych słów kluczowych z obsługiwanych języków" msgid "Learn about gettext keywords" msgstr "Dowiedz się więcej o słowach kluczowych gettext" msgid "Update summary" msgstr "Podsumowanie aktualizacji" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" "Te ciągi zostały znalezione w źródłach, ale nie były w pliku.\n" "Poedit doda je teraz do pliku." msgid "New strings" msgstr "Nowe teksty" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" "Te ciągi nie są już w kodzie źródłowym.\n" "Poedit usunie je teraz z pliku." msgid "Obsolete strings" msgstr "Nieaktualne teksty" msgid "(0 new, 0 obsolete)" msgstr "(0 nowych, 0 nieaktualnych)" msgid "Open" msgstr "" msgid "Open file" msgstr "Otwórz plik" msgid "Save file" msgstr "Zapisz plik" msgid "Validate" msgstr "Zweryfikuj" msgid "Check for errors in the translation" msgstr "Sprawdza czy w tłumaczeniu występują błędy" msgid "Update from code" msgstr "Aktualizuj z kodu" msgid "Update from Code" msgstr "Aktualizuj z kodu" msgid "Update from source code" msgstr "Aktualizuj ze źródeł" msgid "Sidebar" msgstr "Pasek boczny" 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. msgid "Previous source text" msgstr "Poprzedni tekst źródłowy" 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." msgid "Notes for translators" msgstr "Notatki dla tłumaczy" msgid "Comment" msgstr "Komentarz" msgid "Add comment" msgstr "Dodaj komentarz" msgid "Add Comment" msgstr "Dodaj komentarz" msgid "Delete From Translation Memory" msgstr "Usuń z pamięci tłumaczeniowej" msgid "Delete from translation memory" msgstr "Usuń z pamięci tłumaczeniowej" msgid "Translation suggestions" msgstr "Sugestie tłumaczenia" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). 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). msgid "No Matches Found" msgstr "Nie znaleziono odpowiedników" msgid "This string was found in Poedit’s translation memory." msgstr "Ten tekst został znaleziony w pamięci tłumaczeniowej programu Poedit." 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." 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." msgid "The TMX file is malformed." msgstr "Plik TMX jest uszkodzony." msgid "No translations were found in the TMX file." msgstr "Nie znaleziono tłumaczeń w pliku TMX." #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Baza danych pamięci tłumaczeniowej jest uszkodzona: %s (%d)." #, c-format msgid "Translation memory error: %s (%d)." msgstr "Błąd pamięci tłumaczeniowej: %s (%d)." msgid "Cannot create temporary directory." msgstr "Nie można utworzyć katalogu tymczasowego." msgid "There are no translations. That’s unusual." msgstr "Nie ma tłumaczeń. To się rzadko zdarza." msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "Translators typically use PO template files (POTs) prepared for them by the " "developer." msgstr "" "W systemie Gettext elementy do tłumaczenia nie są dodawane ręcznie, ale są " "automatycznie\n" "wyodrębniane z kodu źródłowego. Dzięki temu są zawsze aktualne i dokładne.\n" "Tłumacze zazwyczaj używają szablonów plików PO (POT) przygotowanych dla nich " "przez autora." msgid "(Learn more about GNU gettext)" msgstr "(Dowiedz się więcej o GNU gettext)" 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:" msgid "Update from POT" msgstr "Aktualizuj z pliku POT" msgid "Take translatable strings from an existing POT template." msgstr "Użyj tekstów z istniejącego szablonu POT." 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:" msgid "Extract from sources" msgstr "Wyodrębnij ze źródeł" 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 #, c-format msgid "Version %s" msgstr "Wersja %s" msgid "Create new" msgstr "Utwórz nowy" msgid "Create new translation from POT template." msgstr "Utwórz nowe tłumaczenie z szablonu POT." msgid "Browse files" msgstr "Przeglądaj pliki" msgid "Open and edit translation files." msgstr "Otwórz i edytuj pliki tłumaczeń." msgid "Translate cloud project" msgstr "Przetłumacz projekt w chmurze" msgid "Collaborate with other people online." msgstr "Współpracuj z innymi osobami w sieci." msgid "Recent files" msgstr "Ostatnie pliki" msgid "Sync" msgstr "Synchronizuj" 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") #, 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. #, c-format msgid "%s Preferences" msgstr "Ustawienia %s" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "Usługi" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "Ukryj %s" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "Ukryj pozostałe" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "Pokaż wszystkie" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "Zamknij %s" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "Ustawienia…" msgid "Preferences..." msgstr "Preferencje..." #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "Ostatnie" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "Częste" msgid "&Apply" msgstr "&Zatwierdź" msgid "Apply" msgstr "Zatwierdź" msgid "&Back" msgstr "&Wstecz" msgid "Back" msgstr "Wstecz" msgid "&Cancel" msgstr "&Anuluj" msgid "&Clear" msgstr "&Wyczyść" msgid "Clear" msgstr "Wyczyść" msgid "Copy" msgstr "Kopiuj" msgid "Cu&t" msgstr "Wy&tnij" msgid "Cut" msgstr "Wytnij" msgid "Edit" msgstr "Edytuj" msgid "&Quit" msgstr "&Wyjdź" msgid "Help" msgstr "Pomoc" msgid "&New" msgstr "&Nowy" msgid "New" msgstr "Nowy" msgid "&No" msgstr "&Nie" msgid "No" msgstr "Nie" msgid "&OK" msgstr "&OK" msgid "Open…" msgstr "Otwórz…" msgid "&Open..." msgstr "&Otwórz..." msgid "Open..." msgstr "Otwórz..." msgid "&Paste" msgstr "&Wklej" msgid "Paste" msgstr "Wklej" msgid "Preferences" msgstr "Preferencje" msgid "&Redo" msgstr "&Ponów" msgid "Refresh" msgstr "Odśwież" msgid "&Save as" msgstr "Zapi&sz jako" msgid "Save as" msgstr "Zapisz jako" msgid "Select &All" msgstr "Zaznacz &wszystko" msgid "Select All" msgstr "Zaznacz wszystko" msgid "&Undo" msgstr "&Cofnij" msgid "&Yes" msgstr "&Tak" msgid "Yes" msgstr "Tak" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "Strzałka w górę" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "Strzałka w dół" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "Lewo" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "Prawo" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "shift" poedit-3.5/locales/pl.mo0000644000175100001770000017066114664354143012210 00000000000000|+: : :&:?:<S::J:g: V;`; o;y; ;;;;;;;;;;;;;;<<<0<B<H<M<U<]<o<<< < <<<< <<<<==0=L=R=X=a=g=p== = = ====>>7>N>e>k>p>>>>>> ? ???'?0? 4? @? L?Y? h?t? ? ?? ?? ???@@&@F@c@@ @ @1@@'@A.A HASA7YA6AA)AB B]"BB<BDB$C:C ACNCC C"CD+"D)ND xDDDDDDDDEE#4EXEmE|E EE EEEEEE%EF +FLFTF]FuF FF/F FkFXG]GpGGGG-G1G.H GHRH)iHH HYHI!I&I9ILIaIeI|IIIIIII;J CJ'PJ^xJLJ?$K dK rKK*KKK"K5K.LILdLjL}L L L L L LLLLLLLfMlMMuM(N?NRN"dNN NNN N NNN0N'OAO#VO<zO"OO OO*P03P!dP'PPPP(PTQ fQtQ yQ QQQQQ Q Q Q RR!R0RJRRRcR lRxR RRR R RRRRRRSz/TT TTT TT U2(U[UuU|UUU UU U U V!V&V;^D^Y^n^^^._4_J_=P__1__n_E[```;` ` aa@,amacb,#c,Pc}c cc2c*c ddwdj$e eeee%ee ff3fEfWf qffffffff8f g gg$g ,g 8g DgRg"Yg"|gg g gg g(ghhz'hhhhh h h h hh h i i i ,i 8iCi^ioi"iiii i ij jj$j -j:jTjdjtj j jjjj jjj!k *k8k@kHkQk Ykgkkkkkk k k kk ll.lBlRlgl|lmm 4m@mOmbm smm mmKmmn n%n:nMncn1nn n nn=ioo'p,p(>pgp op}p+pp p8p" q/q@qrCr8brrs8*t1ctRtctQLuu'u:ulvPv-vCwALwKw0w. x:x!x)x-y+Cy8oyCyuy,bzLz;z]{v{Z{gW|J|c }[n}o}:~7~m_[HN^Xp ف72("[~~łqDɃRVj o ȄЄӄ ڄ"$-F_p<Ѕ #$@eˆ#V cz ч. ;GPhHl5m7Y 3aω16;?\.a ͊ 1J!Z9|ǍQ֍&(O. 8׏ ɐ ֐  ##Cgo u ԑ  %=B F T b nz Β!!%-5= ERl ֓ 6Nfmr$ϔ +7GMS Yeu  ƕ֕ 2L f)s&)Ė  E1w#|(%ɗ 5982r2ؘߘ_UAsI/ /;M +"0:S>͛ ! :E ]%~&/˜&" 6@Ofu'") 4 >IatB Ɵ!3$:X )ؠ #h2š" (I ^  J !u"Y7 * 7C<X%2$$: _iΥݥ u)Ŧ.Kz)ا$4KB_'بI*Ju:A.0;_+תfj{ӫ  0 >L^p ¬ ֬&%EknPXqǯ@ &GMj  Ұް9$Ns2̱##8PoEt;ֲ%Aij+6b  ´  (5K05M eq;ѶZ h1'ӷ#7(W*g #ƹ! +8K^o Ǻ ǻNѻ 11$cM anGսC*S~3g&3s2  +7Ws  #N.} 3*FN`r "^p   #1Ue+%  -4EYw -AT+q  & FS!e'<Ti"!;]oS ]r54 H S_QW . 9J,`5 ,(&;4NN? 7/^ tl`"B&e3[H(LIPd-(k $x)-/2%IX*)WT?~kMbVO ]HUr.v/> ] ~:>.)mv ' , ?J(_60H bod+2;!n%/)sG  "&!6Xkp@x X<PoDB7S "/14f),&>CIYu'45nCv#=ld B@Twa QjqO 91B)aT'ZSFQYu>"/VJZsG6*[ar`^;XyVb?' <IL:x%AMZ\W88O,*d0)i{J-yK|]:c%}oo0][-Pg6YS&r(\p@X(tM?iE=eD"OU|53 w  fj,#32H 4[ pk {qke;mpgl16U85:`, +Y^L9$qz2fGu(A7N4!d0DNt{F<x_+7vX)nKG+>&9m3 LeUIN Iy E"nsk/<W>PhrVvT]cQmuR$bjD !_@xEl%WK-_7MCwbz/|gcAB` zh~?SC^*tf=\h!H'P#RiF&;$H1~.2 RsJo}.} .~ (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd AccountAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add accountAdd 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 languagesAlt+Always 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 errorCrowdin is an online localization management platform and collaborative translation tool.Ctrl+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 againDownDownloading 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:EnterEnter 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 loading translation file “%s”.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export errorExport 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…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)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport from TMX…Import translation files…Importing translation memory from “%s” 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 CrowdinLeftLine %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 translations were found in the TMX file.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKObsolete stringsOneOnly 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 translation templateOpen...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 translationsQuitQuit %sReading file content failed with the following error: %sRecentRecent 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 FinderReviewRightSaveSave &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 languageServicesSet LanguageSet languageSettingsSettings…Shift+Show AllShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow summary after updating filesShow 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.These strings are no longer in the source code. Poedit will remove them from the file now.These strings were found in the sources but were not in the file. Poedit will add them to the file now.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 entries in the file are probably incorrect.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 errorUntransUpUpdateUpdate 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 the file failed. Click on 'Details >>' for details.Updating 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown 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: 2024-08-30 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ówW 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 %s&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(0 nowych, 0 nieaktualnych)(Dowiedz się więcej o GNU gettext)(Nowe: %i, nieaktualne: %i)(Użyj domyślnego języka)(nie zalogowano)(wymaga Windows 8 lub nowszego)« &PoprzednieInformacje o %sKontoKontaDodajDodaj KontoDodaj komentarzDodaj pliki…Dodaj foldery…Dodaj ProjektDodaj wieloznacznik…Dodaj kontoDodaj 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ówAlt+Uaktywniaj pole wprowadzania tekstuElement na liście plików wejściowych:Element na liście słów kluczowych:WyglądZatwierdźCzy 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 plik tłumaczeniaKonfiguruj 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 jest internetową platformą zarządzania lokalizacją i narzędziem do wspólnego tłumaczenia.Ctrl+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ń.Katalogi:Czy chcesz usunąć projekt "%s"?Czy chcesz ponownie załadować plik z dysku? Twoje niezapisane zmiany w Poedit zostaną utracone, jeśli to zrobisz.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 ponownieStrzałka w dółPobieranie 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:EnterTryb 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 ładowania pliku tłumaczenia “%s”.Błąd podczas otwierania plikuBłąd zapisu plikuBłąd podczas ładowania pliku XLIFF: %sBłędyWszystkoWykluczone ścieżkiEksportuj do TMX…Eksportuj jako…Błąd eksportuWyeksportuj do HTML…Eksportuj do TMX…Eksportowanie 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…Ustawienia wyodrębnianiaWyodrębnianieBłąd polecenia: %sKomunikacja z procesem programu Poedit nie powiodła się.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ą.Finalizowanie…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)CzęsteGNU gettextUstawienia głównePliki HTMLPomocUkryj %sUkryj pozostałeUkryj 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ń…Błąd importowaniaImportuj z TMX…Importuj pliki tłumaczeń…Importowanie pamięci tłumaczeniowej z "%s" 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:Pliki 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 CrowdinLewoWiersz %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.Zdeformowany 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…Nowy z pliku &POT/PO…Nowe tekstyNastę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 tłumaczeń w pliku TMX.Nie znaleziono informacji o użyciuNie wszystkie formy liczby mnogiej są przetłumaczone.Brak autoryzacji, zaloguj się ponownie.Notatki dla tłumaczyOKNieaktualne tekstyJedenWłą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 szablon tłumaczeniaOtwó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źZamknij %sWczytywanie zawartości pliku nie powiodło się z następującym błędem: %sOstatnieOstatnie 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łaZamień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 sprawdzeniaPrawoZapiszZapisz j&ako…Zapisz j&ako…Zapisz mimo toZapisz mimo toZapisz jakoZapisz jako…Zapisz zmianyZapisz plikZrzuty ekranu:Zaznacz &wszystkoZaznacz wszystkoWybierz pliki TMX do zaimportowaniaWybierz katalogWybierz plik tłumaczeniaWybierz pliki tłumaczeń do zaimportowaniaWybierz szablon tłumaczeniaWybierz preferowany język interfejsuUsługiWybierz językWybierz językUstawieniaUstawienia…Shift+Pokaż wszystkiePokaż 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ż podsumowanie po aktualizacji plikówPokaż 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 wyszukaniaZamiennikiPodpowiedziPodpowiedzi 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.Zmiany wprowadzone przez inną aplikację zostaną utracone, jeśli zapiszesz.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łumaczenia. Został on zapisany zamiast tego w UTF-8 i ustawienie zostało odpowiednio zmodyfikowane.Plik został zmodyfikowany. 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 było otworzyć 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.Te ciągi nie są już w kodzie źródłowym. Poedit usunie je teraz z pliku.Te ciągi zostały znalezione w źródłach, ale nie były w pliku. Poedit doda je teraz do pliku.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łceniaW systemie Gettext elementy do tłumaczenia nie są dodawane ręcznie, ale są automatycznie wyodrębniane z kodu źródłowego. Dzięki temu są zawsze aktualne i dokładne. Tłumacze zazwyczaj używają szablonów plików PO (POT) przygotowanych dla nich przez autora.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łumaczeniaWpisy tłumaczenia w pliku są prawdopodobnie niepoprawne.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)CofnijWystąpił nieobsługiwany wyjątek: %sUnix (zalecane) Nieznany błąd Crowdin.Nieznany błądNieprzetłumaczoneStrzałka w góręAktualizujAktualizuj 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 pliku nie powiodła się. Kliknij na 'Szczegóły >>', aby uzyskać więcej informacji.Aktualizowanie 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 %sOczekiwanie na uwierzytelnienie…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ń XLIFFTakMoż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 nazwiskoZmiany zostaną utracone, jeśli nie zostały zapisane.Twoje imię i nazwisko oraz adres e-mail użyte zostaną wyłącznie w celu ustawienia nagłówka Last-Translator w plikach GNU gettext.ZeroZoomaltWymaga pracyctrlnie usuwaj plików tymczasowych (dla debugowania)np. nplurals=2; plural=(n > 1);wskaż rozmyte dopasowania w ramach plikuprzejdź do elementu w podanym numerze liniiwłącz obsługę protokołu poedit://wstępnie przetłumacz korzystając z pamięci tłumaczeniowejshiftnieznany języknieobsługiwana wersja (%s)twojmail@domena.com"%s" nie jest prawidłowym plikiem POT.poedit-3.5/locales/ca.po0000644000175100001770000020171314664354153012155 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "Amaga aquesta notificació" msgid "Don’t Show Again" msgstr "No tornis a mostrar-ho" msgid "Don’t show again" msgstr "No tornis a mostrar-ho" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(Noves: %i, obsoletes: %i)" msgid "Collecting source files…" msgstr "S’estan recopilant els fitxers de codi font…" msgid "Extracting translatable strings…" msgstr "S’estan extraient les cadenes traduibles…" msgid "Failed to load file with extracted translations." msgstr "No s’ha pogut carregar el fitxer amb les traduccions extretes." msgid "Merging differences…" msgstr "S’estan fusionant les diferències…" msgid "Updating translations" msgstr "S’estan actualitzant les traduccions" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "No s’ha pogut obrir el fitxer «%s»." msgid "Invalid file" msgstr "El fitxer no és vàlid" #, c-format msgid "Malformed header: “%s”" msgstr "El format de la capçalera és incorrecte: «%s»" msgid "PO Translation Files" msgstr "Fitxers de traducció PO" msgid "POT Translation Templates" msgstr "Plantilles de traducció .POT" msgid "XLIFF Translation Files" msgstr "Fitxers de traducció XLIFF" msgid "JSON Translation Files" msgstr "Fitxers de traducció JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "Fitxers de traducció del Flutter" msgid "All Translation Files" msgstr "Tots els fitxers de traducció" msgid "The file is in a format not recognized by Poedit." msgstr "El fitxer és en un format que el Poedit no reconeix." 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." #, 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" #, 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." #, c-format msgid "Couldn’t save file %s." msgstr "No s’ha pogut desar el fitxer %s." msgid "Screenshots:" msgstr "Captures de pantalla:" #, 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." #, 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)." 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" 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" msgid "Couldn’t load the file, it is probably damaged." msgstr "No s’ha pogut carregar el fitxer; és probable que estigui malmès." 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." 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)." #, 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." msgid "Error saving file" msgstr "S’ha produït un error en desar el fitxer" #, c-format msgid "“%s” is not a valid POT file." msgstr "«%s» no és un fitxer POT vàlid." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "S’ha produït un error en carregar el fitxer XLIFF: %s" #, 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 msgid "Broken markup in translation string." msgstr "Etiquetatge incorrecte en la cadena de la traducció." msgid "(Use default language)" msgstr "(Utilitza la llengua per defecte)" msgid "Language selection" msgstr "Selecció de llengua" msgid "Select your preferred language" msgstr "Trieu la vostra llengua preferida" msgid "You must restart Poedit for this change to take effect." msgstr "Heu de reiniciar el Poedit perquè aquest canvi tingui efecte." msgid "Add Account" msgstr "Afegeix un compte" msgid "Add account" msgstr "Afegeix un compte" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "Més informació quant al %s" msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" msgid "How does cloud sync work?" msgstr "Com funciona la sincronització amb el núvol?" msgid "Account" msgstr "Compte" msgid "(not signed in)" msgstr "" msgid "File" msgstr "Fitxer" msgid "Open cloud translation" msgstr "Obre una traducció al núvol" msgid "Manage accounts" msgstr "Gestiona els comptes" msgid "Project:" msgstr "Projecte:" msgid "Language:" msgstr "Llengua:" msgid "Sign in to Cloud Account" msgstr "" msgid "Sign in to cloud account" msgstr "" msgid "No translation projects listed in your account." msgstr "No hi ha cap projecte de traducció enumerat al vostre compte." 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" #, c-format msgid "Sign in to %s" msgstr "" msgid "Syncing" msgstr "Sincronització" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s…" msgstr "" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s failed." msgstr "" msgid "Syncing error" msgstr "S’ha produït un error de sincronització" msgid "Add" msgstr "Afegeix" msgid "Unknown Crowdin error." msgstr "S’ha produït un error desconegut al Crowdin." msgid "Not authorized, please sign in again." msgstr "No s’ha autoritzat l’acció. Inicieu una sessió de nou." msgid "Downloading translations is disabled in this project." msgstr "Aquest projecte ha inhabilitat les baixades de traduccions." msgid "Sign In" msgstr "Inicia la sessió" msgid "Sign in" msgstr "Inicia la sessió" msgid "Sign Out" msgstr "Finalitza la sessió" msgid "Sign out" msgstr "Finalitza la sessió" msgid "Learn more about Crowdin" msgstr "Més informació sobre el Crowdin" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" msgid "Waiting for authentication…" msgstr "S’està esperant l’autenticació…" msgid "Updating user information…" msgstr "S’està actualitzant la informació de l’usuari…" msgid "Sign in to Crowdin" msgstr "Inicia la sessió al Crowdin" msgid "Syncing with Crowdin failed." msgstr "La sincronització amb el Crowdin ha fallat." msgid "Crowdin error" msgstr "Error del Crowdin" msgid "Uploading translations…" msgstr "S’estan pujant les traduccions…" msgid "&Copy" msgstr "&Copia" msgid "Learn more" msgstr "Més informació" msgid "&Help" msgstr "&Ajuda" msgid "MO files can’t be directly edited in Poedit." msgstr "Els fitxers MO no es poden editar directament al Poedit." msgid "Error opening file" msgstr "S’ha produït un error en obrir el fitxer" 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à." msgid "don’t delete temporary files (for debugging)" msgstr "no suprimeixis els fitxers temporals (per a la depuració)" msgid "handle a poedit:// URI" msgstr "gestiona un URI poedit://" msgid "go to item at given line number" msgstr "vés a l’element al número de línia donat" msgid "Failed to communicate with Poedit process." msgstr "Ha fallat la comunicació amb el procès del Poedit." #, c-format msgid "Unhandled exception occurred: %s" msgstr "S’ha produït una excepció no controlada: %s" msgid "Select translation template" msgstr "Seleccioneu la plantilla de traducció" msgid "Select translation file" msgstr "Seleccioneu el fitxer de traducció" msgid "Poedit is an easy to use translation editor." msgstr "El Poedit és un editor de traduccions fàcil d’utilitzar." 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." #, c-format msgid "File “%s” is not a translation file." msgstr "El fitxer «%s» no és de traducció." #, c-format msgid "File “%s” doesn’t exist." msgstr "El fitxer «%s» no existeix." 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". #, 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." msgid "Install" msgstr "Instal·la" #, c-format msgid "The file “%s” has been changed by another application." msgstr "S’ha modificat el fitxer «%s» amb una altra aplicació." msgid "Reload file" msgstr "Torna a carregar el fitxer" 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." msgid "Ignore" msgstr "Ignora" msgid "Reload File" msgstr "Torna a carregar el fitxer" msgid "The file has been modified. Do you want to save changes?" msgstr "S’ha modificat el fitxer. Voleu desar els canvis?" msgid "Save changes" msgstr "Desa els canvis" msgid "Your changes will be lost if you don’t save them." msgstr "Els canvis es perdran si no els deseu." msgid "Save" msgstr "Desa" msgid "Do&n’t save" msgstr "&No ho desis" msgid "Don’t Save" msgstr "No ho desis" 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." msgid "Cancel" msgstr "Cancel·la" msgid "Save Anyway" msgstr "Desa igualment" msgid "Save anyway" msgstr "Desa igualment" msgid "Save as…" msgstr "Anomena i desa…" msgid "Compile to…" msgstr "Compila com a…" msgid "Compiled Translation Files" msgstr "Fitxers de traducció compilats" msgid "Export to HTML…" msgstr "Exporta com a HTML…" msgid "HTML Files" msgstr "Fitxers HTML" #, c-format msgid "In: %s" msgstr "A: %s" msgid "Source code not available." msgstr "El codi font no és disponible." msgid "Updating failed" msgstr "L’actualització ha fallat" 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." msgid "Permission denied." msgstr "S’hi ha denegat el permís." 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. 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. 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." msgid "Translation entries in the file are probably incorrect." msgstr "Les entrades de traducció del fitxer probablement són incorrectes." msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "" "Ha fallat l’actualització del fitxer. Feu clic a «Detalls» per a obtenir-ne " "més detalls." msgid "Open translation template" msgstr "Obre una plantilla de traducció" #, 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ó." msgid "Validation results" msgstr "Resultats de la validació" 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." msgid "The file was saved safely." msgstr "El fitxer s’ha desat amb seguretat." 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." 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." 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." 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." msgid "No problems with the translation found." msgstr "No s’ha trobat cap problema amb la traducció." #, 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." msgid "The translation is ready for use." msgstr "La traducció ja és a punt i podeu utilitzar-la." #, 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»." 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." msgid "Language of the translation isn’t set." msgstr "No s’ha establert la llengua de la traducció." msgid "Set Language" msgstr "Estableix la llengua" 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)." 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." msgid "Language of the translation is the same as source language." msgstr "La llengua de traducció es la mateixa que la de partida." msgid "Fix Language" msgstr "Corregeix l’idioma" msgid "Fix language" msgstr "Corregeix l’idioma" 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." 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" msgid "Required header Plural-Forms is missing." msgstr "Falta la capçalera necessària «Plural-Forms»." #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Hi ha un error de sintaxis a la capçalera Plural-Forms («%s»)." msgid "Fix the Header" msgstr "Corregeix la capçalera" 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". #, 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.")" msgid "Review" msgstr "Repassa" msgid "Would you like to use English for source text?" msgstr "Voleu utilitzar anglès com a text de partida?" #, 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" msgid "Load English" msgstr "Carrega l’anglès" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Traduït: %d/%d (%d %%)" #, c-format msgid "Remaining: %d" msgstr "Resten: %d" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d error" msgstr[1] "%d errors" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d entrada" msgstr[1] "%d entrades" msgid " (unsaved)" msgstr " (no desat)" msgid " (modified)" msgstr " (modificat)" #, c-format msgid "Failed to update translation memory: %s" msgstr "Ha fallat l’actualització de la memòria de traducció: %s" msgid "Remove same-as-source translations" msgstr "" msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" msgid "Keep" msgstr "Mantingues-les" msgid "Remove" msgstr "Elimina" msgid "Purge deleted translations" msgstr "Purga les traduccions suprimides" msgid "Do you want to remove all translations that are no longer used?" msgstr "Voleu suprimir totes les traduccions que ja no s’utilitzen?" 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." msgid "Purge" msgstr "Purga-les" msgid "Copy from source text" msgstr "Copia del text de partida" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "Neteja la traducció" msgid "Clear Translation" msgstr "Neteja la traducció" msgid "Edit comment" msgstr "Edita el comentari" msgid "Edit Comment" msgstr "Edita el comentari" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "Ocurrències al codi" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "Ocurrències al codi" msgid "Hide Sidebar" msgstr "Amaga la barra lateral" msgid "Show Sidebar" msgstr "Mostra la barra lateral" msgid "Hide Status Bar" msgstr "Amaga la barra d’estat" msgid "Show Status Bar" msgstr "Mostra la barra d’estat" msgid "String length in characters: translation | source" msgstr "Llargària de la cadena en caràcters: traducció | original" msgid "String length in characters" msgstr "Longitud de la cadena en caràcters" msgid "Source text" msgstr "Text de partida" msgid "Singular" msgstr "Singular" msgid "Plural" msgstr "Plural" msgid "Translation" msgstr "Traducció" msgid "Pre-translated" msgstr "Pretraduïda" 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. msgid "Needs work" msgstr "Cal revisar" msgid "" "POT files are only templates and don’t contain any translations themselves.\n" "To make a translation, create a new PO file based on the template." msgstr "" "Els fitxers POT només són plantilles i no contenen cap traducció.\n" "Per a fer una traducció, creeu un fitxer PO nou basat en la plantilla." msgid "Create new translation" msgstr "Crea una traducció nova" msgid "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 msgid "Source text ID" msgstr "Id. del text de partida" msgid "Everything" msgstr "Tot" #, c-format msgid "Form %i" msgstr "Forma %i" #, c-format msgid "Form %i (unused)" msgstr "Forma %i (no utilitzada)" msgid "Zero" msgstr "Zero" msgid "One" msgstr "Un" msgid "Two" msgstr "Dos" msgid "Other" msgstr "Altres" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, 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 #, c-format msgid "String identifier: %s" msgstr "Identificador de la cadena: %s" #, c-format msgid "%s Format" msgstr "Format %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "Format %s" #, c-format msgid "Translation — %s" msgstr "Traducció — %s" msgid "ID" msgstr "Id." #, c-format msgid "Source text — %s" msgstr "Text de partida — %s" msgid "unknown language" msgstr "idioma desconegut" #, c-format msgid "Network error: %s (%d)" msgstr "" msgid "Unknown error" msgstr "" #, c-format msgid "Failed command: %s" msgstr "Ha fallat l’ordre: %s" msgid "Failed to merge gettext catalogs." msgstr "No s’han pogut fusionar els catàlegs del gettext." msgid "Open in Editor" msgstr "Obre en l’editor" msgid "Open in editor" msgstr "Obre en l’editor" 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." msgid "No usage information" msgstr "No s'ha trobat informació sobre l'ús" #, 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" msgid "Source code not found" msgstr "No s’ha trobat el codi font" 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." msgid "File cannot be opened" msgstr "No es pot obrir el fitxer" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "El Poedit no ha pogut obrir el fitxer «%s»." msgid "Find" msgstr "Troba" msgid "Replace" msgstr "Substitueix" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "Opcions" msgid "Ignore case" msgstr "Ignora majúscules/minúscules" msgid "Wrap around" msgstr "Continua la cerca des de l’inici" msgid "Whole words only" msgstr "Només les paraules senceres" msgid "Find in source texts" msgstr "Troba als texts de partida" msgid "Find in translations" msgstr "Troba a les traduccions" msgid "Find in comments" msgstr "Cerca als comentaris" msgid "Close" msgstr "Tanca" msgid "Replace &All" msgstr "Reemplaça-ho &tot" msgid "Replace &all" msgstr "Reemplaça-ho &tot" msgid "&Replace" msgstr "&Reemplaça" msgid "< &Previous" msgstr "< &Anterior" msgid "&Next >" msgstr "&Següent >" msgid "String to find" msgstr "Cadena a trobar" msgid "Replacement string" msgstr "Cadena de substitució" #, c-format msgid "Cannot execute program: %s" msgstr "No es pot executar el programa: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "Nom o codi de llengua" msgid "Translation Language" msgstr "Llengua de la traducció" msgid "Language of the translation:" msgstr "Llengua de la traducció:" msgid "All strings" msgstr "Totes les cadenes" msgid "Couldn’t download Localazy project details." msgstr "No s’han pogut baixar els detalls del projecte al Localazy." msgid "There was an error when uploading translations to Localazy." msgstr "" msgid "Projects" msgstr "Projectes" 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." msgid "Add Project" msgstr "Afegeix un projecte" msgid "Add project" msgstr "Afegeix un projecte" msgid "Poedit - Catalogs manager" msgstr "Poedit. Gestor de catàlegs" msgid "Edit…" msgstr "Edita…" msgid "Create new translations project" msgstr "Crea un projecte de traduccions nou" msgid "Delete the project" msgstr "Suprimeix el projecte" msgid "Edit the project" msgstr "Edita el projecte" msgid "Update all" msgstr "Actualitza-ho tot" msgid "Update all catalogs in the project" msgstr "Actualitza tots els catàlegs del projecte" msgid "Total" msgstr "Total" msgid "Untrans" msgstr "No traduïdes" msgctxt "column/row header" msgid "Needs Work" msgstr "Cal revisar" msgid "Errors" msgstr "Errors" msgid "Last modified" msgstr "Darrera modificació" msgid "Select directory" msgstr "Seleccioneu la carpeta" msgid "Directories:" msgstr "Directoris:" msgid "" msgstr "" #, c-format msgid "Do you want to delete project “%s”?" msgstr "Voleu suprimir el projecte «%s»?" msgid "Delete project" msgstr "Suprimeix el projecte" msgid "Deleting the project will not delete any translation files." msgstr "Si suprimiu el projecte no es perdrà cap fitxer de traducció." msgid "Confirmation" msgstr "Confirmació" msgid "Update all catalogs in this project?" msgstr "Voleu actualitzar tots els catàlegs del projecte?" 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." msgid "Check for Updates…" msgstr "Comprova si hi ha actualitzacions…" msgid "Catalogs Manager" msgstr "Gestor de catàlegs" msgid "&Preferences…" msgstr "&Preferències…" msgid "&Edit" msgstr "&Edita" msgid "Undo" msgstr "Desfés" msgid "Redo" msgstr "Refés" msgid "Paste and Match Style" msgstr "Enganxa amb el mateix estil" msgid "Delete" msgstr "Suprimeix" msgid "Spelling and Grammar" msgstr "Ortografia i gramàtica" msgid "Show Spelling and Grammar" msgstr "Mostra l’ortografia i la gramàtica" msgid "Check Document Now" msgstr "Comprova el document ara" msgid "Check Spelling While Typing" msgstr "Comprova l’ortografia mentre s’escriu" msgid "Check Grammar With Spelling" msgstr "Comprova la gramàtica amb l’ortografia" msgid "Correct Spelling Automatically" msgstr "Corregeix l’ortografia automàticament" msgid "Substitutions" msgstr "Substitucions" msgid "Show Substitutions" msgstr "Mostra les substitucions" msgid "Smart Copy/Paste" msgstr "Copia/enganxa intel·ligentment" msgid "Smart Quotes" msgstr "Cometes tipogràfiques" msgid "Smart Dashes" msgstr "Guions intel·ligents" msgid "Smart Links" msgstr "Enllaços intel·ligents" msgid "Text Replacement" msgstr "Substitució del text" msgid "Transformations" msgstr "Transformacions" msgid "Make Upper Case" msgstr "Converteix a majúscules" msgid "Make Lower Case" msgstr "Converteix a minúscules" msgid "Capitalize" msgstr "Majúscules inicials" msgid "Speech" msgstr "Veu" msgid "Start Speaking" msgstr "Inicia la veu" msgid "Stop Speaking" msgstr "Atura la veu" msgid "&View" msgstr "&Visualitza" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item 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 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 msgid "Enter Full Screen" msgstr "Pantalla sencera" msgid "Window" msgstr "Finestra" msgid "Minimize" msgstr "Minimitza" msgid "Zoom" msgstr "Escala" msgid "Welcome to Poedit" msgstr "Benvingut/uda al Poedit" msgid "Bring All to Front" msgstr "Envia tot al capdavant" msgid "Information about the translator" msgstr "Informació sobre el traductor" msgid "Name:" msgstr "Nom:" msgid "Your Name" msgstr "El vostre nom" msgid "Email:" msgstr "Adreça electrònica:" msgid "you@example.com" msgstr "vós@exemple.cat" 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." msgid "Editing" msgstr "Edició" msgid "Automatically compile MO file when saving" msgstr "Compila el fitxer MO automàticament en desar" msgid "Show summary after updating files" msgstr "Mostra el resum després d’actualitzar els fitxers" msgid "Check spelling" msgstr "Comprova l’ortografia" msgid "Always change focus to text input field" msgstr "Canvia sempre el focus al camp d'introducció de text" 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." msgid "Appearance" msgstr "Aparença" msgid "Use custom list font:" msgstr "Lletra personalitzada per a les llistes:" msgid "Use custom text fields font:" msgstr "Lletra personalitzada per als camps de text:" 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 msgid "(requires Windows 8 or newer)" msgstr "(cal el Windows 8 o més recent)" msgid "General" msgstr "General" msgid "Use translation memory" msgstr "Utilitza la memòria de traducció" msgid "Manage…" msgstr "Gestiona…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "En actualitzar des del codi font" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "inclou-hi concordances aproximades" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "pretradueix des de l’MT" 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." msgid "Stored translations:" msgstr "Traduccions emmagatzemades:" msgid "Database size on disk:" msgstr "Mida de la base de dades al disc:" msgid "Import Translation Files…" msgstr "Importa fitxers de traducció…" msgid "Import translation files…" msgstr "Importa fitxers de traducció…" msgid "Import From TMX…" msgstr "Importa des de TMX…" msgid "Import from TMX…" msgstr "Importa des de TMX…" msgid "Export To TMX…" msgstr "Exporta com a TMX…" 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). msgid "Reset" msgstr "Reinicialitza" msgid "Select translation files to import" msgstr "Seleccioneu els fitxers de traducció que s’han d’importar" msgid "Translation Memory" msgstr "Memòria de traducció" msgid "Importing translations…" msgstr "S’estan important les traduccions…" #, c-format msgid "Error loading translation file “%s”." msgstr "S’ha produït un error en carregar el fitxer de traducció «%s»." msgid "Finalizing…" msgstr "S’està finalitzant…" msgid "Select TMX files to import" msgstr "Seleccioneu els fitxers TMX que s’han d’importar" msgid "TMX Files" msgstr "Fitxers TMX" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "Ha fallat la importació de la memòria de traducció des de «%s»." msgid "Import error" msgstr "Error d’importació" msgid "Export as…" msgstr "Exporta com a…" msgid "Exporting translations…" msgstr "S’estan exportant les traduccions…" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "Ha fallat l’exportació de la memòria de traducció cap a «%s»." msgid "Export error" msgstr "Error d’exportació" msgid "Reset translation memory" msgstr "Esborra la memòria de traduccions" msgid "Are you sure you want to reset the translation memory?" msgstr "Esteu segur que voleu reinicialitzar la memòria de traduccions?" 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. msgid "TM" msgstr "MT" 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." msgid "Custom Extractors:" msgstr "Extractors personalitzats:" msgid "Custom extractors:" msgstr "Extractors personalitzats:" msgid "GNU gettext" msgstr "GNU gettext" 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)." msgid "Delete extractor" msgstr "Suprimeix l’extractor" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "Esteu segur que voleu suprimir l’extractor «%s»?" msgid "Extractors" msgstr "Extractors" msgid "Accounts" msgstr "Comptes" msgid "Automatically check for updates" msgstr "Comprova si hi ha actualitzacions automàticament" msgid "Include beta versions" msgstr "Inclou les versions beta" 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." msgid "Updates" msgstr "Actualitzacions" 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." msgid "Line endings:" msgstr "Finals de línies:" msgid "Unix (recommended)" msgstr "Unix (recomanat)" msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "Ajusta a:" msgid "Preserve formatting of existing files" msgstr "Preserva la formatació dels fitxers existents" msgid "Advanced" msgstr "Avançades" msgid "Settings" msgstr "Paràmetres" msgid "Preparing strings…" msgstr "S’estan preparant les cadenes…" msgid "Pre-translating from translation memory…" msgstr "S’està pretraduint a partir de la memòria de traducció…" #, 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" msgid "Pre-translating…" msgstr "S’està pretraduint…" 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. msgid "Pre-translate" msgstr "Pretradueix" msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" msgid "Cannot pre-translate from unknown language." msgstr "" msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" msgid "Only fill in exact matches" msgstr "Únicament emplena les coincidències exactes" msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" msgid "Don’t mark exact matches as needing work" msgstr "No marquis les coincidències exactes com a difuses" 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." 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." #, 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." 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." msgid "No entries could be pre-translated." msgstr "No s’ha pogut pretraduir cap entrada." 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." msgid "Cancelling…" msgstr "S’està cancel·lant…" msgid "Drag Folders or Files Here" msgstr "Deixeu anar carpetes o fitxers aquí" msgid "Drag folders or files here" msgstr "Deixeu anar carpetes o fitxers aquí" msgid "Add Folders…" msgstr "Afegeix carpetes…" msgid "Add folders…" msgstr "Afegeix carpetes…" msgid "Add Files…" msgstr "Afegeix fitxers…" msgid "Add files…" msgstr "Afegeix fitxers…" msgid "Add Wildcard…" msgstr "Afegeix un comodí…" 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) 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" msgid "Show in Explorer" msgstr "Mostra a l’Explorador" msgid "Show in Folder" msgstr "Mostra a la carpeta" msgid "Paths" msgstr "Camins" msgid "Excluded paths" msgstr "Camins exclosos" msgid "Advanced extraction settings" msgstr "Paràmetres d’extracció avançats" msgid "Extract notes for translators from:" msgstr "Extreu les notes per a traductors des de:" msgid "Comments prefixed with:" msgstr "Comentaris prefixats per:" msgid "All comments" msgstr "Tots els comentaris" msgid "Additional xgettext flags:" msgstr "Senyaladors addicionals de l’xgettext:" msgid "Additional keywords" msgstr "Paraules clau addicionals" msgid "Name of the project the translation is for" msgstr "Nom del projecte pel qual és la traducció" msgid "Team name and email address or URL" msgstr "Nom de l’equip i adreça electrònica o URL" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "p. ex., nplurals=2; plural=(n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (recomanat)" 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." msgid "Placeholders correctness" msgstr "" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "" #, c-format msgid "Superfluous placeholder “%s” that isn’t in source text." msgstr "" msgid "Plural form translations" msgstr "Traduccions de formes plurals" msgid "Not all plural forms are translated." msgstr "No s’han traduït totes les formes dels plurals." msgid "Inconsistent upper/lower case" msgstr "Inconsistència de majúscules/minúscules" msgid "The translation should start as a sentence." msgstr "La traducció ha de començar com una frase." msgid "The translation should start with a lowercase character." msgstr "La traducció ha de començar amb un caràcter en minúscula." msgid "Inconsistent whitespace" msgstr "Espai en blanc inconsistent" msgid "The translation doesn’t start with a space." msgstr "La traducció no comença amb un espai." 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." msgid "The translation is missing a newline at the end." msgstr "A la traducció hi falta un salt de línia al final." 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." msgid "The translation is missing a space at the end." msgstr "A la traducció hi falta un espai al final." 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." msgid "Punctuation checks" msgstr "Comprovacions de puntuació" #, c-format msgid "The translation should end with “%s”." msgstr "La traducció ha d’acabar amb «%s»." #, c-format msgid "The translation should not end with “%s”." msgstr "La traducció no ha d’acabar amb «%s»." #, 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»." msgid "Cloud" msgstr "" msgid "Clear Menu" msgstr "Neteja el menú" msgid "Clear menu" msgstr "Neteja el menú" msgid "Comment:" msgstr "Comentari:" msgid "Update" msgstr "Actualitza" msgid "&Delete" msgstr "&Suprimeix" msgid "Delete the comment" msgstr "Suprimeix el comentari" msgid "Edit project" msgstr "Edita el projecte" msgid "Project name:" msgstr "Nom del projecte:" msgid "Browse" msgstr "Navega" msgid "Add directory to the list" msgstr "Afegeix el directori a la llista" msgid "OK" msgstr "D’acord" msgid "&File" msgstr "&Fitxer" msgid "&New…" msgstr "&Nova…" msgid "New from &POT/PO file…" msgstr "Nova a partir d’un fitxer &POT/PO…" msgid "New From &POT/PO File…" msgstr "Nova a partir d’un fitxer &POT/PO…" msgid "&Open…" msgstr "&Obre…" msgid "Open Recent" msgstr "Obre recents" msgid "Open recent" msgstr "Obre recents" msgid "Open cloud translation…" msgstr "Obre una traducció al núvol…" msgid "Open Cloud Translation…" msgstr "Obre una traducció al núvol…" msgid "&Start window" msgstr "Finestra d’&inici" msgid "&Start Window" msgstr "Finestra d’&inici" msgid "Catalogs &manager" msgstr "&Gestor de catàlegs" msgid "Catalogs &Manager" msgstr "&Gestor de catàlegs" msgid "&Close" msgstr "&Tanca" msgid "&Save" msgstr "&Desa" msgid "Save &as…" msgstr "&Anomena i desa…" msgid "Save &As…" msgstr "&Anomena i desa…" msgid "Compile to MO…" msgstr "Compila com a MO…" msgid "E&xport to HTML…" msgstr "" msgid "Check for updates…" msgstr "Comprova si hi ha actualitzacions…" msgid "Settings…" msgstr "Configuració…" msgid "&Preferences" msgstr "&Preferències" msgid "E&xit" msgstr "&Surt" msgid "Quit" msgstr "Surt" msgid "Copy from singular" msgstr "Copia del singular" msgid "Copy From Singular" msgstr "Copia del singular" msgid "Translation needs &work" msgstr "Cal &revisar la traducció" msgid "Translation Needs &Work" msgstr "Cal &revisar la traducció" msgid "Edit &comment" msgstr "&Edita el comentari" msgid "Edit &Comment" msgstr "&Edita el comentari" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "Suggeriments" msgid "&Find…" msgstr "&Cerca…" msgid "Replace…" msgstr "Reemplaça…" msgid "Find next" msgstr "Cerca el següent" msgid "Find previous" msgstr "Cerca l’anterior" msgid "Find and Replace…" msgstr "Cerca i reemplaça…" msgid "Find Next" msgstr "Cerca el següent" msgid "Find Previous" msgstr "Cerca l’anterior" msgid "Show string &ID" msgstr "Mostra l’&identificador de la cadena" msgid "Show String &ID" msgstr "Mostra l’&identificador de la cadena" msgid "Show warnings" msgstr "Mostra els advertiments" msgid "Show Warnings" msgstr "Mostra els advertiments" msgid "Sort by &file order" msgstr "&Ordena per ordre de fitxer" msgid "Sort by &File Order" msgstr "Ordena per &ordre de fitxer" msgid "Sort by &source" msgstr "Ordena per &font" msgid "Sort by &Source" msgstr "Ordena per &font" msgid "Sort by &translation" msgstr "Ordena per &traducció" msgid "Sort by &Translation" msgstr "Ordena per &traducció" msgid "&Group by context" msgstr "A&grupa pel context" msgid "&Group By Context" msgstr "A&grupa pel context" msgid "Entries with errors first" msgstr "Primer les entrades amb errors" msgid "Entries with Errors First" msgstr "Primer les entrades amb errors" msgid "&Untranslated entries first" msgstr "&Primer les entrades no traduïdes" msgid "&Untranslated Entries First" msgstr "&Primer les entrades no traduïdes" msgid "&Show code occurrences" msgstr "&Mostra ocurrències del codi" msgid "&Show Code Occurrences" msgstr "&Mostra ocurrències del codi" msgid "Show sidebar" msgstr "Mostra la barra lateral" msgid "Show status bar" msgstr "Mostra la barra d’estat" msgid "&Translation" msgstr "&Traducció" msgid "&Update from source code" msgstr "Actualitza des del codi &font" msgid "&Update from Source Code" msgstr "Actualitza des del codi &font" msgid "Update from &POT file…" msgstr "Actualitza des d’un fitxer &POT…" msgid "Update from &POT File…" msgstr "Actualitza des d’un fitxer &POT…" msgid "Sync with Crowdin" msgstr "Sincronitza amb el Crowdin" msgid "Pre-&translate…" msgstr "Pre&tradueix…" msgid "&Validate translations" msgstr "&Valida les traduccions" msgid "&Validate Translations" msgstr "&Valida les traduccions" msgid "Remove Same-as-Source Translations" msgstr "" msgid "&Purge deleted translations" msgstr "&Purga les traduccions suprimides" msgid "&Purge Deleted Translations" msgstr "&Purga les traduccions suprimides" msgid "&Properties…" msgstr "&Propietats…" msgid "&Go" msgstr "&Navega" msgid "&Done and next" msgstr "&Fet; següent" msgid "&Done and Next" msgstr "&Fet; següent" msgid "Previously edited" msgstr "Editada anteriorment" msgid "Previously Edited" msgstr "Editada anteriorment" msgid "&Previous translation" msgstr "Traducció &anterior" msgid "&Previous Translation" msgstr "Traducció &anterior" msgid "&Next translation" msgstr "Traducció &següent" msgid "&Next Translation" msgstr "Traducció &següent" msgid "P&revious unfinished" msgstr "Ante&rior no finalitzada" msgid "P&revious Unfinished" msgstr "Ante&rior no finalitzada" msgid "Ne&xt unfinished" msgstr "&Següent no finalitzada" msgid "Ne&xt Unfinished" msgstr "&Següent no finalitzada" msgid "Previous plural form" msgstr "Forma plural anterior" msgid "Previous Plural Form" msgstr "Forma plural anterior" msgid "Next plural form" msgstr "Forma plural següent" msgid "Next Plural Form" msgstr "Forma plural següent" msgid "&Online help" msgstr "&Ajuda en línia" msgid "&Online Help" msgstr "&Ajuda en línia" msgid "&GNU gettext manual" msgstr "Manual del &GNU gettext" msgid "&GNU gettext Manual" msgstr "Manual del &GNU gettext" msgid "&About Poedit" msgstr "&Quant al Poedit" msgid "&About" msgstr "&Quant a" msgid "Extractor setup" msgstr "Paràmetres de l’extractor" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Llistat d’extensions separades per punt i coma (p. ex. *.cpp,*.h):" msgid "Invocation:" msgstr "Invocació:" msgid "Command to extract translations:" msgstr "Ordre d’extracció de les traduccions:" 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)." msgid "An item in keywords list:" msgstr "Un element de la llista de paraules clau:" 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." msgid "An item in input files list:" msgstr "Un element de la llista dels fitxers d'entrada:" #, 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." msgid "Source code charset:" msgstr "Joc de caràcters del codi font:" #, 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." msgid "Translation Properties" msgstr "Propietats de la traducció" msgid "Project name and version:" msgstr "Nom i versió del projecte:" msgid "Language team:" msgstr "Equip de traducció:" msgid "Plural forms:" msgstr "Formes dels plurals:" msgid "Use default rules for this language" msgstr "Fes servir les regles per defecte d’aquesta llengua" msgid "Use custom expression" msgstr "Utilitza una expressió personalitzada" msgid "Learn about plural forms" msgstr "Informació sobre les formes dels plurals" msgid "Charset:" msgstr "Joc de caràcters:" msgid "Advanced Extraction Settings…" msgstr "Paràmetres d’extracció avançats…" msgid "Advanced extraction settings…" msgstr "Paràmetres d’extracció avançats…" msgid "Translation properties" msgstr "Propietats de la traducció" msgid "Sources Paths" msgstr "Camins de les fonts" msgid "Sources paths" msgstr "Camins de les fonts" msgid "Extract text from source files in the following directories:" msgstr "Extreu el text dels fitxers font dels següents directoris:" msgid "Base path:" msgstr "Camí base:" msgid "Sources Keywords" msgstr "Paraules claus de les fonts" msgid "Sources keywords" msgstr "Paraules clau de fonts" 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:" msgid "Also use default keywords for supported languages" msgstr "Utilitza també les paraules clau per defecte a les llengües admeses" msgid "Learn about gettext keywords" msgstr "Més informació sobre les paraules clau del gettext" msgid "Update summary" msgstr "Resum de l’actualització" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" "Aquestes cadenes són al codi font però no al fitxer.\n" "El Poedit les afegirà al fitxer ara." msgid "New strings" msgstr "Cadenes noves" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" "Aquestes cadenes ja no són al codi font.\n" "El Poedit les suprimirà del fitxer ara." msgid "Obsolete strings" msgstr "Cadenes obsoletes" msgid "(0 new, 0 obsolete)" msgstr "(0 noves, 0 obsoletes)" msgid "Open" msgstr "" msgid "Open file" msgstr "Obre el fitxer" msgid "Save file" msgstr "Desa el fitxer" msgid "Validate" msgstr "Valida" msgid "Check for errors in the translation" msgstr "Comprova si hi ha errors a la traducció" msgid "Update from code" msgstr "Actualitza des del codi" msgid "Update from Code" msgstr "Actualitza des del codi" msgid "Update from source code" msgstr "Actualitza des del codi font" msgid "Sidebar" msgstr "Barra lateral" msgid "Show or hide the sidebar" msgstr "Mostra o amaga la barra lateral" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. msgid "Previous source text" msgstr "Text font previ" 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." msgid "Notes for translators" msgstr "Notes per als traductors" msgid "Comment" msgstr "Comentari" msgid "Add comment" msgstr "Afegeix un comentari" msgid "Add Comment" msgstr "Afegeix un comentari" msgid "Delete From Translation Memory" msgstr "Suprimeix de la memòria de traducció" msgid "Delete from translation memory" msgstr "Suprimeix de la memòria de traducció" msgid "Translation suggestions" msgstr "Suggeriments de traducció" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). 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). msgid "No Matches Found" msgstr "No s’han trobat coincidències" msgid "This string was found in Poedit’s translation memory." msgstr "S'ha trobat aquesta cadena en la memòria de traducció del Poedit." msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" msgid "The TMX file is malformed." msgstr "El fitxer TMX no és formatat correctament." msgid "No translations were found in the TMX file." msgstr "No s’ha trobat cap traducció al fitxer TMX." #, 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)." #, c-format msgid "Translation memory error: %s (%d)." msgstr "Hi ha un error a la memòria de traducció: %s (%d)." msgid "Cannot create temporary directory." msgstr "No s’ha pogut crear el directori temporal." msgid "There are no translations. That’s unusual." msgstr "No hi ha traduccions. Això es inusual." msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "Translators typically use PO template files (POTs) prepared for them by the " "developer." msgstr "" "Les entrades traduïbles no s’afegeixen manualment en el sistema gettext, " "sinó que s’extreuen\n" "automàticament des del codi font. D’aquesta manera, queden actualitzades i " "correctes.\n" "Els traductors típicament usen fitxers de plantilla PO (POT) que el " "desenvolupador els prepara." msgid "(Learn more about GNU gettext)" msgstr "(Apreneu-ne més sobre el GNU gettext)" 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:" msgid "Update from POT" msgstr "Actualitza des del POT" msgid "Take translatable strings from an existing POT template." msgstr "Pren cadenes traduïbles d'una plantilla POT existent." msgid "" "You can also extract translatable strings directly from the source code:" msgstr "També podeu extreure cadenes traduïbles directament del codi font:" msgid "Extract from sources" msgstr "Extreu des de les fonts" 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 #, c-format msgid "Version %s" msgstr "Versió %s" msgid "Create new" msgstr "Crea’n un de nou" msgid "Create new translation from POT template." msgstr "Crea una traducció nova a partir d’una plantilla POT." msgid "Browse files" msgstr "Navega pels fitxers" msgid "Open and edit translation files." msgstr "Obriu i editeu fitxers de traducció." msgid "Translate cloud project" msgstr "" msgid "Collaborate with other people online." msgstr "" msgid "Recent files" msgstr "Fitxers recents" msgid "Sync" msgstr "Sincronitza" 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") #, 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. #, c-format msgid "%s Preferences" msgstr "Preferències del %s" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "Serveis" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "Amaga el %s" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "Amaga la resta" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "Mostra-ho tot" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "Surt del %s" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "Preferències…" msgid "Preferences..." msgstr "Preferències..." #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "Recents" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "Freqüents" msgid "&Apply" msgstr "&Aplica" msgid "Apply" msgstr "Aplica" msgid "&Back" msgstr "&Enrere" msgid "Back" msgstr "Enrere" msgid "&Cancel" msgstr "&Cancel·la" msgid "&Clear" msgstr "&Neteja" msgid "Clear" msgstr "Neteja" msgid "Copy" msgstr "Copia" msgid "Cu&t" msgstr "Re&talla" msgid "Cut" msgstr "Retalla" msgid "Edit" msgstr "Edita" msgid "&Quit" msgstr "&Surt" msgid "Help" msgstr "Ajuda" msgid "&New" msgstr "&Nou" msgid "New" msgstr "Nou" msgid "&No" msgstr "&No" msgid "No" msgstr "No" msgid "&OK" msgstr "&D’acord" msgid "Open…" msgstr "Obre…" msgid "&Open..." msgstr "&Obre…" msgid "Open..." msgstr "Obre…" msgid "&Paste" msgstr "&Enganxa" msgid "Paste" msgstr "Enganxa" msgid "Preferences" msgstr "Preferències" msgid "&Redo" msgstr "&Refés" msgid "Refresh" msgstr "Actualitza" msgid "&Save as" msgstr "Anomena i de&sa" msgid "Save as" msgstr "Anomena i desa" msgid "Select &All" msgstr "Selecciona-ho &tot" msgid "Select All" msgstr "Selecciona-ho tot" msgid "&Undo" msgstr "&Desfés" msgid "&Yes" msgstr "&Sí" msgid "Yes" msgstr "Sí" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Maj+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Retorn" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "Amunt" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "Avall" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "Esquerra" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "Dreta" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "maj" poedit-3.5/locales/be@latin.mo0000644000175100001770000001200414664354153013276 00000000000000GTa $*06?[ag{ '  '.@S\ er    ! ,= EQ d n<|u y           + _@ [     " "- P _ p 7x  T e n w ~ )     *)'T%|  !"D J Xbj|+   &F>R Wdgz (-hKk '= DP%`F'?.43-);807 +591C"<F 6$=E@&D:!* G%, B2/ A> #( (modified)&Close&Edit&File&Help&Open...&Purge deleted translations&Save&View(0 new, 0 obsolete)(Use default language)Add directory to the listAlways change focus to text input fieldAn item in input files list:An item in keywords list:Base path:BrowseCancelCatalogs &managerChange UI languageCharset:Comment:ConfirmationCreate new translations projectDeleteDelete the projectDirectories:EditEdit &commentEdit commentEdit projectEdit the projectFailed command: %sFailed to merge gettext catalogs.Find in commentsForm %iInvocation:Language selectionLanguage:Last modifiedList of extensions separated by semicolons (e.g. *.cpp;*.h):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 stringsOKObsolete stringsOpenPathsPoeditPoedit - Catalogs managerProject name and version:Project name:Purge deleted translationsSaveSave changesSelect directorySource code charset: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.TotalTranslation MemoryUndoUntransUpdate allUpdate all catalogs in the projectUpdate summaryWhole words onlyWindowsYou must restart Poedit for this change to take effect.Project-Id-Version: Poedit 1.6 Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2008-03-03 14:41+0200 Last-Translator: Alaksandar Navicki Language-Team: Language: be@latin MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Poedit-SourceCharset: utf-8 Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2; (zmadyfikavany)Za&čyni&Redahuj&Fajł&Dapamoha&Adčyni...&Ačyść ad nieŭžyvanych pierakładaŭ&Zapišy&Vyhlad(0 novych, 0 sastarełych)(Užyj zmoŭčanuju movu)Dadaj kataloh u śpisZaŭždy pierachodź da pola ŭvodu tekstuAbjekt u śpisie ŭvachodnych fajłaŭ:Abjekt u śpisie klučavych słovaŭ:Asnoŭnaja ściežka:PrahladajAnuluj&Kiraŭnik katalohaŭŹmiani movu interfejsuNabor znakaŭ:Kamentar:PaćvierdžańnieStvary novy prajekt pierakładaŭVydalVydal prajektKatalohi:RedahujRedahuj &kamentarRedahuj kamentarRedahuj prajektRedahuj prajektPamyłka zahadu: %sNie ŭdałosia spałuvyć katalahi gettext.Znajdzi ŭ kamentarochForma %iVyklik:Vybar movyMova:Niadaŭna zmadyfikavanaŚpis pašyreńniaŭ, padzielenych znakam ';' (naprykład: *.cpp;*.h):Nikoli nie davaj fokus śpisu radkoŭ. Kali ŭklučana, treba karystacca Ctrl+strełkami dla navihacyi z klavijatury, ale možna taksama ŭvodzić tekst adrazu, biez naciskańnia Tab, kab źmianić fokus.NovyNovyja frazyOKSastarełyja frazyAdčyniŚciežkiPoeditPoedit – Kiraŭnik katalohaŭNazva prajektu i versija:Nazva prajektu:Ačyść ad nieŭžyvanych pierakładaŭZapišyZapišy źmienyAbiary katalohKadavańnie kryničnaha kodu:Heta budzie dadadziena da zahdanaha radka dla kožnaha ŭvachodnaha fajłu. %f razhortvaje nazvu fajłu.Heta budzie dałučana da zahadnaha radka dla kožnaha klučavoha słova. %k razhortvaje klučavoje słova.UsiahoPamiać pierakładaŭViarniNiepierakłAktualizuj usieAktualizuj usie katalohi ŭ prajekcieAktualizuj padsumavańnieTolki cełyja słovyWindowsKab źmieny byli zachavanyja, treba ŭruchomić prahramu Poedit znoŭ.poedit-3.5/locales/kk.po0000644000175100001770000023725514664354154012212 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "Бұл хабарламаны жасыру" msgid "Don’t Show Again" msgstr "Келесіде көрсетпеу" msgid "Don’t show again" msgstr "Келесіде көрсетпеу" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(Жаңа: %i, ескірген: %i)" msgid "Collecting source files…" msgstr "Бастапқы код файлдарын жинау…" msgid "Extracting translatable strings…" msgstr "Аударуға келетін жолдарды шығару…" msgid "Failed to load file with extracted translations." msgstr "Алынған аудармалары бар файлды жүктеу сәтсіз аяқталды." msgid "Merging differences…" msgstr "Өзгерістерді біріктіру…" msgid "Updating translations" msgstr "Аудармаларды жаңарту" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "\"%s\" файлын ашу мүмкін емес." msgid "Invalid file" msgstr "Жарамсыз файл" #, c-format msgid "Malformed header: “%s”" msgstr "Жарамсыз тақырыптама: \"%s\"" msgid "PO Translation Files" msgstr "PO аударма файлдары" msgid "POT Translation Templates" msgstr "POT аударма үлгілері" msgid "XLIFF Translation Files" msgstr "XLIFF аударма файлдары" msgid "JSON Translation Files" msgstr "JSON аударма файлдары" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "Flutter аудармалар файлдары" msgid "All Translation Files" msgstr "Барлық аудармалар файлдары" msgid "The file is in a format not recognized by Poedit." msgstr "Файл пішімі Poedit танымайтын пішім болып табылады." msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" "Бұл JSON файлы жарамды аудармалар файлы емес және оны Poedit көмегімен " "түзету мүмкін емес." #, c-format msgid "Reading file content failed with the following error: %s" msgstr "Файл құрамасын оқу келесі қатемен сәтсіз аяқталды: %s" #, c-format msgid "" "File “%s” is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "\"%s\" файлы тек оқу үшін қолжетерліқ, сақталмайды.\n" "Оны басқа атымен сақтаңыз." #, c-format msgid "Couldn’t save file %s." msgstr "%s файлын сақтау мүмкін емес." msgid "Screenshots:" msgstr "Скриншоттар:" #, c-format msgid "%i line of file “%s” was not loaded correctly." msgid_plural "%i lines of file “%s” were not loaded correctly." msgstr[0] "%i жол \"%s\" файлынан дұрыс жүктелмеген." msgstr[1] "%i жол \"%s\" файлынан дұрыс жүктелмеген." #, c-format msgid "Line %d of file “%s” is corrupted (not valid %s data)." msgstr "Жол %d, \"%s\" файлында, зақымдалған (жарамсыз %s дерегі)." msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" "PO файлы қате: msgstr жекеше түрі msgid_plural нәрсесімен бірге қолданылған" msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "PO файлы қате: msgstr көпше түрі msgid_plural нәрсесіз көрсетілген" msgid "Couldn’t load the file, it is probably damaged." msgstr "Файлдын жүктеу мүмкін емес, ол зақымдалған болуы мүмкін." msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "Файлды жүктеген кезде қателер орын алған. Кейбір ақпарат жоқ немесе " "зақымдалған болуы мүмкін." msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "Файлды жақсы пішімдеу кезінде қате кетті (бірақ ол файл сәтті сақталды)." #, 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 ретінде сақталды, және баптау сәйкесінше өзгертілді." msgid "Error saving file" msgstr "Файлды сақтау қатесі" #, c-format msgid "“%s” is not a valid POT file." msgstr "\"%s\" - дұрыс POT файлы емес." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "XLIFF файлын жүктеу қатесі: %s" #, c-format msgid "unsupported version (%s)" msgstr "қолдауы жоқ нұсқасы (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML msgid "Broken markup in translation string." msgstr "Аударма жолындағы жарамсыз белгілеу." msgid "(Use default language)" msgstr "(Негізгі тілді қолдану)" msgid "Language selection" msgstr "Тілді таңдау" msgid "Select your preferred language" msgstr "Өз тіліңізді таңдаңыз" msgid "You must restart Poedit for this change to take effect." msgstr "Өзгерістерді іске асыру үшін Poedit-ті қайта іске қосыңыз." msgid "Add Account" msgstr "Тіркелгіні қосу" msgid "Add account" msgstr "Тіркелгіні қосу" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "%s туралы көбірек білу" msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "Қолдау көрсетілетін бұлттық локализация платформаларында басқарылатын " "аудармаларды синхрондау үшін оларды Poedit қолданбасына байланыстырыңыз." msgid "How does cloud sync work?" msgstr "Бұлттық синхрондау қалай жұмыс істейді?" msgid "Account" msgstr "Тіркелгі" msgid "(not signed in)" msgstr "(кіру орындалмаған)" msgid "File" msgstr "Файл" msgid "Open cloud translation" msgstr "Бұлттық аударманы ашу" msgid "Manage accounts" msgstr "Тіркелгілерді басқару" msgid "Project:" msgstr "Жоба:" msgid "Language:" msgstr "Тіл:" msgid "Sign in to Cloud Account" msgstr "Бұлттық тіркелгіге кіру" msgid "Sign in to cloud account" msgstr "Бұлттық тіркелгіге кіру" msgid "No translation projects listed in your account." msgstr "Сіздің тіркелгіңізде бірде-бір аударма жобасы тіркелмеген." msgid "Downloading latest translations…" msgstr "Соңғы аудармаларды жүктеп алу…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #, c-format msgid "Sign in to %s" msgstr "%s ішіне кіру" msgid "Syncing" msgstr "Синхрондау" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s…" msgstr "Аудармаларды %s ішіне жүктеп жіберу…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s failed." msgstr "Аудармаларды %s ішіне жүктеп жіберу сәтсіз аяқталды." msgid "Syncing error" msgstr "Синхрондау қатесі" msgid "Add" msgstr "Қосу" msgid "Unknown Crowdin error." msgstr "Белгісіз Crowdin қатесі." msgid "Not authorized, please sign in again." msgstr "Авторизацияланбаған, қайтадан кіріңіз." msgid "Downloading translations is disabled in this project." msgstr "Бұл жобада аудармаларды жүктеп алу мүмкіндігі сөндірілген." msgid "Sign In" msgstr "Жүйеге кіру" msgid "Sign in" msgstr "Кіру" msgid "Sign Out" msgstr "Шығу" msgid "Sign out" msgstr "Шығу" msgid "Learn more about Crowdin" msgstr "Crowdin туралы" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" "Crowdin - локализацияны онлайн басқару платформасы және бірлескен аударма " "құралы." msgid "Waiting for authentication…" msgstr "Аутентификацияны күту…" msgid "Updating user information…" msgstr "Пайдаланушы ақпаратын жаңарту…" msgid "Sign in to Crowdin" msgstr "Crowdin-ға кіру" msgid "Syncing with Crowdin failed." msgstr "Crowdin қызметімен синхрондау сәтсіз аяқталды." msgid "Crowdin error" msgstr "Crowdin қатесі" msgid "Uploading translations…" msgstr "Аудармаларды жүктеу…" msgid "&Copy" msgstr "&Көшіру" msgid "Learn more" msgstr "Көбірек білу" msgid "&Help" msgstr "&Көмек" msgid "MO files can’t be directly edited in Poedit." msgstr "MO файлдарын Poedit ішінде түзетуге болмайды." msgid "Error opening file" msgstr "Файлды ашу қатесі" msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "Орнына сәйкес PO файлын ашып, түзетіңіз. Оны сақтаған кезде, MO файлы да " "жаңартылады." msgid "don’t delete temporary files (for debugging)" msgstr "уақытша файлдарды өшірмеу (жөндеу режимі үшін пайдалы)" msgid "handle a poedit:// URI" msgstr "poedit:// URI-ін талдау" msgid "go to item at given line number" msgstr "берілген жол нөмірі бар элементке өту" msgid "Failed to communicate with Poedit process." msgstr "Poedit үрдісімен байланысу қатесі." #, c-format msgid "Unhandled exception occurred: %s" msgstr "Өңделмеген ережеден тыс жағдай орын алды: %s" msgid "Select translation template" msgstr "Аударма үлгісін таңдау" msgid "Select translation file" msgstr "Аударма файлын таңдау" msgid "Poedit is an easy to use translation editor." msgstr "Poedit - қолдануға ыңғайлы аудармалар түзетушісі." msgid "You can’t drop more than one file on Poedit window." msgstr "Сіз Poedit терезесіне бірден көп файлды тартып апара алмайсыз." #, c-format msgid "File “%s” is not a translation file." msgstr "\"%s\" файлы аударма файлы емес." #, c-format msgid "File “%s” doesn’t exist." msgstr "\"%s\" файлы жоқ болып тұр." 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". #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "Емлені тексеру сөндірілген, өйткені %s тілі үшін сөздік орнатылмаған." msgid "Install" msgstr "Орнату" #, c-format msgid "The file “%s” has been changed by another application." msgstr "\"%s\" файлы басқа қолданбамен өзгертілген." msgid "Reload file" msgstr "Файлды қайта жүктеу" msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "Файлды дисктен қайта жүктеуді қалайсыз ба? Олай істесеңіз, Poedit ішіндегі " "сақталмаған өзгерістеріңіз жоғалатын болады." msgid "Ignore" msgstr "Елемеу" msgid "Reload File" msgstr "Файлды қайта жүктеу" msgid "The file has been modified. Do you want to save changes?" msgstr "Файл өзгертілген. Өзгерістерді сақтау керек пе?" msgid "Save changes" msgstr "Өзгерістерді сақтау" msgid "Your changes will be lost if you don’t save them." msgstr "Өзгерістерді сақтамасаңыз, олар жоғалады." msgid "Save" msgstr "Сақтау" msgid "Do&n’t save" msgstr "Сақтамау" msgid "Don’t Save" msgstr "Сақтамау" msgid "The changes made by the other application will be lost if you save." msgstr "Сақтасаңыз, басқа қолданбамен жасалған өзгерістер жоғалатын болады." msgid "Cancel" msgstr "Бас тарту" msgid "Save Anyway" msgstr "Сонда да сақтау" msgid "Save anyway" msgstr "Сонда да сақтау" msgid "Save as…" msgstr "Қалайша сақтау…" msgid "Compile to…" msgstr "Қалайша компиляциялау…" msgid "Compiled Translation Files" msgstr "Компиляцияланған аудармалар файлдары" msgid "Export to HTML…" msgstr "" msgid "HTML Files" msgstr "HTML файлдары" #, c-format msgid "In: %s" msgstr "Қайда: %s" msgid "Source code not available." msgstr "Бастапқы коды қолжетерсіз." msgid "Updating failed" msgstr "Жаңарту сәтсіз аяқталды" 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 "" "Аудармаларды бастапқы кодтардан жаңарту мүмкін емес, өйткені файл " "баптауларында көрсетілген орында бастапқы кодтар табылмады." msgid "Permission denied." msgstr "Рұқсат етілмеген." 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. 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. msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "Егер сіз файлдарыңызға қатынауды бұрын тайдырсаңыз, оны Жүйелік баптаулар > " "Қауіпсіздік және жекелік > Жекелік > Файлдар және бумалар ішінен іске қоса " "аласыз." msgid "Translation entries in the file are probably incorrect." msgstr "Файлдағы аударма жазбалары дұрыс емес болуы мүмкін." msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "Файлды жаңарту сәтсіз аяқталды. Ақпарат үшін \"Көбірек>>\" шертіңіз." msgid "Open translation template" msgstr "Аударма үлгісін ашу" #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "Аударма ішінен %d мәселе табылды." msgstr[1] "Аударма ішінен %d мәселе табылды." msgid "Validation results" msgstr "Тексеру нәтижелері" msgid "" "Entries with errors were marked in red in the list. Details of the error " "will be shown when you select such an entry." msgstr "" "Қателері бар жолдар қызыл түспен белгіленді. Қате ақпараты ондай жол " "таңдалған кезде көрсетіледі." msgid "The file was saved safely." msgstr "Файл сәтті сақталды." msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "Файл сәтті сақталды және MO пішіміне компиляцияланды, бірақ, ол дұрыс " "жасамайтын сияқты." msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "Файл қаупсіз сақталды, бірақ оны MO пішіміне түрлендіру мен қолдануға " "болмайды." msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "Файл MO пішіміне сәтті компиляцияланды, бірақ, ол дұрыс жасамайтын сияқты." msgid "The file cannot be compiled into the MO format and used." msgstr "Файлды MO пішіміне компиляцилау және қолдану мүмкін емес." msgid "No problems with the translation found." msgstr "Аудармалар мәселелері табылмады." #, 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 жазба әлі аударылмаған." msgid "The translation is ready for use." msgstr "Аударма қолдануға дайын." #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "Poedit \"%s\" файлындағы жарамсыз құраманы автотүзеткен." msgid "" "The file contained duplicate items, which is not allowed in PO files and " "would prevent the file from being used. Poedit fixed the issue, but you " "should review translations of any items marked as needing work and correct " "them if necessary." msgstr "" "Бұл файлда қайталанатын жазбалар болды, ол PO файлдарында рұқсат етілмейді, " "және файлды қолдануға жол бермейді. Poedit мәселені шешті, бірақ, жөндеу " "керек етіп белгіленген барлық жазбаларды қарап шығыңыз және керек болса, " "түзетіңіз." msgid "Language of the translation isn’t set." msgstr "Аударма тілі әлі көрсетілмеген." msgid "Set Language" msgstr "Тілді орнату" msgid "Set language" msgstr "Тілді орнату" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." msgid "" "Suggestions are not available if the translation language is not set " "correctly. Other features, such as plural forms, may be affected as well." msgstr "" "Аударма тілі дұрыс көрсетілмеген болса, ұсыныстар қолжетерсіз болады. Көпше " "түрлер сияқты, басқа да мүмкіндіктерге кері әсер тиюі мүмкін." msgid "Language of the translation is the same as source language." msgstr "Аударма тілі бастапқы тілмен бірдей." msgid "Fix Language" msgstr "Тілді түзету" msgid "Fix language" msgstr "Тілді түзету" msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "Бұл файлда көпше түрі бар жолдар бар, бірақ файлдың Plural-Forms өрісі " "бапталмаған." msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "Бұл файлдағы нәрселердің көпше түрлері файлдың Plural-Forms өрісіндегі " "көрсетілген көпше түрінен өзгеше" msgid "Required header Plural-Forms is missing." msgstr "Міндетті Plural-Forms тақырыптамасы жоқ." #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Plural-Forms өрісіндегі синтаксис қатесі (\"%s\")." msgid "Fix the Header" msgstr "Тақырыптаманы дұрыстау" 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". #, 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.")" msgid "Review" msgstr "Тексеру" msgid "Would you like to use English for source text?" msgstr "Қайнар көз мәтіні үшін ағылшын тілін пайдалануды қалайсыз ба?" #, 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" msgid "Load English" msgstr "Ағылшын тілін жүктеу" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Аударылды: %d, барлығы %d (%d %%)" #, c-format msgid "Remaining: %d" msgstr "Қалды: %d" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d қате" msgstr[1] "%d қате" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d жазба" msgstr[1] "%d жазба" msgid " (unsaved)" msgstr " (сақталмаған)" msgid " (modified)" msgstr " (түрлендірілген)" #, c-format msgid "Failed to update translation memory: %s" msgstr "Аудармалар жадысын жаңарту сәтсіз аяқталды: %s" msgid "Remove same-as-source translations" msgstr "" msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" msgid "Keep" msgstr "Ұстау" msgid "Remove" msgstr "" msgid "Purge deleted translations" msgstr "Өшірілген аудармаларды жою" msgid "Do you want to remove all translations that are no longer used?" msgstr "Осыдан былай қолданылмайтын аудармаларды өшіруді қалайсыз ба?" 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 "" "Жоюды таңдасаңыз, өшірілген деп белгіленген барлық аудармалар өшірілетін " "болады. Олар болашақта қайта қосылса, оларды қайта аударуға керек болады." msgid "Purge" msgstr "Тазарту" msgid "Copy from source text" msgstr "Бастапқы код мәтінінен көшіру" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "Аударманы тазарту" msgid "Clear Translation" msgstr "Аударманы тазарту" msgid "Edit comment" msgstr "Түсіндірмені түзету" msgid "Edit Comment" msgstr "Түсіндірмені түзету" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "Код кездесулері" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "Код кездесулері" msgid "Hide Sidebar" msgstr "Бүйір панелін жасыру" msgid "Show Sidebar" msgstr "Бүйір панелін көрсету" msgid "Hide Status Bar" msgstr "Қалып-күй жолағын жасыру" msgid "Show Status Bar" msgstr "Қалып-күй жолағын көрсету" msgid "String length in characters: translation | source" msgstr "Жолдың таңбалар есебімен ұзындығы: аударма | қайнар көзі" msgid "String length in characters" msgstr "Жолдың таңбалар есебімен ұзындығы" msgid "Source text" msgstr "Бастапқы код мәтіні" msgid "Singular" msgstr "Жекеше" msgid "Plural" msgstr "Көпше" msgid "Translation" msgstr "Аударма" msgid "Pre-translated" msgstr "Алдын-ала аударылған" 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. msgid "Needs work" msgstr "Жөндеу керек" msgid "" "POT files are only templates and don’t contain any translations themselves.\n" "To make a translation, create a new PO file based on the template." msgstr "" "POT файлдары тек үлгілер, олардың ішінде аудармалар жоқ.\n" "Аударманы жасау үшін, үлгі негізінде жаңа PO файлын жасаңыз." msgid "Create new translation" msgstr "Жаңа аударманы жасау" msgid "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 msgid "Source text ID" msgstr "Бастапқы мәтін идентификаторы" msgid "Everything" msgstr "Барлығы" #, c-format msgid "Form %i" msgstr "Пішім %i" #, c-format msgid "Form %i (unused)" msgstr "Форма %i (қолданылмайды)" msgid "Zero" msgstr "Нөл" msgid "One" msgstr "Бір" msgid "Two" msgstr "Екі" msgid "Other" msgstr "Басқа" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, c-format msgid "String context: %s" msgstr "Мәтін контексті: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #, c-format msgid "String identifier: %s" msgstr "Мәтін анықтағышы: %s" #, c-format msgid "%s Format" msgstr "%s пішімі" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "%s пішімі" #, c-format msgid "Translation — %s" msgstr "Аударма — %s" msgid "ID" msgstr "ID" #, c-format msgid "Source text — %s" msgstr "Бастапқы мәтін — %s" msgid "unknown language" msgstr "тіл белгісіз" #, c-format msgid "Network error: %s (%d)" msgstr "" msgid "Unknown error" msgstr "" #, c-format msgid "Failed command: %s" msgstr "Сәтсіз команда: %s" msgid "Failed to merge gettext catalogs." msgstr "Gettext каталогтарын біріктіру сәтсіз аяқталды." msgid "Open in Editor" msgstr "Түзеткіште ашу" msgid "Open in editor" msgstr "Түзеткіште ашу" msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "Файлда бұл жолдың бастапқы кодтарда кездесетіні туралы ақпарат жоқ." msgid "No usage information" msgstr "Қолданылу ақпараты жоқ" #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d код кездесуі бар" msgstr[1] "%d код кездесуі бар" msgid "Source code not found" msgstr "Бастапқы коды табылмады" 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 бұл жол қолданылатын бастапқы код жерін көрсете алмайды, өйткені ол " "файл көрсетілген жерде жоқ болып тұр, немесе ол нақты файлға көрсетіп " "тұрмаған символдық сілтеме болып тұр." msgid "File cannot be opened" msgstr "Файлды ашу мүмкін емес" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "Poedit \"%s\" файлын аша алмады." msgid "Find" msgstr "Табу" msgid "Replace" msgstr "Алмастыру" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "Опциялар" msgid "Ignore case" msgstr "Регистрді елемеу" msgid "Wrap around" msgstr "Соңына жеткенде басына апару" msgid "Whole words only" msgstr "Тек толық сөздер" msgid "Find in source texts" msgstr "Бастапқы мәтіндерден табу" msgid "Find in translations" msgstr "Аудармалардан табу" msgid "Find in comments" msgstr "Түсіндірмелер ішінен іздеу" msgid "Close" msgstr "Жабу" msgid "Replace &All" msgstr "Б&арлығын алмастыру" msgid "Replace &all" msgstr "Б&арлығын алмастыру" msgid "&Replace" msgstr "Алмасты&ру" msgid "< &Previous" msgstr "< &Алдыңғы" msgid "&Next >" msgstr "&Келесі >" msgid "String to find" msgstr "Ізделінетін жол" msgid "Replacement string" msgstr "Алмастыру жолы" #, c-format msgid "Cannot execute program: %s" msgstr "Бағдарламаны орындау мүмкін емес: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "Тіл атауы немесе коды" msgid "Translation Language" msgstr "Аударманың тілі" msgid "Language of the translation:" msgstr "Аударманың тілі:" msgid "All strings" msgstr "Барлық жолдар" msgid "Couldn’t download Localazy project details." msgstr "Localazy жоба ақпаратын жүктеп алу мүмкін емес." msgid "There was an error when uploading translations to Localazy." msgstr "Аудармаларды Localazy ішіне жүктеп жіберу кезінде қате орын алды." msgid "Projects" msgstr "Жобалар" msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Localazy – кез келген адамға өз өнімдері мен мазмұнын бірнеше тілге оңай " "аударуға мүмкіндік беретін жоғары автоматтандырылған локализация платформасы." msgid "Add Project" msgstr "Жобаны қосу" msgid "Add project" msgstr "Жобаны қосу" msgid "Poedit - Catalogs manager" msgstr "Poedit - каталогтарды басқару" msgid "Edit…" msgstr "Түзету…" msgid "Create new translations project" msgstr "Жаңа аудармалар жобасын жасау" msgid "Delete the project" msgstr "Жобаны өшіру" msgid "Edit the project" msgstr "Жобаны түзету" msgid "Update all" msgstr "Барлығын жаңарту" msgid "Update all catalogs in the project" msgstr "Жобадағы барлық каталогтарды жаңарту" msgid "Total" msgstr "Жалпы" msgid "Untrans" msgstr "Аударылмаған" msgctxt "column/row header" msgid "Needs Work" msgstr "Жөндеу керек" msgid "Errors" msgstr "Қателер" msgid "Last modified" msgstr "Соңғы рет өзгертілген" msgid "Select directory" msgstr "Буманы таңдау" msgid "Directories:" msgstr "Бумалар:" msgid "" msgstr "<атаусыз>" #, c-format msgid "Do you want to delete project “%s”?" msgstr "\"%s\" жобасын өшіруді қалайсыз ба?" msgid "Delete project" msgstr "Жобаны өшіру" msgid "Deleting the project will not delete any translation files." msgstr "Жобаны өшіру ешбір аударма файлын өшірмейді." msgid "Confirmation" msgstr "Растау" msgid "Update all catalogs in this project?" msgstr "Бұл жобадағы барлық каталогтарды жаңарту керек пе?" msgid "Performs update from source code on all files in the project." msgstr "Жобадағы барлық файлдардан бастапқы кодтан жаңартуды орындайды." msgid "Check for Updates…" msgstr "Жаңартуларды тексеру…" msgid "Catalogs Manager" msgstr "Каталогтар басқарушысы" msgid "&Preferences…" msgstr "&Баптаулар…" msgid "&Edit" msgstr "&Түзету" msgid "Undo" msgstr "Болдырмау" msgid "Redo" msgstr "Қайталау" msgid "Paste and Match Style" msgstr "Кірістіру және сәйкестендіру стилі" msgid "Delete" msgstr "Өшіру" msgid "Spelling and Grammar" msgstr "Емлені тексеру және грамматика" msgid "Show Spelling and Grammar" msgstr "Емлені тексеру және грамматиканы көрсету" msgid "Check Document Now" msgstr "Құжатты қазір тексеру" msgid "Check Spelling While Typing" msgstr "Емлені теру кезінде тексеріп отыру" msgid "Check Grammar With Spelling" msgstr "Грамматиканы теру кезінде тексеріп отыру" msgid "Correct Spelling Automatically" msgstr "Емлені автоматты түрде түзетіп отыру" msgid "Substitutions" msgstr "Алмастырулар" msgid "Show Substitutions" msgstr "Алмастыруларды көрсету" msgid "Smart Copy/Paste" msgstr "Ақылды көшіріп алу/кірістіру" msgid "Smart Quotes" msgstr "Ақылды тырнақшалар" msgid "Smart Dashes" msgstr "Ақылды дефистер" msgid "Smart Links" msgstr "Ақылды сілтемелер" msgid "Text Replacement" msgstr "Мәтінді алмастыру" msgid "Transformations" msgstr "Түрлендірулер" msgid "Make Upper Case" msgstr "Бас әріпті қылу" msgid "Make Lower Case" msgstr "Кіші әріпті қылу" msgid "Capitalize" msgstr "Бас әріппен" msgid "Speech" msgstr "Сөйлеу" msgid "Start Speaking" msgstr "Сөйлеуді бастау" msgid "Stop Speaking" msgstr "Сөйлеуді аяқтау" msgid "&View" msgstr "Тү&рі" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Show Toolbar" msgstr "Саймандар панелін көрсету" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Customize Toolbar…" msgstr "Саймандар панелін баптау…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Enter Full Screen" msgstr "Толық экранға өту" msgid "Window" msgstr "Терезе" msgid "Minimize" msgstr "Бүктеу" msgid "Zoom" msgstr "Масштаб" msgid "Welcome to Poedit" msgstr "Poedit-ке қош келдіңіз" msgid "Bring All to Front" msgstr "Барлығын алдына әкелу" msgid "Information about the translator" msgstr "Аудармашы жөніндегі ақпарат" msgid "Name:" msgstr "Аты:" msgid "Your Name" msgstr "Сіздің атыңыз" msgid "Email:" msgstr "Пошта:" msgid "you@example.com" msgstr "you@example.com" msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "Сіздің атыңыз мен эл. пошта адресіңіз тек қана GNU gettext файлдарындағы " "Last-Translator жолы үшін керек." msgid "Editing" msgstr "Өңдеу" msgid "Automatically compile MO file when saving" msgstr "Сақтағанда, MO файлын авто жасау" msgid "Show summary after updating files" msgstr "Файлдарды жаңартудан кейін қорытынды ақпаратты көрсету" msgid "Check spelling" msgstr "Емлені тексеру" msgid "Always change focus to text input field" msgstr "Фокусты әрқашан мәтін енгізу жолына орнату" msgid "" "Never let the list of strings take focus. If enabled, you must use Ctrl-" "arrows for keyboard navigation but you can also type text immediately, " "without having to press Tab to change focus." msgstr "" "Жолдарға фокус алуға тыйым салу. Қосулы тұрса, пернетақта навигациясы үшін " "Ctrl мен жақтар пернелерін қолдануғы тиістісіз, бірақ мәтінді тере аласыз, " "фокусты алу үшін Tab пернесін басу керек емес." msgid "Appearance" msgstr "Сыртқы түрі" msgid "Use custom list font:" msgstr "Таңдауыңызша тізім қарібін қолдану:" msgid "Use custom text fields font:" msgstr "Таңдауыңызша мәтіндік өрістер қарібін қолдану:" msgid "Change UI language" msgstr "Бағдарлама тілін өзгерту" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions msgid "(requires Windows 8 or newer)" msgstr "(Windows 8 немесе одан жаңасын талап етеді)" msgid "General" msgstr "Жалпы" msgid "Use translation memory" msgstr "Аудармалар жадысын қолдану" msgid "Manage…" msgstr "Басқару…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "Бастапқы кодтардан жаңарту кезінде" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "файл ішінен дәлсіз сәйкестендіру" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "АЖ ішінен алдын-ала аудару" 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 жаңа жолдарды тек файлдың алдыңғы аудармаларынан, немесе сіздің " "аудармалар жадысынан толтыру талабын жасай алады. Аудармалар жадысы бос " "болған кезде оны қолдану пайдасы аз, бірақ, оған жаңа аудармаларды қосқан " "кезде, пайдасы арта түседі." msgid "Stored translations:" msgstr "Сақталған аудармалар:" msgid "Database size on disk:" msgstr "Дерекқордың дискідегі өлшемі:" msgid "Import Translation Files…" msgstr "Аударма файлдарын импорттау…" msgid "Import translation files…" msgstr "Аударма файлдарын импорттау…" msgid "Import From TMX…" msgstr "TMX-тан импорттау…" msgid "Import from TMX…" msgstr "TMX-тан импорттау…" msgid "Export To TMX…" msgstr "TMX пішіміне экспорттау…" msgid "Export to TMX…" msgstr "TMX пішіміне экспорттау…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). msgid "Reset" msgstr "Тастау" msgid "Select translation files to import" msgstr "Импорттау үшін аудармалар файларын таңдаңыз" msgid "Translation Memory" msgstr "Аудармалар жадысы" msgid "Importing translations…" msgstr "Аудармаларды импорттау…" #, c-format msgid "Error loading translation file “%s”." msgstr "\"%s\" аудармалар файлын жүктеу қатемен аяқталды." msgid "Finalizing…" msgstr "Аяқтау…" msgid "Select TMX files to import" msgstr "Импорттау үшін TMX файлдарын таңдаңыз" msgid "TMX Files" msgstr "TMX файлдары" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "\"%s\" ішінен аудармалар жадысын импорттау сәтсіз аяқталды." msgid "Import error" msgstr "Импорттау қатесі" msgid "Export as…" msgstr "Қалайша экспорттау…" msgid "Exporting translations…" msgstr "Аудармаларды экспорттау…" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "\"%s\" ішіне аудармалар жадысын экспорттау сәтсіз аяқталды." msgid "Export error" msgstr "Экспорттау қатесі" msgid "Reset translation memory" msgstr "Аудармалар жадысын тастау" msgid "Are you sure you want to reset the translation memory?" msgstr "Аудармалар жадысын тастауды шынымен қалайсыз ба?" 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. msgid "TM" msgstr "TM" msgid "" "Source code extractors are used to find translatable strings in the source " "code files and extract them so that they can be translated." msgstr "" "Бастапқы кодтар экстракторлары бастапқы кодтар файлдарынан аударуға келетін " "жолдарды табу және аудару үшін шығарып алуға қолданылады." msgid "Custom Extractors:" msgstr "Таңдауыңызша экстракторлар:" msgid "Custom extractors:" msgstr "Таңдауыңызша экстракторлар:" msgid "GNU gettext" msgstr "GNU gettext" 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 және басқалары)." msgid "Delete extractor" msgstr "Экстракторды өшіру" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "\"%s\" экстракторын өшіруді шынымен қалайсыз ба?" msgid "Extractors" msgstr "Экстракторлар" msgid "Accounts" msgstr "Тіркелгілер" msgid "Automatically check for updates" msgstr "Жаңартуларға автотексеру" msgid "Include beta versions" msgstr "Бета нұсқаларын қоса" msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "Бета нұсқаларында соңғы мүмкіндіктер және жақсартулар бар, бірақ, олар " "тұрақсыздау болуы мүмкін." msgid "Updates" msgstr "Жаңартулар" msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Бұл баптаулар PO файлдарының ішкі құрылымына әсер етеді. Сізде арнайы " "талаптар болса ғана оларды өзгертіңіз, мысалы, нұсқаларды басқару жүйелерді " "қолдансаңыз." msgid "Line endings:" msgstr "Жол аяқтаулары:" msgid "Unix (recommended)" msgstr "Unix (ұсынылады)" msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "Тасымалдау:" msgid "Preserve formatting of existing files" msgstr "Бар болып тұрған файлдардың пішімдеуін сақтап отыру" msgid "Advanced" msgstr "Кеңейтілген" msgid "Settings" msgstr "" msgid "Preparing strings…" msgstr "Жолдарды дайындау…" msgid "Pre-translating from translation memory…" msgstr "Аудармалар жадысынан алдын-ала аудару…" #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "%u жол алдын-ала аударылған" msgstr[1] "%u жол алдын-ала аударылған" msgid "Pre-translating…" msgstr "Алдын-ала аудару…" 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. msgid "Pre-translate" msgstr "Алдын-ала аудару" msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "Алдын-ала аудару қайнар көз мәтінінің бар болуын талап етеді. Нақты мәтін " "орнына тек ID қолданса, ол жасамайды." msgid "Cannot pre-translate from unknown language." msgstr "Белгісіз тілден алдын-ала аудару мүмкін емес." msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Алдын-ала аудару қайнар көз тілінің белгілі болуы талап етеді. Poedit оны " "бұл файлдан таба алмады." msgid "Only fill in exact matches" msgstr "Тек дәл сәйкестіктерді толтыру" msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "Үнсіз келісім бойынша, дәлсіз нәтижелер де қосылады, бірақ, жөндеу керек " "етіп белгіленеді. Тек дәл сәйкестіктерді қолдану үшін бұл опцияны іске " "қосыңыз." msgid "Don’t mark exact matches as needing work" msgstr "Дәл сәйкестіктерді жөндеу керек етіп белгілемеу" 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 "" "Өзіңіздің АЖ сапасына сенімді болсаңыз ғана іске қосыңыз. Үнсіз келісім " "бойынша, АЖ ішінен келген барлық сәйкестіктер жөндеу керек ретінде " "белгіленеді және оларды қолдану алдында тексеру керек болады." msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "Алдын-ала аудару әрекеті аудармалар жадысынан аудармалары әлі жоқ жолдар " "үшін дәл немесе дәлсіз сәйкестіктерді тауып, олардың аудармаларын толтырады." #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%d жазба алдын-ала аударылды." msgstr[1] "%d жазба алдын-ала аударылды." msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "Аудармалар толық сәйкес болмауы мүмкін себебінен жөндеу керек етіп " "белгіленді. Олардың дұрыстығын тексеруіңіз керек." msgid "No entries could be pre-translated." msgstr "Бірде-бір жазбаны алдын-ала аудару мүмкін емес." msgid "" "The TM doesn’t contain any strings similar to the content of this file. It " "is only effective for semi-automatic translations after Poedit learns enough " "from files that you translated manually." msgstr "" "Аудармалар жадысынан бұл файлдың құрамасына ұқсайтын жолдар табылмады. " "Poedit сіз қолмен аударған файлдардан жеткілікті ақпарат жинағаннан кейін " "ғана бұл жартылай автоматты аудармалар үшін пайдалы болады." msgid "Cancelling…" msgstr "Бас тарту…" msgid "Drag Folders or Files Here" msgstr "Осында бумалар немесе файлдарды тартып әкеліңіз" msgid "Drag folders or files here" msgstr "Осында бумалар немесе файлдарды тартып әкеліңіз" msgid "Add Folders…" msgstr "Бумаларды қосу…" msgid "Add folders…" msgstr "Бумаларды қосу…" msgid "Add Files…" msgstr "Файлдарды қосу…" msgid "Add files…" msgstr "Файлдарды қосу…" msgid "Add Wildcard…" msgstr "Шаблон бойынша қосу…" msgid "Add wildcard…" msgstr "Шаблон бойынша қосу…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) msgid "Reveal in Finder" msgstr "Finder ішінен көрсету" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" msgid "Show in Explorer" msgstr "Explorer ішінен көрсету" msgid "Show in Folder" msgstr "Бумада көрсету" msgid "Paths" msgstr "Жолдар" msgid "Excluded paths" msgstr "Елемейтін жолдар" msgid "Advanced extraction settings" msgstr "Экстракторлардың кеңейтілген баптаулары" msgid "Extract notes for translators from:" msgstr "Аудармашылар үшін пікірлерді қайдан алу:" msgid "Comments prefixed with:" msgstr "Пікірлер префиксі:" msgid "All comments" msgstr "Барлық пікірлер" msgid "Additional xgettext flags:" msgstr "Қосымша xgettext жалаушалары:" msgid "Additional keywords" msgstr "Қосымша кілттік сөздер" msgid "Name of the project the translation is for" msgstr "Келесі үшін аударма жобасының аталуы" msgid "Team name and email address or URL" msgstr "Топ аты және эл. пошта адресі немесе сілтемесі" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "мыс., nplurals=1; plural=0;" msgid "UTF-8 (recommended)" msgstr "UTF-8 (ұсынылады)" msgid "Please save the file first. This section cannot be edited until then." msgstr "Алдымен файлды сақтаңыз. Оған дейін бұл санатты түзету мүмкін емес." msgid "Placeholders correctness" msgstr "Толтырғыштың дұрыстығы" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "“%s” толтырғышы аудармада жоқ." #, c-format msgid "Superfluous placeholder “%s” that isn’t in source text." msgstr "Бастапқы мәтінде жоқ артық “%s” толтырғышы." msgid "Plural form translations" msgstr "Көпше түрі аудармалары" msgid "Not all plural forms are translated." msgstr "Көпше түрлер толығымен аударылмаған." msgid "Inconsistent upper/lower case" msgstr "Жоғарғы/төменгі регистр сәйкессіздігі" msgid "The translation should start as a sentence." msgstr "Аударма сөйлем ретінде басталуы тиіс." msgid "The translation should start with a lowercase character." msgstr "Аударма кіші әріптен басталуы тиіс." msgid "Inconsistent whitespace" msgstr "Бос аралықтар сәйкессіздігі" msgid "The translation doesn’t start with a space." msgstr "Аударма бос аралықтан басталып тұрған жоқ." msgid "The translation starts with a space, but the source text doesn’t." msgstr "" "Аударма бос аралықтан басталады, ал, қайнар көз хабарламасы одан басталмайды." msgid "The translation is missing a newline at the end." msgstr "Аударма соңында жол тасымалдауы жетпейді." msgid "The translation ends with a newline, but the source text doesn’t." msgstr "" "Аударма жол тасымалдаумен аяқталады, ал, қайнар көз хабарламасы оған " "аяқталмайды." msgid "The translation is missing a space at the end." msgstr "Аударма соңында бос аралық жетпейді." msgid "The translation ends with a space, but the source text doesn’t." msgstr "" "Аударма бос аралықпен аяқталады, ал, қайнар көз хабарламасы онымен " "аяқталмайды." msgid "Punctuation checks" msgstr "Тыныс белгілерін тексеру" #, c-format msgid "The translation should end with “%s”." msgstr "Аударма \"%s\" мәнімен аяқталуы тиіс." #, c-format msgid "The translation should not end with “%s”." msgstr "Аударма \"%s\" мәнімен аяқталмауы тиіс." #, c-format msgid "The translation ends with “%s”, but the source text ends with “%s”." msgstr "" "Аударма \"%s\" мәнімен аяқталады, ал қайнар көз хабарламасы \"%s\" мәнімен " "аяқталады." msgid "Cloud" msgstr "" msgid "Clear Menu" msgstr "Мәзірді тазарту" msgid "Clear menu" msgstr "Мәзірді тазарту" msgid "Comment:" msgstr "Түсіндірме:" msgid "Update" msgstr "Жаңарту" msgid "&Delete" msgstr "Ө&шіру" msgid "Delete the comment" msgstr "Түсіндірмені өшіру" msgid "Edit project" msgstr "Жобаны түзету" msgid "Project name:" msgstr "Жоба аты:" msgid "Browse" msgstr "Шолу" msgid "Add directory to the list" msgstr "Тізімге буманы қосу" msgid "OK" msgstr "ОК" msgid "&File" msgstr "&Файл" msgid "&New…" msgstr "&Жаңа…" msgid "New from &POT/PO file…" msgstr "POT/PO &файлынан жаңа…" msgid "New From &POT/PO File…" msgstr "POT/PO &файлынан жаңа…" msgid "&Open…" msgstr "А&шу…" msgid "Open Recent" msgstr "Соңғысын ашу" msgid "Open recent" msgstr "Жуырдағыны ашу" msgid "Open cloud translation…" msgstr "Бұлттық аударманы ашу…" msgid "Open Cloud Translation…" msgstr "Бұлттық аударманы ашу…" msgid "&Start window" msgstr "І&ске қосылу терезесі" msgid "&Start Window" msgstr "І&ске қосылу терезесі" msgid "Catalogs &manager" msgstr "Каталогтар &басқарушысы" msgid "Catalogs &Manager" msgstr "Каталогтар &басқарушысы" msgid "&Close" msgstr "Жа&бу" msgid "&Save" msgstr "&Сақтау" msgid "Save &as…" msgstr "Қала&йша сақтау…" msgid "Save &As…" msgstr "Қала&йша сақтау…" msgid "Compile to MO…" msgstr "MO файлына компиляциялау…" msgid "E&xport to HTML…" msgstr "" msgid "Check for updates…" msgstr "Жаңартуларды тексеру…" msgid "Settings…" msgstr "Баптаулар…" msgid "&Preferences" msgstr "&Баптаулар" msgid "E&xit" msgstr "&Шығу" msgid "Quit" msgstr "Шығу" msgid "Copy from singular" msgstr "Жекеше түрден көшіріп алу" msgid "Copy From Singular" msgstr "Жекеше түрден көшіріп алу" msgid "Translation needs &work" msgstr "Аударма өң&деуді талап етеді" msgid "Translation Needs &Work" msgstr "Аударма өң&деуді талап етеді" msgid "Edit &comment" msgstr "Тү&сіндірмені түзету" msgid "Edit &Comment" msgstr "Тү&сіндірмені түзету" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "Ұсыныстар" msgid "&Find…" msgstr "&Табу…" msgid "Replace…" msgstr "Алмастыру…" msgid "Find next" msgstr "Келесі" msgid "Find previous" msgstr "Алдыңғы" msgid "Find and Replace…" msgstr "Табу және алмастыру…" msgid "Find Next" msgstr "Келесі" msgid "Find Previous" msgstr "Алдыңғы" msgid "Show string &ID" msgstr "Жол &ID көрсету" msgid "Show String &ID" msgstr "Жол &ID көрсету" msgid "Show warnings" msgstr "Ескертулерді көрсету" msgid "Show Warnings" msgstr "Ескертулерді көрсету" msgid "Sort by &file order" msgstr "&Файлдар реті бойынша сұрыптау" msgid "Sort by &File Order" msgstr "&Файлдар реті бойынша сұрыптау" msgid "Sort by &source" msgstr "Ба&стапқы коды бойынша сұрыптау" msgid "Sort by &Source" msgstr "Ба&стапқы коды бойынша сұрыптау" msgid "Sort by &translation" msgstr "Аудар&ма бойынша сұрыптау" msgid "Sort by &Translation" msgstr "Аудар&ма бойынша сұрыптау" msgid "&Group by context" msgstr "Контекст бойынша &топтау" msgid "&Group By Context" msgstr "Контекст бойынша &топтау" msgid "Entries with errors first" msgstr "Алдымен қателері бар нәрселер" msgid "Entries with Errors First" msgstr "Алдымен қателері бар нәрселер" msgid "&Untranslated entries first" msgstr "Алд&ымен аударылмаған нәрселер " msgid "&Untranslated Entries First" msgstr "Алд&ымен аударылмаған нәрселер " msgid "&Show code occurrences" msgstr "Код кездесулерін көр&сету" msgid "&Show Code Occurrences" msgstr "Код кездесулерін көр&сету" msgid "Show sidebar" msgstr "Бүйір панелді көрсету" msgid "Show status bar" msgstr "Қалып-күй жолағын көрсету" msgid "&Translation" msgstr "&Аударма" msgid "&Update from source code" msgstr "&Бастапқы кодтан жаңарту" msgid "&Update from Source Code" msgstr "&Бастапқы кодтан жаңарту" msgid "Update from &POT file…" msgstr "POT &файлынан жаңарту…" msgid "Update from &POT File…" msgstr "POT &файлынан жаңарту…" msgid "Sync with Crowdin" msgstr "Crowdin қызметімен синхрондау" msgid "Pre-&translate…" msgstr "Алдын-ала ау&дару…" msgid "&Validate translations" msgstr "Аудармаларды &тексеру" msgid "&Validate Translations" msgstr "Аудармаларды &тексеру" msgid "Remove Same-as-Source Translations" msgstr "" msgid "&Purge deleted translations" msgstr "&Өшірілген аудармаларды жою" msgid "&Purge Deleted Translations" msgstr "Ө&шірілген аудармаларды жою" msgid "&Properties…" msgstr "Қас&иеттері…" msgid "&Go" msgstr "Ө&ту" msgid "&Done and next" msgstr "Да&йын және келесі" msgid "&Done and Next" msgstr "Да&йын және келесі" msgid "Previously edited" msgstr "Осыған дейін түзетілген" msgid "Previously Edited" msgstr "Осыған дейін түзетілген" msgid "&Previous translation" msgstr "&Алдыңғы аударма" msgid "&Previous Translation" msgstr "&Алдыңғы аударма" msgid "&Next translation" msgstr "&Келесі аударма" msgid "&Next Translation" msgstr "&Келесі аударма" msgid "P&revious unfinished" msgstr "Алдыңғ&ы аяқталмаған" msgid "P&revious Unfinished" msgstr "Алдыңғ&ы аяқталмаған" msgid "Ne&xt unfinished" msgstr "Келе&сі аяқталмаған" msgid "Ne&xt Unfinished" msgstr "Келе&сі аяқталмаған" msgid "Previous plural form" msgstr "Алдыңғы көпше түрі" msgid "Previous Plural Form" msgstr "Алдыңғы көпше түрі" msgid "Next plural form" msgstr "Келесі көпше түрі" msgid "Next Plural Form" msgstr "Келесі көпше түрі" msgid "&Online help" msgstr "Же&лідегі көмек" msgid "&Online Help" msgstr "Же&лідегі көмек" msgid "&GNU gettext manual" msgstr "&GNU gettext нұсқаулығы" msgid "&GNU gettext Manual" msgstr "&GNU gettext нұсқаулығы" msgid "&About Poedit" msgstr "Poedit т&уралы" msgid "&About" msgstr "&Осы туралы" msgid "Extractor setup" msgstr "Экстрактор баптаулары" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Нүктелі үтірмен ажыратылған кеңейтулер тізімі (мыс. *.cpp;*.h):" msgid "Invocation:" msgstr "Шақыру:" msgid "Command to extract translations:" msgstr "Аудармаларды шығарып алу командасы:" 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 - кодталу жалаушасын (төменде қараңыз) білдіреді." msgid "An item in keywords list:" msgstr "Кілт сөздер тізімінің біреуі:" msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Бұл жол әр кілт сөзі үшін командалық жолына қосылады.\n" "%k - кілт сөзімен алмастырылады." msgid "An item in input files list:" msgstr "Кіріс файлдар тізімінің біреуі:" #, 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 - файл атымен алмастырылады." msgid "Source code charset:" msgstr "Бастапқы код кодталуы:" #, 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 кодталу мәнімен алмастырылады." msgid "Translation Properties" msgstr "Аударма қасиеттері" msgid "Project name and version:" msgstr "Жоба аты мен нұсқасы:" msgid "Language team:" msgstr "Тілдік топ:" msgid "Plural forms:" msgstr "Көпше түрлері:" msgid "Use default rules for this language" msgstr "Бұл тіл үшін үнсіз келісім ережелерін қолдану" msgid "Use custom expression" msgstr "Таңдауыңызша өрнекті қолдану" msgid "Learn about plural forms" msgstr "Көпше түрлері жөнінде білу" msgid "Charset:" msgstr "Кодтауы:" msgid "Advanced Extraction Settings…" msgstr "Экстракторлардың кеңейтілген баптаулары…" msgid "Advanced extraction settings…" msgstr "Экстракторлардың кеңейтілген баптаулары…" msgid "Translation properties" msgstr "Аударма қасиеттері" msgid "Sources Paths" msgstr "Бастапқы кодтар орналасу жолдары" msgid "Sources paths" msgstr "Бастапқы кодтар орналасу жолдары" msgid "Extract text from source files in the following directories:" msgstr "Келесі бумалардағы бастапқы код файлдарынан мәтінді алу:" msgid "Base path:" msgstr "Негізгі жолы:" msgid "Sources Keywords" msgstr "Бастапқы код кілт сөздері" msgid "Sources keywords" msgstr "Бастапқы код кілт сөздері" msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Келесі кілт сөздерді (функциялар аттары) бастапқы\n" "кодтарда аударылатын жолдарды тану үшін қолдану:" msgid "Also use default keywords for supported languages" msgstr "" "Сонымен қатар, үнсіз келісім бойынша кілтсөздерді қолдауы бар тілдер үшін " "қолдану" msgid "Learn about gettext keywords" msgstr "Gettext кілттік сөздері туралы көбірек біліңіз" msgid "Update summary" msgstr "Жаңарту ақпараты" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" "Бұл жолдар бастапқы кодтардан табылды, бірақ файлда жоқ.\n" "Poedit оларды файл ішіне қазір қосады." msgid "New strings" msgstr "Жаңа жолдар" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" "Бұл жолдар бастапқы кодтарда енді жоқ.\n" "Poedit оларды файл ішінен қазір өшіреді." msgid "Obsolete strings" msgstr "Ескірген жолдар" msgid "(0 new, 0 obsolete)" msgstr "(0 жаңа, 0 ескірген)" msgid "Open" msgstr "" msgid "Open file" msgstr "Файлды ашу" msgid "Save file" msgstr "Файлды сақтау" msgid "Validate" msgstr "Тексеру" msgid "Check for errors in the translation" msgstr "Аударманы қателерге тексеру" msgid "Update from code" msgstr "Кодтан жаңарту" msgid "Update from Code" msgstr "Кодтан жаңарту" msgid "Update from source code" msgstr "Бастапқы кодтан жаңарту" msgid "Sidebar" msgstr "Бүйір панелі" msgid "Show or hide the sidebar" msgstr "Бүйір панелін көрсету/жасыру" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. msgid "Previous source text" msgstr "Бұрынғы қайнар көз мәтіні" msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "Дәлсіз аударма сәйкес келетін ескі бастапқы код мәтіні (жаңарту кезінде " "өзгергенге дейін)." msgid "Notes for translators" msgstr "Аудармашылар үшін ескертулер" msgid "Comment" msgstr "Түсіндірме" msgid "Add comment" msgstr "Пікір қосу" msgid "Add Comment" msgstr "Пікір қосу" msgid "Delete From Translation Memory" msgstr "Аудармалар жадысынан өшіру" msgid "Delete from translation memory" msgstr "Аудармалар жадысынан өшіру" msgid "Translation suggestions" msgstr "Аудармаға ұсыныстары" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). msgid "No matches found" msgstr "Сәйкестік табылмады" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). msgid "No Matches Found" msgstr "Сәйкестік табылмады" msgid "This string was found in Poedit’s translation memory." msgstr "Бұл жол Poedit-тің аудармалар жадысы ішінен табылды." msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "Аударма ұсыныстары қайнар көз мәтінінің бар болуын талап етеді. Нақты мәтін " "орнына тек ID қолданса, ол жасамайды." msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Аударма ұсыныстары қайнар көз тілінің белгілі болуы талап етеді. Poedit оны " "бұл файлдан таба алмады." msgid "The TMX file is malformed." msgstr "TMX файлының пішімі жарамсыз." msgid "No translations were found in the TMX file." msgstr "TMX файлынан аудармалар табылмады." #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Аудармалар жадысы дерекқоры зақымдалған: %s (%d)." #, c-format msgid "Translation memory error: %s (%d)." msgstr "Аударма жадысы қатесі: %s (%d)." msgid "Cannot create temporary directory." msgstr "Уақытша буманы жасау мүмкін емес." msgid "There are no translations. That’s unusual." msgstr "Аудармалар жоқ. Бұл әдепкі жағдай емес сияқты." msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "Translators typically use PO template files (POTs) prepared for them by the " "developer." msgstr "" "Аударуға келетін жазбалар Gettext жүйелерінде қолмен қосылмайды, олар " "бастапқы кодтан\n" "автоматты түрде шығарылады. Осылайша, жүйе ескірмеген және дәл күйде " "болады.\n" "Аудармашылар әдетте өңдіруші дайындаған PO үлгілер файлдарын (POT) қолданады." msgid "(Learn more about GNU gettext)" msgstr "(GNU gettext туралы көбірек білу)" msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "Бұл файлды аудармалармен толтырудың ең оңай жолы - оны POT файлынан жаңарту:" msgid "Update from POT" msgstr "POT файлынан жаңарту" msgid "Take translatable strings from an existing POT template." msgstr "Аударуға келетін жолдарды тікелей бар болып тұрған POT үлгісінен алу." msgid "" "You can also extract translatable strings directly from the source code:" msgstr "" "Сонымен қатар, сіз аударуға келетін жолдарды тікелей бастапқы кодтардан " "шығара аласыз:" msgid "Extract from sources" msgstr "Бастапқы кодтардан алу" msgid "Configure source code extraction in Properties." msgstr "Баптаулар ішінен бастапқы кодтан аудармаларды шығарып алуды баптаңыз." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #, c-format msgid "Version %s" msgstr "%s нұсқасы" msgid "Create new" msgstr "Жаңасын жасау" msgid "Create new translation from POT template." msgstr "POT файлынан жаңа аударманы жасау." msgid "Browse files" msgstr "Файлдарды шолу" msgid "Open and edit translation files." msgstr "Аудармалар файлдарын ашу және түзету." msgid "Translate cloud project" msgstr "Бұлттық жобаны аудары" msgid "Collaborate with other people online." msgstr "Басқа адамдармен бірігіп онлайн жұмыс жасаңыз." msgid "Recent files" msgstr "Жуырдағы файлдар" msgid "Sync" msgstr "Синхрондау" 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") #, c-format msgid "About %s" msgstr "%s туралы" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #, c-format msgid "%s Preferences" msgstr "%s баптаулары" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "Қызметтер" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "%s жасыру" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "Қалғанын жасыру" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "Барлығын көрсету" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "%s шығу" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "Баптаулар…" msgid "Preferences..." msgstr "Баптаулар..." #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "Жуырдағы" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "Жиі қолданылатын" msgid "&Apply" msgstr "Іске &асыру" msgid "Apply" msgstr "Іске асыру" msgid "&Back" msgstr "&Артқа" msgid "Back" msgstr "Артқа" msgid "&Cancel" msgstr "&Бас тарту" msgid "&Clear" msgstr "&Тазарту" msgid "Clear" msgstr "Тазарту" msgid "Copy" msgstr "Көшіру" msgid "Cu&t" msgstr "Қ&иып алу" msgid "Cut" msgstr "Қиып алу" msgid "Edit" msgstr "Түзету" msgid "&Quit" msgstr "&Шығу" msgid "Help" msgstr "Көмек" msgid "&New" msgstr "&Жаңа" msgid "New" msgstr "Жаңа" msgid "&No" msgstr "&Жоқ" msgid "No" msgstr "Жоқ" msgid "&OK" msgstr "&ОК" msgid "Open…" msgstr "Ашу…" msgid "&Open..." msgstr "А&шу..." msgid "Open..." msgstr "Ашу..." msgid "&Paste" msgstr "&Кірістіру" msgid "Paste" msgstr "Кірістіру" msgid "Preferences" msgstr "Баптаулар" msgid "&Redo" msgstr "Қа&йталау" msgid "Refresh" msgstr "Жаңарту" msgid "&Save as" msgstr "Қалайша &сақтау" msgid "Save as" msgstr "Қалайша сақтау" msgid "Select &All" msgstr "Б&арлығын таңдау" msgid "Select All" msgstr "Барлығын таңдау" msgid "&Undo" msgstr "&Болдырмау" msgid "&Yes" msgstr "&Иә" msgid "Yes" msgstr "Иә" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "Жоғары" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "Төмен" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "Сол жақ" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "Оң жақ" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "shift" poedit-3.5/locales/th.mo0000644000175100001770000025227214664354143012207 00000000000000t*9 9 9& 9G9<[99J9g9 ^:h: w:: ::::::::::::::;";&;8;J;P;U;];e;w;;; ; ;;;; ;;;; <<8<T<Z<`<i<o<x<< < < <<<< =&=?=V=m=s=x====== > >>'>/>8> <> H> T>a> p>|> > >> >> >>> ?%?.?N?k?? ? ?1??'?@6@ P@[@7a@6@@)@A A]*AA<ADA$BBB IBVBB B"BC+*C)VC CCCCCCCC D'D#OCOYO(xOTO OP P P!P5PFP[P pP zP P PPPPPPP PQ QQ Q (Q 4QAQQQpQQQ7RzR:S ASMS`S |SSS2SST T"T@T XTyT T TTTT;T(U1UNUaU pU zUUU UUUU:U 6V<DV VV.WJWZW*jWWW WWW*WXX,X =X HXSXYY,Y EYQYbYsYvY#Y\YZ'Z/AZ+qZZ$Z%ZZ[['[+[[[ [ [ \7\ Q\[\j\ y\\\\\\\\\\]]]]=]^1^L^ne^E^_!_;:_ v___@__`,a,aa bb2%b*Xbbbw%cjc dd#d2d%Gdmdddddd dde ee#e>eCe8Kee eee e e ee e ee f( f4f:fzSfffff f f g g!g )g 4g Ag Kg Xg dgoggg"gggh h 'h 4h@hGh Ph]hwhhh h hhhh h ii!+i Mi[icikiti |iiiiiii i i jj,jՙH*EsH3*6$a{iIq@*'h=Q7j" 09Sؠc!(ʣ$ݣ]L`~~,E::,9g$Ʀ9N?l0Kݧ0)3Z ٨ 6!6XWE@-!n@''H8f 0EM0EĭH S֮<k-įL9?/y 44ӱ9 B<LKܲKA']`Y s(&'O*w*9dQk~Q<Q %%!$G$l$$۹6Ul?lZhtQݽE/Uu˾0%4!Z9|%uܿ6R-R E04_L]Q d\ 3-L0}NK'-*?J''$1$V{B' #6H^n-$ET&{~k`u*"39 "G3jr6 HHS[B?;{*0 Z;?($$ ;3IP}Z3)Q]V (z*S>~c?!?aPZ!MoH0* *:8:s**;;(d66?fA?c6`7;3sWs<s $9o,6B656l***0=n~CC!?(a@ K!7I[k:0(rBYCo%!-H)lr3@!! 6+cb??KF99F"MpKQ Zdz%DT!j!))*2]YsE&B\ r|""!!!8<Z%$A*_$N6B5x!!-B<$)<3 !?a*}E-$)AKk!!'#'B$jH>H`?-' 3+ 5_ ; , 5 ;4 ,p 7  E 06 *g 6 1 < 68 <o 6   61-"_(Kw-o0f 2I6h?\3<pR0U,ew!Y3\8 N!F"~e""#`$$%"&&o'T'H(?(A-)Jo)Q){ **U_+C,,o-9./01233g4pK6.678 :'#:=K:0<.<<<3==O=-=]=f>Z>=>-?'G?^o?@AA BBBXC\CKsCC CC'C`#DD/ E/=E'mE+E'E6E' FHF0[FF?7GHwGUGHH9_H<HUHm,INII<JJ$K7KTGK4KKK*LHLaLiLMM'+M SM]MNNOP1PPQQQ*QRoR(uRFRxR ^S]SS0SJT_TJoT|Lo[GvO1~M<Jf^\^tSJIM`'W oYL3NF1Bl0nqg3Rm{X/'|ibk)+&j_A"0-}_Z~Z)c]yt..mi'6 kr?@jay{W:7!,w4,U 46@9}BR Uufn+Gd EL/YCin/=x#>p`z%FC8V~4DuJXb-G [c|As*[7#gdem O*QSw*2Pv; ?"Dq`]p0br H1NT":5h+Q,eA> Yke<X ]@RQcu Hpr!%jf;(8xC7TB^{V=dKEPlWIFx\V(Twl KhO. q-}Z) NU#IM?6=(&Etva>zS\D<5z2H9ys5;:KP3 go$$ 8a&h!_s%92$  (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd AccountAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add accountAdd 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 languagesAlt+Always 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 errorCrowdin is an online localization management platform and collaborative translation tool.Ctrl+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 no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownDownloading 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:EnterEnter 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 loading translation file “%s”.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export errorExport 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…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)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport from TMX…Import translation files…Importing translation memory from “%s” 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 CrowdinLeftLine %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 translations were found in the TMX file.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKObsolete stringsOneOnly 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 translation templateOpen...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 translationsQuitQuit %sReading file content failed with the following error: %sRecentRecent 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 FinderReviewRightSaveSave &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 languageServicesSet LanguageSet languageSettings…Shift+Show AllShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow summary after updating filesShow 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.These strings are no longer in the source code. Poedit will remove them from the file now.These strings were found in the sources but were not in the file. Poedit will add them to the file now.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 entries in the file are probably incorrect.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.UntransUpUpdateUpdate 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 the file failed. Click on 'Details >>' for details.Updating 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown 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: 2024-08-30 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&ไป&จัดกลุ่มตามบริบท&จัดกลุ่มตามบริบท&ช่วยเหลือ&สร้าง&สร้างใหม่…&ถัดไป >&การแปลถัดไป&การแปลถัดไปไ&ม่ใช่&ตกลง&ความช่วยเหลือออนไลน์&ความช่วยเหลือออนไลน์&เปิด...&เปิด…&วาง&การตั้งค่า&การตั้งค่า...&การแปลก่อนหน้า&การแปลก่อนหน้า&คุณสมบัติ…&ล้างข้อมูลการแปลที่ลบไปแล้ว&ล้างข้อมูลการแปลที่ลบไปแล้ว&ออก&ทำซ้ำ&แทนที่&บันทึก&บันทึกเป็น&แสดงตำแหน่งที่พบในรหัส&แสดงตำแหน่งที่พบในรหัสหน้าต่างเมื่อเ&ริ่มทำงานหน้าต่างเมื่อเ&ริ่มทำงาน&การแปล&เลิกทำ&ขึ้นต้นด้วยรายการที่ยังไม่ได้แปลก่อน&ขึ้นต้นด้วยรายการที่ยังไม่ได้แปลก่อน&อัพเดตจากซอร์สโค้ด&อัพเดตจากซอร์สโค้ด&ตรวจสอบการแปล&ตรวจสอบการแปล&มุมมองใ&ช่(0 ใหม่, 0 ล้าสมัย)(เรียนรู้เพิ่มเติมเกี่ยวกับ GNU gettext)(ใหม่: %i, ล้าสมัย: %i)(ใช้ภาษาเริ่มต้น)(ไม่ได้เข้าสู่ระบบ)(จำเป็นต้องใช้ Windows 8 หรือใหม่กว่า)< &ก่อนหน้า<ไม่มีชื่อ>เกี่ยวกับ %sบัญชีผู้ใช้บัญชีเพิ่มเพิ่มบัญชีเพิ่มคำแนะนำเพิ่มไฟล์…เพิ่มโฟลเดอร์…เพิ่มโครงการเพิ่มอักขระตัวแทน…เพิ่มบัญชีเพิ่มคำแนะนำเพิ่มตำแหน่งไปยังรายการเพิ่มไฟล์…เพิ่มโฟลเดอร์…เพิ่มโครงการเพิ่มอักขระตัวแทน…คำสำคัญเพิ่มเติมค่าสถานะ xgettext เพิ่มเติม:ขั้นสูงการตั้งค่าการแยกขั้นสูง…การตั้งค่าการแยกขั้นสูงการตั้งค่าการแยกขั้นสูง…ไฟล์การแปลทั้งหมดคำแนะนำทั้งหมดสตริงทั้งหมดใช้คำสำคัญเริ่มต้นสำหรับภาษาที่รองรับด้วยAlt+เปลี่ยนโฟกัสไปยังพื้นที่ป้อนข้อความรายการในรายการไฟล์นำเข้า:รายการในรายการคำสำคัญ:ลักษณะที่ปรากฏนำไปใช้คุณแน่ใจหรือว่าคุณต้องการลบตัวแยก "%s"คุณแน่ใจหรือว่าคุณต้องการรีเซ็ตหน่วยความจำการแปลตรวจหาการอัพเดตโดยอัตโนมัติคอมไพล์ไฟล์ MO โดยอัตโนมัติเมื่อบันทึกย้อนกลับเส้นทางหลัก:เวอร์ชั่นเบต้าประกอบด้วยคุณสมบัติและการปรับปรุงใหม่ล่าสุด แต่อาจเสถียรน้อยกว่านำทั้งหมดมาด้านหน้าไฟล์ PO เสียหาย: รูปพหูพจน์ msgstr ถูกใช้โดยไม่มี msgid_pluralแฟ้มรายการที่เสียหาย: รูปแบบเอกพจน์ถูกใช้ร่วมกับรูปแบบพหูพจน์มาร์กอัปใช้งานไม่ได้ในการแปลสตริงเรียกดูเรียกดูไฟล์ตามค่าเริ่มต้น ผลลัพธ์ที่ไม่ถูกต้องจะรวมอยู่ด้วย แต่ทำเครื่องหมายว่าต้องดำเนินการ เลือกตัวเลือกนี้เพื่อรวมเฉพาะการจับคู่ที่สมบูรณ์แบบเท่านั้นยกเลิกกำลังยกเลิก…ไม่สามารถสร้างไดเรกทอรีชั่วคราวไม่สามารถเรียกใช้โปรแกรม: %sไม่สามารถแปลล่วงหน้าจากภาษาที่ไม่รู้จักได้ไม่สามารถแปลล่วงหน้าโดยไม่มีข้อความต้นฉบับขึ้นต้นด้วยตัวพิมพ์ใหญ่ตัวจัดการ&แค็ตตาล็อกตัวจัดการ&แค็ตตาล็อกตัวจัดการแค็ตตาล็อกเปลี่ยนภาษา UIชุดอักขระ:ตรวจสอบเอกสารตอนนี้ตรวจสอบไวยากรณ์ด้วยการสะกดตรวจสอบการสะกดขณะป้อนตรวจหาการอัพเดต…ตรวจสอบข้อผิดพลาดในการแปลตรวจหาการอัพเดต…การตรวจสอบการสะกดล้างล้างรายการล้างการแปลล้างรายการล้างการแปลปิดตำแหน่งที่พบในรหัสตำแหน่งที่พบในรหัสทำงานร่วมกับผู้อื่นทางออนไลน์กำลังรวบรวมไฟล์ต้นฉบับ…คำสั่งที่ใช้แยกการแปล:ความคิดเห็นคำแนะนำ:คำแนะนำที่ขึ้นต้นด้วย:คอมไพล์เป็น MO…คอมไพล์ไปยัง…ไฟล์การแปลที่คอมไพล์แล้วกำหนดค่าการแยกซอร์สโค้ดในคุณสมบัติการยืนยันเชื่อมต่อ Poedit กับแพลตฟอร์มการแปลบนคลาวด์ที่รองรับเพื่อซิงค์การแปลที่จัดการได้อย่างราบรื่นคัดลอกคัดลอกจากเอกพจน์คัดลอกจากข้อความต้นฉบับคัดลอกจากเอกพจน์คัดลอกจากข้อความต้นฉบับแก้ไขการสะกดโดยอัตโนมัติไม่สามารถดาวน์โหลดรายละเอียดโปรเจ็กต์ Localazy ได้ไม่สามารถโหลดไฟล์ เนื่องจากอาจเป็นเพราะไฟล์เสียหายไม่สามารถบันทึกไฟล์ %sสร้างใหม่สร้างการแปลใหม่สร้างการแปลใหม่จากแม่แบบ POTสร้างโครงการแปลใหม่ข้อผิดพลาดของ CrowdinCrowdin เป็นแพลตฟอร์มการจัดการโลคัลไลเซชันออนไลน์และเครื่องมือการแปลแบบร่วมมือกันCtrl+&ตัดตัวแยกแบบกำหนดเอง:ตัวแยกแบบกำหนดเอง:กำหนดแถบเครื่องมือ...ตัดขนาดฐานข้อมูลบนดิสก์ลบลบออกจากหน่วยความจำการแปลลบตัวแยกลบออกจากหน่วยความจำการแปลลบโครงการลบความคิดเห็นลบโครงการการลบโครงการจะไม่ลบไฟล์การแปลใดๆที่ตั้ง:คุณต้องการลบโครงการ “%s” หรือไม่?คุณต้องการรีโหลดไฟล์จากดิสก์หรือไม่? การแก้ไขที่ยังไม่บันทึกของคุณใน Poedit จะสูยหายหากคุณรีโหลดคุณต้องการลบการแปลทั้งหมดที่ไม่ได้ใช้งานอีกต่อไปหรือไม่&ไม่ต้องบันทึกไม่ต้องบันทึกไม่ต้องแสดงอีกไม่ต้องทำเครื่องหมายรายการที่ตรงกันว่าต้องการทำงานไม่ต้องแสดงอีกลงกำลังดาวน์โหลดการแปลล่าสุด…การดาวน์โหลดการแปลถูกปิดใช้งานในโครงการนี้ลากโฟลเดอร์หรือไฟล์มาที่นี่ลากโฟลเดอร์หรือไฟล์มาที่นี่&ออกแก้ไขแก้ไขคำแ&นะนำแก้ไขคำแ&นะนำแก้ไขคำแนะนำแก้ไขคำแนะนำแก้ไขโครงการแก้ไขโครงการการแก้ไขแก้ไข…อีเมล:Enterเข้าโหมดเต็มหน้าจอรายการในไฟล์นี้มีการนับรูปแบบพหูพจน์แตกต่างจากที่กำหนดไว้ในส่วนหัว Plural-Forms ของไฟล์ขึ้นต้นด้วยรายการที่มีข้อผิดพลาดก่อนขึ้นต้นด้วยรายการที่มีข้อผิดพลาดก่อนรายการที่มีข้อผิดพลาดจะถูกทำเครื่องหมายเป็นสีแดงไว้ในรายการ รายละเอียดของข้อผิดพลาดจะแสดงเมื่อคุณเลือกรายการดังกล่าวเกิดข้อผิดพลาดในการโหลดไฟล์การแปล "%s"เกิดข้อผิดพลาดในการเปิดไฟล์ข้อผิดพลาดขณะบันทึกแฟ้มเกิดข้อผิดพลาดขณะโหลดไฟล์ XLIFF: %sข้อผิดพลาดทุกอย่างเส้นทางที่คัดออกส่งออกเป็น TMX…ส่งออกเป็น…ข้อผิดพลาดการส่งออกส่งออกเป็น TMX…ไม่สามารถส่งออกหน่วยความจำการแปลเป็น “%s”กำลังส่งออกการแปล…แยกจากซอร์สโค้ดแยกบันทึกย่อสำหรับนักแปลจาก:แยกข้อความจากไฟล์ต้นฉบับในไดเรกทอรีต่อไปนี้:กำลังแยกสตริงที่แปลได้…การติดตั้งตัวแยกตัวแยกคำสั่งที่ล้มเหลว: %sการสื่อสารกับกระบวนการ Poedit ล้มเหลวไม่สามารถโหลดไฟล์ที่มีการแปลแยกการผสานแค็ตตาล็อก gettext ล้มเหลวไม่สามารถอัพเดตหน่วยความจำการแปล: %sไฟล์ไม่สามารถเปิดไฟล์ไม่มีไฟล์ "%s" อยู่ไฟล์ “%s” ไม่ใช่ไฟล์ในการแปลไฟล์ "%s" อ่านได้อย่างเดียวและไม่สามารถบันทึกได้ โปรดบันทึกโดยใช้ชื่ออื่นกำลังดำเนินการขั้นสุดท้าย…ค้นหาค้นหาถัดไปค้นหาก่อนหน้าค้นหาและแทนที่…ค้นหาในคำแนะนำค้นหาในข้อความต้นฉบับค้นหาในการแปลค้นหาถัดไปค้นหาก่อนหน้าแก้ไขภาษาแก้ไขภาษาแก้ไขส่วนหัวแก้ไขส่วนหัวไฟล์แปล Flutterฟอร์ม %iแบบฟอร์ม %i (ไม่ได้ใช้งาน)ใช้บ่อยที่สุดGNU gettextทั่วไปไฟล์ HTMLวิธีใช้ซ่อน %sซ่อนคนอื่นซ่อนแถบด้านข้างซ่อนแถบสถานะซ่อนข้อความแจ้งเตือนนี้การซิงค์บนคลาวด์ทำงานอย่างไรIDถ้าคุณดำเนินการล้างข้อมูลต่อไป การแปลทั้งหมดที่ทำเครื่องหมายว่าลบแล้วจะถูกเอาออกอย่างถาวร ถ้ามีการนำข้อความเหล่านี้กลับมาใช้อีกในอนาคต คุณจะต้องแปลข้อความเหล่านี้ใหม่หากก่อนหน้านี้คุณถูกปฏิเสธการเข้าถึงไฟล์ของคุณ คุณสามารถอนุญาตได้ในการตั้งค่าระบบ> ความปลอดภัยและความเป็นส่วนตัว> ความเป็นส่วนตัว> ไฟล์และโฟลเดอร์หากก่อนหน้านี้คุณปฏิเสธการเข้าถึงไฟล์ คุณสามารถอนุญาตได้ในการตั้งค่าระบบ > ความเป็นส่วนตัวและความปลอดภัย > ไฟล์และโฟลเดอร์เพิกเฉยละเว้นตัวพิมพ์นำเข้าจาก TMX…นำเข้าไฟล์การแปล…ข้อผิดพลาดการนำเข้านำเข้าจาก TMX…นำเข้าไฟล์การแปล…ไม่สามารถนำเข้าหน่วยความจำการแปลจาก “%s”กำลังนำเข้าการแปล…ใน: %sประกอบด้วยเวอร์ชั่นเบต้าตัวพิมพ์ใหญ่-เล็กไม่สม่ำเสมอกันช่องว่างไม่สม่ำเสมอกันข้อมูลเกี่ยวกับผู้แปลติดตั้งไฟล์ไม่ถูกต้องการร้องขอ:ไฟล์แปล JSONเก็บไว้ชื่อภาษาหรือรหัสภาษาการแปลเหมือนกับภาษาต้นฉบับไม่ได้กำหนดภาษาการแปลภาษาของการแปล:การเลือกภาษาทีมภาษา:ภาษา:ปรับเปลี่ยนล่าสุดเรียนรู้เกี่ยวกับคำสำคัญ Gettextเรียนรู้เกี่ยวกับรูปแบบพหูพจน์เรียนรู้เพิ่มเติมเรียนรู้เพิ่มเติมเกี่ยวกับ %sเรียนรู้เพิ่มเติมเกี่ยวกับ Crowdinซ้ายข้อมูลในบรรทัดที่ %d ในไฟล์ "%s" เสียหาย (ข้อมูล %s ไม่ถูกต้อง)สิ้นสุดบรรทัด:รายการของส่วนขยายแยกโดยใช้อัฒภาค (เช่น *.cpp;*.h):โหลดภาษาอังกฤษLocalazy เป็นแพลตฟอร์มการแปลอัตโนมัติที่ช่วยให้ทุกคนสามารถแปลผลิตภัณฑ์และเนื้อหาของตนเป็นหลายภาษาได้อย่างง่ายดายไฟล์ MO ไม่สามารถแก้ไขโดยตรงใน Poedit ได้ทำให้เป็นตัวพิมพ์เล็กทำให้เป็นตัวพิมพ์ใหญ่สร้างการแปลใหม่จากไฟล์ POT นี้ส่วนหัวมีรูปแบบที่ไม่ถูกต้อง: "%s"จัดการบัญชีจัดการ…กำลังผสานส่วนที่แตกต่าง…ย่อให้เล็กที่สุดชื่อโครงการแปลชื่อ:ที่ยังไม่เสร็จถัดไ&ปที่ยังไม่เสร็จถัดไ&ปต้องการตรวจทานต้องการตรวจทานอย่าโฟกัสไปที่รายการสตริง ถ้าเปิดใช้งาน คุณจะต้องใช้ลูกศรและ Ctrl สำหรับการนำทางแป้นพิมพ์ แต่คุณก็สามารถพิมพ์ข้อความได้ทันที โดยไม่ต้องกดปุ่ม Tab เพื่อเปลี่ยนโฟกัสสร้างใหม่สร้างใหม่&จากไฟล์ POT/PO…สร้างใหม่&จากไฟล์ POT/PO…สตริงใหม่รูปแบบพหูพจน์ถัดไปรูปแบบพหูพจน์ถัดไปไม่ใช่ไม่พบผลลัพธ์ที่ตรงกันไม่มีรายการที่สามารถแปลล่วงหน้าได้ไม่มีข้อมูลเกี่ยวกับตำแหน่งที่พบของสตริงนี้ในรหัสต้นฉบับในไฟล์ไม่พบผลลัพธ์ที่ตรงกันไม่พบปัญหาในการแปลไม่มีโครงการแปลอยู่ในบัญชีของคุณไม่พบการแปลในไฟล์ TMXไม่มีข้อมูลการใช้ไม่ได้แปลรูปแบบพหูพจน์ทั้งหมดไม่ได้รับอนุญาต โปรดเข้าสู่ระบบอีกครั้งหมายเหตุสำหรับนักแปลตกลงข้อมูลโดยแท้หนึ่งเปิดใช้งานก็ต่อเมื่อคุณเชื่อถือคุณภาพของหน่วยความจำการแปลของคุณเท่านั้น โดยเริ่มต้น รายการที่ตรงกันจากหน่วยความจำการแปลจะถูกทำเครื่องหมายว่าต้องการตรวจทานและควรจะได้รับการตรวจทานก่อนจะนำไปใช้เติมข้อมูลลงในรายการที่ตรงกันเท่านั้นเปิดการแปลบนคลาวด์เปิดล่าสุดเปิดและแก้ไขไฟล์การแปลเปิดการแปลบนคลาวด์เปิดการแปลบนคลาวด์เปิดไฟล์เปิดในตัวแก้ไขเปิดในตัวแก้ไขเปิดไฟล์ล่าสุดเปิดแม่แบบการแปลเปิด...เปิด…ตัวเลือกอื่นๆที่ยังไม่เสร็จก่อน&หน้าที่ยังไม่เสร็จก่อน&หน้าไฟล์การแปล 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การอ่านเนื้อหาไฟล์ล้มเหลวโดยมีข้อผิดพลาดต่อไปนี้: %sล่า​สุดไฟล์ล่าสุดทำซ้ำรี​เฟรชโหลดไฟล์ซ้ำโหลดไฟล์ซ้ำคงเหลือ: %dแทน​ที่แทนที่ &ทั้งหมดแทนที่ &ทั้งหมดสตริงการแทนที่แทนที่…ส่วนหัว Plural-Forms ที่จำเป็นไม่มีอยู่รีเซ็ตรีเซ็ตหน่วยความจำการแปลการรีเซ็ตหน่วยความจำการแปลจะลบการแปลที่เก็บไว้ออกอย่างถาวร คุณไม่สามารถยกเลิกการดำเนินการนี้ได้แสดงใน Finderตรวจทานขวาบันทึกบันทึกเ&ป็น…บันทึกเ&ป็น…บันทึกต่อไปบันทึกต่อไปบันทึกเป็นบันทึกเป็น…บันทึกการเปลี่ยนแปลงบันทึกไฟล์ภาพหน้าจอเลือก&ทั้งหมดเลือกทั้งหมดเลือกไฟล์ TMX ที่จะนำเข้าเลือกไดเรกทอรีเลือกไฟล์แปลเลือกไฟล์การแปลที่จะนำเข้าเลือกเทมเพลตการแปลเลือกภาษาที่คุณต้องการบริการกำหนดภาษากำหนดภาษาการตั้งค่า…Shift+แสดงทั้งหมดแสดงแถบด้านข้างแสดงการสะกดและไวยากรณ์แสดงแถบสถานะแสดง &รหัสสตริงแสดงการเปลี่ยนแทนที่แสดงแถบเครื่องมือแสดงคำเตือนแสดงใน 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 ปรับการตั้งค่าเหล่านี้ถ้าคุณมีความจำเป็นเฉพาะ อย่างเช่น เนื่องจากการควบคุมเวอร์ชั่นสตริงเหล่านี้ไม่ได้อยู่ในรหัสต้นฉบับอีกต่อไปแล้ว Poedit จะเอาสตริงเหล่านี้ออกจากไฟล์ทันทีพบสตริงเหล่านี้ในต้นฉบับ แต่ไม่ได้อยู่ในไฟล์ Poedit จะเพิ่มสตริงเหล่านี้ไปยังไฟล์ทันทีไฟล์ JSON นี้ไม่ใช่ไฟล์การแปลและไม่สามารถแก้ไขได้ใน Poeditไฟล์นี้มีรายการที่มีรูปแบบพหูพจน์ แต่ไม่ได้กำหนดค่าส่วนหัว Plural-Forms ไว้ไฟล์นี้ใช้รหัสสตริงแทนข้อความต้นฉบับ Poedit สามารถโหลดข้อความภาษาอังกฤษจากไฟล์ “%s” ให้คุณได้นี่คือคำสั่งที่จะใช้เรียกใช้ตัวแยก %o ขยายชื่อไฟล์ขาออก %K ขยายรายการ คำสำคัญ %F ขยายไฟล์นำเข้า %C ขยายค่าสถานะชุดอักขระ (ดูด้านล่าง)สตริงนี้ถูกพบในหน่วยความจำการแปลของ Poeditการดำเนินการนี้จะแนบไฟล์ไปยังบรรทัดคำสั่ง เมื่อรหัสชุดอักขระถูกกำหนดให้เท่านั้น %c จะขยายค่าของชุดอักขระการดำเนินการนี้จะแนบไฟล์ไปยังบรรทัดคำสั่งหนึ่งครั้ง สำหรับไฟล์แต่ละไฟล์ %f จะขยายชื่อไฟล์การดำเนินการนี้จะแนบไฟล์ไปยังคำสั่งหนึ่งครั้ง ต่อคำสำคัญที่ใช้แต่ละคำ %k จะขยายชื่อของคำสำคัญที่ใช้ทั้งหมดการแปลงรูปแบบรายการที่สามารถแปลได้จะไม่ถูกเพิ่มลงในระบบของ Gettext เอง แต่จะถูกแยกจากซอร์สโค้ดโดยอัตโนมัติ ซึ่งช่วยให้การแปลทันสมัยและแม่นยำ โดยทั่วไป นักแปลจะใช้ไฟล์แม่แบบ PO (นามสกุลไฟล์ POT) ที่เตรียมไว้ให้โดยนักพัฒนาแปลโครงการคลาวด์แปลแล้ว: %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 เท่านั้นศูนย์ย่อ/ขยายaltต้องการตรวจทานctrlไม่ต้องลบไฟล์ชั่วคราว (สำหรับการดีบั๊ก)เช่น nplurals=2; plural=(n > 1);การจับคู่แบบ Fuzzy ภายในไฟล์ไปยังรายการที่อยู่ในหมายเลขบรรทัดที่ระบุจัดการ URI poedit://แปลจากหน่วยความจำการแปลล่วงหน้าshiftภาษาที่ไม่รู้จักเวอร์ชั่นที่ไม่สนับสนุน (%s)you@example.com“%s” ไม่ใช่ไฟล์ POT ที่ถูกต้องpoedit-3.5/locales/Makefile.am0000644000175100001770000000553114664354065013270 00000000000000 POEDIT_LINGUAS = af an ar az be be@latin 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 sv tg th tr 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.5/locales/sv.po0000644000175100001770000020014214664354065012217 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "Dölj det här meddelandet" msgid "Don’t Show Again" msgstr "Visa inte igen" msgid "Don’t show again" msgstr "Visa inte igen" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(Nya: %i, föråldrade: %i)" msgid "Collecting source files…" msgstr "Samlar in källfiler…" msgid "Extracting translatable strings…" msgstr "Extraherar översättningsbara strängar…" msgid "Failed to load file with extracted translations." msgstr "Det gick inte att läsa in filen med extraherade översättningar." msgid "Merging differences…" msgstr "Sammanfogar skillnader…" msgid "Updating translations" msgstr "Uppdaterar översättningar" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "Filen “%s” kunde inte öppnas." msgid "Invalid file" msgstr "Ogiltig fil" #, c-format msgid "Malformed header: “%s”" msgstr "Felaktig rubrik: \"%s\"" msgid "PO Translation Files" msgstr "PO-översättningsfiler" msgid "POT Translation Templates" msgstr "POT-översättningsmallar" msgid "XLIFF Translation Files" msgstr "XLIFF översättningsfiler" msgid "JSON Translation Files" msgstr "JSON översättningsfiler" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "Flutter översättningsfiler" msgid "All Translation Files" msgstr "Alla översättningsfiler" msgid "The file is in a format not recognized by Poedit." msgstr "Filen är i ett format som inte känns igen av Poedit." 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." #, 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" #, 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." #, c-format msgid "Couldn’t save file %s." msgstr "Kunde inte spara filen %s." msgid "Screenshots:" msgstr "Skärmklipp:" #, 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." #, 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)." msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" "Trasig PO-fil: singularformen msgstr används tillsammans med msgid_plural" msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "Trasig PO-fil: pluralformen msgstr används utan msgid_plural" msgid "Couldn’t load the file, it is probably damaged." msgstr "Det gick inte att ladda filen, den är förmodligen skadad." 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." 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)." #, 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." msgid "Error saving file" msgstr "Fel vid sparande av fil" #, c-format msgid "“%s” is not a valid POT file." msgstr "\"%s\" är inte en giltig POT-fil." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Fel vid laddning av XLIFF-fil: %s" #, 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 msgid "Broken markup in translation string." msgstr "Trasig markering i översättningssträng." msgid "(Use default language)" msgstr "(Använd standardspråk)" msgid "Language selection" msgstr "Språkval" msgid "Select your preferred language" msgstr "Välj önskat språk" msgid "You must restart Poedit for this change to take effect." msgstr "Du måste starta om Poedit för att denna ändring ska träda i kraft." msgid "Add Account" msgstr "Lägg till konto" msgid "Add account" msgstr "Lägg till konto" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "Läs mer om %s" 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." msgid "How does cloud sync work?" msgstr "Hur fungerar molnsynkronisering?" msgid "Account" msgstr "Konto" msgid "(not signed in)" msgstr "(Inte inloggad)" msgid "File" msgstr "Arkiv" msgid "Open cloud translation" msgstr "Öppna molnöversättning" msgid "Manage accounts" msgstr "Hantera konton" msgid "Project:" msgstr "Projekt:" msgid "Language:" msgstr "Språk:" msgid "Sign in to Cloud Account" msgstr "Logga in på molnkonto" msgid "Sign in to cloud account" msgstr "Logga in på molnkonto" msgid "No translation projects listed in your account." msgstr "Inga översättningsprojekt listade på ditt konto." msgid "Downloading latest translations…" msgstr "Hämtar senaste översättningar…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #, c-format msgid "Sign in to %s" msgstr "Logga in på %s" msgid "Syncing" msgstr "Synkroniserar" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, 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. #, c-format msgid "Uploading translations to %s failed." msgstr "Det gick inte att ladda upp översättningar till %s." msgid "Syncing error" msgstr "Synkroniseringsfel" msgid "Add" msgstr "Lägg till" msgid "Unknown Crowdin error." msgstr "Okänt Crowdin-fel." msgid "Not authorized, please sign in again." msgstr "Inte behörig, vänligen logga in igen." msgid "Downloading translations is disabled in this project." msgstr "Nedladdning av översättningar är inaktiverade i detta projekt." msgid "Sign In" msgstr "Logga in" msgid "Sign in" msgstr "Logga in" msgid "Sign Out" msgstr "Logga ut" msgid "Sign out" msgstr "Logga ut" msgid "Learn more about Crowdin" msgstr "Lär dig mer om Crowdin" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" "Crowdin är en onlineplattform för lokaliseringshantering och ett " "samarbetsverktyg för översättning." msgid "Waiting for authentication…" msgstr "Väntar på autentisering…" msgid "Updating user information…" msgstr "Uppdaterar användarinformation…" msgid "Sign in to Crowdin" msgstr "Logga in på Crowdin" msgid "Syncing with Crowdin failed." msgstr "Synkronisering med Crowdin misslyckades." msgid "Crowdin error" msgstr "Crowdin-fel" msgid "Uploading translations…" msgstr "Laddar upp översättningar…" msgid "&Copy" msgstr "&Kopiera" msgid "Learn more" msgstr "Läs mer" msgid "&Help" msgstr "&Hjälp" msgid "MO files can’t be directly edited in Poedit." msgstr "MO-filer kan inte öppnas med Poedit." msgid "Error opening file" msgstr "Problem när filen lästes in" 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å." msgid "don’t delete temporary files (for debugging)" msgstr "ta inte bort temporära filer (för felsökning)" msgid "handle a poedit:// URI" msgstr "hantera en poedit:// URI" msgid "go to item at given line number" msgstr "gå till post på givet radnummer" msgid "Failed to communicate with Poedit process." msgstr "Misslyckades att kommunicera med Poedit-processen." #, c-format msgid "Unhandled exception occurred: %s" msgstr "Ohanterat undantag inträffade: %s" msgid "Select translation template" msgstr "Välj översättningsmall" msgid "Select translation file" msgstr "Välj översättningsfil" msgid "Poedit is an easy to use translation editor." msgstr "Poedit är en lättanvänd översättningsredigerare." 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." #, c-format msgid "File “%s” is not a translation file." msgstr "Filen ”%s” är inte en översättningsfil." #, c-format msgid "File “%s” doesn’t exist." msgstr "Filen \"%s\" finns inte." 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". #, 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." msgid "Install" msgstr "Installera" #, c-format msgid "The file “%s” has been changed by another application." msgstr "Filen ”%s” har ändrats av ett annat program." msgid "Reload file" msgstr "Läs om fil" 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." msgid "Ignore" msgstr "Ignorera" msgid "Reload File" msgstr "Läs om fil" msgid "The file has been modified. Do you want to save changes?" msgstr "Filen har ändrats. Vill du spara ändringarna?" msgid "Save changes" msgstr "Spara ändringar" msgid "Your changes will be lost if you don’t save them." msgstr "Dina ändringar går förlorade om du inte sparar dem." msgid "Save" msgstr "Spara" msgid "Do&n’t save" msgstr "Spara i&nte" msgid "Don’t Save" msgstr "Spara inte" 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." msgid "Cancel" msgstr "Avbryt" msgid "Save Anyway" msgstr "Spara ändå" msgid "Save anyway" msgstr "Spara ändå" msgid "Save as…" msgstr "Spara som…" msgid "Compile to…" msgstr "Kompilera till…" msgid "Compiled Translation Files" msgstr "Kompilerade översättningsfiler" msgid "Export to HTML…" msgstr "Exportera till HTML…" msgid "HTML Files" msgstr "HTML-filer" #, c-format msgid "In: %s" msgstr "I: %s" msgid "Source code not available." msgstr "Ingen källkod tillgänglig." msgid "Updating failed" msgstr "Uppdatering misslyckades" 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." msgid "Permission denied." msgstr "Åtkomst nekad." 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. 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. 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." msgid "Translation entries in the file are probably incorrect." msgstr "Översättningsposter i filen är förmodligen felaktiga." msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "" "Uppdatering av filen misslyckades. Klicka på 'Detaljer >>' för detaljer." msgid "Open translation template" msgstr "Öppna översättningsmall" #, 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." msgid "Validation results" msgstr "Valideringsresultat" 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." msgid "The file was saved safely." msgstr "Filen sparades på ett säkert sätt." 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." 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." 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." msgid "The file cannot be compiled into the MO format and used." msgstr "Filen kan inte kompileras till MO-format och användas." msgid "No problems with the translation found." msgstr "Inga problem med översättningen hittades." #, 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." msgid "The translation is ready for use." msgstr "Översättningen är klar för användning." #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "Poedit rättade automatiskt ogiltigt innehåll i filen \"%s\"." msgid "" "The file contained duplicate items, which is not allowed in PO files and " "would prevent the file from being used. Poedit fixed the issue, but you " "should review translations of any items marked as 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." msgid "Language of the translation isn’t set." msgstr "Översättningsspråk är inte inställt." msgid "Set Language" msgstr "Ange språk" msgid "Set language" msgstr "Ange språk" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." msgid "" "Suggestions are not available if the translation language is not set " "correctly. Other features, such as plural forms, may be affected as well." msgstr "" "Förslag är inte tillgängliga om översättningsspråket inte är korrekt " "inställt. Andra funktioner, såsom pluralformer, kan också påverkas." msgid "Language of the translation is the same as source language." msgstr "Översättningsspråket är samma som källspråket." msgid "Fix Language" msgstr "Fixa språk" msgid "Fix language" msgstr "Åtgärda språk" 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." 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" msgid "Required header Plural-Forms is missing." msgstr "Nödvändig Plural-Forms header saknas." #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Syntaxfel i Plural-Forms header (\"%s\")." msgid "Fix the Header" msgstr "Korrigera rubriken" 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". #, 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.")" msgid "Review" msgstr "Granska" msgid "Would you like to use English for source text?" msgstr "Vill du använda Engelsk källtext?" #, 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" msgid "Load English" msgstr "Läs in Engelska" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Översatt: %d av %d (%d %%)" #, c-format msgid "Remaining: %d" msgstr "Återstår: %d" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d fel" msgstr[1] "%d fel" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d post" msgstr[1] "%d poster" msgid " (unsaved)" msgstr " (osparad)" msgid " (modified)" msgstr " (ändrad)" #, c-format msgid "Failed to update translation memory: %s" msgstr "Det gick inte att uppdatera översättningsminne: %s" msgid "Remove same-as-source translations" msgstr "Ta bort översättningar samma som källtext" 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?" 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." msgid "Keep" msgstr "Behåll" msgid "Remove" msgstr "Ta bort" msgid "Purge deleted translations" msgstr "Rensa borttagna översättningar" 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?" 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." msgid "Purge" msgstr "Rensa" msgid "Copy from source text" msgstr "Kopiera från källtext" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "Rensa översättning" msgid "Clear Translation" msgstr "Rensa översättning" msgid "Edit comment" msgstr "Redigera kommentar" msgid "Edit Comment" msgstr "Redigera kommentar" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "Kodförekomster" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "Kodförekomster" msgid "Hide Sidebar" msgstr "Dölj sidofält" msgid "Show Sidebar" msgstr "Visa sidofält" msgid "Hide Status Bar" msgstr "Dölj statusfältet" msgid "Show Status Bar" msgstr "Visa statusfältet" msgid "String length in characters: translation | source" msgstr "Stränglängd i tecken: översättning | källa" msgid "String length in characters" msgstr "Stränglängd i tecken" msgid "Source text" msgstr "Källtext" msgid "Singular" msgstr "Singular" msgid "Plural" msgstr "Plural" msgid "Translation" msgstr "Översättning" msgid "Pre-translated" msgstr "Förhandsöversatt" 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. msgid "Needs work" msgstr "Behöver arbete" msgid "" "POT files are only templates and don’t contain any translations themselves.\n" "To make a translation, create a new PO file based on the template." msgstr "" "POT-filer är endast mallar och innehåller inte själv några översättningar.\n" "För att göra en översättning, skapa en ny PO-fil baserad på mallen." msgid "Create new translation" msgstr "Skapa ny översättning" msgid "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 msgid "Source text ID" msgstr "Källtext-ID" msgid "Everything" msgstr "Allt" #, c-format msgid "Form %i" msgstr "Formulär %i" #, c-format msgid "Form %i (unused)" msgstr "Formulär %i (Oanvänd)" msgid "Zero" msgstr "Noll" msgid "One" msgstr "Ett" msgid "Two" msgstr "Två" msgid "Other" msgstr "Övrigt" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, c-format msgid "String context: %s" msgstr "Strängkontext: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #, c-format msgid "String identifier: %s" msgstr "Strängidentifierare: %s" #, c-format msgid "%s Format" msgstr "%s-format" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "%s-format" #, c-format msgid "Translation — %s" msgstr "Översättning — %s" msgid "ID" msgstr "ID" #, c-format msgid "Source text — %s" msgstr "Källtext — %s" msgid "unknown language" msgstr "okänt språk" #, c-format msgid "Network error: %s (%d)" msgstr "Nätverksfel: %s (%d)" msgid "Unknown error" msgstr "Okänt fel" #, c-format msgid "Failed command: %s" msgstr "Kommando misslyckades: %s" msgid "Failed to merge gettext catalogs." msgstr "Det gick inte att sammanfoga gettext-kataloger." msgid "Open in Editor" msgstr "Öppna i redigeraren" msgid "Open in editor" msgstr "Öppna i redigeraren" 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." msgid "No usage information" msgstr "Ingen användningsinformation" #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d kodförekomst" msgstr[1] "%d kodförekomster" msgid "Source code not found" msgstr "Källkoden hittades inte" 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." msgid "File cannot be opened" msgstr "Filen kan inte öppnas" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "Poedit kunde inte öppna filen ”%s”." msgid "Find" msgstr "Hitta" msgid "Replace" msgstr "Ersätt" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "Alternativ" msgid "Ignore case" msgstr "Ignorera skiftlägeskänslig" msgid "Wrap around" msgstr "Loopa" msgid "Whole words only" msgstr "Endast hela ord" msgid "Find in source texts" msgstr "Hitta i källtexter" msgid "Find in translations" msgstr "Sök i översättningar" msgid "Find in comments" msgstr "Sök i kommentarer" msgid "Close" msgstr "Stäng" msgid "Replace &All" msgstr "Ersätt &alla" msgid "Replace &all" msgstr "Ersätt &alla" msgid "&Replace" msgstr "&Ersätt" msgid "< &Previous" msgstr "< Föregående" msgid "&Next >" msgstr "&Nästa >" msgid "String to find" msgstr "Sträng att hitta" msgid "Replacement string" msgstr "Ersättningssträng" #, c-format msgid "Cannot execute program: %s" msgstr "Kan inte köra program: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "Språknamn eller kod" msgid "Translation Language" msgstr "Översättningsspråk" msgid "Language of the translation:" msgstr "Översättningens språk:" msgid "All strings" msgstr "Alla strängar" msgid "Couldn’t download Localazy project details." msgstr "Kunde inte ladda ner Localazy-projektets detaljer." msgid "There was an error when uploading translations to Localazy." msgstr "Det gick inte att ladda upp översättningar till Localazy." msgid "Projects" msgstr "Projekt" 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." msgid "Add Project" msgstr "Lägg till projekt" msgid "Add project" msgstr "Lägg till projekt" msgid "Poedit - Catalogs manager" msgstr "Poedit - Kataloghanterare" msgid "Edit…" msgstr "Redigera…" msgid "Create new translations project" msgstr "Skapa nytt översättningsprojekt" msgid "Delete the project" msgstr "Ta bort projektet" msgid "Edit the project" msgstr "Redigera projektet" msgid "Update all" msgstr "Uppdatera alla" msgid "Update all catalogs in the project" msgstr "Uppdatera alla kataloger i projektet" msgid "Total" msgstr "Totalt" msgid "Untrans" msgstr "Oöversatt" msgctxt "column/row header" msgid "Needs Work" msgstr "Behöver arbete" msgid "Errors" msgstr "Fel" msgid "Last modified" msgstr "Senast ändrad" msgid "Select directory" msgstr "Välj katalog" msgid "Directories:" msgstr "Kataloger:" msgid "" msgstr "" #, c-format msgid "Do you want to delete project “%s”?" msgstr "Vill du ta bort projektet ”%s”?" msgid "Delete project" msgstr "Ta bort projektet" msgid "Deleting the project will not delete any translation files." msgstr "" "Borttagning av projektet kommer inte att ta bort några översättningsfiler." msgid "Confirmation" msgstr "Bekräftelse" msgid "Update all catalogs in this project?" msgstr "Uppdatera alla kataloger i detta projekt?" 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." msgid "Check for Updates…" msgstr "Sök efter uppdateringar…" msgid "Catalogs Manager" msgstr "Kataloghanterare" msgid "&Preferences…" msgstr "&Inställningar…" msgid "&Edit" msgstr "&Redigera" msgid "Undo" msgstr "Ångra" msgid "Redo" msgstr "Gör om" msgid "Paste and Match Style" msgstr "Klistra in och matcha stil" msgid "Delete" msgstr "Ta bort" msgid "Spelling and Grammar" msgstr "Stavning och grammatik" msgid "Show Spelling and Grammar" msgstr "Visa stavning och grammatik" msgid "Check Document Now" msgstr "Kontrollera dokumentet nu" msgid "Check Spelling While Typing" msgstr "Kontrollera stavning medan jag skriver" msgid "Check Grammar With Spelling" msgstr "Kontrollera grammatik tillsammans med stavning" msgid "Correct Spelling Automatically" msgstr "Korrigera stavning automatiskt" msgid "Substitutions" msgstr "Ersättningar" msgid "Show Substitutions" msgstr "Visa ersättningar" msgid "Smart Copy/Paste" msgstr "Smart kopiera/klistra in" msgid "Smart Quotes" msgstr "Typografiska citattecken" msgid "Smart Dashes" msgstr "Smarta streck" msgid "Smart Links" msgstr "Smarta länkar" msgid "Text Replacement" msgstr "Textersättning" msgid "Transformations" msgstr "Transformeringar" msgid "Make Upper Case" msgstr "Gör till versaler" msgid "Make Lower Case" msgstr "Gör till gemener" msgid "Capitalize" msgstr "Kapitalisera" msgid "Speech" msgstr "Tal" msgid "Start Speaking" msgstr "Börja tala" msgid "Stop Speaking" msgstr "Sluta tala" msgid "&View" msgstr "&Visa" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Show Toolbar" msgstr "Visa verktygsfält" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Customize Toolbar…" msgstr "Anpassa verktygsfält…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Enter Full Screen" msgstr "Gå till helskärm" msgid "Window" msgstr "Fönster" msgid "Minimize" msgstr "Minimera" msgid "Zoom" msgstr "Zooma" msgid "Welcome to Poedit" msgstr "Välkommen till Poedit" msgid "Bring All to Front" msgstr "Lägg alla överst" msgid "Information about the translator" msgstr "Information om översättaren" msgid "Name:" msgstr "Namn:" msgid "Your Name" msgstr "Ditt namn" msgid "Email:" msgstr "E-post:" msgid "you@example.com" msgstr "du@exempel.se" 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." msgid "Editing" msgstr "Redigering" msgid "Automatically compile MO file when saving" msgstr "Kompilera MO-fil automatiskt när du sparar" msgid "Show summary after updating files" msgstr "Visa sammanfattning efter uppdatering av filer" msgid "Check spelling" msgstr "Kontrollera stavning" msgid "Always change focus to text input field" msgstr "Ändra alltid fokus till textinmatningsfältet" 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." msgid "Appearance" msgstr "Utseende" msgid "Use custom list font:" msgstr "Använd anpassat typsnitt i lista:" msgid "Use custom text fields font:" msgstr "Använd anpassat typsnitt i textfält:" 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 msgid "(requires Windows 8 or newer)" msgstr "(kräver Windows 8 eller nyare)" msgid "General" msgstr "Allmänt" msgid "Use translation memory" msgstr "Använda översättningsminne" msgid "Manage…" msgstr "Hantera…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "Vid uppdatering från källor" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "ungefärlig träff i filen" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "förhandsöversätt från TM" 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." msgid "Stored translations:" msgstr "Lagrade översättningar:" msgid "Database size on disk:" msgstr "Databasstorlek på disk:" msgid "Import Translation Files…" msgstr "Importera översättningsfiler…" msgid "Import translation files…" msgstr "Importera översättningsfiler…" msgid "Import From TMX…" msgstr "Importera från TMX…" msgid "Import from TMX…" msgstr "Importera från TMX…" msgid "Export To TMX…" msgstr "Exportera till TMX…" 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). msgid "Reset" msgstr "Återställ" msgid "Select translation files to import" msgstr "Välj översättningsfiler att importera" msgid "Translation Memory" msgstr "Översättningsminne (TM)" msgid "Importing translations…" msgstr "Importerar översättningar…" #, c-format msgid "Error loading translation file “%s”." msgstr "Fel vid laddning av översättningsfilen ”%s”." msgid "Finalizing…" msgstr "Färdigställer…" msgid "Select TMX files to import" msgstr "Välj TMX-fil som ska importeras" msgid "TMX Files" msgstr "TMX-filer" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "Import av översättningsminne från ”%s” misslyckades." msgid "Import error" msgstr "Importfel" msgid "Export as…" msgstr "Exportera som…" msgid "Exporting translations…" msgstr "Exporterar översättningar…" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "Export av översättningsminne till ”%s” misslyckades." msgid "Export error" msgstr "Exportfel" msgid "Reset translation memory" msgstr "Återställ översättningsminne" msgid "Are you sure you want to reset the translation memory?" msgstr "Är du säker på att du vill återställa översättningsminnet?" 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. msgid "TM" msgstr "TM" msgid "" "Source code extractors are used to find translatable strings in the source " "code files and extract them so that they can be translated." msgstr "" "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." msgid "Custom Extractors:" msgstr "Anpassade extraherare:" msgid "Custom extractors:" msgstr "Anpassade extraherare:" msgid "GNU gettext" msgstr "GNU gettext" 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)." msgid "Delete extractor" msgstr "Ta bort extraherare" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "Är du säker på att du vill ta bort extraheraren \"%s\"?" msgid "Extractors" msgstr "Extraherare" msgid "Accounts" msgstr "Konton" msgid "Automatically check for updates" msgstr "Sök efter uppdateringar automatiskt" msgid "Include beta versions" msgstr "Inkludera betaversioner" 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." msgid "Updates" msgstr "Uppdateringar" 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." msgid "Line endings:" msgstr "Radslut:" msgid "Unix (recommended)" msgstr "Unix (rekommenderas)" msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "Radbryt efter:" msgid "Preserve formatting of existing files" msgstr "Bevara formateringen av befintliga filer" msgid "Advanced" msgstr "Avancerat" msgid "Settings" msgstr "Inställningar" msgid "Preparing strings…" msgstr "Förbereder strängar…" msgid "Pre-translating from translation memory…" msgstr "Föröversätter från översättningsminne…" #, 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" msgid "Pre-translating…" msgstr "Förhandsöversätter…" 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. msgid "Pre-translate" msgstr "Förhandsöversätt" 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." msgid "Cannot pre-translate from unknown language." msgstr "Kan inte föröversätta från okänt språk." 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." msgid "Only fill in exact matches" msgstr "Fyll endast i exakta matchningar" 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." msgid "Don’t mark exact matches as needing work" msgstr "Markera inte exakta träffar som behöver arbete" 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." 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." #, 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." 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." msgid "No entries could be pre-translated." msgstr "Inga poster kan förhandsöversättas." 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." msgid "Cancelling…" msgstr "Avbryter…" msgid "Drag Folders or Files Here" msgstr "Dra mappar eller filer hit" msgid "Drag folders or files here" msgstr "Dra mappar eller filer hit" msgid "Add Folders…" msgstr "Lägg till mappar…" msgid "Add folders…" msgstr "Lägg till mappar…" msgid "Add Files…" msgstr "Lägg till filer…" msgid "Add files…" msgstr "Lägg till filer…" msgid "Add Wildcard…" msgstr "Lägg till jokertecken…" msgid "Add wildcard…" msgstr "Lägg till jokertecken…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) 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" msgid "Show in Explorer" msgstr "Visa i utforskare" msgid "Show in Folder" msgstr "Visa i mapp" msgid "Paths" msgstr "Sökvägar" msgid "Excluded paths" msgstr "Undantagna sökvägar" msgid "Advanced extraction settings" msgstr "Avancerade extraheringsinställningar" msgid "Extract notes for translators from:" msgstr "Extrahera anteckningar för översättare från:" msgid "Comments prefixed with:" msgstr "Kommentarer som börjar med:" msgid "All comments" msgstr "Alla kommentarer" msgid "Additional xgettext flags:" msgstr "Ytterligare xgettext-flaggor:" msgid "Additional keywords" msgstr "Ytterligare sökord" msgid "Name of the project the translation is for" msgstr "Namnet på projektet översättningen är för" msgid "Team name and email address or URL" msgstr "Gruppnamn och e-postadress eller webbadress" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "t.ex. nplurals = 2; plural = (n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (rekommenderas)" 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." msgid "Placeholders correctness" msgstr "Platshållares korrekthet" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "Platshållare ”%s” saknas i översättningen." #, c-format msgid "Superfluous placeholder “%s” that isn’t in source text." msgstr "Överflödig platshållare ”%s” som inte finns i källtexten." msgid "Plural form translations" msgstr "Översättningar i pluralform" msgid "Not all plural forms are translated." msgstr "Inte alla pluralformer är översätta." msgid "Inconsistent upper/lower case" msgstr "Inkonsekventa versaler/gemener" msgid "The translation should start as a sentence." msgstr "Översättningen bör inledas som en mening." msgid "The translation should start with a lowercase character." msgstr "Översättningen bör inledas med en liten bokstav." msgid "Inconsistent whitespace" msgstr "Inkonsekvent blanktecken" msgid "The translation doesn’t start with a space." msgstr "Översättningen börjar inte med ett mellanslag." 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." msgid "The translation is missing a newline at the end." msgstr "Översättning saknar ett radslut i slutet." 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." msgid "The translation is missing a space at the end." msgstr "Översättning saknar ett mellanslag i slutet." 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." msgid "Punctuation checks" msgstr "Kontroller av skiljetecken" #, c-format msgid "The translation should end with “%s”." msgstr "Översättningen bör avslutas med \"%s\"." #, c-format msgid "The translation should not end with “%s”." msgstr "Översättningen bör inte sluta med \"%s\"." #, 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\"." msgid "Cloud" msgstr "Moln" msgid "Clear Menu" msgstr "Rensa meny" msgid "Clear menu" msgstr "Rensa meny" msgid "Comment:" msgstr "Kommentar:" msgid "Update" msgstr "Uppdatera" msgid "&Delete" msgstr "&Ta bort" msgid "Delete the comment" msgstr "Ta bort kommentaren" msgid "Edit project" msgstr "Redigera projekt" msgid "Project name:" msgstr "Projektnamn:" msgid "Browse" msgstr "Bläddra" msgid "Add directory to the list" msgstr "Lägg till katalog till listan" msgid "OK" msgstr "OK" msgid "&File" msgstr "&Arkiv" msgid "&New…" msgstr "&Ny…" msgid "New from &POT/PO file…" msgstr "Nytt från &POT/PO-fil…" msgid "New From &POT/PO File…" msgstr "Nytt från &POT/PO-fil…" msgid "&Open…" msgstr "&Öppna…" msgid "Open Recent" msgstr "Öppna senaste" msgid "Open recent" msgstr "Öppna nyligen använt" msgid "Open cloud translation…" msgstr "Öppna molnöversättning…" msgid "Open Cloud Translation…" msgstr "Öppna molnöversättning…" msgid "&Start window" msgstr "Start&fönster" msgid "&Start Window" msgstr "Start&fönster" msgid "Catalogs &manager" msgstr "&Kataloghanterare" msgid "Catalogs &Manager" msgstr "&Kataloghanterare" msgid "&Close" msgstr "&Stäng" msgid "&Save" msgstr "&Spara" msgid "Save &as…" msgstr "Spar&a som…" msgid "Save &As…" msgstr "Spar&a som…" msgid "Compile to MO…" msgstr "Kompilera till MO…" msgid "E&xport to HTML…" msgstr "E&xportera till HTML…" msgid "Check for updates…" msgstr "Sök efter uppdateringar…" msgid "Settings…" msgstr "Inställningar…" msgid "&Preferences" msgstr "&Inställningar" msgid "E&xit" msgstr "&Avsluta" msgid "Quit" msgstr "Avsluta" msgid "Copy from singular" msgstr "Kopiera från singular" msgid "Copy From Singular" msgstr "Kopiera från singular" msgid "Translation needs &work" msgstr "Översättning behöver &arbete" msgid "Translation Needs &Work" msgstr "Översättning behöver &arbete" msgid "Edit &comment" msgstr "Redigera &kommentar" msgid "Edit &Comment" msgstr "Redigera &kommentar" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "Förslag" msgid "&Find…" msgstr "&Sök…" msgid "Replace…" msgstr "Ersätt…" msgid "Find next" msgstr "Sök nästa" msgid "Find previous" msgstr "Hitta föregående" msgid "Find and Replace…" msgstr "Sök och ersätt…" msgid "Find Next" msgstr "Sök nästa" msgid "Find Previous" msgstr "Hitta föregående" msgid "Show string &ID" msgstr "Visa sträng-ID" msgid "Show String &ID" msgstr "Visa sträng-&ID" msgid "Show warnings" msgstr "Visa varningar" msgid "Show Warnings" msgstr "Visa varningar" msgid "Sort by &file order" msgstr "Sortera efter &filordning" msgid "Sort by &File Order" msgstr "Sortera efter &filordning" msgid "Sort by &source" msgstr "Sortera efter &källa" msgid "Sort by &Source" msgstr "Sortera efter &källa" msgid "Sort by &translation" msgstr "Sortera efter ö&versättning" msgid "Sort by &Translation" msgstr "Sortera efter ö&versättning" msgid "&Group by context" msgstr "&Gruppera efter innehåll" msgid "&Group By Context" msgstr "&Gruppera efter innehåll" msgid "Entries with errors first" msgstr "Poster med fel först" msgid "Entries with Errors First" msgstr "Poster med fel först" msgid "&Untranslated entries first" msgstr "&Oöversatta poster först" msgid "&Untranslated Entries First" msgstr "&Oöversatta poster först" msgid "&Show code occurrences" msgstr "&Visa kodförekomster" msgid "&Show Code Occurrences" msgstr "&Visa kodförekomster" msgid "Show sidebar" msgstr "Visa sidofält" msgid "Show status bar" msgstr "Visa statusfältet" msgid "&Translation" msgstr "&Översättning" msgid "&Update from source code" msgstr "&Uppdatera från källkod" msgid "&Update from Source Code" msgstr "&Uppdatera från källkod" msgid "Update from &POT file…" msgstr "Uppdatera från &POT-fil…" msgid "Update from &POT File…" msgstr "Uppdatera från &POT-fil…" msgid "Sync with Crowdin" msgstr "Synkronisera med Crowdin" msgid "Pre-&translate…" msgstr "Förhandsöversä&tt…" msgid "&Validate translations" msgstr "&Validera översättningar" msgid "&Validate Translations" msgstr "&Validera översättningar" msgid "Remove Same-as-Source Translations" msgstr "Ta bort översättningar samma som källtext" msgid "&Purge deleted translations" msgstr "&Rensa borttagna översättningar" msgid "&Purge Deleted Translations" msgstr "&Rensa borttagna översättningar" msgid "&Properties…" msgstr "&Egenskaper…" msgid "&Go" msgstr "&Kör" msgid "&Done and next" msgstr "&Klar och nästa" msgid "&Done and Next" msgstr "&Klar och nästa" msgid "Previously edited" msgstr "Tidigare redigerad" msgid "Previously Edited" msgstr "Tidigare redigerad" msgid "&Previous translation" msgstr "&Föregående översättning" msgid "&Previous Translation" msgstr "&Föregående översättning" msgid "&Next translation" msgstr "&Nästa översättning" msgid "&Next Translation" msgstr "&Nästa översättning" msgid "P&revious unfinished" msgstr "Fö®ående ofärdiga" msgid "P&revious Unfinished" msgstr "Fö®ående ofärdiga" msgid "Ne&xt unfinished" msgstr "Nä&sta ofärdiga" msgid "Ne&xt Unfinished" msgstr "Nä&sta ofärdiga" msgid "Previous plural form" msgstr "Föregående pluralform" msgid "Previous Plural Form" msgstr "Föregående pluralform" msgid "Next plural form" msgstr "Nästa pluralform" msgid "Next Plural Form" msgstr "Nästa pluralform" msgid "&Online help" msgstr "&Hjälp på nätet" msgid "&Online Help" msgstr "&Hjälp på nätet" msgid "&GNU gettext manual" msgstr "&GNU gettext-handbok" msgid "&GNU gettext Manual" msgstr "&GNU gettext-handbok" msgid "&About Poedit" msgstr "&Om Poedit" msgid "&About" msgstr "&Om" msgid "Extractor setup" msgstr "Konfigurera extraherare" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Lista över tillägg avgränsas med semikolon (t.ex. *.cpp;*.h):" msgid "Invocation:" msgstr "Anrop:" msgid "Command to extract translations:" msgstr "Kommando för att extrahera översättningar:" 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)." msgid "An item in keywords list:" msgstr "En post i sökordslistan:" 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." msgid "An item in input files list:" msgstr "En post i inmatningslistan:" #, 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." msgid "Source code charset:" msgstr "Källkod teckenuppsättning:" #, 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." msgid "Translation Properties" msgstr "Översättningsegenskaper" msgid "Project name and version:" msgstr "Projektnamn och version:" msgid "Language team:" msgstr "Språkteam:" msgid "Plural forms:" msgstr "Flertalsformer:" msgid "Use default rules for this language" msgstr "Använd standardregler för detta språk" msgid "Use custom expression" msgstr "Använd anpassat uttryck" msgid "Learn about plural forms" msgstr "Lär dig mer om pluralformer" msgid "Charset:" msgstr "Teckenuppsättning:" msgid "Advanced Extraction Settings…" msgstr "Avancerade extraheringsinställningar…" msgid "Advanced extraction settings…" msgstr "Avancerade extraheringsinställningar…" msgid "Translation properties" msgstr "Översättningsegenskaper" msgid "Sources Paths" msgstr "Källsökvägar" msgid "Sources paths" msgstr "Källsökvägar" msgid "Extract text from source files in the following directories:" msgstr "Extrahera text från källfilen i följande kataloger:" msgid "Base path:" msgstr "Rotsökväg:" msgid "Sources Keywords" msgstr "Källsökord" msgid "Sources keywords" msgstr "Källsökord" 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:" msgid "Also use default keywords for supported languages" msgstr "Använda också standardsökord för språk som stöds" msgid "Learn about gettext keywords" msgstr "Lär dig mer om gettext-sökord" msgid "Update summary" msgstr "Uppdatera sammanfattning" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" "Dessa strängar hittades i källorna, men var inte i filen.\n" "Poedit kommer att lägga till dem i filen nu." msgid "New strings" msgstr "Nya strängar" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" "Dessa strängar är inte i källkoden längre.\n" "Poedit tar bort dem från filen nu." msgid "Obsolete strings" msgstr "Föråldrade strängar" msgid "(0 new, 0 obsolete)" msgstr "(0 nya, 0 föråldrade)" msgid "Open" msgstr "" msgid "Open file" msgstr "Öppna fil" msgid "Save file" msgstr "Spara fil" msgid "Validate" msgstr "Validera" msgid "Check for errors in the translation" msgstr "Kontrollera om det finns fel i översättningen" msgid "Update from code" msgstr "Uppdatera från kod" msgid "Update from Code" msgstr "Uppdatera från kod" msgid "Update from source code" msgstr "Uppdatera från källkod" msgid "Sidebar" msgstr "Sidofält" msgid "Show or hide the sidebar" msgstr "Visa eller dölj sidofält" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. msgid "Previous source text" msgstr "Tidigare källtext" 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." msgid "Notes for translators" msgstr "Anteckningar för översättare" msgid "Comment" msgstr "Kommentar" msgid "Add comment" msgstr "Lägg till kommentar" msgid "Add Comment" msgstr "Lägg till kommentar" msgid "Delete From Translation Memory" msgstr "Ta bort från översättningsminne" msgid "Delete from translation memory" msgstr "Ta bort från översättningsminne" msgid "Translation suggestions" msgstr "Översättningsförslag" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). 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). msgid "No Matches Found" msgstr "Inga träffar hittades" msgid "This string was found in Poedit’s translation memory." msgstr "Den här strängen hittades i Poedits översättningsminne." 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." 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." msgid "The TMX file is malformed." msgstr "TMX-filen är felformad." msgid "No translations were found in the TMX file." msgstr "Inga översättningar hittades i TMX-filen." #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Databasens översättningsminne är skadat: %s (%d)." #, c-format msgid "Translation memory error: %s (%d)." msgstr "Översättningsminne-fel: %s (%d)." msgid "Cannot create temporary directory." msgstr "Det går inte att skapa en temporär mapp." msgid "There are no translations. That’s unusual." msgstr "Det finns inga översättningar. Detta är ovanligt." msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "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, utan " "extraheras automatiskt\n" "från källkod. På detta sätt hålls de uppdaterade och korrekta.\n" "Översättare använder vanligtvis mallfiler (POT) som har förberetts av " "utvecklaren." msgid "(Learn more about GNU gettext)" msgstr "(Läs mer om GNU gettext)" 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:" msgid "Update from POT" msgstr "Uppdatera från POT" msgid "Take translatable strings from an existing POT template." msgstr "Ta översättningsbara strängar från en befintlig POT-mall." 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:" msgid "Extract from sources" msgstr "Extrahera från källor" 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 #, c-format msgid "Version %s" msgstr "Version %s" msgid "Create new" msgstr "Skapa ny" msgid "Create new translation from POT template." msgstr "Skapa ny översättning från POT-mall." msgid "Browse files" msgstr "Bläddra bland filer" msgid "Open and edit translation files." msgstr "Öppna och redigera översättningsfiler." msgid "Translate cloud project" msgstr "Översätt molnprojekt" msgid "Collaborate with other people online." msgstr "Samarbeta med andra människor online." msgid "Recent files" msgstr "Senaste filer" msgid "Sync" msgstr "Synkronisera" 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") #, 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. #, c-format msgid "%s Preferences" msgstr "%s-inställningar" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "Tjänster" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "Dölj %s" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "Dölj andra" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "Visa alla" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "Avsluta %s" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "Inställningar…" msgid "Preferences..." msgstr "Inställningar..." #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "Senaste" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "Frekventa" msgid "&Apply" msgstr "&Tillämpa" msgid "Apply" msgstr "Tillämpa" msgid "&Back" msgstr "&Tillbaka" msgid "Back" msgstr "Tillbaka" msgid "&Cancel" msgstr "&Avbryt" msgid "&Clear" msgstr "&Rensa" msgid "Clear" msgstr "Rensa" msgid "Copy" msgstr "Kopiera" msgid "Cu&t" msgstr "Kl&ipp ut" msgid "Cut" msgstr "Klipp ut" msgid "Edit" msgstr "Redigera" msgid "&Quit" msgstr "&Avsluta" msgid "Help" msgstr "Hjälp" msgid "&New" msgstr "&Ny" msgid "New" msgstr "Ny" msgid "&No" msgstr "&Nej" msgid "No" msgstr "Nej" msgid "&OK" msgstr "&OK" msgid "Open…" msgstr "Öppna…" msgid "&Open..." msgstr "&Öppna..." msgid "Open..." msgstr "Öppna..." msgid "&Paste" msgstr "&Klistra in" msgid "Paste" msgstr "Klistra in" msgid "Preferences" msgstr "Inställningar" msgid "&Redo" msgstr "&Gör om" msgid "Refresh" msgstr "Uppdatera" msgid "&Save as" msgstr "&Spara som" msgid "Save as" msgstr "Spara som" msgid "Select &All" msgstr "Välj &alla" msgid "Select All" msgstr "Markera allt" msgid "&Undo" msgstr "&Ångra" msgid "&Yes" msgstr "&Ja" msgid "Yes" msgstr "Ja" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Skift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Retur" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "Upp" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "Ner" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "Vänster" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "Höger" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "skift" poedit-3.5/locales/be.mo0000644000175100001770000021571214664354153012161 00000000000000w)h7 i7 u7&77<77J 8gV8 88 88 8889 9999'969E9K9Q9Z9n999999999999 9 9 ::: $:1:A:W:m:|::::::::: ; ; ";/;5;Q;m;;;;;;;; <#<:<J< h< t<~<<<< < < << << < <= =+= :=F=V=j====== > >1>L>'Q>y>> >>7>6>0?)P?z? ?]??<?D8@$}@@ @@ @"@@ AA&A8AIA\AeAxAAA#AAA B BB 0B;BMBSBdBuB BBBBB BB/C DCkQCCCCCCD-3D1aDD DD)DD EY&EEEEEEEEEEFF7FFFYF;lF F'F^F?iji mi8wi"iiijCj8k?k.l8l1mR9mcmQmBn']n:nlnP-o-~oCoAoK2p0~p.pp!mq)q-q+q8rCLrur,sL3s;s]stZtgtJcu[u v7vmv_\w[wxx.x(y EyQyfyyyy7y2y"z6zNzez}zz{{1{ 6{W{j{ {{{{ {"{${{ |&|7|G|X|p|||<|||$},}L}f}|}}#}V}*~A~J~ ]~h~~~~~~ ~~~H5Mm7 )33agɀ΀Ӏ׀. (IeɁ!2GXqAGAGцG͇%5E^ m y ˉ?݉?] mw%%֊++@P bo""ɋϋ Ӌ (; M[$l$7ь7 AOas11΍>P>`>0ގ0$@$e &2Ǐ*9%$_Jϐ  ;&H!oǑ&!%'Go0ܒ) 73W03&3EܔT=67t ƕZѕ`,TS 6AX8 jCyI( r}GșE!V$x$#š,#'9K;*L*9#d!՜! >1\8ǝܝ7(*S8pk.=-.k=.ؠ<MDb0&*@Ak96ģ6;2n/5%5R%pp%J7um p5 Ǩ?Ш^<o< $$))N)x!!Ī"278pL*LwĬC*,)AVή (]A2+үAb@8#ܰ4ALaEP6*"G޲&γ!%7$]/$״!5%Q%w% õ5ѵ   1?N`*z$Bʶ@ N3Q#/ӹ'+/B[r0κ;OB-. ".QJb6* @JHjI',C pZ{ ־r'ja;70Hh36&2Y3j((!!< !!4V7l7.bs.?(`h?7 LAB.  +l6N*?0]$$.?Q c p*z* %1 IjT%} 5Q%,`K Ea6a#K;@ Zgw&I992,l* %"63 jwq ):#K#oJd0s ""+Nd}5**JNu., /G_ov,V&!9[6{)(@$,e&!L)(Rn }@@ JWBq///&D.k0&.0!/R,-: /9P+9+|-9!&&M)m-P .;NH ''8O)BT(e_A?wY$|s 5J[4M6?=tXog=fC P<B8FRVR[HBPE(_5Z 7B]*5 ` q ! G ) T! Vv : ? )H #r      D *!Gi 7F&<&c/ **?j)H=H0(B)Wl^^#>V(---"[~#Up]`UF O\!`I.JXK)D55kB r],$YZ?Ef_@Xs2 e9BdBF_PGARw|nUDFb vJo%8j7od 4I,ylhkz=J'^E$ ,w1q6dt(p:?@:iMHvFa O(-eJ!_=H$0a^3su<6%h V?eA]jf5&m L3/=2Y'O# PkI Cvl~u":17.* 4LN#O|S'NqD;>9&M}Gn([`zyg7nGET\p-5 )IrD`C{{S6.N"@ p08KHlbX1)kg%W \z98+*Tg+K4Rt mCUjcT+[h r0~)LW|;R]Sx5\{<yct2YwB`imf">#suQ^-3MP<QWx Qcob>;K*/& x!AV[.!/}q}ZUXZiVa~ (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd AccountAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add accountAdd 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 languagesAlt+Always 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 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 localization management platform and collaborative translation tool.Ctrl+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 no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownDownloading 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:EnterEnter 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 loading translation file “%s”.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export errorExport 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…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)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport from TMX…Import translation files…Importing translation memory from “%s” failed.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 CrowdinLeftLine %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 translations were found in the TMX file.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKObsolete stringsOneOnly 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 translation templateOpen...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 translationsQuitQuit %sReading file content failed with the following error: %sRecentRecent 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 FinderReviewRightSaveSave &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 languageServicesSet LanguageSet languageSettings…Shift+Show AllShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow summary after updating filesShow 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.These strings are no longer in the source code. Poedit will remove them from the file now.These strings were found in the sources but were not in the file. Poedit will add them to the file now.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.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.Translated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation entries in the file are probably incorrect.Translation 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 errorUntransUpUpdateUpdate 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 the file failed. Click on 'Details >>' for details.Updating 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown 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: 2024-08-30 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&Сеціўная даведка&Сеціўная даведка&Адкрыць...&Адкрыць…&Уставіць&Налады&Налады…&Папярэдні пераклад&Папярэдні пераклад&Уласцівасці…&Знішчыць вылучаныя пераклады&Знішчыць вылучаныя пераклады&Выйсці&Аднавіць&Замяніць&Захаваць&Захаваць як&Паказаць уваходжанні кода&Паказаць уваходжанні кода&Пачатковае акно&Пачатковае акно&Пераклад&ВярнуцьСпачатку &не перакладзеныя запісыСпачатку &не перакладзеныя запісы&Абнавіць з зыходнага кода&Абнавіць з зыходнага кода&Праверыць пераклад&Праверыць пераклад&Выгляд&Так(0 новых, 0 састарэлых)(Даведацца больш пра GNU gettext)(Новыя: %i, састарэлыя: %i)(Карыстацца мовай па змаўчанні)(уваход не выкананы)(патрабуецца Windows 8 ці больш новая версія)< &Папярэдні<без назвы>Пра %sУліковы запісУліковыя запісыДадацьДадаць Уліковы запісДадаць каментарыйДадаць файлы…Дадаць папкі…Дадаць ПраектДадаць шаблон…Дадаць уліковы запісДадаць каментарыйДадаць каталог у спісДадаць файлы…Дадаць папкі…Дадаць праектДадаць шаблон…Дадатковыя ключавыя словыДадатковыя сцягі xgettext:Пашыраныя наладыДадатковыя налады вымання…Дадатковыя налады выманняДадатковыя налады вымання…Усе файлы перакладаўУсе каментарыіУсе радкіТаксама выкарыстоўваць ключавыя словы па змаўчанні для моў, якія падтрымліваюццаAlt+Заўсёды рабіць поле для ўводу тэксту актыўнымЭлемент у спісе ўваходных файлаў:Элемент у спісе ключавых слоў:Знешні выглядУжыцьВы ўпэўненыя, што жадаеце выдаліць экстрактар "%s"?Вы ўпэўненыя, што жадаеце скінуць памяць перакладаў?Аўтаматычна правяраць наяўнасць новых версійАўтаматычна кампіляваць файл MO пры захаванніНазадБазавы шлях:Бэта-версіі ўключаюць усе самыя новыя функцыі і ўдасканаленні, але могуць быць менш стабільнымі.Змясціць усё на пярэднім планеСапсаваны файл PO: форма множнага ліку msgstr ужыта без msgid_pluralСапсаваны файл PO: форма адзіночнага ліку msgstr ужытая разам з msgid_pluralПашкоджаная разметка ў радку перакладу.АглядПрагляд файлаўСкасавацьСкасоўваецца…Не атрымалася стварыць часовы каталог.Не атрымліваецца выканаць праграму: %sВялікімі літарамі&Менеджар каталогаў&Менеджар каталогаўМенеджар каталогаўЗмяніць мову інтэрфейсуКадаванне:Праверыць дакументПравяраць граматыку і правапісПравяраць правапіс падчас уводуПраверка абнаўленняў…Праверыць наяўнасць памылак у перакладзеПраверка абнаўленняў…Правяраць правапісАчысціцьАчысціць менюАчысціць перакладАчысціць менюАчысціць перакладЗакрыцьКод уваходжанняКод уваходжанняЗбіранне зыходных файлаў…Каманда для вымання перакладу:КаментарыйКаментарый:Каментарыі, якія пачынаюцца з:Кампіляваць у файл MO…Кампіляваць у…Скампіляваныя файлы перакладуНаладзьце выманне зыходнага кода ў раздзеле "Уласцівасці".ПацвярджэннеПадлучыце Poedit да падтрымліваемых воблачных платформ лакалізацыі для бесперашкоднай сінхранізацыі перакладаў, выкананых на іх.КапіявацьКапіяваць форму адзіночнага лікуСкапіяваць зыходны тэкстКапіяваць форму адзіночнага лікуСкапіяваць зыходны тэкстВыпраўляць правапіс аўтаматычнаНемагчыма спампаваць дэталі праекту Localazy.Файл не можа быць загружаны. Верагодна, ён пашкоджаны.Немагчыма захаваць файл %s.Стварыць новыСтварыць новы перакладСтварыць новы пераклад з шаблона POT.Стварыць новы праект перакладуПамылка CrowdinCrowdin - гэта анлайн-платформа для кіравання лакалізацыямі і інструмент для сумеснага перакладу.Ctrl+Выра&зацьКарыстальніцкія экстрактары:Карыстальніцкія экстрактары:Наладзіць панэль інструментаў…ВыразацьПамер базы даных на дыску:ВыдаліцьВыдаліць з памяці перакладаўВыдаліць экстрактарВыдаліць з памяці перакладаўВыдаліць праектВыдаліць каментарыйВыдаліць праектВыдаленне праекта не прывядзе да выдалення файлаў перакладу.Каталогі:Вы сапраўды хочаце выдаліць праект “%s”?Вы сапраўды хочаце перазагрузіць файл з дыска? Усе вашы не захаваныя змяненні ў праграме будуць страчаныя, калі вы гэта зробіце.Жадаеце выдаліць усе пераклады, якія больш не выкарыстоўваюцца?Не зах&оўвацьНе захоўвацьНе паказваць зноўНе пазначаць дакладныя супадзенні як "патрабуюць дапрацоўкі"Не паказваць зноўУнізСпампоўванне апошніх перакладаў…Спампоўванне перакладаў адключана ў гэтым праекце.Перацягніце папкі або файлы сюдыПерацягніце папкі або файлы сюдыВ&ыхадЗмяніцьЗмяніць &каментарыйЗмяніць &каментарыйРэдагаваць каментарыйРэдагаваць каментарыйРэдагаваць праектРэдагаваць праектРэдагаваннеЗмяніць…Электронная пошта:EnterПерайсці ў поўнаэкранны рэжымЭлементы ў гэтым файле маюць формы множнага ліку, якія адрозніваюцца ад азначаных у загалоўку Plural-FormsПершымі адлюстроўваць запісы з памылкаміПершымі адлюстроўваць запісы з памылкаміЗапісы з памылкамі былі вылучаны ў спісе чырвоным колерам. Калі выбраць такі запіс, будуць паказаныя падрабязныя звесткі пра памылку.Памылка загрузкі файла перакладу "%s".Памылка адкрыцця файлаПамылка захавання файлаПамылка падчас загрузкі файла XLIFF: %sПамылкіУсёВыключаныя шляхіЭкспарт у TMX…Экспартаваць як…Памылка экспартуЭкспарт у TMX…Не атрымалася экспартаваць файлы перакладу ў “%s”.Экспартаванне перакладаў…Выняць з зыходнага кодаВыняць нататкі для перакладчыкаў з:Вымаць тэкст з зыходных файлаў у наступных каталогах:Выманне радкоў для перакладу…Налады экстрактараЭкстрактарыПамылка выканання каманды: %sПамылка падключэння да працэсу Poedit.Не атрымалася загрузіць файл з вынятымі перакладамі.Не атрымалася аб'яднаць каталогі gettext.Не атрымалася абнавіць памяць перакладаў: %sФайлНемагчыма адкрыць файлФайл “%s” не існуе.Файл "%s" не з'яўляецца файлам перакладу.Файл "%s" даступны толькі для чытання і не можа быць захаваны. Захавайце яго пад іншай назвай.Завяршэнне…ЗнайсціЗнайсці наступныЗнайсці папярэдніЗнайсці і замяніць…Шукаць у перакладахШукаць у зыходных тэкстахШукаць у перакладахЗнайсці наступныЗнайсці папярэдніВыправіць мовуВыправіць мовуВыправіць загаловакВыправіць загаловакФайлы перакладу FlutterФорма %iФорма %i (не выкарыстоўваецца)ЧастыяGNU gettextАгульныяФайл HTMLДаведкаСхаваць %sСхаваць іншыяСхаваць бакавую панэльСхаваць радок стануНе паказваць больш гэта апавяшчэннеЯк працуе воблачная сінхранізацыя?IDКалі працягнуць аперацыю, усе пераклады, пазначаныя як выдаленыя, будуць цалкам знішчаныя. Калі яны будуць даданыя назад у будучым, іх прыйдзецца перакладаць паўторна.Калі вы дагэтуль адмовілі ў доступе да вашых файлаў, вы можаце даць дазвол у Параметры > Прыватнасць і бяспека > Прыватнасць > Файлы і папкі.ІгнаравацьІгнараваць рэгістрІмпарт з TMX…Імпарт файлаў перакладу…Памылка імпартаванняІмпарт з TMX…Імпарт файлаў перакладу…Не атрымалася імпартаваць файлы перакладу ў “%s”.Імпартаванне перакладаў…У: %sУ тым ліку правяраць бэта-версііНепаслядоўнасць ніжняга/верхняга рэгістраНяўзгодненасць прабелаўЗвесткі пра перакладчыкаУсталявацьПамылковы файлВыклік:Файлы перакладу JSONПакінуцьМова перакладу супадае з зыходнай мовай.Не прызначана мова перакладу.Мова перакладу:Выбар мовыКаманда перакладчыкаў:Мова:Апошняе змяненнеДаведацца больш пра ключавыя словы gettextДаведацца больш пра формы множнага лікуДаведацца большДаведацца больш пра %sДаведацца больш пра CrowdinУлеваРадок %d файла "%s" пашкоджаны (некарэктныя даныя %s).Сканчэнне радкоў:Спіс пышырэнняў, падзеленых кропкай з коскай (напрыклад *.cpp;*.h):Загрузіць англійскуюФайлы з пашырэннем MO нельга змяніць непасрэдна ў Poedit.Канвертаваць у маленькія літарыКанвертаваць у вялікія літарыЗрабіць новы пераклад з гэтага файла POT.Няправільны загаловак: “%s”Кіраванне ўліковымі запісаміКіраванне…Зліццё адрозненняў…ЗгарнуцьНазва праекта перакладу дляІмя:На&ступны незавершаныНа&ступны незавершаныПатрабуе праверкіПатрабуе праверкіНіколі не рабіць актыўным спіс з радкамі. Калі ўключана, для перамяшчэння з дапамогай клавіятуры неабходна выкарыстоўваць Ctrl+стрэлкі. Гэты параметр таксама дазваляе ўводзіць тэкст імгненна, без папярэдняга націску клавішы TAB для пераключэння фокуса.НовыНовы з файла &POT/PO…Новы з файла &POT/PO…Новыя радкіНаступная форма множнага лікуНаступная форма множнага лікуНеСупадзенняў не знойдзенаНяма запісаў для якіх можна зрабіць чарнавы пераклад.Звесткі ў файле адсутнічацюь пра ўваходжанне гэтага радка ў зыходны код.Супадзенняў не знойдзенаПраблем у перакладзе не знойдзена.У вашым уліковым запісе няма праектаў для перакладу.Пераклады не знойдзеныя ў файле TMX.Няма звестак пра выкарыстаннеНе ўсе формы множнага ліку перакладзеныя.Не аўтарызаваны, увайдзіце яшчэ раз.Заўвагі для перакладчыкаДобраСастарэлыя радкіАдзінУключыце толькі ў тым выпадку, калі вы давяраеце якасці вашай памяці перакладаў. Па змаўчанні, усе супадзенні з памяці перакладаў пазначаюцца як "патрабуюць дапрацоўкі" і іх неабходна пераправяраць.Запаўняць толькі пры дакладным супадзенніАдкрыць нядаўнія файлыАдкрыць і змяніць файлы перакладу.Адкрыць воблачны перакладАдкрыць файлАдкрыць у рэдактарыАдкрыць у рэдактарыАдкрыць нядаўніяАдкрыць шаблон перакладуАдкрыць...Адкрыць…НаладыIншаеПа&пярэдні незавершаныПа&пярэдні незавершаныФайлы перакладу POШаблоны перакладу POTФайлы з пашырэннем POT з'яўляюцца толькі шаблонамі і не змяшчаюць у сабе перакладаў. Каб зрабіць пераклад стварыце файл PO з шаблона.УставіцьСтыль капіявання і ўстаўкіШляхіВыконвае абнаўленне з зыходнага кода усіх файлаў праекта.У дазволе адмоўлена.Адкрыйце і змяніце адпаведны файл PO. Пасля яго захавання, файл MO таксама абновіцца.Першапачаткова захавайце файл. Да гэтага дадзены раздзел не можа быць зменены.МножныПераклады форм множнага лікуВыраз формы множнага ліку, якое выкарыстоўваецца ў файла, з'яўляецца незвычайным для %s.Формы множнага ліку:PoeditPoedit - кіраўнік каталогаўPoedit аўтаматычна выправіў памылковы змест у файле "%s".Poedit можа паспрабаваць запоўніць новыя радкі толькі папярэднімі перакладамі з гэтага файла ці з вашай памяці перакладаў. Выкарыстанне памяці перакладаў не будзе вельмі эфектыўным, калі яна амаль пустая, але яна будзе станавіцца лепш па меры таго, як вы будзеце дадаваць новыя пераклады.Poedit не можа паказаць зыходны код у якім выкарыстоўваецца радок з той прычыны, што файла ў азначаным месцы або ён з'яўляецца сімвалічнай спасылкай, якая ўказвае на сапраўдны файл.Poedit - гэта просты ў выкарыстанні рэдактар перакладаў.Poedit не можа адкрыць файл “%s”.Чарнавы &пераклад…Чарнавы перакладЧарнавы варыянтЧарнавы пераклад %u радкаЧарнавы пераклад %u радкоўЧарнавы пераклад %u радкоўЧарнавы пераклад %u радкоўПапярэдні пераклад з памяці перакладаў…Выкананне чарнавога перакладу…Чарнавы пераклад аўтаматычна знаходзіць дакладныя ці недакладныя супадзенні для не перакладзеных радкоў у памяці перакладаў і запаўняе іх перакладамі.НаладыНалады...Налады…Падрыхтоўка радкоў…Захоўваць фарматаванне існуючых файлаўПапярэдняя форма множнага лікуПапярэдняя форма множнага лікуПапярэдні зыходны тэкстНазва і версія праекта:Назва праекта:Праект:ПраектыПраверка пунктуацыіЗнішчыцьЗнішчыць вылучаныя перакладыВыйсціВыйсці з %sЗагрузка змесціва файла не атрымалася з наступнай памылкай: %sНядаўніяНядаўнія файлыАднавіцьАбнавіцьПеразагрузіць файлПеразагрузіць файлЗасталося: %dЗамяніцьЗамяніць &усеЗамяніць &усеРадок заменыЗамяніць…Неабходны загаловак "Plural-Forms" адсутнічае.СкінуцьСкінуць памяць перакладаўАчыстка памяці перакладаў незваротна выдаліць усе пераклады, якія захоўваюцца ў ёй. Вы не зможаце скасаваць гэтую аперацыю.Паказаць у FinderПраверыцьУправаЗахавацьЗахаваць &як…Захаваць &як…Усё роўна захавацьУсё роўна захавацьЗахаваць якЗахаваць як…Захаваць зменыЗахаваць файлСкрыншоты:Выбраць у&сёВыбраць усёВыберыце файлы TMX для імпартуВыберыце каталогВыбраць файл перакладуВыберыце файлы перакладу для імпартаванняВыбраць шаблон перакладуВыберыце пажаданую мовуСэрвісыВыбраць мовуВыбраць мовуНалады…Shift+Паказаць усеПаказаць бакавую панэльПаказваць арфаграфічныя і граматычныя памылкіПаказаць радок стануПаказваць &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. Скарэктуйце іх, калі ў вас ёсць адмысловыя патрабаванні, напрыклад, калі вы карыстаецеся сістэмай кантролю версій.Гэтых радкоў больш няма у зыходным кодзе. Poedit зараз выдаліць іх з файла.Гэтыя радкі знойдзены у зыходных файлах, але яны адсутнічаюць у файле. Poedit зараз дадасць іх у файл.Гэты JSON-файл не з'яўляецца файлам перакладу і не можа быць адрэдагаваны ў Poedit.Файл змяшчае элементы з формамі множнага ліку, але ён не мае наладаў загалоўку Plural-Forms.Дадзеная каманда выкарыстоўваецца, каб запусціць экстрактар. %o абазначае назву выходнага файла, %K - спіс ключавых слоў, %F - спіс уваходных файлаў, %C - кадаванне (гл. ніжэй).Гэты радок быў знойдзены ў памяці перакладаў Poedit.Гэта будзе дададзена ў камандны радок, толькі калі было азначана кадаванне зыходнага файла. %c азначае кадаванне.Гэта будзе дадзена ў камандны радок для кожнага ўваходнага файла. %f азначае назву файла.Гэта будзе дададзена ў камандны радок для кожнага ключавога слова. %k азначае ключавое слова.УсягоПераўтварэнніЗапісы, якія перакладаюцца не дадаюцца ўручную ў сістэму Gettext, а аўтаматычна вымаюцца з зыходнага кода. Такім чынам, забяспечваецца іх актуальнасць і дакладнасць. Перакладчыкі звычайна працуюць з файламі PO (шаблоны POT), якія падрыхтаваў для іх распрацоўшчык.Перакладзена: %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 файлаў.НульМаштабaltПатрабуе праверкіctrlне выдаляйце часовыя файлы (для адладкі)напрыклад, plurals=2; plural=(n > 1);падбіраць падобны пераклад унутры файлаперайсці да элемента з вызначаным нумарам радкаапрацаваць адрас poedit://чарнавы пераклад з памяці перакладаўshiftневядомая моване падтрымліваецца версія (%s)alyaksandr.koshal@gmail.com"%s" не з'яўляецца карэктным файлам POT.poedit-3.5/locales/lt.po0000644000175100001770000017661514664354154012226 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "Slėpti šį pranešimą" msgid "Don’t Show Again" msgstr "Daugiau neberodyti" msgid "Don’t show again" msgstr "Daugiau neberodyti" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(Naujas: %i, senasis: %i)" msgid "Collecting source files…" msgstr "Renkama iš pradinių failų…" msgid "Extracting translatable strings…" msgstr "Išgaunamos verstinos eilutės…" msgid "Failed to load file with extracted translations." msgstr "Nepavyko įkelti failo su išgautais vertimais." msgid "Merging differences…" msgstr "Suliejami skirtumai…" msgid "Updating translations" msgstr "Naujinami vertimai" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "Failo „%s“ nepavyko atverti." msgid "Invalid file" msgstr "Netinkamas failas" #, c-format msgid "Malformed header: “%s”" msgstr "Netinkama antraštė: „%s“" msgid "PO Translation Files" msgstr "PO vertimų failai" msgid "POT Translation Templates" msgstr "POT vertimų šablonai" msgid "XLIFF Translation Files" msgstr "XLIFF vertimų failai" msgid "JSON Translation Files" msgstr "JSON vertimų failai" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "Flutter vertimų failai" msgid "All Translation Files" msgstr "Visi vertimų failai" msgid "The file is in a format not recognized by Poedit." msgstr "Failas yra Poedit neatpažįstamo formato." 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." #, c-format msgid "Reading file content failed with the following error: %s" msgstr "Failo turinio nuskaityti nepavyko dėl klaidos: %s" #, 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." #, c-format msgid "Couldn’t save file %s." msgstr "Nepavyko išsaugoti failo %s." msgid "Screenshots:" msgstr "" #, c-format msgid "%i line of file “%s” was not loaded correctly." msgid_plural "%i lines of file “%s” were not loaded correctly." msgstr[0] "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“." #, c-format msgid "Line %d of file “%s” is corrupted (not valid %s data)." msgstr "Eilutė %d iš failo „%s“ sugadinta (netinkami %s duomenys)." 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" msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" "Sugadintas PO failas: daugiskaitos forma msgstr pateikiama be msgid_plural" msgid "Couldn’t load the file, it is probably damaged." msgstr "Nepavyko įkelti failo, jis greičiausiai sugadintas." 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ų." 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)." #, 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." msgid "Error saving file" msgstr "Klaida įrašant failą" #, c-format msgid "“%s” is not a valid POT file." msgstr "„%s“ nėra tinkamas POT failas." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Klaida įkeliant sql XLIFF failą %s" #, c-format msgid "unsupported version (%s)" msgstr "nepalaikoma versija (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML msgid "Broken markup in translation string." msgstr "Klaidingai suformatuota vertimo eilutė." msgid "(Use default language)" msgstr "(Naudoti numatytąją kalbą)" msgid "Language selection" msgstr "Kalbos pasirinkimas" msgid "Select your preferred language" msgstr "Pasirinkite pageidaujamą kalbą" msgid "You must restart Poedit for this change to take effect." msgstr "Šis pakeitimas įsigalios paleidus Poedit iš naujo." msgid "Add Account" msgstr "Pridėti paskyrą" msgid "Add account" msgstr "Pridėti paskyrą" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "Sužinokite daugiau apie %s" msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" msgid "How does cloud sync work?" msgstr "" msgid "Account" msgstr "Paskyra" msgid "(not signed in)" msgstr "(neprisijungęs)" msgid "File" msgstr "Failas" msgid "Open cloud translation" msgstr "" msgid "Manage accounts" msgstr "Valdyti paskyras" msgid "Project:" msgstr "Projektas:" msgid "Language:" msgstr "Kalba:" msgid "Sign in to Cloud Account" msgstr "" msgid "Sign in to cloud account" msgstr "" msgid "No translation projects listed in your account." msgstr "" msgid "Downloading latest translations…" msgstr "Atsiunčiami naujausi vertimai…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #, c-format msgid "Sign in to %s" msgstr "Prisijungti prie %s" msgid "Syncing" msgstr "Sinchronizuojama" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, 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. #, c-format msgid "Uploading translations to %s failed." msgstr "Vertimų įkėlimas į %s nepavyko." msgid "Syncing error" msgstr "Suvienodinimo klaida" msgid "Add" msgstr "Pridėti" msgid "Unknown Crowdin error." msgstr "Nežinoma Crowdin klaida." msgid "Not authorized, please sign in again." msgstr "Nesankcionuota, prašome prisijungti dar kartą." msgid "Downloading translations is disabled in this project." msgstr "Vertimų atsiuntimas šiame projekte yra išjungtas." msgid "Sign In" msgstr "Prisijungti" msgid "Sign in" msgstr "Prisijungti" msgid "Sign Out" msgstr "Atsijungti" msgid "Sign out" msgstr "Atsijungti" msgid "Learn more about Crowdin" msgstr "Sužinokite daugiau apie Crowdin" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" msgid "Waiting for authentication…" msgstr "Laukiama tapatybės nustatymo…" msgid "Updating user information…" msgstr "Atnaujinama naudotojo informacija…" msgid "Sign in to Crowdin" msgstr "Prisijungti prie Crowdin" msgid "Syncing with Crowdin failed." msgstr "Suvienodinti su Crowdin nepavyko." msgid "Crowdin error" msgstr "Crowdin klaida" msgid "Uploading translations…" msgstr "Įkeliami vertimai…" msgid "&Copy" msgstr "&Kopijuoti" msgid "Learn more" msgstr "Išsamiau" msgid "&Help" msgstr "&Žinynas" msgid "MO files can’t be directly edited in Poedit." msgstr "MO failai negali būti tiesiogiai redaguojami programoje Poedit." msgid "Error opening file" msgstr "Klaida atveriant failą" 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." msgid "don’t delete temporary files (for debugging)" msgstr "nešalinti laikinų failų, skirtų derinimui" msgid "handle a poedit:// URI" msgstr "vykdyti poedit:// URI" msgid "go to item at given line number" msgstr "pereiti prie eilutės su duotu numeriu" msgid "Failed to communicate with Poedit process." msgstr "Nepavyko susisiekti su Poedit." #, c-format msgid "Unhandled exception occurred: %s" msgstr "Įvyko neapdorojama išimtinė situacija: %s" msgid "Select translation template" msgstr "Parinkite vertimo šabloną" msgid "Select translation file" msgstr "Parinkite vertimo failą" msgid "Poedit is an easy to use translation editor." msgstr "Poedit yra lengvai naudojamas vertimų redaktorius." msgid "You can’t drop more than one file on Poedit window." msgstr "Negalite užvilkti daugiau nei vieno failo ant Poedit lango." #, c-format msgid "File “%s” is not a translation file." msgstr "\"%s\" failas nėra vertimų failas." #, c-format msgid "File “%s” doesn’t exist." msgstr "Failas „%s“ neegzistuoja." 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". #, 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." msgid "Install" msgstr "Įdiegti" #, c-format msgid "The file “%s” has been changed by another application." msgstr "Failą „%s“ pakeitė kita programa." msgid "Reload file" msgstr "Įkelti failą iš naujo" 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." msgid "Ignore" msgstr "Ignoruoti" msgid "Reload File" msgstr "Įkelti failą iš naujo" msgid "The file has been modified. Do you want to save changes?" msgstr "Failas buvo pakoreguotas. Ar išsaugoti pakeitimus?" msgid "Save changes" msgstr "Išsaugoti pakeitimus" msgid "Your changes will be lost if you don’t save them." msgstr "Prarasite atliktus pakeitimus, jei jų neišsaugosite." msgid "Save" msgstr "Išsaugoti" msgid "Do&n’t save" msgstr "&Neįrašyti" msgid "Don’t Save" msgstr "Neišsaugoti" msgid "The changes made by the other application will be lost if you save." msgstr "Jei išsaugosite, kitos programos padaryti pakeitimai bus prarasti." msgid "Cancel" msgstr "Atsisakyti" msgid "Save Anyway" msgstr "Vis tiek įrašyti" msgid "Save anyway" msgstr "Vis tiek įrašyti" msgid "Save as…" msgstr "Įrašyti…" msgid "Compile to…" msgstr "Kompiliuoti į…" msgid "Compiled Translation Files" msgstr "Kompiliuoti vertimo failai" msgid "Export to HTML…" msgstr "" msgid "HTML Files" msgstr "HTML failai" #, c-format msgid "In: %s" msgstr "Faile %s" msgid "Source code not available." msgstr "Pradinis tekstas neprieinamas." msgid "Updating failed" msgstr "Atnaujinti nepavyko" 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." msgid "Permission denied." msgstr "Leidimas atmestas." 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. 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. msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" msgid "Translation entries in the file are probably incorrect." msgstr "Panašu, kad vertimo įrašai faile neteisingi." msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "" "Failo atnaujinimas nepavyko. Norėdami sužinoti daugiau, spauskite Daugiau >>." msgid "Open translation template" msgstr "Atverti vertimo šabloną" #, 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ų." msgid "Validation results" msgstr "Patvirtinimo rezultatai" 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šą." msgid "The file was saved safely." msgstr "Failas saugiai išsaugotas." 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." 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." 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." msgid "The file cannot be compiled into the MO format and used." msgstr "Failas negali būti sukompiliuotas į MO formatą." msgid "No problems with the translation found." msgstr "Nerasta vertimo klaidų." #, 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." msgid "The translation is ready for use." msgstr "Vertimas paruoštas naudoti." #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "Poedit automatiškai ištaisė neteisingą turinį faile „%s“." msgid "" "The file contained duplicate items, which is not allowed in PO files and " "would prevent the file from being used. Poedit fixed the issue, but you " "should review translations of any items marked as 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." msgid "Language of the translation isn’t set." msgstr "Nenustatyta vertimo kalba." msgid "Set Language" msgstr "Nustatyti kalbą" msgid "Set language" msgstr "Nurodyti kalbą" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." msgid "" "Suggestions are not available if the translation language is not set " "correctly. Other features, such as plural forms, may be affected as well." msgstr "" "Pasiūlymai negalimi, jei netinkamai nustatyta vertimo kalba. Tai taip pat " "gali turėti įtakos ir kitoms savybėms, pvz.: daugiskaitos formoms." msgid "Language of the translation is the same as source language." msgstr "Vertimo kalba yra tokia pati kaip originalo kalba." msgid "Fix Language" msgstr "Taisyti kalbą" msgid "Fix language" msgstr "Taisyti kalbą" 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." 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" msgid "Required header Plural-Forms is missing." msgstr "Trūksta būtinos Plurar-Forms antraštės." #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Sintaksės klaida Plural-Forms antraštėje („%s“)." msgid "Fix the Header" msgstr "Taisyti antraštę" 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". #, 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.")" msgid "Review" msgstr "Peržiūrėti" msgid "Would you like to use English for source text?" msgstr "Ar norite naudoti anglų kalbą pradiniam tekstui?" #, 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" msgid "Load English" msgstr "Įkelti anglų kalbą" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Išversta: %d iš %d (%d %%)" #, c-format msgid "Remaining: %d" msgstr "Liko: %d" #, 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ų" #, 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šų" msgid " (unsaved)" msgstr " (neišsaugota)" msgid " (modified)" msgstr " (pakeista)" #, c-format msgid "Failed to update translation memory: %s" msgstr "Nepavyko atnaujinti vertimų atminties: %s" msgid "Remove same-as-source translations" msgstr "" msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" msgid "Keep" msgstr "Palikti" msgid "Remove" msgstr "" msgid "Purge deleted translations" msgstr "Pašalinti ištrintus vertimus" msgid "Do you want to remove all translations that are no longer used?" msgstr "Ar tikrai norite pašalinti visus nebenaudojamus vertimus?" 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." msgid "Purge" msgstr "Išvalyti" msgid "Copy from source text" msgstr "Kopijuoti iš pradinių tekstų" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "Išvalyti vertimą" msgid "Clear Translation" msgstr "Išvalyti vertimą" msgid "Edit comment" msgstr "Koreguoti komentarą" msgid "Edit Comment" msgstr "Koreguoti komentarą" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "Kodo įeitys" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "Kodo įeitys" msgid "Hide Sidebar" msgstr "Slėpti šoninę juostą" msgid "Show Sidebar" msgstr "Rodyti šoninę juostą" msgid "Hide Status Bar" msgstr "Slėpti būsenos juostą" msgid "Show Status Bar" msgstr "Rodyti būsenos juostą" msgid "String length in characters: translation | source" msgstr "Ženklų skaičius eilutėje: vertimas | šaltinis" msgid "String length in characters" msgstr "Ženklų skaičius eilutėje" msgid "Source text" msgstr "Pradinis tekstas" msgid "Singular" msgstr "Vienaskaita" msgid "Plural" msgstr "Daugiskaita" msgid "Translation" msgstr "Vertimas" msgid "Pre-translated" msgstr "Išversta preliminariai" 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. msgid "Needs work" msgstr "Būtina peržiūrėti" 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ą." msgid "Create new translation" msgstr "Sukurti naują vertimą" 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 msgid "Source text ID" msgstr "Pirminio teksto ID" msgid "Everything" msgstr "Viskas" #, c-format msgid "Form %i" msgstr "Forma %i" #, c-format msgid "Form %i (unused)" msgstr "Forma %i (nenaudojama)" msgid "Zero" msgstr "Nulis" msgid "One" msgstr "Vienas" msgid "Two" msgstr "Du" msgid "Other" msgstr "Kita" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, 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 #, c-format msgid "String identifier: %s" msgstr "Eilutės pavadinimas: %s" #, c-format msgid "%s Format" msgstr "%s Formatas" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "%s formatas" #, c-format msgid "Translation — %s" msgstr "Vertimas — %s" msgid "ID" msgstr "ID" #, c-format msgid "Source text — %s" msgstr "Pradinis tekstas — %s" msgid "unknown language" msgstr "nežinoma kalba" #, c-format msgid "Network error: %s (%d)" msgstr "Tinklo klaida %s (%d)" msgid "Unknown error" msgstr "Nežinoma klaida" #, c-format msgid "Failed command: %s" msgstr "Nepavykus komanda: %s" msgid "Failed to merge gettext catalogs." msgstr "Nepavyko sujungti gettext katalogų." msgid "Open in Editor" msgstr "Atverti redaktoriuje" msgid "Open in editor" msgstr "Atverti rašyklėje" 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." msgid "No usage information" msgstr "Nėra naudojimo informacijos" #, 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ų" msgid "Source code not found" msgstr "Pirminis tekstas nerastas" 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ą." msgid "File cannot be opened" msgstr "Failo negalima atverti" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "Poedit negali atverti failo „%s“." msgid "Find" msgstr "Ieškoti" msgid "Replace" msgstr "Pakeisti" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "Parinktys" msgid "Ignore case" msgstr "Neskirti didžiųjų raidžių nuo mažųjų" msgid "Wrap around" msgstr "Apgaubti tekstu" msgid "Whole words only" msgstr "Tik ištisus žodžius" msgid "Find in source texts" msgstr "Ieškoti pradiniuose tekstuose" msgid "Find in translations" msgstr "Ieškoti vertime" msgid "Find in comments" msgstr "Ieškoti komentaruose" msgid "Close" msgstr "Užverti" msgid "Replace &All" msgstr "Pakeisti &viską" msgid "Replace &all" msgstr "Pakeisti &visus" msgid "&Replace" msgstr "&Pakeisti" msgid "< &Previous" msgstr "< &Ankstesnis" msgid "&Next >" msgstr "&Kitas >" msgid "String to find" msgstr "Ieškoma eilutė" msgid "Replacement string" msgstr "Pakeitimo eilutė" #, c-format msgid "Cannot execute program: %s" msgstr "Įvykdyti programos nepavyko: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "" msgid "Translation Language" msgstr "Vertimo kalba" msgid "Language of the translation:" msgstr "Vertimo kalba:" msgid "All strings" msgstr "Visos eilutės" msgid "Couldn’t download Localazy project details." msgstr "" msgid "There was an error when uploading translations to Localazy." msgstr "" msgid "Projects" msgstr "Projektai" msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" msgid "Add Project" msgstr "" msgid "Add project" msgstr "Pridėti projektą" msgid "Poedit - Catalogs manager" msgstr "Poedit - katalogų tvarkyklė" msgid "Edit…" msgstr "Redaguoti…" msgid "Create new translations project" msgstr "Sukurti naują vertimų projektą" msgid "Delete the project" msgstr "Ištrinti projektą" msgid "Edit the project" msgstr "Redaguoti projektą" msgid "Update all" msgstr "Atnaujinti viską" msgid "Update all catalogs in the project" msgstr "Atnaujinti visus projekto katalogus" msgid "Total" msgstr "Iš viso" msgid "Untrans" msgstr "Neverstos" msgctxt "column/row header" msgid "Needs Work" msgstr "Būtina peržiūrėti" msgid "Errors" msgstr "Klaidos" msgid "Last modified" msgstr "Paskutinis pakeitimas" msgid "Select directory" msgstr "Pasirinkite aplanką" msgid "Directories:" msgstr "Aplankai:" msgid "" msgstr "" #, c-format msgid "Do you want to delete project “%s”?" msgstr "Ar norite pašalinti „%s“ projektą?" msgid "Delete project" msgstr "Šalinti projektą" msgid "Deleting the project will not delete any translation files." msgstr "Ištrynus projektą, nebus ištrinti jokie vertimo failai." msgid "Confirmation" msgstr "Patvirtinimas" msgid "Update all catalogs in this project?" msgstr "Ar atnaujinti visus šio projekto katalogus?" msgid "Performs update from source code on all files in the project." msgstr "Atlieka visų projekto failų atnaujinimą iš pradinių tekstų." msgid "Check for Updates…" msgstr "Tikrinti, ar yra atnaujinimų…" msgid "Catalogs Manager" msgstr "Katalogų tvarkyklė" msgid "&Preferences…" msgstr "&Nuostatos…" msgid "&Edit" msgstr "&Taisa" msgid "Undo" msgstr "Atšaukti" msgid "Redo" msgstr "Pakartoti" msgid "Paste and Match Style" msgstr "Įdėti ir sutapatinti stilių" msgid "Delete" msgstr "Ištrinti" msgid "Spelling and Grammar" msgstr "Rašyba ir gramatika" msgid "Show Spelling and Grammar" msgstr "Rodyti rašybą ir gramatiką" msgid "Check Document Now" msgstr "Patikrinti dokumentą" msgid "Check Spelling While Typing" msgstr "Tikrinti rašybą rašant" msgid "Check Grammar With Spelling" msgstr "Tikrinti rašybą ir gramatiką" msgid "Correct Spelling Automatically" msgstr "Rašybą tikrinti automatiškai" msgid "Substitutions" msgstr "Pakeitimai" msgid "Show Substitutions" msgstr "Rodyti pakeitimus" msgid "Smart Copy/Paste" msgstr "Įmantrus kopijavimas ir įdėjimas" msgid "Smart Quotes" msgstr "Lietuviškos kabutės" msgid "Smart Dashes" msgstr "Brūkšniai" msgid "Smart Links" msgstr "Išmaniosios nuorodos" msgid "Text Replacement" msgstr "Teksto pakeitimas" msgid "Transformations" msgstr "Transformacijos" msgid "Make Upper Case" msgstr "Didžiosiomis raidėmis" msgid "Make Lower Case" msgstr "Mažosiomis raidėmis" msgid "Capitalize" msgstr "Iš didžiosios raidės" msgid "Speech" msgstr "Kalba" msgid "Start Speaking" msgstr "Pradėti kalbėjimą" msgid "Stop Speaking" msgstr "Baigti kalbėjimą" msgid "&View" msgstr "&Rodymas" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Show Toolbar" msgstr "Rodyti įrankių juostą" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Customize Toolbar…" msgstr "Tinkinti įrankių juostą…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Enter Full Screen" msgstr "Visas ekranas" msgid "Window" msgstr "Langas" msgid "Minimize" msgstr "Minimizuoti" msgid "Zoom" msgstr "Priartinti" msgid "Welcome to Poedit" msgstr "Jus sveikina Poedit" msgid "Bring All to Front" msgstr "Viską rodyti priekyje" msgid "Information about the translator" msgstr "Informacija apie vertėją" msgid "Name:" msgstr "Vardas:" msgid "Your Name" msgstr "Jūsų vardas" msgid "Email:" msgstr "El. paštas:" msgid "you@example.com" msgstr "you@example.com" 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." msgid "Editing" msgstr "Taisymas" msgid "Automatically compile MO file when saving" msgstr "Automatiškai kompiliuoti MO failą išsaugant" msgid "Show summary after updating files" msgstr "Po failų atnaujinimų rodyti santrauką" msgid "Check spelling" msgstr "Tikrinti rašybą" msgid "Always change focus to text input field" msgstr "Visada aktyvuoti teksto įvedimo lauką" 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." msgid "Appearance" msgstr "Išvaizda" msgid "Use custom list font:" msgstr "Sąrašui naudoti savo šriftą:" msgid "Use custom text fields font:" msgstr "Įvedimo laukams naudoti savo šriftą:" msgid "Change UI language" msgstr "Keisti programos kalbą" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions msgid "(requires Windows 8 or newer)" msgstr "(būtina Windows 8 arba naujesnė versija)" msgid "General" msgstr "Bendra" msgid "Use translation memory" msgstr "Naudoti vertimų atminties pasiūlymus" msgid "Manage…" msgstr "Tvarkyti…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "Atnaujinant iš pradinių tekstų" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "parinkti panašų vertimą iš paties failo" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "versti preliminariai iš VA" 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ą." msgid "Stored translations:" msgstr "Išsaugoti vertimai:" msgid "Database size on disk:" msgstr "Duomenų bazės dydis diske:" msgid "Import Translation Files…" msgstr "Importuoti vertimų failus…" msgid "Import translation files…" msgstr "Importuoti vertimų failus…" msgid "Import From TMX…" msgstr "Importuoti iš TMX…" msgid "Import from TMX…" msgstr "Importuoti iš TMX…" msgid "Export To TMX…" msgstr "Eksportuoti į TMX…" msgid "Export to TMX…" msgstr "Eksportuoti į TMX…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). msgid "Reset" msgstr "Atkurti" msgid "Select translation files to import" msgstr "Pasirinkite kokius vertimo failus importuosite" msgid "Translation Memory" msgstr "Vertimų atmintis" msgid "Importing translations…" msgstr "Importuojami vertimai…" #, c-format msgid "Error loading translation file “%s”." msgstr "Klaida įkeliant vertimo failą „%s“." msgid "Finalizing…" msgstr "Užbaigiama…" msgid "Select TMX files to import" msgstr "Pasirinkite kokius TMX importuosite" msgid "TMX Files" msgstr "TMX failai" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "Vertimų atminties importas iš „%s“ nepavyko." msgid "Import error" msgstr "Importavimo klaida" msgid "Export as…" msgstr "Eksportuoti kaip…" msgid "Exporting translations…" msgstr "Eksportuojami vertimai…" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "Vertimų atminties eksportas į „%s“ nepavyko." msgid "Export error" msgstr "Eksportavimo klaida" msgid "Reset translation memory" msgstr "Atkurti vertimų atmintį" msgid "Are you sure you want to reset the translation memory?" msgstr "Ar tikrai norite atkurti vertimų atmintį?" 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. msgid "TM" msgstr "VA" 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." msgid "Custom Extractors:" msgstr "Savi ištraukėjai:" msgid "Custom extractors:" msgstr "Savi ištraukėjai:" msgid "GNU gettext" msgstr "GNU gettext" 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)." msgid "Delete extractor" msgstr "Ištrinti ištraukėją" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "Ar tikrai norite ištrinti „%s“ ištraukėją?" msgid "Extractors" msgstr "Ištraukėjai" msgid "Accounts" msgstr "Paskyros" msgid "Automatically check for updates" msgstr "Automatiškai tikrinti, ar yra atnaujinimų" msgid "Include beta versions" msgstr "Įtraukti beta versijas" 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." msgid "Updates" msgstr "Atnaujinimai" 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." msgid "Line endings:" msgstr "Eilučių pabaigos:" msgid "Unix (recommended)" msgstr "Unix (rekomenduojama)" msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "Tekstą laužyti:" msgid "Preserve formatting of existing files" msgstr "Išlaikyti esamą failų formatavimą" msgid "Advanced" msgstr "Papildomai" msgid "Settings" msgstr "" msgid "Preparing strings…" msgstr "Ruošiamos eilutės…" msgid "Pre-translating from translation memory…" msgstr "Preliminarus vertimas iš vertimų atminties…" #, 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ų" msgid "Pre-translating…" msgstr "Verčiama preliminariai…" 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. msgid "Pre-translate" msgstr "Versti preliminariai" 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." msgid "Cannot pre-translate from unknown language." msgstr "" msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" msgid "Only fill in exact matches" msgstr "Užpildyti tik jei pilnai atitinka" msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" msgid "Don’t mark exact matches as needing work" msgstr "Nežymėti „Reikia peržiūrėti“ jei pilnai atitinka" 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." 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." #, 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." 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ą." msgid "No entries could be pre-translated." msgstr "Nėra eilučių, kurias galima preliminariai išversti." 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ų." msgid "Cancelling…" msgstr "Atsisakoma…" msgid "Drag Folders or Files Here" msgstr "Nutempkite aplankus ir failus čia" msgid "Drag folders or files here" msgstr "Nutempkite aplankus ir failus čia" msgid "Add Folders…" msgstr "Pridėti aplankus…" msgid "Add folders…" msgstr "Pridėti aplankus…" msgid "Add Files…" msgstr "Pridėti failus…" msgid "Add files…" msgstr "Pridėti failus…" msgid "Add Wildcard…" msgstr "Pridėti pakaitos simbolį…" 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) msgid "Reveal in Finder" msgstr "Rodyti „Finder“" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" msgid "Show in Explorer" msgstr "Atverti failų naršyklėje" msgid "Show in Folder" msgstr "Rodyti aplanke" msgid "Paths" msgstr "Keliai" msgid "Excluded paths" msgstr "Ignoruojami keliai" msgid "Advanced extraction settings" msgstr "Išplėstiniai ištraukimo parametrai" msgid "Extract notes for translators from:" msgstr "Išgauti pastabas vertėjams iš:" msgid "Comments prefixed with:" msgstr "Komentarų su priešdėliu:" msgid "All comments" msgstr "Visų komentarų" msgid "Additional xgettext flags:" msgstr "Papildomos xgettext žymos:" msgid "Additional keywords" msgstr "Papildomi raktažodžiai" msgid "Name of the project the translation is for" msgstr "Projekto pavadinimas kuriam skirtas vertimas" msgid "Team name and email address or URL" msgstr "Komandos pavadinimas ir el. pašto adresas arba URL" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "pvz. nplurals=2; plural=(n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (rekomenduojama)" 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." msgid "Placeholders correctness" msgstr "Vietaženklių teisingumas" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "Vietaženklio „%s“ nėra vertime." #, c-format msgid "Superfluous placeholder “%s” that isn’t in source text." msgstr "Perteklinis vietaženklis „%s“, kurio nėra pradiniame tekste." msgid "Plural form translations" msgstr "Daugiskaitos formų vertimas" msgid "Not all plural forms are translated." msgstr "Ne visos daugiskaitos formos išverstos." msgid "Inconsistent upper/lower case" msgstr "Nesuderintas didžiųjų/mažųjų raidžių naudojimas" msgid "The translation should start as a sentence." msgstr "Vertimas turėtų prasidėti kaip sakinys." msgid "The translation should start with a lowercase character." msgstr "Vertimas turėtų prasidėti mažąja raide." msgid "Inconsistent whitespace" msgstr "Nesuderinti tarpai" msgid "The translation doesn’t start with a space." msgstr "Vertimas neprasideda tarpo ženklu." msgid "The translation starts with a space, but the source text doesn’t." msgstr "Vertimas prasideda tarpo ženklu, bet pradiniame tekste taip nėra." msgid "The translation is missing a newline at the end." msgstr "Vertimo pabaigoje trūksta naujos eilutės simbolio." 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." msgid "The translation is missing a space at the end." msgstr "Vertimo pabaigoje trūksta tarpo ženklo." msgid "The translation ends with a space, but the source text doesn’t." msgstr "Vertimas baigiasi tarpo simboliu, bet pradiniame tekste taip nėra." msgid "Punctuation checks" msgstr "Skyrybos tikrinimas" #, c-format msgid "The translation should end with “%s”." msgstr "Vertimas turi baigtis „%s“." #, c-format msgid "The translation should not end with “%s”." msgstr "Vertimas neturi baigtis „%s“." #, c-format msgid "The translation ends with “%s”, but the source text ends with “%s”." msgstr "Vertimas baigiasi „%s“, o pradinis tekstas - „%s“." msgid "Cloud" msgstr "Debesija" msgid "Clear Menu" msgstr "Išvalyti meniu" msgid "Clear menu" msgstr "Išvalyti meniu" msgid "Comment:" msgstr "Komentaras:" msgid "Update" msgstr "Atnaujinti" msgid "&Delete" msgstr "Šalinti" msgid "Delete the comment" msgstr "Pašalinti komentarą" msgid "Edit project" msgstr "Redaguoti projektą" msgid "Project name:" msgstr "Projekto pavadinimas:" msgid "Browse" msgstr "Naršyti" msgid "Add directory to the list" msgstr "Į sąrašą pridėti aplanką" msgid "OK" msgstr "Gerai" msgid "&File" msgstr "&Failas" msgid "&New…" msgstr "&Naujas…" msgid "New from &POT/PO file…" msgstr "Naujas iš &POT/PO failo…" msgid "New From &POT/PO File…" msgstr "Naujas iš &POT/PO failo…" msgid "&Open…" msgstr "&Atverti…" msgid "Open Recent" msgstr "Atverti paskiausiai naudotą" msgid "Open recent" msgstr "Atverti paskiausiai naudotus" msgid "Open cloud translation…" msgstr "" msgid "Open Cloud Translation…" msgstr "" msgid "&Start window" msgstr "&Pradinis langas" msgid "&Start Window" msgstr "&Pradinis langas" msgid "Catalogs &manager" msgstr "Katalogų &tvarkyklė" msgid "Catalogs &Manager" msgstr "Katalogų &tvarkyklė" msgid "&Close" msgstr "&Užverti" msgid "&Save" msgstr "Iš&saugoti" msgid "Save &as…" msgstr "Išsaugoti k&aip…" msgid "Save &As…" msgstr "Išsaugoti k&aip…" msgid "Compile to MO…" msgstr "Kompiliuoti į MO…" msgid "E&xport to HTML…" msgstr "" msgid "Check for updates…" msgstr "Tikrinti, ar yra atnaujinimų…" msgid "Settings…" msgstr "Nuostatos…" msgid "&Preferences" msgstr "&Nustatymai" msgid "E&xit" msgstr "&Išeiti" msgid "Quit" msgstr "Baigti darbą" msgid "Copy from singular" msgstr "Kopijuoti iš vienaskaitos" msgid "Copy From Singular" msgstr "Kopijuoti iš vienaskaitos" msgid "Translation needs &work" msgstr "Vertimą būtina tobulinti" msgid "Translation Needs &Work" msgstr "Vertimą būtina tobulinti" msgid "Edit &comment" msgstr "Redaguoti &komentarą" msgid "Edit &Comment" msgstr "Redaguoti &komentarą" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "Pasiūlymai" msgid "&Find…" msgstr "&Rasti…" msgid "Replace…" msgstr "Sukeisti…" msgid "Find next" msgstr "Rasti tolesnį" msgid "Find previous" msgstr "Rasti ankstesnį" msgid "Find and Replace…" msgstr "Rasti ir pakeisti…" msgid "Find Next" msgstr "Rasti tolesnį" msgid "Find Previous" msgstr "Rasti ankstesnį" msgid "Show string &ID" msgstr "Rodyti eilutės &ID" msgid "Show String &ID" msgstr "Rodyti eilutės &ID" msgid "Show warnings" msgstr "Rodyti įspėjimus" msgid "Show Warnings" msgstr "Rodyti įspėjimus" msgid "Sort by &file order" msgstr "Rikiuoti pagal eiliškumą &faile" msgid "Sort by &File Order" msgstr "Rikiuoti pagal eiliškumą &faile" msgid "Sort by &source" msgstr "Rikiuoti pagal „&Pradinis tekstas“" msgid "Sort by &Source" msgstr "Rikiuoti pagal „&Pradinis tekstas“" msgid "Sort by &translation" msgstr "Rikiuoti pagal „&Vertimas“" msgid "Sort by &Translation" msgstr "Rikiuoti pagal „&Vertimas“" msgid "&Group by context" msgstr "&Grupuoti pagal kontekstą" msgid "&Group By Context" msgstr "&Grupuoti pagal kontekstą" msgid "Entries with errors first" msgstr "Pirmiausia įrašai su klaidomis" msgid "Entries with Errors First" msgstr "Pirmiausia įrašai su klaidomis" msgid "&Untranslated entries first" msgstr "&Pirmiausia neišversti įrašai" msgid "&Untranslated Entries First" msgstr "&Pirmiausia neišversti įrašai" msgid "&Show code occurrences" msgstr "&Rodyti kodo pasireiškimus" msgid "&Show Code Occurrences" msgstr "&Rodyti kodo pasireiškimus" msgid "Show sidebar" msgstr "Rodyti šoninę juostą" msgid "Show status bar" msgstr "Rodyti būsenos juostą" msgid "&Translation" msgstr "&Vertimas" msgid "&Update from source code" msgstr "Atna&ujinti iš pradinių tekstų" msgid "&Update from Source Code" msgstr "Atna&ujinti iš pradinių tekstų" msgid "Update from &POT file…" msgstr "Atnaujinti iš &POT failo…" msgid "Update from &POT File…" msgstr "Atnaujinti iš &POT failo…" msgid "Sync with Crowdin" msgstr "Suvienodinti su „Crowdin“" msgid "Pre-&translate…" msgstr "Vers&ti preliminariai…" msgid "&Validate translations" msgstr "Pa&tikrinti vertimą" msgid "&Validate Translations" msgstr "Pa&tikrinti vertimą" msgid "Remove Same-as-Source Translations" msgstr "" msgid "&Purge deleted translations" msgstr "&Pašalinti ištrintus vertimus" msgid "&Purge Deleted Translations" msgstr "&Pašalinti ištrintus vertimus" msgid "&Properties…" msgstr "&Savybės…" msgid "&Go" msgstr "&Eiti" msgid "&Done and next" msgstr "&Atlikta ir toliau" msgid "&Done and Next" msgstr "&Atlikta ir Toliau" msgid "Previously edited" msgstr "Anksčiau redaguoti" msgid "Previously Edited" msgstr "Anksčiau redaguoti" msgid "&Previous translation" msgstr "&Ankstesnis vertimas" msgid "&Previous Translation" msgstr "&Ankstesnis vertimas" msgid "&Next translation" msgstr "&Kitas vertimas" msgid "&Next Translation" msgstr "&Kitas vertimas" msgid "P&revious unfinished" msgstr "&Ankstesnis nebaigtas" msgid "P&revious Unfinished" msgstr "&Ankstesnis nebaigtas" msgid "Ne&xt unfinished" msgstr "&Kitas nebaigtas" msgid "Ne&xt Unfinished" msgstr "&Kitas nebaigtas" msgid "Previous plural form" msgstr "Ankstesnė daugiskaitos forma" msgid "Previous Plural Form" msgstr "Ankstesnė daugiskaitos forma" msgid "Next plural form" msgstr "Kita daugiskaitos forma" msgid "Next Plural Form" msgstr "Kita daugiskaitos forma" msgid "&Online help" msgstr "&Žinynas internete" msgid "&Online Help" msgstr "&Žinynas internete" msgid "&GNU gettext manual" msgstr "&GNU gettext vadovas" msgid "&GNU gettext Manual" msgstr "&GNU gettext vadovas" msgid "&About Poedit" msgstr "&Apie Poedit" msgid "&About" msgstr "&Apie" msgid "Extractor setup" msgstr "Ištraukėjo nuostatos" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Plėtinių, atskirtų kabliataškiais, sąrašas (pvz., *.cpp;*.h):" msgid "Invocation:" msgstr "Iškvietimas:" msgid "Command to extract translations:" msgstr "Vertimų išgavimo komanda:" 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)." msgid "An item in keywords list:" msgstr "Elementas raktažodžių sąraše:" 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į." msgid "An item in input files list:" msgstr "Elementas įvedimo failų sąraše:" #, 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ą." msgid "Source code charset:" msgstr "Pradinių tekstų koduotė:" #, 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ą." msgid "Translation Properties" msgstr "Vertimo savybės" msgid "Project name and version:" msgstr "Projekto pavadinimas ir versija:" msgid "Language team:" msgstr "Vertėjų komanda:" msgid "Plural forms:" msgstr "Daugiskaitos formos:" msgid "Use default rules for this language" msgstr "Šiai kalbai naudoti numatytąsias taisykles" msgid "Use custom expression" msgstr "Naudoti savo išraišką" msgid "Learn about plural forms" msgstr "Sužinokite apie daugiskaitos formas" msgid "Charset:" msgstr "Koduotė:" msgid "Advanced Extraction Settings…" msgstr "Išplėstiniai ištraukimo parametrai…" msgid "Advanced extraction settings…" msgstr "Išplėstiniai ištraukimo parametrai…" msgid "Translation properties" msgstr "Vertimo savybės" msgid "Sources Paths" msgstr "Pradinių failų keliai" msgid "Sources paths" msgstr "Pradinių failų keliai" msgid "Extract text from source files in the following directories:" msgstr "Išgauti tekstą iš pradinių failų esančių šiuose aplankuose:" msgid "Base path:" msgstr "Pagrindinis kelias:" msgid "Sources Keywords" msgstr "Pradinių failų raktažodžiai" msgid "Sources keywords" msgstr "Pradinių failų raktažodžiai" 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:" msgid "Also use default keywords for supported languages" msgstr "Taip pat palaikomoms kalboms naudoti numatytuosius raktažodžius" msgid "Learn about gettext keywords" msgstr "Sužinokite daugiau apie gettext raktažodžius" msgid "Update summary" msgstr "Atnaujinti santrauką" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" "Šios eilutės yra šaltiniuose, bet jų nėra faile.\n" "„Poedit“ juos įtrauks ir į failą." msgid "New strings" msgstr "Naujos eilutės" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" "Šių eilučių nebėra pradiniuose tekstuose.\n" "Poedit juos pašalins ir iš failo." msgid "Obsolete strings" msgstr "Seni žodžiai" msgid "(0 new, 0 obsolete)" msgstr "(0 naujų, 0 senų)" msgid "Open" msgstr "" msgid "Open file" msgstr "Atverti failą" msgid "Save file" msgstr "Išsaugoti failą" msgid "Validate" msgstr "Patikrinti" msgid "Check for errors in the translation" msgstr "Tikrinti ar nėra vertimo klaidų" msgid "Update from code" msgstr "Atnaujinti iš pradinių tekstų" msgid "Update from Code" msgstr "Atnaujinti iš pradinių tekstų" msgid "Update from source code" msgstr "Atnaujinti iš pradinių tekstų" msgid "Sidebar" msgstr "Šoninė juosta" 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. msgid "Previous source text" msgstr "Ankstesnis pradinis tekstas" 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ą." msgid "Notes for translators" msgstr "Pastabos vertėjams" msgid "Comment" msgstr "Komentaras" msgid "Add comment" msgstr "Pridėti komentarą" msgid "Add Comment" msgstr "Pridėti komentarą" msgid "Delete From Translation Memory" msgstr "Ištrinti iš vertimų atminties" msgid "Delete from translation memory" msgstr "Ištrinti iš vertimų atminties" msgid "Translation suggestions" msgstr "Vertimų siūlymai" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). msgid "No matches found" msgstr "Atitikmenų nerasta" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). msgid "No Matches Found" msgstr "Atitikmenų nerasta" msgid "This string was found in Poedit’s translation memory." msgstr "Ši eilutė buvo rasta Poedit vertimų atmintyje." 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." msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" msgid "The TMX file is malformed." msgstr "TMX failas yra neteisingas." msgid "No translations were found in the TMX file." msgstr "TMX faile nerasta vertimų." #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Sugadinta vertimų atminties duomenų bazė: %s (%d)." #, c-format msgid "Translation memory error: %s (%d)." msgstr "Vertimų atminties klaida: %s (%d)." msgid "Cannot create temporary directory." msgstr "Sukurti laikino aplanko nepavyko." msgid "There are no translations. That’s unusual." msgstr "Nėra vertimų. Neįprasta." msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "Translators typically use PO template files (POTs) prepared for them by the " "developer." msgstr "" "Gettext sistemoje įrašai vertimui nėra pridedami rankiniu būdu, bet " "automatiškai išgaunami\n" "iš pradinio teksto. Tokiu būdu jie lieka naujausi ir tikslūs.\n" "Vertėjai paprastai naudoja PO šablono failus (POT), kuriuos sukuria programų " "autoriai." msgid "(Learn more about GNU gettext)" msgstr "(Sužinokite daugiau apie GNU gettext)" 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:" msgid "Update from POT" msgstr "Atnaujinti failą pagal POT šabloną" msgid "Take translatable strings from an existing POT template." msgstr "Paimti verčiamas eilutes iš esamo POT šablono." msgid "" "You can also extract translatable strings directly from the source code:" msgstr "Taipogi galite išgauti verstinas eilutes tiesiai iš pradinių tekstų:" msgid "Extract from sources" msgstr "Išgauti iš pradinių tekstų" 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 #, c-format msgid "Version %s" msgstr "Versija %s" msgid "Create new" msgstr "Sukurti naują" msgid "Create new translation from POT template." msgstr "Sukurti naują vertimą iš POT šablono." msgid "Browse files" msgstr "Naršyti failus" msgid "Open and edit translation files." msgstr "Atverti ir redaguoti vertimų failus." msgid "Translate cloud project" msgstr "" msgid "Collaborate with other people online." msgstr "" msgid "Recent files" msgstr "Paskiausiai naudoti failai" msgid "Sync" msgstr "Sinchronizuoti" 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") #, 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. #, c-format msgid "%s Preferences" msgstr "%s nuostatos" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "Paslaugos" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "Slėpti %s" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "Slėpti kitus" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "Rodyti visus" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "Baigti %s darbą" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "Nustatymai…" msgid "Preferences..." msgstr "Nuostatos..." #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "Paskiausiai naudoti" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "Dažnai naudoti" msgid "&Apply" msgstr "&Taikyti" msgid "Apply" msgstr "Taikyti" msgid "&Back" msgstr "&Atgal" msgid "Back" msgstr "Atgal" msgid "&Cancel" msgstr "&Atsisakyti" msgid "&Clear" msgstr "&Išvalyti" msgid "Clear" msgstr "Išvalyti" msgid "Copy" msgstr "Kopijuoti" msgid "Cu&t" msgstr "Iškirp&ti" msgid "Cut" msgstr "Iškirpti" msgid "Edit" msgstr "Redaguoti" msgid "&Quit" msgstr "&Baigti darbą" msgid "Help" msgstr "Žinynas" msgid "&New" msgstr "&Naujas" msgid "New" msgstr "Naujas" msgid "&No" msgstr "&Ne" msgid "No" msgstr "Ne" msgid "&OK" msgstr "&Gerai" msgid "Open…" msgstr "Atverti…" msgid "&Open..." msgstr "&Atverti..." msgid "Open..." msgstr "Atverti..." msgid "&Paste" msgstr "Į&dėti" msgid "Paste" msgstr "Įdėti" msgid "Preferences" msgstr "Nuostatos" msgid "&Redo" msgstr "&Pakartoti" msgid "Refresh" msgstr "Įkelti iš naujo" msgid "&Save as" msgstr "Iš&saugoti kaip" msgid "Save as" msgstr "Išsaugoti kaip" msgid "Select &All" msgstr "Žymėti &viską" msgid "Select All" msgstr "Pažymėti viską" msgid "&Undo" msgstr "&Atšaukti" msgid "&Yes" msgstr "&Taip" msgid "Yes" msgstr "Taip" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "Aukštyn" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "Žemyn" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "Kairė" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "Dešinė" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "shift" poedit-3.5/locales/en_GB.po0000644000175100001770000017365714664354153012563 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "Hide this notification message" msgid "Don’t Show Again" msgstr "Don’t Show Again" msgid "Don’t show again" msgstr "Don’t show again" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(New: %i, obsolete: %i)" msgid "Collecting source files…" msgstr "Collecting source files…" msgid "Extracting translatable strings…" msgstr "Extracting translatable strings…" msgid "Failed to load file with extracted translations." msgstr "Failed to load file with extracted translations." msgid "Merging differences…" msgstr "Merging differences…" msgid "Updating translations" msgstr "Updating translations" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "The file “%s” couldn’t be opened." msgid "Invalid file" msgstr "Invalid file" #, c-format msgid "Malformed header: “%s”" msgstr "Malformed header: “%s”" msgid "PO Translation Files" msgstr "PO Translation Files" msgid "POT Translation Templates" msgstr "POT Translation Templates" msgid "XLIFF Translation Files" msgstr "XLIFF Translation Files" msgid "JSON Translation Files" msgstr "JSON Translation Files" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "Flutter Translation Files" msgid "All Translation Files" msgstr "All Translation Files" msgid "The file is in a format not recognized by Poedit." msgstr "The file is in a format not recognised by Poedit." 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." #, c-format msgid "Reading file content failed with the following error: %s" msgstr "Reading file content failed with the following error: %s" #, 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." #, c-format msgid "Couldn’t save file %s." msgstr "Couldn’t save file %s." msgid "Screenshots:" msgstr "Screenshots:" #, 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." #, 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)." msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "Broken PO file: singular form msgstr used together with msgid_plural" msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "Broken PO file: plural form msgstr used without msgid_plural" msgid "Couldn’t load the file, it is probably damaged." msgstr "Couldn’t load the file, it is probably damaged." 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." 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)." #, 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." msgid "Error saving file" msgstr "Error saving file" #, c-format msgid "“%s” is not a valid POT file." msgstr "“%s” is not a valid POT file." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Error while loading XLIFF file: %s" #, c-format msgid "unsupported version (%s)" msgstr "unsupported version (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML msgid "Broken markup in translation string." msgstr "Broken markup in translation string." msgid "(Use default language)" msgstr "(Use default language)" msgid "Language selection" msgstr "Language selection" msgid "Select your preferred language" msgstr "Select your preferred language" msgid "You must restart Poedit for this change to take effect." msgstr "You must restart Poedit for this change to take effect." msgid "Add Account" msgstr "Add Account" msgid "Add account" msgstr "Add account" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "Learn more about %s" 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." msgid "How does cloud sync work?" msgstr "How does cloud sync work?" msgid "Account" msgstr "Account" msgid "(not signed in)" msgstr "(not signed in)" msgid "File" msgstr "File" msgid "Open cloud translation" msgstr "Open cloud translation" msgid "Manage accounts" msgstr "Manage accounts" msgid "Project:" msgstr "Project:" msgid "Language:" msgstr "Language:" msgid "Sign in to Cloud Account" msgstr "Sign in to Cloud Account" msgid "Sign in to cloud account" msgstr "Sign in to cloud account" msgid "No translation projects listed in your account." msgstr "No translation projects listed in your account." msgid "Downloading latest translations…" msgstr "Downloading latest translations…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #, c-format msgid "Sign in to %s" msgstr "Sign in to %s" msgid "Syncing" msgstr "Syncing" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, 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. #, c-format msgid "Uploading translations to %s failed." msgstr "Uploading translations to %s failed." msgid "Syncing error" msgstr "Syncing error" msgid "Add" msgstr "Add" msgid "Unknown Crowdin error." msgstr "Unknown Crowdin error." msgid "Not authorized, please sign in again." msgstr "Not authorised, please sign in again." msgid "Downloading translations is disabled in this project." msgstr "Downloading translations is disabled in this project." msgid "Sign In" msgstr "Sign In" msgid "Sign in" msgstr "Sign in" msgid "Sign Out" msgstr "Sign Out" msgid "Sign out" msgstr "Sign out" msgid "Learn more about Crowdin" msgstr "Learn more about Crowdin" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" "Crowdin is an online localisation management platform and collaborative " "translation tool." msgid "Waiting for authentication…" msgstr "Waiting for authentication…" msgid "Updating user information…" msgstr "Updating user information…" msgid "Sign in to Crowdin" msgstr "Sign in to Crowdin" msgid "Syncing with Crowdin failed." msgstr "Syncing with Crowdin failed." msgid "Crowdin error" msgstr "Crowdin error" msgid "Uploading translations…" msgstr "Uploading translations…" msgid "&Copy" msgstr "&Copy" msgid "Learn more" msgstr "Learn more" msgid "&Help" msgstr "&Help" msgid "MO files can’t be directly edited in Poedit." msgstr "MO files can’t be directly edited in Poedit." msgid "Error opening file" msgstr "Error opening file" 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." msgid "don’t delete temporary files (for debugging)" msgstr "don’t delete temporary files (for debugging)" msgid "handle a poedit:// URI" msgstr "handle a poedit:// URI" msgid "go to item at given line number" msgstr "go to item at given line number" msgid "Failed to communicate with Poedit process." msgstr "Failed to communicate with Poedit process." #, c-format msgid "Unhandled exception occurred: %s" msgstr "Unhandled exception occurred: %s" msgid "Select translation template" msgstr "Select translation template" msgid "Select translation file" msgstr "Select translation file" msgid "Poedit is an easy to use translation editor." msgstr "Poedit is an easy to use translation editor." msgid "You can’t drop more than one file on Poedit window." msgstr "You can’t drop more than one file on Poedit window." #, c-format msgid "File “%s” is not a translation file." msgstr "File “%s” is not a translation file." #, c-format msgid "File “%s” doesn’t exist." msgstr "File “%s” doesn’t exist." 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". #, 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." msgid "Install" msgstr "Install" #, c-format msgid "The file “%s” has been changed by another application." msgstr "The file “%s” has been changed by another application." msgid "Reload file" msgstr "Reload file" 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." msgid "Ignore" msgstr "Ignore" msgid "Reload File" msgstr "Reload File" msgid "The file has been modified. Do you want to save changes?" msgstr "The file has been modified. Do you want to save changes?" msgid "Save changes" msgstr "Save changes" msgid "Your changes will be lost if you don’t save them." msgstr "Your changes will be lost if you don’t save them." msgid "Save" msgstr "Save" msgid "Do&n’t save" msgstr "Don’t save" msgid "Don’t Save" msgstr "Don’t Save" 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." msgid "Cancel" msgstr "Cancel" msgid "Save Anyway" msgstr "Save Anyway" msgid "Save anyway" msgstr "Save anyway" msgid "Save as…" msgstr "Save as…" msgid "Compile to…" msgstr "Compile to…" msgid "Compiled Translation Files" msgstr "Compiled Translation Files" msgid "Export to HTML…" msgstr "Export to HTML…" msgid "HTML Files" msgstr "HTML Files" #, c-format msgid "In: %s" msgstr "In: %s" msgid "Source code not available." msgstr "Source code not available." msgid "Updating failed" msgstr "Updating failed" 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." msgid "Permission denied." msgstr "Permission denied." 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. 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. 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." msgid "Translation entries in the file are probably incorrect." msgstr "Translation entries in the file are probably incorrect." msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "Updating the file failed. Click on 'Details >>' for details." msgid "Open translation template" msgstr "Open translation template" #, 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." msgid "Validation results" msgstr "Validation results" 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." msgid "The file was saved safely." msgstr "The file was saved safely." 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." 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." 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." msgid "The file cannot be compiled into the MO format and used." msgstr "The file cannot be compiled into the MO format and used." msgid "No problems with the translation found." msgstr "No problems with the translation found." #, 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." msgid "The translation is ready for use." msgstr "The translation is ready for use." #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "Poedit automatically fixed invalid content in the file “%s”." msgid "" "The file contained duplicate items, which is not allowed in PO files and " "would prevent the file from being used. Poedit fixed the issue, but you " "should review translations of any items marked as 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." msgid "Language of the translation isn’t set." msgstr "Language of the translation isn’t set." msgid "Set Language" msgstr "Set Language" msgid "Set language" msgstr "Set language" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." msgid "" "Suggestions are not available if the translation language is not set " "correctly. Other features, such as plural forms, may be affected as well." msgstr "" "Suggestions are not available if the translation language is not set " "correctly. Other features, such as plural forms, may be affected as well." msgid "Language of the translation is the same as source language." msgstr "Language of the translation is the same as source language." msgid "Fix Language" msgstr "Fix Language" msgid "Fix language" msgstr "Fix language" msgid "" "This 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." 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" msgid "Required header Plural-Forms is missing." msgstr "Required header Plural-Forms is missing." #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Syntax error in Plural-Forms header (\"%s\")." msgid "Fix the Header" msgstr "Fix the Header" 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". #, 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.")" msgid "Review" msgstr "Review" msgid "Would you like to use English for source text?" msgstr "Would you like to use English for source text?" #, 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" msgid "Load English" msgstr "Load English" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Translated: %d of %d (%d %%)" #, c-format msgid "Remaining: %d" msgstr "Remaining: %d" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d error" msgstr[1] "%d errors" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d entry" msgstr[1] "%d entries" msgid " (unsaved)" msgstr " (unsaved)" msgid " (modified)" msgstr " (modified)" #, c-format msgid "Failed to update translation memory: %s" msgstr "Failed to update translation memory: %s" msgid "Remove same-as-source translations" msgstr "Remove same-as-source translations" 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?" 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." msgid "Keep" msgstr "Keep" msgid "Remove" msgstr "Remove" msgid "Purge deleted translations" msgstr "Purge deleted translations" 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?" 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." msgid "Purge" msgstr "Purge" msgid "Copy from source text" msgstr "Copy from source text" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "Clear translation" msgid "Clear Translation" msgstr "Clear Translation" msgid "Edit comment" msgstr "Edit comment" msgid "Edit Comment" msgstr "Edit Comment" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "Code Occurrences" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "Code occurrences" msgid "Hide Sidebar" msgstr "Hide Sidebar" msgid "Show Sidebar" msgstr "Show Sidebar" msgid "Hide Status Bar" msgstr "Hide Status Bar" msgid "Show Status Bar" msgstr "Show Status Bar" msgid "String length in characters: translation | source" msgstr "String length in characters: translation | source" msgid "String length in characters" msgstr "String length in characters" msgid "Source text" msgstr "Source text" msgid "Singular" msgstr "Singular" msgid "Plural" msgstr "Plural" msgid "Translation" msgstr "Translation" msgid "Pre-translated" msgstr "Pre-translated" 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. msgid "Needs work" msgstr "Needs work" msgid "" "POT files are only templates and don’t contain any translations themselves.\n" "To make a translation, create a new PO file based on the template." msgstr "" "POT files are only templates and don’t contain any translations themselves.\n" "To make a translation, create a new PO file based on the template." msgid "Create new translation" msgstr "Create new translation" msgid "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 msgid "Source text ID" msgstr "Source text ID" msgid "Everything" msgstr "Everything" #, c-format msgid "Form %i" msgstr "Form %i" #, c-format msgid "Form %i (unused)" msgstr "Form %i (unused)" msgid "Zero" msgstr "Zero" msgid "One" msgstr "One" msgid "Two" msgstr "Two" msgid "Other" msgstr "Other" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, c-format msgid "String context: %s" msgstr "String context: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #, c-format msgid "String identifier: %s" msgstr "String identifier: %s" #, c-format msgid "%s Format" msgstr "%s Format" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "%s format" #, c-format msgid "Translation — %s" msgstr "Translation — %s" msgid "ID" msgstr "ID" #, c-format msgid "Source text — %s" msgstr "Source text — %s" msgid "unknown language" msgstr "unknown language" #, c-format msgid "Network error: %s (%d)" msgstr "Network error: %s (%d)" msgid "Unknown error" msgstr "Unknown error" #, c-format msgid "Failed command: %s" msgstr "Failed command: %s" msgid "Failed to merge gettext catalogs." msgstr "Failed to merge gettext catalogues." msgid "Open in Editor" msgstr "Open in Editor" msgid "Open in editor" msgstr "Open in editor" 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." msgid "No usage information" msgstr "No usage information" #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d code occurrence" msgstr[1] "%d code occurrences" msgid "Source code not found" msgstr "Source code not found" 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." msgid "File cannot be opened" msgstr "File cannot be opened" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "Poedit was unable to open the “%s” file." msgid "Find" msgstr "Find" msgid "Replace" msgstr "Replace" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "Options" msgid "Ignore case" msgstr "Ignore case" msgid "Wrap around" msgstr "Wrap around" msgid "Whole words only" msgstr "Whole words only" msgid "Find in source texts" msgstr "Find in source texts" msgid "Find in translations" msgstr "Find in translations" msgid "Find in comments" msgstr "Find in comments" msgid "Close" msgstr "Close" msgid "Replace &All" msgstr "Replace &All" msgid "Replace &all" msgstr "Replace &all" msgid "&Replace" msgstr "&Replace" msgid "< &Previous" msgstr "< &Previous" msgid "&Next >" msgstr "&Next >" msgid "String to find" msgstr "String to find" msgid "Replacement string" msgstr "Replacement string" #, c-format msgid "Cannot execute program: %s" msgstr "Cannot execute program: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "Language name or code" msgid "Translation Language" msgstr "Translation Language" msgid "Language of the translation:" msgstr "Language of the translation:" msgid "All strings" msgstr "All strings" msgid "Couldn’t download Localazy project details." msgstr "Couldn’t download Localazy project details." msgid "There was an error when uploading translations to Localazy." msgstr "There was an error when uploading translations to Localazy." msgid "Projects" msgstr "Projects" 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." msgid "Add Project" msgstr "Add Project" msgid "Add project" msgstr "Add project" msgid "Poedit - Catalogs manager" msgstr "Poedit - Catalogues manager" msgid "Edit…" msgstr "Edit…" msgid "Create new translations project" msgstr "Create new translations project" msgid "Delete the project" msgstr "Delete the project" msgid "Edit the project" msgstr "Edit the project" msgid "Update all" msgstr "Update all" msgid "Update all catalogs in the project" msgstr "Update all catalogues in the project" msgid "Total" msgstr "Total" msgid "Untrans" msgstr "Untrans" msgctxt "column/row header" msgid "Needs Work" msgstr "Needs Work" msgid "Errors" msgstr "Errors" msgid "Last modified" msgstr "Last modified" msgid "Select directory" msgstr "Select directory" msgid "Directories:" msgstr "Directories:" msgid "" msgstr "" #, c-format msgid "Do you want to delete project “%s”?" msgstr "Do you want to delete project “%s”?" msgid "Delete project" msgstr "Delete project" msgid "Deleting the project will not delete any translation files." msgstr "Deleting the project will not delete any translation files." msgid "Confirmation" msgstr "Confirmation" msgid "Update all catalogs in this project?" msgstr "Update all catalogs in this project?" msgid "Performs update from source code on all files in the project." msgstr "Performs update from source code on all files in the project." msgid "Check for Updates…" msgstr "Check for Updates…" msgid "Catalogs Manager" msgstr "Catalogs Manager" msgid "&Preferences…" msgstr "&Preferences…" msgid "&Edit" msgstr "&Edit" msgid "Undo" msgstr "Undo" msgid "Redo" msgstr "Redo" msgid "Paste and Match Style" msgstr "Paste and Match Style" msgid "Delete" msgstr "Delete" msgid "Spelling and Grammar" msgstr "Spelling and Grammar" msgid "Show Spelling and Grammar" msgstr "Show Spelling and Grammar" msgid "Check Document Now" msgstr "Check Document Now" msgid "Check Spelling While Typing" msgstr "Check Spelling While Typing" msgid "Check Grammar With Spelling" msgstr "Check Grammar With Spelling" msgid "Correct Spelling Automatically" msgstr "Correct Spelling Automatically" msgid "Substitutions" msgstr "Substitutions" msgid "Show Substitutions" msgstr "Show Substitutions" msgid "Smart Copy/Paste" msgstr "Smart Copy/Paste" msgid "Smart Quotes" msgstr "Smart Quotes" msgid "Smart Dashes" msgstr "Smart Dashes" msgid "Smart Links" msgstr "Smart Links" msgid "Text Replacement" msgstr "Text Replacement" msgid "Transformations" msgstr "Transformations" msgid "Make Upper Case" msgstr "Make Upper Case" msgid "Make Lower Case" msgstr "Make Lower Case" msgid "Capitalize" msgstr "Capitalise" msgid "Speech" msgstr "Speech" msgid "Start Speaking" msgstr "Start Speaking" msgid "Stop Speaking" msgstr "Stop Speaking" msgid "&View" msgstr "&View" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Show Toolbar" msgstr "Show Toolbar" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Customize Toolbar…" msgstr "Customise Toolbar…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Enter Full Screen" msgstr "Enter Full Screen" msgid "Window" msgstr "Window" msgid "Minimize" msgstr "Minimise" msgid "Zoom" msgstr "Zoom" msgid "Welcome to Poedit" msgstr "Welcome to Poedit" msgid "Bring All to Front" msgstr "Bring All to Front" msgid "Information about the translator" msgstr "Information about the translator" msgid "Name:" msgstr "Name:" msgid "Your Name" msgstr "Your Name" msgid "Email:" msgstr "E-mail:" msgid "you@example.com" msgstr "you@example.com" 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." msgid "Editing" msgstr "Editing" msgid "Automatically compile MO file when saving" msgstr "Automatically compile MO file when saving" msgid "Show summary after updating files" msgstr "Show summary after updating files" msgid "Check spelling" msgstr "Check spelling" msgid "Always change focus to text input field" msgstr "Always change focus to text input field" 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." msgid "Appearance" msgstr "Appearance" msgid "Use custom list font:" msgstr "Use custom list font:" msgid "Use custom text fields font:" msgstr "Use custom text fields font:" msgid "Change UI language" msgstr "Change UI language" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions msgid "(requires Windows 8 or newer)" msgstr "(requires Windows 8 or newer)" msgid "General" msgstr "General" msgid "Use translation memory" msgstr "Use translation memory" msgid "Manage…" msgstr "Manage…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "When updating from sources" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "fuzzy match within the file" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "pre-translate from TM" 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." msgid "Stored translations:" msgstr "Stored translations:" msgid "Database size on disk:" msgstr "Database size on disk:" msgid "Import Translation Files…" msgstr "Import Translation Files…" msgid "Import translation files…" msgstr "Import translation files…" msgid "Import From TMX…" msgstr "Import From TMX…" msgid "Import from TMX…" msgstr "Import from TMX…" msgid "Export To TMX…" msgstr "Export To TMX…" 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). msgid "Reset" msgstr "Reset" msgid "Select translation files to import" msgstr "Select translation files to import" msgid "Translation Memory" msgstr "Translation Memory" msgid "Importing translations…" msgstr "Importing translations…" #, c-format msgid "Error loading translation file “%s”." msgstr "Error loading translation file “%s”." msgid "Finalizing…" msgstr "Finalising…" msgid "Select TMX files to import" msgstr "Select TMX files to import" msgid "TMX Files" msgstr "TMX Files" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "Importing translation memory from “%s” failed." msgid "Import error" msgstr "Import error" msgid "Export as…" msgstr "Export as…" msgid "Exporting translations…" msgstr "Exporting translations…" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "Exporting translation memory to “%s” failed." msgid "Export error" msgstr "Export error" msgid "Reset translation memory" msgstr "Reset translation memory" msgid "Are you sure you want to reset the translation memory?" msgstr "Are you sure you want to reset the translation memory?" 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. msgid "TM" msgstr "TM" msgid "" "Source code extractors are used to find translatable strings in the source " "code files and extract them so that they can be translated." msgstr "" "Source code extractors are used to find translatable strings in the source " "code files and extract them so that they can be translated." msgid "Custom Extractors:" msgstr "Custom Extractors:" msgid "Custom extractors:" msgstr "Custom extractors:" msgid "GNU gettext" msgstr "GNU gettext" 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)." msgid "Delete extractor" msgstr "Delete extractor" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "Are you sure you want to delete the “%s” extractor?" msgid "Extractors" msgstr "Extractors" msgid "Accounts" msgstr "Accounts" msgid "Automatically check for updates" msgstr "Automatically check for updates" msgid "Include beta versions" msgstr "Include beta versions" 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." msgid "Updates" msgstr "Updates" 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." msgid "Line endings:" msgstr "Line endings:" msgid "Unix (recommended)" msgstr "Unix (recommended)" msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "Wrap at:" msgid "Preserve formatting of existing files" msgstr "Preserve formatting of existing files" msgid "Advanced" msgstr "Advanced" msgid "Settings" msgstr "Settings" msgid "Preparing strings…" msgstr "Preparing strings…" msgid "Pre-translating from translation memory…" msgstr "Pre-translating from translation memory…" #, 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" msgid "Pre-translating…" msgstr "Pre-translating…" 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. msgid "Pre-translate" msgstr "Pre-translate" 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." msgid "Cannot pre-translate from unknown language." msgstr "Cannot pre-translate from unknown language." 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." msgid "Only fill in exact matches" msgstr "Only fill in exact matches" 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." msgid "Don’t mark exact matches as needing work" msgstr "Don’t mark exact matches as needing work" 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." 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." #, 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." 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." msgid "No entries could be pre-translated." msgstr "No entries could be pre-translated." 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." msgid "Cancelling…" msgstr "Cancelling…" msgid "Drag Folders or Files Here" msgstr "Drag Folders or Files Here" msgid "Drag folders or files here" msgstr "Drag folders or files here" msgid "Add Folders…" msgstr "Add Folders…" msgid "Add folders…" msgstr "Add folders…" msgid "Add Files…" msgstr "Add Files…" msgid "Add files…" msgstr "Add files…" msgid "Add Wildcard…" msgstr "Add Wildcard…" 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) 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" msgid "Show in Explorer" msgstr "Show in Explorer" msgid "Show in Folder" msgstr "Show in Folder" msgid "Paths" msgstr "Paths" msgid "Excluded paths" msgstr "Excluded paths" msgid "Advanced extraction settings" msgstr "Advanced extraction settings" msgid "Extract notes for translators from:" msgstr "Extract notes for translators from:" msgid "Comments prefixed with:" msgstr "Comments prefixed with:" msgid "All comments" msgstr "All comments" msgid "Additional xgettext flags:" msgstr "Additional xgettext flags:" msgid "Additional keywords" msgstr "Additional keywords" msgid "Name of the project the translation is for" msgstr "Name of the project the translation is for" msgid "Team name and email address or URL" msgstr "Team name and email address or URL" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "e.g. nplurals=2; plural=(n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (recommended)" msgid "Please save the file first. This section cannot be edited until then." msgstr "Please save the file first. This section cannot be edited until then." msgid "Placeholders correctness" msgstr "Placeholders correctness" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "Placeholder “%s” is missing from translation." #, c-format msgid "Superfluous placeholder “%s” that isn’t in source text." msgstr "Superfluous placeholder “%s” that isn’t in source text." msgid "Plural form translations" msgstr "Plural form translations" msgid "Not all plural forms are translated." msgstr "Not all plural forms are translated." msgid "Inconsistent upper/lower case" msgstr "Inconsistent upper/lower case" msgid "The translation should start as a sentence." msgstr "The translation should start as a sentence." msgid "The translation should start with a lowercase character." msgstr "The translation should start with a lowercase character." msgid "Inconsistent whitespace" msgstr "Inconsistent whitespace" msgid "The translation doesn’t start with a space." msgstr "The translation doesn’t start with a space." 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." msgid "The translation is missing a newline at the end." msgstr "The translation is missing a newline at the end." 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." msgid "The translation is missing a space at the end." msgstr "The translation is missing a space at the end." 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." msgid "Punctuation checks" msgstr "Punctuation checks" #, c-format msgid "The translation should end with “%s”." msgstr "The translation should end with “%s”." #, c-format msgid "The translation should not end with “%s”." msgstr "The translation should not end with “%s”." #, 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”." msgid "Cloud" msgstr "Cloud" msgid "Clear Menu" msgstr "Clear Menu" msgid "Clear menu" msgstr "Clear menu" msgid "Comment:" msgstr "Comment:" msgid "Update" msgstr "Update" msgid "&Delete" msgstr "&Delete" msgid "Delete the comment" msgstr "Delete the comment" msgid "Edit project" msgstr "Edit project" msgid "Project name:" msgstr "Project name:" msgid "Browse" msgstr "Browse" msgid "Add directory to the list" msgstr "Add directory to the list" msgid "OK" msgstr "OK" msgid "&File" msgstr "&File" msgid "&New…" msgstr "&New…" msgid "New from &POT/PO file…" msgstr "New from &POT/PO file…" msgid "New From &POT/PO File…" msgstr "New From &POT/PO File…" msgid "&Open…" msgstr "&Open…" msgid "Open Recent" msgstr "Open Recent" msgid "Open recent" msgstr "Open Recent" msgid "Open cloud translation…" msgstr "Open cloud translation…" msgid "Open Cloud Translation…" msgstr "Open Cloud Translation…" msgid "&Start window" msgstr "&Start window" msgid "&Start Window" msgstr "&Start Window" msgid "Catalogs &manager" msgstr "Catalogues &manager" msgid "Catalogs &Manager" msgstr "Catalogues &Manager" msgid "&Close" msgstr "&Close" msgid "&Save" msgstr "&Save" msgid "Save &as…" msgstr "Save &as…" msgid "Save &As…" msgstr "Save &As…" msgid "Compile to MO…" msgstr "Compile to MO…" msgid "E&xport to HTML…" msgstr "E&xport to HTML…" msgid "Check for updates…" msgstr "Check for updates…" msgid "Settings…" msgstr "Settings…" msgid "&Preferences" msgstr "&Preferences" msgid "E&xit" msgstr "E&xit" msgid "Quit" msgstr "Quit" msgid "Copy from singular" msgstr "Copy from singular" msgid "Copy From Singular" msgstr "Copy From Singular" msgid "Translation needs &work" msgstr "Translation needs &work" msgid "Translation Needs &Work" msgstr "Translation Needs &Work" msgid "Edit &comment" msgstr "Edit &comment" msgid "Edit &Comment" msgstr "Edit &Comment" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "Suggestions" msgid "&Find…" msgstr "&Find…" msgid "Replace…" msgstr "Replace…" msgid "Find next" msgstr "Find next" msgid "Find previous" msgstr "Find previous" msgid "Find and Replace…" msgstr "Find and Replace…" msgid "Find Next" msgstr "Find Next" msgid "Find Previous" msgstr "Find Previous" msgid "Show string &ID" msgstr "Show string &ID" msgid "Show String &ID" msgstr "Show String &ID" msgid "Show warnings" msgstr "Show warnings" msgid "Show Warnings" msgstr "Show Warnings" msgid "Sort by &file order" msgstr "Sort by &file order" msgid "Sort by &File Order" msgstr "Sort by &File Order" msgid "Sort by &source" msgstr "Sort by &source" msgid "Sort by &Source" msgstr "Sort by &Source" msgid "Sort by &translation" msgstr "Sort by &translation" msgid "Sort by &Translation" msgstr "Sort by &Translation" msgid "&Group by context" msgstr "&Group by context" msgid "&Group By Context" msgstr "&Group By Context" msgid "Entries with errors first" msgstr "Entries with errors first" msgid "Entries with Errors First" msgstr "Entries with Errors First" msgid "&Untranslated entries first" msgstr "&Untranslated entries first" msgid "&Untranslated Entries First" msgstr "&Untranslated Entries First" msgid "&Show code occurrences" msgstr "&Show code occurrences" msgid "&Show Code Occurrences" msgstr "&Show Code Occurrences" msgid "Show sidebar" msgstr "Show sidebar" msgid "Show status bar" msgstr "Show status bar" msgid "&Translation" msgstr "&Translation" msgid "&Update from source code" msgstr "&Update from source code" msgid "&Update from Source Code" msgstr "&Update from Source Code" msgid "Update from &POT file…" msgstr "Update from &POT file…" msgid "Update from &POT File…" msgstr "Update from &POT File…" msgid "Sync with Crowdin" msgstr "Sync with Crowdin" msgid "Pre-&translate…" msgstr "Pre-&translate…" msgid "&Validate translations" msgstr "&Validate translations" msgid "&Validate Translations" msgstr "&Validate Translations" msgid "Remove Same-as-Source Translations" msgstr "Remove Same-as-Source Translations" msgid "&Purge deleted translations" msgstr "&Purge deleted translations" msgid "&Purge Deleted Translations" msgstr "&Purge Deleted Translations" msgid "&Properties…" msgstr "&Properties…" msgid "&Go" msgstr "&Go" msgid "&Done and next" msgstr "&Done and next" msgid "&Done and Next" msgstr "&Done and Next" msgid "Previously edited" msgstr "Previously edited" msgid "Previously Edited" msgstr "Previously Edited" msgid "&Previous translation" msgstr "&Previous translation" msgid "&Previous Translation" msgstr "&Previous Translation" msgid "&Next translation" msgstr "&Next translation" msgid "&Next Translation" msgstr "&Next Translation" msgid "P&revious unfinished" msgstr "P&revious unfinished" msgid "P&revious Unfinished" msgstr "P&revious Unfinished" msgid "Ne&xt unfinished" msgstr "Ne&xt unfinished" msgid "Ne&xt Unfinished" msgstr "Ne&xt Unfinished" msgid "Previous plural form" msgstr "Previous plural form" msgid "Previous Plural Form" msgstr "Previous Plural Form" msgid "Next plural form" msgstr "Next plural form" msgid "Next Plural Form" msgstr "Next Plural Form" msgid "&Online help" msgstr "&Online help" msgid "&Online Help" msgstr "&Online Help" msgid "&GNU gettext manual" msgstr "&GNU gettext manual" msgid "&GNU gettext Manual" msgstr "&GNU gettext Manual" msgid "&About Poedit" msgstr "&About Poedit" msgid "&About" msgstr "&About" msgid "Extractor setup" msgstr "Extractor setup" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgid "Invocation:" msgstr "Invocation:" msgid "Command to extract translations:" msgstr "Command to extract translations:" 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)." msgid "An item in keywords list:" msgstr "An item in keywords list:" 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." msgid "An item in input files list:" msgstr "An item in input files list:" #, 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." msgid "Source code charset:" msgstr "Source code charset:" #, 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." msgid "Translation Properties" msgstr "Translation Properties" msgid "Project name and version:" msgstr "Project name and version:" msgid "Language team:" msgstr "Language team:" msgid "Plural forms:" msgstr "Plural forms:" msgid "Use default rules for this language" msgstr "Use default rules for this language" msgid "Use custom expression" msgstr "Use custom expression" msgid "Learn about plural forms" msgstr "Learn about plural forms" msgid "Charset:" msgstr "Charset:" msgid "Advanced Extraction Settings…" msgstr "Advanced Extraction Settings…" msgid "Advanced extraction settings…" msgstr "Advanced extraction settings…" msgid "Translation properties" msgstr "Translation properties" msgid "Sources Paths" msgstr "Sources Paths" msgid "Sources paths" msgstr "Sources paths" msgid "Extract text from source files in the following directories:" msgstr "Extract text from source files in the following directories:" msgid "Base path:" msgstr "Base path:" msgid "Sources Keywords" msgstr "Sources Keywords" msgid "Sources keywords" msgstr "Sources keywords" 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:" msgid "Also use default keywords for supported languages" msgstr "Also use default keywords for supported languages" msgid "Learn about gettext keywords" msgstr "Learn about gettext keywords" msgid "Update summary" msgstr "Update summary" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgid "New strings" msgstr "New strings" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgid "Obsolete strings" msgstr "Obsolete strings" msgid "(0 new, 0 obsolete)" msgstr "(0 new, 0 obsolete)" msgid "Open" msgstr "" msgid "Open file" msgstr "Open file" msgid "Save file" msgstr "Save file" msgid "Validate" msgstr "Validate" msgid "Check for errors in the translation" msgstr "Check for errors in the translation" msgid "Update from code" msgstr "Update from code" msgid "Update from Code" msgstr "Update from Code" msgid "Update from source code" msgstr "Update from source code" msgid "Sidebar" msgstr "Sidebar" msgid "Show or hide the sidebar" msgstr "Show or hide the sidebar" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. msgid "Previous source text" msgstr "Previous source text" 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." msgid "Notes for translators" msgstr "Notes for translators" msgid "Comment" msgstr "Comment" msgid "Add comment" msgstr "Add comment" msgid "Add Comment" msgstr "Add Comment" msgid "Delete From Translation Memory" msgstr "Delete From Translation Memory" msgid "Delete from translation memory" msgstr "Delete from translation memory" msgid "Translation suggestions" msgstr "Translation suggestions" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). msgid "No matches found" msgstr "No matches found" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). msgid "No Matches Found" msgstr "No Matches Found" msgid "This string was found in Poedit’s translation memory." msgstr "This string was found in Poedit’s translation memory." 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." 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." msgid "The TMX file is malformed." msgstr "The TMX file is malformed." msgid "No translations were found in the TMX file." msgstr "No translations were found in the TMX file." #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Translation memory database is corrupted: %s (%d)." #, c-format msgid "Translation memory error: %s (%d)." msgstr "Translation memory error: %s (%d)." msgid "Cannot create temporary directory." msgstr "Cannot create temporary directory." msgid "There are no translations. That’s unusual." msgstr "There are no translations. That’s unusual." msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "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\n" "from source code. This way, they stay up to date and accurate.\n" "Translators typically use PO template files (POTs) prepared for them by the " "developer." msgid "(Learn more about GNU gettext)" msgstr "(Learn more about GNU gettext)" 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:" msgid "Update from POT" msgstr "Update from POT" msgid "Take translatable strings from an existing POT template." msgstr "Take translatable strings from an existing POT template." msgid "" "You can also extract translatable strings directly from the source code:" msgstr "" "You can also extract translatable strings directly from the source code:" msgid "Extract from sources" msgstr "Extract from sources" 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 #, c-format msgid "Version %s" msgstr "Version %s" msgid "Create new" msgstr "Create new" msgid "Create new translation from POT template." msgstr "Create new translation from POT template." msgid "Browse files" msgstr "Browse files" msgid "Open and edit translation files." msgstr "Open and edit translation files." msgid "Translate cloud project" msgstr "Translate cloud project" msgid "Collaborate with other people online." msgstr "Collaborate with other people online." msgid "Recent files" msgstr "Recent files" msgid "Sync" msgstr "Sync" 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") #, 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. #, c-format msgid "%s Preferences" msgstr "%s Preferences" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "Services" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "Hide %s" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "Hide Others" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "Show All" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "Quit %s" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "Preferences…" msgid "Preferences..." msgstr "Preferences..." #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "Recent" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "Frequent" msgid "&Apply" msgstr "&Apply" msgid "Apply" msgstr "Apply" msgid "&Back" msgstr "&Back" msgid "Back" msgstr "Back" msgid "&Cancel" msgstr "&Cancel" msgid "&Clear" msgstr "&Clear" msgid "Clear" msgstr "Clear" msgid "Copy" msgstr "Copy" msgid "Cu&t" msgstr "Cu&t" msgid "Cut" msgstr "Cut" msgid "Edit" msgstr "Edit" msgid "&Quit" msgstr "&Quit" msgid "Help" msgstr "Help" msgid "&New" msgstr "&New" msgid "New" msgstr "New" msgid "&No" msgstr "&No" msgid "No" msgstr "No" msgid "&OK" msgstr "&OK" msgid "Open…" msgstr "Open…" msgid "&Open..." msgstr "&Open..." msgid "Open..." msgstr "Open..." msgid "&Paste" msgstr "&Paste" msgid "Paste" msgstr "Paste" msgid "Preferences" msgstr "Preferences" msgid "&Redo" msgstr "&Redo" msgid "Refresh" msgstr "Refresh" msgid "&Save as" msgstr "&Save as" msgid "Save as" msgstr "Save as" msgid "Select &All" msgstr "Select &All" msgid "Select All" msgstr "Select All" msgid "&Undo" msgstr "&Undo" msgid "&Yes" msgstr "&Yes" msgid "Yes" msgstr "Yes" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "Up" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "Down" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "Left" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "Right" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "shift" poedit-3.5/locales/et.mo0000644000175100001770000015621514664354153012205 00000000000000*X9 Y9 e9&p99<99J9gF: :: :: :::::; ;;;&;5;;;A;J;^;r;v;;;;;;;;;; ; ;;< < <!<1<G<]<l<<<<<<<<< < = ==%=A=]=v========>*>:> X> d>n>w>>> > > >> >> > >> ?? *?6?F?Z?u?~???? ? ?1 @<@'A@i@@ @@7@6@ A)@AjA oA]zAA<AD(B$mBB BB'C .C"DMb w ʍ׍  #+ 2>M] mz Ɏ ю ێ  $. 6D`|Џ׏ۏ$/CX w ǐ֐   9H Xew ё$23f%k͒֒:ޒ.,H*u _S Rt&ǔ &'֕*')Qev Ŗ5ޖ%:Pi ї1!K m x .טk{ԙ96.#e֚V=CKd}כ#43 h(t`3 2 @N9a"4ԝ *KSYlў ڞV bX%1LkpvǠ2٠ %0=An)ڡ ,3;*o'¢Ǣڢ!dy գ  $ 1 ?Mck   ĤԤ#V 1EX0p ħڧ$ - 9G[d#y ը+(3\k~: ة6.$%.APY s} ʫ ׫Ŭݬ .1+C>o(ۭ&+$A&f|կ -<DKSWl} &<0Bs#VK`gJ|Dzײ޲9 1;&& 8 F Q-\#xu9g  " 0>&[ѷ $AIi q1| ˸ Ѹܸ   . =1G yh &7HX hu  ºͺ!3CX a n {  ͻ޻(:Iev-ȼ ؼ 7N fr yԽ &@_x8N]m ƿӿEٿ7J^s/ 8^m&+% (-3+a!k@13'PfWg&;1TkQD@^??#C`!"D"d<z/?Co3V>IU FaTpn&"rI\Wq wz 3*(Sn}s' g*01bu  1*AVi~ H(.Ds(+]?  495Aw >.b; :[] bl p}'4 :H`oKCDo=Ift!-L P59' S{ Om&TNW6 Tq^Ej"Z_iw>5Ba<D+`MU+,;.$QF.>O.hB1^:\p* >i0)_4 Yx7_7g:CAjG @ArkwT)E dsV|czF2d5[QK,v| -M{2&oy8sew ~HHL4HV=k*ye3hriat/3d !/%p10]3 G@I:6F'uvq{ 9bY#XU NrAn fu9EJn%)1$tWW48sg/`-bkpX0Sx?#R}S}"o?;VY`#6KDf,@Uzx;[gNczcqMZ|RZ\~&X<2a(?PCu(j(n<O+P8Bhvl %*G"J']Ime^y$ Rl~=}Q[L\bl!7Jm]  (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd AccountAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add accountAdd 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 languagesAlt+Always 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 errorCrowdin is an online localization management platform and collaborative translation tool.Ctrl+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 no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownDownloading 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:EnterEnter 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 loading translation file “%s”.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export errorExport 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…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)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport from TMX…Import translation files…Importing translation memory from “%s” 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 CrowdinLeftLine %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 translations were found in the TMX file.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKObsolete stringsOneOnly 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 translation templateOpen...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 translationsQuitQuit %sReading file content failed with the following error: %sRecentRecent 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 FinderReviewRightSaveSave &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 languageServicesSet LanguageSet languageSettings…Shift+Show AllShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow summary after updating filesShow 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.These strings are no longer in the source code. Poedit will remove them from the file now.These strings were found in the sources but were not in the file. Poedit will add them to the file now.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 entries in the file are probably incorrect.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 errorUntransUpUpdateUpdate 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 the file failed. Click on 'Details >>' for details.Updating 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown 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: 2024-08-30 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 vigaTõ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&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(uusi 0, iganenuid 0)(Vaata insainfot GNU gettexti kohta)(Uus: %i, vananenud: %i)(Kasuta vaikekeelt)(pole sisse loginud)(nõuab Windows 8 või uuemat)< &EelmineProgrammist %sKontoKontodLisaLisa kontoLisa kommentaarLisa failid…Lisa kaustad…Lisa projektLisa metamärk…Lisa kontoLisa 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 klaviatuuriAlt+Fookus on alati tekstisisestusväljalLiige sisendfailide nimistus:Liige võtmesõnade nimistus:VälimusRakendaOled 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õlkimise platvorm ja koostööd võimaldav tõlketööriist.Ctrl+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.Kataloogid:Kas soovite projekti “%s” kustutada?Kas soovite faili kettalt uuesti laadida? Teie salvestamata muudatused Poeditis lähevad kaotsi.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 uuestiAllaViimaste tõlgete allalaadimine…Tõlgete allalaadimine on selles projektis keelatud.Lohista kaustad või failid siiaLohista kaustad või failid siia&VäljuMuudaMuuda &kommentaariRedigeeri ko&mmentaariKommentaari muutmineKommentaari muutmineProjekti muutmineProjekti muutmineMuutmineRedigeeri…E-post:EnterAktiveeri 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.Viga tõlkefaili „%s” laadimisel.Tõrge faili avamiselTõrge faili salvestamiselXLIFF faili laadimise viga: %sVeadKõikVälja jäetud kaustateedEkspordi TMX-i…Ekspordi kui…Tõrge eksportimiselEkspordi TMX-i…“%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 stringide ekstraheerimine…Ekstraktori seadistamineEkstraktoridKäsuviga: %sPoediti protsessiga suhtlemine 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.Lõpetamine…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)SagedasedGNU gettextÜldineHTML-failidAbiPeida %sPeida teisedPeida 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…Tõrge importimiselImpordi TMX-ist…Impordi tõlkefailid…“%s” tõlkemälust importimine ebaõnnestus.Tõlgete importimine…Failis: %sKaasa beetaversioonidVastuoluline suur/väike tähtEbajärjekindel tühikInfo tõlkija kohtaPaigaldaVigane failKäivitamine:JSON-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 kohtaVasakRida %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 & POT/PO-failist…Uued tekstidJä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.TMX-failist ei leitud ühtegi tõlget.Kasutamise infot poleKõik mitmuse vormid pole tõlgitud.Pole lubatud, palun logi uuesti sisse.Märkused tõlkijate jaoksOKIganenud tekstidÜ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 tõlkemall&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õpetaLõpeta %sFaili sisu lugemine katkes jrgmise vea tõttu: %sHiljutisedHiljutised failidKordaVärskendaLae fail uuestiLaadi fail uuestiJäänud: %dAsenda&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 üleParemSalvestaSalvesta &kui…Salvesta &kui…Salvesta ikkagiSalvesta ikkagiSalvesta kuiSalvesta kui…Salvesta muudatusedSalvesta failEkraanipildid:V&ali kõikVali kõikValige importimiseks TMX-failidKataloogi valimineVali tõlke failVali tõlkefailid, mida importidaVali tõlkemallVali enda meeliskeelTeenusedMäära keelMäära keelSätted…Shift+Näita kõikiNä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 pärast failide uuendamist kokkuvõtetNä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õnaAsendusedSoovitusedSoovitused 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” 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 kirje 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.Need tekstid pole enam lähtekoodis. Poedit eemaldab need nüüd failist.Need tekstid leiti lähtekoodist, kuid ei ole failis. Poedit lisab need nüüd faili.See JSON-i fail ei ole tõlkefail ja seda ei saa redideerida Poeditis.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õlkekirjed selles failis pole ilmselt korrektsed.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)TaastaErand, millega ei osatud midagi peale hakata: %sUnix (soovituslik)Tundmatu Crowdini viga.Tundmatu vigaTõlkimataÜlesUuendaUuenda 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õnnestusFaili uuendamine ebaõnnestus. Lisainfo jaoks kliki nuppu 'Lisainfo >>'.Tõ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 %sAutentimise ootamine…Tere tulemast PoeditiAllikatest uuendamiselAinult terved sõnadAkenWindowsKas soovid lähteteksti jaoks kasutada inglise keelt?Alusta otsast pealeReamurdmine:XLIFF tõlkefailidJahTõ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.NullSuurendusaltVajab töödctrlajutisi faile ei kustutata (silumiseks)nt. nplurals=2; plural=(n > 1);hägus vaste failismine antud real olevale kirjelepoedit:// URL-i käsitlemineeel-tõlge tõlkemälustshifttundmatu keeltoetamata versioon (%s)sina@n2ide.com'%s' pole korrektne POT fail.poedit-3.5/locales/an.po0000644000175100001770000016157114664354152012176 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "Amagar iste mensache de notificación" msgid "Don’t Show Again" msgstr "No tornar a amostrar-lo" msgid "Don’t show again" msgstr "No tornar a amostrar-lo" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(Nuevas: %i, obsoletas: %i)" msgid "Collecting source files…" msgstr "Replegando los fichers d'orichen…" msgid "Extracting translatable strings…" msgstr "Extrayendo las cadenas traducibles…" msgid "Failed to load file with extracted translations." msgstr "No s'ha puesto cargar l'archivo con las traduccions extraïdas." msgid "Merging differences…" msgstr "Mezclando las diferencais…" msgid "Updating translations" msgstr "Actualizando traduccions" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "" msgid "Invalid file" msgstr "Fichero invaliu" #, c-format msgid "Malformed header: “%s”" msgstr "Capitero malformau: “%s”" msgid "PO Translation Files" msgstr "Fichers de traducción PO" msgid "POT Translation Templates" msgstr "Plantiellas de traducción POT" msgid "XLIFF Translation Files" msgstr "Fichers de traducción XLIFF" msgid "JSON Translation Files" msgstr "" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "" msgid "All Translation Files" msgstr "Totz os fichers de traducción" msgid "The file is in a format not recognized by Poedit." msgstr "" msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" #, c-format msgid "Reading file content failed with the following error: %s" msgstr "" #, 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." #, c-format msgid "Couldn’t save file %s." msgstr "No s'ha puesto alzar lo fichero %s." msgid "Screenshots:" msgstr "" #, c-format msgid "%i line of file “%s” was not loaded correctly." msgid_plural "%i lines of file “%s” were not loaded correctly." msgstr[0] "%i linia d'o fichero “%s” no s'ha cargau correctament." msgstr[1] "%i linias d'o fichero “%s” no s'han cargau cargoron correctament." #, 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)." msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" msgid "Couldn’t load the file, it is probably damaged." msgstr "" 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." 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)." #, 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 "" msgid "Error saving file" msgstr "S'ha produciu un error al guardar l'archivo" #, c-format msgid "“%s” is not a valid POT file." msgstr "“%s” no ye un fichero POT valiu." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "" #, c-format msgid "unsupported version (%s)" msgstr "" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML msgid "Broken markup in translation string." msgstr "Marca crebada en a cadena de traducción." msgid "(Use default language)" msgstr "(Fer servir a luenga por defecto)" msgid "Language selection" msgstr "Selección de luenga" msgid "Select your preferred language" msgstr "Seleccionar a luenga preferida" msgid "You must restart Poedit for this change to take effect." msgstr "Cal reenchegar o Poedit ta que os cambeos tiengan efecto." msgid "Add Account" msgstr "" msgid "Add account" msgstr "" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "" msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" msgid "How does cloud sync work?" msgstr "" msgid "Account" msgstr "" msgid "(not signed in)" msgstr "" msgid "File" msgstr "Fichero" msgid "Open cloud translation" msgstr "" msgid "Manage accounts" msgstr "" msgid "Project:" msgstr "Prochecto:" msgid "Language:" msgstr "Luenga:" msgid "Sign in to Cloud Account" msgstr "" msgid "Sign in to cloud account" msgstr "" msgid "No translation projects listed in your account." msgstr "" msgid "Downloading latest translations…" msgstr "Se ye baixando as zagueras traduccions…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #, c-format msgid "Sign in to %s" msgstr "" msgid "Syncing" msgstr "Sincronizando" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s…" msgstr "" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s failed." msgstr "" msgid "Syncing error" msgstr "Error de sincronización" msgid "Add" msgstr "" msgid "Unknown Crowdin error." msgstr "" msgid "Not authorized, please sign in again." msgstr "No ye autorizau, encieta la sesión de nuevas." msgid "Downloading translations is disabled in this project." msgstr "A descarga de traduccions ye desactivada en iste prochecto." msgid "Sign In" msgstr "Encetar a sesión" msgid "Sign in" msgstr "Encetar a sesión" msgid "Sign Out" msgstr "Zarrar a sesión" msgid "Sign out" msgstr "Zarrar a sesión" msgid "Learn more about Crowdin" msgstr "Aprender mas arredol d'o Crowdin" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" msgid "Waiting for authentication…" msgstr "Se ye asperando l'autenticación…" msgid "Updating user information…" msgstr "Se ye esviellando a información de l'usuario…" msgid "Sign in to Crowdin" msgstr "Encetar a sesión en o Crowdin." msgid "Syncing with Crowdin failed." msgstr "A sincronización con o Crowdin ha fallau." msgid "Crowdin error" msgstr "S'ha produciu una error d'o Crowdin" msgid "Uploading translations…" msgstr "Se ye puyando as traduccions…" msgid "&Copy" msgstr "&Copiar" msgid "Learn more" msgstr "Aprender-ne más" msgid "&Help" msgstr "&Aduya" msgid "MO files can’t be directly edited in Poedit." msgstr "Os fichers MO no se pueden editar dreitament en o Poedit." msgid "Error opening file" msgstr "S'ha produciu una error ubrindo lo fichero" 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." msgid "don’t delete temporary files (for debugging)" msgstr "No borrar los fichers temporals (pa depurar)" msgid "handle a poedit:// URI" msgstr "maniar un poedit:// URI" msgid "go to item at given line number" msgstr "Ir ta l'elemento en o numero de linia dau" msgid "Failed to communicate with Poedit process." msgstr "Ha fallau en comunicar-se con o proceso d'o Poedit." #, c-format msgid "Unhandled exception occurred: %s" msgstr "S'ha produciu una error no maniada: %s" msgid "Select translation template" msgstr "" msgid "Select translation file" msgstr "" msgid "Poedit is an easy to use translation editor." msgstr "Poedit ye un editor de traduccions d'uso facil." 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." #, c-format msgid "File “%s” is not a translation file." msgstr "Lo fichero “%s” no ye un fichero de traducción." #, c-format msgid "File “%s” doesn’t exist." msgstr "Lo fichero “%s” no existe." 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". #, 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." msgid "Install" msgstr "Instalar" #, c-format msgid "The file “%s” has been changed by another application." msgstr "" msgid "Reload file" msgstr "Torna a cargar l'archivo" msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" msgid "Ignore" msgstr "Ignora" msgid "Reload File" msgstr "Torna a cargar l'archivo" msgid "The file has been modified. Do you want to save changes?" msgstr "L'archivo ha estau modificau. Quiers guardar es cámbios fetos?" msgid "Save changes" msgstr "Alzar os cambios" msgid "Your changes will be lost if you don’t save them." msgstr "Los cambios tuyos se perderán si no los alzas." msgid "Save" msgstr "Alzar" msgid "Do&n’t save" msgstr "&No alzar" msgid "Don’t Save" msgstr "No alzar" 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." msgid "Cancel" msgstr "Cancelar" msgid "Save Anyway" msgstr "Guarda igualment" msgid "Save anyway" msgstr "Guarda igualment" msgid "Save as…" msgstr "Alzar como…" msgid "Compile to…" msgstr "Compilar ta…" msgid "Compiled Translation Files" msgstr "Fichers de traducción compilaus" msgid "Export to HTML…" msgstr "" msgid "HTML Files" msgstr "Fichers HTML" #, c-format msgid "In: %s" msgstr "" msgid "Source code not available." msgstr "O codigo fuent no ye disponible." msgid "Updating failed" msgstr "L'actualización ha fallau" 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 "" msgid "Permission denied." msgstr "Permiso denegau." 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. 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. 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." msgid "Translation entries in the file are probably incorrect." msgstr "" msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "" msgid "Open translation template" msgstr "" #, 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." msgid "Validation results" msgstr "Resultaus d'a validación" 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." msgid "The file was saved safely." msgstr "O fichero s'ha alzau de traza segura." 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." 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." 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." 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." msgid "No problems with the translation found." msgstr "No se troba problemas en ista traducción." #, 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." msgid "The translation is ready for use." msgstr "A traducción ye presta pa usar-se." #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "" "O Poedit ha apanyau automaticament conteniu invalido en o fichero “%s”." msgid "" "The file contained duplicate items, which is not allowed in PO files and " "would prevent the file from being used. Poedit fixed the issue, but you " "should review translations of any items marked as 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." msgid "Language of the translation isn’t set." msgstr "No s'ha establiu lo idioma d'a traducción." msgid "Set Language" msgstr "Establir l'idioma" msgid "Set language" msgstr "Establir l'idioma" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." msgid "" "Suggestions are not available if the translation language is not set " "correctly. Other features, such as plural forms, may be affected as well." msgstr "" "As sucherencias no son disponibles si l'idioma de traducción no ye " "correctament establiu. Atras caracteristicas, tals como as formas plurals, " "tamién pueden veyer-sen afectadas." msgid "Language of the translation is the same as source language." msgstr "L'idioma d'a traducción ye o mesmo que l'idioma d'orichen." msgid "Fix Language" msgstr "Apanyar l'idioma" msgid "Fix language" msgstr "Apanyar l'idioma" msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" msgid "Required header Plural-Forms is missing." msgstr "Falta o capitero de formas plurals requiesto." #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Bi ha una error sintactica en as formas plurals d'o capitero (\"%s\")." msgid "Fix the Header" msgstr "Apanyar o capitero" 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". #, 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.")" msgid "Review" msgstr "Revisar" msgid "Would you like to use English for source text?" msgstr "" #, 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" msgid "Load English" msgstr "" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Traduciu: %d de %d (%d %%)" #, c-format msgid "Remaining: %d" msgstr "En queda: %d" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d error" msgstr[1] "%d errors" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d dentrada" msgstr[1] "%d dentradas" msgid " (unsaved)" msgstr " (sin alzar)" msgid " (modified)" msgstr " (modificau)" #, c-format msgid "Failed to update translation memory: %s" msgstr "S'ha produciu una error en esviellar as traduccions memorizadas: %s" msgid "Remove same-as-source translations" msgstr "" msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" msgid "Keep" msgstr "Mantener-las" msgid "Remove" msgstr "" msgid "Purge deleted translations" msgstr "Purgar as traduccions borradas" 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?" 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." msgid "Purge" msgstr "Purgar-las" msgid "Copy from source text" msgstr "Copiar dende o texto fuent" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "Limpiar a traducción" msgid "Clear Translation" msgstr "Limpiar a traducción" msgid "Edit comment" msgstr "Editar o comentario" msgid "Edit Comment" msgstr "Editar o comentario" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "" msgid "Hide Sidebar" msgstr "Amagar a barra lateral" msgid "Show Sidebar" msgstr "Amostrar a barra lateral" msgid "Hide Status Bar" msgstr "Amagar a barra d'estau" msgid "Show Status Bar" msgstr "Amostrar a barra d'estau" msgid "String length in characters: translation | source" msgstr "" msgid "String length in characters" msgstr "" msgid "Source text" msgstr "Texto fuent" msgid "Singular" msgstr "" msgid "Plural" msgstr "" msgid "Translation" msgstr "Traducción" msgid "Pre-translated" msgstr "Pretraduciu" 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. msgid "Needs work" msgstr "Le fa falta treballo" 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." msgid "Create new translation" msgstr "Creyar una nueva traducción" 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 msgid "Source text ID" msgstr "" msgid "Everything" msgstr "Tot" #, c-format msgid "Form %i" msgstr "Forma %i" #, c-format msgid "Form %i (unused)" msgstr "" msgid "Zero" msgstr "Zero" msgid "One" msgstr "Un" msgid "Two" msgstr "Dos" msgid "Other" msgstr "Unatro" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, c-format msgid "String context: %s" msgstr "" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #, c-format msgid "String identifier: %s" msgstr "" #, c-format msgid "%s Format" msgstr "Formato %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "Formato %s" #, c-format msgid "Translation — %s" msgstr "Traducción — %s" msgid "ID" msgstr "ID" #, c-format msgid "Source text — %s" msgstr "Texto d'orichen — %s" msgid "unknown language" msgstr "idioma desconoixiu" #, c-format msgid "Network error: %s (%d)" msgstr "" msgid "Unknown error" msgstr "" #, c-format msgid "Failed command: %s" msgstr "S'ha produciu una error en executar o comando: %s" msgid "Failed to merge gettext catalogs." msgstr "S'ha produciu una error en unir catalogos gettext." msgid "Open in Editor" msgstr "Ubrir-lo en l'editor" msgid "Open in editor" msgstr "Ubrir-lo en l'editor" msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" msgid "No usage information" msgstr "" #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "" msgstr[1] "" msgid "Source code not found" msgstr "" 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 "" msgid "File cannot be opened" msgstr "" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "" msgid "Find" msgstr "Mirar" msgid "Replace" msgstr "Substituir" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "Opcions" msgid "Ignore case" msgstr "Ignorar as mayusclas y as minusclas" msgid "Wrap around" msgstr "Embolicau arredol" msgid "Whole words only" msgstr "Nomás as parolas completas" msgid "Find in source texts" msgstr "Mirar en o texto d'orichen" msgid "Find in translations" msgstr "Mirar en as traduccions" msgid "Find in comments" msgstr "Mirar en os comentarios" msgid "Close" msgstr "Zarrar" msgid "Replace &All" msgstr "" msgid "Replace &all" msgstr "" msgid "&Replace" msgstr "" msgid "< &Previous" msgstr "< &Anterior" msgid "&Next >" msgstr "&Siguient >" msgid "String to find" msgstr "Cadena que mirar" msgid "Replacement string" msgstr "Cadena de substitución" #, c-format msgid "Cannot execute program: %s" msgstr "No se puet executar o programa: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "" msgid "Translation Language" msgstr "Idioma d'a traducción" msgid "Language of the translation:" msgstr "Idioma d'a traducción:" msgid "All strings" msgstr "" msgid "Couldn’t download Localazy project details." msgstr "" msgid "There was an error when uploading translations to Localazy." msgstr "" msgid "Projects" msgstr "" msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" msgid "Add Project" msgstr "" msgid "Add project" msgstr "" msgid "Poedit - Catalogs manager" msgstr "Poedit - Chestor de catalogos" msgid "Edit…" msgstr "" msgid "Create new translations project" msgstr "Creyar un nuevo prochecto de traducción" msgid "Delete the project" msgstr "Borrar o prochecto" msgid "Edit the project" msgstr "Editar o prochecto" msgid "Update all" msgstr "Esviellar-lo tot" msgid "Update all catalogs in the project" msgstr "Esviellar totz os catalogos d'o prochecto" msgid "Total" msgstr "Total" msgid "Untrans" msgstr "Sin traducir" msgctxt "column/row header" msgid "Needs Work" msgstr "Le fa falta treballo" msgid "Errors" msgstr "" msgid "Last modified" msgstr "Zaguera modificación" msgid "Select directory" msgstr "Seleccionar a carpeta" msgid "Directories:" msgstr "Carpetas:" msgid "" msgstr "" #, c-format msgid "Do you want to delete project “%s”?" msgstr "" msgid "Delete project" msgstr "" msgid "Deleting the project will not delete any translation files." msgstr "" msgid "Confirmation" msgstr "Confirmación" msgid "Update all catalogs in this project?" msgstr "" msgid "Performs update from source code on all files in the project." msgstr "" msgid "Check for Updates…" msgstr "Comprebar si bi ha actualizacions…" msgid "Catalogs Manager" msgstr "Chestor de catalogos" msgid "&Preferences…" msgstr "" msgid "&Edit" msgstr "&Edición" msgid "Undo" msgstr "Desfer" msgid "Redo" msgstr "Refer" msgid "Paste and Match Style" msgstr "Apegar con o mesmo estilo" msgid "Delete" msgstr "Borrar" msgid "Spelling and Grammar" msgstr "Ortografía y gramatica" msgid "Show Spelling and Grammar" msgstr "Amostrar a ortografía y a gramatica" msgid "Check Document Now" msgstr "Comprebar o documento agora" msgid "Check Spelling While Typing" msgstr "Comprebar a ortografía en escribir" msgid "Check Grammar With Spelling" msgstr "Comprebar a gramatica con a ortografía" msgid "Correct Spelling Automatically" msgstr "Correchir automaticament a ortografía" msgid "Substitutions" msgstr "Substitucions" msgid "Show Substitutions" msgstr "Amostrar as substitucions" msgid "Smart Copy/Paste" msgstr "Copiau y apegau intelichent" msgid "Smart Quotes" msgstr "Cometas intelichents" msgid "Smart Dashes" msgstr "Guions intelichents" msgid "Smart Links" msgstr "Vinclos intelichents" msgid "Text Replacement" msgstr "Substitución de texto" msgid "Transformations" msgstr "Transformacions" msgid "Make Upper Case" msgstr "Convertir en mayusclas" msgid "Make Lower Case" msgstr "Convertir en minusclas" msgid "Capitalize" msgstr "Meter en mayusclas" msgid "Speech" msgstr "Voz" msgid "Start Speaking" msgstr "Rancar a voz" msgid "Stop Speaking" msgstr "Aturar a voz" msgid "&View" msgstr "&Veyer" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item 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 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 msgid "Enter Full Screen" msgstr "Dentrar ta pantalla completa" msgid "Window" msgstr "Finestra" msgid "Minimize" msgstr "Minimizar" msgid "Zoom" msgstr "Enamplar" msgid "Welcome to Poedit" msgstr "مرحبا بك في Poedit" msgid "Bring All to Front" msgstr "Trayer-ne tot t'o frent" msgid "Information about the translator" msgstr "Información arredol d'o traductor" msgid "Name:" msgstr "Nombre:" msgid "Your Name" msgstr "O tuyo nombre" msgid "Email:" msgstr "Correu electronico:" msgid "you@example.com" msgstr "" 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." msgid "Editing" msgstr "Editando" msgid "Automatically compile MO file when saving" msgstr "Compilar o fichero MO automaticament en alzar" msgid "Show summary after updating files" msgstr "" msgid "Check spelling" msgstr "Comprebar a ortografía" msgid "Always change focus to text input field" msgstr "Pasar siempre o foco t'o quadro de traducción" msgid "" "Never let the list of strings take focus. If enabled, you must use Ctrl-" "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." msgid "Appearance" msgstr "Aparencia" msgid "Use custom list font:" msgstr "Fer servir una fuent personalizada t'as listas:" msgid "Use custom text fields font:" msgstr "Fer servir una fuent personalizada pa os quadros de texto:" 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 msgid "(requires Windows 8 or newer)" msgstr "(requier o Windows 8 u superior)" msgid "General" msgstr "Cheneral" msgid "Use translation memory" msgstr "Fer servir a memoria de traducción" msgid "Manage…" msgstr "" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "En esviellar-lo dende as fuents" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "Coincidencia fusca adintro d'o fichero" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "pretraducir dende a MT" 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." msgid "Stored translations:" msgstr "Traduccions almagazenadas:" msgid "Database size on disk:" msgstr "Grandaria d'a base de datos en disco:" msgid "Import Translation Files…" msgstr "" msgid "Import translation files…" msgstr "" msgid "Import From TMX…" msgstr "" msgid "Import from TMX…" msgstr "" msgid "Export To TMX…" msgstr "" msgid "Export to TMX…" msgstr "" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). msgid "Reset" msgstr "Reenchegar-ne" msgid "Select translation files to import" msgstr "Seleccionar os fichers de traducción pa importar-los" msgid "Translation Memory" msgstr "Traduccions memorizadas" msgid "Importing translations…" msgstr "" #, c-format msgid "Error loading translation file “%s”." msgstr "" msgid "Finalizing…" msgstr "" msgid "Select TMX files to import" msgstr "" msgid "TMX Files" msgstr "" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "" msgid "Import error" msgstr "" msgid "Export as…" msgstr "Exportar como…" msgid "Exporting translations…" msgstr "" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "" msgid "Export error" msgstr "" msgid "Reset translation memory" msgstr "Reenchegar a memoria de traducción" msgid "Are you sure you want to reset the translation memory?" msgstr "De seguras que quiers reenchegar as traduccions memorizadas?" 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. msgid "TM" msgstr "TM" msgid "" "Source code extractors are used to find translatable strings in the source " "code files and extract them so that they can be translated." msgstr "" "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." msgid "Custom Extractors:" msgstr "Extractors personalizaus:" msgid "Custom extractors:" msgstr "Extractors personalizaus:" msgid "GNU gettext" msgstr "" 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)." msgid "Delete extractor" msgstr "Borrar l'extractor" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "Yes seguro que quiers eliminar l'extractor “%s”?" msgid "Extractors" msgstr "Extractors" msgid "Accounts" msgstr "Cuentas" msgid "Automatically check for updates" msgstr "Comprebar-ne as actualizacions automaticament" msgid "Include beta versions" msgstr "Incluir-ie as versions beta" 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." msgid "Updates" msgstr "Actualizacions" 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." msgid "Line endings:" msgstr "finals d'as linias" msgid "Unix (recommended)" msgstr "Unix (recomendau)" msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "Achustar-lo en:" msgid "Preserve formatting of existing files" msgstr "Conservar o formato d'os fichers existents" msgid "Advanced" msgstr "Avanzau" msgid "Settings" msgstr "" msgid "Preparing strings…" msgstr "" msgid "Pre-translating from translation memory…" msgstr "" #, 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" msgid "Pre-translating…" msgstr "Pretraducindo…" 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. msgid "Pre-translate" msgstr "Pretraducir" msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" msgid "Cannot pre-translate from unknown language." msgstr "" msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" msgid "Only fill in exact matches" msgstr "No replenar que as coincidencias exactas" msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" msgid "Don’t mark exact matches as needing work" msgstr "No marcar as coincidencias exactas como si les fese falta treballo" 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" 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." #, 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." 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." msgid "No entries could be pre-translated." msgstr "No s'ha puesto pretraducir garra dentrada." 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." msgid "Cancelling…" msgstr "" msgid "Drag Folders or Files Here" msgstr "" msgid "Drag folders or files here" msgstr "" msgid "Add Folders…" msgstr "" msgid "Add folders…" msgstr "" msgid "Add Files…" msgstr "" msgid "Add files…" msgstr "" msgid "Add Wildcard…" msgstr "" msgid "Add wildcard…" msgstr "" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) msgid "Reveal in Finder" msgstr "" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" msgid "Show in Explorer" msgstr "" msgid "Show in Folder" msgstr "" msgid "Paths" msgstr "Carpetas" msgid "Excluded paths" msgstr "Rotas excluidas" msgid "Advanced extraction settings" msgstr "Opcions avanzadas d'extracción" msgid "Extract notes for translators from:" msgstr "Extrayer as notas pa os traductors dende:" msgid "Comments prefixed with:" msgstr "" msgid "All comments" msgstr "Totz os comentarios" msgid "Additional xgettext flags:" msgstr "Indicadors xgettext adicionals:" msgid "Additional keywords" msgstr "Parolas clau adicionals" msgid "Name of the project the translation is for" msgstr "Nombre d'o prochecto pa o que ye a traducción" msgid "Team name and email address or URL" msgstr "" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "p. eix. nplurals=2; plural=(n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (recomendau)" 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." msgid "Placeholders correctness" msgstr "" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "" #, c-format msgid "Superfluous placeholder “%s” that isn’t in source text." msgstr "" msgid "Plural form translations" msgstr "" msgid "Not all plural forms are translated." msgstr "" msgid "Inconsistent upper/lower case" msgstr "" msgid "The translation should start as a sentence." msgstr "" msgid "The translation should start with a lowercase character." msgstr "" msgid "Inconsistent whitespace" msgstr "" msgid "The translation doesn’t start with a space." msgstr "" msgid "The translation starts with a space, but the source text doesn’t." msgstr "" msgid "The translation is missing a newline at the end." msgstr "" msgid "The translation ends with a newline, but the source text doesn’t." msgstr "" msgid "The translation is missing a space at the end." msgstr "" msgid "The translation ends with a space, but the source text doesn’t." msgstr "" msgid "Punctuation checks" msgstr "" #, c-format msgid "The translation should end with “%s”." msgstr "" #, c-format msgid "The translation should not end with “%s”." msgstr "" #, c-format msgid "The translation ends with “%s”, but the source text ends with “%s”." msgstr "" msgid "Cloud" msgstr "" msgid "Clear Menu" msgstr "" msgid "Clear menu" msgstr "" msgid "Comment:" msgstr "Comentario:" msgid "Update" msgstr "" msgid "&Delete" msgstr "&Borrar" msgid "Delete the comment" msgstr "" msgid "Edit project" msgstr "Editar o prochecto" msgid "Project name:" msgstr "Nombre d'o prochecto:" msgid "Browse" msgstr "Examinar" msgid "Add directory to the list" msgstr "Adhibir a carpeta t'a lista" msgid "OK" msgstr "Acceptar" msgid "&File" msgstr "&Fichero" msgid "&New…" msgstr "" msgid "New from &POT/PO file…" msgstr "" msgid "New From &POT/PO File…" msgstr "" msgid "&Open…" msgstr "" msgid "Open Recent" msgstr "Ubrir recient" msgid "Open recent" msgstr "" msgid "Open cloud translation…" msgstr "" msgid "Open Cloud Translation…" msgstr "" msgid "&Start window" msgstr "" msgid "&Start Window" msgstr "" msgid "Catalogs &manager" msgstr "Chestor de &catalogos" msgid "Catalogs &Manager" msgstr "Chestor de &catalogos" msgid "&Close" msgstr "&Zarrar" msgid "&Save" msgstr "&Alzar" msgid "Save &as…" msgstr "" msgid "Save &As…" msgstr "" msgid "Compile to MO…" msgstr "" msgid "E&xport to HTML…" msgstr "" msgid "Check for updates…" msgstr "" msgid "Settings…" msgstr "" msgid "&Preferences" msgstr "&Preferencias" msgid "E&xit" msgstr "&Salir" msgid "Quit" msgstr "Salir" msgid "Copy from singular" msgstr "Copiar dende o singular" msgid "Copy From Singular" msgstr "Copiar dende o singular" msgid "Translation needs &work" msgstr "A la traducción le fa falta &treballo" msgid "Translation Needs &Work" msgstr "A la traducción le fa falta &treballo" msgid "Edit &comment" msgstr "Editar o &comentario" msgid "Edit &Comment" msgstr "Editar o &comentario" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "Sucherencias" msgid "&Find…" msgstr "" msgid "Replace…" msgstr "" msgid "Find next" msgstr "Mirar o siguient" msgid "Find previous" msgstr "Mirar l'anterior" msgid "Find and Replace…" msgstr "" msgid "Find Next" msgstr "Mirar o siguient" msgid "Find Previous" msgstr "Mirar l'anterior" msgid "Show string &ID" msgstr "" msgid "Show String &ID" msgstr "" msgid "Show warnings" msgstr "" msgid "Show Warnings" msgstr "" msgid "Sort by &file order" msgstr "Ordenar-los por l'orden d'o &fichero" msgid "Sort by &File Order" msgstr "Ordenar-los por l'orden d'o fichero" msgid "Sort by &source" msgstr "Ordenar-los por l'&orichen" msgid "Sort by &Source" msgstr "Ordenar-los por l'orichen" msgid "Sort by &translation" msgstr "Ordenar-los por a &traducción" msgid "Sort by &Translation" msgstr "Ordenar-los por a &traducción" msgid "&Group by context" msgstr "A&grupar por o contexto" msgid "&Group By Context" msgstr "A&grupar por o contexto" msgid "Entries with errors first" msgstr "Dentradas con errors primero" msgid "Entries with Errors First" msgstr "Dentradas con errors primero" msgid "&Untranslated entries first" msgstr "&Dentradas sin traducir primero" msgid "&Untranslated Entries First" msgstr "&Dentradas sin traducir primero" msgid "&Show code occurrences" msgstr "" msgid "&Show Code Occurrences" msgstr "" msgid "Show sidebar" msgstr "Amostrar a barra lateral" msgid "Show status bar" msgstr "Amostrar a barra d'estau" msgid "&Translation" msgstr "" msgid "&Update from source code" msgstr "" msgid "&Update from Source Code" msgstr "" msgid "Update from &POT file…" msgstr "" msgid "Update from &POT File…" msgstr "" msgid "Sync with Crowdin" msgstr "Sincronizar con o Crowdin" msgid "Pre-&translate…" msgstr "" msgid "&Validate translations" msgstr "&Validar as traduccions" msgid "&Validate Translations" msgstr "&Validar as traduccions" msgid "Remove Same-as-Source Translations" msgstr "" msgid "&Purge deleted translations" msgstr "&Purgar as traduccions borradas" msgid "&Purge Deleted Translations" msgstr "&Purgar as traduccions borradas" msgid "&Properties…" msgstr "" msgid "&Go" msgstr "&Ir" msgid "&Done and next" msgstr "Feito y &siguient" msgid "&Done and Next" msgstr "Feito y &siguient" msgid "Previously edited" msgstr "" msgid "Previously Edited" msgstr "" msgid "&Previous translation" msgstr "Traducción &anterior" msgid "&Previous Translation" msgstr "Traducción &anterior" msgid "&Next translation" msgstr "Traducción siguie&nt" msgid "&Next Translation" msgstr "Traducción siguie&nt" msgid "P&revious unfinished" msgstr "Ante&rior sin rematar" msgid "P&revious Unfinished" msgstr "Ante&rior sin rematar" msgid "Ne&xt unfinished" msgstr "Siguien&t sin rematar" msgid "Ne&xt Unfinished" msgstr "Siguien&t sin rematar" msgid "Previous plural form" msgstr "Anterior forma plural" msgid "Previous Plural Form" msgstr "Anterior forma plural" msgid "Next plural form" msgstr "Siguient forma plural" msgid "Next Plural Form" msgstr "Siguient forma plural" msgid "&Online help" msgstr "&Aduya en linia" msgid "&Online Help" msgstr "&Aduya en linia" msgid "&GNU gettext manual" msgstr "manual de &GNU gettext" msgid "&GNU gettext Manual" msgstr "Manual de &GNU gettext" msgid "&About Poedit" msgstr "&Sobre o Poedit" msgid "&About" msgstr "Arredol de" msgid "Extractor setup" msgstr "Configuración d'extractor" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Lista d'extensions deseparadas por punto y coma (p. eix. *.cpp;*.h):" msgid "Invocation:" msgstr "Execución:" msgid "Command to extract translations:" msgstr "Comando ta extrayer as traduccions:" 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)." msgid "An item in keywords list:" msgstr "Elemento d'a lista de parolas clau:" 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." msgid "An item in input files list:" msgstr "Elemento d'a lista de fichers de dentrada:" #, 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." msgid "Source code charset:" msgstr "Chuego de caracters d'o codigo fuent:" #, 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." msgid "Translation Properties" msgstr "Propiedatz de traducción" msgid "Project name and version:" msgstr "Nombre d'o prochecto y versión:" msgid "Language team:" msgstr "" msgid "Plural forms:" msgstr "Formas plurals:" msgid "Use default rules for this language" msgstr "Fer servir os regles predeterminaus pa iste idioma" msgid "Use custom expression" msgstr "Emplegar una expresión personalizada" msgid "Learn about plural forms" msgstr "Aprender arredol de formas plurals" msgid "Charset:" msgstr "Chuego de caracters:" msgid "Advanced Extraction Settings…" msgstr "" msgid "Advanced extraction settings…" msgstr "" msgid "Translation properties" msgstr "Propiedatz de traducción" msgid "Sources Paths" msgstr "Rotas de fuents" msgid "Sources paths" msgstr "Directorios fuent" msgid "Extract text from source files in the following directories:" msgstr "Extrayer o texto d'o fichero d'orichen en os directorios siguients:" msgid "Base path:" msgstr "Directorio radiz:" msgid "Sources Keywords" msgstr "Parolas clau de fuents" msgid "Sources keywords" msgstr "Parolas clau orichinals" 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:" msgid "Also use default keywords for supported languages" msgstr "" "Fer servir tamién as parolas clau predeterminadas pa os idiomas suportaus" msgid "Learn about gettext keywords" msgstr "Aprender sobre as parolas clau d'o GNU gettext" msgid "Update summary" msgstr "Resumen de l'actualización" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" msgid "New strings" msgstr "Textos nuevos" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" msgid "Obsolete strings" msgstr "Linias obsoletas" msgid "(0 new, 0 obsolete)" msgstr "(0 nuevos, 0 obsoletos)" msgid "Open" msgstr "" msgid "Open file" msgstr "" msgid "Save file" msgstr "" msgid "Validate" msgstr "Validar" msgid "Check for errors in the translation" msgstr "Mirar as errors en a traducción" msgid "Update from code" msgstr "" msgid "Update from Code" msgstr "" msgid "Update from source code" msgstr "" msgid "Sidebar" msgstr "Barra lateral" msgid "Show or hide the sidebar" msgstr "Amostrar u amagar a barra lateral" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. msgid "Previous source text" msgstr "" 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." msgid "Notes for translators" msgstr "" msgid "Comment" msgstr "" msgid "Add comment" msgstr "Adhibir un comentario" msgid "Add Comment" msgstr "Adhibir un comentario" msgid "Delete From Translation Memory" msgstr "" msgid "Delete from translation memory" msgstr "" msgid "Translation suggestions" msgstr "" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). msgid "No matches found" msgstr "No s'ha trobau coincidencias." #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). msgid "No Matches Found" msgstr "No s'ha trobau coincidencias" msgid "This string was found in Poedit’s translation memory." msgstr "Ista cadena s'ha trobau en as traduccions memorizadas d'o Poedit." msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" msgid "The TMX file is malformed." msgstr "" msgid "No translations were found in the TMX file." msgstr "" #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "" #, c-format msgid "Translation memory error: %s (%d)." msgstr "" msgid "Cannot create temporary directory." msgstr "No puet creyar-se a carpeta temporal." msgid "There are no translations. That’s unusual." msgstr "No bi ha garra traducción. Ixo ye insolito." msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "Translators typically use PO template files (POTs) prepared for them by the " "developer." msgstr "" msgid "(Learn more about GNU gettext)" msgstr "(Aprender mas sobre o GNU gettext)" msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" msgid "Update from POT" msgstr "Esviellar-lo dende un fichero POT" msgid "Take translatable strings from an existing POT template." msgstr "Prener as cadenas traducibles d'una plantilla POT existent." msgid "" "You can also extract translatable strings directly from the source code:" msgstr "" "Puetz tamién extrayer cadenas traduciblesdreitament dende o codigo fuent:" msgid "Extract from sources" msgstr "Esviellar-lo dende as fuents" 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 #, c-format msgid "Version %s" msgstr "Versión %s" msgid "Create new" msgstr "" msgid "Create new translation from POT template." msgstr "" msgid "Browse files" msgstr "" msgid "Open and edit translation files." msgstr "" msgid "Translate cloud project" msgstr "" msgid "Collaborate with other people online." msgstr "" msgid "Recent files" msgstr "" msgid "Sync" msgstr "Sincronizar" 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") #, 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. #, c-format msgid "%s Preferences" msgstr "Preferencias d’o %s" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "Servicios" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "Amagar %s" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "Amagar atros" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "Amostrar-lo tot" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "Salir de %s" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "" msgid "Preferences..." msgstr "Preferencias..." #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "Recient" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "Freqüent" msgid "&Apply" msgstr "&Aplicar" msgid "Apply" msgstr "Aplicar" msgid "&Back" msgstr "&Dezaga" msgid "Back" msgstr "Dezaga" msgid "&Cancel" msgstr "&Cancelar" msgid "&Clear" msgstr "&Vuedar" msgid "Clear" msgstr "Vuedar" msgid "Copy" msgstr "Copiar" msgid "Cu&t" msgstr "&Retallar" msgid "Cut" msgstr "Retallar" msgid "Edit" msgstr "Editar" msgid "&Quit" msgstr "&Salir" msgid "Help" msgstr "Aduya" msgid "&New" msgstr "&Nuevo" msgid "New" msgstr "Nuevo" msgid "&No" msgstr "" msgid "No" msgstr "" msgid "&OK" msgstr "&Acceptar" msgid "Open…" msgstr "" msgid "&Open..." msgstr "&Ubrir..." msgid "Open..." msgstr "Ubrir..." msgid "&Paste" msgstr "A&pegar" msgid "Paste" msgstr "Apegar" msgid "Preferences" msgstr "Preferencias" msgid "&Redo" msgstr "&Refer" msgid "Refresh" msgstr "Refrescar" msgid "&Save as" msgstr "&Alzar como" msgid "Save as" msgstr "Alzar como" msgid "Select &All" msgstr "Seleccion&ar-lo tot" msgid "Select All" msgstr "Seleccionar-lo tot" msgid "&Undo" msgstr "&Desfer" msgid "&Yes" msgstr "&Sí" msgid "Yes" msgstr "Sí" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Mayus+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Intro" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "Alto" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "Abaixo" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "mayus" poedit-3.5/locales/pt_PT.mo0000644000175100001770000016633414664354143012625 00000000000000|+: : :&:?:<S::J:g: V;`; o;y; ;;;;;;;;;;;;;;<<<0<B<H<M<U<]<o<<< < <<<< <<<<==0=L=R=X=a=g=p== = = ====>>7>N>e>k>p>>>>>> ? ???'?0? 4? @? L?Y? h?t? ? ?? ?? ???@@&@F@c@@ @ @1@@'@A.A HASA7YA6AA)AB B]"BB<BDB$C:C ACNCC C"CD+"D)ND xDDDDDDDDEE#4EXEmE|E EE EEEEEE%EF +FLFTF]FuF FF/F FkFXG]GpGGGG-G1G.H GHRH)iHH HYHI!I&I9ILIaIeI|IIIIIII;J CJ'PJ^xJLJ?$K dK rKK*KKK"K5K.LILdLjL}L L L L L LLLLLLLfMlMMuM(N?NRN"dNN NNN N NNN0N'OAO#VO<zO"OO OO*P03P!dP'PPPP(PTQ fQtQ yQ QQQQQ Q Q Q RR!R0RJRRRcR lRxR RRR R RRRRRRSz/TT TTT TT U2(U[UuU|UUU UU U U V!V&V;^D^Y^n^^^._4_J_=P__1__n_E[```;` ` aa@,amacb,#c,Pc}c cc2c*c ddwdj$e eeee%ee ff3fEfWf qffffffff8f g gg$g ,g 8g DgRg"Yg"|gg g gg g(ghhz'hhhhh h h h hh h i i i ,i 8iCi^ioi"iiii i ij jj$j -j:jTjdjtj j jjjj jjj!k *k8k@kHkQk Ykgkkkkkk k k kk ll.lBlRlgl|lmm 4m@mOmbm smm mmKmmn n%n:nMncn1nn n nn=ioo'p,p(>pgp op}p+pp p8p" q/q@qrCr8brrs8*t1ctRtctQLuu'u:ulvPv-vCwALwKw0w. x:x!x)x-y+Cy8oyCyuy,bzLz;z]{v{Z{gW|J|c }[n}o}:~7~m_[HN^Xp ف72("[~~łqDɃRVj o ȄЄӄ ڄ"$-F_p<Ѕ #$@eˆ#V cz ч. ;GPhHl5m7Y 3aω16;?\.a ͊ 1J!Z| +94JA؍O}9 Ž ֎ $,4GZ b lzҏُߏ  $ ( 6 D NX_nې   - No $ّ$#8MRW nȒ"   '- 4>Nd{ɓߓ(:Rl (%( +A:R()# 8?Q'ٖ TCE^R.&/Bߘ 2*);T4 řљ.=#V zӚ  .:LSYq"!ʛ "6"G9j 9@Yq#?ƝG)N x-!ǞYSYa|$"ß!! BRgHv 3̠mJnC //_v*{1%آ%$*AH\p ǣϣ գqh~3Sj%ʥߥF0w5Ħ" 1<,Q6~10"! D2ei .A[vѩ9B X cou &Ҫ0*-ʫ!A#Tx#Dĭ #*&@g Ǯ5+;g}*ů 3NGWC5DZ6 0 Q^g ʲ  $$$IXn-W˴#+7<c3!Ե.,%Rhp'#Kh'wַ/8AJPiD%JpFy7չ% z3R R&yM 4޽2F Zh5w,ھ|{$ ,(>Si <OXk s~ ##  . F&T{!x.4<DUfz %+ @/a   *@`x"1I,^  'CT]u$7Oo'< ZfxfQ i v"6#4 DO; F$ 0@#X2| 4+!9 H05y8s:[{C:$-5MeV)@@j<J,3(`,"(O-x*4<tC+O94inY`tX/|buh?{r |   F;E)#<Yk %&.Uh  (,&&>e%#G%m*3!!%>9d/|Kks 2 9 FQoIs=}6y 7}q v 0 &-<Sjp)45nCv#=ld B@Twa QjqO 91B)aT'ZSFQYu>"/VJZsG6*[ar`^;XyVb?' <IL:x%AMZ\W88O,*d0)i{J-yK|]:c%}oo0][-Pg6YS&r(\p@X(tM?iE=eD"OU|53 w  fj,#32H 4[ pk {qke;mpgl16U85:`, +Y^L9$qz2fGu(A7N4!d0DNt{F<x_+7vX)nKG+>&9m3 LeUIN Iy E"nsk/<W>PhrVvT]cQmuR$bjD !_@xEl%WK-_7MCwbz/|gcAB` zh~?SC^*tf=\h!H'P#RiF&;$H1~.2 RsJo}.} .~ (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd AccountAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add accountAdd 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 languagesAlt+Always 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 errorCrowdin is an online localization management platform and collaborative translation tool.Ctrl+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 againDownDownloading 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:EnterEnter 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 loading translation file “%s”.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export errorExport 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…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)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport from TMX…Import translation files…Importing translation memory from “%s” 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 CrowdinLeftLine %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 translations were found in the TMX file.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKObsolete stringsOneOnly 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 translation templateOpen...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 translationsQuitQuit %sReading file content failed with the following error: %sRecentRecent 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 FinderReviewRightSaveSave &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 languageServicesSet LanguageSet languageSettingsSettings…Shift+Show AllShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow summary after updating filesShow 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.These strings are no longer in the source code. Poedit will remove them from the file now.These strings were found in the sources but were not in the file. Poedit will add them to the file now.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 entries in the file are probably incorrect.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 errorUntransUpUpdateUpdate 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 the file failed. Click on 'Details >>' for details.Updating 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown 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: 2024-08-30 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 errosFoi 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&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(0 novas, 0 obsoletas)(Saber mais sobre o GNU gettext)(Novas: %i, obsoletas: %i)(Utilizar idioma predefinido)(sessão não iniciada)(requer Windows 8 ou mais recente)< An&teriorAcerca de %sContaContasAdicionarAdicionar contaAdicionar comentárioAdicionar ficheiros…Adicionar pastas…Adicionar projetoAdicionar "wildcard"…Adicionar contaAdicionar 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 suportadosAlt+Focar sempre o campo da entrada de textoUm item na lista de ficheiros de entrada:Um item na lista de palavras-chave:AspetoAplicarTem 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 colaborativa.Ctrl+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.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 novamenteDownA 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:EnterEntrar 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 carregar o ficheiro de tradução “%s“.Erro ao abrir ficheiroErro ao guardar o ficheiroErro ao carregar o ficheiro XLIFF: %sErrosTudoCaminhos excluídosExportar para TMX…Exportar como…Erro de exportaçãoExportar para HTML…Exportar para TMX…Ocorreu 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 entradas traduzíveis…Configurar extratorExtratoresFalha do comando: %sFalha ao comunicar com o processo do Poedit.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.A finalizar…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)FrequentesGNU gettextGeralFicheiros HTMLAjudaOcultar %sOcultar outrosOcultar 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…Erro de importaçãoImportar de TMX…Importar ficheiros de tradução…Ocorreu uma falha ao importar a memória de traduções de “%s”.A importar traduções…Em: %sIncluir versões betaMaiúsculas/minúsculas inconsistentesEspaço branco inconsistenteInformações do tradutorInstalarFicheiro inválidoInvocação:Ficheiros 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 CrowdinEsquerdaA 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)Nunca deixar que a lista de entradas obtenha o foco. Se ativa, tem que usar Control+Teclas do cursor para mudar de linhas com o teclado, mas também pode digitar o texto imediatamente, sem ter que premir a tecla Tab para mudar de campo.NovoNovo a partir de ficheiro &POT/PO…Novo a partir de ficheiro &POT/PO…Novas entradasForma 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.Não foram encontradas traduções no ficheiro TMX.Sem informações de utilizaçãoNem todas as formas plurais estão traduzidas.Não autorizado. Inicie novamente a sessão.Notas para tradutoresAceitarEntradas obsoletasUmaApenas 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 modelo de traduçãoAbrir...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 correspondências exatas ou similares para as entradas 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 frases…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 eliminadasSairSair do %sFalha ao ler o conteúdo do ficheiro com o seguinte erro: %sRecentesFicheiros recentesRefazerRecarregarRecarregar ficheiroRecarregar ficheiroFaltam: %dRemoverRemover traduções iguais à fonteRemover traduções iguais à fonteSubstituirSubstituir 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 FinderReverDireitaGuardarGuardar &como…Guardar &como…Guardar mesmo assimGuardar mesmo assimGuardar comoGuardar como…Guardar alteraçõesGuardar ficheiroCapturas 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 preferidoServiçosDefinir idiomaDefinir idiomaDefiniçõesDefinições…Shift+Mostrar tudoMostrar 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 resumo depois de atualizar ficheirosMostrar 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 procurarSubstituiçõ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 entradas 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 entradas similares às deste ficheiro. Só será útil para traduções semi-automáticas e após o Poedit aprender os dados dos ficheiros que traduziu manualmente.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”.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.Estas frases já não estão no código fonte. O Poedit vai remove-las agora do ficheiro.Estas frases foram encontradas nas fontes mas não estavam no ficheiro O Poedit vai adicioná-las agora ao ficheiro.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 para tradução não são adicionadas manualmente ao sistema gettext mas sim extraídas automaticamente do código fonte. Desta forma, estão sempre atualizadas. Normalmente, os tradutores utilizam os ficheiros POT disponibilizados pelos programadores.Traduzir projeto na nuvemTraduzido: %d de %d (%d %%)TraduçãoIdioma da traduçãoMemória de traduçõesTradução por re&verPropriedades da traduçãoProvavelmente as entradas de tradução no ficheiro estão incorretas.A 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)DesfazerOcorreu uma exceção não tratada: %sUnix (recomendado)Erro desconhecido do Crowdin.Erro desconhecidoPor traduzirUpAtualizarAtualizar 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 atualizarFalha ao atualizar o ficheiro. Clique em 'Detalhes >>' para saber mais.Atualizar 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 as entradas passíveis de tradução nos ficheiros fonte:Utilizar memória de traduçãoValidarResultados da validaçãoVersão %sA aguardar autenticação…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 XLIFFSimTambém pode extrair as entradas 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çãoaltPor reverctrlnão apagar ficheiros temporários (depuração)ex.: nplurals=2; plural=(n > 1);preencher com ocorrências do ficheiroir para o item indicado pelo número de linhagerir um URI poedit://pré-traduzir com a MTshiftidioma desconhecidoversão não suportada (%s)você@exemplo.com“%s“ não é um ficheiro POT válido.poedit-3.5/locales/fa.mo0000644000175100001770000020770414664354153012163 000000000000000`)777: : !: ,:6: E:O: V:d:k:q:y:::::::::::::;;;#;+;3;E;W;[; _; l;y;;; ;;;;;;<"<(<.<7<=<F<]< t< < <<<<<< =$=;=A=F=Z=y=== = ===== = = >> &>2> B> N>Z> t>> >>>>>>?!?A? W? d?1p??'??? @@7@6O@@)@@ @]@>A<QADA$AA A BB B"BB+B CC)C;CLC_ChC{CCC#CCDD D!D 3D>DPDVDgD%xDD DDDDE E"E/=E mEzEEEEEE1E"F ;FFF)]FF FYFGGG-G@GUGYGpGwGGGGGG;G 7H'DH^lH?H I I&I*9IdIwI"|I5III JJ J $J 2J ?J LJYJjJrJzJJJfJKKu4K(KKK"KL "L-Li Oi]i ni|iKiii ijj)j?j1[jj j jj=Ekkll(lCl KlYl+vll l8l"l mmmCm8>nwnfo8p1?pRqpcpQ(qzq'q:qlqPer-rCrA(sKjs0s.s!t)8t-bt+t8tCtu9u,uLu])vvZ wghwJw[xwx7#ym[y_y[)zzzz{ {{{{{7|2H|{|||q|4}G}}}} }~!~8~@~C~ J~"U~$x~~~~~~(0<@}$%;#XV|Ӏ /A\mt |H5m,7 ҂3܂arw|. у.E[ar!f~  ͆   "08P h v**-- M [ e r~ و%5H_v11  (4Pl 5Ί5,:,g''42Gz3 ˌ׌ *@#Z$~ٍ% #/Ss$&Ύ1.61e)ޏ {VE8&_ hDsE:[9 U\sOГ: [d;7@4uɖ)*.F0u6.ݗ6 CYk˜ߘF=O5 Ù Й&ޙ86Po ˚ؚ!!0"ROuAś?:2zh '1090j.ʝ9ѝ # 6#W{l =1o{BР%o%x 1KۡH'Hp âТ :Rjɣ0p0ҤOť)+?:k ݦ&$APa(ۧB_;A+ݨ "#JFa4F( o,|0Dڪ ƫ $#?!c!Ϭ%'M \ h/s ǭ'' &4 [Nf"ذ9B7b7ײP(`#+"'-4Rbs- Nl ?6,'D.lij=ķL-+Kw/=ɸ&=Si ''<d%F޻{%%2Ǽ;&61]G-׽ -*26]&<ڿ#&;b z  *3J%ab*v u$;;wwT^Rl*s0&OX<I3SjN47$\u##  #/ ?`0o S 1I&]&D+p(# # #1UpAE$YH~ ' 1G Yew+!%)H b7!L4,,'T]-f#:+.-Z:+-(F"3Vt"" ,|7!&8Rj6IBT"j-@Z1c4Gb }tg{k6y1?z9ZO9woj!{NIW.@B@T;_1K Vv,cM#qI    N)Ex C $"Eh|DV4Z4"!" +,#X|*|*D5oI9*)+T>JM X+2 L8Z1  1(Dmtj uv |M Q4-Q/0    +& R 9b kb  Bz# i:<zhh{8/h1k[)eI(a$\u&sj'$c12o@FkEYnU~`MD{X9>!5|loqTLK O~X$}z!`=3mI:#tm[tn5~`>m;fZ0 ig U653# PyZ/1D ?l"4!x^xCI/|Y]Poe-Ur'V[}., Ww3grJTRl*Ls%A8TR.+&dB^QaA2SH-=v Le^S M(G7_4Q@R{ w+JE?(b@K?p&WC7Jt\)9*N47}gBO+,]N\; x f>VuY6W=Zc  "p6EyXQjHv|<DpMG<%F_f anA'y;V8P:j"N*]rOGvd09q.F_S2Hs)c0,b-C qiuw%Kd 888(848@8L8X8d8p8|88888888909T9h999999:  h ;Y K 3 P ^ q    ' = #%  E TS VI +* Cn+{    $J('' (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(0 new, 0 obsolete)(Learn more about GNU gettext)(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd AccountAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add accountAdd 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 languagesAlt+Always 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 errorCrowdin is an online localization management platform and collaborative translation tool.Ctrl+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 no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownDownloading 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:EnterEnter 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 loading translation file “%s”.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export errorExport 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesFrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport from TMX…Import translation files…Importing translation memory from “%s” 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 CrowdinLeftLine 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 translations were found in the TMX file.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKObsolete stringsOneOnly 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 translation templateOpen...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 translationsQuitQuit %sReading file content failed with the following error: %sRecentRecent 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 FinderReviewRightSaveSave &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 languageServicesSet LanguageSet languageSettings…Shift+Show AllShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow summary after updating filesShow 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.These strings are no longer in the source code. Poedit will remove them from the file now.These strings were found in the sources but were not in the file. Poedit will add them to the file now.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.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 projectTranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation entries in the file are probably incorrect.Translation 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.UntransUpUpdateUpdate 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 the file failed. Click on 'Details >>' for details.Updating 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown 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: 2024-08-30 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&برو&گروه‌بندی بر اساس زمینه&گروه‌بندی بر اساس زمینه&راهنما&جدید&جدید…&بعدی >ترجمهٔ &بعدیترجمهٔ &بعدی&خیر&تأییدراهنمای &برخطراهنمای &برخط&گشودن...&گشودن…&جای‌گذاری&ترجیحات&ترجیحات…ترجمهٔ &قبلیترجمهٔ &قبلی&ویژگی‌ها…&پاکسازی ترجمه‌های حذف شده&پاکسازی ترجمه‌های حذف شده&خروجانجام &دوباره&جای‌گزینی&ذخیره&ذخیره به عنوان&نمایش رخداد کد&نمایش رخداد کد&شروع پنجره&شروع پنجره&ترجمه&برگردانابتدا ورودی‌های ترجمه‌&نشدهابتدا ورودی‌های ترجمه‌&نشده&به‌روز رسانی از کد منبع&به‌روز رسانی از کد منبع&اعتبارسنجی ترجمه‌ها&اعتبارسنجی ترجمه‌ها&نما&بله(۰ جدید، ۰ منسوخ)(دربارهٔ GNU gettext بیشتر بدانید)(استفاده از زبان پیش‌گزیده)(وارد نشده‌اید)(ویندوز ۸ یا جدیدتر لازم است)< &قبلی<بی‌نام>درباره %sحساب کاربریحساب‌هاافزودنافزودن حسابافزودن دیدگاهافزودن پرونده‌ها…پوشه های اضافه شده…افزودن پروژهافزودن با شتاب…افزودن حسابافزودن دیدگاهافزودن شاخه به سیاههافزودن پرونده‌ها…افزودن پوشه‌ها…افزودن پروژهافزودن با شتاب…کلیدواژه‌های اضافیپرچم‌های اضافی xgettext:پیشرفتهتنظیمات پیشرفتهٔ استخراج…تنظیمات پیشرفتهٔ استخراجتنظیمات پیشرفتهٔ استخراج…تمام پرونده‌های ترجمههمهٔ دیدگاه‌هاهمه رشته هاهم چنین از کلیدواژه‌های پیش‌فرض برای زبان‌های پشتیبانی شده استفاده کنیددگرساز+همیشه تمرکز به محوطه درونداد متن تغییر داده شودیک مورد در سیاههٔ پرونده‌های درونداد:یک مورد در سیاههٔ کلیدواژه‌ها:ظاهراعمالآیا از حذف استخراج کننده «%s» مطمئنید؟آیا از بازنشانی حافظهٔ ترجمه مطمئنید؟بررسی بروزرسانی ها بصورت خودکاربه صورت خودکار پروندهٔ MO را هنگام ذخیره کامپایل کنبازگشتمسیر پایه:نسخه های بتا شامل آخرین ویژگی های جدید و پیشرفته هستند، اما ممکن است کمی ناپایدار باشند.آوردن همه به جلوپرونده PO شکسته: فرم جمع MSGSTR استفاده شده بدون msgid_pluralپرونده PO شکسته: فرم مفرد MSGSTR همراه با msgid_pluralنشانه گذاری شکسته در رشته ترجمه.مرورمرور پرونده‌هابه‌طور پیش‌فرض، نتایج نادرست نیز گنجانده شده است، اما با «نیازمند کار» علامت‌گذاری شده است. این گزینه را علامت بزنید تا فقط موارد منطبق کامل را شامل شود.لغودر حال لغو کردن…نمی‌توان مسیر موقت محلی را ساخت.نمی‌توان برنامه را اجرا کرد: %sامکان پیش ترجمه زبان ناشناخته نیست.درشت نویسی&مدیر کاتالوگ‌ها&مدیر کاتالوگ‌هامدیریت کاتالوگتغییر زبان واسط کاربریمجموعه‌نویسه:سند را بررسی کنبررسی دستور زبان با املاءبررسی املاء در هنگام نوشتنبررسی برای به‌روز رسانی‌ها…بررسی برای خطاها در ترجمهبررسی برای به‌روز رسانی‌ها…بررسی املاءپاک‌کردنپاک‌کردن فهرستپاک‌کردن ترجمهپاک‌کردن فهرستپاک‌کردن ترجمهبستنوقایع کدوقایع کدبه صورت برخط با افراد دیگر همکاری کنید.در حال جمع آوری پرونده‌های منبع…فرمان برای استخراج ترجمه‌ها:دیدگاهدیدگاه:دیدگاه‌ها با پیشوند:کامپایل به MO…کامپایل به…پرونده‌های ترجمه کامپایل شدنداستخراج کد منبع را در ترجیحات پیکربندی کنید.تأییدرونوشترونوشت از مفردرونوشت از متن منبعرونوشت از مفردرونوشت از متن منبعتصحیح خودکار املاءپرونده بارگیری نشد، احتمالاً آسیب دیده است.نمی‌توان پروندهٔ ⁨%s⁩ را ذخیره کرد.ایجاد جدیدایجاد ترجمه جدیدترجمه‌ای جدید از الگوی POT ایجاد کن.ایجاد یک پروژهٔ ترجمهٔ جدیدخطای CrowdinCrowdin یک پلتفرم مدیریت محلی‌سازی برخط و ترجمه مشارکتی است.مهار+&برشاستخراج کننده‌های سفارشی:استخراج کننده‌های سفارشی:سفارشی‌سازی نوار ابزار…برشاندازهٔ پایگاه‌دادهٔ روی دیسک:حذفحذف از حافظهٔ ترجمهحذف استخراج کنندهحذف از حافظهٔ ترجمهحذف پروژهحذف دیدگاهحذف پروژهحذف پروژه، هیچ‌کدام از پرونده‌های ترجمه را حذف نخواهد کرد.شاخه‌ها:آیا از حذف پروژهٔ «⁨%s⁩» مطمئنید؟آیا می‌خواهید پرونده را مجدداً از دیسک بارگزاری کنید؟ در این صورت ویرایش‌های ذخیره نشده شما در Poedit از بین می‌روند.آیا از برداشتن همهٔ ترجمه‌هایی که دیگر استفاده نمی‌شوند، مطمئنید؟ذخیره نکنذخیره نکندیگر نمایش داده نشودهمتاسازی‌های دقیق را به عنوان نیاز به کار نشانه‌گذاری نکنیددیگر نمایش داده نشودپاییندر حال دانلود آخرین ترجمه…بارگیری ترجمه‌های این پروژه غیرفعال است.پوشه‌ها یا پرونده‌ها را اینجا رها کنیدپوشه‌ها یا پرونده‌ها را اینجا رها کنید&خروجویرایشویرایش &دیدگاهویرایش &دیدگاهویرایش دیدگاهویرایش دیدگاهویرایش پروژهویرایش پروژهدر حال ویرایشویرایش…رایانامه:ورودحالت تمام صفحهورودی‌های این فایل دارای تعداد اشکال جمع متفاوتی از آنچه سرصفحه Plural-Forms فایل می‌گوید دارندابتدا ورودی‌های همراه خطاابتدا ورودی‌های همراه خطاورودی‌های همراه خطا به صورت قرمز در سیاهه نشانه گذاری شده‌اند. جزئیات خطا هنگامی که شما ورودی را بر می‌گزینید، نمایش داده خواهند شد.هنگام بارگزاری پروندهٔ «⁨%s⁩» خطایی رخ داد.خطا هنگام گشودن پروندهخطا هنگام ذخیرهٔ پروندهخطا هنگام بارکردن پرونده XLIFF:‏ %sخطاهاهمه چیزمسیر های جدا شدهبرون‌ریزی به TMX…برون‌ریزی به عنوان…خطای برون‌ریزیبرون‌ریزی به TMX…برون‌ریزی حافظهٔ ترجمه به «⁨%s⁩» شکست خورد.برون‌ریزی ترجمه‌ها…استخراج از منبعاستخراج یادداشت‌ها برای مترجمان از:متن را از فایل‌های منبع در مسیرهای زیر استخراج کنید:در حال استخراج متن‌های قابل ترجمه…برپا کردن استخراج کنندهاستخراج کنندهفرمان شکست خورده: %sعدم موفقیت در ارتباط با فرآیند ارسال Poedit.بارگزاری پرونده از ترجمه‌های استخراج شده، شکست خورد.ادغام کاتالوگ gettext شکست خورد.به‌روز رسانی حافظهٔ ترجمه شکست خورد: %sپروندهنمی‌توان پرونده را گشودپروندهٔ «⁨%s⁩» وجود ندارد.پروندهٔ «⁨%s⁩» یک پروندهٔ ترجمه نیست.پروندهٔ «⁨%s⁩» فقط خواندنی است و نمی‌تواند ذخیره شود لطفاً آن را با نام دیگری ذخیره نمایید.در حال نهایی شدن…یافتنیافتن بعدییافتن قبلییافتن و جای‌گزینی…یافتن در دیدگاه‌هایافتن در متون منبعیافتن در ترجمه‌هایافتن بعدییافتن قبلیتعمیر زبانتعمیر زبانتعمیر سرایندتعمیر سرایندفایل های ترجمه فلاترپرتکرارGNU gettextعمومیپرونده‌های اچ‌تی‌ام‌الراهنماپنهان کردن %sپنهان کردن بقیهپنهان کردن نوار کناریپنهان کردن نوار وضعیتاین اعلان را پنهان کنشناسهاگر به پاکسازی ادامه دهید، تمام ترجمه‌هایی که به عنوان حذف‌شده علامت‌گذاری شده‌اند، برای همیشه برداشته می‌شوند. اگر در آینده اضافه شوند، مجبور خواهید بود دوباره آنها را ترجمه کنید.اگر پیش از این دسترسی به پرونده‌ها را رد کرده‌اید، می‌توانید از بخش ترجیحات سیستم > امنیت و حریم شخصی > حریم شخصی > پرونده‌ها و پوشه‌ها مجدداً به آن اجازه دهید.اگر پیش از این دسترسی به پرونده‌ها را رد کرده‌اید، می‌توانید از بخش ترجیحات سیستم > امنیت و حریم شخصی > حریم شخصی > پرونده‌ها و پوشه‌ها به آن اجازه دهید.نادیده‌گرفتننادیده گرفتن بزرگی و کوچکی حروفدرون‌ریزی از TMX…درون‌ریزی پرونده‌های ترجمه…خطای درون‌ریزیدرون‌ریزی از TMX…درون‌ریزی پرونده‌های ترجمه…درون‌ریزی حافظهٔ ترجمه از «⁨%s⁩» شکست خورد.درون‌ریزی ترجمه‌ها…در: %sشامل نگارش‌های بتاحروف بزرگ/کوچک ناسازگارفضای خالی ناسازگاراطلاعات در مورد مترجمنصبپروندهٔ نامعتبراحضاریه:فایل های ترجمه JSONنگه‌دارکد یا نام زبانزبانی که قصد دارید به آن ترجمه کنید همان زبان پروندهٔ ترجمه است.زبان ترجمه مشخص نشده است.زبان برای ترجمه:گزینش زبانگروه ترجمه:زبان:آخرین تغییردربارهٔ کلیدواژه‌های gettext بخوانیددربارهٔ حالت‌های جمع بخوانیدبیشتر بدانیددرباره %s بیشتر بدانیددربارهٔ Crowdin بیشتر بدانیدچپانتهای خط:سیاههٔ پسوندهای جدا شده توسط سمیکلون (به عنوان مثال *.cpp;*.h):بارگذاری انگلیسیپرونده‌های MO نمی‌توانند به طور مستقیم در Poedit ویرایش شوند.حروف را کوچک کنحروف را بزرگ کنیک ترجمهٔ جدید از این پروندهٔ POT ایجاد شود.سربرگ بدشکل: «%s»مدیریت حساب‌های کاربریمدیریت…در حال ادغام موارد مختلف…کوچک سازینام پروژه‌ای که ترجمه برای آن استنام:ناتمام &بعدیناتمام &بعدینیازمند کارنیازمند کارهرگز اجازه‌نده که سیاههٔ رشته‌ها تمرکز را بگیرد. اگر فعال باشد، شما باید از مهار-پیکان‌های صفحه‌کلید برای صفحه‌نوردی استفاده کنید ولی همچنین می‌توانید بلافاصله نگارش متن را بدون فشار دادن کلید جهش برای تغییر تمرکز انجام دهید.جدیدجدید از پروندهٔ &POT/PO…جدید از پروندهٔ &POT/PO…رشته‌های جدیدحالت جمع بعدیحالت جمع بعدیخیرمورد منطبقی یافت نشدهیچ ورودی نمی‌تواند از پیش‌ترجمه شود.هیچ اطلاعاتی در مورد وقوع این رشته در کد منبع در فایل ارائه نشده است.مورد منطبقی یافت نشدهیچ مشکلی در ترجمه یافت نشد.هیچ ترجمه‌ای در فایل TMX یافت نشد.بدون اطّلاعات کارکردهمه اَشکال جمع ترجمه نشدند.بدون تأیید هویت، لطفاً مجددا وارد شوید.یادداشت‌ها برای مترجمانتأییدرشته‌های منسوخیکفقط در صورتی فعال کنید که به کیفیت 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خواندن محتوای پرونده با خطای زیر ناموفق بود: %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 تأثیر می‌گذارد. اگر نیازمندی خاصی دارید، مانند کنترل نسخه، آن‌ها را تنظیم کنید.این رشته‌ها دیگر در کد منبع نیستند. Poedit اکنون آنها را از فایل حذف می‌کند.این رشته‌ها در منابع یافت شدند اما در فایل نبودند. Poedit اکنون آنها را به فایل اضافه می‌کند.این فایل JSON یک فایل ترجمه نیست و نمی‌توان آن را در Poedit ویرایش کرد.این فایل دارای ورودی هایی با فرم های جمع است، اما سربرگ Plural-Forms پیکربندی نشده است.این دستوری است که برای راه‌اندازی استخراج‌کننده استفاده می‌شود. %o به نام فایل خروجی، %K به فهرست کلیدواژه‌ها، %F به فهرست فایل‌های ورودی، %C به پرچم مجموعه نویسه‌ها گسترش می‌یابد (در زیر ببینید).این رشته در حافظهٔ ترجمهٔ Poedit پیدا شده است.فقط در صورتی که مجموعه نویسه کد منبع داده شده باشد، این به خط فرمان متصل می‌شود. %c به مقدار مجموعه نویسه گسترش می یابد.این به خط فرمان یکبار برای هر پرونده‌ی درونداد ضمیمه خواهد شد. %f به نام پرونده گسترش می‌یابد.این به خط فرمان یکبار برای هر پرونده‌ی درونداد ضمیمه خواهد شد. %k به کلیدواژه گسترش می‌یابد.جمع کلتغییر شکل‌هاورودی‌های قابل ترجمه به‌صورت دستی در سیستم Gettext اضافه نمی‌شوند، اما به‌طور خودکار از کد منبع استخراج می‌شوند. به این ترتیب، آنها به‌روز و دقیق می‌مانند. مترجمان معمولاً از فایل‌های الگوی PO (POT) که توسط توسعه‌دهنده برای آنها تهیه شده است استفاده می‌کنند.ترجمه پروژه ابریترجمهزبان ترجمهحافظهٔ ترجمهترجمه نیازمند کارویژگی‌های ترجمهورودی های ترجمه در فایل احتمالا نادرست است.پایگاه داده حافظه ترجمه خراب است: %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)you@example.com«⁨%s⁩» یک پروندهٔ معتبر POT نیست.I(New: %i, obsolete: %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، منسوخ: %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.5/locales/README0000644000175100001770000000042014664354065012104 00000000000000 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.5/locales/vi.mo0000644000175100001770000016451514664354143012214 00000000000000w)x7 y7 7&77<78J8gf8 88 88 89 999"9)9/979F9U9[9a9j9~999999999999 : ::$:-: 4:A:Q:g:}:::::::: : : ;;;3;O;h;;;;;;;;<<,< J< V<`<i<q<z< ~< < << << < << = = =(=8=L=g=p==== = =1=.>'3>[>x> >>7>6>?)2?\? a?]l??<?D@$_@@ @@ @"@@+@)A AALA^ApAAAAAAA#A!B6BEB KBVB hBsBBBB%BB BCC C8C ICWC/rC CkCD D3DID\DrD-D1DD EE),EVE vEYEEEEEF$F(F?FFFeFvFFFF;F G'G^;G?G G GG*H3HFH"KH5nHHHHH H H I I I(I9IAIIIPIVIfhIIIuJ(yJJJ"JJ JJ K K )K6K0GKxKK#K<K"L+L ;LFL*YL0L!L'LLMM(9MTbM MM M MMMNN 1N ;N IN VNcNrNNNNN NN NNN N NOO1OKONOOP PPP PPP2P1QKQRQhQQ QQ Q QQQQ;R(NRwRRR R RRR SS#SYXY`YhYpYvYYYYY`ZfZ|Z=ZZnZEB[[;[ [[[@[;\1],],^K^ ]^k^2z^*^^^ z____%___ ``0`B` \`j`s`|`````8`` ` aa a #a /a=a Ea Ra_a ra(}aaaza@bQbXb^b cb ob {b bb b b b b b bbb c"%cHcdcc c c ccc cccc d d )d7dHdWd pd}dd!d ddddd dde(eAeJeSe de qe }eeeeeeeefff fff fg g&gK-gygg ggggg1h7h Fh Th`hhoiti(ii ii+ij j8j"TjwjjKkCfk8kkl8rm1mRmc0nQnn'o:)oldoPo-"pCPpApKp0"q.Sqq!r)3r-]r+r8rCru4s,sLs]$ttJu[Suu7[vmv_w[awwwwx xx yy6y7My2y"yyy z"z5zzzz zz{&{.{1{ 8{"C{$f{{{{{{{|||<.|k||$||||})}#F}Vj}}}} }}~/~J~[~b~.j~ ~~~~H~5mI7 3a-. +Kbx~!ځ  '(Qk} ʄ ք - LYa0j0̅ۅ  !+:Tn vÆ̆҆ ##5#Y}  ȇ >]| ˆӈ! .%D jv ԉ=P cڊ $!8$Z&]ы/-4=b1 Ҍ ތ7E!$g/ ǍkMWiN,=E Wb$q*B? DOhɐ($3)Nx Ƒ ّ8-*f+ ʒ!ג6&A] dnԔ88,e (!ӕ uy ٖ6ߖ # D#^ < /.ZԘ / <#HFl͙0ՙA/H/x Ϛ4HY`f~.K,(=] co 9ѝ '.?Mn220Cc2ş $"'8Ju  $;"Ru ϡ 7 H T` o{ˢ7  *!9Lc|;! #-2$`!  Ϧݦ D5`ϧ 2&5\nMWfCx ̩7֩"1 I!W y&Ϫ & 2%8%^ ¬#ɬ4w"1VFB!H="2 U`qw/Aq-ʰ *Je} ""± òڲWBk\ȳ HlU´ݴVJW#<Ʒ15IY(i/¸۸ "0ݹ+ Hi%Ǻ ֺ F R Y?c  Ż лۻ !8O b8p&~  ̽ ׽ ':'Lt4پ 0CRYq"ǿ/K#i, 1 ? M[*q* :R&k! &! ?_5Tg  b[w &-< O Zg+ ' 4A/TB L,%RhWbv`g:Mw>-)H^c9]WWXG4BX0q)03D1XvNwIqjI4ME,u ) 7E  )I?^D) -H]q*(Cl"~  3< #H#l/ * 7`X// #9]x+886  &F"d G #q)XPz L#  .%A,^, / r_-$Y X=Cd>Zq6 h;CdDHaRHCSwlVEDb zKm&8n7ob! 6}J0y plo~?L+^F( ,u5q9ft,n<ABk mKI.tGa M)/eH"]>J%2_`7wu>6%h W@c~?"]ji5*kJ53;2[(P'NkK Avjs";3:0+ 4MP#Q|T'OoF=?g&O{In(]bxwe9rEGV^p17 *G pB` DyU8R2L#A!t0_MFl`1-ij)Y Zz:,*Ug/L8PrmEWheR+[f$v4|)NXz<T[Qv\{:}}cx4W{@^iqf&<$sy\ -3NQ=SU|Oasd @9I./'x%BX#Y.!1u~\SVZgTc (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd AccountAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add accountAdd 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 languagesAlt+Always 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 errorCrowdin is an online localization management platform and collaborative translation tool.Ctrl+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 no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownDownloading 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:EnterEnter 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 loading translation file “%s”.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export errorExport 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…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)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport from TMX…Import translation files…Importing translation memory from “%s” 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 CrowdinLeftLine %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 translations were found in the TMX file.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKObsolete stringsOneOnly 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 translation templateOpen...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 translationsQuitQuit %sReading file content failed with the following error: %sRecentRecent 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 FinderReviewRightSaveSave &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 languageServicesSet LanguageSet languageSettings…Shift+Show AllShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow summary after updating filesShow 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.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.Translated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation entries in the file are probably incorrect.Translation 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.UntransUpUpdateUpdate 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 the file failed. Click on 'Details >>' for details.Updating 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown 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: 2024-08-30 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(0 mới, 0 cũ)(Học thêm về GNU gettext)(Mới: %i, quá cũ: %i)(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 tài khoảnThê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 tài khoảnThê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ợAlt+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ỗiCrowdin là một nền tảng quản lý bản địa hóa trực tuyến và công cụ dịch thuật cộng tác.Ctrl+Cắ&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ạiXuốngĐ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:EnterNhậ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 tải tập tin bản dịch “%s”.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ư…Lỗi xuấtXuấ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:Đang giải nén các chuỗi có thể dịch…Thiết lập ExtractorTrình trích xuấtLệnh bị sai: %sKhô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.Hoàn thành…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)Thường xuyênGNU gettextTổng quanTập tin HTMLTrợ giúpẨn %sẨn Những Thứ KhácẨ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…Lỗi nhập dữ liệuNhập từ TMX…Nhập tệp dịch…Nhập bộ nhớ bản dịch từ "%s" đã thất bại.Đ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ề CrowdinTráiDò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ó bản dịch đã được tìm thấy trong tập tin TMX.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 ýChuỗi đã cũ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ẫu bản dịchMở...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átThoát %sĐọc nội dung tệp không thành công với lỗi sau: %sGần đâyTậ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: %dThay 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ạiPhả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íchDịch vụĐặt ngôn ngữĐặt ngôn ngữCài đặt…Shift+Hiển Thị Tất Cả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 tóm tắt sau khi cập nhật tệpHiể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 ĐổiCác chuỗi có thể dịch không được tự động thêm vào bằng tay trong hệ thống Gettext, nhưng lại có thể tự động rút trích ra từ mã nguồn. Theo cách này chúng luôn được cập nhật và chính xác. Những người dịch thường dùng các tập tin mẫu PO (POT) được chuẩn bị sẵn dành cho họ từ người phát triển.Đã 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ác mục dịch trong tập tin có thể không chính xác.Cơ 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ịchLênNâ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ôngCập nhật tập tin không thành công. Nhấp vào 'Chi tiết >>' để biết chi tiết.Đ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 toaltCần làmctrlkhô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:// URIdịch trước từ TMshiftkhô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.5/locales/ro.mo0000644000175100001770000016712714664354143012220 00000000000000|+: : :&:?:<S::J:g: V;`; o;y; ;;;;;;;;;;;;;;<<<0<B<H<M<U<]<o<<< < <<<< <<<<==0=L=R=X=a=g=p== = = ====>>7>N>e>k>p>>>>>> ? ???'?0? 4? @? L?Y? h?t? ? ?? ?? ???@@&@F@c@@ @ @1@@'@A.A HASA7YA6AA)AB B]"BB<BDB$C:C ACNCC C"CD+"D)ND xDDDDDDDDEE#4EXEmE|E EE EEEEEE%EF +FLFTF]FuF FF/F FkFXG]GpGGGG-G1G.H GHRH)iHH HYHI!I&I9ILIaIeI|IIIIIII;J CJ'PJ^xJLJ?$K dK rKK*KKK"K5K.LILdLjL}L L L L L LLLLLLLfMlMMuM(N?NRN"dNN NNN N NNN0N'OAO#VO<zO"OO OO*P03P!dP'PPPP(PTQ fQtQ yQ QQQQQ Q Q Q RR!R0RJRRRcR lRxR RRR R RRRRRRSz/TT TTT TT U2(U[UuU|UUU UU U U V!V&V;^D^Y^n^^^._4_J_=P__1__n_E[```;` ` aa@,amacb,#c,Pc}c cc2c*c ddwdj$e eeee%ee ff3fEfWf qffffffff8f g gg$g ,g 8g DgRg"Yg"|gg g gg g(ghhz'hhhhh h h h hh h i i i ,i 8iCi^ioi"iiii i ij jj$j -j:jTjdjtj j jjjj jjj!k *k8k@kHkQk Ykgkkkkkk k k kk ll.lBlRlgl|lmm 4m@mOmbm smm mmKmmn n%n:nMncn1nn n nn=ioo'p,p(>pgp op}p+pp p8p" q/q@qrCr8brrs8*t1ctRtctQLuu'u:ulvPv-vCwALwKw0w. x:x!x)x-y+Cy8oyCyuy,bzLz;z]{v{Z{gW|J|c }[n}o}:~7~m_[HN^Xp ف72("[~~łqDɃRVj o ȄЄӄ ڄ"$-F_p<Ѕ #$@eˆ#V cz ч. ;GPhHl5m7Y 3aω16;?\.a ͊ 1J!Z| R _Ak%dӍ8W܎  Ǐ֏ߏ 0EN Wey ɐѐ֐ ސ / > K X bo    *8Xx !!ޒ<T ly}#ѓ !  * 6@EM Ubu ̔ߔ!1E`  ƕ?(h4m,&ϖ,-2`+|j*R=Z* #9 ܙ#!4<+qϚ-!G)i+֛ 4DYbhz%$ќ  &<L:l 5>To7? 7Xk)$ӟkN T`{% Ǡ  !BRfAv $ġoKY= 0 =S"W>zأ  6Lav p֤Gg}9!?a+ æצ 7 Xo%A! !,,B9o'0Ѩ (3Gn{ /Ng Ī Ҫ'? HT \j q|!+ܫ j !1Sd!x:ծ! .G fr  /ǯ!+<RZ+lǰ>GA[2T ,в '.4ci~ʳƴʴ  'BE)^[*6(5_#(0,/BG"4T-d Ѹ  : FR[bwQZzMͺ//cN<#FǼ-4.7f x @)ҿz, ,5Qfv   D^ev| <, 5CVfy' yU gt | !2,Bo 5 &6F NY `k  %0Vm-  !"D!^ )Dd|9R p|  ^E_t. '0@ $ "7+c f8s*H<Un;:AvT} _5)!:Kzg$iB?N4`-!.14'6\;'OZw=`qSlXUsZ~9Tt'l !?W q{<@%SyT} $ "+40`!!4 JWKm**",O"k+21s  '> T_8g"H;:ovL 37?uw 1F)f. "&045nCv#=ld B@Twa QjqO 91B)aT'ZSFQYu>"/VJZsG6*[ar`^;XyVb?' <IL:x%AMZ\W88O,*d0)i{J-yK|]:c%}oo0][-Pg6YS&r(\p@X(tM?iE=eD"OU|53 w  fj,#32H 4[ pk {qke;mpgl16U85:`, +Y^L9$qz2fGu(A7N4!d0DNt{F<x_+7vX)nKG+>&9m3 LeUIN Iy E"nsk/<W>PhrVvT]cQmuR$bjD !_@xEl%WK-_7MCwbz/|gcAB` zh~?SC^*tf=\h!H'P#RiF&;$H1~.2 RsJo}.} .~ (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd AccountAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add accountAdd 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 languagesAlt+Always 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 errorCrowdin is an online localization management platform and collaborative translation tool.Ctrl+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 againDownDownloading 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:EnterEnter 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 loading translation file “%s”.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export errorExport 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…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)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport from TMX…Import translation files…Importing translation memory from “%s” 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 CrowdinLeftLine %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 translations were found in the TMX file.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKObsolete stringsOneOnly 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 translation templateOpen...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 translationsQuitQuit %sReading file content failed with the following error: %sRecentRecent 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 FinderReviewRightSaveSave &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 languageServicesSet LanguageSet languageSettingsSettings…Shift+Show AllShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow summary after updating filesShow 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.These strings are no longer in the source code. Poedit will remove them from the file now.These strings were found in the sources but were not in the file. Poedit will add them to the file now.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 entries in the file are probably incorrect.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 errorUntransUpUpdateUpdate 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 the file failed. Click on 'Details >>' for details.Updating 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown 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: 2024-08-30 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 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&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(0 noi, 0 învechite)(Afla mai multe despre GNU gettext)(Noi: %i, depășite: %i)(Folosește limba implicită)(neconectat)(necesită Windows 8 sau mai nou)< &AnteriorDespre %sContConturiAdaugăAdaugă contAdaugă comentariuAdaugă fișiere…Adaugă dosare…Adaugă proiectAdaugă wildcard…Adaugă contAdaugă 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 acceptateAlt+Focalizează mereu câmpul de introducere a textuluiUn element în lista de fișiere de intrare:Un element în lista de cuvinte cheie:AspectAplicăSigur 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.Creează una nouăCreează traducere nouăCreează traducere nouă din șablon POT.Creează un nou proiect de traduceriEroare CrowdinCrowdin este o platformă online de gestionare a localizării și un instrument de traducere colaborativă.Ctrl+&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.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 nouJosSe 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:EnterIntră î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 încărcarea fișierului de traducere „%s”.Eroare la deschiderea fișieruluiEroare la salvarea fișieruluiEroare la încărcarea fișierului XLIF: %sEroriTotCăi excluseExportă în TMX…Exportă ca…Eroare exportareExportă în HTML…Exportă în TMX…Exportarea 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:Extragere șiruri traductibile…Configurare extractorExtractoriComandă eșuată: %sAm eșuat în a comunica cu procesul Poedit.Î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.Se finalizează…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ă)FrecventGNU gettextGeneralFișiere HTMLAjutorAscunde %sAscunde restulAscunde 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…Eroare importareImportă din TMX…Importă fișiere de traducere…Importarea memorie de traducere din „%s” nu a reușit.Importare traduceri…În: %sInclude versiunile betaMajuscule/minuscule inconsistenteSpațiu alb inconsistentInformații despre traducătorInstaleazăFișier nevalidInvocare:Fiș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 CrowdinStângaLinia %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…Nou din fișier &POT/PO…Șiruri noiForma 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.Nicio traducere nu a fost găsită în fișierul TMX.Nu există informații de utilizareNu toate formele de plural sunt traduse.Neautorizat, te rugăm să te conectezi din nou.Note pentru traducătoriOkȘiruri învechiteUnulActivează 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 șablonul de traducereDeschide...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ÎnchideÎnchide %sCitirea conținutului fișierului a eșuat cu următoarea eroare: %sRecentFiș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ăÎ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șteDreaptaSalveazăSalvează &ca…Salvează &ca…Salvează oricumSalvează oricumSalvează caSalvează ca…Salvează modificăriSalvează fișierCapturi 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ăServiciiSetează limbăSetează limbăSetăriSetări…Shift+Arată totArată 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ă sumarul după actualizarea fișierelorArată 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ăsitÎ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” 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.Aceste șiruri nu mai sunt în codul sursă. Poedit le va elimina acum din fișier.Aceste șiruri au fost găsite în surse, dar nu au fost în fișier. Poedit le va adăuga acum în fișier.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 în mod automat din codul sursă. În acest fel, acestea rămân actualizate și exacte. Traducătorii folosesc de obicei fișiere șablon PO (POT-uri), pregătite de către dezvoltator în acest scop.Tradu proiect în cloudTradus: %d din %d (%d %%)TraducereLimbă traducereMemorie de traducereTraducerea necesită &lucruProprietăți traducereIntrările de traducere din fișier sunt probabil incorecte.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ăA apărut o excepție netratată: %sUnix (recomandat)Eroare Crowdin necunoscută.Eroare necunoscutăNetrad.SusActualizeazăActualizează 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 fișierului a eșuat. Clic pe „Detalii >>” pentru detalii.Se 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 %sSe așteaptă autentificarea…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 XLIFFDaDe 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ștealtNecesita lucructrlnu șterge fișierele temporare (pentru depanare)ex. nplurals=2; plural=(n > 1);potrivește șirurile neclare în fișiermergi la elementul de pe linia cu numărul datgetionează un URI poedit://pre-tradu din MTshiftlimbă necunoscutăversiune neacceptată (%s)tu@exemplu.ro„%s” nu este un fișier POT valid.poedit-3.5/locales/de.mo0000644000175100001770000017200014664354153012153 00000000000000|+: : :&:?:<S::J:g: V;`; o;y; ;;;;;;;;;;;;;;<<<0<B<H<M<U<]<o<<< < <<<< <<<<==0=L=R=X=a=g=p== = = ====>>7>N>e>k>p>>>>>> ? ???'?0? 4? @? L?Y? h?t? ? ?? ?? ???@@&@F@c@@ @ @1@@'@A.A HASA7YA6AA)AB B]"BB<BDB$C:C ACNCC C"CD+"D)ND xDDDDDDDDEE#4EXEmE|E EE EEEEEE%EF +FLFTF]FuF FF/F FkFXG]GpGGGG-G1G.H GHRH)iHH HYHI!I&I9ILIaIeI|IIIIIII;J CJ'PJ^xJLJ?$K dK rKK*KKK"K5K.LILdLjL}L L L L L LLLLLLLfMlMMuM(N?NRN"dNN NNN N NNN0N'OAO#VO<zO"OO OO*P03P!dP'PPPP(PTQ fQtQ yQ QQQQQ Q Q Q RR!R0RJRRRcR lRxR RRR R RRRRRRSz/TT TTT TT U2(U[UuU|UUU UU U U V!V&V;^D^Y^n^^^._4_J_=P__1__n_E[```;` ` aa@,amacb,#c,Pc}c cc2c*c ddwdj$e eeee%ee ff3fEfWf qffffffff8f g gg$g ,g 8g DgRg"Yg"|gg g gg g(ghhz'hhhhh h h h hh h i i i ,i 8iCi^ioi"iiii i ij jj$j -j:jTjdjtj j jjjj jjj!k *k8k@kHkQk Ykgkkkkkk k k kk ll.lBlRlgl|lmm 4m@mOmbm smm mmKmmn n%n:nMncn1nn n nn=ioo'p,p(>pgp op}p+pp p8p" q/q@qrCr8brrs8*t1ctRtctQLuu'u:ulvPv-vCwALwKw0w. x:x!x)x-y+Cy8oyCyuy,bzLz;z]{v{Z{gW|J|c }[n}o}:~7~m_[HN^Xp ف72("[~~łqDɃRVj o ȄЄӄ ڄ"$-F_p<Ѕ #$@eˆ#V cz ч. ;GPhHl5m7Y 3aω16;?\.a ͊ 1J!Z| $1#BfB~gՍo=  ȎҎ َ     '1F [g nz ڏ .EK O ] k x ʐ$$?H Z do Α ܑ##2Ol!ߒ & G R^gm tד/Ld{ ʔ '#'AiG*&'Em~@KȖ(-=k srLMa1  5ϙ,827kҚ 12,d & ٛ  * @M cnt$!)ٜ  0G \:} ŝOXn"GӞF-b ,$ `| Р )#",O"c=)o/OB2CS?i1ƣC!<!^ Ťۤ +6EMUj^ɥ0֦%#)?X lyF$-3;a1Ϩ 0 <>4{8!./Z^Ъת&<Rk֫!)= O [ er x%Ȭ, #!.P$h $Eׯ$BI$d ̰ݰ>.] DZб3%;Qh@ ϲDܲ!0<ų6 Ws & #Ĵ/H`;?Zu0ζll7=60+L3xɸ̸ݹ,=X xź  4Lf 5P;-μ^fŽ̽; #18MQ:ڿ:-5J Z<h04 $, :M`u  # I(r  ,,%R[jy ; #    0@Tjz&/5-U  &$:Nc{$;W jw $>Qq ')  ,!= _!k ].?\u"5  I, ,-8Z D*  '[EFN7C?&tfyrU#/=Zo5LOMG 1h/')/*;,Oh4ZZJo5iEyY)s yF=el* &3ZMu9%&#Je~[` r+ )".L { "-P%ac"-3<-p%&48 ,Yn 6 Ab!x3 5Z8@xCM@zV [hl5",4E-a $45nCv#=ld B@Twa QjqO 91B)aT'ZSFQYu>"/VJZsG6*[ar`^;XyVb?' <IL:x%AMZ\W88O,*d0)i{J-yK|]:c%}oo0][-Pg6YS&r(\p@X(tM?iE=eD"OU|53 w  fj,#32H 4[ pk {qke;mpgl16U85:`, +Y^L9$qz2fGu(A7N4!d0DNt{F<x_+7vX)nKG+>&9m3 LeUIN Iy E"nsk/<W>PhrVvT]cQmuR$bjD !_@xEl%WK-_7MCwbz/|gcAB` zh~?SC^*tf=\h!H'P#RiF&;$H1~.2 RsJo}.} .~ (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd AccountAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add accountAdd 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 languagesAlt+Always 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 errorCrowdin is an online localization management platform and collaborative translation tool.Ctrl+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 againDownDownloading 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:EnterEnter 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 loading translation file “%s”.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export errorExport 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…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)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport from TMX…Import translation files…Importing translation memory from “%s” 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 CrowdinLeftLine %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 translations were found in the TMX file.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKObsolete stringsOneOnly 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 translation templateOpen...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 translationsQuitQuit %sReading file content failed with the following error: %sRecentRecent 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 FinderReviewRightSaveSave &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 languageServicesSet LanguageSet languageSettingsSettings…Shift+Show AllShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow summary after updating filesShow 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.These strings are no longer in the source code. Poedit will remove them from the file now.These strings were found in the sources but were not in the file. Poedit will add them to the file now.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 entries in the file are probably incorrect.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 errorUntransUpUpdateUpdate 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 the file failed. Click on 'Details >>' for details.Updating 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown 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: 2024-08-30 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 FehlerEs 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&Ü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(0 neu, 0 veraltet)(Mehr über GNU gettext erfahren)(Neu: %i, veraltet: %i)(Standardsprache verwenden)(nicht angemeldet)(benötigt Windows 8 oder neuer)< &ZurückÜber %sKontoKontenHinzufügenKonto hinzufügenKommentar hinzufügenDateien hinzufügen …Ordner hinzufügen …Projekt hinzufügenPlatzhalter hinzufügen …Konto hinzufügenKommentar 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 verwendenAlt+Den Fokus immer auf das Eingabefeld setzenEin Eintrag in der Eingabedatei-Liste:Ein Eintrag in der Schlüsselwortliste:ErscheinungsbildAnwendenSind 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.Strg+&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.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.Sollen alle nicht mit dem Quelltext identischen Übersetzungen entfernt werden?Sollen alle nicht mehr verwendeten Übersetzungen entfernt werden?&Nicht speichernNicht speichernNicht erneut anzeigenGenaue Treffer nicht mit »Benötigt Überarbeitung« markierenNicht erneut anzeigenRunterNeueste Übersetzungen werden heruntergeladen …Herunterladen von Übersetzungen ist in diesem Projekt deaktiviert.Ordner oder Dateien hierherziehenOrdner oder Dateien hierherziehen&BeendenE&xportieren als HTML …Bearbeiten&Kommentar bearbeiten&Kommentar bearbeitenKommentar bearbeitenKommentar bearbeitenProjekt bearbeitenProjekt bearbeitenBearbeitenBearbeiten …E-Mail:EingabeVollbildEinträ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 Laden der Übersetzungsdatei »%s«.Fehler beim Öffnen der DateiFehler beim Speichern der DateiFehler beim Laden der XLIFF-Datei: %sFehlerAllesAusgeschlossene PfadeNach TMX exportieren …Exportieren als …ExportfehlerE&xportieren als HTML …Nach TMX exportieren …Exportieren 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 Zeichenketten werden extrahiert …Extraktor-EinrichtungExtraktorenFehlgeschlagener Befehl: %sKommunikation mit Poedit-Prozess fehlgeschlagen.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.Wird abgeschlossen …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)Häufig verwendetGNU gettextAllgemeinHTML-DateienHilfe%s ausblendenAndere ausblendenSeitenleiste 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 …ImportfehlerAus TMX importieren …Übersetzungsdateien importieren …Importieren des Übersetzungsspeichers aus »%s« ist fehlgeschlagen.Übersetzungen werden importiert …In: %sBeta-Versionen einbeziehenInkonsistente Groß-/KleinschreibungInkonsistenter LeerraumInformationen zum ÜbersetzerInstallierenUngültige DateiAufruf:JSON-Ü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 CrowdinLinksZeile %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 …Neu aus &POT-/PO-Datei …Neue ZeichenkettenNä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.In der TMX-Datei wurden keine Übersetzungen gefunden.Keine NutzungsinformationenEs sind nicht alle Pluralformen übersetzt.Nicht autorisiert, bitte melden Sie sich erneut an.Anmerkungen für ÜbersetzerOKVeraltete ZeichenkettenSingularNur 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 öffnenÜbersetzungsvorlage ö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 entfernenBeenden%s beendenDer Inhalt der Datei konnte mit folgendem Fehler nicht gelesen werden: %sZuletzt verwendetZuletzt verwendete DateienWiederherstellenAktualisierenDatei neu ladenDatei neu ladenVerbleibend: %dEntfernenÜbersetzungen mit gleicher Quelle entfernenÜbersetzungen mit gleicher Quelle entfernenErsetzen&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üfenRechtsSpeichernSpeichern &unter …Speichern &unter …Trotzdem speichernTrotzdem speichernSpeichern unterSpeichern unter …Änderungen speichernDatei speichernBildschirmfotos:&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 ausDiensteSprache festlegenSprache festlegenEinstellungenEinstellungen …Umschalt+Alle anzeigenSeitenleiste anzeigenRechtschreibung und Grammatik anzeigenStatusleiste anzeigenString &ID anzeigenErsetzungen anzeigenWerkzeugleiste anzeigenWarnungen anzeigenIm Explorer anzeigenIm Ordner anzeigenSeitenleiste anzeigen oder verbergenSeitenleiste anzeigenStatusleiste anzeigenString &ID anzeigenZusammenfassung nach dem Aktualisieren der Dateien 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 ZeichenketteErsetzungenVorschlä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« 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 Zeichenketten befinden sich nicht mehr im Quellcode. Poedit wird sie jetzt aus der Datei entfernen.Diese Zeichenketten wurden in den Quellen gefunden, aber nicht in der Datei. Poedit wird sie jetzt zur Datei hinzufügen.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.GesamtTransformationenÜbersetzbare Einträge werden nicht manuell in das Gettext-System hinzugefügt, sondern automatisch aus dem Quellcode extrahiert. So bleibt immer alles aktuell und genau. Übersetzer verwenden üblicherweise PO-Vorlagen (POTs), welche von Programmierern vorbereitet werden.Cloud-Projekt übersetzenÜbersetzt: %d von %d (%d %%)ÜbersetzungÜbersetzungsspracheÜbersetzungsspeicherÜbersetzung benötigt &ÜberarbeitungÜbersetzungseigenschaftenIn der Datei befinden sich wahrscheinlich fehlerhafte Übersetzungseinträge.Ü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ängigEin unerwarteter Fehler ist aufgetreten: %sUnix (empfohlen)Unbekannter Crowdin-Fehler.Unbekannter FehlerNicht übersetztHochAktualisierenAlle 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 fehlgeschlagenAktualisierung der Datei fehlgeschlagen. Klicken Sie auf »Details >>« für weitere Informationen.Ü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 %sAuf Authentifizierung warten …Willkommen bei PoeditBeim Aktualisieren von QuelldatenNur ganze WörterFensterWindowsMöchten Sie Englisch für den Quelltext verwenden?Am Ende von vorne beginnenUmbrechen bei:XLIFF-ÜbersetzungsdateienJaSie 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ößernaltBenötigt ÜberarbeitungstrgTemporäre Dateien nicht entfernen (für Fehlersuche)z. B. nplurals=2; plural=(n != 1);unklare Übereinstimmung innerhalb der Dateizum Element in der angegebenen Zeilennummer springenpoedit://-Adresse verwendenVorübersetzung aus dem Übersetzungsspeicherumschaltunbekannte Sprachenicht unterstützte Version (%s)du@example.com»%s« ist keine gültige POT-Datei.poedit-3.5/locales/id.mo0000644000175100001770000016111614664354153012165 00000000000000+x9 y9 9&99<9:J:gf: :: :: :; ;;;";);/;7;F;U;[;a;j;~;;;;;;;;;;;; < <<$<-< 4<A<Q<g<}<<<<<<<<<< = $= 2=?=E=a=}========>3>J>Z> x> >>>>> > > >> >> > ?? .?;? J?V?f?z?????? @ @1*@\@'a@@@ @@7@6 A@A)`AA A]AA< BDHB$BB BBGC NC"\CC+C)C CC DD0DCDLD_D{DD#DDDD DE E"E4E:EKE%\EE EEEEE EF/!F QFk^FFFFF G!G-@G1nGG GG)GH %HY3HHHHHHHHHHI%IDISIfI;yI I'I^ILIJ?J J JJ*K/KBK"GK5jKKKKKK K L L L *L7LHLPLXL_LeLfwLLLuM(MMM"MM N NN +N 8NENWN0hNNN#N<N")OLO \OgO*zO0O!O'O P%P;P(ZPTP PP P PQQ(Q=Q RQ \Q jQ wQQQQQQQ QQ QQR R R#R3RRRlRoRSzST #T/TBT ^TkT~T2TTTTU"U :U[U cU pU|UUU;U(UV0VCV RV \VjVV VVVV:V W<&W cWpW.W,XJ_r72ـ" /G^~vqgz ATksv }"$Ѓ#4L[c<sƄ$(BXn#V& 9Dbt. ކ H5Xm7 43>arԈوވ. 3TpÉԉ!ċԋ %*4P  ȌЌ ׌ #,4=Qem ͍(1: BN]t ֎ ގ  &AT g s"}"Ïޏ)04*Fq + א -> O] p| ̑ڑ&(#O&s>В&#;_ 08ē#/!Q XTd?͔J 'X 06%E k</ɖ &6 ES l" #8G\br'&Ș  ,:6X o *A[r-) &&Mi\{؛ޛ-6SYv  ĜAќ (oGOC K Yg;}Ϟ՞4 & Ghpş֟ b.̠-T$  /@R+c&5.H ]i)|6)ݣ(07Q+hY !3G^tĥԥ  ' ,8@Oe|#$ަBרߨ &6H,c&ũ )0 AK bn, Ҫ "< Y!f%4;3G1#72K~  ŭ,Э# C P]9 Ub{+aޯ@*Y;5'$=b >]u*Ͳ 5MU]bjֳgnB ϴ%ݴl<ŵBݵ .5HN7q&и 'DXvjt ߺ (D\t ̻ٻ# *-4 bp ż˼ Ѽ ޼*17Oؽ ) 5APb s "ξ޾) 9S [ g s ~ؿ.C\%s0 +18 >J]n -Mf>Z v  F3 IVf|2 5 cn$ "0" %I0"zvI< ;4P&gwT4"Q,tep-x?9G 'h%E&,>,k3? &T5V>\)jG_9s 4|a]B HUu! 8,M%z|mbcgz$##("Kk D Q#h" %"Eqh .Gfy> ]E]p3 H<Rk 3 Mn0!,NFFp@Kit$0L S7"9' V} Rn&TNZ6#Ws_Gm%Z`lwA8Db ?G.aPX+.=1&H.@Q0hB1a<_r-!">i2)b6 Zy9_:j ECkG CDrlyV  +E gtV~f|I5d5\QM,v|-M{4(qy:sex HK N4JY=n,{f6itjav25e#/(p40^3JBL:9F*vxr|;b\&[= PsAn gw<HL%,3$uWX78uh1c/ckqY3UzB%U~S}"o?>WY`#8KDf/@Uzx;^gQc{dqO]}T[\~)X!>2d+APCu*j(So<O-R;Ekwo '*I$M)]Iph^z' Rl?T[O]em!7J m`  (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd AccountAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add accountAdd 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 languagesAlt+Always 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 errorCrowdin is an online localization management platform and collaborative translation tool.Ctrl+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 againDownDownloading 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:EnterEnter 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 loading translation file “%s”.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export errorExport 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…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)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport from TMX…Import translation files…Importing translation memory from “%s” 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 CrowdinLeftLine %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 translations were found in the TMX file.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKObsolete stringsOneOnly 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 translation templateOpen...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 translationsQuitQuit %sReading file content failed with the following error: %sRecentRecent 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 FinderReviewRightSaveSave &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 languageServicesSet LanguageSet languageSettingsSettings…Shift+Show AllShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow summary after updating filesShow 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.These strings are no longer in the source code. Poedit will remove them from the file now.These strings were found in the sources but were not in the file. Poedit will add them to the file now.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 entries in the file are probably incorrect.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.UntransUpUpdateUpdate 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 the file failed. Click on 'Details >>' for details.Updating 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown 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: 2024-08-30 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 masalah pada terjemahan ditemukan.%i baris dari berkas "%s" tidak dimuat dengan benar.Format %sPreferensi %sFormat %sIhw&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(0 baru, 0 usang)(Belajar lebih banyak tentang gettext GNU)(Baru: %i, usang: %i)(Pakai bahasa bawaan)(tidak masuk)(memerlukan Windows 8 atau yang lebih baru)< Se&belumnyaTentang %sAkunAkunTambahTambahkan AkunTambah KomentarTambah Berkas…Tambah Folder…Tambah ProyekTambah Wildcard…Tambah akunTambah 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 didukungAlt+Selalu ubah fokus ke ruas masukan teksSatu 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 terjemahanTutupKemunculan 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 dukungan platform translasi daring untuk memudahkan memanajeme nsinkronisasi translasi.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.Tak bisa menyimpan berkas %s.Buat baruBuat terjemahan baruBuat terjemahan baru dari templat POT.Buat projek terjemahan baruKesalahan CrowdinCrowdin adalah sebuah platform manajemen pelokalan daring dan alat penerjemahan kolaboratif.Ctrl+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 lagiTurunUnduh 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:EnterMasuk 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 memuat berkas terjemahan "%s".Kesalahan saat membuka berkasKesalahan saat menyimpan berkasMasalah saat memuat berkas XLIFF: %sGalatSegalanyaPath yang dikecualikanEkspor Ke TMX…Ekspor sebagai…Kesalahan eksporEkspor ke HTML…Ekspor ke TMX…Mengekspor memori terjemahan ke "%s" gagal.Mengekspor terjemahan…Ekstrak dari sumberEkstrak catatan untuk penerjemah dari:Ekstrak teks dari berkas sumber di direktori berikut:Mengekstrak string yang dapat diterjemahkan…Penyiapan ekstraktorPengekstrakPerintah gagal: %sGagal 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.Finalisasi…CariCari BerikutnyaCari SebelumnyaCari dan Ganti…Cari dalam komentarCari dalam teks sumberCari dalam terjemahanCari berikutnyaCari sebelumnyaPerbaiki BahasaPerbaiki bahasaPerbaiki HeaderPerbaiki headerBerkas Translasi FlutterFormulir %iBentuk %i (tidak terpakai)SeringGNU gettextUmumBerkas HTMLBantuanSembunyikan %sSembunyikan Yang LainSembunyikan 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…Kesalahan imporImpor dari TMX…Impor berkas terjemahan…Mengimpor memori terjemahan dari "%s" gagal.Mengimpor terjemahan…Pada: %sTermasuk versi betaHuruf besar/kecil yang tidak konsistenWhitespace yang tidak konsistenInformasi tentang penerjemahInstalBerkas tak validInvokasi:Berkas 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 jamakBelajar lagiPelajari lebih lanjut mengenai %sPelajari lebih lanjut tentang CrowdinKiriBaris %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 tuntasJangan 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 terjemahan yang ditemukan dalam berkas TMX.Tidak ada informasi penggunaanTidak semua bentuk jamak diterjemahkan.Tidak berwenang, silakan masuk lagi.Catatan bagi para penerjemahOKKalimat usangSatuHanya 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 templat terjemahanBuka...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 dihapusKeluarKeluar %sGagal membaca isi berkas dengan kesalahan: %sBaru-baru IniBerkas baru-baru iniJadi LagiSegarkanMuat Ulang BerkasMuat ulang berkasSisa: %dHapusGantiGanti 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 FinderTinjauKananSimpanSimp&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 disukaiLayananAtur bahasaAtur bahasaPengaturanPengaturan…Shift+Tampilkan SemuaTampilkan 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 ringkasan setelah memutakhirkan berkasTampilkan 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 dicariSubstitusiSaranSaran 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. Akibatnya sebagian data mungkin hilang atau rusak.Pengaturan ini mempengaruhi pemformatan internal berkas PO. Sesuaikan mereka jika Anda memiliki persyaratan tertentu misalnya karena kontrol versi.String ini tidak ada lagi di kode sumber. Sekarang Poedit akan menghapus mereka dari berkas.String ini ditemukan dalam sumber tapi tidak di berkas. Sekarang Poedit akan menambahkan mereka ke berkas.Berkas JSON ini bukan berkas translasi dan tidak bisa diedit di Poedit.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 (POT) yang disiapkan untuk mereka oleh pengembang.Terjemahkan proyek cloudDiterjemahkan: %d dari %d (%d %%)TerjemahanBahasa TerjemahanIngatan TerjemahanTerjemahan Perlu Tindak &LanjutProperti TerjemahanEntri-entri terjemahan dalam berkas mungkin tidak benar.Basis 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.BelumNaikPerbaruiPerbarui 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 MemperbaruiMemutakhirkan berkas gagal. Klik pada 'Rincian >>' untuk rinciannya.Memperbarui terjemahanMemutakhirkan informasi pengguna…Mengunggah terjemahan ke %s gagal.Mengunggah terjemahan ke %s…Mengunggah terjemahan…Gunakan ekspresi pilihan sendiriGunakan fonta daftar ubahan:Gunakan fonta ruas teks ubahan: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 %sMenunggu otentikasi…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.NolZumaltBelum Tuntasctrljangan hapus berkas sementara (untuk pengawakutuan)mis. nplurals=2; plural=(n > 1);fuzzy cocok dengan filepergi ke butir pada nomor baris yang didiberikanmenangani URI poedit://pra-menerjemahkan dari TMshiftbahasa tak dikenalversi tidak didukung (%s)anda@contoh.com"%s" bukan berkas POT yang valid.poedit-3.5/locales/co.mo0000644000175100001770000017247214664354153012201 00000000000000|+: : :&:?:<S::J:g: V;`; o;y; ;;;;;;;;;;;;;;<<<0<B<H<M<U<]<o<<< < <<<< <<<<==0=L=R=X=a=g=p== = = ====>>7>N>e>k>p>>>>>> ? ???'?0? 4? @? L?Y? h?t? ? ?? ?? ???@@&@F@c@@ @ @1@@'@A.A HASA7YA6AA)AB B]"BB<BDB$C:C ACNCC C"CD+"D)ND xDDDDDDDDEE#4EXEmE|E EE EEEEEE%EF +FLFTF]FuF FF/F FkFXG]GpGGGG-G1G.H GHRH)iHH HYHI!I&I9ILIaIeI|IIIIIII;J CJ'PJ^xJLJ?$K dK rKK*KKK"K5K.LILdLjL}L L L L L LLLLLLLfMlMMuM(N?NRN"dNN NNN N NNN0N'OAO#VO<zO"OO OO*P03P!dP'PPPP(PTQ fQtQ yQ QQQQQ Q Q Q RR!R0RJRRRcR lRxR RRR R RRRRRRSz/TT TTT TT U2(U[UuU|UUU UU U U V!V&V;^D^Y^n^^^._4_J_=P__1__n_E[```;` ` aa@,amacb,#c,Pc}c cc2c*c ddwdj$e eeee%ee ff3fEfWf qffffffff8f g gg$g ,g 8g DgRg"Yg"|gg g gg g(ghhz'hhhhh h h h hh h i i i ,i 8iCi^ioi"iiii i ij jj$j -j:jTjdjtj j jjjj jjj!k *k8k@kHkQk Ykgkkkkkk k k kk ll.lBlRlgl|lmm 4m@mOmbm smm mmKmmn n%n:nMncn1nn n nn=ioo'p,p(>pgp op}p+pp p8p" q/q@qrCr8brrs8*t1ctRtctQLuu'u:ulvPv-vCwALwKw0w. x:x!x)x-y+Cy8oyCyuy,bzLz;z]{v{Z{gW|J|c }[n}o}:~7~m_[HN^Xp ف72("[~~łqDɃRVj o ȄЄӄ ڄ"$-F_p<Ѕ #$@eˆ#V cz ч. ;GPhHl5m7Y 3aω16;?\.a ͊ 1J!Z| %3-IwCэE- Ž ӎ ގ   !,4 <F\ r } ˏЏ  6LSXgv Őݐ!!06 = IV!n!ȑ ޑ!!!7!Y{ &̒/#@ d r ӓ#@T!k#֔#9$A!f$ Εߕ@/242g-ȖЖ5ٖ2$B=gh)J?Q'ܘ  Ù Ι.ۙ+ 16.hǚ##:(U,~!ɛ "+<Qbw~+%ٜ## ,7 Tu"M Ǟ۞&< <],ǟ֟-'GtZϠՠޠ$;3Cw$!$ǡN, {*uL)@vΣ;2D0JB{## $.DZo ͥBB&-3ڧ,CXtI ! -/;]& .:4&o3 ʪ!Ԫ(Azaܫ,A]uѬ  ( 2>GV \gy&2ҭy.+6b$$߰P Uv "ñ(  +5 S]=w1.7.L%{̳L>EO9F1$ص  <&Fmu ζ ܷ)5x_ظ'=1Z-%ٹ /3!" D+Q}!ϻ  (08>Ul=#FjSrƽ@ٽ$?f¾)1WN#R5;8+1d +-)P 0D]v    (INJV  + +8 do 4   !8Oi''2=%p%   3Tn# .Hb6{ #:#R v  )#!)?#i-.o%#+#?c w^!9R r9 H z%(B[ _;m0RF<+EwATdTe'-GGuka)0UMM`3+&-749;nDv3f\M`E[>zf|geA8vI  .:PgHC//_~b)"7F JT-d0!!0 EfY76V*!#00/,`x' .: Ua)? "/FeFiFrAj H  6#$6C z645nCv#=ld B@Twa QjqO 91B)aT'ZSFQYu>"/VJZsG6*[ar`^;XyVb?' <IL:x%AMZ\W88O,*d0)i{J-yK|]:c%}oo0][-Pg6YS&r(\p@X(tM?iE=eD"OU|53 w  fj,#32H 4[ pk {qke;mpgl16U85:`, +Y^L9$qz2fGu(A7N4!d0DNt{F<x_+7vX)nKG+>&9m3 LeUIN Iy E"nsk/<W>PhrVvT]cQmuR$bjD !_@xEl%WK-_7MCwbz/|gcAB` zh~?SC^*tf=\h!H'P#RiF&;$H1~.2 RsJo}.} .~ (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd AccountAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add accountAdd 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 languagesAlt+Always 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 errorCrowdin is an online localization management platform and collaborative translation tool.Ctrl+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 againDownDownloading 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:EnterEnter 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 loading translation file “%s”.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export errorExport 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…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)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport from TMX…Import translation files…Importing translation memory from “%s” 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 CrowdinLeftLine %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 translations were found in the TMX file.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKObsolete stringsOneOnly 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 translation templateOpen...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 translationsQuitQuit %sReading file content failed with the following error: %sRecentRecent 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 FinderReviewRightSaveSave &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 languageServicesSet LanguageSet languageSettingsSettings…Shift+Show AllShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow summary after updating filesShow 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.These strings are no longer in the source code. Poedit will remove them from the file now.These strings were found in the sources but were not in the file. Poedit will add them to the file now.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 entries in the file are probably incorrect.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 errorUntransUpUpdateUpdate 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 the file failed. Click on 'Details >>' for details.Updating 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown 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: 2024-08-30 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 penseru trovu in a traduzzione.%d penseri 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&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ì(0 nova, 0 anziana)(Sapene di più nant’à GNU gettext)(Nove : %i, anziane : %i)(Impiegà a lingua predefinita)(micca cunnessu)(richiede Windows 8 o più recente)< &PrecedenteApprupositu di %sContuContiAghjunghjeAghjunghje un contuAghjunghje un CummentuAghjunghje schedarii…Aghjunghje cartulari…Aghjunghje un prughjettuAghjunghje un caratteru genericu…Aghjunghje un contuAghjunghje 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 accettateAlt+Dà a primura à u testu piuttostu chì à a listaUn elementu in a lista di schedarii d’entrata :Un elementu in a lista di e parolle chjave :AspettuAppiecàDa 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 in linea di ghjestione di lucalizazione è un attrezzu di traduzzione in collaborazione.Ctrl+&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.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ùGhjò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 :EntréeModu 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 à u caricamentu di u schedariu di traduzzione « %s ».Sbagliu à l’apertura di u schedariuSbagliu à l’arregistramentu di u schedariuSbagliu à u caricamentu di u schedariu XLIFF : %sSbagliiTuttuChjassi esclusiEspurtà ver di TMX…Espurtà cum’è…Sbagliu à l’espurtazioneEspurtà versu HTML…Espurtà ver di TMX…Fiascu à 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…Installazione di l’estrattoreEstrattoriFiascu di a cumanda : %sFiascu di cumunicazione cù u prucessu Poedit.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.Cumpiimentu…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)FrequenteGNU gettextGeneraleSchedarii HTMLAiutuPiattà %sPiattà l’altriPiattà 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…Sbagliu à l’impurtazioneImpurtà à partesi di TMX…Impurtà schedarii di traduzzione…Fiascu à l’impurtazione di a memoria di traduzzione à partesi di « %s ».Impurtazione di i traduzzioni…In : %sInchjude e versioni « beta »Maiuscule/minuscule cuntradittorieSpaziu biancu cuntradittoriuInfurmazione apprupositu di u traduttoreInstallàSchedariu inaccettevuleChjama :Schedarii 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'à CrowdinMancaA 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…Novu da un schedariu P&OT/PO…Frase noveForma 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.Ùn ci hè alcuna traduzzione in u schedariu TMX.Nisuna infurmazione d’adopruTutte e forme plurale ùn sò micca tradutte.Micca auturizatu, autenticassi torna.Annutazioni per i traduttoriVaiCatene anzianeUnuAttivà 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 mudellu di traduzzioneApre…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 cacciateEsceEsce %sA lettura di u cuntenutu di u schedariu hà fiascata cù stu sbagliu : %sRecenteSchedarii recenteRifàAttualizàRicaricà u schedariuRicaricà u schedariuRestu : %dCacciàCaccià e traduzzioni uguale à l’origineCaccià e traduzzioni uguale à l’origineRimpiazzà&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àDirittaArregistràArregistrà &cù u nome…Arregistrà &cù u nome…Arregistrà quantunqueArregistrà quantunqueArregistrà cù u nomeArregistrà cù u nome…Arregistrà i cambiamentiArregistrà u schedariuCatture 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 preferitaServiziiDefinisce a LinguaDefinisce a linguaParametriParametri…Maiusc+Tuttu affissà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à u riassuntu dopu a mudificazione di schedariiAffissà 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à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 penseru, 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 ».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 penseru 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.Ste catene ùn sò più in u testu d’origine. Poedit hà da togliele da u schedariu avà.Ste catene sò state trove in i testi d’origine ma micca in u schedariu. Poedit hà da aghjunghjele à u schedariu avà.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 prugrammatore.Traduce u prughjettu di u nivuluTraduttu : %d frà %d (%d %%)TraduzzioneLingua di TraduzzioneMemoria di TraduzzioneTraduzzione « À ri&vede »Pruprietà di a traduzzioneForse ci hè elementi di traduzzione in u schedariu chì sò incurretti.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àUn anumalia imprevista hè accaduta : %sUnix (ricumandatu)Sbagliu Crowdin scunnisciutu.Sbagliu scunnisciutuMicca traduttuSùMudificàTuttu 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 mudificazioneFiascu di a mudificazione di u schedariu. Sceglie « Detaglii >> » per sapene di più.Mudificazione 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 %sIn attesa d'autenticazione…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 XLIFFSì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.ZeruIngrandamentualtÀ rivedectrlùn squassà micca i schedarii timpurari (per spannà)i.e. : nplurals=2; plural=(n > 1);currispundenze simile in u schedariuandà à l’elementu à u numeru di linea specificatumanighjà un indirizzu poedit://pretraduce grazia à a MdTmaiusclingua scunnisciutaversione (%s) micca accettatavoi@esempiu.corsica« %s » ùn hè micca un schedariu POT accettevule.poedit-3.5/locales/el.po0000644000175100001770000024637014664354153012202 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "Απόκρυψη αυτού του μηνύματος ειδοποίησης" msgid "Don’t Show Again" msgstr "Να μην εμφανιστεί ξανά" msgid "Don’t show again" msgstr "Να μην εμφανιστεί ξανά" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(Νέα: %i, παρωχημένα: %i)" msgid "Collecting source files…" msgstr "Συλλογή αρχείων προέλευσης…" msgid "Extracting translatable strings…" msgstr "Εξαγωγή μεταφράσιμων συμβολοσειρών…" msgid "Failed to load file with extracted translations." msgstr "Αποτυχία φόρτωσης αρχείου με εξαχθείσες μεταφράσεις." msgid "Merging differences…" msgstr "Συγχώνευση διαφορών…" msgid "Updating translations" msgstr "Ενημέρωση μεταφράσεων" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "Το αρχείο \"%s\" δεν μπόρεσε να ανοίξει." msgid "Invalid file" msgstr "Μη έγκυρο αρχείο" #, c-format msgid "Malformed header: “%s”" msgstr "Παραμορφωμένη κεφαλίδα: «%s»" msgid "PO Translation Files" msgstr "Αρχεία μετάφρασης PO" msgid "POT Translation Templates" msgstr "Πρότυπα μετάφρασης POT" msgid "XLIFF Translation Files" msgstr "Αρχεία μετάφρασης XLIFF" msgid "JSON Translation Files" msgstr "Αρχεία μετάφρασης JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "Αρχεία Μετάφρασης Flutter" msgid "All Translation Files" msgstr "Όλα τα αρχεία μετάφρασης" msgid "The file is in a format not recognized by Poedit." msgstr "Το αρχείο είναι σε μορφή που δεν αναγνωρίζεται από το Poedit." msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" "Αυτό το αρχείο JSON δεν είναι αρχείο μεταφράσεων και δεν μπορεί να " "επεξεργαστεί στο Poedit." #, c-format msgid "Reading file content failed with the following error: %s" msgstr "Η ανάγνωση περιεχομένου αρχείου απέτυχε με το ακόλουθο σφάλμα: %s" #, c-format msgid "" "File “%s” is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "Αρχείο %s είναι μόνο για ανάγνωση και δεν μπορεί να αποθηκευτεί.\n" " Παρακαλώ αποθηκεύστε το με διαφορετικό όνομα." #, c-format msgid "Couldn’t save file %s." msgstr "Δεν ήταν δυνατή η αποθήκευση του αρχείου %s." msgid "Screenshots:" msgstr "Στιγμιότυπα οθόνης:" #, c-format msgid "%i line of file “%s” was not loaded correctly." msgid_plural "%i lines of file “%s” were not loaded correctly." msgstr[0] "%i γραμμή του αρχείου “%s” δεν φορτώθηκε σωστά." msgstr[1] "%i γραμμές του αρχείου “%s” δεν φορτώθηκαν σωστά." #, c-format msgid "Line %d of file “%s” is corrupted (not valid %s data)." msgstr "" "Η γραμμή %d του αρχείου “%s” είναι κατεστραμμένη (μη έγκυρα δεδομένα %s)." msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" "Κατεστραμμένο αρχείο PO: η μορφή ενικού msgstr χρησιμοποιείται μαζί με το " "msgid_plural" msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" "Κατεστραμμένο αρχείο PO: το msgstr μορφής πληθυντικού χρησιμοποιείται χωρίς " "msgid_plural" msgid "Couldn’t load the file, it is probably damaged." msgstr "Δεν ήταν δυνατή η φόρτωση του αρχείου, πιθανώς είναι κατεστραμμένο." msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "Παρουσιάστηκαν σφάλματα κατά τη φόρτωση του αρχείου. Ως αποτέλεσμα, ορισμένα " "δεδομένα ενδέχεται να λείπουν ή να είναι κατεστραμμένα." msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "Παρουσιάστηκε πρόβλημα με τη σωστή μορφοποίηση του αρχείου (αλλά " "αποθηκεύτηκε σωστά)." #, 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 και η ρύθμιση τροποποιήθηκε αναλόγως." msgid "Error saving file" msgstr "Σφάλμα αποθήκευσης αρχείου" #, c-format msgid "“%s” is not a valid POT file." msgstr "Το “%s” δεν είναι έγκυρο αρχείο POT." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Σφάλμα κατά τη φόρτωση του αρχείου XLIFF: %s" #, c-format msgid "unsupported version (%s)" msgstr "μη υποστηριζόμενη έκδοση (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML msgid "Broken markup in translation string." msgstr "Κατεστραμμένη σήμανση στη συμβολοσειρά μετάφρασης." msgid "(Use default language)" msgstr "(Χρήση προεπιλεγμένης γλώσσας)" msgid "Language selection" msgstr "Επιλογή γλώσσας" msgid "Select your preferred language" msgstr "Επιλέξτε την προτιμώμενη γλώσσα σας" msgid "You must restart Poedit for this change to take effect." msgstr "" "Πρέπει να γίνει επανεκκίνηση του Poedit, ώστε αυτή η αλλαγή να έχει επίδραση." msgid "Add Account" msgstr "Προσθήκη λογαριασμού" msgid "Add account" msgstr "Προσθήκη λογαριασμού" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "Μάθετε περισσότερα για το %s" msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" msgid "How does cloud sync work?" msgstr "Πώς λειτουργεί ο συγχρονισμός στο Cloud;" msgid "Account" msgstr "Λογαριασμός" msgid "(not signed in)" msgstr "(Δεν έχετε συνδεθεί)" msgid "File" msgstr "Αρχείο" msgid "Open cloud translation" msgstr "Άνοιγμα Cloud μετάφρασης" msgid "Manage accounts" msgstr "Διαχείριση λογαριασμών" msgid "Project:" msgstr "Έργο:" msgid "Language:" msgstr "Γλώσσα:" msgid "Sign in to Cloud Account" msgstr "Συνδεθείτε στον λογαριασμό Cloud" msgid "Sign in to cloud account" msgstr "Συνδεθείτε στο λογαριασμό cloud" msgid "No translation projects listed in your account." msgstr "Δεν υπάρχουν μεταφραστικά έργα στο λογαριασμό σας." msgid "Downloading latest translations…" msgstr "Λήψη τελευταίων μεταφράσεων…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #, c-format msgid "Sign in to %s" msgstr "Συνδεθείτε στο %s" msgid "Syncing" msgstr "Συγχρονισμός" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s…" msgstr "Μεταφόρτωση μεταφράσεων στο %s…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s failed." msgstr "Η μεταφόρτωση μεταφράσεων στο %s απέτυχε." msgid "Syncing error" msgstr "Σφάλμα συγχρονισμού" msgid "Add" msgstr "Προσθήκη" msgid "Unknown Crowdin error." msgstr "Άγνωστο σφάλμα Crowdin." msgid "Not authorized, please sign in again." msgstr "Δεν επιτρέπεται, Παρακαλούμε συνδεθείτε ξανά." msgid "Downloading translations is disabled in this project." msgstr "Η λήψη μεταφράσεων είναι απενεργοποιημένη για αυτό το έργο." msgid "Sign In" msgstr "Σύνδεση" msgid "Sign in" msgstr "Σύνδεση" msgid "Sign Out" msgstr "Αποσύνδεση" msgid "Sign out" msgstr "Αποσύνδεση" msgid "Learn more about Crowdin" msgstr "Μάθετε περισσότερα σχετικά με το Crowdin" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" msgid "Waiting for authentication…" msgstr "Αναμονή για έλεγχο ταυτότητας…" msgid "Updating user information…" msgstr "Ενημέρωση των πληροφοριών χρήστη…" msgid "Sign in to Crowdin" msgstr "Σύνδεση στο Crowdin" msgid "Syncing with Crowdin failed." msgstr "Ο συγχρονισμός με το Crowdin απέτυχε." msgid "Crowdin error" msgstr "Σφάλμα Crodwin" msgid "Uploading translations…" msgstr "Μεταφόρτωση μεταφράσεων…" msgid "&Copy" msgstr "&Αντιγραφή" msgid "Learn more" msgstr "Μάθετε περισσότερα" msgid "&Help" msgstr "&Βοήθεια" msgid "MO files can’t be directly edited in Poedit." msgstr "Τα αρχεία MO δεν μπορούν να επεξεργαστούν απευθείας στο Poedit." msgid "Error opening file" msgstr "Σφάλμα ανοίγματος αρχείου" msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "Παρακαλώ ανοίξτε και επεξεργαστείτε το αντίστοιχο αρχείο PO. Όταν το " "αποθηκεύσετε, θα ενημερωθεί και το αρχείο MO." msgid "don’t delete temporary files (for debugging)" msgstr "μη διαγράψεις προσωρινά αρχεία (γι' αποσφαλμάτωση)" msgid "handle a poedit:// URI" msgstr "χειρίσου ένα poedit:// URI" msgid "go to item at given line number" msgstr "μετάβαση στο στοιχείο, στο δεδομένο αριθμό γραμμής" msgid "Failed to communicate with Poedit process." msgstr "Αδυναμία επικοινωνίας με τη διεργασία Poedit." #, c-format msgid "Unhandled exception occurred: %s" msgstr "Παρουσιάστηκε ανεπίλυτη εξαίρεση: %s" msgid "Select translation template" msgstr "Επιλογή προτύπου μετάφρασης" msgid "Select translation file" msgstr "Επιλογή αρχείου μετάφρασης" msgid "Poedit is an easy to use translation editor." msgstr "Το Poedit είναι ένας εύκολος στη χρήση επεξεργαστής μεταφράσεων." msgid "You can’t drop more than one file on Poedit window." msgstr "Δεν μπορείτε να σύρετε παραπάνω από ένα αρχείο στο παράθυρο Poedit." #, c-format msgid "File “%s” is not a translation file." msgstr "Το αρχείο “%s” δεν είναι αρχείο μετάφρασης." #, c-format msgid "File “%s” doesn’t exist." msgstr "Το αρχείο “%s” δεν υπάρχει." 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". #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "" "Ο ορθογραφικός έλεγχος είναι απενεργοποιημένος, επειδή το λεξικό για %s δεν " "είναι εγκατεστημένο." msgid "Install" msgstr "Εγκατάσταση" #, c-format msgid "The file “%s” has been changed by another application." msgstr "Το αρχείο “%s” έχει τροποποιηθεί από μια άλλη εφαρμογή." msgid "Reload file" msgstr "Επαναφόρτωση αρχείου" msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "Θέλετε να φορτώσετε εκ νέου το αρχείο από τον δίσκο; Αν το κάνετε, θα χαθούν " "οι μη αποθηκευμένες αλλαγές σας στο Poedit." msgid "Ignore" msgstr "Παράβλεψη" msgid "Reload File" msgstr "Επαναφόρτωση αρχείου" msgid "The file has been modified. Do you want to save changes?" msgstr "Το αρχείο έχει τροποποιηθεί. Θέλετε να αποθηκεύσετε τις αλλαγές;" msgid "Save changes" msgstr "Αποθήκευση αλλαγών" msgid "Your changes will be lost if you don’t save them." msgstr "Οι αλλαγές σας θα χαθούν εάν δεν τις αποθηκεύσετε." msgid "Save" msgstr "Αποθήκευση" msgid "Do&n’t save" msgstr "&Χωρίς αποθήκευση" msgid "Don’t Save" msgstr "Χωρίς αποθήκευση" msgid "The changes made by the other application will be lost if you save." msgstr "" "Οι αλλαγές που έγιναν από την άλλη εφαρμογή θα χαθούν αν κάνετε αποθήκευση." msgid "Cancel" msgstr "Ακύρωση" msgid "Save Anyway" msgstr "Αποθήκευση οπωσδήποτε" msgid "Save anyway" msgstr "Αποθήκευση οπωσδήποτε" msgid "Save as…" msgstr "Αποθήκευση ως…" msgid "Compile to…" msgstr "Μεταγλώττιση σε…" msgid "Compiled Translation Files" msgstr "Μεταγλωττισμένα αρχεία μετάφρασης" msgid "Export to HTML…" msgstr "Εξαγωγή σε HTML…" msgid "HTML Files" msgstr "Αρχεία HTML" #, c-format msgid "In: %s" msgstr "Στο: %s" msgid "Source code not available." msgstr "Ο πηγαίος κώδικας δεν είναι διαθέσιμος." msgid "Updating failed" msgstr "Η ενημέρωση απέτυχε" 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 "" "Δεν ήταν δυνατή η ενημέρωση των μεταφράσεων από τον πηγαίο κώδικα, επειδή " "δεν βρέθηκε κώδικας στην καθορισμένη τοποθεσία των ιδιοτήτων του αρχείου." msgid "Permission denied." msgstr "Δεν επιτρέπεται η πρόσβαση." 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. 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. msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "Αν αρνηθήκατε στο παρελθόν την πρόσβαση στα αρχεία σας, μπορείτε να την " "επιτρέψετε στις Προτιμήσεις συστήματος > Ασφάλεια & απόρρητο > Απόρρητο > " "Αρχεία & φάκελοι." msgid "Translation entries in the file are probably incorrect." msgstr "Οι καταχωρήσεις μετάφρασης στο αρχείο είναι πιθανώς λανθασμένες." msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "" "Αποτυχία ενημέρωσης αρχείου. Κάντε κλικ στο 'Λεπτομέρειες >>' για " "λεπτομέρειες." msgid "Open translation template" msgstr "Άνοιγμα προτύπου μετάφρασης" #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "Βρέθηκε %d ζήτημα στην μετάφραση." msgstr[1] "Βρέθηκαν %d ζητήματα στην μετάφραση." msgid "Validation results" msgstr "Αποτέλεσμα επικύρωσης" msgid "" "Entries with errors were marked in red in the list. Details of the error " "will be shown when you select such an entry." msgstr "" "Οι θέσεις με σφάλματα έχουν επισημανθεί με κόκκινο στην λίστα. Οι " "λεπτομέρειες του σφάλματος θα εμφανιστούν, όταν επιλέξεις τη συγκεκριμένη " "θέση." msgid "The file was saved safely." msgstr "Το αρχείο αποθηκεύτηκε με ασφάλεια." msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "Το αρχείο σώθηκε με ασφάλεια και μεταγλωττίστηκε σε μορφή MO, αλλά κατά πάσα " "πιθανότητα δεν θα λειτουργήσει σωστά." msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "Το αρχείο αποθηκεύθηκε επιτυχώς, όμως δεν μπορεί να γίνει σύνθεση του " "αρχείου σε μορφή MO, ώστε, μετά, να χρησιμοποιηθεί." msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "Το αρχείο μεταγλωττίστηκε σε μορφή MO, αλλά κατά πάσα πιθανότητα δεν θα " "λειτουργήσει σωστά." msgid "The file cannot be compiled into the MO format and used." msgstr "" "Αυτό το αρχείο δεν μπορεί να μεταγλωττιστεί σε μορφή MO και να " "χρησιμοποιηθεί." msgid "No problems with the translation found." msgstr "Δεν βρέθηκε κανένα πρόβλημα στην μετάφραση." #, 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 καταχωρήσεις δεν έχουν " "μεταφραστεί ακόμα." msgid "The translation is ready for use." msgstr "Η μετάφραση είναι έτοιμη προς χρήση." #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "Το Poedit διόρθωσε αυτόματα το μη έγκυρο περιεχόμενο στο αρχείο “%s”." msgid "" "The file contained duplicate items, which is not allowed in PO files and " "would prevent the file from being used. Poedit fixed the issue, but you " "should review translations of any items marked as needing work and correct " "them if necessary." msgstr "" "Το αρχείο περιέχει αντίγραφα στοιχεία, το οποίο δεν επιτρέπεται στα αρχεία " "PO και θα αποτρέψει το αρχείο από το να χρησιμοποιηθεί. Το Poedit διόρθωσε " "το θέμα, αλλά θα πρέπει να επανεξετάσετε τις μεταφράσεις οποιουδήποτε " "στοιχείου έχει επισημανθεί ότι χρειάζεται δουλειά και να το διορθώσετε εάν " "είναι απαραίτητο." msgid "Language of the translation isn’t set." msgstr "Δεν έχει οριστεί η γλώσσα της μετάφρασης." msgid "Set Language" msgstr "Ορισμός γλώσσας" msgid "Set language" msgstr "Ορισμός γλώσσας" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." msgid "" "Suggestions are not available if the translation language is not set " "correctly. Other features, such as plural forms, may be affected as well." msgstr "" "Οι υποδείξεις δεν είναι διαθέσιμες αν η γλώσσα μετάφρασης δεν έχει οριστεί " "σωστά. Άλλες λειτουργίες, όπως ο πληθυντικός, μπορεί επίσης να επηρεαστούν." msgid "Language of the translation is the same as source language." msgstr "Η γλώσσα μετάφρασης είναι η ίδια όπως η πηγαία γλώσσα." msgid "Fix Language" msgstr "Διόρθωση γλώσσας" msgid "Fix language" msgstr "Διόρθωση γλώσσας" msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "Αυτό το αρχείο περιέχει καταχωρήσεις με πληθυντικούς αριθμούς, αλλά δεν " "είναι ρυθμισμένη η κεφαλίδα \"Plural-Forms\" του." msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "Οι καταχωρήσεις σε αυτό το αρχείο έχουν διαφορετικό αριθμό μορφών " "πληθυντικού από αυτόν που αναφέρει η κεφαλίδα \"Plural-Forms\" του αρχείου" msgid "Required header Plural-Forms is missing." msgstr "Λείπει η απαιτούμενη κεφαλίδα «Plural-Forms»." #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Σφάλμα σύνταξης στην κεφαλίδα \"Plural-Forms\" (\"%s\")." msgid "Fix the Header" msgstr "Επιδιόρθωση της κεφαλίδας" 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". #, 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.")" msgid "Review" msgstr "Επισκόπηση" msgid "Would you like to use English for source text?" msgstr "Θέλετε να χρησιμοποιήσετε αγγλικά για το πηγαίο κείμενο;" #, 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" msgid "Load English" msgstr "Φόρτωση αγγλικών" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Μεταφράστηκαν: %d από %d (%d %%)" #, c-format msgid "Remaining: %d" msgstr "Απομένουν: %d" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d σφάλμα" msgstr[1] "%d σφάλματα" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d καταχώρηση" msgstr[1] "%d καταχωρήσεις" msgid " (unsaved)" msgstr " (μη αποθηκευμένο)" msgid " (modified)" msgstr " (τροποποιημένο)" #, c-format msgid "Failed to update translation memory: %s" msgstr "Αδυναμία ενημέρωσης της μεταφραστικής μνήμης: %s" msgid "Remove same-as-source translations" msgstr "" msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" msgid "Keep" msgstr "Διατήρηση" msgid "Remove" msgstr "Αφαίρεση" msgid "Purge deleted translations" msgstr "Ε&κκαθάριση διαγραμμένων μεταφράσεων" msgid "Do you want to remove all translations that are no longer used?" msgstr "" "Θα ήθελες να αφαιρεθούν όλες οι μεταφράσεις, οι οποίες έπαψαν να " "χρησιμοποιούνται;" 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" "Θα πρέπει να ξανακάνεις τις μεταφράσεις, από την αρχή, αν προστεθούν ξανά " "στο μέλλον." msgid "Purge" msgstr "Εκκαθάριση" msgid "Copy from source text" msgstr "Αντιγραφή από αρχικό κείμενο" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "Εκκαθάριση μετάφρασης" msgid "Clear Translation" msgstr "Εκκαθάριση μετάφρασης" msgid "Edit comment" msgstr "Επεξεργασία σχολίου" msgid "Edit Comment" msgstr "Επεξεργασία σχολίου" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "Εμφανίσεις κώδικα" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "Εμφανίσεις κώδικα" msgid "Hide Sidebar" msgstr "Απόκρυψη πλευρικής μπάρας" msgid "Show Sidebar" msgstr "Εμφάνιση πλευρικής μπάρας" msgid "Hide Status Bar" msgstr "Απόκρυψη γραμμής κατάστασης" msgid "Show Status Bar" msgstr "Εμφάνιση γραμμής κατάστασης" msgid "String length in characters: translation | source" msgstr "Μήκος συμβολοσειράς σε χαρακτήρες: μετάφραση | αρχική" msgid "String length in characters" msgstr "Μήκος συμβολοσειράς σε χαρακτήρες" msgid "Source text" msgstr "Αρχικό κείμενο" msgid "Singular" msgstr "Ενικός" msgid "Plural" msgstr "Πληθυντικός" msgid "Translation" msgstr "Μετάφραση" msgid "Pre-translated" msgstr "Προ-μεταφρασμένο" 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. msgid "Needs work" msgstr "Χρειάζεται δουλειά" msgid "" "POT files are only templates and don’t contain any translations themselves.\n" "To make a translation, create a new PO file based on the template." msgstr "" "Τα αρχεία POT είναι μόνο πρότυπα και δεν περιέχουν μεταφράσεις. \n" "Για να κάνετε μια μετάφραση, δημιουργήστε ένα νέο αρχείο PO που βασίζεται " "στο πρότυπο." msgid "Create new translation" msgstr "Δημιουργία νέας μετάφρασης" msgid "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 msgid "Source text ID" msgstr "Αναγνωριστικό πηγαίου κειμένου" msgid "Everything" msgstr "Τα πάντα" #, c-format msgid "Form %i" msgstr "Μορφή %i" #, c-format msgid "Form %i (unused)" msgstr "Μορφή %i (αχρησιμοποίητη)" msgid "Zero" msgstr "Μηδέν" msgid "One" msgstr "Ένα" msgid "Two" msgstr "Δύο" msgid "Other" msgstr "Άλλο" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, c-format msgid "String context: %s" msgstr "Περιεχόμενο συμβολοσειράς: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #, c-format msgid "String identifier: %s" msgstr "Αναγνωριστικό συμβολοσειράς: %s" #, c-format msgid "%s Format" msgstr "Μορφή %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "Μορφή %s" #, c-format msgid "Translation — %s" msgstr "Μετάφραση — %s" msgid "ID" msgstr "ID" #, c-format msgid "Source text — %s" msgstr "Αρχικό κείμενο — %s" msgid "unknown language" msgstr "άγνωστη γλώσσα" #, c-format msgid "Network error: %s (%d)" msgstr "Σφάλμα δικτύου: %s (%d)" msgid "Unknown error" msgstr "Άγνωστο σφάλμα" #, c-format msgid "Failed command: %s" msgstr "Απέτυχε η εντολή: %s" msgid "Failed to merge gettext catalogs." msgstr "Απέτυχε η συγχώνευση καταλόγων gettext." msgid "Open in Editor" msgstr "Άνοιγμα στο εργαλείο επεξεργασίας" msgid "Open in editor" msgstr "Άνοιγμα στο εργαλείο επεξεργασίας" msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" "Δεν παρέχεται καμία πληροφορία στο αρχείο για τις εμφανίσεις αυτής της " "συμβολοσειράς στον πηγαίο κώδικα." msgid "No usage information" msgstr "Καμία πληροφορία χρήσης" #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d εμφάνιση κώδικα" msgstr[1] "%d εμφανίσεις κώδικα" msgid "Source code not found" msgstr "Δεν βρέθηκε πηγαίος κώδικας" 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 δεν μπορεί να εμφανίσει τον πηγαίο κώδικα όπου χρησιμοποιείται η " "συμβολοσειρά, επειδή το αρχείο είτε δεν είναι διαθέσιμο στην αναφερόμενη " "τοποθεσία, είτε πρόκειται για συμβολική αναφορά που δεν δείχνει σε " "πραγματικό αρχείο." msgid "File cannot be opened" msgstr "Αδυναμία ανοίγματος αρχείου" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "Το Poedit δεν μπόρεσε να ανοίξει το αρχείο \"%s\"." msgid "Find" msgstr "Εύρεση" msgid "Replace" msgstr "Αντικατάσταση" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "Επιλογές" msgid "Ignore case" msgstr "Παράβλεψη πεζών-κεφαλαίων" msgid "Wrap around" msgstr "Επιστροφή στην αρχή" msgid "Whole words only" msgstr "Μόνο ολόκληρες λέξεις" msgid "Find in source texts" msgstr "Εύρεση στα πηγαία κείμενα" msgid "Find in translations" msgstr "Εύρεση στις μεταφράσεις" msgid "Find in comments" msgstr "Εύρεση στα σχόλια" msgid "Close" msgstr "Κλείσιμο" msgid "Replace &All" msgstr "Αντικατάσταση &όλων" msgid "Replace &all" msgstr "Αντικατάσταση &όλων" msgid "&Replace" msgstr "&Αντικατάσταση" msgid "< &Previous" msgstr "< &Προηγούμενο" msgid "&Next >" msgstr "&Επόμενο >" msgid "String to find" msgstr "Συμβολοσειρά προς εύρεση" msgid "Replacement string" msgstr "Συμβολοσειρά αντικατάστασης" #, c-format msgid "Cannot execute program: %s" msgstr "Αδυναμία εκτέλεσης προγράμματος: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "Όνομα γλώσσας ή κωδικός" msgid "Translation Language" msgstr "Γλώσσα μετάφρασης" msgid "Language of the translation:" msgstr "Γλώσσα της μετάφρασης:" msgid "All strings" msgstr "Όλες οι συμβολοσειρές" msgid "Couldn’t download Localazy project details." msgstr "" msgid "There was an error when uploading translations to Localazy." msgstr "" msgid "Projects" msgstr "" msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" msgid "Add Project" msgstr "Προσθήκη έργου" msgid "Add project" msgstr "Προσθήκη έργου" msgid "Poedit - Catalogs manager" msgstr "Poedit - Διαχείριση καταλόγων" msgid "Edit…" msgstr "Επεξεργασία…" msgid "Create new translations project" msgstr "Δημιουργία νέου έργου μετάφρασης" msgid "Delete the project" msgstr "Διαγραφή του έργου" msgid "Edit the project" msgstr "Επεξεργασία του έργου" msgid "Update all" msgstr "Ενημέρωση όλων" msgid "Update all catalogs in the project" msgstr "Ενημέρωση όλων των καταλόγων στο έργο" msgid "Total" msgstr "Σύνολο" msgid "Untrans" msgstr "Μη μεταφρασμένο" msgctxt "column/row header" msgid "Needs Work" msgstr "Χρειάζεται δουλειά" msgid "Errors" msgstr "Σφάλματα" msgid "Last modified" msgstr "Τελευταία τροποποίηση" msgid "Select directory" msgstr "Επιλογή καταλόγου" msgid "Directories:" msgstr "Κατάλογοι:" msgid "" msgstr "<χωρίς όνομα>" #, c-format msgid "Do you want to delete project “%s”?" msgstr "Θέλετε να διαγράψετε το έργο “%s”;" msgid "Delete project" msgstr "Διαγραφή έργου" msgid "Deleting the project will not delete any translation files." msgstr "Η διαγραφή του έργου δεν θα διαγράψει κανένα αρχείο μετάφρασης." msgid "Confirmation" msgstr "Επιβεβαίωση" msgid "Update all catalogs in this project?" msgstr "Ενημέρωση όλων των καταλόγων αυτού του έργου;" msgid "Performs update from source code on all files in the project." msgstr "Εκτελεί ενημέρωση από τον πηγαίο κώδικα σε όλα τα αρχεία του έργου." msgid "Check for Updates…" msgstr "Έλεγχος για ενημερώσεις…" msgid "Catalogs Manager" msgstr "Διαχείριση καταλόγων" msgid "&Preferences…" msgstr "&Προτιμήσεις…" msgid "&Edit" msgstr "&Επεξεργασία" msgid "Undo" msgstr "Αναίρεση" msgid "Redo" msgstr "Επανάληψη" msgid "Paste and Match Style" msgstr "Επικόλληση και αντιστοίχιση στυλ" msgid "Delete" msgstr "Διαγραφή" msgid "Spelling and Grammar" msgstr "Ορθογραφία και γραμματική" msgid "Show Spelling and Grammar" msgstr "Εμφάνιση ορθογραφίας και γραμματικής" msgid "Check Document Now" msgstr "Έλεγχος εγγράφου τώρα" msgid "Check Spelling While Typing" msgstr "Έλεγχος ορθογραφίας κατά την πληκτρολόγηση" msgid "Check Grammar With Spelling" msgstr "Έλεγχος γραμματικής με ορθογραφία" msgid "Correct Spelling Automatically" msgstr "Αυτόματη διόρθωση ορθογραφίας" msgid "Substitutions" msgstr "Αντικαταστάσεις" msgid "Show Substitutions" msgstr "Εμφάνιση των Αντικαταστάσεων" msgid "Smart Copy/Paste" msgstr "Έξυπνη αντιγραφή/επικόλληση" msgid "Smart Quotes" msgstr "Έξυπνα εισαγωγικά" msgid "Smart Dashes" msgstr "Έξυπνες παύλες" msgid "Smart Links" msgstr "Έξυπνοι σύνδεσμοι" msgid "Text Replacement" msgstr "Αντικατάσταση κειμένου" msgid "Transformations" msgstr "Μετασχηματισμοί" msgid "Make Upper Case" msgstr "Μετατροπή σε Κεφαλαία" msgid "Make Lower Case" msgstr "Μετατροπή σε Πεζά" msgid "Capitalize" msgstr "Κεφαλαιοποίηση" msgid "Speech" msgstr "Ομιλία" msgid "Start Speaking" msgstr "Έναρξη ομιλίας" msgid "Stop Speaking" msgstr "Διακοπή ομιλίας" msgid "&View" msgstr "&Προβολή" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Show Toolbar" msgstr "Εμφάνιση γραμμής εργαλείων" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Customize Toolbar…" msgstr "Προσαρμογή γραμμής εργαλείων…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Enter Full Screen" msgstr "Πλήρης οθόνη" msgid "Window" msgstr "Παράθυρο" msgid "Minimize" msgstr "Ελαχιστοποίηση" msgid "Zoom" msgstr "Ζουμ" msgid "Welcome to Poedit" msgstr "Καλώς ήρθες στο Ποέντιτ" msgid "Bring All to Front" msgstr "Μεταφορά όλων στο προσκήνιο" msgid "Information about the translator" msgstr "Πληροφορίες σχετικά με τον μεταφραστή" msgid "Name:" msgstr "Όνομα:" msgid "Your Name" msgstr "Το όνομά σας" msgid "Email:" msgstr "Email:" msgid "you@example.com" msgstr "you@example.com" 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." msgid "Editing" msgstr "Επεξεργασία" msgid "Automatically compile MO file when saving" msgstr "Αυτόματη μεταγλώττιση αρχείου MO κατά την αποθήκευση" msgid "Show summary after updating files" msgstr "Εμφάνιση σύνοψης μετά την ενημέρωση αρχείων" msgid "Check spelling" msgstr "Έλεγχος ορθογραφίας" msgid "Always change focus to text input field" msgstr "Πάντα αλλαγή εστίασης στο πεδίο εισόδου κειμένου" msgid "" "Never let the list of strings take focus. If enabled, you must use Ctrl-" "arrows for keyboard navigation but you can also type text immediately, " "without having to press Tab to change focus." msgstr "" "Ποτέ μην αφήνετε τη λίστα των στίχων να εστιαστεί. Αν ενεργοποιηθεί, πρέπει " "να χρησιμοποιήσετε το Ctrl-βελάκια για πλοήγηση μέσω πληκτρολογίου, αλλά " "μπορείτε επίσης να πληκτρολογήσετε κείμενο αμέσως, χωρίς να χρειαστεί να " "πατήσετε το πλήκτρο Tab για αλλαγή εστίασης." msgid "Appearance" msgstr "Εμφάνιση" msgid "Use custom list font:" msgstr "Χρήση προσαρμοσμένης γραμματοσειράς λιστών:" msgid "Use custom text fields font:" msgstr "Χρήση προσαρμοσμένης γραμματοσειράς πεδίων κειμένου:" msgid "Change UI language" msgstr "Αλλαγή γλώσσας περιβάλλοντος εργασίας" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions msgid "(requires Windows 8 or newer)" msgstr "(απαιτεί Windows 8 ή νεότερα)" msgid "General" msgstr "Γενικά" msgid "Use translation memory" msgstr "Χρήση μεταφραστικής μνήμης" msgid "Manage…" msgstr "Διαχείριση…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "Κατά την ενημέρωση από πηγές" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "ασαφή αντιστοιχία στον φάκελο" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "προ-μετάφραση από τη Μετ.Μνήμη" 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 μπορεί να προσπαθήσει να συμπληρώσει νέες καταχωρήσεις μόνο από " "προηγούμενες μεταφράσεις στο αρχείο ή από ολόκληρη την μνήμη μετάφρασης. Η " "χρήση της Μνήμης Μετάφρασης δεν θα είναι πολύ αποτελεσματική εάν είναι " "σχεδόν άδεια, αλλά θα γίνει καλύτερη όσο προσθέτετε περισσότερες μεταφράσεις " "σε αυτή." msgid "Stored translations:" msgstr "Αποθηκευμένες μεταφράσεις:" msgid "Database size on disk:" msgstr "Μέγεθος βάσης δεδομένων στο δίσκο:" msgid "Import Translation Files…" msgstr "Εισαγωγή αρχείων μετάφρασης…" msgid "Import translation files…" msgstr "Εισαγωγή αρχείων μετάφρασης…" msgid "Import From TMX…" msgstr "Εισαγωγή από TMX…" msgid "Import from TMX…" msgstr "Εισαγωγή από TMX…" msgid "Export To TMX…" msgstr "Εξαγωγή σε TMX…" msgid "Export to TMX…" msgstr "Εξαγωγή σε TMX…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). msgid "Reset" msgstr "Επαναφορά" msgid "Select translation files to import" msgstr "Επέλεξε τα αρχεία μετάφρασης προς εισαγωγή" msgid "Translation Memory" msgstr "Μεταφραστική μνήμη" msgid "Importing translations…" msgstr "Εισαγωγή μεταφράσεων…" #, c-format msgid "Error loading translation file “%s”." msgstr "Σφάλμα φόρτωσης του αρχείου μετάφρασης “%s”." msgid "Finalizing…" msgstr "Ολοκλήρωση…" msgid "Select TMX files to import" msgstr "Επιλέξτε αρχεία TMX για εισαγωγή" msgid "TMX Files" msgstr "Αρχεία TMX" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "Η εισαγωγή μεταφραστικής μνήμης από το “%s” απέτυχε." msgid "Import error" msgstr "Σφάλμα εισαγωγής" msgid "Export as…" msgstr "Εξαγωγή ως…" msgid "Exporting translations…" msgstr "Εξαγωγή μεταφράσεων…" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "Αποτυχία εξαγωγής μεταφραστικής μνήμης στο “%s”." msgid "Export error" msgstr "Σφάλμα εξαγωγής" msgid "Reset translation memory" msgstr "Επαναφορά μεταφραστικής μνήμης" msgid "Are you sure you want to reset the translation memory?" msgstr "Είστε σίγουροι ότι θέλετε να επαναφέρετε την μνήμη μεταφράσεων;" 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. msgid "TM" msgstr "ΜΜ" msgid "" "Source code extractors are used to find translatable strings in the source " "code files and extract them so that they can be translated." msgstr "" "Τα εργαλεία εξαγωγής πηγαίου κώδικα χρησιμοποιούνται για την εύρεση και την " "εξαγωγή μεταφράσιμων συμβολοσειρών από τα αρχεία πηγαίου κώδικα ώστε να " "μπορέσουν να μεταφραστούν." msgid "Custom Extractors:" msgstr "Προσαρμοσμένα εργαλεία εξαγωγής:" msgid "Custom extractors:" msgstr "Προσαρμοσμένα εργαλεία εξαγωγής:" msgid "GNU gettext" msgstr "GNU gettext" 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 και " "άλλες)." msgid "Delete extractor" msgstr "Διαγραφή εργαλείου εξαγωγής" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "Θέλετε σίγουρα να διαγράψετε το εργαλείο εξαγωγής \"%s\";" msgid "Extractors" msgstr "Εργαλεία εξαγωγής" msgid "Accounts" msgstr "Λογαριασμοί" msgid "Automatically check for updates" msgstr "Αυτόματος έλεγχος για ενημερώσεις" msgid "Include beta versions" msgstr "Συμπερίληψη εκδόσεων beta" msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "Οι εκδόσεις beta περιέχουν τις πιο πρόσφατες λειτουργίες και βελτιώσεις, " "αλλά μπορεί να είναι λιγότερο σταθερές." msgid "Updates" msgstr "Ενημερώσεις" msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Αυτές οι ρυθμίσεις επηρεάζουν την εσωτερική μορφοποίηση των αρχείων PO. " "Προσαρμόστε τις αν έχετε ειδικές απαιτήσεις π.χ. λόγω ελέγχου έκδοσης." msgid "Line endings:" msgstr "Καταλήξεις γραμμής:" msgid "Unix (recommended)" msgstr "Unix (προτείνεται)" msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "Αναδίπλωση σε:" msgid "Preserve formatting of existing files" msgstr "Διατήρηση μορφοποίησης υπαρχόντων αρχείων" msgid "Advanced" msgstr "Σύνθετα" msgid "Settings" msgstr "Ρυθμίσεις" msgid "Preparing strings…" msgstr "Προετοιμασία συμβολοσειρών…" msgid "Pre-translating from translation memory…" msgstr "Προ-μετάφραση από τη μεταφραστική μνήμη…" #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "Προ-μεταφρασμένη συμβολοσειρά %u" msgstr[1] "Προ-μεταφρασμένες συμβολοσειρές %u" msgid "Pre-translating…" msgstr "Προ-μετάφραση…" 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. msgid "Pre-translate" msgstr "Προ-μετάφραση" msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" msgid "Cannot pre-translate from unknown language." msgstr "" msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" msgid "Only fill in exact matches" msgstr "Συμπληρώστε μόνο ακριβείς αντιστοιχίες" msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" msgid "Don’t mark exact matches as needing work" msgstr "Μην επισημάνετε ακριβείς αντιστοιχίες ως χρειάζεται δουλειά" 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 "" "Ενεργοποιήστε μόνο εάν εμπιστεύεστε την ποιότητα της μνήμης μεταφράσεων σας. " "Από προεπιλογή, όλες οι αντιστοιχίες από την Μνήμη Μεταφράσεων " "επισημαίνονται ως \"απαιτεί εργασία\" και πρέπει να θεωρηθούν πριν την χρήση." msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "Η προ-μετάφραση βρίσκει αυτόματα ακριβείς ή ασαφείς αντιστοιχίες για " "αμετάφραστες συμβολοσειρές στην μνήμη μεταφράσεων και συμπληρώνει τις " "μεταφράσεις τους." #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%d καταχώρηση προ-μεταφράστηκε." msgstr[1] "%d καταχωρήσεις προ-μεταφράστηκαν." msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "Οι μεταφράσεις επισημάνθηκαν ως \"απαιτεί εργασία\", επειδή μπορεί να είναι " "ανακριβείς. Θα πρέπει να τις εξετάσετε για την ορθότητα τους." msgid "No entries could be pre-translated." msgstr "Οι καταχωρήσεις δεν μπόρεσαν να προ-μεταφραστούν." msgid "" "The TM doesn’t contain any strings similar to the content of this file. It " "is only effective for semi-automatic translations after Poedit learns enough " "from files that you translated manually." msgstr "" "Η Μνήμη Μεταφράσεων δεν περιέχει καμία συμβολοσειρά παρόμοια με το " "περιεχόμενο αυτού του αρχείου. Είναι μόνο αποτελεσματική για ημι-αυτόματες " "μεταφράσεις αφού το Poedit μάθει αρκετά από αρχεία που έχετε μεταφράσει με " "μη αυτόματο τρόπο." msgid "Cancelling…" msgstr "Ακύρωση…" msgid "Drag Folders or Files Here" msgstr "Σύρετε φακέλους ή αρχεία εδώ" msgid "Drag folders or files here" msgstr "Σύρετε φακέλους ή αρχεία εδώ" msgid "Add Folders…" msgstr "Προσθήκη φακέλων…" msgid "Add folders…" msgstr "Προσθήκη φακέλων…" msgid "Add Files…" msgstr "Προσθήκη αρχείων…" msgid "Add files…" msgstr "Προσθήκη αρχείων…" msgid "Add Wildcard…" msgstr "Προσθήκη χαρακτήρα αναπλήρωσης…" msgid "Add wildcard…" msgstr "Προσθήκη χαρακτήρα αναπλήρωσης…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) msgid "Reveal in Finder" msgstr "Αποκάλυψη στο Finder" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" msgid "Show in Explorer" msgstr "Εμφάνιση στην Εξερεύνηση" msgid "Show in Folder" msgstr "Εμφάνιση στο φάκελο" msgid "Paths" msgstr "Διαδρομές" msgid "Excluded paths" msgstr "Εξαιρούμενες διαδρομές" msgid "Advanced extraction settings" msgstr "Σύνθετες ρυθμίσεις εξαγωγής" msgid "Extract notes for translators from:" msgstr "Εξαγωγή σημειώσεων για μεταφραστές από:" msgid "Comments prefixed with:" msgstr "Σχόλια με πρόθεμα:" msgid "All comments" msgstr "Όλα τα σχόλια" msgid "Additional xgettext flags:" msgstr "Επιπρόσθετες ετικέτες xgettext:" msgid "Additional keywords" msgstr "Επιπρόσθετες λέξεις-κλειδιά" msgid "Name of the project the translation is for" msgstr "Το όνομα του έργου για το οποίο είναι η μετάφραση" msgid "Team name and email address or URL" msgstr "Όνομα ομάδας και διεύθυνση email ή διεύθυνση URL" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "π.χ. nplurals=2; plural=(n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (προτείνεται)" msgid "Please save the file first. This section cannot be edited until then." msgstr "" "Παρακαλώ αποθήκευσε αυτό το αρχείο, πρώτα, ώστε να μπορεί να γίνει, μετά, " "επεξεργασία αυτού του τμήματος." msgid "Placeholders correctness" msgstr "Ορθότητα συμβόλων υποκατάστασης" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "Το σύμβολο υποκατάστασης «%s» λείπει από τη μετάφραση." #, c-format msgid "Superfluous placeholder “%s” that isn’t in source text." msgstr "Περιττό σύμβολο υποκατάστασης «%s» που δεν υπάρχει στο αρχικό κείμενο." msgid "Plural form translations" msgstr "Μεταφράσεις πληθυντικού" msgid "Not all plural forms are translated." msgstr "Δεν είναι όλες οι μορφές πληθυντικού μεταφρασμένες." msgid "Inconsistent upper/lower case" msgstr "Ασυμφωνία κεφαλαίων/πεζών" msgid "The translation should start as a sentence." msgstr "Η μετάφραση πρέπει να ξεκινά ως μία πρόταση." msgid "The translation should start with a lowercase character." msgstr "Η μετάφραση θα πρέπει να ξεκινά με πεζό χαρακτήρα." msgid "Inconsistent whitespace" msgstr "Ασυμφωνία κενού διαστήματος" msgid "The translation doesn’t start with a space." msgstr "Η μετάφραση δεν ξεκινά με κενό." msgid "The translation starts with a space, but the source text doesn’t." msgstr "Η μετάφραση ξεκινά με κενό, αλλά το πηγαίο κείμενο όχι." msgid "The translation is missing a newline at the end." msgstr "Απουσιάζει νέα γραμμή στο τέλος της μετάφρασης." msgid "The translation ends with a newline, but the source text doesn’t." msgstr "Η μετάφραση τελειώνει με νέα γραμμή, σε αντίθεση με το αρχικό κείμενο." msgid "The translation is missing a space at the end." msgstr "Στην μετάφραση λείπει ένα κενό στο τέλος." msgid "The translation ends with a space, but the source text doesn’t." msgstr "Η μετάφραση τελειώνει με κενό, αλλά το πηγαίο κείμενο όχι." msgid "Punctuation checks" msgstr "Έλεγχοι" #, c-format msgid "The translation should end with “%s”." msgstr "Η μετάφραση θα πρέπει να τελειώνει με %s." #, c-format msgid "The translation should not end with “%s”." msgstr "Η μετάφραση δεν πρέπει να τελειώνει με \"%s\"." #, c-format msgid "The translation ends with “%s”, but the source text ends with “%s”." msgstr "Η μετάφραση τελειώνει με %s, αλλά το πηγαίο κείμενο τελειώνει με %s." msgid "Cloud" msgstr "" msgid "Clear Menu" msgstr "Απαλοιφή μενού" msgid "Clear menu" msgstr "Απαλοιφή μενού" msgid "Comment:" msgstr "Σχόλιο:" msgid "Update" msgstr "Ενημέρωση" msgid "&Delete" msgstr "&Διαγραφή" msgid "Delete the comment" msgstr "Διαγραφή του σχολίου" msgid "Edit project" msgstr "Επεξεργασία έργου" msgid "Project name:" msgstr "Όνομα έργου:" msgid "Browse" msgstr "Αναζήτηση" msgid "Add directory to the list" msgstr "Προσθήκη φακέλου στη λίστα" msgid "OK" msgstr "OK" msgid "&File" msgstr "&Αρχείο" msgid "&New…" msgstr "&Νέο…" msgid "New from &POT/PO file…" msgstr "Νέο από αρχείο &POT/PO…" msgid "New From &POT/PO File…" msgstr "Νέο από αρχείο &POT/PO…" msgid "&Open…" msgstr "&Άνοιγμα…" msgid "Open Recent" msgstr "Άνοιγμα πρόσφατου" msgid "Open recent" msgstr "Άνοιγμα πρόσφατου" msgid "Open cloud translation…" msgstr "" msgid "Open Cloud Translation…" msgstr "" msgid "&Start window" msgstr "&Παράθυρο εκκίνησης" msgid "&Start Window" msgstr "&Παράθυρο εκκίνησης" msgid "Catalogs &manager" msgstr "&Διαχείριση καταλόγων" msgid "Catalogs &Manager" msgstr "&Διαχείριση καταλόγων" msgid "&Close" msgstr "&Κλείσιμο" msgid "&Save" msgstr "&Αποθήκευση" msgid "Save &as…" msgstr "Αποθήκευση &ως…" msgid "Save &As…" msgstr "Αποθήκευση &ως…" msgid "Compile to MO…" msgstr "Μεταγλώττιση σε MO…" msgid "E&xport to HTML…" msgstr "Ε&ξαγωγή σε HTML…" msgid "Check for updates…" msgstr "Έλεγχος για ενημερώσεις…" msgid "Settings…" msgstr "Ρυθμίσεις…" msgid "&Preferences" msgstr "&Προτιμήσεις" msgid "E&xit" msgstr "Έ&ξοδος" msgid "Quit" msgstr "Έξοδος" msgid "Copy from singular" msgstr "Αντιγραφή από ενικό" msgid "Copy From Singular" msgstr "Αντιγραφή από ενικό" msgid "Translation needs &work" msgstr "Η μετάφραση είναι α&νέτοιμη" msgid "Translation Needs &Work" msgstr "Η Μετάφραση Είναι Α&νέτοιμη" msgid "Edit &comment" msgstr "Επεξεργασία &σχολίου" msgid "Edit &Comment" msgstr "Επεξεργασία &σχολίου" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "Προτάσεις" msgid "&Find…" msgstr "&Εύρεση…" msgid "Replace…" msgstr "Αντικατάσταση…" msgid "Find next" msgstr "Εύρεση επόμενου" msgid "Find previous" msgstr "Εύρεση προηγούμενου" msgid "Find and Replace…" msgstr "Εύρεση και αντικατάσταση…" msgid "Find Next" msgstr "Εύρεση επόμενου" msgid "Find Previous" msgstr "Εύρεση προηγούμενου" msgid "Show string &ID" msgstr "Εμφάνιση αναγνωριστικού &συμβολοσειράς" msgid "Show String &ID" msgstr "Εμφάνιση αναγνωριστικού &συμβολοσειράς" msgid "Show warnings" msgstr "Προβολή προειδοποιήσεων" msgid "Show Warnings" msgstr "Προβολή προειδοποιήσεων" msgid "Sort by &file order" msgstr "Ταξινόμηση κατά σειρά &αρχείων" msgid "Sort by &File Order" msgstr "Ταξινόμηση κατά σειρά &αρχείων" msgid "Sort by &source" msgstr "Ταξινόμηση κατά &πηγή" msgid "Sort by &Source" msgstr "Ταξινόμηση κατά &πηγή" msgid "Sort by &translation" msgstr "Ταξινόμηση κατά &μετάφραση" msgid "Sort by &Translation" msgstr "Ταξινόμηση κατά &μετάφραση" msgid "&Group by context" msgstr "Ομαδοποίηση κατά &συμφραζόμενα" msgid "&Group By Context" msgstr "Ομαδοποίηση κατά &συμφραζόμενα" msgid "Entries with errors first" msgstr "Καταχωρήσεις με σφάλματα πρώτες" msgid "Entries with Errors First" msgstr "Καταχωρήσεις με σφάλματα πρώτες" msgid "&Untranslated entries first" msgstr "Πρώτα οι &αμετάφραστες καταχωρήσεις" msgid "&Untranslated Entries First" msgstr "Πρώτα οι &Αμετάφραστες Καταχωρήσεις" msgid "&Show code occurrences" msgstr "&Προβολή εμφανίσεων κώδικα" msgid "&Show Code Occurrences" msgstr "&Προβολή εμφανίσεων κώδικα" msgid "Show sidebar" msgstr "Εμφάνιση πλευρικής γραμμής" msgid "Show status bar" msgstr "Εμφάνιση γραμμής κατάστασης" msgid "&Translation" msgstr "&Μετάφραση" msgid "&Update from source code" msgstr "&Ενημέρωση από πηγαίο κώδικα" msgid "&Update from Source Code" msgstr "&Ενημέρωση από πηγαίο κώδικα" msgid "Update from &POT file…" msgstr "Ενημέρωση από αρχείο &POT…" msgid "Update from &POT File…" msgstr "Ενημέρωση από αρχείο &POT…" msgid "Sync with Crowdin" msgstr "Συγχρονισμός με το Crowdin" msgid "Pre-&translate…" msgstr "Προ-&μετάφραση…" msgid "&Validate translations" msgstr "Επι&κύρωση μεταφράσεων" msgid "&Validate Translations" msgstr "Επι&κύρωση μεταφράσεων" msgid "Remove Same-as-Source Translations" msgstr "" msgid "&Purge deleted translations" msgstr "Ε&κκαθάριση των διαγραμμένων μεταφράσεων" msgid "&Purge Deleted Translations" msgstr "Ε&κκαθάριση των Διαγραμμένων Μεταφράσεων" msgid "&Properties…" msgstr "&Ιδιότητες…" msgid "&Go" msgstr "&Μετάβαση" msgid "&Done and next" msgstr "&Τέλος και επόμενο" msgid "&Done and Next" msgstr "&Τέλος και επόμενο" msgid "Previously edited" msgstr "Προηγουμένως επεξεργασμένο" msgid "Previously Edited" msgstr "Προηγουμένως Επεξεργάστηκε" msgid "&Previous translation" msgstr "&Προηγούμενη μετάφραση" msgid "&Previous Translation" msgstr "&Προηγούμενη μετάφραση" msgid "&Next translation" msgstr "&Επόμενη μετάφραση" msgid "&Next Translation" msgstr "&Επόμενη μετάφραση" msgid "P&revious unfinished" msgstr "&Προηγούμενο ατελές" msgid "P&revious Unfinished" msgstr "&Προηγούμενο ατελές" msgid "Ne&xt unfinished" msgstr "&Επόμενο ατελές" msgid "Ne&xt Unfinished" msgstr "&Επόμενο ατελές" msgid "Previous plural form" msgstr "Προηγούμενη μορφή πληθυντικού" msgid "Previous Plural Form" msgstr "Προηγούμενη μορφή πληθυντικού" msgid "Next plural form" msgstr "Επόμενη μορφή πληθυντικού" msgid "Next Plural Form" msgstr "Επόμενη μορφή πληθυντικού" msgid "&Online help" msgstr "&Διαδικτυακή βοήθεια" msgid "&Online Help" msgstr "&Διαδικτυακή βοήθεια" msgid "&GNU gettext manual" msgstr "&Οδηγίες χρήσης του GNU gettext" msgid "&GNU gettext Manual" msgstr "&Οδηγίες χρήσης του GNU gettext" msgid "&About Poedit" msgstr "&Σχετικά με το Poedit" msgid "&About" msgstr "&Σχετικά" msgid "Extractor setup" msgstr "Ρύθμιση εργαλείου εξαγωγής" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Η λίστα των επεκτάσεων χωρίζεται από άνω τελείες (πχ *.cpp · *.h):" msgid "Invocation:" msgstr "Κλήση:" msgid "Command to extract translations:" msgstr "Εντολή εξαγωγής μεταφράσεων:" 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 τη σημαία του συνόλου χαρακτήρων (βλέπε παρακάτω)." msgid "An item in keywords list:" msgstr "Ένα αντικείμενο στη λίστα των λέξεων κλειδιών:" msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Αυτό θα προσαρτηθεί στη γραμμή εντολών μία φορά\n" "για κάθε λέξη κλειδί. Το %k αναπτύσσει τη λέξη κλειδί." msgid "An item in input files list:" msgstr "Ένα αντικείμενο στη λίστα των αρχείων εισαγωγής:" #, 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 αναπτύσσει το όνομα αρχείου." msgid "Source code charset:" msgstr "Σύνολο χαρακτήρων πηγαίου κώδικα:" #, 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 αναπτύσσει την τιμή του συνόλου " "χαρακτήρων." msgid "Translation Properties" msgstr "Ιδιότητες μετάφρασης" msgid "Project name and version:" msgstr "Όνομα και έκδοση έργου:" msgid "Language team:" msgstr "Ομάδα μετάφρασης:" msgid "Plural forms:" msgstr "Μορφές πληθυντικού:" msgid "Use default rules for this language" msgstr "Χρήση προεπιλεγμένων κανόνων για αυτή τη γλώσσα" msgid "Use custom expression" msgstr "Χρήση προσαρμοσμένων εκφράσεων" msgid "Learn about plural forms" msgstr "Μάθετε για τις μορφές πληθυντικού" msgid "Charset:" msgstr "Σύνολο χαρακτήρων:" msgid "Advanced Extraction Settings…" msgstr "Σύνθετες ρυθμίσεις εξαγωγής…" msgid "Advanced extraction settings…" msgstr "Σύνθετες ρυθμίσεις εξαγωγής…" msgid "Translation properties" msgstr "Ιδιότητες μετάφρασης" msgid "Sources Paths" msgstr "Διαδρομές πηγών" msgid "Sources paths" msgstr "Διαδρομές πηγών" msgid "Extract text from source files in the following directories:" msgstr "Εξαγωγή του κειμένου από τα πηγαία αρχεία στους ακόλουθους φακέλους:" msgid "Base path:" msgstr "Διαδρομή βάσης:" msgid "Sources Keywords" msgstr "Λέξεις-κλειδιά πηγών" msgid "Sources keywords" msgstr "Λέξεις-κλειδιά πηγών" msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Χρήση αυτών των λέξεων κλειδιών (ονόματα συναρτήσεων) προς αναγνώριση " "μεταφράσιμων στίχων\n" "στα πηγαία αρχεία:" msgid "Also use default keywords for supported languages" msgstr "" "Χρησιμοποιήστε επίσης τις προεπιλεγμένες λέξεις-κλειδιά για υποστηριζόμενες " "γλώσσες" msgid "Learn about gettext keywords" msgstr "Μάθετε για τις λέξεις-κλειδιά του gettext" msgid "Update summary" msgstr "Περίληψη ενημέρωσης" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" "Αυτές οι συμβολοσειρές βρέθηκαν στα πηγαία αρχεία, αλλά δεν ήταν στο " "αρχείο.\n" "Το Poedit θα τα προσθέσει στο αρχείο τώρα." msgid "New strings" msgstr "Νέες συμβολοσειρές" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" "Αυτές οι συμβολοσειρές δεν υπάρχουν πλέον στον πηγαίο κώδικα.\n" "Το Poedit θα τις αφαιρέσει από το αρχείο." msgid "Obsolete strings" msgstr "Παρωχημένες συμβολοσειρές" msgid "(0 new, 0 obsolete)" msgstr "(0 νέα, 0 παρωχημένα)" msgid "Open" msgstr "" msgid "Open file" msgstr "Άνοιγμα αρχείου" msgid "Save file" msgstr "Αποθήκευση αρχείου" msgid "Validate" msgstr "Επικύρωση" msgid "Check for errors in the translation" msgstr "Έλεγχος λαθών στη μετάφραση" msgid "Update from code" msgstr "Ενημέρωση από κώδικα" msgid "Update from Code" msgstr "Ενημέρωση από κώδικα" msgid "Update from source code" msgstr "Ενημέρωση από πηγαίο κώδικα" msgid "Sidebar" msgstr "Πλευρικό πάνελ" msgid "Show or hide the sidebar" msgstr "Εμφάνιση ή απόκρυψη πλευρικής γραμμής" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. msgid "Previous source text" msgstr "Προηγούμενο αρχικό κείμενο" msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "Το παλιό αρχικό κείμενο (πριν από την αλλαγή κατά την ενημέρωση) που " "αντιστοιχεί στην πλέον ανακριβή μετάφραση." msgid "Notes for translators" msgstr "Σημειώσεις για μεταφραστές" msgid "Comment" msgstr "Σχόλιο" msgid "Add comment" msgstr "Προσθήκη σχολίου" msgid "Add Comment" msgstr "Προσθήκη σχολίου" msgid "Delete From Translation Memory" msgstr "Διαγραφή από μεταφραστική μνήμη" msgid "Delete from translation memory" msgstr "Διαγραφή από μεταφραστική μνήμη" msgid "Translation suggestions" msgstr "Προτάσεις μετάφρασης" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). msgid "No matches found" msgstr "Δεν βρέθηκαν αντιστοιχίες" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). msgid "No Matches Found" msgstr "Δεν βρέθηκαν αντιστοιχίες" msgid "This string was found in Poedit’s translation memory." msgstr "Αυτή η συμβολοσειρά βρέθηκε στη μεταφραστική μνήμη του Poedit." msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" msgid "The TMX file is malformed." msgstr "Το αρχείο TMX είναι παραμορφωμένο." msgid "No translations were found in the TMX file." msgstr "Δε βρέθηκε καμία μετάφραση στο αρχείο TMX." #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Η βάση δεδομένων μεταφραστικής μνήμης είναι κατεστραμμένη: %s (%d)." #, c-format msgid "Translation memory error: %s (%d)." msgstr "Σφάλμα μεταφραστικής μνήμης: %s (%d)." msgid "Cannot create temporary directory." msgstr "Αδυναμία δημιουργίας του φακέλου των προσωρινών αρχείων." msgid "There are no translations. That’s unusual." msgstr "Δεν υπάρχουν μεταφράσεις. Αυτό είναι ασυνήθιστο." msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "Translators typically use PO template files (POTs) prepared for them by the " "developer." msgstr "" "Οι μεταφράσιμες καταχωρήσεις δεν προστίθενται αυτόματα στο σύστημα του " "Gettext, αλλά εξάγονται αυτόματα\n" "από τον πηγαίο κώδικα. Με αυτόν τον τρόπο, παραμένουν ενημερωμένες και " "ακριβείς.\n" "Οι μεταφραστές χρησιμοποιούν συνήθως τα αρχεία προτύπων PO (POT), που " "προετοιμάζονται από τον προγραμματιστή." msgid "(Learn more about GNU gettext)" msgstr "(Μάθε περισσότερα για το GNU gettext)" msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "Ο απλούστερος τρόπος για να συμπληρώσετε αυτό το αρχείο με μεταφράσεις είναι " "η ενημέρωση από ένα POT:" msgid "Update from POT" msgstr "Ενημέρωση από το αρχείο POΤ" msgid "Take translatable strings from an existing POT template." msgstr "Πάρε μεταφράσιμους στίχους από ένα υπάρχον πρότυπο .POT." msgid "" "You can also extract translatable strings directly from the source code:" msgstr "" "Μπορείς, επίσης να εξάγεις μεταφράσιμους στίχους, κατευθείαν από τον πηγαίο " "κώδικα:" msgid "Extract from sources" msgstr "Εξαγωγή από τις πηγές" msgid "Configure source code extraction in Properties." msgstr "Ρύθμισε την εξαγωγή του πηγαίου κώδικα στις Ιδιότητες." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #, c-format msgid "Version %s" msgstr "Έκδοση %s" msgid "Create new" msgstr "Δημιουργία νέας" msgid "Create new translation from POT template." msgstr "Δημιουργία νέας μετάφρασης από πρότυπο POT." msgid "Browse files" msgstr "Αναζήτηση αρχείων" msgid "Open and edit translation files." msgstr "Άνοιγμα και επεξεργασία αρχείων μετάφρασης." msgid "Translate cloud project" msgstr "" msgid "Collaborate with other people online." msgstr "" msgid "Recent files" msgstr "Πρόσφατα αρχεία" msgid "Sync" msgstr "Συγχρονισμός" 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") #, c-format msgid "About %s" msgstr "Σχετικά με το %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #, c-format msgid "%s Preferences" msgstr "Προτιμήσεις %s" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "Υπηρεσίες" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "Απόκρυψη %s" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "Απόκρυψη άλλων" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "Εμφάνιση όλων" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "Κλείσιμο %s" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "Προτιμήσεις…" msgid "Preferences..." msgstr "Προτιμήσεις..." #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "Πρόσφατα" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "Συχνά" msgid "&Apply" msgstr "&Εφαρμογή" msgid "Apply" msgstr "Εφαρμογή" msgid "&Back" msgstr "&Πίσω" msgid "Back" msgstr "Πίσω" msgid "&Cancel" msgstr "&Ακύρωση" msgid "&Clear" msgstr "&Απαλοιφή" msgid "Clear" msgstr "Απαλοιφή" msgid "Copy" msgstr "Αντιγραφή" msgid "Cu&t" msgstr "Απο&κοπή" msgid "Cut" msgstr "Αποκοπή" msgid "Edit" msgstr "Επεξεργασία" msgid "&Quit" msgstr "&Έξοδος" msgid "Help" msgstr "Βοήθεια" msgid "&New" msgstr "&Νέα" msgid "New" msgstr "Νέα" msgid "&No" msgstr "&Όχι" msgid "No" msgstr "Όχι" msgid "&OK" msgstr "&OK" msgid "Open…" msgstr "Άνοιγμα…" msgid "&Open..." msgstr "&Άνοιγμα..." msgid "Open..." msgstr "Άνοιγμα..." msgid "&Paste" msgstr "&Επικόλληση" msgid "Paste" msgstr "Επικόλληση" msgid "Preferences" msgstr "Προτιμήσεις" msgid "&Redo" msgstr "&Επανάληψη" msgid "Refresh" msgstr "Ανανέωση" msgid "&Save as" msgstr "&Αποθήκευση ως" msgid "Save as" msgstr "Αποθήκευση ως" msgid "Select &All" msgstr "Επιλογή ό&λων" msgid "Select All" msgstr "Επιλογή όλων" msgid "&Undo" msgstr "&Αναίρεση" msgid "&Yes" msgstr "&Ναι" msgid "Yes" msgstr "Ναι" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "Πάνω" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "Κάτω" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "Αριστερά" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "Δεξιά" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "shift" poedit-3.5/locales/gl.po0000644000175100001770000017672214664354153012207 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "Ocultar esta mensaxe de notificación" msgid "Don’t Show Again" msgstr "Non mostrar novamente" msgid "Don’t show again" msgstr "Non mostrar novamente" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(Novas: %i, obsoletas: %i)" msgid "Collecting source files…" msgstr "Recompilando ficheiros orixe…" msgid "Extracting translatable strings…" msgstr "Extraendo cadeas traducíbeis…" msgid "Failed to load file with extracted translations." msgstr "Produciuse un fallo cargando o ficheiro coas traducións extraídas." msgid "Merging differences…" msgstr "Fusionando as diferenzas…" msgid "Updating translations" msgstr "Actualizando as traducións" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "Non foi posíbel abrir o ficheiro «%s»." msgid "Invalid file" msgstr "Ficheiro non válido" #, c-format msgid "Malformed header: “%s”" msgstr "Cabeceira mal formada: «%s»" msgid "PO Translation Files" msgstr "Ficheiros de tradución PO" msgid "POT Translation Templates" msgstr "Modelos de tradución POT" msgid "XLIFF Translation Files" msgstr "Ficheiros de tradución XLIFF" msgid "JSON Translation Files" msgstr "Ficheiros de tradución JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "Ficheiros de tradución Flutter" msgid "All Translation Files" msgstr "Todos os ficheiros de tradución" msgid "The file is in a format not recognized by Poedit." msgstr "O ficheiro está nun formato non recoñecíbel para o Poedit." 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." #, 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" #, 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." #, c-format msgid "Couldn’t save file %s." msgstr "Non foi posible gardar o ficheiro %s." msgid "Screenshots:" msgstr "Capturas de pantalla:" #, 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»." #, 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)." 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" 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" msgid "Couldn’t load the file, it is probably damaged." msgstr "Non foi posible cargar o ficheiro, probablemente estea corrompido." 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." 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)." #, 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." msgid "Error saving file" msgstr "Produciuse un erro ao gardar o ficheiro" #, c-format msgid "“%s” is not a valid POT file." msgstr "«%s» non é un ficheiro POT correcto." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Erro ao cargar o ficheiro XLIFF: %s" #, 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 msgid "Broken markup in translation string." msgstr "A cadea a traducir ten unha marcación incorrecta." msgid "(Use default language)" msgstr "(Usar idioma predeterminado)" msgid "Language selection" msgstr "Selección de idioma" msgid "Select your preferred language" msgstr "Seleccione o seu idioma preferido" msgid "You must restart Poedit for this change to take effect." msgstr "Debe reiniciar Poedit para que este cambio teña efecto." msgid "Add Account" msgstr "Engadir Conta" msgid "Add account" msgstr "Engadir conta" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "" msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" msgid "How does cloud sync work?" msgstr "" msgid "Account" msgstr "Conta" msgid "(not signed in)" msgstr "" msgid "File" msgstr "Ficheiro" msgid "Open cloud translation" msgstr "" msgid "Manage accounts" msgstr "Xestionar contas" msgid "Project:" msgstr "Proxecto:" msgid "Language:" msgstr "Idioma:" msgid "Sign in to Cloud Account" msgstr "" msgid "Sign in to cloud account" msgstr "" msgid "No translation projects listed in your account." msgstr "" 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" #, c-format msgid "Sign in to %s" msgstr "Iniciar sesión en %s" msgid "Syncing" msgstr "Sincronizando" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, 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. #, c-format msgid "Uploading translations to %s failed." msgstr "" msgid "Syncing error" msgstr "Erro ao sincronizar" msgid "Add" msgstr "Engadir" msgid "Unknown Crowdin error." msgstr "Erro de Crowdin descoñecido." msgid "Not authorized, please sign in again." msgstr "Acción non autorizada; accede de novo." msgid "Downloading translations is disabled in this project." msgstr "A descarga de traducións está deshabilitada neste proxecto." msgid "Sign In" msgstr "Acceder" msgid "Sign in" msgstr "Acceder" msgid "Sign Out" msgstr "Saír" msgid "Sign out" msgstr "Saír" msgid "Learn more about Crowdin" msgstr "Máis información sobre Crowdin" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" msgid "Waiting for authentication…" msgstr "Agardando a autenticación…" msgid "Updating user information…" msgstr "Actualizando a información do usuario…" msgid "Sign in to Crowdin" msgstr "Acceder a Crowdin" msgid "Syncing with Crowdin failed." msgstr "Erro ao sincronizar con Crowdin." msgid "Crowdin error" msgstr "Erro de Crowdin" msgid "Uploading translations…" msgstr "Cargando as traducións…" msgid "&Copy" msgstr "&Copiar" msgid "Learn more" msgstr "Aprender máis" msgid "&Help" msgstr "&Axuda" msgid "MO files can’t be directly edited in Poedit." msgstr "Os ficheiros MO non se poden editar directamente en Poedit." msgid "Error opening file" msgstr "Erro ao abrir o ficheiro" 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." msgid "don’t delete temporary files (for debugging)" msgstr "non eliminar os ficheiros temporais (para depuración)" msgid "handle a poedit:// URI" msgstr "manexar un URI de poedit" msgid "go to item at given line number" msgstr "ir ao elemento dun número de liña determinado" msgid "Failed to communicate with Poedit process." msgstr "Erro de comunicación co proceso do Poedit." #, c-format msgid "Unhandled exception occurred: %s" msgstr "Produciuse unha excepción non controlada: %s" msgid "Select translation template" msgstr "Seleccionar o modelo da tradución" msgid "Select translation file" msgstr "Seleccionar o ficheiro da tradución" msgid "Poedit is an easy to use translation editor." msgstr "Poedit é un editor de traducións fácil de usar." 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." #, c-format msgid "File “%s” is not a translation file." msgstr "O ficheiro «%s» non é un ficheiro de tradución." #, c-format msgid "File “%s” doesn’t exist." msgstr "O ficheiro «%s» non existe." 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". #, 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." msgid "Install" msgstr "Instalar" #, c-format msgid "The file “%s” has been changed by another application." msgstr "O ficheiro «%s» foi modificado por outra aplicación." msgid "Reload file" msgstr "Recargar o ficheiro" 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." msgid "Ignore" msgstr "Ignorar" msgid "Reload File" msgstr "Recargar o ficheiro" msgid "The file has been modified. Do you want to save changes?" msgstr "" "O ficheiro foi modificado.\n" "Desexa gardar os cambios?" msgid "Save changes" msgstr "Gardar os cambios" msgid "Your changes will be lost if you don’t save them." msgstr "Os cambios perderanse a menos que vostede os garde." msgid "Save" msgstr "Gardar" msgid "Do&n’t save" msgstr "No&n gardar" msgid "Don’t Save" msgstr "Non gardar" 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." msgid "Cancel" msgstr "Cancelar" msgid "Save Anyway" msgstr "Gardar igualmente" msgid "Save anyway" msgstr "Gardar igualmente" msgid "Save as…" msgstr "Gardar como…" msgid "Compile to…" msgstr "Compilar a…" msgid "Compiled Translation Files" msgstr "Ficheiros de tradución compilados" msgid "Export to HTML…" msgstr "" msgid "HTML Files" msgstr "Ficheiros HTML" #, c-format msgid "In: %s" msgstr "En: %s" msgid "Source code not available." msgstr "Código fonte non dispoñible." msgid "Updating failed" msgstr "Erro na actualización" 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." msgid "Permission denied." msgstr "Permiso denegado." 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. 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. 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." msgid "Translation entries in the file are probably incorrect." msgstr "" "A entradas da tradución que hai no ficheiro son probabelmente incorrectas." msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "" "Produciuse un erro ao actualizar o ficheiro. Prema en «Detalles>>» para ver " "os detalles." msgid "Open translation template" msgstr "Abrir o modelo de tradución" #, 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." msgid "Validation results" msgstr "Resultados da validación" 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." msgid "The file was saved safely." msgstr "O ficheiro gardouse satisfactoriamente." 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." 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." 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." 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." msgid "No problems with the translation found." msgstr "Non se atoparon problemas coa tradución." #, 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." msgid "The translation is ready for use." msgstr "A tradución está lista para utilizar." #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "" "Poedit corrixiu automaticamente o contido non válido do ficheiro \"%s\"." msgid "" "The file contained duplicate items, which is not allowed in PO files and " "would prevent the file from being used. Poedit fixed the issue, but you " "should review translations of any items marked as 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." msgid "Language of the translation isn’t set." msgstr "O idioma da tradución está sen definir." msgid "Set Language" msgstr "Definir idioma" msgid "Set language" msgstr "Definir o idioma" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." msgid "" "Suggestions are not available if the translation language is not set " "correctly. Other features, such as plural forms, may be affected as well." msgstr "" "As suxestións non están dispoñibles se o idioma de tradución non está " "definido correctamente. Outras funcionalidades, tales como as formas " "plurais, tamén poden verse afectadas." msgid "Language of the translation is the same as source language." msgstr "O idioma da tradución é o mesmo que o de orixe." msgid "Fix Language" msgstr "Solucionar idioma" msgid "Fix language" msgstr "Solucionar idioma" msgid "" "This 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." 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" msgid "Required header Plural-Forms is missing." msgstr "Falta a cabeceira requirida de formas do plural." #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Erro de sintaxe na cabeceira Plural-Forms (\"%s\")." msgid "Fix the Header" msgstr "Corrixir a cabeceira" 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". #, 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.")" msgid "Review" msgstr "Revisar" msgid "Would you like to use English for source text?" msgstr "Desexa usar o inglés para os textos orixe?" #, 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" msgid "Load English" msgstr "Cargar inglés" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Traducidas: %d de %d (%d %%)" #, c-format msgid "Remaining: %d" msgstr "Pendente: %d" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d erro" msgstr[1] "%d erros" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d entrada" msgstr[1] "%d entradas" msgid " (unsaved)" msgstr " (sen gardar)" msgid " (modified)" msgstr " (modificado)" #, c-format msgid "Failed to update translation memory: %s" msgstr "Erro ao actualizar a memoria de tradución: %s" msgid "Remove same-as-source translations" msgstr "" msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" msgid "Keep" msgstr "Manter" msgid "Remove" msgstr "" msgid "Purge deleted translations" msgstr "Purgar as traducións eliminadas" 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?" 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." msgid "Purge" msgstr "Purgar" msgid "Copy from source text" msgstr "Copiar o texto orixe" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "Borrar a tradución" msgid "Clear Translation" msgstr "Borrar a tradución" msgid "Edit comment" msgstr "Editar o comentario" msgid "Edit Comment" msgstr "Editar o comentario" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "Aparicións no código" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "Aparicións no código" msgid "Hide Sidebar" msgstr "Agochar barra lateral" msgid "Show Sidebar" msgstr "Mostrar barra lateral" msgid "Hide Status Bar" msgstr "Agochar a barra de estado" msgid "Show Status Bar" msgstr "Mostrar a barra de estado" msgid "String length in characters: translation | source" msgstr "Lonxitude da cadea en caracteres: tradución | fonte" msgid "String length in characters" msgstr "Lonxitude da cadea en caracteres" msgid "Source text" msgstr "Texto orixe" msgid "Singular" msgstr "Singular" msgid "Plural" msgstr "Plural" msgid "Translation" msgstr "Tradución" msgid "Pre-translated" msgstr "Pre-traducido" 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. msgid "Needs work" msgstr "Dubidosa" 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." msgid "Create new translation" msgstr "Crear unha nova tradución" 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 msgid "Source text ID" msgstr "ID do texto orixe" msgid "Everything" msgstr "Todo" #, c-format msgid "Form %i" msgstr "Forma %i" #, c-format msgid "Form %i (unused)" msgstr "Forma %i (non usado)" msgid "Zero" msgstr "Cero" msgid "One" msgstr "Un" msgid "Two" msgstr "Dous" msgid "Other" msgstr "Outro" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, 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 #, c-format msgid "String identifier: %s" msgstr "" #, c-format msgid "%s Format" msgstr "Formato %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "formato %s" #, c-format msgid "Translation — %s" msgstr "Tradución — %s" msgid "ID" msgstr "ID" #, c-format msgid "Source text — %s" msgstr "Texto fonte — %s" msgid "unknown language" msgstr "idioma descoñecido" #, c-format msgid "Network error: %s (%d)" msgstr "" msgid "Unknown error" msgstr "" #, c-format msgid "Failed command: %s" msgstr "Produciuse un erro ao executar a orde: %s" msgid "Failed to merge gettext catalogs." msgstr "Produciuse un erro ao fusionar os catálogos gettext." msgid "Open in Editor" msgstr "Abrir no editor" msgid "Open in editor" msgstr "Abrir no editor" 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." msgid "No usage information" msgstr "Non hai información do uso" #, 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" msgid "Source code not found" msgstr "Non foi posíbel atopar o código fonte" 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." msgid "File cannot be opened" msgstr "Non é posíbel abrir o ficheiro" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "O Poedit non foi quen de abrir o ficheiro «%s»." msgid "Find" msgstr "Buscar" msgid "Replace" msgstr "Substituír" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "Opcións" msgid "Ignore case" msgstr "Ignorar maiúsculas e minúsculas" msgid "Wrap around" msgstr "Busca circular" msgid "Whole words only" msgstr "Só palabras completas" msgid "Find in source texts" msgstr "Atopar nos textos fonte" msgid "Find in translations" msgstr "Buscar nas traducións" msgid "Find in comments" msgstr "Buscar nos comentarios" msgid "Close" msgstr "Pechar" msgid "Replace &All" msgstr "Substituír &todo" msgid "Replace &all" msgstr "Substituír &todo" msgid "&Replace" msgstr "&Substituír" msgid "< &Previous" msgstr "< &Anterior" msgid "&Next >" msgstr "&Seguinte >" msgid "String to find" msgstr "Texto que atopar" msgid "Replacement string" msgstr "Texto de substitución" #, c-format msgid "Cannot execute program: %s" msgstr "Non foi posíbel executar o programa: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "" msgid "Translation Language" msgstr "Idioma da tradución" msgid "Language of the translation:" msgstr "Idioma da tradución:" msgid "All strings" msgstr "Todas as cadeas" msgid "Couldn’t download Localazy project details." msgstr "" msgid "There was an error when uploading translations to Localazy." msgstr "" msgid "Projects" msgstr "Proxectos" msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" msgid "Add Project" msgstr "Engadir Proxecto" msgid "Add project" msgstr "Engadir proxecto" msgid "Poedit - Catalogs manager" msgstr "Poedit - Xestor de catálogos" msgid "Edit…" msgstr "Editar…" msgid "Create new translations project" msgstr "Crear novo proxecto de tradución" msgid "Delete the project" msgstr "Eliminar o proxecto" msgid "Edit the project" msgstr "Editar o proxecto" msgid "Update all" msgstr "Actualizar todo" msgid "Update all catalogs in the project" msgstr "Actualizar todos os catálogos do proxecto" msgid "Total" msgstr "Total " msgid "Untrans" msgstr "Sen traducir" msgctxt "column/row header" msgid "Needs Work" msgstr "Dubidosa" msgid "Errors" msgstr "Erros" msgid "Last modified" msgstr "Última modificación" msgid "Select directory" msgstr "Seleccione un directorio" msgid "Directories:" msgstr "Directorios:" msgid "" msgstr "" #, c-format msgid "Do you want to delete project “%s”?" msgstr "Desexa eliminar o proxecto «%s»?" msgid "Delete project" msgstr "Eliminar proxecto" msgid "Deleting the project will not delete any translation files." msgstr "Eliminar o proxecto non eliminará ningún ficheiro de tradución." msgid "Confirmation" msgstr "Confirmación" msgid "Update all catalogs in this project?" msgstr "Actualizar todos os catálogos deste proxecto?" msgid "Performs update from source code on all files in the project." msgstr "Actualiza desde o código fonte todos os ficheiros do proxecto." msgid "Check for Updates…" msgstr "Buscar actualizacións…" msgid "Catalogs Manager" msgstr "Xestor de catálogos" msgid "&Preferences…" msgstr "&Preferencias…" msgid "&Edit" msgstr "&Editar" msgid "Undo" msgstr "Desfacer" msgid "Redo" msgstr "Refacer" msgid "Paste and Match Style" msgstr "Pegar e coincidir estilo" msgid "Delete" msgstr "Eliminar" msgid "Spelling and Grammar" msgstr "Ortografía e gramática" msgid "Show Spelling and Grammar" msgstr "Mostrar ortografía e gramática" msgid "Check Document Now" msgstr "Comprobar documento agora" msgid "Check Spelling While Typing" msgstr "Revisar ortografía mentres se escribe" msgid "Check Grammar With Spelling" msgstr "Revisar gramática e ortografía" msgid "Correct Spelling Automatically" msgstr "Corrixir ortografía automaticamente" msgid "Substitutions" msgstr "Substitucións" msgid "Show Substitutions" msgstr "Mostrar substitucións" msgid "Smart Copy/Paste" msgstr "Copiar/pegar intelixente" msgid "Smart Quotes" msgstr "Comiñas intelixentes" msgid "Smart Dashes" msgstr "Trazos intelixentes" msgid "Smart Links" msgstr "Ligazóns intelixentes" msgid "Text Replacement" msgstr "Substitución de texto" msgid "Transformations" msgstr "Transformacións" msgid "Make Upper Case" msgstr "Converter a maiúsculas" msgid "Make Lower Case" msgstr "Converter a minúsculas" msgid "Capitalize" msgstr "Maiúsculas" msgid "Speech" msgstr "Fala" msgid "Start Speaking" msgstr "Comezar a falar" msgid "Stop Speaking" msgstr "Deixar de falar" msgid "&View" msgstr "&Ver" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Show Toolbar" msgstr "Mostrar barra de ferramentas" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Customize Toolbar…" msgstr "Personalizar barra de ferramentas…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Enter Full Screen" msgstr "Modo de pantalla completa" msgid "Window" msgstr "Xanela" msgid "Minimize" msgstr "Minimizar" msgid "Zoom" msgstr "Zoom" msgid "Welcome to Poedit" msgstr "Benvido/a a Poedit" msgid "Bring All to Front" msgstr "Traer todo á fronte" msgid "Information about the translator" msgstr "Información acerca do/a tradutor/a" msgid "Name:" msgstr "Nome:" msgid "Your Name" msgstr "O seu nome" msgid "Email:" msgstr "Correo electrónico:" msgid "you@example.com" msgstr "ti@exemplo.com" 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." msgid "Editing" msgstr "Edición" msgid "Automatically compile MO file when saving" msgstr "Compilar automaticamente o ficheiro MO ao gardar" msgid "Show summary after updating files" msgstr "Mostrar o resumo despois de actualizar os ficheiros" msgid "Check spelling" msgstr "Revisar a ortografía" msgid "Always change focus to text input field" msgstr "Cambiar o foco sempre ao campo da entrada de texto" msgid "" "Never let the list of strings take focus. If enabled, you must use Ctrl-" "arrows for keyboard navigation but you can also type text immediately, " "without having to press Tab to change focus." msgstr "" "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." msgid "Appearance" msgstr "Aparencia" msgid "Use custom list font:" msgstr "Fonte personalizada nas listaxes:" msgid "Use custom text fields font:" msgstr "Tipo de letra personalizado nos campos de texto:" 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 msgid "(requires Windows 8 or newer)" msgstr "(cómpre Windows 8 ou posterior)" msgid "General" msgstr "Xeral" msgid "Use translation memory" msgstr "Utilizar a memoria de tradución" msgid "Manage…" msgstr "Manexar…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "Cando actualice desde as fontes" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "coincidencia dubidosa no ficheiro" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "pre-traducir da MT" 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." msgid "Stored translations:" msgstr "Traducións almacenadas:" msgid "Database size on disk:" msgstr "Tamaño da base de datos no disco:" msgid "Import Translation Files…" msgstr "Importar os ficheiros da tradución…" msgid "Import translation files…" msgstr "Importar os ficheiros da tradución…" msgid "Import From TMX…" msgstr "Importar de TMX…" msgid "Import from TMX…" msgstr "Importar de TMX…" msgid "Export To TMX…" msgstr "Exportar como TMX…" 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). msgid "Reset" msgstr "Restablecer" msgid "Select translation files to import" msgstr "Seleccione os ficheiros de tradución para importar" msgid "Translation Memory" msgstr "Memoria de tradución" msgid "Importing translations…" msgstr "Importando as traducións…" #, c-format msgid "Error loading translation file “%s”." msgstr "Produciuse un erro cargando o ficheiro da tradución «%s»." msgid "Finalizing…" msgstr "Rematando…" msgid "Select TMX files to import" msgstr "Seleccione os ficheiros TMX a importar" msgid "TMX Files" msgstr "Ficheiros TMX" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "Produciuse un erro importando a memoria de tradución «%s»." msgid "Import error" msgstr "Produciuse un erro na importación" msgid "Export as…" msgstr "Exportar como…" msgid "Exporting translations…" msgstr "Exportando as traducións…" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "Produciuse un erro exportando a memoria de tradución «%s»." msgid "Export error" msgstr "Erro de exportación" msgid "Reset translation memory" msgstr "Restablecer memoria de tradución" msgid "Are you sure you want to reset the translation memory?" msgstr "Ten a certeza de querer restablecer a memoria de tradución?" 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. msgid "TM" msgstr "MT" 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." msgid "Custom Extractors:" msgstr "Extractores personalizados:" msgid "Custom extractors:" msgstr "Extractores personalizados:" msgid "GNU gettext" msgstr "GNU gettext" 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)." msgid "Delete extractor" msgstr "Eliminar extractor" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "Ten a certeza de querer eliminar o extractor \"%s\"?" msgid "Extractors" msgstr "Extractores" msgid "Accounts" msgstr "Contas" msgid "Automatically check for updates" msgstr "Mirar de actualizacións automaticamente" msgid "Include beta versions" msgstr "Incluír versións beta" 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." msgid "Updates" msgstr "Actualizacións" 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." msgid "Line endings:" msgstr "Finais de liña:" msgid "Unix (recommended)" msgstr "Unix (recomendado)" msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "Axustar a:" msgid "Preserve formatting of existing files" msgstr "Conservar o formato dos ficheiros existentes" msgid "Advanced" msgstr "Avanzado" msgid "Settings" msgstr "" msgid "Preparing strings…" msgstr "Preparando as cadeas…" msgid "Pre-translating from translation memory…" msgstr "Tradución previa desde a memoria de traducións…" #, 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" msgid "Pre-translating…" msgstr "Pre-traducindo…" 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. msgid "Pre-translate" msgstr "Pre-traducir" msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" msgid "Cannot pre-translate from unknown language." msgstr "" msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" msgid "Only fill in exact matches" msgstr "Só aquelas correspondencias exactas" msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" msgid "Don’t mark exact matches as needing work" msgstr "Non marcar coincidencias exactas como dubidosas" 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." 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." #, 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." 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." msgid "No entries could be pre-translated." msgstr "Non foi posíbel pre-traducir entrada ningunha." 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." msgid "Cancelling…" msgstr "Cancelando…" msgid "Drag Folders or Files Here" msgstr "Arrastrar aquí cartafoles ou ficheiros" msgid "Drag folders or files here" msgstr "Arrastrar aquí cartafoles ou ficheiros" msgid "Add Folders…" msgstr "Engadir cartafoles…" msgid "Add folders…" msgstr "Engadir cartafoles…" msgid "Add Files…" msgstr "Engadir cartafoles…" msgid "Add files…" msgstr "Engadir cartafoles…" msgid "Add Wildcard…" msgstr "Engadir comodín…" 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) 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" msgid "Show in Explorer" msgstr "Mostrar no Explorer" msgid "Show in Folder" msgstr "Mostrar no cartafol" msgid "Paths" msgstr "Rutas" msgid "Excluded paths" msgstr "Rutas excluídas" msgid "Advanced extraction settings" msgstr "Axustes avanzados de extracción" msgid "Extract notes for translators from:" msgstr "Extraer notas para tradutores de:" msgid "Comments prefixed with:" msgstr "Comentarios prefixados con:" msgid "All comments" msgstr "Todos os comentarios" msgid "Additional xgettext flags:" msgstr "Bandeiras xgettext adicionais:" msgid "Additional keywords" msgstr "Palabras clave adicionais" msgid "Name of the project the translation is for" msgstr "O nome do proxecto ao que pertence esta tradución" msgid "Team name and email address or URL" msgstr "Nome do equipo e enderezo de correo electrónico ou URL" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "p. ex., nplurals=2; plural=(n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (recomendado)" 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." msgid "Placeholders correctness" msgstr "Precisión dos marcadores de posición" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "O marcador de posición «%s» falta na tradución." #, 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." msgid "Plural form translations" msgstr "Traducións dos plurais" msgid "Not all plural forms are translated." msgstr "Non se traduciron todas as formas do plural." msgid "Inconsistent upper/lower case" msgstr "Uso inconsistente das maiúsculas/minúsculas" msgid "The translation should start as a sentence." msgstr "A tradución debería comezar con maiúscula." msgid "The translation should start with a lowercase character." msgstr "A tradución debería comezar con minúscula." msgid "Inconsistent whitespace" msgstr "Espazo en branco inconsistente" msgid "The translation doesn’t start with a space." msgstr "A tradución non comeza por un espazo." 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." msgid "The translation is missing a newline at the end." msgstr "Falta o salto de liña ao remate da tradución." 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." msgid "The translation is missing a space at the end." msgstr "Falta un espazo ao remate da tradución." 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." msgid "Punctuation checks" msgstr "Comprobación da puntuación" #, c-format msgid "The translation should end with “%s”." msgstr "A tradución debería rematar con «%s»." #, c-format msgid "The translation should not end with “%s”." msgstr "A tradución non debería rematar con «%s»." #, 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»." msgid "Cloud" msgstr "" msgid "Clear Menu" msgstr "Limpar menú" msgid "Clear menu" msgstr "Limpar menú" msgid "Comment:" msgstr "Comentario:" msgid "Update" msgstr "Actualizar" msgid "&Delete" msgstr "&Eliminar" msgid "Delete the comment" msgstr "Eliminar o comentario" msgid "Edit project" msgstr "Editar o proxecto" msgid "Project name:" msgstr "Nome do proxecto:" msgid "Browse" msgstr "Explorar" msgid "Add directory to the list" msgstr "Engadir directorio á lista" msgid "OK" msgstr "Aceptar" msgid "&File" msgstr "&Ficheiro" msgid "&New…" msgstr "&Novo…" msgid "New from &POT/PO file…" msgstr "Nova a partir dun ficheiro &POT/PO…" msgid "New From &POT/PO File…" msgstr "Nova a partir dun ficheiro &POT/PO…" msgid "&Open…" msgstr "A&brir…" msgid "Open Recent" msgstr "Abrir recentes" msgid "Open recent" msgstr "Abrir recentes" msgid "Open cloud translation…" msgstr "" msgid "Open Cloud Translation…" msgstr "" msgid "&Start window" msgstr "&Xanela de inicio" msgid "&Start Window" msgstr "&Xanela de inicio" msgid "Catalogs &manager" msgstr "&Xestor de proxectos" msgid "Catalogs &Manager" msgstr "Xestor de &catálogos" msgid "&Close" msgstr "&Pechar" msgid "&Save" msgstr "&Gardar" msgid "Save &as…" msgstr "Gard&ar como…" msgid "Save &As…" msgstr "Gard&ar como…" msgid "Compile to MO…" msgstr "Compilar a MO…" msgid "E&xport to HTML…" msgstr "" msgid "Check for updates…" msgstr "Buscar actualizacións…" msgid "Settings…" msgstr "Preferencias…" msgid "&Preferences" msgstr "&Preferencias" msgid "E&xit" msgstr "&Saír" msgid "Quit" msgstr "Saír" msgid "Copy from singular" msgstr "Copiar do singular" msgid "Copy From Singular" msgstr "Copiar do singular" msgid "Translation needs &work" msgstr "Tradución du&bidosa" msgid "Translation Needs &Work" msgstr "Tradución du&bidosa" msgid "Edit &comment" msgstr "Editar o &comentario" msgid "Edit &Comment" msgstr "Editar &comentario" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "Suxestións" msgid "&Find…" msgstr "&Buscar…" msgid "Replace…" msgstr "Substituír…" msgid "Find next" msgstr "Buscar seguinte" msgid "Find previous" msgstr "Buscar anterior" msgid "Find and Replace…" msgstr "Buscar e substituír…" msgid "Find Next" msgstr "Buscar seguinte" msgid "Find Previous" msgstr "Buscar anterior" msgid "Show string &ID" msgstr "Mostrar o &ID da cadea" msgid "Show String &ID" msgstr "Mostrar o &ID da cadea" msgid "Show warnings" msgstr "Mostrar avisos" msgid "Show Warnings" msgstr "Mostrar avisos" msgid "Sort by &file order" msgstr "Ordenar por &ficheiro" msgid "Sort by &File Order" msgstr "Ordenar por &ficheiro" msgid "Sort by &source" msgstr "Ordenar pola &orixe" msgid "Sort by &Source" msgstr "Ordenar pola &orixe" msgid "Sort by &translation" msgstr "Ordenar por &tradución" msgid "Sort by &Translation" msgstr "Ordenar por &tradución" msgid "&Group by context" msgstr "A&grupar por contexto" msgid "&Group By Context" msgstr "A&grupar por contexto" msgid "Entries with errors first" msgstr "Primeiro as entradas con erros" msgid "Entries with Errors First" msgstr "Primeiro as entradas con erros" msgid "&Untranslated entries first" msgstr "Entradas &sen traducir primeiro" msgid "&Untranslated Entries First" msgstr "Entradas &sen traducir primeiro" msgid "&Show code occurrences" msgstr "&Mostrar as aparicións no código" msgid "&Show Code Occurrences" msgstr "&Mostrar as aparicións no código" msgid "Show sidebar" msgstr "Mostrar barra lateral" msgid "Show status bar" msgstr "Mostrar a barra de estado" msgid "&Translation" msgstr "&Tradución" msgid "&Update from source code" msgstr "Act&ualizar desde o código fonte" msgid "&Update from Source Code" msgstr "Act&ualizar desde o código fonte" msgid "Update from &POT file…" msgstr "Actualizar desde un ficheiro &POT…" msgid "Update from &POT File…" msgstr "Actualizar desde un ficheiro &POT…" msgid "Sync with Crowdin" msgstr "Sincronizar con Crowdin" msgid "Pre-&translate…" msgstr "Pre-&traducir…" msgid "&Validate translations" msgstr "&Validar as traducións" msgid "&Validate Translations" msgstr "&Validar as traducións" msgid "Remove Same-as-Source Translations" msgstr "" msgid "&Purge deleted translations" msgstr "&Purgar as traducións eliminadas" msgid "&Purge Deleted Translations" msgstr "&Purgar as traducións eliminadas" msgid "&Properties…" msgstr "&Propiedades…" msgid "&Go" msgstr "&Ir a" msgid "&Done and next" msgstr "&Feito e continuar coa seguinte" msgid "&Done and Next" msgstr "&Feito e seguinte" msgid "Previously edited" msgstr "Editada previamente" msgid "Previously Edited" msgstr "Editada previamente" msgid "&Previous translation" msgstr "Tradución &anterior" msgid "&Previous Translation" msgstr "Tradución &anterior" msgid "&Next translation" msgstr "Tradución &seguinte" msgid "&Next Translation" msgstr "Tradución &seguinte" msgid "P&revious unfinished" msgstr "&Anterior sen rematar" msgid "P&revious Unfinished" msgstr "&Anterior sen rematar" msgid "Ne&xt unfinished" msgstr "Seguin&te sen rematar" msgid "Ne&xt Unfinished" msgstr "Seguin&te sen rematar" msgid "Previous plural form" msgstr "Forma plural anterior" msgid "Previous Plural Form" msgstr "Forma plural anterior" msgid "Next plural form" msgstr "Forma plural seguinte" msgid "Next Plural Form" msgstr "Forma plural seguinte" msgid "&Online help" msgstr "Axuda &en Internet" msgid "&Online Help" msgstr "Axuda &en Internet" msgid "&GNU gettext manual" msgstr "Manual de &GNU gettext" msgid "&GNU gettext Manual" msgstr "Manual de &GNU gettext" msgid "&About Poedit" msgstr "&Sobre Poedit" msgid "&About" msgstr "&Sobre" msgid "Extractor setup" msgstr "Configuración do extractor" 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):" msgid "Invocation:" msgstr "Invocación:" msgid "Command to extract translations:" msgstr "Comando para extraer as traducións:" 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)." msgid "An item in keywords list:" msgstr "Un elemento da lista de palabras clave:" 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." msgid "An item in input files list:" msgstr "Un elemento da lista de ficheiros de entrada:" #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "Isto engadirase á liña de ordes unha vez\n" "por cada ficheiro de entrada. %f substituirase\n" "polo nome de ficheiro." msgid "Source code charset:" msgstr "Xogo de caracteres do código fonte:" #, 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." msgid "Translation Properties" msgstr "Propiedades da tradución" msgid "Project name and version:" msgstr "Nome e versión do proxecto:" msgid "Language team:" msgstr "Equipo de idioma:" msgid "Plural forms:" msgstr "Formas do plural:" msgid "Use default rules for this language" msgstr "Utilizar as regras predeterminadas para este idioma" msgid "Use custom expression" msgstr "Utilizar expresión personalizada" msgid "Learn about plural forms" msgstr "Aprenda sobre as formas do plural" msgid "Charset:" msgstr "Xogo de caracteres:" msgid "Advanced Extraction Settings…" msgstr "Axustes avanzados de extracción…" msgid "Advanced extraction settings…" msgstr "Axustes avanzados de extracción…" msgid "Translation properties" msgstr "Propiedades da tradución" msgid "Sources Paths" msgstr "Rutas das orixes" msgid "Sources paths" msgstr "Rutas do código fonte" msgid "Extract text from source files in the following directories:" msgstr "" "Extraer textos dos ficheiros de código fonte que están nos seguintes " "directorios:" msgid "Base path:" msgstr "Ruta base:" msgid "Sources Keywords" msgstr "Palabras clave das orixes" msgid "Sources keywords" msgstr "Palabras clave das orixes" 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:" msgid "Also use default keywords for supported languages" msgstr "Use tamén as palabras clave predeterminadas nos idiomas aceptados" msgid "Learn about gettext keywords" msgstr "Saber máis sobre as palabras clave de gettext" msgid "Update summary" msgstr "Resumo da actualización" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" "Atopáronse estas cadeas nas fontes pero non no ficheiro.\n" "Poedit engadiraas agora ao ficheiro." msgid "New strings" msgstr "Novas cadeas" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" "Estas cadeas xa non están no código fonte.\n" "Poedit eliminaraas do ficheiro agora." msgid "Obsolete strings" msgstr "Cadeas obsoletas" msgid "(0 new, 0 obsolete)" msgstr "(0 novas, 0 obsoletas)" msgid "Open" msgstr "" msgid "Open file" msgstr "Abrir ficheiro" msgid "Save file" msgstr "Gardar ficheiro" msgid "Validate" msgstr "Validar" msgid "Check for errors in the translation" msgstr "Buscar erros na tradución" msgid "Update from code" msgstr "Actualizar desde o código" msgid "Update from Code" msgstr "Actualizar desde o código" msgid "Update from source code" msgstr "Actualizar desde o código fonte" msgid "Sidebar" msgstr "Barra lateral" msgid "Show or hide the sidebar" msgstr "Mostrar ou agochar a barra lateral" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. msgid "Previous source text" msgstr "Texto fonte anterior" 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." msgid "Notes for translators" msgstr "Notas para os tradutores" msgid "Comment" msgstr "Comentario" msgid "Add comment" msgstr "Engadir comentario" msgid "Add Comment" msgstr "Engadir comentario" msgid "Delete From Translation Memory" msgstr "Eliminar da memoria de tradución" msgid "Delete from translation memory" msgstr "Eliminar da memoria de tradución" msgid "Translation suggestions" msgstr "Suxestións de tradución" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). 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). msgid "No Matches Found" msgstr "Non se atoparon coincidencias" msgid "This string was found in Poedit’s translation memory." msgstr "Esta cadea atopouse na memoria de tradución de Poedit." msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" msgid "The TMX file is malformed." msgstr "O ficheiro TMX está mal construído." msgid "No translations were found in the TMX file." msgstr "Non se atoparon traducións no ficheiro TMX." #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "A base de datos da memoria de tradución está corrupta: %s (%d)." #, c-format msgid "Translation memory error: %s (%d)." msgstr "Erro na memoria de tradución: %s (%d)." msgid "Cannot create temporary directory." msgstr "Non foi posíbel crear o directorio temporal." msgid "There are no translations. That’s unusual." msgstr "Non hai traducións. Isto non é o habitual." msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "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. Así, mantéñense actualizadas e precisas.\n" "Quen traduce, normalmente emprega os modelos de ficheiros PO (POT) " "proporcionados polo desenvolvedor." msgid "(Learn more about GNU gettext)" msgstr "(Saber máis sobre o GNU gettext)" 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:" msgid "Update from POT" msgstr "Actualizar desde POT" msgid "Take translatable strings from an existing POT template." msgstr "Tomar as cadeas traducibles desde un patrón POT existente." 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:" msgid "Extract from sources" msgstr "Extraer desde as fontes" 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 #, c-format msgid "Version %s" msgstr "Versión %s" msgid "Create new" msgstr "Crear novo" msgid "Create new translation from POT template." msgstr "Crear nova tradución desde o modelo POT." msgid "Browse files" msgstr "Explorar ficheiros" msgid "Open and edit translation files." msgstr "Abrir e editar os ficheiros de tradución." msgid "Translate cloud project" msgstr "Proxecto de tradución na nube" msgid "Collaborate with other people online." msgstr "Colabora con outras persoas en liña." msgid "Recent files" msgstr "Ficheiros recentes" msgid "Sync" msgstr "Sincronizar" 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") #, 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. #, c-format msgid "%s Preferences" msgstr "Preferencias do %s" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "Servizos" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "Agochar %s" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "Agochar outros" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "Mostrar todo" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "Saír do %s" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "Preferencias…" msgid "Preferences..." msgstr "Preferencias..." #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "Recentes" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "Frecuentes" msgid "&Apply" msgstr "&Aplicar" msgid "Apply" msgstr "Aplicar" msgid "&Back" msgstr "&Volver" msgid "Back" msgstr "Volver" msgid "&Cancel" msgstr "&Cancelar" msgid "&Clear" msgstr "&Limpar" msgid "Clear" msgstr "Limpar" msgid "Copy" msgstr "Copiar" msgid "Cu&t" msgstr "Cor&tar" msgid "Cut" msgstr "Cortar" msgid "Edit" msgstr "Editar" msgid "&Quit" msgstr "&Saír" msgid "Help" msgstr "Axuda" msgid "&New" msgstr "&Novo" msgid "New" msgstr "Novo" msgid "&No" msgstr "&Non" msgid "No" msgstr "Non" msgid "&OK" msgstr "&Aceptar" msgid "Open…" msgstr "Abrir…" msgid "&Open..." msgstr "&Abrir..." msgid "Open..." msgstr "Abrir..." msgid "&Paste" msgstr "&Pegar" msgid "Paste" msgstr "Pegar" msgid "Preferences" msgstr "Preferencias" msgid "&Redo" msgstr "&Refacer" msgid "Refresh" msgstr "Actualizar" msgid "&Save as" msgstr "Gardar &como" msgid "Save as" msgstr "Gardar como" msgid "Select &All" msgstr "Seleccionar &todo" msgid "Select All" msgstr "Seleccionar todo" msgid "&Undo" msgstr "&Desfacer" msgid "&Yes" msgstr "&Si" msgid "Yes" msgstr "Si" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Maiús+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Intro" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "Arriba" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "Abaixo" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "Esquerda" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "Dereita" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "maiús" poedit-3.5/locales/es.po0000644000175100001770000020322214664354153012176 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "Ocultar esta notificación" msgid "Don’t Show Again" msgstr "No mostrar de nuevo" msgid "Don’t show again" msgstr "No mostrar de nuevo" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(Nuevas: %i, obsoletas: %i)" msgid "Collecting source files…" msgstr "Recopilando archivos de código fuente…" msgid "Extracting translatable strings…" msgstr "Extrayendo cadenas traducibles…" msgid "Failed to load file with extracted translations." msgstr "No se pudo cargar el archivo con las traducciones extraídas." msgid "Merging differences…" msgstr "Combinando diferencias…" msgid "Updating translations" msgstr "Actualizando traducciones" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "No se pudo abrir el archivo «%s»." msgid "Invalid file" msgstr "El archivo no es válido" #, c-format msgid "Malformed header: “%s”" msgstr "Cabecera con formato incorrecto: «%s»" msgid "PO Translation Files" msgstr "Archivos de traducción PO" msgid "POT Translation Templates" msgstr "Plantillas de traducción POT" msgid "XLIFF Translation Files" msgstr "Archivos de traducción XLIFF" msgid "JSON Translation Files" msgstr "Archivos de traducción JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "Archivos de traducción de Flutter" msgid "All Translation Files" msgstr "Todos los archivos de traducción" msgid "The file is in a format not recognized by Poedit." msgstr "El archivo está en un formato que Poedit no reconoce." 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." #, 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" #, 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." #, c-format msgid "Couldn’t save file %s." msgstr "No se pudo guardar el archivo «%s»." msgid "Screenshots:" msgstr "Capturas de pantalla:" #, 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." #, 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)." 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»" 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»" msgid "Couldn’t load the file, it is probably damaged." msgstr "No se pudo cargar el archivo; probablemente esté dañado." 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." 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)." #, 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." msgid "Error saving file" msgstr "Error al guardar el archivo" #, c-format msgid "“%s” is not a valid POT file." msgstr "«%s» no es un archivo POT válido." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Error al cargar el archivo XLIFF: %s" #, 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 msgid "Broken markup in translation string." msgstr "Marcación errónea en la cadena de traducción." msgid "(Use default language)" msgstr "(Usar idioma predeterminado)" msgid "Language selection" msgstr "Selección de idioma" msgid "Select your preferred language" msgstr "Seleccione el idioma que prefiera" msgid "You must restart Poedit for this change to take effect." msgstr "Debe reiniciar Poedit para que los cambios surtan efecto." msgid "Add Account" msgstr "Añadir cuenta" msgid "Add account" msgstr "Añadir cuenta" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "Más información sobre %s" msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "Conecte a Poedit con las plataformas de localización en la nube compatibles " "para sincronizar sin problemas las traducciones gestionadas en ellas." msgid "How does cloud sync work?" msgstr "¿Cómo funciona la sincronización en la nube?" msgid "Account" msgstr "Cuenta" msgid "(not signed in)" msgstr "(no se ha accedido)" msgid "File" msgstr "Archivo" msgid "Open cloud translation" msgstr "Abrir traducción en la nube" msgid "Manage accounts" msgstr "Gestionar cuentas" msgid "Project:" msgstr "Proyecto:" msgid "Language:" msgstr "Idioma:" msgid "Sign in to Cloud Account" msgstr "Acceder a cuenta en la nube" msgid "Sign in to cloud account" msgstr "Acceder a cuenta en la nube" msgid "No translation projects listed in your account." msgstr "No hay ningún proyecto de traducción en su cuenta." msgid "Downloading latest translations…" msgstr "Descargando las traducciones más recientes…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #, c-format msgid "Sign in to %s" msgstr "Acceder a %s" msgid "Syncing" msgstr "Sincronización" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, 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. #, c-format msgid "Uploading translations to %s failed." msgstr "Error al subir las traducciones a %s." msgid "Syncing error" msgstr "Error de sincronización" msgid "Add" msgstr "Añadir" msgid "Unknown Crowdin error." msgstr "Error desconocido en Crowdin." msgid "Not authorized, please sign in again." msgstr "Acción no autorizada. Acceda a la cuenta de nuevo." msgid "Downloading translations is disabled in this project." msgstr "La descarga de traducciones está desactivada en este proyecto." msgid "Sign In" msgstr "Acceder" msgid "Sign in" msgstr "Acceder" msgid "Sign Out" msgstr "Salir" msgid "Sign out" msgstr "Salir" msgid "Learn more about Crowdin" msgstr "Más información sobre Crowdin" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" "Crowdin es una plataforma de gestión de localización en línea y una " "herramienta de traducción colaborativa." msgid "Waiting for authentication…" msgstr "Esperando la autenticación…" msgid "Updating user information…" msgstr "Actualizando la información del usuario…" msgid "Sign in to Crowdin" msgstr "Acceder a Crowdin" msgid "Syncing with Crowdin failed." msgstr "Falló la sincronización con Crowdin." msgid "Crowdin error" msgstr "Error de Crowdin" msgid "Uploading translations…" msgstr "Cargando las traducciones…" msgid "&Copy" msgstr "&Copiar" msgid "Learn more" msgstr "Más información" msgid "&Help" msgstr "Ay&uda" msgid "MO files can’t be directly edited in Poedit." msgstr "No se pueden editar los archivos MO directamente en Poedit." msgid "Error opening file" msgstr "Error al abrir el archivo" 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." msgid "don’t delete temporary files (for debugging)" msgstr "no eliminar archivos temporales (para depuración)" msgid "handle a poedit:// URI" msgstr "manejar un URI poedit://" msgid "go to item at given line number" msgstr "ir al elemento en el número de renglón dado" msgid "Failed to communicate with Poedit process." msgstr "No se pudo comunicar con el proceso de Poedit." #, c-format msgid "Unhandled exception occurred: %s" msgstr "Se produjo una excepción no controlada: %s" msgid "Select translation template" msgstr "Seleccione la plantilla de traducción" msgid "Select translation file" msgstr "Seleccione el archivo de traducción" msgid "Poedit is an easy to use translation editor." msgstr "Poedit es un editor de traducciones fácil de usar." 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." #, c-format msgid "File “%s” is not a translation file." msgstr "El archivo «%s» no es de traducción." #, c-format msgid "File “%s” doesn’t exist." msgstr "No existe el archivo «%s»." 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". #, 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." msgid "Install" msgstr "Instalar" #, c-format msgid "The file “%s” has been changed by another application." msgstr "Otra aplicación ha modificado el archivo «%s»." msgid "Reload file" msgstr "Volver a cargar archivo" 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." msgid "Ignore" msgstr "Ignorar" msgid "Reload File" msgstr "Volver a cargar archivo" msgid "The file has been modified. Do you want to save changes?" msgstr "Se ha modificado el archivo. ¿Quiere guardar los cambios?" msgid "Save changes" msgstr "Guardar cambios" msgid "Your changes will be lost if you don’t save them." msgstr "Los cambios se perderán si no los guarda." msgid "Save" msgstr "Guardar" msgid "Do&n’t save" msgstr "&No guardar" msgid "Don’t Save" msgstr "No guardar" 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." msgid "Cancel" msgstr "Cancelar" msgid "Save Anyway" msgstr "Guardar de todos modos" msgid "Save anyway" msgstr "Guardar de todos modos" msgid "Save as…" msgstr "Guardar como…" msgid "Compile to…" msgstr "Compilar en…" msgid "Compiled Translation Files" msgstr "Archivos de traducción compilados" msgid "Export to HTML…" msgstr "Exportar a HTML…" msgid "HTML Files" msgstr "Archivos HTML" #, c-format msgid "In: %s" msgstr "En: %s" msgid "Source code not available." msgstr "El código fuente no está disponible." msgid "Updating failed" msgstr "Falló la actualización" 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." msgid "Permission denied." msgstr "Se denegó el permiso." 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. 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. 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." msgid "Translation entries in the file are probably incorrect." msgstr "" "Las entradas de traducción en el archivo son probablemente incorrectas." msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "" "Falló la actualización del archivo. Pulse en «Detalles» para obtener más " "información." msgid "Open translation template" msgstr "Abrir plantilla de traducción" #, 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." msgid "Validation results" msgstr "Resultados de la validación" 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." msgid "The file was saved safely." msgstr "El archivo se guardó con seguridad." 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." 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." 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." 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." msgid "No problems with the translation found." msgstr "No se encontraron problemas con esta traducción." #, 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." msgid "The translation is ready for use." msgstr "La traducción está lista para su uso." #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "" "Poedit corrigió automáticamente el contenido no válido del archivo «%s»." msgid "" "The file contained duplicate items, which is not allowed in PO files and " "would prevent the file from being used. Poedit fixed the issue, but you " "should review translations of any items marked as 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." msgid "Language of the translation isn’t set." msgstr "No se ha establecido el idioma de la traducción." msgid "Set Language" msgstr "Establecer idioma" 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)." msgid "" "Suggestions are not available if the translation language is not set " "correctly. Other features, such as plural forms, may be affected as well." msgstr "" "Si el idioma de traducción no se configura correctamente, se afectarán " "funcionalidades como las sugerencias y la gestión de formas plurales." msgid "Language of the translation is the same as source language." msgstr "El idioma de la traducción es igual que el del texto original." msgid "Fix Language" msgstr "Corregir idioma" msgid "Fix language" msgstr "Corregir idioma" msgid "" "This 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." 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»" msgid "Required header Plural-Forms is missing." msgstr "Falta la cabecera obligatoria «Plural-Forms»." #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Error de sintaxis en la cabecera Plural-Forms («%s»)." msgid "Fix the Header" msgstr "Corregir cabecera" 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". #, 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.")" msgid "Review" msgstr "Revisar" msgid "Would you like to use English for source text?" msgstr "¿Le gustaría usar el inglés para el texto original?" #, 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" msgid "Load English" msgstr "Cargar inglés" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Traducidas: %d de %d (%d %%)" #, c-format msgid "Remaining: %d" msgstr "Quedan: %d" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d error" msgstr[1] "%d errores" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d entrada" msgstr[1] "%d entradas" msgid " (unsaved)" msgstr " (sin guardar)" msgid " (modified)" msgstr " (modificado)" #, c-format msgid "Failed to update translation memory: %s" msgstr "No se pudo actualizar la memoria de traducciones: %s" msgid "Remove same-as-source translations" msgstr "" msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" msgid "Keep" msgstr "Conservar" msgid "Remove" msgstr "" msgid "Purge deleted translations" msgstr "Purgar traducciones eliminadas" msgid "Do you want to remove all translations that are no longer used?" msgstr "¿Quiere eliminar todas las traducciones que ya no se usan?" 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." msgid "Purge" msgstr "Purgar" msgid "Copy from source text" msgstr "Copiar del texto original" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "Vaciar traducción" msgid "Clear Translation" msgstr "Vaciar traducción" msgid "Edit comment" msgstr "Editar comentario" msgid "Edit Comment" msgstr "Editar comentario" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "Apariciones en código" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "Apariciones en código" msgid "Hide Sidebar" msgstr "Ocultar barra lateral" msgid "Show Sidebar" msgstr "Mostrar barra lateral" msgid "Hide Status Bar" msgstr "Ocultar barra de estado" msgid "Show Status Bar" msgstr "Mostrar barra de estado" msgid "String length in characters: translation | source" msgstr "Longitud de cadena en caracteres: traducción | origen" msgid "String length in characters" msgstr "Longitud de cadena en caracteres" msgid "Source text" msgstr "Texto de origen" msgid "Singular" msgstr "Singular" msgid "Plural" msgstr "Plural" msgid "Translation" msgstr "Traducción" msgid "Pre-translated" msgstr "Pretraducida" 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. msgid "Needs work" msgstr "Por revisar" msgid "" "POT files are only templates and don’t contain any translations themselves.\n" "To make a translation, create a new PO file based on the template." msgstr "" "Los archivos POT son plantillas; no contienen traducciones.\n" "Para realizar una traducción, cree un archivo PO nuevo basado en la " "plantilla." msgid "Create new translation" msgstr "Crear traducción nueva" msgid "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 msgid "Source text ID" msgstr "Id. del texto original" msgid "Everything" msgstr "Todo" #, c-format msgid "Form %i" msgstr "Forma %i" #, c-format msgid "Form %i (unused)" msgstr "Forma %i (no utilizada)" msgid "Zero" msgstr "Cero" msgid "One" msgstr "Uno" msgid "Two" msgstr "Dos" msgid "Other" msgstr "Otro" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, 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 #, c-format msgid "String identifier: %s" msgstr "Identificador de cadena: %s" #, c-format msgid "%s Format" msgstr "Formato %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "Formato %s" #, c-format msgid "Translation — %s" msgstr "Traducción — %s" msgid "ID" msgstr "Id." #, c-format msgid "Source text — %s" msgstr "Texto de origen — %s" msgid "unknown language" msgstr "idioma desconocido" #, c-format msgid "Network error: %s (%d)" msgstr "Error de red: %s (%d)" msgid "Unknown error" msgstr "Error desconocido" #, c-format msgid "Failed command: %s" msgstr "Orden errónea: %s" msgid "Failed to merge gettext catalogs." msgstr "Error al combinar los catálogos de gettext." msgid "Open in Editor" msgstr "Abrir en el editor" msgid "Open in editor" msgstr "Abrir en el editor" 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." msgid "No usage information" msgstr "No hay información de uso" #, 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" msgid "Source code not found" msgstr "No se encontró el código fuente" 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." msgid "File cannot be opened" msgstr "No se puede abrir el archivo" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "Poedit no pudo abrir el archivo «%s»." msgid "Find" msgstr "Buscar" msgid "Replace" msgstr "Reemplazar" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "Opciones" msgid "Ignore case" msgstr "Ignorar mayúsculas y minúsculas" msgid "Wrap around" msgstr "Búsqueda bidireccional" msgid "Whole words only" msgstr "Solo palabras completas" msgid "Find in source texts" msgstr "Encontrar en textos originales" msgid "Find in translations" msgstr "Buscar en traducciones" msgid "Find in comments" msgstr "Buscar en los comentarios" msgid "Close" msgstr "Cerrar" msgid "Replace &All" msgstr "Reemplazar &todo" msgid "Replace &all" msgstr "Reemplazar &todo" msgid "&Replace" msgstr "&Reemplazar" msgid "< &Previous" msgstr "< &Anterior" msgid "&Next >" msgstr "&Siguiente >" msgid "String to find" msgstr "Texto que encontrar" msgid "Replacement string" msgstr "Texto de reemplazo" #, c-format msgid "Cannot execute program: %s" msgstr "No se puede ejecutar el programa: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "Nombre o código de idioma" msgid "Translation Language" msgstr "Idioma de la traducción" msgid "Language of the translation:" msgstr "Idioma de la traducción:" msgid "All strings" msgstr "Todas las cadenas" msgid "Couldn’t download Localazy project details." msgstr "No se han podido descargar los detalles del proyecto de Localazy." msgid "There was an error when uploading translations to Localazy." msgstr "Se ha producido un error al subir las traducciones a Localazy." msgid "Projects" msgstr "Proyectos" 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." msgid "Add Project" msgstr "Añadir proyecto" msgid "Add project" msgstr "Añadir proyecto" msgid "Poedit - Catalogs manager" msgstr "Poedit. Gestor de catálogos" msgid "Edit…" msgstr "Editar…" msgid "Create new translations project" msgstr "Crear proyecto de traducción nuevo" msgid "Delete the project" msgstr "Eliminar el proyecto" msgid "Edit the project" msgstr "Editar el proyecto" msgid "Update all" msgstr "Actualizar todo" msgid "Update all catalogs in the project" msgstr "Actualizar todos los catálogos del proyecto" msgid "Total" msgstr "Total" msgid "Untrans" msgstr "Sin traducir" msgctxt "column/row header" msgid "Needs Work" msgstr "Por revisar" msgid "Errors" msgstr "Errores" msgid "Last modified" msgstr "Última modificación" msgid "Select directory" msgstr "Seleccione la carpeta" msgid "Directories:" msgstr "Carpetas:" msgid "" msgstr "" #, c-format msgid "Do you want to delete project “%s”?" msgstr "¿Quiere eliminar el proyecto «%s»?" msgid "Delete project" msgstr "Eliminar proyecto" msgid "Deleting the project will not delete any translation files." msgstr "Eliminar el proyecto no suprimirá ningún archivo de traducción." msgid "Confirmation" msgstr "Confirmación" msgid "Update all catalogs in this project?" msgstr "¿Quiere actualizar todos los catálogos del proyecto?" 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." msgid "Check for Updates…" msgstr "Buscar actualizaciones…" msgid "Catalogs Manager" msgstr "Gestor de catálogos" msgid "&Preferences…" msgstr "&Preferencias…" msgid "&Edit" msgstr "&Editar" msgid "Undo" msgstr "Deshacer" msgid "Redo" msgstr "Rehacer" msgid "Paste and Match Style" msgstr "Pegar con el mismo estilo" msgid "Delete" msgstr "Eliminar" msgid "Spelling and Grammar" msgstr "Ortografía y gramática" msgid "Show Spelling and Grammar" msgstr "Mostrar ortografía y gramática" msgid "Check Document Now" msgstr "Revisar el documento ahora" msgid "Check Spelling While Typing" msgstr "Revisar ortografía al escribir" msgid "Check Grammar With Spelling" msgstr "Comprobar gramática con la ortografía" msgid "Correct Spelling Automatically" msgstr "Corregir ortografía automáticamente" msgid "Substitutions" msgstr "Sustituciones" msgid "Show Substitutions" msgstr "Mostrar sustituciones" msgid "Smart Copy/Paste" msgstr "Copipegado inteligente" msgid "Smart Quotes" msgstr "Comillas tipográficas" msgid "Smart Dashes" msgstr "Guiones inteligentes" msgid "Smart Links" msgstr "Enlaces inteligentes" msgid "Text Replacement" msgstr "Sustitución de texto" msgid "Transformations" msgstr "Transformaciones" msgid "Make Upper Case" msgstr "Convertir en mayúsculas" msgid "Make Lower Case" msgstr "Convertir en minúsculas" msgid "Capitalize" msgstr "A mayúsculas" msgid "Speech" msgstr "Habla" msgid "Start Speaking" msgstr "Iniciar locución" msgid "Stop Speaking" msgstr "Detener locución" msgid "&View" msgstr "&Ver" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Show Toolbar" msgstr "Mostrar barra de herramientas" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Customize Toolbar…" msgstr "Personalizar barra de herramientas…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Enter Full Screen" msgstr "Modo de pantalla completa" msgid "Window" msgstr "Ventana" msgid "Minimize" msgstr "Minimizar" msgid "Zoom" msgstr "Escala" msgid "Welcome to Poedit" msgstr "Este es Poedit" msgid "Bring All to Front" msgstr "Traer todo al frente" msgid "Information about the translator" msgstr "Información acerca del traductor" msgid "Name:" msgstr "Nombre:" msgid "Your Name" msgstr "Su nombre" msgid "Email:" msgstr "Correo electrónico:" msgid "you@example.com" msgstr "usted@ejemplo.com" 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." msgid "Editing" msgstr "Edición" msgid "Automatically compile MO file when saving" msgstr "Compilar automáticamente el archivo MO al guardar" msgid "Show summary after updating files" msgstr "Mostrar resumen después de actualizar archivos" msgid "Check spelling" msgstr "Revisar la ortografía" msgid "Always change focus to text input field" msgstr "Enfocar siempre el campo de entrada de texto" msgid "" "Never let the list of strings take focus. If enabled, you must use Ctrl-" "arrows for keyboard navigation but you can also type text immediately, " "without having to press Tab to change focus." msgstr "" "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." msgid "Appearance" msgstr "Apariencia" msgid "Use custom list font:" msgstr "Usar tipo de letra personalizado en listas:" msgid "Use custom text fields font:" msgstr "Usar tipo de letra personalizado en campos de texto:" msgid "Change UI language" msgstr "Cambiar idioma de la interfaz" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions msgid "(requires Windows 8 or newer)" msgstr "(se necesita Windows 8 o posterior)" msgid "General" msgstr "Generales" msgid "Use translation memory" msgstr "Usar memoria de traducción" msgid "Manage…" msgstr "Gestionar…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "Al actualizar desde el código fuente" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "incluir coincidencias aprox. del archivo" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "pretraducir a partir de la MT" 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." msgid "Stored translations:" msgstr "Traducciones almacenadas:" msgid "Database size on disk:" msgstr "Tamaño de base de datos en el disco:" msgid "Import Translation Files…" msgstr "Importar archivos de traducción…" msgid "Import translation files…" msgstr "Importar archivos de traducción…" msgid "Import From TMX…" msgstr "Importar desde TMX…" msgid "Import from TMX…" msgstr "Importar desde TMX…" msgid "Export To TMX…" msgstr "Exportar a TMX…" 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). msgid "Reset" msgstr "Restablecer" msgid "Select translation files to import" msgstr "Seleccione los archivos de traducción que se importarán" msgid "Translation Memory" msgstr "Memoria de traducciones" msgid "Importing translations…" msgstr "Importando traducciones…" #, c-format msgid "Error loading translation file “%s”." msgstr "Error al cargar el archivo de traducción «%s»." msgid "Finalizing…" msgstr "Finalizando…" msgid "Select TMX files to import" msgstr "Seleccione los archivos TMX que importar" msgid "TMX Files" msgstr "Archivos TMX" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "Falló la importación de la memoria de traducción desde «%s»." msgid "Import error" msgstr "Error de importación" msgid "Export as…" msgstr "Exportar a…" msgid "Exporting translations…" msgstr "Exportando traducciones…" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "Falló la exportación de la memoria de traducción a «%s»." msgid "Export error" msgstr "Error de exportación" msgid "Reset translation memory" msgstr "Restablecer memoria de traducción" msgid "Are you sure you want to reset the translation memory?" msgstr "¿Confirma que quiere restablecer la memoria de traducción?" 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. msgid "TM" msgstr "MT" 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." msgid "Custom Extractors:" msgstr "Extractores personalizados:" msgid "Custom extractors:" msgstr "Extractores personalizados:" msgid "GNU gettext" msgstr "GNU gettext" 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)." msgid "Delete extractor" msgstr "Eliminar extractor" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "¿Confirma que quiere eliminar el extractor «%s»?" msgid "Extractors" msgstr "Extractores" msgid "Accounts" msgstr "Cuentas" msgid "Automatically check for updates" msgstr "Buscar actualizaciones automáticamente" msgid "Include beta versions" msgstr "Incluir versiones beta" 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." msgid "Updates" msgstr "Actualizaciones" 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." msgid "Line endings:" msgstr "Finales de renglón:" msgid "Unix (recommended)" msgstr "Unix (recomendado)" msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "Ajustar a:" msgid "Preserve formatting of existing files" msgstr "Conservar el formato de los archivos existentes" msgid "Advanced" msgstr "Avanzadas" msgid "Settings" msgstr "Configuración" msgid "Preparing strings…" msgstr "Preparando cadenas…" msgid "Pre-translating from translation memory…" msgstr "Pretraduciendo desde la memoria de traducción…" #, 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" msgid "Pre-translating…" msgstr "Pretraduciendo…" 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. msgid "Pre-translate" msgstr "Pretraducir" 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." msgid "Cannot pre-translate from unknown language." msgstr "No se puede pretraducir desde un idioma desconocido." 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." msgid "Only fill in exact matches" msgstr "Solo correspondencias exactas" 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." msgid "Don’t mark exact matches as needing work" msgstr "No marcar coincidencias exactas para revisión" 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." 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." #, 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." 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." msgid "No entries could be pre-translated." msgstr "No se pudo pretraducir ninguna entrada." 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." msgid "Cancelling…" msgstr "Cancelando…" msgid "Drag Folders or Files Here" msgstr "Arrastre carpetas o archivos aquí" msgid "Drag folders or files here" msgstr "Arrastre carpetas o archivos aquí" msgid "Add Folders…" msgstr "Añadir carpetas…" msgid "Add folders…" msgstr "Añadir carpetas…" msgid "Add Files…" msgstr "Añadir archivos…" msgid "Add files…" msgstr "Añadir archivos…" msgid "Add Wildcard…" msgstr "Añadir comodín…" msgid "Add wildcard…" msgstr "Añadir comodín…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) 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" msgid "Show in Explorer" msgstr "Mostrar en el Explorador" msgid "Show in Folder" msgstr "Mostrar en la carpeta" msgid "Paths" msgstr "Rutas" msgid "Excluded paths" msgstr "Rutas excluidas" msgid "Advanced extraction settings" msgstr "Opciones avanzadas de extracción" msgid "Extract notes for translators from:" msgstr "Extraer las notas para traductores a partir de:" msgid "Comments prefixed with:" msgstr "Comentarios con el prefijo:" msgid "All comments" msgstr "Todos los comentarios" msgid "Additional xgettext flags:" msgstr "Señales de xgettext adicionales:" msgid "Additional keywords" msgstr "Palabras clave adicionales" msgid "Name of the project the translation is for" msgstr "El nombre del proyecto al que se destina esta traducción" msgid "Team name and email address or URL" msgstr "Nombre de equipo y correo o URL" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "p. ej., nplurals=2; plural=(n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (recomendado)" msgid "Please save the file first. This section cannot be edited until then." msgstr "" "Guarde el archivo primero. No se podrá editar esta sección hasta que lo haga." msgid "Placeholders correctness" msgstr "Uso correcto de sustitutivos" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "A la traducción le falta el sustitutivo «%s»." #, c-format msgid "Superfluous placeholder “%s” that isn’t in source text." msgstr "Sustitutivo superfluo «%s» que no figura en el texto de origen." msgid "Plural form translations" msgstr "Traducciones de formas plurales" msgid "Not all plural forms are translated." msgstr "No todas las formas plurales están traducidas." msgid "Inconsistent upper/lower case" msgstr "Mayúsculas/minúsculas incoherentes" msgid "The translation should start as a sentence." msgstr "La traducción debe comenzar como una oración." msgid "The translation should start with a lowercase character." msgstr "La traducción debe comenzar con una letra minúscula." msgid "Inconsistent whitespace" msgstr "Espacios en blanco incoherentes" msgid "The translation doesn’t start with a space." msgstr "La traducción no comienza con un espacio." 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." msgid "The translation is missing a newline at the end." msgstr "Falta un salto de renglón al final en la traducción." 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." msgid "The translation is missing a space at the end." msgstr "Falta un espacio final en la traducción." 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." msgid "Punctuation checks" msgstr "Comprobaciones de puntuación" #, c-format msgid "The translation should end with “%s”." msgstr "La traducción debe terminar con «%s»." #, c-format msgid "The translation should not end with “%s”." msgstr "La traducción no debe terminar con «%s»." #, 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»." msgid "Cloud" msgstr "" msgid "Clear Menu" msgstr "Vaciar menú" msgid "Clear menu" msgstr "Vaciar menú" msgid "Comment:" msgstr "Comentario:" msgid "Update" msgstr "Actualizar" msgid "&Delete" msgstr "&Eliminar" msgid "Delete the comment" msgstr "Eliminar el comentario" msgid "Edit project" msgstr "Editar proyecto" msgid "Project name:" msgstr "Nombre del proyecto:" msgid "Browse" msgstr "Examinar" msgid "Add directory to the list" msgstr "Añadir carpeta a la lista" msgid "OK" msgstr "Aceptar" msgid "&File" msgstr "&Archivo" msgid "&New…" msgstr "&Nuevo…" msgid "New from &POT/PO file…" msgstr "Nueva desde archivo &POT/PO…" msgid "New From &POT/PO File…" msgstr "Nueva desde archivo &POT/PO…" msgid "&Open…" msgstr "&Abrir…" msgid "Open Recent" msgstr "Abrir recientes" msgid "Open recent" msgstr "Abrir recientes" msgid "Open cloud translation…" msgstr "Abrir traducción en nube…" msgid "Open Cloud Translation…" msgstr "Abrir traducción en nube…" msgid "&Start window" msgstr "&Ventana de inicio" msgid "&Start Window" msgstr "&Ventana de inicio" msgid "Catalogs &manager" msgstr "&Gestor de catálogos" msgid "Catalogs &Manager" msgstr "&Gestor de catálogos" msgid "&Close" msgstr "&Cerrar" msgid "&Save" msgstr "&Guardar" msgid "Save &as…" msgstr "G&uardar como…" msgid "Save &As…" msgstr "G&uardar como…" msgid "Compile to MO…" msgstr "Compilar en MO…" msgid "E&xport to HTML…" msgstr "" msgid "Check for updates…" msgstr "Buscar actualizaciones…" msgid "Settings…" msgstr "Configuración…" msgid "&Preferences" msgstr "&Preferencias" msgid "E&xit" msgstr "&Salir" msgid "Quit" msgstr "Salir" msgid "Copy from singular" msgstr "Copiar del singular" msgid "Copy From Singular" msgstr "Copiar del singular" msgid "Translation needs &work" msgstr "Traducción por re&visar" msgid "Translation Needs &Work" msgstr "Traducción por re&visar" msgid "Edit &comment" msgstr "Editar &comentario" msgid "Edit &Comment" msgstr "Editar &comentario" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "Sugerencias" msgid "&Find…" msgstr "&Buscar…" msgid "Replace…" msgstr "Reemplazar…" msgid "Find next" msgstr "Buscar siguiente" msgid "Find previous" msgstr "Buscar anterior" msgid "Find and Replace…" msgstr "Buscar y reemplazar…" msgid "Find Next" msgstr "Buscar siguiente" msgid "Find Previous" msgstr "Buscar anterior" msgid "Show string &ID" msgstr "Mostrar &id. de cadena" msgid "Show String &ID" msgstr "Mostrar &id. de cadena" msgid "Show warnings" msgstr "Mostrar alertas" msgid "Show Warnings" msgstr "Mostrar alertas" msgid "Sort by &file order" msgstr "Ordenar por &archivo" msgid "Sort by &File Order" msgstr "Ordenar por &archivo" msgid "Sort by &source" msgstr "Ordenar por &origen" msgid "Sort by &Source" msgstr "Ordenar por &origen" msgid "Sort by &translation" msgstr "Ordenar por &traducción" msgid "Sort by &Translation" msgstr "Ordenar por &traducción" msgid "&Group by context" msgstr "A&grupar por contexto" msgid "&Group By Context" msgstr "A&grupar por contexto" msgid "Entries with errors first" msgstr "Entradas con errores primero" msgid "Entries with Errors First" msgstr "Entradas con errores primero" msgid "&Untranslated entries first" msgstr "Entradas &sin traducir primero" msgid "&Untranslated Entries First" msgstr "Entradas &sin traducir primero" msgid "&Show code occurrences" msgstr "&Mostrar ocurrencias de código" msgid "&Show Code Occurrences" msgstr "&Mostrar ocurrencias de código" msgid "Show sidebar" msgstr "Mostrar barra lateral" msgid "Show status bar" msgstr "Mostrar barra de estado" msgid "&Translation" msgstr "&Traducción" msgid "&Update from source code" msgstr "Actualizar desde código &fuente" msgid "&Update from Source Code" msgstr "Actualizar desde código &fuente" msgid "Update from &POT file…" msgstr "Actualizar desde archivo &POT…" msgid "Update from &POT File…" msgstr "Actualizar desde archivo &POT…" msgid "Sync with Crowdin" msgstr "Sincronizar con Crowdin" msgid "Pre-&translate…" msgstr "Pre&traducir…" msgid "&Validate translations" msgstr "&Validar traducciones" msgid "&Validate Translations" msgstr "&Validar traducciones" msgid "Remove Same-as-Source Translations" msgstr "" msgid "&Purge deleted translations" msgstr "&Purgar traducciones sin usar" msgid "&Purge Deleted Translations" msgstr "&Purgar traducciones sin usar" msgid "&Properties…" msgstr "&Propiedades…" msgid "&Go" msgstr "&Navegar" msgid "&Done and next" msgstr "&Hecho; siguiente" msgid "&Done and Next" msgstr "&Hecho; siguiente" msgid "Previously edited" msgstr "Editada previamente" msgid "Previously Edited" msgstr "Editada previamente" msgid "&Previous translation" msgstr "Traducción &anterior" msgid "&Previous Translation" msgstr "Traducción &anterior" msgid "&Next translation" msgstr "Traducción &siguiente" msgid "&Next Translation" msgstr "Traducción &siguiente" msgid "P&revious unfinished" msgstr "Ante&rior sin terminar" msgid "P&revious Unfinished" msgstr "Ante&rior sin terminar" msgid "Ne&xt unfinished" msgstr "Siguien&te sin terminar" msgid "Ne&xt Unfinished" msgstr "Siguien&te sin terminar" msgid "Previous plural form" msgstr "Forma plural anterior" msgid "Previous Plural Form" msgstr "Forma plural anterior" msgid "Next plural form" msgstr "Forma plural siguiente" msgid "Next Plural Form" msgstr "Forma plural siguiente" msgid "&Online help" msgstr "&Ayuda en línea" msgid "&Online Help" msgstr "&Ayuda en línea" msgid "&GNU gettext manual" msgstr "Manual de &GNU gettext" msgid "&GNU gettext Manual" msgstr "Manual de &GNU gettext" msgid "&About Poedit" msgstr "A&cerca de Poedit" msgid "&About" msgstr "A&cerca de" msgid "Extractor setup" msgstr "Configuración de extractor" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Lista de extensiones separadas por punto y coma (p. ej., *.cpp;*.h):" msgid "Invocation:" msgstr "Ejecución:" msgid "Command to extract translations:" msgstr "Orden para extraer las traducciones:" 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)." msgid "An item in keywords list:" msgstr "Un elemento de la lista de palabras clave:" 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." msgid "An item in input files list:" msgstr "Un elemento de la lista de archivos de entrada:" #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "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." msgid "Source code charset:" msgstr "Conjunto de caracteres del código fuente:" #, 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." msgid "Translation Properties" msgstr "Propiedades de la traducción" msgid "Project name and version:" msgstr "Nombre del proyecto y versión:" msgid "Language team:" msgstr "Equipo de traductores:" msgid "Plural forms:" msgstr "Formas plurales:" msgid "Use default rules for this language" msgstr "Usar reglas predeterminadas de este idioma" msgid "Use custom expression" msgstr "Usar una expresión personalizada" msgid "Learn about plural forms" msgstr "Más información sobre formas plurales" msgid "Charset:" msgstr "Conjunto de caracteres:" msgid "Advanced Extraction Settings…" msgstr "Opciones avanzadas de extracción…" msgid "Advanced extraction settings…" msgstr "Opciones avanzadas de extracción…" msgid "Translation properties" msgstr "Propiedades de traducción" msgid "Sources Paths" msgstr "Rutas de fuentes" msgid "Sources paths" msgstr "Rutas de fuentes" msgid "Extract text from source files in the following directories:" msgstr "" "Extraer textos de archivos de código fuente en las carpetas siguientes:" msgid "Base path:" msgstr "Directorio raíz:" msgid "Sources Keywords" msgstr "Palabras clave de fuentes" msgid "Sources keywords" msgstr "Palabras clave de fuentes" 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:" msgid "Also use default keywords for supported languages" msgstr "" "Utilizar también las palabras clave predeterminadas en los lenguajes " "admitidos" msgid "Learn about gettext keywords" msgstr "Más información sobre las palabras clave de gettext" msgid "Update summary" msgstr "Resumen de la actualización" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" "Se encontraron estas cadenas en el código fuente que faltaban en el " "archivo.\n" "Poedit las añadirá al archivo ahora." msgid "New strings" msgstr "Cadenas nuevas" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" "Estas cadenas ya no están en el código fuente.\n" "Poedit las eliminará del archivo ahora." msgid "Obsolete strings" msgstr "Cadenas obsoletas" msgid "(0 new, 0 obsolete)" msgstr "(0 nuevas, 0 obsoletas)" msgid "Open" msgstr "" msgid "Open file" msgstr "Abrir archivo" msgid "Save file" msgstr "Guardar archivo" msgid "Validate" msgstr "Validar" msgid "Check for errors in the translation" msgstr "Buscar errores en la traducción" msgid "Update from code" msgstr "Actualizar desde código" msgid "Update from Code" msgstr "Actualizar desde código" msgid "Update from source code" msgstr "Actualizar desde código fuente" msgid "Sidebar" msgstr "Barra lateral" msgid "Show or hide the sidebar" msgstr "Mostrar u ocultar la barra lateral" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. msgid "Previous source text" msgstr "Texto de origen anterior" 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." msgid "Notes for translators" msgstr "Notas para traductores" msgid "Comment" msgstr "Comentario" msgid "Add comment" msgstr "Añadir comentario" msgid "Add Comment" msgstr "Añadir comentario" msgid "Delete From Translation Memory" msgstr "Eliminar de la memoria de traducción" msgid "Delete from translation memory" msgstr "Eliminar de la memoria de traducción" msgid "Translation suggestions" msgstr "Sugerencias de traducción" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). 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). msgid "No Matches Found" msgstr "No se hallaron coincidencias" msgid "This string was found in Poedit’s translation memory." msgstr "Esta cadena se encontró en la memoria de traducción de Poedit." 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." 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." msgid "The TMX file is malformed." msgstr "El formato del archivo TMX es erróneo." msgid "No translations were found in the TMX file." msgstr "No se encontró ninguna traducción en el archivo TMX." #, 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)." #, c-format msgid "Translation memory error: %s (%d)." msgstr "Error de la memoria de traducción: %s (%d)." msgid "Cannot create temporary directory." msgstr "No se puede crear la carpeta temporal." msgid "There are no translations. That’s unusual." msgstr "No hay traducciones. Eso es inusual." msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "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 desarrolladores." msgid "(Learn more about GNU gettext)" msgstr "(Más información sobre GNU gettext)" 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:" msgid "Update from POT" msgstr "Actualizar desde POT" msgid "Take translatable strings from an existing POT template." msgstr "Tomar las cadenas traducibles desde una plantilla POT existente." 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:" msgid "Extract from sources" msgstr "Extraer desde código fuente" 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 #, c-format msgid "Version %s" msgstr "Versión %s" msgid "Create new" msgstr "Crear nuevo" msgid "Create new translation from POT template." msgstr "Cree una traducción nueva a partir de una plantilla POT." msgid "Browse files" msgstr "Examinar archivos" msgid "Open and edit translation files." msgstr "Abra y edite archivos de traducción." msgid "Translate cloud project" msgstr "Traducir proyecto en la nube" msgid "Collaborate with other people online." msgstr "Colabore con otras personas en línea." msgid "Recent files" msgstr "Archivos recientes" msgid "Sync" msgstr "Sincronización" 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") #, 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. #, c-format msgid "%s Preferences" msgstr "Preferencias de %s" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "Servicios" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "Ocultar %s" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "Ocultar el resto" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "Mostrar todo" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "Salir de %s" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "Preferencias…" msgid "Preferences..." msgstr "Preferencias…" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "Recientes" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "Frecuentes" msgid "&Apply" msgstr "&Aplicar" msgid "Apply" msgstr "Aplicar" msgid "&Back" msgstr "&Volver" msgid "Back" msgstr "Volver" msgid "&Cancel" msgstr "&Cancelar" msgid "&Clear" msgstr "&Vaciar" msgid "Clear" msgstr "Vaciar" msgid "Copy" msgstr "Copiar" msgid "Cu&t" msgstr "Cor&tar" msgid "Cut" msgstr "Cortar" msgid "Edit" msgstr "Editar" msgid "&Quit" msgstr "&Salir" msgid "Help" msgstr "Ayuda" msgid "&New" msgstr "&Nuevo" msgid "New" msgstr "Nuevo" msgid "&No" msgstr "&No" msgid "No" msgstr "No" msgid "&OK" msgstr "&Aceptar" msgid "Open…" msgstr "Abrir…" msgid "&Open..." msgstr "&Abrir…" msgid "Open..." msgstr "Abrir…" msgid "&Paste" msgstr "&Pegar" msgid "Paste" msgstr "Pegar" msgid "Preferences" msgstr "Preferencias" msgid "&Redo" msgstr "&Rehacer" msgid "Refresh" msgstr "Actualizar" msgid "&Save as" msgstr "G&uardar como" msgid "Save as" msgstr "Guardar como" msgid "Select &All" msgstr "Seleccionar &todo" msgid "Select All" msgstr "Seleccionar todo" msgid "&Undo" msgstr "&Deshacer" msgid "&Yes" msgstr "&Sí" msgid "Yes" msgstr "Sí" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Mayús+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Intro" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "Arriba" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "Abajo" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "Izquierda" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "Derecha" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "mayús" poedit-3.5/locales/az.po0000644000175100001770000015567414664354152012221 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "Bu bildiriş mesajını gizlədin" msgid "Don’t Show Again" msgstr "Təkrar Göstərmə" msgid "Don’t show again" msgstr "Təkrar göstərmə" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(Yeni: %i, köhnə: %i)" msgid "Collecting source files…" msgstr "Mənbə faylları yığılır…" msgid "Extracting translatable strings…" msgstr "Tərcümə edilə bilən sətirlər ixrac edilir…" msgid "Failed to load file with extracted translations." msgstr "İxrac edilmiş tərcümələrlə faylı yükləmə uğursuz oldu." msgid "Merging differences…" msgstr "Fərqliliklər birləşdirilir…" msgid "Updating translations" msgstr "Tərcümələr yenilənir" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "" msgid "Invalid file" msgstr "Xətalı fayl" #, c-format msgid "Malformed header: “%s”" msgstr "Səhv yazılmış başlıq: “%s”" msgid "PO Translation Files" msgstr "PO Tərcümə Faylları" msgid "POT Translation Templates" msgstr "POT Tərcümə Şablonları" msgid "XLIFF Translation Files" msgstr "XLIFF Tərcümə Faylları" msgid "JSON Translation Files" msgstr "" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "" msgid "All Translation Files" msgstr "Bütün Tərcümə Faylları" msgid "The file is in a format not recognized by Poedit." msgstr "" msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" #, c-format msgid "Reading file content failed with the following error: %s" msgstr "" #, 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." #, c-format msgid "Couldn’t save file %s." msgstr "%s faylı saxlanıla bilmədi." msgid "Screenshots:" msgstr "" #, c-format msgid "%i line of file “%s” was not loaded correctly." msgid_plural "%i lines of file “%s” were not loaded correctly." msgstr[0] "“%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." #, 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)." 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" 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" msgid "Couldn’t load the file, it is probably damaged." msgstr "" 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." 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ı)." #, 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 "" msgid "Error saving file" msgstr "Fayl saxlayarkən xəta" #, c-format msgid "“%s” is not a valid POT file." msgstr "“%s” etibarlı bir POT faylı deyil." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "" #, c-format msgid "unsupported version (%s)" msgstr "" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML msgid "Broken markup in translation string." msgstr "Tərcümə sətrində zədəli işarələmə." msgid "(Use default language)" msgstr "(İlkin dili istifadə et)" msgid "Language selection" msgstr "Dil seçimi" msgid "Select your preferred language" msgstr "Tərcih etdiyiniz dili seçin" 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." msgid "Add Account" msgstr "" msgid "Add account" msgstr "" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "" msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" msgid "How does cloud sync work?" msgstr "" msgid "Account" msgstr "" msgid "(not signed in)" msgstr "" msgid "File" msgstr "Fayl" msgid "Open cloud translation" msgstr "" msgid "Manage accounts" msgstr "" msgid "Project:" msgstr "Layihə:" msgid "Language:" msgstr "Dil:" msgid "Sign in to Cloud Account" msgstr "" msgid "Sign in to cloud account" msgstr "" msgid "No translation projects listed in your account." msgstr "" 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" #, c-format msgid "Sign in to %s" msgstr "" msgid "Syncing" msgstr "Eyniləşdirilir" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s…" msgstr "" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s failed." msgstr "" msgid "Syncing error" msgstr "Eyniləşdirmə xətası" msgid "Add" msgstr "Əlavə et" msgid "Unknown Crowdin error." msgstr "" msgid "Not authorized, please sign in again." msgstr "Səlahiyyətiniz yoxdur, zəhmət olmasa təkrar daxil olun." msgid "Downloading translations is disabled in this project." msgstr "Bu layihədə tərcümələri endirmək sıradan çıxarıldı." msgid "Sign In" msgstr "Daxil Ol" msgid "Sign in" msgstr "Daxil ol" msgid "Sign Out" msgstr "Çıxış Et" msgid "Sign out" msgstr "Çıxış et" msgid "Learn more about Crowdin" msgstr "Crowdin haqqında daha ətraflı əldə edin" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" msgid "Waiting for authentication…" msgstr "Kimlik təsdiqləməsi üçün gözlənilir…" msgid "Updating user information…" msgstr "İstifadəçi məlumatları yenilənir..." msgid "Sign in to Crowdin" msgstr "Crowdin-də daxil olun" msgid "Syncing with Crowdin failed." msgstr "Crowdin ilə sinxronlaşdırma baş tutmadı." msgid "Crowdin error" msgstr "Crowdin xətası" msgid "Uploading translations…" msgstr "Tərcümələr göndərilir…" msgid "&Copy" msgstr "&Köçür" msgid "Learn more" msgstr "Daha çox öyrən" msgid "&Help" msgstr "&Yardım" msgid "MO files can’t be directly edited in Poedit." msgstr "MO faylları birbaşa Poedit içində redaktə edilə bilməz." msgid "Error opening file" msgstr "Fayl açılması sırasında xəta" 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." msgid "don’t delete temporary files (for debugging)" msgstr "" msgid "handle a poedit:// URI" msgstr "bir poedit:// URI" msgid "go to item at given line number" msgstr "" msgid "Failed to communicate with Poedit process." msgstr "Poedit əməliyyatı ilə əlaqə qurmaq baş tutmadı." #, c-format msgid "Unhandled exception occurred: %s" msgstr "Gözlənilməz bir xəta baş verdi: %s" msgid "Select translation template" msgstr "" msgid "Select translation file" msgstr "" msgid "Poedit is an easy to use translation editor." msgstr "Poedit asan istifadə edilə bilən bir tərcümə redaktorudur." msgid "You can’t drop more than one file on Poedit window." msgstr "" #, c-format msgid "File “%s” is not a translation file." msgstr "" #, c-format msgid "File “%s” doesn’t exist." msgstr "" 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". #, 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." msgid "Install" msgstr "Qur" #, c-format msgid "The file “%s” has been changed by another application." msgstr "" msgid "Reload file" msgstr "" msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" msgid "Ignore" msgstr "" msgid "Reload File" msgstr "" msgid "The file has been modified. Do you want to save changes?" msgstr "" msgid "Save changes" msgstr "Dəyişiklikləri qeyd et" msgid "Your changes will be lost if you don’t save them." msgstr "" msgid "Save" msgstr "Qeyd et" msgid "Do&n’t save" msgstr "" msgid "Don’t Save" msgstr "Qeyd etmə" msgid "The changes made by the other application will be lost if you save." msgstr "" msgid "Cancel" msgstr "İmtina" msgid "Save Anyway" msgstr "" msgid "Save anyway" msgstr "" msgid "Save as…" msgstr "Fərqli saxla…" msgid "Compile to…" msgstr "" msgid "Compiled Translation Files" msgstr "Kompliyasiya Edilmiş Tərcümə Faylları" msgid "Export to HTML…" msgstr "" msgid "HTML Files" msgstr "HTML Faylları" #, c-format msgid "In: %s" msgstr "" msgid "Source code not available." msgstr "Mənbə kodu əlçatan deyil." msgid "Updating failed" msgstr "Yenilənmə baş tutmadı" 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 "" msgid "Permission denied." msgstr "" 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. 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. msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" msgid "Translation entries in the file are probably incorrect." msgstr "" msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "" msgid "Open translation template" msgstr "" #, 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ı." msgid "Validation results" msgstr "Təsdiqləmə nəticələri" 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." msgid "The file was saved safely." msgstr "Fayl təhlükəsiz bir şəkildə qeyd edildi." 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." 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ı." 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." 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." msgid "No problems with the translation found." msgstr "Tərcümə ilə əlaqqədar heç bir problem tapılmadı." #, 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." msgid "The translation is ready for use." msgstr "Tərcümə istifadə üçün hazırdır." #, 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." 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 "" msgid "Language of the translation isn’t set." msgstr "" msgid "Set Language" msgstr "Dili Qur" msgid "Set language" msgstr "Dil qurun" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." msgid "" "Suggestions are not available if the translation language is not set " "correctly. Other features, such as plural forms, may be affected as well." msgstr "" "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." msgid "Language of the translation is the same as source language." msgstr "Tərcümə dili mənbə dili ilə eynidir." msgid "Fix Language" msgstr "Dili Düzəlt" msgid "Fix language" msgstr "Dili düzəlt" msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" msgid "Required header Plural-Forms is missing." msgstr "Gərəkli başlıq Cəm-Formatları əksikdir." #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Cəm-Formatı başlığında sintaksis xətası (\"%s\")." msgid "Fix the Header" msgstr "Başlığı Düzəlt" 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". #, 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.")" msgid "Review" msgstr "Baxış" msgid "Would you like to use English for source text?" msgstr "" #, 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" msgid "Load English" msgstr "" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "%d / %d (%d %%) tərcümə edildi" #, c-format msgid "Remaining: %d" msgstr "Qalan: %d" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d xəta" msgstr[1] "%d xəta" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d yazı" msgstr[1] "%d yazı" msgid " (unsaved)" msgstr " (qeyd edilməmiş)" msgid " (modified)" msgstr " (modifikasiya edilmiş)" #, c-format msgid "Failed to update translation memory: %s" msgstr "Tərcümə yaddaşı yenilənə bilmədi: %s" msgid "Remove same-as-source translations" msgstr "" msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" msgid "Keep" msgstr "Tut" msgid "Remove" msgstr "" msgid "Purge deleted translations" msgstr "Silinmiş tərcümələri yox edin" 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?" 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." msgid "Purge" msgstr "Yox edin" msgid "Copy from source text" msgstr "Mənbə mətnindən köçür" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "Tərcüməni təmizlə" msgid "Clear Translation" msgstr "Tərcüməni Təmizlə" msgid "Edit comment" msgstr "Şərhi redaktə et" msgid "Edit Comment" msgstr "Şərhi Redaktə Et" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "" msgid "Hide Sidebar" msgstr "Yan menyunu Gizlət" msgid "Show Sidebar" msgstr "Yan menyunu Göstər" msgid "Hide Status Bar" msgstr "Status Çubuğunu Gizlət" msgid "Show Status Bar" msgstr "Status Çubuğunu Göstər" msgid "String length in characters: translation | source" msgstr "" msgid "String length in characters" msgstr "" msgid "Source text" msgstr "Mənbə mətni" msgid "Singular" msgstr "Tək" msgid "Plural" msgstr "Cəm" msgid "Translation" msgstr "Tərcümə" msgid "Pre-translated" msgstr "" 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. msgid "Needs work" msgstr "" msgid "" "POT files are only templates and don’t contain any translations themselves.\n" "To make a translation, create a new PO file based on the template." msgstr "" "POT 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." msgid "Create new translation" msgstr "Yeni tərcümə yarat" 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 msgid "Source text ID" msgstr "" msgid "Everything" msgstr "Hər şey" #, c-format msgid "Form %i" msgstr "Format %i" #, c-format msgid "Form %i (unused)" msgstr "" msgid "Zero" msgstr "Sıfır" msgid "One" msgstr "Bir" msgid "Two" msgstr "İki" msgid "Other" msgstr "Digər" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, c-format msgid "String context: %s" msgstr "" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #, c-format msgid "String identifier: %s" msgstr "" #, c-format msgid "%s Format" msgstr "%s Format" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "%s format" #, c-format msgid "Translation — %s" msgstr "Tərcümə — %s" msgid "ID" msgstr "ID" #, c-format msgid "Source text — %s" msgstr "Mənbə mətni — %s" msgid "unknown language" msgstr "bilinməyən dil" #, c-format msgid "Network error: %s (%d)" msgstr "" msgid "Unknown error" msgstr "" #, c-format msgid "Failed command: %s" msgstr "Əmr xətası: %s" msgid "Failed to merge gettext catalogs." msgstr "Gettext kataloqlarını birləşdirərkən bir xəta baş verdi." msgid "Open in Editor" msgstr "Redaktorda Aç" msgid "Open in editor" msgstr "Redaktorda aç" msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" msgid "No usage information" msgstr "" #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "" msgstr[1] "" msgid "Source code not found" msgstr "" 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 "" msgid "File cannot be opened" msgstr "" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "" msgid "Find" msgstr "Tap" msgid "Replace" msgstr "Dəyişdir" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "Parametrlər" msgid "Ignore case" msgstr "Böyük-kiçik hərfləri gözardı et" msgid "Wrap around" msgstr "Çevrəsində sürüşdür" msgid "Whole words only" msgstr "Mətnə eyni ilə uyğun gələnləri tap" msgid "Find in source texts" msgstr "Mənbə mətnlərdə axtar" msgid "Find in translations" msgstr "Tərcümələrdə tap" msgid "Find in comments" msgstr "Şərhlərdə tapın" msgid "Close" msgstr "Bağla" msgid "Replace &All" msgstr "Dəyişdir &Hamısını" msgid "Replace &all" msgstr "Dəyişdir &Hamısını" msgid "&Replace" msgstr "&Dəyişdir" msgid "< &Previous" msgstr "< &Öncəki" msgid "&Next >" msgstr "&Sonrakı >" msgid "String to find" msgstr "Tapılacaq sətir" msgid "Replacement string" msgstr "Dəyişdirmə sətri" #, c-format msgid "Cannot execute program: %s" msgstr "Proqram işə salına bilmir: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "" msgid "Translation Language" msgstr "Tərcümə Dili" msgid "Language of the translation:" msgstr "Tərcümə dili:" msgid "All strings" msgstr "" msgid "Couldn’t download Localazy project details." msgstr "" msgid "There was an error when uploading translations to Localazy." msgstr "" msgid "Projects" msgstr "" msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" msgid "Add Project" msgstr "" msgid "Add project" msgstr "" msgid "Poedit - Catalogs manager" msgstr "Poedit - Kataloq meneceri" msgid "Edit…" msgstr "Redaktə et…" msgid "Create new translations project" msgstr "Yeni tərcümə layihəsi hazırlayın" msgid "Delete the project" msgstr "Layihəni sil" msgid "Edit the project" msgstr "Layihəni redaktə et" msgid "Update all" msgstr "Tamamını yenilə" msgid "Update all catalogs in the project" msgstr "Layihədəki bütün kataloqları yenilə" msgid "Total" msgstr "Ümumi" msgid "Untrans" msgstr "Tərcümə edilməmiş" msgctxt "column/row header" msgid "Needs Work" msgstr "" msgid "Errors" msgstr "Xətalar" msgid "Last modified" msgstr "Son modifikasiya" msgid "Select directory" msgstr "Direktoriya seç" msgid "Directories:" msgstr "Direktoriyalar:" msgid "" msgstr "" #, c-format msgid "Do you want to delete project “%s”?" msgstr "" msgid "Delete project" msgstr "" msgid "Deleting the project will not delete any translation files." msgstr "" msgid "Confirmation" msgstr "Təsdiq" msgid "Update all catalogs in this project?" msgstr "" msgid "Performs update from source code on all files in the project." msgstr "" msgid "Check for Updates…" msgstr "Yenilikləri yoxla…" msgid "Catalogs Manager" msgstr "Kataloq Meneceri" msgid "&Preferences…" msgstr "&Üstünlüklər…" msgid "&Edit" msgstr "&Redaktə et" msgid "Undo" msgstr "Geri qaytar" msgid "Redo" msgstr "Yeniləyin" msgid "Paste and Match Style" msgstr "Yapışdır və Stilləri Tutuşdur" msgid "Delete" msgstr "Sil" msgid "Spelling and Grammar" msgstr "Yazma və Qrammatika" msgid "Show Spelling and Grammar" msgstr "Yazma və Qrammatikanı Göstər" msgid "Check Document Now" msgstr "Sənədi Yenidən Yoxla" msgid "Check Spelling While Typing" msgstr "Tərcümə vaxtı orfoqrafiyanı yoxla" msgid "Check Grammar With Spelling" msgstr "Qrammatikanı və Yazma Qaydasını Yoxla" msgid "Correct Spelling Automatically" msgstr "Yazı Avtomatik Korreksiya Edilsin" msgid "Substitutions" msgstr "Dəyişikliklər" msgid "Show Substitutions" msgstr "Dəyişikliklər Göstərilsin" msgid "Smart Copy/Paste" msgstr "Ağıllı Köçürmə/Yapışdırma" msgid "Smart Quotes" msgstr "Ağıllı Sitatlar" msgid "Smart Dashes" msgstr "Ağıllı Tirelər" msgid "Smart Links" msgstr "Ağıllı Bağlantılar" msgid "Text Replacement" msgstr "Mətn Dəyişikliyi" msgid "Transformations" msgstr "Transformasiyalar" msgid "Make Upper Case" msgstr "Böyük Hərfə Çevirin" msgid "Make Lower Case" msgstr "Kiçik Hərfə Çevirin" msgid "Capitalize" msgstr "Böyüdün" msgid "Speech" msgstr "Danışın" msgid "Start Speaking" msgstr "Danışmağa Başlayın" msgid "Stop Speaking" msgstr "Danışmağı Dayandırın" msgid "&View" msgstr "&Bax" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item 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 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 msgid "Enter Full Screen" msgstr "Tam Ekran Daxil edin" msgid "Window" msgstr "Pəncərə" msgid "Minimize" msgstr "Minimallaşdır" msgid "Zoom" msgstr "Yaxınlaşdır" msgid "Welcome to Poedit" msgstr "Poedit-ə Xoş Gəlmisiniz" msgid "Bring All to Front" msgstr "Tamamını Önə Gətir" msgid "Information about the translator" msgstr "Tərcüməçi haqqında məlumat" msgid "Name:" msgstr "Ad:" msgid "Your Name" msgstr "Adınız" msgid "Email:" msgstr "E-poçt:" msgid "you@example.com" msgstr "" 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." msgid "Editing" msgstr "Redaktə" msgid "Automatically compile MO file when saving" msgstr "Qeyd etmə sırasında MO faylının kompliyasiyası" msgid "Show summary after updating files" msgstr "" msgid "Check spelling" msgstr "Yazma qaydasını yoxla" msgid "Always change focus to text input field" msgstr "Hər zaman giriş sahəsində mətn fokusunu dəyişdir" 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." msgid "Appearance" msgstr "Görünüş" msgid "Use custom list font:" msgstr "Özəl şrift siyahısından istifadə et:" msgid "Use custom text fields font:" msgstr "Özəl şrift sahəsindən istifadə et:" msgid "Change UI language" msgstr "İnrfeys dilini dəyiş" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions msgid "(requires Windows 8 or newer)" msgstr "(Windows 8 və ya daha yenisi gərəkdir)" msgid "General" msgstr "Əsas" msgid "Use translation memory" msgstr "Tərcümə yaddaşından istifadə et" msgid "Manage…" msgstr "" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "" 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 "" msgid "Stored translations:" msgstr "Qeyd edilmiş tərcümələr:" msgid "Database size on disk:" msgstr "Verilənlər bazasının diskdəki ölçüsü:" msgid "Import Translation Files…" msgstr "" msgid "Import translation files…" msgstr "" msgid "Import From TMX…" msgstr "" msgid "Import from TMX…" msgstr "" msgid "Export To TMX…" msgstr "" msgid "Export to TMX…" msgstr "" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). msgid "Reset" msgstr "Sıfırla" msgid "Select translation files to import" msgstr "İdxal ediləcək tərcümə fayllarını seçin" msgid "Translation Memory" msgstr "Tərcümə Yaddaşı" msgid "Importing translations…" msgstr "" #, c-format msgid "Error loading translation file “%s”." msgstr "" msgid "Finalizing…" msgstr "Tamamlanır…" msgid "Select TMX files to import" msgstr "" msgid "TMX Files" msgstr "" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "" msgid "Import error" msgstr "" msgid "Export as…" msgstr "Fərqli ixrac et…" msgid "Exporting translations…" msgstr "" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "" msgid "Export error" msgstr "" msgid "Reset translation memory" msgstr "Tərcümə yaddaşını sıfırla" msgid "Are you sure you want to reset the translation memory?" msgstr "Tərcümə yaddaşını sıfırlamaq istədiyinizə əminsiniz?" 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. msgid "TM" msgstr "TY" 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." msgid "Custom Extractors:" msgstr "" msgid "Custom extractors:" msgstr "" msgid "GNU gettext" msgstr "GNU gettext" msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" msgid "Delete extractor" msgstr "Ekstraktoru sil" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "“%s” ekstraktorunu silmək istədiyinizdən əminsinizmi?" msgid "Extractors" msgstr "Ekstraktorlar" msgid "Accounts" msgstr "Hesablar" msgid "Automatically check for updates" msgstr "Yenilənmələr üçün avtomatik yoxla" msgid "Include beta versions" msgstr "Beta versiyaları da alınsın" 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." msgid "Updates" msgstr "Yenilənmələr" 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." msgid "Line endings:" msgstr "Sətir sonları:" msgid "Unix (recommended)" msgstr "Unix (məsləhət görülür)" msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "Sürüşdürmə yönü:" msgid "Preserve formatting of existing files" msgstr "Var olan faylların formatını qoru" msgid "Advanced" msgstr "Qabaqcıl" msgid "Settings" msgstr "" msgid "Preparing strings…" msgstr "" msgid "Pre-translating from translation memory…" msgstr "" #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "" msgstr[1] "" msgid "Pre-translating…" msgstr "" 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. msgid "Pre-translate" msgstr "" msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" msgid "Cannot pre-translate from unknown language." msgstr "" msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" msgid "Only fill in exact matches" msgstr "Sadəcə tam uyğunluqları doldur" msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" msgid "Don’t mark exact matches as needing work" msgstr "" 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 "" msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "" msgstr[1] "" msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" msgid "No entries could be pre-translated." msgstr "" msgid "" "The TM doesn’t contain any strings similar to the content of this file. It " "is only effective for semi-automatic translations after Poedit learns enough " "from files that you translated manually." msgstr "" "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." msgid "Cancelling…" msgstr "" msgid "Drag Folders or Files Here" msgstr "" msgid "Drag folders or files here" msgstr "" msgid "Add Folders…" msgstr "" msgid "Add folders…" msgstr "" msgid "Add Files…" msgstr "" msgid "Add files…" msgstr "" msgid "Add Wildcard…" msgstr "" msgid "Add wildcard…" msgstr "" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) msgid "Reveal in Finder" msgstr "" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" msgid "Show in Explorer" msgstr "" msgid "Show in Folder" msgstr "" msgid "Paths" msgstr "Yollar" msgid "Excluded paths" msgstr "İstisna edilmiş yollar" msgid "Advanced extraction settings" msgstr "" msgid "Extract notes for translators from:" msgstr "" msgid "Comments prefixed with:" msgstr "" msgid "All comments" msgstr "Bütün şərhlər" msgid "Additional xgettext flags:" msgstr "" msgid "Additional keywords" msgstr "Əlavə açar kəlmələr" msgid "Name of the project the translation is for" msgstr "Bunun üçün hazırlanan tərcümənin adı:" msgid "Team name and email address or URL" msgstr "" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "məs. nplurals=2; plural=(n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (məsləhət görülür)" 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." msgid "Placeholders correctness" msgstr "" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "" #, c-format msgid "Superfluous placeholder “%s” that isn’t in source text." msgstr "" msgid "Plural form translations" msgstr "" msgid "Not all plural forms are translated." msgstr "" msgid "Inconsistent upper/lower case" msgstr "" msgid "The translation should start as a sentence." msgstr "" msgid "The translation should start with a lowercase character." msgstr "" msgid "Inconsistent whitespace" msgstr "" msgid "The translation doesn’t start with a space." msgstr "" msgid "The translation starts with a space, but the source text doesn’t." msgstr "" msgid "The translation is missing a newline at the end." msgstr "" msgid "The translation ends with a newline, but the source text doesn’t." msgstr "" msgid "The translation is missing a space at the end." msgstr "" msgid "The translation ends with a space, but the source text doesn’t." msgstr "" msgid "Punctuation checks" msgstr "" #, c-format msgid "The translation should end with “%s”." msgstr "" #, c-format msgid "The translation should not end with “%s”." msgstr "" #, c-format msgid "The translation ends with “%s”, but the source text ends with “%s”." msgstr "" msgid "Cloud" msgstr "" msgid "Clear Menu" msgstr "" msgid "Clear menu" msgstr "" msgid "Comment:" msgstr "Şərh:" msgid "Update" msgstr "" msgid "&Delete" msgstr "&Sİl" msgid "Delete the comment" msgstr "" msgid "Edit project" msgstr "Layihəni redaktə et" msgid "Project name:" msgstr "Layihənin adı:" msgid "Browse" msgstr "Gətir" msgid "Add directory to the list" msgstr "Siyahıya kataloq əlavə et" msgid "OK" msgstr "OK" msgid "&File" msgstr "&Fayl" msgid "&New…" msgstr "&Yeni…" msgid "New from &POT/PO file…" msgstr "&POT/PO faylından yenisi…" msgid "New From &POT/PO File…" msgstr "&POT/PO Faylından Yenisi…" msgid "&Open…" msgstr "&Aç…" msgid "Open Recent" msgstr "Son İstifadə Edilənləri Açın" msgid "Open recent" msgstr "" msgid "Open cloud translation…" msgstr "" msgid "Open Cloud Translation…" msgstr "" msgid "&Start window" msgstr "" msgid "&Start Window" msgstr "" msgid "Catalogs &manager" msgstr "Kataloq &meneceri" msgid "Catalogs &Manager" msgstr "Kataloq &Meneceri" msgid "&Close" msgstr "&Bağla" msgid "&Save" msgstr "&Qeyd et" msgid "Save &as…" msgstr "" msgid "Save &As…" msgstr "" msgid "Compile to MO…" msgstr "MO faylına kompliyasiya et…" msgid "E&xport to HTML…" msgstr "" msgid "Check for updates…" msgstr "Yenilənmələr üçün yoxla…" msgid "Settings…" msgstr "" msgid "&Preferences" msgstr "&Xüsusiyyətlər" msgid "E&xit" msgstr "Ç&ıx" msgid "Quit" msgstr "Çıx" msgid "Copy from singular" msgstr "Tək olandan köçür" msgid "Copy From Singular" msgstr "Tək Olandan Köçür" msgid "Translation needs &work" msgstr "" msgid "Translation Needs &Work" msgstr "" msgid "Edit &comment" msgstr "&Şərhi redaktə et" msgid "Edit &Comment" msgstr "&Şərhi Redaktə Et" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "Məsləhətlər" msgid "&Find…" msgstr "&Tap…" msgid "Replace…" msgstr "Dəyişdir…" msgid "Find next" msgstr "Sonrakını tapın" msgid "Find previous" msgstr "Öncəkini tapın" msgid "Find and Replace…" msgstr "Tap və Dəyişdir…" msgid "Find Next" msgstr "Sonrakını Tapın" msgid "Find Previous" msgstr "Öncəkini Tapın" msgid "Show string &ID" msgstr "" msgid "Show String &ID" msgstr "" msgid "Show warnings" msgstr "" msgid "Show Warnings" msgstr "" msgid "Sort by &file order" msgstr "&Fayldakı sıraya görə sırala" msgid "Sort by &File Order" msgstr "&Fayldakı Sıraya Görə Sırala" msgid "Sort by &source" msgstr "&Mənbəyə görə sırala" msgid "Sort by &Source" msgstr "&Mənbə Mətninə Görə Sırala" msgid "Sort by &translation" msgstr "&Tərcüməyə görə sırala" msgid "Sort by &Translation" msgstr "&Tərcüməyə Görə Sırala" msgid "&Group by context" msgstr "&Kontekstə görə qrup" msgid "&Group By Context" msgstr "&Kontekstə Görə Qrup" msgid "Entries with errors first" msgstr "Əvvəlcə xətalı olan yazılar" msgid "Entries with Errors First" msgstr "Əvvəlcə Xətalı Olan Yazılar" msgid "&Untranslated entries first" msgstr "&Tərcümə edilməmiş yazılar ən üstdə görünsün" msgid "&Untranslated Entries First" msgstr "&Tərcümə Edilməmiş Yazılar Ən Üstdə Görünsün" msgid "&Show code occurrences" msgstr "" msgid "&Show Code Occurrences" msgstr "" msgid "Show sidebar" msgstr "Yan menyunu göstər" msgid "Show status bar" msgstr "Status çubuğunu göstər" msgid "&Translation" msgstr "" msgid "&Update from source code" msgstr "" msgid "&Update from Source Code" msgstr "" msgid "Update from &POT file…" msgstr "" msgid "Update from &POT File…" msgstr "" msgid "Sync with Crowdin" msgstr "Crowdin ilə Sinxronlaşdırın" msgid "Pre-&translate…" msgstr "" msgid "&Validate translations" msgstr "&Tərcümələri təsdiqlə" msgid "&Validate Translations" msgstr "&Tərcümələri Təsdiqlə" msgid "Remove Same-as-Source Translations" msgstr "" msgid "&Purge deleted translations" msgstr "&Silinmiş tərcümələri yox edin" msgid "&Purge Deleted Translations" msgstr "&Silinmiş Tərcümələri Yox Edin " msgid "&Properties…" msgstr "" msgid "&Go" msgstr "&Get" msgid "&Done and next" msgstr "&Tamamla və sonrakı" msgid "&Done and Next" msgstr "&Tamamla və Sonrakı" msgid "Previously edited" msgstr "" msgid "Previously Edited" msgstr "" msgid "&Previous translation" msgstr "&Öncəki tərcümə" msgid "&Previous Translation" msgstr "&Öncəki Tərcümə" msgid "&Next translation" msgstr "&Sonrakı tərcümə" msgid "&Next Translation" msgstr "&Sonrakı Tərcümə" msgid "P&revious unfinished" msgstr "Ö&ncəki tamamlanmamış" msgid "P&revious Unfinished" msgstr "Ö&ncəki Tamamlanmamış" msgid "Ne&xt unfinished" msgstr "S&onrakı tamamlanmamış" msgid "Ne&xt Unfinished" msgstr "S&onrakı Tamamlanmamış" msgid "Previous plural form" msgstr "Əvvəlki cəm növü" msgid "Previous Plural Form" msgstr "Əvvəlki Cəm Növü" msgid "Next plural form" msgstr "Növbəti cəm növü" msgid "Next Plural Form" msgstr "Növbəti Cəm Növü" msgid "&Online help" msgstr "&Onlayn yardım" msgid "&Online Help" msgstr "&Onlayn Yardım" msgid "&GNU gettext manual" msgstr "&GNU gettext kitabı" msgid "&GNU gettext Manual" msgstr "&GNU gettext Kitabı" msgid "&About Poedit" msgstr "&Poedit Haqqında" msgid "&About" msgstr "&Haqqında" msgid "Extractor setup" msgstr "Ekstraktoru qur" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Vergüllə ayrılmış uzantı siyahısı (məs. *.cpp;*.h):" msgid "Invocation:" msgstr "Çağrış:" msgid "Command to extract translations:" msgstr "Tərcümələri çıxarmaq üçün əmr:" 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)." msgid "An item in keywords list:" msgstr "Açar kəlmələri siyahısındakı bir maddə:" 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." msgid "An item in input files list:" msgstr "Giriş faylları siyahısındakı bir maddə:" #, 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." msgid "Source code charset:" msgstr "Mənbə kodu kodlaşması:" #, 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." msgid "Translation Properties" msgstr "" msgid "Project name and version:" msgstr "Layihənin adı və versiyası:" msgid "Language team:" msgstr "Dil komandası:" msgid "Plural forms:" msgstr "" msgid "Use default rules for this language" msgstr "Bu dil üçün mövcud qaydalardan istifadə edilsin" msgid "Use custom expression" msgstr "Özəl ifadədən istifadə edilsin" msgid "Learn about plural forms" msgstr "Cəm formatları öyrənin" msgid "Charset:" msgstr "Kodlaşdırma:" msgid "Advanced Extraction Settings…" msgstr "" msgid "Advanced extraction settings…" msgstr "" msgid "Translation properties" msgstr "Tərcümə xüsusiyyətləri" msgid "Sources Paths" msgstr "" msgid "Sources paths" msgstr "Mənbə yolları" msgid "Extract text from source files in the following directories:" msgstr "Mənbə fayllarındakı mətnləri bu direktoriyaya çıxart:" msgid "Base path:" msgstr "Əsas yol:" msgid "Sources Keywords" msgstr "" msgid "Sources keywords" msgstr "Mənbə açar kəlmələri" 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." msgid "Also use default keywords for supported languages" msgstr "" msgid "Learn about gettext keywords" msgstr "Gettext açar kəlmələrindən öyrənilsin" msgid "Update summary" msgstr "Yenilənmənin nəticəsi" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" msgid "New strings" msgstr "Yeni sətir" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" msgid "Obsolete strings" msgstr "Əski sətirlər" msgid "(0 new, 0 obsolete)" msgstr "(0 yeni, 0 əski)" msgid "Open" msgstr "" msgid "Open file" msgstr "" msgid "Save file" msgstr "" msgid "Validate" msgstr "Təsdiqlə" msgid "Check for errors in the translation" msgstr "Tərcümədəki xətaları yoxla" msgid "Update from code" msgstr "" msgid "Update from Code" msgstr "" msgid "Update from source code" msgstr "" msgid "Sidebar" msgstr "Yan menyu" 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. msgid "Previous source text" msgstr "" msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" msgid "Notes for translators" msgstr "" msgid "Comment" msgstr "" msgid "Add comment" msgstr "Şərh əlavə et" msgid "Add Comment" msgstr "Şərh Əlavə Et" msgid "Delete From Translation Memory" msgstr "Tərcümə Yaddaşından Sil" msgid "Delete from translation memory" msgstr "Tərcümə yaddaşından sil" msgid "Translation suggestions" msgstr "" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). 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). msgid "No Matches Found" msgstr "Uyğunluq Tapılmadı" msgid "This string was found in Poedit’s translation memory." msgstr "Bu sətr Poedit-in TY tapıldı." msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" msgid "The TMX file is malformed." msgstr "" msgid "No translations were found in the TMX file." msgstr "" #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "" #, c-format msgid "Translation memory error: %s (%d)." msgstr "" msgid "Cannot create temporary directory." msgstr "Müvəqqəti direktoriya yaradıla bilmir." msgid "There are no translations. That’s unusual." msgstr "Orada heç bir tərcümə yoxdur. Bu qeyri-adi bir şeydir." msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "Translators typically use PO template files (POTs) prepared for them by the " "developer." msgstr "" msgid "(Learn more about GNU gettext)" msgstr "(GNU GETTEXT haqqında daha ətraflı məlumat)" msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" msgid "Update from POT" msgstr "POT-dan Yenilə" 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." 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:" msgid "Extract from sources" msgstr "Mənbələrdən alınsın" msgid "Configure source code extraction in Properties." msgstr "Xüsusiyyətlər bölməsindən mənbə koddan almağı konfiqurasiya edin." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #, c-format msgid "Version %s" msgstr "Versiya %s" msgid "Create new" msgstr "" msgid "Create new translation from POT template." msgstr "" msgid "Browse files" msgstr "" msgid "Open and edit translation files." msgstr "" msgid "Translate cloud project" msgstr "" msgid "Collaborate with other people online." msgstr "" msgid "Recent files" msgstr "" msgid "Sync" msgstr "Sinxronlaşdır" 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") #, 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. #, c-format msgid "%s Preferences" msgstr "%s Nizamlamalar" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "Xidmətlər" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "%s Gizlət" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "Digərlərini Gizlət" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "Hamısını Göstər" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "%s Çıx" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "Ayarlar…" msgid "Preferences..." msgstr "Xüsusiyyətlər..." #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "Ən Son" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "Sıx" msgid "&Apply" msgstr "&Tətbiq et" msgid "Apply" msgstr "Tətbiq et" msgid "&Back" msgstr "&Geri" msgid "Back" msgstr "Geri" msgid "&Cancel" msgstr "İ&mtina" msgid "&Clear" msgstr "&Təmizlə" msgid "Clear" msgstr "Təmizlə" msgid "Copy" msgstr "Köçür" msgid "Cu&t" msgstr "Kə&s" msgid "Cut" msgstr "Kəs" msgid "Edit" msgstr "Redaktə et" msgid "&Quit" msgstr "Çı&x" msgid "Help" msgstr "Yardım" msgid "&New" msgstr "&Yeni" msgid "New" msgstr "Yeni" msgid "&No" msgstr "&Xeyr" msgid "No" msgstr "Xeyr" msgid "&OK" msgstr "&OK" msgid "Open…" msgstr "Aç…" msgid "&Open..." msgstr "&Aç..." msgid "Open..." msgstr "Aç..." msgid "&Paste" msgstr "&Yapışdır" msgid "Paste" msgstr "Yapışdır" msgid "Preferences" msgstr "Ayarlar" msgid "&Redo" msgstr "&Yenilə" msgid "Refresh" msgstr "Təzələ" msgid "&Save as" msgstr "&Fərqli qeyd et" msgid "Save as" msgstr "Fərqli qeyd et" msgid "Select &All" msgstr "Tamamını &Seç" msgid "Select All" msgstr "Tamamını Seç" msgid "&Undo" msgstr "&Geri Al" msgid "&Yes" msgstr "&Bəli" msgid "Yes" msgstr "Bəli" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "Yuxarı" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "Aşağı" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "Sol" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "Sağ" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "shift" poedit-3.5/locales/bg.mo0000644000175100001770000022711014664354153012156 00000000000000|+: : :&:?:<S::J:g: V;`; o;y; ;;;;;;;;;;;;;;<<<0<B<H<M<U<]<o<<< < <<<< <<<<==0=L=R=X=a=g=p== = = ====>>7>N>e>k>p>>>>>> ? ???'?0? 4? @? L?Y? h?t? ? ?? ?? ???@@&@F@c@@ @ @1@@'@A.A HASA7YA6AA)AB B]"BB<BDB$C:C ACNCC C"CD+"D)ND xDDDDDDDDEE#4EXEmE|E EE EEEEEE%EF +FLFTF]FuF FF/F FkFXG]GpGGGG-G1G.H GHRH)iHH HYHI!I&I9ILIaIeI|IIIIIII;J CJ'PJ^xJLJ?$K dK rKK*KKK"K5K.LILdLjL}L L L L L LLLLLLLfMlMMuM(N?NRN"dNN NNN N NNN0N'OAO#VO<zO"OO OO*P03P!dP'PPPP(PTQ fQtQ yQ QQQQQ Q Q Q RR!R0RJRRRcR lRxR RRR R RRRRRRSz/TT TTT TT U2(U[UuU|UUU UU U U V!V&V;^D^Y^n^^^._4_J_=P__1__n_E[```;` ` aa@,amacb,#c,Pc}c cc2c*c ddwdj$e eeee%ee ff3fEfWf qffffffff8f g gg$g ,g 8g DgRg"Yg"|gg g gg g(ghhz'hhhhh h h h hh h i i i ,i 8iCi^ioi"iiii i ij jj$j -j:jTjdjtj j jjjj jjj!k *k8k@kHkQk Ykgkkkkkk k k kk ll.lBlRlgl|lmm 4m@mOmbm smm mmKmmn n%n:nMncn1nn n nn=ioo'p,p(>pgp op}p+pp p8p" q/q@qrCr8brrs8*t1ctRtctQLuu'u:ulvPv-vCwALwKw0w. x:x!x)x-y+Cy8oyCyuy,bzLz;z]{v{Z{gW|J|c }[n}o}:~7~m_[HN^Xp ف72("[~~łqDɃRVj o ȄЄӄ ڄ"$-F_p<Ѕ #$@eˆ#V cz ч. ;GPhHl5m7Y 3aω16;?\.a ͊ 1J!Z|'==S%9YYQf я ݏ%(9(b (()&)P z ‘ّ ߑ2G[o:͒: COcu99  ; \ j&x&2Ɣ2),)V (.$7I-g ˖ؖ"&'B#j"4"& 60'g#"4֘0 8<u@=ə@-HvFDKD>՛(u;eBYZ ֝'KO5*Fq wOGn1v+2+^+ң(<BQ-:¤-(+T&i(&) )FOc:9(9,L/y%ȧF5N5F1f-?j&eA9,XG=ͫ #¬ȬBܬBOb3ŭ8 DF8$Į*&p; @z1DZ*g *t :\6D6{ "--'-U-(*ڴ6U[s-&-T@i26ݷ> S `'m (Ӹ! U?'4Jk==*%%GK_M^A709kLҽ&& !2)T1~%&־&$C.b.- *' GS\ p{3/<15Eg% ,/7J&7S%Pv)}DL,9f}9 "T*k >7Y-( e(w`? AdKN/;,k1$$? d q$~Rd..k6';EIAE \SQ( +7P?YD69QO36 $+$P/u6 &$&K r : v#xA8|!g52I|5n(8P/;+''o8V**.%"@1VX** *7#b#+ .>9U x&07h{((mm|?TNiB 3DSg***8 c7 +66b/5  +J]s$z6&>G<.@8-$LDq6>G,`t8, =HY1p 1 , Mcy!4%!20%c5@0; G2h(2( +&"+"D,g7a.=T knx';'0D;uZ c*J$-V,kFhG[n {AO2Fx X [ Xt ; > H 94 Gn N W T] Y  JrdqZcs _vl9 s7,%d !$P]U:!$(5^N9R$ $+  P 1] # / ! ! !)!->!Ol!J!*"*2""]"+"""7" ##()#R#,#Q$Pe$7$-$ %/=%2m%5%%;&&*&'7'L'6k''''_'#.(R()l((l(h)q)l**p*++ ++ + ,,,,[,6-6Q-1---*- ...45nCv#=ld B@Twa QjqO 91B)aT'ZSFQYu>"/VJZsG6*[ar`^;XyVb?' <IL:x%AMZ\W88O,*d0)i{J-yK|]:c%}oo0][-Pg6YS&r(\p@X(tM?iE=eD"OU|53 w  fj,#32H 4[ pk {qke;mpgl16U85:`, +Y^L9$qz2fGu(A7N4!d0DNt{F<x_+7vX)nKG+>&9m3 LeUIN Iy E"nsk/<W>PhrVvT]cQmuR$bjD !_@xEl%WK-_7MCwbz/|gcAB` zh~?SC^*tf=\h!H'P#RiF&;$H1~.2 RsJo}.} .~ (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd AccountAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add accountAdd 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 languagesAlt+Always 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 errorCrowdin is an online localization management platform and collaborative translation tool.Ctrl+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 againDownDownloading 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:EnterEnter 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 loading translation file “%s”.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export errorExport 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…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)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport from TMX…Import translation files…Importing translation memory from “%s” 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 CrowdinLeftLine %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 translations were found in the TMX file.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKObsolete stringsOneOnly 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 translation templateOpen...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 translationsQuitQuit %sReading file content failed with the following error: %sRecentRecent 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 FinderReviewRightSaveSave &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 languageServicesSet LanguageSet languageSettingsSettings…Shift+Show AllShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow summary after updating filesShow 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.These strings are no longer in the source code. Poedit will remove them from the file now.These strings were found in the sources but were not in the file. Poedit will add them to the file now.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 entries in the file are probably incorrect.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 errorUntransUpUpdateUpdate 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 the file failed. Click on 'Details >>' for details.Updating 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown 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: 2024-08-30 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 проблема.%i ред от файла „%s“ не е зареден правилно.%i реда от файла „%s“ не са заредени правилно.Формат на %sНастройки на %sформат на %s&Относно&Относно Poedit&Прилагане&Назад&Отказ&Изчистване&Затваряне&Копиране&Изтриване&Готово, към следващия&Готово, към следващия&Редактиране&Файл&Търсене…&Ръководство на GNU gettext&Ръководство на GNU gettextО&бхождане&Групиране по контекст&Групиране по контекстПомо&щ&Нов&Нов…Следващ &>&Следващ низ&Следващ низ&Не&ДобреОн&лайн помощОн&лайн помощ&Отваряне…&Отваряне…По&ставяне&Настройки&Настройки…&Предишен низ&Предишен низ&Свойства…&Прочистване на изтрити преводи&Прочистване на изтрити преводиИз&ход&Повтаряне&Заменяне&ЗапазванеЗапазване &катоПоказване на &срещанията в кодаПоказване на &срещанията в кода&Начален прозорец&Начален прозорец&Превод&ОтмянаН&епреведените първиН&епреведените първиОбновяване от &изходния кодОбновяване от &изходния код&Валидиране на превода&Валидиране на превода&Изглед&Да(0 нови, 0 неизползвани)(Научете повече за GNU gettext)(нови: %i, остарели: %i)(Ползване на стандартния език)(не сте вписан/а)(изисква Windows 8 или по-нов)&< Предишен<без име>Относно %sПрофилПрофилиДобавянеДобавяне на профилДобавяне на коментарДобавяне на файлове…Добавяне на папки…Добавяне на проектДобавяне на заместващ знак…Добавяне на профилДобавяне на коментарДобавяне на папка към списъкаДобавяне на файлове…Добавяне на папки…Добавяне на проектДобавяне на заместващ знак…Допълнителни ключови думиДопълнителни флагове към xgettext:РазширениРазширени настройки за извличане…Разширени настройки за извличанеРазширени настройки за извличане…Всички файлове за преводВсички коментариВсички низовеСъщо така да бъдат ползвани ключовите думи по подразбиране за поддържаните езициAlt+полето за превод да е &винаги на фокусЕлемент от списъка с входящи файлове:Елемент от списъка с ключови думи:Външен видПрилаганеНаистина ли желаете да изтриете инструментът за извличане „%s“?Наистина ли желаете паметта с преводи да бъде нулирана?автоматична &проверка за обновяване&автоматично компилиране до файл MO при запазванеНазадОсновен път:Изданията бета съдържат последните нови възможности и подобрения, но може да бъдат по-малко стабилни.Всички на преден планПовреден файл PO: използвана е форма за множествено число на msgstr, а msgid_plural липсваПовреден файл PO: използвана е форма за единствено число на msgstr при наличие на msgid_pluralТекстът за превод е с увредено форматиране.ИзбиранеРазглеждане на файловеПо подразбиране, неточните резултати също биват добавяни, но отбелязани като мъгляви. Отметнете, за да бъдат добавяни само точните съвпадения.О&тказОтказване…Временната папка не може да бъде създадена.Програмата не може да бъде изпълнена: %sНе може да се извърши предварителен превод от непознат език.Предварителен превод не може да бъде извършен без изходен текст.В главни букви&Управление на каталози&Управление на каталози&Управление на каталозиСмяна на &езикаЗнаков набор:Проверка на документаПроверка на граматика и правописПроверка на правописа при въвежданеПроверка за обновяване…Проверяване за грешки в преводаПроверка за обновяване…Проверка на правописаИзчистванеИзчистване на менютоИ&зчистване на преводaИзчистване на менютоИ&зчистване на превода&ЗатварянеОблакСрещания в кодаСрещания в кодаРаботете съвместно с други хора в Интернет.Събиране на изходните файлове…Команда за извличане на низове:Коментар&Коментар:Префикс на &коментарите:Компилиране до файл на MO…Компилиране до…Компилирани преводиНастройка на извличане от изходен код.ПотвърждениеСвържете Poedit с поддържаните облачни системи за локализация, за да синхронизирате безпроблемно преводите, управлявани от тях.КопиранеКопиране от ед. ч.Копиране от изходния текстКопиране от ед. ч.&Копиране изходния текстАвтоматична корекция на правописаПодробностите за проекта в Localazy не могат да бъдат свалени.Файлът не може да бъде зареден. Най-вероятно е повреден.Файлът „%s“ не може да бъде запазен.Създаване на новСъздаване на &нов преводСъздаване на нов превод от шаблон на POT.Създаване на нов проект за преводГрешка в CrowdinCrowdin е онлайн система за управление на локализацията и инструмент за съвместен превод.Ctrl+&ИзрязванеПотребителски команди за извличане:Потребителски команди за извличане:Персонализиране на лентата с инструменти…ИзрязванеГолемина на базата от данни:&ИзтриванеИзтриване от паметта с преводиИзтриване на инструмент за извличанеИзтриване от паметта с преводиИзтриване на проектИзтриване на коментараИзтриване на проектаИзтриването на проекта няма да изтрие файловете му за превод.Папки:Искате ли да изтриете проекта „%s“?Искате ли да презаредите файла? Ако го направите, незапазените промени в Poedit ще бъдат загубени.Искате ли да премахнете всички преводи, които са еднакви с оригиналния низ?Искате ли да премахнете всички преводи, които вече не се използват?&Без запазванеБез запазванеДа не се показва повечеТочните съвпадения да не бъдат отбелязвани като мъглявиДа не се показва повечеНадолуИзтегляне на текущите преводи…Изтеглянето на преводи е изключено за този проект.Пуснете папки или файлове тукПуснете папки или файлове тук&ИзходИз&насяне като HTML…&РедактиранеРедактиране на &коментарРедактиране на &коментарРедактиране на &коментарРедактиране на &коментарРедактиране на проектРедактиране на проектаРедактиранеРедактиране…Електронна поща:EnterНа &цял екранФайлът съдържа текстове с форми за множествено число, които не отговарят на заглавката „Plural-Forms“Преводите с грешки първиПреводите с грешки първиНизовете с грешки са разграничени в списъка с червен цвят на фона. Подробности ще бъдат показани, когато изберете такъв запис.Грешка при зареждане на файла „%s“.Грешка при отваряне на файлГрешка при запазване на файлаГрешка при зареждане на файл XLIFF: %sГрешкиВсичкоПренебрегнати пътищаИзнасяне като TMX…Изнасяне като…Грешка при изнасянетоИзнасяне като HTML…Изнасяне като TMX…Грешка при изнасяне на памет с преводи от „%s“.Изнасяне на преводи…Актуализация от &изходен кодИзвличане на бележки към преводачите от:Извличане на низове от изходните файлове в следните папки:Извличане на низовете за превод…Настройка на извличанеИзвличанеНеуспешна команда: %sГрешка в комуникацията с процес на Poedit.Файлът с изнесените преводи не може да бъде зареден.Неуспешно обединяване на каталози на gettext.Актуализирането на паметта с преводи е неуспешно: %sФайлФайлът не може да бъде отворенФайлът „%s“ не съществува.Файлът „%s“ не е файл за превод.Файлът „%s“ е без право на запис. Запазете го под друго име.Приключване…Търсене…&Следващо съвпадение&Предишно съвпадениеТърсене и замяна…Търсене в &коментаритеТърсене в изходните низовеТърсене в &преводите&Следващо съвпадение&Предишно съвпадениеПромяна на езикаПромяна на езикаКоригиране на заглавкатаКоригиране на заглавкатаФайлове с преводи на FlutterФорма %iФорма %i (не се използва)Често използваниGNU gettextОбщиHTML файловеПомощСкриване на %sСкриване на всички останали&Скриване странична лентаСкриване на лента за състояниетоСкриване на това съобщениеКак работи синхронизирането с облака?ИдентификаторАко продължите с прочистването, всички преводи, обозначени като изтрити ще бъдат премахнати. Ще трябва да ги превеждате отново, ако в последствие бъдат върнати.Ако сте забранили достъп до файловете си, можете да го разрешите в Системните настройки > Защита и поверителност > Поверителност > Файлове и папки.Ако сте забранили достъп до файловете си, можете да го разрешите в Системните настройки > Защита и поверителност > Файлове и папки.ПренебрегванеНезачитане на регистъраВнасяне от TMX…Внасяне на файлове за превод…Грешка при внасянетоВнасяне от TMX…Внасяне на файлове за превод…Грешка при внасяне на памет с преводи от „%s“.Внасяне на преводи…В: %s&включително beta-версииНесъответствие на главни/малки буквиНесъответстващи интервали и празни местаИнформация за преводачаИнсталиранеНевалиден файлИзвикване:Файлове с преводи във формат JSON&ОтказИме или код на езикЕзикът на превода е същият като изходния език.Липсва език на превода.Език на превода:Избиране на езикЕкип преводачи:Език:Последна промянаПовече за ключовите думи на GNU gettextПовече за множествените формиНаучете повечеНаучете повече относно %sНаучете повече за CrowdinНалявоРед %d от файла „%s“ е неправилен (неправилни данни за %s).&символ за край на ред:Списък на разширенията разделени с „;“ (напр. *.cpp; *.h):Зареждане на английските текстовеLocalazy е силно автоматизирана система за локализация, която дава възможност на всеки лесно да преведе своите продукти и съдържание на много езици.MO файловете не могат да бъдат директно променяни с Poedit.Към малки буквиКъм главни буквиСъздайте нов файл за превод от този файл POT.Неправилна заглавка: „%s“Управление на профилитеУправление…Обединяване на разликите…Минимизиранеиме и версияИме:С&ледващ незавършенС&ледващ незавършенМъглявМъглявМрежова грешка: %s (%d)Не позволява на списъка с низове да приеме фокус. Ако е отметнато, трябва да използвате Ctrl+стрелки за управление с клавиатурата, но така можете да въвеждате текст веднага, без да се налага да натискате табулатора, за да промените фокуса.&ДобавянеНов от &файл POT/PO…Нов от &файл POT/PO…ДобавениСледващата форма за мн. ч.Следващата форма за мн. ч.НеНяма съвпаденияНяма записи, които могат да бъдат предварително преведени.Файлът не съдържа информация за срещанията на този текст в изходния код.Няма съвпаденияНе са открити проблеми в преводаНяма проекти за превод във Вашия профил.Във файла на TMX не са отрити преводи.Няма информация за начина на ползванеНе всички форма за множествено число са преведени.Не сте удостоверени, моля, впишете се отново.Бележки към преводачаД&обреНеизползваниЕдинОтметнете, само ако вярвате в качеството на паметта за преводи. По подразбиране всички съвпадения от ПП се отбелязват като мъгляви и трябва да бъдат проверени преди употреба.Попълване само на точните съвпаденияОтваряне на облачния превод…Отваряне на последните файловеОтваряне и редактиране на файлове с преводи.Отваряне на облачния преводОтваряне на облачния превод…Отваряне на файлОтваряне с редакторОтваряне с редакторОтваряне на скорошен файлОтваряне на шаблона за преводОтваряне…Отваряне…НастройкиПовечеП&редишен незавършенП&редишен незавършенФайлове с преводиШаблон за преводиФайловете POT са само шаблони и сами по себе си не съдържат преводи. За да започнете превод създайте нов файл PO базиран на този шаблон.ПоставянеВмъкване със запазване на стилаПътищаИзвършва обновяване от изходния код на всички файлове в проекта.Достъпът е отказан.Заместителят „%s“ липсва в превода.Съответствие на заместителитеМоля, вместо това отворете и променете съответния файл PO. При запазване на промените, файлът MO също ще бъде обновен.Моля, първо запазете файла. Тези настройки ще са неактивни дотогава.Множествено числоПреводи на множествени числаИзразът за формите на множественото число във файла е необичаен за езика %s.Форми за множествено число:PoeditPoedit — управление на каталозиPoEdit автоматично оправи невалидно съдържание във файла „%s“.Poedit може да се опита да попълни новите записи чрез вече съществуващите преводи във файла или като използва цялата памет за преводи. Използването на ПП няма да е особено ефикасно, ако в нея няма много запис, но това ще става все по-добре при попълването ѝ.Poedit не може да покаже изходния код, където този текст се ползва, тъй като или файлът не е наличен на посоченото място, или е символна връзка, която не сочи към истински файл.Poedit е лесен за ползване редактор на преводи.Poedit не може да отвори файла „%s“.Предварителен &превод…Предварителен преводПредварителен преводПредварително преведен %u низПредварително преведени %u низаПредварителен превод чрез паметта за преводи…Предварителен превод…Предварителният превод намира автоматично точни или мъгляви съвпадения за непреведените низове в паметта за преводи и попълва преводите им.Предварителените преводи се нуждаят от истински изходен текст. Те не могат да работят, ако във файла има само текстови идентификатори.За извършването на предварителен превод трябва да е ясно кой е изходният език на текста. Poedit не може да го разпознае в този файл.НастройкиПредпочитания...Настройки…Подготвяне на текстовете…&запазване на формата на съществуващите файловеПредишна форма за мн. ч.Предишна форма за мн. ч.Предишен изходен текстПоследно променяниПоследно променяниИме и версия на проекта:Име на проекта:Проект:ПроектиПроверки на пунктуациятаПрочистванеПрочистване на изтрити преводиИзходИзход от %sПри четенето на съдържанието на файла възникна следната грешка: %sПоследниПоследно отваряни файловеПовтарянеОпресняванеПрезареждане на файлаПрезареждане на файлаОставащи: %dПремахванеПремахване на преводите, които са еднакви с оригиналния низПремахване на преводите, които са еднакви с оригиналния низЗаместванеЗамяна на &всичкиЗамяна на &всичкиЗаместване&Заменяне…Задължителната заглавка „Plural-Forms“ липсва.ВъзстановяванеВъзстановяване на паметта с преводиВъзстановяването на паметта с преводите безвъзвратно ще изтрие всички запомнени от нея преводи. Тази операция не може да бъде отменена.Показване във FinderРецензияНадясно&ЗапазванеЗапазване &като…Запазване &като…Запазване въпреки товаЗапазване въпреки товаЗапазване катоЗапазване като…Запазване на променитеЗапазване на файлЕкранни снимки:Избор на &всичкоИзбор на &всичкоИзберете файлове TMX за внасянеИзбиране на папкаИзберете файл за преводИзбиране на файлове за импортИзберете шаблон за преводИзбиране на предпочитан езикУслугиЗадаване на езикЗадаване на езикНастройкиНастройки…Shift+Показване на всички&Показване на странична лентаПравопис и граматикаПоказване на лента за състояниетоПоказване на &идентификатора на текстаПоказване на заместванияПоказване на лентата с инструментиПоказване на предупреждениятаПоказване в 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.Име и електронна поща на екипа или адрес:Заместване на текстПаметта с преводи не съдържа низове с подобно съдържание. Тя е ефективна само за полу-автоматичен превод след като се е обучила от файловете, които ръчно превеждате.Файлът TMX е повреден или неправилно форматиран.Ако запазите файла, промените направени от другото приложение ще бъдат загубени.Файлът не може да бъде компилиран във формат MO и използван.Файлът съдържа дублиращи се елементи, което е забранено във файлове PO и ще предотвратят използването му. PoEdit решава този проблем, но е необходим преглед на преводите на всички елементи, отбелязани като мъгляви и ако е необходимо да ги коригирате.Файлът не може да бъде запазен в избрания знаков набор „%s“, указан в настройките. Вместо това е запазен в UTF-8, а настройките му са променени.Файлът е променен. Искате ли промените да бъдат запазени?Файлът е във формат, който не се разпознава от Poedit.Файлът е компилиран във формат MO, но вероятно няма да работи.Файлът е запазен и компилиран във формат MO, но вероятно няма да работи.Файлът е запазен, но не може да бъде компилиран във формат MO и използван.Файлът е запазен.Файлът „%s“ не може да бъде отворен.Файлът „%s“ е променен от друго приложение.Старият изходен текст (преди промяната при обновяване), на който съответства вече неточния превод.Най-лесния начин за попълване на файла с преводи е да бъде обновен от файл на POT:Липсва интервал в началото на превода.Преводът завършва с нов ред, но изходният низ не.Преводът завършва с интервал, но изходният низ не.Преводът завършва с „%s“, а изходният низ с „%s“.Липсва нов ред в края на превода.Липсва интервал в края на превода.Преводът е готов за използване, но все още има %d непреведен низ.Преводът е готов за използване, но все още има %d непреведени низа.Преводът е готов за използване.Преводът би трябвло да завършва с „%s“.Преводът не би трябвало да завършва с „%s“.Преводът би трябвало да започва като изречение.Преводът би трябвало да започва с малка буква.Преводът започва с интервал, но изходният низ не.Преводите са отбелязани като мъгляви, защото може да са неточни. Трябва да бъдат проверени.Няма низове за превод. Това е необичайно.Възникна проблем при форматиране на файлa, но той беше запазен.Възникна грешка при изпращането на преводите към Localazy.Грешки при зареждане на файла. Може да има липсващи или повредени данни.Тези настройки влияят върху вътрешния формат на файловете PO. Настройте ги, ако имате конкретни изисквания, например, заради контрол на версиите.Тези низове вече не присъстват в изходния код. Poedit ще ги премахне от файла.Тези низове са намерени в изходния код, но не и във файла. Poedit ще ги добави към него.Файлът 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 (препоръчително)ОтмянаНеприхванато изключение: %sUnix (препоръчително)Неизвестна грешка от Crowdin.Неизвестна грешкаНепреведениНагореОбновяване&Актуализиране на всичкоАктуализиране на всички каталози в проектаОбновяване на всички каталози в проекта?Обновяване от &файл POT…Обновяване от &файл POT…Обновяване от кодаАктуализация от &файл POTОбновяване от кодаАктуализиране от изходния кодРезюмеОбновяванеГрешка при обновяванеФайлът не може да бъде обновен. Натиснете „Подробности >>“, за да научите повече.Обновяване на преводитеОбновяване на информацията за потребителя…Преводите не могат да бъдат изпратени към %s.Изпращане на преводите към %s…Изпращане на преводите…Специфичен &изразшрифт за &списъка с низовешрифт за &текстовите полетаСпоред &стандартните правилаКлючови думи (имена на функции) за разпознаване на текстове с превод във файловете с изходен код:Използване на &паметта с преводи&ВалидиранеРезултат от валидиранеВерсия %sИзчакване на удостоверяване…Здравейте от PoeditПри обновяване от изходен код&Цели думиПрозорецWindowsИскате ли изходният текст да бъде на английски език?Безконечно търсенепренасяне &на:Файлове на XLIFF с преводДаМоже да извличате низове за превод директно от изходен код:Не може да пуснете повече от един файл в прозореца на Poedit.Нямате права за четене на файловете с изходния код на посоченото в настройките на файла място.Трябва да рестартирате Poedit, за да влезе в сила тази промяна.Вашето имеНаправените промени ще бъдат загубени, ако не бъдат запазени.Името и електронната ви поща ще бъдат ползвани само за попълването на заглавката „Last-Translator“ на файловете на GNU gettext.НулаМащабaltМъглявctrlвременните файлове да не бъдат премахвани (за отстраняване на дефекти)например nplurals=2; plural=(n > 1);напасване на сходните текстове в рамките на файлакъм елемента на зададения редуправление на протокола poedit://предварителен превод от ППshiftнеизвестен езикнеподдържана версия (%s)you@example.com„%s“ е неправилен файл POT.poedit-3.5/locales/hr.po0000644000175100001770000017740114664354153012211 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "Sakrij ovu obavijest" msgid "Don’t Show Again" msgstr "Ne prikazuj ponovo" msgid "Don’t show again" msgstr "Ne prikazuj ponovo" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(Novo: %i, zastarjelo: %i)" msgid "Collecting source files…" msgstr "Skupljanje izvornih datoteka …" msgid "Extracting translatable strings…" msgstr "Izdvajanje prevodivih izraza …" msgid "Failed to load file with extracted translations." msgstr "Neuspjelo učitavanje datoteke s izdvojenim prijevodima." msgid "Merging differences…" msgstr "Spajanje razlika …" msgid "Updating translations" msgstr "Aktualiziranje prijevoda" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "Datoteku „%s“ nije moguće otvoriti." msgid "Invalid file" msgstr "Nevažeća datoteka" #, c-format msgid "Malformed header: “%s”" msgstr "Nepravilno zaglavlje: „%s”" msgid "PO Translation Files" msgstr "PO datoteke prijevoda" msgid "POT Translation Templates" msgstr "POT predlošci prijevoda" msgid "XLIFF Translation Files" msgstr "XLIFF datoteke prijevoda" msgid "JSON Translation Files" msgstr "JSON datoteke prijevoda" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "Flutter datoteke prijevoda" msgid "All Translation Files" msgstr "Sve datoteke prijevoda" msgid "The file is in a format not recognized by Poedit." msgstr "Datoteka je u formatu koji je nepoznat Poedit-u." 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." #, c-format msgid "Reading file content failed with the following error: %s" msgstr "Čitanje sadržaja datoteke nije uspjelo uz sljedeću pogrešku: %s" #, 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." #, c-format msgid "Couldn’t save file %s." msgstr "Nije bilo moguće spremiti datoteku %s." msgid "Screenshots:" msgstr "Snimke zaslona:" #, 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." #, 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)." 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" msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" "Neispravna PO datoteka: msgstr oblika množine koristi se bez msgid_plural" msgid "Couldn’t load the file, it is probably damaged." msgstr "Nije moguće učitati datoteku, vjerojatno je oštećena." 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." msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "Došlo do problema prilikom formatiranja datoteke (datoteka je ipak ispravno " "spremljena)." #, 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." msgid "Error saving file" msgstr "Greška prilikom spremanja datoteke" #, c-format msgid "“%s” is not a valid POT file." msgstr "„%s” nije valjana POT datoteka." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Greška kod učitavanja XLIFF datoteke: %s" #, 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 msgid "Broken markup in translation string." msgstr "Neispravno označavanje u prijevodu." msgid "(Use default language)" msgstr "(Koristi zadani jezik)" msgid "Language selection" msgstr "Odabir jezika" msgid "Select your preferred language" msgstr "Odaberi željeni jezik" msgid "You must restart Poedit for this change to take effect." msgstr "Za primjenu promjene, ponovo pokreni Poedit." msgid "Add Account" msgstr "Dodaj račun" msgid "Add account" msgstr "Dodaj račun" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "Više informacija o usluzi %s" 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." msgid "How does cloud sync work?" msgstr "Kako funkcionira sinkronizacija?" msgid "Account" msgstr "Račun" msgid "(not signed in)" msgstr "(nisi prijavljen/a)" msgid "File" msgstr "Datoteka" msgid "Open cloud translation" msgstr "Otvori prijevod u oblaku" msgid "Manage accounts" msgstr "Upravljaj računima" msgid "Project:" msgstr "Projekt:" msgid "Language:" msgstr "Jezik:" msgid "Sign in to Cloud Account" msgstr "Prijavi se na račun oblaka" msgid "Sign in to cloud account" msgstr "Prijavi se na račun oblaka" msgid "No translation projects listed in your account." msgstr "Nema prevoditeljskih projekata na tvom računu." msgid "Downloading latest translations…" msgstr "Preuzimanje najnovijih prijevoda …" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #, c-format msgid "Sign in to %s" msgstr "Prijavi se na %s" msgid "Syncing" msgstr "Sinkronizacija" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, 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. #, c-format msgid "Uploading translations to %s failed." msgstr "Prijenos prijevoda na %s nije uspio." msgid "Syncing error" msgstr "Greška prilikom sinkronizacije" msgid "Add" msgstr "Dodaj" msgid "Unknown Crowdin error." msgstr "Nepoznata Crowdin greška." msgid "Not authorized, please sign in again." msgstr "Nemaš potrebna prava. Prijavi se ponovo." msgid "Downloading translations is disabled in this project." msgstr "Preuzimanje prijevoda je deaktivirano u ovom projektu." msgid "Sign In" msgstr "Prijavi se" msgid "Sign in" msgstr "Prijavi se" msgid "Sign Out" msgstr "Odjavi se" msgid "Sign out" msgstr "Odjavi se" msgid "Learn more about Crowdin" msgstr "Saznaj više o Crowdinu" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" "Crowdin je internetska platforma za upravljanje lokalizacijom i alat za " "zajedničko prevođenje." msgid "Waiting for authentication…" msgstr "Čekanje na autenitifikaciju …" msgid "Updating user information…" msgstr "Aktualiziranje podataka korisnika …" msgid "Sign in to Crowdin" msgstr "Prijavi se na Crowdin" msgid "Syncing with Crowdin failed." msgstr "Sinkronizacija s Crowdinom nije uspjela." msgid "Crowdin error" msgstr "Crowdin greška" msgid "Uploading translations…" msgstr "Slanje prijevoda …" msgid "&Copy" msgstr "&Kopiraj" msgid "Learn more" msgstr "Saznaj više" msgid "&Help" msgstr "&Pomoć" msgid "MO files can’t be directly edited in Poedit." msgstr "MO datoteke se ne mogu izravno uređivati u Poeditu." msgid "Error opening file" msgstr "Greška prilikom otvaranja datoteke" msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "Otvori i uredi pripadajuću PO datoteku. Prilikom spremanja će se MO datoteka " "također aktualizirati." msgid "don’t delete temporary files (for debugging)" msgstr "nemoj izbrisati privremene datoteke (služe za uklanjanje grešaka)" msgid "handle a poedit:// URI" msgstr "obradi poedit:// URI" msgid "go to item at given line number" msgstr "idi na stavku u određenom retku" msgid "Failed to communicate with Poedit process." msgstr "Neuspjela komunikacija s Poedit procesom." #, c-format msgid "Unhandled exception occurred: %s" msgstr "Dogodila se neobradiva iznimka: %s" msgid "Select translation template" msgstr "Odaberi prevodilački predložak" msgid "Select translation file" msgstr "Odaberi prevodilačku datoteku" msgid "Poedit is an easy to use translation editor." msgstr "Poedit je jednostavan program za uređivanje prijevoda." 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." #, c-format msgid "File “%s” is not a translation file." msgstr "Datoteka „%s” nije prevodilačka datoteka." #, c-format msgid "File “%s” doesn’t exist." msgstr "Datoteka „%s” ne postoji." 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". #, 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." msgid "Install" msgstr "Instaliraj" #, c-format msgid "The file “%s” has been changed by another application." msgstr "Datoteka „%s” je promijenjena s jednim drugim programom." msgid "Reload file" msgstr "Ponovo učitaj datoteku" 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." msgid "Ignore" msgstr "Zanemari" msgid "Reload File" msgstr "Ponovo učitaj datoteku" msgid "The file has been modified. Do you want to save changes?" msgstr "Datoteka je promijenjena. Želiš li spremiti promjene?" msgid "Save changes" msgstr "Spremi promjene" msgid "Your changes will be lost if you don’t save them." msgstr "Ako ih ne spremiš, izgubit ćeš promjene." msgid "Save" msgstr "Spremi" msgid "Do&n’t save" msgstr "&Nemoj spremiti" msgid "Don’t Save" msgstr "Nemoj spremiti" 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." msgid "Cancel" msgstr "Odustani" msgid "Save Anyway" msgstr "Svejedno spremi" msgid "Save anyway" msgstr "Svejedno spremi" msgid "Save as…" msgstr "Spremi kao …" msgid "Compile to…" msgstr "Kompiliraj u …" msgid "Compiled Translation Files" msgstr "Kompilirane datoteke prijevoda" msgid "Export to HTML…" msgstr "" msgid "HTML Files" msgstr "HTML datoteke" #, c-format msgid "In: %s" msgstr "U: %s" msgid "Source code not available." msgstr "Izvorni kod nije dostupan." msgid "Updating failed" msgstr "Aktualiziranje nije uspjelo" 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 aktualizirati prijevode iz izvornog koda, jer nije pronađen " "kod na mjestu koje je određeno u svojstvima datoteke." msgid "Permission denied." msgstr "Zabranjen pristup." 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. 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. 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." msgid "Translation entries in the file are probably incorrect." msgstr "Prevodilački unosi u datoteci su vjerojatno netočni." msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "" "Aktualiziranje datoteke nije uspjelo. Za detalje, klikni na „Detalji >>”." msgid "Open translation template" msgstr "Otvori prevodilački predložak" #, 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." msgid "Validation results" msgstr "Rezultati provjere" 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." msgid "The file was saved safely." msgstr "Datoteka je sigurno spremljena." 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." 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." 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." msgid "The file cannot be compiled into the MO format and used." msgstr "Datoteka se ne može kompilirati u MO format i koristiti." msgid "No problems with the translation found." msgstr "Nema problema s prijevodom." #, 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." msgid "The translation is ready for use." msgstr "Prijevod je spreman za upotrebu." #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "Poedit je automatski ispravio nevaljni sadržaj u datoteci „%s”." msgid "" "The file contained duplicate items, which is not allowed in PO files and " "would prevent the file from being used. Poedit fixed the issue, but you " "should review translations of any items marked as 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." msgid "Language of the translation isn’t set." msgstr "Jezik prijevoda nije postavljen." msgid "Set Language" msgstr "Postavi jezik" msgid "Set language" msgstr "Postavi jezik" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." msgid "" "Suggestions are not available if the translation language is not set " "correctly. Other features, such as plural forms, may be affected as well." msgstr "" "Prijedlozi nisu dostupni, ako jezik prijevoda nije ispravno postavljen. " "Druge funkcije, kao što su oblici množine, također ovise o tome." msgid "Language of the translation is the same as source language." msgstr "Jezik prijevoda jednak je jeziku izvora." msgid "Fix Language" msgstr "Ispravi jezik" msgid "Fix language" msgstr "Ispravi jezik" 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." 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" msgid "Required header Plural-Forms is missing." msgstr "Nedostaje obavezno pravilo za oblike množine u zaglavlju." #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Sintaktička greška u pravilu za oblike množine („%s“)." msgid "Fix the Header" msgstr "Ispravi zaglavlje" 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". #, 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.")" msgid "Review" msgstr "Pregledaj" msgid "Would you like to use English for source text?" msgstr "Želite li koristiti engleski izvorni tekst?" #, 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" msgid "Load English" msgstr "Učitaj engleski" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Prevedeno: %d od %d (%d %%)" #, c-format msgid "Remaining: %d" msgstr "Preostalo: %d" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d greška" msgstr[1] "%d greške" msgstr[2] "%d grešaka" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d izraz" msgstr[1] "%d izraza" msgstr[2] "%d izraza" msgid " (unsaved)" msgstr " (nespremljeno)" msgid " (modified)" msgstr " (promijenjeno)" #, c-format msgid "Failed to update translation memory: %s" msgstr "Neuspjelo aktualiziranje prevodilačke memorije: %s" msgid "Remove same-as-source translations" msgstr "" msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" msgid "Keep" msgstr "Zadrži" msgid "Remove" msgstr "" msgid "Purge deleted translations" msgstr "Poništi izbrisane prijevode" 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?" 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." msgid "Purge" msgstr "Poništi" msgid "Copy from source text" msgstr "Kopiraj iz izvornog teksta" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "Ukloni prijevod" msgid "Clear Translation" msgstr "Ukloni prijevod" msgid "Edit comment" msgstr "Uredi komentar" msgid "Edit Comment" msgstr "Uredi komentar" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "Pojavljivanja koda" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "Pojavljivanja koda" msgid "Hide Sidebar" msgstr "Sakrij bočnu traku" msgid "Show Sidebar" msgstr "Prikaži bočnu traku" msgid "Hide Status Bar" msgstr "Sakrij traku stanja" msgid "Show Status Bar" msgstr "Prikaži traku stanja" msgid "String length in characters: translation | source" msgstr "Broj znakova izraza: prijevod | izvor" msgid "String length in characters" msgstr "Broj znakova izraza" msgid "Source text" msgstr "Izvorni tekst" msgid "Singular" msgstr "Jednina" msgid "Plural" msgstr "Množina" msgid "Translation" msgstr "Prijevod" msgid "Pre-translated" msgstr "Pretprevedeno" 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. msgid "Needs work" msgstr "Zahtijeva doradu" 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." msgid "Create new translation" msgstr "Izradi novi prijevod" 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 msgid "Source text ID" msgstr "ID izvornog teksta" msgid "Everything" msgstr "Sve" #, c-format msgid "Form %i" msgstr "Oblik %i" #, c-format msgid "Form %i (unused)" msgstr "Oblik %i (neupotrebljeno)" msgid "Zero" msgstr "Nula" msgid "One" msgstr "Jedan" msgid "Two" msgstr "Dva" msgid "Other" msgstr "Ostalo" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, c-format msgid "String context: %s" msgstr "Kontekst stringa: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #, c-format msgid "String identifier: %s" msgstr "Identifikator stringa: %s" #, c-format msgid "%s Format" msgstr "%s format" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "%s format" #, c-format msgid "Translation — %s" msgstr "Prijevod — %s" msgid "ID" msgstr "ID" #, c-format msgid "Source text — %s" msgstr "Izvorni tekt — %s" msgid "unknown language" msgstr "nepoznat jezik" #, c-format msgid "Network error: %s (%d)" msgstr "Mrežna greška: %s (%d)" msgid "Unknown error" msgstr "Nepoznata greška" #, c-format msgid "Failed command: %s" msgstr "Neuspjela naredba: %s" msgid "Failed to merge gettext catalogs." msgstr "Spajanje gettext kataloga nije uspjelo." msgid "Open in Editor" msgstr "Otvori u uređivaču" msgid "Open in editor" msgstr "Otvori u uređivaču" 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." msgid "No usage information" msgstr "Nema informacija o korištenju" #, 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" msgid "Source code not found" msgstr "Izvorni kod nije pronađen" 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." msgid "File cannot be opened" msgstr "Datoteka se ne može otvoriti" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "Poedit „%s” nije uspio otvoriti datoteku." msgid "Find" msgstr "Pronađi" msgid "Replace" msgstr "Zamijeni" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "Opcije" msgid "Ignore case" msgstr "Zanemari veličinu slova" msgid "Wrap around" msgstr "Beskonačna pretraga" msgid "Whole words only" msgstr "Samo cijele riječi" msgid "Find in source texts" msgstr "Pronađi u izvornom tekstu" msgid "Find in translations" msgstr "Pronađi u prijevodima" msgid "Find in comments" msgstr "Pronađi u komentarima" msgid "Close" msgstr "Zatvori" msgid "Replace &All" msgstr "Zamijeni &sve" msgid "Replace &all" msgstr "Zamijeni &sve" msgid "&Replace" msgstr "&Zamijeni" msgid "< &Previous" msgstr "< &Prethodno" msgid "&Next >" msgstr "&Sljedeće >" msgid "String to find" msgstr "Traženi izraz" msgid "Replacement string" msgstr "Zamjenski izraz" #, c-format msgid "Cannot execute program: %s" msgstr "Nije moguće izvršiti program: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "Naziv jezika ili kod" msgid "Translation Language" msgstr "Jezik prijevoda" msgid "Language of the translation:" msgstr "Jezik prijevoda:" msgid "All strings" msgstr "Svi izrazi" msgid "Couldn’t download Localazy project details." msgstr "Neuspjelo preuzimanje detalja projekta Localazy." msgid "There was an error when uploading translations to Localazy." msgstr "Dogodila se greška prilikom prijenosa prijevoda na Localazy." msgid "Projects" msgstr "Projekti" 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." msgid "Add Project" msgstr "Dodaj projekt" msgid "Add project" msgstr "Dodaj projekt" msgid "Poedit - Catalogs manager" msgstr "Poedit – Upravljač kataloga" msgid "Edit…" msgstr "Uredi …" msgid "Create new translations project" msgstr "Izradi novi prevodilački projekt" msgid "Delete the project" msgstr "Izbriši projekt" msgid "Edit the project" msgstr "Uredi projekt" msgid "Update all" msgstr "Aktualiziraj sve" msgid "Update all catalogs in the project" msgstr "Aktualiziraj sve kataloge u projektu" msgid "Total" msgstr "Ukupno" msgid "Untrans" msgstr "Neprevedeno" msgctxt "column/row header" msgid "Needs Work" msgstr "Zahtijeva doradu" msgid "Errors" msgstr "Greške" msgid "Last modified" msgstr "Posljednja izmjena" msgid "Select directory" msgstr "Odaberi mapu" msgid "Directories:" msgstr "Mape:" msgid "" msgstr "" #, c-format msgid "Do you want to delete project “%s”?" msgstr "Želiš li izbrisati projekt „%s”?" msgid "Delete project" msgstr "Izbriši projekt" msgid "Deleting the project will not delete any translation files." msgstr "Brisanje projekta neće izbrisati nijednu prevodilačku datoteku." msgid "Confirmation" msgstr "Potvrda" msgid "Update all catalogs in this project?" msgstr "Aktualizirati sve kataloge u projektu?" msgid "Performs update from source code on all files in the project." msgstr "Aktualizira sve datoteke projekta iz izvornog koda." msgid "Check for Updates…" msgstr "Provjeri nadogradnje …" msgid "Catalogs Manager" msgstr "Upravljanje katalozima" msgid "&Preferences…" msgstr "&Postavke …" msgid "&Edit" msgstr "&Uredi" msgid "Undo" msgstr "Poništi" msgid "Redo" msgstr "Ponovi" msgid "Paste and Match Style" msgstr "Umetni i uskladi stil" msgid "Delete" msgstr "Izbriši" msgid "Spelling and Grammar" msgstr "Pravopis i gramatika" msgid "Show Spelling and Grammar" msgstr "Prikaži pravopis i gramatiku" msgid "Check Document Now" msgstr "Provjeri dokument sada" msgid "Check Spelling While Typing" msgstr "Provjeri pravopis tijekom tipkanja" msgid "Check Grammar With Spelling" msgstr "Provjeri gramatiku i pravopis" msgid "Correct Spelling Automatically" msgstr "Ispravi pravopis automatski" msgid "Substitutions" msgstr "Zamjene" msgid "Show Substitutions" msgstr "Prikaži zamjene" msgid "Smart Copy/Paste" msgstr "Pametno kopiranje/umetanje" msgid "Smart Quotes" msgstr "Pametni navodnici" msgid "Smart Dashes" msgstr "Pametne crtice" msgid "Smart Links" msgstr "Pametne poveznice" msgid "Text Replacement" msgstr "Zamjena teksta" msgid "Transformations" msgstr "Transformacije" msgid "Make Upper Case" msgstr "Pretvori u velika slova" msgid "Make Lower Case" msgstr "Pretvori u mala slova" msgid "Capitalize" msgstr "Pretvori u velika početna slova" msgid "Speech" msgstr "Govor" msgid "Start Speaking" msgstr "Započni s govorom" msgid "Stop Speaking" msgstr "Prekini s govorom" msgid "&View" msgstr "&Prikaz" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Show Toolbar" msgstr "Prikaži alatnu traku" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Customize Toolbar…" msgstr "Prilagodi alatnu traku …" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Enter Full Screen" msgstr "Cjeloekranski prikaz" msgid "Window" msgstr "Prozor" msgid "Minimize" msgstr "Umanji" msgid "Zoom" msgstr "Povećaj" msgid "Welcome to Poedit" msgstr "Dobrodošli u Poedit!" msgid "Bring All to Front" msgstr "Postavi sve naprijed" msgid "Information about the translator" msgstr "Podaci prevodioca" msgid "Name:" msgstr "Ime:" msgid "Your Name" msgstr "Tvoje ime" msgid "Email:" msgstr "E-adresa:" msgid "you@example.com" msgstr "tvojeime@primjer.com" 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." msgid "Editing" msgstr "Uređivanje" msgid "Automatically compile MO file when saving" msgstr "Automatski sastavi MO datoteku prilikom spremanja" msgid "Show summary after updating files" msgstr "Prikaži sažetak nakon aktualiziranja datoteka" msgid "Check spelling" msgstr "Provjeri pravopis" msgid "Always change focus to text input field" msgstr "Uvijek promijeni fokus na polje za unos teksta" 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." msgid "Appearance" msgstr "Prikaz teksta" msgid "Use custom list font:" msgstr "Prilagodi font za izraze:" msgid "Use custom text fields font:" msgstr "Prilagodi font za prijevode:" msgid "Change UI language" msgstr "Promijeni jezik sučelja" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions msgid "(requires Windows 8 or newer)" msgstr "(potreban je Windows 8 ili noviji)" msgid "General" msgstr "Opće" msgid "Use translation memory" msgstr "Koristi prevodilačku memoriju" msgid "Manage…" msgstr "Upravljaj spremištem …" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "Prilikom aktualiziranja iz izvora" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "koristi slične prijevode iz datoteke" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "pretprevedi pomoću prevodilačke memorije" 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." msgid "Stored translations:" msgstr "Spremljeni prijevodi:" msgid "Database size on disk:" msgstr "Veličina baze podataka na disku:" msgid "Import Translation Files…" msgstr "Uvezi datoteke prijevoda …" msgid "Import translation files…" msgstr "Uvezi datoteke prijevoda …" msgid "Import From TMX…" msgstr "Uvezi iz TMX datoteke …" msgid "Import from TMX…" msgstr "Uvezi iz TMX datoteke …" msgid "Export To TMX…" msgstr "Izvezi u TMX datoteku …" 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). msgid "Reset" msgstr "Isprazni" msgid "Select translation files to import" msgstr "Odaberi datoteke prijevoda za uvoz" msgid "Translation Memory" msgstr "Prevodilačka memorija" msgid "Importing translations…" msgstr "Uvoz prijevoda …" #, c-format msgid "Error loading translation file “%s”." msgstr "Greška prilikom učitavanja prevodilačke datoteke „%s”." msgid "Finalizing…" msgstr "Završavanje …" msgid "Select TMX files to import" msgstr "Odaberi TMX datoteke za izvoz" msgid "TMX Files" msgstr "TMX datoteke" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "Neuspio uvoz prevodilačke memorije iz „%s”." msgid "Import error" msgstr "Greška prilikom uvoza" msgid "Export as…" msgstr "Izvezi kao …" msgid "Exporting translations…" msgstr "Izvoz prijevoda …" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "Neuspio izvoz prevodilačke memorije u „%s”." msgid "Export error" msgstr "Greška prilikom izvoza" msgid "Reset translation memory" msgstr "Isprazni prevodilačku memoriju" msgid "Are you sure you want to reset the translation memory?" msgstr "Stvarno želiš isprazniti prevodilačku memoriju?" 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. msgid "TM" msgstr "PM" 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." msgid "Custom Extractors:" msgstr "Prilagođeni izdvajači:" msgid "Custom extractors:" msgstr "Prilagođeni izdvajači:" msgid "GNU gettext" msgstr "GNU gettext" 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.)." msgid "Delete extractor" msgstr "Izbriši izdvajač" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "Stvarno želiš izbrisati izdvajač „%s”?" msgid "Extractors" msgstr "Izdvajači" msgid "Accounts" msgstr "Računi" msgid "Automatically check for updates" msgstr "Automatski provjeri nadogradnje" msgid "Include beta versions" msgstr "Uključi beta verzije" 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." msgid "Updates" msgstr "Nadogradnje" 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." msgid "Line endings:" msgstr "Vrsta prijeloma:" msgid "Unix (recommended)" msgstr "Unix (preporučeno)" msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "Prijelom pri:" msgid "Preserve formatting of existing files" msgstr "Zadrži formatiranje postojećih datoteka" msgid "Advanced" msgstr "Napredno" msgid "Settings" msgstr "" msgid "Preparing strings…" msgstr "Pripremanje izraza …" msgid "Pre-translating from translation memory…" msgstr "Pretprevođenje pomoću prevodilačke memorije …" #, 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" msgid "Pre-translating…" msgstr "Pretprevođenje …" 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. msgid "Pre-translate" msgstr "Pretprevedi" 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." msgid "Cannot pre-translate from unknown language." msgstr "Nepoznati jezik se ne može pretprevesti." 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." msgid "Only fill in exact matches" msgstr "Preuzmi samo jednake izraze" 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." msgid "Don’t mark exact matches as needing work" msgstr "Ne označuj jednake izraze, da zahtijevaju doradu" 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." 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." #, 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." 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." msgid "No entries could be pre-translated." msgstr "Nema pretprijevoda za niti jedan izraz." 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." msgid "Cancelling…" msgstr "Prekidanje …" msgid "Drag Folders or Files Here" msgstr "Povuci mape ili datoteke ovamo" msgid "Drag folders or files here" msgstr "Povuci mape ili datoteke ovamo" msgid "Add Folders…" msgstr "Dodaj mape …" msgid "Add folders…" msgstr "Dodaj mape …" msgid "Add Files…" msgstr "Dodaj datoteke …" msgid "Add files…" msgstr "Dodaj datoteke …" msgid "Add Wildcard…" msgstr "Dodaj zamjenski znak …" 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) 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" msgid "Show in Explorer" msgstr "Prikaži u pretraživaču" msgid "Show in Folder" msgstr "Prikaži u mapi" msgid "Paths" msgstr "Putanje" msgid "Excluded paths" msgstr "Isključene putanje" msgid "Advanced extraction settings" msgstr "Napredne postavke izdvajanja" msgid "Extract notes for translators from:" msgstr "Izdvoji napomene za prevodioce iz:" msgid "Comments prefixed with:" msgstr "Komentari s predznakom:" msgid "All comments" msgstr "Svi komentari" msgid "Additional xgettext flags:" msgstr "Dodatne xgettext oznake:" msgid "Additional keywords" msgstr "Dodatne ključne riječi" msgid "Name of the project the translation is for" msgstr "Ime projekta, na koji se prijevod odnosi" msgid "Team name and email address or URL" msgstr "Ime ekipe, email adresa ili URL" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "npr. nplurals=2; plural=(n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (preporučeno)" 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." msgid "Placeholders correctness" msgstr "Ispravnost rezerviranih mjesta" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "Rezervirano mjesto „%s” nedostaje u prijevodu." #, c-format msgid "Superfluous placeholder “%s” that isn’t in source text." msgstr "Suvišno rezervirano mjesto „%s” koje nije u izvornom tekstu." msgid "Plural form translations" msgstr "Prijevodi množine" msgid "Not all plural forms are translated." msgstr "Nisu prevedeni svi oblici množine." msgid "Inconsistent upper/lower case" msgstr "Nedosljednost velikih/malih slova" msgid "The translation should start as a sentence." msgstr "Prijevod bi trebao započeti velikim slovom." msgid "The translation should start with a lowercase character." msgstr "Prijevod bi trebao započeti malim slovom." msgid "Inconsistent whitespace" msgstr "Nedosljednost bjeline" msgid "The translation doesn’t start with a space." msgstr "Prijevod ne započinje razmakom." msgid "The translation starts with a space, but the source text doesn’t." msgstr "Prijevod započinje razmakom, no izvorni tekst ne." msgid "The translation is missing a newline at the end." msgstr "Prijevodu na kraju nedostaje prijelom retka." msgid "The translation ends with a newline, but the source text doesn’t." msgstr "Prijevod završava s prijelomom retka, no izvorni tekst ne." msgid "The translation is missing a space at the end." msgstr "Prijevodu na kraju nedostaje razmak." msgid "The translation ends with a space, but the source text doesn’t." msgstr "Prijevod završava s razmakom, no izvorni tekst ne." msgid "Punctuation checks" msgstr "Provjere interpunkcije" #, c-format msgid "The translation should end with “%s”." msgstr "Prijevod bi trebao završiti sa „%s”." #, c-format msgid "The translation should not end with “%s”." msgstr "Prijevod ne bi trebao završiti sa „%s”." #, 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”." msgid "Cloud" msgstr "Oblak" msgid "Clear Menu" msgstr "Isprazni izbornik" msgid "Clear menu" msgstr "Isprazni izbornik" msgid "Comment:" msgstr "Komentar:" msgid "Update" msgstr "Aktualiziraj" msgid "&Delete" msgstr "&Izbriši" msgid "Delete the comment" msgstr "Izbriši komentar" msgid "Edit project" msgstr "Uredi projekt" msgid "Project name:" msgstr "Ime projekta:" msgid "Browse" msgstr "Pregledaj" msgid "Add directory to the list" msgstr "Dodaj mapu u popis" msgid "OK" msgstr "U redu" msgid "&File" msgstr "&Datoteka" msgid "&New…" msgstr "&Nova …" msgid "New from &POT/PO file…" msgstr "Nova iz &POT/PO datoteke …" msgid "New From &POT/PO File…" msgstr "Nova iz &POT/PO datoteke …" msgid "&Open…" msgstr "&Otvori …" msgid "Open Recent" msgstr "Otvori nedavne" msgid "Open recent" msgstr "Otvori nedavne" msgid "Open cloud translation…" msgstr "Otvori prijevod u oblaku …" msgid "Open Cloud Translation…" msgstr "Otvori prijevod u oblaku …" msgid "&Start window" msgstr "&Uvodni prozor" msgid "&Start Window" msgstr "&Uvodni prozor" msgid "Catalogs &manager" msgstr "Upravljanje &katalozima" msgid "Catalogs &Manager" msgstr "Upravljanje &katalozima" msgid "&Close" msgstr "&Zatvori" msgid "&Save" msgstr "&Spremi" msgid "Save &as…" msgstr "Spremi k&ao…" msgid "Save &As…" msgstr "Spremi k&ao…" msgid "Compile to MO…" msgstr "Kompiliraj u MO …" msgid "E&xport to HTML…" msgstr "" msgid "Check for updates…" msgstr "Provjeri nadogradnje …" msgid "Settings…" msgstr "Postavke …" msgid "&Preferences" msgstr "&Postavke" msgid "E&xit" msgstr "&Izlaz" msgid "Quit" msgstr "Zatvori" msgid "Copy from singular" msgstr "Kopiraj iz jednine" msgid "Copy From Singular" msgstr "Kopiraj iz jednine" msgid "Translation needs &work" msgstr "Prijevod zahtijeva &doradu" msgid "Translation Needs &Work" msgstr "Prijevod zahtijeva &doradu" msgid "Edit &comment" msgstr "Uredi &komentar" msgid "Edit &Comment" msgstr "Uredi &komentar" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "Prijedlozi" msgid "&Find…" msgstr "&Pronađi …" msgid "Replace…" msgstr "Zamijeni …" msgid "Find next" msgstr "Pronađi sljedeće" msgid "Find previous" msgstr "Pronađi prethodno" msgid "Find and Replace…" msgstr "Pronađi i zamijeni …" msgid "Find Next" msgstr "Pronađi sljedeće" msgid "Find Previous" msgstr "Pronađi prethodno" msgid "Show string &ID" msgstr "Prikaži &ID izraza" msgid "Show String &ID" msgstr "Prikaži &ID izraza" msgid "Show warnings" msgstr "Prikaži upozorenja" msgid "Show Warnings" msgstr "Prikaži upozorenja" msgid "Sort by &file order" msgstr "Razvrstaj po redoslijedu &datoteke" msgid "Sort by &File Order" msgstr "Razvrstaj po redoslijedu &datoteke" msgid "Sort by &source" msgstr "Razvrstaj po &izvornom tekstu" msgid "Sort by &Source" msgstr "Razvrstaj po &izvornom tekstu" msgid "Sort by &translation" msgstr "Razvrstaj po &prijevodu" msgid "Sort by &Translation" msgstr "Razvrstaj po &prijevodu" msgid "&Group by context" msgstr "&Grupiraj po sadržaju" msgid "&Group By Context" msgstr "&Grupiraj po sadržaju" msgid "Entries with errors first" msgstr "Postavi izraze s greškama na vrh" msgid "Entries with Errors First" msgstr "Postavi izraze s greškama na vrh" msgid "&Untranslated entries first" msgstr "Postavi &neprevedene izraze na vrh" msgid "&Untranslated Entries First" msgstr "Postavi &neprevedene izraze na vrh" msgid "&Show code occurrences" msgstr "&Prikaži pojavljivanja koda" msgid "&Show Code Occurrences" msgstr "&Prikaži pojavljivanja koda" msgid "Show sidebar" msgstr "Prikaži bočnu traku" msgid "Show status bar" msgstr "Prikaži statusnu traku" msgid "&Translation" msgstr "&Prijevod" msgid "&Update from source code" msgstr "&Aktualiziraj iz izvornog koda" msgid "&Update from Source Code" msgstr "&Aktualiziraj iz izvornog koda" msgid "Update from &POT file…" msgstr "Aktualiziraj iz &POT datoteke …" msgid "Update from &POT File…" msgstr "Aktualiziraj iz &POT datoteke …" msgid "Sync with Crowdin" msgstr "Sinkronizacija s Crowdinom" msgid "Pre-&translate…" msgstr "Pret&prevedi …" msgid "&Validate translations" msgstr "&Provjeri prijevode" msgid "&Validate Translations" msgstr "&Provjeri prijevode" msgid "Remove Same-as-Source Translations" msgstr "" msgid "&Purge deleted translations" msgstr "&Poništi izbrisane prijevode" msgid "&Purge Deleted Translations" msgstr "&Poništi izbrisane prijevode" msgid "&Properties…" msgstr "&Svojstva …" msgid "&Go" msgstr "&Idi" msgid "&Done and next" msgstr "&Gotovo, idi na sljedeći" msgid "&Done and Next" msgstr "&Gotovo, idi na sljedeći" msgid "Previously edited" msgstr "Prethodno promijenjeno" msgid "Previously Edited" msgstr "Prethodno promijenjeno" msgid "&Previous translation" msgstr "&Prethodni prijevod" msgid "&Previous Translation" msgstr "&Prethodni prijevod" msgid "&Next translation" msgstr "&Sljedeći prijevod" msgid "&Next Translation" msgstr "&Sljedeći prijevod" msgid "P&revious unfinished" msgstr "P&rethodni nedovršeni" msgid "P&revious Unfinished" msgstr "P&rethodni nedovršeni" msgid "Ne&xt unfinished" msgstr "S&ljedeći nedovršeni" msgid "Ne&xt Unfinished" msgstr "S&ljedeći nedovršeni" msgid "Previous plural form" msgstr "Prethodni oblik množine" msgid "Previous Plural Form" msgstr "Prethodni oblik množine" msgid "Next plural form" msgstr "Sljedeći oblik množine" msgid "Next Plural Form" msgstr "Sljedeći oblik množine" msgid "&Online help" msgstr "&Pomoć na internetu" msgid "&Online Help" msgstr "&Pomoć na internetu" msgid "&GNU gettext manual" msgstr "&GNU gettext priručnik" msgid "&GNU gettext Manual" msgstr "&GNU gettext priručnik" msgid "&About Poedit" msgstr "&O aplikaciji Poedit" msgid "&About" msgstr "&O aplikaciji" msgid "Extractor setup" msgstr "Postavke izdvajača" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Popis datotečnih nastavaka, odvojeni točka-zarezom (npr. *.cpp;*.h):" msgid "Invocation:" msgstr "Pokretanje:" msgid "Command to extract translations:" msgstr "Naredba za izdvajanje prijevoda:" 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)." msgid "An item in keywords list:" msgstr "Stavka na popisu ključnih riječi:" 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č." msgid "An item in input files list:" msgstr "Stavka na popisu ulaznih datoteka:" #, 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." msgid "Source code charset:" msgstr "Kodna stranica izvornog koda:" #, 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." msgid "Translation Properties" msgstr "Svojstva prijevoda" msgid "Project name and version:" msgstr "Ime i verzija projekta:" msgid "Language team:" msgstr "Jezična ekipa:" msgid "Plural forms:" msgstr "Oblici množine:" msgid "Use default rules for this language" msgstr "Koristi standardna pravila za ovaj jezik" msgid "Use custom expression" msgstr "Koristi prilagođeno pravilo" msgid "Learn about plural forms" msgstr "Saznaj više o oblicima množine" msgid "Charset:" msgstr "Kodna stranica:" msgid "Advanced Extraction Settings…" msgstr "Napredne postavke izdvajanja …" msgid "Advanced extraction settings…" msgstr "Napredne postavke izdvajanja …" msgid "Translation properties" msgstr "Svojstva prijevoda" msgid "Sources Paths" msgstr "Putanje do izvora" msgid "Sources paths" msgstr "Putanje do izvora" msgid "Extract text from source files in the following directories:" msgstr "Izdvoji tekst iz izvornih datoteka u sljedećim mapama:" msgid "Base path:" msgstr "Osnovna putanja:" msgid "Sources Keywords" msgstr "Ključne riječi izvora" msgid "Sources keywords" msgstr "Ključne riječi izvora" 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:" msgid "Also use default keywords for supported languages" msgstr "Također koristi zadane ključne riječi za podržane jezike" msgid "Learn about gettext keywords" msgstr "Saznaj više o gettext ključnim riječima" msgid "Update summary" msgstr "Sažetak aktualiziranja" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" "Ovi su izrazi pronađeni u izvorima, ali ne u datoteci.\n" "Poedit će ih sada dodati datoteci." msgid "New strings" msgstr "Novi izrazi" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" "Ovi se izrazi više ne nalaze u izvornom kodu.\n" "Poedit će ih sada ukloniti iz datoteke." msgid "Obsolete strings" msgstr "Zastarjeli izrazi" msgid "(0 new, 0 obsolete)" msgstr "(novo: 0, zastarjelo: 0)" msgid "Open" msgstr "" msgid "Open file" msgstr "Otvori datoteku" msgid "Save file" msgstr "Spremi datoteku" msgid "Validate" msgstr "Provjeri" msgid "Check for errors in the translation" msgstr "Provjeri ima li grešaka u prijevodu" msgid "Update from code" msgstr "Aktualiziraj iz koda" msgid "Update from Code" msgstr "Aktualiziraj iz koda" msgid "Update from source code" msgstr "Aktualiziraj iz izvornog koda" msgid "Sidebar" msgstr "Bočna traka" 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. msgid "Previous source text" msgstr "Prijašnji izvorni tekst" 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." msgid "Notes for translators" msgstr "Napomene za prevodioce" msgid "Comment" msgstr "Komentar" msgid "Add comment" msgstr "Dodaj komentar" msgid "Add Comment" msgstr "Dodaj komentar" msgid "Delete From Translation Memory" msgstr "Izbriši iz prevodilačke memorije" msgid "Delete from translation memory" msgstr "Izbriši iz prevodilačke memorije" msgid "Translation suggestions" msgstr "Prijedlozi za prijevod" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). msgid "No matches found" msgstr "Nema poklapanja" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). msgid "No Matches Found" msgstr "Nema poklapanja" msgid "This string was found in Poedit’s translation memory." msgstr "Ovaj je izraz nađen u prevodilačkoj memoriji Poedita." 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." 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." msgid "The TMX file is malformed." msgstr "Nevaljani oblik TMX datoteke." msgid "No translations were found in the TMX file." msgstr "Nema prijevoda u TMX datoteci." #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Baza podataka prevodilačke memorije je oštećena: %s (%d)." #, c-format msgid "Translation memory error: %s (%d)." msgstr "Greška prevodilačke memorije: %s (%d)." msgid "Cannot create temporary directory." msgstr "Nije moguće izraditi privremenu mapu." msgid "There are no translations. That’s unusual." msgstr "Nema prijevoda. To je neobično." msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "Translators typically use PO template files (POTs) prepared for them by the " "developer." msgstr "" "Prevodivi izrazi se ne dodaju ručno u Gettext sustav, već se automatski " "izvlače\n" "iz izvornog koda. Na taj način ostaju aktualni i ispravni. \n" "Prevodioci u pravilu koriste predloške (POT datoteke) programera." msgid "(Learn more about GNU gettext)" msgstr "(Saznaj više o GNU gettext)" 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:" msgid "Update from POT" msgstr "Aktualiziraj iz POT datoteke" msgid "Take translatable strings from an existing POT template." msgstr "Preuzmi prevodive izraze iz postojećeg POT predloška." msgid "" "You can also extract translatable strings directly from the source code:" msgstr "Prevodive izraze možeš izdvojiti neposredno iz izvornog koda:" msgid "Extract from sources" msgstr "Izdvoji iz izvora" 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 #, c-format msgid "Version %s" msgstr "Verzija %s" msgid "Create new" msgstr "Stvori novi prijevod" msgid "Create new translation from POT template." msgstr "Izradi novi prijevod iz POT predloška." msgid "Browse files" msgstr "Pretraži datoteke" msgid "Open and edit translation files." msgstr "Otvori i uredi prevodilačke datoteke." msgid "Translate cloud project" msgstr "Prevedi projekt u oblaku" msgid "Collaborate with other people online." msgstr "Surađuj s drugim ljudima online." msgid "Recent files" msgstr "Nedavno korištene datoteke" msgid "Sync" msgstr "Sinkronizraj" 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") #, 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. #, c-format msgid "%s Preferences" msgstr "%s postavke" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "Usluge" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "Sakrij %s" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "Sakrij ostalo" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "Prikaži sve" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "Zatvori %s" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "Postavke …" msgid "Preferences..." msgstr "Postavke …" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "Nedavno" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "Često" msgid "&Apply" msgstr "&Primijeni" msgid "Apply" msgstr "Primijeni" msgid "&Back" msgstr "&Natrag" msgid "Back" msgstr "Natrag" msgid "&Cancel" msgstr "&Odustani" msgid "&Clear" msgstr "&Ukloni" msgid "Clear" msgstr "Ukloni" msgid "Copy" msgstr "Kopiraj" msgid "Cu&t" msgstr "Izr&eži" msgid "Cut" msgstr "Izreži" msgid "Edit" msgstr "Uredi" msgid "&Quit" msgstr "&Zatvori" msgid "Help" msgstr "Pomoć" msgid "&New" msgstr "&Nova" msgid "New" msgstr "Novi" msgid "&No" msgstr "&Ne" msgid "No" msgstr "Ne" msgid "&OK" msgstr "&U redu" msgid "Open…" msgstr "Otvori …" msgid "&Open..." msgstr "&Otvori …" msgid "Open..." msgstr "Otvori …" msgid "&Paste" msgstr "&Umetni" msgid "Paste" msgstr "Umetni" msgid "Preferences" msgstr "Postavke" msgid "&Redo" msgstr "&Ponovi" msgid "Refresh" msgstr "Osvježi" msgid "&Save as" msgstr "&Spremi kao" msgid "Save as" msgstr "Spremi kao" msgid "Select &All" msgstr "Odaberi &sve" msgid "Select All" msgstr "Odaberi sve" msgid "&Undo" msgstr "&Poništi" msgid "&Yes" msgstr "&Da" msgid "Yes" msgstr "Da" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "Gore" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "Dolje" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "Lijevo" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "Desno" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "shift" poedit-3.5/locales/ckb.po0000644000175100001770000015442014664354153012333 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "شاردنەوەی ئەم پەیامی ئاگادارکردنەوەیە" msgid "Don’t Show Again" msgstr "Don’t Show Again" msgid "Don’t show again" msgstr "دووبارە پیشانی مەدەرەوە" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(نوێ: %i, بەسەرچوو: %i)" msgid "Collecting source files…" msgstr "کۆکردنەوەی پەڕگەکانی سەرچاوە…" msgid "Extracting translatable strings…" msgstr "دەرهێنانی ئەو ڕیزبەندانەی شیاون بۆ وەرگێڕان…" msgid "Failed to load file with extracted translations." msgstr "نەتوانرا فایلەکە لەگەڵ وەرگێڕانە دەرهێندراوەکان بخوێندرێنەوە." msgid "Merging differences…" msgstr "لکاندنی جیاوازییەکان…" msgid "Updating translations" msgstr "نوێکردنەوەی وەرگێڕانەکان" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "" msgid "Invalid file" msgstr "جۆری فایل نادروستە" #, c-format msgid "Malformed header: “%s”" msgstr "ناونیشانی ناتەواو: '%s”" msgid "PO Translation Files" msgstr "بوخچەی وەڕگێرانی PO" msgid "POT Translation Templates" msgstr "تێمپلەتى وەرگێڕانی POT" msgid "XLIFF Translation Files" msgstr "پەڕگەی وەرگێڕانی XLIFF" msgid "JSON Translation Files" msgstr "" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "" msgid "All Translation Files" msgstr "هەموو فایلەکانی وەرگێڕان" msgid "The file is in a format not recognized by Poedit." msgstr "" msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" #, c-format msgid "Reading file content failed with the following error: %s" msgstr "" #, c-format msgid "" "File “%s” is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" #, c-format msgid "Couldn’t save file %s." msgstr "" msgid "Screenshots:" msgstr "" #, c-format msgid "%i line of file “%s” was not loaded correctly." msgid_plural "%i lines of file “%s” were not loaded correctly." msgstr[0] "" msgstr[1] "" #, c-format msgid "Line %d of file “%s” is corrupted (not valid %s data)." msgstr "" msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" msgid "Couldn’t load the file, it is probably damaged." msgstr "" msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "کێشەیەک ڕوویدا لە کاتی بەمەرجکردنی پەڕگەکە(بەڵام هەرچۆنێک بێت پاشەکەوتکرا)." #, 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 "" msgid "Error saving file" msgstr "" #, c-format msgid "“%s” is not a valid POT file." msgstr "“%s' پەڕگەیەکی دروستی POT نییە." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "" #, c-format msgid "unsupported version (%s)" msgstr "" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML msgid "Broken markup in translation string." msgstr "" msgid "(Use default language)" msgstr "(زمانی بنەڕەتی بەکاربهێنە)" msgid "Language selection" msgstr "هەڵبژاردنەکانی زمان" msgid "Select your preferred language" msgstr "زمانی پەسەندکراوت دەستنیشان بکە" msgid "You must restart Poedit for this change to take effect." msgstr "" "پێویستە دووبارە Poedit دەستپێبکەیتەوە بۆ ئەوەی گۆڕانکارییەکان شوێنی خۆیان " "بگرن." msgid "Add Account" msgstr "" msgid "Add account" msgstr "" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "" msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" msgid "How does cloud sync work?" msgstr "" msgid "Account" msgstr "" msgid "(not signed in)" msgstr "" msgid "File" msgstr "پەڕگە" msgid "Open cloud translation" msgstr "" msgid "Manage accounts" msgstr "" msgid "Project:" msgstr "پڕۆژە:" msgid "Language:" msgstr "زمان:" msgid "Sign in to Cloud Account" msgstr "" msgid "Sign in to cloud account" msgstr "" msgid "No translation projects listed in your account." msgstr "" msgid "Downloading latest translations…" msgstr "دابەزاندنی دوایین وەرگێرانەکان…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #, c-format msgid "Sign in to %s" msgstr "" msgid "Syncing" msgstr "هاوکاتگەری" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s…" msgstr "" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s failed." msgstr "" msgid "Syncing error" msgstr "هەڵە ڕوویدا لە هاوکاتکردن" msgid "Add" msgstr "زیادکردن" msgid "Unknown Crowdin error." msgstr "" msgid "Not authorized, please sign in again." msgstr "دەسەڵاتی پێى نەدراوە، تكايە دووبارە بڕۆ ژوورەوە." msgid "Downloading translations is disabled in this project." msgstr "لە پڕۆژەیەدا دابەزاندنی وەڕگێرانەکان لەکار خراوە." msgid "Sign In" msgstr "چونەژوورەوە" msgid "Sign in" msgstr "چونەژوورەوە" msgid "Sign Out" msgstr "دەرچوون" msgid "Sign out" msgstr "دەرچوون" msgid "Learn more about Crowdin" msgstr "Crowdin زانیاری زیاتر دەربارەی" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" msgid "Waiting for authentication…" msgstr "چاوەڕوانی ڕێگەپێدانبە…" msgid "Updating user information…" msgstr "نوێکردنەوەی زانیارییەکانی بەکارهێنەر…" msgid "Sign in to Crowdin" msgstr "Crowdin چونەژوورەوە بۆ" msgid "Syncing with Crowdin failed." msgstr "هەماهەنگ کردن لەگەڵ Crowdin سەرکەوتوو نەبوو." msgid "Crowdin error" msgstr "هەڵەی Crowdin" msgid "Uploading translations…" msgstr "بەرزکردنەوەی وەرگێران…" msgid "&Copy" msgstr "&لەبەرگرتنەوە" msgid "Learn more" msgstr "زیاتر بزانە" msgid "&Help" msgstr "&یارمەتی" msgid "MO files can’t be directly edited in Poedit." msgstr "ناتواندرێت راستەوخۆ پەڕەگەکانی MO لە ناو Poedit دەستکاری بکرێت." msgid "Error opening file" msgstr "هەڵە هەیە لە کردنەوەی فایلدا" msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "تکایە پەڕگەی PO دووبارە بکەرەوە و دەستکاری بکە لە جیاتی ئەمە. کاتێک تۆ " "پاشەکەوتی دەکەیت, پەرگەی MO بە باشی نوێ دەبێتەوە." msgid "don’t delete temporary files (for debugging)" msgstr "پەڕگە کاتییەکان مەسڕەوە(بۆ ڕاستکردنەوە)" msgid "handle a poedit:// URI" msgstr "هەڵسوکەوت بکە لەگەڵ poedit:// URI" msgid "go to item at given line number" msgstr "" msgid "Failed to communicate with Poedit process." msgstr "" #, c-format msgid "Unhandled exception occurred: %s" msgstr "" msgid "Select translation template" msgstr "" msgid "Select translation file" msgstr "" msgid "Poedit is an easy to use translation editor." msgstr "Poedit دەستکاریکەرێکی سادە و ئاسان لە بەکارهێنانە بۆ وەرگێڕانەکان." msgid "You can’t drop more than one file on Poedit window." msgstr "" #, c-format msgid "File “%s” is not a translation file." msgstr "پەڕگەی \"%s\" پەڕگەی وەرگیڕان نیە." #, c-format msgid "File “%s” doesn’t exist." msgstr "" 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". #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "هەڵەگری زمانەوەانی ناچالاکە چونکە فەرهەنگ نامە بۆ %s دانەمەزراوە." msgid "Install" msgstr "دابەزاندن" #, c-format msgid "The file “%s” has been changed by another application." msgstr "" msgid "Reload file" msgstr "" msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" msgid "Ignore" msgstr "فەرامۆشکردن" msgid "Reload File" msgstr "بارکردنەوەی پەڕگە" msgid "The file has been modified. Do you want to save changes?" msgstr "" msgid "Save changes" msgstr "پاشەکەوت کردنی گۆڕانکارییەکان" msgid "Your changes will be lost if you don’t save them." msgstr "گۆڕانکارییەکانت دەفەوتێت ئەگەر پاشەکەوتی نەکەیت." msgid "Save" msgstr "پاشەکەوت کردن" msgid "Do&n’t save" msgstr "" msgid "Don’t Save" msgstr "پاشەکەوتی مەکە" msgid "The changes made by the other application will be lost if you save." msgstr "" msgid "Cancel" msgstr "هەڵوەشاندنەوە" msgid "Save Anyway" msgstr "" msgid "Save anyway" msgstr "" msgid "Save as…" msgstr "پاشەکەوت کردن وەکو…" msgid "Compile to…" msgstr "" msgid "Compiled Translation Files" msgstr "فایلە وەرگێڕدراوە بەراوردکراوەکان" msgid "Export to HTML…" msgstr "" msgid "HTML Files" msgstr "پەڕگەی HTML" #, c-format msgid "In: %s" msgstr "" msgid "Source code not available." msgstr "کۆدی سەرچاوە کراوە بوونی نیە." msgid "Updating failed" msgstr "نوێکردنەوە سەرکەوتو نەبوو" 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 "" msgid "Permission denied." msgstr "ڕێگەپێدان ڕەتکرایەوە." 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. 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. msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" msgid "Translation entries in the file are probably incorrect." msgstr "" msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "" msgid "Open translation template" msgstr "" #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "" msgstr[1] "" msgid "Validation results" msgstr "" msgid "" "Entries with errors were marked in red in the list. Details of the error " "will be shown when you select such an entry." msgstr "" msgid "The file was saved safely." msgstr "" msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" msgid "The file cannot be compiled into the MO format and used." msgstr "" msgid "No problems with the translation found." msgstr "" #, 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] "" msgid "The translation is ready for use." msgstr "وەرگێڕانەکە ئامادەیە بۆ بەکارهێنان." #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "" msgid "" "The file contained duplicate items, which is not allowed in PO files and " "would prevent the file from being used. Poedit fixed the issue, but you " "should review translations of any items marked as needing work and correct " "them if necessary." msgstr "" msgid "Language of the translation isn’t set." msgstr "زمانی وەرگیڕان دیارینەکراوە." msgid "Set Language" msgstr "ڕێکخستنی زمان" msgid "Set language" msgstr "ڕێکخستنی زمان" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." msgid "" "Suggestions are not available if the translation language is not set " "correctly. Other features, such as plural forms, may be affected as well." msgstr "" msgid "Language of the translation is the same as source language." msgstr "" msgid "Fix Language" msgstr "زمان چاک بکە" msgid "Fix language" msgstr "زمان چاک بکە" msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" msgid "Required header Plural-Forms is missing." msgstr "" #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "هەڵەی ڕستەکار لە ناوونیشانی فۆڕمی کۆ (\"%s\")." msgid "Fix the Header" msgstr "چاککردنەوەی ناوونیشان" 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". #, 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.")" msgid "Review" msgstr "چاو پیاخشاندنەوە" msgid "Would you like to use English for source text?" msgstr "" #, 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" msgid "Load English" msgstr "" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "وەرگێڕدراو: %d لە %d (%d %%)" #, c-format msgid "Remaining: %d" msgstr "ماوە: %d" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "" msgstr[1] "" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "" msgstr[1] "" msgid " (unsaved)" msgstr "" msgid " (modified)" msgstr " (گۆڕدراو)" #, c-format msgid "Failed to update translation memory: %s" msgstr "" msgid "Remove same-as-source translations" msgstr "" msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" msgid "Keep" msgstr "هێشتنەوە" msgid "Remove" msgstr "" msgid "Purge deleted translations" msgstr "پاکژکردنەوەی وەرگێڕانە سڕدراوەکان" msgid "Do you want to remove all translations that are no longer used?" msgstr "دەتەوێت هەموو ئەو وەرگێڕانە لاببەیت کە چیتر بەکارنایەن؟" 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 "" "ئەگەر بەردەوام بیت لەگەڵ بەرکەنارخستن،هەموو ئەو وەرگێڕدراوانەی نیشانەکراون " "وەکو سڕدراوە بە یەکجاریی لادەبرێن.ئەو کات دەبێت دووبارە وەریان بگێڕیتەوە " "ئەگەر زیادکران لە داهاتوودا." msgid "Purge" msgstr "پاکژکردنەوە" msgid "Copy from source text" msgstr "لەبەرگرتنەوەی لە دەقی ژێدەرەکەوە" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "سڕینەوەی وەرگێڕان" msgid "Clear Translation" msgstr "سڕینەوەی وەرگێڕان" msgid "Edit comment" msgstr "دەستکاریکردنی لێدوان" msgid "Edit Comment" msgstr "دەستکاریکردنی لێدوان" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "" msgid "Hide Sidebar" msgstr "شاردنەوەی لاتەنیشت" msgid "Show Sidebar" msgstr "پیشاندانی لاتەنیشت" msgid "Hide Status Bar" msgstr "شارنەوەی شریتی دۆخ" msgid "Show Status Bar" msgstr "پیشاندانی شریتی دۆخ" msgid "String length in characters: translation | source" msgstr "" msgid "String length in characters" msgstr "" msgid "Source text" msgstr "دەقی ژێدەر" msgid "Singular" msgstr "تاک" msgid "Plural" msgstr "کۆ" msgid "Translation" msgstr "وەرگێڕانەکان" msgid "Pre-translated" msgstr "پێش-وەرگێڕان" 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. msgid "Needs work" msgstr "پێویستی بە دەستکارییە" msgid "" "POT files are only templates and don’t contain any translations themselves.\n" "To make a translation, create a new PO file based on the template." msgstr "" "فايلى POT تەنها تێمپلەتن و هیچ وەرگێڕان لە خۆيان ناگرن. \n" " وەرگێڕان دروەست دەکەن، پەڕگەیەکی PO ی نوێ دروست بكە لەسەر بنەماى تێمپلەتەكە." msgid "Create new translation" msgstr "دروستکردنی وەرگێڕانی نوێ" msgid "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 msgid "Source text ID" msgstr "" msgid "Everything" msgstr "هەموو شتێک" #, c-format msgid "Form %i" msgstr "فۆڕم %i" #, c-format msgid "Form %i (unused)" msgstr "" msgid "Zero" msgstr "سفر" msgid "One" msgstr "یەک" msgid "Two" msgstr "دوو" msgid "Other" msgstr "جۆری تر" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, c-format msgid "String context: %s" msgstr "" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #, c-format msgid "String identifier: %s" msgstr "" #, c-format msgid "%s Format" msgstr "" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "" #, c-format msgid "Translation — %s" msgstr "وەرگێڕان — %s" msgid "ID" msgstr "ID" #, c-format msgid "Source text — %s" msgstr "سەرچاوەی دەق — %s" msgid "unknown language" msgstr "زمانی نەزانراو" #, c-format msgid "Network error: %s (%d)" msgstr "" msgid "Unknown error" msgstr "" #, c-format msgid "Failed command: %s" msgstr "فەرمان سەرکەوتوو نەبوو: %s" msgid "Failed to merge gettext catalogs." msgstr "لکاندنی کەتەلۆگەکان سەرکەوتوو نەبوو." msgid "Open in Editor" msgstr "کردنەوە لە دەستکاریکەردا" msgid "Open in editor" msgstr "کردنەوە لە دەستکاریکەردا" msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" msgid "No usage information" msgstr "" #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "" msgstr[1] "" msgid "Source code not found" msgstr "" 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 "" msgid "File cannot be opened" msgstr "" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "" msgid "Find" msgstr "دۆزینەوە" msgid "Replace" msgstr "جێگۆڕین" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "هەڵبژاردنەکان" msgid "Ignore case" msgstr "" msgid "Wrap around" msgstr "" msgid "Whole words only" msgstr "تەنیا گشت وشەکان" msgid "Find in source texts" msgstr "" msgid "Find in translations" msgstr "دۆزینەوە لە وەرگێڕاندا" msgid "Find in comments" msgstr "دۆزینەوە لە لێدوانەکان" msgid "Close" msgstr "داخستن" msgid "Replace &All" msgstr "" msgid "Replace &all" msgstr "" msgid "&Replace" msgstr "" msgid "< &Previous" msgstr "" msgid "&Next >" msgstr "" msgid "String to find" msgstr "" msgid "Replacement string" msgstr "" #, c-format msgid "Cannot execute program: %s" msgstr "ناتوانرێت پرۆگرام جێبەجێ بکرێت: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "" msgid "Translation Language" msgstr "زمانی وەرگێڕان" msgid "Language of the translation:" msgstr "زمانی وەرگێڕ:" msgid "All strings" msgstr "" msgid "Couldn’t download Localazy project details." msgstr "" msgid "There was an error when uploading translations to Localazy." msgstr "" msgid "Projects" msgstr "" msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" msgid "Add Project" msgstr "" msgid "Add project" msgstr "" msgid "Poedit - Catalogs manager" msgstr "Poedit - سازکاریی کەتەلۆگەکان" msgid "Edit…" msgstr "" msgid "Create new translations project" msgstr "دروستکردنی پرۆژەیەکی نوێی وەرگێڕان" msgid "Delete the project" msgstr "سڕینەوەی پرۆژەکە" msgid "Edit the project" msgstr "دەستکاریکردنی پرۆژەکە" msgid "Update all" msgstr "نوێکردنەوەی هەموو" msgid "Update all catalogs in the project" msgstr "نوێکردنەوەی هەموو کەتەلۆگەکان لە پرۆژەکە" msgid "Total" msgstr "هەموو" msgid "Untrans" msgstr "" msgctxt "column/row header" msgid "Needs Work" msgstr "پێویستی بە دەستکارییە" msgid "Errors" msgstr "" msgid "Last modified" msgstr "دوایین گۆڕانکاریی" msgid "Select directory" msgstr "پێڕست دەستنیشان بکە" msgid "Directories:" msgstr "پێڕستەکان:" msgid "" msgstr "<ناونەنراو>" #, c-format msgid "Do you want to delete project “%s”?" msgstr "" msgid "Delete project" msgstr "" msgid "Deleting the project will not delete any translation files." msgstr "" msgid "Confirmation" msgstr "دڵنیاییپێدان" msgid "Update all catalogs in this project?" msgstr "" msgid "Performs update from source code on all files in the project." msgstr "" msgid "Check for Updates…" msgstr "پشکنین بۆ نوێکردنەوە…" msgid "Catalogs Manager" msgstr "" msgid "&Preferences…" msgstr "" msgid "&Edit" msgstr "&دەستکاری" msgid "Undo" msgstr "پووچکردنەوە" msgid "Redo" msgstr "پێشتر" msgid "Paste and Match Style" msgstr "" msgid "Delete" msgstr "سڕینەوە" msgid "Spelling and Grammar" msgstr "" msgid "Show Spelling and Grammar" msgstr "" msgid "Check Document Now" msgstr "" msgid "Check Spelling While Typing" msgstr "" msgid "Check Grammar With Spelling" msgstr "" msgid "Correct Spelling Automatically" msgstr "" msgid "Substitutions" msgstr "" msgid "Show Substitutions" msgstr "" msgid "Smart Copy/Paste" msgstr "" msgid "Smart Quotes" msgstr "" msgid "Smart Dashes" msgstr "" msgid "Smart Links" msgstr "" msgid "Text Replacement" msgstr "" msgid "Transformations" msgstr "" msgid "Make Upper Case" msgstr "" msgid "Make Lower Case" msgstr "" msgid "Capitalize" msgstr "" msgid "Speech" msgstr "دەنگ" msgid "Start Speaking" msgstr "قسە بکە" msgid "Stop Speaking" msgstr "راوەستاندنی قشەکردن" msgid "&View" msgstr "&بینین" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Show Toolbar" msgstr "پیشاندانی شریتی ئامرازەکان" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Customize Toolbar…" msgstr "ڕێکخستنی شریتی ئامرازەکان…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Enter Full Screen" msgstr "پڕ بە شاشە" msgid "Window" msgstr "پەنجەرە" msgid "Minimize" msgstr "بچوککردنەوە" msgid "Zoom" msgstr "نزیکخستنەوە" msgid "Welcome to Poedit" msgstr "Poedit بەخێربێیت بۆ" msgid "Bring All to Front" msgstr "گشتی بۆ پێشەوە بهێنە" msgid "Information about the translator" msgstr "زانیاری دەربارەی وەرگێڕ" msgid "Name:" msgstr "ناو:" msgid "Your Name" msgstr "ناوی تۆ" msgid "Email:" msgstr "پۆستی ئەلکترۆنی:" msgid "you@example.com" msgstr "" msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "ناوەکەت و پۆستی ئەلکترۆنییەکەت تەنها بۆ ئەوە بەکاردێت کە کۆتا-وەرگێڕ " "دیاریدەکات لە پەڕگەی وەرگێڕان." msgid "Editing" msgstr "دەستکاریکردن" msgid "Automatically compile MO file when saving" msgstr "" msgid "Show summary after updating files" msgstr "" msgid "Check spelling" msgstr "" msgid "Always change focus to text input field" msgstr "هەمیشە سەرنج بگۆڕە بۆ خانەی تێئاخنینی دەق" msgid "" "Never let the list of strings take focus. If enabled, you must use Ctrl-" "arrows for keyboard navigation but you can also type text immediately, " "without having to press Tab to change focus." msgstr "" "هەرگیز مەهێڵە لیستێک لە زنجیرەنووسەکان سەرنج ببەن.ئەگەر چالاککرا،پێویستە " "Ctrl- و ئاراستەکان بەکاربهێنیت بۆ ڕێنیشاندەرەکانی تەختەکلیل بەڵام دەشتوانیت " "بەخێرایی دەق بنووسیت بە بێ ئەوەی کرتە لەسەر تاب بکەیت بۆ گۆڕینی سەرنج." msgid "Appearance" msgstr "ڕووکار" msgid "Use custom list font:" msgstr "بەکارهێنانی فۆنتی تایبەتی:" msgid "Use custom text fields font:" msgstr "" msgid "Change UI language" msgstr "گۆڕینی زمان" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions msgid "(requires Windows 8 or newer)" msgstr "(پێویستی بە ویندۆزی ٨ یان نوێترە)" msgid "General" msgstr "گشتی" msgid "Use translation memory" msgstr "" msgid "Manage…" msgstr "بەڕێوەبردن..." #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "" 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 "" msgid "Stored translations:" msgstr "" msgid "Database size on disk:" msgstr "" msgid "Import Translation Files…" msgstr "" msgid "Import translation files…" msgstr "" msgid "Import From TMX…" msgstr "" msgid "Import from TMX…" msgstr "" msgid "Export To TMX…" msgstr "" msgid "Export to TMX…" msgstr "" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). msgid "Reset" msgstr "ڕێکخستنەوە" msgid "Select translation files to import" msgstr "" msgid "Translation Memory" msgstr "بیرگەی وەرگێڕان" msgid "Importing translations…" msgstr "" #, c-format msgid "Error loading translation file “%s”." msgstr "" msgid "Finalizing…" msgstr "" msgid "Select TMX files to import" msgstr "" msgid "TMX Files" msgstr "" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "" msgid "Import error" msgstr "" msgid "Export as…" msgstr "هەناردن وەکو..." msgid "Exporting translations…" msgstr "هەناردەکردنی وەرگێڕانەکان..." #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "" msgid "Export error" msgstr "" msgid "Reset translation memory" msgstr "سفرکردنەوەی بیرگەی وەرگێڕان" msgid "Are you sure you want to reset the translation memory?" msgstr "ئایا دڵنیایت لە سفرکردنەوەی بیرگەی وەرگێڕان؟" 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. msgid "TM" msgstr "TM" msgid "" "Source code extractors are used to find translatable strings in the source " "code files and extract them so that they can be translated." msgstr "" msgid "Custom Extractors:" msgstr "" msgid "Custom extractors:" msgstr "" msgid "GNU gettext" msgstr "" msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" msgid "Delete extractor" msgstr "سڕینەوەی دەرهێنەر" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "ئایا دڵنیایت لە سڕینەوەی دەرهێنەری “%s” extractor؟" msgid "Extractors" msgstr "دەهێنەرەکان" msgid "Accounts" msgstr "هەژمار" msgid "Automatically check for updates" msgstr "پشکنین بۆ نوێکردنەوە بەخۆکاری" msgid "Include beta versions" msgstr "هەروەها وەشانی بیتا" msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" msgid "Updates" msgstr "نوێکردنەوە" msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" msgid "Line endings:" msgstr "" msgid "Unix (recommended)" msgstr "Unix (پێشنیارکراو)" msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "" msgid "Preserve formatting of existing files" msgstr "" msgid "Advanced" msgstr "پەرەسەندوو" msgid "Settings" msgstr "" msgid "Preparing strings…" msgstr "" msgid "Pre-translating from translation memory…" msgstr "" #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "" msgstr[1] "" msgid "Pre-translating…" msgstr "" 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. msgid "Pre-translate" msgstr "پێش-وەرگێڕان" msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" msgid "Cannot pre-translate from unknown language." msgstr "" msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" msgid "Only fill in exact matches" msgstr "" msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" msgid "Don’t mark exact matches as needing work" msgstr "" 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 "" msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "" msgstr[1] "" msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" msgid "No entries could be pre-translated." msgstr "" msgid "" "The TM doesn’t contain any strings similar to the content of this file. It " "is only effective for semi-automatic translations after Poedit learns enough " "from files that you translated manually." msgstr "" msgid "Cancelling…" msgstr "هەڵوەشاندنەوە…" msgid "Drag Folders or Files Here" msgstr "" msgid "Drag folders or files here" msgstr "" msgid "Add Folders…" msgstr "زیادکردنی فۆڵدەر…" msgid "Add folders…" msgstr "زیادکردنی فۆڵدەر…" msgid "Add Files…" msgstr "زیادکردنی پەڕگە…" msgid "Add files…" msgstr "زیادکردنی پەڕگە…" msgid "Add Wildcard…" msgstr "" msgid "Add wildcard…" msgstr "" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) msgid "Reveal in Finder" msgstr "" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" msgid "Show in Explorer" msgstr "" msgid "Show in Folder" msgstr "" msgid "Paths" msgstr "ڕێچکەکان" msgid "Excluded paths" msgstr "" msgid "Advanced extraction settings" msgstr "" msgid "Extract notes for translators from:" msgstr "" msgid "Comments prefixed with:" msgstr "" msgid "All comments" msgstr "" msgid "Additional xgettext flags:" msgstr "" msgid "Additional keywords" msgstr "" msgid "Name of the project the translation is for" msgstr "" msgid "Team name and email address or URL" msgstr "" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "" msgid "UTF-8 (recommended)" msgstr "UTF-8 (پێشنیارکراو)" msgid "Please save the file first. This section cannot be edited until then." msgstr "" msgid "Placeholders correctness" msgstr "" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "" #, c-format msgid "Superfluous placeholder “%s” that isn’t in source text." msgstr "" msgid "Plural form translations" msgstr "" msgid "Not all plural forms are translated." msgstr "" msgid "Inconsistent upper/lower case" msgstr "" msgid "The translation should start as a sentence." msgstr "" msgid "The translation should start with a lowercase character." msgstr "" msgid "Inconsistent whitespace" msgstr "" msgid "The translation doesn’t start with a space." msgstr "" msgid "The translation starts with a space, but the source text doesn’t." msgstr "" msgid "The translation is missing a newline at the end." msgstr "" msgid "The translation ends with a newline, but the source text doesn’t." msgstr "" msgid "The translation is missing a space at the end." msgstr "" msgid "The translation ends with a space, but the source text doesn’t." msgstr "" msgid "Punctuation checks" msgstr "" #, c-format msgid "The translation should end with “%s”." msgstr "" #, c-format msgid "The translation should not end with “%s”." msgstr "" #, c-format msgid "The translation ends with “%s”, but the source text ends with “%s”." msgstr "" msgid "Cloud" msgstr "" msgid "Clear Menu" msgstr "" msgid "Clear menu" msgstr "" msgid "Comment:" msgstr "لێدوان:" msgid "Update" msgstr "نوێکردنەوە" msgid "&Delete" msgstr "&سڕینەوە" msgid "Delete the comment" msgstr "سڕینەوەی لێدوان" msgid "Edit project" msgstr "دەستکاریکردنی پرۆژە" msgid "Project name:" msgstr "ناوی پرۆژە:" msgid "Browse" msgstr "گەڕان" msgid "Add directory to the list" msgstr "زیادکردنی پێڕست بۆ لیستەکە" msgid "OK" msgstr "باشە" msgid "&File" msgstr "&پەڕگە" msgid "&New…" msgstr "&نوێ…" msgid "New from &POT/PO file…" msgstr "نوێکردنەوە لە پەڕگەی &POT/PO ـەوە…" msgid "New From &POT/PO File…" msgstr "نوێکردنەوە لە پەڕگەی &POT/PO ـەوە…" msgid "&Open…" msgstr "&کردنەوە…" msgid "Open Recent" msgstr "کردنەوەی دوایین" msgid "Open recent" msgstr "کردنەوەی دوایین" msgid "Open cloud translation…" msgstr "" msgid "Open Cloud Translation…" msgstr "" msgid "&Start window" msgstr "" msgid "&Start Window" msgstr "" msgid "Catalogs &manager" msgstr "سازکاریی &کەتەلۆگەکان" msgid "Catalogs &Manager" msgstr "سازکاریی &کەتەلۆگەکان" msgid "&Close" msgstr "&داخستن" msgid "&Save" msgstr "&پاشەکەوت کردن" msgid "Save &as…" msgstr "" msgid "Save &As…" msgstr "" msgid "Compile to MO…" msgstr "" msgid "E&xport to HTML…" msgstr "" msgid "Check for updates…" msgstr "" msgid "Settings…" msgstr "" msgid "&Preferences" msgstr "&سازکارییەکان" msgid "E&xit" msgstr "چوو&نەدەرەوە" msgid "Quit" msgstr "وازهێنان" msgid "Copy from singular" msgstr "" msgid "Copy From Singular" msgstr "" msgid "Translation needs &work" msgstr "" msgid "Translation Needs &Work" msgstr "" msgid "Edit &comment" msgstr "دەستکاریکردنی &لێدوان" msgid "Edit &Comment" msgstr "دەستکاریکردنی &لێدوان" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "" msgid "&Find…" msgstr "" msgid "Replace…" msgstr "" msgid "Find next" msgstr "دۆزینەوەی دواتر" msgid "Find previous" msgstr "دۆزینەوەی پێشتر" msgid "Find and Replace…" msgstr "" msgid "Find Next" msgstr "دۆزینەوەی دواتر" msgid "Find Previous" msgstr "دۆزینەوەی پێشتر" msgid "Show string &ID" msgstr "" msgid "Show String &ID" msgstr "" msgid "Show warnings" msgstr "" msgid "Show Warnings" msgstr "" msgid "Sort by &file order" msgstr "ڕێکخستن بەپێی &ڕیزی پەڕگە" msgid "Sort by &File Order" msgstr "ڕێکخستن بەپێی &ڕیزی پەڕگە" msgid "Sort by &source" msgstr "ڕێکخستن بەپێی &ژێدەر" msgid "Sort by &Source" msgstr "ڕێکخستن بەپێی &ژێدەر" msgid "Sort by &translation" msgstr "ڕێکخستن بەپێی &وەرگێڕان" msgid "Sort by &Translation" msgstr "ڕێکخستن بەپێی &وەرگێڕان" msgid "&Group by context" msgstr "" msgid "&Group By Context" msgstr "" msgid "Entries with errors first" msgstr "" msgid "Entries with Errors First" msgstr "" msgid "&Untranslated entries first" msgstr "&سەرەتا وەرنەگێڕدراوە تێئاخنراوەکان" msgid "&Untranslated Entries First" msgstr "&سەرەتا وەرنەگێڕدراوە تێئاخنراوەکان" msgid "&Show code occurrences" msgstr "" msgid "&Show Code Occurrences" msgstr "" msgid "Show sidebar" msgstr "پیشاندانی لاتەنیشت" msgid "Show status bar" msgstr "پیشاندانی شریتی دۆخ" msgid "&Translation" msgstr "" msgid "&Update from source code" msgstr "" msgid "&Update from Source Code" msgstr "" msgid "Update from &POT file…" msgstr "" msgid "Update from &POT File…" msgstr "" msgid "Sync with Crowdin" msgstr "Crowdin هاوکاتکردن لەگەڵ " msgid "Pre-&translate…" msgstr "" msgid "&Validate translations" msgstr "" msgid "&Validate Translations" msgstr "" msgid "Remove Same-as-Source Translations" msgstr "" msgid "&Purge deleted translations" msgstr "&پاکژکردنەوەی وەرگێڕانە سڕاوەکان" msgid "&Purge Deleted Translations" msgstr "&پاکژکردنەوەی وەرگێڕانە سڕاوەکان" msgid "&Properties…" msgstr "" msgid "&Go" msgstr "&بڕۆ" msgid "&Done and next" msgstr "&جێبەجێکراو و بچۆ دانەی دواتر" msgid "&Done and Next" msgstr "&جێبەجێکراو و بچۆ دانەی دواتر" msgid "Previously edited" msgstr "" msgid "Previously Edited" msgstr "" msgid "&Previous translation" msgstr "&وەرگێڕانی پێشتر" msgid "&Previous Translation" msgstr "&وەرگێڕانی پێشتر" msgid "&Next translation" msgstr "&وەرگێڕانی دواتر" msgid "&Next Translation" msgstr "&وەرگێڕانی دواتر" msgid "P&revious unfinished" msgstr "تەواو&نەکراوی پێشوو" msgid "P&revious Unfinished" msgstr "تەواو&نەکراوی پێشوو" msgid "Ne&xt unfinished" msgstr "تەواو&نەکراوی دواتر" msgid "Ne&xt Unfinished" msgstr "تەواو&نەکراوی دواتر" msgid "Previous plural form" msgstr "" msgid "Previous Plural Form" msgstr "" msgid "Next plural form" msgstr "" msgid "Next Plural Form" msgstr "" msgid "&Online help" msgstr "&یارمەتی سەرهێڵ" msgid "&Online Help" msgstr "&یارمەتی سەرهێڵ" msgid "&GNU gettext manual" msgstr "" msgid "&GNU gettext Manual" msgstr "" msgid "&About Poedit" msgstr "&Poedit دەربارەی" msgid "&About" msgstr "&دەربارە" msgid "Extractor setup" msgstr "" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "لیستێک لە extensions جیاکرانەتەوە بە خاڵبۆر (e.g. *.cpp;*.h):" msgid "Invocation:" msgstr "" msgid "Command to extract translations:" msgstr "" 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 "" msgid "An item in keywords list:" msgstr "دانەیەک لە لیستەی وشەکلیلەکان:" msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "ئەمە هاوپێچ دەکرێت بۆ دێڕی فەرمی یەکجار\n" "بۆ هەر کلیلەوشەیەک. %k فراوانی دەکات بۆ کلیلەوشەکە." msgid "An item in input files list:" msgstr "دانەیەک لە لیستەی تێئاخنینی پەڕگەکان:" #, 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 فراوانی دەکات بۆ ناوی پەڕگە." msgid "Source code charset:" msgstr "هێڵکاری کۆدی ژێدەر:" #, 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 فرااوانی دەکات بۆ نرخی هێڵکاریی." msgid "Translation Properties" msgstr "" msgid "Project name and version:" msgstr "ناو و وەشانی پرۆژە:" msgid "Language team:" msgstr "" msgid "Plural forms:" msgstr "" msgid "Use default rules for this language" msgstr "" msgid "Use custom expression" msgstr "" msgid "Learn about plural forms" msgstr "" msgid "Charset:" msgstr "Koma tîpan (Charset):" msgid "Advanced Extraction Settings…" msgstr "" msgid "Advanced extraction settings…" msgstr "" msgid "Translation properties" msgstr "" msgid "Sources Paths" msgstr "" msgid "Sources paths" msgstr "ژێدەرەکانی ڕێچکەکان" msgid "Extract text from source files in the following directories:" msgstr "دەرهێنانی دەق لە پەڕگەکانی ژێدەرەوە لە پێڕستەکانی دادێ:" msgid "Base path:" msgstr "ڕێچکەی بنچینە:" msgid "Sources Keywords" msgstr "" msgid "Sources keywords" msgstr "ژێدەرەکانی کلیلەوشە" msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "ئەم کلیلەوشانە بەکاربهێنە(ناوی نەخشەکان) بۆ ناسینەوەی ئەو زنجیرەنووسانەی " "دەتوانرێت وەربگێڕدرێت\n" "لە پەڕگەکانی ژێدەرەکە:" msgid "Also use default keywords for supported languages" msgstr "" msgid "Learn about gettext keywords" msgstr "" msgid "Update summary" msgstr "کورتە نوێ بکەرەوە" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" msgid "New strings" msgstr "زنجیرەنووسەی نوێ" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" msgid "Obsolete strings" msgstr "زنجیرەنووسەی کۆن" msgid "(0 new, 0 obsolete)" msgstr "(0 نوێ، 0 کۆن)" msgid "Open" msgstr "" msgid "Open file" msgstr "" msgid "Save file" msgstr "" msgid "Validate" msgstr "" msgid "Check for errors in the translation" msgstr "" msgid "Update from code" msgstr "" msgid "Update from Code" msgstr "" msgid "Update from source code" msgstr "" msgid "Sidebar" msgstr "لاتەنیشت" msgid "Show or hide the sidebar" msgstr "پیشاندان و شارنەوەی لاتەنیشت" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. msgid "Previous source text" msgstr "" msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" msgid "Notes for translators" msgstr "" msgid "Comment" msgstr "" msgid "Add comment" msgstr "نووسینی لێدوان" msgid "Add Comment" msgstr "نووسینی لێدوان" msgid "Delete From Translation Memory" msgstr "" msgid "Delete from translation memory" msgstr "" msgid "Translation suggestions" msgstr "" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). msgid "No matches found" msgstr "" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). msgid "No Matches Found" msgstr "" msgid "This string was found in Poedit’s translation memory." msgstr "" msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" msgid "The TMX file is malformed." msgstr "" msgid "No translations were found in the TMX file." msgstr "" #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "" #, c-format msgid "Translation memory error: %s (%d)." msgstr "" msgid "Cannot create temporary directory." msgstr "ناتوانرێت پێڕستی کاتی دروست بکرێت." msgid "There are no translations. That’s unusual." msgstr "" msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "Translators typically use PO template files (POTs) prepared for them by the " "developer." msgstr "" msgid "(Learn more about GNU gettext)" msgstr "" msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" msgid "Update from POT" msgstr "" msgid "Take translatable strings from an existing POT template." msgstr "" msgid "" "You can also extract translatable strings directly from the source code:" msgstr "" msgid "Extract from sources" msgstr "" msgid "Configure source code extraction in Properties." msgstr "" #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #, c-format msgid "Version %s" msgstr "وەشان %s" msgid "Create new" msgstr "" msgid "Create new translation from POT template." msgstr "" msgid "Browse files" msgstr "" msgid "Open and edit translation files." msgstr "" msgid "Translate cloud project" msgstr "" msgid "Collaborate with other people online." msgstr "" msgid "Recent files" msgstr "" msgid "Sync" msgstr "" msgid "Synchronize the translation with Crowdin" msgstr "" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #, c-format msgid "About %s" msgstr "دەربارەی %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #, c-format msgid "%s Preferences" msgstr "" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "ئەوانی تر بشارەوە" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "هەمووی پیشان بدە" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "هەڵبژاردەکان..." msgid "Preferences..." msgstr "هەڵبژاردەکان..." #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "دوواترین" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "" msgid "&Apply" msgstr "" msgid "Apply" msgstr "" msgid "&Back" msgstr "" msgid "Back" msgstr "بڕۆدواوە" msgid "&Cancel" msgstr "" msgid "&Clear" msgstr "" msgid "Clear" msgstr "پاککردنەوە" msgid "Copy" msgstr "لەبەرگرتنەوە" msgid "Cu&t" msgstr "بڕ&ین" msgid "Cut" msgstr "بڕین" msgid "Edit" msgstr "دەستکاریکردن" msgid "&Quit" msgstr "" msgid "Help" msgstr "یارمەتی" msgid "&New" msgstr "&نوێ" msgid "New" msgstr "نوێ" msgid "&No" msgstr "" msgid "No" msgstr "نەخێر" msgid "&OK" msgstr "" msgid "Open…" msgstr "کردنەوە..." msgid "&Open..." msgstr "&کردنەوە..." msgid "Open..." msgstr "کردنەوە…" msgid "&Paste" msgstr "&دانان" msgid "Paste" msgstr "دانان" msgid "Preferences" msgstr "هەڵبژاردەکان" msgid "&Redo" msgstr "&دواتر" msgid "Refresh" msgstr "نوێکردنەوە" msgid "&Save as" msgstr "" msgid "Save as" msgstr "پاشەکەوتکردن وەک" msgid "Select &All" msgstr "دیاریکردنی &هەمووی" msgid "Select All" msgstr "دیاریکردنی هەمووی" msgid "&Undo" msgstr "&پێشتر" msgid "&Yes" msgstr "" msgid "Yes" msgstr "بەڵێ" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "دوگمەی سەرەوە" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "دوگمەی خوارەوە" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "چەپ" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "ڕاست" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "shift" poedit-3.5/locales/sv.mo0000644000175100001770000016343214664354143012223 00000000000000|+: : :&:?:<S::J:g: V;`; o;y; ;;;;;;;;;;;;;;<<<0<B<H<M<U<]<o<<< < <<<< <<<<==0=L=R=X=a=g=p== = = ====>>7>N>e>k>p>>>>>> ? ???'?0? 4? @? L?Y? h?t? ? ?? ?? ???@@&@F@c@@ @ @1@@'@A.A HASA7YA6AA)AB B]"BB<BDB$C:C ACNCC C"CD+"D)ND xDDDDDDDDEE#4EXEmE|E EE EEEEEE%EF +FLFTF]FuF FF/F FkFXG]GpGGGG-G1G.H GHRH)iHH HYHI!I&I9ILIaIeI|IIIIIII;J CJ'PJ^xJLJ?$K dK rKK*KKK"K5K.LILdLjL}L L L L L LLLLLLLfMlMMuM(N?NRN"dNN NNN N NNN0N'OAO#VO<zO"OO OO*P03P!dP'PPPP(PTQ fQtQ yQ QQQQQ Q Q Q RR!R0RJRRRcR lRxR RRR R RRRRRRSz/TT TTT TT U2(U[UuU|UUU UU U U V!V&V;^D^Y^n^^^._4_J_=P__1__n_E[```;` ` aa@,amacb,#c,Pc}c cc2c*c ddwdj$e eeee%ee ff3fEfWf qffffffff8f g gg$g ,g 8g DgRg"Yg"|gg g gg g(ghhz'hhhhh h h h hh h i i i ,i 8iCi^ioi"iiii i ij jj$j -j:jTjdjtj j jjjj jjj!k *k8k@kHkQk Ykgkkkkkk k k kk ll.lBlRlgl|lmm 4m@mOmbm smm mmKmmn n%n:nMncn1nn n nn=ioo'p,p(>pgp op}p+pp p8p" q/q@qrCr8brrs8*t1ctRtctQLuu'u:ulvPv-vCwALwKw0w. x:x!x)x-y+Cy8oyCyuy,bzLz;z]{v{Z{gW|J|c }[n}o}:~7~m_[HN^Xp ف72("[~~łqDɃRVj o ȄЄӄ ڄ"$-F_p<Ѕ #$@eˆ#V cz ч. ;GPhHl5m7Y 3aω16;?\.a ͊ 1J!Z| ( 3#>b=t S\ q{  ÎʎҎێ  5JPj Ϗԏ؏  0C`}!!Аِ )8GW_zɑ !;Wp ƒ ͒ؒ':Tez“Փ !(+%T(zΔ6ݔ.Hd~ 8Aʕ$ +1] fns=J3*~Ǘm t*-Ƙ( *<N _.&ݙ/ Pl  ǚΚӚ&-2 ` ju .ڛ ؜2&;Y'ѝ! h' Ξ "4"Hk}M #p H@ڠ  '20Ar#A!*BK_s ȢԢܢYOe]{2٣ *!Bdhm ˤ:;0S6+  2%BX/4˦.4Pcǧ ͧ٧' ?K ^j{ ˨    )9M hEڪw! ֫!;Utzʬ  (4=)r ̭ԭ )8P7Y@ۮ%ïկ/. =Hb.kİ԰̱ϱ #59&PLwIJ+۲3+;g''ճ Դ)*D al ȵ ҵ ܵ7Q  =Z1jbHbi>Ƹָݸ< 4B5 (Bk?.2޼l_̽۽(AYq þоپ # +<6s { ¿,ʿ,$ , :H \'g ?MU\ b p ~  (8a{  "3FYh z. $-6F]r 8Rh)F _ iv  R / ;F`s/ A Wd)} (' =&+dZ785/6XQmS%l"1qaY1GJ5H+.$+(*,E3rK~4qO;d2R.iNi:^mq;Olf:I_y94""Eeq"'="Dg|  $).J^r J*"F5i&"&!(Haq 6Mk{#N62fiF 6!sX0%!G!b  45nCv#=ld B@Twa QjqO 91B)aT'ZSFQYu>"/VJZsG6*[ar`^;XyVb?' <IL:x%AMZ\W88O,*d0)i{J-yK|]:c%}oo0][-Pg6YS&r(\p@X(tM?iE=eD"OU|53 w  fj,#32H 4[ pk {qke;mpgl16U85:`, +Y^L9$qz2fGu(A7N4!d0DNt{F<x_+7vX)nKG+>&9m3 LeUIN Iy E"nsk/<W>PhrVvT]cQmuR$bjD !_@xEl%WK-_7MCwbz/|gcAB` zh~?SC^*tf=\h!H'P#RiF&;$H1~.2 RsJo}.} .~ (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd AccountAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add accountAdd 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 languagesAlt+Always 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 errorCrowdin is an online localization management platform and collaborative translation tool.Ctrl+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 againDownDownloading 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:EnterEnter 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 loading translation file “%s”.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export errorExport 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…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)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport from TMX…Import translation files…Importing translation memory from “%s” 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 CrowdinLeftLine %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 translations were found in the TMX file.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKObsolete stringsOneOnly 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 translation templateOpen...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 translationsQuitQuit %sReading file content failed with the following error: %sRecentRecent 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 FinderReviewRightSaveSave &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 languageServicesSet LanguageSet languageSettingsSettings…Shift+Show AllShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow summary after updating filesShow 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.These strings are no longer in the source code. Poedit will remove them from the file now.These strings were found in the sources but were not in the file. Poedit will add them to the file now.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 entries in the file are probably incorrect.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 errorUntransUpUpdateUpdate 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 the file failed. Click on 'Details >>' for details.Updating 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown 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: 2024-08-30 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 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&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(0 nya, 0 föråldrade)(Läs mer om GNU gettext)(Nya: %i, föråldrade: %i)(Använd standardspråk)(Inte inloggad)(kräver Windows 8 eller nyare)< FöregåendeOm %sKontoKontonLägg tillLägg till kontoLägg till kommentarLägg till filer…Lägg till mappar…Lägg till projektLägg till jokertecken…Lägg till kontoLä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ödsAlt+Ändra alltid fokus till textinmatningsfältetEn post i inmatningslistan:En post i sökordslistan:UtseendeTillämpaÄ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 in 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 onlineplattform för lokaliseringshantering och ett samarbetsverktyg för översättning.Ctrl+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.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 igenNerHä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:ReturGå 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.Fel vid laddning av översättningsfilen ”%s”.Problem när filen lästes inFel vid sparande av filFel vid laddning av XLIFF-fil: %sFelAlltUndantagna sökvägarExportera till TMX…Exportera som…ExportfelExportera till HTML…Exportera till TMX…Export 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…Konfigurera extraherareExtraherareKommando misslyckades: %sMisslyckades att kommunicera med Poedit-processen.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.Färdigställer…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)FrekventaGNU gettextAllmäntHTML-filerHjälpDölj %sDölj andraDö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…ImportfelImportera från TMX…Importera översättningsfiler…Import av översättningsminne från ”%s” misslyckades.Importerar översättningar…I: %sInkludera betaversionerInkonsekventa versaler/gemenerInkonsekvent blankteckenInformation om översättarenInstalleraOgiltig filAnrop:JSON ö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 CrowdinVänsterRad %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…Nytt från &POT/PO-fil…Nya strängarNä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.Inga översättningar hittades i TMX-filen.Ingen användningsinformationInte alla pluralformer är översätta.Inte behörig, vänligen logga in igen.Anteckningar för översättareOKFöråldrade strängarEttAktivera 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 översättningsmallÖ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ättningarAvslutaAvsluta %sDet gick inte att läsa filinnehållet med följande fel: %sSenasteSenaste 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älltextErsä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 FinderGranskaHögerSparaSpar&a som…Spar&a som…Spara ändåSpara ändåSpara somSpara som…Spara ändringarSpara filSkärmklipp: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åkTjänsterAnge språkAnge språkInställningarInställningar…Skift+Visa allaVisa 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 sammanfattning efter uppdatering av filerVisa 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 hittaErsä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” 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.Dessa strängar är inte i källkoden längre. Poedit tar bort dem från filen nu.Dessa strängar hittades i källorna, men var inte i filen. Poedit kommer att lägga till dem i filen nu.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, utan extraheras automatiskt från källkod. På detta sätt hålls de uppdaterade och korrekta. Översättare använder vanligtvis mallfiler (POT) som har förberetts 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ättningsposter i filen är förmodligen felaktiga.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)ÅngraOhanterat undantag inträffade: %sUnix (rekommenderas)Okänt Crowdin-fel.Okänt felOöversattUppUppdateraUppdatera 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 misslyckadesUppdatering av filen misslyckades. Klicka på 'Detaljer >>' för detaljer.Uppdaterar ö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 %sVäntar på autentisering…Välkommen till PoeditVid uppdatering från källorEndast hela ordFönsterWindowsVill du använda Engelsk källtext?LoopaRadbryt efter:XLIFF översättningsfilerJaDu 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.NollZoomaaltBehöver arbetectrlta inte bort temporära filer (för felsökning)t.ex. nplurals = 2; plural = (n > 1);ungefärlig träff i filengå till post på givet radnummerhantera en poedit:// URIförhandsöversätt från TMskiftokänt språkversion som inte stöds (%s)du@exempel.se"%s" är inte en giltig POT-fil.poedit-3.5/locales/ar.po0000644000175100001770000022101014664354152012163 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "إخفاء رسالة التنبيه هذه" msgid "Don’t Show Again" msgstr "عدم العرض مجدّدًا" msgid "Don’t show again" msgstr "عدم العرض مجدّدًا" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(الجديدة: %i، البائدة: %i)" msgid "Collecting source files…" msgstr "جاري تجميع ملفّات المصدر…" msgid "Extracting translatable strings…" msgstr "جاري إستخراج مقاطع الترجمة…" msgid "Failed to load file with extracted translations." msgstr "فشل تحميل الملف مع الترجمات المستخرجة." msgid "Merging differences…" msgstr "جاري دمج الاختلافات…" msgid "Updating translations" msgstr "تحديث الترجمات" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "لا يمكن فتح الملف \"%s\"." msgid "Invalid file" msgstr "الملفّ غير صالح" #, c-format msgid "Malformed header: “%s”" msgstr "التّرويسة فاسدة: ”%s“" msgid "PO Translation Files" msgstr "ملفّات PO ترجميّة" msgid "POT Translation Templates" msgstr "ملفّات POT قالبيّة" msgid "XLIFF Translation Files" msgstr "ملفات ترجمة XLIFF" msgid "JSON Translation Files" msgstr "ملفات ترجمة JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "ملفات ترجمة Flutter" msgid "All Translation Files" msgstr "كلّ ملفّات التّرجمة" msgid "The file is in a format not recognized by Poedit." msgstr "الملف بصيغة لم يتعرف عليها Poedit." msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "ملف JSON هذا ليس ملف ترجمات ولا يمكن تعديله في Poedit." #, c-format msgid "Reading file content failed with the following error: %s" msgstr "فشل قراءة محتوى الملف مع الخطأ التالي: %s" #, c-format msgid "" "File “%s” is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "الملفّ ”%s“ للقراءة فقط ولا يمكن حفظه.\n" "رجاء احفظه باسم مختلف." #, c-format msgid "Couldn’t save file %s." msgstr "تعذّر حفظ الملفّ %s." msgid "Screenshots:" msgstr "لقطات شاشة:" #, c-format msgid "%i line of file “%s” was not loaded correctly." msgid_plural "%i lines of file “%s” were not loaded correctly." msgstr[0] "%i سطر ملف ““%s”” لم يتم تحميله بشكل صحيح." msgstr[1] "%i سطر الملف ““%s”” لم يتم تحميله بشكل صحيح." msgstr[2] "%i سطر الملف ““%s”” لم يتم تحميله بشكل صحيح." msgstr[3] "%i سطر الملف ““%s”” لم يتم تحميله بشكل صحيح." msgstr[4] "%i سطر الملف ““%s”” لم يتم تحميله بشكل صحيح." msgstr[5] "%i آسطر الملف ““%s”” لم يتم تحميله بشكل صحيح." #, c-format msgid "Line %d of file “%s” is corrupted (not valid %s data)." msgstr "السطر %d من الملف “%s” معطوب (بيانات %s غير صالحة)." msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "ملف PO المكسور: نموذج وحيد يستخدم مع msgid_multiural" msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "ملفّ PO معطوب: استُخدمت صيغة الجمع msgstr دون msgid_plural" msgid "Couldn’t load the file, it is probably damaged." msgstr "تعذر تحميل الملف، ربما تالف." msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "حدثت أخطاء عند تحميل الملف. قد تكون بعض البيانات مفقودة أو معطوبة نتيجة لذلك." msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "حدثت مشكلة أثناء تنسيق الملفّ تنسيقًا جميلًا (لكنّه حُفِظ حفظًا صحيحًا)." #, 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 بدلًا من ذلك وعُدّل الإعداد وفقًا لذلك." msgid "Error saving file" msgstr "خطأ أثناء حفظ الملف" #, c-format msgid "“%s” is not a valid POT file." msgstr "الملفّ ”%s“ ليس ملفّ POT صالح." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "خطأ في تحميل ملف XLIFF: %s" #, c-format msgid "unsupported version (%s)" msgstr "إصدار غير مدعوم (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML msgid "Broken markup in translation string." msgstr "خطأ في الترميز في جملة الترجمة." msgid "(Use default language)" msgstr "(استخدم اللغة الافتراضيّة)" msgid "Language selection" msgstr "حدّد اللّغة" msgid "Select your preferred language" msgstr "اختر لغتك المفضّلة" msgid "You must restart Poedit for this change to take effect." msgstr "عليك إعادة تشغيل Poedit لتطبيق التّعديلات." msgid "Add Account" msgstr "إضافة حساب" msgid "Add account" msgstr "إضافة حساب" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "معرفة المزيد عن %s" msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "توصيل Poedit مع منصات التوطين السحابية المدعومة لمزامنة الترجمات التي تتم " "إدارتها عليها بسلاسة." msgid "How does cloud sync work?" msgstr "كيفية عمل المزامنة السحابية؟" msgid "Account" msgstr "حساب" msgid "(not signed in)" msgstr "(لم يتم تسجيل الدخول)" msgid "File" msgstr "ملفّ" msgid "Open cloud translation" msgstr "فتح الترجمة السحابية" msgid "Manage accounts" msgstr "إدارة الحسابات" msgid "Project:" msgstr "المشروع:" msgid "Language:" msgstr "اللّغة:" msgid "Sign in to Cloud Account" msgstr "تسجيل الدخول إلى حساب سحابي" msgid "Sign in to cloud account" msgstr "تسجيل الدخول إلى حساب سحابي" msgid "No translation projects listed in your account." msgstr "لا توجد مشروعات ترجمة مدرجة في حسابك." msgid "Downloading latest translations…" msgstr "ينزّل أحدث التّرجمات…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #, c-format msgid "Sign in to %s" msgstr "تسجيل الدخول إلى %s" msgid "Syncing" msgstr "جارٍ المزامنة" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s…" msgstr "تحميل الترجمات إلى %s…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s failed." msgstr "فشل تحميل الترجمات إلى %s." msgid "Syncing error" msgstr "خطأ في المزامنة" msgid "Add" msgstr "إضافة" msgid "Unknown Crowdin error." msgstr "" msgid "Not authorized, please sign in again." msgstr "غير مستوثق، رجاء لِج ثانية." msgid "Downloading translations is disabled in this project." msgstr "عُطِّل تنزيل التّرجمات لهذا المشروع." msgid "Sign In" msgstr "لِج" msgid "Sign in" msgstr "لِج" msgid "Sign Out" msgstr "اخرج" msgid "Sign out" msgstr "اخرج" msgid "Learn more about Crowdin" msgstr "اطّلع على المزيد عن «كراودِن»" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" msgid "Waiting for authentication…" msgstr "ينتظر الاستيثاق…" msgid "Updating user information…" msgstr "يحدّث معلومات المستخدم…" msgid "Sign in to Crowdin" msgstr "لِج إلى «كراودِن»" msgid "Syncing with Crowdin failed." msgstr "فشلت المزامنة مع «كراودِن»." msgid "Crowdin error" msgstr "خطأ «كراودِن»" msgid "Uploading translations…" msgstr "يرفع التّرجمات…" msgid "&Copy" msgstr "ا&نسخ" msgid "Learn more" msgstr "اطّلع على المزيد" msgid "&Help" msgstr "م&ساعدة" msgid "MO files can’t be directly edited in Poedit." msgstr "لا يمكن تحرير ملفّات MO مباشرةً في «محرِّر Po»." msgid "Error opening file" msgstr "خطأ في فتح الملفّ" msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "الرجاء فتح ملف PO المقابل والقيام بتحريره عوض ذلك. عند الحفظ، سيُحدّث ملف MO " "كذلك." msgid "don’t delete temporary files (for debugging)" msgstr "لا تحذف الملفّات المؤقّتة (للتّنقيح)" msgid "handle a poedit:// URI" msgstr "تعامل مع معرّف poedit://‎" msgid "go to item at given line number" msgstr "انتقل إلى العنصر في رقم السطر المعين" msgid "Failed to communicate with Poedit process." msgstr "فشل الاتّصال مع عمليّة Poedit." #, c-format msgid "Unhandled exception occurred: %s" msgstr "حدث خطأ لا يمكن التّعامل معه: %s" msgid "Select translation template" msgstr "حدد قالب الترجمة" msgid "Select translation file" msgstr "حدد ملف الترجمة" msgid "Poedit is an easy to use translation editor." msgstr "«محرِّر Po» هو محرّر ترجمات سهل الاستخدام." msgid "You can’t drop more than one file on Poedit window." msgstr "لا يمكنك إسقاط أكثر من ملف واحد في Poedit." #, c-format msgid "File “%s” is not a translation file." msgstr "الملف \"%s\" ليس ملف ترجمة. " #, c-format msgid "File “%s” doesn’t exist." msgstr "الملفّ ”%s“ غير موجود." 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". #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "تدقيق الإملاء معطّل لأنّ قاموس %s غير مثبّت." msgid "Install" msgstr "ثبّت" #, c-format msgid "The file “%s” has been changed by another application." msgstr "تم تغيير الملف \"%s\" بواسطة تطبيق آخر." msgid "Reload file" msgstr "إعادة تحميل الملف" msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "هل تريد إعادة تحميل الملف من القرص؟ سيتم فقدان تعديلاتك غير المحفوظة في " "«محرّر Po» إذا فعلت ذلك." msgid "Ignore" msgstr "تجاهل" msgid "Reload File" msgstr "إعادة تحميل الملف" msgid "The file has been modified. Do you want to save changes?" msgstr "تم تعديل الملف. هل تريد حفظ التغييرات؟" msgid "Save changes" msgstr "حفظ التغييرات " msgid "Your changes will be lost if you don’t save them." msgstr "ستفقد تعديلاتك إن لم تحفظها." msgid "Save" msgstr "حفظ" msgid "Do&n’t save" msgstr "عدم الحفظ" msgid "Don’t Save" msgstr "عدم الحفظ" msgid "The changes made by the other application will be lost if you save." msgstr "التغييرات التي أجرتها التطبيقات الأخرى سوف تضيع إذا قمت بالحفظ." msgid "Cancel" msgstr "ألغِ" msgid "Save Anyway" msgstr "حفظ على أي حال" msgid "Save anyway" msgstr "حفظ على أي حال" msgid "Save as…" msgstr "حفظ باسم…" msgid "Compile to…" msgstr "صرّف إلى…" msgid "Compiled Translation Files" msgstr "ملفّات ترجمة مصرّفة" msgid "Export to HTML…" msgstr "" msgid "HTML Files" msgstr "ملفّات HTML" #, c-format msgid "In: %s" msgstr "في: %s" msgid "Source code not available." msgstr "الكود المصدريّ غير متوفّر." msgid "Updating failed" msgstr "فشل التّحديث" 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 "" "تعذر تحديث الترجمات من رمز المصدر، لأنه لم يتم العثور على رمز في الموقع " "المحدد في خصائص الملف." msgid "Permission denied." msgstr "الإذن مرفوض." 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. 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. msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "إذا كنت قد منعت من الوصول إلى ملفاتك، يمكنك السماح به في تفضيلات النظام > " "الحماية والخصوصية > الخصوصية > الملفات والمجلدات." msgid "Translation entries in the file are probably incorrect." msgstr "إدخالات الترجمة في الملف ربما غير صحيحة." msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "فشل تحديث الملف. انقر على \"التفاصيل >>\" للحصول على التفاصيل." msgid "Open translation template" msgstr "فتح قالب الترجمة" #, 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 مشكلة مع التّرجمات." msgid "Validation results" msgstr "نتائج الفحص" msgid "" "Entries with errors were marked in red in the list. Details of the error " "will be shown when you select such an entry." msgstr "" "المدخلات بأخطاء عُلّمت بالأحمر في القائمة. ستظهر تفاصيل الخطأ عندما تختار " "مدخلة ما." msgid "The file was saved safely." msgstr "حُفظ الملفّ حفظًا آمنًا." msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "حُفظ الملفّ حفظًا آمنًا وصُرّف إلى نسق MO، لكنّه قد لا يعمل عملًا صحيحًا." msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "حُفظ الملفّ حفظًا آمنًا، لكن فشل تصريفه إلى نسق MO واستخدامه." msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "صُرّف الملفّ إلى نسق MO لكنّ ربما لن يعمل عملًا صحيحًا." msgid "The file cannot be compiled into the MO format and used." msgstr "تعذّر تصريف الملفّ إلى نسق MO فلا يمكن استخدامه." msgid "No problems with the translation found." msgstr "لم يُعثر على مشاكل مع التّرجمة." #, 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 مدخلة بحاجة إلى ترجمة." msgid "The translation is ready for use." msgstr "التّرجمة جاهزة لاستخدامها." #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "لقد أصلح Poedit محتوى غير صالح تلقائيا في الملف ”%s“." msgid "" "The file contained duplicate items, which is not allowed in PO files and " "would prevent the file from being used. Poedit fixed the issue, but you " "should review translations of any items marked as needing work and correct " "them if necessary." msgstr "" "يحوي الملفّ عناصر مكرّرة وذلك غير مسموح في ملفّات PO وسيمنع استخدام الملفّ. أصلح " "Poedit المشكلة، ولكن عليك مراجعة ترجمات العناصر المعلّمة ك‍”تحتاج عملًا“ " "وتصحيحها إن لزم." msgid "Language of the translation isn’t set." msgstr "لغة التّرجمة لم تُضبط." msgid "Set Language" msgstr "اضبط اللغة" msgid "Set language" msgstr "اضبط اللغة" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." msgid "" "Suggestions are not available if the translation language is not set " "correctly. Other features, such as plural forms, may be affected as well." msgstr "" "الاقتراحات لا تتوفّر إن لم تضبط لغة التّرجمة ضبطًا صحيحًا. الميزات الأخرى (كصيغ " "المعدود) قد تتأثّر أيضًا." msgid "Language of the translation is the same as source language." msgstr "لغة التّرجمة نفسها لغة المصدر." msgid "Fix Language" msgstr "أصلح اللغة" msgid "Fix language" msgstr "أصلح اللغة" msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "يحتوي هذا الملف على إدخالات مع نماذج معدودة، ولكن ليس لديه ترويسة أشكال " "متعددة." msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "الإدخالات في هذا الملف لها صيغ معدودة مختلفة مما يقوله ترويسة الأشكال " "المتعددة للملف" msgid "Required header Plural-Forms is missing." msgstr "ترويسة صيغ المعدود المطلوبة مفقودة." #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "خطأ صياغيّ في ترويسة صيغ المعدود (”%s“)." msgid "Fix the Header" msgstr "أصلح التّرويسة" 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". #, 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.")" msgid "Review" msgstr "راجع" msgid "Would you like to use English for source text?" msgstr "هل ترغب في استخدام اللغة الإنجليزية للنص المصدري؟" #, 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" msgid "Load English" msgstr "" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "المُترجَمة: %d من %d ‏(%d %%)" #, c-format msgid "Remaining: %d" msgstr "المتبقّي: %d" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "لا أخطاء" msgstr[1] "خطأ واحد" msgstr[2] "خطآن" msgstr[3] "%d أخطاء" msgstr[4] "%d خطأ" msgstr[5] "%d خطأ" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "لا مدخلات" msgstr[1] "مدخلة واحدة" msgstr[2] "مدخلتان" msgstr[3] "%d مدخلات" msgstr[4] "%d مدخلة" msgstr[5] "%d مدخلة" msgid " (unsaved)" msgstr " (غير محفوظ)" msgid " (modified)" msgstr "(معدّل)" #, c-format msgid "Failed to update translation memory: %s" msgstr "فشل تحديث ذاكرة التّرجمة: %s" msgid "Remove same-as-source translations" msgstr "" msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" msgid "Keep" msgstr "أبقها" msgid "Remove" msgstr "" msgid "Purge deleted translations" msgstr "نظّف التّرجمات المحذوفة" msgid "Do you want to remove all translations that are no longer used?" msgstr "أتريد إزالة كلّ التّرجمات غير المستخدمة؟" 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 "" "إن تابعت مع التّنظيف، ستُزال كلّ التّرجمات المعلّمة بِ‍”محذوفة“ نهائيًّا. ستستطيع " "ترجمتها مجدّدًا إن أُضيفت في المستقبل." msgid "Purge" msgstr "نظّف" msgid "Copy from source text" msgstr "نسخ من نص المصدري" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "تنظيف الترجمة" msgid "Clear Translation" msgstr "تنظيف الترجمة" msgid "Edit comment" msgstr "تحرير التعليق" msgid "Edit Comment" msgstr "تحرير التعليق" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "أحداث الكود" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "أحداث الكود" msgid "Hide Sidebar" msgstr "أخفِ الشّريط الجانبيّ" msgid "Show Sidebar" msgstr "أظهر الشّريط الجانبيّ" msgid "Hide Status Bar" msgstr "أخفِ شريط الحالة" msgid "Show Status Bar" msgstr "أظهر شريط الحالة" msgid "String length in characters: translation | source" msgstr "طول المقطع في الأحرف: الترجمة مصدر" msgid "String length in characters" msgstr "طول المقطع في الأحرف" msgid "Source text" msgstr "النصّ المصدر" msgid "Singular" msgstr "المفرد" msgid "Plural" msgstr "الجمع" msgid "Translation" msgstr "التّرجمة" msgid "Pre-translated" msgstr "تُرجمت مسبقًا" 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. msgid "Needs work" msgstr "تحتاج المزيد من الانتباه" msgid "" "POT files are only templates and don’t contain any translations themselves.\n" "To make a translation, create a new PO file based on the template." msgstr "" "ملفّات POT ما هي إلّا قوالب لا تحوي ترجمات.\n" "لبدء الترجمة، أنشئ ملفّ PO مبنيّ على القالب." msgid "Create new translation" msgstr "أنشئ ترجمة جديدة" msgid "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 msgid "Source text ID" msgstr "" msgid "Everything" msgstr "كلّ شيء" #, c-format msgid "Form %i" msgstr "الصّيغة %i" #, c-format msgid "Form %i (unused)" msgstr "النموذج%i (غير مستخدم)" msgid "Zero" msgstr "صفر" msgid "One" msgstr "واحد" msgid "Two" msgstr "إثنان" msgid "Other" msgstr "أخرى" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, c-format msgid "String context: %s" msgstr "" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #, c-format msgid "String identifier: %s" msgstr "" #, c-format msgid "%s Format" msgstr "نسق %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "نسق %s" #, c-format msgid "Translation — %s" msgstr "التّرجمة — %s" msgid "ID" msgstr "المعرّف" #, c-format msgid "Source text — %s" msgstr "النّصّ المصدر — %s" msgid "unknown language" msgstr "لغة مجهولة" #, c-format msgid "Network error: %s (%d)" msgstr "" msgid "Unknown error" msgstr "" #, c-format msgid "Failed command: %s" msgstr "فشل الأمر: %s" msgid "Failed to merge gettext catalogs." msgstr "فشل دمج كاتالوجات «غِت‌تكست»." msgid "Open in Editor" msgstr "افتح في المحرّر" msgid "Open in editor" msgstr "فتح في المحرّر" msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "لا توجد معلومات حول تواتر هذه السلسلة في شفرة المصدر في الملف." msgid "No usage information" msgstr "لم يتم العثور على معلومات الاستخدام" #, 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 أحداث التعليمات البرمجية" msgid "Source code not found" msgstr "لم يُعثر على كود المصدر" 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 إظهار شفرة المصدر حيث يتم استخدام السلسلة، لأن الملف " "إما غير متوفر في الموقع المشار إليه أو أنه مرجع رمزي لا يشير إلى ملف حقيقي." msgid "File cannot be opened" msgstr "لا يمكن فتح الملف" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "تعذر على Poedit فتح الملف «%s»." msgid "Find" msgstr "بحث" msgid "Replace" msgstr "استبدل" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "خيارات" msgid "Ignore case" msgstr "تجاهل حالة الأحرف" msgid "Wrap around" msgstr "لفّ حول" msgid "Whole words only" msgstr "كامل الكلمات فقط" msgid "Find in source texts" msgstr "البحث نصوص المصدر" msgid "Find in translations" msgstr "البحث في الترجمات" msgid "Find in comments" msgstr "البحث في التعليقات" msgid "Close" msgstr "أغلق" msgid "Replace &All" msgstr "استبدل ال&كلّ" msgid "Replace &all" msgstr "استبدل ال&كلّ" msgid "&Replace" msgstr "ا&ستبدل" msgid "< &Previous" msgstr "< ال&سّابقة" msgid "&Next >" msgstr "ال&تّالية >" msgid "String to find" msgstr "النّص للبحث عنه" msgid "Replacement string" msgstr "نصّ الاستبدال" #, c-format msgid "Cannot execute program: %s" msgstr "تعذّر تنفيذ البرنامج: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "" msgid "Translation Language" msgstr "لغة التّرجمة" msgid "Language of the translation:" msgstr "لغة التّرجمة:" msgid "All strings" msgstr "" msgid "Couldn’t download Localazy project details." msgstr "" msgid "There was an error when uploading translations to Localazy." msgstr "" msgid "Projects" msgstr "" msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" msgid "Add Project" msgstr "" msgid "Add project" msgstr "" msgid "Poedit - Catalogs manager" msgstr "«محرِّر Po» - مدير الكتالوجات" msgid "Edit…" msgstr "تحرير…" msgid "Create new translations project" msgstr "أنشئ مشروع ترجمات جديد" msgid "Delete the project" msgstr "احذف المشروع" msgid "Edit the project" msgstr "حرّر المشروع" msgid "Update all" msgstr "حدّث الكلّ" msgid "Update all catalogs in the project" msgstr "حدّث كلّ الكتالوجات في المشروع" msgid "Total" msgstr "المجموع" msgid "Untrans" msgstr "غير المترجمة" msgctxt "column/row header" msgid "Needs Work" msgstr "تحتاج عملًا" msgid "Errors" msgstr "أخطاء" msgid "Last modified" msgstr "آخر تعديل" msgid "Select directory" msgstr "اختر دليلًا" msgid "Directories:" msgstr "الأدلّة:" msgid "" msgstr "<غير معنون>" #, c-format msgid "Do you want to delete project “%s”?" msgstr "هل تريد حذف المشروع «%s»؟" msgid "Delete project" msgstr "حذف المشروع" msgid "Deleting the project will not delete any translation files." msgstr "حذف المشروع لن يحذف أي ملفات ترجمة." msgid "Confirmation" msgstr "أكّد" msgid "Update all catalogs in this project?" msgstr "هل تريد تحديث جميع الكتالوجات في هذا المشروع؟" msgid "Performs update from source code on all files in the project." msgstr "إجراء تحديث من رمز المصدر على جميع الملفات في المشروع." msgid "Check for Updates…" msgstr "التمس التّحديثات…" msgid "Catalogs Manager" msgstr "مدير الكتالوجات" msgid "&Preferences…" msgstr "&التفضيلات…" msgid "&Edit" msgstr "ت&حرير" msgid "Undo" msgstr "تراجع" msgid "Redo" msgstr "أعد" msgid "Paste and Match Style" msgstr "لصق ومطابقة التنسيق" msgid "Delete" msgstr "احذف" msgid "Spelling and Grammar" msgstr "الإملاء والنّحو" msgid "Show Spelling and Grammar" msgstr "إظهار التدقيق الإملائي والنحوي" msgid "Check Document Now" msgstr "تدقيق المستند الآن" msgid "Check Spelling While Typing" msgstr "تدقيق إملائي أثناء الكتابة" msgid "Check Grammar With Spelling" msgstr "تدقيق إملائي ونحوي" msgid "Correct Spelling Automatically" msgstr "صحّح الإملاء آليًّا" msgid "Substitutions" msgstr "الاستبدالات" msgid "Show Substitutions" msgstr "إظهار الاستبدالات" msgid "Smart Copy/Paste" msgstr "نسخ/لصق ذكيّ" msgid "Smart Quotes" msgstr "علامات اقتباس ذكيّة" msgid "Smart Dashes" msgstr "شُرَط ذكيّة" msgid "Smart Links" msgstr "روابط ذكيّة" msgid "Text Replacement" msgstr "استبدال النّصّ" msgid "Transformations" msgstr "التّحويلات" msgid "Make Upper Case" msgstr "اجعلها بحالة أحرف كبيرة" msgid "Make Lower Case" msgstr "اجعلها بحالة أحرف صغيرة" msgid "Capitalize" msgstr "كبّر الحروف" msgid "Speech" msgstr "النّطق" msgid "Start Speaking" msgstr "ابدأ النّطق" msgid "Stop Speaking" msgstr "أوقف النّطق" msgid "&View" msgstr "&عرض" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Show Toolbar" msgstr "إظهار شريط الأدوات" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Customize Toolbar…" msgstr "تخصيص شريط الأدوات…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Enter Full Screen" msgstr "ادخل ملء الشّاشة" msgid "Window" msgstr "نافذة" msgid "Minimize" msgstr "صغّر" msgid "Zoom" msgstr "قرّب" msgid "Welcome to Poedit" msgstr "مرحبًا في Poedit" msgid "Bring All to Front" msgstr "اجلب الكلّ إلى الأمام" msgid "Information about the translator" msgstr "معلومات حول المترجم" msgid "Name:" msgstr "الاسم:" msgid "Your Name" msgstr "اسمك" msgid "Email:" msgstr "البريد الإلكترونيّ:" msgid "you@example.com" msgstr "بريدك الإلكتروني" msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "يُستخدم اسمك وبريدك الإلكترونيّ فقط لضبط ترويسة ”آخر مترجم“ لملفّات «غنو " "غِت‌تكست»." msgid "Editing" msgstr "التّحرير" msgid "Automatically compile MO file when saving" msgstr "صرّف آليًّا ملف ‎.mo عند الحفظ" msgid "Show summary after updating files" msgstr "إظهار الملخص بعد تحديث الملفات" msgid "Check spelling" msgstr "دقّق الإملاء" msgid "Always change focus to text input field" msgstr "غيّر دائمًا التّركيز إلى حقل إدخال النصّ" msgid "" "Never let the list of strings take focus. If enabled, you must use Ctrl-" "arrows for keyboard navigation but you can also type text immediately, " "without having to press Tab to change focus." msgstr "" "لا تدع قائمة السلاسل تأخذ التّركيز أبدًا. إن فُعّل، عليك استخدام مفتاح Ctrl مع " "الأسهم للتّنقّل عبر لوحة المفاتيح. يمكنك هكذا طباعة النصّ مباشرةً دون الحاجة إلى " "ضغط مفتاح Tab لتغيير التّركيز." msgid "Appearance" msgstr "المظهر" msgid "Use custom list font:" msgstr "استخدم خطّ قوائم مخصّص:" msgid "Use custom text fields font:" msgstr "استخدم خطّ حقول النّصوص مخصّص:" msgid "Change UI language" msgstr "تغيير لغة الواجهة" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions msgid "(requires Windows 8 or newer)" msgstr "(يتطلّب «وندوز» 8 وأحدث)" msgid "General" msgstr "عامّ" msgid "Use translation memory" msgstr "استخدم ذاكرة التّرجمة" msgid "Manage…" msgstr "إدارة…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "عند التّحديث من المصادر" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "مطابقة غبشة داخل الملفّ" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "احصل على ترجمة سابقة من ذاكرة التّرجمة" 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» محاولة ملء المدخلات الجديدة فقط من التّرجمات السّابقة في الملفّ " "أو من ذاكرة التّرجمة كلّها. استخدام ذاكرة التّرجمة لن يكون فعّالًا جديًّا إن كانت " "شبه فارغة، ولكنّها ستصبح أفضل متى ما أضف ترجمات أخرى إليها." msgid "Stored translations:" msgstr "التّرجمات المخزّنة:" msgid "Database size on disk:" msgstr "حجم قاعدة البيانات في القرص:" msgid "Import Translation Files…" msgstr "استيراد ملفات الترجمة…" msgid "Import translation files…" msgstr "استيراد ملفات الترجمة…" msgid "Import From TMX…" msgstr "استيراد من TMX…" msgid "Import from TMX…" msgstr "استيراد من TMX…" msgid "Export To TMX…" msgstr "تصدير إلى TMX ..." msgid "Export to TMX…" msgstr "تصدير إلى TMX ..." #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). msgid "Reset" msgstr "صفّر" msgid "Select translation files to import" msgstr "اختر ملفات التّرجمة لاستيرادها" msgid "Translation Memory" msgstr "ذاكرة التّرجمة" msgid "Importing translations…" msgstr "يستورد التّرجمات…" #, c-format msgid "Error loading translation file “%s”." msgstr "خطأ في تحميل ملف الترجمة \"%s\"." msgid "Finalizing…" msgstr "جاري الإنهاء…" msgid "Select TMX files to import" msgstr "حدد ملفات TMX لاستيرادها" msgid "TMX Files" msgstr "ملفّات TMX" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "فشل استيراد ذاكرة الترجمة من \"%s\"." msgid "Import error" msgstr "خطأ في الإستيراد" msgid "Export as…" msgstr "صدّر ك‍…" msgid "Exporting translations…" msgstr "تصدير الترجمات ..." #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "فشل تصدير ذاكرة الترجمة إلى \"%s\"." msgid "Export error" msgstr "خطأ في التصدير" msgid "Reset translation memory" msgstr "صفّر ذاكرة الترجمة" msgid "Are you sure you want to reset the translation memory?" msgstr "أمتأكّد من تصفير ذاكرة التّرجمة؟" 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. msgid "TM" msgstr "ذاكرة الترجمة" msgid "" "Source code extractors are used to find translatable strings in the source " "code files and extract them so that they can be translated." msgstr "" "تُستخدم مستخرجات الكود المصدريّ للبحث عن السّلاسل القابلة للتّرجمة في ملفّات " "الكود المصدريّ واستخراجها ليمكن ترجمتها." msgid "Custom Extractors:" msgstr "مستخرجات مخصّصة:" msgid "Custom extractors:" msgstr "مستخرجات مخصّصة:" msgid "GNU gettext" msgstr "GNU gettext" msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "يدعم كلّ لغات البرمجة التي تتعرّف عليها أدوات غنو ‌غِت‌‌تكست (PHP، وسي/سي++، وسي#، " "وبيرل، وبايثون، وجافا، وجافاسكربت وغيرها)." msgid "Delete extractor" msgstr "احذف المستخرج" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "أمتأكّد من حذف مستخرج «%s»؟" msgid "Extractors" msgstr "المستخرجات" msgid "Accounts" msgstr "الحسابات" msgid "Automatically check for updates" msgstr "التمس آليًّا عن التّحديثات" msgid "Include beta versions" msgstr "ضمّن نسخ بيتا" msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "نسخ بيتا تحوي المزايا الجديدة الأخيرة مع التّحسينات، لكن قد تكون أقلّ استقرارًا." msgid "Updates" msgstr "التّحديثات" msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "تؤثّر هذه الإعدادات على تنسيق ملفّات PO الدّاخليّ. عدّلها إن أردت متطلّبات محدّدة " "كالتّحكّم بالإصدارات." msgid "Line endings:" msgstr "نهايات الأسطر:" msgid "Unix (recommended)" msgstr "يُنِكس (مستحسن)" msgid "Windows" msgstr "وندوز" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "لفّ عند:" msgid "Preserve formatting of existing files" msgstr "حافظ على تنسيق الملفّات الموجودة" msgid "Advanced" msgstr "متقدّم" msgid "Settings" msgstr "" msgid "Preparing strings…" msgstr "جارٍ إعداد المقاطع…" msgid "Pre-translating from translation memory…" msgstr "الترجمة المسبقة من ذاكرة الترجمة..." #, 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 مقطع مسبقًا" msgid "Pre-translating…" msgstr "يترجم مسبقًا…" 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. msgid "Pre-translate" msgstr "تُرجمت مسبقًا" msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" msgid "Cannot pre-translate from unknown language." msgstr "" msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" msgid "Only fill in exact matches" msgstr "املأ فقط المطابقات التّامّة" msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" msgid "Don’t mark exact matches as needing work" msgstr "لا تعلّم المطابقات التّامّة بِ‍”تحتاج عملًا“" 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 تُعلّم بِ‍”تحتاج " "عملًا“ ويجب مراجعتها قبل استخدامها." msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "التّرجمة مسبقًا تبحث آليًّا عن المطابقات التّامّة أو الغبشة للسّلاسل غير المترجمة، " "وذلك في ذاكرة التّرجمة لملء التّرجمات." #, 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 مدخلة مسبقًا." msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "عُلّمت التّرجمات ب‍”تحتاج عملًا“، لأنّها قد تكون غير دقيقة. عليك مراجعتها لتصحيحها." msgid "No entries could be pre-translated." msgstr "لا مدخلات يمكن ترجمتها مسبقًا." msgid "" "The TM doesn’t contain any strings similar to the content of this file. It " "is only effective for semi-automatic translations after Poedit learns enough " "from files that you translated manually." msgstr "" "لا تحوي TM أيّة سلاسة مشابهة لمحتوى الملفّ. هي فعّالة فقط للتّرجمات شبه الآليّة " "بعد أن يتعلّم Poedit كفايةً من الملفّات التي تترجمها يدويًّا." msgid "Cancelling…" msgstr "جارٍ الإلغاء…" msgid "Drag Folders or Files Here" msgstr "اسحب المجلدات أو الملفات هنا" msgid "Drag folders or files here" msgstr "اسحب المجلدات أو الملفات هنا" msgid "Add Folders…" msgstr "إضافة مجلّدات…" msgid "Add folders…" msgstr "إضافة مجلّدات…" msgid "Add Files…" msgstr "إضافة ملفّات…" msgid "Add files…" msgstr "إضافة ملفّات…" msgid "Add Wildcard…" msgstr "إضافة حرف بدل…" msgid "Add wildcard…" msgstr "أضف حرف بدل…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) msgid "Reveal in Finder" msgstr "كشف في Finder" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" msgid "Show in Explorer" msgstr "أظهر في المتصفّح" msgid "Show in Folder" msgstr "إظهار في المجلد" msgid "Paths" msgstr "المسارات" msgid "Excluded paths" msgstr "المسارات المستثناة" msgid "Advanced extraction settings" msgstr "إعدادات استخراج متقدّمة" msgid "Extract notes for translators from:" msgstr "استخرج ملاحظات المترجمين من:" msgid "Comments prefixed with:" msgstr "التعليقات المُبتدأة ب‍:" msgid "All comments" msgstr "كل التّعليقات" msgid "Additional xgettext flags:" msgstr "رايات xgettext إضافيّة:" msgid "Additional keywords" msgstr "الكلمات المفتاحيّة الإضافيّة" msgid "Name of the project the translation is for" msgstr "اسم المشروع الذي تكون التّرجمات له" msgid "Team name and email address or URL" msgstr "اسم الفريق وعنوان البريد الإلكتروني أو عنوان URL" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "مثلًا nplurals=2; plural=(n > 1);‎" msgid "UTF-8 (recommended)" msgstr "UTF-8 (مستحسن)" msgid "Please save the file first. This section cannot be edited until then." msgstr "رجاء احفظ الملفّ أوّلًا. لا يمكن تحرير هذا القسم حتّى ذلك الحين." msgid "Placeholders correctness" msgstr "صحة المكون" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "المكون \"%s\" غير مترجم." #, c-format msgid "Superfluous placeholder “%s” that isn’t in source text." msgstr "المكون الغير ضروري “%s” لا يوجد في النص الأصلي." msgid "Plural form translations" msgstr "ترجمات بصيغة الجموع" msgid "Not all plural forms are translated." msgstr "لم تُترجم كلّ صيغ الجموع." msgid "Inconsistent upper/lower case" msgstr "حالة أعلى/أسفل غير متسقة" msgid "The translation should start as a sentence." msgstr "يجب أن تبدأ التّرجمة كجملة." msgid "The translation should start with a lowercase character." msgstr "يجب أن تبدأ التّرجمة بحرف صغير." msgid "Inconsistent whitespace" msgstr "مسافة بيضاء غير متسقة" msgid "The translation doesn’t start with a space." msgstr "يجب ألّا تبدأ التّرجمة بمسافة." msgid "The translation starts with a space, but the source text doesn’t." msgstr "بدأت التّرجمة بمسافة، ولكنّ النّصّ المصدر لم يبدأ بها." msgid "The translation is missing a newline at the end." msgstr "ينقص التّرجمة سطرًا جديدًا في نهايتها." msgid "The translation ends with a newline, but the source text doesn’t." msgstr "انتهت التّرجمة بمسافة، ولكنّ النّصّ المصدر لم ينتهِ بها." msgid "The translation is missing a space at the end." msgstr "ينقص التّرجمة مسافة في نهايتها." msgid "The translation ends with a space, but the source text doesn’t." msgstr "انتهت التّرجمة بسطر جديد، ولكنّ النّصّ المصدر لم ينتهِ بها." msgid "Punctuation checks" msgstr "فحص علامات الترقيم" #, c-format msgid "The translation should end with “%s”." msgstr "يجب أن تنتهي التّرجمة ب‍”%s“." #, c-format msgid "The translation should not end with “%s”." msgstr "يجب ألّا تنتهي التّرجمة ب‍”%s“." #, c-format msgid "The translation ends with “%s”, but the source text ends with “%s”." msgstr "تنتهي الترجمة بـ \"%s\" ، لكن النص المصدر ينتهي بـ \"%s\"." msgid "Cloud" msgstr "" msgid "Clear Menu" msgstr "مسح القائمة" msgid "Clear menu" msgstr "مسح القائمة" msgid "Comment:" msgstr "التّعليق:" msgid "Update" msgstr "تحديث" msgid "&Delete" msgstr "ا&حذف" msgid "Delete the comment" msgstr "حذف التعليق" msgid "Edit project" msgstr "حرّر المشروع" msgid "Project name:" msgstr "اسم المشروع:" msgid "Browse" msgstr "تصفّح" msgid "Add directory to the list" msgstr "إضافة الدّليل إلى القائمة" msgid "OK" msgstr "حسنًا" msgid "&File" msgstr "&ملفّ" msgid "&New…" msgstr "&جديد…" msgid "New from &POT/PO file…" msgstr "ملف جديد من &POT/PO…" msgid "New From &POT/PO File…" msgstr "ملف جديد من &POT/PO…" msgid "&Open…" msgstr "&فتح…" msgid "Open Recent" msgstr "افتح الأخيرة" msgid "Open recent" msgstr "فتح الأحدث" msgid "Open cloud translation…" msgstr "" msgid "Open Cloud Translation…" msgstr "" msgid "&Start window" msgstr "&بدء النافذة" msgid "&Start Window" msgstr "&بدء نافذة" msgid "Catalogs &manager" msgstr "م&دير الكتالوجات" msgid "Catalogs &Manager" msgstr "م&دير الكتالوجات" msgid "&Close" msgstr "أ&غلق" msgid "&Save" msgstr "&حفظ" msgid "Save &as…" msgstr "حفظ &باسم…" msgid "Save &As…" msgstr "حفظ &باسم…" msgid "Compile to MO…" msgstr "جمع الى MO…" msgid "E&xport to HTML…" msgstr "" msgid "Check for updates…" msgstr "تحقق من التحديثات…" msgid "Settings…" msgstr "إعدادات…" msgid "&Preferences" msgstr "ت&فضيلات" msgid "E&xit" msgstr "أ&نهِ" msgid "Quit" msgstr "إنهاء" msgid "Copy from singular" msgstr "نسخ من الصيغة المفردة" msgid "Copy From Singular" msgstr "نسخ من الصيغة المفردة" msgid "Translation needs &work" msgstr "تحتاج التّرجمة &عملًا" msgid "Translation Needs &Work" msgstr "تحتاج التّرجمة &عملًا" msgid "Edit &comment" msgstr "تحرير الت&عليق" msgid "Edit &Comment" msgstr "تحرير الت&عليق" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "الاقتراحات" msgid "&Find…" msgstr "&بحث…" msgid "Replace…" msgstr "استبدال…" msgid "Find next" msgstr "ابحث عن التّالي" msgid "Find previous" msgstr "ابحث عن السّابق" msgid "Find and Replace…" msgstr "إيجاد والاستبدال…" msgid "Find Next" msgstr "بحث عن التالي" msgid "Find Previous" msgstr "بحث عن السابق" msgid "Show string &ID" msgstr "إظهار السلسلة ومعرف ID&" msgid "Show String &ID" msgstr "إظهار السلسلة ومعرف ID&" msgid "Show warnings" msgstr "عرض التحذيرات" msgid "Show Warnings" msgstr "عرض التحذيرات" msgid "Sort by &file order" msgstr "فرز حسب &ترتيب الملفات" msgid "Sort by &File Order" msgstr "فرز حسب &ترتيب الملفات" msgid "Sort by &source" msgstr "فرز حسب ال&مصدر" msgid "Sort by &Source" msgstr "فرز حسب ال&مصدر" msgid "Sort by &translation" msgstr "فرز حسب ال&ترجمة" msgid "Sort by &Translation" msgstr "فرز حسب ال&ترجمة" msgid "&Group by context" msgstr "&جمّع بالسّياق" msgid "&Group By Context" msgstr "&جمّع بالسّياق" msgid "Entries with errors first" msgstr "المدخلات مع أخطاء أولا" msgid "Entries with Errors First" msgstr "المدخلات مع أخطاء أولا" msgid "&Untranslated entries first" msgstr "المدخلات &غير المترجمة أوّلًا" msgid "&Untranslated Entries First" msgstr "المدخلات &غير المترجمة أوّلًا" msgid "&Show code occurrences" msgstr "&إظهار أحداث التعليمات البرمجية" msgid "&Show Code Occurrences" msgstr "&إظهار أحداث الكود" msgid "Show sidebar" msgstr "أظهر الشّريط الجانبيّ" msgid "Show status bar" msgstr "أظهر شريط الحالة" msgid "&Translation" msgstr "&التّرجمة" msgid "&Update from source code" msgstr "تحديث من &مصادرِ" msgid "&Update from Source Code" msgstr "تحديث من &مصادرِ" msgid "Update from &POT file…" msgstr "تحديث من ملف &POT…" msgid "Update from &POT File…" msgstr "تحديث من ملف &POT…" msgid "Sync with Crowdin" msgstr "زامن مع كراودِن" msgid "Pre-&translate…" msgstr "الترجمة &المسبقة…" msgid "&Validate translations" msgstr "ت&حقّق من سلامة التّرجمات" msgid "&Validate Translations" msgstr "ت&حقّق من سلامة التّرجمات" msgid "Remove Same-as-Source Translations" msgstr "" msgid "&Purge deleted translations" msgstr "ن&ظّف التّرجمات المحذوفة" msgid "&Purge Deleted Translations" msgstr "ن&ظّف التّرجمات المحذوفة" msgid "&Properties…" msgstr "&خصائص…" msgid "&Go" msgstr "&انتقال" msgid "&Done and next" msgstr "&تمّت وإلى التّالية" msgid "&Done and Next" msgstr "&تمّت وإلى التّالية" msgid "Previously edited" msgstr "تم تعديله سابقا" msgid "Previously Edited" msgstr "تم تعديله سابقا" msgid "&Previous translation" msgstr "التّرجمة ال&سّابقة" msgid "&Previous Translation" msgstr "التّرجمة ال&سّابقة" msgid "&Next translation" msgstr "التّرجمة ال&تّالية" msgid "&Next Translation" msgstr "التّرجمة ال&تّالية" msgid "P&revious unfinished" msgstr "غير المنتهية ال&سّابقة" msgid "P&revious Unfinished" msgstr "غير المنتهية ال&سّابقة" msgid "Ne&xt unfinished" msgstr "غير المنتهية ال&تّالية" msgid "Ne&xt Unfinished" msgstr "غير المنتهية ال&تّالية" msgid "Previous plural form" msgstr "صيغة المعدود السّابقة" msgid "Previous Plural Form" msgstr "صيغة المعدود السّابقة" msgid "Next plural form" msgstr "صيغة المعدود التّالية" msgid "Next Plural Form" msgstr "صيغة المعدود التّالية" msgid "&Online help" msgstr "مساعدة &شبكيّة" msgid "&Online Help" msgstr "مساعدة &شبكيّة" msgid "&GNU gettext manual" msgstr "كتيّب &غنو غِت​تكست" msgid "&GNU gettext Manual" msgstr "كتيّب &غنو غِت​تكست" msgid "&About Poedit" msgstr "&عنْ Poedit" msgid "&About" msgstr "&عنْ" msgid "Extractor setup" msgstr "إعداد المستخرج" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "قائمة الامتدادات مفصولة بفواصل منقوطة (مثلًا ‎*.cpp;*.h):" msgid "Invocation:" msgstr "الاستدعاء:" msgid "Command to extract translations:" msgstr "أمر استخراج التّرجمات:" 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 إلى راية طقم المحارف (طالع أدناه)." msgid "An item in keywords list:" msgstr "عنصر في قائمة الكلمات المفتاحيّة:" msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "سيُرفق هذا بسطر الأمر مرّة لكلّ ملفّ دخل.\n" "يُوسّع ‎%K إلى الكلمة المفتاحيّة." msgid "An item in input files list:" msgstr "عنصر في قائمة ملفّات الدّخل:" #, 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 إلى اسم الملفّ." msgid "Source code charset:" msgstr "طقم محارف الكود المصدريّ:" #, 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 إلى قيمة طقم المحارف." msgid "Translation Properties" msgstr "خصائص التّرجمة" msgid "Project name and version:" msgstr "اسم المشروع وإصداره:" msgid "Language team:" msgstr "فريق التّرجمة:" msgid "Plural forms:" msgstr "صيغ المعدود:" msgid "Use default rules for this language" msgstr "استخدم قواعد اللغة الافتراضيّة" msgid "Use custom expression" msgstr "استخدم تعبيرًا مخصّصًا" msgid "Learn about plural forms" msgstr "تعلّم حول صيغ المعدود" msgid "Charset:" msgstr "طقم المحارف:" msgid "Advanced Extraction Settings…" msgstr "إعدادات استخراج متقدّمة…" msgid "Advanced extraction settings…" msgstr "إعدادات استخراج متقدّمة…" msgid "Translation properties" msgstr "خصائص التّرجمة" msgid "Sources Paths" msgstr "مسارات المصادر" msgid "Sources paths" msgstr "مسارات المصادر" msgid "Extract text from source files in the following directories:" msgstr "استخرج النّصوص من الملفّات المصدريّة في الأدلّة التّالية:" msgid "Base path:" msgstr "المسار الأساس:" msgid "Sources Keywords" msgstr "كلمات المصادر المفتاحيّة" msgid "Sources keywords" msgstr "كلمات المصادر المفتاحيّة" msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "استخدم الكلمات المفتاحيّة هذه (أسماء الدّوال) للتعرّف على\n" "السلاسل القابلة للتّرجمة في الملفات المصدريّة:" msgid "Also use default keywords for supported languages" msgstr "استخدم أيضًا الكلمات المفتاحيّة الافتراضيّة للّغات المدعومة" msgid "Learn about gettext keywords" msgstr "تعلّم المزيد عن كلمات «غِت‌​تكست» المفتاحيّة" msgid "Update summary" msgstr "ملخص التّحديث" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" "تم العثور على هذه السلاسل في المصادر ولكن لم تكن في الملف.\n" "سيقوم «محرّر Po» بإضافتها إلى الملف الآن." msgid "New strings" msgstr "السلاسل الجديدة" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" "لم تعد هذه المقاطع في الكود المصدري.\n" "سيقوم محرر «Po» بإزالتها من الملف الآن." msgid "Obsolete strings" msgstr "السّلاسل البائدة" msgid "(0 new, 0 obsolete)" msgstr "(لا جديدة، لا بائدة)" msgid "Open" msgstr "" msgid "Open file" msgstr "فتح ملف" msgid "Save file" msgstr "حفظ الملف" msgid "Validate" msgstr "تحقق" msgid "Check for errors in the translation" msgstr "تحقّق الأخطاء في التّرجمة" msgid "Update from code" msgstr "تحديث من التعليمات البرمجية" msgid "Update from Code" msgstr "تحديث من التعليمات البرمجية" msgid "Update from source code" msgstr "تحديث من شفرة المصدر" msgid "Sidebar" msgstr "الشّريط الجانبيّ" msgid "Show or hide the sidebar" msgstr "أظهر الشّريط الجانبيّ أو أخفه" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. msgid "Previous source text" msgstr "نص المصدر السابق" msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "نصّ المصدر القديم (قبل أن يتغيّر أثناء التحديث) الذي تقابله التّرجمة غير " "الدّقيقة الحاليّة." msgid "Notes for translators" msgstr "ملاحظات للمترجمين" msgid "Comment" msgstr "تعليق" msgid "Add comment" msgstr "إضافة تعليق" msgid "Add Comment" msgstr "إضافة تعليق" msgid "Delete From Translation Memory" msgstr "حذف من ذاكرة الترجمة" msgid "Delete from translation memory" msgstr "حذف من ذاكرة الترجمة" msgid "Translation suggestions" msgstr "اقتراحات الترجمة" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). msgid "No matches found" msgstr "لا مطابقات" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). msgid "No Matches Found" msgstr "لا مطابقات" msgid "This string was found in Poedit’s translation memory." msgstr "عُثر على السّلسلة في ذاكرة ترجمة «محرِّر Po»." msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" msgid "The TMX file is malformed." msgstr "ملف TMX تالف." msgid "No translations were found in the TMX file." msgstr "لم يتم العثور على ترجمات في ملف TMX." #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "قاعدة بيانات ذاكرة الترجمة تالفة: %s (%d)." #, c-format msgid "Translation memory error: %s (%d)." msgstr "خطأ في ذاكرة الترجمة: %s (%d)." msgid "Cannot create temporary directory." msgstr "تعذّر إنشاء الدّليل المؤقّت." msgid "There are no translations. That’s unusual." msgstr "ليست هناك ترجمات. هذا غير طبيعيّ." msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "Translators typically use PO template files (POTs) prepared for them by the " "developer." msgstr "" "لا تتم إضافة الإدخالات القابلة للترجمة يدويا في نظام Gettext، ولكن يتم " "استخراجها تلقائيا\n" "من شفرة المصدر. وبهذه الطريقة، فإنها تبقى محدثة ودقيقة.\n" "يستخدم المترجمون عادة ملفات نماذج PO (POTs) المعدة لهم بواسطة المطور." msgid "(Learn more about GNU gettext)" msgstr "(اطّلع على المزيد عن «غنو غِت‌تكست»)" msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "أبسط طريقة لملء هذا الملف بالترجمة هي تحديثه من POT:" msgid "Update from POT" msgstr "حدّث من POT" msgid "Take translatable strings from an existing POT template." msgstr "خُذ السّلاسل التّرجميّة من قالب POT موجود." msgid "" "You can also extract translatable strings directly from the source code:" msgstr "يمكنك أيضًا استخراج السّلاسل التّرجميّة مباشرةً من الكود المصدريّ:" msgid "Extract from sources" msgstr "استخرج من المصادر" msgid "Configure source code extraction in Properties." msgstr "اضبط استخراج الكود المصدريّ في الخصائص." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #, c-format msgid "Version %s" msgstr "النّسخة %s" msgid "Create new" msgstr "إنشاء جديد" msgid "Create new translation from POT template." msgstr "إنشاء ترجمة جديدة من قالب POT." msgid "Browse files" msgstr "تصفح الملفات" msgid "Open and edit translation files." msgstr "فتح وتحرير ملفات الترجمة." msgid "Translate cloud project" msgstr "" msgid "Collaborate with other people online." msgstr "" msgid "Recent files" msgstr "الملفات الأخيرة" msgid "Sync" msgstr "زامن" msgid "Synchronize the translation with Crowdin" msgstr "زامن التّرجمة مع «كراودِن»" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #, c-format msgid "About %s" msgstr "عنْ %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #, c-format msgid "%s Preferences" msgstr "تفضيلات %s" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "الخدمات" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "أخفِ «%s»" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "أخفِ البقية" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "أظهر الكل" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "إنهاء %s" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "التّفضيلات…" msgid "Preferences..." msgstr "تفضيلات..." #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "الأخيرة" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "المتكرّرة" msgid "&Apply" msgstr "ت&طبيق" msgid "Apply" msgstr "تطبيق" msgid "&Back" msgstr "&رجوع" msgid "Back" msgstr "رجوع" msgid "&Cancel" msgstr "أل&غاء" msgid "&Clear" msgstr "ام&سح" msgid "Clear" msgstr "تنظيف" msgid "Copy" msgstr "نسخ" msgid "Cu&t" msgstr "&قصّ" msgid "Cut" msgstr "قصّ" msgid "Edit" msgstr "تحرير" msgid "&Quit" msgstr "إ&نهاء" msgid "Help" msgstr "مساعدة" msgid "&New" msgstr "&جديد" msgid "New" msgstr "جديد" msgid "&No" msgstr "&لا" msgid "No" msgstr "لا" msgid "&OK" msgstr "&موافق" msgid "Open…" msgstr "فتح…" msgid "&Open..." msgstr "ا&فتح..." msgid "Open..." msgstr "فتح..." msgid "&Paste" msgstr "أ&لصق" msgid "Paste" msgstr "لصق" msgid "Preferences" msgstr "تفضيلات" msgid "&Redo" msgstr "أ&عد" msgid "Refresh" msgstr "تحديث" msgid "&Save as" msgstr "&حفظ باسم" msgid "Save as" msgstr "حفظ باسم" msgid "Select &All" msgstr "تحديد الك&ل" msgid "Select All" msgstr "تحديد الكل" msgid "&Undo" msgstr "ترا&جع" msgid "&Yes" msgstr "ن&عم" msgid "Yes" msgstr "نعم" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "أعلى" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "أسفل" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "شمال" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "يمين" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "shift" poedit-3.5/locales/ro.po0000644000175100001770000020376314664354065012223 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "Ascunde acest mesaj de notificare" msgid "Don’t Show Again" msgstr "Nu mai afișa din nou" msgid "Don’t show again" msgstr "Nu mai afișa din nou" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(Noi: %i, depășite: %i)" msgid "Collecting source files…" msgstr "Colectare fișierele sursă…" msgid "Extracting translatable strings…" msgstr "Extragere șiruri traductibile…" msgid "Failed to load file with extracted translations." msgstr "Încărcarea fișierului cu traducerile extrase a eșuat." msgid "Merging differences…" msgstr "Fuzionare diferențe…" msgid "Updating translations" msgstr "Se actualizează traducerile" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "Fișierul „%s” nu a putut fi deschis." msgid "Invalid file" msgstr "Fișier nevalid" #, c-format msgid "Malformed header: “%s”" msgstr "Antet malformat: „%s”" msgid "PO Translation Files" msgstr "Fișiere de traducere PO" msgid "POT Translation Templates" msgstr "Șabloane de traducere POT" msgid "XLIFF Translation Files" msgstr "Fișiere de traducere XLIFF" msgid "JSON Translation Files" msgstr "Fișiere de traducere JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "Fișiere de traducere Flutter" msgid "All Translation Files" msgstr "Toate fișierele de traducere" msgid "The file is in a format not recognized by Poedit." msgstr "Fișierul este într-un format care nu este recunoscut de Poedit." 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." #, 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" #, 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." #, c-format msgid "Couldn’t save file %s." msgstr "Nu s-a putut salva fișierul %s." msgid "Screenshots:" msgstr "Capturi de ecran:" #, 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." #, 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)." 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" 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" msgid "Couldn’t load the file, it is probably damaged." msgstr "Nu s-a putut încărca fișierul, probabil că este deteriorat." 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." 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)." #, 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." msgid "Error saving file" msgstr "Eroare la salvarea fișierului" #, c-format msgid "“%s” is not a valid POT file." msgstr "„%s” nu este un fișier POT valid." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Eroare la încărcarea fișierului XLIF: %s" #, c-format msgid "unsupported version (%s)" msgstr "versiune neacceptată (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML msgid "Broken markup in translation string." msgstr "Marcaj deteriorat în șirul de traducere." msgid "(Use default language)" msgstr "(Folosește limba implicită)" msgid "Language selection" msgstr "Selectare limbă" msgid "Select your preferred language" msgstr "Selectează-ți limba preferată" msgid "You must restart Poedit for this change to take effect." msgstr "" "Trebuie să repornești Poedit pentru ca această schimbare să aibă efect." msgid "Add Account" msgstr "Adaugă cont" msgid "Add account" msgstr "Adaugă cont" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "Află mai multe despre %s" 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." msgid "How does cloud sync work?" msgstr "Cum funcționează sincronizarea în cloud?" msgid "Account" msgstr "Cont" msgid "(not signed in)" msgstr "(neconectat)" msgid "File" msgstr "Fișier" msgid "Open cloud translation" msgstr "Deschide traducerea în cloud" msgid "Manage accounts" msgstr "Gestionează conturi" msgid "Project:" msgstr "Proiect:" msgid "Language:" msgstr "Limbă:" msgid "Sign in to Cloud Account" msgstr "Conectează-te la contul de cloud" msgid "Sign in to cloud account" msgstr "Conectează-te la contul de cloud" msgid "No translation projects listed in your account." msgstr "Nu sunt listate proiecte de traducere în contul tău." msgid "Downloading latest translations…" msgstr "Se descarcă ultimele traduceri…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #, c-format msgid "Sign in to %s" msgstr "Conectează-te la %s" msgid "Syncing" msgstr "Sincronizare" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, 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. #, c-format msgid "Uploading translations to %s failed." msgstr "Încărcarea traducerilor în %s a eșuat." msgid "Syncing error" msgstr "Eroare sincronizare" msgid "Add" msgstr "Adaugă" msgid "Unknown Crowdin error." msgstr "Eroare Crowdin necunoscută." msgid "Not authorized, please sign in again." msgstr "Neautorizat, te rugăm să te conectezi din nou." msgid "Downloading translations is disabled in this project." msgstr "Descărcarea traducerilor este dezactivată în acest proiect." msgid "Sign In" msgstr "Autentificare" msgid "Sign in" msgstr "Autentificare" msgid "Sign Out" msgstr "Deconectare" msgid "Sign out" msgstr "Deconectare" msgid "Learn more about Crowdin" msgstr "Află mai multe despre Crowdin" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" "Crowdin este o platformă online de gestionare a localizării și un instrument " "de traducere colaborativă." msgid "Waiting for authentication…" msgstr "Se așteaptă autentificarea…" msgid "Updating user information…" msgstr "Se actualizează informații utilizator…" msgid "Sign in to Crowdin" msgstr "Autentificare în Crowdin" msgid "Syncing with Crowdin failed." msgstr "Sincronizarea cu Crowdin a eșuat." msgid "Crowdin error" msgstr "Eroare Crowdin" msgid "Uploading translations…" msgstr "Se încarcă traducerile…" msgid "&Copy" msgstr "&Copiază" msgid "Learn more" msgstr "Află mai multe" msgid "&Help" msgstr "&Ajutor" msgid "MO files can’t be directly edited in Poedit." msgstr "Fișierele MO nu pot fi editate direct în Poedit." msgid "Error opening file" msgstr "Eroare la deschiderea fișierului" 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." msgid "don’t delete temporary files (for debugging)" msgstr "nu șterge fișierele temporare (pentru depanare)" msgid "handle a poedit:// URI" msgstr "getionează un URI poedit://" msgid "go to item at given line number" msgstr "mergi la elementul de pe linia cu numărul dat" msgid "Failed to communicate with Poedit process." msgstr "Am eșuat în a comunica cu procesul Poedit." #, c-format msgid "Unhandled exception occurred: %s" msgstr "A apărut o excepție netratată: %s" msgid "Select translation template" msgstr "Selectează șablon de traducere" msgid "Select translation file" msgstr "Selectează fișier de traducere" msgid "Poedit is an easy to use translation editor." msgstr "Poedit este un editor de traduceri ușor de folosit." 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." #, c-format msgid "File “%s” is not a translation file." msgstr "Fișierul „%s” nu este un fișier de traducere." #, c-format msgid "File “%s” doesn’t exist." msgstr "Fișierul „%s” nu există." 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". #, 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." msgid "Install" msgstr "Instalează" #, c-format msgid "The file “%s” has been changed by another application." msgstr "Fișierul „%s” a fost modificat de o altă aplicație." msgid "Reload file" msgstr "Reîncarcă fișier" 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." msgid "Ignore" msgstr "Ignoră" msgid "Reload File" msgstr "Reîncarcă fișier" msgid "The file has been modified. Do you want to save changes?" msgstr "Fișierul a fost modificat. Vrei să salvezi modificările?" msgid "Save changes" msgstr "Salvează modificări" msgid "Your changes will be lost if you don’t save them." msgstr "Modificările tale vor fi pierdute dacă nu le salvezi." msgid "Save" msgstr "Salvează" msgid "Do&n’t save" msgstr "&Nu salva" msgid "Don’t Save" msgstr "Nu salva" 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." msgid "Cancel" msgstr "Anulează" msgid "Save Anyway" msgstr "Salvează oricum" msgid "Save anyway" msgstr "Salvează oricum" msgid "Save as…" msgstr "Salvează ca…" msgid "Compile to…" msgstr "Compilare la…" msgid "Compiled Translation Files" msgstr "Fișiere de traducere compilate" msgid "Export to HTML…" msgstr "Exportă în HTML…" msgid "HTML Files" msgstr "Fișiere HTML" #, c-format msgid "In: %s" msgstr "În: %s" msgid "Source code not available." msgstr "Cod sursă indisponibil." msgid "Updating failed" msgstr "Actualizarea a eșuat" 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." msgid "Permission denied." msgstr "Permisiune refuzată." 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. 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. 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." msgid "Translation entries in the file are probably incorrect." msgstr "Intrările de traducere din fișier sunt probabil incorecte." msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "Actualizarea fișierului a eșuat. Clic pe „Detalii >>” pentru detalii." msgid "Open translation template" msgstr "Deschide șablonul de traducere" #, 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." msgid "Validation results" msgstr "Rezultate validare" 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." msgid "The file was saved safely." msgstr "Fișierul a fost salvat în condiții de siguranță." 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." 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." 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." msgid "The file cannot be compiled into the MO format and used." msgstr "Fișierul nu poate fi compilat și utilizat în formatul MO." msgid "No problems with the translation found." msgstr "Nu au fost găsite probleme cu traducerea." #, 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." msgid "The translation is ready for use." msgstr "Traducerea este gata de utilizat." #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "Poedit corectează automat conținutul nevalid în fișierul „%s”." msgid "" "The file contained duplicate items, which is not allowed in PO files and " "would prevent the file from being used. Poedit fixed the issue, but you " "should review translations of any items marked as 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." msgid "Language of the translation isn’t set." msgstr "Limba traducerii nu este setată." msgid "Set Language" msgstr "Setează limbă" 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)." msgid "" "Suggestions are not available if the translation language is not set " "correctly. Other features, such as plural forms, may be affected as well." msgstr "" "Sugestiile nu sunt disponibile în cazul în care limba de traducere nu este " "setata corect. Alte caracteristici, cum ar fi forme de plural, pot fi " "afectate." msgid "Language of the translation is the same as source language." msgstr "Limba traducerii este aceeași cu limba sursă." msgid "Fix Language" msgstr "Repară limba" msgid "Fix language" msgstr "Repară limba" 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." 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" msgid "Required header Plural-Forms is missing." msgstr "Antetul necesar Plural-Forms lipsește." #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Eroare de sintaxă în antetul Plural-Forms („%s”)." msgid "Fix the Header" msgstr "Repară antetul" 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". #, 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.")" msgid "Review" msgstr "Revizuiește" msgid "Would you like to use English for source text?" msgstr "Vrei să folosești limba engleză pentru textul sursă?" #, 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" msgid "Load English" msgstr "Încarcă engleză" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Tradus: %d din %d (%d %%)" #, c-format msgid "Remaining: %d" msgstr "Rămase: %d" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d eroare" msgstr[1] "%d erori" msgstr[2] "%d de erori" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d intrare" msgstr[1] "%d intrări" msgstr[2] "%d de intrări" msgid " (unsaved)" msgstr " (nesalvat)" msgid " (modified)" msgstr " (modificat)" #, c-format msgid "Failed to update translation memory: %s" msgstr "Eroare la actualizarea memoriei de traducere: %s" msgid "Remove same-as-source translations" msgstr "Șterge traducerile similare textelor-sursă" 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ă?" 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." msgid "Keep" msgstr "Păstrează" msgid "Remove" msgstr "Șterge" msgid "Purge deleted translations" msgstr "Curăță traducerile șterse" msgid "Do you want to remove all translations that are no longer used?" msgstr "Vrei să elimini toate traducerile care nu mai sunt folosite?" 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." msgid "Purge" msgstr "Curăță" msgid "Copy from source text" msgstr "Copiază din textul sursă" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "Curăță traducerea" msgid "Clear Translation" msgstr "Curăță traducerea" msgid "Edit comment" msgstr "Editează comentariu" msgid "Edit Comment" msgstr "Editează comentariu" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "Apariții în cod" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "Apariții în cod" msgid "Hide Sidebar" msgstr "Ascunde bară laterală" msgid "Show Sidebar" msgstr "Arată bară laterală" msgid "Hide Status Bar" msgstr "Ascunde bară de stare" msgid "Show Status Bar" msgstr "Arată bară de stare" msgid "String length in characters: translation | source" msgstr "Lungime șir în caractere: traducere | sursă" msgid "String length in characters" msgstr "Lungime șir în caractere" msgid "Source text" msgstr "Text sursă" msgid "Singular" msgstr "Singular" msgid "Plural" msgstr "Plural" msgid "Translation" msgstr "Traducere" msgid "Pre-translated" msgstr "Pre-tradus" 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. msgid "Needs work" msgstr "Necesită lucru" 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." msgid "Create new translation" msgstr "Creează traducere nouă" 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 msgid "Source text ID" msgstr "ID text sursă" msgid "Everything" msgstr "Tot" #, c-format msgid "Form %i" msgstr "Forma %i" #, c-format msgid "Form %i (unused)" msgstr "Forma %i (neutilizată)" msgid "Zero" msgstr "Zero" msgid "One" msgstr "Unul" msgid "Two" msgstr "Două" msgid "Other" msgstr "Altele" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, c-format msgid "String context: %s" msgstr "Context șir: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #, c-format msgid "String identifier: %s" msgstr "Identificator șir: %s" #, c-format msgid "%s Format" msgstr "Format %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "Format %s" #, c-format msgid "Translation — %s" msgstr "Traducere — %s" msgid "ID" msgstr "ID" #, c-format msgid "Source text — %s" msgstr "Sursă text — %s" msgid "unknown language" msgstr "limbă necunoscută" #, c-format msgid "Network error: %s (%d)" msgstr "Eroare rețea: %s (%d)" msgid "Unknown error" msgstr "Eroare necunoscută" #, c-format msgid "Failed command: %s" msgstr "Comandă eșuată: %s" msgid "Failed to merge gettext catalogs." msgstr "Fuziunea cataloagelor gettext a eșuat." msgid "Open in Editor" msgstr "Deschide în editor" msgid "Open in editor" msgstr "Deschide în editor" 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ă." msgid "No usage information" msgstr "Nu există informații de utilizare" #, 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" msgid "Source code not found" msgstr "Codul sursă nu a fost găsit" 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." msgid "File cannot be opened" msgstr "Fișierul nu poate fi deschis" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "Poedit nu a putut deschide fișierul „%s”." msgid "Find" msgstr "Găsește" msgid "Replace" msgstr "Înlocuiește" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "Opțiuni" msgid "Ignore case" msgstr "Ignoră majuscule" msgid "Wrap around" msgstr "Continuă căutarea de la început" msgid "Whole words only" msgstr "Doar cuvinte întregi" msgid "Find in source texts" msgstr "Găsește în textele sursă" msgid "Find in translations" msgstr "Găsește în traduceri" msgid "Find in comments" msgstr "Găsește în comentarii" msgid "Close" msgstr "Închide" msgid "Replace &All" msgstr "Înlocuiește &tot" msgid "Replace &all" msgstr "Înlocuire &tot" msgid "&Replace" msgstr "&Înlocuiește" msgid "< &Previous" msgstr "< &Anterior" msgid "&Next >" msgstr "&Următor >" msgid "String to find" msgstr "Șir de găsit" msgid "Replacement string" msgstr "Șir de înlocuire" #, c-format msgid "Cannot execute program: %s" msgstr "Nu se poate executa programul: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "Nume sau cod limbă" msgid "Translation Language" msgstr "Limbă traducere" msgid "Language of the translation:" msgstr "Limba traducerii:" msgid "All strings" msgstr "Toate șirurile" msgid "Couldn’t download Localazy project details." msgstr "Nu s-au putut descărca detaliile proiectului Localazy." msgid "There was an error when uploading translations to Localazy." msgstr "A apărut o eroare la încărcarea traducerilor în Localazy." msgid "Projects" msgstr "Proiecte" 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." msgid "Add Project" msgstr "Adaugă proiect" msgid "Add project" msgstr "Adaugă proiect" msgid "Poedit - Catalogs manager" msgstr "Poedit - Administrator de cataloage" msgid "Edit…" msgstr "Editează…" msgid "Create new translations project" msgstr "Creează un nou proiect de traduceri" msgid "Delete the project" msgstr "Șterge proiect" msgid "Edit the project" msgstr "Editează proiectul" msgid "Update all" msgstr "Actualizează tot" msgid "Update all catalogs in the project" msgstr "Actualizează toate cataloagele din proiect" msgid "Total" msgstr "Total" msgid "Untrans" msgstr "Netrad." msgctxt "column/row header" msgid "Needs Work" msgstr "Necesita lucru" msgid "Errors" msgstr "Erori" msgid "Last modified" msgstr "Ultima modificare" msgid "Select directory" msgstr "Selectează director" msgid "Directories:" msgstr "Directoare:" msgid "" msgstr "" #, c-format msgid "Do you want to delete project “%s”?" msgstr "Vrei să ștergi proiectul „%s”?" msgid "Delete project" msgstr "Șterge proiect" msgid "Deleting the project will not delete any translation files." msgstr "Ștergerea proiectului nu va șterge niciun fișier de traducere." msgid "Confirmation" msgstr "Confirmare" msgid "Update all catalogs in this project?" msgstr "Actualizezi toate cataloagele din acest proiect?" msgid "Performs update from source code on all files in the project." msgstr "" "Efectuează actualizare din codul sursă pentru toate fișierele din proiect." msgid "Check for Updates…" msgstr "Caută actualizări…" msgid "Catalogs Manager" msgstr "Administrator cataloage" msgid "&Preferences…" msgstr "&Preferințe…" msgid "&Edit" msgstr "&Editare" msgid "Undo" msgstr "Anulează" msgid "Redo" msgstr "Refă" msgid "Paste and Match Style" msgstr "Lipește și potrivește stilul" msgid "Delete" msgstr "Șterge" msgid "Spelling and Grammar" msgstr "Ortografie și gramatică" msgid "Show Spelling and Grammar" msgstr "Arată ortografie și gramatică" msgid "Check Document Now" msgstr "Verifică documentul acum" msgid "Check Spelling While Typing" msgstr "Verifică ortografia în timpul tastării" msgid "Check Grammar With Spelling" msgstr "Verifică gramatica cu ortografie" msgid "Correct Spelling Automatically" msgstr "Corectează ortografia automat" msgid "Substitutions" msgstr "Înlocuiri" msgid "Show Substitutions" msgstr "Arată înlocuiri" msgid "Smart Copy/Paste" msgstr "Copiere/lipire inteligentă" msgid "Smart Quotes" msgstr "Ghilimele inteligente" msgid "Smart Dashes" msgstr "Cratime inteligente" msgid "Smart Links" msgstr "Legături inteligente" msgid "Text Replacement" msgstr "Înlocuire text" msgid "Transformations" msgstr "Transformări" msgid "Make Upper Case" msgstr "În majuscule" msgid "Make Lower Case" msgstr "În minuscule" msgid "Capitalize" msgstr "Cu majusculă inițială" msgid "Speech" msgstr "Enunțare" msgid "Start Speaking" msgstr "Pornește enunțarea" msgid "Stop Speaking" msgstr "Oprește enunțarea" msgid "&View" msgstr "&Vizualizare" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Show Toolbar" msgstr "Arată bară de instrumente" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Customize Toolbar…" msgstr "Personalizare bară de instrumente…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Enter Full Screen" msgstr "Intră în ecran complet" msgid "Window" msgstr "Fereastră" msgid "Minimize" msgstr "Minimizează" msgid "Zoom" msgstr "Mărește" msgid "Welcome to Poedit" msgstr "Bine ai venit la Poedit" msgid "Bring All to Front" msgstr "Adu tot în față" msgid "Information about the translator" msgstr "Informații despre traducător" msgid "Name:" msgstr "Nume:" msgid "Your Name" msgstr "Numele tău" msgid "Email:" msgstr "E-mail:" msgid "you@example.com" msgstr "tu@exemplu.ro" 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." msgid "Editing" msgstr "Editare" msgid "Automatically compile MO file when saving" msgstr "Compilează automat fișierul MO la salvare" msgid "Show summary after updating files" msgstr "Arată sumarul după actualizarea fișierelor" msgid "Check spelling" msgstr "Verificare ortografică" msgid "Always change focus to text input field" msgstr "Focalizează mereu câmpul de introducere a textului" 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." msgid "Appearance" msgstr "Aspect" msgid "Use custom list font:" msgstr "Folosește font personalizat pentru listă:" msgid "Use custom text fields font:" msgstr "Folosește font personalizat pentru câmpuri text:" msgid "Change UI language" msgstr "Schimbă limba interfeței" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions msgid "(requires Windows 8 or newer)" msgstr "(necesită Windows 8 sau mai nou)" msgid "General" msgstr "General" msgid "Use translation memory" msgstr "Folosește memoria de traducere" msgid "Manage…" msgstr "Gestionează…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "Atunci când se actualizează din surse" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "potrivește șirurile neclare în fișier" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "pre-tradu din MT" 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." msgid "Stored translations:" msgstr "Traduceri stocate:" msgid "Database size on disk:" msgstr "Mărime bază de date pe disc:" msgid "Import Translation Files…" msgstr "Importă fișiere de traducere…" msgid "Import translation files…" msgstr "Importă fișiere de traducere…" msgid "Import From TMX…" msgstr "Importă din TMX…" msgid "Import from TMX…" msgstr "Importă din TMX…" msgid "Export To TMX…" msgstr "Exportă în TMX…" 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). msgid "Reset" msgstr "Resetează" msgid "Select translation files to import" msgstr "Selectează fișiere de traducere pentru a le importa" msgid "Translation Memory" msgstr "Memorie de traducere" msgid "Importing translations…" msgstr "Importare traduceri…" #, c-format msgid "Error loading translation file “%s”." msgstr "Eroare la încărcarea fișierului de traducere „%s”." msgid "Finalizing…" msgstr "Se finalizează…" msgid "Select TMX files to import" msgstr "Selectează fișiere TMX pentru a le importa" msgid "TMX Files" msgstr "Fișiere TMX" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "Importarea memorie de traducere din „%s” nu a reușit." msgid "Import error" msgstr "Eroare importare" msgid "Export as…" msgstr "Exportă ca…" msgid "Exporting translations…" msgstr "Exportare traduceri…" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "Exportarea memoriei de traducere în „%s” a eșuat." msgid "Export error" msgstr "Eroare exportare" msgid "Reset translation memory" msgstr "Resetare memorie de traducere" msgid "Are you sure you want to reset the translation memory?" msgstr "Sigur vrei să resetezi memoria de traducere?" 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. msgid "TM" msgstr "MT" 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." msgid "Custom Extractors:" msgstr "Extractoare personalizate:" msgid "Custom extractors:" msgstr "Extractoare personalizate:" msgid "GNU gettext" msgstr "GNU gettext" 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)." msgid "Delete extractor" msgstr "Șterge extractor" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "Sigur vrei să ștergi extractorul „%s”?" msgid "Extractors" msgstr "Extractori" msgid "Accounts" msgstr "Conturi" msgid "Automatically check for updates" msgstr "Caută actualizări automat" msgid "Include beta versions" msgstr "Include versiunile beta" 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." msgid "Updates" msgstr "Actualizări" 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." msgid "Line endings:" msgstr "Delimitatori linii:" msgid "Unix (recommended)" msgstr "Unix (recomandat)" msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "Încadrare la:" msgid "Preserve formatting of existing files" msgstr "Păstrează formatarea fișierelor existente" msgid "Advanced" msgstr "Avansat" msgid "Settings" msgstr "Setări" msgid "Preparing strings…" msgstr "Se pregătesc șirurile…" msgid "Pre-translating from translation memory…" msgstr "Pre-traducere din memoria de traducere…" #, 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" msgid "Pre-translating…" msgstr "Se pre-traduce…" 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. msgid "Pre-translate" msgstr "Pre-traducere" 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." msgid "Cannot pre-translate from unknown language." msgstr "Nu se poate pre-traduce dintr-o limbă necunoscută." 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." msgid "Only fill in exact matches" msgstr "Completează doar potriviri exacte" 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." msgid "Don’t mark exact matches as needing work" msgstr "Nu marca potrivirile exacte ca necesitând lucru" 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." 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." #, 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." 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." msgid "No entries could be pre-translated." msgstr "Nicio intrare nu a putut fi pre-tradusă." 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." msgid "Cancelling…" msgstr "Se anulează…" msgid "Drag Folders or Files Here" msgstr "Trage aici dosare sau fișiere" msgid "Drag folders or files here" msgstr "Trage aici dosare sau fișiere" msgid "Add Folders…" msgstr "Adaugă dosare…" msgid "Add folders…" msgstr "Adaugă dosare…" msgid "Add Files…" msgstr "Adaugă fișiere…" msgid "Add files…" msgstr "Adaugă fișiere…" msgid "Add Wildcard…" msgstr "Adaugă wildcard…" 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) 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" msgid "Show in Explorer" msgstr "Arată în Explorer" msgid "Show in Folder" msgstr "Arată în dosar" msgid "Paths" msgstr "Căi" msgid "Excluded paths" msgstr "Căi excluse" msgid "Advanced extraction settings" msgstr "Setări avansate de extragere" msgid "Extract notes for translators from:" msgstr "Extrage note pentru traducători din:" msgid "Comments prefixed with:" msgstr "Comentarii prefixate cu:" msgid "All comments" msgstr "Toate comentariile" msgid "Additional xgettext flags:" msgstr "Marcaje xgettext suplimentare:" msgid "Additional keywords" msgstr "Cuvinte cheie suplimentare" msgid "Name of the project the translation is for" msgstr "Numele proiectului pentru care este traducerea" msgid "Team name and email address or URL" msgstr "Nume echipă și adresă de e-mail sau URL" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "ex. nplurals=2; plural=(n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (recomandat)" 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." msgid "Placeholders correctness" msgstr "Corectitudine substituenți" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "Substituentul „%s” lipsește din traducere." #, c-format msgid "Superfluous placeholder “%s” that isn’t in source text." msgstr "Substituentul de prisos „%s” care nu este în textul sursă." msgid "Plural form translations" msgstr "Traducerile formelor de plural" msgid "Not all plural forms are translated." msgstr "Nu toate formele de plural sunt traduse." msgid "Inconsistent upper/lower case" msgstr "Majuscule/minuscule inconsistente" msgid "The translation should start as a sentence." msgstr "Traducerea ar trebui să înceapă ca o propoziție." msgid "The translation should start with a lowercase character." msgstr "Traducerea ar trebui să înceapă cu un caracter mic." msgid "Inconsistent whitespace" msgstr "Spațiu alb inconsistent" msgid "The translation doesn’t start with a space." msgstr "Traducerea nu începe cu un spațiu." 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ă." msgid "The translation is missing a newline at the end." msgstr "Traducerii îi lipsește o linie nouă la sfârșit." 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ă." msgid "The translation is missing a space at the end." msgstr "Traducerii îi lipsește un spațiu la final." 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ă." msgid "Punctuation checks" msgstr "Verificări de punctuație" #, c-format msgid "The translation should end with “%s”." msgstr "Traducerea trebuie să se termine cu „%s”." #, c-format msgid "The translation should not end with “%s”." msgstr "Traducerea nu trebuie să se termine cu „%s”." #, 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”." msgid "Cloud" msgstr "Cloud" msgid "Clear Menu" msgstr "Curăță meniu" msgid "Clear menu" msgstr "Curăță meniu" msgid "Comment:" msgstr "Comentariu:" msgid "Update" msgstr "Actualizează" msgid "&Delete" msgstr "&Șterge" msgid "Delete the comment" msgstr "Șterge comentariul" msgid "Edit project" msgstr "Editare proiect" msgid "Project name:" msgstr "Nume proiect:" msgid "Browse" msgstr "Răsfoiește" msgid "Add directory to the list" msgstr "Adaugă director în listă" msgid "OK" msgstr "Ok" msgid "&File" msgstr "&Fișier" msgid "&New…" msgstr "&Nou…" msgid "New from &POT/PO file…" msgstr "Nou din fișier &POT/PO…" msgid "New From &POT/PO File…" msgstr "Nou din fișier &POT/PO…" msgid "&Open…" msgstr "&Deschide…" msgid "Open Recent" msgstr "Deschise recent" msgid "Open recent" msgstr "Deschise recent" msgid "Open cloud translation…" msgstr "Deschide traducerea în cloud…" msgid "Open Cloud Translation…" msgstr "Deschide traducere în cloud…" msgid "&Start window" msgstr "Fereastră de &pornire" msgid "&Start Window" msgstr "Fereastră de &pornire" msgid "Catalogs &manager" msgstr "Administrator &cataloage" msgid "Catalogs &Manager" msgstr "Administrator &cataloage" msgid "&Close" msgstr "&Închide" msgid "&Save" msgstr "&Salvează" msgid "Save &as…" msgstr "Salvează &ca…" msgid "Save &As…" msgstr "Salvează &ca…" msgid "Compile to MO…" msgstr "Compilează în MO…" msgid "E&xport to HTML…" msgstr "E&xportă în HTML…" msgid "Check for updates…" msgstr "Caută actualizări…" msgid "Settings…" msgstr "Setări…" msgid "&Preferences" msgstr "&Preferințe" msgid "E&xit" msgstr "I&eșire" msgid "Quit" msgstr "Închide" msgid "Copy from singular" msgstr "Copiază din singular" msgid "Copy From Singular" msgstr "Copiază din singular" msgid "Translation needs &work" msgstr "Traducerea necesită &lucru" msgid "Translation Needs &Work" msgstr "Traducerea necesită &lucru" msgid "Edit &comment" msgstr "Editează &comentariu" msgid "Edit &Comment" msgstr "Editează &comentariu" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "Sugestii" msgid "&Find…" msgstr "&Găsește…" msgid "Replace…" msgstr "Înlocuiește…" msgid "Find next" msgstr "Rezultatul următor" msgid "Find previous" msgstr "Rezultatul anterior" msgid "Find and Replace…" msgstr "Găsește și înlocuiește…" msgid "Find Next" msgstr "Rezultatul următor" msgid "Find Previous" msgstr "Rezultatul anterior" msgid "Show string &ID" msgstr "Arată &ID șir" msgid "Show String &ID" msgstr "Arată &ID șir" msgid "Show warnings" msgstr "Arată avertismente" msgid "Show Warnings" msgstr "Arată avertismente" msgid "Sort by &file order" msgstr "Sortează după &ordine fișier" msgid "Sort by &File Order" msgstr "Sortează după &ordine fișier" msgid "Sort by &source" msgstr "Sortează după &sursă" msgid "Sort by &Source" msgstr "Sortează după &sursă" msgid "Sort by &translation" msgstr "Sortează după &traducere" msgid "Sort by &Translation" msgstr "Sortează după &traducere" msgid "&Group by context" msgstr "&Grupează după context" msgid "&Group By Context" msgstr "&Grupează după context" msgid "Entries with errors first" msgstr "Mai întâi intrările cu erori" msgid "Entries with Errors First" msgstr "Mai întâi intrările cu erori" msgid "&Untranslated entries first" msgstr "Mai întâi intrările &netraduse" msgid "&Untranslated Entries First" msgstr "Mai întâi intrările &netraduse" msgid "&Show code occurrences" msgstr "&Afișează aparițiile în cod" msgid "&Show Code Occurrences" msgstr "&Afișează aparițiile în cod" msgid "Show sidebar" msgstr "Arată bară laterală" msgid "Show status bar" msgstr "Arată bară de stare" msgid "&Translation" msgstr "&Traducere" msgid "&Update from source code" msgstr "&Actualizează din cod sursă" msgid "&Update from Source Code" msgstr "&Actualizează din cod sursă" msgid "Update from &POT file…" msgstr "Actualizează din fișier &POT…" msgid "Update from &POT File…" msgstr "Actualizează din fișier &POT…" msgid "Sync with Crowdin" msgstr "Sincronizează cu Crowdin" msgid "Pre-&translate…" msgstr "Pre-&traducere…" msgid "&Validate translations" msgstr "&Validează traducerile" msgid "&Validate Translations" msgstr "&Validează traducerile" msgid "Remove Same-as-Source Translations" msgstr "Șterge traducerile care se potrivesc exact cu textul-sursă" msgid "&Purge deleted translations" msgstr "&Curăță traducerile șterse" msgid "&Purge Deleted Translations" msgstr "&Curăță traducerile șterse" msgid "&Properties…" msgstr "&Proprietăți…" msgid "&Go" msgstr "&Mergi la" msgid "&Done and next" msgstr "&Gata și următorul" msgid "&Done and Next" msgstr "&Gata și următorul" msgid "Previously edited" msgstr "Editat anterior" msgid "Previously Edited" msgstr "Editat anterior" msgid "&Previous translation" msgstr "Traducerea &anterioară" msgid "&Previous Translation" msgstr "Traducerea &anterioară" msgid "&Next translation" msgstr "Traducerea &următoare" msgid "&Next Translation" msgstr "Traducerea &următoare" msgid "P&revious unfinished" msgstr "Neterminat a&nterior" msgid "P&revious Unfinished" msgstr "Neterminat a&nterior" msgid "Ne&xt unfinished" msgstr "Neterminat u&rmător" msgid "Ne&xt Unfinished" msgstr "Neterminat u&rmător" msgid "Previous plural form" msgstr "Forma de plural anterioară" msgid "Previous Plural Form" msgstr "Forma de plural anterioară" msgid "Next plural form" msgstr "Forma de plural următoare" msgid "Next Plural Form" msgstr "Forma de plural următoare" msgid "&Online help" msgstr "Ajutor &online" msgid "&Online Help" msgstr "Ajutor &online" msgid "&GNU gettext manual" msgstr "Manual &GNU gettext" msgid "&GNU gettext Manual" msgstr "Manual &GNU gettext" msgid "&About Poedit" msgstr "&Despre Poedit" msgid "&About" msgstr "&Despre" msgid "Extractor setup" msgstr "Configurare extractor" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Lista de extensii separate cu punct și virgulă (ex. *.cpp;*.h):" msgid "Invocation:" msgstr "Invocare:" msgid "Command to extract translations:" msgstr "Comandă pentru extragere traduceri:" 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)." msgid "An item in keywords list:" msgstr "Un element în lista de cuvinte cheie:" 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." msgid "An item in input files list:" msgstr "Un element în lista de fișiere de intrare:" #, 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." msgid "Source code charset:" msgstr "Set de caractere cod sursă:" #, 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." msgid "Translation Properties" msgstr "Proprietăți traducere" msgid "Project name and version:" msgstr "Nume și versiune proiect:" msgid "Language team:" msgstr "Echipă de traducere:" msgid "Plural forms:" msgstr "Forme de plural:" msgid "Use default rules for this language" msgstr "Folosește reguli implicit pentru această limbă" msgid "Use custom expression" msgstr "Folosește expresie personalizată" msgid "Learn about plural forms" msgstr "Află despre formele de plural" msgid "Charset:" msgstr "Set de caractere:" msgid "Advanced Extraction Settings…" msgstr "Setări avansate de extragere…" msgid "Advanced extraction settings…" msgstr "Setări avansate de extragere…" msgid "Translation properties" msgstr "Proprietăți traducere" msgid "Sources Paths" msgstr "Căi surse" msgid "Sources paths" msgstr "Căi surse" msgid "Extract text from source files in the following directories:" msgstr "Extrage textul din fișierele sursă în următoarele directoare:" msgid "Base path:" msgstr "Cale de bază:" msgid "Sources Keywords" msgstr "Surse cuvinte cheie" msgid "Sources keywords" msgstr "Surse cuvinte cheie" 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ă:" msgid "Also use default keywords for supported languages" msgstr "Folosește și cuvinte cheie implicite pentru limbile acceptate" msgid "Learn about gettext keywords" msgstr "Învățați despre cuvintele cheie gettext" msgid "Update summary" msgstr "Actualizează rezumat" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" "Aceste șiruri au fost găsite în surse, dar nu au fost în fișier.\n" "Poedit le va adăuga acum în fișier." msgid "New strings" msgstr "Șiruri noi" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" "Aceste șiruri nu mai sunt în codul sursă.\n" "Poedit le va elimina acum din fișier." msgid "Obsolete strings" msgstr "Șiruri învechite" msgid "(0 new, 0 obsolete)" msgstr "(0 noi, 0 învechite)" msgid "Open" msgstr "" msgid "Open file" msgstr "Deschide fișier" msgid "Save file" msgstr "Salvează fișier" msgid "Validate" msgstr "Validează" msgid "Check for errors in the translation" msgstr "Verifică dacă există erori în traducere" msgid "Update from code" msgstr "Actualizează din cod" msgid "Update from Code" msgstr "Actualizează din cod" msgid "Update from source code" msgstr "Actualizează din cod sursă" msgid "Sidebar" msgstr "Bară laterală" 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. msgid "Previous source text" msgstr "Text sursă anterior" 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." msgid "Notes for translators" msgstr "Note pentru traducători" msgid "Comment" msgstr "Comentariu" msgid "Add comment" msgstr "Adaugă comentariu" msgid "Add Comment" msgstr "Adaugă comentariu" msgid "Delete From Translation Memory" msgstr "Șterge din memoria de traducere" msgid "Delete from translation memory" msgstr "Șterge din memoria de traducere" msgid "Translation suggestions" msgstr "Sugestii traducere" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). 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). msgid "No Matches Found" msgstr "Nicio potrivire găsită" msgid "This string was found in Poedit’s translation memory." msgstr "Acest șir a fost găsit în memoria de traducere Poedit." 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." 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." msgid "The TMX file is malformed." msgstr "Fișierul TMX este malformat." msgid "No translations were found in the TMX file." msgstr "Nicio traducere nu a fost găsită în fișierul TMX." #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Baza de date a memoriei de traducere este deteriorată: %s (%d)." #, c-format msgid "Translation memory error: %s (%d)." msgstr "Eroare memorie de traducere: %s (%d)." msgid "Cannot create temporary directory." msgstr "Nu se poate crea director temporar." msgid "There are no translations. That’s unusual." msgstr "Nu există traduceri. Este neobișnuit." msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "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 în mod automat\n" "din codul sursă. În acest fel, acestea rămân actualizate și exacte.\n" "Traducătorii folosesc de obicei fișiere șablon PO (POT-uri), pregătite de " "către dezvoltator în acest scop." msgid "(Learn more about GNU gettext)" msgstr "(Afla mai multe despre GNU gettext)" 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:" msgid "Update from POT" msgstr "Actualizează din POT" msgid "Take translatable strings from an existing POT template." msgstr "Ia șirurile traductibile dintr-un șablon POT existent." msgid "" "You can also extract translatable strings directly from the source code:" msgstr "De asemenea, poți extrage șiruri traductibile direct din codul sursă:" msgid "Extract from sources" msgstr "Extrage din surse" 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 #, c-format msgid "Version %s" msgstr "Versiunea %s" msgid "Create new" msgstr "Creează una nouă" msgid "Create new translation from POT template." msgstr "Creează traducere nouă din șablon POT." msgid "Browse files" msgstr "Răsfoiește fișiere" msgid "Open and edit translation files." msgstr "Deschide și editează fișiere de traducere." msgid "Translate cloud project" msgstr "Tradu proiect în cloud" msgid "Collaborate with other people online." msgstr "Colaborează cu alte persoane online." msgid "Recent files" msgstr "Fișiere recente" msgid "Sync" msgstr "Sincronizare" 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") #, 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. #, c-format msgid "%s Preferences" msgstr "Preferințe %s" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "Servicii" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "Ascunde %s" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "Ascunde restul" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "Arată tot" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "Închide %s" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "Preferințe…" msgid "Preferences..." msgstr "Preferințe..." #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "Recent" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "Frecvent" msgid "&Apply" msgstr "&Aplică" msgid "Apply" msgstr "Aplică" msgid "&Back" msgstr "&Înapoi" msgid "Back" msgstr "Înapoi" msgid "&Cancel" msgstr "&Anulează" msgid "&Clear" msgstr "&Curăță" msgid "Clear" msgstr "Curăță" msgid "Copy" msgstr "Copiază" msgid "Cu&t" msgstr "&Decupează" msgid "Cut" msgstr "Decupează" msgid "Edit" msgstr "Editează" msgid "&Quit" msgstr "&Închide" msgid "Help" msgstr "Ajutor" msgid "&New" msgstr "&Nou" msgid "New" msgstr "Nou" msgid "&No" msgstr "&Nu" msgid "No" msgstr "Nu" msgid "&OK" msgstr "&Ok" msgid "Open…" msgstr "Deschide…" msgid "&Open..." msgstr "&Deschide..." msgid "Open..." msgstr "Deschide..." msgid "&Paste" msgstr "&Lipește" msgid "Paste" msgstr "Lipește" msgid "Preferences" msgstr "Preferințe" msgid "&Redo" msgstr "&Refă" msgid "Refresh" msgstr "Reîmprospătează" msgid "&Save as" msgstr "&Salvează ca" msgid "Save as" msgstr "Salvează ca" msgid "Select &All" msgstr "Selectează &tot" msgid "Select All" msgstr "Selectează tot" msgid "&Undo" msgstr "&Anulează" msgid "&Yes" msgstr "&Da" msgid "Yes" msgstr "Da" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "Sus" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "Jos" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "Stânga" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "Dreapta" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "shift" poedit-3.5/locales/cs.po0000644000175100001770000020372514664354153012204 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "Schovat toto oznámení" msgid "Don’t Show Again" msgstr "Příště nezobrazovat" msgid "Don’t show again" msgstr "Příště nezobrazovat" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(Nové: %i, zastaralé: %i)" msgid "Collecting source files…" msgstr "Probíhá shromažďování zdrojových souborů…" msgid "Extracting translatable strings…" msgstr "Probíhá extrakce přeložitelných řetězců…" msgid "Failed to load file with extracted translations." msgstr "Nepodařilo se načíst soubor s rozbalenými překlady." msgid "Merging differences…" msgstr "Slučování rozdílů…" msgid "Updating translations" msgstr "Aktualizace překladů" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "Soubor „%s“ nelze otevřít." msgid "Invalid file" msgstr "Neplatný soubor" #, c-format msgid "Malformed header: “%s”" msgstr "Poškozená hlavička: „%s“" msgid "PO Translation Files" msgstr "Soubory překladů PO" msgid "POT Translation Templates" msgstr "Šablony překladů POT" msgid "XLIFF Translation Files" msgstr "Soubory překladů XLIFF" msgid "JSON Translation Files" msgstr "Soubory překladů JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "Soubory překladů Flutter" msgid "All Translation Files" msgstr "Všechny překladové soubory" msgid "The file is in a format not recognized by Poedit." msgstr "Poedit nerozpoznal formát souboru." 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." #, c-format msgid "Reading file content failed with the following error: %s" msgstr "Čtení obsahu souboru selhalo s následující chybou: %s" #, 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." #, c-format msgid "Couldn’t save file %s." msgstr "Soubor %s nelze uložit." msgid "Screenshots:" msgstr "Snímky obrazovky:" #, 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ě." #, 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)." 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" msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "Špatný katalog: verze msgstr pro plurál použita bez msgid_plural" msgid "Couldn’t load the file, it is probably damaged." msgstr "Nelze načíst soubor, pravděpodobně je poškozený." 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é." 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)." #, 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." msgid "Error saving file" msgstr "Chyba při ukládání souboru" #, c-format msgid "“%s” is not a valid POT file." msgstr "POT soubor „%s“ je poškozený." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Chyba při načítání souboru XLIFF: %s" #, c-format msgid "unsupported version (%s)" msgstr "nepodporovaná verze (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML msgid "Broken markup in translation string." msgstr "Neplatné značky v textu překladu." msgid "(Use default language)" msgstr "(výchozí jazyk)" msgid "Language selection" msgstr "Výběr jazyka" msgid "Select your preferred language" msgstr "Vyberte preferovaný jazyk" msgid "You must restart Poedit for this change to take effect." msgstr "Tato změna se projeví až po opětovném spuštění Poeditu." msgid "Add Account" msgstr "Přidat účet" msgid "Add account" msgstr "Přidat účet" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "Další informace o %s" 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." msgid "How does cloud sync work?" msgstr "Jak funguje synchronizace do cloudu?" msgid "Account" msgstr "Účet" msgid "(not signed in)" msgstr "(napřihlášený)" msgid "File" msgstr "Soubor" msgid "Open cloud translation" msgstr "Otevřít překlad z cloudu" msgid "Manage accounts" msgstr "Spravovat účty" msgid "Project:" msgstr "Projekt:" msgid "Language:" msgstr "Jazyk:" msgid "Sign in to Cloud Account" msgstr "Přihlásit se do cloudového účtu" msgid "Sign in to cloud account" msgstr "Přihlásit se do cloudového účtu" msgid "No translation projects listed in your account." msgstr "Ve vašem účtu nemáte nastaveny žádné překladové projekty." 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" #, c-format msgid "Sign in to %s" msgstr "Přihlásit se do %s" msgid "Syncing" msgstr "Probíhá synchronizace" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, 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. #, c-format msgid "Uploading translations to %s failed." msgstr "Odesílání překladů do %s se nezdařilo." msgid "Syncing error" msgstr "Chyba synchronizace" msgid "Add" msgstr "Přidat" msgid "Unknown Crowdin error." msgstr "Neznámá chyba Crowdinu." msgid "Not authorized, please sign in again." msgstr "Nedostatečná oprávnění, zkuste se znovu přihlásit." msgid "Downloading translations is disabled in this project." msgstr "Stahování překladů je pro tento projekt zakázáno." msgid "Sign In" msgstr "Přihlásit se" msgid "Sign in" msgstr "Přihlásit se" msgid "Sign Out" msgstr "Odhlásit se" msgid "Sign out" msgstr "Odhlásit se" msgid "Learn more about Crowdin" msgstr "Další informace o Crowdin" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" "Crowdin je online platforma pro správu lokalizace a nástroj pro spolupráci " "při překladu." msgid "Waiting for authentication…" msgstr "Čekání na ověření…" msgid "Updating user information…" msgstr "Aktualizace informací o uživateli…" msgid "Sign in to Crowdin" msgstr "Přihlásit se do Crowdin" msgid "Syncing with Crowdin failed." msgstr "Synchronizace s Crowdin se nezdařila." msgid "Crowdin error" msgstr "Crowdin chyba" msgid "Uploading translations…" msgstr "Odesílání překladů…" msgid "&Copy" msgstr "&Kopírovat" msgid "Learn more" msgstr "Další informace" msgid "&Help" msgstr "&Nápověda" msgid "MO files can’t be directly edited in Poedit." msgstr "Poedit nepodporuje přímou úpravu MO souborů." msgid "Error opening file" msgstr "Při otevírání souboru došlo k chybě" 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." msgid "don’t delete temporary files (for debugging)" msgstr "nemazat dočasné soubory (kvůli ladění)" msgid "handle a poedit:// URI" msgstr "zpracovat poedit:// URI" msgid "go to item at given line number" msgstr "přejít na položku na daném řádku" msgid "Failed to communicate with Poedit process." msgstr "Nelze komunikovat s procesem Poeditu." #, c-format msgid "Unhandled exception occurred: %s" msgstr "Došlo k neošetřené výjimce: %s" msgid "Select translation template" msgstr "Vybrat šablonu překladu" msgid "Select translation file" msgstr "Vybrat soubor s překladem" msgid "Poedit is an easy to use translation editor." msgstr "Poedit je jednoduchý editor překladů." 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." #, c-format msgid "File “%s” is not a translation file." msgstr "Soubor „%s“ není soubor překladů." #, c-format msgid "File “%s” doesn’t exist." msgstr "Soubor „%s“ neexistuje." 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". #, 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." msgid "Install" msgstr "Nainstalovat" #, c-format msgid "The file “%s” has been changed by another application." msgstr "Soubor „%s“ byl změněn jinou aplikací." msgid "Reload file" msgstr "Znovu načíst soubor" 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." msgid "Ignore" msgstr "Ignorovat" msgid "Reload File" msgstr "Znovu načíst soubor" msgid "The file has been modified. Do you want to save changes?" msgstr "Soubor byl změněn. Chcete uložit změny?" msgid "Save changes" msgstr "Uložit změny" msgid "Your changes will be lost if you don’t save them." msgstr "Pokud je neuložíte, přijdete o všechny změny." msgid "Save" msgstr "Uložit" msgid "Do&n’t save" msgstr "&Neukládat" msgid "Don’t Save" msgstr "Neukládat" 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." msgid "Cancel" msgstr "Storno" msgid "Save Anyway" msgstr "Přesto uložit" msgid "Save anyway" msgstr "Přesto uložit" msgid "Save as…" msgstr "Uložit jako…" msgid "Compile to…" msgstr "Zkompilovat do…" msgid "Compiled Translation Files" msgstr "Zkompilované překladové soubory" msgid "Export to HTML…" msgstr "E&xportovat do HTML…" msgid "HTML Files" msgstr "Soubory HTML" #, c-format msgid "In: %s" msgstr "V %s" msgid "Source code not available." msgstr "Zdrojový kód není k dispozici." msgid "Updating failed" msgstr "Aktualizace selhala" 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." msgid "Permission denied." msgstr "Přístup odepřen." 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. 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. 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." msgid "Translation entries in the file are probably incorrect." msgstr "Položky překladu v souboru jsou pravděpodobně nesprávné." msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "" "Aktualizace souboru se nezdařila. Klikněte na 'Podrobnosti >>' pro získání " "podrobností." msgid "Open translation template" msgstr "Vybrat šablonu překladu" #, 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." msgid "Validation results" msgstr "Výsledky kontroly" 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." msgid "The file was saved safely." msgstr "Soubor byl úspěšně uložen." 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ě." 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." 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ě." 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." msgid "No problems with the translation found." msgstr "V překladu nebyly nalezeny žádné problémy." #, 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." msgid "The translation is ready for use." msgstr "Překlad je připraven k použití." #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "Poedit automaticky opravil chybný obsah souboru „%s“." msgid "" "The file contained duplicate items, which is not allowed in PO files and " "would prevent the file from being used. Poedit fixed the issue, but you " "should review translations of any items marked as 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." msgid "Language of the translation isn’t set." msgstr "Jazyk překladu není nastaven." msgid "Set Language" msgstr "Nastavit jazyk" msgid "Set language" msgstr "Nastavit jazyk" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." msgid "" "Suggestions are not available if the translation language is not set " "correctly. Other features, such as plural forms, may be affected as well." msgstr "" "Pokud není správně nastaven jazyk překladu, nejsou k dispozici návrhy. " "Ovlivněny mohou být i další funkce, jako například formy plurálu." msgid "Language of the translation is the same as source language." msgstr "Jazyk překladu je shodný s jazykem zdroje." msgid "Fix Language" msgstr "Opravit jazyk" msgid "Fix language" msgstr "Opravit jazyk" msgid "" "This 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." 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" msgid "Required header Plural-Forms is missing." msgstr "V hlavičce chybí povinná položka Plural-Forms." #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Syntaktická chyba v hlavičce Plural-Forms („%s“)." msgid "Fix the Header" msgstr "Opravit hlavičku" 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". #, 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.")" msgid "Review" msgstr "Zkontrolovat" msgid "Would you like to use English for source text?" msgstr "Chcete použít angličtinu pro zdrojový text?" #, 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" msgid "Load English" msgstr "Načíst angličtinu" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Přeloženo: %d z %d (%d %%)" #, c-format msgid "Remaining: %d" msgstr "Zbývá: %d" #, 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" #, 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" msgid " (unsaved)" msgstr " (neuloženo)" msgid " (modified)" msgstr " (změněno)" #, c-format msgid "Failed to update translation memory: %s" msgstr "Aktualizace překladové paměti se nezdařila: %s" msgid "Remove same-as-source translations" msgstr "Odstranit překlady identické se zdrojovým textem" 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?" 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." msgid "Keep" msgstr "Ponechat" msgid "Remove" msgstr "Odstranit" msgid "Purge deleted translations" msgstr "&Smazat staré překlady" msgid "Do you want to remove all translations that are no longer used?" msgstr "Chcete odstranit všechny již nepoužívané překlady?" 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." msgid "Purge" msgstr "Smazat" msgid "Copy from source text" msgstr "Zkopírovat ze zdrojového textu" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "Smazat překlad" msgid "Clear Translation" msgstr "Smazat překlad" msgid "Edit comment" msgstr "Upravit komentář" msgid "Edit Comment" msgstr "Upravit komentář" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "Výskyty v kódu" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "Výskyty v kódu" msgid "Hide Sidebar" msgstr "Skrýt postranní panel" msgid "Show Sidebar" msgstr "Zobrazit postranní panel" msgid "Hide Status Bar" msgstr "Skrýt stavový řádek" msgid "Show Status Bar" msgstr "Zobrazit stavový řádek" msgid "String length in characters: translation | source" msgstr "Délka řetězce ve znacích: překlad | zdroj" msgid "String length in characters" msgstr "Délka řetězce ve znacích" msgid "Source text" msgstr "Zdrojový text" msgid "Singular" msgstr "Singulár" msgid "Plural" msgstr "Plurál" msgid "Translation" msgstr "Překlad" msgid "Pre-translated" msgstr "Před-přeloženo" 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. msgid "Needs work" msgstr "Vyžaduje úpravy" 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." msgid "Create new translation" msgstr "Vytvořit nový překlad" 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 msgid "Source text ID" msgstr "ID zdrojového textu" msgid "Everything" msgstr "Vše" #, c-format msgid "Form %i" msgstr "Forma %i" #, c-format msgid "Form %i (unused)" msgstr "Forma %i (nepoužitá)" msgid "Zero" msgstr "Nula" msgid "One" msgstr "Jeden" msgid "Two" msgstr "Dva" msgid "Other" msgstr "Ostatní" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, 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 #, c-format msgid "String identifier: %s" msgstr "Identifikátor řetězce: %s" #, 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." #, c-format msgid "%s format" msgstr "%s formát" #, c-format msgid "Translation — %s" msgstr "Překlad — %s" msgid "ID" msgstr "ID" #, c-format msgid "Source text — %s" msgstr "Zdrojový text — %s" msgid "unknown language" msgstr "neznámý jazyk" #, c-format msgid "Network error: %s (%d)" msgstr "Chyba sítě: %s (%d)" msgid "Unknown error" msgstr "Neznámá chyba" #, c-format msgid "Failed command: %s" msgstr "Příkaz selhal: %s" msgid "Failed to merge gettext catalogs." msgstr "Slučování gettext katalogů se nezdařilo." msgid "Open in Editor" msgstr "Otevřít v editoru" msgid "Open in editor" msgstr "Otevřít v editoru" 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." msgid "No usage information" msgstr "Žádné informace o použití" #, 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" msgid "Source code not found" msgstr "Zdrojový kód nebyl nalezen" 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." msgid "File cannot be opened" msgstr "Soubor nelze otevřít" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "Poedit nemohl otevřít soubor \"%s\"." msgid "Find" msgstr "Najít" msgid "Replace" msgstr "Nahradit" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "Možnosti" msgid "Ignore case" msgstr "Ignorovat velikost písmen" msgid "Wrap around" msgstr "Po dosažení konce hledat od začátku" msgid "Whole words only" msgstr "Jen celá slova" msgid "Find in source texts" msgstr "Hledat ve zdrojových textech" msgid "Find in translations" msgstr "Hledat v překladech" msgid "Find in comments" msgstr "Hledat v komentářích" msgid "Close" msgstr "Zavřít" msgid "Replace &All" msgstr "N&ahradit vše" msgid "Replace &all" msgstr "N&ahradit vše" msgid "&Replace" msgstr "Nah&radit" msgid "< &Previous" msgstr "< &Předchozí" msgid "&Next >" msgstr "&Další >" msgid "String to find" msgstr "Hledaný řetězec" msgid "Replacement string" msgstr "Nahradit za" #, c-format msgid "Cannot execute program: %s" msgstr "Není možné spustit program: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "Název nebo kód jazyka" msgid "Translation Language" msgstr "Jazyk překladu" msgid "Language of the translation:" msgstr "Jazyk překladu:" msgid "All strings" msgstr "Všechny řetězce" msgid "Couldn’t download Localazy project details." msgstr "Nepodařilo se stáhnout detaily projektu Localazy." msgid "There was an error when uploading translations to Localazy." msgstr "Při nahrávání překladů do Localazy došlo k chybě." msgid "Projects" msgstr "Projekty" 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ů." msgid "Add Project" msgstr "Přidat projekt" msgid "Add project" msgstr "Přidat projekt" msgid "Poedit - Catalogs manager" msgstr "Poedit - správce katalogů" msgid "Edit…" msgstr "Upravit…" msgid "Create new translations project" msgstr "Vytvořit nový překladový projekt" msgid "Delete the project" msgstr "Odstranit projekt" msgid "Edit the project" msgstr "Upravit projekt" msgid "Update all" msgstr "Aktualizovat všechny katalogy" msgid "Update all catalogs in the project" msgstr "Aktualizovat všechny katalogy v projektu" msgid "Total" msgstr "Celkem" msgid "Untrans" msgstr "Nepřelož" msgctxt "column/row header" msgid "Needs Work" msgstr "Vyžaduje úpravy" msgid "Errors" msgstr "Chyby" msgid "Last modified" msgstr "Poslední změna" msgid "Select directory" msgstr "Vyberte adresář" msgid "Directories:" msgstr "Adresáře:" msgid "" msgstr "" #, c-format msgid "Do you want to delete project “%s”?" msgstr "Chcete odstranit projekt „%s“?" msgid "Delete project" msgstr "Odstranit projekt" msgid "Deleting the project will not delete any translation files." msgstr "Odstranění projektu nesmaže žádné překladové soubory." msgid "Confirmation" msgstr "Potvrzení" msgid "Update all catalogs in this project?" msgstr "Aktualizovat všechny katalogy v projektu?" 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." msgid "Check for Updates…" msgstr "Vyhledat aktualizace…" msgid "Catalogs Manager" msgstr "Správce katalogů" msgid "&Preferences…" msgstr "Nasta&vení…" msgid "&Edit" msgstr "Úpra&vy" msgid "Undo" msgstr "Zpět" msgid "Redo" msgstr "Znovu" msgid "Paste and Match Style" msgstr "Vložit a přizpůsobit styl" msgid "Delete" msgstr "Smazat" msgid "Spelling and Grammar" msgstr "Pravopis a gramatika" msgid "Show Spelling and Grammar" msgstr "Zobrazit pravopis a gramatiku" msgid "Check Document Now" msgstr "Zkontrolovat dokument" msgid "Check Spelling While Typing" msgstr "Kontrolovat pravopis během psaní" msgid "Check Grammar With Spelling" msgstr "Kontrolovat i gramatiku" msgid "Correct Spelling Automatically" msgstr "Automaticky opravovat pravopis" msgid "Substitutions" msgstr "Náhrady" msgid "Show Substitutions" msgstr "Zobrazit náhrady" msgid "Smart Copy/Paste" msgstr "Chytré kopírování/vkládání" msgid "Smart Quotes" msgstr "Chytré uvozovky" msgid "Smart Dashes" msgstr "Chytré pomlčky" msgid "Smart Links" msgstr "Chytré odkazy" msgid "Text Replacement" msgstr "Náhrady textu" msgid "Transformations" msgstr "Transformace" msgid "Make Upper Case" msgstr "Všechna písmena velká" msgid "Make Lower Case" msgstr "Všechna písmena malá" msgid "Capitalize" msgstr "První písmena velká" msgid "Speech" msgstr "Předčítání" msgid "Start Speaking" msgstr "Spustit předčítání" msgid "Stop Speaking" msgstr "Ukončit předčítání" msgid "&View" msgstr "&Zobrazení" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Show Toolbar" msgstr "Zobrazit panel nástrojů" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Customize Toolbar…" msgstr "Upravit panel nástrojů…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Enter Full Screen" msgstr "Zobrazit na celou obrazovku" msgid "Window" msgstr "Okno" msgid "Minimize" msgstr "Minimalizovat" msgid "Zoom" msgstr "Přepnout velikost" msgid "Welcome to Poedit" msgstr "Vítá vás Poedit" msgid "Bring All to Front" msgstr "Přenést vše do popředí" msgid "Information about the translator" msgstr "Informace o překladateli" msgid "Name:" msgstr "Jméno:" msgid "Your Name" msgstr "Vaše jméno" msgid "Email:" msgstr "E-mail:" msgid "you@example.com" msgstr "vy@example.cz" 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." msgid "Editing" msgstr "Editace" msgid "Automatically compile MO file when saving" msgstr "Při uložení automaticky zkompilovat MO soubor" msgid "Show summary after updating files" msgstr "Po aktualizaci souborů zobrazit shrnutí" msgid "Check spelling" msgstr "Kontrolovat pravopis" msgid "Always change focus to text input field" msgstr "Vždy zaměřovat vstupní pole pro překlad" 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." msgid "Appearance" msgstr "Vzhled" msgid "Use custom list font:" msgstr "Použít vlastní písmo pro seznam:" msgid "Use custom text fields font:" msgstr "Použít vlastní písmo pro textová pole:" msgid "Change UI language" msgstr "Změnit jazyk" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions msgid "(requires Windows 8 or newer)" msgstr "(vyžaduje Windows 8 nebo novější)" msgid "General" msgstr "Obecné" msgid "Use translation memory" msgstr "Použít překladovou paměť" msgid "Manage…" msgstr "Spravovat…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "Při aktualizaci ze zdrojových souborů" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "použít podobné položky v souboru" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "před-přeložit z překladové paměti" 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." msgid "Stored translations:" msgstr "Uložené překlady:" msgid "Database size on disk:" msgstr "Velikost databáze:" msgid "Import Translation Files…" msgstr "Importovat soubory překladů…" msgid "Import translation files…" msgstr "Importovat soubory překladů…" msgid "Import From TMX…" msgstr "Importovat z TMX…" msgid "Import from TMX…" msgstr "Importovat z TMX…" msgid "Export To TMX…" msgstr "Exportovat do TMX…" 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). msgid "Reset" msgstr "Vymazat" msgid "Select translation files to import" msgstr "Vyberte překladové soubory, které chcete importovat" msgid "Translation Memory" msgstr "Překladová paměť" msgid "Importing translations…" msgstr "Probíhá import překladů…" #, c-format msgid "Error loading translation file “%s”." msgstr "Při načítání souboru překladu „%s“ došlo k chybě." msgid "Finalizing…" msgstr "Dokončování…" msgid "Select TMX files to import" msgstr "Vybrat soubory TMX k importu" msgid "TMX Files" msgstr "Soubory TMX" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "Import překladové paměti z „%s“ selhal." msgid "Import error" msgstr "Chyba importu" msgid "Export as…" msgstr "Exportovat jako…" msgid "Exporting translations…" msgstr "Probíhá export překladů…" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "Export překladové paměti do „%s“ selhal." msgid "Export error" msgstr "Chyba exportu" msgid "Reset translation memory" msgstr "Vymazat překladovou paměť" msgid "Are you sure you want to reset the translation memory?" msgstr "Opravdu chcete překladovou paměť vymazat?" 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. msgid "TM" msgstr "TM" msgid "" "Source code extractors are used to find translatable strings in the source " "code files and extract them so that they can be translated." msgstr "" "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." msgid "Custom Extractors:" msgstr "Uživatelské extraktory:" msgid "Custom extractors:" msgstr "Uživatelské extraktory:" msgid "GNU gettext" msgstr "GNU gettext" 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ší)." msgid "Delete extractor" msgstr "Smazat extraktor" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "Opravdu chcete „%s“ extraktor smazat?" msgid "Extractors" msgstr "Extraktory" msgid "Accounts" msgstr "Účty" msgid "Automatically check for updates" msgstr "Automaticky kontrolovat dostupnost aktualizací" msgid "Include beta versions" msgstr "Upozorňovat na beta verze" 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í." msgid "Updates" msgstr "Aktualizace" 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í." msgid "Line endings:" msgstr "Konce řádků:" msgid "Unix (recommended)" msgstr "Unix (doporučeno)" msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "Zalomit po:" msgid "Preserve formatting of existing files" msgstr "Zachovat stávající formátování souboru" msgid "Advanced" msgstr "Pokročilé" msgid "Settings" msgstr "Nastavení" msgid "Preparing strings…" msgstr "Příprava řetězců…" msgid "Pre-translating from translation memory…" msgstr "Před-překládání z překladové paměti…" #, 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ů" msgid "Pre-translating…" msgstr "Probíhá předběžný překlad…" 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. msgid "Pre-translate" msgstr "Před-přeložit" 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." msgid "Cannot pre-translate from unknown language." msgstr "Není možné před-překládat z neznámého jazyka." 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." msgid "Only fill in exact matches" msgstr "Doplnit pouze při přesné shodě" 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." msgid "Don’t mark exact matches as needing work" msgstr "Přesné shody neoznačovat jako vyžadující pozornost" 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." 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." #, 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." 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." msgid "No entries could be pre-translated." msgstr "Nebyly před-přeloženy žádné položky." 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ů." msgid "Cancelling…" msgstr "Ukončuji…" msgid "Drag Folders or Files Here" msgstr "Sem přetáhněte složky nebo soubory" msgid "Drag folders or files here" msgstr "Sem přetáhněte složky nebo soubory" msgid "Add Folders…" msgstr "Přidat složky…" msgid "Add folders…" msgstr "Přidat složky…" msgid "Add Files…" msgstr "Přidat soubory…" msgid "Add files…" msgstr "Přidat soubory…" msgid "Add Wildcard…" msgstr "Přidat zástupný řetězec…" msgid "Add wildcard…" msgstr "Přidat zástupný řetězec…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) 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" msgid "Show in Explorer" msgstr "Ukázat v Průzkumníkovi" msgid "Show in Folder" msgstr "Ukázat ve složce" msgid "Paths" msgstr "Cesty" msgid "Excluded paths" msgstr "Ignorovat cesty" msgid "Advanced extraction settings" msgstr "Pokročilá nastavení extrakce" msgid "Extract notes for translators from:" msgstr "Extrahovat poznámky pro překladatele z:" msgid "Comments prefixed with:" msgstr "Komentáře začínající řetězcem:" msgid "All comments" msgstr "Všechny komentáře" msgid "Additional xgettext flags:" msgstr "Další parametry pro xgettext:" msgid "Additional keywords" msgstr "Další klíčová slova" msgid "Name of the project the translation is for" msgstr "Název projektu, pro který je překlad určen" msgid "Team name and email address or URL" msgstr "Název týmu a e-mailová adresa nebo URL" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "například nplurals=2; plural=(n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (doporučeno)" msgid "Please save the file first. This section cannot be edited until then." msgstr "Nejdříve soubor uložte, jinak nebude možné tuto sekci editovat." msgid "Placeholders correctness" msgstr "Správnost zástupných znaků" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "V překladu chybí zástupný znak „%s“." #, 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." msgid "Plural form translations" msgstr "Překlady forem plurálu" msgid "Not all plural forms are translated." msgstr "Nejsou přeloženy všechny formy plurálu." msgid "Inconsistent upper/lower case" msgstr "Nekonzistentní malá/velká písmena" msgid "The translation should start as a sentence." msgstr "Překlad by měl začínat jako věta." msgid "The translation should start with a lowercase character." msgstr "Překlad by měl začínat malým písmenem." msgid "Inconsistent whitespace" msgstr "Nekonzistentní mezery a bílé znaky" msgid "The translation doesn’t start with a space." msgstr "Na začátku překladu chybí mezera." 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." msgid "The translation is missing a newline at the end." msgstr "Na konci překladu chybí odřádkování." 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." msgid "The translation is missing a space at the end." msgstr "Na konci překladu chybí mezera." 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." msgid "Punctuation checks" msgstr "Kontroly interpunkce" #, c-format msgid "The translation should end with “%s”." msgstr "Překlad by měl být ukončen „%s“." #, c-format msgid "The translation should not end with “%s”." msgstr "Překlad by neměl být ukončen „%s“." #, 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“." msgid "Cloud" msgstr "Cloud" msgid "Clear Menu" msgstr "Vyprázdnit menu" msgid "Clear menu" msgstr "Vyprázdnit menu" msgid "Comment:" msgstr "Komentář:" msgid "Update" msgstr "Aktualizovat" msgid "&Delete" msgstr "&Smazat" msgid "Delete the comment" msgstr "Odstranit komentář" msgid "Edit project" msgstr "Upravit projekt" msgid "Project name:" msgstr "Název projektu:" msgid "Browse" msgstr "Procházet" msgid "Add directory to the list" msgstr "Přidat adresář do seznamu" msgid "OK" msgstr "OK" msgid "&File" msgstr "&Soubor" msgid "&New…" msgstr "&Nový…" msgid "New from &POT/PO file…" msgstr "Nový z &POT/PO souboru…" msgid "New From &POT/PO File…" msgstr "Nový z &POT/PO souboru…" msgid "&Open…" msgstr "&Otevřít…" msgid "Open Recent" msgstr "Otevřít poslední položku" msgid "Open recent" msgstr "Otevřít nedávné" msgid "Open cloud translation…" msgstr "Otevřít překlad z cloudu…" msgid "Open Cloud Translation…" msgstr "Otevřít překlad z cloudu…" msgid "&Start window" msgstr "Úvodní okno" msgid "&Start Window" msgstr "Úvodní okno" msgid "Catalogs &manager" msgstr "Správce &katalogů" msgid "Catalogs &Manager" msgstr "Správce &katalogů" msgid "&Close" msgstr "&Zavřít" msgid "&Save" msgstr "&Uložit" msgid "Save &as…" msgstr "Uložit j&ako…" msgid "Save &As…" msgstr "Uložit j&ako…" msgid "Compile to MO…" msgstr "Zkompilovat do MO…" msgid "E&xport to HTML…" msgstr "E&xportovat do HTML…" msgid "Check for updates…" msgstr "Vyhledat aktualizace…" msgid "Settings…" msgstr "Nastavení…" msgid "&Preferences" msgstr "Nasta&vení" msgid "E&xit" msgstr "&Konec" msgid "Quit" msgstr "Ukončit" msgid "Copy from singular" msgstr "Zkopírovat ze singuláru" msgid "Copy From Singular" msgstr "Zkopírovat ze singuláru" msgid "Translation needs &work" msgstr "&Překlad vyžaduje úpravy" msgid "Translation Needs &Work" msgstr "&Překlad vyžaduje úpravy" msgid "Edit &comment" msgstr "Upravit &komentář" msgid "Edit &Comment" msgstr "Upravit &komentář" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "Návrhy" msgid "&Find…" msgstr "&Najít…" msgid "Replace…" msgstr "Na&hradit…" msgid "Find next" msgstr "Najít další" msgid "Find previous" msgstr "Najít předchozí" msgid "Find and Replace…" msgstr "Najít a nahradit…" msgid "Find Next" msgstr "Najít další" msgid "Find Previous" msgstr "Najít předchozí" msgid "Show string &ID" msgstr "Zobrazit &ID řetězců" msgid "Show String &ID" msgstr "Zobrazit &ID řetězců" msgid "Show warnings" msgstr "Zobrazit varování" msgid "Show Warnings" msgstr "Zobrazit varování" msgid "Sort by &file order" msgstr "Seřadit podle pořadí v &souboru" msgid "Sort by &File Order" msgstr "Seřadit podle pořadí v &souboru" msgid "Sort by &source" msgstr "Seřadit podle &zdrojového textu" msgid "Sort by &Source" msgstr "Seřadit podle &zdrojového textu" msgid "Sort by &translation" msgstr "Seřadit podle &překladu" msgid "Sort by &Translation" msgstr "Seřadit podle &překladu" msgid "&Group by context" msgstr "S&eskupit podle kontextu" msgid "&Group By Context" msgstr "S&eskupit podle kontextu" msgid "Entries with errors first" msgstr "Položky s chybami jako první" msgid "Entries with Errors First" msgstr "Položky s chybami jako první" msgid "&Untranslated entries first" msgstr "&Nepřeložené položky jako první" msgid "&Untranslated Entries First" msgstr "&Nepřeložené položky jako první" msgid "&Show code occurrences" msgstr "&Zobrazit výskyty v kódu" msgid "&Show Code Occurrences" msgstr "&Zobrazit výskyty v kódu" msgid "Show sidebar" msgstr "Zobrazit postranní panel" msgid "Show status bar" msgstr "Zobrazit stavový řádek" msgid "&Translation" msgstr "&Překlad" msgid "&Update from source code" msgstr "&Aktualizovat ze zdrojového kódu" msgid "&Update from Source Code" msgstr "&Aktualizovat ze zdrojového kódu" msgid "Update from &POT file…" msgstr "Aktualizovat z &POT souboru…" msgid "Update from &POT File…" msgstr "Aktualizovat z &POT souboru…" msgid "Sync with Crowdin" msgstr "Synchronizovat s Crowdin" msgid "Pre-&translate…" msgstr "Před-přeloži&t…" msgid "&Validate translations" msgstr "&Zkontrolovat překlad" msgid "&Validate Translations" msgstr "&Zkontrolovat překlad" msgid "Remove Same-as-Source Translations" msgstr "Odstranit překlady identické se zdrojovým textem" msgid "&Purge deleted translations" msgstr "&Smazat staré překlady" msgid "&Purge Deleted Translations" msgstr "&Smazat staré překlady" msgid "&Properties…" msgstr "&Vlastnosti…" msgid "&Go" msgstr "Pře&jít" msgid "&Done and next" msgstr "&Hotovo a další" msgid "&Done and Next" msgstr "&Hotovo a další" msgid "Previously edited" msgstr "Předchozí editovaný překlad" msgid "Previously Edited" msgstr "Předchozí editovaný překlad" msgid "&Previous translation" msgstr "&Předchozí překlad" msgid "&Previous Translation" msgstr "&Předchozí překlad" msgid "&Next translation" msgstr "&Další překlad" msgid "&Next Translation" msgstr "&Další překlad" msgid "P&revious unfinished" msgstr "Předchozí ne&dokončená" msgid "P&revious Unfinished" msgstr "Předchozí ne&dokončená" msgid "Ne&xt unfinished" msgstr "Další &nedokončená" msgid "Ne&xt Unfinished" msgstr "Další &nedokončená" msgid "Previous plural form" msgstr "Předchozí forma plurálu" msgid "Previous Plural Form" msgstr "Předchozí forma plurálu" msgid "Next plural form" msgstr "Další forma plurálu" msgid "Next Plural Form" msgstr "Další forma plurálu" msgid "&Online help" msgstr "&Nápověda online" msgid "&Online Help" msgstr "&Nápověda online" msgid "&GNU gettext manual" msgstr "Dokumentace GNU gettext" msgid "&GNU gettext Manual" msgstr "Dokumentace GNU gettext" msgid "&About Poedit" msgstr "&O aplikaci Poedit" msgid "&About" msgstr "&O aplikaci" msgid "Extractor setup" msgstr "Nastavení extraktoru" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Seznam přípon oddělených středníky (např. *.cpp;*.h):" msgid "Invocation:" msgstr "Spuštění:" msgid "Command to extract translations:" msgstr "Příkaz pro extrakci překladů:" 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)." msgid "An item in keywords list:" msgstr "Položka seznamu klíčových slov:" 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." msgid "An item in input files list:" msgstr "Položka seznamu vstupních souborů:" #, 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." msgid "Source code charset:" msgstr "Znaková sada zdrojáků:" #, 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." msgid "Translation Properties" msgstr "Vlastnosti překladu" msgid "Project name and version:" msgstr "Název a verze projektu:" msgid "Language team:" msgstr "Překladatelský tým:" msgid "Plural forms:" msgstr "Formy plurálu:" msgid "Use default rules for this language" msgstr "Použít výchozí pravidla pro tento jazyk" msgid "Use custom expression" msgstr "Použít vlastní výraz" msgid "Learn about plural forms" msgstr "Podrobnosti o formách plurálu" msgid "Charset:" msgstr "Znaková sada:" msgid "Advanced Extraction Settings…" msgstr "Pokročilá nastavení extrakce…" msgid "Advanced extraction settings…" msgstr "Pokročilá nastavení extrakce…" msgid "Translation properties" msgstr "Vlastnosti překladu" msgid "Sources Paths" msgstr "Prohledávané cesty" msgid "Sources paths" msgstr "Prohledávané cesty" msgid "Extract text from source files in the following directories:" msgstr "Extrahovat text ze zdrojových souborů v těchto adresářích:" msgid "Base path:" msgstr "Základní cesta:" msgid "Sources Keywords" msgstr "Klíčová slova" msgid "Sources keywords" msgstr "Klíčová slova" 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:" msgid "Also use default keywords for supported languages" msgstr "Použít také výchozí klíčová slova pro podporované jazyky" msgid "Learn about gettext keywords" msgstr "Podrobnosti o klíčových slovech gettext" msgid "Update summary" msgstr "Výsledek aktualizace" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" "Tyto řetězce se vyskytují ve zdrojácích, ale nejsou v souboru.\n" "Poedit je nyní do souboru přidá." msgid "New strings" msgstr "Nové řetězce" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" "Tyto řetězce již nejsou ve zdrojovém kódu.\n" "Poedit je nyní ze souboru odstraní." msgid "Obsolete strings" msgstr "Odstraněné řetězce" msgid "(0 new, 0 obsolete)" msgstr "(0 nových, 0 odstraněných)" msgid "Open" msgstr "" msgid "Open file" msgstr "Otevřít soubor" msgid "Save file" msgstr "Uložit soubor" msgid "Validate" msgstr "Zkontrolovat" msgid "Check for errors in the translation" msgstr "Zkontrolovat, zda překlad neobsahuje chyby" msgid "Update from code" msgstr "Aktualizovat z kódu" msgid "Update from Code" msgstr "Aktualizovat z kódu" msgid "Update from source code" msgstr "Aktualizovat ze zdrojového kódu" msgid "Sidebar" msgstr "Postranní panel" msgid "Show or hide the sidebar" msgstr "Zobrazit nebo skrýt postranní panel" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. msgid "Previous source text" msgstr "Původní zdrojový text" 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." msgid "Notes for translators" msgstr "Poznámky pro překladatele" msgid "Comment" msgstr "Komentář" msgid "Add comment" msgstr "Přidat komentář" msgid "Add Comment" msgstr "Přidat komentář" msgid "Delete From Translation Memory" msgstr "Vymazat z překladové paměti" msgid "Delete from translation memory" msgstr "Vymazat z překladové paměti" msgid "Translation suggestions" msgstr "Návrhy překladu" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). msgid "No matches found" msgstr "Nenalezena žádná shoda" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). msgid "No Matches Found" msgstr "Nenalezena žádná shoda" msgid "This string was found in Poedit’s translation memory." msgstr "Tento řetězec byl nalezen v překladové paměti Poeditu." 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." 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." msgid "The TMX file is malformed." msgstr "TMX soubor je poškozený." msgid "No translations were found in the TMX file." msgstr "V souboru TMX nebyly nalezeny žádné překlady." #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Databáze překladové paměti je poškozená: %s (%d)." #, c-format msgid "Translation memory error: %s (%d)." msgstr "Chyba překladové paměti: %s (%d)." msgid "Cannot create temporary directory." msgstr "Nelze vytvořit adresář na dočasné soubory." msgid "There are no translations. That’s unusual." msgstr "V souboru nejsou žádné překlady. To je neobvyklé." msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "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\n" "automaticky extrahovány ze zdrojového kódu. Tak zůstávají aktuální a " "přesné.\n" "Překladatelé většinou používají PO šablony (soubory POT) připravené vývojáři." msgid "(Learn more about GNU gettext)" msgstr "(další informace o GNU gettext)" 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:" msgid "Update from POT" msgstr "Aktualizovat z POT souboru" msgid "Take translatable strings from an existing POT template." msgstr "Načte přeložitelné řetězce z existující POT šablony." 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:" msgid "Extract from sources" msgstr "Extrahovat ze zdrojových souborů" msgid "Configure source code extraction in Properties." msgstr "" "Parametry pro extrakci ze zdrojového kódu nastavte ve Vlastnostech katalogu." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #, c-format msgid "Version %s" msgstr "Verze %s" msgid "Create new" msgstr "Vytvořit nový" msgid "Create new translation from POT template." msgstr "Vytvořte nový překlad z šablony POT." msgid "Browse files" msgstr "Procházet soubory" msgid "Open and edit translation files." msgstr "Otevřete a editujte překladové soubory." msgid "Translate cloud project" msgstr "Přeložit cloudový projekt" msgid "Collaborate with other people online." msgstr "Spolupracujte s dalšími lidmi online." msgid "Recent files" msgstr "Nedávné soubory" msgid "Sync" msgstr "Synchronizovat" 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") #, 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. #, c-format msgid "%s Preferences" msgstr "Nastavení %su" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "Služby" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "Skrýt %s" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "Skrýt ostatní" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "Zobrazit vše" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "Ukončit %s" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "Nasta&vení…" msgid "Preferences..." msgstr "Předvolby..." #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "Poslední" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "Časté" msgid "&Apply" msgstr "&Použít" msgid "Apply" msgstr "Použít" msgid "&Back" msgstr "&Zpět" msgid "Back" msgstr "Zpět" msgid "&Cancel" msgstr "&Storno" msgid "&Clear" msgstr "&Vymazat" msgid "Clear" msgstr "Vymazat" msgid "Copy" msgstr "Kopírovat" msgid "Cu&t" msgstr "Vyjmou&t" msgid "Cut" msgstr "Vyjmout" msgid "Edit" msgstr "Upravit" msgid "&Quit" msgstr "&Konec" msgid "Help" msgstr "Nápověda" msgid "&New" msgstr "&Nový" msgid "New" msgstr "Nový" msgid "&No" msgstr "N&e" msgid "No" msgstr "Ne" msgid "&OK" msgstr "&OK" msgid "Open…" msgstr "Otevřít…" msgid "&Open..." msgstr "&Otevřít..." msgid "Open..." msgstr "Otevřít..." msgid "&Paste" msgstr "&Vložit" msgid "Paste" msgstr "Vložit" msgid "Preferences" msgstr "Předvolby" msgid "&Redo" msgstr "P&rovést znovu" msgid "Refresh" msgstr "Aktualizovat" msgid "&Save as" msgstr "Uložit &jako" msgid "Save as" msgstr "Uložit jako" msgid "Select &All" msgstr "Vybr&at vše" msgid "Select All" msgstr "Vybrat vše" msgid "&Undo" msgstr "&Zpět" msgid "&Yes" msgstr "&Ano" msgid "Yes" msgstr "Ano" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "Nahoru" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "Dolů" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "Doleva" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "Doprava" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "shift" poedit-3.5/locales/bg.po0000644000175100001770000024353314664354153012170 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "Скриване на това съобщение" msgid "Don’t Show Again" msgstr "Да не се показва повече" msgid "Don’t show again" msgstr "Да не се показва повече" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(нови: %i, остарели: %i)" msgid "Collecting source files…" msgstr "Събиране на изходните файлове…" msgid "Extracting translatable strings…" msgstr "Извличане на низовете за превод…" msgid "Failed to load file with extracted translations." msgstr "Файлът с изнесените преводи не може да бъде зареден." msgid "Merging differences…" msgstr "Обединяване на разликите…" msgid "Updating translations" msgstr "Обновяване на преводите" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "Файлът „%s“ не може да бъде отворен." msgid "Invalid file" msgstr "Невалиден файл" #, c-format msgid "Malformed header: “%s”" msgstr "Неправилна заглавка: „%s“" msgid "PO Translation Files" msgstr "Файлове с преводи" msgid "POT Translation Templates" msgstr "Шаблон за преводи" msgid "XLIFF Translation Files" msgstr "Файлове на XLIFF с превод" msgid "JSON Translation Files" msgstr "Файлове с преводи във формат JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "Файлове с преводи на Flutter" msgid "All Translation Files" msgstr "Всички файлове за превод" msgid "The file is in a format not recognized by Poedit." msgstr "Файлът е във формат, който не се разпознава от Poedit." msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "Файлът JSON не е файл с преводи и не може да бъде редактиран с Poedit." #, c-format msgid "Reading file content failed with the following error: %s" msgstr "При четенето на съдържанието на файла възникна следната грешка: %s" #, c-format msgid "" "File “%s” is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "Файлът „%s“ е без право на запис.\n" "Запазете го под друго име." #, c-format msgid "Couldn’t save file %s." msgstr "Файлът „%s“ не може да бъде запазен." msgid "Screenshots:" msgstr "Екранни снимки:" #, c-format msgid "%i line of file “%s” was not loaded correctly." msgid_plural "%i lines of file “%s” were not loaded correctly." msgstr[0] "%i ред от файла „%s“ не е зареден правилно." msgstr[1] "%i реда от файла „%s“ не са заредени правилно." #, c-format msgid "Line %d of file “%s” is corrupted (not valid %s data)." msgstr "Ред %d от файла „%s“ е неправилен (неправилни данни за %s)." msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" "Повреден файл PO: използвана е форма за единствено число на msgstr при " "наличие на msgid_plural" msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" "Повреден файл PO: използвана е форма за множествено число на msgstr, а " "msgid_plural липсва" msgid "Couldn’t load the file, it is probably damaged." msgstr "Файлът не може да бъде зареден. Най-вероятно е повреден." msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "Грешки при зареждане на файла. Може да има липсващи или повредени данни." msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "Възникна проблем при форматиране на файлa, но той беше запазен." #, 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, а настройките му са променени." msgid "Error saving file" msgstr "Грешка при запазване на файла" #, c-format msgid "“%s” is not a valid POT file." msgstr "„%s“ е неправилен файл POT." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Грешка при зареждане на файл XLIFF: %s" #, c-format msgid "unsupported version (%s)" msgstr "неподдържана версия (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML msgid "Broken markup in translation string." msgstr "Текстът за превод е с увредено форматиране." msgid "(Use default language)" msgstr "(Ползване на стандартния език)" msgid "Language selection" msgstr "Избиране на език" msgid "Select your preferred language" msgstr "Избиране на предпочитан език" msgid "You must restart Poedit for this change to take effect." msgstr "Трябва да рестартирате Poedit, за да влезе в сила тази промяна." msgid "Add Account" msgstr "Добавяне на профил" msgid "Add account" msgstr "Добавяне на профил" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "Научете повече относно %s" msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "Свържете Poedit с поддържаните облачни системи за локализация, за да " "синхронизирате безпроблемно преводите, управлявани от тях." msgid "How does cloud sync work?" msgstr "Как работи синхронизирането с облака?" msgid "Account" msgstr "Профил" msgid "(not signed in)" msgstr "(не сте вписан/а)" msgid "File" msgstr "Файл" msgid "Open cloud translation" msgstr "Отваряне на облачния превод" msgid "Manage accounts" msgstr "Управление на профилите" msgid "Project:" msgstr "Проект:" msgid "Language:" msgstr "Език:" msgid "Sign in to Cloud Account" msgstr "Вписване в облачния профил" msgid "Sign in to cloud account" msgstr "Вписване в облачния профил" msgid "No translation projects listed in your account." msgstr "Няма проекти за превод във Вашия профил." msgid "Downloading latest translations…" msgstr "Изтегляне на текущите преводи…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #, c-format msgid "Sign in to %s" msgstr "Вписване в %s" msgid "Syncing" msgstr "Синхронизиране" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s…" msgstr "Изпращане на преводите към %s…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s failed." msgstr "Преводите не могат да бъдат изпратени към %s." msgid "Syncing error" msgstr "Грешка при синхронизиране" msgid "Add" msgstr "Добавяне" msgid "Unknown Crowdin error." msgstr "Неизвестна грешка от Crowdin." msgid "Not authorized, please sign in again." msgstr "Не сте удостоверени, моля, впишете се отново." msgid "Downloading translations is disabled in this project." msgstr "Изтеглянето на преводи е изключено за този проект." msgid "Sign In" msgstr "Вписване" msgid "Sign in" msgstr "Вписване" msgid "Sign Out" msgstr "Изход" msgid "Sign out" msgstr "Изход" msgid "Learn more about Crowdin" msgstr "Научете повече за Crowdin" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" "Crowdin е онлайн система за управление на локализацията и инструмент за " "съвместен превод." msgid "Waiting for authentication…" msgstr "Изчакване на удостоверяване…" msgid "Updating user information…" msgstr "Обновяване на информацията за потребителя…" msgid "Sign in to Crowdin" msgstr "Вписване се в Crowdin" msgid "Syncing with Crowdin failed." msgstr "Неуспешно синхронизиране с Crowdin." msgid "Crowdin error" msgstr "Грешка в Crowdin" msgid "Uploading translations…" msgstr "Изпращане на преводите…" msgid "&Copy" msgstr "&Копиране" msgid "Learn more" msgstr "Научете повече" msgid "&Help" msgstr "Помо&щ" msgid "MO files can’t be directly edited in Poedit." msgstr "MO файловете не могат да бъдат директно променяни с Poedit." msgid "Error opening file" msgstr "Грешка при отваряне на файл" msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "Моля, вместо това отворете и променете съответния файл PO. При запазване на " "промените, файлът MO също ще бъде обновен." msgid "don’t delete temporary files (for debugging)" msgstr "временните файлове да не бъдат премахвани (за отстраняване на дефекти)" msgid "handle a poedit:// URI" msgstr "управление на протокола poedit://" msgid "go to item at given line number" msgstr "към елемента на зададения ред" msgid "Failed to communicate with Poedit process." msgstr "Грешка в комуникацията с процес на Poedit." #, c-format msgid "Unhandled exception occurred: %s" msgstr "Неприхванато изключение: %s" msgid "Select translation template" msgstr "Изберете шаблон за превод" msgid "Select translation file" msgstr "Изберете файл за превод" msgid "Poedit is an easy to use translation editor." msgstr "Poedit е лесен за ползване редактор на преводи." msgid "You can’t drop more than one file on Poedit window." msgstr "Не може да пуснете повече от един файл в прозореца на Poedit." #, c-format msgid "File “%s” is not a translation file." msgstr "Файлът „%s“ не е файл за превод." #, c-format msgid "File “%s” doesn’t exist." msgstr "Файлът „%s“ не съществува." 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". #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "" "Проверката на правописа е изключена, защото не е инсталиран речник за %s." msgid "Install" msgstr "Инсталиране" #, c-format msgid "The file “%s” has been changed by another application." msgstr "Файлът „%s“ е променен от друго приложение." msgid "Reload file" msgstr "Презареждане на файла" msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "Искате ли да презаредите файла? Ако го направите, незапазените промени в " "Poedit ще бъдат загубени." msgid "Ignore" msgstr "Пренебрегване" msgid "Reload File" msgstr "Презареждане на файла" msgid "The file has been modified. Do you want to save changes?" msgstr "Файлът е променен. Искате ли промените да бъдат запазени?" msgid "Save changes" msgstr "Запазване на промените" msgid "Your changes will be lost if you don’t save them." msgstr "Направените промени ще бъдат загубени, ако не бъдат запазени." msgid "Save" msgstr "&Запазване" msgid "Do&n’t save" msgstr "&Без запазване" msgid "Don’t Save" msgstr "Без запазване" msgid "The changes made by the other application will be lost if you save." msgstr "" "Ако запазите файла, промените направени от другото приложение ще бъдат " "загубени." msgid "Cancel" msgstr "О&тказ" msgid "Save Anyway" msgstr "Запазване въпреки това" msgid "Save anyway" msgstr "Запазване въпреки това" msgid "Save as…" msgstr "Запазване като…" msgid "Compile to…" msgstr "Компилиране до…" msgid "Compiled Translation Files" msgstr "Компилирани преводи" msgid "Export to HTML…" msgstr "Изнасяне като HTML…" msgid "HTML Files" msgstr "HTML файлове" #, c-format msgid "In: %s" msgstr "В: %s" msgid "Source code not available." msgstr "Изходният код не е на разположение." msgid "Updating failed" msgstr "Грешка при обновяване" 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 "" "Не всички преводи са обновени от изходния код, защото такъв не е открит на " "посоченото в настройките на файла място." msgid "Permission denied." msgstr "Достъпът е отказан." 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. 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. msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "Ако сте забранили достъп до файловете си, можете да го разрешите в " "Системните настройки > Защита и поверителност > Поверителност > Файлове и " "папки." msgid "Translation entries in the file are probably incorrect." msgstr "Възможно е преводите във файла да са грешни." msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "" "Файлът не може да бъде обновен. Натиснете „Подробности >>“, за да научите " "повече." msgid "Open translation template" msgstr "Отваряне на шаблона за превод" #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "С превода има %d проблем." msgstr[1] "С превода има %d проблема." msgid "Validation results" msgstr "Резултат от валидиране" msgid "" "Entries with errors were marked in red in the list. Details of the error " "will be shown when you select such an entry." msgstr "" "Низовете с грешки са разграничени в списъка с червен цвят на фона. " "Подробности ще бъдат показани, когато изберете такъв запис." msgid "The file was saved safely." msgstr "Файлът е запазен." msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "Файлът е запазен и компилиран във формат MO, но вероятно няма да работи." msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "Файлът е запазен, но не може да бъде компилиран във формат MO и използван." msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "Файлът е компилиран във формат MO, но вероятно няма да работи." msgid "The file cannot be compiled into the MO format and used." msgstr "Файлът не може да бъде компилиран във формат MO и използван." msgid "No problems with the translation found." msgstr "Не са открити проблеми в превода" #, 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 непреведени низа." msgid "The translation is ready for use." msgstr "Преводът е готов за използване." #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "PoEdit автоматично оправи невалидно съдържание във файла „%s“." msgid "" "The file contained duplicate items, which is not allowed in PO files and " "would prevent the file from being used. Poedit fixed the issue, but you " "should review translations of any items marked as needing work and correct " "them if necessary." msgstr "" "Файлът съдържа дублиращи се елементи, което е забранено във файлове PO и ще " "предотвратят използването му. PoEdit решава този проблем, но е необходим " "преглед на преводите на всички елементи, отбелязани като мъгляви и ако е " "необходимо да ги коригирате." msgid "Language of the translation isn’t set." msgstr "Липсва език на превода." msgid "Set Language" msgstr "Задаване на език" msgid "Set language" msgstr "Задаване на език" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." msgid "" "Suggestions are not available if the translation language is not set " "correctly. Other features, such as plural forms, may be affected as well." msgstr "" "Предложенията са недостъпни за неправилно конфигурирани езици. Други " "възможности като формите за множествено число също може да бъдат засегнати." msgid "Language of the translation is the same as source language." msgstr "Езикът на превода е същият като изходния език." msgid "Fix Language" msgstr "Промяна на езика" msgid "Fix language" msgstr "Промяна на езика" msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "Файлът съдържа текстове с форми за множествено число, но заглавката „Plural-" "Forms“ липсва." msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "Файлът съдържа текстове с форми за множествено число, които не отговарят на " "заглавката „Plural-Forms“" msgid "Required header Plural-Forms is missing." msgstr "Задължителната заглавка „Plural-Forms“ липсва." #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Синтактична грешка в заглавката „Plural-Forms“ („%s“)." msgid "Fix the Header" msgstr "Коригиране на заглавката" 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". #, 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.")" msgid "Review" msgstr "Рецензия" msgid "Would you like to use English for source text?" msgstr "Искате ли изходният текст да бъде на английски език?" #, 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" msgid "Load English" msgstr "Зареждане на английските текстове" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Преведени: %d от %d (%d%%)" #, c-format msgid "Remaining: %d" msgstr "Оставащи: %d" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d грешка" msgstr[1] "%d грешки" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d елемент" msgstr[1] "%d елемента" msgid " (unsaved)" msgstr " (незапазен)" msgid " (modified)" msgstr " (незапазен)" #, c-format msgid "Failed to update translation memory: %s" msgstr "Актуализирането на паметта с преводи е неуспешно: %s" msgid "Remove same-as-source translations" msgstr "Премахване на преводите, които са еднакви с оригиналния низ" msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" "Искате ли да премахнете всички преводи, които са еднакви с оригиналния низ?" msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" "Това действие ще изтрие всички преводи, които са абсолютно еднакви с " "оригиналния низ. Действието е необратимо." msgid "Keep" msgstr "&Отказ" msgid "Remove" msgstr "Премахване" msgid "Purge deleted translations" msgstr "Прочистване на изтрити преводи" msgid "Do you want to remove all translations that are no longer used?" msgstr "Искате ли да премахнете всички преводи, които вече не се използват?" 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 "" "Ако продължите с прочистването, всички преводи, обозначени като изтрити ще " "бъдат премахнати. Ще трябва да ги превеждате отново, ако в последствие бъдат " "върнати." msgid "Purge" msgstr "Прочистване" msgid "Copy from source text" msgstr "&Копиране изходния текст" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "И&зчистване на превода" msgid "Clear Translation" msgstr "И&зчистване на преводa" msgid "Edit comment" msgstr "Редактиране на &коментар" msgid "Edit Comment" msgstr "Редактиране на &коментар" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "Срещания в кода" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "Срещания в кода" msgid "Hide Sidebar" msgstr "&Скриване странична лента" msgid "Show Sidebar" msgstr "&Показване на странична лента" msgid "Hide Status Bar" msgstr "Скриване на лента за състоянието" msgid "Show Status Bar" msgstr "Показване на лента за състоянието" msgid "String length in characters: translation | source" msgstr "Дължина на текста в брой знаци: превод | изходен текст" msgid "String length in characters" msgstr "Дължина на текста в брой знаци" msgid "Source text" msgstr "Изходен текст" msgid "Singular" msgstr "Единствено число" msgid "Plural" msgstr "Множествено число" msgid "Translation" msgstr "Превод" msgid "Pre-translated" msgstr "Предварителен превод" 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. msgid "Needs work" msgstr "Мъгляв" msgid "" "POT files are only templates and don’t contain any translations themselves.\n" "To make a translation, create a new PO file based on the template." msgstr "" "Файловете POT са само шаблони и сами по себе си не съдържат преводи.\n" "За да започнете превод създайте нов файл PO базиран на този шаблон." msgid "Create new translation" msgstr "Създаване на &нов превод" msgid "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 msgid "Source text ID" msgstr "Идентификатор на изходния текст" msgid "Everything" msgstr "Всичко" #, c-format msgid "Form %i" msgstr "Форма %i" #, c-format msgid "Form %i (unused)" msgstr "Форма %i (не се използва)" msgid "Zero" msgstr "Нула" msgid "One" msgstr "Един" msgid "Two" msgstr "Два" msgid "Other" msgstr "Повече" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, c-format msgid "String context: %s" msgstr "Контекст на низа: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #, c-format msgid "String identifier: %s" msgstr "Идентификатор на низа: %s" #, c-format msgid "%s Format" msgstr "Формат на %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "формат на %s" #, c-format msgid "Translation — %s" msgstr "Превод на — %s" msgid "ID" msgstr "Идентификатор" #, c-format msgid "Source text — %s" msgstr "Изходен текст – %s" msgid "unknown language" msgstr "неизвестен език" #, c-format msgid "Network error: %s (%d)" msgstr "Мрежова грешка: %s (%d)" msgid "Unknown error" msgstr "Неизвестна грешка" #, c-format msgid "Failed command: %s" msgstr "Неуспешна команда: %s" msgid "Failed to merge gettext catalogs." msgstr "Неуспешно обединяване на каталози на gettext." msgid "Open in Editor" msgstr "Отваряне с редактор" msgid "Open in editor" msgstr "Отваряне с редактор" msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" "Файлът не съдържа информация за срещанията на този текст в изходния код." msgid "No usage information" msgstr "Няма информация за начина на ползване" #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d срещане в кода" msgstr[1] "%d срещания в кода" msgid "Source code not found" msgstr "Изходният код не е наличен" 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 не може да покаже изходния код, където този текст се ползва, тъй като " "или файлът не е наличен на посоченото място, или е символна връзка, която не " "сочи към истински файл." msgid "File cannot be opened" msgstr "Файлът не може да бъде отворен" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "Poedit не може да отвори файла „%s“." msgid "Find" msgstr "Търсене…" msgid "Replace" msgstr "Заместване" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "Настройки" msgid "Ignore case" msgstr "Незачитане на регистъра" msgid "Wrap around" msgstr "Безконечно търсене" msgid "Whole words only" msgstr "&Цели думи" msgid "Find in source texts" msgstr "Търсене в изходните низове" msgid "Find in translations" msgstr "Търсене в &преводите" msgid "Find in comments" msgstr "Търсене в &коментарите" msgid "Close" msgstr "&Затваряне" msgid "Replace &All" msgstr "Замяна на &всички" msgid "Replace &all" msgstr "Замяна на &всички" msgid "&Replace" msgstr "&Заменяне" msgid "< &Previous" msgstr "&< Предишен" msgid "&Next >" msgstr "Следващ &>" msgid "String to find" msgstr "Търсене" msgid "Replacement string" msgstr "Заместване" #, c-format msgid "Cannot execute program: %s" msgstr "Програмата не може да бъде изпълнена: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "Име или код на език" msgid "Translation Language" msgstr "Език" msgid "Language of the translation:" msgstr "Език на превода:" msgid "All strings" msgstr "Всички низове" msgid "Couldn’t download Localazy project details." msgstr "Подробностите за проекта в Localazy не могат да бъдат свалени." msgid "There was an error when uploading translations to Localazy." msgstr "Възникна грешка при изпращането на преводите към Localazy." msgid "Projects" msgstr "Проекти" msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Localazy е силно автоматизирана система за локализация, която дава " "възможност на всеки лесно да преведе своите продукти и съдържание на много " "езици." msgid "Add Project" msgstr "Добавяне на проект" msgid "Add project" msgstr "Добавяне на проект" msgid "Poedit - Catalogs manager" msgstr "Poedit — управление на каталози" msgid "Edit…" msgstr "Редактиране…" msgid "Create new translations project" msgstr "Създаване на нов проект за превод" msgid "Delete the project" msgstr "Изтриване на проекта" msgid "Edit the project" msgstr "Редактиране на проекта" msgid "Update all" msgstr "&Актуализиране на всичко" msgid "Update all catalogs in the project" msgstr "Актуализиране на всички каталози в проекта" msgid "Total" msgstr "Всичко" msgid "Untrans" msgstr "Непреведени" msgctxt "column/row header" msgid "Needs Work" msgstr "Мъгляв" msgid "Errors" msgstr "Грешки" msgid "Last modified" msgstr "Последна промяна" msgid "Select directory" msgstr "Избиране на папка" msgid "Directories:" msgstr "Папки:" msgid "" msgstr "<без име>" #, c-format msgid "Do you want to delete project “%s”?" msgstr "Искате ли да изтриете проекта „%s“?" msgid "Delete project" msgstr "Изтриване на проект" msgid "Deleting the project will not delete any translation files." msgstr "Изтриването на проекта няма да изтрие файловете му за превод." msgid "Confirmation" msgstr "Потвърждение" msgid "Update all catalogs in this project?" msgstr "Обновяване на всички каталози в проекта?" msgid "Performs update from source code on all files in the project." msgstr "Извършва обновяване от изходния код на всички файлове в проекта." msgid "Check for Updates…" msgstr "Проверка за обновяване…" msgid "Catalogs Manager" msgstr "&Управление на каталози" msgid "&Preferences…" msgstr "&Настройки…" msgid "&Edit" msgstr "&Редактиране" msgid "Undo" msgstr "Отмяна" msgid "Redo" msgstr "Повтаряне" msgid "Paste and Match Style" msgstr "Вмъкване със запазване на стила" msgid "Delete" msgstr "&Изтриване" msgid "Spelling and Grammar" msgstr "Правопис и граматика" msgid "Show Spelling and Grammar" msgstr "Правопис и граматика" msgid "Check Document Now" msgstr "Проверка на документа" msgid "Check Spelling While Typing" msgstr "Проверка на правописа при въвеждане" msgid "Check Grammar With Spelling" msgstr "Проверка на граматика и правопис" msgid "Correct Spelling Automatically" msgstr "Автоматична корекция на правописа" msgid "Substitutions" msgstr "Замествания" msgid "Show Substitutions" msgstr "Показване на замествания" msgid "Smart Copy/Paste" msgstr "Умно копиране/поставяне" msgid "Smart Quotes" msgstr "Умни кавички" msgid "Smart Dashes" msgstr "Умни тирета" msgid "Smart Links" msgstr "Умни връзки" msgid "Text Replacement" msgstr "Заместване на текст" msgid "Transformations" msgstr "Трансформации" msgid "Make Upper Case" msgstr "Към главни букви" msgid "Make Lower Case" msgstr "Към малки букви" msgid "Capitalize" msgstr "В главни букви" msgid "Speech" msgstr "Говор" msgid "Start Speaking" msgstr "Начало на изчитане" msgid "Stop Speaking" msgstr "Край на изчитане" msgid "&View" msgstr "&Изглед" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Show Toolbar" msgstr "Показване на лентата с инструменти" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Customize Toolbar…" msgstr "Персонализиране на лентата с инструменти…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Enter Full Screen" msgstr "На &цял екран" msgid "Window" msgstr "Прозорец" msgid "Minimize" msgstr "Минимизиране" msgid "Zoom" msgstr "Мащаб" msgid "Welcome to Poedit" msgstr "Здравейте от Poedit" msgid "Bring All to Front" msgstr "Всички на преден план" msgid "Information about the translator" msgstr "Информация за преводача" msgid "Name:" msgstr "Име:" msgid "Your Name" msgstr "Вашето име" msgid "Email:" msgstr "Електронна поща:" msgid "you@example.com" msgstr "you@example.com" msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "Името и електронната ви поща ще бъдат ползвани само за попълването на " "заглавката „Last-Translator“ на файловете на GNU gettext." msgid "Editing" msgstr "Редактиране" msgid "Automatically compile MO file when saving" msgstr "&автоматично компилиране до файл MO при запазване" msgid "Show summary after updating files" msgstr "Показване на обобщение след обновяване на файловете" msgid "Check spelling" msgstr "Проверка на правописа" msgid "Always change focus to text input field" msgstr "полето за превод да е &винаги на фокус" msgid "" "Never let the list of strings take focus. If enabled, you must use Ctrl-" "arrows for keyboard navigation but you can also type text immediately, " "without having to press Tab to change focus." msgstr "" "Не позволява на списъка с низове да приеме фокус. Ако е отметнато, трябва да " "използвате Ctrl+стрелки за управление с клавиатурата, но така можете да " "въвеждате текст веднага, без да се налага да натискате табулатора, за да " "промените фокуса." msgid "Appearance" msgstr "Външен вид" msgid "Use custom list font:" msgstr "шрифт за &списъка с низове" msgid "Use custom text fields font:" msgstr "шрифт за &текстовите полета" msgid "Change UI language" msgstr "Смяна на &езика" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions msgid "(requires Windows 8 or newer)" msgstr "(изисква Windows 8 или по-нов)" msgid "General" msgstr "Общи" msgid "Use translation memory" msgstr "Използване на &паметта с преводи" msgid "Manage…" msgstr "Управление…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "При обновяване от изходен код" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "напасване на сходните текстове в рамките на файла" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "предварителен превод от ПП" 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 може да се опита да попълни новите записи чрез вече съществуващите " "преводи във файла или като използва цялата памет за преводи. Използването на " "ПП няма да е особено ефикасно, ако в нея няма много запис, но това ще става " "все по-добре при попълването ѝ." msgid "Stored translations:" msgstr "Брой запомнени преводи:" msgid "Database size on disk:" msgstr "Големина на базата от данни:" msgid "Import Translation Files…" msgstr "Внасяне на файлове за превод…" msgid "Import translation files…" msgstr "Внасяне на файлове за превод…" msgid "Import From TMX…" msgstr "Внасяне от TMX…" msgid "Import from TMX…" msgstr "Внасяне от TMX…" msgid "Export To TMX…" msgstr "Изнасяне като TMX…" msgid "Export to TMX…" msgstr "Изнасяне като TMX…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). msgid "Reset" msgstr "Възстановяване" msgid "Select translation files to import" msgstr "Избиране на файлове за импорт" msgid "Translation Memory" msgstr "Памет с преводи" msgid "Importing translations…" msgstr "Внасяне на преводи…" #, c-format msgid "Error loading translation file “%s”." msgstr "Грешка при зареждане на файла „%s“." msgid "Finalizing…" msgstr "Приключване…" msgid "Select TMX files to import" msgstr "Изберете файлове TMX за внасяне" msgid "TMX Files" msgstr "Файлове TMX" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "Грешка при внасяне на памет с преводи от „%s“." msgid "Import error" msgstr "Грешка при внасянето" msgid "Export as…" msgstr "Изнасяне като…" msgid "Exporting translations…" msgstr "Изнасяне на преводи…" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "Грешка при изнасяне на памет с преводи от „%s“." msgid "Export error" msgstr "Грешка при изнасянето" msgid "Reset translation memory" msgstr "Възстановяване на паметта с преводи" msgid "Are you sure you want to reset the translation memory?" msgstr "Наистина ли желаете паметта с преводи да бъде нулирана?" 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. msgid "TM" msgstr "Памет" msgid "" "Source code extractors are used to find translatable strings in the source " "code files and extract them so that they can be translated." msgstr "" "Инструментът намира годни за превод низове във файлове с изходен код и ги " "извлича, за да бъдат преведени." msgid "Custom Extractors:" msgstr "Потребителски команди за извличане:" msgid "Custom extractors:" msgstr "Потребителски команди за извличане:" msgid "GNU gettext" msgstr "GNU gettext" 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 и други)." msgid "Delete extractor" msgstr "Изтриване на инструмент за извличане" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "Наистина ли желаете да изтриете инструментът за извличане „%s“?" msgid "Extractors" msgstr "Извличане" msgid "Accounts" msgstr "Профили" msgid "Automatically check for updates" msgstr "автоматична &проверка за обновяване" msgid "Include beta versions" msgstr "&включително beta-версии" msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "Изданията бета съдържат последните нови възможности и подобрения, но може да " "бъдат по-малко стабилни." msgid "Updates" msgstr "Обновяване" msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Тези настройки влияят върху вътрешния формат на файловете PO. Настройте ги, " "ако имате конкретни изисквания, например, заради контрол на версиите." msgid "Line endings:" msgstr "&символ за край на ред:" msgid "Unix (recommended)" msgstr "Unix (препоръчително)" msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "пренасяне &на:" msgid "Preserve formatting of existing files" msgstr "&запазване на формата на съществуващите файлове" msgid "Advanced" msgstr "Разширени" msgid "Settings" msgstr "Настройки" msgid "Preparing strings…" msgstr "Подготвяне на текстовете…" msgid "Pre-translating from translation memory…" msgstr "Предварителен превод чрез паметта за преводи…" #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "Предварително преведен %u низ" msgstr[1] "Предварително преведени %u низа" msgid "Pre-translating…" msgstr "Предварителен превод…" 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. msgid "Pre-translate" msgstr "Предварителен превод" msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "Предварителените преводи се нуждаят от истински изходен текст. Те не могат " "да работят, ако във файла има само текстови идентификатори." msgid "Cannot pre-translate from unknown language." msgstr "Не може да се извърши предварителен превод от непознат език." msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "За извършването на предварителен превод трябва да е ясно кой е изходният " "език на текста. Poedit не може да го разпознае в този файл." msgid "Only fill in exact matches" msgstr "Попълване само на точните съвпадения" msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "По подразбиране, неточните резултати също биват добавяни, но отбелязани като " "мъгляви. Отметнете, за да бъдат добавяни само точните съвпадения." msgid "Don’t mark exact matches as needing work" msgstr "Точните съвпадения да не бъдат отбелязвани като мъгляви" 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 "" "Отметнете, само ако вярвате в качеството на паметта за преводи. По " "подразбиране всички съвпадения от ПП се отбелязват като мъгляви и трябва да " "бъдат проверени преди употреба." msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "Предварителният превод намира автоматично точни или мъгляви съвпадения за " "непреведените низове в паметта за преводи и попълва преводите им." #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%d запис е предварително преведен." msgstr[1] "%d записа са предварително преведени." msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "Преводите са отбелязани като мъгляви, защото може да са неточни. Трябва да " "бъдат проверени." msgid "No entries could be pre-translated." msgstr "Няма записи, които могат да бъдат предварително преведени." msgid "" "The TM doesn’t contain any strings similar to the content of this file. It " "is only effective for semi-automatic translations after Poedit learns enough " "from files that you translated manually." msgstr "" "Паметта с преводи не съдържа низове с подобно съдържание. Тя е ефективна " "само за полу-автоматичен превод след като се е обучила от файловете, които " "ръчно превеждате." msgid "Cancelling…" msgstr "Отказване…" msgid "Drag Folders or Files Here" msgstr "Пуснете папки или файлове тук" msgid "Drag folders or files here" msgstr "Пуснете папки или файлове тук" msgid "Add Folders…" msgstr "Добавяне на папки…" msgid "Add folders…" msgstr "Добавяне на папки…" msgid "Add Files…" msgstr "Добавяне на файлове…" msgid "Add files…" msgstr "Добавяне на файлове…" msgid "Add Wildcard…" msgstr "Добавяне на заместващ знак…" msgid "Add wildcard…" msgstr "Добавяне на заместващ знак…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) msgid "Reveal in Finder" msgstr "Показване във Finder" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" msgid "Show in Explorer" msgstr "Показване в Explorer" msgid "Show in Folder" msgstr "Показване в папката" msgid "Paths" msgstr "Пътища" msgid "Excluded paths" msgstr "Пренебрегнати пътища" msgid "Advanced extraction settings" msgstr "Разширени настройки за извличане" msgid "Extract notes for translators from:" msgstr "Извличане на бележки към преводачите от:" msgid "Comments prefixed with:" msgstr "Префикс на &коментарите:" msgid "All comments" msgstr "Всички коментари" msgid "Additional xgettext flags:" msgstr "Допълнителни флагове към xgettext:" msgid "Additional keywords" msgstr "Допълнителни ключови думи" msgid "Name of the project the translation is for" msgstr "име и версия" msgid "Team name and email address or URL" msgstr "Име и електронна поща на екипа или адрес:" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "например nplurals=2; plural=(n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (препоръчително)" msgid "Please save the file first. This section cannot be edited until then." msgstr "Моля, първо запазете файла. Тези настройки ще са неактивни дотогава." msgid "Placeholders correctness" msgstr "Съответствие на заместителите" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "Заместителят „%s“ липсва в превода." #, c-format msgid "Superfluous placeholder “%s” that isn’t in source text." msgstr "Излшен заместител „%s“, който не присъства в изходния текст." msgid "Plural form translations" msgstr "Преводи на множествени числа" msgid "Not all plural forms are translated." msgstr "Не всички форма за множествено число са преведени." msgid "Inconsistent upper/lower case" msgstr "Несъответствие на главни/малки букви" msgid "The translation should start as a sentence." msgstr "Преводът би трябвало да започва като изречение." msgid "The translation should start with a lowercase character." msgstr "Преводът би трябвало да започва с малка буква." msgid "Inconsistent whitespace" msgstr "Несъответстващи интервали и празни места" msgid "The translation doesn’t start with a space." msgstr "Липсва интервал в началото на превода." msgid "The translation starts with a space, but the source text doesn’t." msgstr "Преводът започва с интервал, но изходният низ не." msgid "The translation is missing a newline at the end." msgstr "Липсва нов ред в края на превода." msgid "The translation ends with a newline, but the source text doesn’t." msgstr "Преводът завършва с нов ред, но изходният низ не." msgid "The translation is missing a space at the end." msgstr "Липсва интервал в края на превода." msgid "The translation ends with a space, but the source text doesn’t." msgstr "Преводът завършва с интервал, но изходният низ не." msgid "Punctuation checks" msgstr "Проверки на пунктуацията" #, c-format msgid "The translation should end with “%s”." msgstr "Преводът би трябвло да завършва с „%s“." #, c-format msgid "The translation should not end with “%s”." msgstr "Преводът не би трябвало да завършва с „%s“." #, c-format msgid "The translation ends with “%s”, but the source text ends with “%s”." msgstr "Преводът завършва с „%s“, а изходният низ с „%s“." msgid "Cloud" msgstr "Облак" msgid "Clear Menu" msgstr "Изчистване на менюто" msgid "Clear menu" msgstr "Изчистване на менюто" msgid "Comment:" msgstr "&Коментар:" msgid "Update" msgstr "Обновяване" msgid "&Delete" msgstr "&Изтриване" msgid "Delete the comment" msgstr "Изтриване на коментара" msgid "Edit project" msgstr "Редактиране на проект" msgid "Project name:" msgstr "Име на проекта:" msgid "Browse" msgstr "Избиране" msgid "Add directory to the list" msgstr "Добавяне на папка към списъка" msgid "OK" msgstr "Д&обре" msgid "&File" msgstr "&Файл" msgid "&New…" msgstr "&Нов…" msgid "New from &POT/PO file…" msgstr "Нов от &файл POT/PO…" msgid "New From &POT/PO File…" msgstr "Нов от &файл POT/PO…" msgid "&Open…" msgstr "&Отваряне…" msgid "Open Recent" msgstr "Отваряне на последните файлове" msgid "Open recent" msgstr "Отваряне на скорошен файл" msgid "Open cloud translation…" msgstr "Отваряне на облачния превод…" msgid "Open Cloud Translation…" msgstr "Отваряне на облачния превод…" msgid "&Start window" msgstr "&Начален прозорец" msgid "&Start Window" msgstr "&Начален прозорец" msgid "Catalogs &manager" msgstr "&Управление на каталози" msgid "Catalogs &Manager" msgstr "&Управление на каталози" msgid "&Close" msgstr "&Затваряне" msgid "&Save" msgstr "&Запазване" msgid "Save &as…" msgstr "Запазване &като…" msgid "Save &As…" msgstr "Запазване &като…" msgid "Compile to MO…" msgstr "Компилиране до файл на MO…" msgid "E&xport to HTML…" msgstr "Из&насяне като HTML…" msgid "Check for updates…" msgstr "Проверка за обновяване…" msgid "Settings…" msgstr "Настройки…" msgid "&Preferences" msgstr "&Настройки" msgid "E&xit" msgstr "&Изход" msgid "Quit" msgstr "Изход" msgid "Copy from singular" msgstr "Копиране от ед. ч." msgid "Copy From Singular" msgstr "Копиране от ед. ч." msgid "Translation needs &work" msgstr "Преводът е &мъгляв" msgid "Translation Needs &Work" msgstr "Преводът е &мъгляв" msgid "Edit &comment" msgstr "Редактиране на &коментар" msgid "Edit &Comment" msgstr "Редактиране на &коментар" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "Предложения" msgid "&Find…" msgstr "&Търсене…" msgid "Replace…" msgstr "&Заменяне…" msgid "Find next" msgstr "&Следващо съвпадение" msgid "Find previous" msgstr "&Предишно съвпадение" msgid "Find and Replace…" msgstr "Търсене и замяна…" msgid "Find Next" msgstr "&Следващо съвпадение" msgid "Find Previous" msgstr "&Предишно съвпадение" msgid "Show string &ID" msgstr "Показване на &идентификатора на текста" msgid "Show String &ID" msgstr "Показване на &идентификатора на текста" msgid "Show warnings" msgstr "Показване на предупрежденията" msgid "Show Warnings" msgstr "Показване на предупрежденията" msgid "Sort by &file order" msgstr "Сортиране по &файл" msgid "Sort by &File Order" msgstr "Сортиране по &файл" msgid "Sort by &source" msgstr "Сортиране по &изходен текст" msgid "Sort by &Source" msgstr "Подреждане по &изходен текст" msgid "Sort by &translation" msgstr "Сортиране по &превод" msgid "Sort by &Translation" msgstr "Сортиране по &превод" msgid "&Group by context" msgstr "&Групиране по контекст" msgid "&Group By Context" msgstr "&Групиране по контекст" msgid "Entries with errors first" msgstr "Преводите с грешки първи" msgid "Entries with Errors First" msgstr "Преводите с грешки първи" msgid "&Untranslated entries first" msgstr "Н&епреведените първи" msgid "&Untranslated Entries First" msgstr "Н&епреведените първи" msgid "&Show code occurrences" msgstr "Показване на &срещанията в кода" msgid "&Show Code Occurrences" msgstr "Показване на &срещанията в кода" msgid "Show sidebar" msgstr "&Показване на странична лента" msgid "Show status bar" msgstr "Показване на лента за състоянието" msgid "&Translation" msgstr "&Превод" msgid "&Update from source code" msgstr "Обновяване от &изходния код" msgid "&Update from Source Code" msgstr "Обновяване от &изходния код" msgid "Update from &POT file…" msgstr "Обновяване от &файл POT…" msgid "Update from &POT File…" msgstr "Обновяване от &файл POT…" msgid "Sync with Crowdin" msgstr "Синхронизиране с Crowdin" msgid "Pre-&translate…" msgstr "Предварителен &превод…" msgid "&Validate translations" msgstr "&Валидиране на превода" msgid "&Validate Translations" msgstr "&Валидиране на превода" msgid "Remove Same-as-Source Translations" msgstr "Премахване на преводите, които са еднакви с оригиналния низ" msgid "&Purge deleted translations" msgstr "&Прочистване на изтрити преводи" msgid "&Purge Deleted Translations" msgstr "&Прочистване на изтрити преводи" msgid "&Properties…" msgstr "&Свойства…" msgid "&Go" msgstr "О&бхождане" msgid "&Done and next" msgstr "&Готово, към следващия" msgid "&Done and Next" msgstr "&Готово, към следващия" msgid "Previously edited" msgstr "Последно променяни" msgid "Previously Edited" msgstr "Последно променяни" msgid "&Previous translation" msgstr "&Предишен низ" msgid "&Previous Translation" msgstr "&Предишен низ" msgid "&Next translation" msgstr "&Следващ низ" msgid "&Next Translation" msgstr "&Следващ низ" msgid "P&revious unfinished" msgstr "П&редишен незавършен" msgid "P&revious Unfinished" msgstr "П&редишен незавършен" msgid "Ne&xt unfinished" msgstr "С&ледващ незавършен" msgid "Ne&xt Unfinished" msgstr "С&ледващ незавършен" msgid "Previous plural form" msgstr "Предишна форма за мн. ч." msgid "Previous Plural Form" msgstr "Предишна форма за мн. ч." msgid "Next plural form" msgstr "Следващата форма за мн. ч." msgid "Next Plural Form" msgstr "Следващата форма за мн. ч." msgid "&Online help" msgstr "Он&лайн помощ" msgid "&Online Help" msgstr "Он&лайн помощ" msgid "&GNU gettext manual" msgstr "&Ръководство на GNU gettext" msgid "&GNU gettext Manual" msgstr "&Ръководство на GNU gettext" msgid "&About Poedit" msgstr "&Относно Poedit" msgid "&About" msgstr "&Относно" msgid "Extractor setup" msgstr "Настройка на извличане" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Списък на разширенията разделени с „;“ (напр. *.cpp; *.h):" msgid "Invocation:" msgstr "Извикване:" msgid "Command to extract translations:" msgstr "Команда за извличане на низове:" 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 – със знаковия набор на анализатора (виж по-долу)." msgid "An item in keywords list:" msgstr "Елемент от списъка с ключови думи:" msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Това ще бъде добавено по веднъж за всяка ключова дума\n" "към командния ред. %k се замества с ключовата дума." msgid "An item in input files list:" msgstr "Елемент от списъка с входящи файлове:" #, 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 се замества с името на файла." msgid "Source code charset:" msgstr "Знаков набор на изходния код:" #, 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 се замества със знаковия набор." msgid "Translation Properties" msgstr "Свойства на превода" msgid "Project name and version:" msgstr "Име и версия на проекта:" msgid "Language team:" msgstr "Екип преводачи:" msgid "Plural forms:" msgstr "Форми за множествено число:" msgid "Use default rules for this language" msgstr "Според &стандартните правила" msgid "Use custom expression" msgstr "Специфичен &израз" msgid "Learn about plural forms" msgstr "Повече за множествените форми" msgid "Charset:" msgstr "Знаков набор:" msgid "Advanced Extraction Settings…" msgstr "Разширени настройки за извличане…" msgid "Advanced extraction settings…" msgstr "Разширени настройки за извличане…" msgid "Translation properties" msgstr "Свойства на превода" msgid "Sources Paths" msgstr "Пътища за претърсване" msgid "Sources paths" msgstr "Пътища за претърсване" msgid "Extract text from source files in the following directories:" msgstr "Извличане на низове от изходните файлове в следните папки:" msgid "Base path:" msgstr "Основен път:" msgid "Sources Keywords" msgstr "Ключови думи в изходния код" msgid "Sources keywords" msgstr "Ключови думи в изходния код" msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Ключови думи (имена на функции) за разпознаване на текстове\n" "с превод във файловете с изходен код:" msgid "Also use default keywords for supported languages" msgstr "" "Също така да бъдат ползвани ключовите думи по подразбиране за поддържаните " "езици" msgid "Learn about gettext keywords" msgstr "Повече за ключовите думи на GNU gettext" msgid "Update summary" msgstr "Резюме" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" "Тези низове са намерени в изходния код, но не и във файла.\n" "Poedit ще ги добави към него." msgid "New strings" msgstr "Добавени" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" "Тези низове вече не присъстват в изходния код.\n" "Poedit ще ги премахне от файла." msgid "Obsolete strings" msgstr "Неизползвани" msgid "(0 new, 0 obsolete)" msgstr "(0 нови, 0 неизползвани)" msgid "Open" msgstr "" msgid "Open file" msgstr "Отваряне на файл" msgid "Save file" msgstr "Запазване на файл" msgid "Validate" msgstr "&Валидиране" msgid "Check for errors in the translation" msgstr "Проверяване за грешки в превода" msgid "Update from code" msgstr "Обновяване от кода" msgid "Update from Code" msgstr "Обновяване от кода" msgid "Update from source code" msgstr "Актуализиране от изходния код" msgid "Sidebar" msgstr "Странична лента" msgid "Show or hide the sidebar" msgstr "Показва или скрива страничната лента" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. msgid "Previous source text" msgstr "Предишен изходен текст" msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "Старият изходен текст (преди промяната при обновяване), на който съответства " "вече неточния превод." msgid "Notes for translators" msgstr "Бележки към преводача" msgid "Comment" msgstr "Коментар" msgid "Add comment" msgstr "Добавяне на коментар" msgid "Add Comment" msgstr "Добавяне на коментар" msgid "Delete From Translation Memory" msgstr "Изтриване от паметта с преводи" msgid "Delete from translation memory" msgstr "Изтриване от паметта с преводи" msgid "Translation suggestions" msgstr "Предложения за превод" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). msgid "No matches found" msgstr "Няма съвпадения" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). msgid "No Matches Found" msgstr "Няма съвпадения" msgid "This string was found in Poedit’s translation memory." msgstr "Низ от паметта с преводи на Poedit." msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "Предложенията за превод се нуждаят от реален изходен текст. Те не могат да " "работят, ако във файла има само текстови идентификатори." msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "За използването на предложения за превод трябва да е ясно кой е изходният " "език на текста. Poedit не може да го разпознае в този файл." msgid "The TMX file is malformed." msgstr "Файлът TMX е повреден или неправилно форматиран." msgid "No translations were found in the TMX file." msgstr "Във файла на TMX не са отрити преводи." #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Базата данни на паметта с преводи е повредена: %s (%d)." #, c-format msgid "Translation memory error: %s (%d)." msgstr "Грешка в паметта с преводи: %s (%d)." msgid "Cannot create temporary directory." msgstr "Временната папка не може да бъде създадена." msgid "There are no translations. That’s unusual." msgstr "Няма низове за превод. Това е необичайно." msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "Translators typically use PO template files (POTs) prepared for them by the " "developer." msgstr "" "Низовете за превод не се добавят ръчно в Gettext, а се извличат автоматично " "от изходния код.\n" "По този начин те са винаги обновени и точни.\n" "Обикновено преводачите използват шаблони PO (POT) приготвени за тази цел от " "разработчика." msgid "(Learn more about GNU gettext)" msgstr "(Научете повече за GNU gettext)" msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "Най-лесния начин за попълване на файла с преводи е да бъде обновен от файл " "на POT:" msgid "Update from POT" msgstr "Актуализация от &файл POT" msgid "Take translatable strings from an existing POT template." msgstr "Използване на изходни низове от съществуващ шаблон POT." msgid "" "You can also extract translatable strings directly from the source code:" msgstr "Може да извличате низове за превод директно от изходен код:" msgid "Extract from sources" msgstr "Актуализация от &изходен код" msgid "Configure source code extraction in Properties." msgstr "Настройка на извличане от изходен код." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #, c-format msgid "Version %s" msgstr "Версия %s" msgid "Create new" msgstr "Създаване на нов" msgid "Create new translation from POT template." msgstr "Създаване на нов превод от шаблон на POT." msgid "Browse files" msgstr "Разглеждане на файлове" msgid "Open and edit translation files." msgstr "Отваряне и редактиране на файлове с преводи." msgid "Translate cloud project" msgstr "Превеждане на облачния проект" msgid "Collaborate with other people online." msgstr "Работете съвместно с други хора в Интернет." msgid "Recent files" msgstr "Последно отваряни файлове" msgid "Sync" msgstr "Синхронизиране" 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") #, c-format msgid "About %s" msgstr "Относно %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #, c-format msgid "%s Preferences" msgstr "Настройки на %s" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "Услуги" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "Скриване на %s" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "Скриване на всички останали" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "Показване на всички" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "Изход от %s" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "Настройки…" msgid "Preferences..." msgstr "Предпочитания..." #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "Последни" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "Често използвани" msgid "&Apply" msgstr "&Прилагане" msgid "Apply" msgstr "Прилагане" msgid "&Back" msgstr "&Назад" msgid "Back" msgstr "Назад" msgid "&Cancel" msgstr "&Отказ" msgid "&Clear" msgstr "&Изчистване" msgid "Clear" msgstr "Изчистване" msgid "Copy" msgstr "Копиране" msgid "Cu&t" msgstr "&Изрязване" msgid "Cut" msgstr "Изрязване" msgid "Edit" msgstr "&Редактиране" msgid "&Quit" msgstr "Из&ход" msgid "Help" msgstr "Помощ" msgid "&New" msgstr "&Нов" msgid "New" msgstr "&Добавяне" msgid "&No" msgstr "&Не" msgid "No" msgstr "Не" msgid "&OK" msgstr "&Добре" msgid "Open…" msgstr "Отваряне…" msgid "&Open..." msgstr "&Отваряне…" msgid "Open..." msgstr "Отваряне…" msgid "&Paste" msgstr "По&ставяне" msgid "Paste" msgstr "Поставяне" msgid "Preferences" msgstr "Настройки" msgid "&Redo" msgstr "&Повтаряне" msgid "Refresh" msgstr "Опресняване" msgid "&Save as" msgstr "Запазване &като" msgid "Save as" msgstr "Запазване като" msgid "Select &All" msgstr "Избор на &всичко" msgid "Select All" msgstr "Избор на &всичко" msgid "&Undo" msgstr "&Отмяна" msgid "&Yes" msgstr "&Да" msgid "Yes" msgstr "Да" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "Нагоре" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "Надолу" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "Наляво" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "Надясно" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "shift" poedit-3.5/locales/fr.mo0000644000175100001770000017340314664354153012202 00000000000000|+: : :&:?:<S::J:g: V;`; o;y; ;;;;;;;;;;;;;;<<<0<B<H<M<U<]<o<<< < <<<< <<<<==0=L=R=X=a=g=p== = = ====>>7>N>e>k>p>>>>>> ? ???'?0? 4? @? L?Y? h?t? ? ?? ?? ???@@&@F@c@@ @ @1@@'@A.A HASA7YA6AA)AB B]"BB<BDB$C:C ACNCC C"CD+"D)ND xDDDDDDDDEE#4EXEmE|E EE EEEEEE%EF +FLFTF]FuF FF/F FkFXG]GpGGGG-G1G.H GHRH)iHH HYHI!I&I9ILIaIeI|IIIIIII;J CJ'PJ^xJLJ?$K dK rKK*KKK"K5K.LILdLjL}L L L L L LLLLLLLfMlMMuM(N?NRN"dNN NNN N NNN0N'OAO#VO<zO"OO OO*P03P!dP'PPPP(PTQ fQtQ yQ QQQQQ Q Q Q RR!R0RJRRRcR lRxR RRR R RRRRRRSz/TT TTT TT U2(U[UuU|UUU UU U U V!V&V;^D^Y^n^^^._4_J_=P__1__n_E[```;` ` aa@,amacb,#c,Pc}c cc2c*c ddwdj$e eeee%ee ff3fEfWf qffffffff8f g gg$g ,g 8g DgRg"Yg"|gg g gg g(ghhz'hhhhh h h h hh h i i i ,i 8iCi^ioi"iiii i ij jj$j -j:jTjdjtj j jjjj jjj!k *k8k@kHkQk Ykgkkkkkk k k kk ll.lBlRlgl|lmm 4m@mOmbm smm mmKmmn n%n:nMncn1nn n nn=ioo'p,p(>pgp op}p+pp p8p" q/q@qrCr8brrs8*t1ctRtctQLuu'u:ulvPv-vCwALwKw0w. x:x!x)x-y+Cy8oyCyuy,bzLz;z]{v{Z{gW|J|c }[n}o}:~7~m_[HN^Xp ف72("[~~łqDɃRVj o ȄЄӄ ڄ"$-F_p<Ѕ #$@eˆ#V cz ч. ;GPhHl5m7Y 3aω16;?\.a ͊ 1J!Z| #/,BoG΍S7 ǎю  !)2: BMe } ͏׏  )>SX\k z Ґ## D M X cp!!Ƒޑ " ".#Q#u ˒֒ڒ  5V&f ƓΓ'$9^p"”ڔ$#-Q$Z!$ƕPa+f4*ǖ ??F,?{ IY1H zK S/a+7.$8Um" ') 4(T}Ϝ 1,J w( ͝'ܝ %?F  "4Wk(<@)2\c<&i_el"ɡ-С &/&HoC-2PJ Tgz<Ȥ٤.ݤC (P(yɥ+> Q ^js{{  4U>֧ $60[èۨH!j5-۩' 1 P\4x@+;V ^%;y[ks !ݬ2L_rĭ ߭  .J"e5E &*Qh&{P  8Yl  Ͳײ:-+Ys )(5PKWJG:(#c ĶͶ  !-FO+W+¸۸,lD+й4;1"m32ĺ),.%!G.Z"%Ҽ$ D NX`f}ɽg%nS;!Ac[C!KKm$N(Hq8^1 33,`sz  1B._->GOm$v J &; P]/e/  .C(T}3< COdy,*?j&4&*/8K ^jy ~& %@\z'8Kg x  (CWj$ 2FYmet2K%g< J~ '*9-g j=w+ZED9I5`)|n,v0Ax|- H:BT60R,9/f61?@?5_DKuf[~j_|Ic*Hte`f-v &6IQI.&;Vp TYm-u ,4@(u($ E `n\114%f#&$:07sh" # .O,e:3`7XBq @ D"#*3^v -45nCv#=ld B@Twa QjqO 91B)aT'ZSFQYu>"/VJZsG6*[ar`^;XyVb?' <IL:x%AMZ\W88O,*d0)i{J-yK|]:c%}oo0][-Pg6YS&r(\p@X(tM?iE=eD"OU|53 w  fj,#32H 4[ pk {qke;mpgl16U85:`, +Y^L9$qz2fGu(A7N4!d0DNt{F<x_+7vX)nKG+>&9m3 LeUIN Iy E"nsk/<W>PhrVvT]cQmuR$bjD !_@xEl%WK-_7MCwbz/|gcAB` zh~?SC^*tf=\h!H'P#RiF&;$H1~.2 RsJo}.} .~ (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd AccountAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add accountAdd 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 languagesAlt+Always 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 errorCrowdin is an online localization management platform and collaborative translation tool.Ctrl+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 againDownDownloading 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:EnterEnter 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 loading translation file “%s”.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export errorExport 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…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)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport from TMX…Import translation files…Importing translation memory from “%s” 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 CrowdinLeftLine %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 translations were found in the TMX file.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKObsolete stringsOneOnly 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 translation templateOpen...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 translationsQuitQuit %sReading file content failed with the following error: %sRecentRecent 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 FinderReviewRightSaveSave &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 languageServicesSet LanguageSet languageSettingsSettings…Shift+Show AllShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow summary after updating filesShow 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.These strings are no longer in the source code. Poedit will remove them from the file now.These strings were found in the sources but were not in the file. Poedit will add them to the file now.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 entries in the file are probably incorrect.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 errorUntransUpUpdateUpdate 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 the file failed. Click on 'Details >>' for details.Updating 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown 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: 2024-08-30 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 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&À 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(0 nouvelle, 0 obsolète)(En savoir plus sur GNU gettext)(Nouvelle : %i, obsolète : %i)(Utiliser la langue par défaut)(non connecté)(nécessite Windows 8 ou plus récent)< &PrécédentÀ propos de %sCompteComptesAjouterAjouter un compteAjouter un commentaireAjouter des fichiers…Ajouter des dossiers…Ajouter un projetAjouter un caractère générique…Ajouter un compteAjouter 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 chargeAlt+Toujours activer la zone de saisie du texteUn élément de la liste des fichiers d’entrée :Un élément de la liste des mots clés :ApparenceAppliquerÊ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 traductionFermerNuageOccurrences dans le codeOccurrences dans le codeCollaborez 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 plates-formes de localisation cloud prises en charge pour synchroniser 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 la localisation en ligne et un outil de traduction collaboratif.Ctrl+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.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 afficherBasTé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 en HTML…ModifierModifier le &commentaireModifier le &commentaireModifier le commentaireModifier le commentaireModifier le projetModifier le projetModificationModifier…E-mail :EntréePasser 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 lors du chargement du fichier de traduction « %s ».Erreur à l'ouverture du fichierErreur d’enregistrement du fichierErreur lors du chargement du fichier XLIFF : %sErreursToutChemins exclusExportation vers un TMX…Exporter en tant que…Erreur d’exportationExporter en HTML…Exportation vers un TMX…L’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…Installation de l’extracteurExtracteursÉchec de la commande : %sÉchec de la communication avec le processus Poedit.Impossible de charger le 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.Finalisation…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é)FréquentGNU gettextGénéralFichiers HTMLAideMasquer %sMasquer le resteMasquer 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…Erreur d’importationImporter un TMX…Importer les fichiers de traduction…L’importation de la mémoire de traduction à partir de « %s » a échoué.Importation des traductions…Dans : %sInclure les versions bêtaIncohérence majuscule/minusculeEspace incohérentInformations sur le traducteurInstallerFichier non valideAppel :Fichiers 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 CrowdinGaucheLa 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…Nouveau à partir d’un fichier &POT/PO…Nouvelles chaînesForme 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 traduction n’a été trouvée dans le fichier TMX.Aucune information d’utilisationToutes les formes plurielles ne sont pas traduites.Non autorisé, veuillez vous connecter à nouveau.Notes pour les traducteursOKChaînes obsolètesUnÀ 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 modèle de traductionOuvrir...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.Il manque l‘espace réservé « %s » de la traduction.Exactitude des espaces réservésVeuillez 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éesQuitterQuitter %sLa lecture du contenu du fichier a échoué avec l‘erreur suivante : %sRécentFichiers récentsRefaireActualiserRecharger le fichierRecharger le fichierRestant : %dRetirerRetirer les traductions identiques à la sourceRetirer les traductions identiques à la sourceRemplacerRemplacer &tout&Tout remplacerChaîne de remplacementRemplacer…L’en-tête requise Plural-Forms est absente.Réinitialiser Ré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éviserDroiteEnregistrerEnregistrer &sous…Enregistrer &sous…Enregistrer quand mêmeEnregistrer quand mêmeEnregistrer sousEnregistrer sous…Enregistrer les modificationsEnregistrer le fichierCaptures 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érenceServicesDéfinir la langueDéfinir la langueParamètresParamètres…Maj+Tout afficherAfficher 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 le résumé après la mise à jour des fichiersAfficher les avertissementsPanneau latéralSe connecterSe déconnecterSe connecterSe connecter à %sConnectez-vous au compte CloudConnectez-vous sur CrowdinConnectez-vous au compte CloudSe déconnecterSingulierCopier/coller intelligent Tirets 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 à rechercherSubstitutionsSuggestionsLes 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.Espace réservé superflu « %s » qui n‘est pas dans le texte source.Supporte 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 » 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.Ces chaînes ne sont plus dans le code source. Poedit les supprimera du fichier maintenant.Ces chaînes ont été trouvées dans les sources mais ne sont pas dans le fichier. Poedit les ajoutera maintenant au fichier.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.C'est 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 au système Gettext, mais sont extraites automatiquement à partir du code source. De cette façon, elles restent à jour et exactes. Les traducteurs utilisent généralement des fichiers de modèle PO (POTs) préparés 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 traductionLes entrées de traduction dans le fichier sont probablement incorrectes.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é)AnnulerUne exception non gérée s'est produite : %sUnix (recommandé)Erreur Crowdin inconnue.Erreur inconnueNon traduitHautMettre à jourTout 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 à jourLa mise à jour du fichier a échoué. Cliquez sur « Détails >> » pour en savoir plus.Mise à 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 %sEn attente d'authentification...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 XLIFFOuiVous 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éroAgrandiraltÀ réviserctrlne pas supprimer les fichiers temporaires (à des fins de débogage)p. ex. nplurals=2; plural=(n > 1);remplissage approx. dans le fichieraller à l’élément à la ligne donnéegérer un URI poedit://pré-traduire avec la MTmajlangue inconnueversion non prise en charge (%s)vous@example.com« %s » n’est pas un fichier POT valide.poedit-3.5/locales/is.po0000644000175100001770000020172014664354153012203 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "Fela þessi skilaboð" msgid "Don’t Show Again" msgstr "Ekki birta aftur" msgid "Don’t show again" msgstr "Ekki birta aftur" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(Nýtt: %i, úrelt: %i)" msgid "Collecting source files…" msgstr "Safna upprunaskrám…" msgid "Extracting translatable strings…" msgstr "Næ í þýðanlega strengi…" msgid "Failed to load file with extracted translations." msgstr "Mistókst að hlaða inn skrá með innlesnum þýðingum." msgid "Merging differences…" msgstr "Samþætti mismun…" msgid "Updating translations" msgstr "Uppfæri þýðingar" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "Skrána “%s” var ekki hægt að opna." msgid "Invalid file" msgstr "Ógild skrá" #, c-format msgid "Malformed header: “%s”" msgstr "Rangt formaður haus: “%s”" msgid "PO Translation Files" msgstr "PO þýðingaskrár" msgid "POT Translation Templates" msgstr "POT þýðingasniðmát" msgid "XLIFF Translation Files" msgstr "XLIFF-þýðingaskrár" msgid "JSON Translation Files" msgstr "JSON-þýðingaskrár" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "Flutter-þýðingaskrár" msgid "All Translation Files" msgstr "Allar þýðingaskrár" msgid "The file is in a format not recognized by Poedit." msgstr "Skráin er ekki á sniði sem Poedit þekkir." 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." #, c-format msgid "Reading file content failed with the following error: %s" msgstr "Mistókst að lesa efni skrárinnar með eftirfarandi villumeldingu: %s" #, 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." #, c-format msgid "Couldn’t save file %s." msgstr "Gat ekki vistað skrána %s." msgid "Screenshots:" msgstr "Skjámyndir:" #, 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." #, 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)." msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "Skemmd PO-þýðingaskrá: eintöluform msgstr notað með msgid_plural" msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "Skemmd PO-þýðingaskrá: fleirtöluform msgstr notað án msgid_plural" msgid "Couldn’t load the file, it is probably damaged." msgstr "Get ekki hlaðið inn skránni, líklega er hún skemmd." 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." 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)." #, 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ð." msgid "Error saving file" msgstr "Villa við að vista skrá" #, c-format msgid "“%s” is not a valid POT file." msgstr "“%s\" er ógild POT skrá." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Villa við að hlaða inn XLIFF-skrá: %s" #, 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 msgid "Broken markup in translation string." msgstr "Skemmd skilgreining í þýðingarstreng." msgid "(Use default language)" msgstr "(Nota sjálfgefið tungumál)" msgid "Language selection" msgstr "Velja tungumál" msgid "Select your preferred language" msgstr "Veldu aðaltungumálið þitt" msgid "You must restart Poedit for this change to take effect." msgstr "Þú þarft að endurræsa Poedit til að þessi breyting taki gildi." msgid "Add Account" msgstr "Bæta við notandaaðgangi" msgid "Add account" msgstr "Bæta við notandaaðgangi" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "Læra meira um %s" 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." msgid "How does cloud sync work?" msgstr "Hvernig virkar samstilling við tölvuský?" msgid "Account" msgstr "Aðgangur" msgid "(not signed in)" msgstr "(Ekki skráð/ur inn)" msgid "File" msgstr "Skrá" msgid "Open cloud translation" msgstr "Opna þýðingu á tölvuskýi" msgid "Manage accounts" msgstr "Sýsla með aðganga" msgid "Project:" msgstr "Verkefni:" msgid "Language:" msgstr "Tungumál:" msgid "Sign in to Cloud Account" msgstr "Skrá inn á tölvuskýsaðgang" msgid "Sign in to cloud account" msgstr "Skrá inn á tölvuskýsaðgang" msgid "No translation projects listed in your account." msgstr "Engin þýðingarverkefni eru skráð á aðgangnum þínum." msgid "Downloading latest translations…" msgstr "Sæki nýjustu þýðingar…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #, c-format msgid "Sign in to %s" msgstr "Skrá inn í %s" msgid "Syncing" msgstr "Samstilling" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, 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. #, c-format msgid "Uploading translations to %s failed." msgstr "Innsending þýðinga á %s mistókst." msgid "Syncing error" msgstr "Villa í samstillingu" msgid "Add" msgstr "Bæta við" msgid "Unknown Crowdin error." msgstr "Óþekkt Crowdin-villa." msgid "Not authorized, please sign in again." msgstr "Ekki leyfilegt, skráðu þig aftur inn." msgid "Downloading translations is disabled in this project." msgstr "Ekki er hægt að sækja þýðingar í þessu verki." msgid "Sign In" msgstr "Skrá inn" msgid "Sign in" msgstr "Skrá inn" msgid "Sign Out" msgstr "Skrá út" msgid "Sign out" msgstr "Skrá út" msgid "Learn more about Crowdin" msgstr "Fræðast meira um Crowdin" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" "Crowdin er staðfærslu- og þýðingakerfi á netinu, sem hjálpar til við " "samstarf þýðenda og umsýslu." msgid "Waiting for authentication…" msgstr "Bíð eftir auðkenningu…" msgid "Updating user information…" msgstr "Uppfæri upplýsingar um notanda…" msgid "Sign in to Crowdin" msgstr "Skrá inn í Crowdin" msgid "Syncing with Crowdin failed." msgstr "Samstilling við Crowdin mistókst." msgid "Crowdin error" msgstr "Villa í Crowdin" msgid "Uploading translations…" msgstr "Sendi inn þýðingar…" msgid "&Copy" msgstr "&Afrita" msgid "Learn more" msgstr "Vita meira" msgid "&Help" msgstr "&Hjálp" msgid "MO files can’t be directly edited in Poedit." msgstr "Ekki er hægt að vinna beint með MO-skrár í Poedit." msgid "Error opening file" msgstr "Villa við að opna skrá" 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ð." msgid "don’t delete temporary files (for debugging)" msgstr "ekki eyða bráðabirgðaskrám (fyrir aflúsun)" msgid "handle a poedit:// URI" msgstr "meðhöndla poedit:// URI" msgid "go to item at given line number" msgstr "fara á atriði á tilteknu línunúmeri" msgid "Failed to communicate with Poedit process." msgstr "Gat ekki átt samskipti við Poedit-ferli." #, c-format msgid "Unhandled exception occurred: %s" msgstr "Ómeðhöndlað frávik kom upp: %s" msgid "Select translation template" msgstr "Veldu sniðmát þýðingar" msgid "Select translation file" msgstr "Veldu þýðingaskrá" msgid "Poedit is an easy to use translation editor." msgstr "Poedit er auðveldur þýðingaritill." msgid "You can’t drop more than one file on Poedit window." msgstr "Þú getur ekki sleppt fleiri en einni skrá í Poedit glugga." #, c-format msgid "File “%s” is not a translation file." msgstr "Skráin “%s” er ekki þýðingaskrá." #, c-format msgid "File “%s” doesn’t exist." msgstr "Skráin '%s' finnst ekki." 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". #, 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." msgid "Install" msgstr "Setja upp" #, c-format msgid "The file “%s” has been changed by another application." msgstr "Skránni “%s” hefur verið breytt af öðru forriti." msgid "Reload file" msgstr "Endurlesa skrá" 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." msgid "Ignore" msgstr "Hunsa" msgid "Reload File" msgstr "Endurlesa skrá" msgid "The file has been modified. Do you want to save changes?" msgstr "Skránni hefur verið breytt. Viltu vista breytingarnar?" msgid "Save changes" msgstr "Vista breytingar" msgid "Your changes will be lost if you don’t save them." msgstr "Breytingar tapast ef þú vistar þær ekki." msgid "Save" msgstr "Vista" msgid "Do&n’t save" msgstr "Ekki vista" msgid "Don’t Save" msgstr "Ekki vista" 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." msgid "Cancel" msgstr "Hætta við" msgid "Save Anyway" msgstr "Vista samt" msgid "Save anyway" msgstr "Vista samt" msgid "Save as…" msgstr "Vista sem…" msgid "Compile to…" msgstr "Vistþýða í…" msgid "Compiled Translation Files" msgstr "Vistþýddar þýðingaskrár" msgid "Export to HTML…" msgstr "Flytja út í HTML…" msgid "HTML Files" msgstr "HTML skrár" #, c-format msgid "In: %s" msgstr "Í: %s" msgid "Source code not available." msgstr "Upprunakóði ekki tiltækur." msgid "Updating failed" msgstr "Uppfærsla mistókst" 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." msgid "Permission denied." msgstr "Aðgangi hafnað." 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. 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. 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'." msgid "Translation entries in the file are probably incorrect." msgstr "Færslur í þýðingaskránni eru líklega rangar." msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "" "Uppfærsla á þýðingaskrá mistókst. Ýttu á 'Meira>>' fyrir frekari upplýsingar." msgid "Open translation template" msgstr "Opna sniðmát þýðingar" #, 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." msgid "Validation results" msgstr "Niðurstöður prófunar" 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." msgid "The file was saved safely." msgstr "Skráin var sannlega vistuð." 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." 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" 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." 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." msgid "No problems with the translation found." msgstr "Engin vandamál fundust í þýðingunni." #, 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." msgid "The translation is ready for use." msgstr "Þýðingaminnið er tilbúið til notkunar." #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "Poedit lagaði sjálfkrafa ógilt efni í '%s' skránni." 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." msgid "Language of the translation isn’t set." msgstr "Tungumál þýðingar er ekki stillt." msgid "Set Language" msgstr "Settu inn tungumál" msgid "Set language" msgstr "Veldu tungumál" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." msgid "" "Suggestions are not available if the translation language is not set " "correctly. Other features, such as plural forms, may be affected as well." msgstr "" "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." msgid "Language of the translation is the same as source language." msgstr "Tungumál þýðingar er það sama og upprunatungumálið." msgid "Fix Language" msgstr "Laga tungumál" msgid "Fix language" msgstr "Laga tungumál" msgid "" "This 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." 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" msgid "Required header Plural-Forms is missing." msgstr "Höfuðstrenginn Plural-Forms vantar." #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Formvilla í Plural-Forms hauslínu (\"%s\")." msgid "Fix the Header" msgstr "Laga skráarhausinn" 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". #, 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.")" msgid "Review" msgstr "Yfirfara" msgid "Would you like to use English for source text?" msgstr "Myndir þú vilja nota ensku fyrir frumtexta?" #, 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" msgid "Load English" msgstr "Hlaða inn ensku" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Þýtt: %d af %d (%d %%)" #, c-format msgid "Remaining: %d" msgstr "Eftir: %d" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d villa" msgstr[1] "%d villur" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d færsla" msgstr[1] "%d færslur" msgid " (unsaved)" msgstr " (óvistað)" msgid " (modified)" msgstr " (breytt)" #, c-format msgid "Failed to update translation memory: %s" msgstr "Mistókst að uppfæra þýðingaminni: %s" msgid "Remove same-as-source translations" msgstr "Fjarlægja þýðingar sem eru eins og í uppruna" 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?" 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." msgid "Keep" msgstr "Halda" msgid "Remove" msgstr "Fjarlægja" msgid "Purge deleted translations" msgstr "Henda eyddum þýðingum" 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?" 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." msgid "Purge" msgstr "Henda" msgid "Copy from source text" msgstr "Afrita úr frumtexta" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "Hreinsa þýðingu" msgid "Clear Translation" msgstr "Hreinsa þýðingu" msgid "Edit comment" msgstr "Breyta athugasemd" msgid "Edit Comment" msgstr "Breyta athugasemd" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "Tilvik kóða" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "Tilvik kóða" msgid "Hide Sidebar" msgstr "Fela hliðarspjald" msgid "Show Sidebar" msgstr "Birta hliðarspjald" msgid "Hide Status Bar" msgstr "Fela stöðustiku" msgid "Show Status Bar" msgstr "Birta stöðustiku" msgid "String length in characters: translation | source" msgstr "Lengd strengs í stöfum: þýðing | frumtexti" msgid "String length in characters" msgstr "Lengd strengs í stöfum" msgid "Source text" msgstr "Frumtexti" msgid "Singular" msgstr "Eintala" msgid "Plural" msgstr "Fleirtala" msgid "Translation" msgstr "Þýðing" msgid "Pre-translated" msgstr "Forþýtt" 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. msgid "Needs work" msgstr "Þarfnast lagfæringa" msgid "" "POT files are only templates and don’t contain any translations themselves.\n" "To make a translation, create a new PO file based on the template." msgstr "" "POT skrár eru aðeins þýðingasniðmát og innihalda engar þýðingar.\n" "Til að þýða verður að búa til nýja PO skrá byggða á sniðmátinu." msgid "Create new translation" msgstr "Búa til nýja þýðingu" msgid "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 msgid "Source text ID" msgstr "Auðkenni frumtexta" msgid "Everything" msgstr "Allt" #, c-format msgid "Form %i" msgstr "Form %i" #, c-format msgid "Form %i (unused)" msgstr "Form %i (ónotað)" msgid "Zero" msgstr "Núll" msgid "One" msgstr "Einn" msgid "Two" msgstr "Tveir" msgid "Other" msgstr "Annað" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, c-format msgid "String context: %s" msgstr "Samhengi strengs: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #, c-format msgid "String identifier: %s" msgstr "Auðkenni strengs: %s" #, c-format msgid "%s Format" msgstr "%s snið" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "%s snið" #, c-format msgid "Translation — %s" msgstr "Þýðing — %s" msgid "ID" msgstr "Auðkenni (ID)" #, c-format msgid "Source text — %s" msgstr "Frumtexti — %s" msgid "unknown language" msgstr "óþekkt tungumál" #, c-format msgid "Network error: %s (%d)" msgstr "Villa í netkerfi: %s (%d)" msgid "Unknown error" msgstr "Óþekkt villa" #, c-format msgid "Failed command: %s" msgstr "Mislukkuð skipun: %s" msgid "Failed to merge gettext catalogs." msgstr "Mistókst að sameina gettext þýðingaskrár." msgid "Open in Editor" msgstr "Opna í ritli" msgid "Open in editor" msgstr "Opna í ritli" 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." msgid "No usage information" msgstr "Engar upplýsingar um notkun" #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d tilvik kóða" msgstr[1] "%d tilvik kóða" msgid "Source code not found" msgstr "Grunnkóði fannst ekki" 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á." msgid "File cannot be opened" msgstr "Ekki hægt að opna skrá" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "Poedit gat ekki “%s” skrána." msgid "Find" msgstr "Finna" msgid "Replace" msgstr "Skipta út" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "Valkostir" msgid "Ignore case" msgstr "Hunsa há/lágstafi" msgid "Wrap around" msgstr "Umbrjóta texta" msgid "Whole words only" msgstr "Aðeins stök orð" msgid "Find in source texts" msgstr "Finna í frumtextum" msgid "Find in translations" msgstr "Finna í þýðingum" msgid "Find in comments" msgstr "Finna í athugasemdum" msgid "Close" msgstr "Loka" msgid "Replace &All" msgstr "Skipt&a út öllu" msgid "Replace &all" msgstr "Skipt&a út öllu" msgid "&Replace" msgstr "Ski&pta út" msgid "< &Previous" msgstr "< &Fyrra" msgid "&Next >" msgstr "&Næsta >" msgid "String to find" msgstr "Finna streng" msgid "Replacement string" msgstr "Útskiptistrengur" #, c-format msgid "Cannot execute program: %s" msgstr "Ekki tókst að ræsa forrit: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "Heiti tungumáls eða kóði" msgid "Translation Language" msgstr "Tungumál þýðingar" msgid "Language of the translation:" msgstr "Tungumál þýðingar:" msgid "All strings" msgstr "Allir strengir" msgid "Couldn’t download Localazy project details." msgstr "Gat ekki sótt nánari upplýsingar um Localazy-verkefni." msgid "There was an error when uploading translations to Localazy." msgstr "Það kom upp villa við að senda þýðingar til Localazy." msgid "Projects" msgstr "Verkefni" 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." msgid "Add Project" msgstr "Bæta við verkefni" msgid "Add project" msgstr "Bæta við verkefni" msgid "Poedit - Catalogs manager" msgstr "Poedit - Þýðingaskráastjórn" msgid "Edit…" msgstr "Breyta…" msgid "Create new translations project" msgstr "Búa til nýtt þýðingarverkefni" msgid "Delete the project" msgstr "Eyða þýðingaverkefninu" msgid "Edit the project" msgstr "Breyta þýðingarverkefni" msgid "Update all" msgstr "Uppfæra allt" msgid "Update all catalogs in the project" msgstr "Uppfæra allar þýðingaskrár í verkefninu" msgid "Total" msgstr "Alls" msgid "Untrans" msgstr "Óþýtt" msgctxt "column/row header" msgid "Needs Work" msgstr "Þarfnast lagfæringa" msgid "Errors" msgstr "Villur" msgid "Last modified" msgstr "Síðast breytt" msgid "Select directory" msgstr "Veldu möppu" msgid "Directories:" msgstr "Möppur:" msgid "" msgstr "<ónefnt>" #, c-format msgid "Do you want to delete project “%s”?" msgstr "Viltu eyða “%s” verkefninu?" msgid "Delete project" msgstr "Eyða verkefni" msgid "Deleting the project will not delete any translation files." msgstr "Sé verkefninu eytt, eyðast engar þýðingaskrár." msgid "Confirmation" msgstr "Staðfesting" msgid "Update all catalogs in this project?" msgstr "Uppfæra allar þýðingaskrár í verkefninu?" msgid "Performs update from source code on all files in the project." msgstr "Uppfærir úr grunnkóða í allar skrár verkefnisins." msgid "Check for Updates…" msgstr "Athuga með uppfærslur…" msgid "Catalogs Manager" msgstr "Þýðingaskráastjórn" msgid "&Preferences…" msgstr "&Kjörstillingar…" msgid "&Edit" msgstr "Br&eyta" msgid "Undo" msgstr "Afturkalla" msgid "Redo" msgstr "Endurtaka" msgid "Paste and Match Style" msgstr "Líma og samsvara stíl" msgid "Delete" msgstr "Eyða" msgid "Spelling and Grammar" msgstr "Stafsetning og málfræði" msgid "Show Spelling and Grammar" msgstr "Birta stafsetningu og málfræði" msgid "Check Document Now" msgstr "Athuga skjal núna" msgid "Check Spelling While Typing" msgstr "Yfirfara stafsetningu á meðan skrifað er" msgid "Check Grammar With Spelling" msgstr "Yfirfara málfræði ásamt stafsetningu" msgid "Correct Spelling Automatically" msgstr "Leiðrétta stafsetningu sjálfvirkt" msgid "Substitutions" msgstr "Útskiptingar" msgid "Show Substitutions" msgstr "Birta útskiptingar" msgid "Smart Copy/Paste" msgstr "Snjöll afritun/líming" msgid "Smart Quotes" msgstr "Snjallar gæsalappir" msgid "Smart Dashes" msgstr "Snjöll strik" msgid "Smart Links" msgstr "Snjallir tenglar" msgid "Text Replacement" msgstr "Útskipting texta" msgid "Transformations" msgstr "Umbreytingar" msgid "Make Upper Case" msgstr "Gera allt að hástöfum" msgid "Make Lower Case" msgstr "Gera allt að lágstöfum" msgid "Capitalize" msgstr "Byrja öll orð á hástaf" msgid "Speech" msgstr "Tala" msgid "Start Speaking" msgstr "Hefja lestur" msgid "Stop Speaking" msgstr "Stöðva lestur" msgid "&View" msgstr "S&koða" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Show Toolbar" msgstr "Birta verkfærastiku" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item 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 msgid "Enter Full Screen" msgstr "Fylla skjáinn" msgid "Window" msgstr "Gluggi" msgid "Minimize" msgstr "Lágmarka" msgid "Zoom" msgstr "Aðdráttur" msgid "Welcome to Poedit" msgstr "Velkomin í Poedit" msgid "Bring All to Front" msgstr "Færa allt fremst" msgid "Information about the translator" msgstr "Upplýsingar um þýðandann" msgid "Name:" msgstr "Nafn:" msgid "Your Name" msgstr "Nafnið þitt" msgid "Email:" msgstr "Netfang:" msgid "you@example.com" msgstr "þú@dæmi.is" 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." msgid "Editing" msgstr "Vinnsla" msgid "Automatically compile MO file when saving" msgstr "Vistþýða sjálfkrafa MO-skrár við vistun" msgid "Show summary after updating files" msgstr "Birta samantekt eftur uppfærslu skráa" msgid "Check spelling" msgstr "Athuga stafsetningu" msgid "Always change focus to text input field" msgstr "Ávallt setja virkni á innsláttarreit" 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." msgid "Appearance" msgstr "Útlit" msgid "Use custom list font:" msgstr "Nota sérsniðið letur í listum:" msgid "Use custom text fields font:" msgstr "Nota sérsniðið letur í textareitum:" 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 msgid "(requires Windows 8 or newer)" msgstr "(krefst Windows 8 eða nýrra)" msgid "General" msgstr "Almennt" msgid "Use translation memory" msgstr "Nota þýðingaminni" msgid "Manage…" msgstr "Sýsla…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "Þegar frumtextar eru uppfærðir" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "nota loðna þýðingu í skrá" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "forþýða úr þýðingaminni" 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ð." msgid "Stored translations:" msgstr "Geymdar þýðingar:" msgid "Database size on disk:" msgstr "Stærð gagnagrunns á diski:" msgid "Import Translation Files…" msgstr "Flytja inn þýðingaskrár…" msgid "Import translation files…" msgstr "Flytja inn þýðingaskrár…" msgid "Import From TMX…" msgstr "Flytja inn úr TMX…" msgid "Import from TMX…" msgstr "Flytja inn úr TMX…" msgid "Export To TMX…" msgstr "Flytja út í TMX…" 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). msgid "Reset" msgstr "Endurstilla" msgid "Select translation files to import" msgstr "Veldu þær þýðingaskrár sem á að flytja inn" msgid "Translation Memory" msgstr "Þýðingaminni" msgid "Importing translations…" msgstr "Flyt inn þýðingar…" #, c-format msgid "Error loading translation file “%s”." msgstr "Villa við að hlaða inn þýðingaskrá: “%s”." msgid "Finalizing…" msgstr "Geng frá…" msgid "Select TMX files to import" msgstr "Veldu TMX-skrár til að flytja inn" msgid "TMX Files" msgstr "TMX-skrár" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "Innflutningur þýðingaminnis frá “%s” mistókst." msgid "Import error" msgstr "Villa í innflutningi" msgid "Export as…" msgstr "Flytja út sem…" msgid "Exporting translations…" msgstr "Flyt út þýðingar…" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "Útflutningur þýðingaminnis í “%s” mistókst." msgid "Export error" msgstr "Villa í útflutningi" msgid "Reset translation memory" msgstr "Núllstilla þýðingaminni" msgid "Are you sure you want to reset the translation memory?" msgstr "Ertu viss um að þú viljir núllstilla þýðingaminnið?" 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. msgid "TM" msgstr "Þýð.minni" 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." msgid "Custom Extractors:" msgstr "Sérsniðnir þáttarar:" msgid "Custom extractors:" msgstr "Sérsniðnir þáttarar:" msgid "GNU gettext" msgstr "GNU gettext" 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)." msgid "Delete extractor" msgstr "Eyða þáttara" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "Ertu viss um að þú viljir eyða “%s” þáttaranum?" msgid "Extractors" msgstr "Þáttarar" msgid "Accounts" msgstr "Aðgangar" msgid "Automatically check for updates" msgstr "Athuga sjálfvirkt með uppfærslur" msgid "Include beta versions" msgstr "Beta-útgáfur meðtaldar" 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." msgid "Updates" msgstr "Uppfærslur" 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." msgid "Line endings:" msgstr "Línuendingar:" msgid "Unix (recommended)" msgstr "Unix (mælt er með þessu)" msgid "Windows" msgstr "Gluggar" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "Umbrjóta við:" msgid "Preserve formatting of existing files" msgstr "Vernda snið fyrirliggjandi skráa" msgid "Advanced" msgstr "Ítarlegt" msgid "Settings" msgstr "Stillingar" msgid "Preparing strings…" msgstr "Undirbý strengi…" msgid "Pre-translating from translation memory…" msgstr "Forþýðir úr þýðingaminni…" #, 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" msgid "Pre-translating…" msgstr "Forþýðing…" 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. msgid "Pre-translate" msgstr "Forþýða" 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." msgid "Cannot pre-translate from unknown language." msgstr "Get ekki for-þýtt úr óþekktu tungumáli." 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á." msgid "Only fill in exact matches" msgstr "Einungis fylla inn nákvæmar samsvaranir" 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." msgid "Don’t mark exact matches as needing work" msgstr "Ekki merkja nákvæmar samsvaranir sem ófullgerðar" 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." 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." #, 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." 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." msgid "No entries could be pre-translated." msgstr "Ekki var hægt að forþýða neinar færslur." 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." msgid "Cancelling…" msgstr "Hætti við…" msgid "Drag Folders or Files Here" msgstr "Dragðu möppur eða skrár hingað" msgid "Drag folders or files here" msgstr "Dragðu möppur eða skrár hingað" msgid "Add Folders…" msgstr "Bæta við möppum…" msgid "Add folders…" msgstr "Bæta við möppum…" msgid "Add Files…" msgstr "Bæta við skrám…" msgid "Add files…" msgstr "Bæta við skrám…" msgid "Add Wildcard…" msgstr "Bæta við algildistákni…" msgid "Add wildcard…" msgstr "Bæta við algildistákni…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) msgid "Reveal in Finder" msgstr "Birta í Finder" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" msgid "Show in Explorer" msgstr "Birta í skráavafra" msgid "Show in Folder" msgstr "Birta í möppu" msgid "Paths" msgstr "Slóðir" msgid "Excluded paths" msgstr "Slóðir sem á að sleppa" msgid "Advanced extraction settings" msgstr "Ítarlegar þáttunarstillingar" msgid "Extract notes for translators from:" msgstr "Ná í minnispunkta fyrir þýðendur úr:" msgid "Comments prefixed with:" msgstr "Athugasemdir eru með forskeytinu:" msgid "All comments" msgstr "Allar athugasemdir" msgid "Additional xgettext flags:" msgstr "Viðbótar xgettext flögg:" msgid "Additional keywords" msgstr "Aukaleg stikkorð:" msgid "Name of the project the translation is for" msgstr "Heiti þýðingaverkefnis sem þýðingin er ætluð" msgid "Team name and email address or URL" msgstr "Heiti á teymi og tölvupóstfang eða vefslóð" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "t.d. nplurals=2; plural=(n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (mælt er með þessu)" 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." msgid "Placeholders correctness" msgstr "Áreiðanleiki frátökutákna" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "Frátökutáknið “%s” vantar í þýðinguna." #, c-format msgid "Superfluous placeholder “%s” that isn’t in source text." msgstr "Frátökutákninu “%s” er ofaukið og er ekki í upprunatexta." msgid "Plural form translations" msgstr "Fleirtöluform þýðinga" msgid "Not all plural forms are translated." msgstr "Ekki eru öll fleirtöluform þýdd." msgid "Inconsistent upper/lower case" msgstr "Ósamræmi í stafstöðu (hástafir/lágstafir)" msgid "The translation should start as a sentence." msgstr "Þýðingin ætti að byrja sem setning." msgid "The translation should start with a lowercase character." msgstr "Þýðingin ætti að byrja á lágstaf." msgid "Inconsistent whitespace" msgstr "Ósamræmi í bilstöfum" msgid "The translation doesn’t start with a space." msgstr "Þýðingin byrjar ekki á bili." msgid "The translation starts with a space, but the source text doesn’t." msgstr "Þýðingin byrjar með bili, en frumtextinn gerir það ekki." msgid "The translation is missing a newline at the end." msgstr "Þýðinguna vantar línuskiptitákn við endann." 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." msgid "The translation is missing a space at the end." msgstr "Þýðinguna vantar bil við endann." msgid "The translation ends with a space, but the source text doesn’t." msgstr "Þýðingin endar með bili, en frumtextinn gerir það ekki." msgid "Punctuation checks" msgstr "Athuganir á greinarmerkjum" #, c-format msgid "The translation should end with “%s”." msgstr "Þýðingin ætti að enda með “%s”." #, c-format msgid "The translation should not end with “%s”." msgstr "Þýðingin ætti ekki að enda með “%s”." #, 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”." msgid "Cloud" msgstr "Tölvuský" msgid "Clear Menu" msgstr "Hreinsa valmynd" msgid "Clear menu" msgstr "Hreinsa valmynd" msgid "Comment:" msgstr "Athugasemd:" msgid "Update" msgstr "Uppfæra" msgid "&Delete" msgstr "&Eyða" msgid "Delete the comment" msgstr "Eyða athugasemdinni" msgid "Edit project" msgstr "Breyta þýðingaverkefni" msgid "Project name:" msgstr "Heiti verkefnis:" msgid "Browse" msgstr "Velja" msgid "Add directory to the list" msgstr "Bæta möppu við á lista" msgid "OK" msgstr "Í lagi" msgid "&File" msgstr "&Skrá" msgid "&New…" msgstr "&Nýtt…" msgid "New from &POT/PO file…" msgstr "Nýtt úr &POT/PO skrá…" msgid "New From &POT/PO File…" msgstr "Nýtt úr &POT/PO skrá…" msgid "&Open…" msgstr "&Opna…" msgid "Open Recent" msgstr "Opna nýlegt" msgid "Open recent" msgstr "Opna nýlegt" msgid "Open cloud translation…" msgstr "Opna þýðingu á tölvuskýi…" msgid "Open Cloud Translation…" msgstr "Opna þýðingu á tölvuskýi…" msgid "&Start window" msgstr "Upphaf&sgluggi" msgid "&Start Window" msgstr "Upphaf&sgluggi" msgid "Catalogs &manager" msgstr "Þýðingas&kráastjórn" msgid "Catalogs &Manager" msgstr "Þýðingas&kráastjórn" msgid "&Close" msgstr "&Loka" msgid "&Save" msgstr "Vi&sta" msgid "Save &as…" msgstr "Vist&a sem..." msgid "Save &As…" msgstr "Vist&a sem..." msgid "Compile to MO…" msgstr "Vistþýða sem MO…" msgid "E&xport to HTML…" msgstr "&Flytja út í HTML…" msgid "Check for updates…" msgstr "Athuga með uppfærslur…" msgid "Settings…" msgstr "Stillingar…" msgid "&Preferences" msgstr "S&tillingar" msgid "E&xit" msgstr "&Hætta" msgid "Quit" msgstr "Hætta" msgid "Copy from singular" msgstr "Afrita úr eintölu" msgid "Copy From Singular" msgstr "Afrita úr eintölu" msgid "Translation needs &work" msgstr "Þýðin&g þarfnast lagfæringa" msgid "Translation Needs &Work" msgstr "Þýðin&g þarfnast lagfæringa" msgid "Edit &comment" msgstr "Breyta &athugasemd" msgid "Edit &Comment" msgstr "Breyta &athugasemd" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "Tillögur" msgid "&Find…" msgstr "&Finna…" msgid "Replace…" msgstr "Skipta út…" msgid "Find next" msgstr "Finna næsta" msgid "Find previous" msgstr "Finna fyrra" msgid "Find and Replace…" msgstr "Finna og skipta út…" msgid "Find Next" msgstr "Finna næsta" msgid "Find Previous" msgstr "Finna fyrra" msgid "Show string &ID" msgstr "Sýna &ID-auðkenni strengs" msgid "Show String &ID" msgstr "Sýna &ID-auðkenni strengs" msgid "Show warnings" msgstr "Birta aðvaranir" msgid "Show Warnings" msgstr "Birta aðvaranir" msgid "Sort by &file order" msgstr "Raða eftir s&kráaröð" msgid "Sort by &File Order" msgstr "Raða eftir s&kráaröð" msgid "Sort by &source" msgstr "Raða eftir &frumtexta" msgid "Sort by &Source" msgstr "Raða eftir &frumtexta" msgid "Sort by &translation" msgstr "&Raða eftir þýðingu" msgid "Sort by &Translation" msgstr "&Raða eftir þýðingu" msgid "&Group by context" msgstr "&Hópa eftir samhengi" msgid "&Group By Context" msgstr "&Hópa eftir samhengi" msgid "Entries with errors first" msgstr "Færslur með villum fyrst" msgid "Entries with Errors First" msgstr "Færslur með villum fyrst" msgid "&Untranslated entries first" msgstr "Óþýddar &færslur fyrst" msgid "&Untranslated Entries First" msgstr "Óþýddar &færslur fyrst" msgid "&Show code occurrences" msgstr "&Sýna tilvik kóða" msgid "&Show Code Occurrences" msgstr "&Sýna tilvik kóða" msgid "Show sidebar" msgstr "Birta hliðarspjald" msgid "Show status bar" msgstr "Birta stöðustiku" msgid "&Translation" msgstr "Þýðin&g" msgid "&Update from source code" msgstr "&Uppfæra úr grunnkóða" msgid "&Update from Source Code" msgstr "&Uppfæra úr grunnkóða" msgid "Update from &POT file…" msgstr "Uppfæra frá &POT skrá…" msgid "Update from &POT File…" msgstr "Uppfæra frá &POT skrá…" msgid "Sync with Crowdin" msgstr "Samstilla við Crowdin" msgid "Pre-&translate…" msgstr "F&or-þýða…" msgid "&Validate translations" msgstr "&Sannreyna þýðingar" msgid "&Validate Translations" msgstr "&Sannreyna þýðingar" msgid "Remove Same-as-Source Translations" msgstr "Fjarlægja þýðingar sem eru eins og í uppruna" msgid "&Purge deleted translations" msgstr "&Henda eyddum þýðingum" msgid "&Purge Deleted Translations" msgstr "&Henda eyddum þýðingum" msgid "&Properties…" msgstr "&Eiginleikar…" msgid "&Go" msgstr "&Fara" msgid "&Done and next" msgstr "&Lokið og næsta" msgid "&Done and Next" msgstr "&Lokið og næsta" msgid "Previously edited" msgstr "Áður breytt" msgid "Previously Edited" msgstr "Áður breytt" msgid "&Previous translation" msgstr "&Fyrri þýðing" msgid "&Previous Translation" msgstr "&Fyrri þýðing" msgid "&Next translation" msgstr "&Næsta þýðing" msgid "&Next Translation" msgstr "&Næsta þýðing" msgid "P&revious unfinished" msgstr "&Fyrri ókláruð" msgid "P&revious Unfinished" msgstr "&Fyrri ókláruð" msgid "Ne&xt unfinished" msgstr "&Næsta óklárað" msgid "Ne&xt Unfinished" msgstr "&Næsta óklárað" msgid "Previous plural form" msgstr "Fyrri fleirtala" msgid "Previous Plural Form" msgstr "Fyrri fleirtala" msgid "Next plural form" msgstr "Næsta fleirtala" msgid "Next Plural Form" msgstr "Næsta fleirtala" msgid "&Online help" msgstr "&Hjálp á netinu" msgid "&Online Help" msgstr "&Hjálp á netinu" msgid "&GNU gettext manual" msgstr "&GNU gettext handbók" msgid "&GNU gettext Manual" msgstr "&GNU gettext handbók" msgid "&About Poedit" msgstr "&Um Poedit" msgid "&About" msgstr "&Um forritið" msgid "Extractor setup" msgstr "Uppsetning þáttara" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Listi yfir skráaendingar aðskilið með semikommu (dæmi. *.cpp, *.h):" msgid "Invocation:" msgstr "Ræsing:" msgid "Command to extract translations:" msgstr "Skipun til að ná í þýðingar:" 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)." msgid "An item in keywords list:" msgstr "Atriði í lista yfir stikkorð:" 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." msgid "An item in input files list:" msgstr "Atriði í lista yfir inntaksskrár:" #, 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." msgid "Source code charset:" msgstr "Stafatafla frumkóða:" #, 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." msgid "Translation Properties" msgstr "Eiginleikar þýðingar" msgid "Project name and version:" msgstr "Nafn þýðingaverkefnis og útgáfunúmer:" msgid "Language team:" msgstr "Tungumálateymi:" msgid "Plural forms:" msgstr "Fleirtöluform:" msgid "Use default rules for this language" msgstr "Nota sjálfgefnar reglur fyrir þetta tungumál" msgid "Use custom expression" msgstr "Nota sérsniðna segð" msgid "Learn about plural forms" msgstr "Læra meira um fleirtöluform" msgid "Charset:" msgstr "Stafatafla:" msgid "Advanced Extraction Settings…" msgstr "Ítarlegar þáttunarstillingar…" msgid "Advanced extraction settings…" msgstr "Ítarlegar þáttunarstillingar…" msgid "Translation properties" msgstr "Eiginleikar þýðingar" msgid "Sources Paths" msgstr "Slóðir upprunaskráa" msgid "Sources paths" msgstr "Slóðir upprunaskráa" msgid "Extract text from source files in the following directories:" msgstr "Ná í texta úr upprunaskrám í eftirfarandi möppum:" msgid "Base path:" msgstr "Grunnslóð:" msgid "Sources Keywords" msgstr "Stikkorð upprunaskráa" msgid "Sources keywords" msgstr "Stikkorð upprunaskráa" 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:" msgid "Also use default keywords for supported languages" msgstr "Einnig nota sjálfgefin stikkorð fyrir studd tungumál" msgid "Learn about gettext keywords" msgstr "Læra meira um gettext lykilorð" msgid "Update summary" msgstr "Samantekt uppfærslu" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" "Þessir strengir fundust í kóða, en fundust ekki í þýðingaskrá\n" "Poedit mun nú bæta við þessum strengjum." msgid "New strings" msgstr "Nýir strengir" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" "Þessir strengir eru ekki lengur í upprunaskrám\n" "Poedit mun nú fjarlægja þessa strengi úr þýðingaskránni." msgid "Obsolete strings" msgstr "Úreltir strengir" msgid "(0 new, 0 obsolete)" msgstr "(0 nýjar, 0 úreltar)" msgid "Open" msgstr "" msgid "Open file" msgstr "Opna skrá" msgid "Save file" msgstr "Vista skrá" msgid "Validate" msgstr "Sannreyna" msgid "Check for errors in the translation" msgstr "Athuga með villur í þýðingum" msgid "Update from code" msgstr "Uppfæra úr kóða" msgid "Update from Code" msgstr "Uppfæra úr kóða" msgid "Update from source code" msgstr "Uppfæra úr grunnkóða" msgid "Sidebar" msgstr "Hliðarspjald" msgid "Show or hide the sidebar" msgstr "Birta eða fela hliðarspjald" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. msgid "Previous source text" msgstr "Fyrri frumtexti" 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ð." msgid "Notes for translators" msgstr "Minnispunktar fyrir þýðendur" msgid "Comment" msgstr "Athugasemd" msgid "Add comment" msgstr "Bæta við athugasemd" msgid "Add Comment" msgstr "Bæta við athugasemd" msgid "Delete From Translation Memory" msgstr "Eyða úr þýðingaminni" msgid "Delete from translation memory" msgstr "Eyða úr þýðingaminni" msgid "Translation suggestions" msgstr "Þýðingatillögur" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). msgid "No matches found" msgstr "Engar samsvaranir fundust" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). msgid "No Matches Found" msgstr "Engar samsvaranir fundust" msgid "This string was found in Poedit’s translation memory." msgstr "Þessi strengur fannst í þýðingaminni Poedit." 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." 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á." msgid "The TMX file is malformed." msgstr "TMX-skráin er gölluð." msgid "No translations were found in the TMX file." msgstr "Engar þýðingar fundust í TMX-skránni." #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Gagnagrunnur þýðingaminnis er skemmdur: %s (%d)." #, c-format msgid "Translation memory error: %s (%d)." msgstr "Villa í þýðingaminni: %s (%d)." msgid "Cannot create temporary directory." msgstr "Ekki tókst að búa til bráðabirgðamöppu." msgid "There are no translations. That’s unusual." msgstr "Það eru engar þýðingar. Mjög óvenjulegt." msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "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\n" "úr grunnkóða. Þannig eykst nákvæmni og þær eru alltaf uppfærðar.\n" "Þýðendur nota venjulega PO-sniðmát (POT) sem forritarar hafa útbúið fyrir þá." msgid "(Learn more about GNU gettext)" msgstr "(Læra meira um GNU gettext)" 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á:" msgid "Update from POT" msgstr "Uppfæra frá POT skrá" msgid "Take translatable strings from an existing POT template." msgstr "Taka þýðanlega strengi úr POT sniðmáti sem til er fyrir." msgid "" "You can also extract translatable strings directly from the source code:" msgstr "Þú getur líka náð í þýðanlega strengi beint úr grunnkóðanum:" msgid "Extract from sources" msgstr "Ná í úr frumkóða" 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 #, c-format msgid "Version %s" msgstr "Útgáfa %s" msgid "Create new" msgstr "Búa til nýtt" msgid "Create new translation from POT template." msgstr "Búa til nýja þýðingu út frá POT-sniðmáti." msgid "Browse files" msgstr "Fletta skrám" msgid "Open and edit translation files." msgstr "Opna og breyta þýðingaskrám." msgid "Translate cloud project" msgstr "Þýða verkefni á tölvuskýi" msgid "Collaborate with other people online." msgstr "Eigðu í samstarfi við aðra á netinu." msgid "Recent files" msgstr "Nýlegar skrár" msgid "Sync" msgstr "Samstilla" 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") #, 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. #, c-format msgid "%s Preferences" msgstr "Kjörstillingar %s" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "Þjónustur" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "Fela %s" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "Fela annað" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "Birta allt" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "Hætta í %s" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "Kjörstillingar…" msgid "Preferences..." msgstr "Stillingar..." #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "Nýlegt" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "Algengt" msgid "&Apply" msgstr "Virkj&a" msgid "Apply" msgstr "Virkja" msgid "&Back" msgstr "Til &baka" msgid "Back" msgstr "Til baka" msgid "&Cancel" msgstr "&Hætta við" msgid "&Clear" msgstr "Hre&insa" msgid "Clear" msgstr "Hreinsa" msgid "Copy" msgstr "Afrita" msgid "Cu&t" msgstr "&Klippa" msgid "Cut" msgstr "Klippa" msgid "Edit" msgstr "Breyta" msgid "&Quit" msgstr "&Hætta" msgid "Help" msgstr "Hjálp" msgid "&New" msgstr "&Nýtt" msgid "New" msgstr "Nýtt" msgid "&No" msgstr "&Nei" msgid "No" msgstr "Nei" msgid "&OK" msgstr "Í &lagi" msgid "Open…" msgstr "Opna…" msgid "&Open..." msgstr "&Opna..." msgid "Open..." msgstr "Opna..." msgid "&Paste" msgstr "&Líma" msgid "Paste" msgstr "Líma" msgid "Preferences" msgstr "Kjörstillingar" msgid "&Redo" msgstr "Endu&rtaka" msgid "Refresh" msgstr "Endurlesa" msgid "&Save as" msgstr "Vi&sta sem" msgid "Save as" msgstr "Vista sem" msgid "Select &All" msgstr "Velja &allt" msgid "Select All" msgstr "Velja allt" msgid "&Undo" msgstr "&Afturkalla" msgid "&Yes" msgstr "&Já" msgid "Yes" msgstr "Já" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "Upp" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "Niður" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "Vinstri" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "Hægri" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "shift" poedit-3.5/locales/uz.mo0000644000175100001770000010161414664354143012223 00000000000000 K$ $ $$$J$gB% %%% %%%%%%%& &&'&-&3&G&[&_&q&&&&&&&&& & &&& &''-'I'e'k'q'w''''''''' (*(B(Y( w( (((( ( ((((()' )5)R) l)w)7})6))) *6* ;*]F**D*$*!+(+"/+R+ m+x++++++++,#),M,\,b,t,,, ,, ,,/, *-7-<-O-e-x----- - ...+./.F.M.^. q.?~. . ...."/5'/]/c/ h/ v/ / / ////////0u000 00 0 00<1"@1c1 s1~1*101!1'272<2([2T22 2 2233 13 ;3 I3 V3c3r3333 333 3 33333 44 44 4 4 5;5L5i5 |5 555 555:5 .6<<6.y666666*7.747E7V78 8"838D8G8X8'i8%88888 88999$9,929G9\9q99:":8:>:nQ:E:; ;;@.;,o; ; ;;;%;;<$< ><L<U<[<v<{<<<< <<<(<<<z===== = = = ==="=>4>S> \> i>v>}> >>>> >> >???#?,?4?G?P?Y? j? w? ???????@@@ @@@ @@K@JA_A nA|AA A AAIBNB(`BB BB+BB8B$C5C8CR1DcDQD:E:UEE!F,AFLnF]FGG7KHmH_H[QIIII IIJJ+J>JBJVJ [J|JJJ J"JJJJJJK2KLKbKxK#KVKL'L0L CLNLlL~LLL LLLLHL5M7NM M3MaM&N+N0N4N.9N hNNNNN!NNPP!PPGPbBQ Q QQQ QQ Q QR R R"R7R LRXR^RzR RRRRRR RRSS!S%S4S CS NS YSfSwS$S$SSSSS TT/TLTjT TTT*TTT,U AU LU ZUdU mUwUU$UU UUV6V#`+T`` ``+`@`."a!Qasaxa'aYabb,b?bTbmbbbbb&bb c#c,c 3c@cGcVcmcc&cccddd dd dd% e 2e @eNeSe*le&ee)ee@fDfMSfJfffg.g IgSgigogg"ghhhhi i i5 i"Viyi |ii1iiii j j j j'j=jSjgj~j 'k1k OkYk_kkDk ll"!lSDl1lll ll% m2mKmdm ~mmm#mm m mm m m nn8&n_ngnnooo'o9oPoioooo(oo p 'p1pCpUp\ptp!pppp'q.qGq cqmqtq|qqqqq q qq!qr5r!RrtrrrrVs nszssssRst%t9tQtgt zt tt u*u#Duhuxu)u8uu<u4vHvWvOUw]wZx^x&uxx!4yVyAvy]yzz5{r{T5|Q||| |} }'}8}J}Y}^}w}1}}}}}(~*~@~S~b~y~*~"~~(~)#0Mw~& ALi ̀m2UQځ5q 6$)?[apt:Q(N 8TlE&?ZGa&?m_nOs T:X{7azs<6}X5>.kF=2foHDA tW fBP@dhwAzJg53|j<9*  #},6i/lZ Q+wW\p$%Y_3O%^Fu!MI8!JSxy`n U1 N0'cSyKvek>E]xq d Pg]@uR0pM.GBe,RU4/r\$*hCbK#~|bV("9o-i '~[L1;I="DHV)`rYC7Lqv{2;^4cm-j+[) (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(requires Windows 8 or newer)< &PreviousAbout %sAccountsAddAdd CommentAdd commentAdd directory to the listAdditional keywordsAdvancedAll Translation FilesAlt+Always 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 errorCtrl+Cu&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 againDownDownloading latest translations…Downloading translations is disabled in this project.E&xitEditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:EnterEnter 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…Export errorExtract from sourcesExtract text from source files in the following directories:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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 %iFrequentGeneralHTML FilesHelpHide %sHide OthersHide 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 CrowdinLeftLine %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.OKObsolete stringsOneOnly 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 translationsQuitQuit %sRecentRedoRefreshRemaining: %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.ReviewRightSaveSave asSave as…Save changesSelect &AllSelect AllSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageServicesSet LanguageSet languageShift+Show AllShow 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)UntransUpUpdate 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.ZeroZoomaltctrldon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);go to item at given line numberhandle a poedit:// URIshiftunknown language“%s” is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2024-08-30 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(0 ta yangi, 0 ta eski)(GNU gettext haqida ko‘proq o‘rganing)(Yangi: %i, eskirgan: %i)(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 fayllariAlt+Fokusni 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 xatolikCtrl+Kes&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‘rsatilmasinPastgaSo‘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:Enter"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…Ekport qilinmadiManbalardan ajratishQuyidagi direktoriyalardagi manba fayllaridan matnni ajratish:Tarjima qilinadigan satrlar ajratilmoqda...Ajratgichni o‘rnatishAjratgichlarXato buyruq: %sPoedit 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 MuntazamUmumiyHTML fayllarYordam%sni yashirishBoshqalarini yashirishYon 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 olishChapga"%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.OKEski qatorlarBirFaqat 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 tozalashChiqish%sdan chiqishSo‘nggiQayta 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 chiqishO‘nggaSaqlashBoshqacha saqlashQuyidagiday saqlash…O‘zgarishlarni saqlashB&archasini belgilashBarchasini belgilashDirektoriyani tanlashTarjima faylini tanlashImport qilish uchun tarjimalarni tanlangTarjima namunasini tanlashSiznig avfzal tilingizni tanlashXizmatlarTilni o‘rnatishTilni o‘rnatishShift+Barchasini ko‘rsatishYon 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 qilinmaganTepagaBarchasini 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/Kichiklashtirishaltctrlvaqtinchalik fayllar o'chirilmasin (to'g'irlash uchun)masalan: nplurals=2; plural=(n > 1);raqami berilgan satrdagi elementga o'tishpoedit:// URI bilan ishlashshiftnoma’lum til“%s” bu POT fayli emas.poedit-3.5/locales/tg.po0000644000175100001770000021655014664354065012213 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "Хабари огоҳии зеринро пинҳон кунед" msgid "Don’t Show Again" msgstr "Аз нав намоиш надодан" msgid "Don’t show again" msgstr "Аз нав намоиш надодан" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(Нав: %i, куҳна: %i)" msgid "Collecting source files…" msgstr "Ҷамъкунии файлҳои манбаъ…" msgid "Extracting translatable strings…" msgstr "Баровардани сатрҳои тарҷумашаванда…" msgid "Failed to load file with extracted translations." msgstr "" msgid "Merging differences…" msgstr "Муттаҳидшавии фарқиятҳо…" msgid "Updating translations" msgstr "" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "" msgid "Invalid file" msgstr "Файли нодуруст" #, c-format msgid "Malformed header: “%s”" msgstr "Сарлавҳаи бадшакл: “%s”" msgid "PO Translation Files" msgstr "Файлҳои тарҷумавии PO" msgid "POT Translation Templates" msgstr "Қолибҳои тарҷумавии POT" msgid "XLIFF Translation Files" msgstr "Файлҳои тарҷумавии XLIFF" msgid "JSON Translation Files" msgstr "" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "" msgid "All Translation Files" msgstr "Ҳамаи файлҳои тарҷума" msgid "The file is in a format not recognized by Poedit." msgstr "" msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" #, c-format msgid "Reading file content failed with the following error: %s" msgstr "" #, c-format msgid "" "File “%s” is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "Файли “%s” танҳо барои хондан аст ва нигоҳ дошта намешавад.\n" "Лутфан, онро бо номи дигар нигоҳ доред." #, c-format msgid "Couldn’t save file %s." msgstr "Файли %s нигоҳ дошта нашуд." msgid "Screenshots:" msgstr "" #, c-format msgid "%i line of file “%s” was not loaded correctly." msgid_plural "%i lines of file “%s” were not loaded correctly." msgstr[0] "%i сатри файли “%s” ба таври дуруст бор нашудааст." msgstr[1] "%i сатри файли “%s” ба таври дуруст бор нашудааст." #, c-format msgid "Line %d of file “%s” is corrupted (not valid %s data)." msgstr "Сатри %d дар файли “%s” вайрон шудааст (санаи %s беэътибор аст)." msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" msgid "Couldn’t load the file, it is probably damaged." msgstr "" msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "Барои шаклсозии хуби файли зерин мушкилиҳо пайдо шудаанд (аммо он хуб нигоҳ " "дошта шуд)." #, 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 "" msgid "Error saving file" msgstr "" #, c-format msgid "“%s” is not a valid POT file." msgstr "“%s” файли POT-и боэътимод нест." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "" #, c-format msgid "unsupported version (%s)" msgstr "" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML msgid "Broken markup in translation string." msgstr "Қайди вайроншуда дар сатри тарҷумавӣ." msgid "(Use default language)" msgstr "(Истифодаи забони асосӣ)" msgid "Language selection" msgstr "Интихоби забон" msgid "Select your preferred language" msgstr "Забони дилхоҳро интихоб кунед" msgid "You must restart Poedit for this change to take effect." msgstr "Барои татбиқ кардани тағйирот, шумо бояд барномаро аз нав оғоз кунед." msgid "Add Account" msgstr "" msgid "Add account" msgstr "" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "" msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" msgid "How does cloud sync work?" msgstr "" msgid "Account" msgstr "" msgid "(not signed in)" msgstr "" msgid "File" msgstr "Файл" msgid "Open cloud translation" msgstr "" msgid "Manage accounts" msgstr "" msgid "Project:" msgstr "Лоиҳа:" msgid "Language:" msgstr "Забон:" msgid "Sign in to Cloud Account" msgstr "" msgid "Sign in to cloud account" msgstr "" msgid "No translation projects listed in your account." msgstr "" msgid "Downloading latest translations…" msgstr "Дар ҳоли боргирии тарҷумаҳои навтарин…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #, c-format msgid "Sign in to %s" msgstr "" msgid "Syncing" msgstr "Ҳамоҳангсозӣ" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s…" msgstr "" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s failed." msgstr "" msgid "Syncing error" msgstr "Хатои ҳамоҳангсозӣ" msgid "Add" msgstr "" msgid "Unknown Crowdin error." msgstr "" msgid "Not authorized, please sign in again." msgstr "Ворид нашуд, лутфан аз нав ворид шавед." msgid "Downloading translations is disabled in this project." msgstr "Боргирии тарҷумаҳо барои ин лоиҳа ғайрифаъол шуд." msgid "Sign In" msgstr "Ворид шудан" msgid "Sign in" msgstr "Ворид шудан" msgid "Sign Out" msgstr "Баромадан" msgid "Sign out" msgstr "Баромадан" msgid "Learn more about Crowdin" msgstr "Маълумоти бештар дар бораи Crowdin" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" msgid "Waiting for authentication…" msgstr "Дар ҳоли интизори санҷиши ҳаққоният…" msgid "Updating user information…" msgstr "Дар ҳоли навсозии маълумоти корбар…" msgid "Sign in to Crowdin" msgstr "Ворид шудан ба Crowdin" msgid "Syncing with Crowdin failed." msgstr "Ҳамоҳангсозӣ бо Crowdin иҷро нашуд." msgid "Crowdin error" msgstr "Хатои Crowdin" msgid "Uploading translations…" msgstr "Дар ҳоли боркунии тарҷумаҳо…" msgid "&Copy" msgstr "&Нусха бардоштан" msgid "Learn more" msgstr "Маълумоти бештар" msgid "&Help" msgstr "&Кумак" msgid "MO files can’t be directly edited in Poedit." msgstr "Файлҳои MO метавонанд дар Poedit бевосита таҳрир карда шаванд." msgid "Error opening file" msgstr "Хатои кушодани файл" msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "Лутфан, ба ҷояш ягон файли PO-и мувофиқро кушоед ва таҳрир кунед. Вақте ки " "шумо онро захира мекунед, файли MO низ навсозӣ карда мешавад." msgid "don’t delete temporary files (for debugging)" msgstr "файлҳои муваққатиро нест накунед (барои ислоҳи нуқсонҳо)" msgid "handle a poedit:// URI" msgstr "коркарди poedit:// URI" msgid "go to item at given line number" msgstr "гузариш ба мавод дар рақами сатри лозимӣ" msgid "Failed to communicate with Poedit process." msgstr "Алоқа бо раванди Poedit қатъ шуд." #, c-format msgid "Unhandled exception occurred: %s" msgstr "Истиснои иҷронашуда ба амал омад: %s" msgid "Select translation template" msgstr "" msgid "Select translation file" msgstr "" msgid "Poedit is an easy to use translation editor." msgstr "Барномаи Poedit барои тарҷумаи файлҳо хеле осон аст." msgid "You can’t drop more than one file on Poedit window." msgstr "Шумо зиёда аз як файл ба равзанаи Poedit гузошта наметавонед." #, c-format msgid "File “%s” is not a translation file." msgstr "Файли “%s” файли тарҷумавӣ намебошад." #, c-format msgid "File “%s” doesn’t exist." msgstr "Файли “%s” вуҷуд надорад." 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". #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "Тафтиши имло ғайрифаъол аст, зеро ки луғат барои %s насб нашудааст." msgid "Install" msgstr "Насб кардан" #, c-format msgid "The file “%s” has been changed by another application." msgstr "" msgid "Reload file" msgstr "" msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" msgid "Ignore" msgstr "" msgid "Reload File" msgstr "" msgid "The file has been modified. Do you want to save changes?" msgstr "" msgid "Save changes" msgstr "Нигоҳ доштани тағйирот" msgid "Your changes will be lost if you don’t save them." msgstr "Тағйироти шумо гум мешаванд, агар онҳоро нигоҳ надоред." msgid "Save" msgstr "Нигоҳ доштан" msgid "Do&n’t save" msgstr "&Нигоҳ надоштан" msgid "Don’t Save" msgstr "Нигоҳ надоштан" msgid "The changes made by the other application will be lost if you save." msgstr "" msgid "Cancel" msgstr "Бекор кардан" msgid "Save Anyway" msgstr "" msgid "Save anyway" msgstr "" msgid "Save as…" msgstr "Нигоҳ доштан ҳамчун…" msgid "Compile to…" msgstr "Таҳия кардан…" msgid "Compiled Translation Files" msgstr "Файлҳои тарҷумавии таҳияшуда" msgid "Export to HTML…" msgstr "" msgid "HTML Files" msgstr "Файлҳои HTML" #, c-format msgid "In: %s" msgstr "" msgid "Source code not available." msgstr "Рамзи барнома дастнорас аст." msgid "Updating failed" msgstr "Навсозӣ иҷро нашуд" 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 "" msgid "Permission denied." msgstr "Дастрасӣ манъ аст." 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. 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. msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "Агар шумо қаблан ба файлҳои худ дастрасиро манъ кардед, шумо метавонед ба " "онҳо дар Хусусиятҳои низом > Амният ва махфият > Махфият > Файлҳо ва " "ҷузвадонҳо иҷозат диҳед." msgid "Translation entries in the file are probably incorrect." msgstr "" msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "" msgid "Open translation template" msgstr "" #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "%d масъалаи тарҷума пайдо шудааст." msgstr[1] "%d масъалаи тарҷума пайдо шудааст." msgid "Validation results" msgstr "Натиҷаҳои санҷиш" msgid "" "Entries with errors were marked in red in the list. Details of the error " "will be shown when you select such an entry." msgstr "" "Тарҷумаҳои хато бо ранги сурх дар рӯйхат қайд карда шудаанд. Тафсилоти " "хатоҳо бо интихоби сатри тарҷумаи хато намоиш дода мешаванд." msgid "The file was saved safely." msgstr "Файл бо муваффақият нигоҳ дошта шуд." msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "Файли тарҷумашуда бо муваффақият нигоҳ дошта шуд ва ба шакли МО табдил ёфт, " "вале мумкин он дуруст кор намекунад." msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "Файли шумо бехатар захира шудааст, аммо ба формати МО барои истифода сохта " "намешавад." msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "Ин файл ба формати MO табдил шудааст, вале метавонад дуруст кор накунад." msgid "The file cannot be compiled into the MO format and used." msgstr "Файл ба формати MO табдил дода намешавад ва истифода намешавад." msgid "No problems with the translation found." msgstr "Ягон хато дар тарҷума ёфт нашудааст." #, 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 сатр то ҳол тарҷума нашудаанд." msgid "The translation is ready for use." msgstr "Тарҷума барои истифода тайёр аст." #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "Poedit муҳтавои беэътиборро дар файли “%s” ислоҳ кард." msgid "" "The file contained duplicate items, which is not allowed in PO files and " "would prevent the file from being used. Poedit fixed the issue, but you " "should review translations of any items marked as needing work and correct " "them if necessary." msgstr "" "Файл дорои объктҳои якхела мебошад, ки барои файлҳои PO мутобиқат намекунанд " "ва истифодабарии файлро қатъ мекунанд. Poedit мушкилиро ислоҳ кард, вале " "шумо бояд тарҷумаҳои қайдшударо аз назар гузаронед ва дар ҳолати лозимӣ " "онҳоро ислоҳ намоед." msgid "Language of the translation isn’t set." msgstr "Забони тарҷума танзим карда нашуд." msgid "Set Language" msgstr "Танзими забон" msgid "Set language" msgstr "Интихоби забон" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." msgid "" "Suggestions are not available if the translation language is not set " "correctly. Other features, such as plural forms, may be affected as well." msgstr "" "Агар забони тарҷумаҳо нодуруст танзим карда бошад, пешниҳодҳо дастнорас " "мешаванд. Хусусиятҳои дигар, монанди шакли ҷамъ, метавонанд таъсир расонанд." msgid "Language of the translation is the same as source language." msgstr "Забони тарҷума ва забони манбаъ баробаранд." msgid "Fix Language" msgstr "Ислоҳ кадани забон" msgid "Fix language" msgstr "Ислоҳ кадани забон" msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" msgid "Required header Plural-Forms is missing." msgstr "Сарлавҳаи шакли ҷамъ лозим аст." #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Хатои синтаксисӣ дар шакли ҷамъи сарлавҳа (\"%s\")." msgid "Fix the Header" msgstr "Сарварақро ислоҳ кунед" 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". #, 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.")" msgid "Review" msgstr "Тафтиш" msgid "Would you like to use English for source text?" msgstr "" #, 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" msgid "Load English" msgstr "" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "%d аз %d (%d %%) тарҷума шуд" #, c-format msgid "Remaining: %d" msgstr "Дар ҳоли ивази номи: %d" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d хато" msgstr[1] "%d хато" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d вуруд" msgstr[1] "%d вуруд" msgid " (unsaved)" msgstr " (нигоҳ дошта нашуд)" msgid " (modified)" msgstr " (тағйирёфта)" #, c-format msgid "Failed to update translation memory: %s" msgstr "Ҳофизаи тарҷума навсозӣ нашуд: %s" msgid "Remove same-as-source translations" msgstr "" msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" msgid "Keep" msgstr "Нигоҳ доштан" msgid "Remove" msgstr "" msgid "Purge deleted translations" msgstr "Пок кардани тарҷумаҳои нестшуда" msgid "Do you want to remove all translations that are no longer used?" msgstr "" "Оё шумо мехоҳед, ки ҳамаи тарҷумаҳоеро, ки дигар истифода намешаванд, нест " "кунед?" 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 "" "Агар тоза карданро идома диҳед, ҳама тарҷумаҳои ҳамчун нест карда, бе " "бозгашт нест мешаванд. Агар онҳо дар оянда баргашта илова шаванд, шумо " "онҳоро дигар тарҷума карда наметавонед." msgid "Purge" msgstr "Поксозӣ" msgid "Copy from source text" msgstr "Нусха бардоштан аз матни сатри аслӣ" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "Тоза кардани тарҷума" msgid "Clear Translation" msgstr "Тоза кардани тарҷума" msgid "Edit comment" msgstr "Таҳрир кардани шарҳ" msgid "Edit Comment" msgstr "Таҳрир кардани шарҳ" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "" msgid "Hide Sidebar" msgstr "Пинҳон кардани навори ҷонибӣ" msgid "Show Sidebar" msgstr "Намоиш додани навори ҷонибӣ" msgid "Hide Status Bar" msgstr "Пинҳон кардани навори вазъият" msgid "Show Status Bar" msgstr "Намоиш додани навори вазъият" msgid "String length in characters: translation | source" msgstr "" msgid "String length in characters" msgstr "" msgid "Source text" msgstr "Матни сатри аслӣ" msgid "Singular" msgstr "Шумораи танҳо" msgid "Plural" msgstr "Шумораи ҷамъ" msgid "Translation" msgstr "Тарҷума" msgid "Pre-translated" msgstr "Тарҷумаи пешакӣ" 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. msgid "Needs work" msgstr "Бозбинӣ лозим аст" msgid "" "POT files are only templates and don’t contain any translations themselves.\n" "To make a translation, create a new PO file based on the template." msgstr "" "Файлҳои POT танҳо ҳамчун қолибҳо истифода мешаванд ва худаш тарҷумаҳоро дар " "бар намегиранд.\n" "Барои тарҷума кардан, файли PO-и наверо дар асоси қолиб эҷод кунед." msgid "Create new translation" msgstr "Аз нав тарҷума кардан" msgid "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 msgid "Source text ID" msgstr "" msgid "Everything" msgstr "Ҳама" #, c-format msgid "Form %i" msgstr "Шакли %i" #, c-format msgid "Form %i (unused)" msgstr "Шакли %i (истифоданашуда)" msgid "Zero" msgstr "Сифр" msgid "One" msgstr "Як" msgid "Two" msgstr "Ду" msgid "Other" msgstr "Дигар" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, c-format msgid "String context: %s" msgstr "" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #, c-format msgid "String identifier: %s" msgstr "" #, c-format msgid "%s Format" msgstr "Формати %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "Формати %s" #, c-format msgid "Translation — %s" msgstr "Тарҷума — %s" msgid "ID" msgstr "Рақам" #, c-format msgid "Source text — %s" msgstr "Матни манбаъ — %s" msgid "unknown language" msgstr "забони номаълум" #, c-format msgid "Network error: %s (%d)" msgstr "" msgid "Unknown error" msgstr "" #, c-format msgid "Failed command: %s" msgstr "Фармони қатъшуда: %s" msgid "Failed to merge gettext catalogs." msgstr "Муттаҳид кардани файлҳои gettext баргузор нагашт." msgid "Open in Editor" msgstr "Кушодан дар муҳаррир" msgid "Open in editor" msgstr "Кушодан дар муҳаррир" msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" msgid "No usage information" msgstr "" #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "" msgstr[1] "" msgid "Source code not found" msgstr "" 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 "" msgid "File cannot be opened" msgstr "" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "" msgid "Find" msgstr "Ҷустуҷӯ" msgid "Replace" msgstr "Ҷойгузин кардан" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "Имконот" msgid "Ignore case" msgstr "Рад кардани ҳарфҳои хурду калон" msgid "Wrap around" msgstr "Ҷустуҷӯи даврӣ" msgid "Whole words only" msgstr "Танҳо калимаҳои пурра" msgid "Find in source texts" msgstr "Ёфтан дар матнҳои манбаъ" msgid "Find in translations" msgstr "Ҷустуҷӯ дар тарҷумаҳо" msgid "Find in comments" msgstr "Ҷустуҷӯ дар шарҳҳо" msgid "Close" msgstr "Пӯшидан" msgid "Replace &All" msgstr "Ҳамаро ҷойгузин &кардан" msgid "Replace &all" msgstr "Ҳамаро ҷойгузин &кардан" msgid "&Replace" msgstr "&Ҷойгузин кардан" msgid "< &Previous" msgstr "< &Қаблӣ" msgid "&Next >" msgstr "&Навбатӣ >" msgid "String to find" msgstr "Сатр барои ёфтан" msgid "Replacement string" msgstr "Сатри ҷойгузорӣ" #, c-format msgid "Cannot execute program: %s" msgstr "Барнома иҷро карда намешавад: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "" msgid "Translation Language" msgstr "Забони тарҷума" msgid "Language of the translation:" msgstr "Забони тарҷума:" msgid "All strings" msgstr "" msgid "Couldn’t download Localazy project details." msgstr "" msgid "There was an error when uploading translations to Localazy." msgstr "" msgid "Projects" msgstr "" msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" msgid "Add Project" msgstr "" msgid "Add project" msgstr "" msgid "Poedit - Catalogs manager" msgstr "Мудири файлҳо - Poedit" msgid "Edit…" msgstr "Таҳрир кардан…" msgid "Create new translations project" msgstr "Эҷод кардани лоиҳаи тарҷумаи нав" msgid "Delete the project" msgstr "Нест кардани лоиҳа" msgid "Edit the project" msgstr "Таҳрири лоиҳа" msgid "Update all" msgstr "Ҷадидсозии ҳама" msgid "Update all catalogs in the project" msgstr "Ҳамаи файлҳоро дар ин лоиҳа навсозӣ кунед" msgid "Total" msgstr "Ҳамагӣ" msgid "Untrans" msgstr "Тарҷуманашуда" msgctxt "column/row header" msgid "Needs Work" msgstr "Бозбинӣ лозим аст" msgid "Errors" msgstr "Хатоҳо" msgid "Last modified" msgstr "Санаи тағйири охирин" msgid "Select directory" msgstr "Интихоби ҷузвдон" msgid "Directories:" msgstr "Феҳристҳо" msgid "" msgstr "<беном>" #, c-format msgid "Do you want to delete project “%s”?" msgstr "" msgid "Delete project" msgstr "" msgid "Deleting the project will not delete any translation files." msgstr "" msgid "Confirmation" msgstr "Тасдиқ" msgid "Update all catalogs in this project?" msgstr "" msgid "Performs update from source code on all files in the project." msgstr "" msgid "Check for Updates…" msgstr "Санҷиши навсозиҳо…" msgid "Catalogs Manager" msgstr "Мудири файлҳои тарҷума" msgid "&Preferences…" msgstr "&Танзимот…" msgid "&Edit" msgstr "&Таҳрир" msgid "Undo" msgstr "Ботил сохтан" msgid "Redo" msgstr "Дубора анҷом додан" msgid "Paste and Match Style" msgstr "Гузоштан мувофиқи сабк" msgid "Delete" msgstr "Нест кардан" msgid "Spelling and Grammar" msgstr "Санҷиши имло ва дастури забон" msgid "Show Spelling and Grammar" msgstr "Намоиши санҷиши имло ва дастури забон" msgid "Check Document Now" msgstr "Санҷиши ҳуҷҷат" msgid "Check Spelling While Typing" msgstr "Санҷиши имло ҳангоми навис" msgid "Check Grammar With Spelling" msgstr "Санҷиши имлои тарҷума" msgid "Correct Spelling Automatically" msgstr "Санҷиши имло ба таври худкор" msgid "Substitutions" msgstr "Ивазкуниҳо" msgid "Show Substitutions" msgstr "Намоиши ивазкуниҳо" msgid "Smart Copy/Paste" msgstr "Нусха бардоштан/гузоштани ҳушманд" msgid "Smart Quotes" msgstr "Нохунакҳои ҳушманд" msgid "Smart Dashes" msgstr "Тирегузории ҳушманд" msgid "Smart Links" msgstr "Пайвандҳои ҳушманд" msgid "Text Replacement" msgstr "Ивазкунии матн" msgid "Transformations" msgstr "Табдилдиҳӣ" msgid "Make Upper Case" msgstr "Табдил ба ҳарфҳои хурд" msgid "Make Lower Case" msgstr "Табдил ба ҳарфҳои хурд" msgid "Capitalize" msgstr "Ҳарфҳои калон" msgid "Speech" msgstr "Нутқ" msgid "Start Speaking" msgstr "Оғоз кардани нутқ" msgid "Stop Speaking" msgstr "Манъ кардани нутқ" msgid "&View" msgstr "&Намоиш" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Show Toolbar" msgstr "Намоиш додани навори абзор" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Customize Toolbar…" msgstr "Фармоиш додани навори абзор…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Enter Full Screen" msgstr "Кушодан дар экрани пурра" msgid "Window" msgstr "Равзана" msgid "Minimize" msgstr "Ҳадди ақал сохтан" msgid "Zoom" msgstr "Интихоби андоза" msgid "Welcome to Poedit" msgstr "Хуш омадед ба Poedit" msgid "Bring All to Front" msgstr "Ҳамаро ба пеш гузоред" msgid "Information about the translator" msgstr "Маълумот дар бораи тарҷумон" msgid "Name:" msgstr "Ном:" msgid "Your Name" msgstr "Номи шумо" msgid "Email:" msgstr "Почтаи электронӣ:" msgid "you@example.com" msgstr "" msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "Ном ва почтаи электронии шумо танҳо барои намоиш додани тарҷумони охирин дар " "сарлавҳаҳои файлҳои GNU gettext истифода мешаванд." msgid "Editing" msgstr "Таҳриркунӣ" msgid "Automatically compile MO file when saving" msgstr "Омодасозии файли MO ба таври худкор ҳангоми захиракунӣ" msgid "Show summary after updating files" msgstr "" msgid "Check spelling" msgstr "Санҷиши имло" msgid "Always change focus to text input field" msgstr "Доимо тағйир додани маркази диққат ба ҳошияи матнгузорӣ" msgid "" "Never let the list of strings take focus. If enabled, you must use Ctrl-" "arrows for keyboard navigation but you can also type text immediately, " "without having to press Tab to change focus." msgstr "" "Ба рӯйхати сатр ҳаргиз нагузоред, ки маркази диққатро ишғол кунад. Агар " "фаъол бошад, шумо бояд Ctrl-ақрабаки идора кардан аз клавиатура истифода " "баред, аммо шумо инчунин имкони ворид кардани матнро бе зарурияти пахш " "кардани Tab барои тағйироти маркази диққат доред." msgid "Appearance" msgstr "Намуди зоҳирӣ" msgid "Use custom list font:" msgstr "Истифодаи шрифти фармоишӣ:" msgid "Use custom text fields font:" msgstr "Истифодаи шрифти фармоишӣ барои майдонҳои вуруди матн:" msgid "Change UI language" msgstr "Иваз кардани забони интерфейс" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions msgid "(requires Windows 8 or newer)" msgstr "(Windows 8 ё версияи навтарро талаб мекунад)" msgid "General" msgstr "Умумӣ" msgid "Use translation memory" msgstr "Истифодаи ҳофизаи тарҷумаҳо" msgid "Manage…" msgstr "Идора…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "Ҳангоми навсозӣ аз манбаъҳо" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "мувофиқати монанд дар дохили файл" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "тарҷумаи пешакӣ аз TM" 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 тарҷумаҳои " "зиёдро илова кунед, ҳофизаи тарҷумаҳо ба шумо бисёр самаранокии ҳақиқӣ " "меорад." msgid "Stored translations:" msgstr "Тарҷумаҳои захрашуда:" msgid "Database size on disk:" msgstr "Андозаи пойгоҳи иттилоотӣ дар диск:" msgid "Import Translation Files…" msgstr "Ворид намудани файлҳои тарҷумавӣ…" msgid "Import translation files…" msgstr "Ворид намудани файлҳои тарҷумавӣ…" msgid "Import From TMX…" msgstr "Ворид намудан аз TMX…" msgid "Import from TMX…" msgstr "Ворид намудан аз TMX…" msgid "Export To TMX…" msgstr "Баровардан ба TMX…" msgid "Export to TMX…" msgstr "Баровардан ба TMX…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). msgid "Reset" msgstr "Танзими дубора" msgid "Select translation files to import" msgstr "Интихоби файлҳо барои тарҷума" msgid "Translation Memory" msgstr "Ҳофизаи тарҷума" msgid "Importing translations…" msgstr "Воридкунии тарҷумаҳо…" #, c-format msgid "Error loading translation file “%s”." msgstr "" msgid "Finalizing…" msgstr "Анҷомдиҳӣ…" msgid "Select TMX files to import" msgstr "Интихоби файлҳои TMX барои воридот" msgid "TMX Files" msgstr "Файлҳои TMX" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "Воридкунии ҳофизаи тарҷумаҳо аз “%s” иҷро нашуд." msgid "Import error" msgstr "Хатои воридкунӣ" msgid "Export as…" msgstr "Содир кардан ҳамчун…" msgid "Exporting translations…" msgstr "Содиркунии тарҷумаҳо…" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "Содиркунии ҳофизаи тарҷумаҳо аз “%s” иҷро нашуд." msgid "Export error" msgstr "Хатои содиркунӣ" msgid "Reset translation memory" msgstr "Дубора танзим кардани ҳофизаи тарҷумаҳо" msgid "Are you sure you want to reset the translation memory?" msgstr "Шумо мутмаин ҳастед, ки мехоҳед ҳофизаи тарҷумаро дубора танзим кунед?" 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. msgid "TM" msgstr "TM" msgid "" "Source code extractors are used to find translatable strings in the source " "code files and extract them so that they can be translated." msgstr "" "Василаи барориши манбаи рамз барои ёфтани сатрҳои тарҷумашаванда ва " "баровардани онҳо барои тарҷума истифода мешавад." msgid "Custom Extractors:" msgstr "Интихоби тарзи барориш:" msgid "Custom extractors:" msgstr "Интихоби тарзи барориш:" msgid "GNU gettext" msgstr "GNU gettext" 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 ва ғайра) шинохта мешаванд, дастгирӣ " "менамояд." msgid "Delete extractor" msgstr "Нест кардани василаи барориш" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "Шумо мутмаин ҳастед, ки мехоҳед василаи барориши “%s”-ро нест кунед?" msgid "Extractors" msgstr "Василаи барориш" msgid "Accounts" msgstr "Ҳисобҳо" msgid "Automatically check for updates" msgstr "Санҷиши худкори навсозиҳо" msgid "Include beta versions" msgstr "Иловаи версияҳои бета" msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "Версияҳои бета хусусиятҳои нав ва такмилҳоро дар бар мегиранд, вале " "метавонанд каме ноустувор бошанд." msgid "Updates" msgstr "Навсозиҳо" msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Танзимоти мазкур ба форматгузории дохирии файлҳои PO таъсир мерасонад. Агар " "шумо талаботи махсус дошта бошед, масалан ба сабаби идоракунии версия, " "онҳоро мос кунед." msgid "Line endings:" msgstr "Анҷоми сатрҳо:" msgid "Unix (recommended)" msgstr "Unix (тавсия мешавад)" msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "Гузарондан:" msgid "Preserve formatting of existing files" msgstr "Истифодаи қолаббандӣ аз файлҳои мавҷудбуда" msgid "Advanced" msgstr "Иловагӣ" msgid "Settings" msgstr "" msgid "Preparing strings…" msgstr "" msgid "Pre-translating from translation memory…" msgstr "" #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "Тарҷумаи пешакии %u сатр" msgstr[1] "Тарҷумаи пешакии %u сатр" msgid "Pre-translating…" msgstr "Дар ҳоли тарҷумаи пешакӣ…" 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. msgid "Pre-translate" msgstr "Тарҷумаи пешакӣ" msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" msgid "Cannot pre-translate from unknown language." msgstr "" msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" msgid "Only fill in exact matches" msgstr "Ворид кардани танҳо мутобиқати аниқ" msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" msgid "Don’t mark exact matches as needing work" msgstr "Мутобиқатҳои аниқро ҳамчун \"Бозбинӣ лозим аст\" қайд накунед" 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 "" "Фаъол кунед, танҳо агар ба ТМ-и худ эътимод дошта бошед. Ба сутари пешфарз, " "ҳамаи мутобиқатҳо аз ТМ ҳамчун \"Бозбинӣ лозим аст\" ишора карда мешаванд ва " "бояд пеш аз истифода аз назар гузаронида шаванд." msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "Тарҷумаи пешакӣ мувофиқатҳои аниқ ё монандро аз ҳофизаи тарҷума барои " "сатрҳои тарҷуманашуда ҷустуҷӯ мекунад ва пешниҳод менамояд." #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%d сатр пешакӣ тарҷума карда шуд." msgstr[1] "%d сатр пешакӣ тарҷума карда шуд." msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "Тарҷумаҳо ҳамчун \"Бозбини лозим аст\" қайд карда шудаанд, зеро ки онҳо " "метавонанд носаҳеҳ бошанд. Шумо бояд онҳоро барои санҷиши хатоҳо аз назар " "гузаронед." msgid "No entries could be pre-translated." msgstr "Ягон сатр пешакӣ тарҷума карда намешавад." msgid "" "The TM doesn’t contain any strings similar to the content of this file. It " "is only effective for semi-automatic translations after Poedit learns enough " "from files that you translated manually." msgstr "" "Ҳофизаи тарҷумаҳо (TM) ягон пешниҳоди мувофиқро барои сатрҳои ин файл дар " "бар намегирад. TM-и ҷорӣ танҳо тарҷумаҳои ҷузъӣ ба таври худкор пешниҳод " "мекунад, баъд аз оне ки Poedit тарҷумаҳоро аз файлҳои қаблӣ ҷамъ кунад." msgid "Cancelling…" msgstr "" msgid "Drag Folders or Files Here" msgstr "" msgid "Drag folders or files here" msgstr "" msgid "Add Folders…" msgstr "Илова кардани ҷузвдонҳо…" msgid "Add folders…" msgstr "Илова кардани ҷузвдонҳо…" msgid "Add Files…" msgstr "Илова кардани файлҳо…" msgid "Add files…" msgstr "Илова кардани файлҳо…" msgid "Add Wildcard…" msgstr "Илова кардани аломатҳо…" msgid "Add wildcard…" msgstr "Илова кардани аломатҳо…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) msgid "Reveal in Finder" msgstr "" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" msgid "Show in Explorer" msgstr "" msgid "Show in Folder" msgstr "" msgid "Paths" msgstr "Масирҳо" msgid "Excluded paths" msgstr "Масирҳои истисношуда" msgid "Advanced extraction settings" msgstr "Танзимоти иловагии барориш" msgid "Extract notes for translators from:" msgstr "Баровардани тавзеҳот барои тарҷумонон аз:" msgid "Comments prefixed with:" msgstr "Шарҳҳо бо пешванди:" msgid "All comments" msgstr "Ҳамаи шарҳҳо" msgid "Additional xgettext flags:" msgstr "Байрақчаҳои иловагии xgettext:" msgid "Additional keywords" msgstr "Калидвожаҳои иловагӣ" msgid "Name of the project the translation is for" msgstr "Номи лоиҳаи тарҷума барои" msgid "Team name and email address or URL" msgstr "Номи даста ва нишонии почтаи электронӣ ё нишонии сомони" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "масалан, nplurals=2; plural=(n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (тавсия мешавад)" msgid "Please save the file first. This section cannot be edited until then." msgstr "" "Лутфан, аввал файлро нигоҳ доред. То он гоҳ ин қисмат таҳрир карда намешавад." msgid "Placeholders correctness" msgstr "" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "" #, c-format msgid "Superfluous placeholder “%s” that isn’t in source text." msgstr "" msgid "Plural form translations" msgstr "" msgid "Not all plural forms are translated." msgstr "На ҳамаи сатрҳои шакли ҷамъ тарҷума шудаанд." msgid "Inconsistent upper/lower case" msgstr "" msgid "The translation should start as a sentence." msgstr "Тарҷума бояд ҳамчун ҷумла сар шавад." msgid "The translation should start with a lowercase character." msgstr "Тарҷума бояд бо ҳарфи хурд сар шавад." msgid "Inconsistent whitespace" msgstr "" msgid "The translation doesn’t start with a space." msgstr "Тарҷума бо фосила сар нашуд." msgid "The translation starts with a space, but the source text doesn’t." msgstr "Тарҷума бо фосила сар шуд, вале матни аслӣ фосила надорад." msgid "The translation is missing a newline at the end." msgstr "Тарҷума дар охири матн сатри нав надорад." msgid "The translation ends with a newline, but the source text doesn’t." msgstr "" "Тарҷума дар охири матн сатри нав дорад, вале матни аслӣ сатри нав надорад." msgid "The translation is missing a space at the end." msgstr "Тарҷума дар охири матн фосила надорад." msgid "The translation ends with a space, but the source text doesn’t." msgstr "Тарҷума дар охири матн фосила дорад, вале матни аслӣ фосила надорад." msgid "Punctuation checks" msgstr "" #, c-format msgid "The translation should end with “%s”." msgstr "Тарҷума бояд бо “%s” ба анҷом расад." #, c-format msgid "The translation should not end with “%s”." msgstr "Тарҷума бояд бо “%s” ба анҷом нарасад." #, c-format msgid "The translation ends with “%s”, but the source text ends with “%s”." msgstr "Тарҷума бо “%s” ба анҷом мерасад, вале матни аслӣ “%s” надорад." msgid "Cloud" msgstr "" msgid "Clear Menu" msgstr "" msgid "Clear menu" msgstr "" msgid "Comment:" msgstr "Шарҳ:" msgid "Update" msgstr "" msgid "&Delete" msgstr "&Нест кардан" msgid "Delete the comment" msgstr "" msgid "Edit project" msgstr "Таҳрир кардани лоиҳа" msgid "Project name:" msgstr "Номи лоиҳа:" msgid "Browse" msgstr "Тамошо кардан" msgid "Add directory to the list" msgstr "Илова кардани директория ба рӯйхат" msgid "OK" msgstr "Хуб" msgid "&File" msgstr "&Файл" msgid "&New…" msgstr "&Нав…" msgid "New from &POT/PO file…" msgstr "Нав аз файли &POT/PO…" msgid "New From &POT/PO File…" msgstr "Нав аз файли &POT/PO…" msgid "&Open…" msgstr "&Кушодан…" msgid "Open Recent" msgstr "Кушодани файлҳои охирин" msgid "Open recent" msgstr "" msgid "Open cloud translation…" msgstr "" msgid "Open Cloud Translation…" msgstr "" msgid "&Start window" msgstr "" msgid "&Start Window" msgstr "" msgid "Catalogs &manager" msgstr "Мудири &файлҳои тарҷума" msgid "Catalogs &Manager" msgstr "Мудири &файлҳои тарҷума" msgid "&Close" msgstr "&Пӯшидан" msgid "&Save" msgstr "&Нигоҳ доштан" msgid "Save &as…" msgstr "&Нигоҳ доштан ҳамчун…" msgid "Save &As…" msgstr "&Нигоҳ доштан ҳамчун…" msgid "Compile to MO…" msgstr "Таҳия кардани файли MO…" msgid "E&xport to HTML…" msgstr "" msgid "Check for updates…" msgstr "Санҷидани навсозиҳо…" msgid "Settings…" msgstr "" msgid "&Preferences" msgstr "&Танзими барнома" msgid "E&xit" msgstr "&Баромад" msgid "Quit" msgstr "Баромад" msgid "Copy from singular" msgstr "Нусха бардоштан аз шумораи танҳо" msgid "Copy From Singular" msgstr "Нусха бардоштан аз Шумораи танҳо" msgid "Translation needs &work" msgstr "Бозбинии тарҷума &лозим аст" msgid "Translation Needs &Work" msgstr "Бозбинии тарҷума &лозим аст" msgid "Edit &comment" msgstr "&Таҳрир кардани шарҳ" msgid "Edit &Comment" msgstr "&Таҳрир кардани шарҳ" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "Пешниҳодҳо" msgid "&Find…" msgstr "&Ёфтан…" msgid "Replace…" msgstr "Ҷойгузин кардан…" msgid "Find next" msgstr "Ҷустуҷӯи навбатӣ" msgid "Find previous" msgstr "Ҷустуҷӯи қаблӣ" msgid "Find and Replace…" msgstr "Ёфтан ва ҷойгузин кардан…" msgid "Find Next" msgstr "Ҷустуҷӯи навбатӣ" msgid "Find Previous" msgstr "Ҷустуҷӯи қаблӣ" msgid "Show string &ID" msgstr "Намоиш додани рақами &сатр" msgid "Show String &ID" msgstr "Намоиш додани рақами &сатр" msgid "Show warnings" msgstr "Намоиш додани огоҳиҳо" msgid "Show Warnings" msgstr "Намоиш додани огоҳиҳо" msgid "Sort by &file order" msgstr "Аз рӯи &тартиби файлҳо" msgid "Sort by &File Order" msgstr "Аз рӯи &тартиби файлҳо" msgid "Sort by &source" msgstr "Аз рӯи &сатрҳои аслӣ" msgid "Sort by &Source" msgstr "Аз рӯи &сатрҳои аслӣ" msgid "Sort by &translation" msgstr "Аз рӯи &тарҷумаҳо" msgid "Sort by &Translation" msgstr "Аз рӯи &тарҷумаҳо" msgid "&Group by context" msgstr "&Гурӯҳбандӣ аз рӯи қарина" msgid "&Group By Context" msgstr "&Гурӯҳбандӣ аз рӯи қарина" msgid "Entries with errors first" msgstr "Пеш аз ҳама сабтҳоро бо хатоҳо намоиш диҳед" msgid "Entries with Errors First" msgstr "Пеш аз ҳама сабтҳоро бо хатоҳо намоиш диҳед" msgid "&Untranslated entries first" msgstr "&Аввал сатрҳои тарҷуманашуда" msgid "&Untranslated Entries First" msgstr "&Аввал сатрҳои тарҷуманашуда" msgid "&Show code occurrences" msgstr "" msgid "&Show Code Occurrences" msgstr "" msgid "Show sidebar" msgstr "Намоиш додани навори ҷонибӣ" msgid "Show status bar" msgstr "Намоиш додани навори вазъият" msgid "&Translation" msgstr "" msgid "&Update from source code" msgstr "&Навсозӣ аз манбаи рамз" msgid "&Update from Source Code" msgstr "&Навсозӣ аз манбаи рамз" msgid "Update from &POT file…" msgstr "Навсозӣ аз файли &POT…" msgid "Update from &POT File…" msgstr "Навсозӣ аз файли &POT…" msgid "Sync with Crowdin" msgstr "Ҳамоҳанг кардан бо Crowdin" msgid "Pre-&translate…" msgstr "&Тарҷумаи пешакӣ…" msgid "&Validate translations" msgstr "Санҷиши тарҷума" msgid "&Validate Translations" msgstr "&Санҷиши тарҷума" msgid "Remove Same-as-Source Translations" msgstr "" msgid "&Purge deleted translations" msgstr "&Пок кардани тарҷумаҳои нестшуда" msgid "&Purge Deleted Translations" msgstr "&Пок кардани тарҷумаҳои нестшуда" msgid "&Properties…" msgstr "&Хусусиятҳо…" msgid "&Go" msgstr "&Гузаштан" msgid "&Done and next" msgstr "&Татбиқ кардан ва ба сатри дигар гузарондан" msgid "&Done and Next" msgstr "&Татбиқ кардан ва ба сатри дигар гузарондан" msgid "Previously edited" msgstr "" msgid "Previously Edited" msgstr "" msgid "&Previous translation" msgstr "&Тарҷумаи қаблӣ" msgid "&Previous Translation" msgstr "&Тарҷумаи қаблӣ" msgid "&Next translation" msgstr "&Тарҷумаи навбатӣ" msgid "&Next Translation" msgstr "&Тарҷумаи навбатӣ" msgid "P&revious unfinished" msgstr "&Тарҷуманашудаи пешина" msgid "P&revious Unfinished" msgstr "&Тарҷуманашудаи пешина" msgid "Ne&xt unfinished" msgstr "&Тарҷуманашудаи навбатӣ" msgid "Ne&xt Unfinished" msgstr "&Тарҷуманашудаи навбатӣ" msgid "Previous plural form" msgstr "Шумораи ҷамъи қаблӣ" msgid "Previous Plural Form" msgstr "Шумораи ҷамъи қаблӣ" msgid "Next plural form" msgstr "Шумораи ҷамъи навбатӣ" msgid "Next Plural Form" msgstr "Шумораи ҷамъи навбатӣ" msgid "&Online help" msgstr "&Кумаки онлайн" msgid "&Online Help" msgstr "&Кумаки онлайн" msgid "&GNU gettext manual" msgstr "&Кумаки GNU gettext" msgid "&GNU gettext Manual" msgstr "&Кумаки GNU gettext" msgid "&About Poedit" msgstr "&Дар бораи Poedit" msgid "&About" msgstr "&Дар бораи PoEdit" msgid "Extractor setup" msgstr "Танзими василаи барориш" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "" "Рӯйхати дарозкунии муддат бо нуқта-вергулҳо ҷудо карда мешаванд (мисол *.cpp;" "*.h):" msgid "Invocation:" msgstr "Дархост:" msgid "Command to extract translations:" msgstr "Фармон барои баровардани тарҷумаҳо:" 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 бо байрақи маҷмӯаи ҳарфҳо (поёнтар бинед) васеъ карда мешавад." msgid "An item in keywords list:" msgstr "Илова кардани объект ба рӯйхати калидвожаҳо:" msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Мазкур ба сатри фармонӣ як бор барои ҳар як\n" "калимаи калидӣ замима карда мешавад.\n" "%k ба калимаи калидӣ васеъ мекунад." msgid "An item in input files list:" msgstr "Объект дар рӯйхати файлҳои вурудӣ:" #, 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 ба номи файл васеъ мекунад." msgid "Source code charset:" msgstr "Рамзгузории сатрҳои аслӣ:" #, 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 бо воҳиди рамзгузорӣ иваз карда мешавад." msgid "Translation Properties" msgstr "Хусусиятҳои тарҷума" msgid "Project name and version:" msgstr "Номи лоиҳа ва версия:" msgid "Language team:" msgstr "Дастаи забон:" msgid "Plural forms:" msgstr "Шаклҳои ҷамъ:" msgid "Use default rules for this language" msgstr "Истифодаи қоидаҳои пешфарз барои ин забон" msgid "Use custom expression" msgstr "Истифодаи ибораҳои шахсӣ" msgid "Learn about plural forms" msgstr "Маълумоти бештар дар бораи шаклҳои ҷамъ" msgid "Charset:" msgstr "Рамзгузорӣ:" msgid "Advanced Extraction Settings…" msgstr "Танзимоти иловагии барориш…" msgid "Advanced extraction settings…" msgstr "Танзимоти иловагии барориш…" msgid "Translation properties" msgstr "Хусусиятҳои тарҷума" msgid "Sources Paths" msgstr "Масирҳои манбаъҳо" msgid "Sources paths" msgstr "Масирҳои сатрҳои аслӣ" msgid "Extract text from source files in the following directories:" msgstr "Баровардани матн аз файлҳои манбаъ дар ҷузвдонҳои зерин:" msgid "Base path:" msgstr "Масири асосӣ:" msgid "Sources Keywords" msgstr "Калидвожаҳои манбаъҳо" msgid "Sources keywords" msgstr "Луғати сатрҳои аслӣ" msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Истифодаи калидвожаҳои зерин (номҳои супориш) барои шинохтани\n" "сатрҳои тарҷумашаванда дар файлҳои манбаъ:" msgid "Also use default keywords for supported languages" msgstr "Инчунин аз калидвожаҳои пешфарз барои забонҳои дастрас истифода баред" msgid "Learn about gettext keywords" msgstr "Маълумоти бештар дар бораи калидвожаҳои gettext" msgid "Update summary" msgstr "Хулосаи навсозӣ" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" msgid "New strings" msgstr "Сатрҳои нав" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" msgid "Obsolete strings" msgstr "Сатри кӯҳнашуда" msgid "(0 new, 0 obsolete)" msgstr "(0 нав, 0 кӯҳнашуда)" msgid "Open" msgstr "" msgid "Open file" msgstr "" msgid "Save file" msgstr "" msgid "Validate" msgstr "Санҷиш" msgid "Check for errors in the translation" msgstr "Санҷиши хатогиҳо дар тарҷума" msgid "Update from code" msgstr "Навсозӣ кардан аз рамз" msgid "Update from Code" msgstr "Навсозӣ кардан аз рамз" msgid "Update from source code" msgstr "Навсозӣ аз манбаи рамз" msgid "Sidebar" msgstr "Навори ҷонибӣ" msgid "Show or hide the sidebar" msgstr "Намоиш додан ё пинҳон кардани навори ҷонибӣ" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. msgid "Previous source text" msgstr "" msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "Матни манбаи куҳна (пеш аз тағйир ҳангоми навсозӣ), ки ба тарҷумаҳои носаҳеҳ " "тааллуқ дорад." msgid "Notes for translators" msgstr "" msgid "Comment" msgstr "" msgid "Add comment" msgstr "Илова кардани шарҳ" msgid "Add Comment" msgstr "Илова кардани шарҳ" msgid "Delete From Translation Memory" msgstr "Нест кардан аз ҳофизаи тарҷума" msgid "Delete from translation memory" msgstr "Нест кардан аз ҳофизаи тарҷума" msgid "Translation suggestions" msgstr "" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). msgid "No matches found" msgstr "Ягон мутобиқат ёфт нашуд" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). msgid "No Matches Found" msgstr "Ягон мутобиқат ёфт нашуд" msgid "This string was found in Poedit’s translation memory." msgstr "Ин тарҷума аз ҳофизаи тарҷумаҳои Poedit ворид карда шуд." msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" msgid "The TMX file is malformed." msgstr "Файли TMX дорои ҳакли нодуруст мебошад." msgid "No translations were found in the TMX file." msgstr "Ягон тарҷума дар файли TMX ёфт нашуд." #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Пойгоҳи иттилоотии ҳофизаи тарҷумаҳо вайрон аст: %s (%d)." #, c-format msgid "Translation memory error: %s (%d)." msgstr "Хатои ҳофизаи тарҷумаҳо: %s (%d)." msgid "Cannot create temporary directory." msgstr "Директорияи муваққатӣ эҷод карда нашуд." msgid "There are no translations. That’s unusual." msgstr "Ягон тарҷума вуҷуд надорад. Ин ғайриоддӣ аст." msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "Translators typically use PO template files (POTs) prepared for them by the " "developer." msgstr "" "Сатрҳое, ки метавонед тарҷума кунед аз низоми Gettext ба таври дастӣ илова " "намешаванд,\n" "вале онҳо аз рамзи манбаъ ба таври худкор бароварда мешаванд. Ин тавр онҳо " "дақиқ ва навшуда мебошанд.\n" "Тарҷумон қолиби файлҳои PO (POTs)-ро истифода мебарад, ки аз ҷониби " "барномасозон таҳия мешаванд." msgid "(Learn more about GNU gettext)" msgstr "(Маълумоти муфассал дар бораи GNU gettext)" msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" msgid "Update from POT" msgstr "Навсозӣ кардан аз POT" msgid "Take translatable strings from an existing POT template." msgstr "Сатрҳоро барои тарҷума аз қолиби POT-и мавҷудбуда истифода баред." msgid "" "You can also extract translatable strings directly from the source code:" msgstr "" "Шумо инчунин метавонед сатрҳоро барои тарҷума аз рамзи манбъ бевосита " "бароред:" msgid "Extract from sources" msgstr "Баровардан аз манбаҳо" msgid "Configure source code extraction in Properties." msgstr "Баровардани рамзи манбаро дар Танзимот танзим кунед." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #, c-format msgid "Version %s" msgstr "Барориши %s" msgid "Create new" msgstr "" msgid "Create new translation from POT template." msgstr "" msgid "Browse files" msgstr "" msgid "Open and edit translation files." msgstr "" msgid "Translate cloud project" msgstr "" msgid "Collaborate with other people online." msgstr "" msgid "Recent files" msgstr "" msgid "Sync" msgstr "Ҳамоҳангсозӣ" 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") #, c-format msgid "About %s" msgstr "Дар бораи %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #, c-format msgid "%s Preferences" msgstr "Хусусиятҳои %s" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "Хидматҳо" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "Пинҳон кардани %s" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "Дигаронро пинҳон кардан" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "Ҳамаро намоиш додан" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "Пӯшидани %s" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "Хусусиятҳо…" msgid "Preferences..." msgstr "Танзимот..." #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "Қаблӣ" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "Роиҷ" msgid "&Apply" msgstr "&Татбиқ кардан" msgid "Apply" msgstr "Татбиқ кардан" msgid "&Back" msgstr "&Бозгашт" msgid "Back" msgstr "Бозгашт" msgid "&Cancel" msgstr "&Бекор кардан" msgid "&Clear" msgstr "&Пок кардан" msgid "Clear" msgstr "Пок кардан" msgid "Copy" msgstr "Нусха бардоштан" msgid "Cu&t" msgstr "&Буридан" msgid "Cut" msgstr "Буридан" msgid "Edit" msgstr "Таҳрир" msgid "&Quit" msgstr "&Баромад" msgid "Help" msgstr "Кумак" msgid "&New" msgstr "&Нав" msgid "New" msgstr "Нав" msgid "&No" msgstr "&Не" msgid "No" msgstr "Не" msgid "&OK" msgstr "&OK" msgid "Open…" msgstr "Кушодан…" msgid "&Open..." msgstr "&Кушодан..." msgid "Open..." msgstr "Кушодан..." msgid "&Paste" msgstr "&Гузоштан" msgid "Paste" msgstr "Гузоштан" msgid "Preferences" msgstr "Хусусиятҳо" msgid "&Redo" msgstr "&Дубора анҷом додан" msgid "Refresh" msgstr "Навсозӣ" msgid "&Save as" msgstr "&Нигоҳ доштан ҳамчун" msgid "Save as" msgstr "Нигоҳ доштан ҳамчун" msgid "Select &All" msgstr "&Ҳамаро интихоб кардан" msgid "Select All" msgstr "Ҳамаро интихоб кардан" msgid "&Undo" msgstr "&Ботил сохтан" msgid "&Yes" msgstr "&Ҳа" msgid "Yes" msgstr "Ҳа" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "Боло" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "Поён" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "Чап" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "Рост" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "shift" poedit-3.5/locales/ru.po0000644000175100001770000024572314664354065012233 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 11:56\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" msgid "Hide this notification message" msgstr "Скрыть это уведомление" msgid "Don’t Show Again" msgstr "Больше не показывать" msgid "Don’t show again" msgstr "Больше не показывать" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(Новых: %i, устаревших: %i)" msgid "Collecting source files…" msgstr "Сбор данных в исходных файлах…" msgid "Extracting translatable strings…" msgstr "Извлечение переводимых строк…" msgid "Failed to load file with extracted translations." msgstr "Не удалось загрузить файл с извлечёнными переводами." msgid "Merging differences…" msgstr "Слияние различий…" msgid "Updating translations" msgstr "Обновление переводов" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "Файл «%s» не может быть открыт." msgid "Invalid file" msgstr "Недопустимый файл" #, c-format msgid "Malformed header: “%s”" msgstr "Недопустимый формат заголовка: «%s»" msgid "PO Translation Files" msgstr "Файлы перевода PO" msgid "POT Translation Templates" msgstr "Шаблоны перевода POT" msgid "XLIFF Translation Files" msgstr "Файлы перевода XLIFF" msgid "JSON Translation Files" msgstr "Файлы перевода JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "Файлы перевода Flutter" msgid "All Translation Files" msgstr "Все файлы перевода" msgid "The file is in a format not recognized by Poedit." msgstr "Не удалось определить формат файла." msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" "Этот JSON файл — не файл перевода, и не может быть отредактирован в Poedit." #, c-format msgid "Reading file content failed with the following error: %s" msgstr "Чтение файла было прервано из-за ошибки: %s" #, c-format msgid "" "File “%s” is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "Файл «%s» доступен только для чтения, и его нельзя сохранить.\n" "Сохраните файл под другим именем." #, c-format msgid "Couldn’t save file %s." msgstr "Не удалось сохранить файл «%s»." msgid "Screenshots:" msgstr "Скриншоты:" #, c-format msgid "%i line of file “%s” was not loaded correctly." msgid_plural "%i lines of file “%s” were not loaded correctly." msgstr[0] "%i строка файла \"%s\" не была корректно загружена." msgstr[1] "%i строки файла \"%s\" не были корректно загружены." msgstr[2] "%i строк файла \"%s\" не было корректно загружено." msgstr[3] "%i строк файла \"%s\" не было корректно загружено." #, c-format msgid "Line %d of file “%s” is corrupted (not valid %s data)." msgstr "%d строка файла «%s» повреждена (недопустимые данные в %s)." msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" "Неправильный файл PO: форма единственного числа msgstr используется вместе с " "msgid_plural" msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" "Неправильный файл PO: форма множественного числа msgstr используется без " "msgid_plural" msgid "Couldn’t load the file, it is probably damaged." msgstr "Не удалось загрузить файл, похоже он повреждён." msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "При загрузке файла произошли ошибки. В результате чего некоторые данные " "могут быть потеряны или повреждены." msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "Возникла проблема при форматировании файла (но он был успешно сохранён)." #, 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 и, соответственно, были изменены " "настройки." msgid "Error saving file" msgstr "Ошибка сохранения файла" #, c-format msgid "“%s” is not a valid POT file." msgstr "«%s» не является допустимым файлом POT." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Ошибка при загрузке файла XLIFF: %s" #, c-format msgid "unsupported version (%s)" msgstr "неподдерживаемая версия (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML msgid "Broken markup in translation string." msgstr "Неправильная разметка в строке перевода." msgid "(Use default language)" msgstr "(Использовать язык по умолчанию)" msgid "Language selection" msgstr "Выбор языка" msgid "Select your preferred language" msgstr "Выберите предпочитаемый язык" msgid "You must restart Poedit for this change to take effect." msgstr "Чтобы это изменение вступило в силу, необходимо перезапустить Poedit." msgid "Add Account" msgstr "Добавить аккаунт" msgid "Add account" msgstr "Добавить аккаунт" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "Узнать больше о %s" msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "Подключите Poedit к поддерживаемым облачным платформам локализации, чтобы " "легко синхронизировать переведённые с ними." msgid "How does cloud sync work?" msgstr "Как работает облачная синхронизация?" msgid "Account" msgstr "Аккаунт" msgid "(not signed in)" msgstr "(вход не выполнен)" msgid "File" msgstr "Файл" msgid "Open cloud translation" msgstr "Открыть облачный перевод" msgid "Manage accounts" msgstr "Управление аккаунтами" msgid "Project:" msgstr "Проект:" msgid "Language:" msgstr "Язык:" msgid "Sign in to Cloud Account" msgstr "Войти в аккаунт" msgid "Sign in to cloud account" msgstr "Войти в аккаунт" msgid "No translation projects listed in your account." msgstr "В вашем аккаунте нет проектов перевода." msgid "Downloading latest translations…" msgstr "Загружаются последние переводы…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #, c-format msgid "Sign in to %s" msgstr "Войти в %s" msgid "Syncing" msgstr "Синхронизация" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s…" msgstr "Идёт загрузка переводов в %s…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s failed." msgstr "Загрузка переводов в %s не удалась." msgid "Syncing error" msgstr "Ошибка синхронизации" msgid "Add" msgstr "Добавить" msgid "Unknown Crowdin error." msgstr "Неизвестная ошибка Crowdin." msgid "Not authorized, please sign in again." msgstr "Не авторизованы, пожалуйста войдите снова." msgid "Downloading translations is disabled in this project." msgstr "Загрузка переводов отключена в этом проекте." msgid "Sign In" msgstr "Войти" msgid "Sign in" msgstr "Войти" msgid "Sign Out" msgstr "Выйти" msgid "Sign out" msgstr "Выйти" msgid "Learn more about Crowdin" msgstr "Подробнее о Crowdin" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" "Crowdin - это онлайн-платформа для управления локализацией и совместного " "перевода." msgid "Waiting for authentication…" msgstr "Ожидание авторизации…" msgid "Updating user information…" msgstr "Обновление информации о пользователе…" msgid "Sign in to Crowdin" msgstr "Войти в Crowdin" msgid "Syncing with Crowdin failed." msgstr "Синхронизация с Crowdin не удалась." msgid "Crowdin error" msgstr "Ошибка Crowdin" msgid "Uploading translations…" msgstr "Выгрузка переводов…" msgid "&Copy" msgstr "&Копировать" msgid "Learn more" msgstr "Подробнее" msgid "&Help" msgstr "Справка (&H)" msgid "MO files can’t be directly edited in Poedit." msgstr "Файлы MO нельзя редактировать непосредственно в Poedit." msgid "Error opening file" msgstr "Ошибка при открытии файла" msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "Вместо этого откройте и измените соответствующий файл PO. Когда вы сохраните " "его, файл MO тоже обновится." msgid "don’t delete temporary files (for debugging)" msgstr "не удалять временные файлы (для отладки)" msgid "handle a poedit:// URI" msgstr "обрабатывать адрес poedit://" msgid "go to item at given line number" msgstr "перейти к элементу с заданным номером строки" msgid "Failed to communicate with Poedit process." msgstr "Не удалось подключиться к процессу Poedit." #, c-format msgid "Unhandled exception occurred: %s" msgstr "Произошло непредвиденное исключение: %s" msgid "Select translation template" msgstr "Выберите шаблон перевода" msgid "Select translation file" msgstr "Выберите файл перевода" msgid "Poedit is an easy to use translation editor." msgstr "Poedit — это простой в использовании редактор переводов." msgid "You can’t drop more than one file on Poedit window." msgstr "В окно Poedit можно перетащить только один файл." #, c-format msgid "File “%s” is not a translation file." msgstr "Файл «%s» не является файлом перевода." #, c-format msgid "File “%s” doesn’t exist." msgstr "Файл «%s» не существует." 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". #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "" "Проверка правописания отключена, так как словарь для языка «%s» не " "установлен." msgid "Install" msgstr "Установить" #, c-format msgid "The file “%s” has been changed by another application." msgstr "Файл «%s» был изменён другим приложением." msgid "Reload file" msgstr "Перезагрузить файл" msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "Вы хотите перезагрузить файл с диска? Ваши несохранённые изменения в Poedit " "будут потеряны, если вы это сделаете." msgid "Ignore" msgstr "Игнорировать" msgid "Reload File" msgstr "Перезагрузить файл" msgid "The file has been modified. Do you want to save changes?" msgstr "Этот файл был изменён. Вы желаете сохранить изменения?" msgid "Save changes" msgstr "Сохранение изменений" msgid "Your changes will be lost if you don’t save them." msgstr "Ваши изменения будут потеряны, если не сохранить их." msgid "Save" msgstr "Сохранить" msgid "Do&n’t save" msgstr "Не сохранять (&N)" msgid "Don’t Save" msgstr "Не сохранять" msgid "The changes made by the other application will be lost if you save." msgstr "" "Изменения, внесённые другим приложением, будут потеряны если вы сохраните." msgid "Cancel" msgstr "Отмена" msgid "Save Anyway" msgstr "Сохранить всё равно" msgid "Save anyway" msgstr "Сохранить всё равно" msgid "Save as…" msgstr "Сохранить как…" msgid "Compile to…" msgstr "Компилировать в…" msgid "Compiled Translation Files" msgstr "Скомпилированные файлы перевода" msgid "Export to HTML…" msgstr "Экспорт в HTML…" msgid "HTML Files" msgstr "Файлы HTML" #, c-format msgid "In: %s" msgstr "В: %s" msgid "Source code not available." msgstr "Исходный код недоступен." msgid "Updating failed" msgstr "Не удалось обновить" 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 "" "Перевод не может быть обновлён из исходного кода, так как код не был найден " "в месте, указанном в свойствах файла." msgid "Permission denied." msgstr "В доступе отказано." 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. 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. msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "Если вы ранее отказали в доступе к файлам, то вы можете разрешить его в " "«Системные настройки» > «Конфиденциальность и безопасность» > " "«Конфиденциальность» > «Файлы и папки»." msgid "Translation entries in the file are probably incorrect." msgstr "Вероятно, записи в файле неправильны." msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "" "Не удалось обновить файл. Нажмите кнопку «Подробности >>» для получения " "дополнительных сведений." msgid "Open translation template" msgstr "Открыть шаблон перевода" #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "В переводе найдена %d проблема." msgstr[1] "В переводе найдены %d проблемы." msgstr[2] "В переводе найдено %d проблем." msgstr[3] "В переводе найдено %d проблем." msgid "Validation results" msgstr "Результаты проверки" msgid "" "Entries with errors were marked in red in the list. Details of the error " "will be shown when you select such an entry." msgstr "" "Записи с ошибками были выделены в списке красным цветом. Если выбрать такую " "запись, будут показаны подробные сведения об ошибке." msgid "The file was saved safely." msgstr "Файл был успешно сохранён." msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "Файл был сохранён и скомпилирован в формат MO. Но он может работать " "неправильно." msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "Файл был сохранён, но его не удалось скомпилировать в формат MO и " "использовать." msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "Файл был скомпилирован в формат MO, но скорее всего не будет правильно " "работать." msgid "The file cannot be compiled into the MO format and used." msgstr "" "Не удаётся скомпилировать данный файл в формат MO для дальнейшего " "использования." msgid "No problems with the translation found." msgstr "Не найдено проблем с переводом." #, 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 записей ещё не переведено." msgid "The translation is ready for use." msgstr "Перевод готов к использованию." #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "Poedit автоматически исправил неверное содержимое в файле «%s»." msgid "" "The file contained duplicate items, which is not allowed in PO files and " "would prevent the file from being used. Poedit fixed the issue, but you " "should review translations of any items marked as needing work and correct " "them if necessary." msgstr "" "Этот файл содержал в себе повторяющиеся элементы, которые недопустимы в " "файлах PO и могли бы помешать его использованию. Poedit исправил проблему, " "но следует просмотреть все переводы, помеченные как требующие доработки, и " "исправить их при необходимости." msgid "Language of the translation isn’t set." msgstr "Язык перевода не указан." msgid "Set Language" msgstr "Выбор языка" msgid "Set language" msgstr "Задать язык" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." msgid "" "Suggestions are not available if the translation language is not set " "correctly. Other features, such as plural forms, may be affected as well." msgstr "" "Предложения недоступны, пока не выбран язык перевода. Также не будут " "поддерживаться формы множественного числа и другие функции." msgid "Language of the translation is the same as source language." msgstr "Язык перевода совпадает с исходным языком." msgid "Fix Language" msgstr "Исправить язык" msgid "Fix language" msgstr "Исправить язык" msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "В этом файле есть записи с формами множественного числа, но нет заголовка " "Plural-Forms." msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "Записи в этом файле имеют количество форм множественного числа, отличное от " "указанного в заголовке Plural-Forms" msgid "Required header Plural-Forms is missing." msgstr "Необходимый заголовок Plural-Forms отсутствует." #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Ошибка синтаксиса в заголовке Plural-Forms («%s»)." msgid "Fix the Header" msgstr "Исправить заголовок" 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". #, 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.")" msgid "Review" msgstr "Проверить" msgid "Would you like to use English for source text?" msgstr "Хотите использовать английский язык для исходного текста?" #, 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" msgid "Load English" msgstr "Загрузить английский" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Переведено: %d из %d (%d %%)" #, c-format msgid "Remaining: %d" msgstr "Осталось: %d" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d ошибка" msgstr[1] "%d ошибки" msgstr[2] "%d ошибок" msgstr[3] "%d ошибок" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d запись" msgstr[1] "%d записи" msgstr[2] "%d записей" msgstr[3] "%d записей" msgid " (unsaved)" msgstr " (не сохранён)" msgid " (modified)" msgstr " (изменён)" #, c-format msgid "Failed to update translation memory: %s" msgstr "Не удалось обновить память переводов: %s" msgid "Remove same-as-source translations" msgstr "Удалить переводы, совпадающие с исходным текстом" msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "Вы хотите удалить все переводы, которые идентичны исходному тексту?" msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" "Это действие удалит все переводы, совпадающие с исходным текстом. Это " "невозможно отменить." msgid "Keep" msgstr "Оставить" msgid "Remove" msgstr "Удалить" msgid "Purge deleted translations" msgstr "Очистить удалённые переводы" msgid "Do you want to remove all translations that are no longer used?" msgstr "Действительно удалить все неиспользуемые переводы?" 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 "" "Если продолжить, то все переводы, помеченные как удалённые, будут " "безвозвратно удалены. Если они будут повторно добавлены в будущем, их " "придётся заново переводить." msgid "Purge" msgstr "Очистить" msgid "Copy from source text" msgstr "Копировать исходный текст" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "Удалить перевод" msgid "Clear Translation" msgstr "Удалить перевод" msgid "Edit comment" msgstr "Править комментарий" msgid "Edit Comment" msgstr "Править комментарий" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "Вхождения кода" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "Вхождения кода" msgid "Hide Sidebar" msgstr "Скрыть боковую панель" msgid "Show Sidebar" msgstr "Показать боковую панель" msgid "Hide Status Bar" msgstr "Скрыть строку состояния" msgid "Show Status Bar" msgstr "Показать строку состояния" msgid "String length in characters: translation | source" msgstr "Длина строки в символах: перевод | источник" msgid "String length in characters" msgstr "Длина строки в символах" msgid "Source text" msgstr "Исходный текст" msgid "Singular" msgstr "Единственное" msgid "Plural" msgstr "Множественное" msgid "Translation" msgstr "Перевод" msgid "Pre-translated" msgstr "Черновой перевод" 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. msgid "Needs work" msgstr "Требует проверки" msgid "" "POT files are only templates and don’t contain any translations themselves.\n" "To make a translation, create a new PO file based on the template." msgstr "" "Файлы POT являются шаблонами и не содержат переводов.\n" "Чтобы сделать перевод, создайте файл PO из шаблона." msgid "Create new translation" msgstr "Создать новый перевод" msgid "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 msgid "Source text ID" msgstr "ИД исходного текста" msgid "Everything" msgstr "Всё" #, c-format msgid "Form %i" msgstr "Форма %i" #, c-format msgid "Form %i (unused)" msgstr "Форма %i (не используется)" msgid "Zero" msgstr "Ноль" msgid "One" msgstr "Один" msgid "Two" msgstr "Два" msgid "Other" msgstr "Другое" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, c-format msgid "String context: %s" msgstr "Контекст строки: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #, c-format msgid "String identifier: %s" msgstr "Идентификатор строки: %s" #, c-format msgid "%s Format" msgstr "Формат %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "Формат %s" #, c-format msgid "Translation — %s" msgstr "Перевод — %s" msgid "ID" msgstr "ИД" #, c-format msgid "Source text — %s" msgstr "Исходный текст — %s" msgid "unknown language" msgstr "неизвестный язык" #, c-format msgid "Network error: %s (%d)" msgstr "Ошибка сети: %s (%d)" msgid "Unknown error" msgstr "Неизвестная ошибка" #, c-format msgid "Failed command: %s" msgstr "Сбой команды: %s" msgid "Failed to merge gettext catalogs." msgstr "Не удалось объединить каталоги gettext." msgid "Open in Editor" msgstr "Открыть в редакторе" msgid "Open in editor" msgstr "Открыть в редакторе" msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "В файле нет информации о вхождениях этой строки в исходный код." msgid "No usage information" msgstr "Нет информация об использовании" #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d вхождение кода" msgstr[1] "%d вхождения кода" msgstr[2] "%d вхождений кода" msgstr[3] "%d вхождений кода" msgid "Source code not found" msgstr "Исходный код не найден" 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 не может показать исходный код, в котором используется строка, потому " "что файл либо недоступен в указанном месте, либо это символическая ссылка, " "которая не указывает на настоящий файл." msgid "File cannot be opened" msgstr "Не удаётся открыть файл" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "Poedit не смог открыть файл «%s»." msgid "Find" msgstr "Найти" msgid "Replace" msgstr "Заменить" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "Настройки" msgid "Ignore case" msgstr "Не учитывать регистр" msgid "Wrap around" msgstr "Искать по кругу" msgid "Whole words only" msgstr "Только полные слова" msgid "Find in source texts" msgstr "Искать в исходных текстах" msgid "Find in translations" msgstr "Искать в переводах" msgid "Find in comments" msgstr "Искать в комментариях" msgid "Close" msgstr "Закрыть" msgid "Replace &All" msgstr "Заменить все (&A)" msgid "Replace &all" msgstr "Заменить все (&A)" msgid "&Replace" msgstr "Заменить (&R)" msgid "< &Previous" msgstr "< Пред. (&P)" msgid "&Next >" msgstr "След. > (&N)" msgid "String to find" msgstr "Искомая строка" msgid "Replacement string" msgstr "Строка замены" #, c-format msgid "Cannot execute program: %s" msgstr "Не удаётся выполнить программу: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "Название языка или код" msgid "Translation Language" msgstr "Язык перевода" msgid "Language of the translation:" msgstr "Язык перевода:" msgid "All strings" msgstr "Все строки" msgid "Couldn’t download Localazy project details." msgstr "Не удалось скачать информацию о проекте Localazy." msgid "There was an error when uploading translations to Localazy." msgstr "Произошла ошибка при загрузке переводов на Localazy." msgid "Projects" msgstr "Проекты" msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Localazy - это высоко автоматизированная платформа для локализации, " "позволяющая любому человеку легко переводить свои продукты и контент на " "несколько языков." msgid "Add Project" msgstr "Добавить проект" msgid "Add project" msgstr "Добавить проект" msgid "Poedit - Catalogs manager" msgstr "Poedit — диспетчер папок" msgid "Edit…" msgstr "Править…" msgid "Create new translations project" msgstr "Создать новый проект переводов" msgid "Delete the project" msgstr "Удалить проект" msgid "Edit the project" msgstr "Править проект" msgid "Update all" msgstr "Обновить всё" msgid "Update all catalogs in the project" msgstr "Обновить все каталоги в этом проекте" msgid "Total" msgstr "Всего" msgid "Untrans" msgstr "Не переведено" msgctxt "column/row header" msgid "Needs Work" msgstr "Требует проверки" msgid "Errors" msgstr "Ошибки" msgid "Last modified" msgstr "Последнее изменение" msgid "Select directory" msgstr "Выберите папку" msgid "Directories:" msgstr "Папки:" msgid "" msgstr "<без имени>" #, c-format msgid "Do you want to delete project “%s”?" msgstr "Вы действительно хотите удалить проект «%s»?" msgid "Delete project" msgstr "Удалить проект" msgid "Deleting the project will not delete any translation files." msgstr "Удаление проекта не приведёт к удалению файлов перевода." msgid "Confirmation" msgstr "Подтверждение" msgid "Update all catalogs in this project?" msgstr "Обновить все каталоги в этом проекте?" msgid "Performs update from source code on all files in the project." msgstr "Выполняет обновление из исходного кода всех файлов проекта." msgid "Check for Updates…" msgstr "Проверить наличие обновлений…" msgid "Catalogs Manager" msgstr "Диспетчер папок" msgid "&Preferences…" msgstr "Настройки (&P)…" msgid "&Edit" msgstr "&Правка" msgid "Undo" msgstr "Отменить" msgid "Redo" msgstr "Повторить" msgid "Paste and Match Style" msgstr "Стиль копирования и вставки" msgid "Delete" msgstr "Удалить" msgid "Spelling and Grammar" msgstr "Проверка правописания" msgid "Show Spelling and Grammar" msgstr "Показывать ошибки правописания" msgid "Check Document Now" msgstr "Проверить документ" msgid "Check Spelling While Typing" msgstr "Проверять правописание во время ввода" msgid "Check Grammar With Spelling" msgstr "Проверять также и грамматику" msgid "Correct Spelling Automatically" msgstr "Автоматически исправлять ошибки правописания" msgid "Substitutions" msgstr "Замены" msgid "Show Substitutions" msgstr "Показывать варианты замены" msgid "Smart Copy/Paste" msgstr "Интеллектуальное копирование и вставка" msgid "Smart Quotes" msgstr "Интеллектуальные кавычки" msgid "Smart Dashes" msgstr "Интеллектуальная расстановка переносов" msgid "Smart Links" msgstr "Интеллектуальные ссылки" msgid "Text Replacement" msgstr "Замена текста" msgid "Transformations" msgstr "Преобразования" msgid "Make Upper Case" msgstr "Прописные" msgid "Make Lower Case" msgstr "Строчные" msgid "Capitalize" msgstr "С заглавной буквы" msgid "Speech" msgstr "Речь" msgid "Start Speaking" msgstr "Начать озвучивание" msgid "Stop Speaking" msgstr "Остановить озвучивание" msgid "&View" msgstr "Вид (&V)" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Show Toolbar" msgstr "Показать панель инструментов" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Customize Toolbar…" msgstr "Настроить панель инструментов…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Enter Full Screen" msgstr "Перейти в полноэкранный режим" msgid "Window" msgstr "Окно" msgid "Minimize" msgstr "Свернуть" msgid "Zoom" msgstr "Масштаб" msgid "Welcome to Poedit" msgstr "Добро пожаловать в Poedit" msgid "Bring All to Front" msgstr "Поместить все окна на передний план" msgid "Information about the translator" msgstr "Информация о переводчике" msgid "Name:" msgstr "Имя:" msgid "Your Name" msgstr "Ваше имя" msgid "Email:" msgstr "Электронная почта:" msgid "you@example.com" msgstr "ваша_почта@пример.com" msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "Ваше имя и почта будут использоваться только при указании последнего " "переводчика в заголовках файлов GNU gettext." msgid "Editing" msgstr "Правка" msgid "Automatically compile MO file when saving" msgstr "Автоматически компилировать файл MO при сохранении" msgid "Show summary after updating files" msgstr "Показывать сводку после обновления файлов" msgid "Check spelling" msgstr "Проверять правописание" msgid "Always change focus to text input field" msgstr "Всегда переключаться на поле ввода текста" msgid "" "Never let the list of strings take focus. If enabled, you must use Ctrl-" "arrows for keyboard navigation but you can also type text immediately, " "without having to press Tab to change focus." msgstr "" "Не фокусироваться на списке строк. Если включено, для перемещения с помощью " "клавиатуры необходимо нажимать Ctrl+стрелки, но при этом можно вводить текст " "немедленно, без переключения фокуса клавишей Tab." msgid "Appearance" msgstr "Внешний вид" msgid "Use custom list font:" msgstr "Использовать настраиваемый шрифт для списка:" msgid "Use custom text fields font:" msgstr "Шрифт полей ввода:" msgid "Change UI language" msgstr "Изменить язык интерфейса" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions msgid "(requires Windows 8 or newer)" msgstr "(требует Windows 8 или новее)" msgid "General" msgstr "Общее" msgid "Use translation memory" msgstr "Использовать память переводов" msgid "Manage…" msgstr "Управление…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "При обновлении из исходного кода" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "подбирать похожий перевод внутри файла" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "переводить начерно из памяти переводов" 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 может попытаться заполнить новые строки только предыдущими переводами " "из этого файла либо из вашей памяти переводов. Использование памяти перевода " "будет не очень эффективным, если она почти пуста, но будет улучшаться по " "мере добавления в неё переводов." msgid "Stored translations:" msgstr "Сохранённых переводов:" msgid "Database size on disk:" msgstr "Размер базы данных на диске:" msgid "Import Translation Files…" msgstr "Импорт файлов перевода…" msgid "Import translation files…" msgstr "Импорт файлов перевода…" msgid "Import From TMX…" msgstr "Импорт из TMX…" msgid "Import from TMX…" msgstr "Импорт из TMX…" msgid "Export To TMX…" msgstr "Экспорт в TMX…" msgid "Export to TMX…" msgstr "Экспорт в TMX…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). msgid "Reset" msgstr "Сброс" msgid "Select translation files to import" msgstr "Выберите файлы переводов для импорта" msgid "Translation Memory" msgstr "Память переводов" msgid "Importing translations…" msgstr "Импорт переводов…" #, c-format msgid "Error loading translation file “%s”." msgstr "Ошибка загрузки файла перевода «%s»." msgid "Finalizing…" msgstr "Завершение…" msgid "Select TMX files to import" msgstr "Выберите TMX-файлы для импорта" msgid "TMX Files" msgstr "TMX-файлы" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "Не удалось импортировать память перевода из «%s»." msgid "Import error" msgstr "Ошибка импорта" msgid "Export as…" msgstr "Экспортировать как…" msgid "Exporting translations…" msgstr "Экспорт переводов…" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "Не удалось экспортировать память перевода в «%s»." msgid "Export error" msgstr "Ошибка экспорта" msgid "Reset translation memory" msgstr "Очистить память переводов" msgid "Are you sure you want to reset the translation memory?" msgstr "Вы уверены, что хотите очистить память переводов?" 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. msgid "TM" msgstr "ПП" msgid "" "Source code extractors are used to find translatable strings in the source " "code files and extract them so that they can be translated." msgstr "" "Экстракторы используются для поиска переводимых строк в файлах исходного " "кода и извлекают их так, чтобы их можно было перевести." msgid "Custom Extractors:" msgstr "Пользовательские экстракторы:" msgid "Custom extractors:" msgstr "Пользовательские экстракторы:" msgid "GNU gettext" msgstr "GNU gettext" 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 и другие)." msgid "Delete extractor" msgstr "Удалить экстрактор" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "Вы уверены, что хотите удалить экстрактор «%s»?" msgid "Extractors" msgstr "Экстракторы" msgid "Accounts" msgstr "Аккаунты" msgid "Automatically check for updates" msgstr "Автоматически проверять наличие обновлений" msgid "Include beta versions" msgstr "Включая бета-версии" msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "Бета-версии содержат новейшие функции и улучшения, но могут быть менее " "стабильными." msgid "Updates" msgstr "Обновления" msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Эти настройки влияют на внутреннее форматирование файлов PO. Измените их, " "если у вас есть особые требования, например, если вы используете систему " "контроля версий." msgid "Line endings:" msgstr "Окончания строк:" msgid "Unix (recommended)" msgstr "Unix (желательны)" msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "Перенос:" msgid "Preserve formatting of existing files" msgstr "Сохранять форматирование существующих файлов" msgid "Advanced" msgstr "Дополнительно" msgid "Settings" msgstr "Настройки" msgid "Preparing strings…" msgstr "Подготовка строк…" msgid "Pre-translating from translation memory…" msgstr "Черновой перевод из памяти переводов…" #, 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 строк" msgid "Pre-translating…" msgstr "Выполнение чернового перевода…" 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. msgid "Pre-translate" msgstr "Черновой перевод" msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "Для чернового перевода требуется, чтобы был доступен исходный текст. Эта " "функция не будет работать, если используются только идентификаторы без " "фактического текста." msgid "Cannot pre-translate from unknown language." msgstr "Невозможно предварительно перевести с неизвестного языка." msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Черновой перевод требует знания языка исходного текста. Poedit не смог " "обнаружить его в этом файле." msgid "Only fill in exact matches" msgstr "Только при точном совпадении" msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "По умолчанию не полностью совпадающие результаты также будут заполнены и " "помечены как требующие доработки. Отметьте этот вариант, чтобы заполнять " "только полные совпадения." msgid "Don’t mark exact matches as needing work" msgstr "Не помечать полные совпадения как требующие доработки" 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 "" "Включите это только если вы уверены в качестве вашей памяти переводов. По " "умолчанию все совпадения из памяти переводов отмечаются как требующие " "доработки и подлежат проверке перед использованием." msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "Черновой перевод автоматически находит в памяти переводов точные или " "неточные совпадения для строк без перевода и заполняет их переводами." #, 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 строк были заполнены предварительным переводом." msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "Переводы были отмечены как требующие доработки. Проверьте их правильность." msgid "No entries could be pre-translated." msgstr "" "Строки, которые можно было бы заполнить предварительным переводом, " "отсутствуют." msgid "" "The TM doesn’t contain any strings similar to the content of this file. It " "is only effective for semi-automatic translations after Poedit learns enough " "from files that you translated manually." msgstr "" "Память переводов не содержит строк, похожих на содержимое этого файла. Она " "подходит только для полуавтоматического перевода после того, как Poedit " "соберёт достаточно данных из файлов, которые вы перевели вручную." msgid "Cancelling…" msgstr "Отменяется…" msgid "Drag Folders or Files Here" msgstr "Перетащите сюда папки или файлы" msgid "Drag folders or files here" msgstr "Перетащите сюда папки или файлы" msgid "Add Folders…" msgstr "Добавить папки…" msgid "Add folders…" msgstr "Добавить папки…" msgid "Add Files…" msgstr "Добавить файлы…" msgid "Add files…" msgstr "Добавить файлы…" msgid "Add Wildcard…" msgstr "Добавить по шаблону…" msgid "Add wildcard…" msgstr "Добавить по шаблону…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) msgid "Reveal in Finder" msgstr "Показать в Finder" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" msgid "Show in Explorer" msgstr "Показать в проводнике" msgid "Show in Folder" msgstr "Показать в папке" msgid "Paths" msgstr "Папки" msgid "Excluded paths" msgstr "Исключенные пути" msgid "Advanced extraction settings" msgstr "Расширенные настройки извлечения" msgid "Extract notes for translators from:" msgstr "Извлекать пометки для переводчиков:" msgid "Comments prefixed with:" msgstr "Из комментариев, начинающихся с:" msgid "All comments" msgstr "Все комментарии" msgid "Additional xgettext flags:" msgstr "Дополнительные флаги xgettext:" msgid "Additional keywords" msgstr "Дополнительные ключевые слова" msgid "Name of the project the translation is for" msgstr "Название проекта перевода для" msgid "Team name and email address or URL" msgstr "Имя команды и адрес электронной почты или URL-адрес" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "например, nplurals=2; plural=(n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (желательна)" msgid "Please save the file first. This section cannot be edited until then." msgstr "Сначала нужно сохранить файл. До этого данный раздел нельзя изменить." msgid "Placeholders correctness" msgstr "Правильность применения заполнителей" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "В переводе отсутствует заполнитель «%s»." #, c-format msgid "Superfluous placeholder “%s” that isn’t in source text." msgstr "Лишний заполнитель «%s», которого нет в исходном тексте." msgid "Plural form translations" msgstr "Переводы форм множественного числа" msgid "Not all plural forms are translated." msgstr "Не все формы множественного числа переведены." msgid "Inconsistent upper/lower case" msgstr "Несоответствие верхнего/нижнего регистра" msgid "The translation should start as a sentence." msgstr "Перевод должен начинаться как предложение." msgid "The translation should start with a lowercase character." msgstr "Перевод должен начинаться с маленькой буквы." msgid "Inconsistent whitespace" msgstr "Несогласованные пробелы" msgid "The translation doesn’t start with a space." msgstr "Этот перевод не начинается с пробела." msgid "The translation starts with a space, but the source text doesn’t." msgstr "Перевод начинается с пробела, но исходная строка - нет." msgid "The translation is missing a newline at the end." msgstr "В переводе пропущена новая строка в конце." msgid "The translation ends with a newline, but the source text doesn’t." msgstr "Перевод заканчивается новой строкой, но исходный текст - нет." msgid "The translation is missing a space at the end." msgstr "В переводе пропущен пробел в конце." msgid "The translation ends with a space, but the source text doesn’t." msgstr "Перевод заканчивается пробелом, но исходная строка - нет." msgid "Punctuation checks" msgstr "Проверки пунктуации" #, c-format msgid "The translation should end with “%s”." msgstr "Перевод должен заканчиваться на «%s»." #, c-format msgid "The translation should not end with “%s”." msgstr "Перевод не должен заканчиваться на «%s»." #, c-format msgid "The translation ends with “%s”, but the source text ends with “%s”." msgstr "" "Перевод заканчивается на «%s», но исходный текст заканчивается на «%s»." msgid "Cloud" msgstr "Облако" msgid "Clear Menu" msgstr "Очистить меню" msgid "Clear menu" msgstr "Очистить меню" msgid "Comment:" msgstr "Комментарий:" msgid "Update" msgstr "Обновить" msgid "&Delete" msgstr "&Удалить" msgid "Delete the comment" msgstr "Удалить комментарий" msgid "Edit project" msgstr "Правка проекта" msgid "Project name:" msgstr "Название проекта:" msgid "Browse" msgstr "Обзор" msgid "Add directory to the list" msgstr "Добавить папку в список" msgid "OK" msgstr "ОК" msgid "&File" msgstr "&Файл" msgid "&New…" msgstr "Создать (&N)…" msgid "New from &POT/PO file…" msgstr "Создать из файла POT/PO (&P)…" msgid "New From &POT/PO File…" msgstr "Создать из файла POT/PO (&P)…" msgid "&Open…" msgstr "Открыть (&O)…" msgid "Open Recent" msgstr "Недавно открытые" msgid "Open recent" msgstr "Недавно открытые" msgid "Open cloud translation…" msgstr "Открыть облачный перевод…" msgid "Open Cloud Translation…" msgstr "Открыть облачный перевод…" msgid "&Start window" msgstr "Начальное окно (&S)" msgid "&Start Window" msgstr "Начальное окно (&S)" msgid "Catalogs &manager" msgstr "Диспетчер папок (&M)" msgid "Catalogs &Manager" msgstr "Диспетчер папок (&M)" msgid "&Close" msgstr "Закрыть (&C)" msgid "&Save" msgstr "Сохранить (&S)" msgid "Save &as…" msgstr "Сохранить как (&A)…" msgid "Save &As…" msgstr "Сохранить как (&A)…" msgid "Compile to MO…" msgstr "Компилировать в формат MO…" msgid "E&xport to HTML…" msgstr "Экспорт в HTML…" msgid "Check for updates…" msgstr "Проверить наличие обновлений…" msgid "Settings…" msgstr "Настройки…" msgid "&Preferences" msgstr "Настройки (&P)" msgid "E&xit" msgstr "Выход (&X)" msgid "Quit" msgstr "Выход" msgid "Copy from singular" msgstr "Копировать форму единственного числа" msgid "Copy From Singular" msgstr "Копировать форму единственного числа" msgid "Translation needs &work" msgstr "Перевод требует проверки (&W)" msgid "Translation Needs &Work" msgstr "Перевод требует проверки (&W)" msgid "Edit &comment" msgstr "Править комментарий (&C)" msgid "Edit &Comment" msgstr "Править комментарий (&C)" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "Предложения" msgid "&Find…" msgstr "Найти (&F)…" msgid "Replace…" msgstr "Заменить…" msgid "Find next" msgstr "Далее" msgid "Find previous" msgstr "Назад" msgid "Find and Replace…" msgstr "Найти и заменить…" msgid "Find Next" msgstr "Далее" msgid "Find Previous" msgstr "Назад" msgid "Show string &ID" msgstr "Показать идентификатор строки (&I)" msgid "Show String &ID" msgstr "Показать идентификатор строки (&I)" msgid "Show warnings" msgstr "Показать предупреждения" msgid "Show Warnings" msgstr "Показать предупреждения" msgid "Sort by &file order" msgstr "Упорядочивать как в файле (&F)" msgid "Sort by &File Order" msgstr "Упорядочивать как в файле (&F)" msgid "Sort by &source" msgstr "Упорядочивать по исходному тексту (&S)" msgid "Sort by &Source" msgstr "Упорядочивать по исходному тексту (&S)" msgid "Sort by &translation" msgstr "Упорядочивать по переводу (&T)" msgid "Sort by &Translation" msgstr "Упорядочивать по переводу (&T)" msgid "&Group by context" msgstr "Группировать по контексту (&G)" msgid "&Group By Context" msgstr "Группировать по контексту (&G)" msgid "Entries with errors first" msgstr "Показывать записи с ошибками в начале" msgid "Entries with Errors First" msgstr "Показывать записи с ошибками в начале" msgid "&Untranslated entries first" msgstr "Показать непереведённые записи в начале (&U)" msgid "&Untranslated Entries First" msgstr "Показать непереведённые записи в начале (&U)" msgid "&Show code occurrences" msgstr "Показать вхождения кода (&S)" msgid "&Show Code Occurrences" msgstr "Показать вхождения кода (&S)" msgid "Show sidebar" msgstr "Показать боковую панель" msgid "Show status bar" msgstr "Показать строку состояния" msgid "&Translation" msgstr "Перевод (&T)" msgid "&Update from source code" msgstr "Обновить из исходного кода (&U)" msgid "&Update from Source Code" msgstr "Обновить из исходного кода (&U)" msgid "Update from &POT file…" msgstr "Обновить из файла POT (&P)…" msgid "Update from &POT File…" msgstr "Обновить из файла POT (&P)…" msgid "Sync with Crowdin" msgstr "Синхронизировать с Crowdin" msgid "Pre-&translate…" msgstr "Черновой перевод (&T)…" msgid "&Validate translations" msgstr "Проверить перевод (&V)" msgid "&Validate Translations" msgstr "Проверить перевод (&V)" msgid "Remove Same-as-Source Translations" msgstr "Удалить переводы, совпадающие с исходным текстом" msgid "&Purge deleted translations" msgstr "Очистить удалённые переводы (&P)" msgid "&Purge Deleted Translations" msgstr "Очистить удалённые переводы (&P)" msgid "&Properties…" msgstr "Свойства (&P)…" msgid "&Go" msgstr "&Перейти" msgid "&Done and next" msgstr "Закончить и перейти далее (&D)" msgid "&Done and Next" msgstr "Закончить и перейти далее (&D)" msgid "Previously edited" msgstr "Предыдущий отредактированный" msgid "Previously Edited" msgstr "Предыдущий отредактированный" msgid "&Previous translation" msgstr "Предыдущий перевод" msgid "&Previous Translation" msgstr "Предыдущий перевод (&P)" msgid "&Next translation" msgstr "Следующий перевод (&N)" msgid "&Next Translation" msgstr "Следующий перевод" msgid "P&revious unfinished" msgstr "Предыдущий незаконченный (&R)" msgid "P&revious Unfinished" msgstr "Предыдущий незаконченный (&R)" msgid "Ne&xt unfinished" msgstr "Следующий незаконченный (&X)" msgid "Ne&xt Unfinished" msgstr "Следующий незаконченный (&X)" msgid "Previous plural form" msgstr "Предыдущая форма множественного числа" msgid "Previous Plural Form" msgstr "Предыдущая форма множественного числа" msgid "Next plural form" msgstr "Следующая форма множественного числа" msgid "Next Plural Form" msgstr "Следующая форма множественного числа" msgid "&Online help" msgstr "Справка в интернете (&O)" msgid "&Online Help" msgstr "Справка в интернете (&O)" msgid "&GNU gettext manual" msgstr "Руководство по GNU gettext (&G)" msgid "&GNU gettext Manual" msgstr "Руководство по GNU gettext (&G)" msgid "&About Poedit" msgstr "О программе Poedit (&A)" msgid "&About" msgstr "&О программе" msgid "Extractor setup" msgstr "Настройка экстрактора" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "" "Список расширений, разделённых точкой с запятой (например, *.cpp; *.h):" msgid "Invocation:" msgstr "Вызов:" msgid "Command to extract translations:" msgstr "Команда для извлечения перевода:" 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 — кодировку (см. ниже)." msgid "An item in keywords list:" msgstr "Пункт в списке ключевых слов:" msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Это будет добавлено в командную строку для каждого ключевого слова. %k " "означает ключевое слово." msgid "An item in input files list:" msgstr "Пункт в списке входных файлов:" #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "Это будет добавлено в командную строку для каждого входного файла. %f " "означает название файла." msgid "Source code charset:" msgstr "Кодировка исходного кода:" #, 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 означает кодировку." msgid "Translation Properties" msgstr "Свойства перевода" msgid "Project name and version:" msgstr "Название и версия проекта:" msgid "Language team:" msgstr "Команда переводчиков:" msgid "Plural forms:" msgstr "Формы множественного числа:" msgid "Use default rules for this language" msgstr "Использование правила по умолчанию для этого языка" msgid "Use custom expression" msgstr "Пользовательское выражение" msgid "Learn about plural forms" msgstr "Узнать о формах множественного числа" msgid "Charset:" msgstr "Кодировка:" msgid "Advanced Extraction Settings…" msgstr "Расширенные настройки извлечения…" msgid "Advanced extraction settings…" msgstr "Расширенные настройки извлечения…" msgid "Translation properties" msgstr "Свойства перевода" msgid "Sources Paths" msgstr "Папки с исходными файлами" msgid "Sources paths" msgstr "Папки с исходными файлами" msgid "Extract text from source files in the following directories:" msgstr "Извлекать текст из исходных файлов в следующих папках:" msgid "Base path:" msgstr "Базовый путь:" msgid "Sources Keywords" msgstr "Ключевые слова исходных файлов" msgid "Sources keywords" msgstr "Ключевые слова исходных файлов" msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Искать переводимые строки в исходных файлах по этим ключевым словам (именам " "функций):" msgid "Also use default keywords for supported languages" msgstr "" "Также использовать ключевые слова по умолчанию для поддерживаемых языков" msgid "Learn about gettext keywords" msgstr "Подробнее о ключевых словах gettext" msgid "Update summary" msgstr "Сводка об обновлении" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" "Эти строки были найдены в источниках, но их не было в файле.\n" "Сейчас Poedit добавит их в файл." msgid "New strings" msgstr "Новые строки" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" "Этих строк больше нет в исходном коде.\n" "Сейчас Poedit удалит их из файла." msgid "Obsolete strings" msgstr "Устаревшие строки" msgid "(0 new, 0 obsolete)" msgstr "(0 новых, 0 устаревших)" msgid "Open" msgstr "" msgid "Open file" msgstr "Открыть файл" msgid "Save file" msgstr "Сохранить файл" msgid "Validate" msgstr "Проверить" msgid "Check for errors in the translation" msgstr "Проверить наличие ошибок в переводе" msgid "Update from code" msgstr "Обновить из кода" msgid "Update from Code" msgstr "Обновить из кода" msgid "Update from source code" msgstr "Обновить из исходного кода" msgid "Sidebar" msgstr "Боковая панель" msgid "Show or hide the sidebar" msgstr "Показать или скрыть боковую панель" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. msgid "Previous source text" msgstr "Предыдущий исходный текст" msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "Старый исходный текст (до обновления), которому соответствует неточный " "перевод." msgid "Notes for translators" msgstr "Примечания для переводчиков" msgid "Comment" msgstr "Комментарий" msgid "Add comment" msgstr "Добавить комментарий" msgid "Add Comment" msgstr "Добавить комментарий" msgid "Delete From Translation Memory" msgstr "Удалить из памяти перевода" msgid "Delete from translation memory" msgstr "Удалить из памяти перевода" msgid "Translation suggestions" msgstr "Предлагаемые варианты перевода" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). msgid "No matches found" msgstr "Совпадений не найдено" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). msgid "No Matches Found" msgstr "Совпадений не найдено" msgid "This string was found in Poedit’s translation memory." msgstr "Эта строка была найдена в памяти переводов Poedit." msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "Для предложений перевода нужно, чтобы был доступен исходный текст. Эта " "функция не будет работать, если используются только идентификаторы без " "текста." msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Переводческие переводы требуют, чтобы исходный текст был известен. Poedit не " "смог обнаружить его в этом файле." msgid "The TMX file is malformed." msgstr "Неверный формат TMX-файла." msgid "No translations were found in the TMX file." msgstr "В TMX-файле не найдены переводы." #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "База памяти переводов повреждена: %s (%d)." #, c-format msgid "Translation memory error: %s (%d)." msgstr "Ошибка памяти перевода: %s (%d)." msgid "Cannot create temporary directory." msgstr "Не удаётся создать папку для временных файлов." msgid "There are no translations. That’s unusual." msgstr "Перевод отсутствует. Это странно." msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "Translators typically use PO template files (POTs) prepared for them by the " "developer." msgstr "" "Переводимые записи не добавляются вручную в систему Gettext, а автоматически " "извлекаются\n" "из исходного кода. Таким образом обеспечивается их актуальность и точность.\n" "Переводчики обычно работают с PO-файлами (POT-шаблоны), которые подготовил " "для них разработчик." msgid "(Learn more about GNU gettext)" msgstr "(Подробнее о GNU gettext)" msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "Самый простой способ заполнить этот файл переводами, это обновить его из POT:" msgid "Update from POT" msgstr "Обновить из POT-файла" msgid "Take translatable strings from an existing POT template." msgstr "Извлечь переводимые строки из имеющегося шаблона POT." msgid "" "You can also extract translatable strings directly from the source code:" msgstr "" "Переводимые строки можно также извлечь непосредственно из исходного кода:" msgid "Extract from sources" msgstr "Извлечь из исходного кода" msgid "Configure source code extraction in Properties." msgstr "Настройте извлечение исходного кода в разделе «Свойства»." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #, c-format msgid "Version %s" msgstr "Версия %s" msgid "Create new" msgstr "Создать новый" msgid "Create new translation from POT template." msgstr "Создать новый перевод из шаблона POT." msgid "Browse files" msgstr "Просмотр файлов" msgid "Open and edit translation files." msgstr "Открыть и править файлы перевода." msgid "Translate cloud project" msgstr "Перевести проект Crowdin" msgid "Collaborate with other people online." msgstr "Переводите совместно с другими людьми в сети." msgid "Recent files" msgstr "Недавние файлы" msgid "Sync" msgstr "Синхронизация" 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") #, c-format msgid "About %s" msgstr "О программе %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #, c-format msgid "%s Preferences" msgstr "Настройки %s" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "Сервисы" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "Скрыть %s" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "Скрыть остальное" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "Показать всё" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "Выйти из %s" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "Настройки…" msgid "Preferences..." msgstr "Настройки..." #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "Недавние" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "Часто вызываемые" msgid "&Apply" msgstr "Применить (&A)" msgid "Apply" msgstr "Принять" msgid "&Back" msgstr "Назад (&B)" msgid "Back" msgstr "Назад" msgid "&Cancel" msgstr "Отмена (&C)" msgid "&Clear" msgstr "Очистить (&C)" msgid "Clear" msgstr "Ясно" msgid "Copy" msgstr "Копировать" msgid "Cu&t" msgstr "Вырезать (&T)" msgid "Cut" msgstr "Вырезать" msgid "Edit" msgstr "Править" msgid "&Quit" msgstr "Выход (&Q)" msgid "Help" msgstr "Помощь" msgid "&New" msgstr "Создать (&N)" msgid "New" msgstr "Создать" msgid "&No" msgstr "Нет (&N)" msgid "No" msgstr "Нет" msgid "&OK" msgstr "ОК (&O)" msgid "Open…" msgstr "Открыть…" msgid "&Open..." msgstr "Открыть (&O)..." msgid "Open..." msgstr "Открыть..." msgid "&Paste" msgstr "&Вставить" msgid "Paste" msgstr "Вставить" msgid "Preferences" msgstr "Настройки" msgid "&Redo" msgstr "&Повторить" msgid "Refresh" msgstr "Обновить" msgid "&Save as" msgstr "Сохранить как (&S)" msgid "Save as" msgstr "Сохранить как" msgid "Select &All" msgstr "Выбрать все (&A)" msgid "Select All" msgstr "Выбрать все" msgid "&Undo" msgstr "&Отменить" msgid "&Yes" msgstr "Да (&Y)" msgid "Yes" msgstr "Да" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "Стрелка вверх" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "Стрелка вниз" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "Влево" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "Вправо" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "shift" poedit-3.5/locales/eu.po0000644000175100001770000016274014664354153012211 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "Ezkutatu jakinarazpen mezu hau" msgid "Don’t Show Again" msgstr "Ez erakutsi berriro" msgid "Don’t show again" msgstr "Ez erakutsi berriro" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(Berria: %i, zaharkitua: %i)" msgid "Collecting source files…" msgstr "Iturburu-fitxategiak biltzen…" msgid "Extracting translatable strings…" msgstr "Kate itzulgarriak erauzten…" msgid "Failed to load file with extracted translations." msgstr "" msgid "Merging differences…" msgstr "Ezberdintasunak batzen…" msgid "Updating translations" msgstr "" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "" msgid "Invalid file" msgstr "Fitxategi baliogabea" #, c-format msgid "Malformed header: “%s”" msgstr "Gaizki osatutako goiburua: \"%s\"" msgid "PO Translation Files" msgstr "PO itzulpen-fitxategiak" msgid "POT Translation Templates" msgstr "POT itzulpen-txantiloiak" msgid "XLIFF Translation Files" msgstr "XLIFF itzulpen-fitxategiak" msgid "JSON Translation Files" msgstr "" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "" msgid "All Translation Files" msgstr "Itzulpen-fitxategi guztiak" msgid "The file is in a format not recognized by Poedit." msgstr "" msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" #, c-format msgid "Reading file content failed with the following error: %s" msgstr "" #, 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." #, c-format msgid "Couldn’t save file %s." msgstr "Ezin izan da %s fitxategia gorde." msgid "Screenshots:" msgstr "" #, c-format msgid "%i line of file “%s” was not loaded correctly." msgid_plural "%i lines of file “%s” were not loaded correctly." msgstr[0] "'%2$s' fitxategiko kate %1$i ez da ongi kargatu." msgstr[1] "'%2$s' fitxategiko %1$i kate ez dira ongi kargatu." #, c-format msgid "Line %d of file “%s” is corrupted (not valid %s data)." msgstr "%d lerroa hondatuta dago \"%s\" fitxategian (%s datu baliogabea)." msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" msgid "Couldn’t load the file, it is probably damaged." msgstr "" msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" 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)." #, 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 "" msgid "Error saving file" msgstr "" #, c-format msgid "“%s” is not a valid POT file." msgstr "\"%s\" ez da baliozko POT fitxategi bat." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "" #, c-format msgid "unsupported version (%s)" msgstr "" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML msgid "Broken markup in translation string." msgstr "Marka-kode hautsia itzulpen katean." msgid "(Use default language)" msgstr "(Erabili hizkuntza lehenetsia)" msgid "Language selection" msgstr "Hizkuntza hautapena" msgid "Select your preferred language" msgstr "Hautatu zure gogoko hizkuntza " msgid "You must restart Poedit for this change to take effect." msgstr "Poedit berrabiarazi behar duzu aldaketa honek eragina izateko." msgid "Add Account" msgstr "" msgid "Add account" msgstr "" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "" msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" msgid "How does cloud sync work?" msgstr "" msgid "Account" msgstr "" msgid "(not signed in)" msgstr "" msgid "File" msgstr "Fitxategia" msgid "Open cloud translation" msgstr "" msgid "Manage accounts" msgstr "" msgid "Project:" msgstr "Proiektua:" msgid "Language:" msgstr "Hizkuntza:" msgid "Sign in to Cloud Account" msgstr "" msgid "Sign in to cloud account" msgstr "" msgid "No translation projects listed in your account." msgstr "" msgid "Downloading latest translations…" msgstr "Azken itzulpenak deskargatzen…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #, c-format msgid "Sign in to %s" msgstr "" msgid "Syncing" msgstr "Sinkronizatzen" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s…" msgstr "" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s failed." msgstr "" msgid "Syncing error" msgstr "Sinkronizazio errorea" msgid "Add" msgstr "" msgid "Unknown Crowdin error." msgstr "" msgid "Not authorized, please sign in again." msgstr "Ez autorizatua, mesedez hasi saioa berriro." msgid "Downloading translations is disabled in this project." msgstr "Itzulpenak deskargatzea desgaituta dago proiektu honetan." msgid "Sign In" msgstr "Hasi saioa" msgid "Sign in" msgstr "Hasi saioa" msgid "Sign Out" msgstr "Amaitu saioa" msgid "Sign out" msgstr "Amaitu saioa" msgid "Learn more about Crowdin" msgstr "Ikasi gehiago Crowdin buruz" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" msgid "Waiting for authentication…" msgstr "Autentifikazioaren zain…" msgid "Updating user information…" msgstr "Erabiltzailearen informazioa eguneratzen…" msgid "Sign in to Crowdin" msgstr "Hasi saioa Crowdin-en" msgid "Syncing with Crowdin failed." msgstr "Hutsegitea Crowdin-ekin sinkronizatzean." msgid "Crowdin error" msgstr "Crowdin errorea" msgid "Uploading translations…" msgstr "Itzulpenak kargatzen…" msgid "&Copy" msgstr "&Kopiatu" msgid "Learn more" msgstr "Ikasi gehiago" msgid "&Help" msgstr "&Laguntza" msgid "MO files can’t be directly edited in Poedit." msgstr "Ezin dira MO fitxategiak zuzenean editatu Poedit erabiliz." msgid "Error opening file" msgstr "Errorea fitxategia irekitzerakoan" 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." msgid "don’t delete temporary files (for debugging)" msgstr "ez ezabatu fitxategi tenporalak (arazketarako)" msgid "handle a poedit:// URI" msgstr "maneiatu poedit:// URI bat" msgid "go to item at given line number" msgstr "joan emandako lerro zenbakiko elementura" msgid "Failed to communicate with Poedit process." msgstr "Komunikazioak huts egin du Poedit prozesuarekin." #, c-format msgid "Unhandled exception occurred: %s" msgstr "Kontrolatu gabeko salbuespen bat gertatu da: %s" msgid "Select translation template" msgstr "" msgid "Select translation file" msgstr "" msgid "Poedit is an easy to use translation editor." msgstr "Poedit itzulpen editore erabilerraz bat da." msgid "You can’t drop more than one file on Poedit window." msgstr "Ezin duzu fitxategi bat baino gehiago jaregin Poedit leihoan." #, c-format msgid "File “%s” is not a translation file." msgstr "“%s” fitxategia ez da itzulpen fitxategia." #, c-format msgid "File “%s” doesn’t exist." msgstr "“%s” fitxategia ez dago." 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". #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "" "Ortografia egiaztaketa desgaituta dago, %s hiztegia ez dagoelako instalatuta." msgid "Install" msgstr "Instalatu" #, c-format msgid "The file “%s” has been changed by another application." msgstr "" msgid "Reload file" msgstr "" msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" msgid "Ignore" msgstr "" msgid "Reload File" msgstr "" msgid "The file has been modified. Do you want to save changes?" msgstr "" msgid "Save changes" msgstr "Gorde aldaketak" msgid "Your changes will be lost if you don’t save them." msgstr "Zure aldaketak galdu egingo dira ez badituzu gordetzen." msgid "Save" msgstr "Gorde" msgid "Do&n’t save" msgstr "Ez gorde" msgid "Don’t Save" msgstr "Ez gorde" msgid "The changes made by the other application will be lost if you save." msgstr "" msgid "Cancel" msgstr "Utzi" msgid "Save Anyway" msgstr "" msgid "Save anyway" msgstr "" msgid "Save as…" msgstr "Gorde honela…" msgid "Compile to…" msgstr "Konpilatu hona…" msgid "Compiled Translation Files" msgstr "Konpilatutako itzulpen-fitxategiak" msgid "Export to HTML…" msgstr "" msgid "HTML Files" msgstr "HTML fitxategiak" #, c-format msgid "In: %s" msgstr "" msgid "Source code not available." msgstr "Iturburu-kodea ez dago eskuragarri." msgid "Updating failed" msgstr "Eguneraketak huts egin du" 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 "" msgid "Permission denied." msgstr "Baimena ukatuta." 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. 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. 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." msgid "Translation entries in the file are probably incorrect." msgstr "" msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "" msgid "Open translation template" msgstr "" #, 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." msgid "Validation results" msgstr "Balioztapenaren emaitzak" 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." msgid "The file was saved safely." msgstr "Fitxategia seguru gorde da." 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." 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." 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." msgid "The file cannot be compiled into the MO format and used." msgstr "Fitxategia ezin da MO formatuan konpilatu eta erabili." msgid "No problems with the translation found." msgstr "Ez da arazorik aurkitu itzulpenean." #, 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." msgid "The translation is ready for use." msgstr "Itzulpena erabiltzeko prest dago." #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "Poeditek automatikoki konpondu du \"%s\" fitxategiko eduki baliogabea." 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." msgid "Language of the translation isn’t set." msgstr "Itzulpenaren hizkuntza ez dago ezarrita." msgid "Set Language" msgstr "Ezarri hizkuntza" msgid "Set language" msgstr "Ezarri hizkuntza" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." msgid "" "Suggestions are not available if the translation language is not set " "correctly. Other features, such as plural forms, may be affected as well." msgstr "" "Iradokizunak ez daude eskuragarri itzulpen hizkuntza ez badago zuzen " "ezarrita. Beste ezaugarri batzuetan izan dezake eragina ere, plural formak " "esaterako." msgid "Language of the translation is the same as source language." msgstr "Itzulpen hizkuntza eta iturburuko hizkuntza bera da." msgid "Fix Language" msgstr "Zuzendu hizkuntza" msgid "Fix language" msgstr "Konpondu hizkuntzarena" msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" msgid "Required header Plural-Forms is missing." msgstr "Beharrezkoa den Plural-Forms goiburua falta da." #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Sintaxi errorea Plural-Forms goiburuan (\"%s\")." msgid "Fix the Header" msgstr "Konpondu goiburua" 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". #, 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.")" msgid "Review" msgstr "Berrikusi" msgid "Would you like to use English for source text?" msgstr "" #, 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" msgid "Load English" msgstr "" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Itzulita: %d / %d (%%%d)" #, c-format msgid "Remaining: %d" msgstr "Gelditzen dira: %d" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "errore %d" msgstr[1] "%d errore" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "Sarrera %d" msgstr[1] "%d sarrera" msgid " (unsaved)" msgstr " (gorde gabe)" msgid " (modified)" msgstr "(aldatuta)" #, c-format msgid "Failed to update translation memory: %s" msgstr "Hutsegitea itzulpen memoria eguneratzerakoan: %s" msgid "Remove same-as-source translations" msgstr "" msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" msgid "Keep" msgstr "Mantendu" msgid "Remove" msgstr "" msgid "Purge deleted translations" msgstr "Purgatu ezabatutako itzulpenak" msgid "Do you want to remove all translations that are no longer used?" msgstr "Luzaroan erabili ez diren itzulpen guztiak kentzea nahi duzu?" 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." msgid "Purge" msgstr "Purgatu" msgid "Copy from source text" msgstr "Kopiatu jatorrizko testutik" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "Garbitu itzulpena" msgid "Clear Translation" msgstr "Garbitu itzulpena" msgid "Edit comment" msgstr "Editatu iruzkina" msgid "Edit Comment" msgstr "Editatu iruzkina" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "" msgid "Hide Sidebar" msgstr "Ezkutatu alboko barra" msgid "Show Sidebar" msgstr "Erakutsi alboko barra" msgid "Hide Status Bar" msgstr "Ezkutatu egoera-barra" msgid "Show Status Bar" msgstr "Erakutsi egoera-barra" msgid "String length in characters: translation | source" msgstr "" msgid "String length in characters" msgstr "" msgid "Source text" msgstr "Jatorrizko testua" msgid "Singular" msgstr "Singularra" msgid "Plural" msgstr "Plurala" msgid "Translation" msgstr "Itzulpena" msgid "Pre-translated" msgstr "Aurre-itzulita" 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. msgid "Needs work" msgstr "Lana behar du" 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." msgid "Create new translation" msgstr "Sortu itzulpen berria" 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 msgid "Source text ID" msgstr "" msgid "Everything" msgstr "Dena" #, c-format msgid "Form %i" msgstr "%i forma" #, c-format msgid "Form %i (unused)" msgstr "%i forma (ez da erabiltzen)" msgid "Zero" msgstr "Zero" msgid "One" msgstr "Bat" msgid "Two" msgstr "Bi" msgid "Other" msgstr "Beste bat" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, c-format msgid "String context: %s" msgstr "" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #, c-format msgid "String identifier: %s" msgstr "" #, c-format msgid "%s Format" msgstr "%s Formatua" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "%s formatua" #, c-format msgid "Translation — %s" msgstr "Itzulpena — %s" msgid "ID" msgstr "IDa" #, c-format msgid "Source text — %s" msgstr "Jatorrizko testua — %s" msgid "unknown language" msgstr "hizkuntza ezezaguna" #, c-format msgid "Network error: %s (%d)" msgstr "" msgid "Unknown error" msgstr "" #, c-format msgid "Failed command: %s" msgstr "Komando hutsegitea: %s" msgid "Failed to merge gettext catalogs." msgstr "Huts egin du gettext katalogoak batzerakoan." msgid "Open in Editor" msgstr "Ireki editorean" msgid "Open in editor" msgstr "Ireki editorean" msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" msgid "No usage information" msgstr "" #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "" msgstr[1] "" msgid "Source code not found" msgstr "" 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 "" msgid "File cannot be opened" msgstr "" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "" msgid "Find" msgstr "Bilatu" msgid "Replace" msgstr "Ordeztu" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "Aukerak" msgid "Ignore case" msgstr "Ezikusi maiuskulak/minuskulak" msgid "Wrap around" msgstr "Itzulbiratu" msgid "Whole words only" msgstr "Hitz osoak bakarrik" msgid "Find in source texts" msgstr "Bilatu jatorrizko testuetan" msgid "Find in translations" msgstr "Bilatu itzulpenetan" msgid "Find in comments" msgstr "Bilatu iruzkinetan" msgid "Close" msgstr "Itxi" msgid "Replace &All" msgstr "Ordeztu &denak" msgid "Replace &all" msgstr "Ordeztu &denak" msgid "&Replace" msgstr "&Ordeztu" msgid "< &Previous" msgstr "< &Aurrekoa" msgid "&Next >" msgstr "&Hurrengoa >" msgid "String to find" msgstr "Bilatzeko katea" msgid "Replacement string" msgstr "Ordezpen-katea" #, c-format msgid "Cannot execute program: %s" msgstr "Ezin da programa abiarazi: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "" msgid "Translation Language" msgstr "Itzulpen hizkuntza" msgid "Language of the translation:" msgstr "Itzulpenaren hizkuntza:" msgid "All strings" msgstr "" msgid "Couldn’t download Localazy project details." msgstr "" msgid "There was an error when uploading translations to Localazy." msgstr "" msgid "Projects" msgstr "" msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" msgid "Add Project" msgstr "" msgid "Add project" msgstr "" msgid "Poedit - Catalogs manager" msgstr "Poedit - Katalogoen kudeatzailea" msgid "Edit…" msgstr "Editatu…" msgid "Create new translations project" msgstr "Sortu itzulpen proiektu berria" msgid "Delete the project" msgstr "Ezabatu proiektua" msgid "Edit the project" msgstr "Editatu proiektua" msgid "Update all" msgstr "Eguneratu denak" msgid "Update all catalogs in the project" msgstr "Eguneratu proiektuko katalogo guztiak" msgid "Total" msgstr "Guztira" msgid "Untrans" msgstr "Itzuli gabe" msgctxt "column/row header" msgid "Needs Work" msgstr "Lana behar du" msgid "Errors" msgstr "Erroreak" msgid "Last modified" msgstr "Azken aldaketa" msgid "Select directory" msgstr "Hautatu direktorioa" msgid "Directories:" msgstr "Direktorioak:" msgid "" msgstr "" #, c-format msgid "Do you want to delete project “%s”?" msgstr "" msgid "Delete project" msgstr "" msgid "Deleting the project will not delete any translation files." msgstr "" msgid "Confirmation" msgstr "Berrespena" msgid "Update all catalogs in this project?" msgstr "" msgid "Performs update from source code on all files in the project." msgstr "" msgid "Check for Updates…" msgstr "Egiaztatu eguneraketarik dagoen…" msgid "Catalogs Manager" msgstr "Katalogoen kudeatzailea" msgid "&Preferences…" msgstr "&Hobespenak…" msgid "&Edit" msgstr "&Editatu" msgid "Undo" msgstr "Desegin" msgid "Redo" msgstr "Berregin" msgid "Paste and Match Style" msgstr "Itsatsi eta bateratu estiloa" msgid "Delete" msgstr "Ezabatu" msgid "Spelling and Grammar" msgstr "Ortografia eta gramatika" msgid "Show Spelling and Grammar" msgstr "Erakutsi ortografia eta gramatika" msgid "Check Document Now" msgstr "Egiaztatu dokumentua orain" msgid "Check Spelling While Typing" msgstr "Egiaztatu ortografia idatzi bitartean" msgid "Check Grammar With Spelling" msgstr "Egiaztatu gramatika ortografiarekin" msgid "Correct Spelling Automatically" msgstr "Zuzendu ortografia automatikoki" msgid "Substitutions" msgstr "Ordezkapenak" msgid "Show Substitutions" msgstr "Erakutsi ordezkapenak" msgid "Smart Copy/Paste" msgstr "Itsatsi/Kopiatu adimentsua" msgid "Smart Quotes" msgstr "Tipografia-komatxoak" msgid "Smart Dashes" msgstr "Tipografia-marratxoak" msgid "Smart Links" msgstr "Lotura adimentsuak" msgid "Text Replacement" msgstr "Testu-ordezpena" msgid "Transformations" msgstr "Eraldaketak" msgid "Make Upper Case" msgstr "Bihurtu maiuskulak" msgid "Make Lower Case" msgstr "Bihurtu minuskulak" msgid "Capitalize" msgstr "Jarri maiuskula" msgid "Speech" msgstr "Diskurtsoa" msgid "Start Speaking" msgstr "Hasi hitz egiten" msgid "Stop Speaking" msgstr "Gelditu hitz egitea" msgid "&View" msgstr "&Ikusi" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Show Toolbar" msgstr "Erakutsi tresna-barra" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Customize Toolbar…" msgstr "Pertsonalizatu tresna-barra…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Enter Full Screen" msgstr "Sartu pantaila osoan" msgid "Window" msgstr "Leihoa" msgid "Minimize" msgstr "Minimizatu" msgid "Zoom" msgstr "Zooma" msgid "Welcome to Poedit" msgstr "Ongi etorri Poedit-era" msgid "Bring All to Front" msgstr "Ekarri denak aurrera" msgid "Information about the translator" msgstr "Itzultzaileari buruzko informazioa" msgid "Name:" msgstr "Izena:" msgid "Your Name" msgstr "Zure izena" msgid "Email:" msgstr "E-maila:" msgid "you@example.com" msgstr "" 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." msgid "Editing" msgstr "Edizioa" msgid "Automatically compile MO file when saving" msgstr "Konpilatu MO fitxategia automatikoki gordetzean" msgid "Show summary after updating files" msgstr "" msgid "Check spelling" msgstr "Egiaztatu ortografia" msgid "Always change focus to text input field" msgstr "Betik aldatu fokua testu sarrera eremura" 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." msgid "Appearance" msgstr "Itxura" msgid "Use custom list font:" msgstr "Erabili aukeratutako tipografia zerrendetan:" msgid "Use custom text fields font:" msgstr "Erabili aukeratutako tipografia testu eremuetan:" msgid "Change UI language" msgstr "Aldatu erabiltzaile-interfazearen hizkuntza" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions msgid "(requires Windows 8 or newer)" msgstr "(Windows 8 edo berriagoa behar du)" msgid "General" msgstr "Orokorra" msgid "Use translation memory" msgstr "Erabili itzulpen memoria" msgid "Manage…" msgstr "Kudeatu…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "Iturburuetatik eguneratzean" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "zalantzako bat egitea fitxategian" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "aurre-itzuli itzulpen memoriatik" 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." msgid "Stored translations:" msgstr "Biltegiratutako itzulpenak:" msgid "Database size on disk:" msgstr "Datu-basearen tamaina diskoan:" msgid "Import Translation Files…" msgstr "Itzulpen fitxategiak inportatu…" msgid "Import translation files…" msgstr "Itzulpen fitxategiak inportatu…" msgid "Import From TMX…" msgstr "TMXtik inportatu…" msgid "Import from TMX…" msgstr "TMXtik inportatu…" msgid "Export To TMX…" msgstr "TMXra esportatu…" msgid "Export to TMX…" msgstr "TMXra esportatu…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). msgid "Reset" msgstr "Berrezarri" msgid "Select translation files to import" msgstr "Hautatu inportatzeko itzulpen-fitxategiak" msgid "Translation Memory" msgstr "Itzulpen memoria" msgid "Importing translations…" msgstr "Itzulpenak inportatzen…" #, c-format msgid "Error loading translation file “%s”." msgstr "" msgid "Finalizing…" msgstr "Amaitzen…" msgid "Select TMX files to import" msgstr "Inportatu beharreko TMX fitxategiak aukeratu" msgid "TMX Files" msgstr "TMX fitxategiak" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "\"%s\"tik itzulpen memoria inportatzeak huts egin du." msgid "Import error" msgstr "Inportazio-errorea" msgid "Export as…" msgstr "Esportatu honela…" msgid "Exporting translations…" msgstr "Itzulpenak esportatzen…" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "\"%s\"ra itzulpen memoria esportatzeak huts egin du." msgid "Export error" msgstr "Esportazio errorea" msgid "Reset translation memory" msgstr "Berrezarri itzulpen memoria" msgid "Are you sure you want to reset the translation memory?" msgstr "Ziur zaude itzulpen memoria berrezarri nahi duzula?" 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. msgid "TM" msgstr "IM" 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." msgid "Custom Extractors:" msgstr "Erauzle pertsonalizatuak:" msgid "Custom extractors:" msgstr "Erauzle pertsonalizatuak:" msgid "GNU gettext" msgstr "GNU gettext" 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)." msgid "Delete extractor" msgstr "Ezabatu erauzlea" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "Ziur \"%s\" erauzlea ezabatu nahi duzula?" msgid "Extractors" msgstr "Erauzleak" msgid "Accounts" msgstr "Kontuak" msgid "Automatically check for updates" msgstr "Egiaztatu eguneraketak automatikoki" msgid "Include beta versions" msgstr "Beta bertsioak barne" 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." msgid "Updates" msgstr "Eguneraketak" 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." msgid "Line endings:" msgstr "Lerro amaierak:" msgid "Unix (recommended)" msgstr "Unix (gomendatua)" msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "Itzulbiratzea:" msgid "Preserve formatting of existing files" msgstr "Mantendu dauden fitxategien formatua" msgid "Advanced" msgstr "Aurreratua" msgid "Settings" msgstr "" msgid "Preparing strings…" msgstr "" msgid "Pre-translating from translation memory…" msgstr "" #, 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" msgid "Pre-translating…" msgstr "Aurre-itzultzen..." 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. msgid "Pre-translate" msgstr "Aurre-itzuli" msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" msgid "Cannot pre-translate from unknown language." msgstr "" msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" msgid "Only fill in exact matches" msgstr "Bete bakarrik zehaztasun osoz bat datozenean" msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" msgid "Don’t mark exact matches as needing work" msgstr "Ez markatu zehazki bat datozenak 'lana behar du' bezala" 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." 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." #, 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." 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." msgid "No entries could be pre-translated." msgstr "Ezin izan da sarrerarik aurre-itzuli." 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." msgid "Cancelling…" msgstr "" msgid "Drag Folders or Files Here" msgstr "" msgid "Drag folders or files here" msgstr "" msgid "Add Folders…" msgstr "Gehitu karpetak…" msgid "Add folders…" msgstr "Gehitu karpetak…" msgid "Add Files…" msgstr "Gehitu fitxategiak…" msgid "Add files…" msgstr "Gehitu fitxategiak…" msgid "Add Wildcard…" msgstr "Gehitu komodina…" 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) msgid "Reveal in Finder" msgstr "" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" msgid "Show in Explorer" msgstr "" msgid "Show in Folder" msgstr "" msgid "Paths" msgstr "Bideak" msgid "Excluded paths" msgstr "Baztertutako bideak" msgid "Advanced extraction settings" msgstr "Erauzte ezarpen aurreratuak" msgid "Extract notes for translators from:" msgstr "Erauzi itzultzaileentzako oharrak hemendik:" msgid "Comments prefixed with:" msgstr "Aurrizki hau duten iruzkinak:" msgid "All comments" msgstr "Iruzkin guztiak" msgid "Additional xgettext flags:" msgstr "xgettext marka gehigarriak:" msgid "Additional keywords" msgstr "Gako-hitz gehigarriak" msgid "Name of the project the translation is for" msgstr "Itzulitako proiektuaren izena" msgid "Team name and email address or URL" msgstr "Taldearen izena eta e-mail helbidea edo URL-a" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "Adib. nplurals=2; plural=(n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (gomendatua)" msgid "Please save the file first. This section cannot be edited until then." msgstr "Mesedez gorde fitxategia lehenik. Atal hau ezin ordura arte editatu." msgid "Placeholders correctness" msgstr "" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "" #, c-format msgid "Superfluous placeholder “%s” that isn’t in source text." msgstr "" msgid "Plural form translations" msgstr "" msgid "Not all plural forms are translated." msgstr "Ez dira forma plural guztiak itzuli." msgid "Inconsistent upper/lower case" msgstr "" msgid "The translation should start as a sentence." msgstr "Itzulpena esaldi gisa hasi behar da." msgid "The translation should start with a lowercase character." msgstr "Itzulpena minuskula batez hasi behar da." msgid "Inconsistent whitespace" msgstr "" msgid "The translation doesn’t start with a space." msgstr "Itzulpena ez da zuriune batekin hasten." msgid "The translation starts with a space, but the source text doesn’t." msgstr "Itzulpena zuriune batekin hasten da, baina jatorrizko testua ez." msgid "The translation is missing a newline at the end." msgstr "Itzulpenari lerro berri bat falta zaio amaieran." msgid "The translation ends with a newline, but the source text doesn’t." msgstr "Itzulpena lerro berri batekin amaitzen da, baina jatorrizko testua ez." msgid "The translation is missing a space at the end." msgstr "Itzulpenak zuriune bat falta du amaieran." msgid "The translation ends with a space, but the source text doesn’t." msgstr "Itzulpena zuriune batekin amaitzen da, baina jatorrizko testua ez." msgid "Punctuation checks" msgstr "" #, c-format msgid "The translation should end with “%s”." msgstr "Itzulpenak “%s”-rekin amaitu behar du." #, c-format msgid "The translation should not end with “%s”." msgstr "Itzulpenak ez du “%s”-rekin amaitu behar." #, 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." msgid "Cloud" msgstr "" msgid "Clear Menu" msgstr "" msgid "Clear menu" msgstr "" msgid "Comment:" msgstr "Iruzkina:" msgid "Update" msgstr "" msgid "&Delete" msgstr "E&zabatu" msgid "Delete the comment" msgstr "" msgid "Edit project" msgstr "Editatu proiektua" msgid "Project name:" msgstr "Proiektuaren izena:" msgid "Browse" msgstr "Arakatu" msgid "Add directory to the list" msgstr "Gehitu direktorioa zerrendara" msgid "OK" msgstr "Ados" msgid "&File" msgstr "&Fitxategia" msgid "&New…" msgstr "&Berria…" msgid "New from &POT/PO file…" msgstr "Berria &POT/PO fitxategitik…" msgid "New From &POT/PO File…" msgstr "Berria &POT/PO fitxategitik…" msgid "&Open…" msgstr "&Ireki…" msgid "Open Recent" msgstr "Ireki erabili berria" msgid "Open recent" msgstr "" msgid "Open cloud translation…" msgstr "" msgid "Open Cloud Translation…" msgstr "" msgid "&Start window" msgstr "" msgid "&Start Window" msgstr "" msgid "Catalogs &manager" msgstr "Katalogoen &kudeatzailea" msgid "Catalogs &Manager" msgstr "Katalogoen &kudeatzailea" msgid "&Close" msgstr "&Itxi" msgid "&Save" msgstr "&Gorde" msgid "Save &as…" msgstr "Gorde &honela…" msgid "Save &As…" msgstr "Gorde &honela…" msgid "Compile to MO…" msgstr "Konpilatu MO-ra…" msgid "E&xport to HTML…" msgstr "" msgid "Check for updates…" msgstr "Egiaztatu eguneraketarik dagoen…" msgid "Settings…" msgstr "" msgid "&Preferences" msgstr "&Hobespenak" msgid "E&xit" msgstr "I&rten" msgid "Quit" msgstr "Irten" msgid "Copy from singular" msgstr "Kopiatu singularretik" msgid "Copy From Singular" msgstr "Kopiatu singularretik" msgid "Translation needs &work" msgstr "Itzulpenak &lana behar du" msgid "Translation Needs &Work" msgstr "Itzulpenak lana &behar du" msgid "Edit &comment" msgstr "Editatu &iruzkina" msgid "Edit &Comment" msgstr "Editatu &iruzkina" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "Iradokizunak" msgid "&Find…" msgstr "&Bilatu…" msgid "Replace…" msgstr "Ordeztu…" msgid "Find next" msgstr "Bilatu hurrengoa" msgid "Find previous" msgstr "Bilatu aurrekoa" msgid "Find and Replace…" msgstr "Bilatu eta ordeztu…" msgid "Find Next" msgstr "Bilatu hurrengoa" msgid "Find Previous" msgstr "Bilatu aurrekoa" msgid "Show string &ID" msgstr "&ID katea erakutsi" msgid "Show String &ID" msgstr "&ID katea erakutsi" msgid "Show warnings" msgstr "Oharrak erakutsi" msgid "Show Warnings" msgstr "Erakutsi oharrak" msgid "Sort by &file order" msgstr "Ordenatu &fitxategiz" msgid "Sort by &File Order" msgstr "Ordenatu &fitxategiz" msgid "Sort by &source" msgstr "Ordenatu i&turburuz" msgid "Sort by &Source" msgstr "Ordenatu i&turburuz" msgid "Sort by &translation" msgstr "Ordenatu itz&ulpenez" msgid "Sort by &Translation" msgstr "Ordenatu Itz&ulpenez" msgid "&Group by context" msgstr "&Taldekatu testuinguruz" msgid "&Group By Context" msgstr "&Taldekatu testuinguruz" msgid "Entries with errors first" msgstr "Erroreak dituzten sarrerak lehenik" msgid "Entries with Errors First" msgstr "Erroreak dituzten sarrerak lehenik" msgid "&Untranslated entries first" msgstr "Itzuli gabeko &sarrerak lehenik" msgid "&Untranslated Entries First" msgstr "Itzuli gabeko &sarrerak lehenik" msgid "&Show code occurrences" msgstr "" msgid "&Show Code Occurrences" msgstr "" msgid "Show sidebar" msgstr "Erakutsi alboko barra" msgid "Show status bar" msgstr "Erakutsi egoera-barra" msgid "&Translation" msgstr "" msgid "&Update from source code" msgstr "&Eguneratu iturburuetatik" msgid "&Update from Source Code" msgstr "&Eguneratu iturburuetatik" msgid "Update from &POT file…" msgstr "Eguneratu &POT fitxategitik…" msgid "Update from &POT File…" msgstr "Eguneratu &POT fitxategitik…" msgid "Sync with Crowdin" msgstr "Sinkronizatu Crowdin-ekin" msgid "Pre-&translate…" msgstr "Aurre-i&tzuli…" msgid "&Validate translations" msgstr "&Balioztatu itzulpenak" msgid "&Validate Translations" msgstr "&Balioztatu itzulpenak" msgid "Remove Same-as-Source Translations" msgstr "" msgid "&Purge deleted translations" msgstr "&Purgatu ezabatutako itzulpenak" msgid "&Purge Deleted Translations" msgstr "&Purgatu ezabatutako itzulpenak" msgid "&Properties…" msgstr "&Propietateak…" msgid "&Go" msgstr "&Joan" msgid "&Done and next" msgstr "&Eginda eta hurrengoa" msgid "&Done and Next" msgstr "&Eginda eta hurrengoa" msgid "Previously edited" msgstr "" msgid "Previously Edited" msgstr "" msgid "&Previous translation" msgstr "A&urreko itzulpena" msgid "&Previous Translation" msgstr "A&urreko itzulpena" msgid "&Next translation" msgstr "&Hurrengo itzulpena" msgid "&Next Translation" msgstr "&Hurrengo itzulpena" msgid "P&revious unfinished" msgstr "A&urreko amaitu gabea" msgid "P&revious Unfinished" msgstr "A&urreko amaigabea" msgid "Ne&xt unfinished" msgstr "Hu&rrengo amaitu gabea" msgid "Ne&xt Unfinished" msgstr "Hu&rrengo amaigabea" msgid "Previous plural form" msgstr "Aurreko plural forma" msgid "Previous Plural Form" msgstr "Aurreko plural forma" msgid "Next plural form" msgstr "Hurrengo plural forma" msgid "Next Plural Form" msgstr "Hurrengo plural forma" msgid "&Online help" msgstr "&Online laguntza" msgid "&Online Help" msgstr "&Online laguntza" msgid "&GNU gettext manual" msgstr "&GNU gettext eskuliburua" msgid "&GNU gettext Manual" msgstr "&GNU gettext eskuliburua" msgid "&About Poedit" msgstr "&Poedit-i buruz" msgid "&About" msgstr "&Honi buruz" msgid "Extractor setup" msgstr "Erauzlearen ezarpena" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Luzapenen zerrenda puntu eta komaz bananduta (adib. *.cpp;*.h):" msgid "Invocation:" msgstr "Erabilera:" msgid "Command to extract translations:" msgstr "Itzulpenak erauzteko komandoa:" 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)." msgid "An item in keywords list:" msgstr "Gako-hitzen zerrendako elementu bat:" 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." msgid "An item in input files list:" msgstr "Sarrera-fitxategien zerrendako elementu bat:" #, 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." msgid "Source code charset:" msgstr "Iturburuaren karaktere-jokoa:" #, 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." msgid "Translation Properties" msgstr "Itzulpenaren propietateak" msgid "Project name and version:" msgstr "Proiektuaren izena eta bertsioa:" msgid "Language team:" msgstr "Hizkuntza taldea:" msgid "Plural forms:" msgstr "Plural formak:" msgid "Use default rules for this language" msgstr "Erabili hizkuntza honetarako lehenetsitako arauak" msgid "Use custom expression" msgstr "Erabili espresio pertsonalizatua" msgid "Learn about plural forms" msgstr "Ikasi gehiago plural formez" msgid "Charset:" msgstr "Karaktere-jokoa:" msgid "Advanced Extraction Settings…" msgstr "Erauzte ezarpen aurreratuak…" msgid "Advanced extraction settings…" msgstr "Erauzte ezarpen aurreratuak…" msgid "Translation properties" msgstr "Itzulpenaren propietateak" msgid "Sources Paths" msgstr "Iturburuen bideak" msgid "Sources paths" msgstr "Iturburuen bideak" msgid "Extract text from source files in the following directories:" msgstr "Erauzi testua direktorio hauetako jatorrizko fitxategietatik:" msgid "Base path:" msgstr "Hasierako bidea:" msgid "Sources Keywords" msgstr "Iturburuetako gako-hitzak" msgid "Sources keywords" msgstr "Iturburuetako gako-hitzak" 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:" msgid "Also use default keywords for supported languages" msgstr "Erabili lehenetsitako gako-hitzak onartutako hizkuntzetan ere bai" msgid "Learn about gettext keywords" msgstr "Ikasi gettext gako-hitzei buruz" msgid "Update summary" msgstr "Eguneratu laburpena" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" msgid "New strings" msgstr "Kate berriak" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" msgid "Obsolete strings" msgstr "Kate zaharkituak" msgid "(0 new, 0 obsolete)" msgstr "(0 berri, 0 zaharkitu)" msgid "Open" msgstr "" msgid "Open file" msgstr "" msgid "Save file" msgstr "" msgid "Validate" msgstr "Balioztatu" msgid "Check for errors in the translation" msgstr "Egiaztatu itzulpenean errorerik dagoen" msgid "Update from code" msgstr "Eguneratu kodetik" msgid "Update from Code" msgstr "Eguneratu kodetik" msgid "Update from source code" msgstr "Eguneratu iturburuetatik" msgid "Sidebar" msgstr "Alboko barra" msgid "Show or hide the sidebar" msgstr "Erakutsi edo ezkutatu alboko barra" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. msgid "Previous source text" msgstr "" 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)." msgid "Notes for translators" msgstr "" msgid "Comment" msgstr "" msgid "Add comment" msgstr "Gehitu iruzkina" msgid "Add Comment" msgstr "Gehitu iruzkina" msgid "Delete From Translation Memory" msgstr "Itzulpen memoriatik ezabatu" msgid "Delete from translation memory" msgstr "Itzulpen memoriatik ezabatu" msgid "Translation suggestions" msgstr "" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). 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). msgid "No Matches Found" msgstr "Ez da bat datorrenik aurkitu" msgid "This string was found in Poedit’s translation memory." msgstr "Kate hau Poedit-en itzulpen memorian aurkitu da." msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" msgid "The TMX file is malformed." msgstr "TMX fitxategia ez da zuzena." msgid "No translations were found in the TMX file." msgstr "Ez da itzulpenik aurkitu TMX fitxategian." #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Itzulpen memorien datubasea ez da zuzena: %s (%d)." #, c-format msgid "Translation memory error: %s (%d)." msgstr "Itzulpen memoriaren errorea: %s (%d)." msgid "Cannot create temporary directory." msgstr "Ezin izan da direktorio tenporala sortu." msgid "There are no translations. That’s unusual." msgstr "Ez dago itzulpenik. Hori ezohikoa da." msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "Translators typically use PO template files (POTs) prepared for them by the " "developer." msgstr "" "Sarrera itzulgarriak ez dira eskuz gehitzen Gettext sisteman, automatikoki " "erauzten dira\n" "iturburu kodetik. Honela, eguneratuta eta zehatz daude.\n" "Itzultzaileek arrunt garatzaileek beraientzat prestatutako PO txantiloi " "fitxategiak (POT-ak) erabiltzen dituzte." msgid "(Learn more about GNU gettext)" msgstr "(Ikasi gehiago GNU gettext buruz)" msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" msgid "Update from POT" msgstr "Eguneratu POT fitxategitik" msgid "Take translatable strings from an existing POT template." msgstr "Hartu kate itzulgarriak dagoen POT txantiloi batetik." msgid "" "You can also extract translatable strings directly from the source code:" msgstr "Kate itzulgarriak zuzenean erauzi ditzakezu iturburu kodetik:" msgid "Extract from sources" msgstr "&Erauzi iturburuetatik" 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 #, c-format msgid "Version %s" msgstr "%s bertsioa" msgid "Create new" msgstr "" msgid "Create new translation from POT template." msgstr "" msgid "Browse files" msgstr "" msgid "Open and edit translation files." msgstr "" msgid "Translate cloud project" msgstr "" msgid "Collaborate with other people online." msgstr "" msgid "Recent files" msgstr "" msgid "Sync" msgstr "Sinkronizatu" 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") #, 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. #, c-format msgid "%s Preferences" msgstr "%s hobespenak" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "Zerbitzuak" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "Ezkutatu %s" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "Ezkutatu besteak" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "Erakutsi denak" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "Irten %s(e)tik" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "Hobespenak…" msgid "Preferences..." msgstr "Hobespenak..." #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "Azkenak" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "Ohikoa" msgid "&Apply" msgstr "&Aplikatu" msgid "Apply" msgstr "Aplikatu" msgid "&Back" msgstr "A&tzera" msgid "Back" msgstr "Atzera" msgid "&Cancel" msgstr "&Utzi" msgid "&Clear" msgstr "&Garbitu" msgid "Clear" msgstr "Garbitu" msgid "Copy" msgstr "Kopiatu" msgid "Cu&t" msgstr "&Ebaki" msgid "Cut" msgstr "Ebaki" msgid "Edit" msgstr "Editatu" msgid "&Quit" msgstr "&Irten" msgid "Help" msgstr "Laguntza" msgid "&New" msgstr "&Berria" msgid "New" msgstr "Berria" msgid "&No" msgstr "&Ez" msgid "No" msgstr "Ez" msgid "&OK" msgstr "Ad&os" msgid "Open…" msgstr "Ireki…" msgid "&Open..." msgstr "&Ireki..." msgid "Open..." msgstr "Ireki..." msgid "&Paste" msgstr "&Itsatsi" msgid "Paste" msgstr "Itsatsi" msgid "Preferences" msgstr "Hobespenak" msgid "&Redo" msgstr "&Berregin" msgid "Refresh" msgstr "Freskatu" msgid "&Save as" msgstr "&Gorde honela" msgid "Save as" msgstr "Gorde honela" msgid "Select &All" msgstr "Hautatu &denak" msgid "Select All" msgstr "Hautatu denak" msgid "&Undo" msgstr "&Desegin" msgid "&Yes" msgstr "&Bai" msgid "Yes" msgstr "Bai" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Maius.+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Sartu" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "Gora" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "Behera" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "Ezkerra" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "Eskuina" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "maius." poedit-3.5/locales/oc.po0000644000175100001770000016440514664354154012202 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "Amagar aqueste messatge de notificacion" msgid "Don’t Show Again" msgstr "Afichar pas mai" msgid "Don’t show again" msgstr "Afichar pas mai" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(Novèla : %i, obsolèta : %i)" msgid "Collecting source files…" msgstr "Collècta dels fichièrs font…" msgid "Extracting translatable strings…" msgstr "Extraccion de las cadenas tradusiblas…" msgid "Failed to load file with extracted translations." msgstr "" msgid "Merging differences…" msgstr "Integracion dels cambiaments..." msgid "Updating translations" msgstr "Actualizacion de las traduccions" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "" msgid "Invalid file" msgstr "Fichièr invalid" #, c-format msgid "Malformed header: “%s”" msgstr "Entèsta mal formada : « %s »" msgid "PO Translation Files" msgstr "Fichièrs de traduccion PO" msgid "POT Translation Templates" msgstr "Modèls de traduccion POT" msgid "XLIFF Translation Files" msgstr "Fichièrs de traduccion XLIFF" msgid "JSON Translation Files" msgstr "" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "" msgid "All Translation Files" msgstr "Totes los fichièrs de traduccion" msgid "The file is in a format not recognized by Poedit." msgstr "" msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" #, c-format msgid "Reading file content failed with the following error: %s" msgstr "" #, 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." #, c-format msgid "Couldn’t save file %s." msgstr "Impossible d'enregistrar lo fichièr %s." msgid "Screenshots:" msgstr "" #, c-format msgid "%i line of file “%s” was not loaded correctly." msgid_plural "%i lines of file “%s” were not loaded correctly." msgstr[0] "%i 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." #, 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)." msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" msgid "Couldn’t load the file, it is probably damaged." msgstr "" msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" 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)." #, 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 "" msgid "Error saving file" msgstr "Error en enregistrant lo fichièr" #, c-format msgid "“%s” is not a valid POT file." msgstr "« %s » es pas un fichièr POT valid." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "" #, c-format msgid "unsupported version (%s)" msgstr "" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML msgid "Broken markup in translation string." msgstr "Balisatge copat dins la cadena de traduccion." msgid "(Use default language)" msgstr "(Utilizar la lenga per defaut)" msgid "Language selection" msgstr "Seleccion de lenga" msgid "Select your preferred language" msgstr "Seleccionatz vòstra lenga de preferéncia" msgid "You must restart Poedit for this change to take effect." msgstr "Vos cal reaviar Poedit per qu'aqueste cambiament prenga efièit." msgid "Add Account" msgstr "Apondre compte" msgid "Add account" msgstr "Apondre compte" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "Ne saber mai sus %s" msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" msgid "How does cloud sync work?" msgstr "" msgid "Account" msgstr "Compte" msgid "(not signed in)" msgstr "(non connectat)" msgid "File" msgstr "Fichièr" msgid "Open cloud translation" msgstr "" msgid "Manage accounts" msgstr "" msgid "Project:" msgstr "Projècte :" msgid "Language:" msgstr "Lenga :" msgid "Sign in to Cloud Account" msgstr "" msgid "Sign in to cloud account" msgstr "" msgid "No translation projects listed in your account." msgstr "" msgid "Downloading latest translations…" msgstr "Telecargament de las darrièras traduccions..." #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #, c-format msgid "Sign in to %s" msgstr "" msgid "Syncing" msgstr "Sincronizacion" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, 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. #, c-format msgid "Uploading translations to %s failed." msgstr "" msgid "Syncing error" msgstr "Error de sincronizacion" msgid "Add" msgstr "Apondre" msgid "Unknown Crowdin error." msgstr "" msgid "Not authorized, please sign in again." msgstr "Pas autorizat, connectatz-vos tornamai." msgid "Downloading translations is disabled in this project." msgstr "" "Lo telecargament de las traduccions es desactivat dins aqueste projècte." msgid "Sign In" msgstr "S'identificar" msgid "Sign in" msgstr "S'identificar" msgid "Sign Out" msgstr "Se desconnectar" msgid "Sign out" msgstr "Se desconnectar" msgid "Learn more about Crowdin" msgstr "Ne saber mai sus Crowdin" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" msgid "Waiting for authentication…" msgstr "En espèra d'autentificacion..." msgid "Updating user information…" msgstr "Mesa a jorn de las informacions de l'utilizaire..." msgid "Sign in to Crowdin" msgstr "Connectatz-vos sus Crowdin" msgid "Syncing with Crowdin failed." msgstr "La sincronizacion amb Crowdin a fracassat." msgid "Crowdin error" msgstr "Error Crowdin" msgid "Uploading translations…" msgstr "Telecargament de las traduccions..." msgid "&Copy" msgstr "&Copiar" msgid "Learn more" msgstr "Ne saber mai" msgid "&Help" msgstr "&Ajuda" msgid "MO files can’t be directly edited in Poedit." msgstr "Los fichièrs MO pòdon pas èsser modificats dirèctament dins Poedit." msgid "Error opening file" msgstr "Error a la dobertura del fichièr" 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." msgid "don’t delete temporary files (for debugging)" msgstr "suprimir pas los fichièrs temporaris (per fins de desbugar)" msgid "handle a poedit:// URI" msgstr "gerís una URI de poedit://" msgid "go to item at given line number" msgstr "" msgid "Failed to communicate with Poedit process." msgstr "Impossible de comunicar amb los processus de Poedit." #, c-format msgid "Unhandled exception occurred: %s" msgstr "Una excepcion pas gerida s'es produita : %s" msgid "Select translation template" msgstr "Causir modèl de traduccion" msgid "Select translation file" msgstr "Causir fichièr de traduccion" msgid "Poedit is an easy to use translation editor." msgstr "Poedit es un logicial de traduccion de bon utilizar." 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." #, c-format msgid "File “%s” is not a translation file." msgstr "Lo fichièr « %s » es pas un fichièr de traduccion." #, c-format msgid "File “%s” doesn’t exist." msgstr "Lo fichièr « %s » existís pas." 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". #, 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." msgid "Install" msgstr "Installar" #, c-format msgid "The file “%s” has been changed by another application." msgstr "Una autra aplicacion a modificat lo fichièr « %s »." msgid "Reload file" msgstr "Recargar lo fichièr" msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" msgid "Ignore" msgstr "Ignorar" msgid "Reload File" msgstr "Recargar fichièr" msgid "The file has been modified. Do you want to save changes?" msgstr "" msgid "Save changes" msgstr "Enregistrar las modificacions" msgid "Your changes will be lost if you don’t save them." msgstr "Vòstras modificacions seràn perdudas se las enregistratz pas." msgid "Save" msgstr "Enregistrar" msgid "Do&n’t save" msgstr "E&nregistrar pas" msgid "Don’t Save" msgstr "Enregistrar pas" msgid "The changes made by the other application will be lost if you save." msgstr "" msgid "Cancel" msgstr "Anullar" msgid "Save Anyway" msgstr "Enregistrar malgrat tot" msgid "Save anyway" msgstr "Enregistrar malgrat tot" msgid "Save as…" msgstr "Enregistrar jos..." msgid "Compile to…" msgstr "Compilacion..." msgid "Compiled Translation Files" msgstr "Fichièrs de traduccion compilats" msgid "Export to HTML…" msgstr "" msgid "HTML Files" msgstr "Fichièrs HTML" #, c-format msgid "In: %s" msgstr "Dins : %s" msgid "Source code not available." msgstr "Còdi font indisponible." msgid "Updating failed" msgstr "Fracàs de la mesa a jorn" 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 "" msgid "Permission denied." msgstr "Permission refusada." 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. 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. msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" msgid "Translation entries in the file are probably incorrect." msgstr "" msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "" msgid "Open translation template" msgstr "Dobrir modèl de traduccion" #, 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." msgid "Validation results" msgstr "Resultats de la validacion" 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." msgid "The file was saved safely." msgstr "Lo fichièr es estat enregistrat en tota seguretat." 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." 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." 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." 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." msgid "No problems with the translation found." msgstr "Cap de problèma pas trobat dins la traduccion." #, 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." msgid "The translation is ready for use." msgstr "La traduccion es prèsta a èsser utilizada." #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "" "Poedit a corregit automaticament lo contengut invalid del fichièr \"%s\"." msgid "" "The file contained duplicate items, which is not allowed in PO files and " "would prevent the file from being used. Poedit fixed the issue, but you " "should review translations of any items marked as 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." msgid "Language of the translation isn’t set." msgstr "La lenga de traduccion es pas definida." msgid "Set Language" msgstr "Definir la lenga" 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)." 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." msgid "Language of the translation is the same as source language." msgstr "La lenga de traduccion es identica a la lenga font." msgid "Fix Language" msgstr "Corregir la lenga" msgid "Fix language" msgstr "Corregir la lenga" msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" msgid "Required header Plural-Forms is missing." msgstr "L'entèsta Plural requesida es absenta." #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Error de sintaxi dins l'entèsta Plural (\"%s\")." msgid "Fix the Header" msgstr "Corregir l'entèsta" 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". #, 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.")" msgid "Review" msgstr "Repassar" msgid "Would you like to use English for source text?" msgstr "" #, 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" msgid "Load English" msgstr "" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Traduit : %d de %d (%d %%)" #, c-format msgid "Remaining: %d" msgstr "Que demòra : %d" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d error" msgstr[1] "%d errors" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d entrada" msgstr[1] "%d entradas" msgid " (unsaved)" msgstr " (pas salvat)" msgid " (modified)" msgstr " (modificat)" #, c-format msgid "Failed to update translation memory: %s" msgstr "Fracàs de la mesa a jorn de la memòria de traduccion : %s" msgid "Remove same-as-source translations" msgstr "" msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" msgid "Keep" msgstr "Conservar" msgid "Remove" msgstr "" msgid "Purge deleted translations" msgstr "Escafar las traduccions suprimidas" 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 ?" 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." msgid "Purge" msgstr "Escafar" msgid "Copy from source text" msgstr "Copiar dempuèi lo tèxte font" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "Escafar la traduccion" msgid "Clear Translation" msgstr "Escafar la traduccion" msgid "Edit comment" msgstr "Modificar lo comentari" msgid "Edit Comment" msgstr "Modificar lo comentari" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "Ocurréncias al còdi" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "Ocurréncias al còdi" msgid "Hide Sidebar" msgstr "Amagar lo panèl lateral" msgid "Show Sidebar" msgstr "Afichar lo panèl lateral" msgid "Hide Status Bar" msgstr "Amagar la barra d'estat" msgid "Show Status Bar" msgstr "Afichar la barra d'estat" msgid "String length in characters: translation | source" msgstr "" msgid "String length in characters" msgstr "Longor de la cadena en caractèrs" msgid "Source text" msgstr "Tèxte font" msgid "Singular" msgstr "Singular" msgid "Plural" msgstr "Plural" msgid "Translation" msgstr "Traduccion" msgid "Pre-translated" msgstr "Pretraduit" 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. msgid "Needs work" msgstr "De repassar" 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." msgid "Create new translation" msgstr "Crear una novèla traduccion" 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 msgid "Source text ID" msgstr "" msgid "Everything" msgstr "Tot" #, c-format msgid "Form %i" msgstr "Forma %i" #, c-format msgid "Form %i (unused)" msgstr "Formulari %i (non utilizat)" msgid "Zero" msgstr "Zèro" msgid "One" msgstr "Un" msgid "Two" msgstr "Dos" msgid "Other" msgstr "Autre" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, c-format msgid "String context: %s" msgstr "" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #, c-format msgid "String identifier: %s" msgstr "" #, c-format msgid "%s Format" msgstr "Format %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "format %s" #, c-format msgid "Translation — %s" msgstr "Traduccion — %s" msgid "ID" msgstr "ID" #, c-format msgid "Source text — %s" msgstr "Tèxte font — %s" msgid "unknown language" msgstr "lenga desconeguda" #, c-format msgid "Network error: %s (%d)" msgstr "" msgid "Unknown error" msgstr "" #, c-format msgid "Failed command: %s" msgstr "La comanda a fracassat : %s" msgid "Failed to merge gettext catalogs." msgstr "Fracàs de la fusion dels catalògs gettext." msgid "Open in Editor" msgstr "Dobrir dins l’Editor" msgid "Open in editor" msgstr "Dobrir dins l’Editor" msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" msgid "No usage information" msgstr "Cap d’informacion d’utilizacion" #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "" msgstr[1] "" msgid "Source code not found" msgstr "Còdi font pas trobat" 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 "" msgid "File cannot be opened" msgstr "Lo fichièr pòt pas èsser dobèrt" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "Poedit a pas pogut dobrir lo fichièr « %s »." msgid "Find" msgstr "Trobar" msgid "Replace" msgstr "Remplaçar" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "Opcions" msgid "Ignore case" msgstr "Ignorar la cassa" msgid "Wrap around" msgstr "Boclar" msgid "Whole words only" msgstr "Mots entièrs unicament" msgid "Find in source texts" msgstr "Trobar dins los tèxtes fonts" msgid "Find in translations" msgstr "Trobar dins las traduccions" msgid "Find in comments" msgstr "Trobar dins los comentaris" msgid "Close" msgstr "Tampar" msgid "Replace &All" msgstr "Remplaçar &tot" msgid "Replace &all" msgstr "Remplaçar &tot" msgid "&Replace" msgstr "&Remplaçar" msgid "< &Previous" msgstr "< &Precedenta" msgid "&Next >" msgstr "&Seguenta >" msgid "String to find" msgstr "Cadena de recercar" msgid "Replacement string" msgstr "Cadena de remplaçament" #, c-format msgid "Cannot execute program: %s" msgstr "Impossible d'executar lo programa : %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "" msgid "Translation Language" msgstr "Lenga de traduccion" msgid "Language of the translation:" msgstr "Lenga de la traduccion :" msgid "All strings" msgstr "Totas las cadenas" msgid "Couldn’t download Localazy project details." msgstr "" msgid "There was an error when uploading translations to Localazy." msgstr "" msgid "Projects" msgstr "Projèctes" msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" msgid "Add Project" msgstr "" msgid "Add project" msgstr "" msgid "Poedit - Catalogs manager" msgstr "Poedit - Gestionari dels catalògs" msgid "Edit…" msgstr "Edicion…" msgid "Create new translations project" msgstr "Crear un novèl projècte de traduccion" msgid "Delete the project" msgstr "Suprimir aqueste projècte" msgid "Edit the project" msgstr "Modificar lo projècte" msgid "Update all" msgstr "Tot metre a jorn" msgid "Update all catalogs in the project" msgstr "Metre a jorn totes los catalògs del projècte" msgid "Total" msgstr "Total" msgid "Untrans" msgstr "Pas traduit" msgctxt "column/row header" msgid "Needs Work" msgstr "Trabalh necessari" msgid "Errors" msgstr "Errors" msgid "Last modified" msgstr "Darrièr cambiament" msgid "Select directory" msgstr "Causir un repertòri" msgid "Directories:" msgstr "Repertòris :" msgid "" msgstr "" #, c-format msgid "Do you want to delete project “%s”?" msgstr "Volètz suprimir lo projècte « %s » ?" msgid "Delete project" msgstr "Suprimir lo projècte" msgid "Deleting the project will not delete any translation files." msgstr "" msgid "Confirmation" msgstr "Confirmacion" msgid "Update all catalogs in this project?" msgstr "" msgid "Performs update from source code on all files in the project." msgstr "" msgid "Check for Updates…" msgstr "Recèrca de las mesas a jorn..." msgid "Catalogs Manager" msgstr "Gestionari de catalògs" msgid "&Preferences…" msgstr "&Preferéncias…" msgid "&Edit" msgstr "&Editar" msgid "Undo" msgstr "Anullar" msgid "Redo" msgstr "Refar" msgid "Paste and Match Style" msgstr "Pegar en conservant la mesa en forma" msgid "Delete" msgstr "Suprimir" msgid "Spelling and Grammar" msgstr "Ortografia e Gramatica" msgid "Show Spelling and Grammar" msgstr "Afichar l'ortografia e la gramatica" msgid "Check Document Now" msgstr "Verificar lo document ara" msgid "Check Spelling While Typing" msgstr "Verificar l'ortografia al moment de la picada" msgid "Check Grammar With Spelling" msgstr "Verificar la gramatica amb l’ortografia" msgid "Correct Spelling Automatically" msgstr "Corregir l’ortografia automaticament" msgid "Substitutions" msgstr "Substitucions" msgid "Show Substitutions" msgstr "Afichar las substitucions" msgid "Smart Copy/Paste" msgstr "Copiar/pegar intelligent" msgid "Smart Quotes" msgstr "Verguetas intelligentas" msgid "Smart Dashes" msgstr "Jonhents intelligents" msgid "Smart Links" msgstr "Ligams intelligents" msgid "Text Replacement" msgstr "Tèxte de remplaçament" msgid "Transformations" msgstr "Transformacions" msgid "Make Upper Case" msgstr "Metre en majusculas" msgid "Make Lower Case" msgstr "Metre en minusculas" msgid "Capitalize" msgstr "Metre en majuscula" msgid "Speech" msgstr "Dictar" msgid "Start Speaking" msgstr "Començar de parlar" msgid "Stop Speaking" msgstr "Començar de parlar" msgid "&View" msgstr "&Afichatge" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item 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 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 msgid "Enter Full Screen" msgstr "Passar en mòde ecran complet" msgid "Window" msgstr "Fenèstra" msgid "Minimize" msgstr "Reduire" msgid "Zoom" msgstr "Agrandir" msgid "Welcome to Poedit" msgstr "Benvenguda dins Poedit" msgid "Bring All to Front" msgstr "Tot passar al primièr plan" msgid "Information about the translator" msgstr "Informacions sul traductor" msgid "Name:" msgstr "Nom :" msgid "Your Name" msgstr "Vòstre nom" msgid "Email:" msgstr "Email :" msgid "you@example.com" msgstr "" 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." msgid "Editing" msgstr "Cambiaments" msgid "Automatically compile MO file when saving" msgstr "Compilar automaticament lo fichier MO al moment de l'enregistrament" msgid "Show summary after updating files" msgstr "" msgid "Check spelling" msgstr "Verificar l’ortografia" msgid "Always change focus to text input field" msgstr "Activar totjorn la zòna de picada del tèxte" 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." msgid "Appearance" msgstr "Aparéncia" msgid "Use custom list font:" msgstr "Utilizar una poliça personalizada :" msgid "Use custom text fields font:" msgstr "Utilizar una poliça personalizada pels camps de tèxte :" 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 msgid "(requires Windows 8 or newer)" msgstr "(necessita Windows 8 o mai recent)" msgid "General" msgstr "General" msgid "Use translation memory" msgstr "Utilizar la memòria de traduccion" msgid "Manage…" msgstr "Gerir…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "Al moment de l’actualizacion dempuèi las fonts" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "emplenatge aprox. amb lo fichièr" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "pretraduire amb la MT" 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 "" msgid "Stored translations:" msgstr "Traduccions emmagazinadas :" msgid "Database size on disk:" msgstr "Talha de la basa de donadas sul disc :" msgid "Import Translation Files…" msgstr "Importar de fichièrs de traduccion…" msgid "Import translation files…" msgstr "Importar de fichièrs de traduccion…" msgid "Import From TMX…" msgstr "Import de TMX…" msgid "Import from TMX…" msgstr "Import de TMX…" msgid "Export To TMX…" msgstr "Exportar en TMX…" 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). msgid "Reset" msgstr "Reïnicializar" msgid "Select translation files to import" msgstr "Seleccionar los fichièrs de traduccion d'importar" msgid "Translation Memory" msgstr "Memòria de traduccion" msgid "Importing translations…" msgstr "Importacion de las traduccions…" #, c-format msgid "Error loading translation file “%s”." msgstr "Error al cargament del fichièr de traduccion « %s »." msgid "Finalizing…" msgstr "Finalizacion..." msgid "Select TMX files to import" msgstr "Seleccionatz los fichièrs TMX d’importar" msgid "TMX Files" msgstr "Fichièrs TMX" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "" msgid "Import error" msgstr "Error d’importacion" msgid "Export as…" msgstr "Exportar..." msgid "Exporting translations…" msgstr "Export de las traduccions…" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "" msgid "Export error" msgstr "Error d’exportacion" msgid "Reset translation memory" msgstr "Reïnicializar la memòria de traduccion" 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 ?" 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. msgid "TM" msgstr "MT" 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." msgid "Custom Extractors:" msgstr "" msgid "Custom extractors:" msgstr "" msgid "GNU gettext" msgstr "GNU gettext" msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" msgid "Delete extractor" msgstr "Suprimir l'extractor" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "Sètz segur que volètz suprimir l'extractor «%s » ?" msgid "Extractors" msgstr "Extractors" msgid "Accounts" msgstr "Comptes" msgid "Automatically check for updates" msgstr "Recercar automaticament las mesas a jorn" msgid "Include beta versions" msgstr "Inclure las versions bèta" 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." msgid "Updates" msgstr "Mesas a jorn" 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." msgid "Line endings:" msgstr "Fins de linha :" msgid "Unix (recommended)" msgstr "Unix (recomandat)" msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "Passar a la linha a :" msgid "Preserve formatting of existing files" msgstr "Preservar lo formatatge dels fichièrs existents" msgid "Advanced" msgstr "Avançats" msgid "Settings" msgstr "" msgid "Preparing strings…" msgstr "Preparacion de las cadenas…" msgid "Pre-translating from translation memory…" msgstr "Pre-traduccion via memòria de traduccion…" #, 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" msgid "Pre-translating…" msgstr "Pretraduccion…" 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. msgid "Pre-translate" msgstr "Pretraduction" msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" msgid "Cannot pre-translate from unknown language." msgstr "" msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" msgid "Only fill in exact matches" msgstr "Completar unicament las correspondéncias exactas" msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" msgid "Don’t mark exact matches as needing work" msgstr "" 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 "" msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "" msgstr[1] "" msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" msgid "No entries could be pre-translated." msgstr "" msgid "" "The TM doesn’t contain any strings similar to the content of this file. It " "is only effective for semi-automatic translations after Poedit learns enough " "from files that you translated manually." msgstr "" "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." msgid "Cancelling…" msgstr "Anullacion…" msgid "Drag Folders or Files Here" msgstr "" msgid "Drag folders or files here" msgstr "" msgid "Add Folders…" msgstr "Apondre dossièrs…" msgid "Add folders…" msgstr "Apondre dossièrs…" msgid "Add Files…" msgstr "Apondre fichièrs…" msgid "Add files…" msgstr "Apondre fichièrs…" msgid "Add Wildcard…" msgstr "" msgid "Add wildcard…" msgstr "" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) msgid "Reveal in Finder" msgstr "" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" msgid "Show in Explorer" msgstr "" msgid "Show in Folder" msgstr "" msgid "Paths" msgstr "Camins" msgid "Excluded paths" msgstr "Camins excluses" msgid "Advanced extraction settings" msgstr "" msgid "Extract notes for translators from:" msgstr "" msgid "Comments prefixed with:" msgstr "" msgid "All comments" msgstr "Totes los comentaris" msgid "Additional xgettext flags:" msgstr "" msgid "Additional keywords" msgstr "Mots claus suplementaris" msgid "Name of the project the translation is for" msgstr "Nom del projècte de traduccion" msgid "Team name and email address or URL" msgstr "" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "p. ex. nplurals=2; plural=(n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (recomandat)" 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." msgid "Placeholders correctness" msgstr "Correccion dels marcadors de contengut" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "Lo marcador « %s » es absent de la traduccion." #, 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." msgid "Plural form translations" msgstr "Formula del plural" msgid "Not all plural forms are translated." msgstr "Totes los plurals son pas traduches." msgid "Inconsistent upper/lower case" msgstr "Inconsisténcia majusculas/minisculas" msgid "The translation should start as a sentence." msgstr "" msgid "The translation should start with a lowercase character." msgstr "La traduccion deu començar amb una minuscula." msgid "Inconsistent whitespace" msgstr "Inconsisténcia dels espacis" msgid "The translation doesn’t start with a space." msgstr "La traduccion comença pas per un espaci." 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." msgid "The translation is missing a newline at the end." msgstr "" msgid "The translation ends with a newline, but the source text doesn’t." msgstr "" msgid "The translation is missing a space at the end." msgstr "Manca un espaci a la fin de la traduccion." msgid "The translation ends with a space, but the source text doesn’t." msgstr "" msgid "Punctuation checks" msgstr "Verificacions de pontuacion" #, c-format msgid "The translation should end with “%s”." msgstr "La traduccion deu acabar amb « %s »." #, c-format msgid "The translation should not end with “%s”." msgstr "La traduccion deu pas acabar amb « %s »." #, 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 »." msgid "Cloud" msgstr "" msgid "Clear Menu" msgstr "Escafar lo menú" msgid "Clear menu" msgstr "Escafar lo menú" msgid "Comment:" msgstr "Comentari :" msgid "Update" msgstr "Actualizar" msgid "&Delete" msgstr "&Suprimir" msgid "Delete the comment" msgstr "Suprimir lo comentari" msgid "Edit project" msgstr "Modificar lo projècte" msgid "Project name:" msgstr "Nom del projècte :" msgid "Browse" msgstr "Percórrer" msgid "Add directory to the list" msgstr "Apondre un repertòri a la lista" msgid "OK" msgstr "D'acòrdi" msgid "&File" msgstr "&Fichièr" msgid "&New…" msgstr "&Novèl…" msgid "New from &POT/PO file…" msgstr "Novèl a partir d'un fichièr &POT/PO…" msgid "New From &POT/PO File…" msgstr "Novèl a partir d'un fichièr &POT/PO…" msgid "&Open…" msgstr "&Dobrir…" msgid "Open Recent" msgstr "Dobèrts recentament" msgid "Open recent" msgstr "Dobèrts recentament" msgid "Open cloud translation…" msgstr "" msgid "Open Cloud Translation…" msgstr "" msgid "&Start window" msgstr "&Fenèstra d’aviada" msgid "&Start Window" msgstr "&Fenèstra d’aviada" msgid "Catalogs &manager" msgstr "Gestion dels &catalògs" msgid "Catalogs &Manager" msgstr "Gestion dels &catalògs" msgid "&Close" msgstr "&Tampar" msgid "&Save" msgstr "&Enregistrar" msgid "Save &as…" msgstr "Enregistrar jos…" msgid "Save &As…" msgstr "Enregistrar jos…" msgid "Compile to MO…" msgstr "Compilar en MO…" msgid "E&xport to HTML…" msgstr "" msgid "Check for updates…" msgstr "Recèrca de las mesas a jorn…" msgid "Settings…" msgstr "Paramètres…" msgid "&Preferences" msgstr "&Preferéncias" msgid "E&xit" msgstr "&Quitar" msgid "Quit" msgstr "Quitar" msgid "Copy from singular" msgstr "Copiar del singular" msgid "Copy From Singular" msgstr "Copiar del singular" msgid "Translation needs &work" msgstr "Traduccion necessitant una &revision" msgid "Translation Needs &Work" msgstr "Traduccion necessitant una &revision" msgid "Edit &comment" msgstr "Modificar lo &comentari" msgid "Edit &Comment" msgstr "Modificar lo &comentari" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "Suggestions" msgid "&Find…" msgstr "&Recercar…" msgid "Replace…" msgstr "Remplaçar…" msgid "Find next" msgstr "Cercar lo seguent" msgid "Find previous" msgstr "Trobar lo precedent" msgid "Find and Replace…" msgstr "Recercar e remplaçar…" msgid "Find Next" msgstr "Cercar lo seguent" msgid "Find Previous" msgstr "Cercar lo precedent" msgid "Show string &ID" msgstr "Afichar l’&ID de la cadena" msgid "Show String &ID" msgstr "Afichar l’&ID de la cadena" msgid "Show warnings" msgstr "Afichar los avertiments" msgid "Show Warnings" msgstr "Afichar los avertiments" msgid "Sort by &file order" msgstr "Triar per &fichièr" msgid "Sort by &File Order" msgstr "Triar per &Fichièr" msgid "Sort by &source" msgstr "Triar per &font" msgid "Sort by &Source" msgstr "Triar per &Font" msgid "Sort by &translation" msgstr "Triar per &traduccion" msgid "Sort by &Translation" msgstr "Triar per &Traduccion" msgid "&Group by context" msgstr "&Gropar per contèxte" msgid "&Group By Context" msgstr "&Gropar per Contèxte" msgid "Entries with errors first" msgstr "Entradas amb errors d'en primièr" msgid "Entries with Errors First" msgstr "Entradas amb Errors d'en primièr" msgid "&Untranslated entries first" msgstr "Entradas &pas traduitas d'en primièr" msgid "&Untranslated Entries First" msgstr "Entradas &pas Traduitas d'en Primièr" msgid "&Show code occurrences" msgstr "" msgid "&Show Code Occurrences" msgstr "" msgid "Show sidebar" msgstr "Afichar lo panèl lateral" msgid "Show status bar" msgstr "Afichar la barra d'estat" msgid "&Translation" msgstr "&Traduccion" msgid "&Update from source code" msgstr "&Actualizar a partir del còdi font" msgid "&Update from Source Code" msgstr "&Actualizar a partir del còdi font" msgid "Update from &POT file…" msgstr "Actualizar a partir d’un fichièr &POT…" msgid "Update from &POT File…" msgstr "Actualizar a partir d’un fichièr &POT…" msgid "Sync with Crowdin" msgstr "Sincronizar amb Crowdin" msgid "Pre-&translate…" msgstr "Pre-&traduccion…" msgid "&Validate translations" msgstr "&Validar las traduccions" msgid "&Validate Translations" msgstr "&Validar las traduccions" msgid "Remove Same-as-Source Translations" msgstr "" msgid "&Purge deleted translations" msgstr "&Escafar las traduccions suprimidas" msgid "&Purge Deleted Translations" msgstr "&Escafar las traduccions suprimidas" msgid "&Properties…" msgstr "&Proprietats…" msgid "&Go" msgstr "A&viar" msgid "&Done and next" msgstr "&Aplicar e contunhar" msgid "&Done and Next" msgstr "&Aplicar e contunhar" msgid "Previously edited" msgstr "" msgid "Previously Edited" msgstr "" msgid "&Previous translation" msgstr "Traduccion &precedenta" msgid "&Previous Translation" msgstr "Traduccion &precedenta" msgid "&Next translation" msgstr "Traduccion segue&nta" msgid "&Next Translation" msgstr "Traduccion segue&nta" msgid "P&revious unfinished" msgstr "Incomplet p&recedent" msgid "P&revious Unfinished" msgstr "Incomplet p&recedent" msgid "Ne&xt unfinished" msgstr "Incomplet seguen&t" msgid "Ne&xt Unfinished" msgstr "Incomplet seguen&t" msgid "Previous plural form" msgstr "Forma plural precedenta" msgid "Previous Plural Form" msgstr "Forma plural precedenta" msgid "Next plural form" msgstr "Forma plurala seguenta" msgid "Next Plural Form" msgstr "Forma plurala seguenta" msgid "&Online help" msgstr "&Ajuda en linha" msgid "&Online Help" msgstr "&Ajuda en linha" msgid "&GNU gettext manual" msgstr "Manual de &GNU gettext" msgid "&GNU gettext Manual" msgstr "Manual de &GNU gettext" msgid "&About Poedit" msgstr "&A prepaus de Poedit" msgid "&About" msgstr "&A prepaus" msgid "Extractor setup" msgstr "Installacion de l'extractor" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "" "Lista de las extensions separadas per de punts-virgulas (ex. *.cpp;*.h) :" msgid "Invocation:" msgstr "Apèl :" msgid "Command to extract translations:" msgstr "Comanda per extraire de traduccions :" 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)." msgid "An item in keywords list:" msgstr "Un element de la lista dels mots claus :" 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." msgid "An item in input files list:" msgstr "Un element de la lista dels fichièrs d'entrada :" #, 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." msgid "Source code charset:" msgstr "Jòc de caractèrs del còdi font :" #, 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." msgid "Translation Properties" msgstr "Proprietats de traduccion" msgid "Project name and version:" msgstr "Nom e version del projècte :" msgid "Language team:" msgstr "Equipa de lenga :" msgid "Plural forms:" msgstr "Formas pluralas :" msgid "Use default rules for this language" msgstr "Utilizar las règlas per defaut d'aquesta lenga" msgid "Use custom expression" msgstr "Utilizar una expression personalizada" msgid "Learn about plural forms" msgstr "Ne saber mai sus las formas pluralas" msgid "Charset:" msgstr "Jòc de caractèrs :" msgid "Advanced Extraction Settings…" msgstr "" msgid "Advanced extraction settings…" msgstr "" msgid "Translation properties" msgstr "Proprietats de traduccion" msgid "Sources Paths" msgstr "" msgid "Sources paths" msgstr "Camins de las fonts" msgid "Extract text from source files in the following directories:" msgstr "Extraire lo tèxte dels fichièrs fonts dins los repertòris seguents :" msgid "Base path:" msgstr "Camin de basa :" msgid "Sources Keywords" msgstr "" msgid "Sources keywords" msgstr "Mots claus fonts" 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 :" msgid "Also use default keywords for supported languages" msgstr "" msgid "Learn about gettext keywords" msgstr "Ne saber mai suls mots claus gettext" msgid "Update summary" msgstr "Resumit de la mesa a jorn" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" msgid "New strings" msgstr "Cadenas novèlas" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" msgid "Obsolete strings" msgstr "Cadenas obsolètas" msgid "(0 new, 0 obsolete)" msgstr "(0 novèla, 0 obsolèta)" msgid "Open" msgstr "" msgid "Open file" msgstr "Dobrir fichièr" msgid "Save file" msgstr "Enregistrar fichièr" msgid "Validate" msgstr "Validar" msgid "Check for errors in the translation" msgstr "Verificar las errors dins la traduccion" msgid "Update from code" msgstr "Metre a jorn a partir del còdi" msgid "Update from Code" msgstr "Metre a jorn a partir del còdi" msgid "Update from source code" msgstr "Metre a jorn a partir del còdi font" msgid "Sidebar" msgstr "Panèl lateral" 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. msgid "Previous source text" msgstr "Tèxte font precedent" msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" msgid "Notes for translators" msgstr "Nòtas pels traductors" msgid "Comment" msgstr "Comentari" msgid "Add comment" msgstr "Apondre un comentari" msgid "Add Comment" msgstr "Apondre un comentari" msgid "Delete From Translation Memory" msgstr "Escafar de la memòria de traduccion" msgid "Delete from translation memory" msgstr "Escafar de la memòria de traduccion" msgid "Translation suggestions" msgstr "Suggestions de traduccion" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). 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). msgid "No Matches Found" msgstr "Cap de Correspondéncia pas trobada" msgid "This string was found in Poedit’s translation memory." msgstr "" "Aquesta cadena es estada trobada dins la memòria de traduccion de Poedit." msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" msgid "The TMX file is malformed." msgstr "Lo fichièr de TMX es mal formatat." msgid "No translations were found in the TMX file." msgstr "" #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "" #, c-format msgid "Translation memory error: %s (%d)." msgstr "" msgid "Cannot create temporary directory." msgstr "Impossible de crear lo repertòri temporari." msgid "There are no translations. That’s unusual." msgstr "I a pas cap de traduccions. Es pas corrent." msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "Translators typically use PO template files (POTs) prepared for them by the " "developer." msgstr "" msgid "(Learn more about GNU gettext)" msgstr "(Ne saber mai sus GNU gettext)" msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" msgid "Update from POT" msgstr "Metre a jorn dempuèi un POT" msgid "Take translatable strings from an existing POT template." msgstr "Utilizar las cadenas tradusiblas d'un modèl POT existent." 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 :" msgid "Extract from sources" msgstr "Extraire dempuèi las fonts" 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 #, c-format msgid "Version %s" msgstr "Version %s" msgid "Create new" msgstr "Crear novèl" msgid "Create new translation from POT template." msgstr "Crear una traduccion novèla a partir d’un modèl POT." msgid "Browse files" msgstr "Percórrer los fichièrs" msgid "Open and edit translation files." msgstr "" msgid "Translate cloud project" msgstr "" msgid "Collaborate with other people online." msgstr "" msgid "Recent files" msgstr "Fichièrs recents" msgid "Sync" msgstr "Sincronizar" 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") #, 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. #, c-format msgid "%s Preferences" msgstr "Preferéncias de %s" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "Servicis" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "Amagar %s" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "Amagar los autres" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "Afichar tot" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "Quitar %s" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "Preferéncias..." msgid "Preferences..." msgstr "Preferéncias..." #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "Recents" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "Frequent" msgid "&Apply" msgstr "&Aplicar" msgid "Apply" msgstr "Aplicar" msgid "&Back" msgstr "&Tornar" msgid "Back" msgstr "Tornar" msgid "&Cancel" msgstr "&Anullar" msgid "&Clear" msgstr "&Escafar" msgid "Clear" msgstr "Escafar" msgid "Copy" msgstr "Copiar" msgid "Cu&t" msgstr "&Talhar" msgid "Cut" msgstr "Talhar" msgid "Edit" msgstr "Modificar" msgid "&Quit" msgstr "&Quitar" msgid "Help" msgstr "Ajuda" msgid "&New" msgstr "&Novèl" msgid "New" msgstr "Novèl" msgid "&No" msgstr "&Non" msgid "No" msgstr "Non" msgid "&OK" msgstr "&D'acòrdi" msgid "Open…" msgstr "Dobrir…" msgid "&Open..." msgstr "D&obrir..." msgid "Open..." msgstr "Dobrir..." msgid "&Paste" msgstr "&Pegar" msgid "Paste" msgstr "Pegar" msgid "Preferences" msgstr "Preferéncias" msgid "&Redo" msgstr "&Restablir" msgid "Refresh" msgstr "Actualizar" msgid "&Save as" msgstr "&Enregistrar jos" msgid "Save as" msgstr "Enregistrar jos" msgid "Select &All" msgstr "Seleccionar &tot" msgid "Select All" msgstr "Seleccionar tot" msgid "&Undo" msgstr "An&ullar" msgid "&Yes" msgstr "Ò&c" msgid "Yes" msgstr "Òc" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Maj+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Entrada" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "Naut" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "Bas" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "Esquèrra" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "Drech" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "maj" poedit-3.5/locales/el.mo0000644000175100001770000022604314664354153012172 00000000000000$,*X8 Y8 e8&p88<88J8gF9 99 99 99999: :::&:5:;:A:J:^:r:v:::::::::: : ::; ; ;!;1;G;];l;;;;;;;;; ; < <<%<A<]<v<<<<<<<<=*=:= X= d=n=w=== = = == == = == >> *>6>F>Z>u>~>>>> > >1 ?F]FlFF;F F'F^G?bG G GG*GGH"H56HlHHHHH H H H H HIII$I+I1IfCIIIuI(TJ}JJ"JJ JJJ J KK#K04KeKK#K<K"KL (L3L*FL0qL!L'LLLM(&MTOM MM M MMMM N N (N 6N CNPN_NnNNNN NN NNN N NNNO8O;OOzmPP PPQ *Q7QJQ2fQQQQQQ R'R /R Y UY_YnY }YYYYYYYYYZZZZZ=Z [1[P[ni[E[\%\;>\ z\\\@\\],^,^^ __2)_*\___ )`5`D`S`%h``````` aa"a5a;aVa[a8caa aaa a a aaa a a b b(*bSbYbzrbbbc c c c (c 4c@c Hc Sc `c jc wc cccc"ccd0d 9d FdSd \dhdod xddddd d ddd e &e3eCe!Se ueeeee eeeeef f f 'f 3f@fTfdfyfffffNgig gggg gg ggKg>hSh bhphhhh1hh i i%i=iirjwj(jj jj+jk k8k"WkzkkNlCil8llm8un1nRnc3oQoo'p:,plgpPp-%qCSqAqKq0%r.Vrr!s)6s-`s+s8sCsu7t,tLt]'uuZ vgfvJv[wouww7xmx_7y[yyy z{ {,{A{T{l{7{2{"{|)|@|X|k||| } }2}E} \}j}r}u} |}"}$}}}~~"~3~K~Z~b~<r~~~$~'AWm#V% 8Cas. ݀ H5Wm7 33=aqӂ؂݂. 2SoƒӃ!Ņ E3Jw~#} FT n|  Ɉو!#!Eg //Ή99J ""܊& &2Yl*ȋ*L5L ό݌ #1>1p$$ǍBBU44͎**-Xh"p9&͏8$-,R͐' 4"T"w='1<"n"=В43Cw747-+Y(r:Z?YUJ[bluϖ?E` 3ؘ _,!Кi@Lc((7'`G"М(?P\/3ݝ/%Agx))ڞ!!75Y5 ş ҟ!# &@Gd$5<$r58͡{NѢ2M"=pãɣ=٣=9U?ޤ;4+;`&"ߥtw>ʦ 5V)vp);7Dm|44 Tb&&%% !0(R{ѫ;Ŭ; =RI02ͮIJ[+kɯZ(y'Iʰ~E2ٱ! ".NQbBXF 41Oc- ER%p1 ȵ/,F%d0ʶ))% O,] Ϸ040LeEp&l07Hh7`* K,V04F0G f&r+bؿK;) )E(>n#2DIZ$nol (YF3+(AY^ ##"$FkN%U%{#00'0.[_0}P]J],_T521I!Q)Dn??! 4.cu$$$'8G=\z2(b[<-$Pu0|y-'UqMp{L$!8R6lO88,2e33*+ BL[Ep vN_}''$4$Y5~I:/j  ))?i##$ &9>!x2O4BR 0.E_4I6$2[-.$F2W4IQ -[806N 4!!8<'u18'10>bDH3/c:"&&"I gt0%Vr259?3bs.$7K*?6%O=uNdQ}+<o6A4vviWAAe+]8Miw7WK/SBHL P\ [ c m Yd  \ Q U }Mdmfd&  0N!a#2'xv{>21'd'BX$vE SS..&0,&]3%$ ) @ J!:`!0!:!R"cZ"X"#2#$)&$P$:`$+$4$($%%6%h>%$%%'%&&u&&''([(( )))#)*\ *"g*7*]*% +7F+~++3++>+xo&]L<-*p@Bsr[C o<r9g/lT1h*c/w-'-j7;yLRuP $fu\m"YNe?%(u'?#sv{[R&V` % d.+G9 w PD) {zDx;gHE%)pg6't sta<@a&=8,\ fO:Ky+!:* e~OV5! `jW|r8b0bb5c>n|Q`^3W}/hUK>4^410k!Ni\"nl=_T#3 I)Sok_T2RB>XJY}6WQI.IFXEw,dM AU[~i3E5Z=qHZ47dU?AP"lD]|e@^C am(zAL_]tS HK}(XSF.M:jmk#{G1GcBFq,Y0hyJvNq9Cx7QfZ8$Oz 2p;2i6MJ~v+Vn $ (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd AccountAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add accountAdd 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 languagesAlt+Always 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 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 errorCtrl+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 no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownDownloading 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:EnterEnter 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 loading translation file “%s”.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export errorExport 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…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)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport from TMX…Import translation files…Importing translation memory from “%s” 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 CrowdinLeftLine %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 translations were found in the TMX file.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKObsolete stringsOneOnly 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 translation templateOpen...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 translationsQuitQuit %sReading file content failed with the following error: %sRecentRecent 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 FinderReviewRightSaveSave &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 languageServicesSet LanguageSet languageSettingsSettings…Shift+Show AllShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow summary after updating filesShow 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.These strings are no longer in the source code. Poedit will remove them from the file now.These strings were found in the sources but were not in the file. Poedit will add them to the file now.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.Translated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation entries in the file are probably incorrect.Translation 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 errorUntransUpUpdateUpdate 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 the file failed. Click on 'Details >>' for details.Updating 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown 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: 2024-08-30 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 ζητήματα στην μετάφραση.%i γραμμή του αρχείου “%s” δεν φορτώθηκε σωστά.%i γραμμές του αρχείου “%s” δεν φορτώθηκαν σωστά.Μορφή %sΠροτιμήσεις %sΜορφή %s&Σχετικά&Σχετικά με το Poedit&Εφαρμογή&Πίσω&Ακύρωση&Απαλοιφή&Κλείσιμο&Αντιγραφή&Διαγραφή&Τέλος και επόμενο&Τέλος και επόμενο&Επεξεργασία&Αρχείο&Εύρεση…&Οδηγίες χρήσης του GNU gettext&Οδηγίες χρήσης του GNU gettext&ΜετάβασηΟμαδοποίηση κατά &συμφραζόμεναΟμαδοποίηση κατά &συμφραζόμενα&Βοήθεια&Νέα&Νέο…&Επόμενο >&Επόμενη μετάφραση&Επόμενη μετάφραση&Όχι&OK&Διαδικτυακή βοήθεια&Διαδικτυακή βοήθεια&Άνοιγμα...&Άνοιγμα…&Επικόλληση&Προτιμήσεις&Προτιμήσεις…&Προηγούμενη μετάφραση&Προηγούμενη μετάφραση&Ιδιότητες…Ε&κκαθάριση των Διαγραμμένων ΜεταφράσεωνΕ&κκαθάριση των διαγραμμένων μεταφράσεων&Έξοδος&Επανάληψη&Αντικατάσταση&Αποθήκευση&Αποθήκευση ως&Προβολή εμφανίσεων κώδικα&Προβολή εμφανίσεων κώδικα&Παράθυρο εκκίνησης&Παράθυρο εκκίνησης&Μετάφραση&ΑναίρεσηΠρώτα οι &Αμετάφραστες ΚαταχωρήσειςΠρώτα οι &αμετάφραστες καταχωρήσεις&Ενημέρωση από πηγαίο κώδικα&Ενημέρωση από πηγαίο κώδικαΕπι&κύρωση μεταφράσεωνΕπι&κύρωση μεταφράσεων&Προβολή&Ναι(0 νέα, 0 παρωχημένα)(Μάθε περισσότερα για το GNU gettext)(Νέα: %i, παρωχημένα: %i)(Χρήση προεπιλεγμένης γλώσσας)(Δεν έχετε συνδεθεί)(απαιτεί Windows 8 ή νεότερα)< &Προηγούμενο<χωρίς όνομα>Σχετικά με το %sΛογαριασμόςΛογαριασμοίΠροσθήκηΠροσθήκη λογαριασμούΠροσθήκη σχολίουΠροσθήκη αρχείων…Προσθήκη φακέλων…Προσθήκη έργουΠροσθήκη χαρακτήρα αναπλήρωσης…Προσθήκη λογαριασμούΠροσθήκη σχολίουΠροσθήκη φακέλου στη λίσταΠροσθήκη αρχείων…Προσθήκη φακέλων…Προσθήκη έργουΠροσθήκη χαρακτήρα αναπλήρωσης…Επιπρόσθετες λέξεις-κλειδιάΕπιπρόσθετες ετικέτες xgettext:ΣύνθεταΣύνθετες ρυθμίσεις εξαγωγής…Σύνθετες ρυθμίσεις εξαγωγήςΣύνθετες ρυθμίσεις εξαγωγής…Όλα τα αρχεία μετάφρασηςΌλα τα σχόλιαΌλες οι συμβολοσειρέςΧρησιμοποιήστε επίσης τις προεπιλεγμένες λέξεις-κλειδιά για υποστηριζόμενες γλώσσεςAlt+Πάντα αλλαγή εστίασης στο πεδίο εισόδου κειμένουΈνα αντικείμενο στη λίστα των αρχείων εισαγωγής:Ένα αντικείμενο στη λίστα των λέξεων κλειδιών:ΕμφάνισηΕφαρμογήΘέλετε σίγουρα να διαγράψετε το εργαλείο εξαγωγής "%s";Είστε σίγουροι ότι θέλετε να επαναφέρετε την μνήμη μεταφράσεων;Αυτόματος έλεγχος για ενημερώσειςΑυτόματη μεταγλώττιση αρχείου MO κατά την αποθήκευσηΠίσωΔιαδρομή βάσης:Οι εκδόσεις beta περιέχουν τις πιο πρόσφατες λειτουργίες και βελτιώσεις, αλλά μπορεί να είναι λιγότερο σταθερές.Μεταφορά όλων στο προσκήνιοΚατεστραμμένο αρχείο PO: το msgstr μορφής πληθυντικού χρησιμοποιείται χωρίς msgid_pluralΚατεστραμμένο αρχείο PO: η μορφή ενικού msgstr χρησιμοποιείται μαζί με το msgid_pluralΚατεστραμμένη σήμανση στη συμβολοσειρά μετάφρασης.ΑναζήτησηΑναζήτηση αρχείωνΑκύρωσηΑκύρωση…Αδυναμία δημιουργίας του φακέλου των προσωρινών αρχείων.Αδυναμία εκτέλεσης προγράμματος: %sΔεν είναι δυνατή η προ-μετάφραση χωρίς πηγαίο κείμενο.Κεφαλαιοποίηση&Διαχείριση καταλόγων&Διαχείριση καταλόγωνΔιαχείριση καταλόγωνΑλλαγή γλώσσας περιβάλλοντος εργασίαςΣύνολο χαρακτήρων:Έλεγχος εγγράφου τώραΈλεγχος γραμματικής με ορθογραφίαΈλεγχος ορθογραφίας κατά την πληκτρολόγησηΈλεγχος για ενημερώσεις…Έλεγχος λαθών στη μετάφρασηΈλεγχος για ενημερώσεις…Έλεγχος ορθογραφίαςΑπαλοιφήΑπαλοιφή μενούΕκκαθάριση μετάφρασηςΑπαλοιφή μενούΕκκαθάριση μετάφρασηςΚλείσιμοΕμφανίσεις κώδικαΕμφανίσεις κώδικαΣυλλογή αρχείων προέλευσης…Εντολή εξαγωγής μεταφράσεων:ΣχόλιοΣχόλιο:Σχόλια με πρόθεμα:Μεταγλώττιση σε MO…Μεταγλώττιση σε…Μεταγλωττισμένα αρχεία μετάφρασηςΡύθμισε την εξαγωγή του πηγαίου κώδικα στις Ιδιότητες.ΕπιβεβαίωσηΑντιγραφήΑντιγραφή από ενικόΑντιγραφή από αρχικό κείμενοΑντιγραφή από ενικόΑντιγραφή από αρχικό κείμενοΑυτόματη διόρθωση ορθογραφίαςΔεν ήταν δυνατή η φόρτωση του αρχείου, πιθανώς είναι κατεστραμμένο.Δεν ήταν δυνατή η αποθήκευση του αρχείου %s.Δημιουργία νέαςΔημιουργία νέας μετάφρασηςΔημιουργία νέας μετάφρασης από πρότυπο POT.Δημιουργία νέου έργου μετάφρασηςΣφάλμα CrodwinCtrl+Απο&κοπήΠροσαρμοσμένα εργαλεία εξαγωγής:Προσαρμοσμένα εργαλεία εξαγωγής:Προσαρμογή γραμμής εργαλείων…ΑποκοπήΜέγεθος βάσης δεδομένων στο δίσκο:ΔιαγραφήΔιαγραφή από μεταφραστική μνήμηΔιαγραφή εργαλείου εξαγωγήςΔιαγραφή από μεταφραστική μνήμηΔιαγραφή έργουΔιαγραφή του σχολίουΔιαγραφή του έργουΗ διαγραφή του έργου δεν θα διαγράψει κανένα αρχείο μετάφρασης.Κατάλογοι:Θέλετε να διαγράψετε το έργο “%s”;Θέλετε να φορτώσετε εκ νέου το αρχείο από τον δίσκο; Αν το κάνετε, θα χαθούν οι μη αποθηκευμένες αλλαγές σας στο Poedit.Θα ήθελες να αφαιρεθούν όλες οι μεταφράσεις, οι οποίες έπαψαν να χρησιμοποιούνται;&Χωρίς αποθήκευσηΧωρίς αποθήκευσηΝα μην εμφανιστεί ξανάΜην επισημάνετε ακριβείς αντιστοιχίες ως χρειάζεται δουλειάΝα μην εμφανιστεί ξανάΚάτωΛήψη τελευταίων μεταφράσεων…Η λήψη μεταφράσεων είναι απενεργοποιημένη για αυτό το έργο.Σύρετε φακέλους ή αρχεία εδώΣύρετε φακέλους ή αρχεία εδώΈ&ξοδοςΕ&ξαγωγή σε HTML…ΕπεξεργασίαΕπεξεργασία &σχολίουΕπεξεργασία &σχολίουΕπεξεργασία σχολίουΕπεξεργασία σχολίουΕπεξεργασία έργουΕπεξεργασία του έργουΕπεξεργασίαΕπεξεργασία…Email:EnterΠλήρης οθόνηΟι καταχωρήσεις σε αυτό το αρχείο έχουν διαφορετικό αριθμό μορφών πληθυντικού από αυτόν που αναφέρει η κεφαλίδα "Plural-Forms" του αρχείουΚαταχωρήσεις με σφάλματα πρώτεςΚαταχωρήσεις με σφάλματα πρώτεςΟι θέσεις με σφάλματα έχουν επισημανθεί με κόκκινο στην λίστα. Οι λεπτομέρειες του σφάλματος θα εμφανιστούν, όταν επιλέξεις τη συγκεκριμένη θέση.Σφάλμα φόρτωσης του αρχείου μετάφρασης “%s”.Σφάλμα ανοίγματος αρχείουΣφάλμα αποθήκευσης αρχείουΣφάλμα κατά τη φόρτωση του αρχείου XLIFF: %sΣφάλματαΤα πάνταΕξαιρούμενες διαδρομέςΕξαγωγή σε TMX…Εξαγωγή ως…Σφάλμα εξαγωγήςΕξαγωγή σε HTML…Εξαγωγή σε TMX…Αποτυχία εξαγωγής μεταφραστικής μνήμης στο “%s”.Εξαγωγή μεταφράσεων…Εξαγωγή από τις πηγέςΕξαγωγή σημειώσεων για μεταφραστές από:Εξαγωγή του κειμένου από τα πηγαία αρχεία στους ακόλουθους φακέλους:Εξαγωγή μεταφράσιμων συμβολοσειρών…Ρύθμιση εργαλείου εξαγωγήςΕργαλεία εξαγωγήςΑπέτυχε η εντολή: %sΑδυναμία επικοινωνίας με τη διεργασία Poedit.Αποτυχία φόρτωσης αρχείου με εξαχθείσες μεταφράσεις.Απέτυχε η συγχώνευση καταλόγων gettext.Αδυναμία ενημέρωσης της μεταφραστικής μνήμης: %sΑρχείοΑδυναμία ανοίγματος αρχείουΤο αρχείο “%s” δεν υπάρχει.Το αρχείο “%s” δεν είναι αρχείο μετάφρασης.Αρχείο %s είναι μόνο για ανάγνωση και δεν μπορεί να αποθηκευτεί. Παρακαλώ αποθηκεύστε το με διαφορετικό όνομα.Ολοκλήρωση…ΕύρεσηΕύρεση επόμενουΕύρεση προηγούμενουΕύρεση και αντικατάσταση…Εύρεση στα σχόλιαΕύρεση στα πηγαία κείμεναΕύρεση στις μεταφράσειςΕύρεση επόμενουΕύρεση προηγούμενουΔιόρθωση γλώσσαςΔιόρθωση γλώσσαςΕπιδιόρθωση της κεφαλίδαςΕπιδιόρθωση κεφαλίδαςΑρχεία Μετάφρασης FlutterΜορφή %iΜορφή %i (αχρησιμοποίητη)ΣυχνάGNU gettextΓενικάΑρχεία HTMLΒοήθειαΑπόκρυψη %sΑπόκρυψη άλλωνΑπόκρυψη πλευρικής μπάραςΑπόκρυψη γραμμής κατάστασηςΑπόκρυψη αυτού του μηνύματος ειδοποίησηςΠώς λειτουργεί ο συγχρονισμός στο Cloud;IDΑν συνεχίσεις με την εκκαθάριση, θα απομακρυνθούν όλες τις μεταφράσεις οι οποίες έχουν επισημανθεί ως διαγραμμένες. Θα πρέπει να ξανακάνεις τις μεταφράσεις, από την αρχή, αν προστεθούν ξανά στο μέλλον.Αν αρνηθήκατε στο παρελθόν την πρόσβαση στα αρχεία σας, μπορείτε να την επιτρέψετε στις Προτιμήσεις συστήματος > Ασφάλεια & απόρρητο > Απόρρητο > Αρχεία & φάκελοι.Αν αρνηθήκατε στο παρελθόν την πρόσβαση στα αρχεία σας, μπορείτε να την επιτρέψετε στις Ρυθμίσεις συστήματος > Ασφάλεια και απόρρητο > Αρχεία και φάκελοι.ΠαράβλεψηΠαράβλεψη πεζών-κεφαλαίωνΕισαγωγή από TMX…Εισαγωγή αρχείων μετάφρασης…Σφάλμα εισαγωγήςΕισαγωγή από TMX…Εισαγωγή αρχείων μετάφρασης…Η εισαγωγή μεταφραστικής μνήμης από το “%s” απέτυχε.Εισαγωγή μεταφράσεων…Στο: %sΣυμπερίληψη εκδόσεων betaΑσυμφωνία κεφαλαίων/πεζώνΑσυμφωνία κενού διαστήματοςΠληροφορίες σχετικά με τον μεταφραστήΕγκατάστασηΜη έγκυρο αρχείοΚλήση:Αρχεία μετάφρασης JSONΔιατήρησηΌνομα γλώσσας ή κωδικόςΗ γλώσσα μετάφρασης είναι η ίδια όπως η πηγαία γλώσσα.Δεν έχει οριστεί η γλώσσα της μετάφρασης.Γλώσσα της μετάφρασης:Επιλογή γλώσσαςΟμάδα μετάφρασης:Γλώσσα:Τελευταία τροποποίησηΜάθετε για τις λέξεις-κλειδιά του gettextΜάθετε για τις μορφές πληθυντικούΜάθετε περισσότεραΜάθετε περισσότερα για το %sΜάθετε περισσότερα σχετικά με το CrowdinΑριστεράΗ γραμμή %d του αρχείου “%s” είναι κατεστραμμένη (μη έγκυρα δεδομένα %s).Καταλήξεις γραμμής:Η λίστα των επεκτάσεων χωρίζεται από άνω τελείες (πχ *.cpp · *.h):Φόρτωση αγγλικώνΤα αρχεία MO δεν μπορούν να επεξεργαστούν απευθείας στο Poedit.Μετατροπή σε ΠεζάΜετατροπή σε ΚεφαλαίαΔημιουργία νέας μετάφρασης από αυτό το αρχείο POT.Παραμορφωμένη κεφαλίδα: «%s»Διαχείριση λογαριασμώνΔιαχείριση…Συγχώνευση διαφορών…ΕλαχιστοποίησηΤο όνομα του έργου για το οποίο είναι η μετάφρασηΌνομα:&Επόμενο ατελές&Επόμενο ατελέςΧρειάζεται δουλειάΧρειάζεται δουλειάΣφάλμα δικτύου: %s (%d)Ποτέ μην αφήνετε τη λίστα των στίχων να εστιαστεί. Αν ενεργοποιηθεί, πρέπει να χρησιμοποιήσετε το Ctrl-βελάκια για πλοήγηση μέσω πληκτρολογίου, αλλά μπορείτε επίσης να πληκτρολογήσετε κείμενο αμέσως, χωρίς να χρειαστεί να πατήσετε το πλήκτρο Tab για αλλαγή εστίασης.ΝέαΝέο από αρχείο &POT/PO…Νέο από αρχείο &POT/PO…Νέες συμβολοσειρέςΕπόμενη μορφή πληθυντικούΕπόμενη μορφή πληθυντικούΌχιΔεν βρέθηκαν αντιστοιχίεςΟι καταχωρήσεις δεν μπόρεσαν να προ-μεταφραστούν.Δεν παρέχεται καμία πληροφορία στο αρχείο για τις εμφανίσεις αυτής της συμβολοσειράς στον πηγαίο κώδικα.Δεν βρέθηκαν αντιστοιχίεςΔεν βρέθηκε κανένα πρόβλημα στην μετάφραση.Δεν υπάρχουν μεταφραστικά έργα στο λογαριασμό σας.Δε βρέθηκε καμία μετάφραση στο αρχείο TMX.Καμία πληροφορία χρήσηςΔεν είναι όλες οι μορφές πληθυντικού μεταφρασμένες.Δεν επιτρέπεται, Παρακαλούμε συνδεθείτε ξανά.Σημειώσεις για μεταφραστέςOKΠαρωχημένες συμβολοσειρέςΈναΕνεργοποιήστε μόνο εάν εμπιστεύεστε την ποιότητα της μνήμης μεταφράσεων σας. Από προεπιλογή, όλες οι αντιστοιχίες από την Μνήμη Μεταφράσεων επισημαίνονται ως "απαιτεί εργασία" και πρέπει να θεωρηθούν πριν την χρήση.Συμπληρώστε μόνο ακριβείς αντιστοιχίεςΆνοιγμα πρόσφατουΆνοιγμα και επεξεργασία αρχείων μετάφρασης.Άνοιγμα Cloud μετάφρασηςΆνοιγμα αρχείουΆνοιγμα στο εργαλείο επεξεργασίαςΆνοιγμα στο εργαλείο επεξεργασίαςΆνοιγμα πρόσφατουΆνοιγμα προτύπου μετάφρασηςΆνοιγμα...Άνοιγμα…ΕπιλογέςΆλλο&Προηγούμενο ατελές&Προηγούμενο ατελέςΑρχεία μετάφρασης POΠρότυπα μετάφρασης POTΤα αρχεία POT είναι μόνο πρότυπα και δεν περιέχουν μεταφράσεις. Για να κάνετε μια μετάφραση, δημιουργήστε ένα νέο αρχείο PO που βασίζεται στο πρότυπο.ΕπικόλλησηΕπικόλληση και αντιστοίχιση στυλΔιαδρομέςΕκτελεί ενημέρωση από τον πηγαίο κώδικα σε όλα τα αρχεία του έργου.Δεν επιτρέπεται η πρόσβαση.Το σύμβολο υποκατάστασης «%s» λείπει από τη μετάφραση.Ορθότητα συμβόλων υποκατάστασηςΠαρακαλώ ανοίξτε και επεξεργαστείτε το αντίστοιχο αρχείο PO. Όταν το αποθηκεύσετε, θα ενημερωθεί και το αρχείο MO.Παρακαλώ αποθήκευσε αυτό το αρχείο, πρώτα, ώστε να μπορεί να γίνει, μετά, επεξεργασία αυτού του τμήματος.ΠληθυντικόςΜεταφράσεις πληθυντικούΗ έκφραση των μορφών πληθυντικού του αρχείου είναι ασυνήθιστη για τα %s.Μορφές πληθυντικού:PoeditPoedit - Διαχείριση καταλόγωνΤο Poedit διόρθωσε αυτόματα το μη έγκυρο περιεχόμενο στο αρχείο “%s”.Το Poedit μπορεί να προσπαθήσει να συμπληρώσει νέες καταχωρήσεις μόνο από προηγούμενες μεταφράσεις στο αρχείο ή από ολόκληρη την μνήμη μετάφρασης. Η χρήση της Μνήμης Μετάφρασης δεν θα είναι πολύ αποτελεσματική εάν είναι σχεδόν άδεια, αλλά θα γίνει καλύτερη όσο προσθέτετε περισσότερες μεταφράσεις σε αυτή.Το Poedit δεν μπορεί να εμφανίσει τον πηγαίο κώδικα όπου χρησιμοποιείται η συμβολοσειρά, επειδή το αρχείο είτε δεν είναι διαθέσιμο στην αναφερόμενη τοποθεσία, είτε πρόκειται για συμβολική αναφορά που δεν δείχνει σε πραγματικό αρχείο.Το Poedit είναι ένας εύκολος στη χρήση επεξεργαστής μεταφράσεων.Το Poedit δεν μπόρεσε να ανοίξει το αρχείο "%s".Προ-&μετάφραση…Προ-μετάφρασηΠρο-μεταφρασμένοΠρο-μεταφρασμένη συμβολοσειρά %uΠρο-μεταφρασμένες συμβολοσειρές %uΠρο-μετάφραση από τη μεταφραστική μνήμη…Προ-μετάφραση…Η προ-μετάφραση βρίσκει αυτόματα ακριβείς ή ασαφείς αντιστοιχίες για αμετάφραστες συμβολοσειρές στην μνήμη μεταφράσεων και συμπληρώνει τις μεταφράσεις τους.ΠροτιμήσειςΠροτιμήσεις...Προτιμήσεις…Προετοιμασία συμβολοσειρών…Διατήρηση μορφοποίησης υπαρχόντων αρχείωνΠροηγούμενη μορφή πληθυντικούΠροηγούμενη μορφή πληθυντικούΠροηγούμενο αρχικό κείμενοΠροηγουμένως ΕπεξεργάστηκεΠροηγουμένως επεξεργασμένοΌνομα και έκδοση έργου:Όνομα έργου:Έργο:ΈλεγχοιΕκκαθάρισηΕ&κκαθάριση διαγραμμένων μεταφράσεωνΈξοδοςΚλείσιμο %sΗ ανάγνωση περιεχομένου αρχείου απέτυχε με το ακόλουθο σφάλμα: %sΠρόσφαταΠρόσφατα αρχείαΕπανάληψηΑνανέωσηΕπαναφόρτωση αρχείουΕπαναφόρτωση αρχείουΑπομένουν: %dΑφαίρεσηΑντικατάστασηΑντικατάσταση &όλωνΑντικατάσταση &όλωνΣυμβολοσειρά αντικατάστασηςΑντικατάσταση…Λείπει η απαιτούμενη κεφαλίδα «Plural-Forms».ΕπαναφοράΕπαναφορά μεταφραστικής μνήμηςΗ επαναφορά της μνήμης μεταφράσεων θα διαγράψει αμετάκλητα όλες τις αποθηκευμένες μεταφράσεις από αυτήν. Δεν μπορείτε να αναιρέσετε αυτή τη λειτουργία.Αποκάλυψη στο FinderΕπισκόπησηΔεξιάΑποθήκευσηΑποθήκευση &ως…Αποθήκευση &ως…Αποθήκευση οπωσδήποτεΑποθήκευση οπωσδήποτεΑποθήκευση ωςΑποθήκευση ως…Αποθήκευση αλλαγώνΑποθήκευση αρχείουΣτιγμιότυπα οθόνης:Επιλογή ό&λωνΕπιλογή όλωνΕπιλέξτε αρχεία TMX για εισαγωγήΕπιλογή καταλόγουΕπιλογή αρχείου μετάφρασηςΕπέλεξε τα αρχεία μετάφρασης προς εισαγωγήΕπιλογή προτύπου μετάφρασηςΕπιλέξτε την προτιμώμενη γλώσσα σαςΥπηρεσίεςΟρισμός γλώσσαςΟρισμός γλώσσαςΡυθμίσειςΡυθμίσεις…Shift+Εμφάνιση όλωνΕμφάνιση πλευρικής μπάραςΕμφάνιση ορθογραφίας και γραμματικήςΕμφάνιση γραμμής κατάστασηςΕμφάνιση αναγνωριστικού &συμβολοσειράςΕμφάνιση των ΑντικαταστάσεωνΕμφάνιση γραμμής εργαλείωνΠροβολή προειδοποιήσεωνΕμφάνιση στην ΕξερεύνησηΕμφάνιση στο φάκελοΕμφάνιση ή απόκρυψη πλευρικής γραμμήςΕμφάνιση πλευρικής γραμμήςΕμφάνιση γραμμής κατάστασηςΕμφάνιση αναγνωριστικού &συμβολοσειράςΕμφάνιση σύνοψης μετά την ενημέρωση αρχείωνΠροβολή προειδοποιήσεωνΠλευρικό πάνελΣύνδεσηΑποσύνδεσηΣύνδεσηΣυνδεθείτε στο %sΣυνδεθείτε στον λογαριασμό CloudΣύνδεση στο CrowdinΣυνδεθείτε στο λογαριασμό cloudΑποσύνδεσηΕνικόςΈξυπνη αντιγραφή/επικόλλησηΈξυπνες παύλεςΈξυπνοι σύνδεσμοιΈξυπνα εισαγωγικάΤαξινόμηση κατά σειρά &αρχείωνΤαξινόμηση κατά &πηγήΤαξινόμηση κατά &μετάφρασηΤαξινόμηση κατά σειρά &αρχείωνΤαξινόμηση κατά &πηγήΤαξινόμηση κατά &μετάφρασηΣύνολο χαρακτήρων πηγαίου κώδικα:Τα εργαλεία εξαγωγής πηγαίου κώδικα χρησιμοποιούνται για την εύρεση και την εξαγωγή μεταφράσιμων συμβολοσειρών από τα αρχεία πηγαίου κώδικα ώστε να μπορέσουν να μεταφραστούν.Ο πηγαίος κώδικας δεν είναι διαθέσιμος.Δεν βρέθηκε πηγαίος κώδικαςΑρχικό κείμενοΑναγνωριστικό πηγαίου κειμένουΑρχικό κείμενο — %sΛέξεις-κλειδιά πηγώνΔιαδρομές πηγώνΛέξεις-κλειδιά πηγώνΔιαδρομές πηγώνΟμιλίαΟ ορθογραφικός έλεγχος είναι απενεργοποιημένος, επειδή το λεξικό για %s δεν είναι εγκατεστημένο.Ορθογραφία και γραμματικήΈναρξη ομιλίαςΔιακοπή ομιλίαςΑποθηκευμένες μεταφράσεις:Περιεχόμενο συμβολοσειράς: %sΑναγνωριστικό συμβολοσειράς: %sΜήκος συμβολοσειράς σε χαρακτήρεςΜήκος συμβολοσειράς σε χαρακτήρες: μετάφραση | αρχικήΣυμβολοσειρά προς εύρεσηΑντικαταστάσειςΠροτάσειςΟι υποδείξεις δεν είναι διαθέσιμες αν η γλώσσα μετάφρασης δεν έχει οριστεί σωστά. Άλλες λειτουργίες, όπως ο πληθυντικός, μπορεί επίσης να επηρεαστούν.Περιττό σύμβολο υποκατάστασης «%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” έχει τροποποιηθεί από μια άλλη εφαρμογή.Το παλιό αρχικό κείμενο (πριν από την αλλαγή κατά την ενημέρωση) που αντιστοιχεί στην πλέον ανακριβή μετάφραση.Ο απλούστερος τρόπος για να συμπληρώσετε αυτό το αρχείο με μεταφράσεις είναι η ενημέρωση από ένα POT:Η μετάφραση δεν ξεκινά με κενό.Η μετάφραση τελειώνει με νέα γραμμή, σε αντίθεση με το αρχικό κείμενο.Η μετάφραση τελειώνει με κενό, αλλά το πηγαίο κείμενο όχι.Η μετάφραση τελειώνει με %s, αλλά το πηγαίο κείμενο τελειώνει με %s.Απουσιάζει νέα γραμμή στο τέλος της μετάφρασης.Στην μετάφραση λείπει ένα κενό στο τέλος.Η μετάφραση είναι έτοιμη για χρήση, αλλά %d καταχώρηση δεν έχει μεταφραστεί ακόμα.Η μετάφραση είναι έτοιμη για χρήση, αλλά %d καταχωρήσεις δεν έχουν μεταφραστεί ακόμα.Η μετάφραση είναι έτοιμη προς χρήση.Η μετάφραση θα πρέπει να τελειώνει με %s.Η μετάφραση δεν πρέπει να τελειώνει με "%s".Η μετάφραση πρέπει να ξεκινά ως μία πρόταση.Η μετάφραση θα πρέπει να ξεκινά με πεζό χαρακτήρα.Η μετάφραση ξεκινά με κενό, αλλά το πηγαίο κείμενο όχι.Οι μεταφράσεις επισημάνθηκαν ως "απαιτεί εργασία", επειδή μπορεί να είναι ανακριβείς. Θα πρέπει να τις εξετάσετε για την ορθότητα τους.Δεν υπάρχουν μεταφράσεις. Αυτό είναι ασυνήθιστο.Παρουσιάστηκε πρόβλημα με τη σωστή μορφοποίηση του αρχείου (αλλά αποθηκεύτηκε σωστά).Παρουσιάστηκαν σφάλματα κατά τη φόρτωση του αρχείου. Ως αποτέλεσμα, ορισμένα δεδομένα ενδέχεται να λείπουν ή να είναι κατεστραμμένα.Αυτές οι ρυθμίσεις επηρεάζουν την εσωτερική μορφοποίηση των αρχείων PO. Προσαρμόστε τις αν έχετε ειδικές απαιτήσεις π.χ. λόγω ελέγχου έκδοσης.Αυτές οι συμβολοσειρές δεν υπάρχουν πλέον στον πηγαίο κώδικα. Το Poedit θα τις αφαιρέσει από το αρχείο.Αυτές οι συμβολοσειρές βρέθηκαν στα πηγαία αρχεία, αλλά δεν ήταν στο αρχείο. Το Poedit θα τα προσθέσει στο αρχείο τώρα.Αυτό το αρχείο JSON δεν είναι αρχείο μεταφράσεων και δεν μπορεί να επεξεργαστεί στο Poedit.Αυτό το αρχείο περιέχει καταχωρήσεις με πληθυντικούς αριθμούς, αλλά δεν είναι ρυθμισμένη η κεφαλίδα "Plural-Forms" του.Αυτό το αρχείο χρησιμοποιεί αναγνωριστικά συμβολοσειράς αντί για πηγαίο κείμενο. Το Poedit μπορεί να φορτώσει αγγλικά κείμενα από το αρχείο “%s” για εσάς.Αυτή είναι η εντολή εκτέλεσης του εργαλείου εξαγωγής. Το %o αναπτύσσει το όνομα του αρχείου εξόδου, το %K τη λίστα των λέξεων-κλειδιών, το %F τη λίστα των αρχείων εισόδου, το %C τη σημαία του συνόλου χαρακτήρων (βλέπε παρακάτω).Αυτή η συμβολοσειρά βρέθηκε στη μεταφραστική μνήμη του Poedit.Αυτό θα προσαρτηθεί στη γραμμή εντολών μόνο αν δοθεί το σύνολο χαρακτήρων πηγαίου κώδικα. Το %c αναπτύσσει την τιμή του συνόλου χαρακτήρων.Αυτό θα προσαρτηθεί στη γραμμή εντολών μία φορά για κάθε αρχείο εισόδου. Το %f αναπτύσσει το όνομα αρχείου.Αυτό θα προσαρτηθεί στη γραμμή εντολών μία φορά για κάθε λέξη κλειδί. Το %k αναπτύσσει τη λέξη κλειδί.ΣύνολοΜετασχηματισμοίΟι μεταφράσιμες καταχωρήσεις δεν προστίθενται αυτόματα στο σύστημα του Gettext, αλλά εξάγονται αυτόματα από τον πηγαίο κώδικα. Με αυτόν τον τρόπο, παραμένουν ενημερωμένες και ακριβείς. Οι μεταφραστές χρησιμοποιούν συνήθως τα αρχεία προτύπων PO (POT), που προετοιμάζονται από τον προγραμματιστή.Μεταφράστηκαν: %d από %d (%d %%)ΜετάφρασηΓλώσσα μετάφρασηςΜεταφραστική μνήμηΗ Μετάφραση Είναι Α&νέτοιμηΙδιότητες μετάφρασηςΟι καταχωρήσεις μετάφρασης στο αρχείο είναι πιθανώς λανθασμένες.Η βάση δεδομένων μεταφραστικής μνήμης είναι κατεστραμμένη: %s (%d).Σφάλμα μεταφραστικής μνήμης: %s (%d).Η μετάφραση είναι α&νέτοιμηΙδιότητες μετάφρασηςΠροτάσεις μετάφρασηςΜετάφραση — %sΔεν ήταν δυνατή η ενημέρωση των μεταφράσεων από τον πηγαίο κώδικα, επειδή δεν βρέθηκε κώδικας στην καθορισμένη τοποθεσία των ιδιοτήτων του αρχείου.ΔύοUTF-8 (προτείνεται)ΑναίρεσηΠαρουσιάστηκε ανεπίλυτη εξαίρεση: %sUnix (προτείνεται)Άγνωστο σφάλμα Crowdin.Άγνωστο σφάλμαΜη μεταφρασμένοΠάνωΕνημέρωσηΕνημέρωση όλωνΕνημέρωση όλων των καταλόγων στο έργοΕνημέρωση όλων των καταλόγων αυτού του έργου;Ενημέρωση από αρχείο &POT…Ενημέρωση από αρχείο &POT…Ενημέρωση από κώδικαΕνημέρωση από το αρχείο POΤΕνημέρωση από κώδικαΕνημέρωση από πηγαίο κώδικαΠερίληψη ενημέρωσηςΕνημερώσειςΗ ενημέρωση απέτυχεΑποτυχία ενημέρωσης αρχείου. Κάντε κλικ στο 'Λεπτομέρειες >>' για λεπτομέρειες.Ενημέρωση μεταφράσεωνΕνημέρωση των πληροφοριών χρήστη…Η μεταφόρτωση μεταφράσεων στο %s απέτυχε.Μεταφόρτωση μεταφράσεων στο %s…Μεταφόρτωση μεταφράσεων…Χρήση προσαρμοσμένων εκφράσεωνΧρήση προσαρμοσμένης γραμματοσειράς λιστών:Χρήση προσαρμοσμένης γραμματοσειράς πεδίων κειμένου:Χρήση προεπιλεγμένων κανόνων για αυτή τη γλώσσαΧρήση αυτών των λέξεων κλειδιών (ονόματα συναρτήσεων) προς αναγνώριση μεταφράσιμων στίχων στα πηγαία αρχεία:Χρήση μεταφραστικής μνήμηςΕπικύρωσηΑποτέλεσμα επικύρωσηςΈκδοση %sΑναμονή για έλεγχο ταυτότητας…Καλώς ήρθες στο ΠοέντιτΚατά την ενημέρωση από πηγέςΜόνο ολόκληρες λέξειςΠαράθυροWindowsΘέλετε να χρησιμοποιήσετε αγγλικά για το πηγαίο κείμενο;Επιστροφή στην αρχήΑναδίπλωση σε:Αρχεία μετάφρασης XLIFFΝαιΜπορείς, επίσης να εξάγεις μεταφράσιμους στίχους, κατευθείαν από τον πηγαίο κώδικα:Δεν μπορείτε να σύρετε παραπάνω από ένα αρχείο στο παράθυρο Poedit.Δεν έχετε την άδεια να διαβάσετε αρχεία πηγαίου κώδικα από την τοποθεσία που καθορίζεται στις ιδιότητες του αρχείου.Πρέπει να γίνει επανεκκίνηση του Poedit, ώστε αυτή η αλλαγή να έχει επίδραση.Το όνομά σαςΟι αλλαγές σας θα χαθούν εάν δεν τις αποθηκεύσετε.Το όνομα και η διεύθυνση email σας χρησιμοποιούνται μόνο για τον ορισμό της επικεφαλίδας "Last-Translator" στα αρχεία GNU gettext.ΜηδένΖουμaltΧρειάζεται δουλειάctrlμη διαγράψεις προσωρινά αρχεία (γι' αποσφαλμάτωση)π.χ. nplurals=2; plural=(n > 1);ασαφή αντιστοιχία στον φάκελομετάβαση στο στοιχείο, στο δεδομένο αριθμό γραμμήςχειρίσου ένα poedit:// URIπρο-μετάφραση από τη Μετ.Μνήμηshiftάγνωστη γλώσσαμη υποστηριζόμενη έκδοση (%s)you@example.comΤο “%s” δεν είναι έγκυρο αρχείο POT.poedit-3.5/locales/en_GB.mo0000644000175100001770000015725514664354153012554 00000000000000|+: : :&:?:<S::J:g: V;`; o;y; ;;;;;;;;;;;;;;<<<0<B<H<M<U<]<o<<< < <<<< <<<<==0=L=R=X=a=g=p== = = ====>>7>N>e>k>p>>>>>> ? ???'?0? 4? @? L?Y? h?t? ? ?? ?? ???@@&@F@c@@ @ @1@@'@A.A HASA7YA6AA)AB B]"BB<BDB$C:C ACNCC C"CD+"D)ND xDDDDDDDDEE#4EXEmE|E EE EEEEEE%EF +FLFTF]FuF FF/F FkFXG]GpGGGG-G1G.H GHRH)iHH HYHI!I&I9ILIaIeI|IIIIIII;J CJ'PJ^xJLJ?$K dK rKK*KKK"K5K.LILdLjL}L L L L L LLLLLLLfMlMMuM(N?NRN"dNN NNN N NNN0N'OAO#VO<zO"OO OO*P03P!dP'PPPP(PTQ fQtQ yQ QQQQQ Q Q Q RR!R0RJRRRcR lRxR RRR R RRRRRRSz/TT TTT TT U2(U[UuU|UUU UU U U V!V&V;^D^Y^n^^^._4_J_=P__1__n_E[```;` ` aa@,amacb,#c,Pc}c cc2c*c ddwdj$e eeee%ee ff3fEfWf qffffffff8f g gg$g ,g 8g DgRg"Yg"|gg g gg g(ghhz'hhhhh h h h hh h i i i ,i 8iCi^ioi"iiii i ij jj$j -j:jTjdjtj j jjjj jjj!k *k8k@kHkQk Ykgkkkkkk k k kk ll.lBlRlgl|lmm 4m@mOmbm smm mmKmmn n%n:nMncn1nn n nn=ioo'p,p(>pgp op}p+pp p8p" q/q@qrCr8brrs8*t1ctRtctQLuu'u:ulvPv-vCwALwKw0w. x:x!x)x-y+Cy8oyCyuy,bzLz;z]{v{Z{gW|J|c }[n}o}:~7~m_[HN^Xp ف72("[~~łqDɃRVj o ȄЄӄ ڄ"$-F_p<Ѕ #$@eˆ#V cz ч. ;GPhHl5m7Y 3aω16;?\.a ͊ 1J!Z| 8 D&Ov<ǍJڍg%   Ŏ̎Ҏڎ )=QUgy ͏ڏ &<Kg Ր  <Unڑ  7 CMV^g k w   ǒӒ  %9T]} Г ݓ1' He 76Ȕ)I N]Y<ʕD$Lq x ">+Y) Η">Z#o Ș ژ%%K f ϙ/ k'Ԛ- 17i )Λ YV\atݜ /;B ~'^M?` *͞ "53i ˟ ٟ !)/fA uܠ(R{"á ʡա !02c}#<" &1*D0o#'ģ(&TO  Ϥ  ( 6 CP_n  ɥΥ ֥ 8;zm  *7J2fШ ' / <H_d;z(ߩ  (6S lw: < /<.ɫ*C^ nx*ìɬڬ ԭح '8;#L\pͮ'ޮ/+6b$w%¯دۯ İ  / >Jdlt|۱lr=̲1߲n*E߳; ;IP@l,c, ϶ݶ2*J]wjd ϸ۸%4I^s ȹѹ 8K R_d l x ""ߺ  (HNzg    )5 = H U _ l x"Ǽ% . ;H Q]d mz ǽ Խ (8!H jx Ӿ   (5IYnC^ t  K3H Wez1 =gl(~ + 8"LoCC^88j1Rc(Q':!l\P-CHAK0.Kz! )+-U+8Cu,,L;]XZ<gJcJ[o z7&m^_[, 702h"~q    $%$Jo<Oe$ #*VN .?F.N }H5m-7 3bty~ . 5KQb{!45nCv#=ld B@Twa QjqO 91B)aT'ZSFQYu>"/VJZsG6*[ar`^;XyVb?' <IL:x%AMZ\W88O,*d0)i{J-yK|]:c%}oo0][-Pg6YS&r(\p@X(tM?iE=eD"OU|53 w  fj,#32H 4[ pk {qke;mpgl16U85:`, +Y^L9$qz2fGu(A7N4!d0DNt{F<x_+7vX)nKG+>&9m3 LeUIN Iy E"nsk/<W>PhrVvT]cQmuR$bjD !_@xEl%WK-_7MCwbz/|gcAB` zh~?SC^*tf=\h!H'P#RiF&;$H1~.2 RsJo}.} .~ (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd AccountAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add accountAdd 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 languagesAlt+Always 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 errorCrowdin is an online localization management platform and collaborative translation tool.Ctrl+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 againDownDownloading 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:EnterEnter 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 loading translation file “%s”.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export errorExport 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…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)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport from TMX…Import translation files…Importing translation memory from “%s” 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 CrowdinLeftLine %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 translations were found in the TMX file.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKObsolete stringsOneOnly 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 translation templateOpen...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 translationsQuitQuit %sReading file content failed with the following error: %sRecentRecent 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 FinderReviewRightSaveSave &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 languageServicesSet LanguageSet languageSettingsSettings…Shift+Show AllShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow summary after updating filesShow 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.These strings are no longer in the source code. Poedit will remove them from the file now.These strings were found in the sources but were not in the file. Poedit will add them to the file now.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 entries in the file are probably incorrect.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 errorUntransUpUpdateUpdate 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 the file failed. Click on 'Details >>' for details.Updating 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown 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: 2024-08-30 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 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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd AccountAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add accountAdd 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 languagesAlt+Always 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.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 localisation management platform and collaborative translation tool.Ctrl+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.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 againDownDownloading 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:EnterEnter 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 loading translation file “%s”.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export errorExport 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed to communicate with Poedit process.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.Finalising…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)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport from TMX…Import translation files…Importing translation memory from “%s” 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 CrowdinLeftLine %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 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 translations were found in the TMX file.No usage informationNot all plural forms are translated.Not authorised, please sign in again.Notes for translatorsOKObsolete stringsOneOnly 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 translation templateOpen...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 translationsQuitQuit %sReading file content failed with the following error: %sRecentRecent 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 FinderReviewRightSaveSave &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 languageServicesSet LanguageSet languageSettingsSettings…Shift+Show AllShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow summary after updating filesShow 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 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” 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.These strings are no longer in the source code. Poedit will remove them from the file now.These strings were found in the sources but were not in the file. Poedit will add them to the file now.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 entries in the file are probably incorrect.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 errorUntransUpUpdateUpdate 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 the file failed. Click on 'Details >>' for details.Updating 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 %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 e-mail address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomaltNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown languageunsupported version (%s)you@example.com“%s” is not a valid POT file.poedit-3.5/locales/bs.po0000644000175100001770000015107014664354153012176 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "Sakrij ovu napomenu" msgid "Don’t Show Again" msgstr "Ne prikazuj ponovo" msgid "Don’t show again" msgstr "Ne prikazuj ponovo" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(Novo: %i, zastarjelo: %i)" msgid "Collecting source files…" msgstr "Prikupljam izvorne fajlove…" msgid "Extracting translatable strings…" msgstr "Raspakujem stringove za prijevod…" msgid "Failed to load file with extracted translations." msgstr "" msgid "Merging differences…" msgstr "Sastavljanje razlika…" msgid "Updating translations" msgstr "" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "" msgid "Invalid file" msgstr "Neispravna datoteka" #, c-format msgid "Malformed header: “%s”" msgstr "Neispravno zaglavlje: \"%s\"" msgid "PO Translation Files" msgstr "PO fajlovi sa prijevodom" msgid "POT Translation Templates" msgstr "POT predlošci prijevoda" msgid "XLIFF Translation Files" msgstr "XLIFF fajlovi s prijevodima" msgid "JSON Translation Files" msgstr "" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "" msgid "All Translation Files" msgstr "Sve datoteke s prijevodima" msgid "The file is in a format not recognized by Poedit." msgstr "" msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" #, c-format msgid "Reading file content failed with the following error: %s" msgstr "" #, c-format msgid "" "File “%s” is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" #, c-format msgid "Couldn’t save file %s." msgstr "" msgid "Screenshots:" msgstr "" #, c-format msgid "%i line of file “%s” was not loaded correctly." msgid_plural "%i lines of file “%s” were not loaded correctly." msgstr[0] "%i 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." #, c-format msgid "Line %d of file “%s” is corrupted (not valid %s data)." msgstr "Linija %d fajla \"%s\" nije ispravna (neispravni podaci %s)." msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" msgid "Couldn’t load the file, it is probably damaged." msgstr "" msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" 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)." #, 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 "" msgid "Error saving file" msgstr "" #, c-format msgid "“%s” is not a valid POT file." msgstr "\"%s\" nije ispravan POT fajl." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "" #, c-format msgid "unsupported version (%s)" msgstr "" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML msgid "Broken markup in translation string." msgstr "" msgid "(Use default language)" msgstr "(Koristi početni jezik)" msgid "Language selection" msgstr "Odabir jezika" msgid "Select your preferred language" msgstr "Odaberite vaš omiljeni jezik" msgid "You must restart Poedit for this change to take effect." msgstr "Morate ponovo pokrenuti Poedit da bi promjene počele djelovati." msgid "Add Account" msgstr "" msgid "Add account" msgstr "" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "" msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" msgid "How does cloud sync work?" msgstr "" msgid "Account" msgstr "" msgid "(not signed in)" msgstr "" msgid "File" msgstr "" msgid "Open cloud translation" msgstr "" msgid "Manage accounts" msgstr "" msgid "Project:" msgstr "Projekat:" msgid "Language:" msgstr "Jezik:" msgid "Sign in to Cloud Account" msgstr "" msgid "Sign in to cloud account" msgstr "" msgid "No translation projects listed in your account." msgstr "" msgid "Downloading latest translations…" msgstr "Preuzimam najnovije prijevode..." #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #, c-format msgid "Sign in to %s" msgstr "" msgid "Syncing" msgstr "" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s…" msgstr "" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s failed." msgstr "" msgid "Syncing error" msgstr "" msgid "Add" msgstr "" msgid "Unknown Crowdin error." msgstr "" msgid "Not authorized, please sign in again." msgstr "Nemate ovlaštenje, molimo vas da se ponovo prijavite." msgid "Downloading translations is disabled in this project." msgstr "Preuzimanje prijevoda je onemogućeno u ovom projektu." msgid "Sign In" msgstr "Prijava" msgid "Sign in" msgstr "Prijava" msgid "Sign Out" msgstr "Odjava" msgid "Sign out" msgstr "Odjava" msgid "Learn more about Crowdin" msgstr "Saznaj više o Crowdinu" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" msgid "Waiting for authentication…" msgstr "Čekam na autentifikaciju..." msgid "Updating user information…" msgstr "Ažuriram korisničke informacije..." msgid "Sign in to Crowdin" msgstr "Prijavi se u Crowdin" msgid "Syncing with Crowdin failed." msgstr "Sinhronizacija sa Crowdinom nije uspjela." msgid "Crowdin error" msgstr "Crowdin greška" msgid "Uploading translations…" msgstr "Ažuriram prijevode..." msgid "&Copy" msgstr "&Kopiraj" msgid "Learn more" msgstr "Saznaj više" msgid "&Help" msgstr "&Pomoć" msgid "MO files can’t be directly edited in Poedit." msgstr "MO fajl se ne može direktno uređivati u Poeditu." msgid "Error opening file" msgstr "Greška pri otvaranju fajla" 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." msgid "don’t delete temporary files (for debugging)" msgstr "" msgid "handle a poedit:// URI" msgstr "upravljač za poedit:// URI" msgid "go to item at given line number" msgstr "" msgid "Failed to communicate with Poedit process." msgstr "Nije moguće komunicirati sa Poedit procesom." #, c-format msgid "Unhandled exception occurred: %s" msgstr "Desio se neočekivan izuzetak: %s" msgid "Select translation template" msgstr "" msgid "Select translation file" msgstr "" msgid "Poedit is an easy to use translation editor." msgstr "Poedit je jednostavni alat za prevođenje." msgid "You can’t drop more than one file on Poedit window." msgstr "" #, c-format msgid "File “%s” is not a translation file." msgstr "" #, c-format msgid "File “%s” doesn’t exist." msgstr "" 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". #, 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." msgid "Install" msgstr "Instaliraj" #, c-format msgid "The file “%s” has been changed by another application." msgstr "" msgid "Reload file" msgstr "" msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" msgid "Ignore" msgstr "" msgid "Reload File" msgstr "" msgid "The file has been modified. Do you want to save changes?" msgstr "" msgid "Save changes" msgstr "Sačuvaj promjene" msgid "Your changes will be lost if you don’t save them." msgstr "" msgid "Save" msgstr "Sačuvaj" msgid "Do&n’t save" msgstr "Ne s&nimaj" msgid "Don’t Save" msgstr "Ne s&nimaj" msgid "The changes made by the other application will be lost if you save." msgstr "" msgid "Cancel" msgstr "Poništi" msgid "Save Anyway" msgstr "" msgid "Save anyway" msgstr "" msgid "Save as…" msgstr "Sačuvaj kao…" msgid "Compile to…" msgstr "Kompajliraj za…" msgid "Compiled Translation Files" msgstr "Kompajlirani prijevodi datoteka" msgid "Export to HTML…" msgstr "" msgid "HTML Files" msgstr "HTML fajlovi" #, c-format msgid "In: %s" msgstr "" msgid "Source code not available." msgstr "Izvorni kod nije dostupan." msgid "Updating failed" msgstr "Ažuriranje nije uspjelo" 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 "" msgid "Permission denied." msgstr "" 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. 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. msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" msgid "Translation entries in the file are probably incorrect." msgstr "" msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "" msgid "Open translation template" msgstr "" #, 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." msgid "Validation results" msgstr "Rezultati validacije" 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." msgid "The file was saved safely." msgstr "Datoteka je uspješno sačuvana." 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." 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." 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." 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." msgid "No problems with the translation found." msgstr "Nisu pronađeni problemi u prijevodu." #, 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." msgid "The translation is ready for use." msgstr "Prijevod je spreman za upotrebu." #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "Poedit je automatski popravio neispravan sadržaj u datoteci \"%s\"." msgid "" "The file contained duplicate items, which is not allowed in PO files and " "would prevent the file from being used. Poedit fixed the issue, but you " "should review translations of any items marked as needing work and correct " "them if necessary." msgstr "" msgid "Language of the translation isn’t set." msgstr "" msgid "Set Language" msgstr "Postavi jezik" msgid "Set language" msgstr "Odaberite jezik" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." msgid "" "Suggestions are not available if the translation language is not set " "correctly. Other features, such as plural forms, may be affected as well." msgstr "" "Prijedlozi nisu dostupni ako jezik prijevoda nije ispravno odabran. Ostale " "mogućnosti također mogu biti nedostupne. kao npr. oblici množine." msgid "Language of the translation is the same as source language." msgstr "Jezik prijevoda je isti kao i izvorni jezik." msgid "Fix Language" msgstr "Popravi jezik" msgid "Fix language" msgstr "Popravi jezik" msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" msgid "Required header Plural-Forms is missing." msgstr "Nedostaje neophodno zaglavlje za oblik množine." #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Sintaksna greška u zaglavlju za obrazac množine (\"%s\")." msgid "Fix the Header" msgstr "Popravi zaglavlje" 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". #, 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.")" msgid "Review" msgstr "Pregledaj" msgid "Would you like to use English for source text?" msgstr "" #, 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" msgid "Load English" msgstr "" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Prevedeno: %d od %d (%d %%)" #, c-format msgid "Remaining: %d" msgstr "Preostalo: %d" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d greška" msgstr[1] "%d greške" msgstr[2] "%d grešaka" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d unos" msgstr[1] "%d unosa" msgstr[2] "%d unosa" msgid " (unsaved)" msgstr " (nesačuvano)" msgid " (modified)" msgstr " (mijenjano)" #, c-format msgid "Failed to update translation memory: %s" msgstr "Nije moguće ažurirati memoriju prijevoda: %s" msgid "Remove same-as-source translations" msgstr "" msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" msgid "Keep" msgstr "Zadrži" msgid "Remove" msgstr "" msgid "Purge deleted translations" msgstr "Očisti obrisane prijevode" 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?" 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." msgid "Purge" msgstr "Očisti" msgid "Copy from source text" msgstr "&Kopiraj iz originalnog teksta" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "Obriši prijevod" msgid "Clear Translation" msgstr "Obriši prijevod" msgid "Edit comment" msgstr "Uredi komentar" msgid "Edit Comment" msgstr "Uredi komentar" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "" msgid "Hide Sidebar" msgstr "Sakrij bočnu traku" msgid "Show Sidebar" msgstr "Prikaži bočnu traku" msgid "Hide Status Bar" msgstr "Sakrij statusnu traku" msgid "Show Status Bar" msgstr "Prikaži statusnu traku" msgid "String length in characters: translation | source" msgstr "" msgid "String length in characters" msgstr "" msgid "Source text" msgstr "Originalni tekst" msgid "Singular" msgstr "Jednina" msgid "Plural" msgstr "Množina" msgid "Translation" msgstr "Prijevod" msgid "Pre-translated" msgstr "" 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. msgid "Needs work" msgstr "" msgid "" "POT files are only templates and don’t contain any translations themselves.\n" "To make a translation, create a new PO file based on the template." msgstr "" "POT datoteke su samo predlošci i ne sadrže bilo kakve prijevode.\n" "Da napravite prijevod, kreirajte novu PO datoteku na osnovu predloška." msgid "Create new translation" msgstr "Kreiraj novi prijevod" 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 msgid "Source text ID" msgstr "" msgid "Everything" msgstr "Sve" #, c-format msgid "Form %i" msgstr "Oblik %i" #, c-format msgid "Form %i (unused)" msgstr "" msgid "Zero" msgstr "Nula" msgid "One" msgstr "Jedan" msgid "Two" msgstr "Dva" msgid "Other" msgstr "Ostalo" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, c-format msgid "String context: %s" msgstr "" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #, c-format msgid "String identifier: %s" msgstr "" #, c-format msgid "%s Format" msgstr "" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "" #, c-format msgid "Translation — %s" msgstr "Prijevod — %s" msgid "ID" msgstr "ID" #, c-format msgid "Source text — %s" msgstr "Izvorni tekst — %s" msgid "unknown language" msgstr "nepoznat jezik" #, c-format msgid "Network error: %s (%d)" msgstr "" msgid "Unknown error" msgstr "" #, c-format msgid "Failed command: %s" msgstr "Neuspjela komanda: %s" msgid "Failed to merge gettext catalogs." msgstr "Nije moguće spojiti gettext kataloge." msgid "Open in Editor" msgstr "Otvori u uređivaču" msgid "Open in editor" msgstr "Otvori u uređivaču" msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" msgid "No usage information" msgstr "" #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgid "Source code not found" msgstr "" 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 "" msgid "File cannot be opened" msgstr "" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "" msgid "Find" msgstr "Pronađi" msgid "Replace" msgstr "Zamijeni" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "Opcije" msgid "Ignore case" msgstr "Zanemari velika/mala slova" msgid "Wrap around" msgstr "Omotaj" msgid "Whole words only" msgstr "Samo cijele riječi" msgid "Find in source texts" msgstr "Pronađi u izvornim tekstovima" msgid "Find in translations" msgstr "Pronađi u prijevodima" msgid "Find in comments" msgstr "Pronađi u komentarima" msgid "Close" msgstr "Zatvori" msgid "Replace &All" msgstr "" msgid "Replace &all" msgstr "" msgid "&Replace" msgstr "" msgid "< &Previous" msgstr "< &Prethodno" msgid "&Next >" msgstr "&Sljedeće >" msgid "String to find" msgstr "String koji tražite" msgid "Replacement string" msgstr "Zamjenski string" #, c-format msgid "Cannot execute program: %s" msgstr "Nije moguće izvršiti program: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "" msgid "Translation Language" msgstr "Jezik prijevoda" msgid "Language of the translation:" msgstr "Jezik prijevoda:" msgid "All strings" msgstr "" msgid "Couldn’t download Localazy project details." msgstr "" msgid "There was an error when uploading translations to Localazy." msgstr "" msgid "Projects" msgstr "" msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" msgid "Add Project" msgstr "" msgid "Add project" msgstr "" msgid "Poedit - Catalogs manager" msgstr "Poedit - upravljanje katalozima" msgid "Edit…" msgstr "" msgid "Create new translations project" msgstr "Napravi novi projekt prevođenja" msgid "Delete the project" msgstr "Obriši projekt" msgid "Edit the project" msgstr "Uredi projekt" msgid "Update all" msgstr "Ažuriraj sve" msgid "Update all catalogs in the project" msgstr "Ažuriraj sve kataloge u projektu" msgid "Total" msgstr "Ukupno" msgid "Untrans" msgstr "Neprevedeno" msgctxt "column/row header" msgid "Needs Work" msgstr "" msgid "Errors" msgstr "" msgid "Last modified" msgstr "Zadnji put mijenjano" msgid "Select directory" msgstr "Odaberite direktorij" msgid "Directories:" msgstr "Direktoriji:" msgid "" msgstr "" #, c-format msgid "Do you want to delete project “%s”?" msgstr "" msgid "Delete project" msgstr "" msgid "Deleting the project will not delete any translation files." msgstr "" msgid "Confirmation" msgstr "Potvrda" msgid "Update all catalogs in this project?" msgstr "" msgid "Performs update from source code on all files in the project." msgstr "" msgid "Check for Updates…" msgstr "" msgid "Catalogs Manager" msgstr "Upravljanje katalozima" msgid "&Preferences…" msgstr "" msgid "&Edit" msgstr "&Uredi" msgid "Undo" msgstr "Nazad" msgid "Redo" msgstr "Vrati" msgid "Paste and Match Style" msgstr "Umetni i uskladi stil" msgid "Delete" msgstr "Obriši" msgid "Spelling and Grammar" msgstr "Pravopis i gramatika" msgid "Show Spelling and Grammar" msgstr "Prikaži pravopis i gramatiku" msgid "Check Document Now" msgstr "Odmah provjeri dokument" msgid "Check Spelling While Typing" msgstr "Provjeravaj pravopis prilikom pisanja" msgid "Check Grammar With Spelling" msgstr "Provjeri gramatiku i pravopis" msgid "Correct Spelling Automatically" msgstr "Automatski popravljaj greške u pravopisu" msgid "Substitutions" msgstr "Zamjene" msgid "Show Substitutions" msgstr "Prikaži zamjene" msgid "Smart Copy/Paste" msgstr "Pametno kopiranje/umetanje" msgid "Smart Quotes" msgstr "Pametni navodnici" msgid "Smart Dashes" msgstr "Pametne crtice" msgid "Smart Links" msgstr "Pametni linkovi" msgid "Text Replacement" msgstr "Zamjena teksta" msgid "Transformations" msgstr "Tranformacije" msgid "Make Upper Case" msgstr "Pretvori u velika slova" msgid "Make Lower Case" msgstr "Pretvori u mala slova" msgid "Capitalize" msgstr "Velika slova" msgid "Speech" msgstr "Govor" msgid "Start Speaking" msgstr "Počnite pričati" msgid "Stop Speaking" msgstr "Prestanite pričati" msgid "&View" msgstr "&Prikaz" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Show Toolbar" msgstr "Prikaži alatnu traku" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Customize Toolbar…" msgstr "Prilagodi alatnu traku…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Enter Full Screen" msgstr "Aktiviraj prikaz preko cijelog ekrana" msgid "Window" msgstr "Prozor" msgid "Minimize" msgstr "Minimiziraj" msgid "Zoom" msgstr "Uvećavanje" msgid "Welcome to Poedit" msgstr "Dobro došli u Poedit" msgid "Bring All to Front" msgstr "Dovedi u fokus" msgid "Information about the translator" msgstr "Informacije o prevodiocu" msgid "Name:" msgstr "Ime:" msgid "Your Name" msgstr "Vaše ime" msgid "Email:" msgstr "Email:" msgid "you@example.com" msgstr "" 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." msgid "Editing" msgstr "Uređivanje" msgid "Automatically compile MO file when saving" msgstr "Automatski kompajliraj MO datoteku prilikom snimanja" msgid "Show summary after updating files" msgstr "" msgid "Check spelling" msgstr "Provjeri pravopis" msgid "Always change focus to text input field" msgstr "Uvijek promijeni fokus na polje za unos teksta" 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." msgid "Appearance" msgstr "Izgled" msgid "Use custom list font:" msgstr "Koristi vlastiti font za listu:" msgid "Use custom text fields font:" msgstr "Koristi vlastiti font za tekstualna polja:" msgid "Change UI language" msgstr "Promijeni jezik interfejsa" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions msgid "(requires Windows 8 or newer)" msgstr "(barem Windows 8 ili noviji)" msgid "General" msgstr "Općenito" msgid "Use translation memory" msgstr "Koristi memoriju prijevoda" msgid "Manage…" msgstr "" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "" 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 "" msgid "Stored translations:" msgstr "Pohranjeni prijevodi:" msgid "Database size on disk:" msgstr "Veličina baze na disku:" msgid "Import Translation Files…" msgstr "" msgid "Import translation files…" msgstr "" msgid "Import From TMX…" msgstr "" msgid "Import from TMX…" msgstr "" msgid "Export To TMX…" msgstr "" msgid "Export to TMX…" msgstr "" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). msgid "Reset" msgstr "Resetuj" msgid "Select translation files to import" msgstr "Odaberite datoteke prijevoda za uvoz" msgid "Translation Memory" msgstr "Memorija prijevoda" msgid "Importing translations…" msgstr "" #, c-format msgid "Error loading translation file “%s”." msgstr "" msgid "Finalizing…" msgstr "" msgid "Select TMX files to import" msgstr "" msgid "TMX Files" msgstr "" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "" msgid "Import error" msgstr "" msgid "Export as…" msgstr "Izvezi kao…" msgid "Exporting translations…" msgstr "" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "" msgid "Export error" msgstr "" msgid "Reset translation memory" msgstr "Resetuj memoriju prijevoda" msgid "Are you sure you want to reset the translation memory?" msgstr "Jeste li sigurni da želite resetovati memoriju prijevoda?" 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. msgid "TM" msgstr "TM" msgid "" "Source code extractors are used to find translatable strings in the source " "code files and extract them so that they can be translated." msgstr "" "Izdvajanje izvornog koda se koristi za pronalazak stringova za prijevoda u " "fajlovima izvornog koda, da biste ih kasnije mogli prevesti." msgid "Custom Extractors:" msgstr "" msgid "Custom extractors:" msgstr "" msgid "GNU gettext" msgstr "" msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" msgid "Delete extractor" msgstr "Obriši ekstraktor" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "Jeste li sigurni da želite obrisati \"%s\" ekstrator?" msgid "Extractors" msgstr "Izdvajanje" msgid "Accounts" msgstr "Računi" msgid "Automatically check for updates" msgstr "Automatski provjeravaj ima li ažuriranja" msgid "Include beta versions" msgstr "Uvrsti i beta verzije" 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." msgid "Updates" msgstr "Ažuriranja" 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." msgid "Line endings:" msgstr "Završetak linije:" msgid "Unix (recommended)" msgstr "Unix (preporučeno)" msgid "Windows" msgstr "Prozori" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "Prelomi tekst na:" msgid "Preserve formatting of existing files" msgstr "Sačuvaj oblikovanje postojećih datoteka" msgid "Advanced" msgstr "Napredno" msgid "Settings" msgstr "" msgid "Preparing strings…" msgstr "" msgid "Pre-translating from translation memory…" msgstr "" #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgid "Pre-translating…" msgstr "" 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. msgid "Pre-translate" msgstr "" msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" msgid "Cannot pre-translate from unknown language." msgstr "" msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" msgid "Only fill in exact matches" msgstr "Samo popunjavaj tačna poklapanja" msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" msgid "Don’t mark exact matches as needing work" msgstr "" 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 "" msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "" msgstr[1] "" msgstr[2] "" msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" msgid "No entries could be pre-translated." msgstr "" msgid "" "The TM doesn’t contain any strings similar to the content of this file. It " "is only effective for semi-automatic translations after Poedit learns enough " "from files that you translated manually." msgstr "" "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." msgid "Cancelling…" msgstr "" msgid "Drag Folders or Files Here" msgstr "" msgid "Drag folders or files here" msgstr "" msgid "Add Folders…" msgstr "" msgid "Add folders…" msgstr "" msgid "Add Files…" msgstr "" msgid "Add files…" msgstr "" msgid "Add Wildcard…" msgstr "" msgid "Add wildcard…" msgstr "" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) msgid "Reveal in Finder" msgstr "" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" msgid "Show in Explorer" msgstr "" msgid "Show in Folder" msgstr "" msgid "Paths" msgstr "Putanje" msgid "Excluded paths" msgstr "Izuzete putanje" msgid "Advanced extraction settings" msgstr "" msgid "Extract notes for translators from:" msgstr "" msgid "Comments prefixed with:" msgstr "" msgid "All comments" msgstr "" msgid "Additional xgettext flags:" msgstr "" msgid "Additional keywords" msgstr "Dodatne ključne riječi" msgid "Name of the project the translation is for" msgstr "Naziv projekta za koji je namijenjen ovaj prijevod" msgid "Team name and email address or URL" msgstr "" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "npr. nplurals=2; plural=(n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (preporučeno)" 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." msgid "Placeholders correctness" msgstr "" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "" #, c-format msgid "Superfluous placeholder “%s” that isn’t in source text." msgstr "" msgid "Plural form translations" msgstr "" msgid "Not all plural forms are translated." msgstr "" msgid "Inconsistent upper/lower case" msgstr "" msgid "The translation should start as a sentence." msgstr "" msgid "The translation should start with a lowercase character." msgstr "" msgid "Inconsistent whitespace" msgstr "" msgid "The translation doesn’t start with a space." msgstr "" msgid "The translation starts with a space, but the source text doesn’t." msgstr "" msgid "The translation is missing a newline at the end." msgstr "" msgid "The translation ends with a newline, but the source text doesn’t." msgstr "" msgid "The translation is missing a space at the end." msgstr "" msgid "The translation ends with a space, but the source text doesn’t." msgstr "" msgid "Punctuation checks" msgstr "" #, c-format msgid "The translation should end with “%s”." msgstr "" #, c-format msgid "The translation should not end with “%s”." msgstr "" #, c-format msgid "The translation ends with “%s”, but the source text ends with “%s”." msgstr "" msgid "Cloud" msgstr "" msgid "Clear Menu" msgstr "" msgid "Clear menu" msgstr "" msgid "Comment:" msgstr "Komentar:" msgid "Update" msgstr "" msgid "&Delete" msgstr "&Obriši" msgid "Delete the comment" msgstr "" msgid "Edit project" msgstr "Uredi projekt" msgid "Project name:" msgstr "Ime projekta:" msgid "Browse" msgstr "Pretraži" msgid "Add directory to the list" msgstr "Dodaj direktorij u listu" msgid "OK" msgstr "U redu" msgid "&File" msgstr "&Datoteka" msgid "&New…" msgstr "" msgid "New from &POT/PO file…" msgstr "" msgid "New From &POT/PO File…" msgstr "" msgid "&Open…" msgstr "" msgid "Open Recent" msgstr "Otvori nedavne" msgid "Open recent" msgstr "" msgid "Open cloud translation…" msgstr "" msgid "Open Cloud Translation…" msgstr "" msgid "&Start window" msgstr "" msgid "&Start Window" msgstr "" msgid "Catalogs &manager" msgstr "&Upravljanje katalozima" msgid "Catalogs &Manager" msgstr "&Upravljanje katalozima" msgid "&Close" msgstr "&Zatvori" msgid "&Save" msgstr "&Sačuvaj" msgid "Save &as…" msgstr "Sačuvaj &kao…" msgid "Save &As…" msgstr "" msgid "Compile to MO…" msgstr "" msgid "E&xport to HTML…" msgstr "" msgid "Check for updates…" msgstr "" msgid "Settings…" msgstr "" msgid "&Preferences" msgstr "&Postavke" msgid "E&xit" msgstr "I&zađi" msgid "Quit" msgstr "Zatvori" msgid "Copy from singular" msgstr "Kopiraj iz jednine" msgid "Copy From Singular" msgstr "Kopiraj iz Jednine" msgid "Translation needs &work" msgstr "" msgid "Translation Needs &Work" msgstr "" msgid "Edit &comment" msgstr "Uredi &komentar" msgid "Edit &Comment" msgstr "Uredi &komentar" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "Prijedlozi" msgid "&Find…" msgstr "" msgid "Replace…" msgstr "" msgid "Find next" msgstr "Pronađi sljedeće" msgid "Find previous" msgstr "Pronađi prethodno" msgid "Find and Replace…" msgstr "" msgid "Find Next" msgstr "Pronađi sljedeće" msgid "Find Previous" msgstr "Pronađi prethodno" msgid "Show string &ID" msgstr "" msgid "Show String &ID" msgstr "" msgid "Show warnings" msgstr "" msgid "Show Warnings" msgstr "" msgid "Sort by &file order" msgstr "Sortiraj po redoslijedu &datoteka" msgid "Sort by &File Order" msgstr "Sortiraj po redoslijedu &datoteka" msgid "Sort by &source" msgstr "Sortiraj po &originalima" msgid "Sort by &Source" msgstr "Sortiraj po &originalima" msgid "Sort by &translation" msgstr "Sortiraj po &prijevodima" msgid "Sort by &Translation" msgstr "Sortiraj po &prijevodima" msgid "&Group by context" msgstr "& Grupiši po kontekstu" msgid "&Group By Context" msgstr "& Grupiši po kontekstu" msgid "Entries with errors first" msgstr "Prvo unosi sa greškama" msgid "Entries with Errors First" msgstr "Prvo unosi sa greškama" msgid "&Untranslated entries first" msgstr "&Prvo prikaži neprevedene rečenice" msgid "&Untranslated Entries First" msgstr "&Prvo prikaži neprevedene rečenice" msgid "&Show code occurrences" msgstr "" msgid "&Show Code Occurrences" msgstr "" msgid "Show sidebar" msgstr "Prikaži bočnu traku" msgid "Show status bar" msgstr "Prikaži statusnu traku" msgid "&Translation" msgstr "" msgid "&Update from source code" msgstr "" msgid "&Update from Source Code" msgstr "" msgid "Update from &POT file…" msgstr "" msgid "Update from &POT File…" msgstr "" msgid "Sync with Crowdin" msgstr "Sinhronizuj sa Crowdinom" msgid "Pre-&translate…" msgstr "" msgid "&Validate translations" msgstr "&Validacija prijevoda" msgid "&Validate Translations" msgstr "&Validacija prijevoda" msgid "Remove Same-as-Source Translations" msgstr "" msgid "&Purge deleted translations" msgstr "&Očisti izbrisane prijevode" msgid "&Purge Deleted Translations" msgstr "&Očisti izbrisane prijevode" msgid "&Properties…" msgstr "" msgid "&Go" msgstr "&Akcije" msgid "&Done and next" msgstr "&Završi i nastavi" msgid "&Done and Next" msgstr "&Završi i nastavi" msgid "Previously edited" msgstr "" msgid "Previously Edited" msgstr "" msgid "&Previous translation" msgstr "& Prethodni prijevod" msgid "&Previous Translation" msgstr "& Prethodni prijevod" msgid "&Next translation" msgstr "& Sljedeći prijevod" msgid "&Next Translation" msgstr "& Sljedeći prijevod" msgid "P&revious unfinished" msgstr "P&rethodno nedovršeno" msgid "P&revious Unfinished" msgstr "P&rethodno nedovršeno" msgid "Ne&xt unfinished" msgstr "Slje&deće nedovršeno" msgid "Ne&xt Unfinished" msgstr "Slje&deće nedovršeno" msgid "Previous plural form" msgstr "Prethodni oblik množine" msgid "Previous Plural Form" msgstr "Prethodni oblik množine" msgid "Next plural form" msgstr "Sljedeći oblik množine" msgid "Next Plural Form" msgstr "Sljedeći oblik množine" msgid "&Online help" msgstr "&Online pomoć" msgid "&Online Help" msgstr "&Online pomoć" msgid "&GNU gettext manual" msgstr "&GNU gettext dokumentacija" msgid "&GNU gettext Manual" msgstr "&GNU gettext dokumentacija" msgid "&About Poedit" msgstr "&O programu" msgid "&About" msgstr "&O programu" msgid "Extractor setup" msgstr "Postavka izdvajanja" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Lista ekstenzija odvojenih pomoću tačka-zareza (npr. *.cpp;*.h):" msgid "Invocation:" msgstr "Pozivanje:" msgid "Command to extract translations:" msgstr "Komanda za izdvajanje prijevoda:" 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)." msgid "An item in keywords list:" msgstr "Stavka u listi ključnih riječi:" 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č." msgid "An item in input files list:" msgstr "Stavka u listi datoteka za ubacivanje:" #, 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." msgid "Source code charset:" msgstr "Kodiranje znakova izvornog koda:" #, 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." msgid "Translation Properties" msgstr "" msgid "Project name and version:" msgstr "Ime projekta i verzija:" msgid "Language team:" msgstr "" msgid "Plural forms:" msgstr "" msgid "Use default rules for this language" msgstr "Koristi zadana pravila za ovaj jezik" msgid "Use custom expression" msgstr "Koristi vlastiti izraz" msgid "Learn about plural forms" msgstr "Saznaj više o oblicima množina" msgid "Charset:" msgstr "Kodiranje znakova:" msgid "Advanced Extraction Settings…" msgstr "" msgid "Advanced extraction settings…" msgstr "" msgid "Translation properties" msgstr "Svojstva prijevoda" msgid "Sources Paths" msgstr "" msgid "Sources paths" msgstr "Putanje originala" msgid "Extract text from source files in the following directories:" msgstr "Izvezi tekst iz originalnih datoteka u sljedeće foldere:" msgid "Base path:" msgstr "Bazna putanja:" msgid "Sources Keywords" msgstr "" msgid "Sources keywords" msgstr "Ključne riječi originala" 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:" msgid "Also use default keywords for supported languages" msgstr "" msgid "Learn about gettext keywords" msgstr "Saznaj više o gettext ključnim riječima" msgid "Update summary" msgstr "Rezime ažuriranja" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" msgid "New strings" msgstr "Novi stringovi" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" msgid "Obsolete strings" msgstr "Zastarjeli stringovi" msgid "(0 new, 0 obsolete)" msgstr "(0 novih, 0 suvišnih)" msgid "Open" msgstr "" msgid "Open file" msgstr "" msgid "Save file" msgstr "" msgid "Validate" msgstr "Validacija" msgid "Check for errors in the translation" msgstr "Provjeri ima li greški u prijevodu" msgid "Update from code" msgstr "" msgid "Update from Code" msgstr "" msgid "Update from source code" msgstr "" msgid "Sidebar" msgstr "Bočna traka" msgid "Show or hide the sidebar" msgstr "Prikazuje ili sakriva bočnu traku" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. msgid "Previous source text" msgstr "" msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" msgid "Notes for translators" msgstr "" msgid "Comment" msgstr "" msgid "Add comment" msgstr "Dodaj komentar" msgid "Add Comment" msgstr "Dodaj komentar" msgid "Delete From Translation Memory" msgstr "" msgid "Delete from translation memory" msgstr "" msgid "Translation suggestions" msgstr "" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). msgid "No matches found" msgstr "Nema rezultata" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). msgid "No Matches Found" msgstr "Nema rezultata" msgid "This string was found in Poedit’s translation memory." msgstr "Ovaj string je pronađen u Poedit memoriji prijevoda." msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" msgid "The TMX file is malformed." msgstr "" msgid "No translations were found in the TMX file." msgstr "" #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "" #, c-format msgid "Translation memory error: %s (%d)." msgstr "" msgid "Cannot create temporary directory." msgstr "Nije moguće napraviti privremeni folder!" msgid "There are no translations. That’s unusual." msgstr "Nema prijevoda. Ovo je neobično." msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "Translators typically use PO template files (POTs) prepared for them by the " "developer." msgstr "" msgid "(Learn more about GNU gettext)" msgstr "(Saznajte više o GNU gettext)" msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" msgid "Update from POT" msgstr "Ažuriraj iz POT-a" msgid "Take translatable strings from an existing POT template." msgstr "Uzmi stringove za prijevod iz postojećeg POT predloška." 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:" msgid "Extract from sources" msgstr "Ažuriraj iz originala" 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 #, c-format msgid "Version %s" msgstr "Verzija %s" msgid "Create new" msgstr "" msgid "Create new translation from POT template." msgstr "" msgid "Browse files" msgstr "" msgid "Open and edit translation files." msgstr "" msgid "Translate cloud project" msgstr "" msgid "Collaborate with other people online." msgstr "" msgid "Recent files" msgstr "" msgid "Sync" msgstr "Sinhronizuj" 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") #, 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. #, c-format msgid "%s Preferences" msgstr "" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "" msgid "Preferences..." msgstr "" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "" msgid "&Apply" msgstr "" msgid "Apply" msgstr "" msgid "&Back" msgstr "" msgid "Back" msgstr "" msgid "&Cancel" msgstr "" msgid "&Clear" msgstr "" msgid "Clear" msgstr "" msgid "Copy" msgstr "Kopiraj" msgid "Cu&t" msgstr "Izrež&i" msgid "Cut" msgstr "Izreži" msgid "Edit" msgstr "Uredi" msgid "&Quit" msgstr "" msgid "Help" msgstr "" msgid "&New" msgstr "" msgid "New" msgstr "Novo" msgid "&No" msgstr "" msgid "No" msgstr "" msgid "&OK" msgstr "" msgid "Open…" msgstr "" msgid "&Open..." msgstr "&Otvori..." msgid "Open..." msgstr "" msgid "&Paste" msgstr "&Zalijepi" msgid "Paste" msgstr "Zalijepi" msgid "Preferences" msgstr "" msgid "&Redo" msgstr "&Vrati" msgid "Refresh" msgstr "" msgid "&Save as" msgstr "" msgid "Save as" msgstr "" msgid "Select &All" msgstr "Oznaži &sve" msgid "Select All" msgstr "Označi sve" msgid "&Undo" msgstr "&Poništi" msgid "&Yes" msgstr "" msgid "Yes" msgstr "" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "Gore" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "Dole" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "shift" poedit-3.5/locales/pt_BR.po0000644000175100001770000020334214664354065012602 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "Esconder esta mensagem de notificação" msgid "Don’t Show Again" msgstr "Não mostrar novamente" msgid "Don’t show again" msgstr "Não mostrar novamente" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(Novas: %i, obsoletas: %i)" msgid "Collecting source files…" msgstr "Coletando arquivos de origem…" msgid "Extracting translatable strings…" msgstr "Extraindo sequências de caracteres traduzíveis…" msgid "Failed to load file with extracted translations." msgstr "Falhou em carregar o arquivo com as traduções extraídas." msgid "Merging differences…" msgstr "Mesclando diferenças…" msgid "Updating translations" msgstr "Atualizando traduções" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "O arquivo “%s” não pôde ser aberto." msgid "Invalid file" msgstr "Arquivo inválido" #, c-format msgid "Malformed header: “%s”" msgstr "Cabeçalho malformado: \"%s\"" msgid "PO Translation Files" msgstr "Arquivos de Tradução PO" msgid "POT Translation Templates" msgstr "Modelos de Tradução POT" msgid "XLIFF Translation Files" msgstr "Arquivos de Tradução XLIFF" msgid "JSON Translation Files" msgstr "Arquivos de tradução JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "Arquivos de tradução Flutter" msgid "All Translation Files" msgstr "Todos os Arquivos de Tradução" msgid "The file is in a format not recognized by Poedit." msgstr "O arquivo está em um formato não reconhecido pelo Poedit." 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." #, 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" #, 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." #, c-format msgid "Couldn’t save file %s." msgstr "Não foi possível salvar arquivo %s." msgid "Screenshots:" msgstr "Screenshots:" #, 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." #, 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)." 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" 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" msgid "Couldn’t load the file, it is probably damaged." msgstr "Não foi possível carregar o arquivo, provavelmente está corrompido." 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." 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)." #, 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." msgid "Error saving file" msgstr "Erro ao salvar o arquivo" #, c-format msgid "“%s” is not a valid POT file." msgstr "\"%s\" não é um arquivo POT válido." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Erro ao carregar o arquivo XLIFF: %s" #, 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 msgid "Broken markup in translation string." msgstr "Marcação quebrada na string da tradução." msgid "(Use default language)" msgstr "(Usar idioma padrão)" msgid "Language selection" msgstr "Seleção de idioma" msgid "Select your preferred language" msgstr "Selecione seu idioma preferido" msgid "You must restart Poedit for this change to take effect." msgstr "Você deve reiniciar o Poedit pra esta mudança ter efeito." msgid "Add Account" msgstr "Adicionar Conta" msgid "Add account" msgstr "Adicionar conta" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "Aprenda mais sobre o %s" 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." msgid "How does cloud sync work?" msgstr "Como a sincronização com a nuvem funciona?" msgid "Account" msgstr "Conta" msgid "(not signed in)" msgstr "(não está logado)" msgid "File" msgstr "Arquivo" msgid "Open cloud translation" msgstr "Abrir tradução da nuvem" msgid "Manage accounts" msgstr "Gerenciar contas" msgid "Project:" msgstr "Projeto:" msgid "Language:" msgstr "Idioma:" msgid "Sign in to Cloud Account" msgstr "Logar na Conta da Nuvem" msgid "Sign in to cloud account" msgstr "Logar na conta da nuvem" msgid "No translation projects listed in your account." msgstr "Não há projetos de tradução listados na sua conta." msgid "Downloading latest translations…" msgstr "Baixando as traduções mais recentes…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #, c-format msgid "Sign in to %s" msgstr "Logar no %s" msgid "Syncing" msgstr "Sincronizando" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, 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. #, c-format msgid "Uploading translations to %s failed." msgstr "O upload das traduções pro %s falhou." msgid "Syncing error" msgstr "Erro de sincronização" msgid "Add" msgstr "Adicionar" msgid "Unknown Crowdin error." msgstr "Erro desconhecido do Crowdin." msgid "Not authorized, please sign in again." msgstr "Não autorizado, por favor logue de novo." msgid "Downloading translations is disabled in this project." msgstr "O download das traduções está desativado neste projeto." msgid "Sign In" msgstr "Logar" msgid "Sign in" msgstr "Logar" msgid "Sign Out" msgstr "Sair" msgid "Sign out" msgstr "Sair" msgid "Learn more about Crowdin" msgstr "Aprenda Mais Sobre o Crowdin" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" "O Crowdin é uma plataforma de gerenciamento de localizações e ferramenta de " "tradução colaborativa online." msgid "Waiting for authentication…" msgstr "Esperando pela autenticação…" msgid "Updating user information…" msgstr "Atualizando as informações do usuário…" msgid "Sign in to Crowdin" msgstr "Logar no Crowdin" msgid "Syncing with Crowdin failed." msgstr "A sincronização com o Crowdin falhou." msgid "Crowdin error" msgstr "Erro do Crowdin" msgid "Uploading translations…" msgstr "Fazendo upload das traduções…" msgid "&Copy" msgstr "&Copiar" msgid "Learn more" msgstr "Aprenda mais" msgid "&Help" msgstr "&Ajuda" msgid "MO files can’t be directly edited in Poedit." msgstr "Os Arquivos MO não podem ser editados diretamente no Poedit." msgid "Error opening file" msgstr "Erro ao abrir o arquivo" 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." msgid "don’t delete temporary files (for debugging)" msgstr "não apagar arquivos temporários (para depuração)" msgid "handle a poedit:// URI" msgstr "Manejar uma URI do poedit://" msgid "go to item at given line number" msgstr "Vá até o item no número de linha dado" msgid "Failed to communicate with Poedit process." msgstr "Falhou em comunicar com o processo do Poedit." #, c-format msgid "Unhandled exception occurred: %s" msgstr "Ocorreu uma exceção não manejada: %s" msgid "Select translation template" msgstr "Selecionar o modelo de tradução" msgid "Select translation file" msgstr "Selecionar arquivo de tradução" msgid "Poedit is an easy to use translation editor." msgstr "O Poedit é um editor de traduções fácil de usar." 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." #, c-format msgid "File “%s” is not a translation file." msgstr "O arquivo “%s” não é um arquivo de tradução." #, c-format msgid "File “%s” doesn’t exist." msgstr "O arquivo \"%s\" não existe." 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". #, 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." msgid "Install" msgstr "Instalar" #, c-format msgid "The file “%s” has been changed by another application." msgstr "O arquivo “%s\" foi mudado por outro aplicativo." msgid "Reload file" msgstr "Recarregar arquivo" 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." msgid "Ignore" msgstr "Ignorar" msgid "Reload File" msgstr "Recarregar Arquivo" msgid "The file has been modified. Do you want to save changes?" msgstr "O arquivo foi modificado. Você quer salvar as mudanças?" msgid "Save changes" msgstr "Salvar mudanças" 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." msgid "Save" msgstr "Salvar" msgid "Do&n’t save" msgstr "Nã&o salvar" msgid "Don’t Save" msgstr "Não salvar" 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." msgid "Cancel" msgstr "Cancelar" msgid "Save Anyway" msgstr "Salvar de Qualquer Maneira" msgid "Save anyway" msgstr "Salvar de qualquer maneira" msgid "Save as…" msgstr "Salvar como…" msgid "Compile to…" msgstr "Compilar para…" msgid "Compiled Translation Files" msgstr "Arquivos de Tradução Compilados" msgid "Export to HTML…" msgstr "Exportar para HTML…" msgid "HTML Files" msgstr "Arquivos HTML" #, c-format msgid "In: %s" msgstr "Em: %s" msgid "Source code not available." msgstr "Código-fonte não disponível." msgid "Updating failed" msgstr "A atualização falhou" 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." msgid "Permission denied." msgstr "Permissão negada." 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. 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. 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." msgid "Translation entries in the file are probably incorrect." msgstr "As entradas da tradução no arquivo provavelmente estão incorretas." msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "A atualização do arquivo falhou. Clique em 'Detalhes >>' por detalhes." msgid "Open translation template" msgstr "Abrir modelo de tradução" #, 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." msgid "Validation results" msgstr "Resultados da validação" 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." msgid "The file was saved safely." msgstr "O arquivo foi salvo com segurança." 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." 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." 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." 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." msgid "No problems with the translation found." msgstr "Não foram encontrados problemas na tradução." #, c-format msgid "The translation is ready for use, but %d entry is not translated yet." msgid_plural "" "The translation is ready for use, but %d entries are not translated yet." msgstr[0] "" "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." msgid "The translation is ready for use." msgstr "A tradução está pronta pra uso." #, 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\"." 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." msgid "Language of the translation isn’t set." msgstr "O idioma da tradução não está definido." msgid "Set Language" msgstr "Definir Idioma" msgid "Set language" msgstr "Definir idioma" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." msgid "" "Suggestions are not available if the translation language is not set " "correctly. Other features, such as plural forms, may be affected as well." msgstr "" "As sugestões 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." msgid "Language of the translation is the same as source language." msgstr "O idioma da tradução é o mesmo do idioma de origem." msgid "Fix Language" msgstr "Consertar o Idioma" msgid "Fix language" msgstr "Consertar o Idioma" 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." 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" msgid "Required header Plural-Forms is missing." msgstr "O cabeçalho requerido das formas no plural está ausente." #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Erro de sintaxe no cabeçalho das formas no plural (\"%s\")." msgid "Fix the Header" msgstr "Consertar o Cabeçalho" 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". #, 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.")" msgid "Review" msgstr "Revisar" msgid "Would you like to use English for source text?" msgstr "Você gostaria de usar Inglês para texto de origem?" #, 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" msgid "Load English" msgstr "Carregar Inglês" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Traduziu: %d de %d (%d %%)" #, c-format msgid "Remaining: %d" msgstr "Restantes: %d" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d erro" msgstr[1] "%d erros" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d entrada" msgstr[1] "%d entradas" msgid " (unsaved)" msgstr " (não salvo)" msgid " (modified)" msgstr " (modificado)" #, c-format msgid "Failed to update translation memory: %s" msgstr "Falhou em atualizar a memória das traduções: %s" msgid "Remove same-as-source translations" msgstr "Remover traduções idênticas às da fonte" msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" "Você deseja remover todas as traduções que são idênticas ao texto fonte?" msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" "Esta ação excluirá quaisquer traduções que correspondam exatamente ao texto " "fonte. Isso não pode ser desfeito." msgid "Keep" msgstr "Manter" msgid "Remove" msgstr "Remover" msgid "Purge deleted translations" msgstr "Remover as traduções apagadas" 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?" 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." msgid "Purge" msgstr "Remover" msgid "Copy from source text" msgstr "Copiar do texto de origem" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "Limpar tradução" msgid "Clear Translation" msgstr "Limpar Tradução" msgid "Edit comment" msgstr "Editar comentário" msgid "Edit Comment" msgstr "Editar Comentário" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "Ocorrências no Código" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "Ocorrências no código" msgid "Hide Sidebar" msgstr "Esconder a Barra Lateral" msgid "Show Sidebar" msgstr "Mostrar a Barra Lateral" msgid "Hide Status Bar" msgstr "Esconder a Barra de Status" msgid "Show Status Bar" msgstr "Mostrar a Barra de Status" msgid "String length in characters: translation | source" msgstr "Comprimento da string em caracteres: tradução | fonte" msgid "String length in characters" msgstr "Comprimento da string em caracteres" msgid "Source text" msgstr "Texto de orígem" msgid "Singular" msgstr "Singular" msgid "Plural" msgstr "Plural" msgid "Translation" msgstr "Tradução" msgid "Pre-translated" msgstr "Pré-traduzidas" 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. msgid "Needs work" msgstr "Precisa de trabalho" 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." msgid "Create new translation" msgstr "Criar nova tradução" 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 msgid "Source text ID" msgstr "ID do texto fonte" msgid "Everything" msgstr "Tudo" #, c-format msgid "Form %i" msgstr "Formulário %i" #, c-format msgid "Form %i (unused)" msgstr "Formulário %i (não usado)" msgid "Zero" msgstr "Zero" msgid "One" msgstr "Um" msgid "Two" msgstr "Dois" msgid "Other" msgstr "Outro" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, 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 #, c-format msgid "String identifier: %s" msgstr "Identificador da string: %s" #, c-format msgid "%s Format" msgstr "Formato %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "Formato %s" #, c-format msgid "Translation — %s" msgstr "Tradução — %s" msgid "ID" msgstr "ID" #, c-format msgid "Source text — %s" msgstr "Texto de origem — %s" msgid "unknown language" msgstr "Idioma desconhecido" #, c-format msgid "Network error: %s (%d)" msgstr "Erro da rede: %s (%d)" msgid "Unknown error" msgstr "Erro desconhecido" #, c-format msgid "Failed command: %s" msgstr "O comando falhou: %s" msgid "Failed to merge gettext catalogs." msgstr "Falhou em unir os catálogos do gettext." msgid "Open in Editor" msgstr "Abrir no Editor" msgid "Open in editor" msgstr "Abrir no editor" 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." msgid "No usage information" msgstr "Nenhuma informação de uso" #, 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" msgid "Source code not found" msgstr "Código fonte não encontrado" 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." msgid "File cannot be opened" msgstr "O arquivo não pode ser aberto" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "O Poedit foi incapaz de abrir o arquivo “%s”." msgid "Find" msgstr "Achar" msgid "Replace" msgstr "Substituir" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "Opções" msgid "Ignore case" msgstr "Ignorar maiúsculas e minúsculas" msgid "Wrap around" msgstr "Pesquisa circular" msgid "Whole words only" msgstr "Só palavras inteiras" msgid "Find in source texts" msgstr "Achar nos textos fonte" msgid "Find in translations" msgstr "Achar nas traduções" msgid "Find in comments" msgstr "Achar nos comentários" msgid "Close" msgstr "Fechar" msgid "Replace &All" msgstr "Substituir &Tudo" msgid "Replace &all" msgstr "Substituir &tudo" msgid "&Replace" msgstr "&Substituir" msgid "< &Previous" msgstr "< &Anterior" msgid "&Next >" msgstr "&Próximo >" msgid "String to find" msgstr "String pra achar" msgid "Replacement string" msgstr "String de substituição" #, c-format msgid "Cannot execute program: %s" msgstr "Não pôde executar o programa: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "Nome ou código do idioma" msgid "Translation Language" msgstr "Idioma da Tradução" msgid "Language of the translation:" msgstr "Idioma da tradução:" msgid "All strings" msgstr "Todas as strings" msgid "Couldn’t download Localazy project details." msgstr "Não pôde baixar os detalhes do projeto Localazy." msgid "There was an error when uploading translations to Localazy." msgstr "Houve um erro quando fazia upload das traduções pro Localazy." msgid "Projects" msgstr "Projetos" 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." msgid "Add Project" msgstr "Adicionar Projeto" msgid "Add project" msgstr "Adicionar projeto" msgid "Poedit - Catalogs manager" msgstr "Poedit - Gerenciador de catálogos" msgid "Edit…" msgstr "Editar…" msgid "Create new translations project" msgstr "Criar novo projeto de tradução" msgid "Delete the project" msgstr "Apagar o projeto" msgid "Edit the project" msgstr "Editar o projeto" msgid "Update all" msgstr "Atualizar tudo" msgid "Update all catalogs in the project" msgstr "Atualizar todos os catálogos no projeto" msgid "Total" msgstr "Total" msgid "Untrans" msgstr "Não traduzidas" msgctxt "column/row header" msgid "Needs Work" msgstr "Precisa de Trabalho" msgid "Errors" msgstr "Erros" msgid "Last modified" msgstr "Última modificação" msgid "Select directory" msgstr "Selecionar diretório" msgid "Directories:" msgstr "Diretórios:" msgid "" msgstr "" #, c-format msgid "Do you want to delete project “%s”?" msgstr "Você deseja excluir o projeto “%s?" msgid "Delete project" msgstr "Excluir projeto" msgid "Deleting the project will not delete any translation files." msgstr "Excluir o projeto não excluirá nenhum arquivo de tradução." msgid "Confirmation" msgstr "Confirmação" msgid "Update all catalogs in this project?" msgstr "Atualizar todos os catálogos deste projeto?" 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." msgid "Check for Updates…" msgstr "Verificar Atualizações…" msgid "Catalogs Manager" msgstr "Gerenciador de catálogos" msgid "&Preferences…" msgstr "&Preferências…" msgid "&Edit" msgstr "&Editar" msgid "Undo" msgstr "Desfazer" msgid "Redo" msgstr "Refazer" msgid "Paste and Match Style" msgstr "Colar e Combinar com o Estilo" msgid "Delete" msgstr "Apagar" msgid "Spelling and Grammar" msgstr "Ortografia e gramática" msgid "Show Spelling and Grammar" msgstr "Mostrar Ortografia e Gramática" msgid "Check Document Now" msgstr "Verificar o Documento Agora" msgid "Check Spelling While Typing" msgstr "Verificar a Ortografia enquanto Digita" msgid "Check Grammar With Spelling" msgstr "Verificar a Gramática com Ortografia" msgid "Correct Spelling Automatically" msgstr "Corrigir ortografia automaticamente" msgid "Substitutions" msgstr "Substituições" msgid "Show Substitutions" msgstr "Mostrar Substituições" msgid "Smart Copy/Paste" msgstr "Copiar/Colar Inteligente" msgid "Smart Quotes" msgstr "Aspas inteligentes" msgid "Smart Dashes" msgstr "Hífens Inteligentes" msgid "Smart Links" msgstr "Links Inteligentes" msgid "Text Replacement" msgstr "Substituição de texto" msgid "Transformations" msgstr "Transformações" msgid "Make Upper Case" msgstr "Tornar Maiúscula" msgid "Make Lower Case" msgstr "Tornar Minúscula" msgid "Capitalize" msgstr "Letras Iniciais em Maiúsculas" msgid "Speech" msgstr "Fala" msgid "Start Speaking" msgstr "Começar a Falar" msgid "Stop Speaking" msgstr "Parar de Falar" msgid "&View" msgstr "&Visualizar" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Show Toolbar" msgstr "Mostrar Barra de Ferramentas" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Customize Toolbar…" msgstr "Personalizar barra de ferramentas…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Enter Full Screen" msgstr "Entrar em Tela Cheia" msgid "Window" msgstr "Janela" msgid "Minimize" msgstr "Minimizar" msgid "Zoom" msgstr "Zoom" msgid "Welcome to Poedit" msgstr "Bem-vindo ao Poedit" msgid "Bring All to Front" msgstr "Trazer Tudo pra Frente" msgid "Information about the translator" msgstr "Informações sobre o tradutor" msgid "Name:" msgstr "Nome:" msgid "Your Name" msgstr "Seu Nome" msgid "Email:" msgstr "Email:" msgid "you@example.com" msgstr "voce@exemplo.com" 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." msgid "Editing" msgstr "Edição" msgid "Automatically compile MO file when saving" msgstr "Compilar automaticamente o arquivo MO quando salvar" msgid "Show summary after updating files" msgstr "Mostrar o sumário após atualizar os arquivos" msgid "Check spelling" msgstr "Verificar ortografia" msgid "Always change focus to text input field" msgstr "Sempre mudar o foco pro campo de entrada do texto" msgid "" "Never let the list of strings take focus. If enabled, you must use Ctrl-" "arrows for keyboard navigation but you can also type text immediately, " "without having to press Tab to change focus." msgstr "" "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." msgid "Appearance" msgstr "Aparência" msgid "Use custom list font:" msgstr "Usar fonte personalizada da lista:" msgid "Use custom text fields font:" msgstr "Usar fonte personalizada dos campos de texto:" 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 msgid "(requires Windows 8 or newer)" msgstr "(requer o Windows 8 ou mais novo)" msgid "General" msgstr "Geral" msgid "Use translation memory" msgstr "Usar a memória das traduções" msgid "Manage…" msgstr "Gerenciar…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "Quando atualizar das fontes" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "Combinação imprecisa dentro do arquivo" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "Pré-traduzir da MT" 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." msgid "Stored translations:" msgstr "Traduções armazenadas:" msgid "Database size on disk:" msgstr "Tamanho do banco de dados no disco:" msgid "Import Translation Files…" msgstr "Importar Arquivos de Tradução…" msgid "Import translation files…" msgstr "Importar arquivos de tradução…" msgid "Import From TMX…" msgstr "Importar do TMX…" msgid "Import from TMX…" msgstr "Importar do TMX…" msgid "Export To TMX…" msgstr "Exportar pro TMX…" 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). msgid "Reset" msgstr "Resetar" msgid "Select translation files to import" msgstr "Selecione arquivos de tradução pra importar" msgid "Translation Memory" msgstr "Memória das Traduções" msgid "Importing translations…" msgstr "Importando traduções…" #, c-format msgid "Error loading translation file “%s”." msgstr "Erro ao carregar o arquivo de tradução “%s." msgid "Finalizing…" msgstr "Finalizando…" msgid "Select TMX files to import" msgstr "Selecione os arquivos TMX pra importar" msgid "TMX Files" msgstr "Arquivos TMX" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "A importação da memória das traduções do \"%s\" falhou." msgid "Import error" msgstr "Erro de importação" msgid "Export as…" msgstr "Exportar como…" msgid "Exporting translations…" msgstr "Exportando traduções…" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "A exportação da memória das traduções pro \"%s\" falhou." msgid "Export error" msgstr "Erro de exportação" msgid "Reset translation memory" msgstr "Resetar memória das traduções" 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?" 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. msgid "TM" msgstr "MT" 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." msgid "Custom Extractors:" msgstr "Extratores Personalizados:" msgid "Custom extractors:" msgstr "Extratores personalizados:" msgid "GNU gettext" msgstr "gettext do GNU" 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)." msgid "Delete extractor" msgstr "Apagar extrator" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "Você tem certeza que você quer apagar o extrator \"%s\"?" msgid "Extractors" msgstr "Extratores" msgid "Accounts" msgstr "Contas" msgid "Automatically check for updates" msgstr "Procurar atualizações automaticamente" msgid "Include beta versions" msgstr "Incluir versões beta" 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." msgid "Updates" msgstr "Atualizações" 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." msgid "Line endings:" msgstr "Finais de linha:" msgid "Unix (recommended)" msgstr "Unix (recomendado)" msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "Quebra em:" msgid "Preserve formatting of existing files" msgstr "Preservar a formatação dos arquivos existentes" msgid "Advanced" msgstr "Avançado" msgid "Settings" msgstr "Configurações" msgid "Preparing strings…" msgstr "Preparando strings…" msgid "Pre-translating from translation memory…" msgstr "Pré-traduzindo da memória das traduções…" #, 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" msgid "Pre-translating…" msgstr "Pré-traduzindo…" 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. msgid "Pre-translate" msgstr "Pré-traduzir" 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." msgid "Cannot pre-translate from unknown language." msgstr "Não pode pré-traduzir a partir de um idioma desconhecido." 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." msgid "Only fill in exact matches" msgstr "Só preencher com as combinações exatas" 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." msgid "Don’t mark exact matches as needing work" msgstr "Não marcar combinações exatas como precisando de trabalho" 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." 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." #, 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." 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." msgid "No entries could be pre-translated." msgstr "Nenhuma entrada pôde ser pré-traduzida." 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." msgid "Cancelling…" msgstr "Cancelando…" msgid "Drag Folders or Files Here" msgstr "Arraste Pastas ou Arquivos Aqui" msgid "Drag folders or files here" msgstr "Arraste pastas ou arquivos aqui" msgid "Add Folders…" msgstr "Adicionar Pastas…" msgid "Add folders…" msgstr "Adicionar Pastas…" msgid "Add Files…" msgstr "Adicionar Arquivos…" msgid "Add files…" msgstr "Adicionar arquivos…" msgid "Add Wildcard…" msgstr "Adicionar Caractere Especial…" msgid "Add wildcard…" msgstr "Adicionar caractere especial…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) 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" msgid "Show in Explorer" msgstr "Mostrar no Explorer" msgid "Show in Folder" msgstr "Mostrar na Pasta" msgid "Paths" msgstr "Caminhos" msgid "Excluded paths" msgstr "Caminhos excluídos" msgid "Advanced extraction settings" msgstr "Configurações avançadas da extração" msgid "Extract notes for translators from:" msgstr "Extrair notas pros tradutores do:" msgid "Comments prefixed with:" msgstr "Comentários pré-fixados com:" msgid "All comments" msgstr "Todos os comentários" msgid "Additional xgettext flags:" msgstr "Bandeiras adicionais do xgettext:" msgid "Additional keywords" msgstr "Palavras-chave adicionais" msgid "Name of the project the translation is for" msgstr "Nome do projeto para o qual é a tradução" msgid "Team name and email address or URL" msgstr "Nome do time e endereço de email ou URL" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "ex: nplurals=2; plural=(n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (recomendado)" 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." msgid "Placeholders correctness" msgstr "Correção dos espaços reservados" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "O espaço reservado \"%s\" está ausente na tradução." #, 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." msgid "Plural form translations" msgstr "Traduções das formas no plural" msgid "Not all plural forms are translated." msgstr "Nem todas as formas no plural estão traduzidas." msgid "Inconsistent upper/lower case" msgstr "Maiúsculas/minúsculas inconsistentes" msgid "The translation should start as a sentence." msgstr "A tradução deve começar como uma sentença." msgid "The translation should start with a lowercase character." msgstr "A tradução deve começar com um caractere minúsculo." msgid "Inconsistent whitespace" msgstr "Espaço em branco inconsistente" msgid "The translation doesn’t start with a space." msgstr "A tradução não começa com um espaço." 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." msgid "The translation is missing a newline at the end." msgstr "Está faltando uma nova linha no fim da tradução." 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." msgid "The translation is missing a space at the end." msgstr "Está faltando um espaço no fim da tradução." 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." msgid "Punctuation checks" msgstr "Verificações de pontuação" #, c-format msgid "The translation should end with “%s”." msgstr "A tradução deve terminar com \"%s\"." #, c-format msgid "The translation should not end with “%s”." msgstr "A tradução não deve terminar com \"%s\"." #, 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\"." msgid "Cloud" msgstr "Nuvem" msgid "Clear Menu" msgstr "Limpar Menu" msgid "Clear menu" msgstr "Limpar menu" msgid "Comment:" msgstr "Comentário:" msgid "Update" msgstr "Atualizar" msgid "&Delete" msgstr "&Apagar" msgid "Delete the comment" msgstr "Apagar o comentário" msgid "Edit project" msgstr "Editar projeto" msgid "Project name:" msgstr "Nome do projeto:" msgid "Browse" msgstr "Explorar" msgid "Add directory to the list" msgstr "Adicionar diretório a lista" msgid "OK" msgstr "Ok" msgid "&File" msgstr "&Arquivo" msgid "&New…" msgstr "&Novo…" msgid "New from &POT/PO file…" msgstr "Novo do arquivo &POT/PO…" msgid "New From &POT/PO File…" msgstr "Novo do Arquivo &POT/PO…" msgid "&Open…" msgstr "A&brir…" msgid "Open Recent" msgstr "Abrir Recentes" msgid "Open recent" msgstr "Abrir recentes" msgid "Open cloud translation…" msgstr "Abrir tradução da nuvem..." msgid "Open Cloud Translation…" msgstr "Abrir Tradução da Nuvem..." msgid "&Start window" msgstr "&Janela inicial" msgid "&Start Window" msgstr "&Janela Inicial" msgid "Catalogs &manager" msgstr "Gerenciador de &catálogos" msgid "Catalogs &Manager" msgstr "Gerenciador de &Catálogos" msgid "&Close" msgstr "&Fechar" msgid "&Save" msgstr "&Salvar" msgid "Save &as…" msgstr "Salvar &como…" msgid "Save &As…" msgstr "Salvar &Como…" msgid "Compile to MO…" msgstr "Compilar para MO…" msgid "E&xport to HTML…" msgstr "E&xportar para HTML…" msgid "Check for updates…" msgstr "Verificar atualizações…" msgid "Settings…" msgstr "Configurações…" msgid "&Preferences" msgstr "&Preferências" msgid "E&xit" msgstr "S&air" msgid "Quit" msgstr "Sair" msgid "Copy from singular" msgstr "Copiar do singular" msgid "Copy From Singular" msgstr "Copiar do Singular" msgid "Translation needs &work" msgstr "A tradução precisa de &trabalho" msgid "Translation Needs &Work" msgstr "A Tradução Precisa de &Trabalho" msgid "Edit &comment" msgstr "Editar &comentário" msgid "Edit &Comment" msgstr "Editar &Comentário" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "Sugestões" msgid "&Find…" msgstr "Locali&zar…" msgid "Replace…" msgstr "Substituir…" msgid "Find next" msgstr "Achar o próximo" msgid "Find previous" msgstr "Achar o anterior" msgid "Find and Replace…" msgstr "Localizar e Substituir…" msgid "Find Next" msgstr "Achar o Próximo" msgid "Find Previous" msgstr "Achar o Anterior" msgid "Show string &ID" msgstr "Mostrar a &ID da string" msgid "Show String &ID" msgstr "Mostrar a &ID da String" msgid "Show warnings" msgstr "Mostrar avisos" msgid "Show Warnings" msgstr "Mostrar Avisos" msgid "Sort by &file order" msgstr "Organizar pela &ordem dos arquivos" msgid "Sort by &File Order" msgstr "Organizar pela &Ordem dos Arquivos" msgid "Sort by &source" msgstr "Organizar pela &origem" msgid "Sort by &Source" msgstr "Organizar pela &Origem" msgid "Sort by &translation" msgstr "Organizar pela &tradução" msgid "Sort by &Translation" msgstr "Organizar pela &Tradução" msgid "&Group by context" msgstr "&Agrupar pelo contexto" msgid "&Group By Context" msgstr "&Agrupar Pelo Contexto" msgid "Entries with errors first" msgstr "Entradas com erros primeiro" msgid "Entries with Errors First" msgstr "Entradas com erros primeiro" msgid "&Untranslated entries first" msgstr "&Entradas não traduzidas primeiro" msgid "&Untranslated Entries First" msgstr "&Entradas Não Traduzidas Primeiro" msgid "&Show code occurrences" msgstr "&Mostrar ocorrências no código" msgid "&Show Code Occurrences" msgstr "&Mostrar Ocorrências no Código" msgid "Show sidebar" msgstr "Mostrar barra lateral" msgid "Show status bar" msgstr "Mostrar barra de status" msgid "&Translation" msgstr "&Tradução" msgid "&Update from source code" msgstr "&Atualizar do código fonte" msgid "&Update from Source Code" msgstr "&Atualizar do Código Fonte" msgid "Update from &POT file…" msgstr "Atualizar do arquivo &POT…" msgid "Update from &POT File…" msgstr "Atualizar do Arquivo &POT…" msgid "Sync with Crowdin" msgstr "Sincronizar com o Crowdin" msgid "Pre-&translate…" msgstr "Pré-&traduzir…" msgid "&Validate translations" msgstr "&Validar traduções" msgid "&Validate Translations" msgstr "&Validar traduções" msgid "Remove Same-as-Source Translations" msgstr "Remover Traduções Idênticas às da Fonte" msgid "&Purge deleted translations" msgstr "&Remover traduções apagadas" msgid "&Purge Deleted Translations" msgstr "&Remover Traduções Apagadas" msgid "&Properties…" msgstr "&Propriedades…" msgid "&Go" msgstr "&Ir" msgid "&Done and next" msgstr "&Feito e próximo" msgid "&Done and Next" msgstr "&Feito e Próximo" msgid "Previously edited" msgstr "Editado anteriormente" msgid "Previously Edited" msgstr "Editado Anteriormente" msgid "&Previous translation" msgstr "&Tradução anterior" msgid "&Previous Translation" msgstr "&Tradução Anterior" msgid "&Next translation" msgstr "&Tradução seguinte" msgid "&Next Translation" msgstr "&Tradução Seguinte" msgid "P&revious unfinished" msgstr "I&nacabada anterior" msgid "P&revious Unfinished" msgstr "I&nacabada Anterior" msgid "Ne&xt unfinished" msgstr "In&acabada seguinte" msgid "Ne&xt Unfinished" msgstr "In&acabada Seguinte" msgid "Previous plural form" msgstr "Forma plural anterior" msgid "Previous Plural Form" msgstr "Forma Plural Anterior" msgid "Next plural form" msgstr "Forma plural seguinte" msgid "Next Plural Form" msgstr "Forma Plural Seguinte" msgid "&Online help" msgstr "&Ajuda online" msgid "&Online Help" msgstr "&Ajuda Online" msgid "&GNU gettext manual" msgstr "&Manual do gettext do GNU" msgid "&GNU gettext Manual" msgstr "&Manual do gettext do GNU" msgid "&About Poedit" msgstr "&Sobre o Poedit" msgid "&About" msgstr "&Sobre" msgid "Extractor setup" msgstr "Configuração do extrator" 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):" msgid "Invocation:" msgstr "Invocação:" msgid "Command to extract translations:" msgstr "Comando pra extrair as traduções:" 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)." msgid "An item in keywords list:" msgstr "Um item na lista de palavras-chave:" msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Isto será anexado na linha de comando uma vez\n" "pra cada palavra-chave. %k expande para a palavra-chave." msgid "An item in input files list:" msgstr "Um item na lista de arquivos de entrada:" #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "Isto será anexado na linha de comando uma vez\n" "pra cada arquivo de entrada. %f expande para o nome do arquivo." msgid "Source code charset:" msgstr "Conjunto de caracteres do código fonte:" #, 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." msgid "Translation Properties" msgstr "Propriedades da Tradução" msgid "Project name and version:" msgstr "Nome e versão do projeto:" msgid "Language team:" msgstr "Time do idioma:" msgid "Plural forms:" msgstr "Formas no Plural:" msgid "Use default rules for this language" msgstr "Usar regras padrão pra este idioma" msgid "Use custom expression" msgstr "Usar expressão personalizada" msgid "Learn about plural forms" msgstr "Saiba mais sobre as formas no plural" msgid "Charset:" msgstr "Conjunto de caracteres:" msgid "Advanced Extraction Settings…" msgstr "Configurações Avançadas de Extração…" msgid "Advanced extraction settings…" msgstr "Configurações avançadas de extração…" msgid "Translation properties" msgstr "Propriedades da tradução" msgid "Sources Paths" msgstr "Caminhos das Fontes" msgid "Sources paths" msgstr "Caminhos das fontes" msgid "Extract text from source files in the following directories:" msgstr "Extrair texto dos arquivos fonte nos seguintes diretórios:" msgid "Base path:" msgstr "Caminho base:" msgid "Sources Keywords" msgstr "Palavras-Chave das Fontes" msgid "Sources keywords" msgstr "Palavras-chave das fontes" msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Use estas palavras-chave (nomes das funções) pra reconhecer strings " "traduzíveis\n" "nos arquivos fonte:" msgid "Also use default keywords for supported languages" msgstr "Usar também as palavras-chave padrão pros idiomas suportados" msgid "Learn about gettext keywords" msgstr "Aprenda sobre as palavras-chave do gettext" msgid "Update summary" msgstr "Atualizar sumário" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" "Estas strings foram achadas nas fontes mas não estavam no arquivo.\n" "O Poedit as adicionará ao arquivo agora." msgid "New strings" msgstr "Novas strings" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" "Estas strings não estão mais no código-fonte.\n" "O Poedit removerá elas do arquivo agora." msgid "Obsolete strings" msgstr "Strings obsoletas" msgid "(0 new, 0 obsolete)" msgstr "(0 novas, 0 obsoletas)" msgid "Open" msgstr "" msgid "Open file" msgstr "Abrir arquivo" msgid "Save file" msgstr "Salvar arquivo" msgid "Validate" msgstr "Validar" msgid "Check for errors in the translation" msgstr "Procurar erros na tradução" msgid "Update from code" msgstr "Atualizar do código" msgid "Update from Code" msgstr "Atualizar do Código" msgid "Update from source code" msgstr "Atualizar do código fonte" msgid "Sidebar" msgstr "Barra lateral" 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. msgid "Previous source text" msgstr "Texto de origem anterior" 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." msgid "Notes for translators" msgstr "Notas pros tradutores" msgid "Comment" msgstr "Comentário" msgid "Add comment" msgstr "Adicionar comentário" msgid "Add Comment" msgstr "Adicionar Comentário" msgid "Delete From Translation Memory" msgstr "Apagar da Memória das Traduções" msgid "Delete from translation memory" msgstr "Apagar da memória das traduções" msgid "Translation suggestions" msgstr "Sugestões de tradução" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). msgid "No matches found" msgstr "Não foram achadas combinações" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). msgid "No Matches Found" msgstr "Não Foram Achadas Combinações" msgid "This string was found in Poedit’s translation memory." msgstr "Esta string foi achada na memória das traduções do Poedit." 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." 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." msgid "The TMX file is malformed." msgstr "O arquivo TMX está mal-formado." msgid "No translations were found in the TMX file." msgstr "Nenhuma tradução foi encontrada no arquivo TMX." #, 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)." #, c-format msgid "Translation memory error: %s (%d)." msgstr "Erro da memória das traduções: %s (%d)." msgid "Cannot create temporary directory." msgstr "Não consegue criar um diretório temporário." msgid "There are no translations. That’s unusual." msgstr "Não há traduções. Isso é incomum." msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "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 do Gettext " "mas são automaticamente extraídas\n" "do código fonte. Deste modo elas ficam atualizadas e precisas.\n" "Os tradutores tipicamente usam os arquivos de modelo PO (POT) preparados pra " "eles pelo desenvolvedor." msgid "(Learn more about GNU gettext)" msgstr "(Saiba mais sobre o gettext do GNU)" 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:" msgid "Update from POT" msgstr "Atualizar do POT" msgid "Take translatable strings from an existing POT template." msgstr "Pegar strings traduzíveis de um modelo POT existente." 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:" msgid "Extract from sources" msgstr "Extrair das fontes" 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 #, c-format msgid "Version %s" msgstr "Versão %s" msgid "Create new" msgstr "Criar nova" msgid "Create new translation from POT template." msgstr "Criar nova tradução a partir do modelo POT." msgid "Browse files" msgstr "Explorar arquivos" msgid "Open and edit translation files." msgstr "Abrir e editar arquivos de tradução." msgid "Translate cloud project" msgstr "Traduzir projeto da nuvem" msgid "Collaborate with other people online." msgstr "Colabore com outras pessoas online." msgid "Recent files" msgstr "Arquivos recentes" msgid "Sync" msgstr "Sincronizar" 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") #, 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. #, c-format msgid "%s Preferences" msgstr "Preferências do %s" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "Serviços" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "Esconder %s" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "Esconder Outros" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "Mostrar Tudo" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "Sair do %s" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "Preferências…" msgid "Preferences..." msgstr "Preferências..." #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "Recentes" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "Frequentes" msgid "&Apply" msgstr "&Aplicar" msgid "Apply" msgstr "Aplicar" msgid "&Back" msgstr "&Voltar" msgid "Back" msgstr "Voltar" msgid "&Cancel" msgstr "&Cancelar" msgid "&Clear" msgstr "&Limpar" msgid "Clear" msgstr "Limpar" msgid "Copy" msgstr "Copiar" msgid "Cu&t" msgstr "Co&rtar" msgid "Cut" msgstr "Cortar" msgid "Edit" msgstr "Editar" msgid "&Quit" msgstr "&Sair" msgid "Help" msgstr "Ajuda" msgid "&New" msgstr "&Novo" msgid "New" msgstr "Novo" msgid "&No" msgstr "&Não" msgid "No" msgstr "Não" msgid "&OK" msgstr "&Ok" msgid "Open…" msgstr "Abrir…" msgid "&Open..." msgstr "&Abrir..." msgid "Open..." msgstr "Abrir..." msgid "&Paste" msgstr "&Colar" msgid "Paste" msgstr "Colar" msgid "Preferences" msgstr "Preferências" msgid "&Redo" msgstr "&Refazer" msgid "Refresh" msgstr "Atualizar" msgid "&Save as" msgstr "&Salvar como" msgid "Save as" msgstr "Salvar como" msgid "Select &All" msgstr "Selecionar &Tudo" msgid "Select All" msgstr "Selecionar Tudo" msgid "&Undo" msgstr "&Desfazer" msgid "&Yes" msgstr "&Sim" msgid "Yes" msgstr "Sim" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Entrar" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "Pra Cima" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "Pra Baixo" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "Esquerda" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "Direita" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "shift" poedit-3.5/locales/kab.po0000644000175100001770000017223114664354154012332 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "Ffer izen-agi n ulɣu" msgid "Don’t Show Again" msgstr "Ur d-skan ara tikelt-nniḍen" msgid "Don’t show again" msgstr "Ur d-skan ara tikelt-nniḍen" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(Amaynut : %i, yezri : %i)" msgid "Collecting source files…" msgstr "Alqaḍ n ifuyla iɣbula…" msgid "Extracting translatable strings…" msgstr "Tussfa n yizraren ara yettwasuqqelen…" msgid "Failed to load file with extracted translations." msgstr "Ulamek asali n ufaylu s tsuqilin yettwassfen." msgid "Merging differences…" msgstr "Asdukkel n wayen yimgaraden…" msgid "Updating translations" msgstr "Aleqqem n tsuqilin" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "Afaylu “%s” ulamek ara yettwaldi." msgid "Invalid file" msgstr "Afaylu d armeɣtu" #, c-format msgid "Malformed header: “%s”" msgstr "Inixf ur yemsil ara akken iwata: “%s”" msgid "PO Translation Files" msgstr "Ifuyla n tsuqilt PO" msgid "POT Translation Templates" msgstr "Tineɣrufin n tsuqilt POT" msgid "XLIFF Translation Files" msgstr "Ifuyla n tsuqilt XLIFF" msgid "JSON Translation Files" msgstr "Ifuyla n tsuqqilt JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "" msgid "All Translation Files" msgstr "Akk ifuyla n tsuqilt" msgid "The file is in a format not recognized by Poedit." msgstr "" 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." #, c-format msgid "Reading file content failed with the following error: %s" msgstr "" #, 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." #, c-format msgid "Couldn’t save file %s." msgstr "Ur izmira ara ad isekles afaylu %s." msgid "Screenshots:" msgstr "Tuṭṭfiwin n wegdil :" #, 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." #, 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)." 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" msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "Afaylu PO yerreẓ: talɣa n usget msgstr tettwaseqdec war msgid_plural" msgid "Couldn’t load the file, it is probably damaged." msgstr "D awezɣi asali n ufaylu, izmer ad yili yerreẓ." 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." 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)." #, 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." msgid "Error saving file" msgstr "Tuccḍa deg usekles n ufaylu" #, c-format msgid "“%s” is not a valid POT file." msgstr "“%s” mačči d afaylu POT ameɣtu." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Tella-d tuccḍa deg usali n ufaylu XLIFF: %s" #, 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 msgid "Broken markup in translation string." msgstr "Ticreḍt yerrẓen deg uzrar n tsuqilt." msgid "(Use default language)" msgstr "(Seqdec tutlayt n lexṣas)" msgid "Language selection" msgstr "Afran n tutlayt" msgid "Select your preferred language" msgstr "Fren tutlayt-ik tamenyift" msgid "You must restart Poedit for this change to take effect." msgstr "Yessefk ad talseḍ tanekra n Poedit akken ad yeddu ubeddil-agi." msgid "Add Account" msgstr "Rnu amiḍan" msgid "Add account" msgstr "Rnu amiḍan" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "Issin ugar ɣef %s" msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" msgid "How does cloud sync work?" msgstr "" msgid "Account" msgstr "Amiḍan" msgid "(not signed in)" msgstr "" msgid "File" msgstr "Afaylu" msgid "Open cloud translation" msgstr "" msgid "Manage accounts" msgstr "Sefrek imiḍanen" msgid "Project:" msgstr "Asenfar:" msgid "Language:" msgstr "Tutlayt:" msgid "Sign in to Cloud Account" msgstr "Qqen ɣer umiḍan n cloud" msgid "Sign in to cloud account" msgstr "Qqen ɣer umiḍan n cloud" msgid "No translation projects listed in your account." msgstr "" msgid "Downloading latest translations…" msgstr "Asider n tsuqilin tineggura…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #, c-format msgid "Sign in to %s" msgstr "Qqen ɣer %s" msgid "Syncing" msgstr "Amtawi" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, 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. #, c-format msgid "Uploading translations to %s failed." msgstr "" msgid "Syncing error" msgstr "Tuccḍa n umtawi" msgid "Add" msgstr "Rnu" msgid "Unknown Crowdin error." msgstr "Tuccḍa tarussint n Crowdin." msgid "Not authorized, please sign in again." msgstr "Ur yurig ara, ttxil-k qqen tikkelt-nniḍen." msgid "Downloading translations is disabled in this project." msgstr "Asider n tsuqilin yensa deg usenfar-agi." msgid "Sign In" msgstr "Qqen" msgid "Sign in" msgstr "Qqen" msgid "Sign Out" msgstr "Ffeɣ" msgid "Sign out" msgstr "Ffeɣ" msgid "Learn more about Crowdin" msgstr "Issin ugar ɣef Crowdin" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" msgid "Waiting for authentication…" msgstr "Araǧu n usesteb…" msgid "Updating user information…" msgstr "Aleqqem n telɣut n useqdac…" msgid "Sign in to Crowdin" msgstr "Qqen ɣer Crowdin" msgid "Syncing with Crowdin failed." msgstr "Amtawi akked Crowdin yerreẓ." msgid "Crowdin error" msgstr "Tuccḍa n Crowdin" msgid "Uploading translations…" msgstr "Asili n tsuqilin…" msgid "&Copy" msgstr "&Nɣel" msgid "Learn more" msgstr "Issin ugar" msgid "&Help" msgstr "&Tallelt" msgid "MO files can’t be directly edited in Poedit." msgstr "Ifuyla MO ur tezmireḍ ara ad ten-tẓergeḍ srid di Poedit." msgid "Error opening file" msgstr "Tuccḍa deg ulday n ufaylu" 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." msgid "don’t delete temporary files (for debugging)" msgstr "ur ttekkes ara ifuyla ikudanen (i weseɣti)" msgid "handle a poedit:// URI" msgstr "sefrek URI n poedit:// URI" msgid "go to item at given line number" msgstr "ddu s aferdis deg yizirig i d-ittunefken" msgid "Failed to communicate with Poedit process." msgstr "Tuccḍa di teɣwalt akked usekker Poedit." #, c-format msgid "Unhandled exception occurred: %s" msgstr "Teḍra-d tsureft ur nettwassefrak ara: %s" msgid "Select translation template" msgstr "Fren taneɣruft n tsuqilt" msgid "Select translation file" msgstr "Fren afaylu n tsuqilt" msgid "Poedit is an easy to use translation editor." msgstr "Poedit d amaẓrag n tsuqilin yeshel i weseqdec." 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." #, c-format msgid "File “%s” is not a translation file." msgstr "Afaylu “%s” mačči d afaylu n tsuqilt." #, c-format msgid "File “%s” doesn’t exist." msgstr "Afaylu “%s” ulac-it." 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". #, 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." msgid "Install" msgstr "Sbedd" #, c-format msgid "The file “%s” has been changed by another application." msgstr "Afaylu “%s” ibeddel-it usna-nniḍen." msgid "Reload file" msgstr "Ales asali n ufaylu" 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ḍ." msgid "Ignore" msgstr "Ttu" msgid "Reload File" msgstr "Ales asali n ufaylu" msgid "The file has been modified. Do you want to save changes?" msgstr "Afaylu yettwabeddel. Tebɣiḍ ad teskelseḍ ibeddilen?" msgid "Save changes" msgstr "Sekles ibeddilen" 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." msgid "Save" msgstr "Sekles" msgid "Do&n’t save" msgstr "Ur sseklas a&ra" msgid "Don’t Save" msgstr "Ur sseklas ara" 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ḍ." msgid "Cancel" msgstr "Sefsex" msgid "Save Anyway" msgstr "Sekles akken ibɣu" msgid "Save anyway" msgstr "Sekles akken ibɣu" msgid "Save as…" msgstr "Sekles am…" msgid "Compile to…" msgstr "Sefsu ɣer…" msgid "Compiled Translation Files" msgstr "Afaylu n tsuqilt yefsa" msgid "Export to HTML…" msgstr "" msgid "HTML Files" msgstr "Ifuyla HTML" #, c-format msgid "In: %s" msgstr "Di: %s" msgid "Source code not available." msgstr "Tangalt taɣbalut ur tewjid ara." msgid "Updating failed" msgstr "Aleqqem yecceḍ" 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." msgid "Permission denied." msgstr "Tasiregt tettwagi." 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. 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. 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." msgid "Translation entries in the file are probably incorrect." msgstr "Inekcumen n tsuqilt deg ufaylu zemren ad ilin d irmeɣta." msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "Aleqqem n ufaylu ur yeddi ara. Ssit ɣef 'Talqayt >>' i telqayt." msgid "Open translation template" msgstr "Ldi taneɣruft n tsuqilt" #, 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." msgid "Validation results" msgstr "Igmaḍ n usentem" 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." msgid "The file was saved safely." msgstr "Afaylu yettwasekles s tɣellist." 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." 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." 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." 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." msgid "No problems with the translation found." msgstr "Ulac uguren di tsuqilt." #, 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." msgid "The translation is ready for use." msgstr "Tasuqilt tewjed i wseqdec." #, 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”." 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." msgid "Language of the translation isn’t set." msgstr "Tutlayt n tsuqilt ur tettusbadu ara." msgid "Set Language" msgstr "Sbadu tutlayt" 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)." 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." msgid "Language of the translation is the same as source language." msgstr "Tutlayt n tsuqilt kifkif-itt akked tutlayt taɣbalut." msgid "Fix Language" msgstr "Sɣti tutlayt" msgid "Fix language" msgstr "Seɣti tutlayt" 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." 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" msgid "Required header Plural-Forms is missing." msgstr "Inixf Plural-Forms i yettwasran ixuṣṣ." #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Tuccḍa n tseddast deg yinixf Plural-Forms (\"%s\")." msgid "Fix the Header" msgstr "Seɣti inixf" 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". #, 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.")" msgid "Review" msgstr "Cegger" msgid "Would you like to use English for source text?" msgstr "Tebɣiḍ ad tesqedceḍ taglizit i uḍris aɣbalu?" #, 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" msgid "Load English" msgstr "Sali-d taglizit" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Tasuqilt n: %d seg %d (%d %%)" #, c-format msgid "Remaining: %d" msgstr "Yeggra-d: %d" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d n tuccḍa" msgstr[1] "%d n tuccḍiwin" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d n unekcum" msgstr[1] "%d n yinekcumen" msgid " (unsaved)" msgstr " (ur yettwasekles ara)" msgid " (modified)" msgstr " (yettwabeddel)" #, c-format msgid "Failed to update translation memory: %s" msgstr "Aleqqem n tkatut n tsuqilt ur yeddi ara: %s" msgid "Remove same-as-source translations" msgstr "" msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" msgid "Keep" msgstr "Eǧǧ" msgid "Remove" msgstr "" msgid "Purge deleted translations" msgstr "Sfeḍ tisuqilin yettwakksen" msgid "Do you want to remove all translations that are no longer used?" msgstr "Tebɣiḍ ad tekkseḍ tisuqilin merra ur nettwaseqdac ara?" 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." msgid "Purge" msgstr "Sfeḍ" msgid "Copy from source text" msgstr "Nɣel seg weḍris aɣbalu" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "Sfeḍ tasuqilt" msgid "Clear Translation" msgstr "Sfeḍ tasuqilt" msgid "Edit comment" msgstr "Ẓreg awennit" msgid "Edit Comment" msgstr "Ẓreg awennit" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "Tummanin n tengalt" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "Tummanin n tengalt" msgid "Hide Sidebar" msgstr "Ffer afeggag n yidis" msgid "Show Sidebar" msgstr "Sken afeggag n yidis" msgid "Hide Status Bar" msgstr "Ffer afeggag n waddad" msgid "Show Status Bar" msgstr "Sken afeggag n waddad" msgid "String length in characters: translation | source" msgstr "Teɣzi n uzrar s yisekkilen: tasuqilt | aɣbalu" msgid "String length in characters" msgstr "Teɣzi n uzrar s yisekkilen" msgid "Source text" msgstr "Aḍris aɣbalu" msgid "Singular" msgstr "Asuf" msgid "Plural" msgstr "Asget" msgid "Translation" msgstr "Tasuqilt" msgid "Pre-translated" msgstr "Yettwasuqqel s uzwer" 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. msgid "Needs work" msgstr "Yesra amahil" 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." msgid "Create new translation" msgstr "Snulfu-d tasuqilt tamaynutt" 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 msgid "Source text ID" msgstr "ID n uḍris aɣbalu" msgid "Everything" msgstr "Akk" #, c-format msgid "Form %i" msgstr "Talɣa %i" #, c-format msgid "Form %i (unused)" msgstr "Seg %i (ur tettwaseqdac ara)" msgid "Zero" msgstr "Ilem" msgid "One" msgstr "Yiwen" msgid "Two" msgstr "Sin" msgid "Other" msgstr "Wayeḍ" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, c-format msgid "String context: %s" msgstr "" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #, c-format msgid "String identifier: %s" msgstr "" #, c-format msgid "%s Format" msgstr "Amasal %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "Amasal %s" #, c-format msgid "Translation — %s" msgstr "Tasuqilt — %s" msgid "ID" msgstr "ID" #, c-format msgid "Source text — %s" msgstr "Aḍris aɣbalu — %s" msgid "unknown language" msgstr "tutlayt tarussint" #, c-format msgid "Network error: %s (%d)" msgstr "" msgid "Unknown error" msgstr "" #, c-format msgid "Failed command: %s" msgstr "Taladna terreẓ: %s" msgid "Failed to merge gettext catalogs." msgstr "Tuccḍa deg wesmezdi n yikaramen gettext." msgid "Open in Editor" msgstr "Ldi deg wemaẓrag" msgid "Open in editor" msgstr "Ldi deg wemaẓrag" 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." msgid "No usage information" msgstr "Ulac talɣut n useqdec" #, 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" msgid "Source code not found" msgstr "Tangalt taɣbalut ur tettwaf ara" 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." msgid "File cannot be opened" msgstr "Afaylu ulamek ara yeldi" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "Poedit igguma ad ildi afaylu “%s”." msgid "Find" msgstr "Nadi" msgid "Replace" msgstr "Semselsi" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "Tinefrunin" msgid "Ignore case" msgstr "Ttu tajṛut n usekkil" msgid "Wrap around" msgstr "Qfel" msgid "Whole words only" msgstr "Awalen ummiden kan" msgid "Find in source texts" msgstr "Nadi deg yiḍrisen iɣbula" msgid "Find in translations" msgstr "Nadi di tsuqilin" msgid "Find in comments" msgstr "Nadi deg yiwenniten" msgid "Close" msgstr "Mdel" msgid "Replace &All" msgstr "Semselsi &akk" msgid "Replace &all" msgstr "Semselsi i &meṛṛa" msgid "&Replace" msgstr "Se&mselsi" msgid "< &Previous" msgstr "< &Ɣer deffir" msgid "&Next >" msgstr "Ɣer &sdat >" msgid "String to find" msgstr "Azrar ara tnadiḍ" msgid "Replacement string" msgstr "Izraren n usemselsi" #, c-format msgid "Cannot execute program: %s" msgstr "Ulamek aselkem n wahil: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "" msgid "Translation Language" msgstr "Tutlayt n tsuqilt" msgid "Language of the translation:" msgstr "Tutlayt n tsuqilt:" msgid "All strings" msgstr "Akk izriren" msgid "Couldn’t download Localazy project details." msgstr "" msgid "There was an error when uploading translations to Localazy." msgstr "" msgid "Projects" msgstr "Isenfaṛen" msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" msgid "Add Project" msgstr "Rnu asenfaṛ" msgid "Add project" msgstr "Rnu asenfaṛ" msgid "Poedit - Catalogs manager" msgstr "Poedit - Amsefrak n yikaramen" msgid "Edit…" msgstr "Ẓreg…" msgid "Create new translations project" msgstr "Snulfu-d asenfar amaynut n tsuqilin" msgid "Delete the project" msgstr "Kkes asenfar" msgid "Edit the project" msgstr "Ẓreg asenfar" msgid "Update all" msgstr "Leqqem Akk" msgid "Update all catalogs in the project" msgstr "Leqqem ikaramen merra n usenfar" msgid "Total" msgstr "Aɣrud" msgid "Untrans" msgstr "Ur yettwasuqqel ara" msgctxt "column/row header" msgid "Needs Work" msgstr "Yesra amahil" msgid "Errors" msgstr "Tuccḍiwin" msgid "Last modified" msgstr "Abeddel aneggaru" msgid "Select directory" msgstr "Fren akaram" msgid "Directories:" msgstr "Ikaramen:" msgid "" msgstr "" #, c-format msgid "Do you want to delete project “%s”?" msgstr "Tebɣiḍ ad tekseḍ asenfar “%s”?" msgid "Delete project" msgstr "Kkes asenfaṛ" msgid "Deleting the project will not delete any translation files." msgstr "Tukksa n usenfaṛ ur tettekkes ara ifuyla n tsuqilt." msgid "Confirmation" msgstr "Asentem" msgid "Update all catalogs in this project?" msgstr "Leqqem ikaramen merra n usenfar-a?" 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ṛ." msgid "Check for Updates…" msgstr "Nadi ileqman…" msgid "Catalogs Manager" msgstr "Amsefrak n yikaramen" msgid "&Preferences…" msgstr "Ismenyifen…" msgid "&Edit" msgstr "&Ẓreg" msgid "Undo" msgstr "Sefsex" msgid "Redo" msgstr "Err-d" msgid "Paste and Match Style" msgstr "Senṭeḍ s uḥraz n uɣanib" msgid "Delete" msgstr "Kkes" msgid "Spelling and Grammar" msgstr "Taɣdirawt akked tjerrumt" msgid "Show Spelling and Grammar" msgstr "Sken taɣdirawt akked tjerrumt" msgid "Check Document Now" msgstr "Senqed isemli tura" msgid "Check Spelling While Typing" msgstr "Selken taɣdirawt di lawan n tira" msgid "Check Grammar With Spelling" msgstr "Selken taɣdirawt akked tajerrumt" msgid "Correct Spelling Automatically" msgstr "Aseɣti awurman n teɣdirawt" msgid "Substitutions" msgstr "Isemselsiyen" msgid "Show Substitutions" msgstr "Sken yisemselsiyen" msgid "Smart Copy/Paste" msgstr "Anɣel/Asenṭeḍ amegzu" msgid "Smart Quotes" msgstr "Tuccar timegza" msgid "Smart Dashes" msgstr "Tijerriḍin timegza" msgid "Smart Links" msgstr "Iseɣwan imegza" msgid "Text Replacement" msgstr "Asemselsi n uḍris" msgid "Transformations" msgstr "Aselket" msgid "Make Upper Case" msgstr "Selket s asekkil ameqran" msgid "Make Lower Case" msgstr "Selket s asekkil amecṭuḥ" msgid "Capitalize" msgstr "Selket s asekkil ameqran" msgid "Speech" msgstr "Mmeslay" msgid "Start Speaking" msgstr "Bdu ameslay" msgid "Stop Speaking" msgstr "Ḥbes ameslay" msgid "&View" msgstr "Ta&muɣli" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Show Toolbar" msgstr "Sken afeggag n yifecka" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Customize Toolbar…" msgstr "Sagen afeggag n yifecka…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Enter Full Screen" msgstr "Ɛeddi s agdil aččuran" msgid "Window" msgstr "Asfaylu" msgid "Minimize" msgstr "Simẓi" msgid "Zoom" msgstr "Simɣur" msgid "Welcome to Poedit" msgstr "Ansuf ɣer Poedit" msgid "Bring All to Front" msgstr "Sɛeddi kulec ɣer uɣawas amezwaru" msgid "Information about the translator" msgstr "Isalan ɣef umsuqqel" msgid "Name:" msgstr "Isem:" msgid "Your Name" msgstr "Isem n tmagit-inek" msgid "Email:" msgstr "Imayl:" msgid "you@example.com" msgstr "kečč·kem@amedya.com" 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." msgid "Editing" msgstr "Asiẓreg" msgid "Automatically compile MO file when saving" msgstr "Asefsu awurman n ufaylu MO deg wesekles" msgid "Show summary after updating files" msgstr "Sken agzul ticki ttwaleqqemen yifuyla" msgid "Check spelling" msgstr "Senqed taɣdirawt" msgid "Always change focus to text input field" msgstr "Yalas ssermad taɣzut n usekcem n uḍris" 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." msgid "Appearance" msgstr "Timeẓri" msgid "Use custom list font:" msgstr "Seqdec tasefsit yugnen:" msgid "Use custom text fields font:" msgstr "Seqdec tasefsit yugnen i tɣezza n uḍris:" msgid "Change UI language" msgstr "Beddel tutlayt n ugrudem" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions msgid "(requires Windows 8 or newer)" msgstr "(yesra Windows 8 neɣ amaynut)" msgid "General" msgstr "Amatu" msgid "Use translation memory" msgstr "Seqdec takatut n tsuqilt" msgid "Manage…" msgstr "Sefrek…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "Mi ara yili uleqqem seg yiɣbula" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "taččart ittemcabin deg ufaylu" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "suqqel s uzwer si TM" 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." msgid "Stored translations:" msgstr "Tisuqilin yettwaḥerzen:" msgid "Database size on disk:" msgstr "Tiddi n uzadur n yisefka ɣef uḍebsi:" msgid "Import Translation Files…" msgstr "Kter ifuyla n tsuqilt…" msgid "Import translation files…" msgstr "Kter ifuyla n tsuqilt…" msgid "Import From TMX…" msgstr "Kter si TMX…" msgid "Import from TMX…" msgstr "Kter si TMX…" msgid "Export To TMX…" msgstr "Sifeḍ ar TMX…" 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). msgid "Reset" msgstr "Ales awennez" msgid "Select translation files to import" msgstr "Fren yifuyla n tsuqilt ara tketreḍ" msgid "Translation Memory" msgstr "Takatut n tsuqilt" msgid "Importing translations…" msgstr "Taktert n tsuqilin…" #, c-format msgid "Error loading translation file “%s”." msgstr "Tuccḍa deg usali n ufaylu n tsuqilt “%s”." msgid "Finalizing…" msgstr "Akemmel…" msgid "Select TMX files to import" msgstr "Fren yifuyla TMX ara tketreḍ" msgid "TMX Files" msgstr "Ifuyla TMX" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "Taktert n tkatut n tsuqilt si \"%s\" ur yeddi ara." msgid "Import error" msgstr "Tuccḍa deg ukter" msgid "Export as…" msgstr "Sifeḍ am…" msgid "Exporting translations…" msgstr "Asifeḍ n tsuqilin…" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "Taktert n tkatut n tsuqilt si \"%s\" ur yeddi ara." msgid "Export error" msgstr "Tuccḍa deg usifeḍ" msgid "Reset translation memory" msgstr "Ales awennez n tkatut n tsuqilt" msgid "Are you sure you want to reset the translation memory?" msgstr "D tidett tebɣiḍ ad talseḍ awennez n tkatut n tsuqilit?" 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. msgid "TM" msgstr "MT" 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." msgid "Custom Extractors:" msgstr "Imassafen yugnen:" msgid "Custom extractors:" msgstr "Imassafen udmawanen:" msgid "GNU gettext" msgstr "GNU gettext" 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ḍ)." msgid "Delete extractor" msgstr "Kkes amassaf" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "S tidett tebɣiḍ ad tekkseḍ amassaf “%s”?" msgid "Extractors" msgstr "Imassafen" msgid "Accounts" msgstr "Imiḍanen" msgid "Automatically check for updates" msgstr "Anadi awurman n yileqman" msgid "Include beta versions" msgstr "Seddu ileqman biṭa" 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." msgid "Updates" msgstr "Ileqman" 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." msgid "Line endings:" msgstr "Taggara n yizirigen:" msgid "Unix (recommended)" msgstr "Unix (yettwasemter)" msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "Tuɣalin s ajerriḍ di:" msgid "Preserve formatting of existing files" msgstr "Ḥrez amsal n yifuyla yellan" msgid "Advanced" msgstr "Anaẓi" msgid "Settings" msgstr "" msgid "Preparing strings…" msgstr "Aheggi n yizraren…" msgid "Pre-translating from translation memory…" msgstr "Tasuqilt tuzwirt si tkatut n tsuqilt…" #, 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" msgid "Pre-translating…" msgstr "Tasuqilt tuzwirt…" 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. msgid "Pre-translate" msgstr "Tasuqqilt tuzwirt" msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" msgid "Cannot pre-translate from unknown language." msgstr "" msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" msgid "Only fill in exact matches" msgstr "Aččaṛ kan ayen yemṣadan s tseddi" msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" msgid "Don’t mark exact matches as needing work" msgstr "Ur cerreḍ ara tisuqilin tiseddiyin d timewẓiyin" 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." 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." #, 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." 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ḍ." msgid "No entries could be pre-translated." msgstr "Ulac inekcumen i yzemren ad tusuqqelen s uzwer." 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." msgid "Cancelling…" msgstr "Asefsex…" msgid "Drag Folders or Files Here" msgstr "Zuɣer ikaramen neɣ ifuyla ɣer dagi" msgid "Drag folders or files here" msgstr "Zuɣer ikaramen neɣ ifuyla ɣer dagi" msgid "Add Folders…" msgstr "Rnu ikaramen…" msgid "Add folders…" msgstr "Rnu ikaramen…" msgid "Add Files…" msgstr "Rnu ifuyla…" msgid "Add files…" msgstr "Rnu ifuyla…" msgid "Add Wildcard…" msgstr "Rnu asekkil awsiyan…" 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) 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" msgid "Show in Explorer" msgstr "Sken deg wenaram" msgid "Show in Folder" msgstr "Beqqeḍ deg ukaram" msgid "Paths" msgstr "Iberdan" msgid "Excluded paths" msgstr "Iberdan ur nettekki ara" msgid "Advanced extraction settings" msgstr "Iɣewwaṛen inaẓiyen n tussfa" msgid "Extract notes for translators from:" msgstr "Kkes-d tilɣa i yimsuqqelen si:" msgid "Comments prefixed with:" msgstr "Iwenniten ibeddun s uzwir:" msgid "All comments" msgstr "Akk iwenniten" msgid "Additional xgettext flags:" msgstr "Inamalen-nniḍen n sgettxt:" msgid "Additional keywords" msgstr "Awalen yufraren imernanen" msgid "Name of the project the translation is for" msgstr "Isem n usenfar n tsuqilt" msgid "Team name and email address or URL" msgstr "Isem n terbaɛt akked tansa imayl neɣ URL" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "amedya. nplurals=2; plural=(n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (yettwasemter)" 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." msgid "Placeholders correctness" msgstr "" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "Tallunt yettwaḥeṛṛan “%s” txuṣṣ di tsuqilt." #, 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." msgid "Plural form translations" msgstr "Tisuqilin n talɣiwin n usget" msgid "Not all plural forms are translated." msgstr "Talɣiwin n usget ur ttwasuqqelent ara merra." msgid "Inconsistent upper/lower case" msgstr "Asekkil ameqran/asekkil amecṭuḥ ur mtawan ara" msgid "The translation should start as a sentence." msgstr "Tasuqilt isefk ad tebdu am tefyirt." msgid "The translation should start with a lowercase character." msgstr "Tasuqilt isefk ad tebdu s usekkil amecṭuḥ." msgid "Inconsistent whitespace" msgstr "Tallunt ur teǧhid ara" msgid "The translation doesn’t start with a space." msgstr "Tasuqilt ur tebdi ara s tallunt." 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." msgid "The translation is missing a newline at the end." msgstr "Ixuṣṣ wengaz n ujerriḍ di tagarra n tsuqilt." 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." msgid "The translation is missing a space at the end." msgstr "Txuṣṣ tallunt di taggara n tsuqilt." 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." msgid "Punctuation checks" msgstr "Asenqed n usenqeḍ" #, c-format msgid "The translation should end with “%s”." msgstr "Tasuqilt ilaq ad tfakk s “%s”." #, c-format msgid "The translation should not end with “%s”." msgstr "Tasuqilt ur ilaq ara ad tfakk s “%s”." #, 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”." msgid "Cloud" msgstr "" msgid "Clear Menu" msgstr "Sfeḍ umuɣ" msgid "Clear menu" msgstr "Sfeḍ umuɣ" msgid "Comment:" msgstr "Awennit:" msgid "Update" msgstr "Leqqem" msgid "&Delete" msgstr "&Kkes" msgid "Delete the comment" msgstr "Kkes awennit" msgid "Edit project" msgstr "Ẓreg asenfar" msgid "Project name:" msgstr "Isem n usenfar:" msgid "Browse" msgstr "Snirem" msgid "Add directory to the list" msgstr "Rnu akaram ɣer tebdart" msgid "OK" msgstr "Ih" msgid "&File" msgstr "Afa&ylu" msgid "&New…" msgstr "Amaynut…" msgid "New from &POT/PO file…" msgstr "Amaynut seg ufaylu &POT/PO…" msgid "New From &POT/PO File…" msgstr "Amaynut seg ufaylu &POT/PO…" msgid "&Open…" msgstr "&Ldi…" msgid "Open Recent" msgstr "Ldin melmi kan" msgid "Open recent" msgstr "Ldin melmi kan" msgid "Open cloud translation…" msgstr "" msgid "Open Cloud Translation…" msgstr "" msgid "&Start window" msgstr "Asfaylu n tazwara" msgid "&Start Window" msgstr "Asfaylu n tazwara" msgid "Catalogs &manager" msgstr "Amsefrak n yikaramen" msgid "Catalogs &Manager" msgstr "Amsefrak n yikaramen" msgid "&Close" msgstr "&Mdel" msgid "&Save" msgstr "&Sekles" msgid "Save &as…" msgstr "Sekles am…" msgid "Save &As…" msgstr "Sekles s am…" msgid "Compile to MO…" msgstr "Sefsu ɣer MO…" msgid "E&xport to HTML…" msgstr "" msgid "Check for updates…" msgstr "Nadi ileqman…" msgid "Settings…" msgstr "Iɣewwaren…" msgid "&Preferences" msgstr "Ismenyifen" msgid "E&xit" msgstr "Ff&eɣ" msgid "Quit" msgstr "Ffeɣ" msgid "Copy from singular" msgstr "Nɣel seg wasuf" msgid "Copy From Singular" msgstr "Nɣel seg wasuf" msgid "Translation needs &work" msgstr "Tasuqilt tesra amahil" msgid "Translation Needs &Work" msgstr "Tasuqilt tesra amahil" msgid "Edit &comment" msgstr "Ẓreg awennit" msgid "Edit &Comment" msgstr "&Ẓreg awennit" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "Isumar" msgid "&Find…" msgstr "Nadi…" msgid "Replace…" msgstr "Semselsi…" msgid "Find next" msgstr "Nadi uḍfir" msgid "Find previous" msgstr "Nadi uzwir" msgid "Find and Replace…" msgstr "Nadi semselsi…" msgid "Find Next" msgstr "Nadi uḍfir" msgid "Find Previous" msgstr "Nadi uzwir" msgid "Show string &ID" msgstr "Sken &ID n uzrar" msgid "Show String &ID" msgstr "Sken &ID n uzrar" msgid "Show warnings" msgstr "Sken ilɣa" msgid "Show Warnings" msgstr "Sken ilɣa" msgid "Sort by &file order" msgstr "Fren s umizzwer n ufaylu" msgid "Sort by &File Order" msgstr "Fren s umizzwer n ufaylu" msgid "Sort by &source" msgstr "Fren s uɣbalu" msgid "Sort by &Source" msgstr "Fren s uɣbalu" msgid "Sort by &translation" msgstr "Fren s tsuqilt" msgid "Sort by &Translation" msgstr "Fren s tsuqilt" msgid "&Group by context" msgstr "Se&grew s twennaḍt" msgid "&Group By Context" msgstr "Se&grew s twennaḍt" msgid "Entries with errors first" msgstr "Zwir inekcumen yesɛan tuccḍiwin" msgid "Entries with Errors First" msgstr "Zwir inekcumen yesɛan tuccḍiwin" msgid "&Untranslated entries first" msgstr "Zwir inekcumen ur nettwasuqqel ara" msgid "&Untranslated Entries First" msgstr "Zwir inekcumen ur nettwasuqqel ara" msgid "&Show code occurrences" msgstr "&Sken tummanin n tengalt" msgid "&Show Code Occurrences" msgstr "&Sken tummanin n tengalt" msgid "Show sidebar" msgstr "Sken afeggag n yidis" msgid "Show status bar" msgstr "Sken afeggag n waddad" msgid "&Translation" msgstr "&Tasuqilt" msgid "&Update from source code" msgstr "&Leqqem seg tengalt taɣbalut" msgid "&Update from Source Code" msgstr "&Leqqem seg tengalt aɣbalu" msgid "Update from &POT file…" msgstr "Leqqem seg ufaylu POT…" msgid "Update from &POT File…" msgstr "Leqqem seg ufaylu POT…" msgid "Sync with Crowdin" msgstr "Amtawi akked Crowdin" msgid "Pre-&translate…" msgstr "Tasuqilt tuzwirt…" msgid "&Validate translations" msgstr "Seɣbel tisuqilin" msgid "&Validate Translations" msgstr "Sentem tisuqilin" msgid "Remove Same-as-Source Translations" msgstr "" msgid "&Purge deleted translations" msgstr "Sfeḍ tisuqilin yettwakksen" msgid "&Purge Deleted Translations" msgstr "Sfeḍ tisuqilin yettwakksen" msgid "&Properties…" msgstr "Iraten…" msgid "&Go" msgstr "&Ddu" msgid "&Done and next" msgstr "Snes u kemmel" msgid "&Done and Next" msgstr "Snes u kemmel" msgid "Previously edited" msgstr "Yettwaẓreg yakan" msgid "Previously Edited" msgstr "Yettwaẓreg yakan" msgid "&Previous translation" msgstr "Tasu&qilt tuzwirt" msgid "&Previous Translation" msgstr "Tasu&qilt tuzwirt" msgid "&Next translation" msgstr "Tasuqilt tuḍfirt" msgid "&Next Translation" msgstr "Tasuqilt tuḍfirt" msgid "P&revious unfinished" msgstr "Uzwir ur nemmid ara" msgid "P&revious Unfinished" msgstr "Uzwir ur nemmid ara" msgid "Ne&xt unfinished" msgstr "Uḍfir ur nemmidt ara" msgid "Ne&xt Unfinished" msgstr "Uḍfir ur nemmid ara" msgid "Previous plural form" msgstr "Talɣa n usget tuzwirt" msgid "Previous Plural Form" msgstr "Talɣa n usget tuzwirt" msgid "Next plural form" msgstr "Talɣa n usget tuḍfirt" msgid "Next Plural Form" msgstr "Talɣa n usget tuḍfirt" msgid "&Online help" msgstr "Tallelt ɣef uẓeḍḍa" msgid "&Online Help" msgstr "Tallelt ɣef uẓeḍḍa" msgid "&GNU gettext manual" msgstr "Adlisfus n &GNU gettext" msgid "&GNU gettext Manual" msgstr "Adlisfus n &GNU gettext" msgid "&About Poedit" msgstr "Ɣef Poedit" msgid "&About" msgstr "Ɣef" msgid "Extractor setup" msgstr "Asbeddi n umassaf" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Tabdart n yiseɣzaf berzen s tenqiḍt ticcert (amedya. *.cpp;*.h) :" msgid "Invocation:" msgstr "Tiɣri:" msgid "Command to extract translations:" msgstr "Anezḍay i tussfa n tsuqilin:" 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)." msgid "An item in keywords list:" msgstr "Aferdis si tebdart n yismawen yufraren:" 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." msgid "An item in input files list:" msgstr "Aferdis di tebdart n yifuyla n unekcum:" #, 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." msgid "Source code charset:" msgstr "Tagrumma n yisekkilen n tengalt taɣbalut:" #, 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." msgid "Translation Properties" msgstr "Iraten n tsuqilt" msgid "Project name and version:" msgstr "Isem akked lqem n usenfar:" msgid "Language team:" msgstr "Tarbaɛt n tutlayt:" msgid "Plural forms:" msgstr "Talɣiwin n wesget:" msgid "Use default rules for this language" msgstr "Seqdec alugen n lexṣas n tutlayt-agi" msgid "Use custom expression" msgstr "Seqdec tanfalit yugnen" msgid "Learn about plural forms" msgstr "Ẓer ugar ɣef talɣiwin n wesget" msgid "Charset:" msgstr "Tagrumma n yisekkilen:" msgid "Advanced Extraction Settings…" msgstr "Iɣewwaṛen inaẓiyen n tussfa…" msgid "Advanced extraction settings…" msgstr "Iɣewwaṛen inaẓiyen n tussfa…" msgid "Translation properties" msgstr "Iraten n tsuqilt" msgid "Sources Paths" msgstr "Iberdan n yiɣbula" msgid "Sources paths" msgstr "Iberdan n yiɣbula" msgid "Extract text from source files in the following directories:" msgstr "Ssef aḍris seg yifuyla iɣbula deg yikaramen-agi:" msgid "Base path:" msgstr "Abrid azaduran:" msgid "Sources Keywords" msgstr "Awalen yufraren iɣbula" msgid "Sources keywords" msgstr "Awalen yufraren iɣbula" 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:" msgid "Also use default keywords for supported languages" msgstr "Seqdec daɣen awalen yufraren n lexṣas i tutlayin yettwadehlen" msgid "Learn about gettext keywords" msgstr "Issin ugar ɣef wawalen yufraren n gettext" msgid "Update summary" msgstr "Leqqem agzul" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" "Izraren-agi ttwafen deg uɣbalu maca ulac-iten deg ufaylu.\n" "Poedit ad ten-yernu ɣer ufaylu tura." msgid "New strings" msgstr "Izraren imaynuten" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" "Izraren-agi dayen ur llin ara di tengalt taɣbalut.\n" "Poedit ad ten-yekkes seg ufaylu tura." msgid "Obsolete strings" msgstr "Izraren yezrin" msgid "(0 new, 0 obsolete)" msgstr "(0 amaynut, 0 yezri)" msgid "Open" msgstr "" msgid "Open file" msgstr "Ldi afaylu" msgid "Save file" msgstr "Sekles afaylu" msgid "Validate" msgstr "Seɣbel" msgid "Check for errors in the translation" msgstr "Selken tuccḍiwin di tsuqilt" msgid "Update from code" msgstr "Leqqem seg tengalt" msgid "Update from Code" msgstr "Leqqem seg tengalt" msgid "Update from source code" msgstr "Leqqem seg tengalt taɣbalut" msgid "Sidebar" msgstr "Afeggag n yidis" 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. msgid "Previous source text" msgstr "Aḍris aɣbalu uzwir" 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." msgid "Notes for translators" msgstr "Tamawt i yemsuqqlen" msgid "Comment" msgstr "Awennit" msgid "Add comment" msgstr "Rnu awennit" msgid "Add Comment" msgstr "Rnu awennit" msgid "Delete From Translation Memory" msgstr "Kkes seg tkatut n tsuqilt" msgid "Delete from translation memory" msgstr "Kkes seg tkatut n tsuqilt" msgid "Translation suggestions" msgstr "Isumar n tsuqilt" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). 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). msgid "No Matches Found" msgstr "Ur d-nufi ara tinmeɣra" msgid "This string was found in Poedit’s translation memory." msgstr "Azrar-agi nufat-id di tkatut n tsuqilt n Poedit." msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" msgid "The TMX file is malformed." msgstr "Afaylu TMX ur yemsil ara akken iwata." msgid "No translations were found in the TMX file." msgstr "Ulac tisuqilin yettwafen deg ufaylu TMX." #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Azadur n yisefka n tkatut n tsuqil texseṛ: %s (%d)." #, c-format msgid "Translation memory error: %s (%d)." msgstr "Tuccḍa di tkatut n tsuqilt: %s (%d)." msgid "Cannot create temporary directory." msgstr "D awezɣi asnulfu n ukaram akudan." msgid "There are no translations. That’s unusual." msgstr "Ulac tisuqilin. Ayagi ulac-it di tnumi." msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "Translators typically use PO template files (POTs) prepared for them by the " "developer." msgstr "" "Inekcam i izzemren ad ttwasuqqlen ur ttwarnan ara s ufus ar unagraw Gettext, " "acu kan ttwakksen-d s wudem awurman\n" "seg tengalt taɣbalut. Akka, ad qqimen ttwaleqqemen, d iseddiyen.\n" "Imsuqqelen sseqdacen yifuyla s tneɣruft PO (POT) i d-heggan ineflayen." msgid "(Learn more about GNU gettext)" msgstr "(Issin ugar ɣef GNU gettext)" 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:" msgid "Update from POT" msgstr "Leqqem seg POT" msgid "Take translatable strings from an existing POT template." msgstr "Awi-d izraren ara yettwasuqqelen si tneɣruft POT yellan." 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:" msgid "Extract from sources" msgstr "Ssef seg yiɣbula" 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 #, c-format msgid "Version %s" msgstr "Lqem %s" msgid "Create new" msgstr "Snulfu-d amaynut" msgid "Create new translation from POT template." msgstr "Snulfu-d tasuqilt tamaynutt si tneɣruft POT." msgid "Browse files" msgstr "Snirem ifuyla" msgid "Open and edit translation files." msgstr "Ldi yerna siẓreg ifuyla n tsuqilt." msgid "Translate cloud project" msgstr "" msgid "Collaborate with other people online." msgstr "" msgid "Recent files" msgstr "Ifuyla n melmi kan" msgid "Sync" msgstr "Mtawi" 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") #, 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. #, c-format msgid "%s Preferences" msgstr "Ismenyifen n %s" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "Imeẓluyen" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "Ffer %s" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "Ffer wiyaḍ" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "Sken akk" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "Ffeɣ si %s" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "Ismenyifen…" msgid "Preferences..." msgstr "Ismenyifen..." #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "Melmi kan" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "Yettuɣal-d" msgid "&Apply" msgstr "Snes" msgid "Apply" msgstr "Snes" msgid "&Back" msgstr "Tuɣalin" msgid "Back" msgstr "Tuɣalin" msgid "&Cancel" msgstr "&Sefsex" msgid "&Clear" msgstr "&Sfeḍ" msgid "Clear" msgstr "Sfeḍ" msgid "Copy" msgstr "Nɣel" msgid "Cu&t" msgstr "&Gzem" msgid "Cut" msgstr "Gzem" msgid "Edit" msgstr "Ẓreg" msgid "&Quit" msgstr "Ffeɣ" msgid "Help" msgstr "Tallelt" msgid "&New" msgstr "&Amaynut" msgid "New" msgstr "Amaynut" msgid "&No" msgstr "&Ala" msgid "No" msgstr "Ala" msgid "&OK" msgstr "&IH" msgid "Open…" msgstr "Ldi…" msgid "&Open..." msgstr "&Ldi..." msgid "Open..." msgstr "Ldi..." msgid "&Paste" msgstr "Sen&ṭeḍ" msgid "Paste" msgstr "Senṭeḍ" msgid "Preferences" msgstr "Ismenyifen" msgid "&Redo" msgstr "Err-&d" msgid "Refresh" msgstr "Sismeḍ" msgid "&Save as" msgstr "&Sekles am" msgid "Save as" msgstr "Sekles am" msgid "Select &All" msgstr "&Fren akk" msgid "Select All" msgstr "Fren akk" msgid "&Undo" msgstr "Se&fsex" msgid "&Yes" msgstr "&Ih" msgid "Yes" msgstr "Ih" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Kcem" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "Asawen" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "Akessar" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "Azelmaḍ" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "Ayfus" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "shift" poedit-3.5/locales/is.mo0000644000175100001770000016527314664354153012214 00000000000000|+: : :&:?:<S::J:g: V;`; o;y; ;;;;;;;;;;;;;;<<<0<B<H<M<U<]<o<<< < <<<< <<<<==0=L=R=X=a=g=p== = = ====>>7>N>e>k>p>>>>>> ? ???'?0? 4? @? L?Y? h?t? ? ?? ?? ???@@&@F@c@@ @ @1@@'@A.A HASA7YA6AA)AB B]"BB<BDB$C:C ACNCC C"CD+"D)ND xDDDDDDDDEE#4EXEmE|E EE EEEEEE%EF +FLFTF]FuF FF/F FkFXG]GpGGGG-G1G.H GHRH)iHH HYHI!I&I9ILIaIeI|IIIIIII;J CJ'PJ^xJLJ?$K dK rKK*KKK"K5K.LILdLjL}L L L L L LLLLLLLfMlMMuM(N?NRN"dNN NNN N NNN0N'OAO#VO<zO"OO OO*P03P!dP'PPPP(PTQ fQtQ yQ QQQQQ Q Q Q RR!R0RJRRRcR lRxR RRR R RRRRRRSz/TT TTT TT U2(U[UuU|UUU UU U U V!V&V;^D^Y^n^^^._4_J_=P__1__n_E[```;` ` aa@,amacb,#c,Pc}c cc2c*c ddwdj$e eeee%ee ff3fEfWf qffffffff8f g gg$g ,g 8g DgRg"Yg"|gg g gg g(ghhz'hhhhh h h h hh h i i i ,i 8iCi^ioi"iiii i ij jj$j -j:jTjdjtj j jjjj jjj!k *k8k@kHkQk Ykgkkkkkk k k kk ll.lBlRlgl|lmm 4m@mOmbm smm mmKmmn n%n:nMncn1nn n nn=ioo'p,p(>pgp op}p+pp p8p" q/q@qrCr8brrs8*t1ctRtctQLuu'u:ulvPv-vCwALwKw0w. x:x!x)x-y+Cy8oyCyuy,bzLz;z]{v{Z{gW|J|c }[n}o}:~7~m_[HN^Xp ف72("[~~łqDɃRVj o ȄЄӄ ڄ"$-F_p<Ѕ #$@eˆ#V cz ч. ;GPhHl5m7Y 3aω16;?\.a ͊ 1J!Z| ' 1!>`7wElu~  ŎҎێ #-CY_u ҏ׏  )=N_o  ɐԐ  '3Niˑӑؑ $BXw  ʒ <WmǓ "@"`7'$! Fgn9u;#-= FoSÖHՖG)f ht. -Ә!#>Wp% (͙+"!=_zɚܚ )2"I l w"Λ; (5Ĝ˜ߜ$9B8|ҝ2".QmbО֞ޞ.5SYs4ܟ f;F@ * 5@4Q5##:BY`sĢߢ ʣ4V)&8Nd5yǥ*ݥ7@_ t*:/*+V\v)c + 1 >Jaw Ȩר , 4@ HT[ co+֩P9Oe7Ԭ۬0&? \ fs|;%.> OZ j Ʈ<&H5~7)a{5ʰ  4'\bu ϱܲ'8IM.gc)<>*{$ô(19KP)D!n !ݶ  &3NV ^hoW]u7~2ȸlm Qk{ 8Cܺ & "2U e p*z"Ƚؽkpc s"˿ۿ +C T^g G  *: J T1_1  % 8D`  ) 4 ? IV g s # 2- KWk {  ! 4EZj'    &0@`u   #;TkPn e~ / ? L ZdBzB "  ##+G s >0  K4C8-S^G`)%8Ohd VJw=E1F$x,,)Y.((>C/V$<{n'rs)W~ 1cv'o  /O hr 33"9 \}~;pv # -).W ,8WM#&$="T'w/_/ DN gs!-$4KHO>{ES ,] cos0 ()Cbh{ 45nCv#=ld B@Twa QjqO 91B)aT'ZSFQYu>"/VJZsG6*[ar`^;XyVb?' <IL:x%AMZ\W88O,*d0)i{J-yK|]:c%}oo0][-Pg6YS&r(\p@X(tM?iE=eD"OU|53 w  fj,#32H 4[ pk {qke;mpgl16U85:`, +Y^L9$qz2fGu(A7N4!d0DNt{F<x_+7vX)nKG+>&9m3 LeUIN Iy E"nsk/<W>PhrVvT]cQmuR$bjD !_@xEl%WK-_7MCwbz/|gcAB` zh~?SC^*tf=\h!H'P#RiF&;$H1~.2 RsJo}.} .~ (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd AccountAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add accountAdd 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 languagesAlt+Always 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 errorCrowdin is an online localization management platform and collaborative translation tool.Ctrl+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 againDownDownloading 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:EnterEnter 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 loading translation file “%s”.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export errorExport 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…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)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport from TMX…Import translation files…Importing translation memory from “%s” 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 CrowdinLeftLine %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 translations were found in the TMX file.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKObsolete stringsOneOnly 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 translation templateOpen...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 translationsQuitQuit %sReading file content failed with the following error: %sRecentRecent 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 FinderReviewRightSaveSave &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 languageServicesSet LanguageSet languageSettingsSettings…Shift+Show AllShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow summary after updating filesShow 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.These strings are no longer in the source code. Poedit will remove them from the file now.These strings were found in the sources but were not in the file. Poedit will add them to the file now.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 entries in the file are probably incorrect.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 errorUntransUpUpdateUpdate 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 the file failed. Click on 'Details >>' for details.Updating 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown 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: 2024-08-30 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 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ð&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á(0 nýjar, 0 úreltar)(Læra meira um GNU gettext)(Nýtt: %i, úrelt: %i)(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ð notandaaðgangiBæta við athugasemdBæta við skrám…Bæta við möppum…Bæta við verkefniBæta við algildistákni…Bæta við notandaaðgangiBæ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álAlt+Ávallt setja virkni á innsláttarreitAtriði í lista yfir inntaksskrár:Atriði í lista yfir stikkorð:ÚtlitVirkjaErtu 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 staðfærslu- og þýðingakerfi á netinu, sem hjálpar til við samstarf þýðenda og umsýslu.Ctrl+&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.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 afturNiðurSæ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:EnterFylla 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ð hlaða inn þýðingaskrá: “%s”.Villa við að opna skráVilla við að vista skráVilla við að hlaða inn XLIFF-skrá: %sVillurAlltSlóðir sem á að sleppaFlytja út í TMX…Flytja út sem…Villa í útflutningiFlytja út í HTML…Flytja út í TMX…Ú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…Uppsetning þáttaraÞáttararMislukkuð skipun: %sGat ekki átt samskipti við Poedit-ferli.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.Geng frá…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ð)AlgengtGNU gettextAlmenntHTML skrárHjálpFela %sFela annaðFela 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…Villa í innflutningiFlytja inn úr TMX…Flytja inn þýðingaskrár…Innflutningur þýðingaminnis frá “%s” 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:JSON-þýð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 CrowdinVinstriLí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ýtt úr &POT/PO skrá…Nýir strengirNæ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 þýðingar fundust í TMX-skránni.Engar upplýsingar um notkunEkki eru öll fleirtöluform þýdd.Ekki leyfilegt, skráðu þig aftur inn.Minnispunktar fyrir þýðendurÍ lagiÚreltir strengirEinnEinungis 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 sniðmát þýðingarOpna...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ættaHætta í %sMistókst að lesa efni skrárinnar með eftirfarandi villumeldingu: %sNýlegtNýlegar skrárEndurtakaEndurlesaEndurlesa skráEndurlesa skráEftir: %dFjarlægjaFjarlægja þýðingar sem eru eins og í upprunaFjarlægja þýðingar sem eru eins og í upprunaSkipta ú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 í FinderYfirfaraHægriVistaVist&a sem...Vist&a sem...Vista samtVista samtVista semVista sem…Vista breytingarVista skrá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ð þittÞjónusturSettu inn tungumálVeldu tungumálStillingarStillingar…Shift+Birta alltBirta 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 samantekt eftur uppfærslu skráaBirta 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 strengÚ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.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.Þessir strengir eru ekki lengur í upprunaskrám Poedit mun nú fjarlægja þessa strengi úr þýðingaskránni.Þessir strengir fundust í kóða, en fundust ekki í þýðingaskrá Poedit mun nú bæta við þessum strengjum.Þ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 þýðingarFærslur í þýðingaskránni eru líklega rangar.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Ómeðhöndlað frávik kom upp: %sUnix (mælt er með þessu)Óþekkt Crowdin-villa.Óþekkt villaÓþýttUppUppfæraUppfæ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ærsla á þýðingaskrá mistókst. Ýttu á 'Meira>>' fyrir frekari upplýsingar.Uppfæ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 %sBíð eftir auðkenningu…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árJáÞú 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átturaltÞarfnast lagfæringactrlekki eyða bráðabirgðaskrám (fyrir aflúsun)t.d. nplurals=2; plural=(n > 1);nota loðna þýðingu í skráfara á atriði á tilteknu línunúmerimeðhöndla poedit:// URIforþýða úr þýðingaminnishiftóþekkt tungumálóstudd útgáfa (%s)þú@dæmi.is“%s" er ógild POT skrá.poedit-3.5/locales/pa.po0000644000175100001770000022322414664354154012174 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "ਇਹ ਸੂਚਨਾ ਸੁਨੇਹਾ ਓਹਲੇ ਕਰੋ" msgid "Don’t Show Again" msgstr "ਮੁੜ ਨਾ ਦਿਖਾਓ" msgid "Don’t show again" msgstr "ਮੁੜ ਨਾ ਦਿਖਾਓ" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(ਨਵੇਂ: %i, ਬਰਤਰਫ਼: %i)" msgid "Collecting source files…" msgstr "ਸਰੋਤ ਫ਼ਾਈਲਾਂ ਨੂੰ ਇਕੱਠਾ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…" msgid "Extracting translatable strings…" msgstr "ਅਨੁਵਾਦ ਕਰਨਯੋਗ ਸਤਰਾਂ ਕੱਢੀਆਂ ਜਾ ਰਹੀਆਂ ਹਨ…" msgid "Failed to load file with extracted translations." msgstr "ਕੱਢੇ ਗਏ ਅਨੁਵਾਦਾਂ ਵਾਲੀ ਫ਼ਾਈਲ ਲੋਡ ਕਰਨਾ ਅਸਫ਼ਲ ਰਿਹਾ।" msgid "Merging differences…" msgstr "ਫ਼ਰਕਾਂ ਨੂੰ ਮਿਲਾਇਆ ਜਾ ਰਿਹਾ ਹੈ…" msgid "Updating translations" msgstr "ਅਨੁਵਾਦ ਅੱਪਡੇਟ ਕੀਤੇ ਜਾ ਰਹੇ ਹਨ" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "ਫ਼ਾਈਲ “%s” ਖੋਲ੍ਹੀ ਨਹੀਂ ਜਾ ਸਕੀ ਹੈ।" msgid "Invalid file" msgstr "ਗਲਤ ਫ਼ਾਈਲ" #, c-format msgid "Malformed header: “%s”" msgstr "ਨੁਕਸਦਾਰ ਸਿਰਲੇਖ: “%s”" msgid "PO Translation Files" msgstr "PO ਅਨੁਵਾਦ ਫਾਈਲਾਂ" msgid "POT Translation Templates" msgstr "POT ਅਨੁਵਾਦ ਟੈਂਪਲੇਟ" msgid "XLIFF Translation Files" msgstr "XLIFF ਅਨੁਵਾਦ ਫ਼ਾਈਲਾਂ" msgid "JSON Translation Files" msgstr "JSON ਅਨੁਵਾਦ ਫ਼ਾਈਲਾਂ" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "ਫਲੱਟਰ ਅਨੁਵਾਦ ਫ਼ਾਈਲਾਂ" msgid "All Translation Files" msgstr "ਸਾਰੀਆਂ ਅਨੁਵਾਦ ਫ਼ਾਇਲਾਂ" msgid "The file is in a format not recognized by Poedit." msgstr "ਫਾਇਲ ਦਾ ਫਾਰਮੈਟ ਅਜਿਹਾ ਹੈ, ਜਿਸ ਨੂੰ ਪੋ-ਐਡਿਟ ਪਛਾਣਦਾ ਨਹੀਂ ਹੈ।" msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" "ਇਹ JSON ਫ਼ਾਈਲ ਅਨੁਵਾਦ ਵਾਲੀ ਫ਼ਾਈਲ ਨਹੀਂ ਹੈ ਅਤੇ ਇਸ ਦਾ ਸੰਪਾਦਨ Poedit ਵਿੱਚ ਨਹੀਂ ਕੀਤਾ ਜਾ " "ਸਕਦਾ।" #, c-format msgid "Reading file content failed with the following error: %s" msgstr "ਅੱਗੇ ਦਿੱਤੀ ਗੜਬੜ ਕਰਕੇ ਫ਼ਾਈਲ ਦੀ ਸਮੱਗਰੀ ਨੂੰ ਪੜ੍ਹਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ: %s" #, c-format msgid "" "File “%s” is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "ਫ਼ਾਈਲ “%s” ਸਿਰਫ਼ ਪੜ੍ਹਨ ਲਈ ਹੈ ਅਤੇ ਸੰਭਾਲੀ ਨਹੀਂ ਜਾ ਸਕਦੀ।\n" "ਇਸ ਨੂੰ ਕਿਸੇ ਵੱਖਰੇ ਨਾਂ ਨਾਲ ਸੰਭਾਲੋ।" #, c-format msgid "Couldn’t save file %s." msgstr "%s ਫਾਈਲ ਸੰਭਾਲੀ ਨਹੀਂ ਜਾ ਸਕੀ।" msgid "Screenshots:" msgstr "ਸਕਰੀਨਸ਼ਾਟ:" #, c-format msgid "%i line of file “%s” was not loaded correctly." msgid_plural "%i lines of file “%s” were not loaded correctly." msgstr[0] "" msgstr[1] "ਫ਼ਾਈਲ “%s” ਦੀਆਂ %i ਕਤਾਰਾਂ ਸਹੀ ਤਰ੍ਹਾਂ ਲੋਡ ਨਹੀਂ ਹੋਈਆਂ।" #, c-format msgid "Line %d of file “%s” is corrupted (not valid %s data)." msgstr "ਫ਼ਾਈਲ “%2$s” ਦੀ ਕਤਾਰ %1$d ਵਿੱਚ ਖਰਾਬੀ ਹੈ (ਵਾਜਬ %3$s ਡਾਟਾ ਨਹੀਂ)।" msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "ਖਰਾਬ PO ਫ਼ਾਈਲ: ਇੱਕਵਚਨ ਕਿਸਮ msgstr ਨੂੰ msgid_plural ਨਾਲ ਇਕੱਠੇ ਵਰਤਿਆ" msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "ਖਰਾਬ PO ਫ਼ਾਈਲ: ਬਹੁਵਚਨ ਕਿਸਮ msgstr ਨੂੰ msgid_plural ਤੋਂ ਬਿਨਾਂ ਵਰਤਿਆ" msgid "Couldn’t load the file, it is probably damaged." msgstr "ਫ਼ਾਈਲ ਨੂੰ ਲੋਡ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ ਸ਼ਾਇਦ ਇਹ ਖ਼ਰਾਬ ਹੈ।" msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "ਫ਼ਾਈਲ ਲੋਡ ਕਰਨ ਵਿੱਚ ਗਲਤੀਆਂ ਸਨ। ਨਤੀਜੇ ਵਜੋਂ ਸ਼ਾਇਦ ਕੁਝ ਡਾਟਾ ਗੁੰਮ ਜਾਂ ਖਰਾਬ ਹੋਵੇ।" msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "ਫਾਈਲ ਨੂੰ ਸਹੀ ਤਰ੍ਹਾਂ ਫਾਰਮੇਟ ਕਰਨ ਵੇਲੇ ਖ਼ਾਮੀ ਆਈ (ਪਰ ਇਹ ਠੀਕ ਤਰ੍ਹਾਂ ਸੰਭਾਲੀ ਗਈ)।" #, 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 ਵਿੱਚ ਸੰਭਾਲੀ ਹੋਣ ਕਰਕੇ ਸੈਟਿੰਗ ਨੂੰ ਉਸ ਮੁਤਾਬਕ ਸੋਧਿਆ ਗਿਆ।" msgid "Error saving file" msgstr "ਫ਼ਾਈਲ ਸੰਭਾਲਣ ਵੇਲੇ ਖਾਮੀ" #, c-format msgid "“%s” is not a valid POT file." msgstr "“%s” ਜਾਇਜ਼ POT ਫਾਈਲ ਨਹੀਂ ਹੈ।" #, c-format msgid "Error while loading XLIFF file: %s" msgstr "XLIFF ਫ਼ਾਈਲ ਨੂੰ ਲੋਡ ਕਰਨ ਵੇਲੇ ਗੜਬੜ ਹੋਈ: %s" #, c-format msgid "unsupported version (%s)" msgstr "ਅਸਮਰਥਿਤ ਵਰਜਨ (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML msgid "Broken markup in translation string." msgstr "ਅਨੁਵਾਦ ਸਤਰ ਵਿੱਚ ਖਰਾਬ ਮਾਰਕਅੱਪ।" msgid "(Use default language)" msgstr "(ਮੂਲ ਭਾਸ਼ਾ ਵਰਤੋਂ)" msgid "Language selection" msgstr "ਭਾਸ਼ਾ ਚੋਣ" msgid "Select your preferred language" msgstr "ਆਪਣੀ ਪਸੰਦ ਦੀ ਭਾਸ਼ਾ ਚੁਣੋ" msgid "You must restart Poedit for this change to take effect." msgstr "ਤੁਹਾਨੂੰ ਤਬਦੀਲੀਆਂ ਲਾਗੂ ਕਰਨ ਲਈ Poedit ਨੂੰ ਮੁੜ ਚਾਲੂ ਕਰਨਾ ਪਵੇਗਾ।" msgid "Add Account" msgstr "ਖਾਤਾ ਜੋੜੋ" msgid "Add account" msgstr "ਖਾਤਾ ਜੋੜੋ" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "%s ਬਾਰੇ ਹੋਰ ਜਾਣੋ" msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" msgid "How does cloud sync work?" msgstr "ਕਲਾਉਡ ਸਿੰਕ ਕਿਵੇਂ ਕੰਮ ਕਰਦਾ ਹੈ?" msgid "Account" msgstr "ਖਾਤਾ" msgid "(not signed in)" msgstr "(ਸਾਈਨ ਇਨ ਨਹੀਂ ਹੈ)" msgid "File" msgstr "ਫ਼ਾਈਲ" msgid "Open cloud translation" msgstr "ਕਲਾਉਡ ਅਨੁਵਾਦ ਖੋਲ੍ਹੋ" msgid "Manage accounts" msgstr "ਖਾਤਿਆਂ ਦਾ ਇੰਤਜ਼ਾਮ ਕਰੋ" msgid "Project:" msgstr "ਪਰੋਜੈਕਟ:" msgid "Language:" msgstr "ਭਾਸ਼ਾ:" msgid "Sign in to Cloud Account" msgstr "ਕਲਾਉਡ ਖਾਤੇ ਵਿੱਚ ਸਾਈਨ ਇਨ ਕਰੋ" msgid "Sign in to cloud account" msgstr "ਕਲਾਉਡ ਖਾਤੇ ਵਿੱਚ ਸਾਈਨ ਇਨ ਕਰੋ" msgid "No translation projects listed in your account." msgstr "ਤੁਹਾਡੇ ਖਾਤੇ ਵਿੱਚ ਕੋਈ ਅਨੁਵਾਦ ਪ੍ਰੋਜੈਕਟ ਨਹੀਂ ਹੈ।" msgid "Downloading latest translations…" msgstr "ਤਾਜ਼ੇ ਅਨੁਵਾਦਾਂ ਨੂੰ ਡਾਊਨਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #, c-format msgid "Sign in to %s" msgstr "%s ਵਿੱਚ ਸਾਈਨ ਇਨ ਕਰੋ" msgid "Syncing" msgstr "ਸਿੰਕ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s…" msgstr "ਅਨੁਵਾਦ %s ਉੱਤੇ ਅੱਪਲੋਡ ਕੀਤੇ ਜਾ ਰਹੇ ਹਨ…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s failed." msgstr "ਅਨੁਵਾਦ %s ਉੱਤੇ ਅੱਪਲੋਡ ਕਰਨ ਥਈ ਅਸਫ਼ਲ ਹੈ।" msgid "Syncing error" msgstr "ਸਿੰਕ ਕਰਨ ਵਿੱਚ ਗਲਤੀ" msgid "Add" msgstr "ਜੋੜੋ" msgid "Unknown Crowdin error." msgstr "ਅਣਪਛਾਤੀ Crowdin ਗਲਤੀ ਹੈ।" msgid "Not authorized, please sign in again." msgstr "ਅਧਿਕਾਰ ਨਹੀਂ ਹੈ, ਦੁਬਾਰਾ ਸਾਈਨ ਇਨ ਕਰੋ।" msgid "Downloading translations is disabled in this project." msgstr "ਇਸ ਪ੍ਰੋਜੈਕਟ ਦੇ ਅਨੁਵਾਦ ਡਾਊਨਲੋਡ ਕਰਨ ਦੀ ਸੁਵਿਧਾ ਬੰਦ ਹੈ।" msgid "Sign In" msgstr "ਸਾਈਨ ਇਨ" msgid "Sign in" msgstr "ਸਾਈਨ ਇਨ" msgid "Sign Out" msgstr "ਸਾਈਨ ਆਉਟ" msgid "Sign out" msgstr "ਸਾਈਨ ਆਉਟ" msgid "Learn more about Crowdin" msgstr "Crowdin ਬਾਰੇ ਹੋਰ ਜਾਣੋ" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" "Crowdin ਆਨਲਾਈਨ ਲੋਕਾਲਾਈਜ਼ੇਸ਼ਨ ਇੰਤਜ਼ਾਮ ਕਰਨ ਵਾਲਾ ਮੰਚ ਅਤੇ ਮਿਲਕੇ ਅਨੁਵਾਦ ਕਰਨ ਦਾ ਸਾਧਨ ਹੈ।" msgid "Waiting for authentication…" msgstr "ਪਰਮਾਣਕਿਤਾ ਦੀ ਉਡੀਕ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ…" msgid "Updating user information…" msgstr "ਵਰਤੋਂਕਾਰ ਜਾਣਕਾਰੀ ਨੂੰ ਅੱਪਡੇਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…" msgid "Sign in to Crowdin" msgstr "Crowdin ਵਿੱਚ ਦਾਖਲ ਹੋਵੋ" msgid "Syncing with Crowdin failed." msgstr "Crowdin ਨਾਲ ਸਮਕਾਲੀਕਰਨ ਅਸਫਲ ਰਿਹਾ।" msgid "Crowdin error" msgstr "Crowdin ਗਲਤੀ" msgid "Uploading translations…" msgstr "ਅਨੁਵਾਦਾਂ ਨੂੰ ਅੱਪਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…" msgid "&Copy" msgstr "ਕਾਪੀ ਕਰੋ(&C)" msgid "Learn more" msgstr "ਹੋਰ ਜਾਣੋ" msgid "&Help" msgstr "ਮਦਦ(&H)" msgid "MO files can’t be directly edited in Poedit." msgstr "MO ਫ਼ਾਈਲਾਂ ਦਾ Poedit ਵਿੱਚ ਸਿੱਧੇ ਸੰਪਾਦਨ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ।" msgid "Error opening file" msgstr "ਫਾਈਲ ਖੋਲ੍ਹਣ ਦੌਰਾਨ ਗਲਤੀ" msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "ਕਿਰਪਾ ਕਰਕੇ ਇਸਦੀ ਬਜਾਏ ਸਬੰਧਿਤ PO ਫ਼ਾਈਲ ਖੋਲ੍ਹ ਕੇ ਸੰਪਾਦਨ ਕਰੋ। ਇਸਦੇ ਸੰਭਾਲੇ ਜਾਣ 'ਤੇ MO ਫ਼ਾਈਲ ਵੀ " "ਅੱਪਡੇਟ ਹੋ ਜਾਵੇਗੀ।" msgid "don’t delete temporary files (for debugging)" msgstr "ਅਸਥਾਈ ਫ਼ਾਈਲਾਂ ਨਾ ਮਿਟਾਓ (ਡੀਬੱਗਿੰਗ ਲਈ)" msgid "handle a poedit:// URI" msgstr "poedit:// URI ਹੈਂਡਲ ਕਰੋ" msgid "go to item at given line number" msgstr "ਦਿੱਤੇ ਸਤਰ ਨੰਬਰ 'ਤੇ ਆਈਟਮ 'ਤੇ ਜਾਓ" msgid "Failed to communicate with Poedit process." msgstr "Poedit ਪ੍ਰਕਿਰਿਆ ਨਾਲ ਸੰਚਾਰ ਨਹੀਂ ਹੋਇਆ।" #, c-format msgid "Unhandled exception occurred: %s" msgstr "ਨਾ-ਸਾਂਭਣਯੋਗ ਅਪਵਾਦ: %s" msgid "Select translation template" msgstr "ਅਨੁਵਾਦ ਟੈਂਪਲੇਟ ਚੁਣੋ" msgid "Select translation file" msgstr "ਅਨੁਵਾਦ ਫਾਈਲ ਚੁਣੋ" msgid "Poedit is an easy to use translation editor." msgstr "Poedit ਵਰਤਣ ਲਈ ਸੌਖਾ ਅਨੁਵਾਦ ਸੰਪਾਦਕ ਹੈ।" msgid "You can’t drop more than one file on Poedit window." msgstr "ਤੁਸੀਂ Poedit ਵਿੰਡੋ ਵਿੱਚ ਇੱਕ ਤੋਂ ਵੱਧ ਫ਼ਾਈਲਾਂ ਨਹੀਂ ਸੁੱਟ ਸਕਦੇ।" #, c-format msgid "File “%s” is not a translation file." msgstr "ਫਾਈਲ “%s” ਅਨੁਵਾਦ ਵਾਲੀ ਫਾਈਲ ਨਹੀਂ ਹੈ।" #, c-format msgid "File “%s” doesn’t exist." msgstr "ਫ਼ਾਈਲ “%s” ਮੌਜੂਦ ਨਹੀਂ ਹੈ।" 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". #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "ਸ਼ਬਦ-ਜੋੜ ਜਾਂਚ ਬੰਦ ਹੈ, ਕਿਉਂਕਿ %s ਦਾ ਸ਼ਬਦਕੋਸ਼ ਸਥਾਪਤ ਨਹੀਂ ਕੀਤਾ ਗਿਆ ਹੈ।" msgid "Install" msgstr "ਇੰਸਟਾਲ ਕਰੋ" #, c-format msgid "The file “%s” has been changed by another application." msgstr "ਫ਼ਾਈਲ “%s” ਨੂੰ ਕਿਸੇ ਹੋਰ ਐਪਲੀਕੇਸ਼ਨ ਨੇ ਬਦਲ ਦਿੱਤਾ ਹੈ।" msgid "Reload file" msgstr "ਫ਼ਾਈਲ ਮੁੜ-ਲੋਡ ਕਰੋ" msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "ਕੀ ਤੁਸੀਂ ਡਿਸਕ ਤੋਂ ਫ਼ਾਈਲ ਮੁੜ-ਲੋਡ ਕਰਨੀ ਹੈ? ਅਜਿਹਾ ਕਰਨ ਨਾਲ Poedit ਵਿੱਚ ਨਾ-ਸੰਭਾਲੇ ਸੰਪਾਦਨ ਖੁੰਝ " "ਜਾਣਗੇ।" msgid "Ignore" msgstr "ਅਣਗੌਲਿਆ ਕਰੋ" msgid "Reload File" msgstr "ਫਾਈਲ ਮੁੜ-ਲੋਡ ਕਰੋ" msgid "The file has been modified. Do you want to save changes?" msgstr "ਫ਼ਾਈਲ ਸੋਧੀ ਗਈ। ਕੀ ਤੁਸੀਂ ਤਬਦੀਲੀਆਂ ਸੰਭਾਲਣੀਆਂ ਹਨ?" msgid "Save changes" msgstr "ਤਬਦੀਲੀਆਂ ਸੰਭਾਲੋ" msgid "Your changes will be lost if you don’t save them." msgstr "ਜੇ ਤੁਸੀਂ ਤਬਦੀਲੀਆਂ ਨਹੀਂ ਸੰਭਾਲਦੇ ਤਾਂ ਉਹ ਖੁੰਝ ਜਾਣਗੀਆਂ।" msgid "Save" msgstr "ਸੰਭਾਲੋ" msgid "Do&n’t save" msgstr "ਨਾ ਸੰਭਾਲੋ(&n)" msgid "Don’t Save" msgstr "ਨਾ ਸੰਭਾਲੋ" msgid "The changes made by the other application will be lost if you save." msgstr "ਜੇਕਰ ਤੁਸੀਂ ਸੰਭਾਲਦੇ ਹੋ, ਤਾਂ ਕਿਸੇ ਹੋਰ ਐਪਲੀਕੇਸ਼ਨ ਵੱਲੋਂ ਕੀਤੀਆਂ ਤਬਦੀਲੀਆਂ ਖੁੰਝ ਜਾਣਗੀਆਂ।" msgid "Cancel" msgstr "ਰੱਦ ਕਰੋ" msgid "Save Anyway" msgstr "ਫ਼ਿਰ ਵੀ ਸੰਭਾਲੋ" msgid "Save anyway" msgstr "ਫ਼ਿਰ ਵੀ ਸੰਭਾਲੋ" msgid "Save as…" msgstr "…ਵਜੋਂ ਸੰਭਾਲੋ" msgid "Compile to…" msgstr "ਇੱਥੇ ਕੰਪਾਇਲ ਕਰੋ…" msgid "Compiled Translation Files" msgstr "ਕੰਪਾਇਲ ਕੀਤੀਆਂ ਅਨੁਵਾਦ ਫਾਈਲਾਂ" msgid "Export to HTML…" msgstr "" msgid "HTML Files" msgstr "HTML ਫਾਈਲਾਂ" #, c-format msgid "In: %s" msgstr "ਇਸ ਵਿੱਚ: %s" msgid "Source code not available." msgstr "ਸਰੋਤ ਕੋਡ ਮੌਜੂਦ ਨਹੀਂ ਹੈ।" msgid "Updating failed" msgstr "ਅੱਪਡੇਟ ਕਰਨਾ ਅਸਫ਼ਲ ਰਿਹਾ।" 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 "" "ਅਨੁਵਾਦਾਂ ਨੂੰ ਸਰੋਤ ਕੋਡ ਤੋਂ ਅੱਪਡੇਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ, ਕਿਉਂਕਿ ਫ਼ਾਈਲ ਦੀਆਂ ਪ੍ਰਾਪਟੀਆਂ ਵਿੱਚ ਦੱਸੇ ਟਿਕਾਣੇ " "'ਤੇ ਕੋਈ ਕੋਡ ਨਹੀਂ ਮਿਲਿਆ।" msgid "Permission denied." msgstr "ਇਜਾਜ਼ਤ ਨਹੀਂ ਦਿੱਤੀ ਗਈ।" 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. 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. msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "ਜੇਕਰ ਤੁਹਾਨੂੰ ਪਹਿਲਾਂ ਵੀ ਤੁਹਾਡੀਆਂ ਫ਼ਾਈਲਾਂ ਤੱਕ ਜਾਣ ਨਹੀਂ ਦਿੱਤਾ ਗਿਆ, ਤਾਂ ਤੁਸੀਂ ਸਿਸਟਮ ਤਰਜੀਹਾਂ > " "ਸੁਰੱਖਿਆ ਅਤੇ ਪਰਦੇਦਾਰੀ > ਪਰਦੇਦਾਰੀ > ਫ਼ਾਈਲਾਂ ਅਤੇ ਫ਼ੋਲਡਰਾਂ ਵਿੱਚ ਇਹ ਇਜਾਜ਼ਤ ਦੇ ਸਕਦੇ ਹੋ।" msgid "Translation entries in the file are probably incorrect." msgstr "ਇਸ ਫ਼ਾਈਲ ਵਿੱਚ ਅਨੁਵਾਦ ਇੰਦਰਾਜ ਸ਼ਾਇਦ ਗਲਤ ਹਨ।" msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "ਫ਼ਾਈਲ ਅੱਪਡੇਟ ਨਹੀਂ ਹੋ ਸਕੀ। ਵੇਰਵਿਆਂ ਲਈ 'ਵੇਰਵੇ >>' 'ਤੇ ਕਲਿੱਕ ਕਰੋ।" msgid "Open translation template" msgstr "ਅਨੁਵਾਦ ਟੈਂਪਲੇਟ ਖੋਲ੍ਹੋ" #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "ਟਰਾਂਸਲੇਸ਼ਨ ਵਿੱਚ %d ਮਸਲਾ ਮਿਲਿਆ।" msgstr[1] "ਅਨੁਵਾਦ ਵਿੱਚ %d ਮਸਲੇ ਮਿਲੇ।" msgid "Validation results" msgstr "ਪ੍ਰਮਾਣੀਕਰਨ ਦੇ ਨਤੀਜੇ" msgid "" "Entries with errors were marked in red in the list. Details of the error " "will be shown when you select such an entry." msgstr "" "ਖਾਮੀਆਂ ਵਾਲੇ ਇੰਦਰਾਜਾਂ ਨੂੰ ਸੂਚੀ ਵਿੱਚ ਲਾਲ ਰੰਗ ਲਗਾਇਆ ਗਿਆ। ਕਿਸੇ ਇੰਦਰਾਜ ਨੂੰ ਚੁਣਨ ਨਾਲ ਉਸ ਵਿਚਲੀ " "ਖਾਮੀ ਦੇ ਵੇਰਵੇ ਦਿਸਣਗੇ।" msgid "The file was saved safely." msgstr "ਫ਼ਾਈਲ ਸੁਰੱਖਿਅਤ ਢੰਗ ਨਾਲ ਸੰਭਾਲੀ ਗਈ।" msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "ਫ਼ਾਈਲ ਸਹੀ ਤਰ੍ਹਾਂ ਸੰਭਾਲੀ ਅਤੇ MO ਫ਼ਾਰਮੈਟ ਵਿੱਚ ਕੰਪਾਇਲ ਕੀਤੀ ਗਈ, ਪਰ ਸ਼ਾਇਦ ਇਹ ਸਹੀ ਢੰਗ ਨਾਲ ਕੰਮ " "ਨਾ ਕਰੇ।" msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "ਫ਼ਾਈਲ ਸਹੀ ਤਰ੍ਹਾਂ ਸੰਭਾਲੀ ਗਈ, ਪਰ ਇਹ MO ਫ਼ਾਰਮੈਟ ਵਿੱਚ ਕੰਪਾਇਲ ਨਹੀਂ ਕੀਤੀ ਅਤੇ ਵਰਤੀ ਨਹੀਂ ਜਾ " "ਸਕਦੀ।" msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "ਫ਼ਾਈਲ MO ਫ਼ਾਰਮੈਟ ਵਿੱਚ ਕੰਪਾਇਲ ਕੀਤੀ ਗਈ, ਪਰ ਸ਼ਾਇਦ ਇਹ ਸਹੀ ਤਰ੍ਹਾਂ ਕੰਮ ਨਾ ਕਰੇ।" msgid "The file cannot be compiled into the MO format and used." msgstr "ਫ਼ਾਈਲ MO ਫ਼ਾਰਮੈਟ ਵਿੱਚ ਕੰਪਾਇਲ ਕੀਤੀ ਅਤੇ ਵਰਤੀ ਨਹੀਂ ਜਾ ਸਕਦੀ।" msgid "No problems with the translation found." msgstr "ਅਨੁਵਾਦ ਵਿੱਚ ਕੋਈ ਖਾਮੀ ਨਹੀ ਲੱਭੀ।" #, 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 ਐਂਟਰੀਆਂ ਹਾਲੇ ਟਰਾਂਸਲੇਟ ਨਹੀਂ ਹਨ।" msgid "The translation is ready for use." msgstr "ਅਨੁਵਾਦ ਵਰਤੇ ਜਾਣ ਲਈ ਤਿਆਰ ਹੈ।" #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "Poedit ਨੇ ਫ਼ਾਈਲ “%s” ਵਿਚਲੀ ਅਢੁਕਵੀਂ ਸਮੱਗਰੀ ਨੂੰ ਆਪਣੇ-ਆਪ ਠੀਕ ਕੀਤਾ।" msgid "" "The file contained duplicate items, which is not allowed in PO files and " "would prevent the file from being used. Poedit fixed the issue, but you " "should review translations of any items marked as needing work and correct " "them if necessary." msgstr "" "ਫ਼ਾਈਲ ਵਿੱਚ ਦੂਹਰੀਆਂ ਆਈਟਮਾਂ ਹਨ, ਜੋ PO ਫ਼ਾਈਲਾਂ ਲਈ ਠੀਕ ਨਹੀਂ ਅਤੇ ਜਿਸ ਕਰਕੇ ਫ਼ਾਈਲ ਵਰਤੀ ਨਹੀਂ ਜਾ " "ਸਕਦੀ। Poedit ਨੇ ਸਮੱਸਿਆ ਠੀਕ ਕੀਤੀ, ਪਰ ਤੁਹਾਨੂੰ ਕਿਸੇ ਵੀ ਉਸ ਆਈਟਮ ਦੇ ਅਨੁਵਾਦ ਦੀ ਸਮੀਖਿਆ ਕਰਨੀ " "ਪਵੇਗੀ ਜਿਸ 'ਤੇ 'ਕੰਮ ਕਰਨ ਦੀ ਲੋੜ ਹੈ' ਦਾ ਨਿਸ਼ਾਨ ਲੱਗੇ ਅਤੇ ਲੋੜ ਮੁਤਾਬਕ ਉਸਨੂੰ ਠੀਕ ਕਰਨਾ ਪਵੇਗਾ।" msgid "Language of the translation isn’t set." msgstr "ਅਨੁਵਾਦ ਦੀ ਭਾਸ਼ਾ ਸੈੱਟ ਨਹੀਂ ਹੈ।" msgid "Set Language" msgstr "ਭਾਸ਼ਾ ਦਿਓ" msgid "Set language" msgstr "ਭਾਸ਼ਾ ਦਿਓ" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." msgid "" "Suggestions are not available if the translation language is not set " "correctly. Other features, such as plural forms, may be affected as well." msgstr "" "ਅਨੁਵਾਦ ਦੀ ਭਾਸ਼ਾ ਸਹੀ ਤਰ੍ਹਾਂ ਸੈੱਟ ਨਾ ਹੋਣ 'ਤੇ ਸੁਝਾਅ ਨਹੀਂ ਮਿਲਣਗੇ। ਹੋਰ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ, ਜਿਵੇਂ ਕਿ ਬਹੁਵਚਨ " "ਬਣਾਉਣ 'ਤੇ ਵੀ ਸ਼ਾਇਦ ਅਸਰ ਪਵੇ।" msgid "Language of the translation is the same as source language." msgstr "ਅਨੁਵਾਦ ਦੀ ਭਾਸ਼ਾ ਅਤੇ ਸਰੋਤ ਦੀ ਭਾਸ਼ਾ ਇੱਕੋ ਹੈ।" msgid "Fix Language" msgstr "ਭਾਸ਼ਾ ਨੂੰ ਠੀਕ ਕਰੋ" msgid "Fix language" msgstr "ਭਾਸ਼ਾ ਨੂੰ ਠੀਕ ਕਰੋ" msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "ਇਸ ਫ਼ਾਈਲ ਵਿੱਚ ਬਹੁਵਚਨ ਵਾਲੇ ਇੰਦਰਾਜ ਹਨ, ਪਰ ਬਹੁਵਚਨ ਵਾਲਾ ਸਿਰਲੇਖ ਤੈਅ ਨਹੀਂ ਹੈ।" msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "ਇਸ ਫ਼ਾਈਲ ਵਿਚਲੇ ਇੰਦਰਾਜਾਂ ਦੇ ਵੱਖੋ-ਵੱਖਰੇ ਬਹੁਵਚਨ ਹਨ ਜੋ ਇਸ ਫ਼ਾਈਲ ਦੇ ਬਹੁਵਚਨ ਵਾਲੇ ਸਿਰਲੇਖ ਦੇ ਉਲਟ ਹੈ" msgid "Required header Plural-Forms is missing." msgstr "ਬਹੁਵਚਨ ਲਈ ਲੋੜੀਂਦਾ ਸਿਰਲੇਖ ਮੌਜੂਦ ਨਹੀਂ ਹੈ।" #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "ਬਹੁਵਚਨ ਸਿਰਲੇਖ (\"%s\") ਵਿੱਚ ਵਾਕ-ਵਿਉਂਤ ਖਾਮੀ।" msgid "Fix the Header" msgstr "ਸਿਰਲੇਖ ਠੀਕ ਕਰੋ" 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". #, 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.")" msgid "Review" msgstr "ਪੜਤਾਲ" msgid "Would you like to use English for source text?" msgstr "ਕੀ ਤੁਸੀਂ ਅੰਗਰੇਜ਼ੀ ਨੂੰ ਸਰੋਤ ਲਿਖਤ ਵਜੋਂ ਵਰਤਣਾ ਚਾਹੁੰਦੇ ਹੋ?" #, 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" msgid "Load English" msgstr "ਅੰਗਰੇਜ਼ੀ ਲੋਡ ਕਰੋ" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "ਅਨੁਵਾਦ ਕੀਤਾ: %2$d ਵਿੱਚੋਂ %1$d (%3$d %%)" #, c-format msgid "Remaining: %d" msgstr "ਬਾਕੀ: %d" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d ਗਲਤੀ" msgstr[1] "%d ਗਲਤੀਆਂ" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d ਦਾਖਲ ਚੀਜ਼" msgstr[1] "%d ਦਾਖਲ ਚੀਜ਼ਾਂ" msgid " (unsaved)" msgstr " (ਨਾ-ਸੰਭਾਲਿਆ)" msgid " (modified)" msgstr " (ਸੋਧੀ)" #, c-format msgid "Failed to update translation memory: %s" msgstr "ਅਨੁਵਾਦ ਮੈਮੋਰੀ ਅੱਪਡੇਟ ਕਰਨ ਲਈ ਫੇਲ੍ਹ: %s" msgid "Remove same-as-source translations" msgstr "" msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" msgid "Keep" msgstr "ਰੱਖੋ" msgid "Remove" msgstr "" msgid "Purge deleted translations" msgstr "ਹਟਾਏ ਗਏ ਅਨੁਵਾਦ ਨੂੰ ਕੱਢੋ" msgid "Do you want to remove all translations that are no longer used?" msgstr "ਕੀ ਤੁਸੀਂ ਸਭ ਅਨੁਵਾਦਾਂ ਨੂੰ ਹਟਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ, ਜੋ ਕਿ ਹੁਣ ਵਰਤੋਂ ਯੋਗ ਨਹੀਂ ਹਨ?" 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 "" msgid "Purge" msgstr "" msgid "Copy from source text" msgstr "ਸਰੋਤ ਲਿਖਤ ਤੋਂ ਕਾਪੀ ਕਰੋ" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "ਅਨੁਵਾਦ ਮਿਟਾਓ" msgid "Clear Translation" msgstr "ਅਨੁਵਾਦ ਮਿਟਾਓ" msgid "Edit comment" msgstr "ਟਿੱਪਣੀ ਸੋਧ" msgid "Edit Comment" msgstr "ਟਿੱਪਣੀ ਸੋਧੋ" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "ਕੋਡ ਮੌਜੂਦਗੀਆਂ" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "ਕੋਡ ਮੌਜੂਦਗੀਆਂ" msgid "Hide Sidebar" msgstr "ਬਾਹੀ ਓਹਲੇ ਕਰੋ" msgid "Show Sidebar" msgstr "ਬਾਹੀ ਵੇਖਾਓ" msgid "Hide Status Bar" msgstr "ਹਾਲਤ ਪੱਟੀ ਓਹਲੇ ਕਰੋ" msgid "Show Status Bar" msgstr "ਹਾਲਤ ਪੱਟੀ ਵੇਖਾਓ" msgid "String length in characters: translation | source" msgstr "ਅੱਖਰਾਂ ਵਿੱਚ ਸਤਰ ਦੀ ਲੰਬਾਈ: ਟਰਾਂਸਲੇਸ਼ਨ | ਸਰੋਤ" msgid "String length in characters" msgstr "ਅੱਖਰਾਂ ਵਿੱਚ ਸਤਰ ਦੀ ਲੰਬਾਈ" msgid "Source text" msgstr "ਸਰੋਤ ਲਿਖਤ" msgid "Singular" msgstr "ਇੱਕ ਵਚਨ" msgid "Plural" msgstr "ਬਹੁਵਚਨ" msgid "Translation" msgstr "ਅਨੁਵਾਦ" msgid "Pre-translated" msgstr "ਕੱਚਾ-ਅਨੁਵਾਦ" 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. msgid "Needs work" msgstr "ਕੰਮ ਕਰਨ ਦੀ ਲੋੜ ਹੈ" msgid "" "POT files are only templates and don’t contain any translations themselves.\n" "To make a translation, create a new PO file based on the template." msgstr "" "POT ਫਾਈਲਾਂ ਸਿਰਫ਼ ਟੈਂਪਲੇਟ ਹੁੰਦੀਆਂ ਹਨ ਅਤੇ ਖੁਦ ਕੋਈ ਟਰਾਂਸਲੇਸ਼ਨ ਨਹੀਂ ਰੱਖਦੀਆਂ।\n" "ਟਰਾਂਸਲੇਸ਼ਨ ਕਰਨ ਲਈ ਟੈਂਪਲੇਟ ਦੇ ਅਧਾਰ ਉੱਤੇ ਨਵੀਂ PO ਫਾਈਲ ਬਣਾਓ।" msgid "Create new translation" msgstr "ਨਵਾਂ ਅਨੁਵਾਦ ਬਣਾਓ" msgid "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 msgid "Source text ID" msgstr "ਸਰੋਤ ਲਿਖਤ ID" msgid "Everything" msgstr "ਹਰ ਚੀਜ਼" #, c-format msgid "Form %i" msgstr "ਫਾਰਮ %i" #, c-format msgid "Form %i (unused)" msgstr "" msgid "Zero" msgstr "ਸਿਫ਼ਰ" msgid "One" msgstr "ਇੱਕ" msgid "Two" msgstr "ਦੋ" msgid "Other" msgstr "ਹੋਰ" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, c-format msgid "String context: %s" msgstr "" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #, c-format msgid "String identifier: %s" msgstr "ਸਤਰ ਪਛਾਣਕਰਤਾ: %s" #, c-format msgid "%s Format" msgstr "%s ਫਾਰਮੈਟ" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "%s ਫਾਰਮੈਟ" #, c-format msgid "Translation — %s" msgstr "ਅਨੁਵਾਦ — %s" msgid "ID" msgstr "ਆਈਡੀ" #, c-format msgid "Source text — %s" msgstr "ਸਰੋਤ ਲਿਖਤ — %s" msgid "unknown language" msgstr "ਅਣਜਾਣ ਭਾਸ਼ਾ" #, c-format msgid "Network error: %s (%d)" msgstr "" msgid "Unknown error" msgstr "" #, c-format msgid "Failed command: %s" msgstr "ਕਮਾਂਡ ਫੇਲ੍ਹ ਹੋਈ: %s" msgid "Failed to merge gettext catalogs." msgstr "gettext ਸਾਰਨੀਆਂ ਵਿੱਚ ਮਿਲਾਨ ਕਰਨਾ ਅਸਫ਼ਲ ਰਿਹਾ।" msgid "Open in Editor" msgstr "ਐਡੀਟਰ ਵਿੱਚ ਖੋਲ੍ਹੋ" msgid "Open in editor" msgstr "ਐਡੀਟਰ ਵਿੱਚ ਖੋਲ੍ਹੋ" msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" msgid "No usage information" msgstr "ਕੋਈ ਵਰਤੋਂ ਜਾਣਕਾਰੀ ਨਹੀਂ" #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "" msgstr[1] "" msgid "Source code not found" msgstr "ਸਰੋਤ ਕੋਡ ਨਹੀਂ ਮਿਲਿਆ" 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 "" msgid "File cannot be opened" msgstr "ਫਾਈਲ ਖੋਲ੍ਹੀ ਨਹੀਂ ਜਾ ਸਕਦੀ ਹੈ" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "Poedit “%s” ਫ਼ਾਈਲ ਖੋਲ੍ਹਣ ਲਈ ਅਸਮਰੱਥ ਸੀ।" msgid "Find" msgstr "ਲੱਭੋ" msgid "Replace" msgstr "ਤਬਦੀਲ" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "ਚੋਣਾਂ" msgid "Ignore case" msgstr "ਅੱਖਰ ਅਕਾਰ ਨੂੰ ਅਣਡਿੱਠਾ ਕਰੋ" msgid "Wrap around" msgstr "ਪਾਸਿਓ ਸਮੇਟੋ" msgid "Whole words only" msgstr "ਪੂਰੇ ਸ਼ਬਦ ਹੀ" msgid "Find in source texts" msgstr "ਸਰੋਤ ਟੈਕਸਟ ਵਿੱਚ ਲੱਭੋ" msgid "Find in translations" msgstr "ਅਨੁਵਾਦ ਵਿੱਚ ਲੱਭੋ" msgid "Find in comments" msgstr "ਟਿੱਪਣੀ ਵਿੱਚ ਖੋਜ" msgid "Close" msgstr "ਬੰਦ ਕਰੋ" msgid "Replace &All" msgstr "ਸਾਰਿਆਂ ਨੂੰ ਬਦਲੋ(&A)" msgid "Replace &all" msgstr "ਸਾਰਿਆਂ ਨੂੰ ਬਦਲੋ(&a)" msgid "&Replace" msgstr "ਬਦਲੋ(&R)" msgid "< &Previous" msgstr "< ਪਿੱਛੇ(&P)" msgid "&Next >" msgstr "ਅੱਗੇ(&N) >" msgid "String to find" msgstr "ਲੱਭਣ ਲਈ ਸਤਰ" msgid "Replacement string" msgstr "ਬਦਲਵੀ ਸਤਰ" #, c-format msgid "Cannot execute program: %s" msgstr "ਪ੍ਰੋਗਰਾਮ ਚਲਾਇਆ ਨਹੀਂ ਜਾ ਸਕਦਾ: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "ਭਾਸ਼ਾ ਦਾ ਨਾਂ ਜਾਂ ਕੋਡ" msgid "Translation Language" msgstr "ਅਨੁਵਾਦ ਭਾਸ਼ਾ" msgid "Language of the translation:" msgstr "ਅਨੁਵਾਦ ਦੀ ਭਾਸ਼ਾ:" msgid "All strings" msgstr "ਨਵੀਂਆਂ ਸਤਰਾਂ" msgid "Couldn’t download Localazy project details." msgstr "" msgid "There was an error when uploading translations to Localazy." msgstr "" msgid "Projects" msgstr "ਪਰੋਜੈਕਟ" msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" msgid "Add Project" msgstr "ਪਰੋਜੈਕਟ ਜੋੜੋ" msgid "Add project" msgstr "ਪਰੋਜੈਕਟ ਜੋੜੋ" msgid "Poedit - Catalogs manager" msgstr "ਪੋਆਡਿਟ - ਕੈਟਾਲਾਗ ਮੈਨੇਜਰ" msgid "Edit…" msgstr "ਸੋਧੋ…" msgid "Create new translations project" msgstr "ਨਵਾਂ ਭਾਸ਼ਾ ਅਨੁਵਾਦ ਪ੍ਰੋਜੈਕਟ ਬਣਾਓ" msgid "Delete the project" msgstr "ਪਰੋਜੈਕਟ ਹਟਾਓ" msgid "Edit the project" msgstr "ਪਰੋਜੈਕਟ ਸੋਧ" msgid "Update all" msgstr "ਸਭ ਅੱਪਡੇਟ" msgid "Update all catalogs in the project" msgstr "ਪਰੋਜੈਕਟ ਵਿਚਲੀਆਂ ਸਭ ਕੈਟਾਲਾਗ ਅੱਪਡੇਟ" msgid "Total" msgstr "ਕੁੱਲ" msgid "Untrans" msgstr "ਨਾ-ਅਨੁਵਾਦ" msgctxt "column/row header" msgid "Needs Work" msgstr "ਕੰਮ ਕਰਨ ਦੀ ਲੋੜ ਹੈ" msgid "Errors" msgstr "ਗ਼ਲਤੀਆਂ" msgid "Last modified" msgstr "ਆਖਰੀ ਸੋਧ" msgid "Select directory" msgstr "ਡਾਇਰੈਕਟਰੀ ਚੁਣੋ" msgid "Directories:" msgstr "ਡਾਇਰੈਕਟਰੀ:" msgid "" msgstr "<ਬੇਨਾਮ>" #, c-format msgid "Do you want to delete project “%s”?" msgstr "" msgid "Delete project" msgstr "ਪਰੋਜੈਕਟ ਨੂੰ ਹਟਾਓ" msgid "Deleting the project will not delete any translation files." msgstr "" msgid "Confirmation" msgstr "ਤਸਦੀਕ" msgid "Update all catalogs in this project?" msgstr "" msgid "Performs update from source code on all files in the project." msgstr "" msgid "Check for Updates…" msgstr "ਅੱਪਡੇਟ ਲਈ ਜਾਂਚ ਕਰੋ…" msgid "Catalogs Manager" msgstr "ਕੈਟਲਾਗ ਮੈਨੇਜਰ" msgid "&Preferences…" msgstr "ਮੇਰੀ ਪਸੰਦ(&P)…" msgid "&Edit" msgstr "ਸੋਧੋ(&E)" msgid "Undo" msgstr "ਵਾਪਸ" msgid "Redo" msgstr "ਵਾਪਿਸ ਕਰੋ" msgid "Paste and Match Style" msgstr "ਚੇਪੋ ਅਤੇ ਮਿਲਾਨ ਸਟਾਈਲ" msgid "Delete" msgstr "ਹਟਾਓ" msgid "Spelling and Grammar" msgstr "ਸ਼ਬਦ-ਜੋੜ ਅਤੇ ਵਿਆਕਰਨ" msgid "Show Spelling and Grammar" msgstr "ਸ਼ਬਦ-ਜੋੜ ਅਤੇ ਵਿਆਕਰਨ ਵੇਖਾਓ" msgid "Check Document Now" msgstr "ਦਸਤਾਵੇਜ਼ ਦੀ ਹੁਣੇ ਜਾਂਚ ਕਰੋ" msgid "Check Spelling While Typing" msgstr "ਲਿਖਣ ਦੇ ਨਾਲ ਨਾਲ ਹੀ ਸ਼ਬਦ-ਜੋੜ ਚੈੱਕ ਕਰੋ" msgid "Check Grammar With Spelling" msgstr "ਲਿਖਣ ਦੇ ਨਾਲ ਨਾਲ ਵਿਆਕਰਨ ਦੀ ਜਾਂਚ ਕਰੋ" msgid "Correct Spelling Automatically" msgstr "ਆਪਣੇ-ਆਪ ਹੀ ਸ਼ਬਦ-ਜੋੜ ਠੀਕ ਕਰੋ" msgid "Substitutions" msgstr "ਤਬਾਦਲੇ" msgid "Show Substitutions" msgstr "ਤਬਾਦਲੇ ਦਿਖਾਓ" msgid "Smart Copy/Paste" msgstr "ਚੁਸਤ ਕਾਪੀ ਕਰਨਾ/ਚੇਪਣਾ" msgid "Smart Quotes" msgstr "ਸਮਾਰਟ ਕੋਟ" msgid "Smart Dashes" msgstr "ਸਮਾਰਟ ਡੈਸ਼ਾਂ" msgid "Smart Links" msgstr "ਸਮਾਰਟ ਲਿੰਕਾਂ" msgid "Text Replacement" msgstr "ਲਿਖਤ ਤਬਾਦਲਾ" msgid "Transformations" msgstr "ਟਰਾਂਸਫਰਮੇਸ਼ਨ" msgid "Make Upper Case" msgstr "ਅੱਪਰਕੇਸ ਬਣਾਓ" msgid "Make Lower Case" msgstr "ਲੋਅਰਕੇਸ ਬਣਾਓ" msgid "Capitalize" msgstr "ਅੰਗਰੇਜ਼ੀ ਦੇ ਵੱਡੇ ਅੱਖਰ" msgid "Speech" msgstr "ਸਪੀਚ" msgid "Start Speaking" msgstr "ਬੋਲਣਾ ਸ਼ੁਰੂ ਕਰੋ" msgid "Stop Speaking" msgstr "ਬੋਲਣਾ ਰੋਕੋ" msgid "&View" msgstr "ਵੇਖੋ(&V)" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Show Toolbar" msgstr "ਟੂਲਬਾਰ ਦਿਖਾਓ" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Customize Toolbar…" msgstr "ਟੂਲਬਾਰ ਨੂੰ ਕਸਟਮਾਈਜ਼ ਕਰੋ…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Enter Full Screen" msgstr "ਪੂਰੀ ਸਕਰੀਨ ਉਤੇ ਜਾਓ" msgid "Window" msgstr "ਵਿੰਡੋ" msgid "Minimize" msgstr "ਘੱਟੋ-ਘੱਟ" msgid "Zoom" msgstr "ਜ਼ੂਮ" msgid "Welcome to Poedit" msgstr "ਪੋਐਡਿਟ ਵਲੋਂ ਜੀ ਆਇਆਂ ਨੂੰ" msgid "Bring All to Front" msgstr "ਸਭ ਤੋਂ ਅੱਗੇ ਲਿਆਓ" msgid "Information about the translator" msgstr "ਅਨੁਵਾਦਕ ਬਾਰੇ ਜਾਣਕਾਰੀ" msgid "Name:" msgstr "ਨਾਂ:" msgid "Your Name" msgstr "ਤੁਹਾਡਾ ਨਾਂ" msgid "Email:" msgstr "ਈਮੇਲ:" msgid "you@example.com" msgstr "you@example.com" msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "ਤੁਹਾਡਾ ਨਾਂ ਅਤੇ ਈਮੇਲ ਐਡਰੈੱਸ, ਜੋ ਹੇਠਾਂ ਦਿੱਤਾ ਜਾਵੇਗਾ, ਨੂੰ GNU gettext ਫਾਇਲਾਂ ਵਿੱਚ Last-" "Translator ਹੈੱਡਰ ਲਈ ਵਰਤਿਆ ਜਾਵੇਗਾ।" msgid "Editing" msgstr "ਸੋਧਿਆ ਜਾਂਦਾ ਹੈ" msgid "Automatically compile MO file when saving" msgstr "ਸੰਭਾਲਣ ਉੱਤੇ ਆਟੋਮੈਟਿਕ ਹੀ MO ਫ਼ਾਈਲ ਕੰਪਾਈਲ ਕਰੋ" msgid "Show summary after updating files" msgstr "ਫਾਈਲਾਂ ਅੱਪਡੇਟ ਕਰਨ ਦੇ ਬਾਅਦ ਸਾਰ ਵੇਖਾਓ" msgid "Check spelling" msgstr "ਸ਼ਬਦ-ਜੋੜ ਜਾਂਚ ਕਰੋ" msgid "Always change focus to text input field" msgstr "ਹਮੇਸ਼ਾ ਪਾਠ ਲਿਖਣ ਖੇਤਰ 'ਤੇ ਹੀ ਕੇਂਦਰਿਤ ਕਰੋ" msgid "" "Never let the list of strings take focus. If enabled, you must use Ctrl-" "arrows for keyboard navigation but you can also type text immediately, " "without having to press Tab to change focus." msgstr "" "ਸਤਰਾਂ ਦੀ ਸੂਚੀ ਕਦੇ ਕੇਂਦਰਿਤ ਨਾ ਹੋਣ ਦਿਉ। ਜੇ ਏਦਾਂ ਹੈ ਤਾਂ ਤੁਸੀਂ ਕੀਬੋਰਡ ਦੇ Ctrl- ਤੀਰ ਬਟਨਾਂ ਨਾਲ ਚੱਲ " "ਸਕਦੇ ਹੋ, ਪਰ ਤੁਸੀ Tab ਦਬਾਏ ਬਿਨਾਂ ਵੀ ਤੁਰੰਤ ਲਿਖ ਸਕਦੇ ਹੋ।" msgid "Appearance" msgstr "ਦਿੱਖ" msgid "Use custom list font:" msgstr "ਪਸੰਦੀਦਾ ਸੂਚੀ ਫ਼ੋਟ ਵਰਤੋਂ:" msgid "Use custom text fields font:" msgstr "ਪਸੰਦੀਦਾ ਪਾਠ ਖੇਤਰ ਫ਼ੋਂਟ ਵਰਤੋਂ:" msgid "Change UI language" msgstr "UI ਭਾਸ਼ਾ ਬਦਲੋ" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions msgid "(requires Windows 8 or newer)" msgstr "(ਵਿੰਡੋਜ਼ 8 ਜਾਂ ਨਵੀਂ ਚਾਹੀਦੀ ਹੈ)" msgid "General" msgstr "ਆਮ" msgid "Use translation memory" msgstr "ਅਨੁਵਾਦ ਮੈਮੋਰੀ ਵਰਤੋਂ" msgid "Manage…" msgstr "…ਇੰਤਜ਼ਾਮ" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "ਜਦੋਂ ਸਰੋਤ ਤੋਂ ਅੱਪਡੇਟ ਕੀਤਾ ਜਾਂਦਾ ਹੈ" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "TM ਤੋਂ ਕੱਚਾ ਅਨੁਵਾਦ ਕਰੋ" 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 "" msgid "Stored translations:" msgstr "ਸੰਭਾਲੇ ਹੋਏ ਅਨੁਵਾਦ:" msgid "Database size on disk:" msgstr "ਡਿਸਕ ਉੱਤੇ ਡਾਟਾਬੇਸ:" msgid "Import Translation Files…" msgstr "ਅਨੁਵਾਦ ਫਾਈਲਾਂ ਇੰਪੋਰਟ ਕਰੋ…" msgid "Import translation files…" msgstr "ਅਨੁਵਾਦ ਫਾਈਲਾਂ ਇੰਪੋਰਟ ਕਰੋ…" msgid "Import From TMX…" msgstr "TMX ਤੋਂ ਇੰਪੋਰਟ ਕਰੋ…" msgid "Import from TMX…" msgstr "TMX ਤੋਂ ਇੰਪੋਰਟ ਕਰੋ…" msgid "Export To TMX…" msgstr "" msgid "Export to TMX…" msgstr "" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). msgid "Reset" msgstr "ਮੁੜ-ਸੈੱਟ ਕਰੋ" msgid "Select translation files to import" msgstr "ਇੰਪੋਰਟ ਕਰਨ ਲਈ ਅਨੁਵਾਦ ਫਾਈਲਾਂ ਚੁਣੋ" msgid "Translation Memory" msgstr "ਅਨੁਵਾਦ ਮੈਮੋਰੀ" msgid "Importing translations…" msgstr "ਅਨੁਵਾਦ ਇੰਪੋਰਟ ਕੀਤੇ ਜਾ ਰਹੇ ਹਨ…" #, c-format msgid "Error loading translation file “%s”." msgstr "“%s” ਅਨੁਵਾਦ ਫਾਈਲ ਲੋਡ ਕਰਨ ਵਿੱਚ ਸਮੱਸਿਆ ਖੜ੍ਹੀ ਹੋਈ।" msgid "Finalizing…" msgstr "ਮੁਕੰਮਲ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…" msgid "Select TMX files to import" msgstr "" msgid "TMX Files" msgstr "TMX ਫਾਈਲਾਂ" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "" msgid "Import error" msgstr "" msgid "Export as…" msgstr "…ਵਜੋਂ ਐਕਸਪੋਰਟ" msgid "Exporting translations…" msgstr "" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "" msgid "Export error" msgstr "" msgid "Reset translation memory" msgstr "" msgid "Are you sure you want to reset the translation memory?" msgstr "" 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. msgid "TM" msgstr "TM" msgid "" "Source code extractors are used to find translatable strings in the source " "code files and extract them so that they can be translated." msgstr "" msgid "Custom Extractors:" msgstr "" msgid "Custom extractors:" msgstr "" msgid "GNU gettext" msgstr "GNU gettext" msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" msgid "Delete extractor" msgstr "" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "" msgid "Extractors" msgstr "" msgid "Accounts" msgstr "ਖਾਤੇ" msgid "Automatically check for updates" msgstr "ਆਟੋਮੈਟਿਕ ਅੱਪਡੇਟ ਲਈ ਜਾਂਚ ਕਰੋ" msgid "Include beta versions" msgstr "ਬੀਟਾ ਵਰਜਨ ਸਮੇਤ" msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" msgid "Updates" msgstr "ਅੱਪਡੇਟ" msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" msgid "Line endings:" msgstr "ਲਾਈਨ ਸਮਾਪਤੀ:" msgid "Unix (recommended)" msgstr "ਯੂਨੈਕਸ (ਸਿਫਾਰਸ਼ੀ)" msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "" msgid "Preserve formatting of existing files" msgstr "" msgid "Advanced" msgstr "ਤਕਨੀਕੀ" msgid "Settings" msgstr "" msgid "Preparing strings…" msgstr "" msgid "Pre-translating from translation memory…" msgstr "" #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "" msgstr[1] "" msgid "Pre-translating…" msgstr "" 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. msgid "Pre-translate" msgstr "" msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" msgid "Cannot pre-translate from unknown language." msgstr "" msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" msgid "Only fill in exact matches" msgstr "" msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" msgid "Don’t mark exact matches as needing work" msgstr "" 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 "" msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "" msgstr[1] "" msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" msgid "No entries could be pre-translated." msgstr "" msgid "" "The TM doesn’t contain any strings similar to the content of this file. It " "is only effective for semi-automatic translations after Poedit learns enough " "from files that you translated manually." msgstr "" msgid "Cancelling…" msgstr "ਰੱਦ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…" msgid "Drag Folders or Files Here" msgstr "ਫੋਲਡਰ ਜਾਂ ਫ਼ਾਈਲਾਂ ਇੱਥੇ ਖਿੱਚੋ" msgid "Drag folders or files here" msgstr "ਫੋਲਡਰ ਜਾਂ ਫਾਈਲਾਂ ਇੱਥੇ ਖਿੱਚੋ" msgid "Add Folders…" msgstr "ਫੋਲਡਰ ਜੋੜੋ…" msgid "Add folders…" msgstr "ਫੋਲਡਰ ਜੋੜੋ…" msgid "Add Files…" msgstr "ਫ਼ਾਈਲਾਂ ਜੋੜੋ…" msgid "Add files…" msgstr "ਫ਼ਾਈਲਾਂ ਜੋੜੋ…" msgid "Add Wildcard…" msgstr "" msgid "Add wildcard…" msgstr "" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) msgid "Reveal in Finder" msgstr "Finder ਵਿੱਚ ਦਿਖਾਓ" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" msgid "Show in Explorer" msgstr "ਐਕਸਪਲੋਰਰ ਵਿੱਚ ਵੇਖਾਓ" msgid "Show in Folder" msgstr "ਫੋਲਡਰ ਵਿੱਚ ਵੇਖਾਓ" msgid "Paths" msgstr "ਮਾਰਗ" msgid "Excluded paths" msgstr "" msgid "Advanced extraction settings" msgstr "" msgid "Extract notes for translators from:" msgstr "" msgid "Comments prefixed with:" msgstr "" msgid "All comments" msgstr "" msgid "Additional xgettext flags:" msgstr "" msgid "Additional keywords" msgstr "ਵਾਧੂ ਕੀਵਰਡ" msgid "Name of the project the translation is for" msgstr "ਅਨੁਵਾਦ ਦੇ ਪ੍ਰੋਜੈਕਟ ਦਾ ਨਾਂ" msgid "Team name and email address or URL" msgstr "ਟੀਮ ਦਾ ਨਾਂ ਅਤੇ ਈਮੇਲ ਐਡਰੈਸ ਜਾਂ URL" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "ਜਿਵੇਂ nplurals=2; plural=(n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (ਸਿਫਾਰਸ਼ੀ)" msgid "Please save the file first. This section cannot be edited until then." msgstr "" msgid "Placeholders correctness" msgstr "" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "ਅਨੁਵਾਦ ਵਿੱਚੋਂ “%s” ਨਿਸ਼ਾਨ ਖੁੰਝਿਆ ਹੈ।" #, c-format msgid "Superfluous placeholder “%s” that isn’t in source text." msgstr "" msgid "Plural form translations" msgstr "" msgid "Not all plural forms are translated." msgstr "" msgid "Inconsistent upper/lower case" msgstr "" msgid "The translation should start as a sentence." msgstr "" msgid "The translation should start with a lowercase character." msgstr "" msgid "Inconsistent whitespace" msgstr "" msgid "The translation doesn’t start with a space." msgstr "ਅਨੁਵਾਦ ਖਾਲੀ ਥਾਂ ਨਾਲ ਸ਼ੁਰੂ ਨਹੀਂ ਹੁੰਦਾ ਹੈ।" msgid "The translation starts with a space, but the source text doesn’t." msgstr "ਅਨੁਵਾਦ ਖਾਲੀ ਥਾਂ ਨਾਲ ਸ਼ੁਰੂ ਹੁੰਦਾ ਹੈ, ਪਰ ਸਰੋਤ ਲਿਖਤ ਵਿੱਚ ਮੌਜੂਦ ਨਹੀਂ ਹੈ।" msgid "The translation is missing a newline at the end." msgstr "ਅਨੁਵਾਦ ਦੇ ਅੰਤ ਵਿੱਚ ਨਵੀਂ-ਲਾਈਨ ਮੌਜੂਦ ਨਹੀਂ ਹੈ।" msgid "The translation ends with a newline, but the source text doesn’t." msgstr "ਅਨੁਵਾਦ ਨਵੀਂ ਲਾਈਨ ਨਾਲ ਖਤਮ ਹੁੰਦਾ ਹੈ, ਪਰ ਸਰੋਤ ਲਿਖਤ ਵਿੱਚ ਨਹੀਂ ਹੈ।" msgid "The translation is missing a space at the end." msgstr "ਅਨੁਵਾਦ ਦੇ ਆਖੀਰ ਵਿੱਚ ਖਾਲੀ ਥਾਂ ਨਹੀਂ ਹੈ।" msgid "The translation ends with a space, but the source text doesn’t." msgstr "ਅਨੁਵਾਦ ਖਾਲੀ ਥਾਂ ਨਾਲ ਖਤਮ ਹੁੰਦਾ ਹੈ, ਪਰ ਸਰੋਤ ਲਿਖਤ ਵਿੱਚ ਨਹੀਂ ਹੈ।" msgid "Punctuation checks" msgstr "ਵਿਸ਼ਰਾਮ-ਚਿੰਨ੍ਹ ਦੀ ਜਾਂਚ" #, c-format msgid "The translation should end with “%s”." msgstr "ਅਨੁਵਾਦ “%s” ਨਾਲ ਖਤਮ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ।" #, c-format msgid "The translation should not end with “%s”." msgstr "ਅਨੁਵਾਦ “%s” ਨਾਲ ਖਤਮ ਨਹੀਂ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ।" #, c-format msgid "The translation ends with “%s”, but the source text ends with “%s”." msgstr "ਅਨੁਵਾਦ “%s” ਨਾਲ ਖਤਮ ਹੁੰਦਾ ਹੈ, ਪਰ ਸਰੋਤ ਲਿਖਤ “%s” ਨਾਲ ਖਤਮ ਨਹੀਂ ਹੁੰਦੀ ਹੈ।" msgid "Cloud" msgstr "" msgid "Clear Menu" msgstr "ਮੇਨੂ ਸਾਫ਼ ਕਰੋ" msgid "Clear menu" msgstr "ਮੇਨੂ ਸਾਫ਼ ਕਰੋ" msgid "Comment:" msgstr "ਟਿੱਪਣੀ:" msgid "Update" msgstr "ਅੱਪਡੇਟ" msgid "&Delete" msgstr "ਹਟਾਓ(&D)" msgid "Delete the comment" msgstr "ਟਿੱਪਣੀ ਹਟਾਓ" msgid "Edit project" msgstr "ਪਰੋਜੈਕਟ ਸੋਧੋ" msgid "Project name:" msgstr "ਪਰੋਜੈਕਟ ਨਾਂ:" msgid "Browse" msgstr "ਝਲਕ" msgid "Add directory to the list" msgstr "ਡਾਇਰੈਕਟਰੀ ਲਿਸਟ ਵਿੱਚ ਸ਼ਾਮਲ" msgid "OK" msgstr "ਠੀਕ ਹੈ" msgid "&File" msgstr "ਫ਼ਾਈਲ(&F)" msgid "&New…" msgstr "ਨਵਾਂ(&N)…" msgid "New from &POT/PO file…" msgstr "&POT/PO ਫ਼ਾਈਲ ਤੋਂ ਨਵਾਂ…" msgid "New From &POT/PO File…" msgstr "&POT/PO ਫ਼ਾਈਲ ਤੋਂ ਨਵਾਂ…" msgid "&Open…" msgstr "ਖੋਲ੍ਹੋ(&O)…" msgid "Open Recent" msgstr "ਸੱਜਰੇ ਖੋਲ੍ਹੇ" msgid "Open recent" msgstr "ਸੱਜਰੇ ਖੋਲ੍ਹੋ" msgid "Open cloud translation…" msgstr "ਕਲਾਉਡ ਅਨੁਵਾਦ ਖੋਲ੍ਹੋ…" msgid "Open Cloud Translation…" msgstr "ਕਲਾਉਡ ਅਨੁਵਾਦ ਖੋਲ੍ਹੋ…" msgid "&Start window" msgstr "ਸ਼ੁਰੂਆਤੀ ਵਿੰਡੋ(&S)" msgid "&Start Window" msgstr "ਸ਼ੁਰੂਆਤੀ ਵਿੰਡੋ(&S)" msgid "Catalogs &manager" msgstr "ਕੈਟਾਲਾਗ ਮੈਨੇਜਰ(&m)" msgid "Catalogs &Manager" msgstr "ਕੈਟਾਲਾਗ ਮੈਨੇਜਰ(&M)" msgid "&Close" msgstr "ਬੰਦ ਕਰੋ(&C)" msgid "&Save" msgstr "ਸੰਭਾਲੋ(&S)" msgid "Save &as…" msgstr "…ਵਜੋਂ ਸੰਭਾਲੋ(&a)" msgid "Save &As…" msgstr "…ਵਜੋਂ ਸੰਭਾਲੋ(&A)" msgid "Compile to MO…" msgstr "…MO ਵਜੋਂ ਕੰਪਾਈਲ ਕਰੋ" msgid "E&xport to HTML…" msgstr "" msgid "Check for updates…" msgstr "ਅੱਪਡੇਟਾਂ ਲਈ ਜਾਂਚ ਕਰੋ…" msgid "Settings…" msgstr "ਸੈਟਿੰਗਾਂ…" msgid "&Preferences" msgstr "ਮੇਰੀ ਪਸੰਦ(&P)" msgid "E&xit" msgstr "ਬਾਹਰ(&x)" msgid "Quit" msgstr "ਬਾਹਰ" msgid "Copy from singular" msgstr "" msgid "Copy From Singular" msgstr "" msgid "Translation needs &work" msgstr "ਅਨੁਵਾਦ ਉੱਤੇ ਕੰਮ ਕਰਨ ਵਾਲਾ ਹੈ(&w)" msgid "Translation Needs &Work" msgstr "ਅਨੁਵਾਦ ਉੱਤੇ ਕੰਮ ਕਰਨ ਵਾਲਾ ਹੈ(&w)" msgid "Edit &comment" msgstr "ਟਿੱਪਣੀ ਸੋਧ(&c)" msgid "Edit &Comment" msgstr "ਟਿੱਪਣੀ ਸੋਧ(&C)" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "ਸੁਝਾਅ" msgid "&Find…" msgstr "ਲੱਭੋ(&F)…" msgid "Replace…" msgstr "ਬਦਲੋ…" msgid "Find next" msgstr "ਅੱਗੇ ਲੱਭੋ" msgid "Find previous" msgstr "ਪਿੱਛੇ ਲੱਭੋ" msgid "Find and Replace…" msgstr "…ਲੱਭੋ ਤੇ ਬਦਲੋ" msgid "Find Next" msgstr "ਅੱਗੇ ਲੱਭੋ" msgid "Find Previous" msgstr "ਪਿੱਛੇ ਲੱਭੋ" msgid "Show string &ID" msgstr "" msgid "Show String &ID" msgstr "" msgid "Show warnings" msgstr "ਚਿਤਾਵਨੀ ਦਿਖਾਓ" msgid "Show Warnings" msgstr "ਚਿਤਾਵਨੀ ਦਿਖਾਓ" msgid "Sort by &file order" msgstr "" msgid "Sort by &File Order" msgstr "" msgid "Sort by &source" msgstr "" msgid "Sort by &Source" msgstr "" msgid "Sort by &translation" msgstr "" msgid "Sort by &Translation" msgstr "" msgid "&Group by context" msgstr "" msgid "&Group By Context" msgstr "" msgid "Entries with errors first" msgstr "" msgid "Entries with Errors First" msgstr "" msgid "&Untranslated entries first" msgstr "ਗ਼ੈਰ-ਅਨੁਵਾਦ ਐਂਟਰੀਆਂ ਪਹਿਲਾਂ(&U)" msgid "&Untranslated Entries First" msgstr "ਗ਼ੈਰ-ਅਨੁਵਾਦ ਐਂਟਰੀਆਂ ਪਹਿਲਾਂ(&U)" msgid "&Show code occurrences" msgstr "" msgid "&Show Code Occurrences" msgstr "" msgid "Show sidebar" msgstr "ਬਾਹੀ ਵੇਖਾਓ" msgid "Show status bar" msgstr "ਹਾਲਤ ਪੱਟੀ ਵੇਖਾਓ" msgid "&Translation" msgstr "ਟਰਾਂਸਲੇਸ਼ਨ(&T)" msgid "&Update from source code" msgstr "ਸਰੋਤ ਕੋਡ ਤੋਂ ਅੱਪਡੇਟ ਕਰੋ(&U)" msgid "&Update from Source Code" msgstr "ਸਰੋਤ ਕੋਡ ਤੋਂ ਅੱਪਡੇਟ ਕਰੋ(&U)" msgid "Update from &POT file…" msgstr "&POT ਫਾਈਲ ਤੋਂ ਅੱਪਡੇਟ…" msgid "Update from &POT File…" msgstr "&POT ਫਾਈਲ ਤੋਂ ਅੱਪਡੇਟ…" msgid "Sync with Crowdin" msgstr "Crowdin ਨਾਲ ਸਿੰਕ ਕਰੋ" msgid "Pre-&translate…" msgstr "ਕੱਚਾ-ਅਨੁਵਾਦ(&t)…" msgid "&Validate translations" msgstr "" msgid "&Validate Translations" msgstr "" msgid "Remove Same-as-Source Translations" msgstr "" msgid "&Purge deleted translations" msgstr "ਹਟਾਏ ਗਏ ਅਨੁਵਾਦ ਨੂੰ ਕੱਢੋ(&P)" msgid "&Purge Deleted Translations" msgstr "ਹਟਾਏ ਗਏ ਅਨੁਵਾਦ ਨੂੰ ਕੱਢੋ(&P)" msgid "&Properties…" msgstr "ਵਿਸ਼ੇਸ਼ਤਾ(&P)…" msgid "&Go" msgstr "ਜਾਓ(&G)" msgid "&Done and next" msgstr "ਮੁਕੰਮਲ ਤੇ ਅੱਗੇ(&D)" msgid "&Done and Next" msgstr "ਮੁਕੰਮਲ ਤੇ ਅੱਗੇ(&D)" msgid "Previously edited" msgstr "" msgid "Previously Edited" msgstr "" msgid "&Previous translation" msgstr "ਪਿਛਲਾ ਅਨੁਵਾਦ(&P)" msgid "&Previous Translation" msgstr "ਪਿਛਲਾ ਅਨੁਵਾਦ(&P)" msgid "&Next translation" msgstr "ਅਗਲਾ ਅਨੁਵਾਦ(&N)" msgid "&Next Translation" msgstr "ਅਗਲਾ ਅਨੁਵਾਦ(&N)" msgid "P&revious unfinished" msgstr "" msgid "P&revious Unfinished" msgstr "" msgid "Ne&xt unfinished" msgstr "" msgid "Ne&xt Unfinished" msgstr "" msgid "Previous plural form" msgstr "" msgid "Previous Plural Form" msgstr "" msgid "Next plural form" msgstr "" msgid "Next Plural Form" msgstr "" msgid "&Online help" msgstr "ਆਨਲਾਈਨ ਮਦਦ(&O)" msgid "&Online Help" msgstr "ਆਨਲਾਈਨ ਮਦਦ(&O)" msgid "&GNU gettext manual" msgstr "&GNU gettext ਦਸਤਾਵੇਜ਼" msgid "&GNU gettext Manual" msgstr "&GNU gettext ਦਸਤਾਵੇਜ਼" msgid "&About Poedit" msgstr "ਪੋਐਡਿਟ ਬਾਰੇ(&A)" msgid "&About" msgstr "ਇਸ ਬਾਰੇ(&A)" msgid "Extractor setup" msgstr "" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "ਇਕਸਟੈਸ਼ਨਾਂ ਦੀ ਲਿਸਟ ਅਰਧ ਕਾਮਿਆਂ ਨਾਲ ਲਿਖੋ (ਜਿਵੇ ਕਿ *.cpp;*.h):" msgid "Invocation:" msgstr "ਸਹਾਇਤਾ :" msgid "Command to extract translations:" msgstr "" 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 "" msgid "An item in keywords list:" msgstr "ਸ਼ਬਦ ਲਿਸਟ 'ਚ ਇੱਕ ਇਕਾਈ:" msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "ਇਹ ਇੱਕ ਵਾਰ ਕਮਾਂਡ ਲਾਇਨ ਨਾਲ ਹਰੇਕ ਇੰਪੁੱਟ ਫਾਇਲ ਲ਼ਈ ਜੁਡ਼ ਜਾਵੇਗਾ।\n" "%k ਫਾਇਲ ਨਾਂ ਫੈਲਾ ਦੇਵੇਗਾ।" msgid "An item in input files list:" msgstr "ਇੰਪੁੱਟ ਫਾਇਲ ਲਿਸਟ ਵਿੱਚ ਇਕਾਈ:" #, 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 ਫਾਇਲ ਨਾਂ ਫੈਲਾ ਦੇਵੇਗਾ।" msgid "Source code charset:" msgstr "ਸਰੋਤ ਕੋਡ ਅੱਖਰ ਸਮੂਹ:" #, 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 ਫਾਇਲ ਨਾਂ ਫੈਲਾ ਦੇਵੇਗਾ।" msgid "Translation Properties" msgstr "ਅਨੁਵਾਦ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ" msgid "Project name and version:" msgstr "ਪਰੋਜੈਕਟ ਨਾਂ ਅਤੇ ਵਰਜ਼ਨ:" msgid "Language team:" msgstr "ਭਾਸ਼ਾ ਟੀਮ:" msgid "Plural forms:" msgstr "ਬਹੁਵਚਨ ਰੂਪ:" msgid "Use default rules for this language" msgstr "ਇਹ ਭਾਸ਼ਾ ਲਈ ਡਿਫਾਲਟ ਨਿਯਮ ਵਰਤੋਂ" msgid "Use custom expression" msgstr "" msgid "Learn about plural forms" msgstr "" msgid "Charset:" msgstr "ਅੱਖਰ-ਸੈਟ :" msgid "Advanced Extraction Settings…" msgstr "" msgid "Advanced extraction settings…" msgstr "" msgid "Translation properties" msgstr "ਅਨੁਵਾਦ ਵਿਸ਼ੇਸ਼ਤਾ" msgid "Sources Paths" msgstr "" msgid "Sources paths" msgstr "" msgid "Extract text from source files in the following directories:" msgstr "" msgid "Base path:" msgstr "ਮੁੱਖ ਮਾਰਗ:" msgid "Sources Keywords" msgstr "ਸਰੋਤ ਸ਼ਬਦ" msgid "Sources keywords" msgstr "ਸਰੋਤ ਕੀਵਰਡ" msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" msgid "Also use default keywords for supported languages" msgstr "" msgid "Learn about gettext keywords" msgstr "gettext ਕੀਵਰਡ ਬਾਰੇ ਜਾਣੋ" msgid "Update summary" msgstr "ਅੱਪਡੇਟ ਸੰਖੇਪ" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" msgid "New strings" msgstr "ਨਵੀਂਆਂ ਸਤਰਾਂ" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" msgid "Obsolete strings" msgstr "ਪੁਰਾਣੀਆਂ ਸਤਰਾਂ" msgid "(0 new, 0 obsolete)" msgstr "(0 ਨਵਾਂ, 0 ਪੁਰਾਣਾ)" msgid "Open" msgstr "" msgid "Open file" msgstr "ਫ਼ਾਈਲ ਖੋਲ੍ਹੋ" msgid "Save file" msgstr "ਫ਼ਾਈਲ ਸੰਭਾਲੋ" msgid "Validate" msgstr "ਤਸਦੀਕ ਕਰੋ" msgid "Check for errors in the translation" msgstr "" msgid "Update from code" msgstr "ਕੋਡ ਤੋਂ ਅੱਪਡੇਟ ਕਰੋ" msgid "Update from Code" msgstr "ਕੋਡ ਤੋਂ ਅੱਪਡੇਟ ਕਰੋ" msgid "Update from source code" msgstr "ਸਰੋਤ ਕੋਡ ਤੋਂ ਅੱਪਡੇਟ ਕਰੋ" msgid "Sidebar" msgstr "ਬਾਹੀ" msgid "Show or hide the sidebar" msgstr "ਬਾਹੀ ਵੇਖੋ ਜਾਂ ਓਹਲੇ ਕਰੋ" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. msgid "Previous source text" msgstr "ਪਿਛਲੀ ਸਰੋਤ ਲਿਖਤ" msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" msgid "Notes for translators" msgstr "" msgid "Comment" msgstr "ਟਿੱਪਣੀ" msgid "Add comment" msgstr "ਟਿੱਪਣੀ ਜੋੜੋ" msgid "Add Comment" msgstr "ਟਿੱਪਣੀ ਜੋੜੋ" msgid "Delete From Translation Memory" msgstr "ਅਨੁਵਾਦ ਮੈਮੋਰੀ ਵਿੱਚੋਂ ਹਟਾਓ" msgid "Delete from translation memory" msgstr "ਅਨੁਵਾਦ ਮੈਮੋਰੀ ਵਿੱਚੋਂ ਹਟਾਓ" msgid "Translation suggestions" msgstr "ਅਨੁਵਾਦ ਲਈ ਸੁਝਾਅ" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). msgid "No matches found" msgstr "ਕੋਈ ਮੇਲ ਨਹੀਂ ਲੱਭਿਆ" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). msgid "No Matches Found" msgstr "ਕੋਈ ਮੇਲ ਨਹੀਂ ਲੱਭੇ" msgid "This string was found in Poedit’s translation memory." msgstr "ਇਹ ਲਾਈਨ ਪੋਐਡਿਟ ਦੀ ਅਨੁਵਾਦ ਮੈਮੋਰੀ ਵਿੱਚ ਲੱਭੀ ਸੀ।" msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" msgid "The TMX file is malformed." msgstr "" msgid "No translations were found in the TMX file." msgstr "" #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "" #, c-format msgid "Translation memory error: %s (%d)." msgstr "ਅਨੁਵਾਦ ਮੈਮੋਰੀ ਗਲਤੀ: %s (%d)।" msgid "Cannot create temporary directory." msgstr "ਆਰਜ਼ੀ ਡਾਇਰੈਕਟਰੀ ਬਣਾਈ ਨਹੀਂ ਜਾ ਸਕਦੀ ਹੈ।" msgid "There are no translations. That’s unusual." msgstr "ਕੋਈ ਅਨੁਵਾਦ ਨਹੀਂ ਹੈ। ਇਹ ਅਸਧਾਰਨ ਹੈ।" msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "Translators typically use PO template files (POTs) prepared for them by the " "developer." msgstr "" msgid "(Learn more about GNU gettext)" msgstr "" msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" msgid "Update from POT" msgstr "POT ਤੋਂ ਅੱਪਡੇਟ ਕਰੋ" msgid "Take translatable strings from an existing POT template." msgstr "" msgid "" "You can also extract translatable strings directly from the source code:" msgstr "" msgid "Extract from sources" msgstr "" msgid "Configure source code extraction in Properties." msgstr "" #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #, c-format msgid "Version %s" msgstr "%s ਵਰਜ਼ਨ" msgid "Create new" msgstr "ਨਵਾਂ ਬਣਾਓ" msgid "Create new translation from POT template." msgstr "POT ਟੈਮਪਲੇਟ ਤੋਂ ਨਵਾਂ ਅਨੁਵਾਦ ਬਣਾਓ" msgid "Browse files" msgstr "ਫਾਈਲਾਂ ਦੀ ਝਲਕ" msgid "Open and edit translation files." msgstr "ਅਨੁਵਾਦ ਫਾਈਲਾਂ ਨੂੰ ਖੋਲ੍ਹੋ ਅਤੇ ਸੋਧੋ" msgid "Translate cloud project" msgstr "ਕਲਾਉਡ ਪਰੋਜੈਕਟ ਦਾ ਅਨੁਵਾਦ ਕਰੋ" msgid "Collaborate with other people online." msgstr "" msgid "Recent files" msgstr "ਸੱਜਰੀਆਂ ਫਾਈਲਾਂ" msgid "Sync" msgstr "ਸਿੰਕ ਕਰੋ" msgid "Synchronize the translation with Crowdin" msgstr "" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #, c-format msgid "About %s" msgstr "%s ਬਾਰੇ" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #, c-format msgid "%s Preferences" msgstr "%s ਮੇਰੀ ਪਸੰਦ" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "ਸਰਵਿਸਾਂ" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "%s ਨੂੰ ਲੁਕਾਓ" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "ਹੋਰਾਂ ਨੂੰ ਲੁਕਾਓ" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "ਸਾਰੇ ਵੇਖੋ" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "%s ਤੋਂ ਬਾਹਰ ਜਾਓ" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "ਮੇਰੀ ਪਸੰਦ…" msgid "Preferences..." msgstr "ਮੇਰੀ ਪਸੰਦ..." #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "ਤਾਜ਼ਾ" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "ਅਕਸਰ" msgid "&Apply" msgstr "ਲਾਗੂ ਕਰੋ(&A)" msgid "Apply" msgstr "ਲਾਗੂ ਕਰੋ" msgid "&Back" msgstr "ਪਿੱਛੇ(&B)" msgid "Back" msgstr "ਪਿੱਛੇ" msgid "&Cancel" msgstr "ਰੱਦ ਕਰੋ(&C)" msgid "&Clear" msgstr "ਸਾਫ਼ ਕਰੋ(&C)" msgid "Clear" msgstr "ਸਾਫ਼ ਕਰੋ" msgid "Copy" msgstr "ਕਾਪੀ ਕਰੋ" msgid "Cu&t" msgstr "ਕੱਟੋ(&t)" msgid "Cut" msgstr "ਕੱਟੋ" msgid "Edit" msgstr "ਸੋਧ" msgid "&Quit" msgstr "ਬਾਹਰ(&Q)" msgid "Help" msgstr "ਮਦਦ" msgid "&New" msgstr "ਨਵਾਂ(&N)" msgid "New" msgstr "ਨਵਾਂ" msgid "&No" msgstr "ਨਹੀਂ(&N)" msgid "No" msgstr "ਨਹੀਂ" msgid "&OK" msgstr "ਠੀਕ ਹੈ(&O)" msgid "Open…" msgstr "ਖੋਲ੍ਹੋ…" msgid "&Open..." msgstr "ਖੋਲ੍ਹੋ(&O)..." msgid "Open..." msgstr "ਖੋਲ੍ਹੋ…" msgid "&Paste" msgstr "ਚੇਪੋ(&P)" msgid "Paste" msgstr "ਚੇਪੋ" msgid "Preferences" msgstr "ਮੇਰੀ ਪਸੰਦ" msgid "&Redo" msgstr "ਪਰਤਾਓ(&R)" msgid "Refresh" msgstr "ਤਾਜ਼ਾ ਕਰੋ" msgid "&Save as" msgstr "ਇਸ ਵਜੋਂ ਸੰਭਾਲੋ(&S)" msgid "Save as" msgstr "ਵਜੋਂ ਸੰਭਾਲੋ" msgid "Select &All" msgstr "ਸਭ ਚੁਣੋ(&A)" msgid "Select All" msgstr "ਸਭ ਚੁਣੋ" msgid "&Undo" msgstr "ਵਾਪਿਸ ਲਵੋ(&U)" msgid "&Yes" msgstr "ਹਾਂ(&Y)" msgid "Yes" msgstr "ਹਾਂ" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "Up" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "Down" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "ਖੱਬੇ" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "ਸੱਜੇ" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "shift" poedit-3.5/locales/an.mo0000644000175100001770000011347414664354152012172 00000000000000w,' ' ' '<4'q'J'g' 7(A( P(Z( a(o(v(|((((((((((((()) )%)-)?)Q) U) b)o)x) ))))))))* **-*I*`*w*}****** + ++!+ *+ 6+B+\+p++++ +1+,' ,3,P, j,u,7{,6,,) -4- 9-]D--$---"- . &.1.C.U.f.y.....#.///-/?/E/ `// //// ///0010G0f000 000000 11%1,1=1 P1?]1 1 11*11 2"2512g2m2 r2 2 2 2 22222223u!333 33 33#3<4"Y4|4 44*404!5'(5P5U5(t5T55 5 66 656 J6 T6 b6 o6|66666 666 6 666777H8 O8[8 q88 8 88;8(89:9 M9 W9e99 99:9 9<:.E:t:::::*::;; "; -;8;; ;<<&<#7<[<'l<%<<<<<e= ==========>>>>>n>EN? ???@?@,@ 'A5A2DAwAA B%B%4BZBoBB BBBBBBBBB B C CC%C(8CaCgCzCCD D DD 'D 2D ?D KDVD"gDDD D DDD DDEE &E3E LEYEiEqEyEEEEE E E EEEFF*F:FOFdFF GG%G 6GDG UGcGKjGGG GGG H H&HH5I:I(LIuI }II+II8IJ!JCJ8(KaK8PLRLcLQ@MMlMN!NuN,AOLnO]OPP7KQmQ_Q[QRRRR RRSS,SCS[SrSSSS SSSS S"STT.T6TFT\TyTTTT#TVUWUnUwU UUUUUUU V VV-VH1V5zV7V V3Va&WWWWWW.W WX$XDX[XqXwX!XX UZ bZoZ<ZZKZ$[ [[ [ [[[[ [\\\\'\9\ K\U\^\u\\\\\\ \\\ ]] ] 0]:] B]P]f]|]]]]] ]]]^%^=^U^\^a^"y^^!^ ^ ^ _ _"_*_@_V_r______J`P`.U`*`#` ``4`<a-Wa-aaaja7b)Obybb%b"bbbbc)(cRcgc'c#c$c cd-d4dJd`d#gd#d dd d:d &e4e;eSenee&e#ee( f#2fVf \ffff$ff%fffg g>%g dgngwgBggg)g;hWh^hehzhhhhhhhhii:iyWi*i+i(j,j~5T~~ ~~~~~~$,E _! 7Hdx#ƀ$$?%^ AMd{I  (5P a o|/ ńф' !*:De;Kņ<N?fUmHj%ى]#},^ȋi'%A4lƎ^3 ÏϏ&%&?f&ؐ ) !7Yu0% //:_2͒#Y} #ϓ '08JZwJ{:Ɣ9 ;/Iy',,#Y&}*ϖ$BA6Q"} 6=w)tpg9cSXE<ql#`@%TME =?G2"5dOXC{ Qf3+LeN)?_tl0CGi,Y2ja#rSu( :|45 n>R8ehU'[8 xz_;r-]a1\ 7i wy*g'~MsHVDf(0o+&xDv4 P@U${ T^kJ s<.!Zo!k]BYZH.K&LKW y}/1,Npj;mbhqJ>3P\^$IImWV`[:R|vFdAFO9*u/%z7cnb~- (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(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 languagesAlt+Always 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 errorCtrl+Cu&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 againDownDownloading latest translations…Downloading translations is disabled in this project.E&xitEditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEmail:EnterEnter 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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 %iFrequentGeneralHTML FilesHelpHide %sHide OthersHide 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.OKObsolete stringsOneOnly 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 translationsQuitQuit %sRecentRedoRefreshReload 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 languageServicesSet LanguageSet languageShift+Show AllShow 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)UntransUpUpdate 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown language“%s” is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2024-08-30 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í(0 nuevos, 0 obsoletos)(Aprender mas sobre o GNU gettext)(Nuevas: %i, obsoletas: %i)(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 suportausAlt+Pasar 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 CrowdinCtrl+&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-loAbaixoSe 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:IntroDentrar 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:Extrayendo las cadenas traducibles…Configuración d'extractorExtractorsS'ha produciu una error en executar o comando: %sHa 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 %iFreqüentCheneralFichers HTMLAduyaAmagar %sAmagar atrosAmagar 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.AcceptarLinias obsoletasUnActiva-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 borradasSalirSalir de %sRecientReferRefrescarTorna 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 preferidaServiciosEstablir l'idiomaEstablir l'idiomaMayus+Amostrar-lo totAmostrar 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 traducirAltoEsviellar-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.ZeroEnamplaraltLe fa falta treballoctrlNo 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:// URIpretraducir dende a MTmayusidioma desconoixiu“%s” no ye un fichero POT valiu.poedit-3.5/locales/vi.po0000644000175100001770000020562014664354065012213 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "Ẩn thông báo này đi" msgid "Don’t Show Again" msgstr "Không hiển thị lần sau nữa" msgid "Don’t show again" msgstr "Không hiển thị lại" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(Mới: %i, quá cũ: %i)" msgid "Collecting source files…" msgstr "Đang thu thập các tập tin nguồn…" msgid "Extracting translatable strings…" msgstr "Đang giải nén các chuỗi có thể dịch…" 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." msgid "Merging differences…" msgstr "Đang trộn các khác biệt…" msgid "Updating translations" msgstr "Đang cập nhật bản dịch" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "Tệp \"%s\" không thể mở." msgid "Invalid file" msgstr "Tập tin không hợp lệ" #, c-format msgid "Malformed header: “%s”" msgstr "Phần đầu dị hình: “%s”" msgid "PO Translation Files" msgstr "PO Dịch Tập Tin" msgid "POT Translation Templates" msgstr "PO Dịch Mẫu" msgid "XLIFF Translation Files" msgstr "Các tập tin dịch XLIFF" msgid "JSON Translation Files" msgstr "Tập tin dịch JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "Tập tin dịch Flutter" msgid "All Translation Files" msgstr "Tất Cả Các Tập Tin Bản Dịch" 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." 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." #, 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" #, 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." #, c-format msgid "Couldn’t save file %s." msgstr "Không thể lưu tập tin %s." msgid "Screenshots:" msgstr "Ảnh chụp màn hình:" #, 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." #, 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)." 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" 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" 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." 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." 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)." #, 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." msgid "Error saving file" msgstr "Lỗi lưu tập tin" #, c-format msgid "“%s” is not a valid POT file." msgstr "Tập tin '%s' không hợp định dạng POT." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Lỗi khi tải tệp XLIFF: %s" #, 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 msgid "Broken markup in translation string." msgstr "Đánh dấu bị gãy trong chuỗi dịch." msgid "(Use default language)" msgstr "(Dùng ngôn ngữ mặc định)" msgid "Language selection" msgstr "Lựa chọn ngôn ngữ" msgid "Select your preferred language" msgstr "Chọn ngôn ngữ ưa thích" msgid "You must restart Poedit for this change to take effect." msgstr "Bạn phải khởi động lại Poedit để các thay đổi có tác dụng." msgid "Add Account" msgstr "Thêm tài khoản" msgid "Add account" msgstr "Thêm tài khoản" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "Tìm hiểu thêm về %s" 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 đó." msgid "How does cloud sync work?" msgstr "Đồng bộ đám mây hoạt động như thế nào?" msgid "Account" msgstr "Tài khoản" msgid "(not signed in)" msgstr "(chưa đăng nhập)" msgid "File" msgstr "Tập tin" msgid "Open cloud translation" msgstr "Mở dịch đám mây" msgid "Manage accounts" msgstr "Quản lý tài khoản" msgid "Project:" msgstr "Dự án:" msgid "Language:" msgstr "Ngôn ngữ:" msgid "Sign in to Cloud Account" msgstr "Đăng nhập vào tài khoản đám mây" msgid "Sign in to cloud account" msgstr "Đăng nhập vào tài khoản đám mây" 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." 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" #, c-format msgid "Sign in to %s" msgstr "Đăng nhập vào %s" msgid "Syncing" msgstr "Đồng bộ" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, 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. #, c-format msgid "Uploading translations to %s failed." msgstr "Tải bản dịch lên %s không thành công." msgid "Syncing error" msgstr "Lỗi đồng bộ" msgid "Add" msgstr "Thêm" msgid "Unknown Crowdin error." msgstr "Lỗi Crowdin không xác định." msgid "Not authorized, please sign in again." msgstr "Không có thẩm quyền, xin vui lòng đăng nhập lại." 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." msgid "Sign In" msgstr "Đăng Nhập" msgid "Sign in" msgstr "Đăng nhập" msgid "Sign Out" msgstr "Đăng Xuất" msgid "Sign out" msgstr "Đăng xuất" msgid "Learn more about Crowdin" msgstr "Tìm hiểu thêm về Crowdin" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" "Crowdin là một nền tảng quản lý bản địa hóa trực tuyến và công cụ dịch thuật " "cộng tác." msgid "Waiting for authentication…" msgstr "Đang chờ xác thực…" msgid "Updating user information…" msgstr "Đang cập nhật thông tin người dùng…" msgid "Sign in to Crowdin" msgstr "Đăng nhập vào Crowdin" msgid "Syncing with Crowdin failed." msgstr "Đồng bộ với Crowdin không thành công." msgid "Crowdin error" msgstr "Crowdin lỗi" msgid "Uploading translations…" msgstr "Tải lên bản dịch…" msgid "&Copy" msgstr "&Sao" msgid "Learn more" msgstr "Tìm hiểu thêm" msgid "&Help" msgstr "T&rợ giúp" 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." msgid "Error opening file" msgstr "Lỗi mở tập tin" 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." msgid "don’t delete temporary files (for debugging)" msgstr "không xóa tập tin tạm (để gỡ lỗi)" msgid "handle a poedit:// URI" msgstr "xử lý một poedit:// URI" msgid "go to item at given line number" msgstr "nhảy tới mục với số dòng đã cho" msgid "Failed to communicate with Poedit process." msgstr "Không thể giao tiếp với quá trình Poedit." #, c-format msgid "Unhandled exception occurred: %s" msgstr "Chưa được xử lý ngoại lệ: %s" msgid "Select translation template" msgstr "Chọn mẫu bản dịch" msgid "Select translation file" msgstr "Chọn tập tin bản dịch" 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." 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." #, 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." #, c-format msgid "File “%s” doesn’t exist." msgstr "Tập tin \"%s\" không tồn tại." 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". #, 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." msgid "Install" msgstr "Cài đặt" #, 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." msgid "Reload file" msgstr "Tải lại tập tin" 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." msgid "Ignore" msgstr "Lờ đi" msgid "Reload File" msgstr "Tải lại tập tin" 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?" msgid "Save changes" msgstr "Lưu thay đổi" 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." msgid "Save" msgstr "Lưu" msgid "Do&n’t save" msgstr "Khô&ng lưu" msgid "Don’t Save" msgstr "Không Lưu" 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." msgid "Cancel" msgstr "Hủy bỏ" msgid "Save Anyway" msgstr "Vẫn Lưu" msgid "Save anyway" msgstr "Vẫn lưu" msgid "Save as…" msgstr "Lưu như…" msgid "Compile to…" msgstr "Biên dịch sang…" msgid "Compiled Translation Files" msgstr "Các tập tin bản dịch đã được biên dịch" msgid "Export to HTML…" msgstr "" msgid "HTML Files" msgstr "Tập tin HTML" #, c-format msgid "In: %s" msgstr "Trong: %s" msgid "Source code not available." msgstr "Mã nguồn không có sẵn." msgid "Updating failed" msgstr "Cập Nhật không thành công" 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." msgid "Permission denied." msgstr "Quyền bị từ chối." 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. 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. 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." msgid "Translation entries in the file are probably incorrect." msgstr "Các mục dịch trong tập tin có thể không chính xác." msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "" "Cập nhật tập tin không thành công. Nhấp vào 'Chi tiết >>' để biết chi tiết." msgid "Open translation template" msgstr "Mở mẫu bản dịch" #, 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." msgid "Validation results" msgstr "Kết quả xác nhận" 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 đó." msgid "The file was saved safely." msgstr "Tệp được lưu một cách an toàn." 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." 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." 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." 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." msgid "No problems with the translation found." msgstr "Không tìm thấy lỗi nào trong bản dịch." #, 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." msgid "The translation is ready for use." msgstr "Bản dịch đã sẵn sàng để sử dụng." #, 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\"." 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." msgid "Language of the translation isn’t set." msgstr "Ngôn ngữ của bản dịch chưa được đặt." msgid "Set Language" msgstr "Đặt ngôn ngữ" msgid "Set language" msgstr "Đặt ngôn ngữ" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." msgid "" "Suggestions are not available if the translation language is not set " "correctly. Other features, such as plural forms, may be affected as well." msgstr "" "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." 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." msgid "Fix Language" msgstr "Sửa ngôn ngữ" msgid "Fix language" msgstr "Sửa chữa ngôn ngữ" 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." 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" msgid "Required header Plural-Forms is missing." msgstr "Phần đầu Plural-Forms đã yêu cầu bị thiếu." #, 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\")." msgid "Fix the Header" msgstr "Sửa Phần Đầu" 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". #, 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.")" msgid "Review" msgstr "Xem lại" 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?" #, 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" msgid "Load English" msgstr "Tải tiếng Anh" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Đã dịch: %d of %d (%d %%)" #, c-format msgid "Remaining: %d" msgstr "Còn lại: %d" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d lỗi" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d mục" msgid " (unsaved)" msgstr " (chưa lưu)" msgid " (modified)" msgstr " (đã sửa)" #, c-format msgid "Failed to update translation memory: %s" msgstr "Gặp lỗi khi cập nhật bộ nhớ dịch: %s" msgid "Remove same-as-source translations" msgstr "" msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" msgid "Keep" msgstr "Giữ lại" msgid "Remove" msgstr "" 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" 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?" 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." msgid "Purge" msgstr "Thanh lọc" msgid "Copy from source text" msgstr "Chép từ chuỗi nguồn" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "Xóa phần dịch" msgid "Clear Translation" msgstr "Xóa phần dịch" msgid "Edit comment" msgstr "Sửa chú thích" msgid "Edit Comment" msgstr "Sửa chú thích" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "Lần xuất hiện mã" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "Lần xuất hiện mã" msgid "Hide Sidebar" msgstr "Ẩn Thanh Công Cụ" msgid "Show Sidebar" msgstr "Hiện thanh công cụ" msgid "Hide Status Bar" msgstr "Ẩn Thanh Trạng Thái" msgid "Show Status Bar" msgstr "Hiển Thanh Trạng Thái" msgid "String length in characters: translation | source" msgstr "Độ dài chuỗi ký tự: dịch | nguồn" msgid "String length in characters" msgstr "Độ dài chuỗi ký tự" msgid "Source text" msgstr "Văn bản nguồn" msgid "Singular" msgstr "Dạng số ít" msgid "Plural" msgstr "Số nhiều" msgid "Translation" msgstr "Bản dịch" msgid "Pre-translated" msgstr "Dịch trước" 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. msgid "Needs work" msgstr "Cần làm việc" 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." msgid "Create new translation" msgstr "Tạo bản dịch mới" 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 msgid "Source text ID" msgstr "" msgid "Everything" msgstr "Mọi thứ" #, c-format msgid "Form %i" msgstr "Dạng %i" #, c-format msgid "Form %i (unused)" msgstr "Form %i (không sử dụng)" msgid "Zero" msgstr "Số không" msgid "One" msgstr "Một" msgid "Two" msgstr "Hai" msgid "Other" msgstr "Khác" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, 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 #, c-format msgid "String identifier: %s" msgstr "Mã định danh chuỗi: %s" #, 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." #, c-format msgid "%s format" msgstr "định dạng %s" #, c-format msgid "Translation — %s" msgstr "Bản dịch — %s" msgid "ID" msgstr "ID" #, c-format msgid "Source text — %s" msgstr "Mã nguồn văn bản — %s" msgid "unknown language" msgstr "không hiểu ngôn ngữ" #, c-format msgid "Network error: %s (%d)" msgstr "" msgid "Unknown error" msgstr "" #, c-format msgid "Failed command: %s" msgstr "Lệnh bị sai: %s" msgid "Failed to merge gettext catalogs." msgstr "Lỗi trộn catalog gettext." msgid "Open in Editor" msgstr "Mở trong Trình Soạn Thảo" msgid "Open in editor" msgstr "Mở trong trình soạn thảo" 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." msgid "No usage information" msgstr "Không có thông tin sử dụng" #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d lần xuất hiện mã" msgid "Source code not found" msgstr "Không tìm thấy mã nguồn" 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ự." msgid "File cannot be opened" msgstr "Tập tin không thể mở được" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "Poedit đã không thể mở tập tin “%s”." msgid "Find" msgstr "Tìm" msgid "Replace" msgstr "Thay thế" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "Tùy chọn" msgid "Ignore case" msgstr "Không phân biệt HOA/thường" msgid "Wrap around" msgstr "Ngắt khoảng" msgid "Whole words only" msgstr "Phải khớp toàn bộ các từ" msgid "Find in source texts" msgstr "Tìm trong các văn bản nguồn" msgid "Find in translations" msgstr "Tìm trong phần dịch" msgid "Find in comments" msgstr "Tìm trong chú thích" msgid "Close" msgstr "Đóng" msgid "Replace &All" msgstr "Thay Thế &Tất Cả" msgid "Replace &all" msgstr "Thay Thế &tất cả" msgid "&Replace" msgstr "T&hay thế" msgid "< &Previous" msgstr "< &Trước" msgid "&Next >" msgstr "&Tiếp theo >" msgid "String to find" msgstr "Chuỗi cần tìm" msgid "Replacement string" msgstr "Thay thế chuỗi" #, c-format msgid "Cannot execute program: %s" msgstr "Không thể thi hành chương trình: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "Tên ngôn ngữ hoặc mã" msgid "Translation Language" msgstr "Ngôn ngữ bản dịch" msgid "Language of the translation:" msgstr "Ngôn ngữ của bản dịch:" msgid "All strings" msgstr "Tất cả chuỗi" msgid "Couldn’t download Localazy project details." msgstr "Không thể tải xuống chi tiết dự án Localazy." msgid "There was an error when uploading translations to Localazy." msgstr "" msgid "Projects" msgstr "Dự án" msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" msgid "Add Project" msgstr "Thêm dự án" msgid "Add project" msgstr "Thêm dự án" msgid "Poedit - Catalogs manager" msgstr "Poedit - Quản lý catalog" msgid "Edit…" msgstr "Chỉnh sửa…" msgid "Create new translations project" msgstr "Tạo một dự án dịch mới" msgid "Delete the project" msgstr "Xóa bỏ dự án" msgid "Edit the project" msgstr "Chỉnh sửa dự án" msgid "Update all" msgstr "Cập nhật tất cả" msgid "Update all catalogs in the project" msgstr "Cập nhật tất cả các catalog trong dự án" msgid "Total" msgstr "Tổng cộng" msgid "Untrans" msgstr "Chưa dịch" msgctxt "column/row header" msgid "Needs Work" msgstr "Cần làm" msgid "Errors" msgstr "Lỗi" msgid "Last modified" msgstr "Lần sửa cuối" msgid "Select directory" msgstr "Chọn thư mục" msgid "Directories:" msgstr "Thư mục:" msgid "" msgstr "" #, c-format msgid "Do you want to delete project “%s”?" msgstr "Bạn có muốn xóa dự án “%s” không?" msgid "Delete project" msgstr "Xóa dự án" 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." msgid "Confirmation" msgstr "Sự xác thực" 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?" 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." msgid "Check for Updates…" msgstr "Kiểm tra cập nhật…" msgid "Catalogs Manager" msgstr "Quản lý các catalog" msgid "&Preferences…" msgstr "&Cá nhân hóa…" msgid "&Edit" msgstr "&Biên tập" msgid "Undo" msgstr "Huỷ thao tác trước" msgid "Redo" msgstr "Làm lại" msgid "Paste and Match Style" msgstr "Dán và Khớp Kiểu" msgid "Delete" msgstr "Xóa bỏ" msgid "Spelling and Grammar" msgstr "Chính Tả và Ngữ Pháp" msgid "Show Spelling and Grammar" msgstr "Hiện Chính Tả và Ngữ Pháp" msgid "Check Document Now" msgstr "Kiểm Tra Tài Liệu Ngay" msgid "Check Spelling While Typing" msgstr "Kiểm Tra Chính Tả Trong Khi Gõ" msgid "Check Grammar With Spelling" msgstr "Kiểm Tra Ngữ Pháp Với Chính Tả" msgid "Correct Spelling Automatically" msgstr "Sửa Chính Tả Tự Động" msgid "Substitutions" msgstr "Thay Thế" msgid "Show Substitutions" msgstr "Hiển Thị Thay Thế" msgid "Smart Copy/Paste" msgstr "Sao Chép/Dán Thông Minh" msgid "Smart Quotes" msgstr "Trích Dẫn Thông Minh" msgid "Smart Dashes" msgstr "Dấu Gạch Ngang Thông Minh" msgid "Smart Links" msgstr "Liên Kết Thông Minh" msgid "Text Replacement" msgstr "Thay Thế Văn Bản" msgid "Transformations" msgstr "Biến Đổi" msgid "Make Upper Case" msgstr "Chữ HOA" msgid "Make Lower Case" msgstr "Chữ thường" msgid "Capitalize" msgstr "Viết Hoa" msgid "Speech" msgstr "Lời nói" msgid "Start Speaking" msgstr "Bắt Đầu Nói" msgid "Stop Speaking" msgstr "Dừng Nói" msgid "&View" msgstr "&Trình bày" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item 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 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 msgid "Enter Full Screen" msgstr "Nhập Toàn Màn Hình" msgid "Window" msgstr "Cửa sổ" msgid "Minimize" msgstr "Thu nhỏ" msgid "Zoom" msgstr "Phóng to" msgid "Welcome to Poedit" msgstr "Chào mừng bạn dùng Poedit" msgid "Bring All to Front" msgstr "Mang Tất Cả ra Trước" msgid "Information about the translator" msgstr "Thông tin về các dịch giả" msgid "Name:" msgstr "Tên:" msgid "Your Name" msgstr "Tên Bạn" msgid "Email:" msgstr "Email:" msgid "you@example.com" msgstr "you@example.com" 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." msgid "Editing" msgstr "Đang chỉnh sửa" msgid "Automatically compile MO file when saving" msgstr "Tự động biên dịch tập tin MO khi lưu" msgid "Show summary after updating files" msgstr "Hiện tóm tắt sau khi cập nhật tệp" msgid "Check spelling" msgstr "Kiểm tra lỗi chính tả" msgid "Always change focus to text input field" msgstr "Luôn luôn để focus vào ô nhập liệu" 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." msgid "Appearance" msgstr "Giao diện" msgid "Use custom list font:" msgstr "Sử dụng danh sách tùy chỉnh phông:" msgid "Use custom text fields font:" msgstr "Sử dụng font tùy chỉnh các trường văn bản:" 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 msgid "(requires Windows 8 or newer)" msgstr "(yêu cầu Windows 8 hay mới hơn)" msgid "General" msgstr "Tổng quan" msgid "Use translation memory" msgstr "Dùng bộ nhớ bản dịch" msgid "Manage…" msgstr "Quản lý…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "Khi cập nhật từ nguồn" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "kết hợp mờ trong tệp" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "dịch trước từ TM" 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ó." msgid "Stored translations:" msgstr "Các bản dịch được lưu trữ:" msgid "Database size on disk:" msgstr "Kích thước của cơ sở dữ liệu trên đĩa:" msgid "Import Translation Files…" msgstr "Nhập tệp dịch…" msgid "Import translation files…" msgstr "Nhập tệp dịch…" msgid "Import From TMX…" msgstr "Nhập từ TMX…" msgid "Import from TMX…" msgstr "Nhập từ TMX…" msgid "Export To TMX…" msgstr "Xuất sang TMX…" 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). msgid "Reset" msgstr "Thiết lập lại" msgid "Select translation files to import" msgstr "Chọn các tập tin bản dịch để nhập vào" msgid "Translation Memory" msgstr "Cơ sở dữ liệu dịch" msgid "Importing translations…" msgstr "Đang nhập các bản dịch…" #, c-format msgid "Error loading translation file “%s”." msgstr "Lỗi tải tập tin bản dịch “%s”." msgid "Finalizing…" msgstr "Hoàn thành…" msgid "Select TMX files to import" msgstr "Chọn một tập tin TMX để nhập" msgid "TMX Files" msgstr "Tập tin TMX" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "Nhập bộ nhớ bản dịch từ \"%s\" đã thất bại." msgid "Import error" msgstr "Lỗi nhập dữ liệu" msgid "Export as…" msgstr "Xuất ra như…" msgid "Exporting translations…" msgstr "Xuất các bản dịch…" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "Xuất bộ nhớ bản dịch ra \"%s\" đã thất bại." msgid "Export error" msgstr "Lỗi xuất" msgid "Reset translation memory" msgstr "Đặt lại bộ nhớ dịch thuật" 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?" 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. msgid "TM" msgstr "TM" msgid "" "Source code extractors are used to find translatable strings in the source " "code files and extract them so that they can be translated." msgstr "" "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." msgid "Custom Extractors:" msgstr "Tùy Chọn Giải Nén:" msgid "Custom extractors:" msgstr "Tùy chọn giải nén:" msgid "GNU gettext" msgstr "GNU gettext" 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)." msgid "Delete extractor" msgstr "Xóa trình trích xuất" #, 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\"?" msgid "Extractors" msgstr "Trình trích xuất" msgid "Accounts" msgstr "Tài khoản" msgid "Automatically check for updates" msgstr "Tự động kiểm tra cập nhật" msgid "Include beta versions" msgstr "Bao gồm cả bản thử nghiệm" 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." msgid "Updates" msgstr "Cập Nhật" 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." msgid "Line endings:" msgstr "Dòng kết thúc:" msgid "Unix (recommended)" msgstr "Unix (nên dùng)" msgid "Windows" msgstr "Kiểu Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "Ngắt tại:" msgid "Preserve formatting of existing files" msgstr "Duy trì định dạng của tập tin đã có" msgid "Advanced" msgstr "Nâng cao" msgid "Settings" msgstr "" msgid "Preparing strings…" msgstr "Đang chuẩn bị các chuỗi…" msgid "Pre-translating from translation memory…" msgstr "Đang dịch trước từ bộ nhớ dịch…" #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "Chuỗi %u đã được dịch trước" msgid "Pre-translating…" msgstr "Đang dịch trước…" 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. msgid "Pre-translate" msgstr "Dịch trước" msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" msgid "Cannot pre-translate from unknown language." msgstr "Không thể dịch trước từ ngôn ngữ không xác định." msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" msgid "Only fill in exact matches" msgstr "Chỉ điền vào các từ khớp chính xác" msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" 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" 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." 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ọ." #, 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." 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." msgid "No entries could be pre-translated." msgstr "Không có mục có thể được trước dịch." 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." msgid "Cancelling…" msgstr "Đang hủy…" msgid "Drag Folders or Files Here" msgstr "Kéo các thư mục hoặc tập tin ở đây" msgid "Drag folders or files here" msgstr "Kéo các thư mục hoặc tập tin ở đây" msgid "Add Folders…" msgstr "Thêm Thư Mục…" msgid "Add folders…" msgstr "Thêm thư mục…" msgid "Add Files…" msgstr "Thêm Tệp Tin…" msgid "Add files…" msgstr "Thêm tệp tin…" msgid "Add Wildcard…" msgstr "Thêm ký tự đại diện…" 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) 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" msgid "Show in Explorer" msgstr "Hiển thị trong Explorer" msgid "Show in Folder" msgstr "Hiển thị trong Thư mục" msgid "Paths" msgstr "Đường dẫn" msgid "Excluded paths" msgstr "Đường dẫn loại trừ" msgid "Advanced extraction settings" msgstr "Cài đặt giải nén nâng cao" msgid "Extract notes for translators from:" msgstr "Giải nén ghi chú cho người dịch từ:" msgid "Comments prefixed with:" msgstr "Bình luận bắt đầu bằng:" msgid "All comments" msgstr "Tất cả bình luận" msgid "Additional xgettext flags:" msgstr "Bổ sung cờ xgettext :" msgid "Additional keywords" msgstr "Từ khoá bổ xung" msgid "Name of the project the translation is for" msgstr "Tên của dự án của bản dịch" msgid "Team name and email address or URL" msgstr "Tên nhóm và địa chỉ email hoặc URL" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "ví dụ: nplurals=2; plural=(n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (nên dùng)" 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." msgid "Placeholders correctness" msgstr "" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "" #, c-format msgid "Superfluous placeholder “%s” that isn’t in source text." msgstr "" msgid "Plural form translations" msgstr "" 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." msgid "Inconsistent upper/lower case" msgstr "Chữ hoa/chữ thường không nhất quán" msgid "The translation should start as a sentence." msgstr "Bản dịch nên bắt đầu như là một câu." 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." msgid "Inconsistent whitespace" msgstr "Khoảng trắng không nhất quán" 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." 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ó." 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." 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ó." 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." 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ó." msgid "Punctuation checks" msgstr "Kiểm tra dấu câu" #, c-format msgid "The translation should end with “%s”." msgstr "Bản dịch nên kết thúc với \"%s\"." #, 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\"." #, 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\"." msgid "Cloud" msgstr "" msgid "Clear Menu" msgstr "Xóa menu" msgid "Clear menu" msgstr "Xóa menu" msgid "Comment:" msgstr "Chú thích:" msgid "Update" msgstr "Nâng cấp" msgid "&Delete" msgstr "&Xóa" msgid "Delete the comment" msgstr "Xóa bình luận" msgid "Edit project" msgstr "Chỉnh sửa dự án" msgid "Project name:" msgstr "Tên dự án:" msgid "Browse" msgstr "Duyệt" msgid "Add directory to the list" msgstr "Thêm thư mục vào danh sách" msgid "OK" msgstr "Đồng ý" msgid "&File" msgstr "&Chính" msgid "&New…" msgstr "&Mới…" msgid "New from &POT/PO file…" msgstr "Tạo mới từ tệp tin &POT/PO…" msgid "New From &POT/PO File…" msgstr "Tạo Mới Từ Tệp Tin &POT/PO…" msgid "&Open…" msgstr "&Mở…" msgid "Open Recent" msgstr "Mở gần đây" msgid "Open recent" msgstr "Mở tập tin gần đây" msgid "Open cloud translation…" msgstr "Mở dịch đám mây…" msgid "Open Cloud Translation…" msgstr "Mở dịch đám mây…" msgid "&Start window" msgstr "Cửa sổ khởi động" msgid "&Start Window" msgstr "Cửa sổ khởi động" msgid "Catalogs &manager" msgstr "&Quản lý các catalog" msgid "Catalogs &Manager" msgstr "&Quản lý các catalog" msgid "&Close" msgstr "Đó&ng" msgid "&Save" msgstr "&Lưu" msgid "Save &as…" msgstr "Lưu &như…" msgid "Save &As…" msgstr "Lưu &Như…" msgid "Compile to MO…" msgstr "Biên dịch sang MO…" msgid "E&xport to HTML…" msgstr "" msgid "Check for updates…" msgstr "Kiểm tra cập nhật…" msgid "Settings…" msgstr "Cài đặt…" msgid "&Preferences" msgstr "&Cá nhân hóa" msgid "E&xit" msgstr "Thoá&t" msgid "Quit" msgstr "Thoát" msgid "Copy from singular" msgstr "Sao chép từ số ít" msgid "Copy From Singular" msgstr "Sao chép từ số ít" msgid "Translation needs &work" msgstr "Bản dịch cần làm &việc" msgid "Translation Needs &Work" msgstr "Bản Dịch Cần Làm &Việc" msgid "Edit &comment" msgstr "Sửa &chú thích" msgid "Edit &Comment" msgstr "Sửa &chú thích" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "Đề xuất" msgid "&Find…" msgstr "&Tìm…" msgid "Replace…" msgstr "Thay thế…" msgid "Find next" msgstr "Tìm tiếp" msgid "Find previous" msgstr "Tìm lùi" msgid "Find and Replace…" msgstr "Tìm và Thay thế…" msgid "Find Next" msgstr "Tìm tiếp" msgid "Find Previous" msgstr "Tìm lùi" msgid "Show string &ID" msgstr "Hiển thị &ID chuỗi" msgid "Show String &ID" msgstr "Hiển thị &ID chuỗi" msgid "Show warnings" msgstr "Hiển thị cảnh báo" msgid "Show Warnings" msgstr "Hiển thị cảnh báo" msgid "Sort by &file order" msgstr "Sắp xếp theo thứ tự &tập tin" msgid "Sort by &File Order" msgstr "Sắp xếp theo thứ tự &Tập tin" msgid "Sort by &source" msgstr "Sắp xếp theo &chuỗi nguồn" msgid "Sort by &Source" msgstr "Sắp xếp theo &chuỗi nguồn" msgid "Sort by &translation" msgstr "Sắp xếp theo chuỗi &dịch" msgid "Sort by &Translation" msgstr "Sắp xếp theo chuỗi &dịch" msgid "&Group by context" msgstr "Nhóm theo n&gữ cảnh" msgid "&Group By Context" msgstr "Nhóm Theo N&gữ Cảnh" msgid "Entries with errors first" msgstr "Mục có lỗi đầu tiên" msgid "Entries with Errors First" msgstr "Mục Có Lỗi Đầu Tiên" msgid "&Untranslated entries first" msgstr "Mục &chưa dịch đầu tiên" msgid "&Untranslated Entries First" msgstr "Mục &chưa dịch đầu tiên" msgid "&Show code occurrences" msgstr "" msgid "&Show Code Occurrences" msgstr "" msgid "Show sidebar" msgstr "Hiện thanh công cụ" msgid "Show status bar" msgstr "Hiển thanh trạng thái" msgid "&Translation" msgstr "&Bản dịch" msgid "&Update from source code" msgstr "&Cập nhật từ mã nguồn" msgid "&Update from Source Code" msgstr "&Cập nhật từ mã nguồn" msgid "Update from &POT file…" msgstr "Cập nhật từ tập tin &POT…" msgid "Update from &POT File…" msgstr "Cập nhật từ tập tin &POT…" msgid "Sync with Crowdin" msgstr "Đồng bộ với Crowdin" msgid "Pre-&translate…" msgstr "Dịch &trước…" msgid "&Validate translations" msgstr "&Thẩm tra bản dịch" msgid "&Validate Translations" msgstr "&Thẩm tra bản dịch" msgid "Remove Same-as-Source Translations" msgstr "" msgid "&Purge deleted translations" msgstr "&Thanh lọc các chuỗi đã xóa" msgid "&Purge Deleted Translations" msgstr "&Thanh lọc các chuỗi đã xóa" msgid "&Properties…" msgstr "&Thuộc tính…" msgid "&Go" msgstr "Nhả&y đến" msgid "&Done and next" msgstr "&Thực hiện và làm tiếp" msgid "&Done and Next" msgstr "&Thực hiện và làm tiếp" msgid "Previously edited" msgstr "Chỉnh sửa trước đó" msgid "Previously Edited" msgstr "Chỉnh sửa trước đó" msgid "&Previous translation" msgstr "Bản dịch &Trước" msgid "&Previous Translation" msgstr "Bản Dịch &Trước" msgid "&Next translation" msgstr "Bản dịch &kế tiếp" msgid "&Next Translation" msgstr "Bản Dịch &Kế Tiếp" msgid "P&revious unfinished" msgstr "Câu cần dịch liền t&rước" msgid "P&revious Unfinished" msgstr "Câu cần dịch liền t&rước" msgid "Ne&xt unfinished" msgstr "Câu chưa dịch &tiếp theo" msgid "Ne&xt Unfinished" msgstr "Câu chưa dịch &tiếp theo" msgid "Previous plural form" msgstr "Dạng số nhiều trước" msgid "Previous Plural Form" msgstr "Dạng số nhiều trước" msgid "Next plural form" msgstr "Dạng số tiếp theo" msgid "Next Plural Form" msgstr "Dạng số tiếp theo" msgid "&Online help" msgstr "Trợ giúp &trực tuyến" msgid "&Online Help" msgstr "Trợ Giúp &Trực tuyến" msgid "&GNU gettext manual" msgstr "Sổ tay hướng dẫn sử dụng &GNU gettext" msgid "&GNU gettext Manual" msgstr "Sổ tay hướng dẫn sử dụng &GNU gettext" msgid "&About Poedit" msgstr "&Giới thiệu về Poedit" msgid "&About" msgstr "&Giới thiệu" msgid "Extractor setup" msgstr "Thiết lập Extractor" 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):" msgid "Invocation:" msgstr "Lệnh gọi:" msgid "Command to extract translations:" msgstr "Lệnh để giải nén các bản dịch:" 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)." msgid "An item in keywords list:" msgstr "Một mục tin trong danh sách các từ khóa:" 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." 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:" #, 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." msgid "Source code charset:" msgstr "Bảng mã dữ liệu nguồn:" #, 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ự." msgid "Translation Properties" msgstr "Thuộc tính dịch" msgid "Project name and version:" msgstr "Tên và phiên bản của dự án:" msgid "Language team:" msgstr "Nhóm ngôn ngữ:" msgid "Plural forms:" msgstr "Hình thức số nhiều:" msgid "Use default rules for this language" msgstr "Sử dụng quy tắc mặc định cho ngôn ngữ này" msgid "Use custom expression" msgstr "Dùng biểu thức tự chọn" msgid "Learn about plural forms" msgstr "Tìm hiểu dạng thức số nhiều" msgid "Charset:" msgstr "Bảng mã ký tự:" msgid "Advanced Extraction Settings…" msgstr "Cài Đặt Giải Nén Nâng Cao…" msgid "Advanced extraction settings…" msgstr "Cài đặt giải nén nâng cao…" msgid "Translation properties" msgstr "Thuộc tính bản dịch" msgid "Sources Paths" msgstr "Đường dẫn nguồn" msgid "Sources paths" msgstr "Đường dẫn mã nguồn" msgid "Extract text from source files in the following directories:" msgstr "Trích xuất văn bản từ mã nguồn trong những thư mục sau đây:" msgid "Base path:" msgstr "Đường dẫn cơ sở:" msgid "Sources Keywords" msgstr "Nguồn từ khóa" msgid "Sources keywords" msgstr "Từ khóa dùng cho mã nguồn" 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:" 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ợ" msgid "Learn about gettext keywords" msgstr "Học thêm về các từ khóa của GNU gettext" msgid "Update summary" msgstr "Tóm tắt sơ lược quá trình cập nhật" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" msgid "New strings" msgstr "Chuỗi mới" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" msgid "Obsolete strings" msgstr "Chuỗi đã cũ" msgid "(0 new, 0 obsolete)" msgstr "(0 mới, 0 cũ)" msgid "Open" msgstr "" msgid "Open file" msgstr "Mở tập tin" msgid "Save file" msgstr "Lưu tập tin" msgid "Validate" msgstr "Thẩm tra" msgid "Check for errors in the translation" msgstr "Tìm kiếm các lỗi trong bản dịch" msgid "Update from code" msgstr "Cập nhật từ mã" msgid "Update from Code" msgstr "Cập nhật từ mã" msgid "Update from source code" msgstr "Cập nhật từ mã nguồn" msgid "Sidebar" msgstr "Thanh tiện ích" 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. msgid "Previous source text" msgstr "Văn bản nguồn trước đó" 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." msgid "Notes for translators" msgstr "Ghi chú dành cho người dịch" msgid "Comment" msgstr "Bình luận" msgid "Add comment" msgstr "Thêm bình luận" msgid "Add Comment" msgstr "Thêm Bình Luận" msgid "Delete From Translation Memory" msgstr "Xóa từ bộ nhớ dịch thuật" msgid "Delete from translation memory" msgstr "Xóa từ bộ nhớ dịch thuật" 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). 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). msgid "No Matches Found" msgstr "Không tìm thấy các từ khớp" 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." msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" msgid "The TMX file is malformed." msgstr "Tập tin TMX bị sai dạng." msgid "No translations were found in the TMX file." msgstr "Không có bản dịch đã được tìm thấy trong tập tin TMX." #, 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)." #, c-format msgid "Translation memory error: %s (%d)." msgstr "Lỗi bộ nhớ dịch thuật: %s (%d)." msgid "Cannot create temporary directory." msgstr "Không thể tạo thư mục tạm." 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." msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "Translators typically use PO template files (POTs) prepared for them by the " "developer." msgstr "" "Các chuỗi có thể dịch không được tự động thêm vào bằng tay trong hệ thống " "Gettext, nhưng lại có thể tự động\n" "rút trích ra từ mã nguồn. Theo cách này chúng luôn được cập nhật và chính " "xác.\n" "Những người dịch thường dùng các tập tin mẫu PO (POT) được chuẩn bị sẵn dành " "cho họ từ người phát triển." msgid "(Learn more about GNU gettext)" msgstr "(Học thêm về GNU gettext)" 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:" msgid "Update from POT" msgstr "Cập nhật từ tệp tin POT" 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ó." 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:" msgid "Extract from sources" msgstr "Trích từ mã nguồn" msgid "Configure source code extraction in Properties." msgstr "Cấu hình việc rút trích mã nguồn trong `Thuộc tính'." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #, c-format msgid "Version %s" msgstr "Phiên bản %s" msgid "Create new" msgstr "Tạo mới" msgid "Create new translation from POT template." msgstr "Tạo bản dịch mới từ mẫu POT." msgid "Browse files" msgstr "Duyệt tệp tin" msgid "Open and edit translation files." msgstr "Mở và chỉnh sửa các tập tin dịch." msgid "Translate cloud project" msgstr "" msgid "Collaborate with other people online." msgstr "Cộng tác trực tuyến với những người khác." msgid "Recent files" msgstr "Tập tin gần đây" msgid "Sync" msgstr "Đồng bộ" 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") #, 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. #, c-format msgid "%s Preferences" msgstr "Cấu hình %s" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "Dịch vụ" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "Ẩn %s" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "Ẩn Những Thứ Khác" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "Hiển Thị Tất Cả" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "Thoát %s" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "Cá nhân hóa…" msgid "Preferences..." msgstr "Cá nhân hóa..." #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "Gần đây" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "Thường xuyên" msgid "&Apply" msgstr "&Áp dụng" msgid "Apply" msgstr "Áp dụng" msgid "&Back" msgstr "&Quay lại" msgid "Back" msgstr "Quay lại" msgid "&Cancel" msgstr "&Hủy bỏ" msgid "&Clear" msgstr "&Dọn dẹp" msgid "Clear" msgstr "Dọn dẹp" msgid "Copy" msgstr "Sao chép" msgid "Cu&t" msgstr "Cắ&t" msgid "Cut" msgstr "Cắt" msgid "Edit" msgstr "Biên tập" msgid "&Quit" msgstr "&Thoát" msgid "Help" msgstr "Trợ giúp" msgid "&New" msgstr "&Mới" msgid "New" msgstr "Mới" msgid "&No" msgstr "&Không" msgid "No" msgstr "Không" msgid "&OK" msgstr "&Đồng ý" msgid "Open…" msgstr "Mở…" msgid "&Open..." msgstr "&Mở..." msgid "Open..." msgstr "Mở..." msgid "&Paste" msgstr "&Dán" msgid "Paste" msgstr "Dán" msgid "Preferences" msgstr "Tùy chọn" msgid "&Redo" msgstr "&Làm lại" msgid "Refresh" msgstr "Làm mới" msgid "&Save as" msgstr "&Lưu như" msgid "Save as" msgstr "Lưu như" msgid "Select &All" msgstr "Chọn &Tất Cả" msgid "Select All" msgstr "Chọn Tất cả" msgid "&Undo" msgstr "&Hoàn tác" msgid "&Yes" msgstr "&Vâng" msgid "Yes" msgstr "Vâng" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "Lên" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "Xuống" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "Trái" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "Phải" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "shift" poedit-3.5/locales/fr.po0000644000175100001770000021021614664354153012177 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "Masquer ce message de notification" msgid "Don’t Show Again" msgstr "Ne plus afficher" msgid "Don’t show again" msgstr "Ne plus afficher" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(Nouvelle : %i, obsolète : %i)" msgid "Collecting source files…" msgstr "Collecte des fichiers sources…" msgid "Extracting translatable strings…" msgstr "Extraction des chaînes traduisibles…" msgid "Failed to load file with extracted translations." msgstr "Impossible de charger le fichier avec les traductions extraites." msgid "Merging differences…" msgstr "Intégration des changements…" msgid "Updating translations" msgstr "Mise à jour des traductions" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "Le fichier « %s » n’a pas pu être ouvert." msgid "Invalid file" msgstr "Fichier non valide" #, c-format msgid "Malformed header: “%s”" msgstr "En-tête mal formée : « %s »" msgid "PO Translation Files" msgstr "Fichiers de traduction PO" msgid "POT Translation Templates" msgstr "Modèles de traduction POT" msgid "XLIFF Translation Files" msgstr "Fichiers de traduction XLIFF" msgid "JSON Translation Files" msgstr "Fichiers de traduction JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "Fichiers de traduction Flutter" msgid "All Translation Files" msgstr "Tous les fichiers de traduction" msgid "The file is in a format not recognized by Poedit." msgstr "Le fichier est dans un format non reconnu par Poedit." 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." #, 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" #, 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." #, c-format msgid "Couldn’t save file %s." msgstr "Impossible d’enregistrer le fichier %s." msgid "Screenshots:" msgstr "Captures d‘écran :" #, 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." #, 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)." 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" msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" "Fichier PO corrompu : forme plurielle msgstr utilisée sans msgid_plural" msgid "Couldn’t load the file, it is probably damaged." msgstr "Échec du chargement du fichier, il est probablement endommagé." 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." 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)." #, 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." msgid "Error saving file" msgstr "Erreur d’enregistrement du fichier" #, c-format msgid "“%s” is not a valid POT file." msgstr "« %s » n’est pas un fichier POT valide." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Erreur lors du chargement du fichier XLIFF : %s" #, 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 msgid "Broken markup in translation string." msgstr "Balisage cassé dans la traduction de la chaîne." msgid "(Use default language)" msgstr "(Utiliser la langue par défaut)" msgid "Language selection" msgstr "Sélection de langue" msgid "Select your preferred language" msgstr "Sélectionnez votre langue de préférence" msgid "You must restart Poedit for this change to take effect." msgstr "Vous devez redémarrer Poedit pour que ce changement prenne effet." msgid "Add Account" msgstr "Ajouter un compte" msgid "Add account" msgstr "Ajouter un compte" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "En savoir plus sur %s" msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "Connecter Poedit avec les plates-formes de localisation cloud prises en " "charge pour synchroniser les traductions qui y sont gérées." msgid "How does cloud sync work?" msgstr "Comment fonctionne la synchronisation dans le cloud ?" msgid "Account" msgstr "Compte" msgid "(not signed in)" msgstr "(non connecté)" msgid "File" msgstr "Fichier" msgid "Open cloud translation" msgstr "Ouvrir la traduction dans le cloud" msgid "Manage accounts" msgstr "Gérer les comptes" msgid "Project:" msgstr "Projet :" msgid "Language:" msgstr "Langue :" msgid "Sign in to Cloud Account" msgstr "Connectez-vous au compte Cloud" msgid "Sign in to cloud account" msgstr "Connectez-vous au compte Cloud" msgid "No translation projects listed in your account." msgstr "Aucun projet de traduction listé dans votre compte." 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" #, c-format msgid "Sign in to %s" msgstr "Se connecter à %s" msgid "Syncing" msgstr "Synchronisation" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, 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. #, c-format msgid "Uploading translations to %s failed." msgstr "Le chargement des traductions vers %s a échoué." msgid "Syncing error" msgstr "Erreur de synchronisation" msgid "Add" msgstr "Ajouter" msgid "Unknown Crowdin error." msgstr "Erreur Crowdin inconnue." msgid "Not authorized, please sign in again." msgstr "Non autorisé, veuillez vous connecter à nouveau." msgid "Downloading translations is disabled in this project." msgstr "Le téléchargement des traductions est désactivé dans ce projet." msgid "Sign In" msgstr "Se connecter" msgid "Sign in" msgstr "Se connecter" msgid "Sign Out" msgstr "Se déconnecter" msgid "Sign out" msgstr "Se déconnecter" msgid "Learn more about Crowdin" msgstr "En savoir plus sur Crowdin" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" "Crowdin est une plateforme de gestion de la localisation en ligne et un " "outil de traduction collaboratif." msgid "Waiting for authentication…" msgstr "En attente d'authentification..." msgid "Updating user information…" msgstr "Mise à jour des informations de l'utilisateur..." msgid "Sign in to Crowdin" msgstr "Connectez-vous sur Crowdin" msgid "Syncing with Crowdin failed." msgstr "Échec de la synchronisation avec Crowdin." msgid "Crowdin error" msgstr "Erreur Crowdin" msgid "Uploading translations…" msgstr "Téléchargement des traductions..." msgid "&Copy" msgstr "&Copier" msgid "Learn more" msgstr "En savoir plus" msgid "&Help" msgstr "&Aide" msgid "MO files can’t be directly edited in Poedit." msgstr "Les fichiers MO ne peuvent pas être directement modifiés dans Poedit." msgid "Error opening file" msgstr "Erreur à l'ouverture du fichier" 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." msgid "don’t delete temporary files (for debugging)" msgstr "ne pas supprimer les fichiers temporaires (à des fins de débogage)" msgid "handle a poedit:// URI" msgstr "gérer un URI poedit://" msgid "go to item at given line number" msgstr "aller à l’élément à la ligne donnée" msgid "Failed to communicate with Poedit process." msgstr "Échec de la communication avec le processus Poedit." #, c-format msgid "Unhandled exception occurred: %s" msgstr "Une exception non gérée s'est produite : %s" msgid "Select translation template" msgstr "Sélectionner le modèle de traduction" msgid "Select translation file" msgstr "Sélectionner le fichier de traduction" msgid "Poedit is an easy to use translation editor." msgstr "Poedit est un logiciel de traduction simple à utiliser." 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." #, c-format msgid "File “%s” is not a translation file." msgstr "Le fichier « %s » n’est pas un fichier de traduction." #, c-format msgid "File “%s” doesn’t exist." msgstr "Le fichier « %s » n’existe pas." 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". #, 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é." msgid "Install" msgstr "Installer" #, c-format msgid "The file “%s” has been changed by another application." msgstr "Le fichier « %s » a été modifié par une autre application." msgid "Reload file" msgstr "Recharger le fichier" 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." msgid "Ignore" msgstr "Ignorer" msgid "Reload File" msgstr "Recharger le fichier" msgid "The file has been modified. Do you want to save changes?" msgstr "Le fichier a été modifié. Voulez-vous enregistrer les modifications ?" msgid "Save changes" msgstr "Enregistrer les modifications" msgid "Your changes will be lost if you don’t save them." msgstr "Vos modifications seront perdues si vous ne les enregistrez pas." msgid "Save" msgstr "Enregistrer" msgid "Do&n’t save" msgstr "Ne pas enregistrer" msgid "Don’t Save" msgstr "Ne pas enregistrer" 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." msgid "Cancel" msgstr "Annuler" msgid "Save Anyway" msgstr "Enregistrer quand même" msgid "Save anyway" msgstr "Enregistrer quand même" msgid "Save as…" msgstr "Enregistrer sous…" msgid "Compile to…" msgstr "Compilation…" msgid "Compiled Translation Files" msgstr "Fichiers de traduction compilés" msgid "Export to HTML…" msgstr "Exporter en HTML…" msgid "HTML Files" msgstr "Fichiers HTML" #, c-format msgid "In: %s" msgstr "Dans : %s" msgid "Source code not available." msgstr "Code source non disponible." msgid "Updating failed" msgstr "Échec de la mise à jour" 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." msgid "Permission denied." msgstr "Permission refusée." 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. 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. 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." msgid "Translation entries in the file are probably incorrect." msgstr "" "Les entrées de traduction dans le fichier sont probablement incorrectes." msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "" "La mise à jour du fichier a échoué. Cliquez sur « Détails >> » pour en " "savoir plus." msgid "Open translation template" msgstr "Ouvrir le modèle de traduction" #, 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." msgid "Validation results" msgstr "Résultats de la validation" 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." msgid "The file was saved safely." msgstr "Le fichier a été enregistré avec succès." 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." 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é." 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." 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é." msgid "No problems with the translation found." msgstr "Aucun problème trouvé dans la traduction." #, 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." msgid "The translation is ready for use." msgstr "La traduction est prête à être utilisée." #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "" "Poedit a automatiquement corrigé le contenu non valide du fichier « %s »." msgid "" "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." msgid "Language of the translation isn’t set." msgstr "La langue de traduction n’est pas définie." msgid "Set Language" msgstr "Définir la langue" msgid "Set language" msgstr "Définir la langue" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." msgid "" "Suggestions are not available if the translation language is not set " "correctly. Other features, such as plural forms, may be affected as well." msgstr "" "Les suggestions ne sont pas disponibles si la langue de traduction n’est pas " "définie correctement. Les autres fonctionnalités, comme les formes " "plurielles, peuvent également être affectées." msgid "Language of the translation is the same as source language." msgstr "La langue de traduction est identique à la langue source." msgid "Fix Language" msgstr "Corriger la langue" msgid "Fix language" msgstr "Corriger la langue" msgid "" "This 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." 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" msgid "Required header Plural-Forms is missing." msgstr "L’en-tête requise Plural-Forms est absente." #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Erreur de syntaxe dans l’en-tête Plurial-Forms (\"%s\")." msgid "Fix the Header" msgstr "Corriger l'en-tête" 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". #, 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.")" msgid "Review" msgstr "Réviser" msgid "Would you like to use English for source text?" msgstr "Aimeriez-vous utiliser l‘anglais pour le texte source ?" #, 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" msgid "Load English" msgstr "Charger l‘anglais" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Traduit : %d de %d (%d %%)" #, c-format msgid "Remaining: %d" msgstr "Restant : %d" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d erreur" msgstr[1] "%d erreurs" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d entrée" msgstr[1] "%d entrées" msgid " (unsaved)" msgstr " (non enregistré)" msgid " (modified)" msgstr " (modifié)" #, c-format msgid "Failed to update translation memory: %s" msgstr "Échec de la mise à jour de la mémoire de traduction : %s" msgid "Remove same-as-source translations" msgstr "Retirer les traductions identiques à la source" 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 ?" 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é." msgid "Keep" msgstr "Conserver" msgid "Remove" msgstr "Retirer" msgid "Purge deleted translations" msgstr "Nettoyer les traductions supprimées" 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 ?" 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." msgid "Purge" msgstr "Nettoyer" msgid "Copy from source text" msgstr "Copier depuis le texte original" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "Effacer la traduction" msgid "Clear Translation" msgstr "Effacer la traduction" msgid "Edit comment" msgstr "Modifier le commentaire" msgid "Edit Comment" msgstr "Modifier le commentaire" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "Occurrences dans le code" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "Occurrences dans le code" msgid "Hide Sidebar" msgstr "Masquer le panneau latéral" msgid "Show Sidebar" msgstr "Afficher le panneau latéral" msgid "Hide Status Bar" msgstr "Masquer la barre d’état" msgid "Show Status Bar" msgstr "Afficher la barre d’état" msgid "String length in characters: translation | source" msgstr "Longueur de la chaîne en caractères : traduction | source" msgid "String length in characters" msgstr "Longueur de la chaîne en caractères" msgid "Source text" msgstr "Texte original" msgid "Singular" msgstr "Singulier" msgid "Plural" msgstr "Pluriel" msgid "Translation" msgstr "Traduction" msgid "Pre-translated" msgstr "Pré-traduit" 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. msgid "Needs work" msgstr "À réviser" msgid "" "POT files are only templates and don’t contain any translations themselves.\n" "To make a translation, create a new PO file based on the template." msgstr "" "Les fichiers POT ne sont que des modèles et ne contiennent pas de " "traductions.\n" "Pour faire une traduction, créez un nouveau fichier PO à partir du modèle." msgid "Create new translation" msgstr "Créer une nouvelle traduction" msgid "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 msgid "Source text ID" msgstr "ID du texte source" msgid "Everything" msgstr "Tout" #, c-format msgid "Form %i" msgstr "Forme %i" #, c-format msgid "Form %i (unused)" msgstr "Formulaire %i (inutilisé)" msgid "Zero" msgstr "Zéro" msgid "One" msgstr "Un" msgid "Two" msgstr "Deux" msgid "Other" msgstr "Autre" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, 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 #, c-format msgid "String identifier: %s" msgstr "Identifiant de chaîne : %s" #, c-format msgid "%s Format" msgstr "Format %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "format %s" #, c-format msgid "Translation — %s" msgstr "Traduction — %s" msgid "ID" msgstr "ID" #, c-format msgid "Source text — %s" msgstr "Texte original — %s" msgid "unknown language" msgstr "langue inconnue" #, c-format msgid "Network error: %s (%d)" msgstr "Erreur réseau : %s (%d)" msgid "Unknown error" msgstr "Erreur inconnue" #, c-format msgid "Failed command: %s" msgstr "Échec de la commande : %s" msgid "Failed to merge gettext catalogs." msgstr "Échec de la fusion des catalogues gettext." msgid "Open in Editor" msgstr "Ouvrir dans l’Éditeur" msgid "Open in editor" msgstr "Ouvrir dans l'éditeur" 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." msgid "No usage information" msgstr "Aucune information d’utilisation" #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d occurrence du code" msgstr[1] "%d occurrences du code" msgid "Source code not found" msgstr "Code source introuvable" 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." msgid "File cannot be opened" msgstr "Impossible d’ouvrir le fichier" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "Poedit n’a pas pu ouvrir le fichier « %s »." msgid "Find" msgstr "Trouver" msgid "Replace" msgstr "Remplacer" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "Options" msgid "Ignore case" msgstr "Ignorer la casse" msgid "Wrap around" msgstr "Boucler" msgid "Whole words only" msgstr "Mots entiers uniquement" msgid "Find in source texts" msgstr "Trouver dans les textes originaux" msgid "Find in translations" msgstr "Trouver dans les traductions" msgid "Find in comments" msgstr "Rechercher dans les commentaires" msgid "Close" msgstr "Fermer" msgid "Replace &All" msgstr "Remplacer &tout" msgid "Replace &all" msgstr "&Tout remplacer" msgid "&Replace" msgstr "&Remplacer" msgid "< &Previous" msgstr "< &Précédent" msgid "&Next >" msgstr "&Suivant >" msgid "String to find" msgstr "Chaîne à rechercher" msgid "Replacement string" msgstr "Chaîne de remplacement" #, c-format msgid "Cannot execute program: %s" msgstr "Impossible d’exécuter le programme : %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "Nom ou code de la langue" msgid "Translation Language" msgstr "Langue de traduction" msgid "Language of the translation:" msgstr "Langue de la traduction :" msgid "All strings" msgstr "Toutes les chaînes" msgid "Couldn’t download Localazy project details." msgstr "Impossible de télécharger les détails du projet Localazy." 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." msgid "Projects" msgstr "Projets" 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." msgid "Add Project" msgstr "Ajouter un projet" msgid "Add project" msgstr "Ajouter un projet" msgid "Poedit - Catalogs manager" msgstr "Poedit - Gestionnaire des catalogues" msgid "Edit…" msgstr "Modifier…" msgid "Create new translations project" msgstr "Créer un nouveau projet de traduction" msgid "Delete the project" msgstr "Supprimer le projet" msgid "Edit the project" msgstr "Modifier le projet" msgid "Update all" msgstr "Tout mettre à jour" msgid "Update all catalogs in the project" msgstr "Mettre à jour tous les catalogues du projet" msgid "Total" msgstr "Total" msgid "Untrans" msgstr "Non traduit" msgctxt "column/row header" msgid "Needs Work" msgstr "À réviser" msgid "Errors" msgstr "Erreurs" msgid "Last modified" msgstr "Dernière modification" msgid "Select directory" msgstr "Choisir un répertoire" msgid "Directories:" msgstr "Répertoires :" msgid "" msgstr "" #, c-format msgid "Do you want to delete project “%s”?" msgstr "Voulez-vous supprimer le projet « %s » ?" msgid "Delete project" msgstr "Supprimer le projet" msgid "Deleting the project will not delete any translation files." msgstr "La suppression du projet ne supprimera aucun fichier de traduction." msgid "Confirmation" msgstr "Confirmation" msgid "Update all catalogs in this project?" msgstr "Mettre à jour tous les catalogues dans ce projet ?" 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." msgid "Check for Updates…" msgstr "Rechercher des mises à jour…" msgid "Catalogs Manager" msgstr "Gestionnaire de catalogues" msgid "&Preferences…" msgstr "&Préférences…" msgid "&Edit" msgstr "&Édition" msgid "Undo" msgstr "Annuler" msgid "Redo" msgstr "Refaire" msgid "Paste and Match Style" msgstr "Coller en conservant la mise en forme" msgid "Delete" msgstr "Supprimer" msgid "Spelling and Grammar" msgstr "Orthographe et Grammaire" msgid "Show Spelling and Grammar" msgstr "Afficher l'orthographe et la grammaire" msgid "Check Document Now" msgstr "Vérifier le document maintenant" msgid "Check Spelling While Typing" msgstr "Vérifier l'orthographe lors de la frappe" msgid "Check Grammar With Spelling" msgstr "Vérifier la grammaire et l'orthographe" msgid "Correct Spelling Automatically" msgstr "Corriger l’orthographe automatiquement" msgid "Substitutions" msgstr "Substitutions" msgid "Show Substitutions" msgstr "Afficher les substitutions" msgid "Smart Copy/Paste" msgstr "Copier/coller intelligent " msgid "Smart Quotes" msgstr "Guillemets intelligents" msgid "Smart Dashes" msgstr "Tirets intelligents" msgid "Smart Links" msgstr "Liens intelligents" msgid "Text Replacement" msgstr "Texte de remplacement" msgid "Transformations" msgstr "Transformations" msgid "Make Upper Case" msgstr "Mettre en majuscules" msgid "Make Lower Case" msgstr "Mettre en minuscules" msgid "Capitalize" msgstr "Mettre en majuscule" msgid "Speech" msgstr "Dicter" msgid "Start Speaking" msgstr "Commencer à dicter" msgid "Stop Speaking" msgstr "Arrêter de dicter" msgid "&View" msgstr "&Affichage" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item 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 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 msgid "Enter Full Screen" msgstr "Passer en mode plein écran" msgid "Window" msgstr "Fenêtre" msgid "Minimize" msgstr "Réduire" msgid "Zoom" msgstr "Agrandir" msgid "Welcome to Poedit" msgstr "Bienvenue dans Poedit" msgid "Bring All to Front" msgstr "Tout passer au premier plan" msgid "Information about the translator" msgstr "Informations sur le traducteur" msgid "Name:" msgstr "Nom :" msgid "Your Name" msgstr "Votre nom" msgid "Email:" msgstr "E-mail :" msgid "you@example.com" msgstr "vous@example.com" 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." msgid "Editing" msgstr "Modification" msgid "Automatically compile MO file when saving" msgstr "Compiler automatiquement le fichier MO lors de l'enregistrement" msgid "Show summary after updating files" msgstr "Afficher le résumé après la mise à jour des fichiers" msgid "Check spelling" msgstr "Vérifier l’orthographe" msgid "Always change focus to text input field" msgstr "Toujours activer la zone de saisie du texte" 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." msgid "Appearance" msgstr "Apparence" msgid "Use custom list font:" msgstr "Utiliser une police personnalisée :" msgid "Use custom text fields font:" msgstr "Utiliser une police personnalisée pour les champs texte :" 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 msgid "(requires Windows 8 or newer)" msgstr "(nécessite Windows 8 ou plus récent)" msgid "General" msgstr "Général" msgid "Use translation memory" msgstr "Utiliser la mémoire de traduction" msgid "Manage…" msgstr "Gérer…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "Lors de l’actualisation depuis les sources" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "remplissage approx. dans le fichier" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "pré-traduire avec la MT" 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." msgid "Stored translations:" msgstr "Traductions stockées :" msgid "Database size on disk:" msgstr "Taille de la base de données sur le disque :" msgid "Import Translation Files…" msgstr "Importer les fichiers de traduction…" msgid "Import translation files…" msgstr "Importer les fichiers de traduction…" msgid "Import From TMX…" msgstr "Importation depuis un TMX…" msgid "Import from TMX…" msgstr "Importer un TMX…" msgid "Export To TMX…" msgstr "Exportation vers un TMX…" 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). msgid "Reset" msgstr "Réinitialiser " msgid "Select translation files to import" msgstr "Sélectionner les fichiers de traduction à importer" msgid "Translation Memory" msgstr "Mémoire de traduction" msgid "Importing translations…" msgstr "Importation des traductions…" #, c-format msgid "Error loading translation file “%s”." msgstr "Erreur lors du chargement du fichier de traduction « %s »." msgid "Finalizing…" msgstr "Finalisation…" msgid "Select TMX files to import" msgstr "Sélectionner les fichiers TMX à importer" msgid "TMX Files" msgstr "Fichiers TMX" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "L’importation de la mémoire de traduction à partir de « %s » a échoué." msgid "Import error" msgstr "Erreur d’importation" msgid "Export as…" msgstr "Exporter en tant que…" msgid "Exporting translations…" msgstr "Exportation des traductions…" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "L’exportation de la mémoire de traduction vers « %s » a échoué." msgid "Export error" msgstr "Erreur d’exportation" msgid "Reset translation memory" msgstr "Réinitialiser la mémoire de traduction" msgid "Are you sure you want to reset the translation memory?" msgstr "Voulez-vous vraiment réinitialiser la mémoire de traduction ?" 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. msgid "TM" msgstr "MT" 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." msgid "Custom Extractors:" msgstr "Extracteurs personnalisés :" msgid "Custom extractors:" msgstr "Extracteurs personnalisés :" msgid "GNU gettext" msgstr "GNU gettext" msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "Supporte tous les langages de programmation des outils GNU gettext (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript et autres)." msgid "Delete extractor" msgstr "Supprimer l’extracteur" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "Êtes-vous sûr de vouloir supprimer l’extracteur « %s » ?" msgid "Extractors" msgstr "Extracteurs" msgid "Accounts" msgstr "Comptes" msgid "Automatically check for updates" msgstr "Rechercher automatiquement les mises à jour" msgid "Include beta versions" msgstr "Inclure les versions bêta" 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." msgid "Updates" msgstr "Mises à jour" 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." msgid "Line endings:" msgstr "Fins de ligne :" msgid "Unix (recommended)" msgstr "Unix (recommandé)" msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "Passer à la ligne à :" msgid "Preserve formatting of existing files" msgstr "Préserver le formatage des fichiers existants" msgid "Advanced" msgstr "Avancés" msgid "Settings" msgstr "Paramètres" msgid "Preparing strings…" msgstr "Préparation des chaînes…" msgid "Pre-translating from translation memory…" msgstr "Pré-traduction depuis la mémoire de traduction…" #, 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" msgid "Pre-translating…" msgstr "Pré-traduction…" 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. msgid "Pre-translate" msgstr "Pré-traduction" 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." msgid "Cannot pre-translate from unknown language." msgstr "Impossible de pré-traduire depuis une langue inconnue." 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." msgid "Only fill in exact matches" msgstr "Remplir uniquement les correspondances exactes" 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." msgid "Don’t mark exact matches as needing work" msgstr "Ne pas marquer les correspondances exactes comme à réviser" 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." 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." #, 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." 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." msgid "No entries could be pre-translated." msgstr "Aucune entrée n’a pu être pré-traduite." 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." msgid "Cancelling…" msgstr "Annulation…" msgid "Drag Folders or Files Here" msgstr "Glisser ici les dossiers ou les fichiers" msgid "Drag folders or files here" msgstr "Glisser ici les dossiers ou les fichiers" msgid "Add Folders…" msgstr "Ajouter des dossiers…" msgid "Add folders…" msgstr "Ajouter des dossiers…" msgid "Add Files…" msgstr "Ajouter des fichiers…" msgid "Add files…" msgstr "Ajouter des fichiers…" msgid "Add Wildcard…" msgstr "Ajouter un caractère générique…" 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) 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" msgid "Show in Explorer" msgstr "Afficher dans l’Explorateur" msgid "Show in Folder" msgstr "Afficher dans le dossier" msgid "Paths" msgstr "Chemins" msgid "Excluded paths" msgstr "Chemins exclus" msgid "Advanced extraction settings" msgstr "Réglages avancés d’extraction" msgid "Extract notes for translators from:" msgstr "Extrait les notes pour les traducteurs à partir de :" msgid "Comments prefixed with:" msgstr "Les commentaires sont précédés par :" msgid "All comments" msgstr "Tous les commentaires" msgid "Additional xgettext flags:" msgstr "Indicateurs additionnels xgettext :" msgid "Additional keywords" msgstr "Mots clés supplémentaires" msgid "Name of the project the translation is for" msgstr "Nom du projet de traduction" msgid "Team name and email address or URL" msgstr "Nom de l’équipe et adresse e-mail ou URL" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "p. ex. nplurals=2; plural=(n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (recommandé)" 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." msgid "Placeholders correctness" msgstr "Exactitude des espaces réservés" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "Il manque l‘espace réservé « %s » de la traduction." #, c-format msgid "Superfluous placeholder “%s” that isn’t in source text." msgstr "Espace réservé superflu « %s » qui n‘est pas dans le texte source." msgid "Plural form translations" msgstr "Traductions des formes plurielles" msgid "Not all plural forms are translated." msgstr "Toutes les formes plurielles ne sont pas traduites." msgid "Inconsistent upper/lower case" msgstr "Incohérence majuscule/minuscule" msgid "The translation should start as a sentence." msgstr "La traduction devrait commencer comme une phrase." msgid "The translation should start with a lowercase character." msgstr "La traduction devrait commencer par un caractère en minuscule." msgid "Inconsistent whitespace" msgstr "Espace incohérent" msgid "The translation doesn’t start with a space." msgstr "La traduction ne commence pas par une espace." 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." msgid "The translation is missing a newline at the end." msgstr "Il manque un saut de ligne à la fin de la traduction." 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." msgid "The translation is missing a space at the end." msgstr "Il manque une espace à la fin de la traduction." 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." msgid "Punctuation checks" msgstr "Vérifications de ponctuation" #, c-format msgid "The translation should end with “%s”." msgstr "La traduction devrait se terminer par ”%s”." #, c-format msgid "The translation should not end with “%s”." msgstr "La traduction ne devrait pas se terminer par ”%s”." #, 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”." msgid "Cloud" msgstr "Nuage" msgid "Clear Menu" msgstr "Effacer le menu" msgid "Clear menu" msgstr "Effacer le menu" msgid "Comment:" msgstr "Commentaire :" msgid "Update" msgstr "Mettre à jour" msgid "&Delete" msgstr "&Supprimer" msgid "Delete the comment" msgstr "Supprimer le commentaire" msgid "Edit project" msgstr "Modifier le projet" msgid "Project name:" msgstr "Nom du projet :" msgid "Browse" msgstr "Parcourir" msgid "Add directory to the list" msgstr "Ajouter un répertoire à la liste" msgid "OK" msgstr "OK" msgid "&File" msgstr "&Fichier" msgid "&New…" msgstr "&Nouveau…" msgid "New from &POT/PO file…" msgstr "Nouveau à partir d’un fichier &POT/PO…" msgid "New From &POT/PO File…" msgstr "Nouveau à partir d’un fichier &POT/PO…" msgid "&Open…" msgstr "&Ouvrir…" msgid "Open Recent" msgstr "Récemment ouverts" msgid "Open recent" msgstr "Ouvrir récents" msgid "Open cloud translation…" msgstr "Ouvrir la traduction dans le cloud…" msgid "Open Cloud Translation…" msgstr "Ouvrir la traduction dans le cloud…" msgid "&Start window" msgstr "&Fenêtre de démarrage" msgid "&Start Window" msgstr "&Fenêtre de démarrage" msgid "Catalogs &manager" msgstr "Gestion des &catalogues" msgid "Catalogs &Manager" msgstr "Gestionnaire des &catalogues" msgid "&Close" msgstr "&Fermer" msgid "&Save" msgstr "&Enregistrer" msgid "Save &as…" msgstr "Enregistrer &sous…" msgid "Save &As…" msgstr "Enregistrer &sous…" msgid "Compile to MO…" msgstr "Compiler le MO…" msgid "E&xport to HTML…" msgstr "E&xporter en HTML…" msgid "Check for updates…" msgstr "Rechercher des mises à jour…" msgid "Settings…" msgstr "Paramètres…" msgid "&Preferences" msgstr "&Préférences" msgid "E&xit" msgstr "&Quitter" msgid "Quit" msgstr "Quitter" msgid "Copy from singular" msgstr "Copier du singulier" msgid "Copy From Singular" msgstr "Copier du singulier" msgid "Translation needs &work" msgstr "Traduction nécessitant une &révision" msgid "Translation Needs &Work" msgstr "Traduction nécessitant une &révision" msgid "Edit &comment" msgstr "Modifier le &commentaire" msgid "Edit &Comment" msgstr "Modifier le &commentaire" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "Suggestions" msgid "&Find…" msgstr "&Rechercher…" msgid "Replace…" msgstr "Remplacer…" msgid "Find next" msgstr "Rechercher le suivant" msgid "Find previous" msgstr "Rechercher le précédent" msgid "Find and Replace…" msgstr "Rechercher et remplacer…" msgid "Find Next" msgstr "Rechercher le suivant" msgid "Find Previous" msgstr "Chercher le précédent" msgid "Show string &ID" msgstr "Afficher l‘ID de la chaîne" msgid "Show String &ID" msgstr "Afficher l‘ID de la chaîne" msgid "Show warnings" msgstr "Afficher les avertissements" msgid "Show Warnings" msgstr "Afficher les avertissements" msgid "Sort by &file order" msgstr "Trier par &fichier" msgid "Sort by &File Order" msgstr "Trier par &fichier" msgid "Sort by &source" msgstr "Trier par &source" msgid "Sort by &Source" msgstr "Trier par &source" msgid "Sort by &translation" msgstr "Trier par &traduction" msgid "Sort by &Translation" msgstr "Trier par &traduction" msgid "&Group by context" msgstr "&Grouper par contexte" msgid "&Group By Context" msgstr "&Grouper par contexte" msgid "Entries with errors first" msgstr "Entrées avec erreurs en premier" msgid "Entries with Errors First" msgstr "Entrées avec erreurs en premier" msgid "&Untranslated entries first" msgstr "Entrées &non traduites en premier" msgid "&Untranslated Entries First" msgstr "Entrées &non traduites en premier" msgid "&Show code occurrences" msgstr "&Afficher les occurrences du code" msgid "&Show Code Occurrences" msgstr "&Afficher les occurrences du code" msgid "Show sidebar" msgstr "Afficher le panneau latéral" msgid "Show status bar" msgstr "Afficher la barre d’état" msgid "&Translation" msgstr "&Traduction" msgid "&Update from source code" msgstr "&Mise à jour depuis le code source" msgid "&Update from Source Code" msgstr "&Mise à jour depuis le code source" msgid "Update from &POT file…" msgstr "Mettre à jour depuis un fichier &POT…" msgid "Update from &POT File…" msgstr "Mettre à jour depuis un fichier &POT…" msgid "Sync with Crowdin" msgstr "Synchroniser avec Crowdin" msgid "Pre-&translate…" msgstr "Pré-&traduire…" msgid "&Validate translations" msgstr "&Valider les traductions" msgid "&Validate Translations" msgstr "&Valider les traductions" msgid "Remove Same-as-Source Translations" msgstr "Retirer les traductions identiques à la source" msgid "&Purge deleted translations" msgstr "&Purger les traductions supprimées" msgid "&Purge Deleted Translations" msgstr "&Purger les traductions supprimées" msgid "&Properties…" msgstr "&Propriétés…" msgid "&Go" msgstr "&Aller à" msgid "&Done and next" msgstr "&Appliquer et continuer" msgid "&Done and Next" msgstr "&Appliquer et continuer" msgid "Previously edited" msgstr "Modifié précédemment" msgid "Previously Edited" msgstr "Modifié précédemment" msgid "&Previous translation" msgstr "Traduction &précédente" msgid "&Previous Translation" msgstr "Traduction &précédente" msgid "&Next translation" msgstr "Traduction suiva&nte" msgid "&Next Translation" msgstr "Traduction suiva&nte" msgid "P&revious unfinished" msgstr "Incomplet p&récédent" msgid "P&revious Unfinished" msgstr "Incomplet p&récédent" msgid "Ne&xt unfinished" msgstr "Incomplet suivan&t" msgid "Ne&xt Unfinished" msgstr "Incomplet suivan&t" msgid "Previous plural form" msgstr "Forme plurielle précédente" msgid "Previous Plural Form" msgstr "Forme plurielle précédente" msgid "Next plural form" msgstr "Forme plurielle suivante" msgid "Next Plural Form" msgstr "Forme plurielle suivante" msgid "&Online help" msgstr "&Aide en ligne" msgid "&Online Help" msgstr "&Aide en ligne" msgid "&GNU gettext manual" msgstr "Manuel de &GNU gettext" msgid "&GNU gettext Manual" msgstr "Manuel de &GNU gettext" msgid "&About Poedit" msgstr "&À propos de Poedit" msgid "&About" msgstr "&À propos" msgid "Extractor setup" msgstr "Installation de l’extracteur" 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) :" msgid "Invocation:" msgstr "Appel :" msgid "Command to extract translations:" msgstr "Commande pour extraire des traductions :" 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 "" "C'est 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)." msgid "An item in keywords list:" msgstr "Un élément de la liste des mots clés :" 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é." msgid "An item in input files list:" msgstr "Un élément de la liste des fichiers d’entrée :" #, 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." msgid "Source code charset:" msgstr "Jeu de caractères du code source :" #, 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." msgid "Translation Properties" msgstr "Propriétés de traduction" msgid "Project name and version:" msgstr "Nom et version du projet :" msgid "Language team:" msgstr "Équipe de langue :" msgid "Plural forms:" msgstr "Formes plurielles :" msgid "Use default rules for this language" msgstr "Utiliser les règles par défaut de cette langue" msgid "Use custom expression" msgstr "Utiliser une expression personnalisée" msgid "Learn about plural forms" msgstr "En savoir plus sur les formes plurielles" msgid "Charset:" msgstr "Jeu de caractères :" msgid "Advanced Extraction Settings…" msgstr "Réglages avancés d’extraction…" msgid "Advanced extraction settings…" msgstr "Réglages avancés d’extraction…" msgid "Translation properties" msgstr "Propriétés de traduction" msgid "Sources Paths" msgstr "Chemins des sources" msgid "Sources paths" msgstr "Chemins des sources" msgid "Extract text from source files in the following directories:" msgstr "Extraire le texte des répertoires suivants :" msgid "Base path:" msgstr "Chemin de base :" msgid "Sources Keywords" msgstr "Mots-clés sources" msgid "Sources keywords" msgstr "Mots clés sources" 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 :" msgid "Also use default keywords for supported languages" msgstr "" "Utilisez également des mots-clés par défaut pour les langues prises en charge" msgid "Learn about gettext keywords" msgstr "En savoir plus sur les mots clés gettext" msgid "Update summary" msgstr "Mettre à jour le résumé" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" "Ces chaînes ont été trouvées dans les sources mais ne sont pas dans le " "fichier.\n" "Poedit les ajoutera maintenant au fichier." msgid "New strings" msgstr "Nouvelles chaînes" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" "Ces chaînes ne sont plus dans le code source.\n" "Poedit les supprimera du fichier maintenant." msgid "Obsolete strings" msgstr "Chaînes obsolètes" msgid "(0 new, 0 obsolete)" msgstr "(0 nouvelle, 0 obsolète)" msgid "Open" msgstr "" msgid "Open file" msgstr "Ouvrir le fichier" msgid "Save file" msgstr "Enregistrer le fichier" msgid "Validate" msgstr "Valider" msgid "Check for errors in the translation" msgstr "Vérifier les erreurs dans la traduction" msgid "Update from code" msgstr "Mettre à jour depuis le code" msgid "Update from Code" msgstr "Mettre à jour depuis le code" msgid "Update from source code" msgstr "Mettre à jour depuis le code source" msgid "Sidebar" msgstr "Panneau latéral" msgid "Show or hide the sidebar" msgstr "Afficher ou masquer le panneau latéral" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. msgid "Previous source text" msgstr "Texte source précédent" 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." msgid "Notes for translators" msgstr "Notes pour les traducteurs" msgid "Comment" msgstr "Commentaire" msgid "Add comment" msgstr "Ajouter un commentaire" msgid "Add Comment" msgstr "Ajouter un commentaire" msgid "Delete From Translation Memory" msgstr "Supprimer de la mémoire de traduction" msgid "Delete from translation memory" msgstr "Supprimer de la mémoire de traduction" msgid "Translation suggestions" msgstr "Suggestions de traduction" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). 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). msgid "No Matches Found" msgstr "Aucune correspondance trouvée" 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." 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." 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." msgid "The TMX file is malformed." msgstr "Le fichier TMX est mal formé." msgid "No translations were found in the TMX file." msgstr "Aucune traduction n’a été trouvée dans le fichier TMX." #, 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)." #, c-format msgid "Translation memory error: %s (%d)." msgstr "Erreur de la mémoire de traduction : %s (%d)." msgid "Cannot create temporary directory." msgstr "Impossible de créer le répertoire temporaire." msgid "There are no translations. That’s unusual." msgstr "Il n’y a aucune traduction. Ce n’est pas courant." msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "Translators typically use PO template files (POTs) prepared for them by the " "developer." msgstr "" "Les entrées traduisibles ne sont pas ajoutées manuellement au système " "Gettext, mais sont extraites automatiquement\n" "à partir du code source. De cette façon, elles restent à jour et exactes.\n" "Les traducteurs utilisent généralement des fichiers de modèle PO (POTs) " "préparés par le développeur." msgid "(Learn more about GNU gettext)" msgstr "(En savoir plus sur GNU gettext)" 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 :" msgid "Update from POT" msgstr "Mettre à jour depuis un POT" msgid "Take translatable strings from an existing POT template." msgstr "Utiliser les chaînes traduisibles d'un modèle POT existant." 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 :" msgid "Extract from sources" msgstr "Extraire depuis les sources" 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 #, c-format msgid "Version %s" msgstr "Version %s" msgid "Create new" msgstr "Créer" msgid "Create new translation from POT template." msgstr "Créer une nouvelle traduction à partir d’un modèle POT." msgid "Browse files" msgstr "Parcourir les fichiers" msgid "Open and edit translation files." msgstr "Ouvrir et modifier les fichiers de traduction." msgid "Translate cloud project" msgstr "Traduire le projet cloud" msgid "Collaborate with other people online." msgstr "Collaborez avec d'autres personnes en ligne." msgid "Recent files" msgstr "Fichiers récents" msgid "Sync" msgstr "Synchroniser" 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") #, 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. #, c-format msgid "%s Preferences" msgstr "Préférences de %s" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "Services" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "Masquer %s" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "Masquer le reste" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "Tout afficher" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "Quitter %s" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "Préférences…" msgid "Preferences..." msgstr "Préférences..." #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "Récent" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "Fréquent" msgid "&Apply" msgstr "&Appliquer" msgid "Apply" msgstr "Appliquer" msgid "&Back" msgstr "Retour" msgid "Back" msgstr "Retour" msgid "&Cancel" msgstr "Annuler" msgid "&Clear" msgstr "Effa&cer" msgid "Clear" msgstr "Effacer" msgid "Copy" msgstr "Copier" msgid "Cu&t" msgstr "Couper" msgid "Cut" msgstr "Couper" msgid "Edit" msgstr "Modifier" msgid "&Quit" msgstr "&Quitter" msgid "Help" msgstr "Aide" msgid "&New" msgstr "&Nouveau" msgid "New" msgstr "Nouveau" msgid "&No" msgstr "&Non" msgid "No" msgstr "Non" msgid "&OK" msgstr "&OK" msgid "Open…" msgstr "Ouvrir…" msgid "&Open..." msgstr "&Ouvrir..." msgid "Open..." msgstr "Ouvrir..." msgid "&Paste" msgstr "&Coller" msgid "Paste" msgstr "Coller" msgid "Preferences" msgstr "Préférences" msgid "&Redo" msgstr "&Rétablir" msgid "Refresh" msgstr "Actualiser" msgid "&Save as" msgstr "&Enregistrer sous" msgid "Save as" msgstr "Enregistrer sous" msgid "Select &All" msgstr "Tout sélectionner" msgid "Select All" msgstr "Tout sélectionner" msgid "&Undo" msgstr "Ann&uler" msgid "&Yes" msgstr "Oui" msgid "Yes" msgstr "Oui" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Maj+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Entrée" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "Haut" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "Bas" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "Gauche" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "Droite" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "maj" poedit-3.5/locales/hy.mo0000644000175100001770000022265014664354153012212 00000000000000t*9 9 9& 9G9<[99J9g9 ^:h: w:: ::::::::::::::;";&;8;J;P;U;];e;w;;; ; ;;;; ;;;; <<8<T<Z<`<i<o<x<< < < <<<< =&=?=V=m=s=x====== > >>'>/>8> <> H> T>a> p>|> > >> >> >>> ?%?.?N?k?? ? ?1??'?@6@ P@[@7a@6@@)@A A]*AA<ADA$BBB IBVBB B"BC+*C)VC CCCCCCCC D'D#OCOYO(xOTO OP P P!P5PFP[P pP zP P PPPPPPP PQ QQ Q (Q 4QAQQQpQQQ7RzR:S ASMS`S |SSS2SST T"T@T XTyT T TTTT;T(U1UNUaU pU zUUU UUUU:U 6V<DV VV.WJWZW*jWWW WWW*WXX,X =X HXSXYY,Y EYQYbYsYvY#Y\YZ'Z/AZ+qZZ$Z%ZZ[['[+[[[ [ [ \7\ Q\[\j\ y\\\\\\\\\\]]]]=]^1^L^ne^E^_!_;:_ v___@__`,a,aa bb2%b*Xbbbw%cjc dd#d2d%Gdmdddddd dde ee#e>eCe8Kee eee e e ee e ee f( f4f:fzSfffff f f g g!g )g 4g Ag Kg Xg dgoggg"gggh h 'h 4h@hGh Ph]hwhhh h hhhh h ii!+i Mi[icikiti |iiiiiii i i jj,jq*"ٖ'/$TNiKN4S1tҘG`LA5%.+AJm:>29V(oHgH ivUȞ6KUX**<)g?Ѡ%FD\,:Ρ, -6 dq++͢  G<4L%=E<nexev4#˦4$TBX/ 28Nk? 'ͩ'0 NY wBŪB(+Dpf? M| S2L7o>>3 r~22¯11'!Y!{İհ۰000"ݲ"=#a p{ ֳc<t.eYF?+ !%FGqLhM+2=\ (%B5h03Ϲ7Qk/׺$ߺ !0BW!l!&#׻GCFT׼/,\%k??/fo< (6F6}> ,& S'^U8)!?av<= *7,bMuo9\$D<b*%;B6U MU\{ 5Gg5I0bz?6FT@0 ,3=53sK2 3@t:  -;PWv*+#w0T8 E3+::u3kK-~P>(<eQ_'O?w$'', 96p.%%2'Zw) > m+"" .A T uSH1z'<O T_y$$+ 8NjC!200<a33:%ZU*$/&+V/-#;%@*f$V/ =Nf|++' =2H{)0/ 5:0p/5.61Q1 '1+P)|!>]'1 &52\a" C\NwD!>ZZM9#Snw(b>NQcq'0S7CB0zswf[OV-1FHM\ZsNDuPF'9  a  ~ HQ d  ]0*6/a':79IeaDK77=>5%(N (G)X'!K^e''2#N0r+%7DP?`;= $;?`=W+)-1 _n  -5 c j [ L!P"k"_""#####Z#*:$=e$@$$"$%$%(<%e%%%|Lo[GvO1~M<Jf^\^tSJIM`'W oYL3NF1Bl0nqg3Rm{X/'|ibk)+&j_A"0-}_Z~Z)c]yt..mi'6 kr?@jay{W:7!,w4,U 46@9}BR Uufn+Gd EL/YCin/=x#>p`z%FC8V~4DuJXb-G [c|As*[7#gdem O*QSw*2Pv; ?"Dq`]p0br H1NT":5h+Q,eA> Yke<X ]@RQcu Hpr!%jf;(8xC7TB^{V=dKEPlWIFx\V(Twl KhO. q-}Z) NU#IM?6=(&Etva>zS\D<5z2H9ys5;:KP3 go$$ 8a&h!_s%92$  (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd AccountAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add accountAdd 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 languagesAlt+Always 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 errorCrowdin is an online localization management platform and collaborative translation tool.Ctrl+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 no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownDownloading 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:EnterEnter 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 loading translation file “%s”.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export errorExport 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…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)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport from TMX…Import translation files…Importing translation memory from “%s” 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 CrowdinLeftLine %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 translations were found in the TMX file.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKObsolete stringsOneOnly 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 translation templateOpen...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 translationsQuitQuit %sReading file content failed with the following error: %sRecentRecent 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 FinderReviewRightSaveSave &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 languageServicesSet LanguageSet languageSettings…Shift+Show AllShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow summary after updating filesShow 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.These strings are no longer in the source code. Poedit will remove them from the file now.These strings were found in the sources but were not in the file. Poedit will add them to the file now.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 entries in the file are probably incorrect.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.UntransUpUpdateUpdate 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 the file failed. Click on 'Details >>' for details.Updating 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown 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: 2024-08-30 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-ի ձեռնարկ&Անցնել&Խմբավորել ըստ համագրվածքի&Խմբավորել ըստ համագրվածքի&Օգնություն&Նոր&Նոր…&Հաջորդ »&Հաջորդ թարգմանությունը&Հաջորդ թարգմանությունը&Ոչ&Լավ&Առցանց օգնություն&Առցանց օգնություն&Բացել...&Բացել…&Տեղադրել&Նախապատվություններ&Նախապատվություններ…&Նախորդ թարգմանությունը&Նախորդ թարգմանությունը&Հատկություններ…&Մաքրել ջնջված թարգմանությունները&Մաքրել ջնջված թարգմանությունները&Փակել&Կրկնակել&Փոխարինել&Պահել&Պահել որպես&Ցուցադրել կոդի դեպքերը&Ցուցադրել կոդի դեպքերը&Մեկնարկային պատուհան&Մեկնարկային պատուհան&Թարգմանություն&Հետարկել&Նախ չթարգմանվածները&Նախ չթարգմանվածները&Արդիացնել սկզբնականից&Արդիացնել սկզբնականից&Վավերացնել թարգմանությունները&Վավերացնել թարգմանությունները&Տեսք&Այո(0 նոր, 0 հնացած)(Մանրամասներ GNU gettext-ի մասին)(Նոր՝ %i, հնացած՝ %i)(Օգտ. լռելյայն լեզուն)(մուտք գործած չէ)(պահանջում է Windows 8 կամ ավելի նորը)« &Նախորդ<անանուն>%s-ի մասինՀաշիվՀաշիվներԱվելացնելՀավելել հաշիվՀավելել մեկնաբանությունՀավելել նիշքեր…Հավելել թղթապանակներ…Հավելել նախագիծՀավելել դերանշան…Հավելել հաշիվՀավելել մեկնաբանությունԳրացուցակը հավելել ցանկումՀավելել նիշքեր…Հավելել թղթապանակներ…Հավելել նախագիծՀավելել դերանշան…Լրացուցիչ հիմնաբառերԼրացուցիչ xgettext դրոշակներ.ԸնդլայնվածԴուրս բերելու ընդլայնված կարգավորումներ…Դուրս բերելու ընդլայնված կարգավորումներԴուրս բերելու ընդլայնված կարգավորումներ…Թարգմանության բոլոր նիշքերըԲոլոր մեկնաբանություններըԲոլոր տողերըՆաեւ օգտագործեք լռելյայն հիմնաբառեր՝ աջակցվող լեզուների համարAlt+Դաշտը միշտ ակտիվ դարձնել՝ գրվածք մուտքագրելու համարՄիավորը ներածված նիշքերի ցանկում է.Միավոր՝ հիմնաբառերի ցանկում.ՏեսքԳործադրելՋնջե՞լ “%s” արտահանիչը:Վերակայե՞լ թարգմանության հիշողությունըԻնքնաբար ստուգել թարմացումներըՊահելիս ինքնաբար կազմարկել MO նիշքՀետՀիմնական ուղին.Բետա վարկածը պարունակում է ամենավերջին յուրահատկությունները եւ լավարկումները, բայց կարող է կայուն չաշխատել:Պահել բոլորը առջեւումՎնասված PO նիշք. հոգնակի msgstr ձեւը օգտագործված է առանց msgid_plural-իՎնասված PO նիշք. եզակի msgstr ձեւը օգտագործված է msgid_plural-ի հետԿոտրված նշարկում թարգմանության տողում:ԸնտրելԴիտել նիշքերըՍկզբնադիր ոչ ճիշտ արդյունքները նույնպես ներառված են, բայց նշված որպես ոչ վերջնական: Ընտրեք այս ընտրանքը՝ միայն ճիշտ համընկնումները ներառելու հանար:ՉեղարկելՉեղարկում…Հնարավոր չեղավ ստեղծել ժամանակավոր գրացուցակ:Հնարավոր չէ կատարել %s ծրագիրըՀնարավոր չէ նախաթարգմանել անհայտ լեզվից:Առանց սկզբնական գրվածքի անհնար է նախաթարգմանել:ԳլխատառացելԳրացուցակների &կառավարԳրացուցակների &կառավարԳրացուցակների կառավարՓոխել OՄ-ի լեզուն (Օգտվողի Միջերես)Այլագիրավորում.Ստուգել փաստաթուղթըՍտուգել քերականությունը մուտքագրելիսՍտուգել ուղղագրոթյունը մուտքագրելիսՍտուգել թարմացումները…Ստուգել թարգմանության սխալներըՍտուգել թարմացումները…Ստուգել ուղղագրությունըՄաքրելՄաքրել ցանկըՄաքրել թարգմանությունըՄաքրել ցանկըՄաքրել թարգմանությունըՓակելԱյլագրի դեպքերԱյլագրի դեպքերՀամագործակցել այլ մարդկանց հետ առցանց:Հավաքում է աղբյուր նիշքերը...Թարգմանությունները դուրս հանելու հրաման.ՄեկնաբանությունՄեկնաբանություն.Մեկնաբանություններ նախանծանցով՝Կազմարկել MO-ի…Կազմարկել առ՝Թարգմանության կազմարկված նիշքերԿազմաձեւել սկզբնական կոդի դուրս բերումը Հատկություններում:ՀաստատումԿապակցել Poedit-ն աջակցվող ամպի տեղայնացման հարթակների հետ՝ դրանցքում կառավարվող թարգմանությունները աննկատ համաժամեցնելու համար:ՊատճենելՊատճենել եզակիիցՊատճենել սկզբնական գրվածքիցՊատճենել հոգնակիիցՊատճենել սկզբնական գրվածքիցԻնքնաբար ուղղելԱնհնար է ներբեռնել Localazy նախագծի մանրամասները:Չհաջողվեց բեռնել ֆայլը, հավանաբար այն վնասված է:Հնարավոր չէ պահել %s նիշքը:Ստեղծել նորըՍտեղծել նոր թարգմանությունՍտեղծել նոր թարգմանություն POT ձեւանմուշից:Ստեղծել թարգմանության նոր նախագիծCrowdin-ի սխալCrowdin-ը առցանց թարգմանությունների կառավարման հարթակ և համագործակցային թարգմանության գործիք է:Ctrl+Կտրե&լԸնտրովի դուրս բերում.Ընտրովի դուրս բերում.Կարգավորել գործիքագոտին...ԿտրելՇտեմարանի չափը՝ՋնջելՋնջել Թարգմանության հիշողությունիցՋնջել արտահանիչըՋնջել Թարգմանության հիշողությունիցՋնջել նախագիծըՋնջել մեկնաբանությունըՋնջել նախագիծըԾրագիրը ջնջելով՝ թարգմանության որեւէ նիշքեր չեն ջնջվի։Գրացուցակներ.Ցանկանո՞ւմ եք ջնջել “%s” նախագիծը:Ցանկանո՞ւմ եք կրկին բեռնել նիշքը հիշասարքից: Այդ դեպքում Poedit-ում չպահպանված խմբագրումները կկորցնեք:Հեռացնե՞լ բոլոր թարգմանությունները, որոնք այլեւս չեն օգտագործվում:Չ&պահելՉպահելԱյլևս չցուցադրելՉնշել ճիշտ համընկնումները որպես ոչ վերջնականԱյլևս չցուցադրելDownՆերբեռնում է վերջին թարգմանությունները...Թարգմանությունների ներբեռնումը անջատած է այս նախագծի համար:Գցել պանակները կամ նիշքերը այստեղԳցել պանակները կամ նիշքերը այստեղՓ&ակելԽմբագրելԽմբագրել &մեկնաբանությունըԽմբագրել &մեկնաբանությունըԽմբագրել մեկնաբանությունըԽմբագրել մեկնաբանությունըԽմբագրել նախագիծըԽմբագրել նախագիծըԽմբագրումԽմբագրել…Էլ. փոստ՝EnterԼրաէկրանԱյս նիշքում գրառումները ունեն այլ ձեւ, քան ասված է նիշքի հոգնակի ձեւերի էջագլխումՆախ սխալներով գրառումներըՆախ սխալներով գրառումներըՍխալներով գրառումները ցանկում նշված են կարմիր գույնով: Սխալի մանրամասները կցուցադրվեն, երբ ընտրեք գրառումը:Սխալ՝ “%s” նիշքը բեռնելիս:Նիշքը բացելու սխալՆիշքը պահելու սխալXLIFF ֆայլի բեռնման ընթացքի խնդիր. %sՍխալներԱմենըԲացառված ուղիներԱրտահանել TMX…Արտահանել որպես…Արտահանելու սխալԱրտահանել TMX…Թարգմանության հիշողության արտահանումը “%s” ձախողվեց:Թարգմանությունների արտահանում…Հանել սկզբնական այլագրիցԴուրս բերել նշումները թարգմանիչների համար հետեւյալից՝Հանել գրվածքը սկզբնական նիշքից հետեւյալ տեղում՝Դուրս է բերում թարգմանվող տողերը…Արտահանիչի կարգավորումԱրտահանիչներՁախողված հրաման. %sՀնարավոր չէ հաղորդակցել Poedit-ի ընթացքը:Հնարավոր չեղավ բեռնել դուրս բերված թարգմանությունենրի նիշքը:Հնարավոր չեղավ ձուլել gettext գրացուցակները:Հնարավոր չեղավ թարմացնել թարգմանության հիշողությունը. %sՆիշքՆիշքը հնարավոր չէ բացել«%s» նիշքը գոյություն չունի:“%s” նիշքը թարգմանության նիշք չէ:«%s» նիշքը միայն կարդալու համար է եւ հնարավոր չէ այն պահել: Պահեք այն այլ անունով:Ամփոփում…ԳտնելԳտնել հաջորդըԳտնել նախորդըԳտնել եւ փոխարինել…Գտնել մեկնաբանություններումԳտնել սկզբնական գրվածքումԳտնել թարգմանություններումԳտնել հաջորդըԳտնել նախորդըՈւղղել լեզունՈւղղել լեզունՈւղղել գլխագիրըՈւղղել գլխագիրըFlutter թարգմանության ֆայլեր%i-իցՁեւ %i (չօգտագործված)ՀաճախակիGNU gettextԳլխավորHTML նիշքերՕգնությունԹաքցնել %s-ըԹաքցնել ուրիշներըԹաքցնել կողագոտինԹաքցնել Վիճակի գոտինԹաքցնել ծանուցումըԻնչպե՞ս է աշխատում ամպի համաժամեցումը:IDԵթե շարունակեք մաքրել, ապա նշված բոլոր թարգմանությունները կջնջվեն անվերադարձ:Եթե նախկինում մերժում եք ստացել մատչելու ձեր նիշքերը, ապա կարող եք թույլատրել այն Համակարգի նախապատվություններ > Անվտանգություն եւ Գաղտնիություն > Գաղտինիություն > Նիշք եւ պանակներ-ում:Եթե նախկինում մերժում եք ստացել մատչելու ձեր նիշքերը, ապա կարող եք թույլատրել այն Համակարգի կարգավորումներ » Անվտանգություն և գաղտնիություն » Նիշքեր և պանակներ-ում:ԱնտեսելԱնտեսել գրանցատեղինՆերմուծել TMX-ից…Ներմուծել թարգմանության ֆայլերը…Ներմուծելու սխալՆերմուծել TMX-ից…Ներմուծել թարգմանության ֆայլերը…Թարգմանության հիշողության ներմուծումը «%s»-ից ձախողվեց:Թարգմանությունների ներմուծում…%s-ումՆերառյալ բետա վարկածըԱնհամապատասխան մեծա/փոքրատառԱնհամապատասխան սպիտակ տարածքՏեղեկություններ թարգմանողի մասինՏեղադրելԱնվավեր նիշքԿանչ.JSON թարգմանության ֆայլերՊահելԼեզվի անունը կամ կոդըԹարգմանության լեզուն նույնն է, ինչ սկզբնականը:Թարգմանության լեզուն նշված չէ:Թարգմանության լեզուն՝Լեզվի ընտրությունԼեզվի թիմը.Լեզուն՝Վերջին փոփոխումըՄանրամասներ gettext հիմնաբառի մասինՄանրամասներ հոգնակի ձեւերի մասինՄանրամասներԻմանալ ավելին %s-ի մասինՄանրամասներ Crowdin-ի մասինՁախ%d տողի '%s' նիշքը վնասված է (անվավեր %s տվյալ):Տողի ավարտ.Ընդլայնումների ցուցակը՝ առանձնացված կետ-ստորակետով (օր.՝ *.cpp;*.h).Բեռնել անգլերենLocalazy-ը վերին աստիճան ինքնաշխատ տեղայնացման հարթակ է, որը ցանկացած անձի հնարավորություն է տալիս հեշտությամբ թարգմանել իր արտադրանքը և բովանդակությունը տարբեր լեզուներով:MO նիշքերը չեն կարող ուղղակիորեն խմբագրվել Poedit-ում:Դարձնել փոքրատառԴարձնել մեծատառՆոր թարգմանություն այս POT նիշքից:Այլակերպված '%s' գլխագիրԿառավարել հաշիվներըԿառավարել…Տարբերությունները ձուլվում են…ՆվազեցնելԹարգմանության նախագծի անունըԱնուն՝Հաջ&որդ անավարտըՀաջ&որդ անավարտըՎերջնական չէՎերջնական չէԵրբեք ակտիվ չի դարձնի տողերով ցանկերը: Եթե միացված է, ապա պետք է օգտագործեք ստեղնաշարի Ctrl+սլաքները, կարող եք նաեւ մուտքագրել անմիջապես՝ առանց Tab-ի միջոցով առաջնահերթությունը փոխելու:ՆորՆոր &POT/PO նիշքից…Նոր &POT/PO նիշքից…Նոր տողՀաջորդ հոգնակինՀաջորդ հոգնակինՈչՉկան համապատասխանություններՆախաթարգմանելու համար գրառումներ չկանՉկա տեղեկություն այս տողերի դեպքերի համար նիշքում տրամադրված սկզբնական կոդում:Չկան համապատասխանություններԹարգմանության հետ կապված խնդիրներ չկան:Թարգմանության նախագծեր ցուցակագրված չեն ձեր հաշվում:Թարգմանություններ չկան TMX նիշքում:Չկա օգտագործման տեղեկությունՈչ բոլոր հոգնակի ձեւերն են թարգմանված:Իսկորոշում չկա, կրկին մուտք գործեք:Նշում թարգմանողների համարԼավՀնացած տողերՄեկՄիացրեք, եթե միայն վստահում եք ձեր TM-ի որակին: Ըստ լռելյայնի, TM-ից բոլոր համընկնումները կնշվեն որպես ոչ վերջնական աշխատանք եւ պետք է ստուգվեն:Լցնել միայն ճիշտ համընկնումներովԲացել ամպի թարգմանություն...Բացել վերջինըԲացել եւ խմբագրել թարգմանության նիշքերը:Բացել ամպի թարգմանությունըԲացել ամպի թարգմանություն...Բացել նիշքըԲացել ԽմբագրիչովԲացել ԽմբագրիչովԲացել վերջինըԲացել թարգմանության ձեւանմուշըԲացել...Բացել…ԸնտրանքներԱյլՆ&ախորդ անավարտըՆ&ախորդ անավարտըPO թարգմանության նիշքերPOT թարգմանության նիշքերPOT նիշքերը միայն նմուշներ են եւ չեն պարունակում որեւէ թարգմանություն: Թարգմանություն ստեղծելու համար ստեղծեք նոր PO նիշք:ՏեղադրելՏեղադրել եւ ըստ ոճիՈւղիներԾրագրի բոլոր նիշքերի վրա կատարում է արդիացում աղբյուրի այլագրից:Թույլտվությունը մերժված էԹարգմանության մեջ բացակայում է “%s” տեղապահը:Տեղապահների ճիշտ օգտագործումըՓոխարենը խնդրում ենք բացել եւխմբագրել համապատասխան PO նիշքը: Երբ պահպանեք այն՝ MO նիշքը կթարմացվի:Խնդրում ենք նախ պահել նիշքը:ՀոգնակիՀոգնակի թվով թարգմանություններՕգտագործված հոգնակի ձեւերի արտահայտությունները անսովոր են %s-ի համար:Հոգնակի ձեւեր.PoeditPoedit-ի Գրացուցակների կառավարPoedit-ը ինքնաբար ուղղել է սխալ բովանդակությունը «%s» նիշքում:Poedit-ը կարող է փորձել լրացնել նոր գրառումները միայն նախորդ թարգմանություններից այս նիշքում կամ թարգմանության ձեր հիշողությունից: TM-ի օգտագործումը արդյունավետ չի լինի, եթե այն գրեթե դատարկ է, բայց կլավարկվի թարգմանություններ ավելացնելու ընթացքում:Poedit-ը չի կարող ցուցադրել սկզբնական կոդը, որտեղ օգտագործված է տողը, քանի որ նիշքը կամ մատչելի չէ հղվող տեղում, կամ այն նշանային հղում է, որը չի մատնանշում իրական նիշքի:Poedit-ը թարգմանությունների դյուրին խմբագիր է:Poedit-ը չկարողացավ բացել “%s” նիշքը:Նախա&թարգմանություն…ՆախաթարգմանելՆախաթարգմանվածՆախաթարգմանված %u տողՆախաթարգմանված %u տողերՆախաթարգմանություն թարգմանության հիշողությունից…Նախաթարգմանություն...Նախաթարգմանությունը ինքնաբար գտնում է ճիշտ կամ ոչ վերջնական համընկնումները չթարգմանված տողերի համար թարգմանության հիշողությունում եւ լցնում է դրանց թարգմանություններում:Նախաթարգմանությունը պահանջում է, որ մատչելի լինի սկզբնական գրվածքը: Այն չի աշխատի, եթե իրական գրվածքի փոխարեն օգտագործվեն միայն ID-ներ:Նախաթարգմանությունը պահանջում է, որ սկզբնական գրվածքի լեզուն հայտնի լինի: Poedit-ը չի կարողանում հայտնաբերել այն տվյալ ֆայլում:ՆախապատվություններՆախապատվություններ...Նախապատվություններ…Տողերի նախապատրաստում…Պահել առկա նիշքերի ձեւաչափումըՆախորդ հոգնակինՆախորդ հոգնակինՆախորդ սկզբնական գրվածքըՆախկինում ԽմբագրվածՆախկինում խմբագրվածՆախագծի անունը եւ տարբեակը.Նախագծի անունը.Նախագիծ՝ՆախագծերԿետադրության ստուգումՄաքրելՄաքրել ջնջված թարգմանություններըՓակելՓակել %s-ըՖայլի բովանդակության ընթերցումը ձախողվեց հետևյալ սխալով. %sՎերջինըՎերջին նիշքերըՎերարկելԹարմացնելԿրկին Բեռնել ՆիշքըԿրկին Բեռնել ՆիշքըՄնում է՝ %dՓոխարինելՓոխարինել &բոլորըՓոխարինել &բոլորըԻնչով փոխարինելՓոխարինել…Պահանջվող հոգնակի ձեւի գլխագիրը բացակայում էՎերակայելՎերակայել թարգմանության հիշողությունըԹարգմանության հիշողության վերակայումը անվերադարձ կջնջի բոլոր թարգմանությունները:Բացահայտել ՈրոնիչումՎերանայելԱջՊահելՊահել &որպես…Պահել &որպես…Այդուհանդերձ, պահելԱյդուհանդերձ, պահելՊահել որպեսՊահել որպես…Պահել փոփոխություններըՊահել նիշքըԷկրանի հանույթՆշել &բոլորըՆշել բոլորըԸնտրեք TMX ֆայլերը՝ ներմուծելու համարԸնտրել գրացուցակըԸնտրել թարգմանության նիշքըԸնտրեք ներմուծվող նիշքերըԸնտրել թարգմանության ձեւանմուշըԸնտրեք Ձեր նախընտրած լեզունԾառայություններՆշել լեզունՆշել լեզունԿայանքներ…Shift+Ցուցադրել բոլորըՑուցադրել կողագոտինՑուցադրել ուղղագրությունը եւ քերականությունըՑուցադրել Վիճակի գոտինՑուցադրել տողի &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 ֆայլերի ներքին ձևաչափմանը: Հարմարեցրեք դրանք, եթե ունեք որոշակի պահանջներ, ինչպես օրինակ՝ տարբերակի կառավարում:Այս տողերը այլեւս սկզբնական կոդում չեն: Poedit-ը այժմ դրանք կհեռացնի նիշքից:Այս տողերը գտնվել են աղբյուրներում, բայց ոչ նիշքում: nPoedit-ը այժմ դրանք կավելացնի նիշքում:Այս JSON ֆայլը թարգմանությունների ֆայլ չէ և հնարավոր չէ խմբագրել Poedit-ում:Այս նիշքը հոգնակի թվով գրառումներ ունի, բայց կազմաձեւված չէ հոգնակի ձեւի էջագլուխը:Այս ֆայլը սկզբնական գրվածքի փոխարեն օգտագործում է տողի ID-ներ: Poedit-ը կարող է բեռնել անգլերեն գրվածքները “%s” ֆայլից:Այս հրամանը օգտագործվում է բացելու համար արտահանիչը: %o-ը կավելացվի արտածվող նիշքի անվանը, %K-ը՝ հիմնաբառի ցանկին, %F-ը՝ ներածվող նիշքերի ցանկին, %C-ը՝ կոդավորման դրոշակին (տես ստորեւ):Այս տողը գտնվել է Poedit-ի թարգմանության հիշողությունում:Սա կկցվի հրամանի տողին, եթե միայն սկզբնական կոդավորում է տրված: %c-ը կավելացվի կոդավորման արժեքին:Սա կկցվի հրամանի տողին մեկ անգամ՝ յուրաքանչյուր ստեղնաշարի համար: %f-ը կավելացվի նիշքի անվանը:Սա կկցվի հրամանի տողին մեկ անգամ՝ յուրաքանչյուր ստեղնաշարի համար: %k-ը կավելացվի ստեղնաշարին:ԸնդամենըՓոխակերպումԹարգմանելի գրառումները ձեռքով չեն ավելացվել Gettext համակարգում, բայց ինքնաբար դուրս են բերվել աղբյուր այլագրից: Այս ճանապարհով դրանք մնում են արդիացված եւ ճիշտ: Թարգմանիչները սովորաբար օգտագործում են PO ձեւանմուշի նիշքեր ((POT-եր), որոնք նրանց համար նախապատրաստվել են մշակողների կողմից:Թարգմանել ամպի նախագիծԹարգմանված է՝ %d-ը %d-ից (%d %%)ԹարգմանությունԹարգմանության լեզունԹարգմանության հիշողություն (ԹՀ)Թարգմանությունը վերջնական &չէԹարգմանության հատկություններըԹարգմանության գրառումները նիշքում, հնարավոր է, սխալ են:Թարգմանության հիշողության շտեմարանը վնասված է՝ %s (%d):Թարգմանության հիշողության սխալ. %s (%d):Թարգմանությունը վերջնական &չէԹարգմանության հատկություններԹարգմանության առաջարկություններՆախաթարգմանությունը պահանջում է, որ մատչելի լինի սկզբնական գրվածքը: Այն չի աշխատի, եթե իրական գրվածքի փոխարեն օգտագործվեն միայն ID-ներ:Թարգմանության առաջարկները պահանջում են, որ սկզբնական գրվածքի լեզուն հայտնի լինի: Poedit-ը չի կարողանում հայտնաբերել այն տվյալ ֆայլում:Թարգմանություն՝ — %sԹարգմանությունները չեն կարող թարմացվել սկզբնական այլագրից, քանի որ այն չի գտնվել նիշքի հատկություններում:ԵրկուUTF-8 (խորհուրդ է տրվում)ՀետարկելԱնհայտ բացառություն. %sUnix (խորհուրդ է տրվում)Crowdin-ի անհայտ սխալ ՉթարգմանվածUpԹարմացնելԹարմացնել բոլորըԹարմացնել բոլոր գրացուցակները նախագծումԱրդիականացնե՞լ բոլոր գրացուցակները այս նախագծում։Թարմացնել &POT նիշքից…Թարմացնել &POT նիշքից…Արդիացնել կոդիցԹարմացնել POT-իցԱրդիացնել այլագրիցԱրդիացնել սկզբնական կոդիցԹարմացումների ամփոփումԹարմացումներԹարմացումը ձախողվեցՆիշքի թարմացումը ձախողվեց: Մանրամասնելու համար սեղմեք 'Մանրամասներ »»':Թարգմանությունների թարմացումԹարմացնում է օգտվողի տեղեկությունը...Թարգմանությունների վերբեռնումը %s ձախողվեց:Թարգմանությունների վերբեռնում %s...Թարգմանությունների վերբեռնում..Օգտ. հարմարեցված արտահայտությունՑանկի տառատեսակը.Գրվածքի տառատեսակը.Օգտ. այս լեզվի ծրագրային կանոններըՕգտ. այս հիմնաբառերը (գործառույթի անունները)՝ ճանաչելու համար թարգմանվող տողերը սկզբնական նիշքում.Օգտ. թարգմանության հիշողությունըՎավերացնելՎավերացման արդյունքներՎարկած՝ %sՍպասում է իսկորոշման...Բարի գալուստ PoeditՍկզբնականից արդիացնելիսՄիայն ամբողջ բառըՊատուհանWindowsԿցանկանա՞ք օգտագործել անգլերենը սկզբնաղբյուր տեքստի համար:Ծալել շուրջըՏողադարձը՝XLIFF թարգմանության նիշքերԱյոԿարող եք նաեւ հանել թարգմանվող տողերը անմիջականորեն սկզբնական այլագրից.Չեք կարող գցել մեկ նիշքից ավելի Poedit-ի պատուհանում:Դուք թույլտվություն չուենք նիշքերի հատկություններում հատկորոշված տեղից կարդալու ելակետային այլագիրի նիշքերը:Կիրառֆելու համար պետք է վերագործարկեք Poedit-ըՁեր անունըԵթե չպահպանեք փոփոխությունները, ապա կկորցնեք դրանք:Ձեր անունը եւ էլ. փոստը օգտագործվելու են միայն GNU gettext նիշքերի գլխագրերում՝ ցուցադրելու վերջին թարգմանողին:ԶրոՉափորոշելaltՎերջնական չէctrlչջնջել ժամանակավոր նիշքերը (վրիպազերծելու համար)օրինակ՝ nplurals=2; plural=(n > 1);ոչ վերջնականի համընկնում նիշքումանցնել միույթի՝ տողի տրված համարովhandle a poedit:// URIնախաթարգմանել TM-իցshiftանհայտ լեզուչաջակցվող տարբերակ (%s)դուք@օրինակ.հայ'%s'-ը վավեր POT նիշք չէ:poedit-3.5/locales/af.mo0000644000175100001770000015767314664354152012173 00000000000000*X9 Y9 e9&p99<99J9gF: :: :: :::::; ;;;&;5;;;A;J;^;r;v;;;;;;;;;; ; ;;< < <!<1<G<]<l<<<<<<<<< < = ==%=A=]=v========>*>:> X> d>n>w>>> > > >> >> > >> ?? *?6?F?Z?u?~???? ? ?1 @<@'A@i@@ @@7@6@ A)@AjA oA]zAA<AD(B$mBB BB'C .C"a{  ̐אސ  0CSi{ܑ̑ '#1 U#v 6ʒ(/Mlu2}+ܓ% &P0DGڔ "CI[ !0A+rɖޖ -MeƗ ʗ ֗  !*L"h Ә, ,i8șߙ*24] '͚ PkqwÛț ,9Q6bl>*i|,Н"9 Ea} Ҟߞ hxŸ.;j$ĠʠР 3'[s%9&(7.J6y&$ע ,<Ziģԣ ٣ , ? M Y guȤ Фܤ  !&5\z}#CLh} 1ϧ$&;bz  ͨӨ0+B Z dn u(! ͩש= B<O 3(\n/ǫ ٫ - ;AW m wlq έ,^+'0Ǯ/('?!gPo ð ٰ )19@FZn!&;LA-ѲhHUM !H>3_+Ѷ 6$&Kbzgc ˸ ո ' 2G\l ʹܹ ;RZjr z ˺ ޺$t, Ļ һ   3 @ N Ze  ļۼ & . 9Fbr  Ľҽ  &CU ]g pzӾ ܾ $CYtĿyڿTm  O= T `m+  > x'',? B;M#[DI352QRe^ i:qjQ,G?1Hq7/"$'/%>.d>c'6V^=i][mEB_pV4uc9f .A \f y;09Pbti`q*IZr  &+1EXl B#'5 ]~!&[{ "!*L R]qBt:r>e8oTXj nx4"#1HO^u+KCDo=Ift!-L P59' S{ Om&TNW6 Tq^Ej"Z_iw>5Ba<D+`MU+,;.$QF.>O.hB1^:\p* >i0)_4 Yx7_7g:CAjG @ArkwT)E dsV|czF2d5[QK,v| -M{2&oy8sew ~HHL4HV=k*ye3hriat/3d !/%p10]3 G@I:6F'uvq{ 9bY#XU NrAn fu9EJn%)1$tWW48sg/`-bkpX0Sx?#R}S}"o?;VY`#6KDf,@Uzx;[gNczcqMZ|RZ\~&X<2a(?PCu(j(n<O+P8Bhvl %*G"J']Ime^y$ Rl~=}Q[L\bl!7Jm]  (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd AccountAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add accountAdd 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 languagesAlt+Always 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 errorCrowdin is an online localization management platform and collaborative translation tool.Ctrl+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 no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownDownloading 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:EnterEnter 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 loading translation file “%s”.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export errorExport 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…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)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport from TMX…Import translation files…Importing translation memory from “%s” 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 CrowdinLeftLine %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 translations were found in the TMX file.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKObsolete stringsOneOnly 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 translation templateOpen...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 translationsQuitQuit %sReading file content failed with the following error: %sRecentRecent 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 FinderReviewRightSaveSave &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 languageServicesSet LanguageSet languageSettings…Shift+Show AllShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow summary after updating filesShow 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.These strings are no longer in the source code. Poedit will remove them from the file now.These strings were found in the sources but were not in the file. Poedit will add them to the file now.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 entries in the file are probably incorrect.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 errorUntransUpUpdateUpdate 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 the file failed. Click on 'Details >>' for details.Updating 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown 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: 2024-08-30 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 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&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(0 nuut, 0 verouderd)(Kom meer te wete oor GNU gettext)(Nuut: %i, verouderd: %i)(Gebruik verstektaal)(nie aangeteken nie)(vereis Windows 8 of nuwer)< &VorigeOor %sRekeningRekeningeVoeg toeVoeg rekening toeSkryf KommentaarVoeg Lêers Toe…Voeg Vouers Toe…Voeg projek toeVoeg Swartpiet toe…Voeg rekening toeSkryf 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 taleAlt+Verander altyd fokus na teks-toevoerveld’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 lokaliseringsbestuurplatform en meewerkvertaalnutsmiddel.Ctrl+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 nie meer gebruik word nie, verwyder?Mo&enie bewaar nieMoenie Bewaar NieMoenie Weer Toon NieMoenie presiese trefslae vir aandag merk nieMoenie weer toon nieAfLaai tans nuutste vertalings af…Aflaai van vertalings vir hierdie projek is gedeaktiveer.Sleep vouers of lêers hierSleep vouers of lêers hier&VerlaatWysigWysig &Kommentaar&Wysig kommentaarWysig KommentaarWysig kommentaarWysig projekWysig die projekWysigingWysig…E-pos:DoenGaan 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 laai van vertalingslêer “%s”.Fout tydens open van lêerFout met bewaar van lêerJuumre tuma loowgol fiilde XLIFF: %sFouteAllesUitgesluite paaieStuur Uit Na TMX…Stuur Uit as…UitstuurfoutStuur uit na TMX…Uitstuur 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…EkstraheeropstellingEkstraheerdersMislukte bevel: %sKommunikasie 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.Rond tans af…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)GereeldGNU gettextAlgemeenHTML-lêersHulpVerberg %sVerberg AndereVersteek 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…InvoerfoutVoer in vanaf TMX…Voer vertaallêers in…Invoer van vertaalgeheue van “%s” 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 CrowdinLinksReë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 vertalings is in die TMX-lêer gevind nie.Geen gebruiksinligtingNie alle meervoudsvorme is vertaal nie.Nie gemagtig nie, teken weer aan.Notas vir vertalersGoedVerouderde stringeEenAktiveer 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 vertalingsjabloonOpen…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 AfSluit %s afTargol loowdi fiilde woorii kadi addii ndee-ɗoo juumre: %sOnlangsOnlangse lêersHerdoenVerfrisHerlaai lêerHerlaai lêerOorblywend: %dVervangVervang &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 FinderHersienRegsBewaarBewaar &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 voorkeurtaalDiensteStel Taal InStel taalInstellings…Wissel+Toon AllesToon SystaafToon Spelling en GrammatikaToon StatusbalkToon String-&IDToon VervangingsToon NutsbalkToon WaarskuwingsToon in ExplorerToon in vouerToon of versteek die systaafToon systaafToon StatusbalkToon string-&IDToon opsomming na bywerking van lêersToon 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 soekVervangingsVoorstelleVoorstelle 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.Hierdie stringe is nie meer in die bronkode nie. Poedit sal dit nou uit die lêer verwyder.Hierdie stringe is in die bronne gevind, maar nie in die lêer nie. Poedit sal dit nou tot die lêer toevoeg.Ndee fiilde JSON wonaa fiilde firo etee waawaa taƴteede e Poedit.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 &AandagVertaaleienskappeVertalingsinskrywings in die lêer is waarskynlik verkeerd.Vertaalgeheuedatabasis 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 foutOnvertaalOpWerk 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 mislukBywerk van lêer het misluk. Klik op ‘Details >>’ vir details.Werk 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…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/verkleinaltKort Werkbeheermoenie tydelike lêers skrap nie (vir foutopsporing)bv. nplurals=2; plural=(n > 1);wollerige trefslae binne die lêergaan na item met gegewe reëlnommergebruik poedit:// URIvoorafvertaal vanaf TMwisselonbekende taalYamre (%s) tammbitaakagebruiker@voorbeeld.co.za“%s” is nie ’n geldige POT-lêer nie.poedit-3.5/locales/nb.po0000644000175100001770000017114014664354154012172 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "Skjul denne meldingen" msgid "Don’t Show Again" msgstr "Ikke vis igjen" msgid "Don’t show again" msgstr "Ikke vis igjen" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(Ny: %i, foreldet: %i)" msgid "Collecting source files…" msgstr "Samler kildefiler…" msgid "Extracting translatable strings…" msgstr "Trekker ut oversettbare tekststrenger…" msgid "Failed to load file with extracted translations." msgstr "Kunne ikke lese oversettelses-filen." msgid "Merging differences…" msgstr "Slår sammen endringer…" msgid "Updating translations" msgstr "Oppdaterer oversettelser" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "«%s»-filen kunne ikke åpnes." msgid "Invalid file" msgstr "Ugyldig fil" #, c-format msgid "Malformed header: “%s”" msgstr "Misformet topptekst: \"%s\"" msgid "PO Translation Files" msgstr "PO oversettelsesfiler" msgid "POT Translation Templates" msgstr "POT Oversettelsesmaler" msgid "XLIFF Translation Files" msgstr "XLIFF oversettelsesfiler" msgid "JSON Translation Files" msgstr "JSON-oversettelsesfiler" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "Flutter-oversettelsesfiler" msgid "All Translation Files" msgstr "Alle oversettelsesfiler" msgid "The file is in a format not recognized by Poedit." msgstr "" msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" #, c-format msgid "Reading file content failed with the following error: %s" msgstr "" #, 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 lagres.\n" "Vennligst lagre filen under et annet navn." #, c-format msgid "Couldn’t save file %s." msgstr "Kunne ikke lagre fil %s." msgid "Screenshots:" msgstr "Skjermklipp:" #, 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] "linje %i i filen '%s' ble ikke riktig lastet inn." msgstr[1] "%i linjer i filen «%s» ble ikke lastet korrekt." #, 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)." msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "Ødelagt PO-fil: entallsform msgstr brukt med msgid_plural" msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "Ødelagt PO-fil: flertallsform msgstr brukt uten msgid_plural" msgid "Couldn’t load the file, it is probably damaged." msgstr "" 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." 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)." #, 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." msgid "Error saving file" msgstr "Feil under lagring av fil" #, c-format msgid "“%s” is not a valid POT file." msgstr "«%s» er ikke en gyldig POT-fil." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "" #, c-format msgid "unsupported version (%s)" msgstr "" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML msgid "Broken markup in translation string." msgstr "Ødelagt tegnsett i oversettelses strengen." msgid "(Use default language)" msgstr "(Bruk standard språk)" msgid "Language selection" msgstr "Språkvalg" msgid "Select your preferred language" msgstr "Velg foretrukket språk" 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." msgid "Add Account" msgstr "Legg til konto" msgid "Add account" msgstr "Legg til konto" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "Les mer om %s" msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" msgid "How does cloud sync work?" msgstr "Hvordan fungerer skysynkronisering?" msgid "Account" msgstr "Konto" msgid "(not signed in)" msgstr "(ikke pålogget)" msgid "File" msgstr "Fil" msgid "Open cloud translation" msgstr "" msgid "Manage accounts" msgstr "Behandle kontoer" msgid "Project:" msgstr "Prosjekt:" msgid "Language:" msgstr "Språk:" msgid "Sign in to Cloud Account" msgstr "" msgid "Sign in to cloud account" msgstr "" msgid "No translation projects listed in your account." msgstr "" msgid "Downloading latest translations…" msgstr "Laster ned nyeste oversettelser..." #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #, c-format msgid "Sign in to %s" msgstr "Logg inn på %s" msgid "Syncing" msgstr "Synkroniserer" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, 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. #, c-format msgid "Uploading translations to %s failed." msgstr "Opplasting av oversettelser til %s mislyktes." msgid "Syncing error" msgstr "Synkronseringsfeil" msgid "Add" msgstr "Legg til" msgid "Unknown Crowdin error." msgstr "" msgid "Not authorized, please sign in again." msgstr "Ikke autorisert, vennligst logg inn igjen." msgid "Downloading translations is disabled in this project." msgstr "Nedlasting av oversettelser er deaktivert i dette prosjektet." msgid "Sign In" msgstr "Logg inn" msgid "Sign in" msgstr "Logg inn" msgid "Sign Out" msgstr "Logg ut" msgid "Sign out" msgstr "Logg ut" msgid "Learn more about Crowdin" msgstr "Lær mer om Crowdin" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" msgid "Waiting for authentication…" msgstr "Venter på godkjenning..." msgid "Updating user information…" msgstr "Oppdaterer brukerinformasjon..." msgid "Sign in to Crowdin" msgstr "Logg inn på Crowdin" msgid "Syncing with Crowdin failed." msgstr "Synkronisering med Crowdin mislyktes." msgid "Crowdin error" msgstr "Crowdin-feil" msgid "Uploading translations…" msgstr "Laster opp oversettelser..." msgid "&Copy" msgstr "Kopier" msgid "Learn more" msgstr "Lær mer" msgid "&Help" msgstr "&Hjelp" msgid "MO files can’t be directly edited in Poedit." msgstr "MO-filer kan ikke redigeres direkte i Poedit." msgid "Error opening file" msgstr "Feil under åpning av filen" 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å." msgid "don’t delete temporary files (for debugging)" msgstr "ikke slett midlertidige filer (for feilsøking)" msgid "handle a poedit:// URI" msgstr "håndter en poedit://-URI" msgid "go to item at given line number" msgstr "gå til elementet på gitt linjenummer" msgid "Failed to communicate with Poedit process." msgstr "Kunne ikke kommunisere med Poedit-prosessen." #, c-format msgid "Unhandled exception occurred: %s" msgstr "Ubehandlet unntak oppstod: %s" msgid "Select translation template" msgstr "Velg oversettelsesmal" msgid "Select translation file" msgstr "Velg oversettelsesfil" msgid "Poedit is an easy to use translation editor." msgstr "" "Poedit er et redigeringsprogram for oversettelser som er enkelt å bruke." 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." #, c-format msgid "File “%s” is not a translation file." msgstr "Filen \"%s\" er ikke en oversettelsesfil." #, c-format msgid "File “%s” doesn’t exist." msgstr "Filen \"%s\" finnes ikke." 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". #, 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." msgid "Install" msgstr "Installer" #, c-format msgid "The file “%s” has been changed by another application." msgstr "Filen «%s» har blitt endret av et annet program." msgid "Reload file" msgstr "Last inn filen på nytt" 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 filen inn fra disken? Den ulagrede redigeringen i Poedit går " "tapt hvis du gjør." msgid "Ignore" msgstr "Ignorer" msgid "Reload File" msgstr "Last inn filen på nytt" msgid "The file has been modified. Do you want to save changes?" msgstr "Filen har blitt endret. Vil du lagre endringene?" msgid "Save changes" msgstr "Lagre endringer" msgid "Your changes will be lost if you don’t save them." msgstr "Dine endringer vil gå tapt hvis du ikke lagrer dem." msgid "Save" msgstr "Lagre" msgid "Do&n’t save" msgstr "Ik&ke lagre" msgid "Don’t Save" msgstr "Ikke lagre" 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." msgid "Cancel" msgstr "&Avbryt" msgid "Save Anyway" msgstr "Lagre uansett" msgid "Save anyway" msgstr "Lagre uansett" msgid "Save as…" msgstr "Lagre som…" msgid "Compile to…" msgstr "Kompiler til…" msgid "Compiled Translation Files" msgstr "Kompilerte oversettelsesfiler" msgid "Export to HTML…" msgstr "" msgid "HTML Files" msgstr "HTML-filer" #, c-format msgid "In: %s" msgstr "Inn: %s" msgid "Source code not available." msgstr "Kildekode er ikke tilgjengelig." msgid "Updating failed" msgstr "Oppdatering mislyktes" 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 "" "Oversettelser kunne ikke oppdateres fra kildekoden, fordi ingen var funnet i " "plasseringen angitt i filens egenskaper." msgid "Permission denied." msgstr "Tillatelse nektet." 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 " "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. msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" "Hvis du tidligere nektet tilgang til dine filer, kan du gi den 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. 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 nektet tilgang til dine filer, kan du gi tilgangen igjen " "ved å gå til Systeminnstillinger > Sikkerhet & Personvern > Filer og mapper." msgid "Translation entries in the file are probably incorrect." msgstr "Oversettelsesoppføringer i filen er sannsynligvis feil." msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "Kan ikke oppdatere filen. Klikk på 'detaljer >>' for detaljer." msgid "Open translation template" msgstr "Åpne oversettelsesmal" #, 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." msgid "Validation results" msgstr "Resultater av validering" 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 sådan oppføring." msgid "The file was saved safely." msgstr "Filen ble trygt lagret." 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." 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 bli kompilert i MO-format og brukes." 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." msgid "The file cannot be compiled into the MO format and used." msgstr "Filen kunne ikke kompileres inn i MO-formatet og brukes." msgid "No problems with the translation found." msgstr "Ingen problemer med oversettelsen funnet." #, 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." msgid "The translation is ready for use." msgstr "Oversettelsen er klar til bruk." #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "Poedit rettet automatisk opp ugyldig innhold i filen “%s”." msgid "" "The file contained duplicate items, which is not allowed in PO files and " "would prevent the file from being used. Poedit fixed the issue, but you " "should review translations of any items marked as needing work and correct " "them if necessary." msgstr "" "Filen inneholder dupliserte elementer, som ikke er tillatt i PO-filer og vil " "hindre at filen blir brukt. Poedit har løst problemet, men du bør vurdere " "oversettelser av alle elementer merket med \"Trenger arbeid\" og rette dem " "om nødvendig." msgid "Language of the translation isn’t set." msgstr "Språket for oversettelsen er ikke satt." msgid "Set Language" msgstr "Angi språk" msgid "Set language" msgstr "Angi språk" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." msgid "" "Suggestions are not available if the translation language is not set " "correctly. Other features, such as plural forms, may be affected as well." msgstr "" "Forslag er ikke tilgjengelig hvis oversettelsespråket ikke er riktig angitt. " "Andre funksjoner, for eksempel flertallsformer, påvirkes også." msgid "Language of the translation is the same as source language." msgstr "Språket i oversettelsen er det samme som kildespråket." msgid "Fix Language" msgstr "Rett opp språk" msgid "Fix language" msgstr "Rett opp språk" 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 satt opp et " "hode med flertallsformer." 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 flertallsformer ut fra hodet i " "filens flertallsformer" msgid "Required header Plural-Forms is missing." msgstr "Den påkrevde prefiksen Plural-Forms mangler." #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Syntaksfeil i prefiksen Plural-Forms (\"%s\")." msgid "Fix the Header" msgstr "Reparer prefiksen" msgid "Fix the header" msgstr "Reparer prefiksen" #. TRANSLATORS: %s is language name in its basic form (as you #. would see e.g. in a list of supported languages). You may need #. to rephrase it, e.g. to an equivalent of "for language %s". #, c-format msgid "Plural forms expression used by the 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.")" msgid "Review" msgstr "Gjennomgang" msgid "Would you like to use English for source text?" msgstr "" #, 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" msgid "Load English" msgstr "Last inn engelsk" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Oversatt: %d av %d (%d %%)" #, c-format msgid "Remaining: %d" msgstr "Gjenstår: %d" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d feil" msgstr[1] "%d feil" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d oppføring" msgstr[1] "%d oppføringer" msgid " (unsaved)" msgstr " (ulagret)" msgid " (modified)" msgstr " (endret)" #, c-format msgid "Failed to update translation memory: %s" msgstr "Kan ikke oppdatere oversettingsminnet: %s" msgid "Remove same-as-source translations" msgstr "" msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" msgid "Keep" msgstr "Behold" msgid "Remove" msgstr "" msgid "Purge deleted translations" msgstr "Fjern slettede oversettelser" msgid "Do you want to remove all translations that are no longer used?" msgstr "Vil du fjerne alle oversettelser som ikke lenger brukes?" 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 med rensingen, vil alle oversettelser merket som slettet " "fjernes permanent. Du må oversette dem igjen hvis de legges tilbake i " "fremtiden." msgid "Purge" msgstr "Tømme" msgid "Copy from source text" msgstr "Kopier fra kildeteksten" msgid "Copy from Source Text" msgstr "Kopier fra kildeteksten" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "Tøm oversettelse" msgid "Clear Translation" msgstr "Tøm oversettelse" msgid "Edit comment" msgstr "Rediger kommentar" msgid "Edit Comment" msgstr "Rediger kommentar" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "Kode forekomster" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "Forekomster av kode" msgid "Hide Sidebar" msgstr "Skjul sidepanelet" msgid "Show Sidebar" msgstr "Vis sidepanelet" msgid "Hide Status Bar" msgstr "Skjul statuslinje" msgid "Show Status Bar" msgstr "Vis statuslinje" msgid "String length in characters: translation | source" msgstr "Lengde på streng i tegn: oversettelsec kilde" msgid "String length in characters" msgstr "Tekst lengde i tegn" msgid "Source text" msgstr "Kildetekst" msgid "Singular" msgstr "Entall" msgid "Plural" msgstr "Flertall" msgid "Translation" msgstr "Oversettelse" msgid "Pre-translated" msgstr "Forhånds-oversatt" 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. msgid "Needs work" msgstr "Trenger arbeid" msgid "" "POT files are only templates and don’t contain any translations themselves.\n" "To make a translation, create a new PO file based on the template." msgstr "" "POT-filer er bare maler og inneholder ikke noen oversettelser i seg selv.\n" "For å lage en oversettelse, opprett en ny PO-fil basert på malen." msgid "Create new translation" msgstr "Opprett ny oversettelse" msgid "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 msgid "Source text ID" msgstr "Kildetekstens ID" msgid "Everything" msgstr "Alt" #, c-format msgid "Form %i" msgstr "Form %i" #, c-format msgid "Form %i (unused)" msgstr "Skjemaet %i (ubrukt)" msgid "Zero" msgstr "Null" msgid "One" msgstr "En" msgid "Two" msgstr "To" msgid "Other" msgstr "Andre" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, c-format msgid "String context: %s" msgstr "" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #, c-format msgid "String identifier: %s" msgstr "" #, c-format msgid "%s Format" msgstr "%s-format" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "%s-format" #, c-format msgid "Translation — %s" msgstr "Oversettelse — %s" msgid "ID" msgstr "ID" #, c-format msgid "Source text — %s" msgstr "Kildetekst — %s" msgid "unknown language" msgstr "Ukjent språk" #, c-format msgid "Network error: %s (%d)" msgstr "" msgid "Unknown error" msgstr "" #, c-format msgid "Failed command: %s" msgstr "Kommandoen mislyktes: %s" msgid "Failed to merge gettext catalogs." msgstr "Klarte ikke slå sammen gettex-kataloger." msgid "Open in Editor" msgstr "Åpne i redigeringsprogram" msgid "Open in editor" msgstr "Åpne i redigeringsprogram" 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." msgid "No usage information" msgstr "Ingen bruksinformasjon" #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d kodeforekomst" msgstr[1] "%d kodeforekomster" msgid "Source code not found" msgstr "Kildekoden ikke funnet" 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." msgid "File cannot be opened" msgstr "Filen kan ikke åpnes" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "Poedit kunne ikke åpne “%s” filen." msgid "Find" msgstr "Finn" msgid "Replace" msgstr "Erstatt" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "Alternativer" msgid "Ignore case" msgstr "Ignorer små/STORE bokstaver" msgid "Wrap around" msgstr "Pakk rundt" msgid "Whole words only" msgstr "Bare hele ord" msgid "Find in source texts" msgstr "Finn i kildetekster" msgid "Find in translations" msgstr "Finn i oversettelser" msgid "Find in comments" msgstr "Finn i kommentarer" msgid "Close" msgstr "Lukk" msgid "Replace &All" msgstr "Erstatt &alle" msgid "Replace &all" msgstr "Erstatt &alle" msgid "&Replace" msgstr "&Erstatt" msgid "< &Previous" msgstr "← &Tidligere" msgid "&Next >" msgstr "&Neste →" msgid "String to find" msgstr "Strengen som skal finnes" msgid "Replacement string" msgstr "Erstatningsstreng" #, c-format msgid "Cannot execute program: %s" msgstr "Kan ikke kjøre program: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "Språknavn eller -kode" msgid "Translation Language" msgstr "Oversettelsespråket" msgid "Language of the translation:" msgstr "Språket til oversettelsen:" msgid "All strings" msgstr "Alle strenger" msgid "Couldn’t download Localazy project details." msgstr "" msgid "There was an error when uploading translations to Localazy." msgstr "" msgid "Projects" msgstr "Prosjekter" msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" msgid "Add Project" msgstr "Legg til prosjekt" msgid "Add project" msgstr "Legg til prosjekt" msgid "Poedit - Catalogs manager" msgstr "Poedit - Kataloghåndterer" msgid "Edit…" msgstr "Rediger…" msgid "Create new translations project" msgstr "Lag nytt oversettelsesprosjekt" msgid "Delete the project" msgstr "Slett prosjekt" msgid "Edit the project" msgstr "Rediger prosjekt" msgid "Update all" msgstr "Oppdater alle" msgid "Update all catalogs in the project" msgstr "Oppdater alle katalogene i prosjektet" msgid "Total" msgstr "Totalt" msgid "Untrans" msgstr "Ikke oversettbart" msgctxt "column/row header" msgid "Needs Work" msgstr "Trenger arbeid" msgid "Errors" msgstr "Feil" msgid "Last modified" msgstr "Sist endret" msgid "Select directory" msgstr "Velg mappe" msgid "Directories:" msgstr "Mapper:" msgid "" msgstr "" #, c-format msgid "Do you want to delete project “%s”?" msgstr "Vil du slette prosjektet “%s”?" msgid "Delete project" msgstr "Slett prosjekt" msgid "Deleting the project will not delete any translation files." msgstr "Slette prosjektet vil ingen oversettelsesfiler slettes." msgid "Confirmation" msgstr "Bekreftelse" msgid "Update all catalogs in this project?" msgstr "Oppdater alle kataloger i dette prosjektet?" msgid "Performs update from source code on all files in the project." msgstr "Utfører oppdatering fra kildekode på alle filer i prosjektet." msgid "Check for Updates…" msgstr "Se etter oppdateringer…" msgid "Catalogs Manager" msgstr "Katalogbehandling" msgid "&Preferences…" msgstr "&Innstillinger…" msgid "&Edit" msgstr "&Rediger" msgid "Undo" msgstr "Angre" msgid "Redo" msgstr "Gjør om" msgid "Paste and Match Style" msgstr "Lim inn og tilpass stil" msgid "Delete" msgstr "Slett" msgid "Spelling and Grammar" msgstr "Stavekontroll og grammatikk" msgid "Show Spelling and Grammar" msgstr "Vis stavekontroll og grammatikk" msgid "Check Document Now" msgstr "Sjekk dokumentet nå" msgid "Check Spelling While Typing" msgstr "Stavekontroll mens du skriver" msgid "Check Grammar With Spelling" msgstr "Kontroller grammatikk i stavekontrollen" msgid "Correct Spelling Automatically" msgstr "Korrigere stavefeil automatisk" msgid "Substitutions" msgstr "Erstatninger" msgid "Show Substitutions" msgstr "Vis erstatninger" msgid "Smart Copy/Paste" msgstr "Enkel Kopiering/Lim inn" msgid "Smart Quotes" msgstr "Apostrof" msgid "Smart Dashes" msgstr "Enkle punkter" msgid "Smart Links" msgstr "Enkle lenker" msgid "Text Replacement" msgstr "Teksterstatning" msgid "Transformations" msgstr "Transformasjoner" msgid "Make Upper Case" msgstr "Gjør om til store bokstaver" msgid "Make Lower Case" msgstr "Gjør om til små bokstaver" msgid "Capitalize" msgstr "Stor forbokstav" msgid "Speech" msgstr "Tale" msgid "Start Speaking" msgstr "Begynn å snakke" msgid "Stop Speaking" msgstr "Slutt å snakke" msgid "&View" msgstr "&Vis" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Show Toolbar" msgstr "Vis verktøylinje" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Customize Toolbar…" msgstr "Tilpass verktøylinje..." #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Enter Full Screen" msgstr "Gå til fullskjerm" msgid "Window" msgstr "Vindu" msgid "Minimize" msgstr "Minimer" msgid "Zoom" msgstr "Zoom" msgid "Welcome to Poedit" msgstr "Velkommen til Poedit" msgid "Bring All to Front" msgstr "Plasser fremst" msgid "Information about the translator" msgstr "Informasjon om oversetteren" msgid "Name:" msgstr "Navn:" msgid "Your Name" msgstr "Ditt navn" msgid "Email:" msgstr "E-post:" msgid "you@example.com" msgstr "deg@eksempel.no" 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." msgid "Editing" msgstr "Redigering" msgid "Automatically compile MO file when saving" msgstr "Automatisk kompiler MO-filen ved lagring" msgid "Show summary after updating files" msgstr "Vis oppsummering etter oppdatering av filer" msgid "Check spelling" msgstr "Stavesjekk" msgid "Always change focus to text input field" msgstr "&Fokuser automatisk på oversettelsesfeltet" 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." msgid "Appearance" msgstr "Utseende" msgid "Use custom list font:" msgstr "Bruk egendefinert listeskrifttype:" msgid "Use custom text fields font:" msgstr "Bruk egendefinert tekstfelt-skrifttype:" 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 msgid "(requires Windows 8 or newer)" msgstr "(krever Windows 8 eller nyere)" msgid "General" msgstr "Generelt" msgid "Use translation memory" msgstr "Bruk oversettelsesminne" msgid "Manage…" msgstr "Behandle…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "Ved oppdatering fra kilder" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "fuzzy-treff i fila" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "forhånds-oversatt fra TM" 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." msgid "Stored translations:" msgstr "Lagrede oversettelser:" msgid "Database size on disk:" msgstr "Databasestørrelsen på disk:" msgid "Import Translation Files…" msgstr "Importer oversettelsesfiler…" msgid "Import translation files…" msgstr "Importer oversettelsesfiler…" msgid "Import From TMX…" msgstr "Importer fra TMX…" msgid "Import from TMX…" msgstr "Importer fra TMX…" msgid "Export To TMX…" msgstr "Eksporter til TMX…" 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). msgid "Reset" msgstr "Tilbakestill" msgid "Select translation files to import" msgstr "Velg oversettelsesfiler som skal importeres" msgid "Translation Memory" msgstr "Oversettelsesminne" msgid "Importing translations…" msgstr "Importerer oversettelser…" #, c-format msgid "Error loading translation file “%s”." msgstr "Feil ved lasting av oversettelsesfil «%s»." msgid "Finalizing…" msgstr "Fullfører…" msgid "Select TMX files to import" msgstr "Velg TMX filer for importering" msgid "TMX Files" msgstr "TMX filer" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "Kunne ikke importere oversettelsesminne fra \"%s\"." msgid "Import error" msgstr "Importfeil" msgid "Export as…" msgstr "Eksporter som…" msgid "Exporting translations…" msgstr "Eksporterer oversettelser…" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "Kunne ikke eksportere oversettelsesminne til \"%s\"." msgid "Export error" msgstr "Eksporteringsfeil" msgid "Reset translation memory" msgstr "Tilbakestill oversettingsminnet" msgid "Are you sure you want to reset the translation memory?" msgstr "Er du sikker på at du vil tilbakestille oversettelsesminnet?" 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. msgid "TM" msgstr "TM" msgid "" "Source code extractors are used to find translatable strings in the source " "code files and extract them so that they can be translated." msgstr "" "Kildekodeutpakkere brukes til å finne oversettbare strenger i kildekodefiler " "og å pakke dem ut slik at de kan oversettes." msgid "Custom Extractors:" msgstr "Egendefinerte utpakkere:" msgid "Custom extractors:" msgstr "Egendefinerte utpakkere:" msgid "GNU gettext" msgstr "GNU gettext" 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)." msgid "Delete extractor" msgstr "Slett ekstraktor" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "Er du sikker på at du vil slette \"%s\" ekstraktor?" msgid "Extractors" msgstr "Utpakker" msgid "Accounts" msgstr "Kontoer" msgid "Automatically check for updates" msgstr "Automatisk se etter oppdateringer" msgid "Include beta versions" msgstr "Inkluder betaversjoner" 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." msgid "Updates" msgstr "Oppdateringer" 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." msgid "Line endings:" msgstr "Linjeavslutninger:" msgid "Unix (recommended)" msgstr "UNIX (anbefales)" msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "Vikle på:" msgid "Preserve formatting of existing files" msgstr "Beholde formateringen av eksisterende filer" msgid "Advanced" msgstr "Avansert" msgid "Settings" msgstr "" msgid "Preparing strings…" msgstr "Forbereder strenger…" msgid "Pre-translating from translation memory…" msgstr "Forhånds-oversetter fra oversettelsesminne…" #, 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" msgid "Pre-translating…" msgstr "Forhånds-oversetter…" 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. msgid "Pre-translate" msgstr "Forhånds-oversett" msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" msgid "Cannot pre-translate from unknown language." msgstr "" msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" msgid "Only fill in exact matches" msgstr "Fyll kun ut nøyaktige treff" msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" msgid "Don’t mark exact matches as needing work" msgstr "Ikke marker nøyaktige treff som Trenger arbeid" 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." 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." #, 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." 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." msgid "No entries could be pre-translated." msgstr "Ingen oppføringer kan bli forhånds-oversatt." 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." msgid "Cancelling…" msgstr "Avbryter…" msgid "Drag Folders or Files Here" msgstr "Dra mapper eller filer hit" msgid "Drag folders or files here" msgstr "Dra mapper eller filer hit" msgid "Add Folders…" msgstr "Legg til mapper…" msgid "Add folders…" msgstr "Legg til mapper…" msgid "Add Files…" msgstr "Legg til filer…" msgid "Add files…" msgstr "Legg til filer…" msgid "Add Wildcard…" msgstr "Legg til jokertegn…" msgid "Add wildcard…" msgstr "Legg til jokertegn…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) 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" msgid "Show in Explorer" msgstr "Vis i utforsker" msgid "Show in Folder" msgstr "Vis i mappe" msgid "Paths" msgstr "Stier" msgid "Excluded paths" msgstr "Ekskluderte baner" msgid "Advanced extraction settings" msgstr "Avanserte utvinningsinnstillinger" msgid "Extract notes for translators from:" msgstr "Hent ut notater for oversettere fra:" msgid "Comments prefixed with:" msgstr "Kommentarer som innledes med:" msgid "All comments" msgstr "Alle kommentarer" msgid "Additional xgettext flags:" msgstr "Ytterligere xgettext-flagg:" msgid "Additional keywords" msgstr "Flere søkeord" msgid "Name of the project the translation is for" msgstr "Navnet på prosjektet oversettelsen er for" msgid "Team name and email address or URL" msgstr "Lagnavn og e-postadresse eller nettadresse" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "f.eks nplurals = 2; flertall = (n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (anbefales)" msgid "Please save the file first. This section cannot be edited until then." msgstr "Lagre filen først. Denne delen kan ikke redigeres før da." msgid "Placeholders correctness" msgstr "Plassholder-riktighet" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "Midlertidig ”%s” mangler i oversettelsen." #, c-format msgid "Superfluous placeholder “%s” that isn’t in source text." msgstr "Superflukt plassholder “%s, that is not is in source text." msgid "Plural form translations" msgstr "Flertallsform oversettelser" msgid "Not all plural forms are translated." msgstr "Ikke alle flertallsformer er oversatte." msgid "Inconsistent upper/lower case" msgstr "Ukonsekvent øvre/små bokstaver" msgid "The translation should start as a sentence." msgstr "Oversettelsen burde begynne som en setning." msgid "The translation should start with a lowercase character." msgstr "Oversettelsen burde begynne med en liten bokstav." msgid "Inconsistent whitespace" msgstr "Inconsistent whitespace" msgid "The translation doesn’t start with a space." msgstr "Oversettelsen starter ikke med et mellomrom." 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." msgid "The translation is missing a newline at the end." msgstr "Oversettelsen mangler en linje på slutten." msgid "The translation ends with a newline, but the source text doesn’t." msgstr "Oversettelsen slutter med en linje, men kildeteksten gjør ikke." msgid "The translation is missing a space at the end." msgstr "Oversettelsen mangler et mellomrom på slutten." msgid "The translation ends with a space, but the source text doesn’t." msgstr "Oversettelsen slutter med et mellomrom, men kildeteksten gjør ikke." msgid "Punctuation checks" msgstr "Stikkprøvekontroll" #, c-format msgid "The translation should end with “%s”." msgstr "Oversettelsen burde slutte med \"%s\"." #, c-format msgid "The translation should not end with “%s”." msgstr "Oversettelsen burde ikke slutte med \"%s\"." #, 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\"." msgid "Cloud" msgstr "" msgid "Clear Menu" msgstr "Nullstill meny" msgid "Clear menu" msgstr "Nullstill meny" msgid "Comment:" msgstr "Kommentar:" msgid "Update" msgstr "Oppdater" msgid "&Delete" msgstr "&Slett" msgid "Delete the comment" msgstr "Slett kommentaren" msgid "Edit project" msgstr "Rediger prosjekt" msgid "Project name:" msgstr "Prosjektnavn:" msgid "Browse" msgstr "Bla &gjennom" msgid "Add directory to the list" msgstr "Legg katalog til lista" msgid "OK" msgstr "&OK" msgid "&File" msgstr "&Fil" msgid "&New…" msgstr "&Ny…" msgid "New from &POT/PO file…" msgstr "Ny fra &POT/PO fil…" msgid "New From &POT/PO File…" msgstr "Ny fra &POT/PO fil…" msgid "&Open…" msgstr "&Åpne…" msgid "Open Recent" msgstr "Åpne seneste" msgid "Open recent" msgstr "Åpne seneste" msgid "Open cloud translation…" msgstr "" msgid "Open Cloud Translation…" msgstr "" msgid "&Start window" msgstr "&Start vindu" msgid "&Start Window" msgstr "&Start vindu" msgid "Catalogs &manager" msgstr "Katalog&håndterer" msgid "Catalogs &Manager" msgstr "Katalog&behandler" msgid "&Close" msgstr "&Avslutt" msgid "&Save" msgstr "La&gre" msgid "Save &as…" msgstr "Lagre &som…" msgid "Save &As…" msgstr "Lagre &som…" msgid "Compile to MO…" msgstr "Kompiler til MO…" msgid "E&xport to HTML…" msgstr "" msgid "Check for updates…" msgstr "Se etter oppdateringer…" msgid "Settings…" msgstr "Innstillinger…" msgid "&Preferences" msgstr "&Innstillinger" msgid "E&xit" msgstr "Avslutt" msgid "Quit" msgstr "Avslutt" msgid "Copy from singular" msgstr "Kopier fra entall" msgid "Copy From Singular" msgstr "Kopier fra entall" msgid "Translation needs &work" msgstr "Oversettelsen trenger &arbeid" msgid "Translation Needs &Work" msgstr "Oversettelsen trenger &arbeid" msgid "Edit &comment" msgstr "&Rediger kommentar" msgid "Edit &Comment" msgstr "Rediger &kommentar" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "Forslag" msgid "&Find…" msgstr "&Søk…" msgid "Replace…" msgstr "Erstatt…" msgid "Find next" msgstr "Finn neste" msgid "Find previous" msgstr "Finn forrige" msgid "Find and Replace…" msgstr "Søk og erstatt…" msgid "Find Next" msgstr "Finn neste" msgid "Find Previous" msgstr "Finn forrige" msgid "Show string &ID" msgstr "Vis string-&ID" msgid "Show String &ID" msgstr "Vis string-&ID" msgid "Show warnings" msgstr "Vis advarsler" msgid "Show Warnings" msgstr "Vis advarsler" msgid "Sort by &file order" msgstr "Sorter etter &filrekkefølge" msgid "Sort by &File Order" msgstr "Sorter etter &filrekkefølge" msgid "Sort by &source" msgstr "Sorter etter &kilde" msgid "Sort by &Source" msgstr "Sorter etter &kilde" msgid "Sort by &translation" msgstr "Sorter etter overse&ttelse" msgid "Sort by &Translation" msgstr "Sorter etter overse&ttelse" msgid "&Group by context" msgstr "&Sorter etter sammenheng" msgid "&Group By Context" msgstr "&Sorter etter sammenheng" msgid "Entries with errors first" msgstr "Oppføringer med feil først" msgid "Entries with Errors First" msgstr "Oppføringer med feil først" msgid "&Untranslated entries first" msgstr "&Uoversatte poster først" msgid "&Untranslated Entries First" msgstr "&Uoversatte poster først" msgid "&Show code occurrences" msgstr "&Vis kodeforekomster" msgid "&Show Code Occurrences" msgstr "&Vis Kodetime-forekomster" msgid "Show sidebar" msgstr "Vis sidepanelet" msgid "Show status bar" msgstr "Vis statuslinje" msgid "&Translation" msgstr "&Oversettelse" msgid "&Update from source code" msgstr "&Oppdater fra kildekode" msgid "&Update from Source Code" msgstr "&Oppdater fra kildekode" msgid "Update from &POT file…" msgstr "Oppdater fra &POT-fil…" msgid "Update from &POT File…" msgstr "Oppdater fra &POT-fil…" msgid "Sync with Crowdin" msgstr "Synkroniser med Crowdin" msgid "Pre-&translate…" msgstr "Forhånds&oversett…" msgid "&Validate translations" msgstr "&Valider oversettelser" msgid "&Validate Translations" msgstr "&Valider oversettelser" msgid "Remove Same-as-Source Translations" msgstr "" msgid "&Purge deleted translations" msgstr "&Fjern slettede oversettelser" msgid "&Purge Deleted Translations" msgstr "Fjern slettede oversettelser" msgid "&Properties…" msgstr "&Egenskaper…" msgid "&Go" msgstr "&Gå" msgid "&Done and next" msgstr "Utført og neste" msgid "&Done and Next" msgstr "&Utført og neste" msgid "Previously edited" msgstr "Tidligere redigert" msgid "Previously Edited" msgstr "Tidligere endret" msgid "&Previous translation" msgstr "&Tidligere oversettelse" msgid "&Previous Translation" msgstr "Tidligere oversettelse" msgid "&Next translation" msgstr "&Neste oversettelse" msgid "&Next Translation" msgstr "&Neste oversettelse" msgid "P&revious unfinished" msgstr "Fo&rrige uferdige" msgid "P&revious Unfinished" msgstr "Fo&rrige uferdige" msgid "Ne&xt unfinished" msgstr "Neste uferdige" msgid "Ne&xt Unfinished" msgstr "Neste uferdige" msgid "Previous plural form" msgstr "Forrige flertallsform" msgid "Previous Plural Form" msgstr "Forrige flertallsform" msgid "Next plural form" msgstr "Neste flertallsform" msgid "Next Plural Form" msgstr "Neste flertallsform" msgid "&Online help" msgstr "Hjelp på nett" msgid "&Online Help" msgstr "Hjelp på nett" msgid "&GNU gettext manual" msgstr "&GNU gettext-dokumentasjon" msgid "&GNU gettext Manual" msgstr "&GNU gettext-dokumentasjon" msgid "&About Poedit" msgstr "&Om Poedit" msgid "&About" msgstr "Om" msgid "Extractor setup" msgstr "Utpakker-oppsett" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Liste over etternavn skilt med semikolon (f.eks. «*.cpp; *.h»):" msgid "Invocation:" msgstr "Start: " msgid "Command to extract translations:" msgstr "Kommando for å pakke ut oversettelser:" 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)." msgid "An item in keywords list:" msgstr "Et element i lista over nøkkelord:" 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." msgid "An item in input files list:" msgstr "Et element i lista over inndatafiler:" #, 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." msgid "Source code charset:" msgstr "Kildekodetegnsett:" #, 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." msgid "Translation Properties" msgstr "Oversettelsesegenskaper" msgid "Project name and version:" msgstr "&Prosjektnavn og -versjon:" msgid "Language team:" msgstr "Språklag:" msgid "Plural forms:" msgstr "Flertallsformer:" msgid "Use default rules for this language" msgstr "Bruk standardregler for dette språket" msgid "Use custom expression" msgstr "Bruk egendefinerte uttrykk" msgid "Learn about plural forms" msgstr "Lær om flertallsformer" msgid "Charset:" msgstr "&Tegnkoding:" msgid "Advanced Extraction Settings…" msgstr "Avanserte innstillinger for eksportering…" msgid "Advanced extraction settings…" msgstr "Avanserte innstillinger for eksportering…" msgid "Translation properties" msgstr "Egenskaper for oversettelse" msgid "Sources Paths" msgstr "Kildestier" msgid "Sources paths" msgstr "Kildebaner" msgid "Extract text from source files in the following directories:" msgstr "Trekk ut tekst fra kildefiler i følgende kataloger:" msgid "Base path:" msgstr "&Grunnsti:" msgid "Sources Keywords" msgstr "Kilde-nøkkelord" msgid "Sources keywords" msgstr "Kilder nøkkelord" 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:" msgid "Also use default keywords for supported languages" msgstr "Bruk forvalgte nøkkelord også for støttede språk" msgid "Learn about gettext keywords" msgstr "Lær om gettext-søkeord" msgid "Update summary" msgstr "Sammendrag" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" "Disse strengene ble funnet i kildene, men ikke i filen.\n" "Poedit vil legge dem til i filen nå." msgid "New strings" msgstr "Nye tekster" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" "Disse strengene finnes ikke lenger i kildekoden.\n" "Poedit vil fjerne dem fra filen nå." msgid "Obsolete strings" msgstr "Utgåtte strenger" msgid "(0 new, 0 obsolete)" msgstr "(0 nye, 0 utgåtte)" msgid "Open" msgstr "" msgid "Open file" msgstr "Åpne fil" msgid "Save file" msgstr "Lagre filen" msgid "Validate" msgstr "Validere" msgid "Check for errors in the translation" msgstr "Se etter feil i oversettelse" msgid "Update from code" msgstr "Oppdatere fra koden" msgid "Update from Code" msgstr "Oppdatere fra koden" msgid "Update from source code" msgstr "Oppdater fra kildekode" msgid "Sidebar" msgstr "Sidepanel" msgid "Show or hide the sidebar" msgstr "Vis eller skjul sidepanelet" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. msgid "Previous source text" msgstr "Tidligere kildetekst" 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." msgid "Notes for translators" msgstr "Notater for oversettere" msgid "Comment" msgstr "Kommentar" msgid "Add comment" msgstr "Legg til kommentar" msgid "Add Comment" msgstr "Legg til kommentar" msgid "Delete From Translation Memory" msgstr "Slett fra oversettelsesminne" msgid "Delete from translation memory" msgstr "Slett fra oversettelsesminne" msgid "Translation suggestions" msgstr "Oversettelsesforslag" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). msgid "No matches found" msgstr "Ingen treff funnet" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). msgid "No Matches Found" msgstr "Ingen treff funnet" msgid "This string was found in Poedit’s translation memory." msgstr "Denne strengen ble funnet i Poedits oversettelsesminne." msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" msgid "The TMX file is malformed." msgstr "TMX-filen er feilformatert." msgid "No translations were found in the TMX file." msgstr "Ingen oversettelser ble funnet i TMX filen." #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Oversettelsesminnedatabasen er skadet: %s (%d)." #, c-format msgid "Translation memory error: %s (%d)." msgstr "Oversettelsesminnefeil: %s (%d)." msgid "Cannot create temporary directory." msgstr "Kan ikke opprette midlertidig katalog." msgid "There are no translations. That’s unusual." msgstr "Det finnes ingen oversettelser. Det er uvanlig." msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "Translators typically use PO template files (POTs) prepared for them by the " "developer." msgstr "" "Oversettbare oppføringer legges ikke inn manuelt i Gettext-systemet, men er " "automatisk utviklet\n" "fra kildekoden. På denne måten vil de holde seg oppdatert og nøyaktige. \n" "Oversettere bruker vanligvis PO-malfiler (POT) forberedt for dem av " "utvikleren." msgid "(Learn more about GNU gettext)" msgstr "(Lær mer om GNU gettext)" 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:" msgid "Update from POT" msgstr "Oppdater fra POT" msgid "Take translatable strings from an existing POT template." msgstr "Ta oversettbare strenger fra en eksisterende POT mal." msgid "" "You can also extract translatable strings directly from the source code:" msgstr "Du kan også hente oversettbare strenger direkte fra kildekoden:" msgid "Extract from sources" msgstr "Utdrag fra kilder" 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 #, c-format msgid "Version %s" msgstr "Versjon %s" msgid "Create new" msgstr "Lag ny" msgid "Create new translation from POT template." msgstr "Lag en ny oversettelse ut i fra en POT-mal" msgid "Browse files" msgstr "Bla gjennom filer" msgid "Open and edit translation files." msgstr "Åpne og rediger oversettelsesfiler." msgid "Translate cloud project" msgstr "" msgid "Collaborate with other people online." msgstr "" msgid "Recent files" msgstr "Nylige filer" msgid "Sync" msgstr "Synkroniser" 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") #, 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. #, c-format msgid "%s Preferences" msgstr "%s preferanser" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "Tjenester" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "Skjul %s" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "Skjul andre" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "Vis alle" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "Avslutt %s" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "Innstillinger…" msgid "Preferences..." msgstr "Preferanser..." #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "Nylige" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "Gjentakende" msgid "&Apply" msgstr "Bruk" msgid "Apply" msgstr "Legg til" msgid "&Back" msgstr "Til&bake" msgid "Back" msgstr "Tilbake" msgid "&Cancel" msgstr "Avbryt" msgid "&Clear" msgstr "Tøm" msgid "Clear" msgstr "Klargjør" msgid "Copy" msgstr "Kopier" msgid "Cu&t" msgstr "Klipp &ut" msgid "Cut" msgstr "Klipp ut" msgid "Edit" msgstr "&Rediger" msgid "&Quit" msgstr "&Avslutt" msgid "Help" msgstr "Hjelp" msgid "&New" msgstr "&Ny" msgid "New" msgstr "&Ny" msgid "&No" msgstr "&Nei" msgid "No" msgstr "Nei" msgid "&OK" msgstr "&OK" msgid "Open…" msgstr "Åpne…" msgid "&Open..." msgstr "&Åpne ..." msgid "Open..." msgstr "Åpne..." msgid "&Paste" msgstr "&Lim inn" msgid "Paste" msgstr "Lim inn" msgid "Preferences" msgstr "Innstillinger" msgid "&Redo" msgstr "Gjø&r om" msgid "Refresh" msgstr "Oppdatér" msgid "&Save as" msgstr "Lagre &som" msgid "Save as" msgstr "Lagre som" msgid "Select &All" msgstr "&Merk alle" msgid "Select All" msgstr "Merk alle" msgid "&Undo" msgstr "&Angre" msgid "&Yes" msgstr "Ja" msgid "Yes" msgstr "Ja" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Skriv" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "Opp" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "Ned" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "Venstre" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "Høyre" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "shift" poedit-3.5/locales/es.mo0000644000175100001770000016561314664354153012206 00000000000000 +h9 i9 u9&99<99J :gV: :: :: :::; ;;;;';6;E;K;Q;Z;n;;;;;;;;;;;; ; ; <<< $<1<A<W<m<|<<<<<<<<< = = "=/=5=Q=m======== >#>:>J> h> t>~>>>> > > >> >> > >? ?+? :?F?V?j?????? @ @1@L@'Q@y@@ @@7@6@0A)PAzA A]AA<AD8B$}BB BB7C >C"LCoC+C)C CCCD D3DU(zUUUU U UUV 0V;VOVhV:mV V<V VW.WWW*WX"X 2Xu-uCuAvKCv0v.vv!~w)w-w+w8$xC]xux,yLDy;y]y+zZzg {Jt{[{o||77}mo}_}[=~~~~ *7A2y"π~q  !$ +"6$Y~у <!^t$ք#9V]˅ԅ "=NU.] H5m<7 3a . >Ukq!͉ y2ɋ7Z,x   )4FO Waiq y Íڍ&- 4 >Kby}  Îю<Za jv ͏  ) H i%ؐ7#K o { Α*=Xl! $!$3!XzO,/$*T 3<Ɣ'2+^eowO_L0ݖ &$4.< kyؘ' 3S m ƙә  $&;)b$ Ț":( cq 9M%gA:Ϝ% 0<9T#oÝ39A]%y%̞%՞%4F]Br %j;P ..?/"o"á֡ 0 9CX^|x{/1ݣ$8@EU gu= /&HV! ݥ.=+,i4˦Ӧ' ]5ʧ1BRbr"¨ ڨ  +AY/t[!#ѫ #!AE$!'0 IU r|?1׭ #8OW5m'ˮݮ G"jDįӯ;w̰8'F Xe 9ñ˱ )/5Ts'гg`1}46/63f˵ϵ{%ƶ &4GZj׷W¸01brOBIJiź̺M 7E3 '>f v 31ý{r/ Ͽ/+AZn  F! hr   /! Q"]}#+<Md {($09U&! ' /< Rs"8Nf/}   8>G^s *#N&!6F]tO 9K]w 6  $0A&& 74l o@|'F=Gw:?6zWr Y|$#1{Q\**KUAM61)h'4(\+/6Bu[$O>FiYtG[d@cs7g*9V sHE0,vt +. @M T_,o6 .C\|[+8%d!+4*Hls !-L%[6 !O%>uv9+ e*o& *62;#n(- ':T$fLDDo>Igt".L Q5 9' T| Pm&TNX6!Ur^Ek#Z_jw?6Ba=E,`NV+,;/$F.>O.hB1_:]q+ >i0)`4 Yx7_8h; CAjG ABrkxT)E esV}d{G3d5[QK,v| -M{2&py8sew HIL4HW=l*ze4hsiau03d !/&p20]3 H@J:7F(uwq{ 9bZ$YUNrAn fv:FJo%*1$tWW58tg/a-bkpX1Sy@#S}S}"o?<VY`#6KDf-@Uzx;\gOczcqM[|RZ\~'X<2b)?PCu(j(Qn<O+P9Civm %*G"K']Inf^y% Rl~=~R[M\cl!7Jm^  (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd AccountAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add accountAdd 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 languagesAlt+Always 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 errorCrowdin is an online localization management platform and collaborative translation tool.Ctrl+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 no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownDownloading 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:EnterEnter 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 loading translation file “%s”.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export errorExport 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…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)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport from TMX…Import translation files…Importing translation memory from “%s” 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 CrowdinLeftLine %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 translations were found in the TMX file.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKObsolete stringsOneOnly 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 translation templateOpen...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 translationsQuitQuit %sReading file content failed with the following error: %sRecentRecent 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 FinderReviewRightSaveSave &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 languageServicesSet LanguageSet languageSettingsSettings…Shift+Show AllShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow summary after updating filesShow 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.These strings are no longer in the source code. Poedit will remove them from the file now.These strings were found in the sources but were not in the file. Poedit will add them to the file now.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 entries in the file are probably incorrect.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 errorUntransUpUpdateUpdate 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 the file failed. Click on 'Details >>' for details.Updating 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown 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: 2024-08-30 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 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 %sA&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í(0 nuevas, 0 obsoletas)(Más información sobre GNU gettext)(Nuevas: %i, obsoletas: %i)(Usar idioma predeterminado)(no se ha accedido)(se necesita Windows 8 o posterior)< &AnteriorAcerca de %sCuentaCuentasAñadirAñadir cuentaAñadir comentarioAñadir archivos…Añadir carpetas…Añadir proyectoAñadir comodín…Añadir cuentaAñ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 admitidosAlt+Enfocar siempre el campo de entrada de textoUn elemento de la lista de archivos de entrada:Un elemento de la lista de palabras clave:AparienciaAplicar¿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ónCerrarApariciones 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 a Poedit con las plataformas de localización en la nube compatibles para sincronizar sin problemas 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 localización en línea y una herramienta de traducción colaborativa.Ctrl+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.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 ya no se usan?&No guardarNo guardarNo mostrar de nuevoNo marcar coincidencias exactas para revisiónNo mostrar de nuevoAbajoDescargando las traducciones más recientes…La descarga de traducciones está desactivada en este proyecto.Arrastre carpetas o archivos aquíArrastre carpetas o archivos aquí&SalirEditarEditar &comentarioEditar &comentarioEditar comentarioEditar comentarioEditar proyectoEditar el proyectoEdiciónEditar…Correo electrónico:IntroModo 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 cargar el archivo de traducción «%s».Error al abrir el archivoError al guardar el archivoError al cargar el archivo XLIFF: %sErroresTodoRutas excluidasExportar a TMX…Exportar a…Error de exportaciónExportar a HTML…Exportar a TMX…Falló 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…Configuración de extractorExtractoresOrden errónea: %sNo se pudo comunicar con el proceso de Poedit.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.Finalizando…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)FrecuentesGNU gettextGeneralesArchivos HTMLAyudaOcultar %sOcultar el restoOcultar 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…Error de importaciónImportar desde TMX…Importar archivos de traducción…Falló la importación de la memoria de traducción desde «%s».Importando traducciones…En: %sIncluir versiones betaMayúsculas/minúsculas incoherentesEspacios en blanco incoherentesInformación acerca del traductorInstalarEl archivo no es válidoEjecución:Archivos 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 CrowdinIzquierdaEl 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…Nueva desde archivo &POT/PO…Cadenas nuevasForma 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 se encontró ninguna traducción en el archivo TMX.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 traductoresAceptarCadenas obsoletasUnoActive 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 plantilla de traducciónAbrir…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 eliminadasSalirSalir de %sLa lectura del contenido del archivo falló con el siguiente error: %sRecientesArchivos recientesRehacerActualizarVolver a cargar archivoVolver a cargar archivoQuedan: %dReemplazarReemplazar &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 FinderRevisarDerechaGuardarG&uardar como…G&uardar como…Guardar de todos modosGuardar de todos modosGuardar comoGuardar como…Guardar cambiosGuardar archivoCapturas 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 prefieraServiciosEstablecer idiomaEstablecer idiomaConfiguraciónConfiguración…Mayús+Mostrar todoMostrar barra lateralMostrar ortografía y gramáticaMostrar barra de estadoMostrar &id. de cadenaMostrar sustitucionesMostrar barra de herramientasMostrar alertasMostrar en el ExploradorMostrar en la carpetaMostrar u ocultar la barra lateralMostrar barra lateralMostrar barra de estadoMostrar &id. de cadenaMostrar resumen después de actualizar archivosMostrar 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 encontrarSustitucionesSugerenciasSi 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».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.Estas cadenas ya no están en el código fuente. Poedit las eliminará del archivo ahora.Se encontraron estas cadenas en el código fuente que faltaban en el archivo. Poedit las añadirá al archivo ahora.Este archivo JSON no es de traducciones y no se puede editar en Poedit.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 desarrolladores.Traducir proyecto en la nubeTraducidas: %d de %d (%d %%)TraducciónIdioma de la traducciónMemoria de traduccionesTraducción por re&visarPropiedades de la traducciónLas entradas de traducción en el archivo son probablemente incorrectas.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)DeshacerSe produjo una excepción no controlada: %sUnix (recomendado)Error desconocido en Crowdin.Error desconocidoSin traducirArribaActualizarActualizar 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ónFalló la actualización del archivo. Pulse en «Detalles» para obtener más información.Actualizando 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 %sEsperando la autenticación…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 XLIFFSí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.CeroEscalaaltPor revisarctrlno eliminar archivos temporales (para depuración)p. ej., nplurals=2; plural=(n > 1);incluir coincidencias aprox. del archivoir al elemento en el número de renglón dadomanejar un URI poedit://pretraducir a partir de la MTmayúsidioma desconocidoversión no admitida (%s)usted@ejemplo.com«%s» no es un archivo POT válido.poedit-3.5/locales/sk.mo0000644000175100001770000017003714664354143012207 00000000000000|+: : :&:?:<S::J:g: V;`; o;y; ;;;;;;;;;;;;;;<<<0<B<H<M<U<]<o<<< < <<<< <<<<==0=L=R=X=a=g=p== = = ====>>7>N>e>k>p>>>>>> ? ???'?0? 4? @? L?Y? h?t? ? ?? ?? ???@@&@F@c@@ @ @1@@'@A.A HASA7YA6AA)AB B]"BB<BDB$C:C ACNCC C"CD+"D)ND xDDDDDDDDEE#4EXEmE|E EE EEEEEE%EF +FLFTF]FuF FF/F FkFXG]GpGGGG-G1G.H GHRH)iHH HYHI!I&I9ILIaIeI|IIIIIII;J CJ'PJ^xJLJ?$K dK rKK*KKK"K5K.LILdLjL}L L L L L LLLLLLLfMlMMuM(N?NRN"dNN NNN N NNN0N'OAO#VO<zO"OO OO*P03P!dP'PPPP(PTQ fQtQ yQ QQQQQ Q Q Q RR!R0RJRRRcR lRxR RRR R RRRRRRSz/TT TTT TT U2(U[UuU|UUU UU U U V!V&V;^D^Y^n^^^._4_J_=P__1__n_E[```;` ` aa@,amacb,#c,Pc}c cc2c*c ddwdj$e eeee%ee ff3fEfWf qffffffff8f g gg$g ,g 8g DgRg"Yg"|gg g gg g(ghhz'hhhhh h h h hh h i i i ,i 8iCi^ioi"iiii i ij jj$j -j:jTjdjtj j jjjj jjj!k *k8k@kHkQk Ykgkkkkkk k k kk ll.lBlRlgl|lmm 4m@mOmbm smm mmKmmn n%n:nMncn1nn n nn=ioo'p,p(>pgp op}p+pp p8p" q/q@qrCr8brrs8*t1ctRtctQLuu'u:ulvPv-vCwALwKw0w. x:x!x)x-y+Cy8oyCyuy,bzLz;z]{v{Z{gW|J|c }[n}o}:~7~m_[HN^Xp ف72("[~~łqDɃRVj o ȄЄӄ ڄ"$-F_p<Ѕ #$@eˆ#V cz ч. ;GPhHl5m7Y 3aω16;?\.a ͊ 1J!Z| ?KJZ1׍#i   /9 A K W b o!|!ɐѐ 2 Q\ cm}đ ֑ )=!L!n  Œߒ ( 0 Q#r#̓ ޓ#"7Sn&  ĔҔٔ 2B ]k}ĕՕ -$:!_$–ٖE0(5'^&65&+0RXLQ\& ՙÚ ̚-ٚ"3*;^Ǜܛ))%F&l˜  .= PZ`q+( ם  &DV7u O [!|!! 2>6"u(  [ | " ݡ 1GdxH $lOG٣ ! -8=P%3Ф&&+ R]u~̥ݥ  'Ʀ6f'֧ 3R es31 + HL+ ש(7&V+}Ϊ'ev ҫ 1ETcvì ˬ ׬ )#@%dQ 2 2Q1q°!ذ .;L^ w0!̱  #*:>6y '$ DS;g6V,ô .GVv|ʵĶʶ  2SW)q]*D>I͸5A!cR$m%̺(;M i uŻػE+>^V޽5"FHi̾Ӿ:-"4)&Paqy*'@ye ,"J"m #. K U=b  ''D lv 5 {  $4CSfw:""-PXh x  )E]x#*& <J Ygv! 2CR$e$=*?U r V$9Pn+  Gzbr),< H)Z?*8E7Y},)3VKkeB".vaB1S:.#M'a$! (2tM9U8RnT^OFg9&cv 49I4 t#'( 7E IW*m1  <"Ru T12L &. y< 1N_d)l F9lW5 1d7 /!# +Dp#(45nCv#=ld B@Twa QjqO 91B)aT'ZSFQYu>"/VJZsG6*[ar`^;XyVb?' <IL:x%AMZ\W88O,*d0)i{J-yK|]:c%}oo0][-Pg6YS&r(\p@X(tM?iE=eD"OU|53 w  fj,#32H 4[ pk {qke;mpgl16U85:`, +Y^L9$qz2fGu(A7N4!d0DNt{F<x_+7vX)nKG+>&9m3 LeUIN Iy E"nsk/<W>PhrVvT]cQmuR$bjD !_@xEl%WK-_7MCwbz/|gcAB` zh~?SC^*tf=\h!H'P#RiF&;$H1~.2 RsJo}.} .~ (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd AccountAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add accountAdd 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 languagesAlt+Always 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 errorCrowdin is an online localization management platform and collaborative translation tool.Ctrl+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 againDownDownloading 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:EnterEnter 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 loading translation file “%s”.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export errorExport 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…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)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport from TMX…Import translation files…Importing translation memory from “%s” 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 CrowdinLeftLine %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 translations were found in the TMX file.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKObsolete stringsOneOnly 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 translation templateOpen...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 translationsQuitQuit %sReading file content failed with the following error: %sRecentRecent 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 FinderReviewRightSaveSave &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 languageServicesSet LanguageSet languageSettingsSettings…Shift+Show AllShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow summary after updating filesShow 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.These strings are no longer in the source code. Poedit will remove them from the file now.These strings were found in the sources but were not in the file. Poedit will add them to the file now.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 entries in the file are probably incorrect.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 errorUntransUpUpdateUpdate 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 the file failed. Click on 'Details >>' for details.Updating 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown 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: 2024-08-30 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ýbNaš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&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(žiadne nové, žiadne zastaralé)(Dozvedieť sa viac o GNU gettext)(Nové: %i, zastaralé: %i)(Použiť pôvodný jazyk)(neprihlásený)(požadovaný Windows 8 alebo novší)< &PredošlýO programe %sÚčetÚčtyPridaťPridať účetPridať komentárPridať súbory…Pridať priečinky…Pridať projektPridať zástupný znak…Pridá účetPridať 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é jazykyAlt+Vždy zamerať pole pre zadávanie textuPoložka v zozname vstupných súborov:Položka v zozname kľúčových slov:VzhľadPoužiťSte 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 lokalizácie a nástroj pre spoluprácu na preklade.Ctrl+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.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:EnterCeloobrazovkový 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.Vyskytla sa pri načítaní súboru prekladu „%s”.Chyba pri otváraní súboruChyba pri ukladaní súboruChyba pri načítaní súboru XLIFF: %sChybyVšetkoVylúčené cestyExportovať do Výmennej pamäte prekladov (TMX)…Exportovať ako…Chyba exportuExportovať do HTML…Exportovať do Výmennej pamäte prekladov (TMX)…Exportovanie 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…Nastavenia extraktoraExtraktoryZlyhal príkaz: %sZlyhala komunikácia s procesom Poeditu.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.Dokončovanie…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ý)ČastéGNU gettextVšeobecnéHTML súboryNápovedaSkryť %sSkryť ostatnéSkryť 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…Chyba importuImportovať z Výmennej pamäte prekladov (TMX)…Importovať súbory prekladu…Importovanie prekladovej pamäte do "%s" zlyhalo.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:Prekladové 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 Crowdin←Riadok %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ý zo súboru &POT/PO…Nové reťazceĎ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.V súbore Výmennej pamäte prekladov (TMX) sa nenašli žiadne preklady.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ľovOKZastaralé prekladyJedenPovoľ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ť šablónu prekladuOtvoriť...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ťUkončiť %sNačítanie obsahu súboru zlyhalo s nasledujúcou chybou: %sNedávno otvorenéNedá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 zdrojNahradiť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ý jazykSlužbyNastaviť jazykNastaviť jazykNastaveniaNastavenia…Shift+Zobraziť všetkoZobraziť 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ťazcaZobraziť súhrn po aktualizácii súborovZobrazovať 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ťazecNahradeniaNá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” 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í.Tieto reťazce už nie sú v zdrojovom kóde. Poedit ich teraz odstráni zo súboru.Tieto reťazce sa našli v zdrojoch, ale neboli v súbore. Poedit ich teraz pridá do súboru.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áciePreložiteľné reťazce nie sú pridávané manuálne v systéme Gettext, ale sú automaticky extrahované zo zdrojového kódu. Takto zostanú aktuálne a správne. Prekladatelia zvyčajne používajú súbory PO šablón (s príponou POT), ktoré sú vytvorené vývojárom.Preložiť cloudovský projektPreložené: %d z %d (%d %%)PrekladJazyk prekladuPamäť prekladovPreklad potrebuje &dopracovanieVlastnosti prekladovPoložky prekladu v súbore sú pravdepodobne nesprávne.Databá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ťAktualizovať 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 zlyhalaAktualizácia súboru zlyhala. Pre viac informácií kliknite na „Podrobnosti >>".Aktualizá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 %sČakanie na autentifikáciu…Vitajte v programe PoeditPri 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íženiealtVyžaduje spracovaniectrlneodstraňovať dočasné súbory (pre ladenie)napr. nplurals=2; plural=(n > 1);označovať v súbore ako nepresnéprejsť na položku na danom čísle riadkumanipulátor poedit:// URIpred-preložiť z Pamäte prekladovshiftneznámy jazyknepodporovaná verzia (%s)vase_meno@príklad.comSúbor „%s" nie je platný POT súbor.poedit-3.5/locales/sq.mo0000644000175100001770000016644414664354143012224 00000000000000|+: : :&:?:<S::J:g: V;`; o;y; ;;;;;;;;;;;;;;<<<0<B<H<M<U<]<o<<< < <<<< <<<<==0=L=R=X=a=g=p== = = ====>>7>N>e>k>p>>>>>> ? ???'?0? 4? @? L?Y? h?t? ? ?? ?? ???@@&@F@c@@ @ @1@@'@A.A HASA7YA6AA)AB B]"BB<BDB$C:C ACNCC C"CD+"D)ND xDDDDDDDDEE#4EXEmE|E EE EEEEEE%EF +FLFTF]FuF FF/F FkFXG]GpGGGG-G1G.H GHRH)iHH HYHI!I&I9ILIaIeI|IIIIIII;J CJ'PJ^xJLJ?$K dK rKK*KKK"K5K.LILdLjL}L L L L L LLLLLLLfMlMMuM(N?NRN"dNN NNN N NNN0N'OAO#VO<zO"OO OO*P03P!dP'PPPP(PTQ fQtQ yQ QQQQQ Q Q Q RR!R0RJRRRcR lRxR RRR R RRRRRRSz/TT TTT TT U2(U[UuU|UUU UU U U V!V&V;^D^Y^n^^^._4_J_=P__1__n_E[```;` ` aa@,amacb,#c,Pc}c cc2c*c ddwdj$e eeee%ee ff3fEfWf qffffffff8f g gg$g ,g 8g DgRg"Yg"|gg g gg g(ghhz'hhhhh h h h hh h i i i ,i 8iCi^ioi"iiii i ij jj$j -j:jTjdjtj j jjjj jjj!k *k8k@kHkQk Ykgkkkkkk k k kk ll.lBlRlgl|lmm 4m@mOmbm smm mmKmmn n%n:nMncn1nn n nn=ioo'p,p(>pgp op}p+pp p8p" q/q@qrCr8brrs8*t1ctRtctQLuu'u:ulvPv-vCwALwKw0w. x:x!x)x-y+Cy8oyCyuy,bzLz;z]{v{Z{gW|J|c }[n}o}:~7~m_[HN^Xp ف72("[~~łqDɃRVj o ȄЄӄ ڄ"$-F_p<Ѕ #$@eˆ#V cz ч. ;GPhHl5m7Y 3aω16;?\.a ͊ 1J!Z|&5"DgDwEύw  Ɏ Ҏ܎   ' 3 =G] s} ɏԏ . 8B JXiƐ ,AR cnw֑ %,0'M uǒ  " 1?Qa'p ̓ޓ'%9R'a$'֔ EV9[$"ݕ69"%\- sƖ:NRW& *<( 1DR6Ι4 R\*x'˚%1 KUg} 1˛ #BIQk"/muٝ07(`|-!Ҟrw}ҟ$ڟ&-&@gxC ݠ#r E~7ġ A'i})D!!5: Q\q ң ܣ#p>K!(ƥ /BSk>ݦ';*Y />/-8]3Ԩnw ͩީ +< M [i ª Ԫ 8%V|1Ϭ Z/f̭ܭ=Pmt("׮ 6<8Q(ȯ ۯ#)'Qd!S?N`8;Y3xȲݲ 1CJ_ t ~ô $'-@Snµ&۵/'2Z.w+Ҷ '(=T n{Ҹ۸)?UEe-tYAR"!)DKGؽJ98KGc?nl {' (BWl  > 9CU ]h}!! #6)Gq"x< NZcix  &@ V-w*   $2 9F [| !$7P1` !:Ui &; *>Sdya$8Tg~, C| Tb/~ %," %A1%s!H>4R59YWlRq?{l)C8VK9.D'/3>2r;4|,Q;|NSreY,{X[:~rbrH Q ]i" ?M@$zok|il(  )(7R$$= WeL|!0(!Eg-1m  !!3KS/[ IB\]? 4m9 4!-1I{ -45nCv#=ld B@Twa QjqO 91B)aT'ZSFQYu>"/VJZsG6*[ar`^;XyVb?' <IL:x%AMZ\W88O,*d0)i{J-yK|]:c%}oo0][-Pg6YS&r(\p@X(tM?iE=eD"OU|53 w  fj,#32H 4[ pk {qke;mpgl16U85:`, +Y^L9$qz2fGu(A7N4!d0DNt{F<x_+7vX)nKG+>&9m3 LeUIN Iy E"nsk/<W>PhrVvT]cQmuR$bjD !_@xEl%WK-_7MCwbz/|gcAB` zh~?SC^*tf=\h!H'P#RiF&;$H1~.2 RsJo}.} .~ (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd AccountAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add accountAdd 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 languagesAlt+Always 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 errorCrowdin is an online localization management platform and collaborative translation tool.Ctrl+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 againDownDownloading 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:EnterEnter 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 loading translation file “%s”.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export errorExport 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…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)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport from TMX…Import translation files…Importing translation memory from “%s” 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 CrowdinLeftLine %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 translations were found in the TMX file.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKObsolete stringsOneOnly 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 translation templateOpen...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 translationsQuitQuit %sReading file content failed with the following error: %sRecentRecent 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 FinderReviewRightSaveSave &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 languageServicesSet LanguageSet languageSettingsSettings…Shift+Show AllShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow summary after updating filesShow 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.These strings are no longer in the source code. Poedit will remove them from the file now.These strings were found in the sources but were not in the file. Poedit will add them to the file now.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 entries in the file are probably incorrect.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 errorUntransUpUpdateUpdate 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 the file failed. Click on 'Details >>' for details.Updating 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown 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: 2024-08-30 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 gabimeU 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 %s&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(0 të rinj, 0 të vjetruar)(Mësoni më tepër mbi GNU gettext-in)(Të rinj: %i, të vjetruar: %i)(Përdor gjuhë parazgjedhje)(pa bërë hyrjen)(lyp Windows 8 ose më të ri)< I &mëparshmiMbi %s-inLlogariLlogariShtojeShtoni LlogariShtoni KomentShtoni Kartela…Shtoni Dosje…Shtoni ProjektShtoni Shenja të Gjithëpushtetshme…Shtoni llogariShto 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 mbuluaraAlt+Ndryshoje përherë fokusin për te fushë futjeje tekstiNjë zë në listë futje kartelash:Një zë në listë fjalëkyçesh:DukjeZbatojeJeni 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-i është një platformë internetore administrimi përkthimesh dhe një mjet përkthimi në bashkëpunim.Ctrl+&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.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ërishDownPo 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:ENTERKaloni 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ë ngarkimit të kartelës së përkthimit “%s”.Gabim gjatë hapjes së kartelësGabim në ruajtje karteleGabim teksa ngarkohej kartelë XLIFF: %sGabimeGjithçkaShtigje të përjashtuarEksportoni Në TMX…Eksportojeni si…Gabim eksportimiEksportojeni si HTML…Eksportoni në TMX…Eksportimi 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…Rregullim i përftuesitPërftuesUrdhri që dështoi: %sS’u arrit të komunikohej me procesin Poedit.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.Po përfundohet…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)Të shpeshtaGNU gettextTë përgjithshmeKartela HTMLNdihmëFshihe %sFshihi të TjerëtFshihe 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…Gabim importimiImportoni prej TMX…Importoni kartela përkthimi…Importimi i kujtesës së përkthimeve nga “%s” 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:Kartela 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-inMajtasRreshti %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…E re prej kartele &POT/PO…Vargje të rinjForma 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’u gjetën përkthime te kartel TMX.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ërkthyesitOKVargje të vjetruarNjë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ë rejatHapni gjedhe përkthimiHapni…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 fshiraMbylleMbylleni %sLeximi i lëndës së kartelës dështoi me gabimin vijues: %sSë fundiKartela së fundiRibëjeRifreskojeRingarkoje KartelënRingarkoje kartelënTë mbetura: %dHiqiHiq Përkthime Njësoj-Me-BuriminHiq përkthime njësoj-me-buriminZë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ë FinderShqyrtojeniDjathtasRuajeRuajeni &Si…Ruajeni &si…Ruaje, Sido QoftëRuaje, sido qoftëRuaje siRuajeni si…Ruaji ndryshimetRuaje kartelënFoto 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ëlqyerShërbimeCaktoni GjuhënCaktoni gjuhënRregullimeRregullime…Shift+Shfaqi KrejtShfaqe 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 varguPas përditësimesh kartelash, shfaq përmbledhjeShfaq 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 gjeturZë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.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.Këto vargje s’janë më te kodi burim. Poedit-i do t’i heqë nga kartela tani.Këto vargje u gjetën në burime, por s’qenë te kartela. Poedit do t’i shtojë te kartela tani.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ërrimeNë sistemin Gettext, zërat e përkthyeshëm nuk shtohen dorazi, përftohen automatikisht që nga kodi burim. Në këtë mënyrë, ata mbeten të përditësuar dhe të saktë. Zakonisht përkthyesit përdorin kartela PO (POT) të përgatitura 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ërkthimeshKa mundësi të ketë zëra të pasaktë përkthimi te kartela.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ëjeNdodhi një përjashtim i patrajtuar: %sUnix (e këshillueshme)Gabim Crowdin i panjohur.Gabim i panjohurPapërkthUpPërditësojePë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ështoiPërditësimi i katalogut dështoi. Për hollësi, klikoni te 'Hollësi >>'.Pë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 %sPo pritet për mirëfilltësim…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ë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.ZeroZoomaltLyp Punëctrlmos fshi kartela të përkohshme (për diagnostikim)p.sh. nplurals=2; plural=(n > 1);plotëso përputhje të turbullta nga kartelashko tek objekti në rreshtin me numrin e dhënëtrajto një URI poedit://përkthe paraprakisht prej KP-jeshiftgjuhë e panjohurversion i pambuluar (%s)ju@example.com“%s” s’është kartelë POT e vlefshme.poedit-3.5/locales/Makefile.in0000644000175100001770000003710614664354142013300 00000000000000# 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 be@latin 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 sv tg th tr 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.5/locales/tr.po0000644000175100001770000020142214664354065012216 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "Bu uyarı iletisini gizle" msgid "Don’t Show Again" msgstr "Bir Daha Gösterme" msgid "Don’t show again" msgstr "Bir daha gösterme" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(Yeni: %i, eski: %i)" msgid "Collecting source files…" msgstr "Kaynak dosyalar toplanıyor…" msgid "Extracting translatable strings…" msgstr "Çevrilebilir dizgeler çıkarılıyor…" msgid "Failed to load file with extracted translations." msgstr "Çıkarılan çevirilerle dosyayı yükleme başarısız." msgid "Merging differences…" msgstr "Farklılıklar birleştiriliyor…" msgid "Updating translations" msgstr "Çeviriler güncelleniyor" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "“%s” dosyası açılamadı." msgid "Invalid file" msgstr "Geçersiz dosya" #, c-format msgid "Malformed header: “%s”" msgstr "Hatalı oluşturulmuş başlık: “%s”" msgid "PO Translation Files" msgstr "PO Çeviri Dosyaları" msgid "POT Translation Templates" msgstr "POT Çeviri Şablonları" msgid "XLIFF Translation Files" msgstr "XLIFF Çeviri Dosyaları" msgid "JSON Translation Files" msgstr "JSON Çeviri Dosyaları" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "Flutter Çeviri Dosyaları" msgid "All Translation Files" msgstr "Tüm Çeviri Dosyaları" msgid "The file is in a format not recognized by Poedit." msgstr "Dosya, Poedit tarafından tanınmayan bir biçimde." 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." #, 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" #, 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." #, c-format msgid "Couldn’t save file %s." msgstr "%s dosyası kaydedilemedi." msgid "Screenshots:" msgstr "Ekran Görüntüleri:" #, 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." #, 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)." 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ış" 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ış" msgid "Couldn’t load the file, it is probably damaged." msgstr "Dosya yüklenemedi, muhtemelen zarar görmüş." 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." 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)." #, 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." msgid "Error saving file" msgstr "Dosya kaydedilirken hata oldu" #, c-format msgid "“%s” is not a valid POT file." msgstr "“%s” geçerli bir POT dosyası değil." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "XLIFF dosyası yüklenirken hata oldu: %s" #, 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 msgid "Broken markup in translation string." msgstr "Çeviri dizgesinde bozuk işaretleme." msgid "(Use default language)" msgstr "(Varsayılan dili kullan)" msgid "Language selection" msgstr "Dil seçimi" msgid "Select your preferred language" msgstr "Tercih ettiğiniz dili seçin" msgid "You must restart Poedit for this change to take effect." msgstr "" "Bu değişikliğin etkili olması için Poedit'i yeniden başlatmak zorundasınız." msgid "Add Account" msgstr "Hesap Ekle" msgid "Add account" msgstr "Hesap ekle" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "%s hakkında daha fazla bilgi edinin" 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." msgid "How does cloud sync work?" msgstr "Bulut eşitleme nasıl çalışır?" msgid "Account" msgstr "Hesap" msgid "(not signed in)" msgstr "(giriş yapılmadı)" msgid "File" msgstr "Dosya" msgid "Open cloud translation" msgstr "Bulut çeviriyi aç" msgid "Manage accounts" msgstr "Hesapları yönet" msgid "Project:" msgstr "Proje:" msgid "Language:" msgstr "Dil:" msgid "Sign in to Cloud Account" msgstr "Bulut Hesabına Giriş Yapın" msgid "Sign in to cloud account" msgstr "Bulut hesabına giriş yapın" msgid "No translation projects listed in your account." msgstr "Hesabınızda listelenen çeviri projeleri yok." msgid "Downloading latest translations…" msgstr "En son çeviriler indiriliyor…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #, c-format msgid "Sign in to %s" msgstr "%s için giriş yapın" msgid "Syncing" msgstr "Eşitleniyor" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, 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. #, c-format msgid "Uploading translations to %s failed." msgstr "Çevirilerin %s üzerine yüklenmesi başarısız oldu." msgid "Syncing error" msgstr "Eşitleme hatası" msgid "Add" msgstr "Ekle" msgid "Unknown Crowdin error." msgstr "Bilinmeyen Crowdin hatası." msgid "Not authorized, please sign in again." msgstr "Yetkiniz yok, lütfen tekrar giriş yapın." msgid "Downloading translations is disabled in this project." msgstr "Bu projede çevirilerin indirilmesi etkisizleştirildi." msgid "Sign In" msgstr "Giriş Yap" msgid "Sign in" msgstr "Giriş yap" msgid "Sign Out" msgstr "Çıkış Yap" msgid "Sign out" msgstr "Çıkış yap" msgid "Learn more about Crowdin" msgstr "Crowdin hakkında daha fazla bilgi edinin" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" "Crowdin, çevrimiçi bir yerelleştirme yönetimi platformu ve işbirliğine " "dayalı bir çeviri aracıdır." msgid "Waiting for authentication…" msgstr "Kimlik doğrulaması için bekleniyor…" msgid "Updating user information…" msgstr "Kullanıcı bilgileri güncelleniyor…" msgid "Sign in to Crowdin" msgstr "Crowdin'e giriş yapın" msgid "Syncing with Crowdin failed." msgstr "Crowdin ile eşitleme başarısız oldu." msgid "Crowdin error" msgstr "Crowdin hatası" msgid "Uploading translations…" msgstr "Çeviriler gönderiliyor…" msgid "&Copy" msgstr "&Kopyala" msgid "Learn more" msgstr "Daha fazla bilgi edinin" msgid "&Help" msgstr "&Yardım" msgid "MO files can’t be directly edited in Poedit." msgstr "MO dosyaları doğrudan Poedit içinde düzenlenemez." msgid "Error opening file" msgstr "Dosya açılırken hata oldu" 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." msgid "don’t delete temporary files (for debugging)" msgstr "geçici dosyaları silme (hata ayıklama için)" msgid "handle a poedit:// URI" msgstr "Bir poedit:// URI'si kullan" msgid "go to item at given line number" msgstr "verilen satır numarasındaki öğeye git" msgid "Failed to communicate with Poedit process." msgstr "Poedit işlemi ile iletişim kurma başarısız." #, c-format msgid "Unhandled exception occurred: %s" msgstr "Beklenmeyen bir hata oluştu: %s" msgid "Select translation template" msgstr "Çeviri şablonunu seçin" msgid "Select translation file" msgstr "Çeviri dosyasını seçin" msgid "Poedit is an easy to use translation editor." msgstr "Poedit kullanımı kolay bir çeviri düzenleyicisidir." 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." #, c-format msgid "File “%s” is not a translation file." msgstr "“%s” dosyası bir çeviri dosyası değil." #, c-format msgid "File “%s” doesn’t exist." msgstr "“%s” dosyası yok." 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". #, 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." msgid "Install" msgstr "Yükle" #, c-format msgid "The file “%s” has been changed by another application." msgstr "“%s” dosyası başka bir uygulama tarafından değiştirildi." msgid "Reload file" msgstr "Dosyayı yeniden yükle" 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." msgid "Ignore" msgstr "Yoksay" msgid "Reload File" msgstr "Dosyayı Yeniden Yükle" msgid "The file has been modified. Do you want to save changes?" msgstr "Dosya değiştirildi. Değişiklikleri kaydetmek istiyor musunuz?" msgid "Save changes" msgstr "Değişiklikleri kaydet" msgid "Your changes will be lost if you don’t save them." msgstr "Eğer kaydetmezseniz yaptığınız değişiklikler kaybolacaktır." msgid "Save" msgstr "Kaydet" msgid "Do&n’t save" msgstr "Kaydet&me" msgid "Don’t Save" msgstr "Kaydetme" 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." msgid "Cancel" msgstr "İptal" msgid "Save Anyway" msgstr "Yine de Kaydet" msgid "Save anyway" msgstr "Yine de kaydet" msgid "Save as…" msgstr "Farklı kaydet…" msgid "Compile to…" msgstr "Şuna derle…" msgid "Compiled Translation Files" msgstr "Derlenmiş Çeviri Dosyaları" msgid "Export to HTML…" msgstr "HTML’ye aktar…" msgid "HTML Files" msgstr "HTML Dosyaları" #, c-format msgid "In: %s" msgstr "İçinde: %s" msgid "Source code not available." msgstr "Kaynak kodu mevcut değil." msgid "Updating failed" msgstr "Güncelleme başarısız oldu" 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ı." msgid "Permission denied." msgstr "İzin reddedildi." 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. 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. msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "Dosyalarınıza erişimi daha önce reddettiyseniz, Sistem Tercihleri > Güvenlik " "ve Gizlilik > Gizlilik > Dosyalar ve Klasörler’de bu dosyaya izin " "verebilirsiniz." msgid "Translation entries in the file are probably incorrect." msgstr "Dosyadaki çeviri girişleri muhtemelen yanlıştır." msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "" "Dosyayı güncelleme başarısız oldu. Ayrıntılar için 'Ayrıntılar >>' üzerine " "tıklayın." msgid "Open translation template" msgstr "Çeviri şablonunu aç" #, 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." msgid "Validation results" msgstr "Doğrulama sonuçları" 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." msgid "The file was saved safely." msgstr "Dosya güvenli bir şekilde kaydedildi." 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." 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." 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." msgid "The file cannot be compiled into the MO format and used." msgstr "Dosya, MO biçiminde derlenemez ve kullanılamaz." msgid "No problems with the translation found." msgstr "Çeviri ile ilgili hiç sorun bulunmadı." #, 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ş." msgid "The translation is ready for use." msgstr "Çeviri kullanıma hazır." #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "Poedit, “%s” dosyasındaki geçersiz içeriği otomatik olarak düzeltti." msgid "" "The file contained duplicate items, which is not allowed in PO files and " "would prevent the file from being used. Poedit fixed the issue, but you " "should review translations of any items marked as 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." msgid "Language of the translation isn’t set." msgstr "Çeviri dili ayarlı değil." msgid "Set Language" msgstr "Dili ayarla" msgid "Set language" msgstr "Dili ayarla" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." msgid "" "Suggestions are not available if the translation language is not set " "correctly. Other features, such as plural forms, may be affected as well." msgstr "" "Çeviri dili doğru olarak ayarlanmazsa, öneriler kullanılabilir olmaz. Çoğul " "biçimler gibi, diğer özellikler de etkilenebilir." msgid "Language of the translation is the same as source language." msgstr "Çeviri dili kaynak dil ile aynı." msgid "Fix Language" msgstr "Dili Düzelt" msgid "Fix language" msgstr "Dili düzelt" msgid "" "This 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ış." 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" msgid "Required header Plural-Forms is missing." msgstr "Gereken Çoğul-Biçin başlık bilgisi eksik." #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Çoğul-Biçim başlığında sözdizimi hatası (\"%s\")." msgid "Fix the Header" msgstr "Başlığı Düzelt" 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". #, 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.")" msgid "Review" msgstr "Gözden geçir" msgid "Would you like to use English for source text?" msgstr "Kaynak metin için İngilizce kullanmak ister misiniz?" #, 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" msgid "Load English" msgstr "İngilizce Yükle" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Çevrilen: %d / %d (%% %d)" #, c-format msgid "Remaining: %d" msgstr "Kalan: %d" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d hata" msgstr[1] "%d hata" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d dizge" msgstr[1] "%d dizge" msgid " (unsaved)" msgstr " (kaydedilmedi)" msgid " (modified)" msgstr " (değiştirildi)" #, c-format msgid "Failed to update translation memory: %s" msgstr "Başarısız olan çeviri belleği güncellemesi: %s" msgid "Remove same-as-source translations" msgstr "Kaynakla aynı çevirileri kaldır" 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?" 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." msgid "Keep" msgstr "Tut" msgid "Remove" msgstr "Kaldır" msgid "Purge deleted translations" msgstr "Silinmiş çevirileri temizle" 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?" 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." msgid "Purge" msgstr "Temizle" msgid "Copy from source text" msgstr "Kaynak metinden kopyala" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "Çeviriyi temizle" msgid "Clear Translation" msgstr "Çeviriyi Temizle" msgid "Edit comment" msgstr "Açıklamayı düzenle" msgid "Edit Comment" msgstr "Açıklamayı Düzenle" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "Kod Oluşumları" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "Kod oluşumları" msgid "Hide Sidebar" msgstr "Kenar Çubuğunu Gizle" msgid "Show Sidebar" msgstr "Kenar Çubuğunu Göster" msgid "Hide Status Bar" msgstr "Durum Çubuğunu Gizle" msgid "Show Status Bar" msgstr "Durum Çubuğunu Göster" msgid "String length in characters: translation | source" msgstr "Karakter olarak dizge uzunluğu: çeviri | kaynak" msgid "String length in characters" msgstr "Karakter olarak dizge uzunluğu" msgid "Source text" msgstr "Kaynak metin" msgid "Singular" msgstr "Tekil" msgid "Plural" msgstr "Çoğul" msgid "Translation" msgstr "Çeviri" msgid "Pre-translated" msgstr "Ön çeviri yapılmış" 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. msgid "Needs work" msgstr "Çalışma gerekli" 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." msgid "Create new translation" msgstr "Yeni çeviri oluştur" 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 msgid "Source text ID" msgstr "Kaynak metin kimliği" msgid "Everything" msgstr "Her şey" #, c-format msgid "Form %i" msgstr "Biçim %i" #, c-format msgid "Form %i (unused)" msgstr "Form %i (kullanılmamış)" msgid "Zero" msgstr "Sıfır" msgid "One" msgstr "Bir" msgid "Two" msgstr "İki" msgid "Other" msgstr "Diğer" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, 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 #, c-format msgid "String identifier: %s" msgstr "Dizge tanımlayıcısı: %s" #, 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." #, c-format msgid "%s format" msgstr "%s biçimi" #, c-format msgid "Translation — %s" msgstr "Çeviri — %s" msgid "ID" msgstr "Kod" #, c-format msgid "Source text — %s" msgstr "Kaynak metin — %s" msgid "unknown language" msgstr "bilinmeyen dil" #, c-format msgid "Network error: %s (%d)" msgstr "Ağ hatası: %s (%d)" msgid "Unknown error" msgstr "Bilinmeyen hata" #, c-format msgid "Failed command: %s" msgstr "Başarısız komut: %s" msgid "Failed to merge gettext catalogs." msgstr "Gettext kataloglarını birleştirme başarısız." msgid "Open in Editor" msgstr "Düzenleyicide Aç" msgid "Open in editor" msgstr "Düzenleyicide aç" 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." msgid "No usage information" msgstr "Kullanım bilgisi yok" #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d kod oluşumu" msgstr[1] "%d kod oluşumu" msgid "Source code not found" msgstr "Kaynak kodu bulunamadı" 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 referans." msgid "File cannot be opened" msgstr "Dosya açılamadı" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "Poedit “%s” dosyasını açamadı." msgid "Find" msgstr "Bul" msgid "Replace" msgstr "Değiştir" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "Seçenekler" msgid "Ignore case" msgstr "Büyük küçük harfi yoksay" msgid "Wrap around" msgstr "Sona gelince baştan devam et" msgid "Whole words only" msgstr "Kelimelere aynen uyanları bul" msgid "Find in source texts" msgstr "Kaynak metinlerde bul" msgid "Find in translations" msgstr "Çevirilerde bul" msgid "Find in comments" msgstr "Açıklamalarda bul" msgid "Close" msgstr "Kapat" msgid "Replace &All" msgstr "&Tümünü Değiştir" msgid "Replace &all" msgstr "&Tümünü değiştir" msgid "&Replace" msgstr "&Değiştir" msgid "< &Previous" msgstr "< Ön&ceki" msgid "&Next >" msgstr "So&nraki >" msgid "String to find" msgstr "Bulunacak dizge" msgid "Replacement string" msgstr "Değiştirilecek dizge" #, c-format msgid "Cannot execute program: %s" msgstr "Program çalıştırılamıyor: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "Dil adı veya kodu" msgid "Translation Language" msgstr "Çeviri Dili" msgid "Language of the translation:" msgstr "Çeviri dili:" msgid "All strings" msgstr "Tüm dizgeler" msgid "Couldn’t download Localazy project details." msgstr "Localazy proje ayrıntıları indirilemedi." msgid "There was an error when uploading translations to Localazy." msgstr "Çeviriler Localazy’e yüklenirken bir hata oldu." msgid "Projects" msgstr "Projeler" 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." msgid "Add Project" msgstr "Proje Ekle" msgid "Add project" msgstr "Proje ekle" msgid "Poedit - Catalogs manager" msgstr "Poedit - Katalog yöneticisi" msgid "Edit…" msgstr "Düzenle…" msgid "Create new translations project" msgstr "Yeni çeviri projesi oluştur" msgid "Delete the project" msgstr "Projeyi sil" msgid "Edit the project" msgstr "Projeyi düzenle" msgid "Update all" msgstr "Tümünü güncelle" msgid "Update all catalogs in the project" msgstr "Projedeki tüm katalogları güncelle" msgid "Total" msgstr "Toplam" msgid "Untrans" msgstr "Çevrilmemiş" msgctxt "column/row header" msgid "Needs Work" msgstr "Çalışma Gerekli" msgid "Errors" msgstr "Hatalar" msgid "Last modified" msgstr "Son değişiklik" msgid "Select directory" msgstr "Dizin seçin" msgid "Directories:" msgstr "Dizinler:" msgid "" msgstr "" #, c-format msgid "Do you want to delete project “%s”?" msgstr "“%s” projesini silmek istiyor musunuz?" msgid "Delete project" msgstr "Projeyi sil" msgid "Deleting the project will not delete any translation files." msgstr "Projeyi silmek herhangi bir çeviri dosyasını silmeyecek." msgid "Confirmation" msgstr "Onaylama" msgid "Update all catalogs in this project?" msgstr "Bu projedeki tüm kataloglar güncellensin mi?" msgid "Performs update from source code on all files in the project." msgstr "Projedeki tüm dosyalarda kaynak kodundan güncelleme gerçekleştirir." msgid "Check for Updates…" msgstr "Güncellemeleri Denetle…" msgid "Catalogs Manager" msgstr "Katalog Yöneticisi" msgid "&Preferences…" msgstr "&Tercihler…" msgid "&Edit" msgstr "Düz&en" msgid "Undo" msgstr "Geri al" msgid "Redo" msgstr "Yinele" msgid "Paste and Match Style" msgstr "Stili Yapıştır ve Eşleştir" msgid "Delete" msgstr "Sil" msgid "Spelling and Grammar" msgstr "Yazım ve Dilbilgisi" msgid "Show Spelling and Grammar" msgstr "Yazım ve Dilbilgisini Göster" msgid "Check Document Now" msgstr "Belgeyi Şimdi Denetle" msgid "Check Spelling While Typing" msgstr "Yazarken Yazım Denetimi Yap" msgid "Check Grammar With Spelling" msgstr "Yazım ile Dilbilgisi Denetimi Yap" msgid "Correct Spelling Automatically" msgstr "Yazımı Otomatik Olarak Düzelt" msgid "Substitutions" msgstr "Değişimler" msgid "Show Substitutions" msgstr "Değişimleri Göster" msgid "Smart Copy/Paste" msgstr "Akıllı Kopyala/Yapıştır" msgid "Smart Quotes" msgstr "Akıllı Tırnaklar" msgid "Smart Dashes" msgstr "Akıllı Tireler" msgid "Smart Links" msgstr "Akıllı Bağlantılar" msgid "Text Replacement" msgstr "Metin Değişimi" msgid "Transformations" msgstr "Dönüşümler" msgid "Make Upper Case" msgstr "Büyük Harf Yap" msgid "Make Lower Case" msgstr "Küçük Harf Yap" msgid "Capitalize" msgstr "Baş Harfleri Büyük Yap" msgid "Speech" msgstr "Konuşma" msgid "Start Speaking" msgstr "Konuşmayı Başlat" msgid "Stop Speaking" msgstr "Konuşmayı Durdur" msgid "&View" msgstr "&Görünüm" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item 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 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 msgid "Enter Full Screen" msgstr "Tam Ekrana Geç" msgid "Window" msgstr "Pencere" msgid "Minimize" msgstr "Simge Durumuna Küçült" msgid "Zoom" msgstr "Yakınlaştır" msgid "Welcome to Poedit" msgstr "Poedit’e Hoşgeldin" msgid "Bring All to Front" msgstr "Tümünü Öne Getir" msgid "Information about the translator" msgstr "Çevirmen hakkında bilgi" msgid "Name:" msgstr "Adı:" msgid "Your Name" msgstr "Adınız" msgid "Email:" msgstr "E-posta:" msgid "you@example.com" msgstr "siz@ornek.com" 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." msgid "Editing" msgstr "Düzenleme" msgid "Automatically compile MO file when saving" msgstr "Kaydederken MO dosyasını otomatik olarak derle" msgid "Show summary after updating files" msgstr "Dosyalar güncellendikten sonra özet göster" msgid "Check spelling" msgstr "Yazım denetimi yap" msgid "Always change focus to text input field" msgstr "İmleç hep çeviri alanına odaklansın" 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. " msgid "Appearance" msgstr "Görünüş" msgid "Use custom list font:" msgstr "Özel liste yazı tipini kullan:" msgid "Use custom text fields font:" msgstr "Özel metin alanları yazı tipini kullan:" 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 msgid "(requires Windows 8 or newer)" msgstr "(Windows 8 ya da üzeri gerekir)" msgid "General" msgstr "Genel" msgid "Use translation memory" msgstr "Çeviri belleğini kullan" msgid "Manage…" msgstr "Yönet…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "Kaynaklardan güncellerken" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "dosya içinde belirsiz olarak eşle" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "çeviri belleğinden ön çeviri yap" 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." msgid "Stored translations:" msgstr "Saklanan çeviri:" msgid "Database size on disk:" msgstr "Diskteki veritabanı boyutu:" msgid "Import Translation Files…" msgstr "Çeviri Dosyalarını İçe Aktar…" msgid "Import translation files…" msgstr "Çeviri dosyalarını içe aktar…" msgid "Import From TMX…" msgstr "TMX’ten Aktar…" msgid "Import from TMX…" msgstr "TMX’ten aktar…" msgid "Export To TMX…" msgstr "TMX’e Aktar…" 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). msgid "Reset" msgstr "Sıfırla" msgid "Select translation files to import" msgstr "İçe aktarmak için çeviri dosyalarını seçin" msgid "Translation Memory" msgstr "Çeviri Belleği" msgid "Importing translations…" msgstr "Çeviriler içe aktarılıyor…" #, c-format msgid "Error loading translation file “%s”." msgstr "Çeviri dosyası “%s” yüklenirken hata oldu." msgid "Finalizing…" msgstr "Tamamlanıyor…" msgid "Select TMX files to import" msgstr "İçe aktarmak için TMX dosyalarını seç" msgid "TMX Files" msgstr "TMX Dosyaları" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "“%s” dosyasından çeviri belleğini aktarma başarısız oldu." msgid "Import error" msgstr "İçe aktarma hatası" msgid "Export as…" msgstr "Dışa farklı aktar…" msgid "Exporting translations…" msgstr "Çeviriler dışa aktarılıyor…" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "“%s” dosyasına çeviri belleğini aktarma başarısız oldu." msgid "Export error" msgstr "Dışa aktarma hatası" msgid "Reset translation memory" msgstr "Çeviri belleğini sıfırla" msgid "Are you sure you want to reset the translation memory?" msgstr "Çeviri belleğini sıfırlamak istediğinize emin misiniz?" 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. msgid "TM" msgstr "ÇBelleği" 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." msgid "Custom Extractors:" msgstr "Özel Çıkarıcılar:" msgid "Custom extractors:" msgstr "Özel çıkarıcılar:" msgid "GNU gettext" msgstr "GNU gettext" 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." msgid "Delete extractor" msgstr "Çıkarıcıyı sil" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "“%s” çıkarıcısını silmek istediğinize emin misiniz?" msgid "Extractors" msgstr "Çıkarıcılar" msgid "Accounts" msgstr "Hesaplar" msgid "Automatically check for updates" msgstr "Güncellemeleri otomatik olarak denetle" msgid "Include beta versions" msgstr "Beta sürümleri dahil et" 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." msgid "Updates" msgstr "Güncellemeler" 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." msgid "Line endings:" msgstr "Satır sonları:" msgid "Unix (recommended)" msgstr "Unix (önerilir)" msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "Kaydırma yeri:" msgid "Preserve formatting of existing files" msgstr "Var olan dosyaların biçimini koru" msgid "Advanced" msgstr "Gelişmiş" msgid "Settings" msgstr "Ayarlar" msgid "Preparing strings…" msgstr "Dizgeler hazırlanıyor…" msgid "Pre-translating from translation memory…" msgstr "Çeviri belleğinden ön çeviri…" #, 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ı" msgid "Pre-translating…" msgstr "Ön çeviri yapılıyor…" 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. msgid "Pre-translate" msgstr "Ön Çeviri" 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." msgid "Cannot pre-translate from unknown language." msgstr "Bilinmeyen dilden ön çeviri yapılamaz." 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." msgid "Only fill in exact matches" msgstr "Sadece tam eşleşmeleri doldur" 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." msgid "Don’t mark exact matches as needing work" msgstr "Tam eşleşmeleri çalışma gerekiyor olarak işaretleme" 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." 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." #, 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ı." 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." msgid "No entries could be pre-translated." msgstr "Herhangi bir kayıt için ön çeviri yapılamadı." 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." msgid "Cancelling…" msgstr "İptal ediliyor…" msgid "Drag Folders or Files Here" msgstr "Klasörleri veya Dosyaları Buraya Sürükleyin" msgid "Drag folders or files here" msgstr "Klasörleri veya dosyaları buraya sürükleyin" msgid "Add Folders…" msgstr "Klasörleri Ekle…" msgid "Add folders…" msgstr "Klasörleri ekle…" msgid "Add Files…" msgstr "Dosyaları Ekle…" msgid "Add files…" msgstr "Dosyaları ekle…" msgid "Add Wildcard…" msgstr "Joker Karakter Ekle…" msgid "Add wildcard…" msgstr "Joker karakter ekle…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) 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" msgid "Show in Explorer" msgstr "Gezgin’de Göster" msgid "Show in Folder" msgstr "Klasörde Göster" msgid "Paths" msgstr "Yollar" msgid "Excluded paths" msgstr "Hariç tutulan yollar" msgid "Advanced extraction settings" msgstr "Gelişmiş çıkarma ayarları" msgid "Extract notes for translators from:" msgstr "Çevirmenler için çıkarma notlarının yeri:" msgid "Comments prefixed with:" msgstr "Yorumların ön eki:" msgid "All comments" msgstr "Tüm açıklamalar" msgid "Additional xgettext flags:" msgstr "Ek xgettext işaretleri:" msgid "Additional keywords" msgstr "Ek anahtar kelimeler" msgid "Name of the project the translation is for" msgstr "Çevirisi yapılan projenin adı" msgid "Team name and email address or URL" msgstr "Takım adı ve e-posta adresi veya URL’si" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "örn. nplurals=2; plural=(n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (önerilir)" msgid "Please save the file first. This section cannot be edited until then." msgstr "Lütfen önce dosyayı kaydedin. O zamana kadar bu bölüm düzenlenemez." msgid "Placeholders correctness" msgstr "Yer tutucuların doğruluğu" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "“%s” yer tutucusu çeviride eksik." #, c-format msgid "Superfluous placeholder “%s” that isn’t in source text." msgstr "Kaynak metinde olmayan gereksiz yer tutucu “%s”." msgid "Plural form translations" msgstr "Çoğul biçim çevirileri" msgid "Not all plural forms are translated." msgstr "Tüm çoğul biçimler çevrilmedi." msgid "Inconsistent upper/lower case" msgstr "Tutarsız büyük/küçük harf" msgid "The translation should start as a sentence." msgstr "Çeviri bir cümle olarak başlamalı." msgid "The translation should start with a lowercase character." msgstr "Çeviri bir küçük harf karakteri ile başlamalı." msgid "Inconsistent whitespace" msgstr "Tutarsız boşluk" msgid "The translation doesn’t start with a space." msgstr "Çeviri bir boşluk ile başlamıyor." 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." msgid "The translation is missing a newline at the end." msgstr "Çevirinin sonunda yeni bir satır başlangıcı eksik." 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." msgid "The translation is missing a space at the end." msgstr "Çevirinin sonunda bir boşluk eksik." msgid "The translation ends with a space, but the source text doesn’t." msgstr "Çeviri bir boşluk ile bitiyor, ancak kaynak metin bitmiyor." msgid "Punctuation checks" msgstr "Noktalama denetimleri" #, c-format msgid "The translation should end with “%s”." msgstr "Çeviri “%s” ile bitmeli." #, c-format msgid "The translation should not end with “%s”." msgstr "Çeviri “%s” ile bitmemeli." #, 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." msgid "Cloud" msgstr "Bulut" msgid "Clear Menu" msgstr "Menüyü Temizle" msgid "Clear menu" msgstr "Menüyü temizle" msgid "Comment:" msgstr "Açıklama:" msgid "Update" msgstr "Güncelle" msgid "&Delete" msgstr "&Sil" msgid "Delete the comment" msgstr "Açıklamayı sil" msgid "Edit project" msgstr "Projeyi düzenle" msgid "Project name:" msgstr "Proje adı:" msgid "Browse" msgstr "Gözat" msgid "Add directory to the list" msgstr "Dizini listeye ekle" msgid "OK" msgstr "Tamam" msgid "&File" msgstr "&Dosya" msgid "&New…" msgstr "&Yeni…" msgid "New from &POT/PO file…" msgstr "&POT/PO dosyasından oluştur…" msgid "New From &POT/PO File…" msgstr "&POT/PO Dosyasından Oluştur…" msgid "&Open…" msgstr "&Aç…" msgid "Open Recent" msgstr "Son Kullanılanları Aç" msgid "Open recent" msgstr "En sonunucuyu aç" msgid "Open cloud translation…" msgstr "Bulut çeviriyi aç…" msgid "Open Cloud Translation…" msgstr "Bulut Çeviriyi Aç…" msgid "&Start window" msgstr "Pencereyi &başlat" msgid "&Start Window" msgstr "Pencereyi &Başlat" msgid "Catalogs &manager" msgstr "&Katalog yöneticisi" msgid "Catalogs &Manager" msgstr "&Katalog Yöneticisi" msgid "&Close" msgstr "&Kapat" msgid "&Save" msgstr "Kay&det" msgid "Save &as…" msgstr "&Farklı kaydet…" msgid "Save &As…" msgstr "&Farklı Kaydet…" msgid "Compile to MO…" msgstr "MO olarak Derle…" msgid "E&xport to HTML…" msgstr "HTML’ye a&ktar…" msgid "Check for updates…" msgstr "Güncellemeleri denetle…" msgid "Settings…" msgstr "Ayarlar…" msgid "&Preferences" msgstr "&Tercihler" msgid "E&xit" msgstr "Çı&kış" msgid "Quit" msgstr "Çık" msgid "Copy from singular" msgstr "Tekilden kopyala" msgid "Copy From Singular" msgstr "Tekilden Kopyala" msgid "Translation needs &work" msgstr "Çalışma &gereken çeviri" msgid "Translation Needs &Work" msgstr "Çalışma &Gereken Çeviri" msgid "Edit &comment" msgstr "Açıklamayı dü&zenle" msgid "Edit &Comment" msgstr "Açıklamayı Dü&zenle" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "Öneriler" msgid "&Find…" msgstr "&Bul…" msgid "Replace…" msgstr "Değiştir…" msgid "Find next" msgstr "Sonrakini bul" msgid "Find previous" msgstr "Öncekini bul" msgid "Find and Replace…" msgstr "Bul ve Değiştir…" msgid "Find Next" msgstr "Sonrakini Bul" msgid "Find Previous" msgstr "Öncekini Bul" msgid "Show string &ID" msgstr "Dizge &kodunu göster" msgid "Show String &ID" msgstr "Dizge &Kodunu Göster" msgid "Show warnings" msgstr "Uyarıları göster" msgid "Show Warnings" msgstr "Uyarıları Göster" msgid "Sort by &file order" msgstr "&Dosya düzenine göre sırala" msgid "Sort by &File Order" msgstr "&Dosya Düzenine göre Sırala" msgid "Sort by &source" msgstr "&Kaynağa göre sırala" msgid "Sort by &Source" msgstr "&Kaynağa göre Sırala" msgid "Sort by &translation" msgstr "Çeviriye &göre sırala" msgid "Sort by &Translation" msgstr "Çeviriye &göre Sırala" msgid "&Group by context" msgstr "Bağlama göre &grupla" msgid "&Group By Context" msgstr "Bağlama Göre &Grupla" msgid "Entries with errors first" msgstr "Hataları olan dizgeler en üstte" msgid "Entries with Errors First" msgstr "Hataları Olan Dizgeler En Üstte" msgid "&Untranslated entries first" msgstr "Ç&evrilmemiş dizgeler en üstte" msgid "&Untranslated Entries First" msgstr "Ç&evrilmemiş Dizgeler En Üstte" msgid "&Show code occurrences" msgstr "Kod oluşumlarını &göster" msgid "&Show Code Occurrences" msgstr "Kod Oluşumlarını &Göster" msgid "Show sidebar" msgstr "Kenar çubuğunu göster" msgid "Show status bar" msgstr "Durum çubuğunu göster" msgid "&Translation" msgstr "Ç&eviri" msgid "&Update from source code" msgstr "Kaynak kodundan gü&ncelle" msgid "&Update from Source Code" msgstr "Kaynak Kodundan Gü&ncelle" msgid "Update from &POT file…" msgstr "&POT dosyasından güncelle…" msgid "Update from &POT File…" msgstr "&POT Dosyasından Güncelle…" msgid "Sync with Crowdin" msgstr "Crowdin ile eşitle" msgid "Pre-&translate…" msgstr "Ön Ç&eviri Yap…" msgid "&Validate translations" msgstr "Çevirileri &doğrula" msgid "&Validate Translations" msgstr "Çevirileri &Doğrula" msgid "Remove Same-as-Source Translations" msgstr "Kaynakla Aynı Çevirileri Kaldır" msgid "&Purge deleted translations" msgstr "Silin&miş çevirileri temizle" msgid "&Purge Deleted Translations" msgstr "Silin&miş Çevirileri Temizle" msgid "&Properties…" msgstr "Ö&zellikler…" msgid "&Go" msgstr "&Git" msgid "&Done and next" msgstr "&Tamamla ve sonrakine geç" msgid "&Done and Next" msgstr "&Tamamla ve Sonrakine Geç" msgid "Previously edited" msgstr "Önceden düzenlenmiş" msgid "Previously Edited" msgstr "Önceden Düzenlenmiş" msgid "&Previous translation" msgstr "Ön&ceki çeviri" msgid "&Previous Translation" msgstr "Ön&ceki Çeviri" msgid "&Next translation" msgstr "&Sonraki çeviri" msgid "&Next Translation" msgstr "&Sonraki Çeviri" msgid "P&revious unfinished" msgstr "Ö&nceki tamamlanmamış" msgid "P&revious Unfinished" msgstr "Ö&nceki Tamamlanmamış" msgid "Ne&xt unfinished" msgstr "S&onraki tamamlanmamış" msgid "Ne&xt Unfinished" msgstr "S&onraki Tamamlanmamış" msgid "Previous plural form" msgstr "Önceki çoğul biçim" msgid "Previous Plural Form" msgstr "Önceki Çoğul Biçim" msgid "Next plural form" msgstr "Sonraki çoğul biçim" msgid "Next Plural Form" msgstr "Sonraki Çoğul Biçim" msgid "&Online help" msgstr "Çe&vrimiçi yardım" msgid "&Online Help" msgstr "Çe&vrimiçi Yardım" msgid "&GNU gettext manual" msgstr "&GNU gettext kılavuzu" msgid "&GNU gettext Manual" msgstr "&GNU gettext Kılavuzu" msgid "&About Poedit" msgstr "Poedit H&akkında" msgid "&About" msgstr "H&akkında" msgid "Extractor setup" msgstr "Çıkarıcı kurulumu" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Noktalı virgülle ayrılmış uzantılar listesi (örn. *.cpp;*.h):" msgid "Invocation:" msgstr "Çağrı:" msgid "Command to extract translations:" msgstr "Çevirileri çıkarmak için komut:" 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)." msgid "An item in keywords list:" msgstr "Anahtar kelimeleri listesindeki bir öğe:" 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." msgid "An item in input files list:" msgstr "Girdi dosyaları listesindeki bir öğe:" #, 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." msgid "Source code charset:" msgstr "Kaynak kod karakter kümesi:" #, 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." msgid "Translation Properties" msgstr "Çeviri Özellikleri" msgid "Project name and version:" msgstr "Proje adı ve sürümü:" msgid "Language team:" msgstr "Dil takımı:" msgid "Plural forms:" msgstr "Çoğul biçimler:" msgid "Use default rules for this language" msgstr "Bu dil için varsayılan kuralları kullan" msgid "Use custom expression" msgstr "Özel ifade kullan" msgid "Learn about plural forms" msgstr "Çoğul biçimler hakkında bilgi edinin" msgid "Charset:" msgstr "Karakter kümesi:" msgid "Advanced Extraction Settings…" msgstr "Gelişmiş Çıkarma Ayarları…" msgid "Advanced extraction settings…" msgstr "Gelişmiş çıkarma ayarları…" msgid "Translation properties" msgstr "Çeviri özellikleri" msgid "Sources Paths" msgstr "Kaynak Yolları" msgid "Sources paths" msgstr "Kaynak yolları" msgid "Extract text from source files in the following directories:" msgstr "Kaynak dosyalardan metinleri şurada belirtilen dizinlere çıkar:" msgid "Base path:" msgstr "Temel yol:" msgid "Sources Keywords" msgstr "Kaynak Anahtar Kelimeleri" msgid "Sources keywords" msgstr "Kaynak anahtar kelimeleri" 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:" msgid "Also use default keywords for supported languages" msgstr "Desteklenen diller için varsayılan anahtar kelimeleri de kullan" msgid "Learn about gettext keywords" msgstr "Gettext anahtar kelimeleri hakkında bilgi edinin" msgid "Update summary" msgstr "Güncelleme özeti" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" "Bu dizgeler kaynaklarda bulundu ancak dosyada bulunamadı.\n" "Poedit bunları şimdi dosyaya ekleyecek." msgid "New strings" msgstr "Yeni dizgeler" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" "Bu dizgeler artık kaynak kodda yok.\n" "Poedit bunları şimdi dosyadan kaldıracak." msgid "Obsolete strings" msgstr "Eski dizgeler" msgid "(0 new, 0 obsolete)" msgstr "(0 yeni, 0 eski)" msgid "Open" msgstr "" msgid "Open file" msgstr "Dosya aç" msgid "Save file" msgstr "Dosyayı kaydet" msgid "Validate" msgstr "Doğrula" msgid "Check for errors in the translation" msgstr "Çeviri içindeki hataları denetle" msgid "Update from code" msgstr "Koddan güncelle" msgid "Update from Code" msgstr "Koddan Güncelle" msgid "Update from source code" msgstr "Kaynak kodundan güncelle" msgid "Sidebar" msgstr "Kenar çubuğu" msgid "Show or hide the sidebar" msgstr "Kenar çubuğunu göster veya gizle" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. msgid "Previous source text" msgstr "Önceki kaynak metin" 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)." msgid "Notes for translators" msgstr "Çevirmenler için notlar" msgid "Comment" msgstr "Açıklama" msgid "Add comment" msgstr "Açıklama ekle" msgid "Add Comment" msgstr "Açıklama Ekle" msgid "Delete From Translation Memory" msgstr "Çeviri Belleğinden Sil" msgid "Delete from translation memory" msgstr "Çeviri belleğinden sil" msgid "Translation suggestions" msgstr "Çeviri önerileri" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). 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). msgid "No Matches Found" msgstr "Eşleşme bulunamadı" msgid "This string was found in Poedit’s translation memory." msgstr "Bu dizge Poedit’in çeviri belleğinde bulundu." 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." 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." msgid "The TMX file is malformed." msgstr "TMX dosyası hatalı oluşturulmuş." msgid "No translations were found in the TMX file." msgstr "TMX dosyasında bulunan çeviri yok." #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Çeviri belleği veritabanı bozulmuş: %s (%d)." #, c-format msgid "Translation memory error: %s (%d)." msgstr "Çeviri belleği hatası: %s (%d)." msgid "Cannot create temporary directory." msgstr "Geçici dizin oluşturulamıyor." msgid "There are no translations. That’s unusual." msgstr "Herhangi bir çeviri bulunamadı. Bu durum normal değil." msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "Translators typically use PO template files (POTs) prepared for them by the " "developer." msgstr "" "Çevrilebilir dizgeler Gettext sistemine el ile eklenmez ancak kaynak " "kodundan otomatik olarak\n" "çıkarılır. Böylece güncel ve doğru kalırlar.\n" "Çevirmenler genellikle geliştirici tarafından hazırlanan PO şablon " "dosyalarını (POT’ları) kullanır." msgid "(Learn more about GNU gettext)" msgstr "(GNU gettext hakkında daha fazla bilgi edinin)" 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:" msgid "Update from POT" msgstr "POT dosyasından güncelle" msgid "Take translatable strings from an existing POT template." msgstr "Çevrilebilir dizgeleri var olan bir POT şablonundan alın." msgid "" "You can also extract translatable strings directly from the source code:" msgstr "Çevrilebilir dizgeleri doğrudan kaynak kodundan çıkarabilirsiniz:" msgid "Extract from sources" msgstr "Kaynaklardan çıkar" 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 #, c-format msgid "Version %s" msgstr "Sürüm %s" msgid "Create new" msgstr "Yeni oluştur" msgid "Create new translation from POT template." msgstr "POT şablonundan yeni çeviri oluşturun." msgid "Browse files" msgstr "Dosyalara gözat" msgid "Open and edit translation files." msgstr "Çeviri dosyalarını açın ve düzenleyin." msgid "Translate cloud project" msgstr "Bulut projeyi çevir" msgid "Collaborate with other people online." msgstr "Çevrimiçi olarak diğer kişilerle işbirliği yapın." msgid "Recent files" msgstr "Son dosyalar" msgid "Sync" msgstr "Eşitle" 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") #, 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. #, c-format msgid "%s Preferences" msgstr "%s Tercihleri" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "Hizmetler" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "%s’i Gizle" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "Diğerlerini Gizle" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "Tümünü Göster" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "%s’ten Çık" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "Tercihler…" msgid "Preferences..." msgstr "Tercihler..." #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "Son" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "Sıklık" msgid "&Apply" msgstr "&Uygula" msgid "Apply" msgstr "Uygula" msgid "&Back" msgstr "&Geri" msgid "Back" msgstr "Geri" msgid "&Cancel" msgstr "İ&ptal" msgid "&Clear" msgstr "&Temizle" msgid "Clear" msgstr "Temizle" msgid "Copy" msgstr "Kopyala" msgid "Cu&t" msgstr "&Kes" msgid "Cut" msgstr "Kes" msgid "Edit" msgstr "Düzenle" msgid "&Quit" msgstr "Çı&k" msgid "Help" msgstr "Yardım" msgid "&New" msgstr "&Yeni" msgid "New" msgstr "Yeni" msgid "&No" msgstr "&Hayır" msgid "No" msgstr "Hayır" msgid "&OK" msgstr "&Tamam" msgid "Open…" msgstr "Aç…" msgid "&Open..." msgstr "&Aç..." msgid "Open..." msgstr "Aç..." msgid "&Paste" msgstr "Ya&pıştır" msgid "Paste" msgstr "Yapıştır" msgid "Preferences" msgstr "Tercihler" msgid "&Redo" msgstr "&Yinele" msgid "Refresh" msgstr "Yenile" msgid "&Save as" msgstr "&Farklı kaydet" msgid "Save as" msgstr "Farklı kaydet" msgid "Select &All" msgstr "&Tümünü Seç" msgid "Select All" msgstr "Tümünü Seç" msgid "&Undo" msgstr "&Geri Al" msgid "&Yes" msgstr "&Evet" msgid "Yes" msgstr "Evet" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "Yukarı Ok" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "Aşağı Ok" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "Sol" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "Sağ" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "shift" poedit-3.5/locales/hu.mo0000644000175100001770000016702214664354153012207 00000000000000*X9 Y9 e9&p99<99J9gF: :: :: :::::; ;;;&;5;;;A;J;^;r;v;;;;;;;;;; ; ;;< < <!<1<G<]<l<<<<<<<<< < = ==%=A=]=v========>*>:> X> d>n>w>>> > > >> >> > >> ?? *?6?F?Z?u?~???? ? ?1 @<@'A@i@@ @@7@6@ A)@AjA oA]zAA<AD(B$mBB BB'C .C"T:'"b.3 "1Tg.%ڙ 5OXh} Ț)ݚ"* H Ta{ 7 ٜ"884q%̝%ݝ+%/ UWb ˞ <$Ej$ϟ7 .'sVAʠ )<:w'<%% < GToԢ 2ѣ/p*ݤ-IcvAԥ+M;, Цݦ1<&0c6˧ѧ!* Z8 Ҩ!:Pbuʩө  -?T#k, Ȫ= $.Sf$D !!8Zq  ׮1&,Shy,/ү! 7X=^ G< 38Q c o6ײݲ"3L"&? X f )]C&R/y*Ե23&Zx{'O!w0!"4Pl ͸Ը0 %˹ GD7ZpI hvQZ! |;\4;)+(Tft%7#I/m :H Q[ u" D $ +7L alr!--?Tjy$ 0!Gi0 >*Z!$;U)q8! -"Dg" ".Ni$ &<Rg}P  3(Ir* J~++7-e hKt* T<3p:P-_[Tu%&7iOi'#@K=R.,Ly $.(S'|'< )QF pSch|JI`FOc^#7 Q\n=4#.Rpz1~=D U!b ./ Pn U3%/$;&Z-8| e +139mN>cCH 1o. 6%!&*Hs'KCDo=Ift!-L P59' S{ Om&TNW6 Tq^Ej"Z_iw>5Ba<D+`MU+,;.$QF.>O.hB1^:\p* >i0)_4 Yx7_7g:CAjG @ArkwT)E dsV|czF2d5[QK,v| -M{2&oy8sew ~HHL4HV=k*ye3hriat/3d !/%p10]3 G@I:6F'uvq{ 9bY#XU NrAn fu9EJn%)1$tWW48sg/`-bkpX0Sx?#R}S}"o?;VY`#6KDf,@Uzx;[gNczcqMZ|RZ\~&X<2a(?PCu(j(n<O+P8Bhvl %*G"J']Ime^y$ Rl~=}Q[L\bl!7Jm]  (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd AccountAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add accountAdd 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 languagesAlt+Always 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 errorCrowdin is an online localization management platform and collaborative translation tool.Ctrl+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 no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownDownloading 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:EnterEnter 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 loading translation file “%s”.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export errorExport 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…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)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport from TMX…Import translation files…Importing translation memory from “%s” 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 CrowdinLeftLine %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 translations were found in the TMX file.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKObsolete stringsOneOnly 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 translation templateOpen...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 translationsQuitQuit %sReading file content failed with the following error: %sRecentRecent 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 FinderReviewRightSaveSave &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 languageServicesSet LanguageSet languageSettings…Shift+Show AllShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow summary after updating filesShow 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.These strings are no longer in the source code. Poedit will remove them from the file now.These strings were found in the sources but were not in the file. Poedit will add them to the file now.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 entries in the file are probably incorrect.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 errorUntransUpUpdateUpdate 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 the file failed. Click on 'Details >>' for details.Updating 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown 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: 2024-08-30 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 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&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(0 új, 0 elavult)(Tudjon meg többet a GNU gettextről)(Új: %i, elavult: %i)(Alapértelmezett nyelv használata)(nincs bejelentkezve)(Windows 8 vagy újabb szükséges)< &Előző%s névjegyeFiókFiókokHozzáadásFiók hozzáadásaHozzászólásFájlok hozzáadása…Mappák hozzáadása…Projekt hozzáadásaHelyettesítő karakter hozzáadása…Fiók hozzáadásaHozzá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ókAlt+Mindig a beviteli mező legyen az aktívEgy elem a bemeneti fájlok listájában:Egy elem a kulcsszavak listájában:MegjelenésAlkalmazBiztos, 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ógus fá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 honosításkezelő platform és kollaboratív fordítási eszköz.Ctrl+&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ö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.Tényleg törölni szeretné a már nem használt fordításokat?Ni&ncs mentésNincs mentésNe mutassa újraNe jelölje meg munkát igénylőként a pontosan egyezőketNe mutassa újraLeA 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ésSzerkesztés&Megjegyzés szerkesztése&Megjegyzés szerkesztéseMegjegyzés szerkesztéseMegjegyzés szerkesztéseProjekt szerkesztéseProjekt szerkesztéseSzerkesztésSzerkesztés…E-mail:EnterVá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 “%s” fordítási fájl betöltésekor.Hiba a fájl megnyitása soránHiba a fájl mentése soránHiba az XLIFF-fájl betöltése során: %sHibákMindenKizárt elérési utakExportálás TMX fájlba…Exportálás másként…Exportálási hibaExportálás TMX fájlba…Nem 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:Lefordítható karakterláncok kinyerése…Kivonatoló beállításaKivonatolókSikertelen parancs: %sNem sikerült kommunikálni a Poedit folyamattal.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.Befejezés…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)GyakoriGNU gettextÁltalánosHTML fájlokSúgó%s elrejtéseTöbbi elrejtéseOldalsá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ási hibaImportálás TMX fájlból…Fordítási fájlok importálása…Nem sikerült a fordítási memória importálása ebből: „%s”.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:JSON 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ólTudjon meg többetBővebben a %s szolgáltatásrólTudjon meg többet a CrowdinrólBalra%d sor a “%s” fájlban sérült (nem érvényes %s adat).Sorvégek:Kiterjesztések listája pontosvesszővel elválasztva (pl. *.cpp;*.h):Angol betöltéseA Localaz 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 &POT/PO fájlból…Új szövegekKö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.Nem található fordítás a TMX fájlban.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óknakOKElavult szövegekEgyCsak 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ásaFordítási sablon 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ésKilépés a %sbőlA fájl tartalmának olvasása sikertelen a következő hibával: %sLegutóbbiLegutóbbi fájlokMégisFrissítésFájl újratöltéseFájl újratöltéseMaradt: %dCsereÖ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álatJobbraMenté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éseKé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 nyelvetSzolgáltatásokNyelv kiválasztásaVálasszon nyelvetBeállítások…Shift+Összes megjelenítéseOldalsá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éseÖsszegzés megjelenítése a fájlok frissítése utánFigyelmezteté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áncCserejavaslatokJavaslatokA 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 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 közben. Eredményeként néhány adat hiányozhat vagy megsérülhetett.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.Ezek a szövegek már nem találhatóak meg a forrásokban. A Poedit most törli őket a fájlból.Ezek a fájlból hiányzó szövegek voltak megtalálhatóak a forrásokban. A Poedit most hozzáadja őket a katalógushoz.Ez a JSON fájl nem fordítási fájl, és nem szerkeszthető a Poedittel.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 Gettext rendszerben a fordítható bejegyzések nem adhatók hozzá kézzel, a kinyerésük a forráskódból automatikusan történik. Ily módon mindig naprakész és pontos lesz. A fordítók jellemzően a fejlesztők által számukra készített PO sablon fájlokat (POT) 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 fájl fordítási bejegyzései valószínűleg helytelenek.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ásNem kezelt kivétel történt: %sUnix (javasolt)Ismeretlen Crowdin hiba.Ismeretlen hibaLefordítatlanFelFrissítésÖ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ésA fájl frissítése meghiúsult. Részletekért kattintson a 'Részletek >>' gombra.Fordí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óVárakozás a hitelesítésre…Ü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ájlokIgenKö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ásaltMunkát igényelctrlne törölje az ideiglenes fájlokat (hibakereséshez)például nplurals=2; plural=(n > 1);fuzzy megfelelő a fájlon belülugrás a tételhez a megadott sorszámnálegy poedit:// URI kezeléseelőfordítás FM-bólshiftismeretlen nyelvnem támogatott verzió (%s)nev@example.comA(z) „%s” nem érvényes POT fájl.poedit-3.5/locales/lv.po0000644000175100001770000015107314664354154012217 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "Nerādīt šo paziņojumu" msgid "Don’t Show Again" msgstr "Turpmāk nerādīt" msgid "Don’t show again" msgstr "Turpmāk nerādīt" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(Jauns: %i, novecojis: %i)" msgid "Collecting source files…" msgstr "Vāc avota datnes…" msgid "Extracting translatable strings…" msgstr "Izvērš tulkojamos vārdus…" msgid "Failed to load file with extracted translations." msgstr "Kļūda ielādējot failu ar tulkojumiem." msgid "Merging differences…" msgstr "Apvieno atšķirības…" msgid "Updating translations" msgstr "Jaunināt tulkojumus" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "" msgid "Invalid file" msgstr "Nederīgs fails" #, c-format msgid "Malformed header: “%s”" msgstr "Nepareizi veidota galvene: “%s”" msgid "PO Translation Files" msgstr "PO tulkojumu faili" msgid "POT Translation Templates" msgstr "POT tulkojumu faili" msgid "XLIFF Translation Files" msgstr "XLIFF tulkojumu datnes" msgid "JSON Translation Files" msgstr "" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "" msgid "All Translation Files" msgstr "Visi tulkojumu faili" msgid "The file is in a format not recognized by Poedit." msgstr "" msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" #, c-format msgid "Reading file content failed with the following error: %s" msgstr "" #, 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." #, c-format msgid "Couldn’t save file %s." msgstr "Nevarēja saglabāt failu %s." msgid "Screenshots:" msgstr "" #, c-format msgid "%i line of file “%s” was not loaded correctly." msgid_plural "%i lines of file “%s” were not loaded correctly." msgstr[0] "%i 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." #, 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)." 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" msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "Bojāts PO fails: daudzskaitļa forma msgstr lietota bez msgid_plural" msgid "Couldn’t load the file, it is probably damaged." msgstr "" 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." 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)." #, 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." msgid "Error saving file" msgstr "Kļūda saglabājot failu" #, c-format msgid "“%s” is not a valid POT file." msgstr "“%s” nav derīgs POT fails." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "" #, c-format msgid "unsupported version (%s)" msgstr "" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML msgid "Broken markup in translation string." msgstr "" msgid "(Use default language)" msgstr "(Lietot noklusējuma valodu)" msgid "Language selection" msgstr "Valodas izvēle" msgid "Select your preferred language" msgstr "Atlasīt vēlamo valodu" msgid "You must restart Poedit for this change to take effect." msgstr "Restartēt Poedit, lai novērot šo izmaiņu." msgid "Add Account" msgstr "" msgid "Add account" msgstr "" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "" msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" msgid "How does cloud sync work?" msgstr "" msgid "Account" msgstr "" msgid "(not signed in)" msgstr "" msgid "File" msgstr "Fails" msgid "Open cloud translation" msgstr "" msgid "Manage accounts" msgstr "" msgid "Project:" msgstr "Projekts:" msgid "Language:" msgstr "Valoda:" msgid "Sign in to Cloud Account" msgstr "" msgid "Sign in to cloud account" msgstr "" msgid "No translation projects listed in your account." msgstr "" msgid "Downloading latest translations…" msgstr "Lejupielādēt jaunāko tulkojumu…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #, c-format msgid "Sign in to %s" msgstr "" msgid "Syncing" msgstr "Notiek sinhronizēšana" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s…" msgstr "" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s failed." msgstr "" msgid "Syncing error" msgstr "Sinhronizācijas kļūda" msgid "Add" msgstr "Pievienot" msgid "Unknown Crowdin error." msgstr "" msgid "Not authorized, please sign in again." msgstr "Noraidīts, lūdzu pierakstīties no jauna." msgid "Downloading translations is disabled in this project." msgstr "Šajā projektā tulkojumu lejupielāde ir atspējota." msgid "Sign In" msgstr "Pieslēgties" msgid "Sign in" msgstr "Pieslēgties" msgid "Sign Out" msgstr "Izlogoties" msgid "Sign out" msgstr "Izlogoties" msgid "Learn more about Crowdin" msgstr "Uzzināt vairak par Crowdin" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" msgid "Waiting for authentication…" msgstr "Gaida autentifikāciju…" msgid "Updating user information…" msgstr "Atjauno lietotāja informāciju…" msgid "Sign in to Crowdin" msgstr "Pieslēgties Crowdin" msgid "Syncing with Crowdin failed." msgstr "Sinhronizēšana ar Crowdin neizdevās." msgid "Crowdin error" msgstr "Crowdin kļūda" msgid "Uploading translations…" msgstr "Augšupielādē tulkojumus…" msgid "&Copy" msgstr "Kopēt" msgid "Learn more" msgstr "Uzzināt vairāk" msgid "&Help" msgstr "&Palīdzība" msgid "MO files can’t be directly edited in Poedit." msgstr "MO failu nevar tieši rediģēt Poedit." msgid "Error opening file" msgstr "Kļūda, atverot failu" 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." msgid "don’t delete temporary files (for debugging)" msgstr "neizdzēst pagaidu failus (atkļūdošanas nolūkos)" msgid "handle a poedit:// URI" msgstr "rīkoties ar poedit://URI" msgid "go to item at given line number" msgstr "" msgid "Failed to communicate with Poedit process." msgstr "Komunikācija ar Poedit procesu neizdevās." #, c-format msgid "Unhandled exception occurred: %s" msgstr "Neapstrādāts izņēmums notika: %s" msgid "Select translation template" msgstr "" msgid "Select translation file" msgstr "" msgid "Poedit is an easy to use translation editor." msgstr "Poedit ir vienkārši izmantojams tulkojumu redaktors." msgid "You can’t drop more than one file on Poedit window." msgstr "" #, c-format msgid "File “%s” is not a translation file." msgstr "Fails “%s” nav tulkojuma fails." #, c-format msgid "File “%s” doesn’t exist." msgstr "Fails “%s” nepastāv." 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". #, 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." msgid "Install" msgstr "Instalēt" #, c-format msgid "The file “%s” has been changed by another application." msgstr "" msgid "Reload file" msgstr "" msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" msgid "Ignore" msgstr "Ignorēt" msgid "Reload File" msgstr "Pārlādēt failu" msgid "The file has been modified. Do you want to save changes?" msgstr "Fails tika izmainīts. Vai vēlaties saglabāt izmaiņas?" msgid "Save changes" msgstr "Saglabāt izmaiņas" msgid "Your changes will be lost if you don’t save them." msgstr "Ja nesaglabāsiet izmaiņas, tās tiks zaudētas." msgid "Save" msgstr "Saglabāt" msgid "Do&n’t save" msgstr "&Nesaglabāt" msgid "Don’t Save" msgstr "Nesaglabāt" 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." msgid "Cancel" msgstr "Atcelt" msgid "Save Anyway" msgstr "Vienalga saglabāt" msgid "Save anyway" msgstr "Vienalga saglabāt" msgid "Save as…" msgstr "Saglabāt kā…" msgid "Compile to…" msgstr "Kompilēt uz…" msgid "Compiled Translation Files" msgstr "Kompilētie tulkojuma faili" msgid "Export to HTML…" msgstr "" msgid "HTML Files" msgstr "HTML faili" #, c-format msgid "In: %s" msgstr "Uz: %s" msgid "Source code not available." msgstr "Sākumkods nav pieejams." msgid "Updating failed" msgstr "Neizdevās atjaunināt" 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." msgid "Permission denied." msgstr "Piekļuve aizliegta." 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. 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. 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." msgid "Translation entries in the file are probably incorrect." msgstr "Tulkojuma ierakstos, iespējams, ir kļūda." msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "Kļūda jauninot failu. Papildus informācijai spiediet 'Detaļas>>'." msgid "Open translation template" msgstr "Atvērt tulkojuma šablonu" #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "" msgstr[1] "" msgstr[2] "" msgid "Validation results" msgstr "Pārbaudes rezultāts" 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." msgid "The file was saved safely." msgstr "Fails veiksmīgi tika saglabāts." 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." 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." 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." msgid "The file cannot be compiled into the MO format and used." msgstr "" msgid "No problems with the translation found." msgstr "" #, 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] "" msgid "The translation is ready for use." msgstr "" #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "" msgid "" "The file contained duplicate items, which is not allowed in PO files and " "would prevent the file from being used. Poedit fixed the issue, but you " "should review translations of any items marked as needing work and correct " "them if necessary." msgstr "" msgid "Language of the translation isn’t set." msgstr "" msgid "Set Language" msgstr "" msgid "Set language" msgstr "" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." msgid "" "Suggestions are not available if the translation language is not set " "correctly. Other features, such as plural forms, may be affected as well." msgstr "" msgid "Language of the translation is the same as source language." msgstr "Tulkojuma valoda ir tāda pati kā avota valoda." msgid "Fix Language" msgstr "Labot valodu" msgid "Fix language" msgstr "Labot valodu" msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" msgid "Required header Plural-Forms is missing." msgstr "" #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Sintakses kļūda daudzskaitļa formu galvenē (\"%s\")." msgid "Fix the Header" msgstr "" 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". #, 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.")" msgid "Review" msgstr "Skatīt" msgid "Would you like to use English for source text?" msgstr "" #, 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" msgid "Load English" msgstr "" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Iztulkoti: %d no %d (%d %%)" #, c-format msgid "Remaining: %d" msgstr "Atlikuši: %d" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d kļūdas" msgstr[1] "%d kļūda" msgstr[2] "%d kļūdas" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgid " (unsaved)" msgstr " (nesaglabāts)" msgid " (modified)" msgstr " (modificēts)" #, c-format msgid "Failed to update translation memory: %s" msgstr "Neizdevās atjaunināt tulkojumu atmiņu: %s" msgid "Remove same-as-source translations" msgstr "" msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" msgid "Keep" msgstr "Paturēt" msgid "Remove" msgstr "" msgid "Purge deleted translations" msgstr "&Iztīrīt dzēstos tulkojumus" 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?" 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ļ." msgid "Purge" msgstr "Iztīrīt" msgid "Copy from source text" msgstr "Kopēt no avota teksta" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "Notīrīt tulkojumu" msgid "Clear Translation" msgstr "Notīrīt tulkojumu" msgid "Edit comment" msgstr "Rediģēt komentāru" msgid "Edit Comment" msgstr "Rediģēt komentāru" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "" msgid "Hide Sidebar" msgstr "Slēpt sānjoslu" msgid "Show Sidebar" msgstr "Rādīt sānjoslu" msgid "Hide Status Bar" msgstr "Slēpt statusa joslu" msgid "Show Status Bar" msgstr "Rādīt statusa joslu" msgid "String length in characters: translation | source" msgstr "" msgid "String length in characters" msgstr "" msgid "Source text" msgstr "Avota teksts" msgid "Singular" msgstr "Vienskaitlis" msgid "Plural" msgstr "Daudzskaitlis" msgid "Translation" msgstr "Tulkojums" msgid "Pre-translated" msgstr "" 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. msgid "Needs work" msgstr "Jāpārbauda" 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." msgid "Create new translation" msgstr "Izveidot jaunu tulkojumu" 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 msgid "Source text ID" msgstr "" msgid "Everything" msgstr "Visi" #, c-format msgid "Form %i" msgstr "Forma %i" #, c-format msgid "Form %i (unused)" msgstr "Forma %i (neizmantota)" msgid "Zero" msgstr "Nulle" msgid "One" msgstr "Viens" msgid "Two" msgstr "Divi" msgid "Other" msgstr "Cits" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, c-format msgid "String context: %s" msgstr "" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #, c-format msgid "String identifier: %s" msgstr "" #, c-format msgid "%s Format" msgstr "" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "" #, c-format msgid "Translation — %s" msgstr "Tulkojums — %s" msgid "ID" msgstr "ID" #, c-format msgid "Source text — %s" msgstr "Avota teksts — %s" msgid "unknown language" msgstr "nezināma valoda" #, c-format msgid "Network error: %s (%d)" msgstr "" msgid "Unknown error" msgstr "" #, c-format msgid "Failed command: %s" msgstr "Neizdevās komanda: %s" msgid "Failed to merge gettext catalogs." msgstr "Neizdevās apvienot gettext katalogus." msgid "Open in Editor" msgstr "Atvērt redaktorā" msgid "Open in editor" msgstr "Atvērt redaktorā" msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" msgid "No usage information" msgstr "" #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgid "Source code not found" msgstr "" 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 "" msgid "File cannot be opened" msgstr "" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "" msgid "Find" msgstr "Atrast" msgid "Replace" msgstr "Aizstāt" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "Iestatījumi" msgid "Ignore case" msgstr "Ignorēt reģistru" msgid "Wrap around" msgstr "Meklēt visā" msgid "Whole words only" msgstr "Tikai veselus vārdus" msgid "Find in source texts" msgstr "Meklēt avota tekstā" msgid "Find in translations" msgstr "Meklēt tulkojumā" msgid "Find in comments" msgstr "Meklēt komentāros" msgid "Close" msgstr "Aizvērt" msgid "Replace &All" msgstr "&Aizstāt visus" msgid "Replace &all" msgstr "&Aizstāt visus" msgid "&Replace" msgstr "" msgid "< &Previous" msgstr "< Ie&priekšējais" msgid "&Next >" msgstr "&Nākamais >" msgid "String to find" msgstr "Atrast" msgid "Replacement string" msgstr "Aizstāt ar" #, c-format msgid "Cannot execute program: %s" msgstr "Nevar palaist programmu: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "" msgid "Translation Language" msgstr "Tulkojuma valoda" msgid "Language of the translation:" msgstr "Tulkojuma valoda:" msgid "All strings" msgstr "" msgid "Couldn’t download Localazy project details." msgstr "" msgid "There was an error when uploading translations to Localazy." msgstr "" msgid "Projects" msgstr "" msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" msgid "Add Project" msgstr "" msgid "Add project" msgstr "" msgid "Poedit - Catalogs manager" msgstr "Poedit - katalogu pārvaldnieks" msgid "Edit…" msgstr "Rediģēt…" msgid "Create new translations project" msgstr "Izveidot jaunu tulkošanas projektu" msgid "Delete the project" msgstr "Izdzēst projektu" msgid "Edit the project" msgstr "Rediģēt projeku" msgid "Update all" msgstr "Atjaunot visus" msgid "Update all catalogs in the project" msgstr "Atjaunot visus katalogus šajā projektā" msgid "Total" msgstr "Kopā" msgid "Untrans" msgstr "Neiztulk" msgctxt "column/row header" msgid "Needs Work" msgstr "Jāpārbauda" msgid "Errors" msgstr "Kļūdas" msgid "Last modified" msgstr "Pēdējo reizi modificēts" msgid "Select directory" msgstr "Izvēlieties mapi" msgid "Directories:" msgstr "Mapes:" msgid "" msgstr "" #, c-format msgid "Do you want to delete project “%s”?" msgstr "" msgid "Delete project" msgstr "" msgid "Deleting the project will not delete any translation files." msgstr "" msgid "Confirmation" msgstr "Apstiprinājums" msgid "Update all catalogs in this project?" msgstr "" msgid "Performs update from source code on all files in the project." msgstr "" msgid "Check for Updates…" msgstr "Meklēt atjauninājumus…" msgid "Catalogs Manager" msgstr "Katalogu pārvaldnieks" msgid "&Preferences…" msgstr "&Iestatījumi…" msgid "&Edit" msgstr "R&ediģēt" msgid "Undo" msgstr "Atsaukt" msgid "Redo" msgstr "Atcelt atsaukšanu" msgid "Paste and Match Style" msgstr "Ielīmēt un pieskaņot stilam" msgid "Delete" msgstr "Izdzēst" msgid "Spelling and Grammar" msgstr "Pareizrakstība un gramatika" msgid "Show Spelling and Grammar" msgstr "Rādīt pareizrakstību un gramatiku" msgid "Check Document Now" msgstr "Pārbaudīt dokumentu" msgid "Check Spelling While Typing" msgstr "Pārbaudīt pareizrakstību rakstīšanas laikā" msgid "Check Grammar With Spelling" msgstr "Pārbaudīt gramatiku kopā ar pareizrakstību" msgid "Correct Spelling Automatically" msgstr "Izlabot pareizrakstību automātiski" msgid "Substitutions" msgstr "Aizvietošanas" msgid "Show Substitutions" msgstr "Rādīt aizvietošanas" msgid "Smart Copy/Paste" msgstr "Gudrs Copy/Paste" msgid "Smart Quotes" msgstr "Figūrpēdiņas" msgid "Smart Dashes" msgstr "Domuzīme" msgid "Smart Links" msgstr "Saites" msgid "Text Replacement" msgstr "Teksta aizstāšana" msgid "Transformations" msgstr "Transformācijas" msgid "Make Upper Case" msgstr "" msgid "Make Lower Case" msgstr "" msgid "Capitalize" msgstr "" msgid "Speech" msgstr "Runa" msgid "Start Speaking" msgstr "Sākt izrunāt" msgid "Stop Speaking" msgstr "Beigt izrunāt" msgid "&View" msgstr "&Skats" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item 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 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 msgid "Enter Full Screen" msgstr "" msgid "Window" msgstr "Logs" msgid "Minimize" msgstr "Minimizēt" msgid "Zoom" msgstr "" msgid "Welcome to Poedit" msgstr "" msgid "Bring All to Front" msgstr "" msgid "Information about the translator" msgstr "Infoermācija par tulkotāju" msgid "Name:" msgstr "Vārds:" msgid "Your Name" msgstr "Jūsu vārds" msgid "Email:" msgstr "E-pasts:" msgid "you@example.com" msgstr "" msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" msgid "Editing" msgstr "Rediģēšana" msgid "Automatically compile MO file when saving" msgstr "Saglabājot automātiski kompilēt MO failu" msgid "Show summary after updating files" msgstr "" msgid "Check spelling" msgstr "Pārbaudīt pareizrakstību" msgid "Always change focus to text input field" msgstr "Vienmēr fokusēties uz teksta ievades lauku" 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." msgid "Appearance" msgstr "Izskats" msgid "Use custom list font:" msgstr "" msgid "Use custom text fields font:" msgstr "" msgid "Change UI language" msgstr "Mainīt lietojumprogrammas valodu" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions msgid "(requires Windows 8 or newer)" msgstr "(nepieciešama Windows 8 vai jaunāka)" msgid "General" msgstr "Vispārīgi" msgid "Use translation memory" msgstr "Izmantot tulkojumu atmiņu" msgid "Manage…" msgstr "Pārvaldīt…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "" 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 "" msgid "Stored translations:" msgstr "Saglabāti tulkojumi:" msgid "Database size on disk:" msgstr "Datubāzes lielums:" msgid "Import Translation Files…" msgstr "Importēt tulkojuma failus…" msgid "Import translation files…" msgstr "Importēt tulkojuma failus…" msgid "Import From TMX…" msgstr "Importēt no TMX…" msgid "Import from TMX…" msgstr "Importēt no TMX…" msgid "Export To TMX…" msgstr "Eksportēt uz TMX…" 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). msgid "Reset" msgstr "Atiestatīt" msgid "Select translation files to import" msgstr "" msgid "Translation Memory" msgstr "Tulkojumu atmiņa" msgid "Importing translations…" msgstr "Importē tulkojumus…" #, c-format msgid "Error loading translation file “%s”." msgstr "" msgid "Finalizing…" msgstr "" msgid "Select TMX files to import" msgstr "" msgid "TMX Files" msgstr "TMX faili" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "" msgid "Import error" msgstr "" msgid "Export as…" msgstr "Eksportēt kā…" msgid "Exporting translations…" msgstr "" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "" msgid "Export error" msgstr "Eksportēšanas kļūda" msgid "Reset translation memory" msgstr "" msgid "Are you sure you want to reset the translation memory?" msgstr "" 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. msgid "TM" msgstr "" msgid "" "Source code extractors are used to find translatable strings in the source " "code files and extract them so that they can be translated." msgstr "" msgid "Custom Extractors:" msgstr "" msgid "Custom extractors:" msgstr "" msgid "GNU gettext" msgstr "GNU gettext" 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.)." msgid "Delete extractor" msgstr "" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "" msgid "Extractors" msgstr "" msgid "Accounts" msgstr "Konti" msgid "Automatically check for updates" msgstr "Automātiski meklēt atjauninājumus" msgid "Include beta versions" msgstr "Iekļaut beta versijas" 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." msgid "Updates" msgstr "Atjauninājumi" msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" msgid "Line endings:" msgstr "" msgid "Unix (recommended)" msgstr "Unix (ieteicamais)" msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "" msgid "Preserve formatting of existing files" msgstr "" msgid "Advanced" msgstr "Papildu" msgid "Settings" msgstr "" msgid "Preparing strings…" msgstr "" msgid "Pre-translating from translation memory…" msgstr "" #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgid "Pre-translating…" msgstr "" 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. msgid "Pre-translate" msgstr "" msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" msgid "Cannot pre-translate from unknown language." msgstr "" msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" msgid "Only fill in exact matches" msgstr "" msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" msgid "Don’t mark exact matches as needing work" msgstr "" 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 "" msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "" msgstr[1] "" msgstr[2] "" msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" msgid "No entries could be pre-translated." msgstr "" msgid "" "The TM doesn’t contain any strings similar to the content of this file. It " "is only effective for semi-automatic translations after Poedit learns enough " "from files that you translated manually." msgstr "" msgid "Cancelling…" msgstr "" msgid "Drag Folders or Files Here" msgstr "" msgid "Drag folders or files here" msgstr "" msgid "Add Folders…" msgstr "Pievienot mapes…" msgid "Add folders…" msgstr "Pievienot mapes…" msgid "Add Files…" msgstr "Pievienot failus…" msgid "Add files…" msgstr "Pievienot failus…" msgid "Add Wildcard…" msgstr "" msgid "Add wildcard…" msgstr "" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) msgid "Reveal in Finder" msgstr "" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" msgid "Show in Explorer" msgstr "" msgid "Show in Folder" msgstr "" msgid "Paths" msgstr "Ceļi" msgid "Excluded paths" msgstr "" msgid "Advanced extraction settings" msgstr "" msgid "Extract notes for translators from:" msgstr "" msgid "Comments prefixed with:" msgstr "" msgid "All comments" msgstr "Visi komentāri" msgid "Additional xgettext flags:" msgstr "" msgid "Additional keywords" msgstr "" msgid "Name of the project the translation is for" msgstr "" msgid "Team name and email address or URL" msgstr "" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "piem. nplurals=2; plural=(n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (ieteicamais)" msgid "Please save the file first. This section cannot be edited until then." msgstr "" msgid "Placeholders correctness" msgstr "" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "" #, c-format msgid "Superfluous placeholder “%s” that isn’t in source text." msgstr "" msgid "Plural form translations" msgstr "" msgid "Not all plural forms are translated." msgstr "" msgid "Inconsistent upper/lower case" msgstr "" msgid "The translation should start as a sentence." msgstr "" msgid "The translation should start with a lowercase character." msgstr "" msgid "Inconsistent whitespace" msgstr "" msgid "The translation doesn’t start with a space." msgstr "" msgid "The translation starts with a space, but the source text doesn’t." msgstr "" msgid "The translation is missing a newline at the end." msgstr "" msgid "The translation ends with a newline, but the source text doesn’t." msgstr "" msgid "The translation is missing a space at the end." msgstr "" msgid "The translation ends with a space, but the source text doesn’t." msgstr "" msgid "Punctuation checks" msgstr "" #, c-format msgid "The translation should end with “%s”." msgstr "" #, c-format msgid "The translation should not end with “%s”." msgstr "" #, c-format msgid "The translation ends with “%s”, but the source text ends with “%s”." msgstr "" msgid "Cloud" msgstr "" msgid "Clear Menu" msgstr "" msgid "Clear menu" msgstr "" msgid "Comment:" msgstr "Komentārs:" msgid "Update" msgstr "" msgid "&Delete" msgstr "&Dzēst" msgid "Delete the comment" msgstr "" msgid "Edit project" msgstr "Rediģēt projektu" msgid "Project name:" msgstr "Projekta nosaukums:" msgid "Browse" msgstr "Pārlūkot" msgid "Add directory to the list" msgstr "Pievienot mapi sarakstam" msgid "OK" msgstr "Labi" msgid "&File" msgstr "&Fails" msgid "&New…" msgstr "&Jauns…" msgid "New from &POT/PO file…" msgstr "Jauns no &POT/PO faila…" msgid "New From &POT/PO File…" msgstr "Jauns no &POT/PO faila…" msgid "&Open…" msgstr "&Atvērt…" msgid "Open Recent" msgstr "" msgid "Open recent" msgstr "" msgid "Open cloud translation…" msgstr "" msgid "Open Cloud Translation…" msgstr "" msgid "&Start window" msgstr "" msgid "&Start Window" msgstr "" msgid "Catalogs &manager" msgstr "Katalogu &pārvaldnieks" msgid "Catalogs &Manager" msgstr "Katalogu &pārvaldnieks" msgid "&Close" msgstr "Ai&zvērt" msgid "&Save" msgstr "&Saglabāt" msgid "Save &as…" msgstr "Saglabāt &kā…" msgid "Save &As…" msgstr "Saglabāt &kā…" msgid "Compile to MO…" msgstr "Kompilēt uz MO…" msgid "E&xport to HTML…" msgstr "" msgid "Check for updates…" msgstr "Meklēt atjauninājumus…" msgid "Settings…" msgstr "" msgid "&Preferences" msgstr "&Iestatījumi" msgid "E&xit" msgstr "I&ziet" msgid "Quit" msgstr "Iziet" msgid "Copy from singular" msgstr "Kopēt vienskaitļa formu" msgid "Copy From Singular" msgstr "Kopēt vienskaitļa formu" msgid "Translation needs &work" msgstr "" msgid "Translation Needs &Work" msgstr "" msgid "Edit &comment" msgstr "Rediģēt &komentāru" msgid "Edit &Comment" msgstr "Rediģēt &komentāru" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "Ieteikumi" msgid "&Find…" msgstr "&Atrast…" msgid "Replace…" msgstr "Aizstāt…" msgid "Find next" msgstr "Atrast nākamo" msgid "Find previous" msgstr "Atrast iepriekšējo" msgid "Find and Replace…" msgstr "Atrast un aizstāt…" msgid "Find Next" msgstr "Meklēt komentāros" msgid "Find Previous" msgstr "Atrast iepriekšējo" msgid "Show string &ID" msgstr "Rādīt rindas &ID" msgid "Show String &ID" msgstr "Rādīt rindas &ID" msgid "Show warnings" msgstr "Rādīt brīdinājumus" msgid "Show Warnings" msgstr "Rādīt brīdinājumus" msgid "Sort by &file order" msgstr "Kārtot pēc &faila secības" msgid "Sort by &File Order" msgstr "Kārtot pēc &faila secības" msgid "Sort by &source" msgstr "Kārtot pēc a&vota" msgid "Sort by &Source" msgstr "Kārtot pēc a&vota" msgid "Sort by &translation" msgstr "Kārtot pēc &tulkojuma" msgid "Sort by &Translation" msgstr "Kārtot pēc &tulkojuma" msgid "&Group by context" msgstr "&Grupēt pēc konteksta" msgid "&Group By Context" msgstr "&Grupēt pēc konteksta" msgid "Entries with errors first" msgstr "Vispirms ierakstus ar kļūdām" msgid "Entries with Errors First" msgstr "Vispirms ierakstus ar kļūdām" msgid "&Untranslated entries first" msgstr "Vispirms neizt&ulkotos ierakstus" msgid "&Untranslated Entries First" msgstr "Vispirms neizt&ulkotos ierakstus" msgid "&Show code occurrences" msgstr "" msgid "&Show Code Occurrences" msgstr "" msgid "Show sidebar" msgstr "Rādīt sānjoslu" msgid "Show status bar" msgstr "Rādīt statusa joslu" msgid "&Translation" msgstr "" msgid "&Update from source code" msgstr "Atja&unot no avota koda" msgid "&Update from Source Code" msgstr "Atja&unot no avota koda" msgid "Update from &POT file…" msgstr "Atjaunot no &POT faila…" msgid "Update from &POT File…" msgstr "Atjaunot no &POT faila…" msgid "Sync with Crowdin" msgstr "Sinhronizēt ar Crowdin" msgid "Pre-&translate…" msgstr "" msgid "&Validate translations" msgstr "&Pārbaudīt tulkojumu" msgid "&Validate Translations" msgstr "&Pārbaudīt tulkojumu" msgid "Remove Same-as-Source Translations" msgstr "" msgid "&Purge deleted translations" msgstr "&Iztīrīt dzēstos tulkojumus" msgid "&Purge Deleted Translations" msgstr "Iztīrīt &dzēstos tulkojumus" msgid "&Properties…" msgstr "&Rekvizīti…" msgid "&Go" msgstr "&Iet" msgid "&Done and next" msgstr "Pa&beigt un pāriet uz nākamo" msgid "&Done and Next" msgstr "Pa&beigt un pāriet uz nākamo" msgid "Previously edited" msgstr "" msgid "Previously Edited" msgstr "" msgid "&Previous translation" msgstr "I&priekšējais tulkojums" msgid "&Previous Translation" msgstr "I&priekšējais tulkojums" msgid "&Next translation" msgstr "&Nākamais tulkojums" msgid "&Next Translation" msgstr "&Nākamais tulkojums" msgid "P&revious unfinished" msgstr "Iep&riekšejais nepabeigtais" msgid "P&revious Unfinished" msgstr "Iep&riekšejais nepabeigtais" msgid "Ne&xt unfinished" msgstr "Nā&kamais nepabeigtais" msgid "Ne&xt Unfinished" msgstr "Nā&kamais nepabeigtais" msgid "Previous plural form" msgstr "Iepriekšējā daudzskaitļa forma" msgid "Previous Plural Form" msgstr "Iepriekšējā daudzskaitļa forma" msgid "Next plural form" msgstr "Nākamā daudzskaitļa forma" msgid "Next Plural Form" msgstr "Nākamā daudzskaitļa forma" msgid "&Online help" msgstr "&Tiešsaistes palīdzība" msgid "&Online Help" msgstr "&Tiešsaistes palīdzība" msgid "&GNU gettext manual" msgstr "&GNU gettext rokasgrāmata" msgid "&GNU gettext Manual" msgstr "&GNU gettext rokasgrāmata" msgid "&About Poedit" msgstr "P&ar Poedit" msgid "&About" msgstr "P&ar..." msgid "Extractor setup" msgstr "" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Paplašinājumu saraksts, atdalīts ar semikoliem (piem., *.cpp;*.h):" msgid "Invocation:" msgstr "Izsaukšana:" msgid "Command to extract translations:" msgstr "" 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 "" msgid "An item in keywords list:" msgstr "Vienums atslēgvārdu sarakstā:" 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." msgid "An item in input files list:" msgstr "Vienums ievades failu sarakstā:" #, 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." msgid "Source code charset:" msgstr "Pirmkoda simbolkopa:" #, 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." msgid "Translation Properties" msgstr "Tulkojuma rekvizīti" msgid "Project name and version:" msgstr "Projekta nosaukums un versija:" msgid "Language team:" msgstr "Tulkotāju komanda:" msgid "Plural forms:" msgstr "Daudzskaitļa formas:" msgid "Use default rules for this language" msgstr "" msgid "Use custom expression" msgstr "" msgid "Learn about plural forms" msgstr "Vairāk par daudzskaitļa formām" msgid "Charset:" msgstr "Simbolkopa:" msgid "Advanced Extraction Settings…" msgstr "" msgid "Advanced extraction settings…" msgstr "" msgid "Translation properties" msgstr "Tulkojuma rekvizīti" msgid "Sources Paths" msgstr "" msgid "Sources paths" msgstr "Avotu ceļi" msgid "Extract text from source files in the following directories:" msgstr "Izvilkt tekstu no avotu failiem sekojošajās mapēs:" msgid "Base path:" msgstr "Bāzes ceļš:" msgid "Sources Keywords" msgstr "" msgid "Sources keywords" msgstr "Avotu atslēgvārdi" 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:" msgid "Also use default keywords for supported languages" msgstr "" msgid "Learn about gettext keywords" msgstr "Vairāk par gettext atslēgvārdiem" msgid "Update summary" msgstr "Atjaunot kopsavilkumu" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" msgid "New strings" msgstr "Jaunas virknes" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" msgid "Obsolete strings" msgstr "Novecojušās virknes" msgid "(0 new, 0 obsolete)" msgstr "(0 jaunas, 0 novecojušas)" msgid "Open" msgstr "" msgid "Open file" msgstr "" msgid "Save file" msgstr "" msgid "Validate" msgstr "Pārbaudīt" msgid "Check for errors in the translation" msgstr "Pārbaudīt, vai tulkojumā nav kļūdu" msgid "Update from code" msgstr "" msgid "Update from Code" msgstr "" msgid "Update from source code" msgstr "" msgid "Sidebar" msgstr "Sānjosla" 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. msgid "Previous source text" msgstr "" msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" msgid "Notes for translators" msgstr "" msgid "Comment" msgstr "" msgid "Add comment" msgstr "Pievienot komentāru" msgid "Add Comment" msgstr "Pievienot komentāru" msgid "Delete From Translation Memory" msgstr "Dzēst no tulkojumu atmiņas" msgid "Delete from translation memory" msgstr "Dzēst no tulkojumu atmiņas" msgid "Translation suggestions" msgstr "" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). 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). msgid "No Matches Found" msgstr "Nav atrasta neviena atbilstība" msgid "This string was found in Poedit’s translation memory." msgstr "" msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" msgid "The TMX file is malformed." msgstr "" msgid "No translations were found in the TMX file." msgstr "" #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Tulkojumu atmiņas datubāze ir bojāta: %s (%d)." #, c-format msgid "Translation memory error: %s (%d)." msgstr "Tulkojumu atmiņas kļūda: %s (%d)." msgid "Cannot create temporary directory." msgstr "Nevar izveidot pagaidu datu mapi." msgid "There are no translations. That’s unusual." msgstr "" msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "Translators typically use PO template files (POTs) prepared for them by the " "developer." msgstr "" msgid "(Learn more about GNU gettext)" msgstr "" msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" msgid "Update from POT" msgstr "Atjaunināt no POT faila" msgid "Take translatable strings from an existing POT template." msgstr "" msgid "" "You can also extract translatable strings directly from the source code:" msgstr "" msgid "Extract from sources" msgstr "" msgid "Configure source code extraction in Properties." msgstr "" #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #, c-format msgid "Version %s" msgstr "Versija %s" msgid "Create new" msgstr "" msgid "Create new translation from POT template." msgstr "" msgid "Browse files" msgstr "" msgid "Open and edit translation files." msgstr "" msgid "Translate cloud project" msgstr "" msgid "Collaborate with other people online." msgstr "" msgid "Recent files" msgstr "" msgid "Sync" msgstr "" 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") #, 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. #, c-format msgid "%s Preferences" msgstr "%s iestatījumi" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "Iziet no %s" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "Iestatījumi…" msgid "Preferences..." msgstr "Iestatījumi..." #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "" msgid "&Apply" msgstr "" msgid "Apply" msgstr "Lietot" msgid "&Back" msgstr "" msgid "Back" msgstr "" msgid "&Cancel" msgstr "" msgid "&Clear" msgstr "" msgid "Clear" msgstr "" msgid "Copy" msgstr "Kopēt" msgid "Cu&t" msgstr "" msgid "Cut" msgstr "Izgriezt" msgid "Edit" msgstr "Rediģēt" msgid "&Quit" msgstr "" msgid "Help" msgstr "Palīdzība" msgid "&New" msgstr "" msgid "New" msgstr "Jauns" msgid "&No" msgstr "&Nē" msgid "No" msgstr "Nē" msgid "&OK" msgstr "&Labi" msgid "Open…" msgstr "Atvērt…" msgid "&Open..." msgstr "&Atvērt..." msgid "Open..." msgstr "Atvērt..." msgid "&Paste" msgstr "" msgid "Paste" msgstr "Ielīmēt" msgid "Preferences" msgstr "Iestatījumi" msgid "&Redo" msgstr "" msgid "Refresh" msgstr "Atsvaidzināt" msgid "&Save as" msgstr "&Saglabāt kā" msgid "Save as" msgstr "Saglabāt kā" msgid "Select &All" msgstr "&Atlasīt visu" msgid "Select All" msgstr "Atlasīt visu" msgid "&Undo" msgstr "" msgid "&Yes" msgstr "&Jā" msgid "Yes" msgstr "Jā" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "Up" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "Down" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "Left" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "Right" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "shift" poedit-3.5/locales/et.po0000644000175100001770000017356014664354153012212 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "Peida see teatis" msgid "Don’t Show Again" msgstr "Ära näita uuesti" msgid "Don’t show again" msgstr "Ära kuva uuesti" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(Uus: %i, vananenud: %i)" msgid "Collecting source files…" msgstr "Lähtefailide kogumine…" msgid "Extracting translatable strings…" msgstr "Tõlgitavate stringide ekstraheerimine…" msgid "Failed to load file with extracted translations." msgstr "Eemaldatud tõlgetega faili ei õnnestunud laadida." msgid "Merging differences…" msgstr "Erinevuste ühendamine…" msgid "Updating translations" msgstr "Tõlgete uuendamine" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "Faili \"%s\" ei saa avada." msgid "Invalid file" msgstr "Vigane fail" #, c-format msgid "Malformed header: “%s”" msgstr "Vigane päis: \"%s\"" msgid "PO Translation Files" msgstr "PO tõlkefailid" msgid "POT Translation Templates" msgstr "POT tõlkemallid" msgid "XLIFF Translation Files" msgstr "XLIFF tõlkefailid" msgid "JSON Translation Files" msgstr "JSON-i tõlkefailid" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "Flutteri tõlkefailid" msgid "All Translation Files" msgstr "Kõik tõlkefailid" msgid "The file is in a format not recognized by Poedit." msgstr "Fail on formaadis mida Poedit ei toeta." 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." #, c-format msgid "Reading file content failed with the following error: %s" msgstr "Faili sisu lugemine katkes jrgmise vea tõttu: %s" #, 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." #, c-format msgid "Couldn’t save file %s." msgstr "Faili %s pole võimalik salvestada." msgid "Screenshots:" msgstr "Ekraanipildid:" #, 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." #, 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)." 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" msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" "Katkenud PO-fail: mitmuse vorm msgstr, mida kasutatakse ilma mitmuseta " "msgid_plural" msgid "Couldn’t load the file, it is probably damaged." msgstr "Ei saadud laadida faili, see on tõenäoliselt vigane." 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." 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)." #, 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." msgid "Error saving file" msgstr "Tõrge faili salvestamisel" #, c-format msgid "“%s” is not a valid POT file." msgstr "'%s' pole korrektne POT fail." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "XLIFF faili laadimise viga: %s" #, c-format msgid "unsupported version (%s)" msgstr "toetamata versioon (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML msgid "Broken markup in translation string." msgstr "Katkestatud märgistus tõlkestringis." msgid "(Use default language)" msgstr "(Kasuta vaikekeelt)" msgid "Language selection" msgstr "Keelevalik" msgid "Select your preferred language" msgstr "Vali enda meeliskeel" msgid "You must restart Poedit for this change to take effect." msgstr "Selle muudatuse jõustumiseks peab Poedit-i taaskäivitama." msgid "Add Account" msgstr "Lisa konto" msgid "Add account" msgstr "Lisa konto" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "Lisateave %s kohta" 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." msgid "How does cloud sync work?" msgstr "Kuidas pilvega sünkimine töötab?" msgid "Account" msgstr "Konto" msgid "(not signed in)" msgstr "(pole sisse loginud)" msgid "File" msgstr "Fail" msgid "Open cloud translation" msgstr "Ava pilvetõlge" msgid "Manage accounts" msgstr "Halda kontosid" msgid "Project:" msgstr "Projekt:" msgid "Language:" msgstr "Keel:" msgid "Sign in to Cloud Account" msgstr "Logi pilvekontole sisse" msgid "Sign in to cloud account" msgstr "Logi pilvekontole sisse" msgid "No translation projects listed in your account." msgstr "Teie kontol pole ühtegi tõlkeprojekti." msgid "Downloading latest translations…" msgstr "Viimaste tõlgete allalaadimine…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #, c-format msgid "Sign in to %s" msgstr "Logige sisse rakendusse %s" msgid "Syncing" msgstr "Sünkroniseerimine" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, 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. #, c-format msgid "Uploading translations to %s failed." msgstr "Tõlgete üleslaadimine kohta %s ebaõnnestus." msgid "Syncing error" msgstr "Sünkrooniseerimise tõrge" msgid "Add" msgstr "Lisa" msgid "Unknown Crowdin error." msgstr "Tundmatu Crowdini viga." msgid "Not authorized, please sign in again." msgstr "Pole lubatud, palun logi uuesti sisse." msgid "Downloading translations is disabled in this project." msgstr "Tõlgete allalaadimine on selles projektis keelatud." msgid "Sign In" msgstr "Logi sisse" msgid "Sign in" msgstr "Logi sisse" msgid "Sign Out" msgstr "Logi Välja" msgid "Sign out" msgstr "Logi välja" msgid "Learn more about Crowdin" msgstr "Lisateave Crowdini kohta" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" "Crowdin on veebipõhine tõlkimise platvorm ja koostööd võimaldav " "tõlketööriist." msgid "Waiting for authentication…" msgstr "Autentimise ootamine…" msgid "Updating user information…" msgstr "Kasutaja info uuendamine…" msgid "Sign in to Crowdin" msgstr "Logi Crowdinisse sisse" msgid "Syncing with Crowdin failed." msgstr "Crowdiniga sünkronimine ebaõnnestus." msgid "Crowdin error" msgstr "Crowdini tõrge" msgid "Uploading translations…" msgstr "Tõlgete üles laadimine…" msgid "&Copy" msgstr "&Kopeeri" msgid "Learn more" msgstr "Uuri lähemalt" msgid "&Help" msgstr "A&bi" msgid "MO files can’t be directly edited in Poedit." msgstr "MO faile ei saa otse Poeditis muuta." msgid "Error opening file" msgstr "Tõrge faili avamisel" 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." msgid "don’t delete temporary files (for debugging)" msgstr "ajutisi faile ei kustutata (silumiseks)" msgid "handle a poedit:// URI" msgstr "poedit:// URL-i käsitlemine" msgid "go to item at given line number" msgstr "mine antud real olevale kirjele" msgid "Failed to communicate with Poedit process." msgstr "Poediti protsessiga suhtlemine ebaõnnestus." #, c-format msgid "Unhandled exception occurred: %s" msgstr "Erand, millega ei osatud midagi peale hakata: %s" msgid "Select translation template" msgstr "Vali tõlkemall" msgid "Select translation file" msgstr "Vali tõlke fail" msgid "Poedit is an easy to use translation editor." msgstr "Poedit on lihtne tõlkimise abivahend." msgid "You can’t drop more than one file on Poedit window." msgstr "Poedit aknasse saab lohistada vaid ühe faili." #, c-format msgid "File “%s” is not a translation file." msgstr "Fail “%s” ei ole tõlke fail." #, c-format msgid "File “%s” doesn’t exist." msgstr "Faili \"%s\" pole olemas." 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". #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "Õigekirjakontroll on keelatud, kuna %s sõnastikku pole paigaldatud." msgid "Install" msgstr "Paigalda" #, c-format msgid "The file “%s” has been changed by another application." msgstr "Faili “%s” on teise rakenduse poolt muudetud." msgid "Reload file" msgstr "Laadi fail uuesti" 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." msgid "Ignore" msgstr "Ignoreeri" msgid "Reload File" msgstr "Lae fail uuesti" msgid "The file has been modified. Do you want to save changes?" msgstr "Faili on muudetud. Kas soovid muudatusi salvestada?" msgid "Save changes" msgstr "Salvesta muudatused" msgid "Your changes will be lost if you don’t save them." msgstr "Tehtud muudatused lähevad kaotsi, kui neid ei salvestata." msgid "Save" msgstr "Salvesta" msgid "Do&n’t save" msgstr "Ära salvesta" msgid "Don’t Save" msgstr "Ära salvesta" msgid "The changes made by the other application will be lost if you save." msgstr "Teise rakenduse tehtud muudatused lähevad salvestamisel kaduma." msgid "Cancel" msgstr "Katkesta" msgid "Save Anyway" msgstr "Salvesta ikkagi" msgid "Save anyway" msgstr "Salvesta ikkagi" msgid "Save as…" msgstr "Salvesta kui…" msgid "Compile to…" msgstr "Kompileeri…" msgid "Compiled Translation Files" msgstr "Kompileeritud tõlkefailid" msgid "Export to HTML…" msgstr "" msgid "HTML Files" msgstr "HTML-failid" #, c-format msgid "In: %s" msgstr "Failis: %s" msgid "Source code not available." msgstr "Lähtekood pole saadaval." msgid "Updating failed" msgstr "Uuendamine ebaõnnestus" 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." msgid "Permission denied." msgstr "Õigused puuduvad." 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. 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. 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." msgid "Translation entries in the file are probably incorrect." msgstr "Tõlkekirjed selles failis pole ilmselt korrektsed." msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "" "Faili uuendamine ebaõnnestus. Lisainfo jaoks kliki nuppu 'Lisainfo >>'." msgid "Open translation template" msgstr "Ava tõlkemall" #, 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." msgid "Validation results" msgstr "Kontrolli tulemused" 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." msgid "The file was saved safely." msgstr "Fail on salvestatud." 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." 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." 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." msgid "The file cannot be compiled into the MO format and used." msgstr "Faili ei saa kasutada ja MO failiks kompileerida." msgid "No problems with the translation found." msgstr "Tõlgetest ei leitud vigu." #, 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 kirje pole veel tõlgitud." msgstr[1] "Tõlge on kasutamiseks valmis, kuid %d kirjet pole veel tõlgitud." msgid "The translation is ready for use." msgstr "Tõlge on kasutamiseks valmis." #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "Poedit parandas automaatselt vigase sisu failis “%s”." msgid "" "The file contained duplicate items, which is not allowed in PO files and " "would prevent the file from being used. Poedit fixed the issue, but you " "should review translations of any items marked as 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." msgid "Language of the translation isn’t set." msgstr "Tõlke keel on määramata." msgid "Set Language" msgstr "Määra keel" 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)." 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." msgid "Language of the translation is the same as source language." msgstr "Tõlke keel on sama kui lähtekeel." msgid "Fix Language" msgstr "Paranda keel" msgid "Fix language" msgstr "Paranda keel" 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." 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" msgid "Required header Plural-Forms is missing." msgstr "Vajalik päis Plural-Forms (mitmusvormid) puudub." #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Süntaksi viga Plural-Forms päises (\"%s\")." msgid "Fix the Header" msgstr "Paranda päis" 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". #, 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.")" msgid "Review" msgstr "Vaata üle" msgid "Would you like to use English for source text?" msgstr "Kas soovid lähteteksti jaoks kasutada inglise keelt?" #, 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" msgid "Load English" msgstr "Lae inglise keelest" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Tõlgitud: %d / %d (%d %%)" #, c-format msgid "Remaining: %d" msgstr "Jäänud: %d" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d viga" msgstr[1] "%d viga" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d kirje" msgstr[1] "%d kirjet" msgid " (unsaved)" msgstr " (salvestamata)" msgid " (modified)" msgstr " (muudetud)" #, c-format msgid "Failed to update translation memory: %s" msgstr "Tõlkemälu uuendamine ebaõnnestus: %s" msgid "Remove same-as-source translations" msgstr "" msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" msgid "Keep" msgstr "Säilita" msgid "Remove" msgstr "" msgid "Purge deleted translations" msgstr "Kustutatud tõlgete puhastamine" msgid "Do you want to remove all translations that are no longer used?" msgstr "Kas tahad eemaldada tõlked, mida enam ei kasutata?" 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." msgid "Purge" msgstr "Puhasta" msgid "Copy from source text" msgstr "Lähteteksti kopeerimine" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "Tõlke eemaldamine" msgid "Clear Translation" msgstr "Eemalda tõlge" msgid "Edit comment" msgstr "Kommentaari muutmine" msgid "Edit Comment" msgstr "Kommentaari muutmine" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "Koodi esinemised" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "Koodi esinemised" msgid "Hide Sidebar" msgstr "Peida külgriba" msgid "Show Sidebar" msgstr "Näita külgriba" msgid "Hide Status Bar" msgstr "Peida olekuriba" msgid "Show Status Bar" msgstr "Näita olekuriba" msgid "String length in characters: translation | source" msgstr "Stringi pikkus tähemärkides: tõlge | allikas" msgid "String length in characters" msgstr "Stringi pikkus tähemärkides" msgid "Source text" msgstr "Originaaltekst" msgid "Singular" msgstr "Ainsus" msgid "Plural" msgstr "Mitmus" msgid "Translation" msgstr "Tõlge" msgid "Pre-translated" msgstr "Eel-tõlge" 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. msgid "Needs work" msgstr "Vajab tööd" 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." msgid "Create new translation" msgstr "Loo uus tõlge" 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 msgid "Source text ID" msgstr "Lähteteksti ID" msgid "Everything" msgstr "Kõik" #, c-format msgid "Form %i" msgstr "%i vorm" #, c-format msgid "Form %i (unused)" msgstr "Vorm %i (kasutamata)" msgid "Zero" msgstr "Null" msgid "One" msgstr "Üks" msgid "Two" msgstr "Kaks" msgid "Other" msgstr "Muu" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, c-format msgid "String context: %s" msgstr "Stringi kontekst: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #, c-format msgid "String identifier: %s" msgstr "Stringi identifikaator: %s" #, c-format msgid "%s Format" msgstr "%s formaadis" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "%s formaadis" #, c-format msgid "Translation — %s" msgstr "Tõlge — %s" msgid "ID" msgstr "ID" #, c-format msgid "Source text — %s" msgstr "Lähtetekst — %s" msgid "unknown language" msgstr "tundmatu keel" #, c-format msgid "Network error: %s (%d)" msgstr "Võrguviga: %s (%d)" msgid "Unknown error" msgstr "Tundmatu viga" #, c-format msgid "Failed command: %s" msgstr "Käsuviga: %s" msgid "Failed to merge gettext catalogs." msgstr "Viga teksti ühildumisel antud kataloogis." msgid "Open in Editor" msgstr "Ava redaktoris" msgid "Open in editor" msgstr "Ava redaktoris" 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." msgid "No usage information" msgstr "Kasutamise infot pole" #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d koodi esinemine" msgstr[1] "%d koodi esinemist" msgid "Source code not found" msgstr "Lähtekoodi ei leitud" 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." msgid "File cannot be opened" msgstr "Faili ei saa avada" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "Poedit ei saanud faili “%s” avada." msgid "Find" msgstr "Leia" msgid "Replace" msgstr "Asenda" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "Valikud" msgid "Ignore case" msgstr "Ignoreeri tähesuurust" msgid "Wrap around" msgstr "Alusta otsast peale" msgid "Whole words only" msgstr "Ainult terved sõnad" msgid "Find in source texts" msgstr "Otsi lähtetekstidest" msgid "Find in translations" msgstr "Otsi tõlgetest" msgid "Find in comments" msgstr "Otsitakse kommentaaridest" msgid "Close" msgstr "Sulge" msgid "Replace &All" msgstr "&Asenda kõik" msgid "Replace &all" msgstr "&Asenda kõik" msgid "&Replace" msgstr "A&senda" msgid "< &Previous" msgstr "< &Eelmine" msgid "&Next >" msgstr "&Järgmine >" msgid "String to find" msgstr "Otsisõna" msgid "Replacement string" msgstr "Asenda sellega" #, c-format msgid "Cannot execute program: %s" msgstr "Programmi pole võimalik käivitada: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "Keele nimi või kood" msgid "Translation Language" msgstr "Tõlkekeel" msgid "Language of the translation:" msgstr "Keel, millesse tõlgitakse:" msgid "All strings" msgstr "Kõik stringid" msgid "Couldn’t download Localazy project details." msgstr "Localazy projekti üksikasade allalaadimine ebaõnnestus." msgid "There was an error when uploading translations to Localazy." msgstr "Tõlgete Localazysse üleslaadimisel tekkis tõrge." msgid "Projects" msgstr "Projektid" 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." msgid "Add Project" msgstr "Lisa projekt" msgid "Add project" msgstr "Lisa projekt" msgid "Poedit - Catalogs manager" msgstr "Poedit - Kataloogihaldur" msgid "Edit…" msgstr "Redigeeri…" msgid "Create new translations project" msgstr "Loo uus tõlkeprojekt" msgid "Delete the project" msgstr "Kustuta projekt" msgid "Edit the project" msgstr "Projekti muutmine" msgid "Update all" msgstr "Uuenda kõik" msgid "Update all catalogs in the project" msgstr "Uuenda kõiki projekti katalooge" msgid "Total" msgstr "Kokku" msgid "Untrans" msgstr "Tõlkimata" msgctxt "column/row header" msgid "Needs Work" msgstr "Vajab tööd" msgid "Errors" msgstr "Vead" msgid "Last modified" msgstr "Viimati muudetud" msgid "Select directory" msgstr "Kataloogi valimine" msgid "Directories:" msgstr "Kataloogid:" msgid "" msgstr "" #, c-format msgid "Do you want to delete project “%s”?" msgstr "Kas soovite projekti “%s” kustutada?" msgid "Delete project" msgstr "Kustuta projekt" msgid "Deleting the project will not delete any translation files." msgstr "Projekti kustutamine ei kustuta ühtegi tõlkefaili." msgid "Confirmation" msgstr "Kinnitus" msgid "Update all catalogs in this project?" msgstr "Kas värskendada selle projekti kõiki katalooge?" msgid "Performs update from source code on all files in the project." msgstr "Värskendab lähtekoodist kõiki projekti faile." msgid "Check for Updates…" msgstr "Uuenduste kontroll…" msgid "Catalogs Manager" msgstr "Kataloogide haldamine" msgid "&Preferences…" msgstr "&Eelistused…" msgid "&Edit" msgstr "&Redigeerimine" msgid "Undo" msgstr "Taasta" msgid "Redo" msgstr "Korda" msgid "Paste and Match Style" msgstr "Aseta ja sobita stiil" msgid "Delete" msgstr "Kustuta" msgid "Spelling and Grammar" msgstr "Õigekiri ja grammatika" msgid "Show Spelling and Grammar" msgstr "Näita õigekirja ja grammatikat" msgid "Check Document Now" msgstr "Kontrolli dokumenti kohe" msgid "Check Spelling While Typing" msgstr "Kontrolli õigekirja kirjutamise ajal" msgid "Check Grammar With Spelling" msgstr "Kontrolli grammatikat koos õigekirja kontrollimisega" msgid "Correct Spelling Automatically" msgstr "Paranda õigekirja automaatselt" msgid "Substitutions" msgstr "Asendused" msgid "Show Substitutions" msgstr "Näita asendusi" msgid "Smart Copy/Paste" msgstr "Nutikas kopeerimine ja asetamine" msgid "Smart Quotes" msgstr "Nutikad jutumärkid" msgid "Smart Dashes" msgstr "Nutikad mõttekriipsud" msgid "Smart Links" msgstr "Nutikad lingid" msgid "Text Replacement" msgstr "Teksti asendamine" msgid "Transformations" msgstr "Teisendused" msgid "Make Upper Case" msgstr "Tee suurtähtedeks" msgid "Make Lower Case" msgstr "Tee väiketähtedeks" msgid "Capitalize" msgstr "Suure algus tähega" msgid "Speech" msgstr "Kõne" msgid "Start Speaking" msgstr "Alusta rääkimist" msgid "Stop Speaking" msgstr "Lõpeta rääkimine" msgid "&View" msgstr "&Vaade" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Show Toolbar" msgstr "Näita tööriistariba" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Customize Toolbar…" msgstr "Kohanda tööriistariba…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Enter Full Screen" msgstr "Aktiveeri täisekraan" msgid "Window" msgstr "Aken" msgid "Minimize" msgstr "Minimeeri" msgid "Zoom" msgstr "Suurendus" msgid "Welcome to Poedit" msgstr "Tere tulemast Poediti" msgid "Bring All to Front" msgstr "Too kõik ette" msgid "Information about the translator" msgstr "Info tõlkija kohta" msgid "Name:" msgstr "Nimi:" msgid "Your Name" msgstr "Sinu nimi" msgid "Email:" msgstr "E-post:" msgid "you@example.com" msgstr "sina@n2ide.com" 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." msgid "Editing" msgstr "Muutmine" msgid "Automatically compile MO file when saving" msgstr "Salvestamisel luuakse automaatselt MO fail" msgid "Show summary after updating files" msgstr "Näita pärast failide uuendamist kokkuvõtet" msgid "Check spelling" msgstr "Kontrolli õigekirja" msgid "Always change focus to text input field" msgstr "Fookus on alati tekstisisestusväljal" 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." msgid "Appearance" msgstr "Välimus" msgid "Use custom list font:" msgstr "Kasuta kohandatud loend fonti:" msgid "Use custom text fields font:" msgstr "Kasuta kohandatud teksti väljade fonti:" msgid "Change UI language" msgstr "Muuda kasutajaliidese keelt" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions msgid "(requires Windows 8 or newer)" msgstr "(nõuab Windows 8 või uuemat)" msgid "General" msgstr "Üldine" msgid "Use translation memory" msgstr "Kasuta tõlkemälu" msgid "Manage…" msgstr "Halda…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "Allikatest uuendamisel" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "hägus vaste failis" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "eel-tõlge tõlkemälust" 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." msgid "Stored translations:" msgstr "Salvestatud tõlked:" msgid "Database size on disk:" msgstr "Andmebaasi suurus kettal:" msgid "Import Translation Files…" msgstr "Impordi tõlkefailid…" msgid "Import translation files…" msgstr "Impordi tõlkefailid…" msgid "Import From TMX…" msgstr "Impordi TMX-ist…" msgid "Import from TMX…" msgstr "Impordi TMX-ist…" msgid "Export To TMX…" msgstr "Ekspordi TMX-i…" 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). msgid "Reset" msgstr "Lähtesta" msgid "Select translation files to import" msgstr "Vali tõlkefailid, mida importida" msgid "Translation Memory" msgstr "Tõlkemälu" msgid "Importing translations…" msgstr "Tõlgete importimine…" #, c-format msgid "Error loading translation file “%s”." msgstr "Viga tõlkefaili „%s” laadimisel." msgid "Finalizing…" msgstr "Lõpetamine…" msgid "Select TMX files to import" msgstr "Valige importimiseks TMX-failid" msgid "TMX Files" msgstr "TMX-failid" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "“%s” tõlkemälust importimine ebaõnnestus." msgid "Import error" msgstr "Tõrge importimisel" msgid "Export as…" msgstr "Ekspordi kui…" msgid "Exporting translations…" msgstr "Tõlgete eksportimine…" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "“%s” tõlkemälusse eksportimine ebaõnnestus." msgid "Export error" msgstr "Tõrge eksportimisel" msgid "Reset translation memory" msgstr "Nulli tõlkemälu" msgid "Are you sure you want to reset the translation memory?" msgstr "Oled sa kindel, et soovid tõlkemälu nullida?" 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. msgid "TM" msgstr "TM" msgid "" "Source code extractors are used to find translatable strings in the source " "code files and extract them so that they can be translated." msgstr "" "Lähtekoodi ekstraktoreid kasutatakse tõlgitavate tekstide leidmiseks " "lähtekoodist ning nende väljavalimiseks nii, et neid saaks tõlkida." msgid "Custom Extractors:" msgstr "Kohandatud Ekstraktorid:" msgid "Custom extractors:" msgstr "Kohandatud ekstraktorid:" msgid "GNU gettext" msgstr "GNU gettext" 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)." msgid "Delete extractor" msgstr "Kustuta ekstraktor" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "Oled sa kindel, et soovid kustutada ekstraktorit “%s”?" msgid "Extractors" msgstr "Ekstraktorid" msgid "Accounts" msgstr "Kontod" msgid "Automatically check for updates" msgstr "Kontrolli automaatselt uuendusi automaatselt" msgid "Include beta versions" msgstr "Kaasa beetaversioonid" 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." msgid "Updates" msgstr "Uuendused" 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." msgid "Line endings:" msgstr "Realõpud:" msgid "Unix (recommended)" msgstr "Unix (soovituslik)" msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "Reamurdmine:" msgid "Preserve formatting of existing files" msgstr "Säilite olemasolevate failide vorming" msgid "Advanced" msgstr "Lisavalikud" msgid "Settings" msgstr "" msgid "Preparing strings…" msgstr "Tekstide ettevalmistamine…" msgid "Pre-translating from translation memory…" msgstr "Eeltõlke tegemine tõlkemälust…" #, 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" msgid "Pre-translating…" msgstr "Eel-tõlkimine…" 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. msgid "Pre-translate" msgstr "Eel-tõlge" 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." msgid "Cannot pre-translate from unknown language." msgstr "Tundmatust keelest ei saa eeltõlget teha." 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." msgid "Only fill in exact matches" msgstr "Täida ainult täpsed vasted" 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." msgid "Don’t mark exact matches as needing work" msgstr "Ära märgi täpseid vasteid tööd vajavateks tõlgeteks" 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." 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." #, 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." 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." msgid "No entries could be pre-translated." msgstr "Ühtegi sissekannet ei saanud eel-tõlkida." 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." msgid "Cancelling…" msgstr "Tühistamine…" msgid "Drag Folders or Files Here" msgstr "Lohista kaustad või failid siia" msgid "Drag folders or files here" msgstr "Lohista kaustad või failid siia" msgid "Add Folders…" msgstr "Lisa kaustad…" msgid "Add folders…" msgstr "Lisa kaustad…" msgid "Add Files…" msgstr "Lisa failid…" msgid "Add files…" msgstr "Lisa failid…" msgid "Add Wildcard…" msgstr "Lisa metamärk…" 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) msgid "Reveal in Finder" msgstr "Leia Finderis" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" msgid "Show in Explorer" msgstr "Näita Exploreris" msgid "Show in Folder" msgstr "Näita kaustas" msgid "Paths" msgstr "Rajad" msgid "Excluded paths" msgstr "Välja jäetud kaustateed" msgid "Advanced extraction settings" msgstr "Ekstraktori seaded" msgid "Extract notes for translators from:" msgstr "Võta märkmed tõlkijatele selle sildi järelt:" msgid "Comments prefixed with:" msgstr "Kommentaarid eesliitega:" msgid "All comments" msgstr "Kõik kommentaarid" msgid "Additional xgettext flags:" msgstr "Täiendavad xgettext lipud:" msgid "Additional keywords" msgstr "Täiendavad märksõnad" msgid "Name of the project the translation is for" msgstr "Tõlgitava projekti nimi" msgid "Team name and email address or URL" msgstr "Meeskonna nimi ja e-posti aadress või link" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "nt. nplurals=2; plural=(n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (soovituslik)" 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." msgid "Placeholders correctness" msgstr "Kohatäite õigsus" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "Tõlkes puudub kohatäide „%s”." #, c-format msgid "Superfluous placeholder “%s” that isn’t in source text." msgstr "Üleliigne kohatäide „%s”, mida lähtetekstis pole." msgid "Plural form translations" msgstr "Mitmuse vorm tõlkes" msgid "Not all plural forms are translated." msgstr "Kõik mitmuse vormid pole tõlgitud." msgid "Inconsistent upper/lower case" msgstr "Vastuoluline suur/väike täht" msgid "The translation should start as a sentence." msgstr "Tõlge peaks algama nagu lause." msgid "The translation should start with a lowercase character." msgstr "Tõlge peaks algama väiketähega." msgid "Inconsistent whitespace" msgstr "Ebajärjekindel tühik" msgid "The translation doesn’t start with a space." msgstr "Tõlge ei alga tühikuga." 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." msgid "The translation is missing a newline at the end." msgstr "Tõlke lõpus puudub uue rea märk." 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." msgid "The translation is missing a space at the end." msgstr "Tõlke lõpus puudub tühik." 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." msgid "Punctuation checks" msgstr "Kirjavahemärkide kontrollid" #, c-format msgid "The translation should end with “%s”." msgstr "Tõlke peab lõppema \"%s\"-ga." #, c-format msgid "The translation should not end with “%s”." msgstr "Tõlke ei peaks lõppema \"%s\"-ga." #, 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”." msgid "Cloud" msgstr "Pilv" msgid "Clear Menu" msgstr "Tühjenda menüü" msgid "Clear menu" msgstr "Tühjenda menüü" msgid "Comment:" msgstr "Kommentaar:" msgid "Update" msgstr "Uuenda" msgid "&Delete" msgstr "K&ustuta" msgid "Delete the comment" msgstr "Kustuta kommentaar" msgid "Edit project" msgstr "Projekti muutmine" msgid "Project name:" msgstr "Projekti nimetus:" msgid "Browse" msgstr "Lehitse" msgid "Add directory to the list" msgstr "Lisa kataloog nimistusse" msgid "OK" msgstr "OK" msgid "&File" msgstr "&Fail" msgid "&New…" msgstr "&Uus…" msgid "New from &POT/PO file…" msgstr "Uus & POT/PO-failist…" msgid "New From &POT/PO File…" msgstr "Uus & POT/PO-failist…" msgid "&Open…" msgstr "&Ava…" msgid "Open Recent" msgstr "Ava hiljutised" msgid "Open recent" msgstr "Ava hiljutine" msgid "Open cloud translation…" msgstr "Ava pilvetõlge..." msgid "Open Cloud Translation…" msgstr "Ava pilvetõlge..." msgid "&Start window" msgstr "&Ava aken" msgid "&Start Window" msgstr "&Ava aken" msgid "Catalogs &manager" msgstr "&Kataloogihaldur" msgid "Catalogs &Manager" msgstr "&Kataloogihaldur" msgid "&Close" msgstr "Su&lge" msgid "&Save" msgstr "&Salvesta" msgid "Save &as…" msgstr "Salvesta &kui…" msgid "Save &As…" msgstr "Salvesta &kui…" msgid "Compile to MO…" msgstr "Kompileeri MO…" msgid "E&xport to HTML…" msgstr "" msgid "Check for updates…" msgstr "Uuenduste kontroll…" msgid "Settings…" msgstr "Sätted…" msgid "&Preferences" msgstr "&Eelistused" msgid "E&xit" msgstr "&Välju" msgid "Quit" msgstr "Lõpeta" msgid "Copy from singular" msgstr "Kopeeri ainsusest" msgid "Copy From Singular" msgstr "Kopeeri ainsusest" msgid "Translation needs &work" msgstr "Tõlge vajab veel &tööd" msgid "Translation Needs &Work" msgstr "Tõlge vajab veel &tööd" msgid "Edit &comment" msgstr "Redigeeri ko&mmentaari" msgid "Edit &Comment" msgstr "Muuda &kommentaari" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "Soovitused" msgid "&Find…" msgstr "&Otsi…" msgid "Replace…" msgstr "Asenda…" msgid "Find next" msgstr "Leia järgmine" msgid "Find previous" msgstr "Leia eelmine" msgid "Find and Replace…" msgstr "Otsi ja asenda…" msgid "Find Next" msgstr "Leia järgmine" msgid "Find Previous" msgstr "Leia eelmine" msgid "Show string &ID" msgstr "Näita teksti ID-d" msgid "Show String &ID" msgstr "Näita teksti ID-d" msgid "Show warnings" msgstr "Näita hoiatusi" msgid "Show Warnings" msgstr "Näita hoiatusi" msgid "Sort by &file order" msgstr "Sortimine &failide järgi" msgid "Sort by &File Order" msgstr "Sortimine &failide järgi" msgid "Sort by &source" msgstr "Sortimine &lähteteksti järgi" msgid "Sort by &Source" msgstr "Sortimine &lähteteksti järgi" msgid "Sort by &translation" msgstr "Sortimine &tõlke järgi" msgid "Sort by &Translation" msgstr "Sortimine &tõlke järgi" msgid "&Group by context" msgstr "&Rühmita konteksti järgi" msgid "&Group By Context" msgstr "&Rühmita konteksti järgi" msgid "Entries with errors first" msgstr "Vigadega sissekanded eespool" msgid "Entries with Errors First" msgstr "Vigadega sissekanded eespool" msgid "&Untranslated entries first" msgstr "&Tõlkimata tekstid eespool" msgid "&Untranslated Entries First" msgstr "Tõlkimata tekstid &eespool" msgid "&Show code occurrences" msgstr "&Näita koodi esinemised" msgid "&Show Code Occurrences" msgstr "&Näita koodi esinemised" msgid "Show sidebar" msgstr "Näita külgriba" msgid "Show status bar" msgstr "Näita olekuriba" msgid "&Translation" msgstr "&Tõlge" msgid "&Update from source code" msgstr "&Uuenda lähtekoodist" msgid "&Update from Source Code" msgstr "&Uuenda lähtekoodist" msgid "Update from &POT file…" msgstr "Uuenda &POT failist…" msgid "Update from &POT File…" msgstr "Uuenda &POT failist…" msgid "Sync with Crowdin" msgstr "Sünkroonimine Crowdiniga" msgid "Pre-&translate…" msgstr "Eel-tõlge…" msgid "&Validate translations" msgstr "&Kontrolli tõlkeid" msgid "&Validate Translations" msgstr "&Kontrolli tõlkeid" msgid "Remove Same-as-Source Translations" msgstr "" msgid "&Purge deleted translations" msgstr "&Puhasta kustutatud tõlked" msgid "&Purge Deleted Translations" msgstr "&Puhasta kustutatud tõlgetest" msgid "&Properties…" msgstr "&Omadused…" msgid "&Go" msgstr "&Liikumine" msgid "&Done and next" msgstr "&Valmis, järgmine" msgid "&Done and Next" msgstr "&Valmis, järgmine" msgid "Previously edited" msgstr "Varem redigeeritud" msgid "Previously Edited" msgstr "Varem redigeeritud" msgid "&Previous translation" msgstr "&Eelmine tõlge" msgid "&Previous Translation" msgstr "&Eelmine tõlge" msgid "&Next translation" msgstr "&Järgmine tõlge" msgid "&Next Translation" msgstr "&Järgmine tõlge" msgid "P&revious unfinished" msgstr "Eel&mine lõpetamata" msgid "P&revious Unfinished" msgstr "Eel&mine lõpetamata" msgid "Ne&xt unfinished" msgstr "Järgmine &lõpetamata" msgid "Ne&xt Unfinished" msgstr "Järgmine &lõpetamata" msgid "Previous plural form" msgstr "Eelmine mitmusevorm" msgid "Previous Plural Form" msgstr "Eelmine mitmusevorm" msgid "Next plural form" msgstr "Järgmine mitmusevorm" msgid "Next Plural Form" msgstr "Järgmine mitmusevorm" msgid "&Online help" msgstr "&Veebiabi" msgid "&Online Help" msgstr "&Veebiabi" msgid "&GNU gettext manual" msgstr "& GNU gettext juhend" msgid "&GNU gettext Manual" msgstr "& GNU gettext juhend" msgid "&About Poedit" msgstr "&Poeditist" msgid "&About" msgstr "&Programmist" msgid "Extractor setup" msgstr "Ekstraktori seadistamine" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Laiendite nimistu, eraldaja semikoolon (nt *.cpp;*.h):" msgid "Invocation:" msgstr "Käivitamine:" msgid "Command to extract translations:" msgstr "Käsk tõlgete välja valimiseks:" 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)." msgid "An item in keywords list:" msgstr "Liige võtmesõnade nimistus:" 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." msgid "An item in input files list:" msgstr "Liige sisendfailide nimistus:" #, 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." msgid "Source code charset:" msgstr "Lähtekoodi märgistik:" #, 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." msgid "Translation Properties" msgstr "Tõlke omadused" msgid "Project name and version:" msgstr "Projekti nimi ja versioon:" msgid "Language team:" msgstr "Keele meeskond:" msgid "Plural forms:" msgstr "Mitmuse vormid:" msgid "Use default rules for this language" msgstr "Kasuta selle keele jaoks vaikimisi reegleid" msgid "Use custom expression" msgstr "Kasuta kohandatud väljendeid" msgid "Learn about plural forms" msgstr "Mitmuse vormide kohta lähemalt uurimine" msgid "Charset:" msgstr "Märgistik:" msgid "Advanced Extraction Settings…" msgstr "Ekstraktori lisaseaded…" msgid "Advanced extraction settings…" msgstr "Ekstraktori lisaseaded…" msgid "Translation properties" msgstr "Tõlke omadused" msgid "Sources Paths" msgstr "Lähtekoodi asukohad" msgid "Sources paths" msgstr "Otsingurajad" msgid "Extract text from source files in the following directories:" msgstr "Teksti otsitakse järgnevates kataloogides asuvast lähtekoodist:" msgid "Base path:" msgstr "Baasrada:" msgid "Sources Keywords" msgstr "Lähtekoodi märksõnad" msgid "Sources keywords" msgstr "Lähtekoodi võtmesõnad" 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:" msgid "Also use default keywords for supported languages" msgstr "Kasuta toetatud keelte jaoks vaikimisi klaviatuuri" msgid "Learn about gettext keywords" msgstr "Vaata lisainfot Gettexti märksõnade kohta" msgid "Update summary" msgstr "Uuendamise kokkuvõte" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" "Need tekstid leiti lähtekoodist, kuid ei ole failis.\n" "Poedit lisab need nüüd faili." msgid "New strings" msgstr "Uued tekstid" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" "Need tekstid pole enam lähtekoodis.\n" "Poedit eemaldab need nüüd failist." msgid "Obsolete strings" msgstr "Iganenud tekstid" msgid "(0 new, 0 obsolete)" msgstr "(uusi 0, iganenuid 0)" msgid "Open" msgstr "" msgid "Open file" msgstr "Ava fail" msgid "Save file" msgstr "Salvesta fail" msgid "Validate" msgstr "Kontrolli" msgid "Check for errors in the translation" msgstr "Tõlkest vigade otsimine" msgid "Update from code" msgstr "Uuenda lähtekoodist" msgid "Update from Code" msgstr "Uuenda lähtekoodist" msgid "Update from source code" msgstr "Uuenda lähtekoodist" msgid "Sidebar" msgstr "Külgriba" 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. msgid "Previous source text" msgstr "Eelmine lähtetekst" 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." msgid "Notes for translators" msgstr "Märkused tõlkijate jaoks" msgid "Comment" msgstr "Kommentaar" msgid "Add comment" msgstr "Lisa kommentaar" msgid "Add Comment" msgstr "Lisa kommentaar" msgid "Delete From Translation Memory" msgstr "Kustuta tõlkemälust" msgid "Delete from translation memory" msgstr "Kustuta tõlkemälust" msgid "Translation suggestions" msgstr "Tõlkesoovitused" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). msgid "No matches found" msgstr "Vasteid ei leitud" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). msgid "No Matches Found" msgstr "Vasteid ei leitud" msgid "This string was found in Poedit’s translation memory." msgstr "See tekst leiti Poediti tõlkemälust." 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." 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." msgid "The TMX file is malformed." msgstr "TMX fail on vigaselt vormindatud." msgid "No translations were found in the TMX file." msgstr "TMX-failist ei leitud ühtegi tõlget." #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Tõlkemälu on kahjustada saanud: %s (%d)." #, c-format msgid "Translation memory error: %s (%d)." msgstr "Tõlkemälu viga: %s (%d)." msgid "Cannot create temporary directory." msgstr "Pole võimalik luua ajutist kataloogi." msgid "There are no translations. That’s unusual." msgstr "Ühtegi tõlget pole. See on küll ebatavaline." msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "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 \n" "lähtekoodist. Sellisel moel püsivad need ajakohaste ja täpsetena.\n" "Tõlkijad kasutavad tavaliselt arendaja poolt valmistatud PO faile (POTs)." msgid "(Learn more about GNU gettext)" msgstr "(Vaata insainfot GNU gettexti kohta)" 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:" msgid "Update from POT" msgstr "Uuenda POT failist" msgid "Take translatable strings from an existing POT template." msgstr "Tõlgitavad failid olemasolevast POT failist." msgid "" "You can also extract translatable strings directly from the source code:" msgstr "Tõlgitavaid stringe saab ka otse lähtekoodist välja otsida:" msgid "Extract from sources" msgstr "Ekstrakti lähtekoodist" 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 #, c-format msgid "Version %s" msgstr "Versioon %s" msgid "Create new" msgstr "Loo uus" msgid "Create new translation from POT template." msgstr "Loo POT-mallist uus tõlkefail." msgid "Browse files" msgstr "Sirvi faile" msgid "Open and edit translation files." msgstr "Ava ja muuda tõlkefaile." msgid "Translate cloud project" msgstr "Tõlgi projekti pilves" msgid "Collaborate with other people online." msgstr "Tee teistega veebis koostööd." msgid "Recent files" msgstr "Hiljutised failid" msgid "Sync" msgstr "Sünkroonimine" 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") #, 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. #, c-format msgid "%s Preferences" msgstr "%s Eelistused" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "Teenused" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "Peida %s" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "Peida teised" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "Näita kõiki" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "Lõpeta %s" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "Eelistused…" msgid "Preferences..." msgstr "Eelistused..." #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "Hiljutised" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "Sagedased" msgid "&Apply" msgstr "&Rakenda" msgid "Apply" msgstr "Rakenda" msgid "&Back" msgstr "Tagasi" msgid "Back" msgstr "Tagasi" msgid "&Cancel" msgstr "Katkesta" msgid "&Clear" msgstr "Tühjenda" msgid "Clear" msgstr "Tühjenda" msgid "Copy" msgstr "Kopeeri" msgid "Cu&t" msgstr "Lõik&a" msgid "Cut" msgstr "Lõika" msgid "Edit" msgstr "Muuda" msgid "&Quit" msgstr "Lõpeta" msgid "Help" msgstr "Abi" msgid "&New" msgstr "&Uus" msgid "New" msgstr "Uus" msgid "&No" msgstr "&Nr" msgid "No" msgstr "Ei" msgid "&OK" msgstr "&OK" msgid "Open…" msgstr "Ava…" msgid "&Open..." msgstr "&Avamine..." msgid "Open..." msgstr "&Ava..." msgid "&Paste" msgstr "&Aseta" msgid "Paste" msgstr "Aseta" msgid "Preferences" msgstr "Eelistused" msgid "&Redo" msgstr "&Tee uuesti" msgid "Refresh" msgstr "Värskenda" msgid "&Save as" msgstr "Salvesta kui" msgid "Save as" msgstr "Salvesta kui" msgid "Select &All" msgstr "V&ali kõik" msgid "Select All" msgstr "Vali kõik" msgid "&Undo" msgstr "&Võta tagasi" msgid "&Yes" msgstr "Jah" msgid "Yes" msgstr "Jah" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "Üles" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "Alla" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "Vasak" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "Parem" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "shift" poedit-3.5/locales/ja.po0000644000175100001770000021272714664354153012173 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "この通知メッセージを表示しない" msgid "Don’t Show Again" msgstr "今後表示しない" msgid "Don’t show again" msgstr "今後表示しない" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(新規 %i、使用しないように変更 %i)" msgid "Collecting source files…" msgstr "ソースファイルを収集中…" msgid "Extracting translatable strings…" msgstr "翻訳可能な文字列を抽出中…" msgid "Failed to load file with extracted translations." msgstr "抽出された翻訳ファイルを読み込めませんでした。" msgid "Merging differences…" msgstr "差分を統合しています…" msgid "Updating translations" msgstr "翻訳をアップデートしています" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "ファイル \"%s\" を開くことができませんでした。" msgid "Invalid file" msgstr "不正なファイル" #, c-format msgid "Malformed header: “%s”" msgstr "書式が不正なヘッダ: “%s”" msgid "PO Translation Files" msgstr "PO 翻訳ファイル" msgid "POT Translation Templates" msgstr "POT 翻訳テンプレート" msgid "XLIFF Translation Files" msgstr "XLIFF 翻訳ファイル" msgid "JSON Translation Files" msgstr "JSON 翻訳ファイル" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "Flutter 翻訳ファイル" msgid "All Translation Files" msgstr "すべての翻訳ファイル" msgid "The file is in a format not recognized by Poedit." msgstr "ファイルは Poedit が認識できないフォーマットです。" msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" "この JSON ファイルは翻訳ファイルではないため、Poedit では編集できません。" #, c-format msgid "Reading file content failed with the following error: %s" msgstr "ファイル内容の読み込みに失敗しました: %s" #, c-format msgid "" "File “%s” is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "ファイル “%s” は読み出し専用のため保存できません。\n" "別のファイル名で保存してください。" #, c-format msgid "Couldn’t save file %s." msgstr "ファイル %s を保存できません。" msgid "Screenshots:" msgstr "スクリーンショット:" #, c-format msgid "%i line of file “%s” was not loaded correctly." msgid_plural "%i lines of file “%s” were not loaded correctly." msgstr[0] "ファイル \"%2$s\" 中の %1$i行が正しく読み込まれませんでした。" #, c-format msgid "Line %d of file “%s” is corrupted (not valid %s data)." msgstr "%d行目 (ファイル “%s“) が破損しています。無効な%sデータです。" msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" "PO ファイルが破損しています: msgid_plural が指定されていますが、msgstr が複数" "形表記ではありません。" msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" "PO ファイルが破損しています。複数形表記の msgstr が使われていますが、" "msgid_plural の指定がありません。" msgid "Couldn’t load the file, it is probably damaged." msgstr "ファイルを読み込めませんでした。破損している可能性があります。" msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "ファイルを読み出す際にエラーが発生しました。このため一部のデータが失われたり" "破損したりしている可能性があります。" msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "ファイルを整形する際に問題が発生しましたが、保存は完了しています。" #, 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 で保存し、設定もそれに従って変更されました。" msgid "Error saving file" msgstr "ファイルの保存中にエラーが発生しました" #, c-format msgid "“%s” is not a valid POT file." msgstr "“%s” は有効な POT ファイルではありません。" #, c-format msgid "Error while loading XLIFF file: %s" msgstr "XLIFFファイルの読み込み中にエラーが発生しました: %s" #, c-format msgid "unsupported version (%s)" msgstr "サポートされていないバージョン (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML msgid "Broken markup in translation string." msgstr "翻訳文字列内に不正なマークアップ記述があります。" msgid "(Use default language)" msgstr "(デフォルト言語を使用)" msgid "Language selection" msgstr "言語選択" msgid "Select your preferred language" msgstr "お好みの言語を選択してください" msgid "You must restart Poedit for this change to take effect." msgstr "変更を有効にするには Poedit を再起動してください。" msgid "Add Account" msgstr "アカウントを追加する" msgid "Add account" msgstr "アカウントを追加する" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "%s の詳細" msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "対応するローカリゼーションプラットフォームと Poedit を連携すると、プラット" "フォーム上で管理されている翻訳をシームレスに同期できます。" msgid "How does cloud sync work?" msgstr "クラウド同期の仕組み" msgid "Account" msgstr "アカウント" msgid "(not signed in)" msgstr "(サインインしていません)" msgid "File" msgstr "ファイル" msgid "Open cloud translation" msgstr "クラウド翻訳を開く" msgid "Manage accounts" msgstr "アカウントの管理" msgid "Project:" msgstr "プロジェクト:" msgid "Language:" msgstr "言語:" msgid "Sign in to Cloud Account" msgstr "クラウドアカウントにサインインする" msgid "Sign in to cloud account" msgstr "クラウドアカウントにサインインする" msgid "No translation projects listed in your account." msgstr "あなたのアカウントには翻訳プロジェクトがありません。" msgid "Downloading latest translations…" msgstr "最新の翻訳をダウンロード中…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #, c-format msgid "Sign in to %s" msgstr "%sにサインイン" msgid "Syncing" msgstr "同期中..." #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s…" msgstr "%sに翻訳をアップロードしています…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s failed." msgstr "%sに翻訳をアップロードできませんでした。" msgid "Syncing error" msgstr "同期エラー" msgid "Add" msgstr "追加" msgid "Unknown Crowdin error." msgstr "不明な Crowdin エラー。" msgid "Not authorized, please sign in again." msgstr "未認証です。もう一度ログインしてください。" msgid "Downloading translations is disabled in this project." msgstr "このプロジェクトでは、翻訳のダウンロードが無効になっています。" msgid "Sign In" msgstr "ログイン" msgid "Sign in" msgstr "ログイン" msgid "Sign Out" msgstr "ログアウト" msgid "Sign out" msgstr "ログアウト" msgid "Learn more about Crowdin" msgstr "Crowdin について" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" "Crowdin は、オンラインのローカリゼーション管理プラットフォームで、複数人で翻" "訳を行うためのツールです。" msgid "Waiting for authentication…" msgstr "認証を待機中…" msgid "Updating user information…" msgstr "ユーザー情報を更新しています…" msgid "Sign in to Crowdin" msgstr "Crowdin にログイン" msgid "Syncing with Crowdin failed." msgstr "Crowdin との同期に失敗しました。" msgid "Crowdin error" msgstr "Crowdin エラー" msgid "Uploading translations…" msgstr "翻訳をアップロード中…" msgid "&Copy" msgstr "コピー (&C)" msgid "Learn more" msgstr "さらに詳しく" msgid "&Help" msgstr "ヘルプ (&H)" msgid "MO files can’t be directly edited in Poedit." msgstr "MO ファイルは Poedit で直接編集できません。" msgid "Error opening file" msgstr "ファイルを開く際にエラーが発生しました" msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "代わりに、対応する PO ファイルを開いてください。そちらを保存する際に MO ファ" "イルも更新されます。" msgid "don’t delete temporary files (for debugging)" msgstr "一時ファイルを削除しない (デバッグ向け)" msgid "handle a poedit:// URI" msgstr "poedit:// URI を処理" msgid "go to item at given line number" msgstr "指定の行番号の項目に移動" msgid "Failed to communicate with Poedit process." msgstr "Poedit プロセスとの通信に失敗しました。" #, c-format msgid "Unhandled exception occurred: %s" msgstr "未処理例外が発生しました: %s" msgid "Select translation template" msgstr "翻訳テンプレートを選択" msgid "Select translation file" msgstr "翻訳ファイルを選択" msgid "Poedit is an easy to use translation editor." msgstr "Poedit は使いやすい翻訳エディタです。" msgid "You can’t drop more than one file on Poedit window." msgstr "Poedit へドロップできるのは1回につき1ファイルのみです。" #, c-format msgid "File “%s” is not a translation file." msgstr "ファイル \"%s\" は翻訳ファイルではありません。" #, c-format msgid "File “%s” doesn’t exist." msgstr "ファイル “%s” は存在しません。" 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". #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "" "%sの辞書がインストールされていないためスペルチェックは無効化されています。" msgid "Install" msgstr "インストール" #, c-format msgid "The file “%s” has been changed by another application." msgstr "ファイル “%s” は別のアプリケーションによって変更されました。" msgid "Reload file" msgstr "ファイルを再読み込み" msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "ディスクからファイルを再読み込みしますか? この場合、Poedit で保存されていな" "い編集内容は失われます。" msgid "Ignore" msgstr "無視" msgid "Reload File" msgstr "ファイルを再読み込み" msgid "The file has been modified. Do you want to save changes?" msgstr "ファイルが変更されました。変更を保存しますか?" msgid "Save changes" msgstr "変更を保存" msgid "Your changes will be lost if you don’t save them." msgstr "保存しないと追加した変更は失われます。" msgid "Save" msgstr "保存" msgid "Do&n’t save" msgstr "保存しない (&N)" msgid "Don’t Save" msgstr "保存しない" msgid "The changes made by the other application will be lost if you save." msgstr "保存すると、他のアプリケーションによって行われた変更は失われます。" msgid "Cancel" msgstr "キャンセル" msgid "Save Anyway" msgstr "強制的に保存" msgid "Save anyway" msgstr "強制的に保存" msgid "Save as…" msgstr "名前を付けて保存…" msgid "Compile to…" msgstr "形式を指定してコンパイル…" msgid "Compiled Translation Files" msgstr "翻訳ファイルをコンパイルしました" msgid "Export to HTML…" msgstr "" msgid "HTML Files" msgstr "HTML ファイル" #, c-format msgid "In: %s" msgstr "問題のあるファイル: %s" msgid "Source code not available." msgstr "ソースコードが存在しません。" msgid "Updating failed" msgstr "更新に失敗しました" 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 "" "ファイルのプロパティで指定された場所にコードが見つからなかったため、翻訳を" "ソースコードから更新できませんでした。" msgid "Permission denied." msgstr "権限がありません。" 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. 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. msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "以前ファイルへのアクセスを拒否した場合、システム環境設定 > セキュリティとプラ" "イバシー > プライバシー > ファイルとフォルダ から許可できます。" msgid "Translation entries in the file are probably incorrect." msgstr "ファイル内の翻訳エントリが間違っている可能性があります。" msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "" "ファイルの更新に失敗しました。詳細を見るには ‘詳細 >>’ をクリックしてくださ" "い。" msgid "Open translation template" msgstr "翻訳テンプレートを開く" #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "翻訳に%d件の問題が見つかりました。" msgid "Validation results" msgstr "検査の結果" msgid "" "Entries with errors were marked in red in the list. Details of the error " "will be shown when you select such an entry." msgstr "" "エラーがある項目はリスト中で赤くマークされています。エラーの詳細は、その項目" "を選択すると表示されます。" msgid "The file was saved safely." msgstr "ファイルを安全に保存しました。" msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "ファイルを安全に保存し MO 形式にコンパイルしましたが、恐らく正常に動作しない" "でしょう。" msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "ファイルは安全に保存されましたが MO 形式にコンパイルできなかったため使用でき" "ません。" msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "ファイルを MO 形式にコンパイルしましたが、恐らく正常に動作しないでしょう。" msgid "The file cannot be compiled into the MO format and used." msgstr "ファイルを MO 形式にコンパイルして使用することができません。" msgid "No problems with the translation found." msgstr "翻訳に問題は見つかりませんでした。" #, 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件の項目がまだ翻訳されていません。" msgid "The translation is ready for use." msgstr "この翻訳は使用できます。" #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "Poedit は、ファイル「%s」内の無効なコンテンツを自動的に修正しました。" msgid "" "The file contained duplicate items, which is not allowed in PO files and " "would prevent the file from being used. Poedit fixed the issue, but you " "should review translations of any items marked as needing work and correct " "them if necessary." msgstr "" "ファイルに重複する項目が含まれています。重複項目は PO ファイルでは許可されて" "おらず、ファイルの利用を妨げます。Poedit はこの問題を修正しましたが、要確認と" "してマークされている項目を確認し、必要に応じて修正する必要があります。" msgid "Language of the translation isn’t set." msgstr "翻訳の言語が設定されていません。" msgid "Set Language" msgstr "言語を設定" msgid "Set language" msgstr "言語を設定" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." msgid "" "Suggestions are not available if the translation language is not set " "correctly. Other features, such as plural forms, may be affected as well." msgstr "" "翻訳言語が正しく設定されていない場合、提案は利用できません。また、複数形など" "の他の機能にも影響する可能性があります。" msgid "Language of the translation is the same as source language." msgstr "翻訳言語がソース言語と同一です。" msgid "Fix Language" msgstr "言語を修正" msgid "Fix language" msgstr "言語を修正" msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "このファイルには複数形を含む項目がありますが、Plural-Forms ヘッダが設定されて" "いません。" msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "ファイルの中の項目がファイルの Plural-Forms ヘッダで示された数と異なる複数形" "を持っています" msgid "Required header Plural-Forms is missing." msgstr "必要なヘッダ Plural-Forms がありません。" #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Plural-Forms ヘッダに文法エラーがあります (\"%s\") 。" msgid "Fix the Header" msgstr "ヘッダーを修正" 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". #, 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.")" msgid "Review" msgstr "レビュー" msgid "Would you like to use English for source text?" msgstr "翻訳言語を英語に指定しますか?" #, 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" msgid "Load English" msgstr "英文を読み込む" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "翻訳済み: %d/%d件中 (%d %%)" #, c-format msgid "Remaining: %d" msgstr "未翻訳: %d" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d件のエラー" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d項目" msgid " (unsaved)" msgstr " (未保存)" msgid " (modified)" msgstr " (変更済)" #, c-format msgid "Failed to update translation memory: %s" msgstr "翻訳メモリを更新できませんでした: %s" msgid "Remove same-as-source translations" msgstr "" msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" msgid "Keep" msgstr "保持する" msgid "Remove" msgstr "" msgid "Purge deleted translations" msgstr "削除された翻訳を一掃する" msgid "Do you want to remove all translations that are no longer used?" msgstr "もう使われていない翻訳をすべて削除しますか ?" 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 "" "一掃を実行すると、削除済みとしてマークされた翻訳はすべて完全に削除されます。" "将来再び追加された場合は翻訳し直す必要があります。" msgid "Purge" msgstr "翻訳の一掃" msgid "Copy from source text" msgstr "ソーステキストからコピー" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "翻訳をクリア" msgid "Clear Translation" msgstr "翻訳をクリア" msgid "Edit comment" msgstr "コメントを編集" msgid "Edit Comment" msgstr "コメントを編集" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "コードでの出現箇所" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "コードでの出現箇所" msgid "Hide Sidebar" msgstr "サイドバーを隠す" msgid "Show Sidebar" msgstr "サイドバーを表示" msgid "Hide Status Bar" msgstr "ステータスバーを非表示" msgid "Show Status Bar" msgstr "ステータスバーを表示" msgid "String length in characters: translation | source" msgstr "文字列の長さ: 翻訳 | 原文" msgid "String length in characters" msgstr "文字列の長さ" msgid "Source text" msgstr "ソーステキスト" msgid "Singular" msgstr "単数形" msgid "Plural" msgstr "複数形" msgid "Translation" msgstr "対訳" msgid "Pre-translated" msgstr "事前翻訳済み" 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. msgid "Needs work" msgstr "要確認" msgid "" "POT files are only templates and don’t contain any translations themselves.\n" "To make a translation, create a new PO file based on the template." msgstr "" "POT ファイルはテンプレートのみで、それ自体に翻訳は含まれていません。 \n" "翻訳を行うには、このテンプレートをベースにして新しい PO ファイルを作成しま" "す。" msgid "Create new translation" msgstr "翻訳プロジェクトを新規作成する" msgid "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 msgid "Source text ID" msgstr "ソーステキスト ID" msgid "Everything" msgstr "すべて" #, c-format msgid "Form %i" msgstr "形式 %i" #, c-format msgid "Form %i (unused)" msgstr "フォーム %i (未使用)" msgid "Zero" msgstr "0" msgid "One" msgstr "1" msgid "Two" msgstr "2" msgid "Other" msgstr "その他" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, c-format msgid "String context: %s" msgstr "文字列のコンテキスト:%s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #, c-format msgid "String identifier: %s" msgstr "文字列の識別子: %s" #, c-format msgid "%s Format" msgstr "%s 形式" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "%s 形式" #, c-format msgid "Translation — %s" msgstr "翻訳 — %s" msgid "ID" msgstr "ID" #, c-format msgid "Source text — %s" msgstr "ソース テキスト — %s" msgid "unknown language" msgstr "不明な言語" #, c-format msgid "Network error: %s (%d)" msgstr "" msgid "Unknown error" msgstr "" #, c-format msgid "Failed command: %s" msgstr "失敗したコマンド: %s" msgid "Failed to merge gettext catalogs." msgstr "gettext カタログの統合に失敗しました。" msgid "Open in Editor" msgstr "エディターで開く" msgid "Open in editor" msgstr "エディターで開く" msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" "このファイルでは、この文字列のソースコード内の出現箇所に関する情報が提示され" "ていません。" msgid "No usage information" msgstr "使用情報はありません" #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "コードでの出現箇所%d件" msgid "Source code not found" msgstr "ソースコードが見つかりません" 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 は文字列が使用されているソースコードを表示できません。ファイルが参照さ" "れた場所で使用できないか、実ファイルを指していないシンボリック参照であるため" "です。" msgid "File cannot be opened" msgstr "ファイルを開けません" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "Poedit は “%s” ファイルを開けませんでした。" msgid "Find" msgstr "検索" msgid "Replace" msgstr "置き換え" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "設定" msgid "Ignore case" msgstr "大文字小文字を無視" msgid "Wrap around" msgstr "回り込み" msgid "Whole words only" msgstr "空白等で区切られた単語だけを探す" msgid "Find in source texts" msgstr "ソース テキストを検索" msgid "Find in translations" msgstr "翻訳された文字列を検索対象に含める" msgid "Find in comments" msgstr "コメントを検索対象に含める" msgid "Close" msgstr "閉じる" msgid "Replace &All" msgstr "すべてを置換 (&A)" msgid "Replace &all" msgstr "すべてを置換 (&a)" msgid "&Replace" msgstr "置換 (&R)" msgid "< &Previous" msgstr "< 前へ (&P)" msgid "&Next >" msgstr "次へ > (&N)" msgid "String to find" msgstr "検索する文字列" msgid "Replacement string" msgstr "置換文字列" #, c-format msgid "Cannot execute program: %s" msgstr "プログラムを実行できません: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "言語名またはコード" msgid "Translation Language" msgstr "翻訳言語" msgid "Language of the translation:" msgstr "翻訳の言語:" msgid "All strings" msgstr "すべての文字列" msgid "Couldn’t download Localazy project details." msgstr "Localazy プロジェクトの詳細をダウンロードできませんでした。" msgid "There was an error when uploading translations to Localazy." msgstr "翻訳を Localazy にアップロードする際にエラーが発生しました。" msgid "Projects" msgstr "プロジェクト" msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Localazy は高度に自動化されたローカリゼーションプラットフォームで、誰でも簡単" "に製品やコンテンツを複数の言語に翻訳できます。" msgid "Add Project" msgstr "プロジェクトを追加" msgid "Add project" msgstr "プロジェクトを追加" msgid "Poedit - Catalogs manager" msgstr "Poedit - カタログマネージャ" msgid "Edit…" msgstr "編集…" msgid "Create new translations project" msgstr "翻訳プロジェクトを作成する" msgid "Delete the project" msgstr "翻訳プロジェクトを削除する" msgid "Edit the project" msgstr "このプロジェクトを編集" msgid "Update all" msgstr "全て更新する" msgid "Update all catalogs in the project" msgstr "プロジェクトのすべてのカタログを更新する" msgid "Total" msgstr "合計" msgid "Untrans" msgstr "未翻訳" msgctxt "column/row header" msgid "Needs Work" msgstr "要確認" msgid "Errors" msgstr "エラー" msgid "Last modified" msgstr "最終更新" msgid "Select directory" msgstr "ディレクトリの選択" msgid "Directories:" msgstr "ディレクトリ:" msgid "" msgstr "<名称未設定>" #, c-format msgid "Do you want to delete project “%s”?" msgstr "プロジェクト “%s” を削除しますか?" msgid "Delete project" msgstr "プロジェクトを削除" msgid "Deleting the project will not delete any translation files." msgstr "プロジェクトを削除しても、翻訳ファイルは削除されません。" msgid "Confirmation" msgstr "確認" msgid "Update all catalogs in this project?" msgstr "このプロジェクトのすべてのカタログを更新しますか?" msgid "Performs update from source code on all files in the project." msgstr "" "プロジェクト内のすべてのファイルのソースコードをもとに、翻訳ファイルの更新を" "実行します。" msgid "Check for Updates…" msgstr "アップデートの確認…" msgid "Catalogs Manager" msgstr "カタログマネージャ" msgid "&Preferences…" msgstr "設定 (&P)…" msgid "&Edit" msgstr "編集 (&E)" msgid "Undo" msgstr "元に戻す" msgid "Redo" msgstr "再実行" msgid "Paste and Match Style" msgstr "ペーストしてスタイルを合わせる" msgid "Delete" msgstr "削除" msgid "Spelling and Grammar" msgstr "綴りと文法" msgid "Show Spelling and Grammar" msgstr "綴りと文法を表示" msgid "Check Document Now" msgstr "ドキュメンテーションを今すぐ確認" msgid "Check Spelling While Typing" msgstr "入力中にスペルチェック" msgid "Check Grammar With Spelling" msgstr "文法と綴りを確認" msgid "Correct Spelling Automatically" msgstr "綴りを自動修正" msgid "Substitutions" msgstr "代替案" msgid "Show Substitutions" msgstr "代替案を表示" msgid "Smart Copy/Paste" msgstr "スマートコピー & ペースト" msgid "Smart Quotes" msgstr "スマート引用" msgid "Smart Dashes" msgstr "スマートダッシュ" msgid "Smart Links" msgstr "スマートリンク" msgid "Text Replacement" msgstr "テキスト置き換え" msgid "Transformations" msgstr "変換" msgid "Make Upper Case" msgstr "大文字に変換" msgid "Make Lower Case" msgstr "小文字に変換" msgid "Capitalize" msgstr "キャピタライズ" msgid "Speech" msgstr "スピーチ" msgid "Start Speaking" msgstr "読み上げを開始" msgid "Stop Speaking" msgstr "読み上げを停止" msgid "&View" msgstr "表示 (&V)" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Show Toolbar" msgstr "ツールバーを表示" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Customize Toolbar…" msgstr "ツールバーをカスタマイズ…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Enter Full Screen" msgstr "全画面表示" msgid "Window" msgstr "ウィンドウ" msgid "Minimize" msgstr "最小化" msgid "Zoom" msgstr "ズーム" msgid "Welcome to Poedit" msgstr "Poedit へようこそ" msgid "Bring All to Front" msgstr "すべてを手前に移動" msgid "Information about the translator" msgstr "翻訳者に関する情報" msgid "Name:" msgstr "名前:" msgid "Your Name" msgstr "あなたの名前" msgid "Email:" msgstr "メール:" msgid "you@example.com" msgstr "you@example.com" msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "お名前とメールアドレスは GNU gettext ファイルの Last-Translator ヘッダーを設" "定するためにのみ使われます。" msgid "Editing" msgstr "編集" msgid "Automatically compile MO file when saving" msgstr "保存する際に MO ファイルを自動コンパイル" msgid "Show summary after updating files" msgstr "ファイルの更新後に概要を表示" msgid "Check spelling" msgstr "スペルチェック" msgid "Always change focus to text input field" msgstr "フォーカスは常にテキストフィールドに置く" msgid "" "Never let the list of strings take focus. If enabled, you must use Ctrl-" "arrows for keyboard navigation but you can also type text immediately, " "without having to press Tab to change focus." msgstr "" "チェックすると一覧にフォーカスが移動しなくなります。キーボードによる項目の移" "動は Ctrl + 矢印キー のみとなります。" msgid "Appearance" msgstr "外観" msgid "Use custom list font:" msgstr "カスタムリストフォントを使う:" msgid "Use custom text fields font:" msgstr "カスタムテキストフィールドフォントを使う:" msgid "Change UI language" msgstr "Poedit の UI 言語を変更" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions msgid "(requires Windows 8 or newer)" msgstr "(Window 8 以降が必要)" msgid "General" msgstr "一般" msgid "Use translation memory" msgstr "翻訳メモリを使う" msgid "Manage…" msgstr "管理…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "ソースからの更新時" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "ファイル内でのあいまい一致" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "翻訳メモリから事前翻訳" 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 は、ファイルに含まれる以前の翻訳または翻訳メモリのみから新しい項目を入" "力しようとすることもできます。翻訳メモリがほとんど空の場合、メモリを使っても" "あまり効果はありませんが、翻訳を追加していくとさらに精度が高まっていきます。" msgid "Stored translations:" msgstr "保存された翻訳:" msgid "Database size on disk:" msgstr "ディスク上のデータベースサイズ:" msgid "Import Translation Files…" msgstr "翻訳ファイルのインポート…" msgid "Import translation files…" msgstr "翻訳ファイルのインポート…" msgid "Import From TMX…" msgstr "TMX からインポート…" msgid "Import from TMX…" msgstr "TMX からインポート…" msgid "Export To TMX…" msgstr "TMX にエクスポート…" msgid "Export to TMX…" msgstr "TMX にエクスポート…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). msgid "Reset" msgstr "リセット" msgid "Select translation files to import" msgstr "インポートする翻訳ファイルを選択" msgid "Translation Memory" msgstr "翻訳メモリ" msgid "Importing translations…" msgstr "翻訳をインポート中…" #, c-format msgid "Error loading translation file “%s”." msgstr "翻訳ファイル “%s” の読み込み中にエラーが発生しました。" msgid "Finalizing…" msgstr "完了処理中…" msgid "Select TMX files to import" msgstr "インポートする TMX ファイルを選んでください" msgid "TMX Files" msgstr "TMX ファイル" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "「%s」から翻訳メモリをインポートできませんでした。" msgid "Import error" msgstr "インポートエラー" msgid "Export as…" msgstr "書式を指定してエクスポート…" msgid "Exporting translations…" msgstr "翻訳をエクスポート中…" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "「%s」から翻訳メモリをエクスポートできませんでした。" msgid "Export error" msgstr "エクスポートエラー" msgid "Reset translation memory" msgstr "翻訳メモリをリセット" msgid "Are you sure you want to reset the translation memory?" msgstr "本当に翻訳メモリをリセットしてよいですか ?" 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. msgid "TM" msgstr "翻訳メモリ" msgid "" "Source code extractors are used to find translatable strings in the source " "code files and extract them so that they can be translated." msgstr "" "ソースコード抽出ツールは、ソースコードファイル内にある翻訳可能な文字列を見つ" "けて抽出するために使われます。" msgid "Custom Extractors:" msgstr "カスタム抽出ツール:" msgid "Custom extractors:" msgstr "カスタム抽出ツール:" msgid "GNU gettext" msgstr "GNU gettext" 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 など) によっ" "て認識されるすべてのプログラミング言語に対応しています。" msgid "Delete extractor" msgstr "抽出ツールを削除" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "本当に「%s」抽出ツールを削除してもよいですか ?" msgid "Extractors" msgstr "抽出ツール" msgid "Accounts" msgstr "アカウント" msgid "Automatically check for updates" msgstr "自動的に更新を確認" msgid "Include beta versions" msgstr "ベータ版を含める" msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "ベータ版は最新の機能や改善を含みますが、安定性が低い可能性があります。" msgid "Updates" msgstr "更新" msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "これらの設定は PO ファイルの内部フォーマットに影響します。例えばバージョンコ" "ントロールのような特別な要件がある場合は調整してください。" msgid "Line endings:" msgstr "改行:" msgid "Unix (recommended)" msgstr "Unix (推奨)" msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "折り返し:" msgid "Preserve formatting of existing files" msgstr "既存ファイルのフォーマットを保護する" msgid "Advanced" msgstr "上級者モード" msgid "Settings" msgstr "" msgid "Preparing strings…" msgstr "文字列を準備しています…" msgid "Pre-translating from translation memory…" msgstr "翻訳メモリから事前翻訳しています…" #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "%u件の文字列を翻訳" msgid "Pre-translating…" msgstr "事前翻訳中…" 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. msgid "Pre-translate" msgstr "事前翻訳" msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "事前翻訳は、ソーステキストが利用可能であることが必要です。実テキストがない " "ID のみが使われている場合は、利用できません。" msgid "Cannot pre-translate from unknown language." msgstr "不明な言語から事前翻訳できません。" msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "事前翻訳では、原文の言語が判明している必要があります。Poedit はこのファイルで" "言語を検出できませんでした。" msgid "Only fill in exact matches" msgstr "完全な一致のみ採用する" msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "デフォルトでは正確ではない結果も含まれますが、要確認としてマークされます。完" "全一致のみを含めるには、このオプションにチェックを入れてください。" msgid "Don’t mark exact matches as needing work" msgstr "完全な一致を要確認としてマークしない" 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 "" "翻訳メモリの品質を信頼できる場合のみ有効化してください。デフォルトでは翻訳メ" "モリからの一致は要確認にマークされ、レビューが必要となります。" msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "事前翻訳は翻訳メモリ内から未翻訳文字列との完全またはあいまい一致を自動的に検" "出し、それで翻訳を埋めます。" #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%d件の項目が事前翻訳されました。" msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "翻訳は正確でない可能性があるため、要確認としてマークされています。間違ってい" "ないかどうかレビューしてください。" msgid "No entries could be pre-translated." msgstr "事前翻訳できる項目はありませんでした。" msgid "" "The TM doesn’t contain any strings similar to the content of this file. It " "is only effective for semi-automatic translations after Poedit learns enough " "from files that you translated manually." msgstr "" "このファイルに含まれるコンテンツに似た文字列が翻訳メモリには含まれていませ" "ん。" msgid "Cancelling…" msgstr "キャンセルしています…" msgid "Drag Folders or Files Here" msgstr "ここにフォルダまたはファイルをドラッグ" msgid "Drag folders or files here" msgstr "ここにフォルダまたはファイルをドラッグ" msgid "Add Folders…" msgstr "フォルダーを追加…" msgid "Add folders…" msgstr "フォルダーを追加…" msgid "Add Files…" msgstr "ファイルを追加…" msgid "Add files…" msgstr "ファイルを追加…" msgid "Add Wildcard…" msgstr "ワイルドカードを追加…" msgid "Add wildcard…" msgstr "ワイルドカードを追加…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) msgid "Reveal in Finder" msgstr "Finder で表示" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" msgid "Show in Explorer" msgstr "エクスプローラーで表示" msgid "Show in Folder" msgstr "フォルダで表示" msgid "Paths" msgstr "パス" msgid "Excluded paths" msgstr "除外するパス" msgid "Advanced extraction settings" msgstr "高度な抽出設定" msgid "Extract notes for translators from:" msgstr "以下から翻訳者向けのメモを抽出:" msgid "Comments prefixed with:" msgstr "以下の接頭辞のついたコメント:" msgid "All comments" msgstr "すべてのコメント" msgid "Additional xgettext flags:" msgstr "追加 xgettext フラグ:" msgid "Additional keywords" msgstr "追加キーワード" msgid "Name of the project the translation is for" msgstr "翻訳するプロジェクトの名称" msgid "Team name and email address or URL" msgstr "チーム名とメールアドレスまたは URL" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "例: nplurals=2; plural=(n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (推奨)" msgid "Please save the file first. This section cannot be edited until then." msgstr "" "まずファイルを保存してください。保存するまでこのセクションは編集できません。" msgid "Placeholders correctness" msgstr "プレースホルダーの正確性" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "プレースホルダーの\"%s\" が翻訳から見つかりません。" #, c-format msgid "Superfluous placeholder “%s” that isn’t in source text." msgstr "原文に含まれていない余分なプレースホルダ \"%s\"。" msgid "Plural form translations" msgstr "複数形の翻訳" msgid "Not all plural forms are translated." msgstr "複数形がすべて翻訳されていません。" msgid "Inconsistent upper/lower case" msgstr "一貫性のない大文字/小文字の使用" msgid "The translation should start as a sentence." msgstr "翻訳は文章から始まる必要があります。" msgid "The translation should start with a lowercase character." msgstr "翻訳は小文字から始まる必要があります。" msgid "Inconsistent whitespace" msgstr "一貫性のない空白の使用" msgid "The translation doesn’t start with a space." msgstr "翻訳がスペースで始まっていません。" msgid "The translation starts with a space, but the source text doesn’t." msgstr "翻訳はスペースで始まっていますが、原文はそうではありあません。" msgid "The translation is missing a newline at the end." msgstr "翻訳の末尾に改行がありません。" msgid "The translation ends with a newline, but the source text doesn’t." msgstr "翻訳は改行で終わっていますが、原文はそうではありません。" msgid "The translation is missing a space at the end." msgstr "翻訳の最後にスペースがありません。" msgid "The translation ends with a space, but the source text doesn’t." msgstr "翻訳はスペースで終わっていますが、原文はそうではありあません。" msgid "Punctuation checks" msgstr "句読点のチェック" #, c-format msgid "The translation should end with “%s”." msgstr "翻訳は \"%s\" で終える必要があります。" #, c-format msgid "The translation should not end with “%s”." msgstr "翻訳は \"%s\" 以外で終える必要があります。" #, c-format msgid "The translation ends with “%s”, but the source text ends with “%s”." msgstr "翻訳は \"%s\" で終わっていますが、原文は \"%s\" で終わっています。" msgid "Cloud" msgstr "" msgid "Clear Menu" msgstr "メニューを消去" msgid "Clear menu" msgstr "メニューを消去" msgid "Comment:" msgstr "コメント:" msgid "Update" msgstr "更新" msgid "&Delete" msgstr "削除 (&D)" msgid "Delete the comment" msgstr "コメントを削除" msgid "Edit project" msgstr "プロジェクトを編集" msgid "Project name:" msgstr "プロジェクト名:" msgid "Browse" msgstr "参照" msgid "Add directory to the list" msgstr "ディレクトリをリストに追加" msgid "OK" msgstr "OK" msgid "&File" msgstr "ファイル (&F)" msgid "&New…" msgstr "新規 (&N)…" msgid "New from &POT/PO file…" msgstr "POT/PO ファイルを元に新規 (&P)…" msgid "New From &POT/PO File…" msgstr "POT/PO ファイルを元に新規 (&P)…" msgid "&Open…" msgstr "開く (&O)…" msgid "Open Recent" msgstr "最近のファイルを開く" msgid "Open recent" msgstr "最近使用したファイル" msgid "Open cloud translation…" msgstr "クラウド翻訳を開く…" msgid "Open Cloud Translation…" msgstr "クラウド翻訳を開く…" msgid "&Start window" msgstr "スタートウィンドウ(&S)" msgid "&Start Window" msgstr "スタートウィンドウ(&S)" msgid "Catalogs &manager" msgstr "カタログマネージャ (&M)" msgid "Catalogs &Manager" msgstr "カタログマネージャ (&M)" msgid "&Close" msgstr "閉じる (&C)" msgid "&Save" msgstr "保存 (&S)" msgid "Save &as…" msgstr "名前を付けて保存 (&A)…" msgid "Save &As…" msgstr "名前を付けて保存 (&A)…" msgid "Compile to MO…" msgstr "MO にコンパイル…" msgid "E&xport to HTML…" msgstr "" msgid "Check for updates…" msgstr "アップデートの確認…" msgid "Settings…" msgstr "設定…" msgid "&Preferences" msgstr "設定 (&P)" msgid "E&xit" msgstr "終了 (&X)" msgid "Quit" msgstr "終了" msgid "Copy from singular" msgstr "単数形から複製" msgid "Copy From Singular" msgstr "単数形から複製" msgid "Translation needs &work" msgstr "翻訳要確認 (&W)" msgid "Translation Needs &Work" msgstr "翻訳要確認 (&W)" msgid "Edit &comment" msgstr "コメントを編集 (&C)" msgid "Edit &Comment" msgstr "コメントを編集 (&C)" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "提案" msgid "&Find…" msgstr "検索 (&F)…" msgid "Replace…" msgstr "置換…" msgid "Find next" msgstr "次を検索" msgid "Find previous" msgstr "前を検索" msgid "Find and Replace…" msgstr "検索と置換…" msgid "Find Next" msgstr "次を検索" msgid "Find Previous" msgstr "前を検索" msgid "Show string &ID" msgstr "文字列 ID を表示(&I)" msgid "Show String &ID" msgstr "文字列 ID を表示(&I)" msgid "Show warnings" msgstr "警告を表示" msgid "Show Warnings" msgstr "警告を表示" msgid "Sort by &file order" msgstr "ファイル順でソート (&F)" msgid "Sort by &File Order" msgstr "ファイル順でソート (&F)" msgid "Sort by &source" msgstr "ソース順でソート (&S)" msgid "Sort by &Source" msgstr "ソース順でソート (&S)" msgid "Sort by &translation" msgstr "翻訳順でソート (&T)" msgid "Sort by &Translation" msgstr "翻訳順でソート (&T)" msgid "&Group by context" msgstr "コンテクストでグループ化 (&G)" msgid "&Group By Context" msgstr "コンテクストでグループ化 (&G)" msgid "Entries with errors first" msgstr "エラーのある項目を先頭に表示" msgid "Entries with Errors First" msgstr "エラーのある項目を先頭に表示" msgid "&Untranslated entries first" msgstr "未訳の項目を先頭に (&U)" msgid "&Untranslated Entries First" msgstr "未訳の項目を先頭に (&U)" msgid "&Show code occurrences" msgstr "コードでの出現箇所を表示(&S)" msgid "&Show Code Occurrences" msgstr "コードでの出現箇所を表示(&S)" msgid "Show sidebar" msgstr "サイドバーを表示" msgid "Show status bar" msgstr "ステータスバーを表示" msgid "&Translation" msgstr "翻訳(&T)" msgid "&Update from source code" msgstr "ソースコードから更新 (&U)" msgid "&Update from Source Code" msgstr "ソースコードから更新 (&U)" msgid "Update from &POT file…" msgstr "POT ファイルから更新 (&P)…" msgid "Update from &POT File…" msgstr "POT ファイルから更新 (&P)…" msgid "Sync with Crowdin" msgstr "Crowdin と同期" msgid "Pre-&translate…" msgstr "事前翻訳 (&T)…" msgid "&Validate translations" msgstr "翻訳を検査 (&V)" msgid "&Validate Translations" msgstr "翻訳を検査 (&V)" msgid "Remove Same-as-Source Translations" msgstr "" msgid "&Purge deleted translations" msgstr "削除された翻訳を一掃する (&P)" msgid "&Purge Deleted Translations" msgstr "削除された翻訳を一掃する (&P)" msgid "&Properties…" msgstr "プロパティ (&P)…" msgid "&Go" msgstr "移動 (&G)" msgid "&Done and next" msgstr "翻訳済みとし、次へ (&D)" msgid "&Done and Next" msgstr "翻訳済みとし、次へ (&D)" msgid "Previously edited" msgstr "編集済み" msgid "Previously Edited" msgstr "編集済み" msgid "&Previous translation" msgstr "前の翻訳 (&P)" msgid "&Previous Translation" msgstr "前の翻訳 (&P)" msgid "&Next translation" msgstr "次の翻訳 (&N)" msgid "&Next Translation" msgstr "次の翻訳 (&N)" msgid "P&revious unfinished" msgstr "前の未訳または未確定 (&R)" msgid "P&revious Unfinished" msgstr "前の未訳または未確定 (&R)" msgid "Ne&xt unfinished" msgstr "次の未訳または未確定 (&X)" msgid "Ne&xt Unfinished" msgstr "次の未訳または未確定 (&X)" msgid "Previous plural form" msgstr "前の複数形" msgid "Previous Plural Form" msgstr "前の複数形" msgid "Next plural form" msgstr "次の複数形" msgid "Next Plural Form" msgstr "次の複数形" msgid "&Online help" msgstr "オンラインヘルプ (&O)" msgid "&Online Help" msgstr "オンラインヘルプ (&O)" msgid "&GNU gettext manual" msgstr "GNU gettext ドキュメント (&G)" msgid "&GNU gettext Manual" msgstr "GNU gettext ドキュメント (&G)" msgid "&About Poedit" msgstr "Poedit について (&A)" msgid "&About" msgstr "このプログラムについて (&A)" msgid "Extractor setup" msgstr "抽出ツール設定" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "セミコロン区切りの拡張子 (例. *.cpp;*h):" msgid "Invocation:" msgstr "呼び出し:" msgid "Command to extract translations:" msgstr "翻訳を抽出するコマンド:" 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 は文字集合フラグ (以下を参照) です。" msgid "An item in keywords list:" msgstr "キーワード一覧の各項目:" msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "各キーワードごとに一回コマンドラインへ追加されます。\n" "%k にキーワード名が展開されます。" msgid "An item in input files list:" msgstr "入力ファイル一覧の各項目:" #, 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 にファイル名が展開されます。" msgid "Source code charset:" msgstr "ソースコードの文字符号化法:" #, 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 に符号化法の値が展開されます。" msgid "Translation Properties" msgstr "翻訳の特性" msgid "Project name and version:" msgstr "プロジェクト名とバージョン:" msgid "Language team:" msgstr "言語チーム:" msgid "Plural forms:" msgstr "複数形:" msgid "Use default rules for this language" msgstr "この言語のデフォルトルールを使う" msgid "Use custom expression" msgstr "カスタム表現を使用" msgid "Learn about plural forms" msgstr "複数形とは" msgid "Charset:" msgstr "文字符号化法:" msgid "Advanced Extraction Settings…" msgstr "高度な抽出設定…" msgid "Advanced extraction settings…" msgstr "高度な抽出設定…" msgid "Translation properties" msgstr "翻訳の設定" msgid "Sources Paths" msgstr "ソースのパス" msgid "Sources paths" msgstr "ソースの検索パス" msgid "Extract text from source files in the following directories:" msgstr "以下のディレクトリのソースファイルからテキストを抽出:" msgid "Base path:" msgstr "ベースのパス:" msgid "Sources Keywords" msgstr "ソース中のキーワード" msgid "Sources keywords" msgstr "ソース中のキーワード" msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "ソースファイル中でこれらのキーワード (または関数名) を\n" "翻訳対象文字列の認識に使います:" msgid "Also use default keywords for supported languages" msgstr "対応言語のデフォルトキーワードも利用可能" msgid "Learn about gettext keywords" msgstr "gettext キーワードとは" msgid "Update summary" msgstr "要約を更新" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" "これらの文字列がソース中に存在しますが、ファイルには含まれていませんでし" "た。\n" "Poedit はファイルにこれらの文字列を追加します。" msgid "New strings" msgstr "新規文字列" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" "これらの文字列はソースコードにはもう存在しません。 \n" "Poedit はファイルからこれらの文字列を削除します。" msgid "Obsolete strings" msgstr "もう使われていない文字列" msgid "(0 new, 0 obsolete)" msgstr "(新規 0、使用しないように変更 0)" msgid "Open" msgstr "" msgid "Open file" msgstr "ファイルを開く" msgid "Save file" msgstr "ファイルを保存" msgid "Validate" msgstr "検査" msgid "Check for errors in the translation" msgstr "翻訳中のエラーをチェック" msgid "Update from code" msgstr "コードから更新" msgid "Update from Code" msgstr "コードから更新" msgid "Update from source code" msgstr "ソースコードから更新" msgid "Sidebar" msgstr "サイドバー" msgid "Show or hide the sidebar" msgstr "サイドバーを表示・非表示にする。" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. msgid "Previous source text" msgstr "以前のソーステキスト" msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "未確定翻訳が対応する旧ソーステキスト (更新による変更前)。" msgid "Notes for translators" msgstr "翻訳者への注釈" msgid "Comment" msgstr "コメント" msgid "Add comment" msgstr "コメントを追加" msgid "Add Comment" msgstr "コメントを追加" msgid "Delete From Translation Memory" msgstr "翻訳メモリから削除" msgid "Delete from translation memory" msgstr "翻訳メモリから削除" msgid "Translation suggestions" msgstr "翻訳の提案" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). msgid "No matches found" msgstr "一致するものが見つかりませんでした" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). msgid "No Matches Found" msgstr "一致するものが見つかりませんでした" msgid "This string was found in Poedit’s translation memory." msgstr "Poedit の翻訳メモリにこの文字列が見つかりました。" msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "翻訳の提案は、ソーステキストが利用可能であることが必要です。実テキストがない " "ID のみが使われている場合は、利用できません。" msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "翻訳提案では、原文の言語が判明している必要があります。Poedit はこのファイルで" "言語を検出できませんでした。" msgid "The TMX file is malformed." msgstr "TMX ファイルの形式が正しくありません。" msgid "No translations were found in the TMX file." msgstr "TMX ファイル内に翻訳が見つかりませんでした。" #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "翻訳メモリのデータベースが破損しています: %s (%d)。" #, c-format msgid "Translation memory error: %s (%d)." msgstr "翻訳メモリエラー: %s (%d)。" msgid "Cannot create temporary directory." msgstr "一時ディレクトリを作成できません。" msgid "There are no translations. That’s unusual." msgstr "翻訳が存在しません。何かがおかしいようです。" msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "Translators typically use PO template files (POTs) prepared for them by the " "developer." msgstr "" "翻訳可能な項目は手動で Gettext システムに追加されるのではなく、ソースコードか" "ら自動的に抽出されます。\n" "これにより、項目を常に最新版で正確に保つことができます。\n" "翻訳者は通常、開発者が用意した PO テンプレートファイル (POT) を使用します。" msgid "(Learn more about GNU gettext)" msgstr "(GNU gettext の詳細)" msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "この翻訳ファイルを埋める一番簡単な方法は、POT ファイルから更新することです。" msgid "Update from POT" msgstr "POT ファイルから更新" msgid "Take translatable strings from an existing POT template." msgstr "既存の POT テンプレートから翻訳可能な文字列を使います。" msgid "" "You can also extract translatable strings directly from the source code:" msgstr "翻訳可能な文字列をソースコードから直接抽出できます。" msgid "Extract from sources" msgstr "ソースから抽出" msgid "Configure source code extraction in Properties." msgstr "設定画面でソースコード抽出を設定できます。" #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #, c-format msgid "Version %s" msgstr "バージョン %s" msgid "Create new" msgstr "新規作成" msgid "Create new translation from POT template." msgstr "POT テンプレートから新しい翻訳を作成します。" msgid "Browse files" msgstr "ファイルを閲覧" msgid "Open and edit translation files." msgstr "翻訳ファイルを開いて編集します。" msgid "Translate cloud project" msgstr "クラウドのプロジェクトを翻訳" msgid "Collaborate with other people online." msgstr "オンラインで他の人とコラボレーションしましょう。" msgid "Recent files" msgstr "最近使用したファイル" msgid "Sync" msgstr "同期" 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") #, c-format msgid "About %s" msgstr "%s について" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #, c-format msgid "%s Preferences" msgstr "%s 環境設定" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "サービス" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "%s を非表示" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "ほかを非表示" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "すべて表示" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "%s を終了" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "設定…" msgid "Preferences..." msgstr "設定…" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "最近" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "頻繁" msgid "&Apply" msgstr "適用 (&A)" msgid "Apply" msgstr "適用" msgid "&Back" msgstr "戻る (&B)" msgid "Back" msgstr "戻る" msgid "&Cancel" msgstr "キャンセル (&C)" msgid "&Clear" msgstr "消去 (&C)" msgid "Clear" msgstr "消去" msgid "Copy" msgstr "コピー" msgid "Cu&t" msgstr "切り取り (&T)" msgid "Cut" msgstr "切り取り" msgid "Edit" msgstr "編集" msgid "&Quit" msgstr "終了 (&Q)" msgid "Help" msgstr "ヘルプ" msgid "&New" msgstr "新規 (&N)" msgid "New" msgstr "新規" msgid "&No" msgstr "いいえ (&N)" msgid "No" msgstr "いいえ" msgid "&OK" msgstr "OK (&O)" msgid "Open…" msgstr "開く…" msgid "&Open..." msgstr "開く (&O)…" msgid "Open..." msgstr "開く..." msgid "&Paste" msgstr "ペースト (&P)" msgid "Paste" msgstr "ペースト" msgid "Preferences" msgstr "環境設定" msgid "&Redo" msgstr "やり直し (&R)" msgid "Refresh" msgstr "再読み込み" msgid "&Save as" msgstr "名前を付けて保存 (&S)" msgid "Save as" msgstr "名前を付けて保存" msgid "Select &All" msgstr "すべてを選択 (&A)" msgid "Select All" msgstr "すべてを選択" msgid "&Undo" msgstr "取り消し (&U)" msgid "&Yes" msgstr "はい (&Y)" msgid "Yes" msgstr "はい" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "上" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "下" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "左" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "右" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "shift" poedit-3.5/locales/pa.mo0000644000175100001770000016216614664354154012200 00000000000000$<\"- - ---J. Z.d. s.}. .............. //"/(/-/5/=/O/a/e/ i/ v//// //////0,02080A0G0 P0 ^0 l0y000000001 171G1 e1 q1{1111 1 1 11 1 1 11 22 '232G2P2 f2r2'w222 222)313 63A3<T3D3$33 44 4"$4G4 b4m44444444 5535B5 H5S5 e5p55555555 55 66"686N61m66 66)67 $7Y2777777777 88.8 A8^N8?8 8 899.9"395V99999 9 9 9 9 ::!:):1:8:>:fP:u:(-;V;i;"{;; ; ;";;*;0<!O<'q<<<<(<T< Q=_= d= n=|==== = = = == >>5>=> F>R> Z>e>j> r> ~>>>>>>z_?? ??@@/@K@e@l@ @@ @ @@@@;@(2A[AxAA A AA AAAB: B GB<UB B.BBB*BC4C DCNCeC*nCC C CCqDuDD DDDD'D/E0E%EEkEnEEE E EEE EFF #F/FIFQFYFaFgF|FF'G-GCGIG1\GnGG;H @HNHUH@oH,H,H II +I7IFIUIjI IIIIIII8IJ J,J1J 9J EJ QJ_J gJ tJJ J(JJJJJJ J J K K!K )K 4K AK KK XK dKoKK"KKKK K L L%L,L 5LBL\LlL L LLLL LL!L M M(M0M9M AMOMhM{MMMM M M MMM N #N/N>NQNbNsNKzNNN NN O#O1?OqO O OO)P.P@P HPVP+sPP P"PPCP8$Q]QLR8R1%SRWScSQT`T'{T:T-TC UAPUKU0U.V>V!V)V-WCGW,WLW]XJcX[X7 YmBY_Y[ZlZrZZZ ZZZZ[7["R[u[[[[[X\\\p\ u\\\\\\ \"\]]2]C]S]d]|]]]<]]]$^8^X^r^^#^^^^ ^_%_7_R_c_j_.r_ ___5_m_7m` `3`a`EaJaOaSapa.ua aaaabb)bBb!Rbtb d0d?Pd%ddEe[exee#eeeef,fDf_f*pf*ffff%f%%g Kg Ygggxgg#g#ggg h .hOhihhh h&h&h"!iADiAiiiii*j,@j,mj"jjLjL(kAukAkk l&l*?l+jl)lJl m!m3m Cm Pm ]mjmm%mm"m n'nEGn%nn"nno;&o"booeoGo68p op|pIpopMq]q*xqq,rOr s#s3s4Gs`|sMs9+t,et,t%ttuCuXbu\u3v9Lv-vv#v"v#w"6wYw%mw%wgw!x4x/Hx,xxKxxy:y:SyEyyCTzz,zPzU0{{{a|g|?x| |0| |E}EI},}}"}}~  ;s@L<IӁ 0P"m&ׂ 0,y:<<X.%i׆-AVoƇgG] G?eY=ߊ *D#a)6,--J-x&&͌8- = JV] u)#ƍ0@K\ sC6-zE-EMb&ȓ8(E_-t 4nMS*̕1)[&r+ ŖҖ [|).""٘]2Z6ęMڙ(C? ++f M1Z1" -0PMy<[U(ž 8".YQ58"/=/m";( 8(B,kP 6 -9:[tУ{=WVڦ&1Xx)̧7 .Of9|= #%ũ(թ*2-]--ڪ"i2 # &&8&_&"ͬ+"?Yq(,Vۭ52=h֮ -CJ)""ۯ%5$,Z:°)߰] %g ű-ٱG.OG~Ʋݲ6"("Kn1=3,F c Ŵ3o)͵0&@Bo$?4t(40Jceɹ̹O3S-[CzbTY8Sjgp qa*WGY,fW{EwwP& $ I1G{"%K7km>KP.):J Q r3-403F[`110 *Q0|="?!aJvG`]`}@MMm55 AWT=Z Efv~ .* YcJP `m+q^+M-'{6'(=8g&]>5y H~<Q+ 6uuWyf_c`"Y"*<2 T!Cs QWnbLp$)?jsJ.9 Pl=G7G:aq=b%l kwq!0k$Z-w(`#-BxHm^R@|g,#\DoUSh/@r[}zhe{EZX17&; 46%' 3!KX_FA$1dJjIr\[?t4(OApv  t}M" DV#/0Y3)LO8~zfnKFiTENS^  :Mx9U8C{ iV  ;>m ,v]2eI d5o|+'Pc*N.RaB (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(0 new, 0 obsolete)(New: %i, obsolete: %i)(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd AccountAdd CommentAdd Files…Add Folders…Add ProjectAdd accountAdd commentAdd directory to the listAdd files…Add folders…Add projectAdditional keywordsAdvancedAll Translation FilesAll stringsAlt+Always 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 errorCrowdin is an online localization management platform and collaborative translation tool.Ctrl+Cu&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 againDownDownloading 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:EnterEnter 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 loading translation file “%s”.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExport as…Extracting translatable strings…Failed command: %sFailed 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.Finalizing…FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iFrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 CrowdinLeftLine %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 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 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.OKObsolete stringsOneOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen translation templateOpen...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 translationsQuitQuit %sReading file content failed with the following error: %sRecentRecent filesRedoRefreshReload FileReload fileRemaining: %dReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReveal in FinderReviewRightSaveSave &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 languageServicesSet LanguageSet languageSettings…Shift+Show AllShow SidebarShow Spelling and GrammarShow Status BarShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow summary after updating filesShow 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 entries in the file are probably incorrect.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.UntransUpUpdateUpdate 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 the file failed. Click on 'Details >>' for details.Updating 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);go to item at given line numberhandle a poedit:// URIpre-translate from TMshiftunknown 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: 2024-08-30 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)(0 ਨਵਾਂ, 0 ਪੁਰਾਣਾ)(ਨਵੇਂ: %i, ਬਰਤਰਫ਼: %i)(ਮੂਲ ਭਾਸ਼ਾ ਵਰਤੋਂ)(ਸਾਈਨ ਇਨ ਨਹੀਂ ਹੈ)(ਵਿੰਡੋਜ਼ 8 ਜਾਂ ਨਵੀਂ ਚਾਹੀਦੀ ਹੈ)< ਪਿੱਛੇ(&P)<ਬੇਨਾਮ>%s ਬਾਰੇਖਾਤਾਖਾਤੇਜੋੜੋਖਾਤਾ ਜੋੜੋਟਿੱਪਣੀ ਜੋੜੋਫ਼ਾਈਲਾਂ ਜੋੜੋ…ਫੋਲਡਰ ਜੋੜੋ…ਪਰੋਜੈਕਟ ਜੋੜੋਖਾਤਾ ਜੋੜੋਟਿੱਪਣੀ ਜੋੜੋਡਾਇਰੈਕਟਰੀ ਲਿਸਟ ਵਿੱਚ ਸ਼ਾਮਲਫ਼ਾਈਲਾਂ ਜੋੜੋ…ਫੋਲਡਰ ਜੋੜੋ…ਪਰੋਜੈਕਟ ਜੋੜੋਵਾਧੂ ਕੀਵਰਡਤਕਨੀਕੀਸਾਰੀਆਂ ਅਨੁਵਾਦ ਫ਼ਾਇਲਾਂਨਵੀਂਆਂ ਸਤਰਾਂAlt+ਹਮੇਸ਼ਾ ਪਾਠ ਲਿਖਣ ਖੇਤਰ 'ਤੇ ਹੀ ਕੇਂਦਰਿਤ ਕਰੋਇੰਪੁੱਟ ਫਾਇਲ ਲਿਸਟ ਵਿੱਚ ਇਕਾਈ:ਸ਼ਬਦ ਲਿਸਟ 'ਚ ਇੱਕ ਇਕਾਈ:ਦਿੱਖਲਾਗੂ ਕਰੋਆਟੋਮੈਟਿਕ ਅੱਪਡੇਟ ਲਈ ਜਾਂਚ ਕਰੋਸੰਭਾਲਣ ਉੱਤੇ ਆਟੋਮੈਟਿਕ ਹੀ MO ਫ਼ਾਈਲ ਕੰਪਾਈਲ ਕਰੋਪਿੱਛੇਮੁੱਖ ਮਾਰਗ:ਸਭ ਤੋਂ ਅੱਗੇ ਲਿਆਓਖਰਾਬ PO ਫ਼ਾਈਲ: ਬਹੁਵਚਨ ਕਿਸਮ msgstr ਨੂੰ msgid_plural ਤੋਂ ਬਿਨਾਂ ਵਰਤਿਆਖਰਾਬ PO ਫ਼ਾਈਲ: ਇੱਕਵਚਨ ਕਿਸਮ msgstr ਨੂੰ msgid_plural ਨਾਲ ਇਕੱਠੇ ਵਰਤਿਆਅਨੁਵਾਦ ਸਤਰ ਵਿੱਚ ਖਰਾਬ ਮਾਰਕਅੱਪ।ਝਲਕਫਾਈਲਾਂ ਦੀ ਝਲਕਰੱਦ ਕਰੋਰੱਦ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…ਆਰਜ਼ੀ ਡਾਇਰੈਕਟਰੀ ਬਣਾਈ ਨਹੀਂ ਜਾ ਸਕਦੀ ਹੈ।ਪ੍ਰੋਗਰਾਮ ਚਲਾਇਆ ਨਹੀਂ ਜਾ ਸਕਦਾ: %sਅੰਗਰੇਜ਼ੀ ਦੇ ਵੱਡੇ ਅੱਖਰਕੈਟਾਲਾਗ ਮੈਨੇਜਰ(&M)ਕੈਟਾਲਾਗ ਮੈਨੇਜਰ(&m)ਕੈਟਲਾਗ ਮੈਨੇਜਰUI ਭਾਸ਼ਾ ਬਦਲੋਅੱਖਰ-ਸੈਟ :ਦਸਤਾਵੇਜ਼ ਦੀ ਹੁਣੇ ਜਾਂਚ ਕਰੋਲਿਖਣ ਦੇ ਨਾਲ ਨਾਲ ਵਿਆਕਰਨ ਦੀ ਜਾਂਚ ਕਰੋਲਿਖਣ ਦੇ ਨਾਲ ਨਾਲ ਹੀ ਸ਼ਬਦ-ਜੋੜ ਚੈੱਕ ਕਰੋਅੱਪਡੇਟ ਲਈ ਜਾਂਚ ਕਰੋ…ਅੱਪਡੇਟਾਂ ਲਈ ਜਾਂਚ ਕਰੋ…ਸ਼ਬਦ-ਜੋੜ ਜਾਂਚ ਕਰੋਸਾਫ਼ ਕਰੋਮੇਨੂ ਸਾਫ਼ ਕਰੋਅਨੁਵਾਦ ਮਿਟਾਓਮੇਨੂ ਸਾਫ਼ ਕਰੋਅਨੁਵਾਦ ਮਿਟਾਓਬੰਦ ਕਰੋਕੋਡ ਮੌਜੂਦਗੀਆਂਕੋਡ ਮੌਜੂਦਗੀਆਂਸਰੋਤ ਫ਼ਾਈਲਾਂ ਨੂੰ ਇਕੱਠਾ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…ਟਿੱਪਣੀਟਿੱਪਣੀ:…MO ਵਜੋਂ ਕੰਪਾਈਲ ਕਰੋਇੱਥੇ ਕੰਪਾਇਲ ਕਰੋ…ਕੰਪਾਇਲ ਕੀਤੀਆਂ ਅਨੁਵਾਦ ਫਾਈਲਾਂਤਸਦੀਕਕਾਪੀ ਕਰੋਸਰੋਤ ਲਿਖਤ ਤੋਂ ਕਾਪੀ ਕਰੋਸਰੋਤ ਲਿਖਤ ਤੋਂ ਕਾਪੀ ਕਰੋਆਪਣੇ-ਆਪ ਹੀ ਸ਼ਬਦ-ਜੋੜ ਠੀਕ ਕਰੋਫ਼ਾਈਲ ਨੂੰ ਲੋਡ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ ਸ਼ਾਇਦ ਇਹ ਖ਼ਰਾਬ ਹੈ।%s ਫਾਈਲ ਸੰਭਾਲੀ ਨਹੀਂ ਜਾ ਸਕੀ।ਨਵਾਂ ਬਣਾਓਨਵਾਂ ਅਨੁਵਾਦ ਬਣਾਓPOT ਟੈਮਪਲੇਟ ਤੋਂ ਨਵਾਂ ਅਨੁਵਾਦ ਬਣਾਓਨਵਾਂ ਭਾਸ਼ਾ ਅਨੁਵਾਦ ਪ੍ਰੋਜੈਕਟ ਬਣਾਓCrowdin ਗਲਤੀCrowdin ਆਨਲਾਈਨ ਲੋਕਾਲਾਈਜ਼ੇਸ਼ਨ ਇੰਤਜ਼ਾਮ ਕਰਨ ਵਾਲਾ ਮੰਚ ਅਤੇ ਮਿਲਕੇ ਅਨੁਵਾਦ ਕਰਨ ਦਾ ਸਾਧਨ ਹੈ।Ctrl+ਕੱਟੋ(&t)ਟੂਲਬਾਰ ਨੂੰ ਕਸਟਮਾਈਜ਼ ਕਰੋ…ਕੱਟੋਡਿਸਕ ਉੱਤੇ ਡਾਟਾਬੇਸ:ਹਟਾਓਅਨੁਵਾਦ ਮੈਮੋਰੀ ਵਿੱਚੋਂ ਹਟਾਓਅਨੁਵਾਦ ਮੈਮੋਰੀ ਵਿੱਚੋਂ ਹਟਾਓਪਰੋਜੈਕਟ ਨੂੰ ਹਟਾਓਟਿੱਪਣੀ ਹਟਾਓਪਰੋਜੈਕਟ ਹਟਾਓਡਾਇਰੈਕਟਰੀ:ਕੀ ਤੁਸੀਂ ਡਿਸਕ ਤੋਂ ਫ਼ਾਈਲ ਮੁੜ-ਲੋਡ ਕਰਨੀ ਹੈ? ਅਜਿਹਾ ਕਰਨ ਨਾਲ Poedit ਵਿੱਚ ਨਾ-ਸੰਭਾਲੇ ਸੰਪਾਦਨ ਖੁੰਝ ਜਾਣਗੇ।ਕੀ ਤੁਸੀਂ ਸਭ ਅਨੁਵਾਦਾਂ ਨੂੰ ਹਟਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ, ਜੋ ਕਿ ਹੁਣ ਵਰਤੋਂ ਯੋਗ ਨਹੀਂ ਹਨ?ਨਾ ਸੰਭਾਲੋ(&n)ਨਾ ਸੰਭਾਲੋਮੁੜ ਨਾ ਦਿਖਾਓਮੁੜ ਨਾ ਦਿਖਾਓDownਤਾਜ਼ੇ ਅਨੁਵਾਦਾਂ ਨੂੰ ਡਾਊਨਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…ਇਸ ਪ੍ਰੋਜੈਕਟ ਦੇ ਅਨੁਵਾਦ ਡਾਊਨਲੋਡ ਕਰਨ ਦੀ ਸੁਵਿਧਾ ਬੰਦ ਹੈ।ਫੋਲਡਰ ਜਾਂ ਫ਼ਾਈਲਾਂ ਇੱਥੇ ਖਿੱਚੋਫੋਲਡਰ ਜਾਂ ਫਾਈਲਾਂ ਇੱਥੇ ਖਿੱਚੋਬਾਹਰ(&x)ਸੋਧਟਿੱਪਣੀ ਸੋਧ(&C)ਟਿੱਪਣੀ ਸੋਧ(&c)ਟਿੱਪਣੀ ਸੋਧੋਟਿੱਪਣੀ ਸੋਧਪਰੋਜੈਕਟ ਸੋਧੋਪਰੋਜੈਕਟ ਸੋਧਸੋਧਿਆ ਜਾਂਦਾ ਹੈਸੋਧੋ…ਈਮੇਲ:Enterਪੂਰੀ ਸਕਰੀਨ ਉਤੇ ਜਾਓਇਸ ਫ਼ਾਈਲ ਵਿਚਲੇ ਇੰਦਰਾਜਾਂ ਦੇ ਵੱਖੋ-ਵੱਖਰੇ ਬਹੁਵਚਨ ਹਨ ਜੋ ਇਸ ਫ਼ਾਈਲ ਦੇ ਬਹੁਵਚਨ ਵਾਲੇ ਸਿਰਲੇਖ ਦੇ ਉਲਟ ਹੈਖਾਮੀਆਂ ਵਾਲੇ ਇੰਦਰਾਜਾਂ ਨੂੰ ਸੂਚੀ ਵਿੱਚ ਲਾਲ ਰੰਗ ਲਗਾਇਆ ਗਿਆ। ਕਿਸੇ ਇੰਦਰਾਜ ਨੂੰ ਚੁਣਨ ਨਾਲ ਉਸ ਵਿਚਲੀ ਖਾਮੀ ਦੇ ਵੇਰਵੇ ਦਿਸਣਗੇ।“%s” ਅਨੁਵਾਦ ਫਾਈਲ ਲੋਡ ਕਰਨ ਵਿੱਚ ਸਮੱਸਿਆ ਖੜ੍ਹੀ ਹੋਈ।ਫਾਈਲ ਖੋਲ੍ਹਣ ਦੌਰਾਨ ਗਲਤੀਫ਼ਾਈਲ ਸੰਭਾਲਣ ਵੇਲੇ ਖਾਮੀXLIFF ਫ਼ਾਈਲ ਨੂੰ ਲੋਡ ਕਰਨ ਵੇਲੇ ਗੜਬੜ ਹੋਈ: %sਗ਼ਲਤੀਆਂਹਰ ਚੀਜ਼…ਵਜੋਂ ਐਕਸਪੋਰਟਅਨੁਵਾਦ ਕਰਨਯੋਗ ਸਤਰਾਂ ਕੱਢੀਆਂ ਜਾ ਰਹੀਆਂ ਹਨ…ਕਮਾਂਡ ਫੇਲ੍ਹ ਹੋਈ: %sPoedit ਪ੍ਰਕਿਰਿਆ ਨਾਲ ਸੰਚਾਰ ਨਹੀਂ ਹੋਇਆ।ਕੱਢੇ ਗਏ ਅਨੁਵਾਦਾਂ ਵਾਲੀ ਫ਼ਾਈਲ ਲੋਡ ਕਰਨਾ ਅਸਫ਼ਲ ਰਿਹਾ।gettext ਸਾਰਨੀਆਂ ਵਿੱਚ ਮਿਲਾਨ ਕਰਨਾ ਅਸਫ਼ਲ ਰਿਹਾ।ਅਨੁਵਾਦ ਮੈਮੋਰੀ ਅੱਪਡੇਟ ਕਰਨ ਲਈ ਫੇਲ੍ਹ: %sਫ਼ਾਈਲਫਾਈਲ ਖੋਲ੍ਹੀ ਨਹੀਂ ਜਾ ਸਕਦੀ ਹੈਫ਼ਾਈਲ “%s” ਮੌਜੂਦ ਨਹੀਂ ਹੈ।ਫਾਈਲ “%s” ਅਨੁਵਾਦ ਵਾਲੀ ਫਾਈਲ ਨਹੀਂ ਹੈ।ਫ਼ਾਈਲ “%s” ਸਿਰਫ਼ ਪੜ੍ਹਨ ਲਈ ਹੈ ਅਤੇ ਸੰਭਾਲੀ ਨਹੀਂ ਜਾ ਸਕਦੀ। ਇਸ ਨੂੰ ਕਿਸੇ ਵੱਖਰੇ ਨਾਂ ਨਾਲ ਸੰਭਾਲੋ।ਮੁਕੰਮਲ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…ਲੱਭੋਅੱਗੇ ਲੱਭੋਪਿੱਛੇ ਲੱਭੋ…ਲੱਭੋ ਤੇ ਬਦਲੋਟਿੱਪਣੀ ਵਿੱਚ ਖੋਜਸਰੋਤ ਟੈਕਸਟ ਵਿੱਚ ਲੱਭੋਅਨੁਵਾਦ ਵਿੱਚ ਲੱਭੋਅੱਗੇ ਲੱਭੋਪਿੱਛੇ ਲੱਭੋਭਾਸ਼ਾ ਨੂੰ ਠੀਕ ਕਰੋਭਾਸ਼ਾ ਨੂੰ ਠੀਕ ਕਰੋਸਿਰਲੇਖ ਠੀਕ ਕਰੋਸਿਰਲੇਖ ਠੀਕ ਕਰੋਫਲੱਟਰ ਅਨੁਵਾਦ ਫ਼ਾਈਲਾਂਫਾਰਮ %iਅਕਸਰGNU gettextਆਮHTML ਫਾਈਲਾਂਮਦਦ%s ਨੂੰ ਲੁਕਾਓਹੋਰਾਂ ਨੂੰ ਲੁਕਾਓਬਾਹੀ ਓਹਲੇ ਕਰੋਹਾਲਤ ਪੱਟੀ ਓਹਲੇ ਕਰੋਇਹ ਸੂਚਨਾ ਸੁਨੇਹਾ ਓਹਲੇ ਕਰੋਕਲਾਉਡ ਸਿੰਕ ਕਿਵੇਂ ਕੰਮ ਕਰਦਾ ਹੈ?ਆਈਡੀਜੇਕਰ ਤੁਹਾਨੂੰ ਪਹਿਲਾਂ ਵੀ ਤੁਹਾਡੀਆਂ ਫ਼ਾਈਲਾਂ ਤੱਕ ਜਾਣ ਨਹੀਂ ਦਿੱਤਾ ਗਿਆ, ਤਾਂ ਤੁਸੀਂ ਸਿਸਟਮ ਤਰਜੀਹਾਂ > ਸੁਰੱਖਿਆ ਅਤੇ ਪਰਦੇਦਾਰੀ > ਪਰਦੇਦਾਰੀ > ਫ਼ਾਈਲਾਂ ਅਤੇ ਫ਼ੋਲਡਰਾਂ ਵਿੱਚ ਇਹ ਇਜਾਜ਼ਤ ਦੇ ਸਕਦੇ ਹੋ।ਜੇਕਰ ਤੁਹਾਨੂੰ ਪਹਿਲਾਂ ਵੀ ਤੁਹਾਡੀਆਂ ਫ਼ਾਈਲਾਂ ਤੱਕ ਜਾਣ ਨਹੀਂ ਦਿੱਤਾ ਗਿਆ, ਤਾਂ ਤੁਸੀਂ ਸਿਸਟਮ ਸੈਟਿੰਗਾਂ > ਪਰਦੇਦਾਰੀ ਤੇ ਸੁਰੱਖਿਆ > ਫ਼ਾਈਲਾਂ ਅਤੇ ਫ਼ੋਲਡਰਾਂ ਵਿੱਚ ਇਹ ਇਜਾਜ਼ਤ ਦੇ ਸਕਦੇ ਹੋ।ਅਣਗੌਲਿਆ ਕਰੋਅੱਖਰ ਅਕਾਰ ਨੂੰ ਅਣਡਿੱਠਾ ਕਰੋTMX ਤੋਂ ਇੰਪੋਰਟ ਕਰੋ…ਅਨੁਵਾਦ ਫਾਈਲਾਂ ਇੰਪੋਰਟ ਕਰੋ…TMX ਤੋਂ ਇੰਪੋਰਟ ਕਰੋ…ਅਨੁਵਾਦ ਫਾਈਲਾਂ ਇੰਪੋਰਟ ਕਰੋ…ਅਨੁਵਾਦ ਇੰਪੋਰਟ ਕੀਤੇ ਜਾ ਰਹੇ ਹਨ…ਇਸ ਵਿੱਚ: %sਬੀਟਾ ਵਰਜਨ ਸਮੇਤਅਨੁਵਾਦਕ ਬਾਰੇ ਜਾਣਕਾਰੀਇੰਸਟਾਲ ਕਰੋਗਲਤ ਫ਼ਾਈਲਸਹਾਇਤਾ :JSON ਅਨੁਵਾਦ ਫ਼ਾਈਲਾਂਰੱਖੋਭਾਸ਼ਾ ਦਾ ਨਾਂ ਜਾਂ ਕੋਡਅਨੁਵਾਦ ਦੀ ਭਾਸ਼ਾ ਅਤੇ ਸਰੋਤ ਦੀ ਭਾਸ਼ਾ ਇੱਕੋ ਹੈ।ਅਨੁਵਾਦ ਦੀ ਭਾਸ਼ਾ ਸੈੱਟ ਨਹੀਂ ਹੈ।ਅਨੁਵਾਦ ਦੀ ਭਾਸ਼ਾ:ਭਾਸ਼ਾ ਚੋਣਭਾਸ਼ਾ ਟੀਮ:ਭਾਸ਼ਾ:ਆਖਰੀ ਸੋਧgettext ਕੀਵਰਡ ਬਾਰੇ ਜਾਣੋਹੋਰ ਜਾਣੋ%s ਬਾਰੇ ਹੋਰ ਜਾਣੋCrowdin ਬਾਰੇ ਹੋਰ ਜਾਣੋਖੱਬੇਫ਼ਾਈਲ “%2$s” ਦੀ ਕਤਾਰ %1$d ਵਿੱਚ ਖਰਾਬੀ ਹੈ (ਵਾਜਬ %3$s ਡਾਟਾ ਨਹੀਂ)।ਲਾਈਨ ਸਮਾਪਤੀ:ਇਕਸਟੈਸ਼ਨਾਂ ਦੀ ਲਿਸਟ ਅਰਧ ਕਾਮਿਆਂ ਨਾਲ ਲਿਖੋ (ਜਿਵੇ ਕਿ *.cpp;*.h):ਅੰਗਰੇਜ਼ੀ ਲੋਡ ਕਰੋMO ਫ਼ਾਈਲਾਂ ਦਾ Poedit ਵਿੱਚ ਸਿੱਧੇ ਸੰਪਾਦਨ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ।ਲੋਅਰਕੇਸ ਬਣਾਓਅੱਪਰਕੇਸ ਬਣਾਓਇਸ POT ਫਾਈਲ ਤੋਂ ਨਵੀਂ ਟਰਾਂਸਲੇਸ਼ਨ ਬਣਾਓ।ਨੁਕਸਦਾਰ ਸਿਰਲੇਖ: “%s”ਖਾਤਿਆਂ ਦਾ ਇੰਤਜ਼ਾਮ ਕਰੋ…ਇੰਤਜ਼ਾਮਫ਼ਰਕਾਂ ਨੂੰ ਮਿਲਾਇਆ ਜਾ ਰਿਹਾ ਹੈ…ਘੱਟੋ-ਘੱਟਅਨੁਵਾਦ ਦੇ ਪ੍ਰੋਜੈਕਟ ਦਾ ਨਾਂਨਾਂ:ਕੰਮ ਕਰਨ ਦੀ ਲੋੜ ਹੈਕੰਮ ਕਰਨ ਦੀ ਲੋੜ ਹੈਸਤਰਾਂ ਦੀ ਸੂਚੀ ਕਦੇ ਕੇਂਦਰਿਤ ਨਾ ਹੋਣ ਦਿਉ। ਜੇ ਏਦਾਂ ਹੈ ਤਾਂ ਤੁਸੀਂ ਕੀਬੋਰਡ ਦੇ Ctrl- ਤੀਰ ਬਟਨਾਂ ਨਾਲ ਚੱਲ ਸਕਦੇ ਹੋ, ਪਰ ਤੁਸੀ Tab ਦਬਾਏ ਬਿਨਾਂ ਵੀ ਤੁਰੰਤ ਲਿਖ ਸਕਦੇ ਹੋ।ਨਵਾਂ&POT/PO ਫ਼ਾਈਲ ਤੋਂ ਨਵਾਂ…&POT/PO ਫ਼ਾਈਲ ਤੋਂ ਨਵਾਂ…ਨਵੀਂਆਂ ਸਤਰਾਂਨਹੀਂਕੋਈ ਮੇਲ ਨਹੀਂ ਲੱਭੇਕੋਈ ਮੇਲ ਨਹੀਂ ਲੱਭਿਆਅਨੁਵਾਦ ਵਿੱਚ ਕੋਈ ਖਾਮੀ ਨਹੀ ਲੱਭੀ।ਤੁਹਾਡੇ ਖਾਤੇ ਵਿੱਚ ਕੋਈ ਅਨੁਵਾਦ ਪ੍ਰੋਜੈਕਟ ਨਹੀਂ ਹੈ।ਕੋਈ ਵਰਤੋਂ ਜਾਣਕਾਰੀ ਨਹੀਂਅਧਿਕਾਰ ਨਹੀਂ ਹੈ, ਦੁਬਾਰਾ ਸਾਈਨ ਇਨ ਕਰੋ।ਠੀਕ ਹੈਪੁਰਾਣੀਆਂ ਸਤਰਾਂਇੱਕਕਲਾਉਡ ਅਨੁਵਾਦ ਖੋਲ੍ਹੋ…ਸੱਜਰੇ ਖੋਲ੍ਹੇਅਨੁਵਾਦ ਫਾਈਲਾਂ ਨੂੰ ਖੋਲ੍ਹੋ ਅਤੇ ਸੋਧੋਕਲਾਉਡ ਅਨੁਵਾਦ ਖੋਲ੍ਹੋਕਲਾਉਡ ਅਨੁਵਾਦ ਖੋਲ੍ਹੋ…ਫ਼ਾਈਲ ਖੋਲ੍ਹੋਐਡੀਟਰ ਵਿੱਚ ਖੋਲ੍ਹੋਐਡੀਟਰ ਵਿੱਚ ਖੋਲ੍ਹੋਸੱਜਰੇ ਖੋਲ੍ਹੋਅਨੁਵਾਦ ਟੈਂਪਲੇਟ ਖੋਲ੍ਹੋਖੋਲ੍ਹੋ…ਖੋਲ੍ਹੋ…ਚੋਣਾਂਹੋਰPO ਅਨੁਵਾਦ ਫਾਈਲਾਂPOT ਅਨੁਵਾਦ ਟੈਂਪਲੇਟPOT ਫਾਈਲਾਂ ਸਿਰਫ਼ ਟੈਂਪਲੇਟ ਹੁੰਦੀਆਂ ਹਨ ਅਤੇ ਖੁਦ ਕੋਈ ਟਰਾਂਸਲੇਸ਼ਨ ਨਹੀਂ ਰੱਖਦੀਆਂ। ਟਰਾਂਸਲੇਸ਼ਨ ਕਰਨ ਲਈ ਟੈਂਪਲੇਟ ਦੇ ਅਧਾਰ ਉੱਤੇ ਨਵੀਂ PO ਫਾਈਲ ਬਣਾਓ।ਚੇਪੋਚੇਪੋ ਅਤੇ ਮਿਲਾਨ ਸਟਾਈਲਮਾਰਗਇਜਾਜ਼ਤ ਨਹੀਂ ਦਿੱਤੀ ਗਈ।ਅਨੁਵਾਦ ਵਿੱਚੋਂ “%s” ਨਿਸ਼ਾਨ ਖੁੰਝਿਆ ਹੈ।ਕਿਰਪਾ ਕਰਕੇ ਇਸਦੀ ਬਜਾਏ ਸਬੰਧਿਤ PO ਫ਼ਾਈਲ ਖੋਲ੍ਹ ਕੇ ਸੰਪਾਦਨ ਕਰੋ। ਇਸਦੇ ਸੰਭਾਲੇ ਜਾਣ 'ਤੇ MO ਫ਼ਾਈਲ ਵੀ ਅੱਪਡੇਟ ਹੋ ਜਾਵੇਗੀ।ਬਹੁਵਚਨਇਸ ਫ਼ਾਈਲ ਵਿੱਚ ਵਰਤਿਆ ਬਹੁਵਚਨ ਕਥਨ %s ਮੁਤਾਬਕ ਠੀਕ ਨਹੀਂ ਹੈ।ਬਹੁਵਚਨ ਰੂਪ:ਪੋਆਡਿਟਪੋਆਡਿਟ - ਕੈਟਾਲਾਗ ਮੈਨੇਜਰPoedit ਨੇ ਫ਼ਾਈਲ “%s” ਵਿਚਲੀ ਅਢੁਕਵੀਂ ਸਮੱਗਰੀ ਨੂੰ ਆਪਣੇ-ਆਪ ਠੀਕ ਕੀਤਾ।Poedit ਵਰਤਣ ਲਈ ਸੌਖਾ ਅਨੁਵਾਦ ਸੰਪਾਦਕ ਹੈ।Poedit “%s” ਫ਼ਾਈਲ ਖੋਲ੍ਹਣ ਲਈ ਅਸਮਰੱਥ ਸੀ।ਕੱਚਾ-ਅਨੁਵਾਦ(&t)…ਕੱਚਾ-ਅਨੁਵਾਦਮੇਰੀ ਪਸੰਦਮੇਰੀ ਪਸੰਦ...ਮੇਰੀ ਪਸੰਦ…ਪਿਛਲੀ ਸਰੋਤ ਲਿਖਤਪਰੋਜੈਕਟ ਨਾਂ ਅਤੇ ਵਰਜ਼ਨ:ਪਰੋਜੈਕਟ ਨਾਂ:ਪਰੋਜੈਕਟ:ਪਰੋਜੈਕਟਵਿਸ਼ਰਾਮ-ਚਿੰਨ੍ਹ ਦੀ ਜਾਂਚਹਟਾਏ ਗਏ ਅਨੁਵਾਦ ਨੂੰ ਕੱਢੋਬਾਹਰ%s ਤੋਂ ਬਾਹਰ ਜਾਓਅੱਗੇ ਦਿੱਤੀ ਗੜਬੜ ਕਰਕੇ ਫ਼ਾਈਲ ਦੀ ਸਮੱਗਰੀ ਨੂੰ ਪੜ੍ਹਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ: %sਤਾਜ਼ਾਸੱਜਰੀਆਂ ਫਾਈਲਾਂਵਾਪਿਸ ਕਰੋਤਾਜ਼ਾ ਕਰੋਫਾਈਲ ਮੁੜ-ਲੋਡ ਕਰੋਫ਼ਾਈਲ ਮੁੜ-ਲੋਡ ਕਰੋਬਾਕੀ: %dਤਬਦੀਲਸਾਰਿਆਂ ਨੂੰ ਬਦਲੋ(&A)ਸਾਰਿਆਂ ਨੂੰ ਬਦਲੋ(&a)ਬਦਲਵੀ ਸਤਰਬਦਲੋ…ਬਹੁਵਚਨ ਲਈ ਲੋੜੀਂਦਾ ਸਿਰਲੇਖ ਮੌਜੂਦ ਨਹੀਂ ਹੈ।ਮੁੜ-ਸੈੱਟ ਕਰੋFinder ਵਿੱਚ ਦਿਖਾਓਪੜਤਾਲਸੱਜੇਸੰਭਾਲੋ…ਵਜੋਂ ਸੰਭਾਲੋ(&A)…ਵਜੋਂ ਸੰਭਾਲੋ(&a)ਫ਼ਿਰ ਵੀ ਸੰਭਾਲੋਫ਼ਿਰ ਵੀ ਸੰਭਾਲੋਵਜੋਂ ਸੰਭਾਲੋ…ਵਜੋਂ ਸੰਭਾਲੋਤਬਦੀਲੀਆਂ ਸੰਭਾਲੋਫ਼ਾਈਲ ਸੰਭਾਲੋਸਕਰੀਨਸ਼ਾਟ:ਸਭ ਚੁਣੋ(&A)ਸਭ ਚੁਣੋਡਾਇਰੈਕਟਰੀ ਚੁਣੋਅਨੁਵਾਦ ਫਾਈਲ ਚੁਣੋਇੰਪੋਰਟ ਕਰਨ ਲਈ ਅਨੁਵਾਦ ਫਾਈਲਾਂ ਚੁਣੋਅਨੁਵਾਦ ਟੈਂਪਲੇਟ ਚੁਣੋਆਪਣੀ ਪਸੰਦ ਦੀ ਭਾਸ਼ਾ ਚੁਣੋਸਰਵਿਸਾਂਭਾਸ਼ਾ ਦਿਓਭਾਸ਼ਾ ਦਿਓਸੈਟਿੰਗਾਂ…Shift+ਸਾਰੇ ਵੇਖੋਬਾਹੀ ਵੇਖਾਓਸ਼ਬਦ-ਜੋੜ ਅਤੇ ਵਿਆਕਰਨ ਵੇਖਾਓਹਾਲਤ ਪੱਟੀ ਵੇਖਾਓਤਬਾਦਲੇ ਦਿਖਾਓਟੂਲਬਾਰ ਦਿਖਾਓਚਿਤਾਵਨੀ ਦਿਖਾਓਐਕਸਪਲੋਰਰ ਵਿੱਚ ਵੇਖਾਓਫੋਲਡਰ ਵਿੱਚ ਵੇਖਾਓਬਾਹੀ ਵੇਖੋ ਜਾਂ ਓਹਲੇ ਕਰੋਬਾਹੀ ਵੇਖਾਓਹਾਲਤ ਪੱਟੀ ਵੇਖਾਓਫਾਈਲਾਂ ਅੱਪਡੇਟ ਕਰਨ ਦੇ ਬਾਅਦ ਸਾਰ ਵੇਖਾਓਚਿਤਾਵਨੀ ਦਿਖਾਓਬਾਹੀਸਾਈਨ ਇਨਸਾਈਨ ਆਉਟਸਾਈਨ ਇਨ%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 ਗਲਤੀ ਹੈ।ਨਾ-ਅਨੁਵਾਦUpਅੱਪਡੇਟਸਭ ਅੱਪਡੇਟਪਰੋਜੈਕਟ ਵਿਚਲੀਆਂ ਸਭ ਕੈਟਾਲਾਗ ਅੱਪਡੇਟ&POT ਫਾਈਲ ਤੋਂ ਅੱਪਡੇਟ…&POT ਫਾਈਲ ਤੋਂ ਅੱਪਡੇਟ…ਕੋਡ ਤੋਂ ਅੱਪਡੇਟ ਕਰੋPOT ਤੋਂ ਅੱਪਡੇਟ ਕਰੋਕੋਡ ਤੋਂ ਅੱਪਡੇਟ ਕਰੋਸਰੋਤ ਕੋਡ ਤੋਂ ਅੱਪਡੇਟ ਕਰੋਅੱਪਡੇਟ ਸੰਖੇਪਅੱਪਡੇਟਅੱਪਡੇਟ ਕਰਨਾ ਅਸਫ਼ਲ ਰਿਹਾ।ਫ਼ਾਈਲ ਅੱਪਡੇਟ ਨਹੀਂ ਹੋ ਸਕੀ। ਵੇਰਵਿਆਂ ਲਈ 'ਵੇਰਵੇ >>' 'ਤੇ ਕਲਿੱਕ ਕਰੋ।ਅਨੁਵਾਦ ਅੱਪਡੇਟ ਕੀਤੇ ਜਾ ਰਹੇ ਹਨਵਰਤੋਂਕਾਰ ਜਾਣਕਾਰੀ ਨੂੰ ਅੱਪਡੇਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…ਅਨੁਵਾਦ %s ਉੱਤੇ ਅੱਪਲੋਡ ਕਰਨ ਥਈ ਅਸਫ਼ਲ ਹੈ।ਅਨੁਵਾਦ %s ਉੱਤੇ ਅੱਪਲੋਡ ਕੀਤੇ ਜਾ ਰਹੇ ਹਨ…ਅਨੁਵਾਦਾਂ ਨੂੰ ਅੱਪਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…ਪਸੰਦੀਦਾ ਸੂਚੀ ਫ਼ੋਟ ਵਰਤੋਂ:ਪਸੰਦੀਦਾ ਪਾਠ ਖੇਤਰ ਫ਼ੋਂਟ ਵਰਤੋਂ:ਇਹ ਭਾਸ਼ਾ ਲਈ ਡਿਫਾਲਟ ਨਿਯਮ ਵਰਤੋਂਅਨੁਵਾਦ ਮੈਮੋਰੀ ਵਰਤੋਂਤਸਦੀਕ ਕਰੋਪ੍ਰਮਾਣੀਕਰਨ ਦੇ ਨਤੀਜੇ%s ਵਰਜ਼ਨਪਰਮਾਣਕਿਤਾ ਦੀ ਉਡੀਕ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ…ਪੋਐਡਿਟ ਵਲੋਂ ਜੀ ਆਇਆਂ ਨੂੰਜਦੋਂ ਸਰੋਤ ਤੋਂ ਅੱਪਡੇਟ ਕੀਤਾ ਜਾਂਦਾ ਹੈਪੂਰੇ ਸ਼ਬਦ ਹੀਵਿੰਡੋWindowsਕੀ ਤੁਸੀਂ ਅੰਗਰੇਜ਼ੀ ਨੂੰ ਸਰੋਤ ਲਿਖਤ ਵਜੋਂ ਵਰਤਣਾ ਚਾਹੁੰਦੇ ਹੋ?ਪਾਸਿਓ ਸਮੇਟੋXLIFF ਅਨੁਵਾਦ ਫ਼ਾਈਲਾਂਹਾਂਤੁਸੀਂ Poedit ਵਿੰਡੋ ਵਿੱਚ ਇੱਕ ਤੋਂ ਵੱਧ ਫ਼ਾਈਲਾਂ ਨਹੀਂ ਸੁੱਟ ਸਕਦੇ।ਤੁਹਾਡੇ ਕੋਲ ਫ਼ਾਈਲ ਦੀਆਂ ਪ੍ਰਾਪਟੀਆਂ ਵਿੱਚ ਦੱਸੇ ਟਿਕਾਣੇ 'ਤੇ ਦਿੱਤੀਆਂ ਸਰੋਤ ਕੋਡ ਫ਼ਾਈਲਾਂ ਨੂੰ ਪੜ੍ਹਨ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ।ਤੁਹਾਨੂੰ ਤਬਦੀਲੀਆਂ ਲਾਗੂ ਕਰਨ ਲਈ Poedit ਨੂੰ ਮੁੜ ਚਾਲੂ ਕਰਨਾ ਪਵੇਗਾ।ਤੁਹਾਡਾ ਨਾਂਜੇ ਤੁਸੀਂ ਤਬਦੀਲੀਆਂ ਨਹੀਂ ਸੰਭਾਲਦੇ ਤਾਂ ਉਹ ਖੁੰਝ ਜਾਣਗੀਆਂ।ਤੁਹਾਡਾ ਨਾਂ ਅਤੇ ਈਮੇਲ ਐਡਰੈੱਸ, ਜੋ ਹੇਠਾਂ ਦਿੱਤਾ ਜਾਵੇਗਾ, ਨੂੰ GNU gettext ਫਾਇਲਾਂ ਵਿੱਚ Last-Translator ਹੈੱਡਰ ਲਈ ਵਰਤਿਆ ਜਾਵੇਗਾ।ਸਿਫ਼ਰਜ਼ੂਮaltਕੰਮ ਕਰਨ ਦੀ ਲੋੜ ਹੈctrlਅਸਥਾਈ ਫ਼ਾਈਲਾਂ ਨਾ ਮਿਟਾਓ (ਡੀਬੱਗਿੰਗ ਲਈ)ਜਿਵੇਂ nplurals=2; plural=(n > 1);ਦਿੱਤੇ ਸਤਰ ਨੰਬਰ 'ਤੇ ਆਈਟਮ 'ਤੇ ਜਾਓpoedit:// URI ਹੈਂਡਲ ਕਰੋTM ਤੋਂ ਕੱਚਾ ਅਨੁਵਾਦ ਕਰੋshiftਅਣਜਾਣ ਭਾਸ਼ਾਅਸਮਰਥਿਤ ਵਰਜਨ (%s)you@example.com“%s” ਜਾਇਜ਼ POT ਫਾਈਲ ਨਹੀਂ ਹੈ।poedit-3.5/locales/lt.mo0000644000175100001770000015546214664354154012220 00000000000000w)x7 y7 7&77<78J8gf8 88 88 89 999"9)9/979F9U9[9a9j9~999999999999 : ::$:-: 4:A:Q:g:}:::::::::: ; $; 2;?;E;a;};;;;;;;;<3<J<Z< x< <<<<< < < <<< < <= "=/= >=J=Z=n====== > >1>P>'U>}>> >>7>6>4?)T?~? ?]??<?D<@$@@ @@ @"@@) A 7ABATAfAwAAAAAA#AB,B;B ABLB ^BiB{BBBBB BBBBC C-C/HC xCCCCCCC1C-D FDQD)hDD DDDDDDE E!E(EGEXEwEEE;E E'E^F?|F F FF*FG(G"-G5PGGGGG G G G G G HH#H+H2H8HfJHHHuH([III"II III I JJ0)JZJtJ#J<J"J K K(K*;K0fK!K'KKKK(LTDL LL L LLLLL M M +M 8MEMTMcM}MMM MM MMM M MMMNNzN;O BONOaO }OOO2OOP P#PAP YPzP P PPP;P(PQ9QLQ [Q eQsQQ QQQQ:Q !R</R lR.yRRR*RRS S(S?S*HSsSySS S SSSTTT TTTTT#T\ U}U'U+UU$U%VBVXV[VlVpVW W *W KWUWdW sWWWWWWWWWWXXXX=XY1YFYn_YEYZZ;4Z pZ~ZZ@ZZ[,\,\\ ]]2]*R]}]]w^ ^^^^%^^_&_;_M___ y________8_` `'`,` 4` @` L`Z` b` o`|` `(```z`]anaua{a a a a aa a a a a aa bb"5bXbtbb b b bbb bbb cc ,c 9cGcXcgc ccc!c ccccc c dd(d1d Bd Od [dhd|dddddddvee eeee ee ffKfff{f fffff1f$g 3g AgMg=ghhh(hh hh+ i9i $ c q{є5Get)!ؕ   >H e o ɖܖ: A(Kmt:  *79J!4""; DNdz̙ ՙ   pǚ)8bz$ƛٛ2-`z!C!! 8F\/{$*Н"7dZΞמ "ARarΟן   & 1?Xq0 ,ơ ':P2nâ7ۢ&AJ \j2գ /($X } Ĥ@ˤ C d@zѥ+4 EQ h,t˦ էܧ$<TW7kG4(Q0zũԩ۩"ª%ߪ)=Z t  ūثv~A%w:S ?/oB 3%ְ*B/Աs % / <J%aó߳ ( > IS gq 2 -F_hq +ܵ~}  Ƕ۶ 4FW#i.  '1B R_ fsո/">ay(ι ( A L#X |!&ֺ!&>e1Pj{Ƽ޼<Ynýܽ2, = HTB((ܿ!+7M 13 C2%XR3*UA[VJ f'TS#XL|C: 4H)}!*,)CVq D(HmRH^O`Jv"1o*oq | /53#ir?kO , "< MW `k#}, %) O p O$+#Pt ',5&   .!Bd{2H<CZ5 6tV - )+J&v# rZ)$YY?Ee_@Vr1 b6Ad?C\N>RwzmUCFb rIn"8f7oc 1}Hn+yhdgv:G&^# ,v0q4at' o7<=:JMGuEa O%eJ^<E!-`[2ou96%eh V>`d3A]jc5%l L0.=2W$}N" PkF Cvk|t"8D.S+'4KL#M|'MpA8=9&K|D(X]yxf4jGBRYp,2&IqD5ByzQ3-N?l06HHlaX1(j$U[z7 5(*Twg*OJSRs xm@*i`T+~[gn/})IW{9Pi\Sw\{<~ucp/XsB_:if!> sqQ]- 3LP;O tQbk_;;K)/# x @TZ.!,{m~FUWZhV^ (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd AccountAdd CommentAdd Files…Add Folders…Add Wildcard…Add accountAdd 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 languagesAlt+Always 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 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.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 errorCtrl+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 no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownDownloading 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:EnterEnter 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 loading translation file “%s”.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export errorExport 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…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)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import errorImport from TMX…Import translation files…Importing translation memory from “%s” failed.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 CrowdinLeftLine %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 translations were found in the TMX file.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKObsolete stringsOneOnly 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 translation templateOpen...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 translationsQuitQuit %sReading file content failed with the following error: %sRecentRecent 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 FinderReviewRightSaveSave &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 languageServicesSet LanguageSet languageSettings…Shift+Show AllShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow summary after updating filesShow 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 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.These strings are no longer in the source code. Poedit will remove them from the file now.These strings were found in the sources but were not in the file. Poedit will add them to the file now.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.Translated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation entries in the file are probably incorrect.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 — %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 errorUntransUpUpdateUpdate 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 the file failed. Click on 'Details >>' for details.Updating 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown 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: 2024-08-30 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ų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(0 naujų, 0 senų)(Sužinokite daugiau apie GNU gettext)(Naujas: %i, senasis: %i)(Naudoti numatytąją kalbą)(neprisijungęs)(būtina Windows 8 arba naujesnė versija)< &AnkstesnisApie %sPaskyraPaskyrosPridėtiPridėti paskyrąPridėti komentarąPridėti failus…Pridėti aplankus…Pridėti pakaitos simbolį…Pridėti paskyrą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žiusAlt+Visada aktyvuoti teksto įvedimo lauką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 įeitysRenkama 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.PatvirtinimasKopijuotiKopijuoti 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 klaidaCtrl+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.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 nebenaudojamus vertimus?&NeįrašytiNeišsaugotiDaugiau neberodytiNežymėti „Reikia peržiūrėti“ jei pilnai atitinkaDaugiau neberodytiŽemynAtsiunčiami naujausi vertimai…Vertimų atsiuntimas šiame projekte yra išjungtas.Nutempkite aplankus ir failus čiaNutempkite aplankus ir failus čia&IšeitiRedaguotiRedaguoti &komentarąRedaguoti &komentarąKoreguoti komentarąKoreguoti komentarąRedaguoti projektąRedaguoti projektąTaisymasRedaguoti…El. paštas:EnterVisas 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 įkeliant vertimo failą „%s“.Klaida atveriant failąKlaida įrašant failąKlaida įkeliant sql XLIFF failą %sKlaidosViskasIgnoruojami keliaiEksportuoti į TMX…Eksportuoti kaip…Eksportavimo klaidaEksportuoti į TMX…Vertimų 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šgaunamos verstinos eilutės…Ištraukėjo nuostatosIštraukėjaiNepavykus komanda: %sNepavyko 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.Užbaigiama…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)Dažnai naudotiGNU gettextBendraHTML failaiŽinynasSlėpti %sSlėpti kitusSlėpti šoninę juostąSlėpti būsenos juostąSlėpti šį pranešimą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…Importavimo klaidaImportuoti iš TMX…Importuoti vertimų failus…Vertimų atminties importas iš „%s“ nepavyko.Importuojami vertimai…Faile %sĮtraukti beta versijasNesuderintas didžiųjų/mažųjų raidžių naudojimasNesuderinti tarpaiInformacija apie vertėjąĮdiegtiNetinkamas failasIškvietimas:JSON 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 CrowdinKairė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…Naujas 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ų.TMX faile nerasta vertimų.Nėra naudojimo informacijosNe visos daugiskaitos formos išverstos.Nesankcionuota, prašome prisijungti dar kartą.Pastabos vertėjamsGeraiSeni žodžiaiVienasĮ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 paskiausiai naudotąAtverti ir redaguoti vertimų failus.Atverti failąAtverti redaktoriujeAtverti rašyklėjeAtverti paskiausiai naudotusAtverti vertimo šablonąAtverti...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ąBaigti %s darbąFailo turinio nuskaityti nepavyko dėl klaidos: %sPaskiausiai naudotiPaskiausiai naudoti failaiPakartotiĮkelti iš naujoĮkelti failą iš naujoĮkelti failą iš naujoLiko: %dPakeistiPakeisti &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ėtiDešinėIšsaugotiIšsaugoti k&aip…Išsaugoti k&aip…Vis tiek įrašytiVis tiek įrašytiIšsaugoti kaipĮrašyti…Išsaugoti pakeitimusIšsaugoti failąŽ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ąPaslaugosNustatyti kalbąNurodyti kalbąNuostatos…Shift+Rodyti visusRodyti š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 &IDPo failų atnaujinimų rodyti santraukąRodyti į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ė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).SinchronizuotiSuvienodinti su „Crowdin“Sinchronizuoti vertimą su „Crowdin“SinchronizuojamaSuvienodinimo klaidaSuvienodinti 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.Šių eilučių nebėra pradiniuose tekstuose. Poedit juos pašalins ir iš failo.Šios eilutės yra šaltiniuose, bet jų nėra faile. „Poedit“ juos įtrauks ir į failą.Š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š visoTransformacijosGettext sistemoje įrašai vertimui nėra pridedami rankiniu būdu, bet automatiškai išgaunami iš pradinio teksto. Tokiu būdu jie lieka naujausi ir tikslūs. Vertėjai paprastai naudoja PO šablono failus (POT), kuriuos sukuria programų autoriai.Išversta: %d iš %d (%d %%)VertimasVertimo kalbaVertimų atmintisVertimą būtina tobulintiVertimo savybėsPanašu, kad vertimo įrašai faile neteisingi.Sugadinta 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 klaidaNeverstosAukštynAtnaujintiAtnaujinti 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 nepavykoFailo atnaujinimas nepavyko. Norėdami sužinoti daugiau, spauskite Daugiau >>.Naujinami 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 rezultataiVersija %sLaukiama tapatybės nustatymo…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.NulisPriartintialtBūtina peržiūrėtictrlnešalinti laikinų failų, skirtų derinimuipvz. nplurals=2; plural=(n > 1);parinkti panašų vertimą iš paties failopereiti prie eilutės su duotu numeriuvykdyti poedit:// URIversti preliminariai iš VAshiftnežinoma kalbanepalaikoma versija (%s)you@example.com„%s“ nėra tinkamas POT failas.poedit-3.5/locales/ka.mo0000644000175100001770000021502714664354153012165 00000000000000id7&3 3 3&33<34J+4gv4 44 45 555#5+52595?5G5V5e5k5q5z55555555555 6 6 6 6+646=6 D6Q6a6w66666666667 &7 47 B7O7U7q77777777 8+8C8Z8j8 8 88888 8 8 88 88 9 9$9 >9K9 Z9f9v999999 : !: .:::'?:g:: :::: ::<:D/;$t;; ;;.< 5<"C<f<+<)< <<<==*=3=F=b=~=#==== == = >>!>'>8>%I>o> >>>>> >> ?k???????-?1+@]@ v@@)@@ @Y@JAPAUAhA{AAAAAAABB#B 6B'CB^kB?B C C%C8CKC"PC5sCCCCC C C D D D-D>DFDNDUD[DmDDuDE*E"s"xsssHsH tRtTltTtu3uDuXu/qu/u u u>u>)vhvvv"vv&v& w2wHRwKwwxx>x)UxHxHx,y,>ykyyHyHyH1zHzz8z8z 5{ C{8Q{P{<{b|;{|K|}}+}K}d}}4}7}4 ~C>~1~>~4~7(8`4C1>DPNԀ#YB\Y8S+.sX`B!Y: 85ڄ҅i%7mW^܉;5Ҋ8;A=}AAVY]CVRC:!(4J4444Jdm~l]YӐQ7E4}Y \"CJܓC'JkYzO,"|>bޖTA$DDG-u0Sə4SR(.Ϛ('G;Fʜg""ŝ}cceɟ!ݟ>;>=z:77+!c"¡NN4DGHQ4 O(p+ ť7.Mrަ:Q'HomXvWΩGީ5&V\ȫ1ث. ,91f8+Ѭ1./(^(776 W=d Ѯ+(>TJ;ޯm<.)ڵP1U)P= @>K7=·VW(p3!3 Y@&/ %Bº=cEJ2KQ@:ؽnD;M14CJ`;t;==*h3(3\7DD R.\. [;{MwaRv@ c'PTq1MP%B1h1T;!]s! 2218PH$8=@7~P5&\Cc?844;p{7v!$$ @.xo;;$2`==F,V=Y gz.DGDD"Hk22C!4V!S=7++@%l%(+7 (E5n,+N(LAufGWf3(:>c]J<K=+:7-7es>JP<|:U%oo'>F++1?/ON?/N>=EB%T+z*D7DN7>17&J^;JY0.$'9'V@~]{x4/9dqrVe2R*M}k7^j+g@1rT ,!6MX7%:QX7]mQ7=U2 2!`=18( 2HX.tZ<<; 1x 8 1 G 7] ! >  b D h l8 b PIYhy "\7"ZCp2MA5w4#sX7 %c 9=={&Z-v-/-]c?FHj 'KzxOhb H:aM#Gf%"WXI4Sz v$A8aK`g6-.)bd4G/NC&!9B`(:]^.H+jc !](VW 3r _VGy ZkkRY0X1> ?#>|?=)iJ5K^[IAPQtlC u1 e8_< ig\o 9FD15U'3E@&&swI}n!Y]_}c 3"fQC~7Rx6"5/;(+^Dgo* %?NdJ$q7TLJl4.SOFLvfq|<Aan/mp;Rh8*u,0hLEP#M[~B,EUV%2\2SPpZM\@yX<YtwW2Dc9e 6*';@$Tsb)QTeFr=:Z{=B>,  d-O[0m+{UN- `7i (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd AccountAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add accountAdd 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 stringsAlt+Always change focus to text input fieldAn item in input files list:An item in keywords list:AppearanceApplyAutomatically check for updatesBackBase 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 errorCrowdin is an online localization management platform and collaborative translation tool.Ctrl+Cu&tCustom Extractors:Custom extractors:Customize 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 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 againDownDownloading 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:EnterEnter 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: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export errorExport to TMX…Exporting translations…Extract from sourcesExtract text from source files in the following directories:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…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)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport 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 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 CrowdinLeftLine %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 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.No translation projects listed in your account.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKObsolete stringsOneOnly fill in exact matchesOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen translation templateOpen...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 translationsQuitQuit %sReading file content failed with the following error: %sRecentRecent filesRedoRefreshReload FileReload fileRemaining: %dReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryReveal in FinderReviewRightSaveSave &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 languageServicesSet LanguageSet languageSettings…Shift+Show AllShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow summary after updating filesShow 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 findSubstitutionsSuggestionsSyncSync 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” 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 entries in the file are probably incorrect.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 errorUntransUpUpdateUpdate 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 the file failed. Click on 'Details >>' for details.Updating 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’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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown 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: 2024-08-30 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 შეფერხება.“%2$s” ფაილის %1$i ხაზი სწორად არ ჩაიტვირთა.“%2$s” ფაილის %1$i ხაზი სწორად არ ჩაიტვირთა.ფორმატი: %s%s-ის პარამეტრებიფორმატი: %sშ&ესახებPoedit-ის შ&ესახებ&დადასტურება&უკან&გაუქმება&გასუფთავება&დახურვა&კოპირება&წაშლა&დასრულება და შემდეგი&დასრულება და შემდეგი&რედაქტირება&ფაილი&ძებნა…&GNU gettext-ის დახმარების ფაილები&GNU gettext-ის დახმარების ფაილები&გადასვლა&კონტექსტის მიხედვით დაჯგუფება&კონტექსტის მიხედვით დაჯგუფება&დახმარება&ახალი&ახალი…&შემდეგი >&შემდეგი თარგმანი&შემდეგი თარგმანი&არა&დიახ&ონლაინ-სახელმძღვანელო&ონლაინ-სახელმძღვანელო&გახსნა...&გახსნა…ჩ&ასმა&პარამეტრები&მორგება…&წინა თარგმანი&წინა თარგმანი&თვისებები…&წაშლილ თარგმანთა გაწმენდაწაშლილი თარგმანების &ამოშლა&გამოსვლა&გამეორება&ჩანაცვლებაშ&ენახვაშენახვა &როგორც&კოდის აღმოჩენების ჩვენება&კოდის აღმოჩენების ჩვენება&საწყისი ფანჯარა&საწყისი ფანჯარა&თარგმანი&გაუქმება&ჯერ უთარგმნელი შენატანები&ჯერ უთარგმნელი შენატანები&საწყისი კოდიდან განახლება&საწყისი კოდიდან განახლებათარგმანის &ვალიდაციათარგმანის &ვალიდაცია&ხედი&დიახ(0 ახალი, 0 მოძველებული)(შეიტყვეთ მეტი GNU gettext-ის შესახებ)(ახალი: %i, მოძველებული: %i)(გამოიყენე სისტემის სტანდარტული ენა)( არ არის ავტორიზებული)(საჭიროებს Windows 8 ან უფრო ახალს)< &წინა<უსახელო>%s-ის შესახებანგარიშიანგარიშებიდამატებაანგარიშის დამატებაკომენტარის დამატებაფაილების დამატება…საქაღალდეების დამატება…პროექტის დამატებავაილდ კარდის ჩამატება…ანგარიშის დამატებაკომენტარის დამატებაუჯრის სიაში დამატებაფაილების დამატება…საქაღალდეების დამატება…პროექტის დამატებავაილდ კარდის ჩამატება…დამატებითი საკვანძო სიტყვებიXgettext-ს დამატებითი პარამეტრები:დამატებითიგანშლის დამატებითი პარამეტრები…გამოტანის დამატებითი პარამეტრებიგანშლის დამატებითი პარამეტრები…თარგმნის ყველა ფაილიყველა კომენტარიახალი სტრიქონებიAlt+ყოველთვის გააქტიურე ტექსტის ჩასაწერი ველიელემენტი შესაყვანი ფაილის სიაში:ელემენტი სიტყვათა სიაში:გარეგნობადადასტურებაგანახლების ავტომატური შემოწმებაუკანძირითადი მდებარეობა:ყველას წინ გამოტანადაზიანებული PO ფაილი: msgstr-ის მრავლობითი ფორმა გამოყენებულია msgid_plural-ის გარეშედაზიანებული PO ფაილი: msgstr-ის მხოლობითი ფორმა გამოყენებულია msgid_plural-თან ერთადდაზიანებული მარკირებათარგმანის ხაზში.მოძიებაფაილის არჩევანაგულისხმევად ასევე არასწორ პასუხებსაც გაჩვენებთ, მაგრამ, მოინიშნებიან, როგორც ჯერ კიდევ დასამუშავებელი. ჩართეთ ეს, რათა მხოლოდ ზუსტი დამთხვევები ჩაანაცვლოთ.გაუქმებაგაუქმება…დროებითი საქაღალდის შექმნა შეუძლებელია.%s პროგრამის გაშვება ვერ ხერხდებაუცნობი ენიდან თარგმნა შეუძლებელია.საწყისი ტექსტის გარეშე წინასწარი თარგმანი შეუძლებელია.დიდი ასოთი აღნიშვნაკატალოგთა &მმართველიკატალოგების &მენეჯერიკატალოგების მმართველიინტერფეისის ენის შეცვლაკოდირება:შეამოწმე დოკუმენტი ახლაშეამოწმეთ გრამატიკა მართლწერითმართლწერის რეალურ დროში შემოწმებაგანახლებების შემოწმება…თარგმანში შეცდომების შემოწმებაგანახლებების შემოწმება…მართლწერის შემოწმებაგასუფთავებამენიუს გასუფთავებათარგმანის გაწმენდამენიუს გასუფთავებათარგმანის გაწმენდადახურვაღრუბელიკოდი ჩანსკოდი ჩანსითანამშრომლეთ სხვა ადამიანებთან ონლაინ.მონაცემების საწყისი კოდიდან შეგროვება…ბრძანება თარგმანების გამოსაღებად:კომენტარიშენიშვნები:კომენტარები იწყება პრეფიქსით:კომპილაცია MO ფაილში…კომპილაცია ფაილში…თარგმანის კომპილირებული ფაილებიდასტურიდააკავშირეთ Poedit ღრუბლოვან ლოკალიზაციის მხარდაჭერილ პლატფორმებთან, მათზე არსებული თარგმანების შეუფერხებლად სინქრონიზაციისთვის.კოპირებამხოლობითიდან დაკოპირებასაწყისი ტექსტიდან კოპირებამხოლობითიდან დაკოპირებასაწყისი ტექსტიდან კოპირებამართლწერის ავტომატური შემოწმებაLocalazy-ის პროექტის დეტალების გადმოწერის შეცდომა.ფაილის ჩატვირთვა შეუძლებელია. სავარაუდოდ იგი დაზიანებულია.%s ფაილის შენახვა ვერ მოხერხდა.ახლის შექმნაახალი თარგმანის შექმნაახალი თარგმანის შექმნა POT შაბლონიდან.შექმენი ახალი სათარგმი პროექტიCrowdin-ის შეცდომაCrowdin არის ონლაინ პლატფორმა ლოკალიზაციის მართვისა და ერთობლივი თარგმანისთვის.Ctrl+ამ&ოჭრამორგებული ექსტრაქტორები:მორგებული ექსტრაქტორები:ხელსაწყოთა ზოლის მორგება…ამოჭრაბაზის ზომა დისკზე:წაშლათარგმანის მეხსიერებიდან წაშლაექსტრაქტორის წაშლათარგმანის მეხსიერებიდან წაშლაპროექტის წაშლაკომენტარის წაშლაპროექტის წაშლაუჯრები:გნებავთ პროექტის "%s" წაშლა”?გსურთ ფაილის ხელახლა ჩატვირთვა დისკიდან? თუ ხელახლა ჩატვირთავთ, Poedit-ში თქვენს მიერ განხორციელებული ცვლილებები დაიკარგება.გსურთ ყველა იმ თარგმანის წაშლა, რომლებიც აღარ გამოიყენება?&არ შეინახოარ შეინახოაღარ მაჩვენოაღარ მაჩვენოქვემოთმიმდინარეობს უახლესი თარგმანების ჩამოტვირთვა…ამ პროექტში თარგმანების ჩამოტვირთვა გამორთულია.გადმოათრიეთ საქაღალდეები ან ფაილებიგადმოათრიეთ საქაღალდეები ან ფაილებიგა&სვლარედაქტირებაშენიშვნის &რედაქტირებაშე&ნიშვნის დამუშავებაშენიშვნის რედაქტირებაშენიშვნის დამუშავებაპროექტის დამუშავებაპროექტის დამუშავებარედაქტირებაჩასწორება…ელ-ფოსტა:Enterსრული ეკრანისიაში ჯერ შეცდომების ჩვენებასიაში ჯერ შეცდომების ჩვენებაჩანაწერები, რომელიც შეიცავს შეცდომას, სიაში მონიშნულია წითლად. შეცდომის დეტალები გამოჩნდება მაშინ, როდესაც აირჩევთ შეცდომის შემცველ ჩანაწერს.შეცდომა ფაილის გახსნისასშეცდომა ფაილის შენახვისასXLIFF ფაილის ჩატვირთვის შეცდომა: %sშეცდომებიყველაფერიამოღებული ბილიკებიTMX-ში გატანა…გატანა როგორც…გატანის შეცდომაTMX-ში გატანა…თარგმანების გატანა…წყაროდან ამოღებაშემდეგი ფოლდერებში წყარო-ფაილებიდან ტექსტის ამოღება:მიმდინარეობს სათარგმნი ფრაზების ამოღება…ექსტრაქტორის მორგებაექსტრაქტორებივერ შესრულებული ბრძანება: %sვერ მოხერხდა Poedit-ის პროცესთან დაკავშირება.ვერ მოხერხდა ფაილის ჩატვირთვა ამოღებული თარგმანებით.'gettext' კატალოგების შერწყმა ჩავარდა.თარგმანის მეხსიერების განახლების შეცდომა: %sფაილიფაილის გახსნა შეუძლებელიაფაილი "%s" არ არსებობს.ფაილი “%s” არ არის თარგმნის ფაილი.ფაილი “%s” არის მხოლოდ წაკითხვადი და მისი შენახვა შეუძლებელია. გთხოვთ, შეინახოთ სხვა სახელით.დასრულება…ძებნამომდევნოს მოძებნაწინანდელის ძიებაძებნა და შეცვლა…შენიშვნებში ძიებაწყაროს ტექსტში ძებნათარგმანში ძებნამომდევნოს მოძებნაწინანდელის ძიებაენის გასწორებაენის გასწორებაჰედერის გამოსწორებაჰედერის გამოსწორებაFlutter თარგმნის ფაილები%i-დანფორმა %i (არ გამოიყენება)ხშირიGNU gettextსაერთოHTML ფაილებიდახმარება%s-ის დამალვასხვების დამალვაგვერდითა ზოლის დამალვამდგომარეობის ზოლის დამალვადამალე ეს შეტყობინებაროგორ მუშაობს ღრუბლოვანი სინქრონიზაცია?IDთუ გაწმენდას გააგრძელებთ, სამუდამოდ წაიშლება ყველა ის თარგმანი, რომლებიც აღარ გამოიყენება. მომავალში მათი ხელახლა თარგმნა მოგიწევთ, თუ კატალოგს კვლავ დაემატება.თუ თქვენ შეზღუდეთ წვდომა თქვენს ფაილებზე, შეგიძლიათ წვდომის მიცემა სისტემის პარამეტრებში > უსაფრთხოება & კონფიდენციალურობა > კონფიდენციალურობა > ფაილები & საქაღალდეები.თუ თქვენ შეზღუდეთ წვდომა თქვენს ფაილებზე, შეგიძლიათ წვდომის მიცემა სისტემის პარამეტრებში > კონფიდენციალურობა & უსაფრთხოება > ფაილები & საქაღალდეები.იგნორირებარეგისტრის იგნორიTMX-დან შემოტანა…თარგმანის ფაილების შემოტანა…შემოტანის შეცდომაTMX-დან შემოტანა…თარგმანის ფაილების შემოტანა…თარგმანების შემოტანა…%s -შიბეტა ვერსიების ჩათვლითარამდგრადი რეგისტრიშეუთანხმებელი ჰარეებიინფორმაცია მთარგმნელის შესახებდაყენებაარასწორი ფაილიინვოკაცია:JSON თარგმნის ფაილებიშენარჩუნებაენის სახელი ან კოდითარგმანის ენა არ არის დაყენებული.თარგმანის ენა:ენის არჩევამთარგმნელი გუნდი:ენა:ბოლო ცვლილებაშეიტყვეთ მეტი gettext-ის საკვანძო სიტყვების შესახებდამატებითი ინფორმაცია მრავლობითის ფორმებთან დაკავშირებითდამატებითი ინფორმაციაშეიტყვეთ მეტი %s-ის შესახებშეიტყვეთ მეტი Crowdin-ის შესახებმარცხნივ“%2$s” ფაილის %1$d ხაზი დაზიანებულია (მონაცემი %3$s არ არის ვალიდური).სტრიქონის დასრულების სიმბოლო:გაფართოებების სია წერტილ-მძიმეებით გამოყოფილი (მაგ. *.cpp;*.h):ინგლისურის ჩატვირთვაLocalazy ავტომატიზებული ლოკალიზაციის პლატფორმაა, რომელიც ყველას აძლევს საშუალებას, თავისი პროდუქტი და შემცველობა სხვადასხვა ენაზე ადვილად თარგმნოს.MO ფაილების რედაქტირება შეუძლებელია Poedit-ში.პატარა ასოებში გადაყვანადიდ ასოებში გადაყვანაარასწორი ჰედერი: "%s"ანგარიშების მართვამართვა…განსხვავებების შერწყმა…ჩაკეცვასახელი:შემ&დეგი დაუსრულებელიშემ&დეგი დაუსრულებელისაჭიროებს დამუშავებასსაჭიროებს დამუშავებასარასოდეს გააქტიურდეს სათარგმნი ტექსტების სარკმელი. თუ ამ ფუნქციას ჩართავთ, Ctrl+ისრების საშუალებით შეგეძლებათ ტექსტებს შორის ნავიგაცია, მაგრამ ტექსტის შეყვანა პირდაპირ იქნება შესაძლებელი, შესაბამისად ტექსტის ჩასაწერად Tab ღილაკზე ხელის დაჭერა აღარ მოგიწევთ.ახალიახალი &POT/PO ფაილიდან…ახალი &POT/PO ფაილიდან…ახალი შეტყობინებებიშემდეგი მრავლობითი ფორმაშემდეგი მრავლობითი ფორმაარაარაფერი მოიძებნაწინასწარ-თარგმნადი ჩანაწერები აღმოჩენილი არაა.არაფერი მოიძებნათარგმანში შეცდომები ვერ მოიძებნა.თქვენს ანგარიშში თარგმანის პროექტები არ არის.გამოყენების მონაცემები არააყველა მრავლობითი ფორმა გადართარგმნილი არაა.არ ხართ ავტორიზებული. გთხოვთ, ხელახლა გაიაროთ ავტორიზაცია.შენიშვნები მთარგმნელებისთვისკარგიმოძველებული სტრიქონებიერთიმხოლოდ ზუსტი მნიშვნელობებით შევსებაღრუბლოვანი თარგმანის გახსნა…ბოლოს გახსნილი ფაილების გახსნათარგმანის ფაილების გახსნა და რედაქტირება.ღრუბლოვანი თარგმანის გახსნაღრუბლოვანი თარგმანის გახსნა…ფაილის გახსნარედაქტორში გახსნარედაქტორში გახსნაბოლოს გახსნილი ფაილების გახსნაღია თარგმანის შაბლონიგახსნა...გახსნა…პარამეტრებისხვაწ&ინა დაუსრულებელიწ&ინა დაუსრულებელიPO თარგმნის ფაილებიPOT თარგმნის შაბლონებიჩასმაკოპირებისა და ჩასმის სტილიმდებარეობებინებართვა უარყოფილია.ადგილმჭერების სისწორეგთხოვთ, MO ფაილის ნაცვლად, გახსენით და დაარედაქტირეთ შესაბამისი PO ფაილი. როდესაც PO ფაილს შეინახავთ, MO ფაილიც განახლდება.მრავლობითიმრავლობითი ფორმის თარგმანებიმრავლობითი ფორმები:PoeditPoedit - კატალოგების მენეჯერიPoedit-მა ავტომატურად გაასწორა არასწორი შინაარსი “%s” ფაილში.Poedit არის მარტივი გამოსაყენებელი თარგმანის რედაქტორი.წინასწარი &თარგმანი…წინასწარი თარგმანიწინასწარი თარგმანიპრე-ნათარგმნია %u სტრიქონიპრე-ნათარგმნია %u სტრიქონიწინასწარი თარგმანი თარგმანის მეხსიერებიდან…წინასწარი თარგმანი…წინასწარ თარგმანს საწყისი ტექსტი სჭირდება. ის არ მუშაობს, თუ გამოყენებულია მხოლოდ ID-ები, ტექსტის გარეშე.პარამეტრებიპარამეტრები...პარამეტრები…სტრიქონების მომზადება…არსებული ფაილების ფორმატირების შენარჩუნებაწინა მრავლობითი ფორმაწინა მრავლობითი ფორმაწინა წყაროს ტექსტიწარსულში ჩასწორებულზეწარსულში ჩასწორებულზეპროექტის სახელი და ვერსია:პროექტის სახელი:პროექტი:პროექტებიპუნქტუაციის შემოწმებაგაწმენდაწაშლილი თარგმანებისგან გაწმენდაგასვლა%s-დან გასვლაფაილის შიგთავსის წაკითხვა დასრულდა შემდეგი შეცდომით: %sახლახანსუკანასკნელი ფაილების სიააღდგენაგანახლებაფაილის ხელახლა ჩატვირთვაფაილის თავიდან ჩატვირთვადარჩენილია: %dჩანაცვლებაყველას &ჩანაცვლებაყველას &ჩანაცვლებაჩასანაცვლებელი სტრიქონიჩანაცვლება…ფაილს აკლია აუცილებელი ჰედერი მრავლობითის ფორმებთან (Plural-Forms) დაკავშირებით.გადატვირთვათარგმანის მეხსიერების ჩამოყრასაქაღალდეში ჩვენებაგადახედვამარჯვნივშენახვაშენახვა როგორც…შენახვა როგორც…შეინახე მაინცშეინახე მაინცშენახვა როგორცშენახვა როგორც…ცვლილებების შენახვაფაილის შენახვაეკრანის ანაბეჭდები:ყველას &მონიშვნაყველას მონიშვნააირჩიეთ შემოსატანი TMX ფაილებიუჯრის ამორჩევააირჩიეთ თარგმანის ფაილიაირჩიეთ შემოსატანი სათარგმნი ფაილებიაირჩიეთ თარგმანის შაბლონიაირჩიეთ თქვენთვის სასურველი ენასერვისებიენის არჩევაენის არჩევამორგება…Shift+ყველას ჩვენებაგვერდითა ზოლის ჩვენებამართლწერისა და გრამატიკის ჩვენებამდგომარეობის ზოლის ჩვენებასტრიქონის &ID-ის ჩვენებაშენაცვლებების ჩვენებაპანელის ჩვენებაგაფრთხილების ჩვენებაექსპლორერში ჩვენებასაქაღალდეში ჩვენებახელსაწყოთა პანელის ხილვადობის ჩართ/გამორთგვერდითა ზოლის ჩვენებამდგომარეობის ზოლის ჩვენებასტრიქონის &ID-ის ჩვენებაფაილების განახლების შემდეგ შეჯამების ჩვენებაგაფრთხილების ჩვენებაგვერდითა ზოლიშესვლაგამოსვლაშესვლაშედით %s-შიგაიარეთ ავტორიზაცია ღრუბლოვან ანგარიშშიშედით Crowdin-შიგაიარეთ ავტორიზაცია ღრუბლოვან ანგარიშშიგამოსვლამხოლობითშიჭკვიანი კოპირება/ჩასმაჭკვიანი ტირეებიჭკვიანი ბმულებიჭკვიანი ბრჭყალები&ფაილის წყობით დალაგება&წყაროთი დალაგებათ&არგმანის მიხედვით დალაგება&ფაილის წყობით დალაგება&წყაროთი დალაგებათ&არგმანის მიხედვით დალაგებაპროგრ. წყაროს კოდირება:წყაროს კოდი მიუწვდომელია.წყაროს კოდი ნაპოვნი არააწყაროს ტექსტიწყაროს ტექსტის IDწყაროს ტექსტი - %sწყაროს საკვანძო სიტყვებიწყაროს მდებარეობებიწყაროს საკვანძო სიტყვებიწყაროს მდებარეობებისაუბარიმართლწერის შემოწმება გამორთულია, რადგან %s-ისთვის ლექსიკონი არ არის დაყენებული.მართლწერა და გრამატიკალაპარაკის დაწყებალაპარაკის დასრულებადამახსოვრებული თარგმანები:სტრიქონის კონტექსტი: %sსტრიქონის იდენტიფიკატორი: %sსტრიქონში სიმბოლოების რაოდენობასაძიებელი ტექსტიშენაცვლებებირჩევებისინქრონიზაციაCrowdin-თან სინქრონიზაციასინქრონიზაციასინქრონიზაციის შეცდომაCrowdin-თან სინქრონიზაცია ვერ მოხერხდა.სინტაქსური შეცდომა Plural-Forms ჰედერის ჩანაწერში ("%s").TMTMX ფაილებიგუნდის სახელი და ელფოსტის მისამართი ან ბმულიტექსტის ჩანაცვლებაTMX ფაილი დაზიანებულია.თუ შეინახავთ, სხვა აპლიკაციის მხრიდან განხორციელებული ცვლილებები დაიკარგება.ფაილის MO ფორმატში დაკომპილირება და გამოყენება შეუძლებელია.ფაილის შენახვა პარამეტრებში მითითებული “%s” კოდირებით ვერ მოხერხდა. მის ნაცვლად, ფაილი შენახულია UTF-8 კოდირებით და პარამეტრიც შესაბამისად შეიცვალა.ფაილი შეიცვალა. გსურთ ცვლილებების შენახვა?ფაილის ფორმატი Poedit-სთვის უცნობია.ფაილი დაკომპილირებულია MO ფორმატში, თუმცა შესაძლოა, არ იმუშაოს სწორად.ფაილი უსაფრთხოდ იქნა შენახული და დაკომპილირებული MO ფორმატში, მაგრამ ის სავარაუდოდ არ იმუშავებს სწორად.ფაილი წარმატებით იქნა შენახული, თუმცა მისი MO ფორმატში კომპილაცია და გამოყენება ვერ მოხერხდა.ფაილი უსაფრთხოდ იქნა შენახული.ფაილის "%s" გახსნა შეუძლებელია.ფაილი “%s” შეიცვალა სხვა აპლიკაციის მიერ.თარგმანი გამოსაყენებლად მზადაა, მაგრამ %d ჩანაწერი ჯერ არ არის ნათარგმნი.თარგმანი გამოსაყენებლად მზადაა, მაგრამ %d ჩანაწერი ჯერ არ არის ნათარგმნი.თარგმანი გამოსაყენებლად მზად არის.ფაილის უკეთ ფორმატირებისას პრობლემა შეიქმნა (თუმცა ფაილი გამართულად იქნა შენახული).შეცდომა თარგმანების Localazy-ზე ატვირთვისას.ფაილის ჩატვირთვისას წარმოიშვა შეცდომები. შედეგად, ზოგიერთი მონაცემი შესაძლოა იყოს გამოკლებული ან დაზიანებული.ეს JSON ფაილი სათარგმნი ფაილი არაა და მას Poedit-ით ვერ ჩაასწორებთ.ეს მიემაგრება ბრძანებათა სტრიქონს მხოლოდ მაშინ თუ წყაროს კოდირება (charset) მითითებული იყო. %c ჩანაცვლდება კოდირების სახელით.ეს მიემაგრება ბრძანებათა სტრიქონს ყოველ შესაყვან ფაილზე. %f გაიშლება ფაილის სახელად.ეს ბრძანებათა სტრიქონს მიემაგრება ერთხელ ყოველ სიტყვაზე. %k იშლება როგორც სიტყვა.სულგარდაქმნებიღრუბლოვანი პროექტის თარგმნანათარგმნია: %d %d-დან (%d %%)თარგმანითარგმანის ენათარგმანის მეხსიერებათარგმანს &დამუშავება სჭირდებათარგმანის თვისებებისავარაუდოდ, ფაილში თარგმანის ჩანაწერები არასწორია.თარგმანის მეხსიერების შეცდომა: %s (%d).თარგმანს &დამუშავება სჭირდებათარგმანის თვისებებითარგმანის მინიშნებებითარგმანი - %sწყაროს კოდიდან თარგმანების განახლება ვერ მოხერხდა, რადგან ფაილის თვისებებში მითითებულ ადგილას კოდი ვერ მოიძებნა.ორიUTF-8 (რეკომენდებულია)დაბრუნებაწარმოიშვა მოულოდნელი გამონაკლისი: %sUnix (რეკომენდებულია)Crowdin-ის უცნობი შეცდომა.უცნობი შეცდომაუთარგმნმაღლაგანახლებაყველას განახლებაგანაახლე ყველა კატალოგი პროექტში&POT ფაილიდან განახლება…&POT ფაილიდან განახლება…კოდიდან განახლებაPOT-ფაილიდან განახლებაკოდიდან განახლებასაწყისი კოდიდან განახლებაშეჯამების განახლებაგანახლებებიგანახლება ვერ მოხერხდაფაილის განახლება ვერ მოხერხდა. დააჭირეთ ღილაკს 'დეტალები >>' დამატებითი ინფორმაციისთვის.მიმდინარეობს თარგმანების განახლებამიმდინარეობს მომხმარებლის ინფორმაციის განახლება…%s-ზე თარგმანების ატვირთვა ვერ მოხერხდა.მიმდინარეობს თარგმანების ატვირთვა %s-ზე…მიმდინარეობს თარგმანების ატვირთვა…გამოსახულების ხელით მითითებასიის ფონტის ხელით მითითება:ხელით მითითებული ტექსტური ველის ფონტი:ამ ენისთვის ნაგულისხმები წესების გამოყენებაწყაროს ფაილებში თარგმნადი სტრიქონების ამოსაცნობად ამ საკვანძო სიტყვების (ფუნქციათა სახელების) გამოყენება:თარგმანის მეხსიერების გამოყენებავალიდაციავალიდაციის შედეგებივერსია %sაუთენთიფიკაციის ლოდინი…მოგესალმებით Poedit-შიწყაროს კოდიდან განახლებისასმხოლოდ მთლიანი სიტყვებიფანჯარაWindowsგსურთ გამოიყენოთ ინგლისური ენა საწყისი ტექსტისთვის?სიტყვების გადატანასიტყვების გადატანისას მაქსიმალური სიგრძე:XLIFF თარგმანის ფაილებიდიახთქვენ არ შეგიძლიათ ერთზე მეტი ფაილის ჩაგდება Poedit-ის ფანჯარაში.თქვენ არ გაქვთ ნებართვა, წაიკითხოთ წყაროს კოდის ფაილები ფაილის თვისებებში მითითებული მდებარეობიდან.თქვენ უნდა გადატვირთოთ Poedit, რათა ეს ცვლილება ძალაში შევიდეს.თქვენი სახელითქვენი ცვლილებები დაიკარგება, თუ მათ არ შეინახავთ.ნულიდაახლოებაaltსაჭიროებს დამუშავებასctrlარ მოხდეს დროებითი ფაილების წაშლა (გამართვისთვის)მაგ: nplurals=2; plural=(n > 1);მსგავსი დამთხვევები ამავე ფაილშიმითითებული ხაზის ნომრით ელემენტზე გადასვლაpoedit:// URI-ების გახსნაპრე-თარგმანი TM-დანshiftუცნობი ენამხარდაუჭერელი ვერსია (%s)you@example.com'%s' არ არის ვალიდური POT ფაილი.poedit-3.5/locales/ca.mo0000644000175100001770000016117514664354153012161 00000000000000)7 7 7&8'8<;8x8J8g8 >9H9 W9a9 h9v9}9999999999999:::*:0:5:=:E:W:i:m: q: ~:::: ::::::;4;:;@;I;O;X;o; ; ; ;;;;;<<6<M<S<X<l<<<< < <<<<= = = $=1= @=L= \= h=t= == ======>;>[> q> ~>1>>'>>? ?+?71?6i??)?? ?]?X@<k@D@$@A A&A -A";A^A)yA AAAAAAAB.BJB#_BBBB BB BBBBBC *CKCSC\CtC CC/C CCCDD,DBD-aD1DD DD)D&E FETEZE_ErEEEEEEEE FF-F;@F |F'F^F?G PG ^GkG*~GGG"G5GH5HPHVH [H iH wH H HHHHHHHfHEI_IuyI(IJ+J"=J`J gJrJJ J JJJ0JKK#/K<SK"KK KK*K0 L!=L'_LLLL(LTL ?MMM RM \MjM~MMM M M M MMM N#N+N`M`%b``````` aaa%a8a>aYa^a8faa aaa a a aaa a bb "b(-bVb\bzubbccc c c +c 7cCc Kc Vc cc mc zc cccc"ccd3d R.&2<W pz-% S t% ů  (IQYahѰ^fViFhHԲ29NU Ŵ<-̵ ;#>_ ]k|".߷ 0Ea s } θ Ӹ:߸"2 9D_ z  ֹ1 "$GҺ +:I[kz4#>%&d!ʼ ߼ %'M&gٽ%=&W4~ ˾پ/DMmϿ$ ;\3C[rk= U cp#<% 5 CP (+,'AT 6- +=FQ 3i5Zt.V%' ;Hub']G>J 4W+1r'*,=$Ab''TOnR\JNcCnlMg"(8U mxDC$4h// "0 6A*S2~$$*B_{^&6.#e&(,5t<" ') Ab." D AQt> G&U| +:0$k"-+H#Yqj%\L;)&o@ BnsZ;? n8q5f/kS0g*b.yp-#,i7R:zHNvOat[hUN`K?%''>#ru|ZQ&U4 ! c*'kG9x OD) zs@zy;fHE$%qb6&st`<<"<7+X e69Gr* :) d}5 _eVum?]x/aa4b2:m}P_]V~+cQK>0Z41,j!Ji["i g9[P"3 E|(Rpf^S.Q>=WJX|2SMI.IFTEv,_M ATWd/A1V=rHY33cTgAL!~mD\{d@]C `n({=K^YuR Dv$WOF- LjlltG-~C^BBp(X0hxFwMl8 Cw6PeY8\#Ny1k72h5IJwo{}+Uo$ (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd AccountAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add accountAdd 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 languagesAlt+Always 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 errorCtrl+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 no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownDownloading 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:EnterEnter 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 loading translation file “%s”.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export errorExport 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…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)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport from TMX…Import translation files…Importing translation memory from “%s” 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 CrowdinLeftLine %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 translations were found in the TMX file.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKObsolete stringsOneOnly 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 translation templateOpen...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 translationsQuitQuit %sReading file content failed with the following error: %sRecentRecent 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 FinderReviewRightSaveSave &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 languageServicesSet LanguageSet languageSettingsSettings…Shift+Show AllShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow summary after updating filesShow 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.These strings are no longer in the source code. Poedit will remove them from the file now.These strings were found in the sources but were not in the file. Poedit will add them to the file now.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.Translated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation entries in the file are probably incorrect.Translation 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.UntransUpUpdateUpdate 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 the file failed. Click on 'Details >>' for details.Updating 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown 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: 2024-08-30 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í(0 noves, 0 obsoletes)(Apreneu-ne més sobre el GNU gettext)(Noves: %i, obsoletes: %i)(Utilitza la llengua per defecte)(cal el Windows 8 o més recent)< &AnteriorQuant al %sCompteComptesAfegeixAfegeix un compteAfegeix un comentariAfegeix fitxers…Afegeix carpetes…Afegeix un projecteAfegeix un comodí…Afegeix un compteAfegeix 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 admesesAlt+Canvia 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 CrowdinCtrl+Re&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-hoAvallS’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:RetornPantalla 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 carregar el fitxer de traducció «%s».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…Error d’exportació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:S’estan extraient les cadenes traduibles…Paràmetres de l’extractorExtractorsHa fallat l’ordre: %sHa 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.S’està finalitzant…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)FreqüentsGNU gettextGeneralFitxers HTMLAjudaAmaga el %sAmaga la restaAmaga 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ó…Error d’importacióImporta des de TMX…Importa fitxers de traducció…Ha fallat la importació de la memòria de traducció des de «%s».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 CrowdinEsquerraLa 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 cap traducció al fitxer TMX.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’acordCadenes obsoletesUnHabiliteu-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 una plantilla de traduccióObre…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 suprimidesSurtSurt del %sHa fallat la lectura del fitxer amb l’error següent: %sRecentsFitxers 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 FinderRepassaDretaDesa&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 preferidaServeisEstableix la llenguaEstableix la llenguaParàmetresConfiguració…Maj+Mostra-ho totMostra 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 el resum després d’actualitzar els fitxersMostra 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.Aquestes cadenes ja no són al codi font. El Poedit les suprimirà del fitxer ara.Aquestes cadenes són al codi font però no al fitxer. El Poedit les afegirà al fitxer ara.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.TotalTransformacionsLes entrades traduïbles no s’afegeixen manualment en el sistema gettext, sinó que s’extreuen automàticament des del codi font. D’aquesta manera, queden actualitzades i correctes. Els traductors típicament usen fitxers de plantilla PO (POT) que el desenvolupador els prepara.Traduït: %d/%d (%d %%)TraduccióLlengua de la traduccióMemòria de traduccióCal &revisar la traduccióPropietats de la traduccióLes entrades de traducció del fitxer probablement són incorrectes.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ïdesAmuntActualitzaActualitza-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 fallatHa fallat l’actualització del fitxer. Feu clic a «Detalls» per a obtenir-ne més detalls.S’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.ZeroEscalaaltCal revisarctrlno 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://pretradueix des de l’MTmajidioma desconegutno s’admet la versió (%s)vós@exemple.cat«%s» no és un fitxer POT vàlid.poedit-3.5/locales/fa.po0000644000175100001770000022636514664354153012172 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "این اعلان را پنهان کن" msgid "Don’t Show Again" msgstr "دیگر نمایش داده نشود" msgid "Don’t show again" msgstr "دیگر نمایش داده نشود" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(جدید: %Id، منسوخ: %Id)" msgid "Collecting source files…" msgstr "در حال جمع آوری پرونده‌های منبع…" msgid "Extracting translatable strings…" msgstr "در حال استخراج متن‌های قابل ترجمه…" msgid "Failed to load file with extracted translations." msgstr "بارگزاری پرونده از ترجمه‌های استخراج شده، شکست خورد." msgid "Merging differences…" msgstr "در حال ادغام موارد مختلف…" msgid "Updating translations" msgstr "به‌روز رسانی ترجمه‌ها" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "نمی‌توان پرونده «%s» را باز کرد." msgid "Invalid file" msgstr "پروندهٔ نامعتبر" #, c-format msgid "Malformed header: “%s”" msgstr "سربرگ بدشکل: «%s»" msgid "PO Translation Files" msgstr "پرونده‌های ترجمهٔ PO" msgid "POT Translation Templates" msgstr "الگوهای ترجمهٔ POT" msgid "XLIFF Translation Files" msgstr "پرونده‌های ترجمهٔ XLIFF" msgid "JSON Translation Files" msgstr "فایل های ترجمه JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "فایل های ترجمه فلاتر" msgid "All Translation Files" msgstr "تمام پرونده‌های ترجمه" msgid "The file is in a format not recognized by Poedit." msgstr "فرمت فایل توسط Poedit شناخته نشد." msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "این فایل JSON یک فایل ترجمه نیست و نمی‌توان آن را در Poedit ویرایش کرد." #, c-format msgid "Reading file content failed with the following error: %s" msgstr "خواندن محتوای پرونده با خطای زیر ناموفق بود: %s" #, c-format msgid "" "File “%s” is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "پروندهٔ «⁨%s⁩» فقط خواندنی است و نمی‌تواند ذخیره شود\n" "لطفاً آن را با نام دیگری ذخیره نمایید." #, c-format msgid "Couldn’t save file %s." msgstr "نمی‌توان پروندهٔ ⁨%s⁩ را ذخیره کرد." msgid "Screenshots:" msgstr "اسکرین شات ها:" #, c-format msgid "%i line of file “%s” was not loaded correctly." msgid_plural "%i lines of file “%s” were not loaded correctly." msgstr[0] "%Id خط از پروندهٔ «⁨%s⁩» درست بارگزاری نشده است." msgstr[1] "%Id خط از پروندهٔ «⁨%s⁩» درست بارگزاری نشده است." #, c-format msgid "Line %d of file “%s” is corrupted (not valid %s data)." msgstr "خط %Id از پروندهٔ «⁨%s⁩» خراب است (داده معتبر %s نیست)." msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "پرونده PO شکسته: فرم مفرد MSGSTR همراه با msgid_plural" msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "پرونده PO شکسته: فرم جمع MSGSTR استفاده شده بدون msgid_plural" msgid "Couldn’t load the file, it is probably damaged." msgstr "پرونده بارگیری نشد، احتمالاً آسیب دیده است." msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "هنگام بارگیری فایل خطاهایی وجود داشت. در نتیجه ممکن است برخی از داده ها گم " "شده یا خراب شده باشند." msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "هنگام قالب‌بندی پرونده به صورت کاملاً صحیح، مشکلی به وجود آمد(ولی به هرحال " "پرونده ذخیره شد)." #, 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» ذخیره و تنظیمات بر اساس آن تغییر یافت." msgid "Error saving file" msgstr "خطا هنگام ذخیرهٔ پرونده" #, c-format msgid "“%s” is not a valid POT file." msgstr "«⁨%s⁩» یک پروندهٔ معتبر POT نیست." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "خطا هنگام بارکردن پرونده XLIFF:‏ %s" #, c-format msgid "unsupported version (%s)" msgstr "نگارش پشتیبانی‌نشده (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML msgid "Broken markup in translation string." msgstr "نشانه گذاری شکسته در رشته ترجمه." msgid "(Use default language)" msgstr "(استفاده از زبان پیش‌گزیده)" msgid "Language selection" msgstr "گزینش زبان" msgid "Select your preferred language" msgstr "گزینش زبان ترجیحی شما" msgid "You must restart Poedit for this change to take effect." msgstr "شما باید Poedit را برای اعمال این تغییرات دوباره راه‌اندازی نمایید." msgid "Add Account" msgstr "افزودن حساب" msgid "Add account" msgstr "افزودن حساب" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "درباره %s بیشتر بدانید" msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" msgid "How does cloud sync work?" msgstr "" msgid "Account" msgstr "حساب کاربری" msgid "(not signed in)" msgstr "(وارد نشده‌اید)" msgid "File" msgstr "پرونده" msgid "Open cloud translation" msgstr "باز کردن ترجمه ابری" msgid "Manage accounts" msgstr "مدیریت حساب‌های کاربری" msgid "Project:" msgstr "پروژه:" msgid "Language:" msgstr "زبان:" msgid "Sign in to Cloud Account" msgstr "ورود به حساب کاربری ابری" msgid "Sign in to cloud account" msgstr "ورود به حساب کاربری ابری" msgid "No translation projects listed in your account." msgstr "" msgid "Downloading latest translations…" msgstr "در حال دانلود آخرین ترجمه…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #, c-format msgid "Sign in to %s" msgstr "ورود به حساب %s" msgid "Syncing" msgstr "همگام‌سازی" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s…" msgstr "در حال بارگذاری ترجمه‌ها به %s…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s failed." msgstr "در حال بارگذاری ترجمه‌ها به %s شکست خورد." msgid "Syncing error" msgstr "خطای همگام‌سازی" msgid "Add" msgstr "افزودن" msgid "Unknown Crowdin error." msgstr "خطای ناشناخته Crowdin." msgid "Not authorized, please sign in again." msgstr "بدون تأیید هویت، لطفاً مجددا وارد شوید." msgid "Downloading translations is disabled in this project." msgstr "بارگیری ترجمه‌های این پروژه غیرفعال است." msgid "Sign In" msgstr "ورود" msgid "Sign in" msgstr "ورود" msgid "Sign Out" msgstr "خروج" msgid "Sign out" msgstr "خروج" msgid "Learn more about Crowdin" msgstr "دربارهٔ Crowdin بیشتر بدانید" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "Crowdin یک پلتفرم مدیریت محلی‌سازی برخط و ترجمه مشارکتی است." msgid "Waiting for authentication…" msgstr "در حال انتظار برای تأیید هویت…" msgid "Updating user information…" msgstr "به‌روز رسانی اطلاعات کاربر…" msgid "Sign in to Crowdin" msgstr "ورود به Crowdin" msgid "Syncing with Crowdin failed." msgstr "همگام سازی با Crowdin موفقیت آمیز نبود." msgid "Crowdin error" msgstr "خطای Crowdin" msgid "Uploading translations…" msgstr "در حال بارگذاری ترجمه…" msgid "&Copy" msgstr "&رونوشت" msgid "Learn more" msgstr "بیشتر بدانید" msgid "&Help" msgstr "&راهنما" msgid "MO files can’t be directly edited in Poedit." msgstr "پرونده‌های MO نمی‌توانند به طور مستقیم در Poedit ویرایش شوند." msgid "Error opening file" msgstr "خطا هنگام گشودن پرونده" msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "لطفاً به‌جای آن پروندهٔ PO مربوطه را باز کرده و ویرایش کنید. هنگام ذخیرهٔ آن، " "پروندهٔ MO نیز به‌روز خواهد شد." msgid "don’t delete temporary files (for debugging)" msgstr "پرونده‌های موقّتی را پاک نکنید(برای رفع باگ)" msgid "handle a poedit:// URI" msgstr "اداره کردن یک نشانی ‪poedit://" msgid "go to item at given line number" msgstr "رفتن به شمارهٔ خط داده شده" msgid "Failed to communicate with Poedit process." msgstr "عدم موفقیت در ارتباط با فرآیند ارسال Poedit." #, c-format msgid "Unhandled exception occurred: %s" msgstr "استثناء غیرقابل اداره، رخ داده است: %s" msgid "Select translation template" msgstr "گزینش الگؤ ترجمه" msgid "Select translation file" msgstr "گزینش پروندهٔ ترجمه" msgid "Poedit is an easy to use translation editor." msgstr "‏Poedit ابزاری آسان برای ویرایش ترجمه‌ها است." msgid "You can’t drop more than one file on Poedit window." msgstr "شما نمی‌توانید بیش از یک پرونده را در پنجرهٔ Poedit بیندازید." #, c-format msgid "File “%s” is not a translation file." msgstr "پروندهٔ «⁨%s⁩» یک پروندهٔ ترجمه نیست." #, c-format msgid "File “%s” doesn’t exist." msgstr "پروندهٔ «⁨%s⁩» وجود ندارد." 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". #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "بررسی املاء غیرفعال است، زیرا لغت‌نامه‌ای برای زبان %s نصب نشده است." msgid "Install" msgstr "نصب" #, c-format msgid "The file “%s” has been changed by another application." msgstr "پروندهٔ «⁨%s⁩» توسط برنامهٔ دیگری تغییر کرده است." msgid "Reload file" msgstr "بارگزاری مجدد پرونده" msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "آیا می‌خواهید پرونده را مجدداً از دیسک بارگزاری کنید؟ در این صورت ویرایش‌های " "ذخیره نشده شما در Poedit از بین می‌روند." msgid "Ignore" msgstr "نادیده‌گرفتن" msgid "Reload File" msgstr "بارگزاری مجدد پرونده" msgid "The file has been modified. Do you want to save changes?" msgstr "پرونده اصلاح شده است. آیا می‌خواهید تغییرات را ذخیره کنید؟" msgid "Save changes" msgstr "ذخیرهٔ تغییرات" msgid "Your changes will be lost if you don’t save them." msgstr "اگر ذخیره نکنید، تغییرات شما از بین می رود." msgid "Save" msgstr "ذخیره" msgid "Do&n’t save" msgstr "ذخیره نکن" msgid "Don’t Save" msgstr "ذخیره نکن" msgid "The changes made by the other application will be lost if you save." msgstr "درصورت ذخیره، تغییرات ایجاد شده توسط برنامه دیگر از بین می‌رود." msgid "Cancel" msgstr "لغو" msgid "Save Anyway" msgstr "به‌هرحال ذخیره شود" msgid "Save anyway" msgstr "به‌هرحال ذخیره شود" msgid "Save as…" msgstr "ذخیره به عنوان…" msgid "Compile to…" msgstr "کامپایل به…" msgid "Compiled Translation Files" msgstr "پرونده‌های ترجمه کامپایل شدند" msgid "Export to HTML…" msgstr "" msgid "HTML Files" msgstr "پرونده‌های اچ‌تی‌ام‌ال" #, c-format msgid "In: %s" msgstr "در: %s" msgid "Source code not available." msgstr "کد منبع موجود نیست." msgid "Updating failed" msgstr "به‌روز رسانی شکست خورد" 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 "" "ترجمه ها را نمی‌توان از کد منبع به‌روزرسانی کرد، زیرا هیچ کدی در مکان مشخص‌شده " "در ویژگی‌های فایل یافت نشد." msgid "Permission denied." msgstr "خطای دسترسی." 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. 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. msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "اگر پیش از این دسترسی به پرونده‌ها را رد کرده‌اید، می‌توانید از بخش ترجیحات " "سیستم > امنیت و حریم شخصی > حریم شخصی > پرونده‌ها و پوشه‌ها مجدداً به آن اجازه " "دهید." msgid "Translation entries in the file are probably incorrect." msgstr "ورودی های ترجمه در فایل احتمالا نادرست است." msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "به‌روز رسانی پرونده شکست خورد. برای جزئیات روی «جزئیات >>» کلیک کنید." msgid "Open translation template" msgstr "گشودن الگوی ترجمه" #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "%Id مشکل در ترجمه یافت شد." msgstr[1] "%Id مشکل در ترجمه یافت شد." msgid "Validation results" msgstr "نتایج ارزیابی" msgid "" "Entries with errors were marked in red in the list. Details of the error " "will be shown when you select such an entry." msgstr "" "ورودی‌های همراه خطا به صورت قرمز در سیاهه نشانه گذاری شده‌اند. جزئیات خطا " "هنگامی که شما ورودی را بر می‌گزینید، نمایش داده خواهند شد." msgid "The file was saved safely." msgstr "پرونده به صورت ایمن ذخیره شده‌است." msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "پرونده به صورت ایمن ذخیره و به قالب MO کامپایل شد، امّا احتمالاً به درستی کار " "نخواهد کرد." msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "پرونده به صورت ایمن ذخیره شده‌است، امّا نمی‌توان آن را به قالب MO کامپایل و از " "آن استفاده کرد." msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "پرونده به قالب MO کامپایل شد، امّا احتمالاً به درستی کار نخواهد کرد." msgid "The file cannot be compiled into the MO format and used." msgstr "نمی‌توان پرونده را به قالب MO کامپایل و از آن استفاده کرد." msgid "No problems with the translation found." msgstr "هیچ مشکلی در ترجمه یافت نشد." #, 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 ورودی ترجمه نشده‌اند." msgid "The translation is ready for use." msgstr "ترجمه آمادهٔ استفاده است." #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "" "نرم‌افزار Poedit به طور خودکار محتوای نامعتبر در پروندهٔ «⁨%s⁩» را درست خواهد " "کرد." msgid "" "The file contained duplicate items, which is not allowed in PO files and " "would prevent the file from being used. Poedit fixed the issue, but you " "should review translations of any items marked as needing work and correct " "them if necessary." msgstr "" "این پرونده حاوی موارد تکراری است که در پرونده‌های PO مجاز نیست و از استفاده " "از پرونده جلوگیری می کند. Poedit موضوع را رفع کرد، اما شما باید ترجمه هر یک " "از اقلام مشخص شده به عنوان مورد نیاز را بررسی کنید و در صورت لزوم آنها را " "اصلاح کنید." msgid "Language of the translation isn’t set." msgstr "زبان ترجمه مشخص نشده است." msgid "Set Language" msgstr "انتخاب زبان" msgid "Set language" msgstr "انتخاب زبان" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." msgid "" "Suggestions are not available if the translation language is not set " "correctly. Other features, such as plural forms, may be affected as well." msgstr "" "اگر زبان ترجمه به درستی تنظیم نشده باشد پیشنهادات در دسترس نیست. سایر ویژگی " "ها، از قبیل فرم های جمع، ممکن است تحت تاثیر قرار گیرد." msgid "Language of the translation is the same as source language." msgstr "زبانی که قصد دارید به آن ترجمه کنید همان زبان پروندهٔ ترجمه است." msgid "Fix Language" msgstr "تعمیر زبان" msgid "Fix language" msgstr "تعمیر زبان" msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "این فایل دارای ورودی هایی با فرم های جمع است، اما سربرگ Plural-Forms " "پیکربندی نشده است." msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "ورودی‌های این فایل دارای تعداد اشکال جمع متفاوتی از آنچه سرصفحه Plural-Forms " "فایل می‌گوید دارند" msgid "Required header Plural-Forms is missing." msgstr "سربرگ مورد نیاز به فرم جمع موجود نیست." #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "در سرایند به فرم جمع اشتباه نوشتاری وجود دارد (\"%s\")." msgid "Fix the Header" msgstr "تعمیر سرایند" 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". #, 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.")" msgid "Review" msgstr "بازبینی" msgid "Would you like to use English for source text?" msgstr "" #, 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" msgid "Load English" msgstr "بارگذاری انگلیسی" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "ترجمه‌شده: %Id از %Id (⁦%Id٪⁩)" #, c-format msgid "Remaining: %d" msgstr "باقی‌مانده: %Id" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%Id خطا" msgstr[1] "%Id خطا" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%Id ورودی" msgstr[1] "%Id ورودی" msgid " (unsaved)" msgstr " (ذخیره نشده)" msgid " (modified)" msgstr " (تغییریافته)" #, c-format msgid "Failed to update translation memory: %s" msgstr "به‌روز رسانی حافظهٔ ترجمه شکست خورد: %s" msgid "Remove same-as-source translations" msgstr "" msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" msgid "Keep" msgstr "نگه‌دار" msgid "Remove" msgstr "" msgid "Purge deleted translations" msgstr "پاکسازی ترجمه‌های حذف شده" msgid "Do you want to remove all translations that are no longer used?" msgstr "آیا از برداشتن همهٔ ترجمه‌هایی که دیگر استفاده نمی‌شوند، مطمئنید؟" 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 "" "اگر به پاکسازی ادامه دهید، تمام ترجمه‌هایی که به عنوان حذف‌شده علامت‌گذاری " "شده‌اند، برای همیشه برداشته می‌شوند. اگر در آینده اضافه شوند، مجبور خواهید بود " "دوباره آنها را ترجمه کنید." msgid "Purge" msgstr "پاکسازی" msgid "Copy from source text" msgstr "رونوشت از متن منبع" 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 msgid "Ctrl+" msgstr "مهار+" msgid "Clear translation" msgstr "پاک‌کردن ترجمه" msgid "Clear Translation" msgstr "پاک‌کردن ترجمه" msgid "Edit comment" msgstr "ویرایش دیدگاه" msgid "Edit Comment" msgstr "ویرایش دیدگاه" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "وقایع کد" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "وقایع کد" msgid "Hide Sidebar" msgstr "پنهان کردن نوار کناری" msgid "Show Sidebar" msgstr "نمایش نوار کناری" msgid "Hide Status Bar" msgstr "پنهان کردن نوار وضعیت" msgid "Show Status Bar" msgstr "نمایش نوار وضعیت" msgid "String length in characters: translation | source" msgstr "طول رشته به نویسه: ترجمه | منبع" msgid "String length in characters" msgstr "طول رشته به نویسه" msgid "Source text" msgstr "متن منبع" msgid "Singular" msgstr "مفرد" msgid "Plural" msgstr "جمع" msgid "Translation" msgstr "ترجمه" msgid "Pre-translated" msgstr "پیش‌ترجمه" 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. msgid "Needs work" msgstr "نیازمند کار" msgid "" "POT files are only templates and don’t contain any translations themselves.\n" "To make a translation, create a new PO file based on the template." msgstr "" "فایل‌های POT فقط الگو هستند و خود حاوی ترجمه نیستند.\n" "n\\برای ترجمه، یک فایل PO جدید بر اساس الگو ایجاد کنید." msgid "Create new translation" msgstr "ایجاد ترجمه جدید" 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 msgid "Source text ID" msgstr "شناسه متن منبع" msgid "Everything" msgstr "همه چیز" #, c-format msgid "Form %i" msgstr "حالت %Id" #, c-format msgid "Form %i (unused)" msgstr "حالت %Id (بدون استفاده)" msgid "Zero" msgstr "صفر" msgid "One" msgstr "یک" msgid "Two" msgstr "دو" msgid "Other" msgstr "غیره" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, c-format msgid "String context: %s" msgstr "بافتار رشته: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #, c-format msgid "String identifier: %s" msgstr "شناسه رشته: %s" #, c-format msgid "%s Format" msgstr "قالب %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "قالب %s" #, c-format msgid "Translation — %s" msgstr "ترجمه — %s" msgid "ID" msgstr "شناسه" #, c-format msgid "Source text — %s" msgstr "متن منبع — %s" msgid "unknown language" msgstr "زبان ناشناخته" #, c-format msgid "Network error: %s (%d)" msgstr "" msgid "Unknown error" msgstr "" #, c-format msgid "Failed command: %s" msgstr "فرمان شکست خورده: %s" msgid "Failed to merge gettext catalogs." msgstr "ادغام کاتالوگ gettext شکست خورد." msgid "Open in Editor" msgstr "گشودن در ویرایشگر" msgid "Open in editor" msgstr "گشودن در ویرایشگر" msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "هیچ اطلاعاتی در مورد وقوع این رشته در کد منبع در فایل ارائه نشده است." msgid "No usage information" msgstr "بدون اطّلاعات کارکرد" #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%Id رخداد کد" msgstr[1] "%Id رخداد کد" msgid "Source code not found" msgstr "کد منبع یافت نشد" 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 نمی تواند کد منبع را در جایی که رشته استفاده می شود نشان دهد، زیرا " "فایل یا در محل ارجاع شده در دسترس نیست یا یک مرجع نمادین است که به یک فایل " "واقعی اشاره نمی کند." msgid "File cannot be opened" msgstr "نمی‌توان پرونده را گشود" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "نرم‌افزار Poedit نتوانست پروندهٔ «⁨%s⁩» را بگشاید." msgid "Find" msgstr "یافتن" msgid "Replace" msgstr "جای‌گزینی" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "گزینه‌ها" msgid "Ignore case" msgstr "نادیده گرفتن بزرگی و کوچکی حروف" msgid "Wrap around" msgstr "پیچیدن به اطراف" msgid "Whole words only" msgstr "فقط کلمه کامل" msgid "Find in source texts" msgstr "یافتن در متون منبع" msgid "Find in translations" msgstr "یافتن در ترجمه‌ها" msgid "Find in comments" msgstr "یافتن در دیدگاه‌ها" msgid "Close" msgstr "بستن" msgid "Replace &All" msgstr "جای‌گزینی &همه" msgid "Replace &all" msgstr "جای‌گزینی &همه" msgid "&Replace" msgstr "&جای‌گزینی" msgid "< &Previous" msgstr "< &قبلی" msgid "&Next >" msgstr "&بعدی >" msgid "String to find" msgstr "عبارت برای یافتن" msgid "Replacement string" msgstr "عبارت جای‌گزین" #, c-format msgid "Cannot execute program: %s" msgstr "نمی‌توان برنامه را اجرا کرد: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "کد یا نام زبان" msgid "Translation Language" msgstr "زبان ترجمه" msgid "Language of the translation:" msgstr "زبان برای ترجمه:" msgid "All strings" msgstr "همه رشته ها" msgid "Couldn’t download Localazy project details." msgstr "" msgid "There was an error when uploading translations to Localazy." msgstr "" msgid "Projects" msgstr "پروژه ها" msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" msgid "Add Project" msgstr "افزودن پروژه" msgid "Add project" msgstr "افزودن پروژه" msgid "Poedit - Catalogs manager" msgstr "‏Poedit - مدیر کاتالوگ‌ها" msgid "Edit…" msgstr "ویرایش…" msgid "Create new translations project" msgstr "ایجاد یک پروژهٔ ترجمهٔ جدید" msgid "Delete the project" msgstr "حذف پروژه" msgid "Edit the project" msgstr "ویرایش پروژه" msgid "Update all" msgstr "به‌روز رسانی همه" msgid "Update all catalogs in the project" msgstr "به‌روز رسانی همهٔ کاتالوگ‌های پروژه" msgid "Total" msgstr "جمع کل" msgid "Untrans" msgstr "ترجمه نشده" msgctxt "column/row header" msgid "Needs Work" msgstr "نیازمند کار" msgid "Errors" msgstr "خطاها" msgid "Last modified" msgstr "آخرین تغییر" msgid "Select directory" msgstr "گزینش شاخه" msgid "Directories:" msgstr "شاخه‌ها:" msgid "" msgstr "<بی‌نام>" #, c-format msgid "Do you want to delete project “%s”?" msgstr "آیا از حذف پروژهٔ «⁨%s⁩» مطمئنید؟" msgid "Delete project" msgstr "حذف پروژه" msgid "Deleting the project will not delete any translation files." msgstr "حذف پروژه، هیچ‌کدام از پرونده‌های ترجمه را حذف نخواهد کرد." msgid "Confirmation" msgstr "تأیید" msgid "Update all catalogs in this project?" msgstr "همهٔ کاتالوگ‌های این پروژه به‌روز رسانی شوند؟" msgid "Performs update from source code on all files in the project." msgstr "به‌روز رسانی از کد منبع را در تمام فایل‌های پروژه انجام می‌دهد." msgid "Check for Updates…" msgstr "بررسی برای به‌روز رسانی‌ها…" msgid "Catalogs Manager" msgstr "مدیریت کاتالوگ" msgid "&Preferences…" msgstr "&ترجیحات…" msgid "&Edit" msgstr "&ویرایش" msgid "Undo" msgstr "برگردان" msgid "Redo" msgstr "انجام دوباره" msgid "Paste and Match Style" msgstr "جای‌گذاری و تطابق سَبک" msgid "Delete" msgstr "حذف" msgid "Spelling and Grammar" msgstr "املاء و دستور زبان" msgid "Show Spelling and Grammar" msgstr "نمایش املاء و دستورزبان" msgid "Check Document Now" msgstr "سند را بررسی کن" msgid "Check Spelling While Typing" msgstr "بررسی املاء در هنگام نوشتن" msgid "Check Grammar With Spelling" msgstr "بررسی دستور زبان با املاء" msgid "Correct Spelling Automatically" msgstr "تصحیح خودکار املاء" msgid "Substitutions" msgstr "جای‌گزینی‌ها" msgid "Show Substitutions" msgstr "نمایش جای‌گزینی‌ها" msgid "Smart Copy/Paste" msgstr "رونوشت/جای‌گذاری هوشمند" msgid "Smart Quotes" msgstr "نقل‌قول هوشمند" msgid "Smart Dashes" msgstr "خط تیره‌های هوشمند" msgid "Smart Links" msgstr "پیوندهای هوشمند" msgid "Text Replacement" msgstr "جای‌گزینی متن" msgid "Transformations" msgstr "تغییر شکل‌ها" msgid "Make Upper Case" msgstr "حروف را بزرگ کن" msgid "Make Lower Case" msgstr "حروف را کوچک کن" msgid "Capitalize" msgstr "درشت نویسی" msgid "Speech" msgstr "گفتار" msgid "Start Speaking" msgstr "شروع به صحبت کردن" msgid "Stop Speaking" msgstr "توقف صحبت کردن" msgid "&View" msgstr "&نما" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Show Toolbar" msgstr "نمایش نوار ابزار" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Customize Toolbar…" msgstr "سفارشی‌سازی نوار ابزار…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Enter Full Screen" msgstr "حالت تمام صفحه" msgid "Window" msgstr "پنجره" msgid "Minimize" msgstr "کوچک سازی" msgid "Zoom" msgstr "بزرگنمايی" msgid "Welcome to Poedit" msgstr "خوش آمدید به Poedit" msgid "Bring All to Front" msgstr "آوردن همه به جلو" msgid "Information about the translator" msgstr "اطلاعات در مورد مترجم" msgid "Name:" msgstr "نام:" msgid "Your Name" msgstr "اسم شما" msgid "Email:" msgstr "رایانامه:" msgid "you@example.com" msgstr "you@example.com" msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "نام و نشانی رایانامهٔ شما فقط برای تنظیم Last-Translator در سرایند پرونده‌های " "GNU gettext استفاده می‌شود." msgid "Editing" msgstr "در حال ویرایش" msgid "Automatically compile MO file when saving" msgstr "به صورت خودکار پروندهٔ MO را هنگام ذخیره کامپایل کن" msgid "Show summary after updating files" msgstr "نمایش خلاصه پس از به‌روز رسانی پرونده‌ها" msgid "Check spelling" msgstr "بررسی املاء" msgid "Always change focus to text input field" msgstr "همیشه تمرکز به محوطه درونداد متن تغییر داده شود" msgid "" "Never let the list of strings take focus. If enabled, you must use Ctrl-" "arrows for keyboard navigation but you can also type text immediately, " "without having to press Tab to change focus." msgstr "" "هرگز اجازه‌نده که سیاههٔ رشته‌ها تمرکز را بگیرد. اگر فعال باشد، شما باید از " "مهار-پیکان‌های صفحه‌کلید برای صفحه‌نوردی استفاده کنید ولی همچنین می‌توانید " "بلافاصله نگارش متن را بدون فشار دادن کلید جهش برای تغییر تمرکز انجام دهید." msgid "Appearance" msgstr "ظاهر" msgid "Use custom list font:" msgstr "استفاده از قلم سفارشی برای سیاههٔ:" msgid "Use custom text fields font:" msgstr "استفاده از قلم سفارشی برای قسمت‌های متن:" msgid "Change UI language" msgstr "تغییر زبان واسط کاربری" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions msgid "(requires Windows 8 or newer)" msgstr "(ویندوز ۸ یا جدیدتر لازم است)" msgid "General" msgstr "عمومی" msgid "Use translation memory" msgstr "استفاده از حافظهٔ ترجمه" msgid "Manage…" msgstr "مدیریت…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "هنگام به‌روز رسانی از منبع" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "همتاسازی پوششی در پرونده" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "پیش‌ترجمه از ت‌م" 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 در صورتی که تقریباً خالی باشد " "بسیار مؤثر نخواهد بود، اما با افزودن ترجمه‌های بیشتر به آن، بهتر می‌شود." msgid "Stored translations:" msgstr "ترجمه‌های ذخیره شده:" msgid "Database size on disk:" msgstr "اندازهٔ پایگاه‌دادهٔ روی دیسک:" msgid "Import Translation Files…" msgstr "درون‌ریزی پرونده‌های ترجمه…" msgid "Import translation files…" msgstr "درون‌ریزی پرونده‌های ترجمه…" msgid "Import From TMX…" msgstr "درون‌ریزی از TMX…" msgid "Import from TMX…" msgstr "درون‌ریزی از TMX…" msgid "Export To TMX…" msgstr "برون‌ریزی به TMX…" msgid "Export to TMX…" msgstr "برون‌ریزی به TMX…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). msgid "Reset" msgstr "بازنشانی" msgid "Select translation files to import" msgstr "گزینش پرونده‌های ترجمه برای درون‌ریزی" msgid "Translation Memory" msgstr "حافظهٔ ترجمه" msgid "Importing translations…" msgstr "درون‌ریزی ترجمه‌ها…" #, c-format msgid "Error loading translation file “%s”." msgstr "هنگام بارگزاری پروندهٔ «⁨%s⁩» خطایی رخ داد." msgid "Finalizing…" msgstr "در حال نهایی شدن…" msgid "Select TMX files to import" msgstr "گزینش پرونده‌های TMX برای درون‌ریزی" msgid "TMX Files" msgstr "پرونده‌های TMX" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "درون‌ریزی حافظهٔ ترجمه از «⁨%s⁩» شکست خورد." msgid "Import error" msgstr "خطای درون‌ریزی" msgid "Export as…" msgstr "برون‌ریزی به عنوان…" msgid "Exporting translations…" msgstr "برون‌ریزی ترجمه‌ها…" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "برون‌ریزی حافظهٔ ترجمه به «⁨%s⁩» شکست خورد." msgid "Export error" msgstr "خطای برون‌ریزی" msgid "Reset translation memory" msgstr "بازنشانی حافظهٔ ترجمه" msgid "Are you sure you want to reset the translation memory?" msgstr "آیا از بازنشانی حافظهٔ ترجمه مطمئنید؟" 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. msgid "TM" msgstr "ت‌م" msgid "" "Source code extractors are used to find translatable strings in the source " "code files and extract them so that they can be translated." msgstr "" "استخراج‌کننده‌های کد منبع برای یافتن رشته‌های قابل ترجمه در فایل‌های کد منبع و " "استخراج آن‌ها به‌منظور ترجمه استفاده می‌شوند." msgid "Custom Extractors:" msgstr "استخراج کننده‌های سفارشی:" msgid "Custom extractors:" msgstr "استخراج کننده‌های سفارشی:" msgid "GNU gettext" msgstr "GNU gettext" msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "از همهٔ زبان‌هایی که توسط ابزار GNU gettext شناخته می‌شود، پشتیبانی می‌شود " "(پی‌اچ‌پی، سی و سی پلاس پلاس، سی شارپ، پرل، پایتون، جاوا، جاوااسکریپت و غیره)." msgid "Delete extractor" msgstr "حذف استخراج کننده" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "آیا از حذف استخراج کننده «%s» مطمئنید؟" msgid "Extractors" msgstr "استخراج کننده" msgid "Accounts" msgstr "حساب‌ها" msgid "Automatically check for updates" msgstr "بررسی بروزرسانی ها بصورت خودکار" msgid "Include beta versions" msgstr "شامل نگارش‌های بتا" msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "نسخه های بتا شامل آخرین ویژگی های جدید و پیشرفته هستند، اما ممکن است کمی " "ناپایدار باشند." msgid "Updates" msgstr "به‌روز رسانی‌ها" msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "این تنظیمات بر قالب‌بندی داخلی فایل های PO تأثیر می‌گذارد. اگر نیازمندی خاصی " "دارید، مانند کنترل نسخه، آن‌ها را تنظیم کنید." msgid "Line endings:" msgstr "انتهای خط:" msgid "Unix (recommended)" msgstr "یونیکس (توصیه شده)" msgid "Windows" msgstr "ویندوز" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "پیچیدن در:" msgid "Preserve formatting of existing files" msgstr "حفظ قالب‌بندی فایل‌های موجود" msgid "Advanced" msgstr "پیشرفته" msgid "Settings" msgstr "" msgid "Preparing strings…" msgstr "در حال آماده‌سازی رشته‌ها…" msgid "Pre-translating from translation memory…" msgstr "پیش‌ترجمه از حافظهٔ ترجمه…" #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "%u رشته پیش‌ترجمه شد" msgstr[1] "%u رشته پیش‌ترجمه شد" msgid "Pre-translating…" msgstr "پیش‌ترجمه…" 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. msgid "Pre-translate" msgstr "پیش‌ترجمه" msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "پیش‌ترجمه نیازمند موجود بودن متن منبع است. اگر فقط از شناسه‌های بدون متن واقعی " "استفاده شود، کار نمی‌کند." msgid "Cannot pre-translate from unknown language." msgstr "امکان پیش ترجمه زبان ناشناخته نیست." msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "پیش از ترجمه مستلزم آن است که زبان متن مبدأ مشخص باشد. Poedit نتوانست آن را " "در این فایل شناسایی کند." msgid "Only fill in exact matches" msgstr "فقط مطابقت های دقیق را پر کنید" msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "به‌طور پیش‌فرض، نتایج نادرست نیز گنجانده شده است، اما با «نیازمند کار» " "علامت‌گذاری شده است. این گزینه را علامت بزنید تا فقط موارد منطبق کامل را شامل " "شود." msgid "Don’t mark exact matches as needing work" msgstr "همتاسازی‌های دقیق را به عنوان نیاز به کار نشانه‌گذاری نکنید" 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 به عنوان نیاز به کار نشانه‌گذاری شده‌اند و باید قبل از " "استفاده بررسی شوند." msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "پیش ترجمه به طور خودکار مطابقت های دقیق یا مبهم رشته های ترجمه نشده را در " "حافظه ترجمه پیدا می کند و ترجمه های آنها را پر می کند." #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%Id ورودی پیش‌ترجمه شد." msgstr[1] "%Id ورودی پیش‌ترجمه شد." msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "ترجمه‌ها به عنوان نیاز به کار نشانه‌گذاری شدند، زیرا ممکن است نادرست باشند. " "شما باید آن‌ها را از نظر درستی بررسی کنید." msgid "No entries could be pre-translated." msgstr "هیچ ورودی نمی‌تواند از پیش‌ترجمه شود." msgid "" "The TM doesn’t contain any strings similar to the content of this file. It " "is only effective for semi-automatic translations after Poedit learns enough " "from files that you translated manually." msgstr "" "TM هیچ رشته‌ای مشابه محتوای این فایل ندارد. فقط پس از اینکه Poedit از " "فایل‌هایی که به صورت دستی ترجمه کرده‌اید یاد بگیرد، برای ترجمه‌های نیمه خودکار " "مؤثر است." msgid "Cancelling…" msgstr "در حال لغو کردن…" msgid "Drag Folders or Files Here" msgstr "پوشه‌ها یا پرونده‌ها را اینجا رها کنید" msgid "Drag folders or files here" msgstr "پوشه‌ها یا پرونده‌ها را اینجا رها کنید" msgid "Add Folders…" msgstr "پوشه های اضافه شده…" msgid "Add folders…" msgstr "افزودن پوشه‌ها…" msgid "Add Files…" msgstr "افزودن پرونده‌ها…" msgid "Add files…" msgstr "افزودن پرونده‌ها…" msgid "Add Wildcard…" msgstr "افزودن با شتاب…" msgid "Add wildcard…" msgstr "افزودن با شتاب…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) msgid "Reveal in Finder" msgstr "نشان دادن در یابنده" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" msgid "Show in Explorer" msgstr "نمایش در اکتشافات" msgid "Show in Folder" msgstr "نمایش در پوشه" msgid "Paths" msgstr "مسیرها" msgid "Excluded paths" msgstr "مسیر های جدا شده" msgid "Advanced extraction settings" msgstr "تنظیمات پیشرفتهٔ استخراج" msgid "Extract notes for translators from:" msgstr "استخراج یادداشت‌ها برای مترجمان از:" msgid "Comments prefixed with:" msgstr "دیدگاه‌ها با پیشوند:" msgid "All comments" msgstr "همهٔ دیدگاه‌ها" msgid "Additional xgettext flags:" msgstr "پرچم‌های اضافی xgettext:" msgid "Additional keywords" msgstr "کلیدواژه‌های اضافی" msgid "Name of the project the translation is for" msgstr "نام پروژه‌ای که ترجمه برای آن است" msgid "Team name and email address or URL" msgstr "نام تیم و آدرس ایمیل یا پیوند" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "به عنوان مثال nplurals=2; plural=(n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (توصیه شده)" msgid "Please save the file first. This section cannot be edited until then." msgstr "لطفا ابتدا فایل را ذخیره کنید. این بخش تا آن زمان قابل ویرایش نیست." msgid "Placeholders correctness" msgstr "درستی متغیرها" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "متغیر “%s” در ترجمه دچار خطا است." #, c-format msgid "Superfluous placeholder “%s” that isn’t in source text." msgstr "مکان‌نمای اضافی «%s» که در متن منبع نیست." msgid "Plural form translations" msgstr "ترجمه به صورت جمع" msgid "Not all plural forms are translated." msgstr "همه اَشکال جمع ترجمه نشدند." msgid "Inconsistent upper/lower case" msgstr "حروف بزرگ/کوچک ناسازگار" msgid "The translation should start as a sentence." msgstr "ترجمه باید به صورت یک جمله شروع شود." msgid "The translation should start with a lowercase character." msgstr "ترجمه باید با حروف کوچک شروع شود." msgid "Inconsistent whitespace" msgstr "فضای خالی ناسازگار" msgid "The translation doesn’t start with a space." msgstr "ترجمه با یک فاصله شروع نشده است." msgid "The translation starts with a space, but the source text doesn’t." msgstr "ترجمه با یک فاصله شروع شده، ولی متن منبع اینطور نیست." msgid "The translation is missing a newline at the end." msgstr "ترجمه یک خط‌جدید در آخر را فراموش کرده است." msgid "The translation ends with a newline, but the source text doesn’t." msgstr "ترجمه با یک خط‌جدید به پایان رسیده، ولی متن منبع اینطور نیست." msgid "The translation is missing a space at the end." msgstr "ترجمه یک فاصله در آخر را فراموش کرده است." msgid "The translation ends with a space, but the source text doesn’t." msgstr "ترجمه با یک فاصله به پایان رسیده، ولی متن منبع اینطور نیست." msgid "Punctuation checks" msgstr "بررسی نقطه‌گذاری" #, c-format msgid "The translation should end with “%s”." msgstr "ترجمه باید با یک “%s” به پایان برسد." #, c-format msgid "The translation should not end with “%s”." msgstr "ترجمه نباید با یک “%s” به پایان برسد." #, c-format msgid "The translation ends with “%s”, but the source text ends with “%s”." msgstr "ترجمه با “%s” به پایان رسیده اما متن منبع با “%s” به پایان رسیده است." msgid "Cloud" msgstr "" msgid "Clear Menu" msgstr "پاک‌کردن فهرست" msgid "Clear menu" msgstr "پاک‌کردن فهرست" msgid "Comment:" msgstr "دیدگاه:" msgid "Update" msgstr "به‌روز رسانی" msgid "&Delete" msgstr "&حذف" msgid "Delete the comment" msgstr "حذف دیدگاه" msgid "Edit project" msgstr "ویرایش پروژه" msgid "Project name:" msgstr "نام پروژه:" msgid "Browse" msgstr "مرور" msgid "Add directory to the list" msgstr "افزودن شاخه به سیاهه" msgid "OK" msgstr "تأیید" msgid "&File" msgstr "&پرونده" msgid "&New…" msgstr "&جدید…" msgid "New from &POT/PO file…" msgstr "جدید از پروندهٔ &POT/PO…" msgid "New From &POT/PO File…" msgstr "جدید از پروندهٔ &POT/PO…" msgid "&Open…" msgstr "&گشودن…" msgid "Open Recent" msgstr "گشودن موارد اخیر" msgid "Open recent" msgstr "گشودن موارد اخیر" msgid "Open cloud translation…" msgstr "باز کردن ترجمه ابری…" msgid "Open Cloud Translation…" msgstr "باز کردن ترجمه ابری…" msgid "&Start window" msgstr "&شروع پنجره" msgid "&Start Window" msgstr "&شروع پنجره" msgid "Catalogs &manager" msgstr "&مدیر کاتالوگ‌ها" msgid "Catalogs &Manager" msgstr "&مدیر کاتالوگ‌ها" msgid "&Close" msgstr "&بستن" msgid "&Save" msgstr "&ذخیره" msgid "Save &as…" msgstr "ذخیره به &عنوان…" msgid "Save &As…" msgstr "ذخیره به &عنوان…" msgid "Compile to MO…" msgstr "کامپایل به MO…" msgid "E&xport to HTML…" msgstr "" msgid "Check for updates…" msgstr "بررسی برای به‌روز رسانی‌ها…" msgid "Settings…" msgstr "تنظیمات…" msgid "&Preferences" msgstr "&ترجیحات" msgid "E&xit" msgstr "&خروج" msgid "Quit" msgstr "خروج" msgid "Copy from singular" msgstr "رونوشت از مفرد" msgid "Copy From Singular" msgstr "رونوشت از مفرد" msgid "Translation needs &work" msgstr "ترجمه نیازمند کار" msgid "Translation Needs &Work" msgstr "ترجمه نیازمند کار" msgid "Edit &comment" msgstr "ویرایش &دیدگاه" msgid "Edit &Comment" msgstr "ویرایش &دیدگاه" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "پیشنهادات" msgid "&Find…" msgstr "&یافتن…" msgid "Replace…" msgstr "جای‌گزینی…" msgid "Find next" msgstr "یافتن بعدی" msgid "Find previous" msgstr "یافتن قبلی" msgid "Find and Replace…" msgstr "یافتن و جای‌گزینی…" msgid "Find Next" msgstr "یافتن بعدی" msgid "Find Previous" msgstr "یافتن قبلی" msgid "Show string &ID" msgstr "نمایش &شناسهٔ رشته" msgid "Show String &ID" msgstr "نمایش &شناسهٔ رشته" msgid "Show warnings" msgstr "نمایش هشدارها" msgid "Show Warnings" msgstr "نمایش هشدارها" msgid "Sort by &file order" msgstr "مرتب‌کردن بر اساس ترتیب &پرونده" msgid "Sort by &File Order" msgstr "مرتب‌کردن بر اساس ترتیب &پرونده" msgid "Sort by &source" msgstr "مرتب‌کردن بر اساس &منبع" msgid "Sort by &Source" msgstr "مرتب‌کردن بر اساس &منبع" msgid "Sort by &translation" msgstr "مرتب‌کردن بر اساس &ترجمه" msgid "Sort by &Translation" msgstr "مرتب‌کردن بر اساس &ترجمه" msgid "&Group by context" msgstr "&گروه‌بندی بر اساس زمینه" msgid "&Group By Context" msgstr "&گروه‌بندی بر اساس زمینه" msgid "Entries with errors first" msgstr "ابتدا ورودی‌های همراه خطا" msgid "Entries with Errors First" msgstr "ابتدا ورودی‌های همراه خطا" msgid "&Untranslated entries first" msgstr "ابتدا ورودی‌های ترجمه‌&نشده" msgid "&Untranslated Entries First" msgstr "ابتدا ورودی‌های ترجمه‌&نشده" msgid "&Show code occurrences" msgstr "&نمایش رخداد کد" msgid "&Show Code Occurrences" msgstr "&نمایش رخداد کد" msgid "Show sidebar" msgstr "نمایش نوار جانبی" msgid "Show status bar" msgstr "نمایش نوار وضعیت" msgid "&Translation" msgstr "&ترجمه" msgid "&Update from source code" msgstr "&به‌روز رسانی از کد منبع" msgid "&Update from Source Code" msgstr "&به‌روز رسانی از کد منبع" msgid "Update from &POT file…" msgstr "به‌روز رسانی از پروندهٔ &POT…" msgid "Update from &POT File…" msgstr "به‌روز رسانی از پروندهٔ &POT…" msgid "Sync with Crowdin" msgstr "همگام‌سازی با Crowdin" msgid "Pre-&translate…" msgstr "پیش‌&ترجمه…" msgid "&Validate translations" msgstr "&اعتبارسنجی ترجمه‌ها" msgid "&Validate Translations" msgstr "&اعتبارسنجی ترجمه‌ها" msgid "Remove Same-as-Source Translations" msgstr "" msgid "&Purge deleted translations" msgstr "&پاکسازی ترجمه‌های حذف شده" msgid "&Purge Deleted Translations" msgstr "&پاکسازی ترجمه‌های حذف شده" msgid "&Properties…" msgstr "&ویژگی‌ها…" msgid "&Go" msgstr "&برو" msgid "&Done and next" msgstr "&انجام و بعدی" msgid "&Done and Next" msgstr "&انجام و بعدی" msgid "Previously edited" msgstr "قبلا ویرایش شده است" msgid "Previously Edited" msgstr "قبلا ویرایش شده است" msgid "&Previous translation" msgstr "ترجمهٔ &قبلی" msgid "&Previous Translation" msgstr "ترجمهٔ &قبلی" msgid "&Next translation" msgstr "ترجمهٔ &بعدی" msgid "&Next Translation" msgstr "ترجمهٔ &بعدی" msgid "P&revious unfinished" msgstr "ناتمام &قبلی" msgid "P&revious Unfinished" msgstr "ناتمام &قبلی" msgid "Ne&xt unfinished" msgstr "ناتمام &بعدی" msgid "Ne&xt Unfinished" msgstr "ناتمام &بعدی" msgid "Previous plural form" msgstr "حالت جمع قبلی" msgid "Previous Plural Form" msgstr "حالت جمع قبلی" msgid "Next plural form" msgstr "حالت جمع بعدی" msgid "Next Plural Form" msgstr "حالت جمع بعدی" msgid "&Online help" msgstr "راهنمای &برخط" msgid "&Online Help" msgstr "راهنمای &برخط" msgid "&GNU gettext manual" msgstr "کتابچهٔ راهنمای &GNU gettext" msgid "&GNU gettext Manual" msgstr "کتابچهٔ راهنمای &GNU gettext" msgid "&About Poedit" msgstr "دربارهٔ Poedit" msgid "&About" msgstr "&درباره" msgid "Extractor setup" msgstr "برپا کردن استخراج کننده" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "سیاههٔ پسوندهای جدا شده توسط سمیکلون (به عنوان مثال *.cpp;*.h):" msgid "Invocation:" msgstr "احضاریه:" msgid "Command to extract translations:" msgstr "فرمان برای استخراج ترجمه‌ها:" 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 به پرچم مجموعه نویسه‌ها گسترش می‌یابد (در زیر ببینید)." msgid "An item in keywords list:" msgstr "یک مورد در سیاههٔ کلیدواژه‌ها:" msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "این به خط فرمان یکبار برای هر پرونده‌ی درونداد ضمیمه خواهد شد. %k به کلیدواژه " "گسترش می‌یابد." msgid "An item in input files list:" msgstr "یک مورد در سیاههٔ پرونده‌های درونداد:" #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "این به خط فرمان یکبار برای هر پرونده‌ی درونداد ضمیمه خواهد شد. %f به نام " "پرونده گسترش می‌یابد." msgid "Source code charset:" msgstr "مجموعه‌نویسه کد منبع:" #, 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 به مقدار مجموعه نویسه گسترش می یابد." msgid "Translation Properties" msgstr "ویژگی‌های ترجمه" msgid "Project name and version:" msgstr "نگارش و نام پروژه:" msgid "Language team:" msgstr "گروه ترجمه:" msgid "Plural forms:" msgstr "حالت‌های جمع:" msgid "Use default rules for this language" msgstr "استفاده از قوانین پیش‌گزیده برای این زبان" msgid "Use custom expression" msgstr "استفاده از عبارت سفارشی" msgid "Learn about plural forms" msgstr "دربارهٔ حالت‌های جمع بخوانید" msgid "Charset:" msgstr "مجموعه‌نویسه:" msgid "Advanced Extraction Settings…" msgstr "تنظیمات پیشرفتهٔ استخراج…" msgid "Advanced extraction settings…" msgstr "تنظیمات پیشرفتهٔ استخراج…" msgid "Translation properties" msgstr "ویژگی‌های ترجمه" msgid "Sources Paths" msgstr "مسیرهای منبع" msgid "Sources paths" msgstr "مسیرهای منبع" msgid "Extract text from source files in the following directories:" msgstr "متن را از فایل‌های منبع در مسیرهای زیر استخراج کنید:" msgid "Base path:" msgstr "مسیر پایه:" msgid "Sources Keywords" msgstr "کلیدواژه‌های منبع" msgid "Sources keywords" msgstr "کلیدواژه‌های منبع" msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "از این کلمات کلیدی (نام توابع) برای تشخیص رشته های قابل ترجمه\n" "فایل منبع استفاده کنید:" msgid "Also use default keywords for supported languages" msgstr "هم چنین از کلیدواژه‌های پیش‌فرض برای زبان‌های پشتیبانی شده استفاده کنید" msgid "Learn about gettext keywords" msgstr "دربارهٔ کلیدواژه‌های gettext بخوانید" msgid "Update summary" msgstr "خلاصه به‌روز رسانی" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" "این رشته‌ها در منابع یافت شدند اما در فایل نبودند.\n" "Poedit اکنون آنها را به فایل اضافه می‌کند." msgid "New strings" msgstr "رشته‌های جدید" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" "این رشته‌ها دیگر در کد منبع نیستند.\n" "Poedit اکنون آنها را از فایل حذف می‌کند." msgid "Obsolete strings" msgstr "رشته‌های منسوخ" msgid "(0 new, 0 obsolete)" msgstr "(۰ جدید، ۰ منسوخ)" msgid "Open" msgstr "" msgid "Open file" msgstr "گشودن پرونده" msgid "Save file" msgstr "ذخیرهٔ پرونده" msgid "Validate" msgstr "اعتبارسنجی" msgid "Check for errors in the translation" msgstr "بررسی برای خطاها در ترجمه" msgid "Update from code" msgstr "به‌روز رسانی از کد" msgid "Update from Code" msgstr "به‌روز رسانی از کد" msgid "Update from source code" msgstr "به‌روز رسانی از کد منبع" msgid "Sidebar" msgstr "نوار کناری" msgid "Show or hide the sidebar" msgstr "نمایش یا پنهان کردن نوار کناری" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. msgid "Previous source text" msgstr "متن منبع قبلی" msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "متن منبع قدیمی (قبل از تغییر در طی به‌روز رسانی) که ترجمه اکنون نادرست با آن " "مطابقت دارد." msgid "Notes for translators" msgstr "یادداشت‌ها برای مترجمان" msgid "Comment" msgstr "دیدگاه" msgid "Add comment" msgstr "افزودن دیدگاه" msgid "Add Comment" msgstr "افزودن دیدگاه" msgid "Delete From Translation Memory" msgstr "حذف از حافظهٔ ترجمه" msgid "Delete from translation memory" msgstr "حذف از حافظهٔ ترجمه" msgid "Translation suggestions" msgstr "پیشنهادات ترجمه" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). msgid "No matches found" msgstr "مورد منطبقی یافت نشد" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). msgid "No Matches Found" msgstr "مورد منطبقی یافت نشد" msgid "This string was found in Poedit’s translation memory." msgstr "این رشته در حافظهٔ ترجمهٔ Poedit پیدا شده است." msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "پیشنهادات ترجمه مستلزم آن است که زبان متن مبدأ شناخته شده باشد. Poedit " "نتوانست آن را در این فایل شناسایی کند." msgid "The TMX file is malformed." msgstr "فایل TMX بد شکل است." msgid "No translations were found in the TMX file." msgstr "هیچ ترجمه‌ای در فایل TMX یافت نشد." #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "پایگاه داده حافظه ترجمه خراب است: %s (%d)." #, c-format msgid "Translation memory error: %s (%d)." msgstr "خطای حافظهٔ ترجمه: %s (%Id)" msgid "Cannot create temporary directory." msgstr "نمی‌توان مسیر موقت محلی را ساخت." msgid "There are no translations. That’s unusual." msgstr "هیچ ترجمه‌ای وجود ندارد. این غیرعادی است." msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "Translators typically use PO template files (POTs) prepared for them by the " "developer." msgstr "" "ورودی‌های قابل ترجمه به‌صورت دستی در سیستم Gettext اضافه نمی‌شوند، اما به‌طور " "خودکار\n" "از کد منبع استخراج می‌شوند. به این ترتیب، آنها به‌روز و دقیق می‌مانند.\n" "مترجمان معمولاً از فایل‌های الگوی PO (POT) که توسط توسعه‌دهنده برای آنها تهیه " "شده است استفاده می‌کنند." msgid "(Learn more about GNU gettext)" msgstr "(دربارهٔ GNU gettext بیشتر بدانید)" msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "ساده‌ترین راه برای پر کردن این فایل با ترجمه، به‌روز رسانی آن از یک POT است:" msgid "Update from POT" msgstr "به‌روز رسانی از POT" msgid "Take translatable strings from an existing POT template." msgstr "رشته‌های قابل ترجمه را از یک الگوی POT موجود برمی‌دارد." msgid "" "You can also extract translatable strings directly from the source code:" msgstr "" "هم‌چنین می‌توانید رشته‌های قابل ترجمه را به صورت مستقیم از کد منبع استخراج کنید:" msgid "Extract from sources" msgstr "استخراج از منبع" msgid "Configure source code extraction in Properties." msgstr "استخراج کد منبع را در ترجیحات پیکربندی کنید." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #, c-format msgid "Version %s" msgstr "نگارش %s" msgid "Create new" msgstr "ایجاد جدید" msgid "Create new translation from POT template." msgstr "ترجمه‌ای جدید از الگوی POT ایجاد کن." msgid "Browse files" msgstr "مرور پرونده‌ها" msgid "Open and edit translation files." msgstr "گشودن و ویرایش پرونده‌های ترجمه." msgid "Translate cloud project" msgstr "ترجمه پروژه ابری" msgid "Collaborate with other people online." msgstr "به صورت برخط با افراد دیگر همکاری کنید." msgid "Recent files" msgstr "پرونده‌های اخیر" msgid "Sync" msgstr "همگام‌سازی" 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") #, c-format msgid "About %s" msgstr "درباره %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #, c-format msgid "%s Preferences" msgstr "ترجیحات %s" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "خدمات" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "پنهان کردن %s" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "پنهان کردن بقیه" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "نمایش همه" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "خروج %s" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "ترجیحات…" msgid "Preferences..." msgstr "ترجیحات..." #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "اخیر" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "پرتکرار" msgid "&Apply" msgstr "&اعمال" msgid "Apply" msgstr "اعمال" msgid "&Back" msgstr "&بازگشت" msgid "Back" msgstr "بازگشت" msgid "&Cancel" msgstr "&لغو" msgid "&Clear" msgstr "&پاک‌کردن" msgid "Clear" msgstr "پاک‌کردن" msgid "Copy" msgstr "رونوشت" msgid "Cu&t" msgstr "&برش" msgid "Cut" msgstr "برش" msgid "Edit" msgstr "ویرایش" msgid "&Quit" msgstr "&خروج" msgid "Help" msgstr "راهنما" msgid "&New" msgstr "&جدید" msgid "New" msgstr "جدید" msgid "&No" msgstr "&خیر" msgid "No" msgstr "خیر" msgid "&OK" msgstr "&تأیید" msgid "Open…" msgstr "گشودن…" msgid "&Open..." msgstr "&گشودن..." msgid "Open..." msgstr "گشودن..." msgid "&Paste" msgstr "&جای‌گذاری" msgid "Paste" msgstr "جای‌گذاری" msgid "Preferences" msgstr "ترجیحات" msgid "&Redo" msgstr "انجام &دوباره" msgid "Refresh" msgstr "تازه‌سازی" msgid "&Save as" msgstr "&ذخیره به عنوان" msgid "Save as" msgstr "ذخیره به عنوان" msgid "Select &All" msgstr "گزینش &همه" msgid "Select All" msgstr "گزینش همه" msgid "&Undo" msgstr "&برگردان" msgid "&Yes" msgstr "&بله" msgid "Yes" msgstr "بله" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "دگرساز+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "تبدیل+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "ورود" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "بالا" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "پایین" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "چپ" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "راست" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "مهار" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "دگرساز" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "تبدیل" poedit-3.5/locales/af.po0000644000175100001770000017525214664354152012167 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "Versteek hierdie kennisgewingsboodskap" msgid "Don’t Show Again" msgstr "Moenie Weer Toon Nie" msgid "Don’t show again" msgstr "Moenie weer toon nie" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(Nuut: %i, verouderd: %i)" msgid "Collecting source files…" msgstr "Versamel tans bronlêers…" msgid "Extracting translatable strings…" msgstr "Ekstraheer tans vertaalbare stringe…" msgid "Failed to load file with extracted translations." msgstr "Kon nie lêer met geëkstraheerde vertalings laai nie." msgid "Merging differences…" msgstr "Voeg tans verskille saam…" msgid "Updating translations" msgstr "Werk tans vertalings by" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "Fiilde \"%s\" horiima udditaade." msgid "Invalid file" msgstr "Ongeldige lêer" #, c-format msgid "Malformed header: “%s”" msgstr "Misvormde kop: “%s”" msgid "PO Translation Files" msgstr "PO-vertaallêers" msgid "POT Translation Templates" msgstr "POT-vertaalsjablone" msgid "XLIFF Translation Files" msgstr "XLIFF-vertaallêers" msgid "JSON Translation Files" msgstr "Piille Fire JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "Piillde Firo Flutter" msgid "All Translation Files" msgstr "Alle Vertaallêers" msgid "The file is in a format not recognized by Poedit." msgstr "Fiilde ndee woni ko e mbayka ko Poedit heftinaani." 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." #, c-format msgid "Reading file content failed with the following error: %s" msgstr "Targol loowdi fiilde woorii kadi addii ndee-ɗoo juumre: %s" #, 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." #, c-format msgid "Couldn’t save file %s." msgstr "Kon nie lêer %s bewaar nie." msgid "Screenshots:" msgstr "Skermkiekies:" #, 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." #, 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)." 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" msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "Gebroke PO-lêer: meervoudvorm msgstr is gebruik sonder msgid_plural" msgid "Couldn’t load the file, it is probably damaged." msgstr "Horiima loowde fiilde ndee, ena gasa nde moƴƴaani." 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." 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)." #, 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." msgid "Error saving file" msgstr "Fout met bewaar van lêer" #, c-format msgid "“%s” is not a valid POT file." msgstr "“%s” is nie ’n geldige POT-lêer nie." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Juumre tuma loowgol fiilde XLIFF: %s" #, c-format msgid "unsupported version (%s)" msgstr "Yamre (%s) tammbitaaka" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML msgid "Broken markup in translation string." msgstr "Gebroke markup in vertaalstring." msgid "(Use default language)" msgstr "(Gebruik verstektaal)" msgid "Language selection" msgstr "Taalkeuse" msgid "Select your preferred language" msgstr "Kies aseblief u voorkeurtaal" msgid "You must restart Poedit for this change to take effect." msgstr "Herbegin Poedit vir hierdie verandering om in werking te tree." msgid "Add Account" msgstr "Voeg rekening toe" msgid "Add account" msgstr "Voeg rekening toe" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "Leer meer oor %s" 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." msgid "How does cloud sync work?" msgstr "Hoe werk wolksinchronisering?" msgid "Account" msgstr "Rekening" msgid "(not signed in)" msgstr "(nie aangeteken nie)" msgid "File" msgstr "Lêer" msgid "Open cloud translation" msgstr "Open wolkvertaling" msgid "Manage accounts" msgstr "Bestuur rekeninge" msgid "Project:" msgstr "Projek:" msgid "Language:" msgstr "Taal: " msgid "Sign in to Cloud Account" msgstr "Teken aan op wolkrekening" msgid "Sign in to cloud account" msgstr "Teken aan op wolkrekening" msgid "No translation projects listed in your account." msgstr "Geen vertaalprojekte aanwesig in u rekening nie." msgid "Downloading latest translations…" msgstr "Laai tans nuutste vertalings af…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #, c-format msgid "Sign in to %s" msgstr "Teken aan by %s" msgid "Syncing" msgstr "Sinchronisering" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, 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. #, c-format msgid "Uploading translations to %s failed." msgstr "Oplaai van vertalings na %s het misluk." msgid "Syncing error" msgstr "Sinchroniseerfout" msgid "Add" msgstr "Voeg toe" msgid "Unknown Crowdin error." msgstr "Onbekende Crowdin-fout." msgid "Not authorized, please sign in again." msgstr "Nie gemagtig nie, teken weer aan." msgid "Downloading translations is disabled in this project." msgstr "Aflaai van vertalings vir hierdie projek is gedeaktiveer." msgid "Sign In" msgstr "Teken Aan" msgid "Sign in" msgstr "Teken aan" msgid "Sign Out" msgstr "Teken Af" msgid "Sign out" msgstr "Teken af" msgid "Learn more about Crowdin" msgstr "Leer meer oor Crowdin" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" "Crowdin is ’n aanlyn lokaliseringsbestuurplatform en " "meewerkvertaalnutsmiddel." msgid "Waiting for authentication…" msgstr "Wag tans vir bekragtiging…" msgid "Updating user information…" msgstr "Werk tans gebruikersinligting by…" msgid "Sign in to Crowdin" msgstr "Teken aan op Crowdin" msgid "Syncing with Crowdin failed." msgstr "Sinchronisering met Crowdin het misluk." msgid "Crowdin error" msgstr "Crowdin-fout" msgid "Uploading translations…" msgstr "Laai tans vertalings op…" msgid "&Copy" msgstr "&Kopieer" msgid "Learn more" msgstr "Leer meer" msgid "&Help" msgstr "&Hulp" msgid "MO files can’t be directly edited in Poedit." msgstr "MO-lêers kan nie direk in Poedit gewysig word nie." msgid "Error opening file" msgstr "Fout tydens open van lêer" 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." msgid "don’t delete temporary files (for debugging)" msgstr "moenie tydelike lêers skrap nie (vir foutopsporing)" msgid "handle a poedit:// URI" msgstr "gebruik poedit:// URI" msgid "go to item at given line number" msgstr "gaan na item met gegewe reëlnommer" msgid "Failed to communicate with Poedit process." msgstr "Kommunikasie met die Poedit-proses het misluk." #, c-format msgid "Unhandled exception occurred: %s" msgstr "Onhanteerde uitsondering het voorgekom: %s" msgid "Select translation template" msgstr "Kies vertalingsjabloon" msgid "Select translation file" msgstr "Kies vertalingslêer" msgid "Poedit is an easy to use translation editor." msgstr "Poedit is ’n maklik-om-te-gebruik vertaalwysiger." 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." #, c-format msgid "File “%s” is not a translation file." msgstr "Lêer “%s” is nie ’n vertaallêer nie." #, c-format msgid "File “%s” doesn’t exist." msgstr "Lêer “%s” bestaan nie." 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". #, 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." msgid "Install" msgstr "Installeer" #, c-format msgid "The file “%s” has been changed by another application." msgstr "Die lêer “%s” is deur ’n ander toepassing verander." msgid "Reload file" msgstr "Herlaai lêer" 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." msgid "Ignore" msgstr "Ignoreer" msgid "Reload File" msgstr "Herlaai lêer" msgid "The file has been modified. Do you want to save changes?" msgstr "Die lêer is verander. Wil u die veranderinge bewaar?" msgid "Save changes" msgstr "Bewaar veranderinge" msgid "Your changes will be lost if you don’t save them." msgstr "U veranderinge gaan verlore indien u dit nie bewaar nie." msgid "Save" msgstr "Bewaar" msgid "Do&n’t save" msgstr "Mo&enie bewaar nie" msgid "Don’t Save" msgstr "Moenie Bewaar Nie" 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." msgid "Cancel" msgstr "Kanseleer" msgid "Save Anyway" msgstr "Bewaar in elk geval" msgid "Save anyway" msgstr "Bewaar in elk geval" msgid "Save as…" msgstr "Bewaar as…" msgid "Compile to…" msgstr "Kompileer na…" msgid "Compiled Translation Files" msgstr "Gekompileerde Vertaallêers" msgid "Export to HTML…" msgstr "" msgid "HTML Files" msgstr "HTML-lêers" #, c-format msgid "In: %s" msgstr "In: %s" msgid "Source code not available." msgstr "Bronkode nie beskikbaar." msgid "Updating failed" msgstr "Bywerking het misluk" 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." msgid "Permission denied." msgstr "Toestemming geweier." 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. 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. 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." msgid "Translation entries in the file are probably incorrect." msgstr "Vertalingsinskrywings in die lêer is waarskynlik verkeerd." msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "Bywerk van lêer het misluk. Klik op ‘Details >>’ vir details." msgid "Open translation template" msgstr "Open vertalingsjabloon" #, 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." msgid "Validation results" msgstr "Valideringsresultate" 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." msgid "The file was saved safely." msgstr "Die lêer is veilig bewaar." 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." 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." 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." 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." msgid "No problems with the translation found." msgstr "Geen probleme met die vertaling gevind." #, 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." msgid "The translation is ready for use." msgstr "Die vertaling is gereed vir gebruik." #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "Poedit het ongeldige inhoud in die lêer “%s” outomaties gerepareer." 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." msgid "Language of the translation isn’t set." msgstr "Taal vir die vertaling is nie ingestel nie." msgid "Set Language" msgstr "Stel Taal In" 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)." 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." msgid "Language of the translation is the same as source language." msgstr "Taal van die vertaling is dieselfde as brontaal." msgid "Fix Language" msgstr "Repareer Taal" msgid "Fix language" msgstr "Repareer taal" 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." 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ê" msgid "Required header Plural-Forms is missing." msgstr "Vereiste Meervoudsvorm-kop ontbreek." #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Sintaksfout in Meervoudsvorm-kop (“%s”)." msgid "Fix the Header" msgstr "Repareer die Kop" 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". #, 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.")" msgid "Review" msgstr "Hersien" msgid "Would you like to use English for source text?" msgstr "Wil u Engels as bronteks gebruik?" #, 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" msgid "Load English" msgstr "Laai Engels" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Vertaal: %d van %d (%d %%)" #, c-format msgid "Remaining: %d" msgstr "Oorblywend: %d" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d fout" msgstr[1] "%d foute" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d inskrywing" msgstr[1] "%d inskrywings" msgid " (unsaved)" msgstr " (onbewaar)" msgid " (modified)" msgstr " (verander)" #, c-format msgid "Failed to update translation memory: %s" msgstr "Kon nie vertaalgeheue bywerk nie: %s" msgid "Remove same-as-source translations" msgstr "" msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" msgid "Keep" msgstr "Behou" msgid "Remove" msgstr "" msgid "Purge deleted translations" msgstr "Purgeer geskrapte vertalings" 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?" 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." msgid "Purge" msgstr "Purgeer" msgid "Copy from source text" msgstr "Kopieer vanaf bronteks" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "Wis vertaling" msgid "Clear Translation" msgstr "Wis Vertaling" msgid "Edit comment" msgstr "Wysig kommentaar" msgid "Edit Comment" msgstr "Wysig Kommentaar" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "Kodevoorkomste" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "Kodevoorkomste" msgid "Hide Sidebar" msgstr "Versteek Systaaf" msgid "Show Sidebar" msgstr "Toon Systaaf" msgid "Hide Status Bar" msgstr "Versteek Statusbalk" msgid "Show Status Bar" msgstr "Toon Statusbalk" msgid "String length in characters: translation | source" msgstr "Stringlengte in karakters: vertaling | bron" msgid "String length in characters" msgstr "Stringlengte in karakters" msgid "Source text" msgstr "Bronteks" msgid "Singular" msgstr "Enkelvoud" msgid "Plural" msgstr "Meervoud" msgid "Translation" msgstr "Vertaling" msgid "Pre-translated" msgstr "Voorafvertaal" 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. msgid "Needs work" msgstr "Kort aandag" 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." msgid "Create new translation" msgstr "Skep nuwe vertaling" 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 msgid "Source text ID" msgstr "ID binndol iwdi" msgid "Everything" msgstr "Alles" #, c-format msgid "Form %i" msgstr "Vorm %i" #, c-format msgid "Form %i (unused)" msgstr "Vorm %i (ongebruik)" msgid "Zero" msgstr "Nul" msgid "One" msgstr "Een" msgid "Two" msgstr "Twee" msgid "Other" msgstr "Ander" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, c-format msgid "String context: %s" msgstr "Stringkonteks: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #, c-format msgid "String identifier: %s" msgstr "Stringidentifiseerder: %s" #, c-format msgid "%s Format" msgstr "%s-Formaat" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "%s-formaat" #, c-format msgid "Translation — %s" msgstr "Vertaling — %s" msgid "ID" msgstr "ID" #, c-format msgid "Source text — %s" msgstr "Bronteks — %s" msgid "unknown language" msgstr "onbekende taal" #, c-format msgid "Network error: %s (%d)" msgstr "Netwerkfout: %s (%d)" msgid "Unknown error" msgstr "Onbekende fout" #, c-format msgid "Failed command: %s" msgstr "Mislukte bevel: %s" msgid "Failed to merge gettext catalogs." msgstr "Kon nie gettext-katalogi saamvoeg nie." msgid "Open in Editor" msgstr "Open in Wysiger" msgid "Open in editor" msgstr "Open in wysiger" 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." msgid "No usage information" msgstr "Geen gebruiksinligting" #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d kodevoorkoms" msgstr[1] "%d kodevoorkomste" msgid "Source code not found" msgstr "Bronkode nie gevind nie" 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." msgid "File cannot be opened" msgstr "Lêer kan nie geopen word nie" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "Poedit kon nie die “%s”-lêer open nie." msgid "Find" msgstr "Soek" msgid "Replace" msgstr "Vervang" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "Opsies" msgid "Ignore case" msgstr "Ignoreer hoof-/kleinletters" msgid "Wrap around" msgstr "Omvou" msgid "Whole words only" msgstr "Slegs heel woorde" msgid "Find in source texts" msgstr "Soek in brontekste" msgid "Find in translations" msgstr "Soek in vertalings" msgid "Find in comments" msgstr "Vind in kommentaar" msgid "Close" msgstr "Maak toe" msgid "Replace &All" msgstr "Vervang &Alles" msgid "Replace &all" msgstr "Vervang &alles" msgid "&Replace" msgstr "&Vervang" msgid "< &Previous" msgstr "< &Vorige" msgid "&Next >" msgstr "&Volgende >" msgid "String to find" msgstr "String om te soek" msgid "Replacement string" msgstr "Vervangende string" #, c-format msgid "Cannot execute program: %s" msgstr "Kan nie program uitvoer nie: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "Taalnaam of -kode" msgid "Translation Language" msgstr "Taal van Vertaling" msgid "Language of the translation:" msgstr "Taal van die vertaling:" msgid "All strings" msgstr "Alle stringe" msgid "Couldn’t download Localazy project details." msgstr "Kon nie Localazy-projekdetails aflaai nie." msgid "There was an error when uploading translations to Localazy." msgstr "Daar was ’n fout met die oplaai van vertalings na Localazy." msgid "Projects" msgstr "Projekte" 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." msgid "Add Project" msgstr "Voeg projek toe" msgid "Add project" msgstr "Voeg projek toe" msgid "Poedit - Catalogs manager" msgstr "Poedit - Katalogusbestuurder" msgid "Edit…" msgstr "Wysig…" msgid "Create new translations project" msgstr "Skep nuwe vertaalprojek" msgid "Delete the project" msgstr "Skrap die projek" msgid "Edit the project" msgstr "Wysig die projek" msgid "Update all" msgstr "Werk alles by" msgid "Update all catalogs in the project" msgstr "Werk alle katalogusse in die projek by" msgid "Total" msgstr "Totaal" msgid "Untrans" msgstr "Onvertaal" msgctxt "column/row header" msgid "Needs Work" msgstr "Kort Werk" msgid "Errors" msgstr "Foute" msgid "Last modified" msgstr "Laas gewysig" msgid "Select directory" msgstr "Kies gids " msgid "Directories:" msgstr "Gidse:" msgid "" msgstr "" #, c-format msgid "Do you want to delete project “%s”?" msgstr "Wil u projek “%s” skrap?" msgid "Delete project" msgstr "Skrap projek" msgid "Deleting the project will not delete any translation files." msgstr "Skrap van die projek sal geen vertaallêers skrap nie." msgid "Confirmation" msgstr "Bevestiging" msgid "Update all catalogs in this project?" msgstr "Werk alle katalogusse in hierdie projek by?" 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." msgid "Check for Updates…" msgstr "Gaan na vir Bywerkings…" msgid "Catalogs Manager" msgstr "Katalogusbestuurder" msgid "&Preferences…" msgstr "&Voorkeure…" msgid "&Edit" msgstr "W&ysig" msgid "Undo" msgstr "Ontdaan" msgid "Redo" msgstr "Herdoen" msgid "Paste and Match Style" msgstr "Plak en Pas Styl Aan" msgid "Delete" msgstr "Skrap" msgid "Spelling and Grammar" msgstr "Spelling en Grammatika" msgid "Show Spelling and Grammar" msgstr "Toon Spelling en Grammatika" msgid "Check Document Now" msgstr "Gaan Dokument Nou Na" msgid "Check Spelling While Typing" msgstr "Gaan Spelling Intyds Na" msgid "Check Grammar With Spelling" msgstr "Gaan Grammatika Met Spelling Na" msgid "Correct Spelling Automatically" msgstr "Korrigeer Spelling Outomaties" msgid "Substitutions" msgstr "Vervangings" msgid "Show Substitutions" msgstr "Toon Vervangings" msgid "Smart Copy/Paste" msgstr "Slimkopieer/-plak" msgid "Smart Quotes" msgstr "Slimaanhalingstekens" msgid "Smart Dashes" msgstr "Slimstrepe" msgid "Smart Links" msgstr "Slimskakels" msgid "Text Replacement" msgstr "Teksvervanging" msgid "Transformations" msgstr "Omvormings" msgid "Make Upper Case" msgstr "Maak Hoofletters" msgid "Make Lower Case" msgstr "Maak Kleinletters" msgid "Capitalize" msgstr "Maak Beginhoofletters" msgid "Speech" msgstr "Spraak" msgid "Start Speaking" msgstr "Begin Praat" msgid "Stop Speaking" msgstr "Hou op Praat" msgid "&View" msgstr "&Bekyk" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Show Toolbar" msgstr "Toon Nutsbalk" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Customize Toolbar…" msgstr "Pas Taakbalk Aan…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Enter Full Screen" msgstr "Gaan na Volskerm" msgid "Window" msgstr "Venster" msgid "Minimize" msgstr "Minimaliseer" msgid "Zoom" msgstr "Vergroot/verklein" msgid "Welcome to Poedit" msgstr "Welkom by Poedit" msgid "Bring All to Front" msgstr "Bring Alles na Vore" msgid "Information about the translator" msgstr "Inligting oor die vertaler" msgid "Name:" msgstr "Naam:" msgid "Your Name" msgstr "U Naam" msgid "Email:" msgstr "E-pos:" msgid "you@example.com" msgstr "gebruiker@voorbeeld.co.za" 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." msgid "Editing" msgstr "Wysiging" msgid "Automatically compile MO file when saving" msgstr "Maak outomaties MO-lêer tydens stoor" msgid "Show summary after updating files" msgstr "Toon opsomming na bywerking van lêers" msgid "Check spelling" msgstr "Gaan spelling na" msgid "Always change focus to text input field" msgstr "Verander altyd fokus na teks-toevoerveld" 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." msgid "Appearance" msgstr "Voorkoms" msgid "Use custom list font:" msgstr "Gebruik pasgemaakte lysfont:" msgid "Use custom text fields font:" msgstr "Gebruik pasgemaakte teksveldfont:" msgid "Change UI language" msgstr "Verander koppelvlaktaal" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions msgid "(requires Windows 8 or newer)" msgstr "(vereis Windows 8 of nuwer)" msgid "General" msgstr "Algemeen" msgid "Use translation memory" msgstr "Gebruik vertaalgeheue" msgid "Manage…" msgstr "Bestuur…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "Tydens bywerking vanuit bronne" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "wollerige trefslae binne die lêer" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "voorafvertaal vanaf TM" 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." msgid "Stored translations:" msgstr "Bewaarde vertalings:" msgid "Database size on disk:" msgstr "Databasisgrootte op skyf:" msgid "Import Translation Files…" msgstr "Voer Vertaallêers In…" msgid "Import translation files…" msgstr "Voer vertaallêers in…" msgid "Import From TMX…" msgstr "Voer In Vanaf TMX…" msgid "Import from TMX…" msgstr "Voer in vanaf TMX…" msgid "Export To TMX…" msgstr "Stuur Uit Na TMX…" 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). msgid "Reset" msgstr "Herstel" msgid "Select translation files to import" msgstr "Kies vertaalleêrs om in te voer" msgid "Translation Memory" msgstr "Vertaalgeheue" msgid "Importing translations…" msgstr "Vertalings word ingevoer…" #, c-format msgid "Error loading translation file “%s”." msgstr "Fout tydens laai van vertalingslêer “%s”." msgid "Finalizing…" msgstr "Rond tans af…" msgid "Select TMX files to import" msgstr "Kies TMX-lêers om in te voer" msgid "TMX Files" msgstr "TMX-lêers" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "Invoer van vertaalgeheue van “%s” het misluk." msgid "Import error" msgstr "Invoerfout" msgid "Export as…" msgstr "Stuur Uit as…" msgid "Exporting translations…" msgstr "Stuur vertalings uit…" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "Uitstuur van vertaalgeheue van “%s” het misluk." msgid "Export error" msgstr "Uitstuurfout" msgid "Reset translation memory" msgstr "Herstel vertaalgeheue" msgid "Are you sure you want to reset the translation memory?" msgstr "Is u seker u wil die vertaalgeheue herstel?" 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. msgid "TM" msgstr "TM" msgid "" "Source code extractors are used to find translatable strings in the source " "code files and extract them so that they can be translated." msgstr "" "Bronkodeëkstraheerders word gebruik om vertaalbare stringe in die " "bronkodelêers te soek en vir vertaling te ekstraheer." msgid "Custom Extractors:" msgstr "Pasgemaakte Ekstraheerders:" msgid "Custom extractors:" msgstr "Pasgemaakte ekstraheerders:" msgid "GNU gettext" msgstr "GNU gettext" 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)." msgid "Delete extractor" msgstr "Skrap ekstraheerder" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "Is u seker u wil die “%s”-ekstraheerder skrap?" msgid "Extractors" msgstr "Ekstraheerders" msgid "Accounts" msgstr "Rekeninge" msgid "Automatically check for updates" msgstr "Soek outomaties na bywerkings" msgid "Include beta versions" msgstr "Sluit betaweergawes in" 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." msgid "Updates" msgstr "Bywerkings" 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." msgid "Line endings:" msgstr "Reëleindes:" msgid "Unix (recommended)" msgstr "Unix (aanbeveel)" msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "Vou om by:" msgid "Preserve formatting of existing files" msgstr "Behou formattering van bestaande lêers" msgid "Advanced" msgstr "Gevorderd" msgid "Settings" msgstr "" msgid "Preparing strings…" msgstr "Berei tans stringe voor…" msgid "Pre-translating from translation memory…" msgstr "Voorvertaling vanaf vertaalgeheue…" #, 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" msgid "Pre-translating…" msgstr "Vertaal tans vooraf…" 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. msgid "Pre-translate" msgstr "Voorafvertaling" 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." msgid "Cannot pre-translate from unknown language." msgstr "Kan nie vanuit onbekende taal voorafvertaal nie." 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." msgid "Only fill in exact matches" msgstr "Vul slegs presiese trefslae in" 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." msgid "Don’t mark exact matches as needing work" msgstr "Moenie presiese trefslae vir aandag merk nie" 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." 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." #, 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." 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." msgid "No entries could be pre-translated." msgstr "Geen inskrywings kon voorafvertaal word nie." 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." msgid "Cancelling…" msgstr "Kanselleer tans…" msgid "Drag Folders or Files Here" msgstr "Sleep vouers of lêers hier" msgid "Drag folders or files here" msgstr "Sleep vouers of lêers hier" msgid "Add Folders…" msgstr "Voeg Vouers Toe…" msgid "Add folders…" msgstr "Voeg vouers toe…" msgid "Add Files…" msgstr "Voeg Lêers Toe…" msgid "Add files…" msgstr "Voeg lêers toe…" msgid "Add Wildcard…" msgstr "Voeg Swartpiet toe…" 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) 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" msgid "Show in Explorer" msgstr "Toon in Explorer" msgid "Show in Folder" msgstr "Toon in vouer" msgid "Paths" msgstr "Paaie" msgid "Excluded paths" msgstr "Uitgesluite paaie" msgid "Advanced extraction settings" msgstr "Gevorderde ekstraheerinstellings" msgid "Extract notes for translators from:" msgstr "Ekstraheer notas vir vertalers vanaf:" msgid "Comments prefixed with:" msgstr "Kommentaar voorafgegaan deur:" msgid "All comments" msgstr "Alle kommentare" msgid "Additional xgettext flags:" msgstr "Aanvullende xgettext-vlae:" msgid "Additional keywords" msgstr "Aanvullende sleutelwoorde" msgid "Name of the project the translation is for" msgstr "Naam van die projek waarvoor die vertaling is" msgid "Team name and email address or URL" msgstr "Spannaam en e-posadres of bronadres" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "bv. nplurals=2; plural=(n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (aanbeveel)" 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." msgid "Placeholders correctness" msgstr "Korrektheid van plekhouers" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "Plekhouer “%s” word uit vertaling vermis." #, c-format msgid "Superfluous placeholder “%s” that isn’t in source text." msgstr "’n Oorbodige plekhouer “%s” wat nie in brontekst is nie." msgid "Plural form translations" msgstr "Meervoudsvertalings" msgid "Not all plural forms are translated." msgstr "Nie alle meervoudsvorme is vertaal nie." msgid "Inconsistent upper/lower case" msgstr "Inkonsekwente groot/kleinlettergebruik" msgid "The translation should start as a sentence." msgstr "Die vertaling moet as ’n sin begin." msgid "The translation should start with a lowercase character." msgstr "Die vertaling moet met ’n kleinletter begin." msgid "Inconsistent whitespace" msgstr "Inkonsekwente witruimte" msgid "The translation doesn’t start with a space." msgstr "Die vertaling begin nie met ’n spasie nie." 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." msgid "The translation is missing a newline at the end." msgstr "Die vertaling makeer ’n reëlafbreking aan die einde." 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." msgid "The translation is missing a space at the end." msgstr "Die vertaling makeer ’n spasie aan die einde." 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." msgid "Punctuation checks" msgstr "Leestekenkontrole" #, c-format msgid "The translation should end with “%s”." msgstr "Die vertaling moet met “%s” eindig." #, c-format msgid "The translation should not end with “%s”." msgstr "Die vertaling moet nie met “%s” eindig nie." #, 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”." msgid "Cloud" msgstr "Wolk" msgid "Clear Menu" msgstr "Wis kieslys" msgid "Clear menu" msgstr "Wis kieslys" msgid "Comment:" msgstr "Kommentaar:" msgid "Update" msgstr "Werk by" msgid "&Delete" msgstr "&Skrap" msgid "Delete the comment" msgstr "Verwyder die kommentaar" msgid "Edit project" msgstr "Wysig projek" msgid "Project name:" msgstr "Projeknaam:" msgid "Browse" msgstr "Blaai" msgid "Add directory to the list" msgstr "Voeg gids tot die lys toe" msgid "OK" msgstr "Goed" msgid "&File" msgstr "&Lêer" msgid "&New…" msgstr "Open Onlangse&Nuut…" msgid "New from &POT/PO file…" msgstr "Nuut vanuit &POT/PO-lêer…" msgid "New From &POT/PO File…" msgstr "Nuut Vanuit POT/PO-lêer…" msgid "&Open…" msgstr "&Open…" msgid "Open Recent" msgstr "Open Onlangse" msgid "Open recent" msgstr "Open onlangse" msgid "Open cloud translation…" msgstr "Open wolkvertaling…" msgid "Open Cloud Translation…" msgstr "Open wolkvertaling…" msgid "&Start window" msgstr "&Beginvenster" msgid "&Start Window" msgstr "&Beginvenster" msgid "Catalogs &manager" msgstr "Katalogus&bestuurder" msgid "Catalogs &Manager" msgstr "Katalogus&bestuurder" msgid "&Close" msgstr "Maak &toe" msgid "&Save" msgstr "&Bewaar" msgid "Save &as…" msgstr "Bewaar &as…" msgid "Save &As…" msgstr "Bewaar &As…" msgid "Compile to MO…" msgstr "Kompileer na MO…" msgid "E&xport to HTML…" msgstr "" msgid "Check for updates…" msgstr "Soek na bywerkings…" msgid "Settings…" msgstr "Instellings…" msgid "&Preferences" msgstr "&Voorkeure" msgid "E&xit" msgstr "&Verlaat" msgid "Quit" msgstr "Sluit Af" msgid "Copy from singular" msgstr "Kopieer vanuit enkelvoudsvorm" msgid "Copy From Singular" msgstr "Kopieer Vanuit Enkelvoudsvorm" msgid "Translation needs &work" msgstr "Vertaling kort &aandag" msgid "Translation Needs &Work" msgstr "Vertaling Kort &Aandag" msgid "Edit &comment" msgstr "&Wysig kommentaar" msgid "Edit &Comment" msgstr "Wysig &Kommentaar" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "Voorstelle" msgid "&Find…" msgstr "&Soek…" msgid "Replace…" msgstr "Vervang…" msgid "Find next" msgstr "Soek volgende" msgid "Find previous" msgstr "Soek vorige" msgid "Find and Replace…" msgstr "Soek en Vervang…" msgid "Find Next" msgstr "Soek Volgende" msgid "Find Previous" msgstr "Soek Vorige" msgid "Show string &ID" msgstr "Toon string-&ID" msgid "Show String &ID" msgstr "Toon String-&ID" msgid "Show warnings" msgstr "Toon waarskuwings" msgid "Show Warnings" msgstr "Toon Waarskuwings" msgid "Sort by &file order" msgstr "Sorteer volgens &lêervolgorde" msgid "Sort by &File Order" msgstr "Sorteer volgens &Lêervolgorde" msgid "Sort by &source" msgstr "Sorteer volgens &bron" msgid "Sort by &Source" msgstr "Sorteer volgens &Bron" msgid "Sort by &translation" msgstr "Sorteer volgens &vertaling" msgid "Sort by &Translation" msgstr "Sorteer volgens &Vertaling" msgid "&Group by context" msgstr "&Groepeer volgens konteks" msgid "&Group By Context" msgstr "&Groepeer Volgens Konteks" msgid "Entries with errors first" msgstr "Inskrywings met foute eerste" msgid "Entries with Errors First" msgstr "Inskrywings met Foute Eerste" msgid "&Untranslated entries first" msgstr "&Onvertaalde inskrywings eerste" msgid "&Untranslated Entries First" msgstr "&Onvertaalde Inskrywings Eerste" msgid "&Show code occurrences" msgstr "&Toon kodevoorkomste" msgid "&Show Code Occurrences" msgstr "&Toon kodevoorkomste" msgid "Show sidebar" msgstr "Toon systaaf" msgid "Show status bar" msgstr "Toon Statusbalk" msgid "&Translation" msgstr "&Vertaling" msgid "&Update from source code" msgstr "&Werk by vanuit bronkode" msgid "&Update from Source Code" msgstr "&Werk By vanuit Bronkode" msgid "Update from &POT file…" msgstr "Werk by vanuit &POT-lêer…" msgid "Update from &POT File…" msgstr "Werk by vanuit &POT-lêer…" msgid "Sync with Crowdin" msgstr "Sinchroniseer met Crowdin" msgid "Pre-&translate…" msgstr "Vooraf&vertaal…" msgid "&Validate translations" msgstr "&Valideer vertalings" msgid "&Validate Translations" msgstr "&Valideer Vertalings" msgid "Remove Same-as-Source Translations" msgstr "" msgid "&Purge deleted translations" msgstr "&Verwyder vertalings wat vir uitvee gemerk is" msgid "&Purge Deleted Translations" msgstr "&Purgeer Geskrapte Vertalings" msgid "&Properties…" msgstr "&Eienskappe…" msgid "&Go" msgstr "&Gaan" msgid "&Done and next" msgstr "&Gereed en volgende" msgid "&Done and Next" msgstr "&Gereed en Volgende" msgid "Previously edited" msgstr "Voorheen geredigeer" msgid "Previously Edited" msgstr "Voorheen geredigeer" msgid "&Previous translation" msgstr "&Vorige vertaling" msgid "&Previous Translation" msgstr "&Vorige Vertaling" msgid "&Next translation" msgstr "&Volgende vertaling" msgid "&Next Translation" msgstr "&Volgende Vertaling" msgid "P&revious unfinished" msgstr "V&orige onvoltooide" msgid "P&revious Unfinished" msgstr "V&orige Onvoltooide" msgid "Ne&xt unfinished" msgstr "&Volgende onvoltooide" msgid "Ne&xt Unfinished" msgstr "&Volgende Onvoltooide" msgid "Previous plural form" msgstr "Vorige meervoudsvorm" msgid "Previous Plural Form" msgstr "Vorige Meervoudsvorm" msgid "Next plural form" msgstr "Volgende meervoudsvorm" msgid "Next Plural Form" msgstr "Volgende Meervoudsvorm" msgid "&Online help" msgstr "&Aanlynhulp" msgid "&Online Help" msgstr "&Aanlynhulp" msgid "&GNU gettext manual" msgstr "&GNU-gettext-handleiding" msgid "&GNU gettext Manual" msgstr "&GNU-gettext-handleiding" msgid "&About Poedit" msgstr "&Oor Poedit" msgid "&About" msgstr "&Oor" msgid "Extractor setup" msgstr "Ekstraheeropstelling" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Lys van uitbreidings geskei deur kommapunte (bv. *.cpp;*.h):" msgid "Invocation:" msgstr "Aanroeping:" msgid "Command to extract translations:" msgstr "Bevel om vertalings te ekstraheer:" 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)." msgid "An item in keywords list:" msgstr "’n Item in sleutelwoordelys:" msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Dit sal vir elke sleutelwoord eenmaal bygevoeg word\n" "by die bevellyn. %k brei uit na die sleutelwoord." msgid "An item in input files list:" msgstr "’n Item in toevoerlêerlys:" #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "Dit sal vir elke toevoerlêer eenmaal bygevoeg word\n" "by die bevellyn. %f brei uit na die lêernaam." msgid "Source code charset:" msgstr "Bronkodekarakterstel:" #, 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." msgid "Translation Properties" msgstr "Vertaaleienskappe" msgid "Project name and version:" msgstr "Projeknaam en -weergawe:" msgid "Language team:" msgstr "Taalspan:" msgid "Plural forms:" msgstr "Meervoudsvorme:" msgid "Use default rules for this language" msgstr "Gebruik verstekreëls vir hierdie taal" msgid "Use custom expression" msgstr "Gebruik pasgemaakte uitdrukking" msgid "Learn about plural forms" msgstr "Meer inligting oor meervoudsvorme" msgid "Charset:" msgstr "Karakterstel:" msgid "Advanced Extraction Settings…" msgstr "Gevorderde Ekstraheerinstellings…" msgid "Advanced extraction settings…" msgstr "Gevorderde ekstraheerinstellings…" msgid "Translation properties" msgstr "Vertaaleienskappe" msgid "Sources Paths" msgstr "Bronpaaie" msgid "Sources paths" msgstr "Bronpaaie" msgid "Extract text from source files in the following directories:" msgstr "Ekstraheer teks uit die bronlêers in die volgende gidse:" msgid "Base path:" msgstr "Basispad:" msgid "Sources Keywords" msgstr "Bronsleutelwoorde" msgid "Sources keywords" msgstr "Bronsleutelwoorde" 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:" msgid "Also use default keywords for supported languages" msgstr "Gebruik ook versteksleutelwoorde vir ondersteunde tale" msgid "Learn about gettext keywords" msgstr "Meer inligting oof gettext-sleutelwoorde" msgid "Update summary" msgstr "Werk opsomming by" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" "Hierdie stringe is in die bronne gevind, maar nie in die lêer nie.\n" "Poedit sal dit nou tot die lêer toevoeg." msgid "New strings" msgstr "Nuwe stringe" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" "Hierdie stringe is nie meer in die bronkode nie.\n" "Poedit sal dit nou uit die lêer verwyder." msgid "Obsolete strings" msgstr "Verouderde stringe" msgid "(0 new, 0 obsolete)" msgstr "(0 nuut, 0 verouderd)" msgid "Open" msgstr "" msgid "Open file" msgstr "Open lêer" msgid "Save file" msgstr "Bewaar lêer" msgid "Validate" msgstr "Valideer" msgid "Check for errors in the translation" msgstr "Gaan die vertaling na vir foute" msgid "Update from code" msgstr "Werk by vanuit kode" msgid "Update from Code" msgstr "Werk By vanuit Kode" msgid "Update from source code" msgstr "Werk by vanuit bronkode" msgid "Sidebar" msgstr "Systaaf" msgid "Show or hide the sidebar" msgstr "Toon of versteek die systaaf" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. msgid "Previous source text" msgstr "Vorige bronteks" 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." msgid "Notes for translators" msgstr "Notas vir vertalers" msgid "Comment" msgstr "Kommentaar" msgid "Add comment" msgstr "Skryf kommentaar" msgid "Add Comment" msgstr "Skryf Kommentaar" msgid "Delete From Translation Memory" msgstr "Skrap Uit Vertaalgeheue" msgid "Delete from translation memory" msgstr "Skrap uit vertaalgeheue" msgid "Translation suggestions" msgstr "Vertaalvoorstelle" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). msgid "No matches found" msgstr "Geen trefslae gevind" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). msgid "No Matches Found" msgstr "Geen Trefslae Gevind" msgid "This string was found in Poedit’s translation memory." msgstr "Hierdie string is in Poedit se vertaalgeheue gevind." 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." 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." msgid "The TMX file is malformed." msgstr "Die TMX-lêer is misvorm." msgid "No translations were found in the TMX file." msgstr "Geen vertalings is in die TMX-lêer gevind nie." #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Vertaalgeheuedatabasis is gekorrupteer: %s (%d)." #, c-format msgid "Translation memory error: %s (%d)." msgstr "Vertaalgeheuefout: %s (%d)." msgid "Cannot create temporary directory." msgstr "Kan nie tydelike gids skep nie." msgid "There are no translations. That’s unusual." msgstr "Daar is geen vertalings. Dit is vreemd." msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "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\n" "die bronkode geëkstraheer. Op hierdie manier bly hulle op datum en " "akkuraat.\n" "Vertalers gebruik tipies PO-sjabloonlêers (POT’e) wat deur die ontwikkelaar " "voorberei is." msgid "(Learn more about GNU gettext)" msgstr "(Kom meer te wete oor GNU gettext)" 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:" msgid "Update from POT" msgstr "Werk by vanuit POT" msgid "Take translatable strings from an existing POT template." msgstr "Kry vertaalbare stringe vanuit ’n bestaande POT-sjabloon." msgid "" "You can also extract translatable strings directly from the source code:" msgstr "U kan ook vertaalbare stringe direk vanaf die bronkode ekstraheer:" msgid "Extract from sources" msgstr "Ekstraheer vanuit bronne" 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 #, c-format msgid "Version %s" msgstr "Weergawe %s" msgid "Create new" msgstr "Skep nuwe" msgid "Create new translation from POT template." msgstr "Skep nuwe vertaling vanaf POT-sjabloon." msgid "Browse files" msgstr "Blaai deur lêers" msgid "Open and edit translation files." msgstr "Open en wysig vertaallêers." msgid "Translate cloud project" msgstr "Vertaal wolkprojek" msgid "Collaborate with other people online." msgstr "Werk aanlyn saam met ander mense." msgid "Recent files" msgstr "Onlangse lêers" msgid "Sync" msgstr "Sinchroniseer" 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") #, 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. #, c-format msgid "%s Preferences" msgstr "%s Voorkeure" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "Dienste" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "Verberg %s" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "Verberg Andere" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "Toon Alles" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "Sluit %s af" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "Voorkeure…" msgid "Preferences..." msgstr "Voorkeure…" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "Onlangs" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "Gereeld" msgid "&Apply" msgstr "&Pas Toe" msgid "Apply" msgstr "Pas Toe" msgid "&Back" msgstr "&Terug" msgid "Back" msgstr "Terug" msgid "&Cancel" msgstr "&Kanselleer" msgid "&Clear" msgstr "&Wis" msgid "Clear" msgstr "Wis" msgid "Copy" msgstr "Kopieer" msgid "Cu&t" msgstr "Kni&p" msgid "Cut" msgstr "Knip" msgid "Edit" msgstr "Wysig" msgid "&Quit" msgstr "&Sluit Af" msgid "Help" msgstr "Hulp" msgid "&New" msgstr "&Nuut" msgid "New" msgstr "Nuwe" msgid "&No" msgstr "&Nee" msgid "No" msgstr "Nee" msgid "&OK" msgstr "&Goed" msgid "Open…" msgstr "Open…" msgid "&Open..." msgstr "&Open…" msgid "Open..." msgstr "Open…" msgid "&Paste" msgstr "&Plak" msgid "Paste" msgstr "Plak" msgid "Preferences" msgstr "Voorkeure" msgid "&Redo" msgstr "&Herdoen" msgid "Refresh" msgstr "Verfris" msgid "&Save as" msgstr "&Bewaar as" msgid "Save as" msgstr "Bewaar as" msgid "Select &All" msgstr "Kies &Alles" msgid "Select All" msgstr "Kies Alles" msgid "&Undo" msgstr "&Ontdaan" msgid "&Yes" msgstr "&Ja" msgid "Yes" msgstr "Ja" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Wissel+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Doen" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "Op" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "Af" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "Links" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "Regs" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "beheer" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "wissel" poedit-3.5/locales/ga.po0000644000175100001770000017547114664354153012174 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "Cuir an fógra seo i bhfolach" msgid "Don’t Show Again" msgstr "Ná Taispeáin Arís" msgid "Don’t show again" msgstr "Ná taispeáin arís" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(Nua: %i, dulta i léig: %i)" msgid "Collecting source files…" msgstr "Foinsí á mbailiú…" msgid "Extracting translatable strings…" msgstr "Teaghráin inaistrithe á mbailiú…" msgid "Failed to load file with extracted translations." msgstr "Níorbh fhéidir an comhad le haistriúcháin bailithe a lódáil." msgid "Merging differences…" msgstr "Difríochtaí á gcumasc…" msgid "Updating translations" msgstr "Aistriúcháin á nuashonrú" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "Níorbh fhéidir comhad “%s” a oscailt." msgid "Invalid file" msgstr "Comhad neamhbhailí" #, c-format msgid "Malformed header: “%s”" msgstr "Ceanntásc míchumtha: '%s'" msgid "PO Translation Files" msgstr "Comhaid Aistriúcháin PO" msgid "POT Translation Templates" msgstr "Teimpléid Aistriúcháin POT" msgid "XLIFF Translation Files" msgstr "Comhaid Aistriúcháin XLIFF" msgid "JSON Translation Files" msgstr "Comhaid Aistriúcháin JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "Comhaid Aistriúcháin Flutter" msgid "All Translation Files" msgstr "Gach Comhad Aistriúcháin" msgid "The file is in a format not recognized by Poedit." msgstr "Ní aithníonn Poedit formáid an chomhaid seo." 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." #, 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" #, 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." #, c-format msgid "Couldn’t save file %s." msgstr "Níorbh fhéidir comhad %s a shábháil." msgid "Screenshots:" msgstr "" #, c-format msgid "%i line of file “%s” was not loaded correctly." msgid_plural "%i lines of file “%s” were not loaded correctly." msgstr[0] "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." #, 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 é)." 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" 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" 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." 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." 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)." #, 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 "" msgid "Error saving file" msgstr "Earráid agus an comhad á shábháil" #, c-format msgid "“%s” is not a valid POT file." msgstr "Ní comhad POT ceart é “%s”." #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Earráid agus comhad XLIFF á lódáil: %s" #, 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 msgid "Broken markup in translation string." msgstr "Marcáil bhriste sa teaghrán." msgid "(Use default language)" msgstr "(Bain feidhm as an béarla réamhshocraithe)" msgid "Language selection" msgstr "Rogha béarla" msgid "Select your preferred language" msgstr "Roghnaigh do rogha béarla" msgid "You must restart Poedit for this change to take effect." msgstr "Caithfear Poedit a atosú chun an athrú a chur i bhfeidhm." msgid "Add Account" msgstr "" msgid "Add account" msgstr "" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "" msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" msgid "How does cloud sync work?" msgstr "" msgid "Account" msgstr "" msgid "(not signed in)" msgstr "" msgid "File" msgstr "Comhad" msgid "Open cloud translation" msgstr "" msgid "Manage accounts" msgstr "" msgid "Project:" msgstr "Tionscadal:" msgid "Language:" msgstr "Béarla:" msgid "Sign in to Cloud Account" msgstr "" msgid "Sign in to cloud account" msgstr "" msgid "No translation projects listed in your account." msgstr "" 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" #, c-format msgid "Sign in to %s" msgstr "" msgid "Syncing" msgstr "Á shioncronú" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s…" msgstr "" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s failed." msgstr "" msgid "Syncing error" msgstr "Earráid le linn sioncronaithe" msgid "Add" msgstr "Cuir leis" msgid "Unknown Crowdin error." msgstr "" msgid "Not authorized, please sign in again." msgstr "Níl cead agat. Logáil isteach arís." msgid "Downloading translations is disabled in this project." msgstr "Ní féidir aistriúcháin a íosluchtú don tionscadal seo." msgid "Sign In" msgstr "Logáil isteach" msgid "Sign in" msgstr "Logáil isteach" msgid "Sign Out" msgstr "Logáil Amach" msgid "Sign out" msgstr "Logáil amach" msgid "Learn more about Crowdin" msgstr "Tuilleadh eolais faoi Crowdin" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" msgid "Waiting for authentication…" msgstr "Ag fanacht le fíordheimhniú…" msgid "Updating user information…" msgstr "Sonraí an úsáideora á nuashonrú…" msgid "Sign in to Crowdin" msgstr "Logáil isteach i Crowdin" msgid "Syncing with Crowdin failed." msgstr "Níorbh fhéidir sioncronú le Crowdin." msgid "Crowdin error" msgstr "Earráid Crowdin" msgid "Uploading translations…" msgstr "Aistriúcháin á n-uasluchtú…" msgid "&Copy" msgstr "&Cóipeáil" msgid "Learn more" msgstr "Tuilleadh eolais" msgid "&Help" msgstr "&Cabhair" 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." msgid "Error opening file" msgstr "Earráid agus an comhad á oscailt" 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." msgid "don’t delete temporary files (for debugging)" msgstr "ná scrios comhaid shealadacha (dífhabhtú)" msgid "handle a poedit:// URI" msgstr "déileáil le URI poedit://" msgid "go to item at given line number" msgstr "léim go dtí an mhír ar an líne shonraithe" msgid "Failed to communicate with Poedit process." msgstr "Theip ar chumarsáid leis an bpróiseas Poedit." #, c-format msgid "Unhandled exception occurred: %s" msgstr "Tharla earráid gan réiteach: %s" msgid "Select translation template" msgstr "" msgid "Select translation file" msgstr "Roghnaigh comhad aistriúcháin" msgid "Poedit is an easy to use translation editor." msgstr "Is eagarthóir aistriúcháin é Poedit atá furasta feidhm a bhaint as." 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." #, c-format msgid "File “%s” is not a translation file." msgstr "Ní comhad aistriúcháin é \"%s\"." #, c-format msgid "File “%s” doesn’t exist." msgstr "Níl comhad “%s” ann." 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". #, 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." msgid "Install" msgstr "Suiteáil" #, c-format msgid "The file “%s” has been changed by another application." msgstr "" msgid "Reload file" msgstr "Athluchtaigh an comhad" msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" msgid "Ignore" msgstr "" msgid "Reload File" msgstr "Athluchtaigh an Comhad" msgid "The file has been modified. Do you want to save changes?" msgstr "" msgid "Save changes" msgstr "Cuir i dtaisce na hathruithe" msgid "Your changes will be lost if you don’t save them." msgstr "Caillfidh tú do chuid athruithe mura sábhálfaidh tú iad." msgid "Save" msgstr "Cuir i dtaisce" msgid "Do&n’t save" msgstr "Ná sábháil" msgid "Don’t Save" msgstr "Ná Sábháil" msgid "The changes made by the other application will be lost if you save." msgstr "" msgid "Cancel" msgstr "Cealaigh" msgid "Save Anyway" msgstr "Sábháil mar sin féin" msgid "Save anyway" msgstr "Sábháil mar sin féin" msgid "Save as…" msgstr "Sábháil mar…" msgid "Compile to…" msgstr "Tiomsaigh mar…" msgid "Compiled Translation Files" msgstr "Comhaid Aistriúcháin Tiomsaithe" msgid "Export to HTML…" msgstr "" msgid "HTML Files" msgstr "Comhaid HTML" #, c-format msgid "In: %s" msgstr "I: %s" msgid "Source code not available." msgstr "Níl an cód foinseach ar fáil." msgid "Updating failed" msgstr "Theip ar nuashonrú" 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 "" msgid "Permission denied." msgstr "Níl cead agat é seo a dhéanamh." 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. 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. 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." msgid "Translation entries in the file are probably incorrect." msgstr "" msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "" msgid "Open translation template" msgstr "Oscail teimpléad aistriúcháin" #, 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." msgid "Validation results" msgstr "Torthaí an bhailíochtaithe" 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." msgid "The file was saved safely." msgstr "Sábháladh an comhad." 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." 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." 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." msgid "The file cannot be compiled into the MO format and used." msgstr "Ní féidir an comhad a thiomsú mar chomhad MO." msgid "No problems with the translation found." msgstr "Níor aimsíodh aon fhadhb leis an aistriúchán." #, 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." msgid "The translation is ready for use." msgstr "Tá an t-aistriúchán réidh le húsáid." #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "Dheisigh Poedit ábhar neamhbhailí sa chomhad \"%s\" go huathoibríoch." 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ú." msgid "Language of the translation isn’t set." msgstr "Níl teanga an aistriúcháin socraithe." msgid "Set Language" msgstr "Roghnaigh Teanga" 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)." 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í." msgid "Language of the translation is the same as source language." msgstr "Is ionann an bhunteanga agus an sprioctheanga." msgid "Fix Language" msgstr "Athraigh an Teanga" msgid "Fix language" msgstr "Athraigh an teanga" msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" msgid "Required header Plural-Forms is missing." msgstr "Ceanntásc riachtanach Plural-Forms ar iarraidh." #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Earráid chomhréire ar an líne Plural-Forms (\"%s\")." msgid "Fix the Header" msgstr "Deisigh an Ceanntásc" 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". #, 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.")" msgid "Review" msgstr "Athbhreithniú" msgid "Would you like to use English for source text?" msgstr "" #, 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" msgid "Load English" msgstr "" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Aistrithe: %d as %d (%d %%)" #, c-format msgid "Remaining: %d" msgstr "Fágtha: %d" #, 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" #, 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" msgid " (unsaved)" msgstr " (gan sábháil)" msgid " (modified)" msgstr " (mionathraithe)" #, c-format msgid "Failed to update translation memory: %s" msgstr "Níorbh fhéidir an chuimhne aistriúchán a nuashonrú: %s" msgid "Remove same-as-source translations" msgstr "" msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" msgid "Keep" msgstr "Ná Scrios" msgid "Remove" msgstr "" msgid "Purge deleted translations" msgstr "Glan aistriúcháin scriosta" 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?" 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." msgid "Purge" msgstr "Scrios" msgid "Copy from source text" msgstr "Cóipeáil ón fhoinse" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "Glan an t-aistriúchán" msgid "Clear Translation" msgstr "Glan an tAistriúchán" msgid "Edit comment" msgstr "Déan eagar ar an nóta tráchta" msgid "Edit Comment" msgstr "Cuir Nóta Tráchta in Eagar" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "" msgid "Hide Sidebar" msgstr "Cuir an Barra Taoibh i bhfolach" msgid "Show Sidebar" msgstr "Taispeáin an Barra Taoibh" msgid "Hide Status Bar" msgstr "Cuir an Barra Stádais i bhfolach" msgid "Show Status Bar" msgstr "Taispeáin an Barra Stádais" msgid "String length in characters: translation | source" msgstr "" msgid "String length in characters" msgstr "" msgid "Source text" msgstr "Téacs foinseach" msgid "Singular" msgstr "Uatha" msgid "Plural" msgstr "Iolra" msgid "Translation" msgstr "Aistriúchán" msgid "Pre-translated" msgstr "Réamhaistrithe" 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. msgid "Needs work" msgstr "Tuilleadh oibre de dhíth" 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." msgid "Create new translation" msgstr "Cruthaigh aistriúchán nua" 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 msgid "Source text ID" msgstr "ID an téacs fhoinsigh" msgid "Everything" msgstr "Gach Rud" #, c-format msgid "Form %i" msgstr "Leagan %i" #, c-format msgid "Form %i (unused)" msgstr "Foirm %i (neamhúsáidte)" msgid "Zero" msgstr "Náid" msgid "One" msgstr "Aon" msgid "Two" msgstr "Dó" msgid "Other" msgstr "Eile" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, c-format msgid "String context: %s" msgstr "" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #, c-format msgid "String identifier: %s" msgstr "" #, 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." #, c-format msgid "%s format" msgstr "Formáid %s" #, c-format msgid "Translation — %s" msgstr "Aistriúchán — %s" msgid "ID" msgstr "Aitheantas" #, c-format msgid "Source text — %s" msgstr "Téacs foinseach — %s" msgid "unknown language" msgstr "teanga anaithnid" #, c-format msgid "Network error: %s (%d)" msgstr "" msgid "Unknown error" msgstr "" #, c-format msgid "Failed command: %s" msgstr "Ordú teipthe: %s" msgid "Failed to merge gettext catalogs." msgstr "Theip ar cláir gettext a chumascú. " msgid "Open in Editor" msgstr "Oscail san Eagarthóir" msgid "Open in editor" msgstr "Oscail san eagarthóir" msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" msgid "No usage information" msgstr "Gan eolas úsáide" #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" msgstr[4] "" msgid "Source code not found" msgstr "Cód foinseach gan aimsiú" 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 "" msgid "File cannot be opened" msgstr "Ní féidir an comhad a oscailt" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "" msgid "Find" msgstr "Aimsigh" msgid "Replace" msgstr "Ionadaigh" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "Roghanna" msgid "Ignore case" msgstr "Ná bac le cás uachtair/íochtair" msgid "Wrap around" msgstr "Timfhilleadh" msgid "Whole words only" msgstr "Focail iomlán amháin" msgid "Find in source texts" msgstr "Aimsigh sna foinsí" msgid "Find in translations" msgstr "Cuardaigh in aistriúcháin" msgid "Find in comments" msgstr "Aimsigh sna nótaí tráchta" msgid "Close" msgstr "Dún" msgid "Replace &All" msgstr "Ionadaigh &Uile" msgid "Replace &all" msgstr "Ionadaigh &uile" msgid "&Replace" msgstr "&Ionadaigh" msgid "< &Previous" msgstr "< &Roimhe Seo" msgid "&Next >" msgstr "&Ar Aghaidh >" msgid "String to find" msgstr "Teaghrán le haimsiú" msgid "Replacement string" msgstr "Teaghrán le cur ina ionad" #, c-format msgid "Cannot execute program: %s" msgstr "Ní féidir an clár a rith: %s" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "" msgid "Translation Language" msgstr "Sprioctheanga" msgid "Language of the translation:" msgstr "Teanga an aistriúcháin:" msgid "All strings" msgstr "" msgid "Couldn’t download Localazy project details." msgstr "" msgid "There was an error when uploading translations to Localazy." msgstr "" msgid "Projects" msgstr "" msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" msgid "Add Project" msgstr "" msgid "Add project" msgstr "" msgid "Poedit - Catalogs manager" msgstr "Poedit - Bainisteoir Clár" msgid "Edit…" msgstr "Eagar…" msgid "Create new translations project" msgstr "Cruthaigh tionscadal aistriúcháin nua" msgid "Delete the project" msgstr "Scrios an tionscadal" msgid "Edit the project" msgstr "Cuir an tionscadal in eagar" msgid "Update all" msgstr "Nuashonraigh uile" msgid "Update all catalogs in the project" msgstr "Nuashonraigh gach catalóg sa tionscadal" msgid "Total" msgstr "Iomlán" msgid "Untrans" msgstr "Neamhaistrithe" msgctxt "column/row header" msgid "Needs Work" msgstr "Tuilleadh oibre de dhíth" msgid "Errors" msgstr "Earráidí" msgid "Last modified" msgstr "Mionathraithe an uair deirineadh ar an" msgid "Select directory" msgstr "Select directory" msgid "Directories:" msgstr "Comhadlannaí:" msgid "" msgstr "" #, c-format msgid "Do you want to delete project “%s”?" msgstr "An bhfuil fonn ort tionscadal “%s” a scriosadh?" msgid "Delete project" msgstr "Scrios an tionscadal" msgid "Deleting the project will not delete any translation files." msgstr "Má scriosann tú an tionscadal, ní scriosfar aon chomhad aistriúcháin." msgid "Confirmation" msgstr "Dearbhú" msgid "Update all catalogs in this project?" msgstr "Nuashonraigh gach catalóg sa tionscadal seo?" 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." msgid "Check for Updates…" msgstr "Lorg Nuashonruithe…" msgid "Catalogs Manager" msgstr "Bainisteoir na gCatalóg" msgid "&Preferences…" msgstr "&Sainroghanna…" msgid "&Edit" msgstr "&Eagar" msgid "Undo" msgstr "Cealaigh" msgid "Redo" msgstr "Athdhéan" msgid "Paste and Match Style" msgstr "Paste and Match Style" msgid "Delete" msgstr "Scrios" msgid "Spelling and Grammar" msgstr "Litriú agus Gramadach" msgid "Show Spelling and Grammar" msgstr "Taispeáin Litriú agus Gramadach" msgid "Check Document Now" msgstr "Seiceáil an Cháipéis Anois" msgid "Check Spelling While Typing" msgstr "Seiceáil Litrithe Bheo" msgid "Check Grammar With Spelling" msgstr "Seiceáil Gramadach agus Litriú" msgid "Correct Spelling Automatically" msgstr "Seiceáil Litrithe go hUathoibríoch" msgid "Substitutions" msgstr "Ionadaithe" msgid "Show Substitutions" msgstr "Taispeáin Ionadaithe" msgid "Smart Copy/Paste" msgstr "Cóipeáil/Greamú Cliste" msgid "Smart Quotes" msgstr "Athfhriotail Chliste" msgid "Smart Dashes" msgstr "Daiseanna Cliste" msgid "Smart Links" msgstr "Nascanna Cliste" msgid "Text Replacement" msgstr "Ionadú Téacs" msgid "Transformations" msgstr "Claochluithe" msgid "Make Upper Case" msgstr "Cás Uachtair" msgid "Make Lower Case" msgstr "Cás Íochtair" msgid "Capitalize" msgstr "Ceannlitir" msgid "Speech" msgstr "Caint" msgid "Start Speaking" msgstr "Tosaigh ag Labhairt" msgid "Stop Speaking" msgstr "Stop ag Labhairt" msgid "&View" msgstr "&Amharc" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item 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 msgid "Customize Toolbar…" msgstr "Saincheap an Barra Uirlisí…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Enter Full Screen" msgstr "Mód Lánscáileáin" msgid "Window" msgstr "Fuinneog" msgid "Minimize" msgstr "Íoslaghdaigh" msgid "Zoom" msgstr "Súmáil" msgid "Welcome to Poedit" msgstr "Fáilte go dtí Poedit" msgid "Bring All to Front" msgstr "Tabhair Uile Chun Tosaigh" msgid "Information about the translator" msgstr "Eolas faoin aistritheoir" msgid "Name:" msgstr "Ainm:" msgid "Your Name" msgstr "D'ainm" msgid "Email:" msgstr "Ríomhphost:" msgid "you@example.com" msgstr "tusa@seoladh.com" 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." msgid "Editing" msgstr "Cur in Eagar" msgid "Automatically compile MO file when saving" msgstr "Tiomsaigh mar chomhad MO go huathoibríoch agus é á shábháil" msgid "Show summary after updating files" msgstr "" msgid "Check spelling" msgstr "Seiceáil an litriú" msgid "Always change focus to text input field" msgstr "Athruigh an sprioc i gcónaí chuig réimse inchur téacs" 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ú." msgid "Appearance" msgstr "Cuma" msgid "Use custom list font:" msgstr "Úsáid cló saincheaptha liosta:" msgid "Use custom text fields font:" msgstr "Úsáid cló saincheaptha i réimsí téacs:" 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 msgid "(requires Windows 8 or newer)" msgstr "(Windows 8 nó níos déanaí)" msgid "General" msgstr "Ginearálta" msgid "Use translation memory" msgstr "Úsáid cuimhne aistriúcháin" msgid "Manage…" msgstr "Bainistigh…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "Agus teaghráin sa bhunteanga á nuashonrú" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "garbhmheaitseáil laistigh den chomhad" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "réamhaistriúchán ón chuimhne aistriúcháin" 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." msgid "Stored translations:" msgstr "Aistriúcháin stóráilte:" msgid "Database size on disk:" msgstr "Méid an bhunachair sonraí ar an diosca:" msgid "Import Translation Files…" msgstr "Tabhair Isteach Comhaid Aistriúcháin…" msgid "Import translation files…" msgstr "Tabhair isteach comhaid aistriúcháin…" msgid "Import From TMX…" msgstr "Tabhair Isteach Ó TMX Iad…" msgid "Import from TMX…" msgstr "Tabhair isteach ó TMX iad…" msgid "Export To TMX…" msgstr "Bain Amach Chuig an TMX é…" 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). msgid "Reset" msgstr "Athshocraigh" msgid "Select translation files to import" msgstr "Roghnaigh comhaid aistriúcháin le hiompórtáil" msgid "Translation Memory" msgstr "Cuimhne Aistriúcháin" msgid "Importing translations…" msgstr "Aistriúcháin á n-iompórtáil…" #, c-format msgid "Error loading translation file “%s”." msgstr "Earráid agus comhad aistriúcháin “%s” á luchtú." msgid "Finalizing…" msgstr "Á chríochnú…" msgid "Select TMX files to import" msgstr "Roghnaigh comhaid TMX le tabhairt isteach" msgid "TMX Files" msgstr "Comhaid TMX" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "" "Theip ar an iarracht an chuimhne aistriúcháin ó \"%s\" a thabhairt isteach." msgid "Import error" msgstr "Earráid ag tabhairt isteach" msgid "Export as…" msgstr "Easpórtáil mar…" msgid "Exporting translations…" msgstr "Aistriúcháin á mbaint amach…" #, 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”." msgid "Export error" msgstr "Earráid easpórtála" msgid "Reset translation memory" msgstr "Athshocraigh an cuimhneachán aistriúchán" 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ú?" 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. msgid "TM" msgstr "TM" msgid "" "Source code extractors are used to find translatable strings in the source " "code files and extract them so that they can be translated." msgstr "" "Baintear úsáid as bailitheoir chun teaghráin inaistrithe a aimsiú i mbunchód " "sa chaoi gur féidir iad aistriú." msgid "Custom Extractors:" msgstr "Bailitheoirí Saincheaptha:" msgid "Custom extractors:" msgstr "Bailitheoirí saincheaptha:" msgid "GNU gettext" msgstr "GNU gettext" 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)." msgid "Delete extractor" msgstr "Scrios an bailitheoir" #, 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?" msgid "Extractors" msgstr "Bailitheoirí" msgid "Accounts" msgstr "Cuntais" msgid "Automatically check for updates" msgstr "Lorg nuashonruithe go huathoibríoch" msgid "Include beta versions" msgstr "Leaganacha béite san áireamh" 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í." msgid "Updates" msgstr "Nuashonruithe" 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." msgid "Line endings:" msgstr "Deireadh líne:" msgid "Unix (recommended)" msgstr "Unix (molta)" msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "Timfhilleadh ag:" msgid "Preserve formatting of existing files" msgstr "Caomhnaigh an formáidiú i gcomhaid atá ann" msgid "Advanced" msgstr "Casta" msgid "Settings" msgstr "" msgid "Preparing strings…" msgstr "Teaghráin á n-ullmhú…" msgid "Pre-translating from translation memory…" msgstr "Réamhaistriúchán ón chuimhne aistriúcháin…" #, 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" msgid "Pre-translating…" msgstr "Réamhaistriúchán ar siúl…" 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. msgid "Pre-translate" msgstr "Réamhaistriúchán" msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" msgid "Cannot pre-translate from unknown language." msgstr "" msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" msgid "Only fill in exact matches" msgstr "Ná húsáid ach meaitseálacha cruinne" msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" 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 é" 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." 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." #, 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." 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ú." msgid "No entries could be pre-translated." msgstr "Níorbh fhéidir réamhaistriúchán a dhéanamh ar theaghrán ar bith." 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." msgid "Cancelling…" msgstr "Á chur i gceal…" msgid "Drag Folders or Files Here" msgstr "Tarraing Fillteáin nó Comhaid Anseo" msgid "Drag folders or files here" msgstr "Tarraing fillteáin nó comhaid anseo" msgid "Add Folders…" msgstr "Cuir Fillteáin Leis…" msgid "Add folders…" msgstr "Cuir fillteáin leis…" msgid "Add Files…" msgstr "Cuir Comhaid Leis…" msgid "Add files…" msgstr "Cuir comhaid leis…" msgid "Add Wildcard…" msgstr "Cuir Saoróg leis…" 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) 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" msgid "Show in Explorer" msgstr "" msgid "Show in Folder" msgstr "Taispeáin san fhillteán" msgid "Paths" msgstr "Cosáin:" msgid "Excluded paths" msgstr "Cosáin eisiata" msgid "Advanced extraction settings" msgstr "Ardsocruithe bailithe" msgid "Extract notes for translators from:" msgstr "Bailigh nótaí le haghaidh aistritheoirí ó:" msgid "Comments prefixed with:" msgstr "Réimír roimh nótaí tráchta:" msgid "All comments" msgstr "Gach nóta tráchta" msgid "Additional xgettext flags:" msgstr "Bratacha breise xgettext:" msgid "Additional keywords" msgstr "Lorgfhocail sa bhreis" msgid "Name of the project the translation is for" msgstr "Ainm an tionscadail a mbaineann an t-aistriúchán leis" msgid "Team name and email address or URL" msgstr "Ainm na foirne agus seoladh rphoist nó URL" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "m.sh. nplurals=2; plural=(n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (molta)" 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ú é." msgid "Placeholders correctness" msgstr "" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "" #, c-format msgid "Superfluous placeholder “%s” that isn’t in source text." msgstr "" msgid "Plural form translations" msgstr "Aistriúcháin ar leaganacha iolra" msgid "Not all plural forms are translated." msgstr "Níl gach foirm iolra aistrithe." msgid "Inconsistent upper/lower case" msgstr "" msgid "The translation should start as a sentence." msgstr "Ba chóir an t-aistriúchán a thosú mar abairt." msgid "The translation should start with a lowercase character." msgstr "Ba chóir don aistriúchán a thosú le litir bheag." msgid "Inconsistent whitespace" msgstr "" msgid "The translation doesn’t start with a space." msgstr "Ní thosaíonn an t-aistriúchán le spás." 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." msgid "The translation is missing a newline at the end." msgstr "Tá spás ar iarraidh ag deireadh an aistriúcháin." 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." msgid "The translation is missing a space at the end." msgstr "Tá spás ar iarraidh ag deireadh an aistriúcháin." 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." msgid "Punctuation checks" msgstr "" #, c-format msgid "The translation should end with “%s”." msgstr "Ba chóir “%s” a bheith ag deireadh an aistriúcháin." #, c-format msgid "The translation should not end with “%s”." msgstr "Níor chóir “%s” a bheith ag deireadh an aistriúcháin." #, 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." msgid "Cloud" msgstr "" msgid "Clear Menu" msgstr "Glan an roghchlár" msgid "Clear menu" msgstr "Glan an roghchlár" msgid "Comment:" msgstr "Nóta tráchta:" msgid "Update" msgstr "Nuashonraigh é" msgid "&Delete" msgstr "&Scrios" msgid "Delete the comment" msgstr "Scrios an nóta tráchta" msgid "Edit project" msgstr "Cuir an tionscadal in eagar" msgid "Project name:" msgstr "Ainm an tionscadail:" msgid "Browse" msgstr "Siortaigh" msgid "Add directory to the list" msgstr "Cuir comhadlann leis an réim" msgid "OK" msgstr "Tá go maith" msgid "&File" msgstr "&Comhad" msgid "&New…" msgstr "&Nua…" msgid "New from &POT/PO file…" msgstr "Ceann nua ó chomhad &POT/PO…" msgid "New From &POT/PO File…" msgstr "Ceann nua ó chomhad &POT/PO…" msgid "&Open…" msgstr "&Oscail…" msgid "Open Recent" msgstr "Oscail Comhaid Le Déanaí" msgid "Open recent" msgstr "Oscail comhaid le déanaí" msgid "Open cloud translation…" msgstr "" msgid "Open Cloud Translation…" msgstr "" msgid "&Start window" msgstr "&Tosaigh fuinneog" msgid "&Start Window" msgstr "&Tosaigh fuinneog" msgid "Catalogs &manager" msgstr "&Bainisteoir clár" msgid "Catalogs &Manager" msgstr "&Bainisteoir na gCatalóg" msgid "&Close" msgstr "&Dún" msgid "&Save" msgstr "&Cuir i dtaisce" msgid "Save &as…" msgstr "Sábháil m&ar…" msgid "Save &As…" msgstr "Sábháil M&ar…" msgid "Compile to MO…" msgstr "Tiomsaigh go MO…" msgid "E&xport to HTML…" msgstr "" msgid "Check for updates…" msgstr "Lorg nuashonruithe…" msgid "Settings…" msgstr "" msgid "&Preferences" msgstr "&Sainroghanna" msgid "E&xit" msgstr "S&coir" msgid "Quit" msgstr "Scoir" msgid "Copy from singular" msgstr "Cóipeáil ón uatha" msgid "Copy From Singular" msgstr "Cóipeáil ón Uatha" msgid "Translation needs &work" msgstr "Tuilleadh &oibre de dhíth" msgid "Translation Needs &Work" msgstr "Tuilleadh &oibre de dhíth" msgid "Edit &comment" msgstr "Déan eagar ar an &nóta tráchta" msgid "Edit &Comment" msgstr "Cuir &Nóta Tráchta in Eagar" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "Moltaí" msgid "&Find…" msgstr "&Aimsigh…" msgid "Replace…" msgstr "Ionadaigh…" msgid "Find next" msgstr "An chéad toradh eile" msgid "Find previous" msgstr "An toradh roimhe seo" msgid "Find and Replace…" msgstr "Aimsigh agus Ionadaigh…" msgid "Find Next" msgstr "An chéad toradh eile" msgid "Find Previous" msgstr "An toradh roimhe seo" msgid "Show string &ID" msgstr "Taispeáin aitheantas an teaghráin" msgid "Show String &ID" msgstr "Taispeáin Aitheantas an Teaghráin" msgid "Show warnings" msgstr "Taispeáin na rabhaidh" msgid "Show Warnings" msgstr "Taispeáin na Rabhaidh" msgid "Sort by &file order" msgstr "Sórtáil mar atá sa &chomhad" msgid "Sort by &File Order" msgstr "Sórtáil mar atá sa &chomhad" msgid "Sort by &source" msgstr "Sórtáil de réir &foinse" msgid "Sort by &Source" msgstr "Sórtáil de réir &Foinse" msgid "Sort by &translation" msgstr "Sórtáil de réir &aistriúcháin" msgid "Sort by &Translation" msgstr "Sórtáil de réir &Aistriúcháin" msgid "&Group by context" msgstr "&Grúpáil de réir comhthéacs" msgid "&Group By Context" msgstr "&Grúpáil de réir Comhthéacs" msgid "Entries with errors first" msgstr "Iontrálacha a bhfuil earráidí iontu ar dtús" msgid "Entries with Errors First" msgstr "Iontrálacha a bhfuil earráidí iontu ar dtús" msgid "&Untranslated entries first" msgstr "Iontrálacha &gan aistriú ar dtús" msgid "&Untranslated Entries First" msgstr "Iontrálacha &gan aistriú ar dtús" msgid "&Show code occurrences" msgstr "" msgid "&Show Code Occurrences" msgstr "" msgid "Show sidebar" msgstr "Taispeáin an barra taoibh" msgid "Show status bar" msgstr "Taispeáin an barra stádais" msgid "&Translation" msgstr "&Aistriúchán" msgid "&Update from source code" msgstr "N&uashonraigh ón chód foinseach" msgid "&Update from Source Code" msgstr "N&uashonraigh ón Chód Foinseach" msgid "Update from &POT file…" msgstr "Nuashonraigh ó chomhad &POT…" msgid "Update from &POT File…" msgstr "Nuashonraigh ó Chomhad &POT…" msgid "Sync with Crowdin" msgstr "Sioncronaigh le Crowdin" msgid "Pre-&translate…" msgstr "Réamhais&triúchán…" msgid "&Validate translations" msgstr "&Bailíochtaigh aistriúcháin" msgid "&Validate Translations" msgstr "&Bailíochtaigh Aistriúcháin" msgid "Remove Same-as-Source Translations" msgstr "" msgid "&Purge deleted translations" msgstr "&Glan na haistriúcháin scriosta" msgid "&Purge Deleted Translations" msgstr "&Glan na hAistriúcháin Scriosta" msgid "&Properties…" msgstr "&Airíonna…" msgid "&Go" msgstr "&Téigh" msgid "&Done and next" msgstr "&Críochnú agus dul ar aghaidh" msgid "&Done and Next" msgstr "&Críochnú agus dul ar aghaidh" msgid "Previously edited" msgstr "Curtha in eagar roimhe seo" msgid "Previously Edited" msgstr "Curtha in eagar roimhe seo" msgid "&Previous translation" msgstr "An t-aistriúchán &roimhe seo" msgid "&Previous Translation" msgstr "An tAistriúchán &Roimhe Seo" msgid "&Next translation" msgstr "&An chéad aistriúchán eile" msgid "&Next Translation" msgstr "An &Chéad Aistriúchán Eile" msgid "P&revious unfinished" msgstr "Teagh&rán gan chríochnú roimhe seo" msgid "P&revious Unfinished" msgstr "Teagh&rán gan chríochnú roimhe seo" msgid "Ne&xt unfinished" msgstr "An &chéad cheann eile gan chríochnú" msgid "Ne&xt Unfinished" msgstr "An &chéad cheann eile gan chríochnú" msgid "Previous plural form" msgstr "An t-iolra roimhe seo" msgid "Previous Plural Form" msgstr "An tIolra Roimhe Seo" msgid "Next plural form" msgstr "An chéad iolra eile" msgid "Next Plural Form" msgstr "An Chéad Iolra Eile" msgid "&Online help" msgstr "Cúnamh &ar líne" msgid "&Online Help" msgstr "Cúnamh &Ar Líne" msgid "&GNU gettext manual" msgstr "Cáipéisí gettext &GNU" msgid "&GNU gettext Manual" msgstr "Cáipéisí gettext &GNU" msgid "&About Poedit" msgstr "&Maidir le Poedit" msgid "&About" msgstr "&Maidir Leis" msgid "Extractor setup" msgstr "Socrú an bhailitheora" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Réim breiseáin scartha le leathstadanna (m.sh. *.cpp;*.h):" msgid "Invocation:" msgstr "Gairm:" msgid "Command to extract translations:" msgstr "Ordú chun aistriúcháin a bhailiú:" 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)." msgid "An item in keywords list:" msgstr "Mír i réim na treoirfhocail:" 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." msgid "An item in input files list:" msgstr "Mír i réim na comhaid inchur:" #, 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." msgid "Source code charset:" msgstr "Tagairt foinse foireann litreacha:" #, 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." msgid "Translation Properties" msgstr "Airíonna an Aistriúcháin" msgid "Project name and version:" msgstr "Ainm agus leagan an tionscadail:" msgid "Language team:" msgstr "Foireann teanga:" msgid "Plural forms:" msgstr "Leaganacha iolra:" msgid "Use default rules for this language" msgstr "Úsáid rialacha réamhshocraithe na teanga seo" msgid "Use custom expression" msgstr "Úsáid slonn saincheaptha" msgid "Learn about plural forms" msgstr "Tuilleadh eolais maidir le hiolraí" msgid "Charset:" msgstr "Foireann litreacha:" msgid "Advanced Extraction Settings…" msgstr "Ardsocruithe Bailithe…" msgid "Advanced extraction settings…" msgstr "Ardsocruithe bailithe…" msgid "Translation properties" msgstr "Airíonna an aistriúcháin" msgid "Sources Paths" msgstr "Cosáin na bhFoinsí" msgid "Sources paths" msgstr "Cosáin na bhfoinsí" msgid "Extract text from source files in the following directories:" msgstr "Faigh téacs ó comhaid fhoinseacha sna comhadlanna seo a leanas:" msgid "Base path:" msgstr "Cosán bunaidh:" msgid "Sources Keywords" msgstr "Lorgfhocail sna Foinsí" msgid "Sources keywords" msgstr "Lorgfhocail sna foinsí" 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:" msgid "Also use default keywords for supported languages" msgstr "" "Bain úsáid as lorgfhocail réamhshocraithe le haghaidh teangacha a dtacaítear " "leo" msgid "Learn about gettext keywords" msgstr "Maidir le lorgfhocail gettext" msgid "Update summary" msgstr "Nuashonraigh achoimre" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" msgid "New strings" msgstr "Teaghráin nua" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" msgid "Obsolete strings" msgstr "Teaghráin as feidhm" msgid "(0 new, 0 obsolete)" msgstr "(0 nua, 0 as feidhm)" msgid "Open" msgstr "" msgid "Open file" msgstr "Oscail comhad" msgid "Save file" msgstr "Cuir an comhad i dtaisce" msgid "Validate" msgstr "Deimhnigh" msgid "Check for errors in the translation" msgstr "Lorg botúin sna haistriúcháin" msgid "Update from code" msgstr "Nuashonraigh ón gcód é" msgid "Update from Code" msgstr "Nuashonraigh ón gCód é" msgid "Update from source code" msgstr "Nuashonraigh ón chód foinseach" msgid "Sidebar" msgstr "Barra taoibh" 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. msgid "Previous source text" msgstr "Seantéacs foinseach" 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ó." msgid "Notes for translators" msgstr "Nótaí ar son aistritheoirí" msgid "Comment" msgstr "Nóta tráchta" msgid "Add comment" msgstr "Cuir nóta tráchta leis" msgid "Add Comment" msgstr "Cuir nóta tráchta leis" msgid "Delete From Translation Memory" msgstr "Scrios ón gCuimhne Aistriúcháin É" msgid "Delete from translation memory" msgstr "Scrios ón gcuimhne aistriúcháin é" msgid "Translation suggestions" msgstr "Aistriúcháin mholta" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). msgid "No matches found" msgstr "Gan torthaí" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). msgid "No Matches Found" msgstr "Gan Torthaí" msgid "This string was found in Poedit’s translation memory." msgstr "Aimsíodh an teaghrán seo i gcuimhne aistriúcháin Poedit." msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" msgid "The TMX file is malformed." msgstr "Tá an comhad TMX míchumtha." msgid "No translations were found in the TMX file." msgstr "Níor aimsíodh aon aistriúcháin sa chomhad TMX." #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Tá bunachar sonraí na cuimhne aistriúcháin truaillithe: %s (%d)." #, c-format msgid "Translation memory error: %s (%d)." msgstr "Earráid chuimhne aistriúcháin: %s (%d)." msgid "Cannot create temporary directory." msgstr "Ní féidir comhadlann shealadach a chruthú." msgid "There are no translations. That’s unusual." msgstr "Níl aon aistriúcháin ann. Nach ait é sin." msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "Translators typically use PO template files (POTs) prepared for them by the " "developer." msgstr "" "Ní chuirtear teaghráin inaistrithe nua leis an gcomhad de láimh sa chóras " "Gettext. Ina áit sin,\n" "baintear go díreach ón bhunchod iad. Sa chaoi seo, fanann siad cruinn agus " "cothrom le dáta.\n" "De ghnáth, úsáideann aistritheoirí teimpléid PO (comhaid POT) a ullmhaíonn " "an forbróir." msgid "(Learn more about GNU gettext)" msgstr "(Tuilleadh eolais faoi GNU gettext)" 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:" msgid "Update from POT" msgstr "Nuashonrú ó POT" msgid "Take translatable strings from an existing POT template." msgstr "Tóg teaghráin inaistrithe ó theimpléad POT atá ann." 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:" msgid "Extract from sources" msgstr "Faigh teaghráin ón chód" 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 #, c-format msgid "Version %s" msgstr "Leagan %s" msgid "Create new" msgstr "Cruthaigh nua" msgid "Create new translation from POT template." msgstr "Cruthaigh aistriúchán nua ó theimpléad POT." msgid "Browse files" msgstr "Siortaigh comhaid" msgid "Open and edit translation files." msgstr "Comhaid aistriúcháin a oscailt agus a chur in eagar." msgid "Translate cloud project" msgstr "" msgid "Collaborate with other people online." msgstr "" msgid "Recent files" msgstr "Comhaid le déanaí" msgid "Sync" msgstr "Siocronaigh" 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") #, 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. #, c-format msgid "%s Preferences" msgstr "Sainroghanna %s" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "Seirbhísí" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "Folaigh %s" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "Folaigh na cinn eile" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "Taispeáin Uile" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "Scoir %s" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "Sainroghanna…" msgid "Preferences..." msgstr "Sainroghanna..." #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "Le Déanaí" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "Úsáidte go minic" msgid "&Apply" msgstr "&Cuir i bhFeidhm" msgid "Apply" msgstr "Cuir i bhFeidhm" msgid "&Back" msgstr "&Siar" msgid "Back" msgstr "Siar" msgid "&Cancel" msgstr "&Cealaigh" msgid "&Clear" msgstr "&Glan" msgid "Clear" msgstr "Glan" msgid "Copy" msgstr "Cóipeáil" msgid "Cu&t" msgstr "Gea&rr" msgid "Cut" msgstr "Gearr" msgid "Edit" msgstr "Déan eagar" msgid "&Quit" msgstr "Sc&oir" msgid "Help" msgstr "Cabhair" msgid "&New" msgstr "&Nua" msgid "New" msgstr "Nua" msgid "&No" msgstr "&Níl" msgid "No" msgstr "Níl" msgid "&OK" msgstr "&OK" msgid "Open…" msgstr "Oscail…" msgid "&Open..." msgstr "&Oscail..." msgid "Open..." msgstr "Oscail..." msgid "&Paste" msgstr "&Greamaigh" msgid "Paste" msgstr "Greamaigh" msgid "Preferences" msgstr "Sainroghanna" msgid "&Redo" msgstr "&Athdhéan" msgid "Refresh" msgstr "Athnuaigh" msgid "&Save as" msgstr "&Sábháil mar" msgid "Save as" msgstr "Sábháil mar" msgid "Select &All" msgstr "Roghnaigh &Uile" msgid "Select All" msgstr "Roghnaigh Uile" msgid "&Undo" msgstr "&Cealaigh" msgid "&Yes" msgstr "&Tá" msgid "Yes" msgstr "Tá" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "Saighead Suas" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "Saighead Síos" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "Ar Chlé" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "Ar Dheis" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "shift" poedit-3.5/locales/pt_BR.mo0000644000175100001770000016660614664354143012607 00000000000000|+: : :&:?:<S::J:g: V;`; o;y; ;;;;;;;;;;;;;;<<<0<B<H<M<U<]<o<<< < <<<< <<<<==0=L=R=X=a=g=p== = = ====>>7>N>e>k>p>>>>>> ? ???'?0? 4? @? L?Y? h?t? ? ?? ?? ???@@&@F@c@@ @ @1@@'@A.A HASA7YA6AA)AB B]"BB<BDB$C:C ACNCC C"CD+"D)ND xDDDDDDDDEE#4EXEmE|E EE EEEEEE%EF +FLFTF]FuF FF/F FkFXG]GpGGGG-G1G.H GHRH)iHH HYHI!I&I9ILIaIeI|IIIIIII;J CJ'PJ^xJLJ?$K dK rKK*KKK"K5K.LILdLjL}L L L L L LLLLLLLfMlMMuM(N?NRN"dNN NNN N NNN0N'OAO#VO<zO"OO OO*P03P!dP'PPPP(PTQ fQtQ yQ QQQQQ Q Q Q RR!R0RJRRRcR lRxR RRR R RRRRRRSz/TT TTT TT U2(U[UuU|UUU UU U U V!V&V;^D^Y^n^^^._4_J_=P__1__n_E[```;` ` aa@,amacb,#c,Pc}c cc2c*c ddwdj$e eeee%ee ff3fEfWf qffffffff8f g gg$g ,g 8g DgRg"Yg"|gg g gg g(ghhz'hhhhh h h h hh h i i i ,i 8iCi^ioi"iiii i ij jj$j -j:jTjdjtj j jjjj jjj!k *k8k@kHkQk Ykgkkkkkk k k kk ll.lBlRlgl|lmm 4m@mOmbm smm mmKmmn n%n:nMncn1nn n nn=ioo'p,p(>pgp op}p+pp p8p" q/q@qrCr8brrs8*t1ctRtctQLuu'u:ulvPv-vCwALwKw0w. x:x!x)x-y+Cy8oyCyuy,bzLz;z]{v{Z{gW|J|c }[n}o}:~7~m_[HN^Xp ف72("[~~łqDɃRVj o ȄЄӄ ڄ"$-F_p<Ѕ #$@eˆ#V cz ч. ;GPhHl5m7Y 3aω16;?\.a ͊ 1J!Z| 6 D4RAEw7  Ύَ  #+=OW `nԏۏ   & * 8 F PZapې   ) Jk{ ""đ4 IUZ#qƒ!ڒ  $ +5E[qǓݓ$6V!p +(Ȕ+=S>d1(ڕ# '28:Ds'3 j)IQ,Gt}5 >.L"{;4ڙ.Id'~%ښ&'C`|  ›ԛۛ#5#U y Ŝ!֜: 3Aʝѝ#+2OF%ɞ - >_noޟ$"G#Nr"y"Ϡߠ> D%QpwMB6 y < (:0kȣϣ ,= FPW^~s*/ߥ$5;@Thy;!!;C3 Χ٧-;(X2ۨ4a,ũߩ #4EXkǪ   #3L'g,+ȭ!Э"(="P:sȮϮ& ,KT fs6+)=MU*k$ ȰBICZ=U5 ' @+Jv|ִ̳ + 0)Q^{ ڵ/6+1b0) !$69),&;b| Ǹָ &:Tn,I55"ȺSm ȻF0B"IIl4~1 3.Ix~+w "0AR0h %6?Hfn D # 6D+L+x  :3 ;\ )9T o{ & -6!d  <Vn#).Ap  ':"Mp"(  5Oc}_.G^#z7 F & ':%` c6p( I9"\^9.;hZmVm#)1tDd)CH?E3/Fv"$8)].7?.&M?%keZqmV:tjvq=ng qw !0EKG*!&AZm-'6^q (,)FcxH;+S'(!"-3#af  . 9Zn4 M"Bpo;#_;hv %)=4Bw(( 4P$a45nCv#=ld B@Twa QjqO 91B)aT'ZSFQYu>"/VJZsG6*[ar`^;XyVb?' <IL:x%AMZ\W88O,*d0)i{J-yK|]:c%}oo0][-Pg6YS&r(\p@X(tM?iE=eD"OU|53 w  fj,#32H 4[ pk {qke;mpgl16U85:`, +Y^L9$qz2fGu(A7N4!d0DNt{F<x_+7vX)nKG+>&9m3 LeUIN Iy E"nsk/<W>PhrVvT]cQmuR$bjD !_@xEl%WK-_7MCwbz/|gcAB` zh~?SC^*tf=\h!H'P#RiF&;$H1~.2 RsJo}.} .~ (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd AccountAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add accountAdd 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 languagesAlt+Always 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 errorCrowdin is an online localization management platform and collaborative translation tool.Ctrl+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 againDownDownloading 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:EnterEnter 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 loading translation file “%s”.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export errorExport 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…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)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport from TMX…Import translation files…Importing translation memory from “%s” 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 CrowdinLeftLine %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 translations were found in the TMX file.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKObsolete stringsOneOnly 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 translation templateOpen...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 translationsQuitQuit %sReading file content failed with the following error: %sRecentRecent 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 FinderReviewRightSaveSave &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 languageServicesSet LanguageSet languageSettingsSettings…Shift+Show AllShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow summary after updating filesShow 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.These strings are no longer in the source code. Poedit will remove them from the file now.These strings were found in the sources but were not in the file. Poedit will add them to the file now.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 entries in the file are probably incorrect.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 errorUntransUpUpdateUpdate 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 the file failed. Click on 'Details >>' for details.Updating 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown 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: 2024-08-30 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 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&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(0 novas, 0 obsoletas)(Saiba mais sobre o gettext do GNU)(Novas: %i, obsoletas: %i)(Usar idioma padrão)(não está logado)(requer o Windows 8 ou mais novo)< &AnteriorSobre o %sContaContasAdicionarAdicionar ContaAdicionar ComentárioAdicionar Arquivos…Adicionar Pastas…Adicionar ProjetoAdicionar Caractere Especial…Adicionar contaAdicionar 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 suportadosAlt+Sempre mudar o foco pro campo de entrada do textoUm item na lista de arquivos de entrada:Um item na lista de palavras-chave:AparênciaAplicarVocê 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 localizações e ferramenta de tradução colaborativa online.Ctrl+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.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ê deseja remover todas as traduções que são idênticas ao texto fonte?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 novamentePra BaixoBaixando 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 para HTML…EditarEditar &ComentárioEditar &comentárioEditar ComentárioEditar comentárioEditar projetoEditar o projetoEdiçãoEditar…Email:EntrarEntrar 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 carregar o arquivo de tradução “%s.Erro ao abrir o arquivoErro ao salvar o arquivoErro ao carregar o arquivo XLIFF: %sErrosTudoCaminhos excluídosExportar pro TMX…Exportar como…Erro de exportaçãoExportar para HTML…Exportar pro TMX…A 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 sequências de caracteres traduzíveis…Configuração do extratorExtratoresO comando falhou: %sFalhou em comunicar com o processo do Poedit.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.Finalizando…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)Frequentesgettext do GNUGeralArquivos HTMLAjudaEsconder %sEsconder OutrosEsconder 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…Erro de importaçãoImportar do TMX…Importar arquivos de tradução…A importação da memória das traduções do "%s" falhou.Importando traduções…Em: %sIncluir versões betaMaiúsculas/minúsculas inconsistentesEspaço em branco inconsistenteInformações sobre o tradutorInstalarArquivo inválidoInvocação:Arquivos 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 CrowdinEsquerdaA 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 da 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…Novo do arquivo &POT/PO…Novas stringsForma 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 tradução foi encontrada no arquivo TMX.Nenhuma informação de usoNem todas as formas no plural estão traduzidas.Não autorizado, por favor logue de novo.Notas pros tradutoresOkStrings obsoletasUmSó 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 modelo de traduçãoAbrir...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 apagadasSairSair do %sNão foi possível ler o conteúdo do arquivo pelo seguinte erro: %sRecentesArquivos recentesRefazerAtualizarRecarregar ArquivoRecarregar arquivoRestantes: %dRemoverRemover Traduções Idênticas às da FonteRemover traduções idênticas às da fonteSubstituirSubstituir &TudoSubstituir &tudoString de substituiçãoSubstituir…O cabeçalho requerido das formas no plural está ausente.ResetarResetar 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 DescobridorRevisarDireitaSalvarSalvar &Como…Salvar &como…Salvar de Qualquer ManeiraSalvar de qualquer maneiraSalvar comoSalvar como…Salvar mudançasSalvar arquivoScreenshots: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 preferidoServiçosDefinir IdiomaDefinir idiomaConfiguraçõesConfigurações…Shift+Mostrar TudoMostrar 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 o sumário após atualizar os arquivosMostrar 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 acharSubstituiçõ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" 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.Estas strings não estão mais no código-fonte. O Poedit removerá elas do arquivo agora.Estas strings foram achadas nas fontes mas não estavam no arquivo. O Poedit as adicionará ao arquivo agora.Este arquivo JSON não é um arquivo de traduções e não pode ser editado no Poedit.Esta ação excluirá quaisquer traduções que correspondam exatamente ao texto fonte. Isso 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 do Gettext mas são automaticamente extraídas do código fonte. Deste modo elas ficam atualizadas e precisas. Os tradutores tipicamente usam os arquivos de modelo PO (POT) preparados pra 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çãoAs entradas da tradução no arquivo provavelmente estão incorretas.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)DesfazerOcorreu uma exceção não manejada: %sUnix (recomendado)Erro desconhecido do Crowdin.Erro desconhecidoNão traduzidasPra CimaAtualizarAtualizar 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 falhouA atualização do arquivo falhou. Clique em 'Detalhes >>' por detalhes.Atualizando 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 %sEsperando pela autenticação…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 XLIFFSimVocê 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.ZeroZoomaltPrecisa de Trabalhoctrlnão apagar arquivos temporários (para depuração)ex: nplurals=2; plural=(n > 1);Combinação imprecisa dentro do arquivoVá até o item no número de linha dadoManejar uma URI do poedit://Pré-traduzir da MTshiftIdioma desconhecidoversão não suportada (%s)voce@exemplo.com"%s" não é um arquivo POT válido.poedit-3.5/locales/ja.mo0000644000175100001770000017533614664354153012174 00000000000000t*9 9 9& 9G9<[99J9g9 ^:h: w:: ::::::::::::::;";&;8;J;P;U;];e;w;;; ; ;;;; ;;;; <<8<T<Z<`<i<o<x<< < < <<<< =&=?=V=m=s=x====== > >>'>/>8> <> H> T>a> p>|> > >> >> >>> ?%?.?N?k?? ? ?1??'?@6@ P@[@7a@6@@)@A A]*AA<ADA$BBB IBVBB B"BC+*C)VC CCCCCCCC D'D#OCOYO(xOTO OP P P!P5PFP[P pP zP P PPPPPPP PQ QQ Q (Q 4QAQQQpQQQ7RzR:S ASMS`S |SSS2SST T"T@T XTyT T TTTT;T(U1UNUaU pU zUUU UUUU:U 6V<DV VV.WJWZW*jWWW WWW*WXX,X =X HXSXYY,Y EYQYbYsYvY#Y\YZ'Z/AZ+qZZ$Z%ZZ[['[+[[[ [ [ \7\ Q\[\j\ y\\\\\\\\\\]]]]=]^1^L^ne^E^_!_;:_ v___@__`,a,aa bb2%b*Xbbbw%cjc dd#d2d%Gdmdddddd dde ee#e>eCe8Kee eee e e ee e ee f( f4f:fzSfffff f f g g!g )g 4g Ag Kg Xg dgoggg"gggh h 'h 4h@hGh Ph]hwhhh h hhhh h ii!+i Mi[icikiti |iiiiiii i i jj,j:BIi]ǖqHCJ`6!F3h+3ș?< R sΚ0!,N$mǛΛ *FHb$"М +:'S0{? $֞$6TL]+ +-8@f'Ϡw}'ɡ .-4Pi'Tߢ44H}ATiy6Ƥܤ*] 9i9 ݥ &<R!n ¦*C*nR399H C MWj*ΩM!9[.qO'.>7[E5٫4 DQ.p?߬`s z 'ϭ3 # 0=M]s ʮ Ѯݮ #!<-^l:'-Un'J=.V!óֳ  0;0l ̴ Դ "/DYH5;A %Ou ! 'ķ## < FP**(Scs 3933N@7x3?˻ !$$IK!=\0{Ƚ/!N p z ##ݾ -%,G$:r :DkW $cT^4> (5H3cG $6"2 Q ^(k$ ':4ov   8 H5R < MZ^ e (E]>p0!-: hu "5N!^0*EU er 33$ 4$>c|   >(Y*"*Mx /n<#">#Qu DK@G Y z,BP(1yu7:crXI/yEGGmC|-@?n[T p_3T]YW-3=\q$39'6a9]0BcU}|Dg|t1F8##*T1*!  THq$ es -(: cq <K$A$f w&*-;23!f+=0~?.0J{- NNKG"j9}E GQ U_9d '$ !$FL2\>|Lo[GvO1~M<Jf^\^tSJIM`'W oYL3NF1Bl0nqg3Rm{X/'|ibk)+&j_A"0-}_Z~Z)c]yt..mi'6 kr?@jay{W:7!,w4,U 46@9}BR Uufn+Gd EL/YCin/=x#>p`z%FC8V~4DuJXb-G [c|As*[7#gdem O*QSw*2Pv; ?"Dq`]p0br H1NT":5h+Q,eA> Yke<X ]@RQcu Hpr!%jf;(8xC7TB^{V=dKEPlWIFx\V(Twl KhO. q-}Z) NU#IM?6=(&Etva>zS\D<5z2H9ys5;:KP3 go$$ 8a&h!_s%92$  (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd AccountAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add accountAdd 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 languagesAlt+Always 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 errorCrowdin is an online localization management platform and collaborative translation tool.Ctrl+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 no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownDownloading 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:EnterEnter 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 loading translation file “%s”.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export errorExport 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…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)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport from TMX…Import translation files…Importing translation memory from “%s” 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 CrowdinLeftLine %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 translations were found in the TMX file.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKObsolete stringsOneOnly 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 translation templateOpen...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 translationsQuitQuit %sReading file content failed with the following error: %sRecentRecent 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 FinderReviewRightSaveSave &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 languageServicesSet LanguageSet languageSettings…Shift+Show AllShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow summary after updating filesShow 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.These strings are no longer in the source code. Poedit will remove them from the file now.These strings were found in the sources but were not in the file. Poedit will add them to the file now.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 entries in the file are probably incorrect.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.UntransUpUpdateUpdate 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 the file failed. Click on 'Details >>' for details.Updating 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown 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: 2024-08-30 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)(新規 0、使用しないように変更 0)(GNU gettext の詳細)(新規 %i、使用しないように変更 %i)(デフォルト言語を使用)(サインインしていません)(Window 8 以降が必要)< 前へ (&P)<名称未設定>%s についてアカウントアカウント追加アカウントを追加するコメントを追加ファイルを追加…フォルダーを追加…プロジェクトを追加ワイルドカードを追加…アカウントを追加するコメントを追加ディレクトリをリストに追加ファイルを追加…フォルダーを追加…プロジェクトを追加ワイルドカードを追加…追加キーワード追加 xgettext フラグ:上級者モード高度な抽出設定…高度な抽出設定高度な抽出設定…すべての翻訳ファイルすべてのコメントすべての文字列対応言語のデフォルトキーワードも利用可能Alt+フォーカスは常にテキストフィールドに置く入力ファイル一覧の各項目:キーワード一覧の各項目:外観適用本当に「%s」抽出ツールを削除してもよいですか ?本当に翻訳メモリをリセットしてよいですか ?自動的に更新を確認保存する際に MO ファイルを自動コンパイル戻るベースのパス:ベータ版は最新の機能や改善を含みますが、安定性が低い可能性があります。すべてを手前に移動PO ファイルが破損しています。複数形表記の msgstr が使われていますが、msgid_plural の指定がありません。PO ファイルが破損しています: msgid_plural が指定されていますが、msgstr が複数形表記ではありません。翻訳文字列内に不正なマークアップ記述があります。参照ファイルを閲覧デフォルトでは正確ではない結果も含まれますが、要確認としてマークされます。完全一致のみを含めるには、このオプションにチェックを入れてください。キャンセルキャンセルしています…一時ディレクトリを作成できません。プログラムを実行できません: %s不明な言語から事前翻訳できません。ソーステキストなしでは事前翻訳できません。キャピタライズカタログマネージャ (&M)カタログマネージャ (&M)カタログマネージャPoedit の UI 言語を変更文字符号化法:ドキュメンテーションを今すぐ確認文法と綴りを確認入力中にスペルチェックアップデートの確認…翻訳中のエラーをチェックアップデートの確認…スペルチェック消去メニューを消去翻訳をクリアメニューを消去翻訳をクリア閉じるコードでの出現箇所コードでの出現箇所オンラインで他の人とコラボレーションしましょう。ソースファイルを収集中…翻訳を抽出するコマンド:コメントコメント:以下の接頭辞のついたコメント:MO にコンパイル…形式を指定してコンパイル…翻訳ファイルをコンパイルしました設定画面でソースコード抽出を設定できます。確認対応するローカリゼーションプラットフォームと Poedit を連携すると、プラットフォーム上で管理されている翻訳をシームレスに同期できます。コピー単数形から複製ソーステキストからコピー単数形から複製ソーステキストからコピー綴りを自動修正Localazy プロジェクトの詳細をダウンロードできませんでした。ファイルを読み込めませんでした。破損している可能性があります。ファイル %s を保存できません。新規作成翻訳プロジェクトを新規作成するPOT テンプレートから新しい翻訳を作成します。翻訳プロジェクトを作成するCrowdin エラーCrowdin は、オンラインのローカリゼーション管理プラットフォームで、複数人で翻訳を行うためのツールです。Ctrl+切り取り (&T)カスタム抽出ツール:カスタム抽出ツール:ツールバーをカスタマイズ…切り取りディスク上のデータベースサイズ:削除翻訳メモリから削除抽出ツールを削除翻訳メモリから削除プロジェクトを削除コメントを削除翻訳プロジェクトを削除するプロジェクトを削除しても、翻訳ファイルは削除されません。ディレクトリ:プロジェクト “%s” を削除しますか?ディスクからファイルを再読み込みしますか? この場合、Poedit で保存されていない編集内容は失われます。もう使われていない翻訳をすべて削除しますか ?保存しない (&N)保存しない今後表示しない完全な一致を要確認としてマークしない今後表示しない下最新の翻訳をダウンロード中…このプロジェクトでは、翻訳のダウンロードが無効になっています。ここにフォルダまたはファイルをドラッグここにフォルダまたはファイルをドラッグ終了 (&X)編集コメントを編集 (&C)コメントを編集 (&C)コメントを編集コメントを編集プロジェクトを編集このプロジェクトを編集編集編集…メール:Enter全画面表示ファイルの中の項目がファイルの Plural-Forms ヘッダで示された数と異なる複数形を持っていますエラーのある項目を先頭に表示エラーのある項目を先頭に表示エラーがある項目はリスト中で赤くマークされています。エラーの詳細は、その項目を選択すると表示されます。翻訳ファイル “%s” の読み込み中にエラーが発生しました。ファイルを開く際にエラーが発生しましたファイルの保存中にエラーが発生しましたXLIFFファイルの読み込み中にエラーが発生しました: %sエラーすべて除外するパスTMX にエクスポート…書式を指定してエクスポート…エクスポートエラーTMX にエクスポート…「%s」から翻訳メモリをエクスポートできませんでした。翻訳をエクスポート中…ソースから抽出以下から翻訳者向けのメモを抽出:以下のディレクトリのソースファイルからテキストを抽出:翻訳可能な文字列を抽出中…抽出ツール設定抽出ツール失敗したコマンド: %sPoedit プロセスとの通信に失敗しました。抽出された翻訳ファイルを読み込めませんでした。gettext カタログの統合に失敗しました。翻訳メモリを更新できませんでした: %sファイルファイルを開けませんファイル “%s” は存在しません。ファイル "%s" は翻訳ファイルではありません。ファイル “%s” は読み出し専用のため保存できません。 別のファイル名で保存してください。完了処理中…検索次を検索前を検索検索と置換…コメントを検索対象に含めるソース テキストを検索翻訳された文字列を検索対象に含める次を検索前を検索言語を修正言語を修正ヘッダーを修正ヘッダーを修正Flutter 翻訳ファイル形式 %iフォーム %i (未使用)頻繁GNU gettext一般HTML ファイルヘルプ%s を非表示ほかを非表示サイドバーを隠すステータスバーを非表示この通知メッセージを表示しないクラウド同期の仕組みID一掃を実行すると、削除済みとしてマークされた翻訳はすべて完全に削除されます。将来再び追加された場合は翻訳し直す必要があります。以前ファイルへのアクセスを拒否した場合、システム環境設定 > セキュリティとプライバシー > プライバシー > ファイルとフォルダ から許可できます。以前ファイルへのアクセスを拒否した場合、システム設定 > プライバシーとセキュリティ > ファイルとフォルダ から許可できます。無視大文字小文字を無視TMX からインポート…翻訳ファイルのインポート…インポートエラーTMX からインポート…翻訳ファイルのインポート…「%s」から翻訳メモリをインポートできませんでした。翻訳をインポート中…問題のあるファイル: %sベータ版を含める一貫性のない大文字/小文字の使用一貫性のない空白の使用翻訳者に関する情報インストール不正なファイル呼び出し:JSON 翻訳ファイル保持する言語名またはコード翻訳言語がソース言語と同一です。翻訳の言語が設定されていません。翻訳の言語:言語選択言語チーム:言語:最終更新gettext キーワードとは複数形とはさらに詳しく%s の詳細Crowdin について左%d行目 (ファイル “%s“) が破損しています。無効な%sデータです。改行:セミコロン区切りの拡張子 (例. *.cpp;*h):英文を読み込むLocalazy は高度に自動化されたローカリゼーションプラットフォームで、誰でも簡単に製品やコンテンツを複数の言語に翻訳できます。MO ファイルは Poedit で直接編集できません。小文字に変換大文字に変換この POT ファイルから新しい翻訳を作成します。書式が不正なヘッダ: “%s”アカウントの管理管理…差分を統合しています…最小化翻訳するプロジェクトの名称名前:次の未訳または未確定 (&X)次の未訳または未確定 (&X)要確認要確認チェックすると一覧にフォーカスが移動しなくなります。キーボードによる項目の移動は Ctrl + 矢印キー のみとなります。新規POT/PO ファイルを元に新規 (&P)…POT/PO ファイルを元に新規 (&P)…新規文字列次の複数形次の複数形いいえ一致するものが見つかりませんでした事前翻訳できる項目はありませんでした。このファイルでは、この文字列のソースコード内の出現箇所に関する情報が提示されていません。一致するものが見つかりませんでした翻訳に問題は見つかりませんでした。あなたのアカウントには翻訳プロジェクトがありません。TMX ファイル内に翻訳が見つかりませんでした。使用情報はありません複数形がすべて翻訳されていません。未認証です。もう一度ログインしてください。翻訳者への注釈OKもう使われていない文字列1翻訳メモリの品質を信頼できる場合のみ有効化してください。デフォルトでは翻訳メモリからの一致は要確認にマークされ、レビューが必要となります。完全な一致のみ採用するクラウド翻訳を開く…最近のファイルを開く翻訳ファイルを開いて編集します。クラウド翻訳を開くクラウド翻訳を開く…ファイルを開くエディターで開くエディターで開く最近使用したファイル翻訳テンプレートを開く開く...開く…設定その他前の未訳または未確定 (&R)前の未訳または未確定 (&R)PO 翻訳ファイルPOT 翻訳テンプレートPOT ファイルはテンプレートのみで、それ自体に翻訳は含まれていません。 翻訳を行うには、このテンプレートをベースにして新しい PO ファイルを作成します。ペーストペーストしてスタイルを合わせるパスプロジェクト内のすべてのファイルのソースコードをもとに、翻訳ファイルの更新を実行します。権限がありません。プレースホルダーの"%s" が翻訳から見つかりません。プレースホルダーの正確性代わりに、対応する PO ファイルを開いてください。そちらを保存する際に MO ファイルも更新されます。まずファイルを保存してください。保存するまでこのセクションは編集できません。複数形複数形の翻訳このファイルで使われている複数形表現は、%sの一般的なものではありません。複数形:PoeditPoedit - カタログマネージャPoedit は、ファイル「%s」内の無効なコンテンツを自動的に修正しました。Poedit は、ファイルに含まれる以前の翻訳または翻訳メモリのみから新しい項目を入力しようとすることもできます。翻訳メモリがほとんど空の場合、メモリを使ってもあまり効果はありませんが、翻訳を追加していくとさらに精度が高まっていきます。Poedit は文字列が使用されているソースコードを表示できません。ファイルが参照された場所で使用できないか、実ファイルを指していないシンボリック参照であるためです。Poedit は使いやすい翻訳エディタです。Poedit は “%s” ファイルを開けませんでした。事前翻訳 (&T)…事前翻訳事前翻訳済み%u件の文字列を翻訳翻訳メモリから事前翻訳しています…事前翻訳中…事前翻訳は翻訳メモリ内から未翻訳文字列との完全またはあいまい一致を自動的に検出し、それで翻訳を埋めます。事前翻訳は、ソーステキストが利用可能であることが必要です。実テキストがない ID のみが使われている場合は、利用できません。事前翻訳では、原文の言語が判明している必要があります。Poedit はこのファイルで言語を検出できませんでした。環境設定設定…設定…文字列を準備しています…既存ファイルのフォーマットを保護する前の複数形前の複数形以前のソーステキスト編集済み編集済みプロジェクト名とバージョン:プロジェクト名:プロジェクト:プロジェクト句読点のチェック翻訳の一掃削除された翻訳を一掃する終了%s を終了ファイル内容の読み込みに失敗しました: %s最近最近使用したファイル再実行再読み込みファイルを再読み込みファイルを再読み込み未翻訳: %d置き換えすべてを置換 (&A)すべてを置換 (&a)置換文字列置換…必要なヘッダ Plural-Forms がありません。リセット翻訳メモリをリセット翻訳メモリをリセットすると、保存された翻訳がすべて削除されます。元に戻すことはできません。Finder で表示レビュー右保存名前を付けて保存 (&A)…名前を付けて保存 (&A)…強制的に保存強制的に保存名前を付けて保存名前を付けて保存…変更を保存ファイルを保存スクリーンショット:すべてを選択 (&A)すべてを選択インポートする TMX ファイルを選んでくださいディレクトリの選択翻訳ファイルを選択インポートする翻訳ファイルを選択翻訳テンプレートを選択お好みの言語を選択してくださいサービス言語を設定言語を設定設定…Shift+すべて表示サイドバーを表示綴りと文法を表示ステータスバーを表示文字列 ID を表示(&I)代替案を表示ツールバーを表示警告を表示エクスプローラーで表示フォルダで表示サイドバーを表示・非表示にする。サイドバーを表示ステータスバーを表示文字列 ID を表示(&I)ファイルの更新後に概要を表示警告を表示サイドバーログインログアウトログイン%sにサインインクラウドアカウントにサインインするCrowdin にログインクラウドアカウントにサインインするログアウト単数形スマートコピー & ペーストスマートダッシュスマートリンクスマート引用ファイル順でソート (&F)ソース順でソート (&S)翻訳順でソート (&T)ファイル順でソート (&F)ソース順でソート (&S)翻訳順でソート (&T)ソースコードの文字符号化法:ソースコード抽出ツールは、ソースコードファイル内にある翻訳可能な文字列を見つけて抽出するために使われます。ソースコードが存在しません。ソースコードが見つかりませんソーステキストソーステキスト IDソース テキスト — %sソース中のキーワードソースのパスソース中のキーワードソースの検索パススピーチ%sの辞書がインストールされていないためスペルチェックは無効化されています。綴りと文法読み上げを開始読み上げを停止保存された翻訳:文字列のコンテキスト:%s文字列の識別子: %s文字列の長さ文字列の長さ: 翻訳 | 原文検索する文字列代替案提案翻訳言語が正しく設定されていない場合、提案は利用できません。また、複数形などの他の機能にも影響する可能性があります。原文に含まれていない余分なプレースホルダ "%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 ファイルの内部フォーマットに影響します。例えばバージョンコントロールのような特別な要件がある場合は調整してください。これらの文字列はソースコードにはもう存在しません。 Poedit はファイルからこれらの文字列を削除します。これらの文字列がソース中に存在しますが、ファイルには含まれていませんでした。 Poedit はファイルにこれらの文字列を追加します。この 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ズームalt要確認ctrl一時ファイルを削除しない (デバッグ向け)例: nplurals=2; plural=(n > 1);ファイル内でのあいまい一致指定の行番号の項目に移動poedit:// URI を処理翻訳メモリから事前翻訳shift不明な言語サポートされていないバージョン (%s)you@example.com“%s” は有効な POT ファイルではありません。poedit-3.5/locales/lv.mo0000644000175100001770000007341614664354154012220 00000000000000T 9p# q# }##g#$$ $'$.$4$<$K$Z$`$f$o$$$$$$$$$$$$ % %%$% -%:%J%`%v%%%%%%%&&6&M&d&j&o&&&& & &&&& & '' $'0' J'W'f'o' '''''' '(()'( Q(]\(<(D(<)C)"J)m))))))))*$*#9*]*r******* ** +++.+D+W+m++++ +++, , ,',F,e, x,?, , ,,,-" -5.-d-j- o- }- - - --------u.... .. . ..<.":/]/*p/0/!/'/00(:0Tc00 0 00001 $1 .1 <1 I1V1e1m1 ~11 11 1111123 3&393U3h3333 33 3 33;4>4[4n4 }4 444 444:4</5.l55 555555 6 66666 77-7>7A7R7%c777777777777 8!868P88889n99 999,9 99::':<: V:d:m:s::::: : :: : :: :;;;; ; &; 2; >;J; R; ]; j; v;;;; ;;;;; < <-< F<S<c< s<<<<<<<<< < < <<="=7=K=[=p== === ==K=1>F> U>c>x> > >>!?(3?\? d?r?+? ??C?@8@R@cFAQAALB]dBmB_0C[CCCD D+D@DSD7jD2D"DDE"EEEE EEEF F"F5FNFgFwFFF<FFFGV(GGGG GGGGG GHHm#H7H H3HI II-I.2I aIIII!IIKK"KK{LL L LLLLL LM MM.MIMNMfM ~M M MMMMMMM N N #N1NBN\NvNNN NN N NO7OOOfO}OOOOO&OP P#P*P 0P:POPcPvPPPPPPPP,P *Q KQlQtQ${Q+QQ^QE:RIR RR!RRS2SJS!aS SS.S0ST' THTcTTTTT TTTTU U'UAUXUrU$UUU#U VVV8VAVUV^V{VVVCV V WW!W4W$9W6^WW WWWWWWX !X /XkMk\krkyk kkl!,lNlfl'l6l llElBm9mJ'nYrnNn!oI=odoyogfpep4q:qKq gqqqqq,q1q$r-rBreSrrrr$rrsss)-sWsqsssssEs&t";t^ta|tt tu u&u@uVu[u cuquuPu-u v1vJvPv Tvav4fv!vvvvvK_ af W,P[(4Z'+#gP#m `K)oAG0}BUrzu%>{:_3clSlq\FbxsVv4:aHYn>\ r7h!{MH=w<79hGpt=/B8J O(f xQ"N$CXJp61om.d%~Z+ST/&eWj52U&y^36-^}'LnFY~TqLg<j9k u -C1 MvAI2NIQ?5*c@|ODbtk].sEe?i)d[RwDE *z|],8;"`VRi0 $y@;! X (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(0 new, 0 obsolete)(New: %i, obsolete: %i)(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 commentsAlt+Always 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 errorCtrl+Customize 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 againDownDownloading latest translations…Downloading translations is disabled in this project.E&xitEditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:EnterEntries 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 errorExport to TMX…Extract text from source files in the following directories:Extracting translatable strings…Failed command: %sFailed 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 CrowdinLeftLine %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.OKObsolete stringsOneOpen in EditorOpen in editorOpen translation templateOpen...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 translationsQuitQuit %sRedoRefreshReload FileRemaining: %dReplaceReplace &AllReplace &allReplacement stringReplace…ResetReviewRightSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSelect &AllSelect AllSelect directorySelect your preferred languageShift+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 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 entries in the file are probably incorrect.Translation 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)UntransUpUpdate allUpdate all catalogs in the projectUpdate from &POT File…Update from &POT file…Update from POTUpdate summaryUpdatesUpdating failedUpdating the file failed. Click on 'Details >>' for details.Updating 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.Zeroaltcolumn/row headerNeeds Workctrldon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);handle a poedit:// URIshiftunknown language“%s” is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2024-08-30 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ā(0 jaunas, 0 novecojušas)(Jauns: %i, novecojis: %i)(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āriAlt+Vienmē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ļūdaCtrl+Pielā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ītDownLejupielā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:EnterVispirms 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ēšanas kļūdaEksportēt uz TMX…Izvilkt tekstu no avotu failiem sekojošajās mapēs:Izvērš tulkojamos vārdus…Neizdevās komanda: %sKomunikā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 CrowdinLeftRinda %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.LabiNovecojušās virknesViensAtvērt redaktorāAtvērt redaktorāAtvērt tulkojuma šablonuAtvē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 tulkojumusIzietIziet no %sAtcelt atsaukšanuAtsvaidzinātPārlādēt failuAtlikuši: %dAizstāt&Aizstāt visus&Aizstāt visusAizstāt arAizstāt…AtiestatītSkatītRightSaglabā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 valoduShift+Rā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ītiTulkojuma ierakstos, iespējams, ir kļūda.Tulkojumu 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)NeiztulkUpAtjaunot visusAtjaunot visus katalogus šajā projektāAtjaunot no &POT faila…Atjaunot no &POT faila…Atjaunināt no POT failaAtjaunot kopsavilkumuAtjauninājumiNeizdevās atjauninātKļūda jauninot failu. Papildus informācijai spiediet 'Detaļas>>'.Jauninā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.NullealtJāpārbaudactrlneizdzēst pagaidu failus (atkļūdošanas nolūkos)piem. nplurals=2; plural=(n > 1);rīkoties ar poedit://URIshiftnezināma valoda“%s” nav derīgs POT fails.poedit-3.5/locales/eu.mo0000644000175100001770000012363014664354153012201 00000000000000!8- 9- E-P-<d--J-g- g.q. .. .............//+///A/S/Y/^/f/n//// / //// ///00%0A0]0c0i0r0x000000011%1*1>1]1u11 1 111 1 111 22 02=2L2\2p222222 313F3'K3s33 337363*4)J4t4 y4]44$45!5"(5K5 f5q55555555 6#"6F6[6j6p6666 6666 77/17 a7n7s77777778 48B8H8M8`8s88888888 9?9 Y9 g9t9*999"959#:): .: <: J: W: d:q::::::::u:[;n; u;;; ; ;;0;;<#+<<O<"<< <<*<!='*=R=W=(v=T= => > >>3>D>Y> n> x> > >>>>>> >> >>? ? ?%?5?T?W?@ @@@ @@@2A3AMA cAA A AA;A(AB,B?B NB XBfBB BBB:B C<C.KCzCCC CCC*C DD!D 2D =DHDEE!E :EFEWEhEkE#|EE'E+E$F%*FPFSFdFhFF G"G1G@GHGPGXG^GsGGGGHHNHdHjHn}HEH2I 9IGINI@hII,JJ JJ2J.KAK KKK%K L5LJL dLrL{LLLLLLL LL L LL M( M4M:MzSMMMM M MM N N N $N/NJN"[N~NN N NNN NNNOO *O 7OEO ^OkO{O OOOOOOOOO O O PP*P:POPcPsPPP$Q ?QKQ^Q oQ}Q QQKQQR R!R6R ER SR_RRnSsS(SS SS+S T T8T"STvTTJU8eUURVcVQDWWlW-XCLXAXKX0Y.OY~Y! Z)/Z-YZ+Z8ZCZu0[,[L[ \\7R]m]_][X^^^^_ __``-`2D`"w``````` `a-a5a 8a"Cafaaaaaaaaa b&b@bVblb#bVbcc$c 7cBc`crcccc ccccHc5'd7]d d3dad5e:e?eCe`e.ee eeeeff$f!5fWf g hh5.hdhJxhch 'i 3i Ai MiYi iisi{iiiiiiii i iij j&j>j Vj`j hj sjjjjjjj j jj jj kk2kCkckk kkk kkkkkl/lFl]ldlil!lll"l m m m&m.m>mTmgmzmmmmmmm n!n@n\n{nnAnn(n,o$Cohooo'xo3o#o/o(p/pd@pp#ppp(pq2qBq[qtq+qqq#q%r".r&Qr"xrrrrrrrs s*sHs[s"ms7s ssss t#t?t!_ttttttttu&u,uKuSuouuu u=uuv v7 vXvlv sv9vvvvvww#w5wGw OwZwcwiw"~w"w|w!Axcxlxqxxxxx2xyy+6y=byyy yy0y,%z0Rz zz.zPz +{7{>{O{_{u{{{{{{{||&|/|K| R|^|g|x| |||||||}>~\~!p~~~!~3~)"> ak 4(  0;Jj ??:H Ɂԁ 2 I We;Ba %ك#)@$j+фՄ,…ׅ .D\u5<_MD D1v+Y - $ - ALTsy̋ۋ / %0L ׌ .> M,[)ƍ )!?aw"ǎ) : G R _j ɏ܏/DXm#3E^x M(9Mi y . ʓ#(-.V5-Δ 6ەO^iKȗX0'FBE;0)ܙ!y*-ƚ$(@Bu%Kk0pѝhBN  )3FWq2%),?/Gw %С ;Mf z+͢ ,031d\  0<Wn Ȥ==%>c 7v\ag ky.~!!Ϧ( 5V]&qA^+<?V r$r7hi 6=q2xD ,K .}ULsmRUL*(zyj@HpCeOY&IkE%;f`7v(_W  )9-WJcO"f gT8NI0#mtQ*PTcaDQ]l?%/.&'4~:MX!^+>Mey5sd~9[8'`kn-"=31_d3FobzAh\6G)w|g#]Z!lqpN5[ 2S : Z uB,j}iw/@bHGoV\; 0<xt JSvY14 Cn{{Xu RP|FB$Ea K>  (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(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 languagesAlt+Always 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 errorCtrl+Cu&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 againDownDownloading latest translations…Downloading translations is disabled in this project.E&xitEditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:EnterEnter 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 errorExport 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerForm %iForm %i (unused)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport from TMX…Import translation files…Importing translation memory from “%s” failed.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 CrowdinLeftLine %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.No translations were found in the TMX file.Not all plural forms are translated.Not authorized, please sign in again.OKObsolete stringsOneOnly 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 translationsQuitQuit %sRecentRedoRefreshRemaining: %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.ReviewRightSaveSave &As…Save &as…Save asSave as…Save changesSelect &AllSelect AllSelect TMX files to importSelect directorySelect translation files to importSelect your preferred languageServicesSet LanguageSet languageShift+Show AllShow 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.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.Translated: %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)UntransUpUpdate 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown language“%s” is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2024-08-30 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(0 berri, 0 zaharkitu)(Ikasi gehiago GNU gettext buruz)(Berria: %i, zaharkitua: %i)(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 baiAlt+Betik 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 erroreaCtrl+&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 berriroBeheraAzken itzulpenak deskargatzen…Itzulpenak deskargatzea desgaituta dago proiektu honetan.I&rtenEditatuEditatu &iruzkinaEditatu &iruzkinaEditatu iruzkinaEditatu iruzkinaEditatu proiektuaEditatu proiektuaEdizioaEditatu…E-maila:SartuSartu 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…Esportazio erroreaTMXra esportatu…"%s"ra itzulpen memoria esportatzeak huts egin du.Itzulpenak esportatzen…&Erauzi iturburuetatikErauzi itzultzaileentzako oharrak hemendik:Erauzi testua direktorio hauetako jatorrizko fitxategietatik:Kate itzulgarriak erauzten…Erauzlearen ezarpenaErauzleakKomando hutsegitea: %sKomunikazioak 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.Amaitzen…BilatuBilatu hurrengoaBilatu aurrekoaBilatu eta ordeztu…Bilatu iruzkinetanBilatu jatorrizko testuetanBilatu itzulpenetanBilatu hurrengoaBilatu aurrekoaZuzendu hizkuntzaKonpondu hizkuntzarenaKonpondu goiburuaKonpondu goiburua%i forma%i forma (ez da erabiltzen)OhikoaGNU gettextOrokorraHTML fitxategiakLaguntzaEzkutatu %sEzkutatu besteakEzkutatu 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…Inportazio-erroreaTMXtik inportatu…Itzulpen fitxategiak inportatu…"%s"tik itzulpen memoria inportatzeak huts egin du.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 buruzEzkerra%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 da itzulpenik aurkitu TMX fitxategian.Ez dira forma plural guztiak itzuli.Ez autorizatua, mesedez hasi saioa berriro.AdosKate zaharkituakBatGaitu 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 itzulpenakIrtenIrten %s(e)tikAzkenakBerreginFreskatuGelditzen 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.BerrikusiEskuinaGordeGorde &honela…Gorde &honela…Gorde honelaGorde honela…Gorde aldaketakHautatu &denakHautatu denakInportatu beharreko TMX fitxategiak aukeratuHautatu direktorioaHautatu inportatzeko itzulpen-fitxategiakHautatu zure gogoko hizkuntza ZerbitzuakEzarri hizkuntzaEzarri hizkuntzaMaius.+Erakutsi denakErakutsi 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.GuztiraEraldaketakSarrera itzulgarriak ez dira eskuz gehitzen Gettext sisteman, automatikoki erauzten dira iturburu kodetik. Honela, eguneratuta eta zehatz daude. Itzultzaileek arrunt garatzaileek beraientzat prestatutako PO txantiloi fitxategiak (POT-ak) erabiltzen dituzte.Itzulita: %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 gabeGoraEguneratu 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.ZeroZoomaaltLana behar ductrlez ezabatu fitxategi tenporalak (arazketarako)Adib. nplurals=2; plural=(n > 1);zalantzako bat egitea fitxategianjoan emandako lerro zenbakiko elementuramaneiatu poedit:// URI bataurre-itzuli itzulpen memoriatikmaius.hizkuntza ezezaguna"%s" ez da baliozko POT fitxategi bat.poedit-3.5/locales/hy.po0000644000175100001770000024042314664354153012213 00000000000000msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2024-08-30 13:57+0200\n" "PO-Revision-Date: 2024-08-30 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" msgid "Hide this notification message" msgstr "Թաքցնել ծանուցումը" msgid "Don’t Show Again" msgstr "Այլևս չցուցադրել" msgid "Don’t show again" msgstr "Այլևս չցուցադրել" #, c-format msgid "(New: %i, obsolete: %i)" msgstr "(Նոր՝ %i, հնացած՝ %i)" msgid "Collecting source files…" msgstr "Հավաքում է աղբյուր նիշքերը..." msgid "Extracting translatable strings…" msgstr "Դուրս է բերում թարգմանվող տողերը…" msgid "Failed to load file with extracted translations." msgstr "Հնարավոր չեղավ բեռնել դուրս բերված թարգմանությունենրի նիշքը:" msgid "Merging differences…" msgstr "Տարբերությունները ձուլվում են…" msgid "Updating translations" msgstr "Թարգմանությունների թարմացում" #, c-format msgid "The file “%s” couldn’t be opened." msgstr "“%s” ֆայլի բացումը չհաջողվեց։" msgid "Invalid file" msgstr "Անվավեր նիշք" #, c-format msgid "Malformed header: “%s”" msgstr "Այլակերպված '%s' գլխագիր" msgid "PO Translation Files" msgstr "PO թարգմանության նիշքեր" msgid "POT Translation Templates" msgstr "POT թարգմանության նիշքեր" msgid "XLIFF Translation Files" msgstr "XLIFF թարգմանության նիշքեր" msgid "JSON Translation Files" msgstr "JSON թարգմանության ֆայլեր" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool msgid "Flutter Translation Files" msgstr "Flutter թարգմանության ֆայլեր" msgid "All Translation Files" msgstr "Թարգմանության բոլոր նիշքերը" msgid "The file is in a format not recognized by Poedit." msgstr "Չհաջողվեց Poedit-ի կողմից որոշել ֆայլի ձևաչափը:" msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" "Այս JSON ֆայլը թարգմանությունների ֆայլ չէ և հնարավոր չէ խմբագրել Poedit-ում:" #, c-format msgid "Reading file content failed with the following error: %s" msgstr "Ֆայլի բովանդակության ընթերցումը ձախողվեց հետևյալ սխալով. %s" #, c-format msgid "" "File “%s” is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "«%s» նիշքը միայն կարդալու համար է եւ հնարավոր չէ այն պահել:\n" "Պահեք այն այլ անունով:" #, c-format msgid "Couldn’t save file %s." msgstr "Հնարավոր չէ պահել %s նիշքը:" msgid "Screenshots:" msgstr "Էկրանի հանույթ" #, c-format msgid "%i line of file “%s” was not loaded correctly." msgid_plural "%i lines of file “%s” were not loaded correctly." msgstr[0] "«%2$s» նիշքի %1$i տողը ճիշտ չէ բեռնվել." msgstr[1] "«%2$s» նիշքի %1$i տողերը ճիշտ չեն բեռնվել." #, c-format msgid "Line %d of file “%s” is corrupted (not valid %s data)." msgstr "%d տողի '%s' նիշքը վնասված է (անվավեր %s տվյալ):" msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "Վնասված PO նիշք. եզակի msgstr ձեւը օգտագործված է msgid_plural-ի հետ" msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" "Վնասված PO նիշք. հոգնակի msgstr ձեւը օգտագործված է առանց msgid_plural-ի" msgid "Couldn’t load the file, it is probably damaged." msgstr "Չհաջողվեց բեռնել ֆայլը, հավանաբար այն վնասված է:" msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "Սխալ՝ նիշքը բեռնելիս: Որոշ տվյալները, հնարավոր է, բացակայում են կամ վնասված " "են:" msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "Նիշքը նորմալ ձեւաչափելու խնդիր (բայց այն հաջողությամբ պահվել է):" #, 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-ով և համապատասխանաբար կարգավորումը փոփոխվել " "է:" msgid "Error saving file" msgstr "Նիշքը պահելու սխալ" #, c-format msgid "“%s” is not a valid POT file." msgstr "'%s'-ը վավեր POT նիշք չէ:" #, c-format msgid "Error while loading XLIFF file: %s" msgstr "XLIFF ֆայլի բեռնման ընթացքի խնդիր. %s" #, c-format msgid "unsupported version (%s)" msgstr "չաջակցվող տարբերակ (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML msgid "Broken markup in translation string." msgstr "Կոտրված նշարկում թարգմանության տողում:" msgid "(Use default language)" msgstr "(Օգտ. լռելյայն լեզուն)" msgid "Language selection" msgstr "Լեզվի ընտրություն" msgid "Select your preferred language" msgstr "Ընտրեք Ձեր նախընտրած լեզուն" msgid "You must restart Poedit for this change to take effect." msgstr "Կիրառֆելու համար պետք է վերագործարկեք Poedit-ը" msgid "Add Account" msgstr "Հավելել հաշիվ" msgid "Add account" msgstr "Հավելել հաշիվ" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #, c-format msgid "Learn more about %s" msgstr "Իմանալ ավելին %s-ի մասին" msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "Կապակցել Poedit-ն աջակցվող ամպի տեղայնացման հարթակների հետ՝ դրանցքում " "կառավարվող թարգմանությունները աննկատ համաժամեցնելու համար:" msgid "How does cloud sync work?" msgstr "Ինչպե՞ս է աշխատում ամպի համաժամեցումը:" msgid "Account" msgstr "Հաշիվ" msgid "(not signed in)" msgstr "(մուտք գործած չէ)" msgid "File" msgstr "Նիշք" msgid "Open cloud translation" msgstr "Բացել ամպի թարգմանությունը" msgid "Manage accounts" msgstr "Կառավարել հաշիվները" msgid "Project:" msgstr "Նախագիծ՝" msgid "Language:" msgstr "Լեզուն՝" msgid "Sign in to Cloud Account" msgstr "Մուտք գործել ամպի հաշիվ" msgid "Sign in to cloud account" msgstr "Մուտք գործել ամպի հաշիվ" msgid "No translation projects listed in your account." msgstr "Թարգմանության նախագծեր ցուցակագրված չեն ձեր հաշվում:" msgid "Downloading latest translations…" msgstr "Ներբեռնում է վերջին թարգմանությունները..." #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #, c-format msgid "Sign in to %s" msgstr "Մուտք գործել %s" msgid "Syncing" msgstr "Համաժամեցում" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s…" msgstr "Թարգմանությունների վերբեռնում %s..." #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #, c-format msgid "Uploading translations to %s failed." msgstr "Թարգմանությունների վերբեռնումը %s ձախողվեց:" msgid "Syncing error" msgstr "Համաժամեցման սխալ" msgid "Add" msgstr "Ավելացնել" msgid "Unknown Crowdin error." msgstr "Crowdin-ի անհայտ սխալ " msgid "Not authorized, please sign in again." msgstr "Իսկորոշում չկա, կրկին մուտք գործեք:" msgid "Downloading translations is disabled in this project." msgstr "Թարգմանությունների ներբեռնումը անջատած է այս նախագծի համար:" msgid "Sign In" msgstr "Մուտք գործել" msgid "Sign in" msgstr "Մուտք գործել" msgid "Sign Out" msgstr "Դուրս գրվել" msgid "Sign out" msgstr "Դուրս գրվել" msgid "Learn more about Crowdin" msgstr "Մանրամասներ Crowdin-ի մասին" msgid "" "Crowdin is an online localization management platform and collaborative " "translation tool." msgstr "" "Crowdin-ը առցանց թարգմանությունների կառավարման հարթակ և համագործակցային " "թարգմանության գործիք է:" msgid "Waiting for authentication…" msgstr "Սպասում է իսկորոշման..." msgid "Updating user information…" msgstr "Թարմացնում է օգտվողի տեղեկությունը..." msgid "Sign in to Crowdin" msgstr "Մուտք գործել Crowdin" msgid "Syncing with Crowdin failed." msgstr "Համաժամեցումը Crowdin-ի հետ ձախողվեց:" msgid "Crowdin error" msgstr "Crowdin-ի սխալ" msgid "Uploading translations…" msgstr "Թարգմանությունների վերբեռնում.." msgid "&Copy" msgstr "&Պատճենել" msgid "Learn more" msgstr "Մանրամասներ" msgid "&Help" msgstr "&Օգնություն" msgid "MO files can’t be directly edited in Poedit." msgstr "MO նիշքերը չեն կարող ուղղակիորեն խմբագրվել Poedit-ում:" msgid "Error opening file" msgstr "Նիշքը բացելու սխալ" msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "Փոխարենը խնդրում ենք բացել եւխմբագրել համապատասխան PO նիշքը: Երբ պահպանեք " "այն՝ MO նիշքը կթարմացվի:" msgid "don’t delete temporary files (for debugging)" msgstr "չջնջել ժամանակավոր նիշքերը (վրիպազերծելու համար)" msgid "handle a poedit:// URI" msgstr "handle a poedit:// URI" msgid "go to item at given line number" msgstr "անցնել միույթի՝ տողի տրված համարով" msgid "Failed to communicate with Poedit process." msgstr "Հնարավոր չէ հաղորդակցել Poedit-ի ընթացքը:" #, c-format msgid "Unhandled exception occurred: %s" msgstr "Անհայտ բացառություն. %s" msgid "Select translation template" msgstr "Ընտրել թարգմանության ձեւանմուշը" msgid "Select translation file" msgstr "Ընտրել թարգմանության նիշքը" msgid "Poedit is an easy to use translation editor." msgstr "Poedit-ը թարգմանությունների դյուրին խմբագիր է:" msgid "You can’t drop more than one file on Poedit window." msgstr "Չեք կարող գցել մեկ նիշքից ավելի Poedit-ի պատուհանում:" #, c-format msgid "File “%s” is not a translation file." msgstr "“%s” նիշքը թարգմանության նիշք չէ:" #, c-format msgid "File “%s” doesn’t exist." msgstr "«%s» նիշքը գոյություն չունի:" 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". #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "" "Ուղղագրության ստուգումը անջատված է, քանի որ բառարանը %s-ի համար տեղադրված չէ:" msgid "Install" msgstr "Տեղադրել" #, c-format msgid "The file “%s” has been changed by another application." msgstr "«%s» նիշքը փոխվել է այլ ծրագրի կողմից:" msgid "Reload file" msgstr "Կրկին Բեռնել Նիշքը" msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "Ցանկանո՞ւմ եք կրկին բեռնել նիշքը հիշասարքից: Այդ դեպքում Poedit-ում " "չպահպանված խմբագրումները կկորցնեք:" msgid "Ignore" msgstr "Անտեսել" msgid "Reload File" msgstr "Կրկին Բեռնել Նիշքը" msgid "The file has been modified. Do you want to save changes?" msgstr "Նիշքը փոփոխվել է: Պահե՞լ փոփոխությունները:" msgid "Save changes" msgstr "Պահել փոփոխությունները" msgid "Your changes will be lost if you don’t save them." msgstr "Եթե չպահպանեք փոփոխությունները, ապա կկորցնեք դրանք:" msgid "Save" msgstr "Պահել" msgid "Do&n’t save" msgstr "Չ&պահել" msgid "Don’t Save" msgstr "Չպահել" msgid "The changes made by the other application will be lost if you save." msgstr "Պահելու դեպքում այլ ծրագրի կողմից կատարված փոփոխությունները կկորցնեք:" msgid "Cancel" msgstr "Չեղարկել" msgid "Save Anyway" msgstr "Այդուհանդերձ, պահել" msgid "Save anyway" msgstr "Այդուհանդերձ, պահել" msgid "Save as…" msgstr "Պահել որպես…" msgid "Compile to…" msgstr "Կազմարկել առ՝" msgid "Compiled Translation Files" msgstr "Թարգմանության կազմարկված նիշքեր" msgid "Export to HTML…" msgstr "" msgid "HTML Files" msgstr "HTML նիշքեր" #, c-format msgid "In: %s" msgstr "%s-ում" msgid "Source code not available." msgstr "Սկզբնական կոդը հասանելի չէ" msgid "Updating failed" msgstr "Թարմացումը ձախողվեց" 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 "" "Թարգմանությունները չեն կարող թարմացվել սկզբնական այլագրից, քանի որ այն չի " "գտնվել նիշքի հատկություններում:" msgid "Permission denied." msgstr "Թույլտվությունը մերժված է" 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. 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. msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "Եթե նախկինում մերժում եք ստացել մատչելու ձեր նիշքերը, ապա կարող եք " "թույլատրել այն Համակարգի նախապատվություններ > Անվտանգություն եւ " "Գաղտնիություն > Գաղտինիություն > Նիշք եւ պանակներ-ում:" msgid "Translation entries in the file are probably incorrect." msgstr "Թարգմանության գրառումները նիշքում, հնարավոր է, սխալ են:" msgid "Updating the file failed. Click on 'Details >>' for details." msgstr "" "Նիշքի թարմացումը ձախողվեց: Մանրամասնելու համար սեղմեք 'Մանրամասներ »»':" msgid "Open translation template" msgstr "Բացել թարգմանության ձեւանմուշը" #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "%d խնդիր է հայտնաբերվել թարգմանությունում:" msgstr[1] "%d խնդիրներ են հայտնաբերվել թարգմանությունում:" msgid "Validation results" msgstr "Վավերացման արդյունքներ" msgid "" "Entries with errors were marked in red in the list. Details of the error " "will be shown when you select such an entry." msgstr "" "Սխալներով գրառումները ցանկում նշված են կարմիր գույնով: Սխալի մանրամասները " "կցուցադրվեն, երբ ընտրեք գրառումը:" msgid "The file was saved safely." msgstr "Նիշքը անվտանգ պահպանվել է:" msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "Նիշքը անվտանգ պահպանվել է եւ կազմարկվել է MO ձեւաչափի, բայց հնարավոր է " "նորմալ չաշխատի:" msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "Նիշքը անվտանգ պահպանվել է, բայց չի կարող կազմարկվել MO ձեւաչափի եւ " "օգտագործվել:" msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "Նիշքը կազմարկվել է MO ձեւաչափի, բայց հնարավոր է նորմալ չաշխատի:" msgid "The file cannot be compiled into the MO format and used." msgstr "Նիշքը հնարավոր չէ կազմարկել MO ձեւաչափի եւ օգտագործել:" msgid "No problems with the translation found." msgstr "Թարգմանության հետ կապված խնդիրներ չկան:" #, 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 գրառումներ դեռ " "թարգմանված չեն:" msgid "The translation is ready for use." msgstr "Թարգմանությունը պատրաստ է:" #, c-format msgid "Poedit automatically fixed invalid content in the file “%s”." msgstr "Poedit-ը ինքնաբար ուղղել է սխալ բովանդակությունը «%s» նիշքում:" msgid "" "The file contained duplicate items, which is not allowed in PO files and " "would prevent the file from being used. Poedit fixed the issue, but you " "should review translations of any items marked as needing work and correct " "them if necessary." msgstr "" "Նիշքը պարունակում է կրկնօրինակ միույթներ, որոնք թույլատրված չեն PO նիշքերում " "եւ կարող են կանխել նիշքի օգտագործումը: Poedit-ը ուղղել է այդ խնդիրը, բայց " "դուք պետք է ստուգեք թարգմանությունները, որոնք նշված են որպես ոչ վերջնական եւ " "անհրաժեշտության դեպքում ուղղեք դրանք:" msgid "Language of the translation isn’t set." msgstr "Թարգմանության լեզուն նշված չէ:" msgid "Set Language" msgstr "Նշել լեզուն" msgid "Set language" msgstr "Նշել լեզուն" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." msgid "" "Suggestions are not available if the translation language is not set " "correctly. Other features, such as plural forms, may be affected as well." msgstr "" "Առաջարկությունները հասանելի չեն, եթե թարգմանվող լեզուն նորմալ նշված չէ: Այլ " "յուրահատկություններ, ինչպես օրինակ՝ հոգնակի ձեւերը, կարող են ազդվել:" msgid "Language of the translation is the same as source language." msgstr "Թարգմանության լեզուն նույնն է, ինչ սկզբնականը:" msgid "Fix Language" msgstr "Ուղղել լեզուն" msgid "Fix language" msgstr "Ուղղել լեզուն" msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "Այս նիշքը հոգնակի թվով գրառումներ ունի, բայց կազմաձեւված չէ հոգնակի ձեւի " "էջագլուխը:" msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "Այս նիշքում գրառումները ունեն այլ ձեւ, քան ասված է նիշքի հոգնակի ձեւերի " "էջագլխում" msgid "Required header Plural-Forms is missing." msgstr "Պահանջվող հոգնակի ձեւի գլխագիրը բացակայում է" #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Շարահյուսական սխալ հոգնակի ձեւերի գլխագրում (\"%s\"):" msgid "Fix the Header" msgstr "Ուղղել գլխագիրը" 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". #, 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.")" msgid "Review" msgstr "Վերանայել" msgid "Would you like to use English for source text?" msgstr "Կցանկանա՞ք օգտագործել անգլերենը սկզբնաղբյուր տեքստի համար:" #, 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" msgid "Load English" msgstr "Բեռնել անգլերեն" #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Թարգմանված է՝ %d-ը %d-ից (%d %%)" #, c-format msgid "Remaining: %d" msgstr "Մնում է՝ %d" #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d սխալ" msgstr[1] "%d սխալ" #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d գրառում" msgstr[1] "%d գրառում" msgid " (unsaved)" msgstr "(չպահված)" msgid " (modified)" msgstr "(փոփոխված)" #, c-format msgid "Failed to update translation memory: %s" msgstr "Հնարավոր չեղավ թարմացնել թարգմանության հիշողությունը. %s" msgid "Remove same-as-source translations" msgstr "" msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" msgid "Keep" msgstr "Պահել" msgid "Remove" msgstr "" msgid "Purge deleted translations" msgstr "Մաքրել ջնջված թարգմանությունները" msgid "Do you want to remove all translations that are no longer used?" msgstr "Հեռացնե՞լ բոլոր թարգմանությունները, որոնք այլեւս չեն օգտագործվում:" 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 "" "Եթե շարունակեք մաքրել, ապա նշված բոլոր թարգմանությունները կջնջվեն անվերադարձ:" msgid "Purge" msgstr "Մաքրել" msgid "Copy from source text" msgstr "Պատճենել սկզբնական գրվածքից" 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 msgid "Ctrl+" msgstr "Ctrl+" msgid "Clear translation" msgstr "Մաքրել թարգմանությունը" msgid "Clear Translation" msgstr "Մաքրել թարգմանությունը" msgid "Edit comment" msgstr "Խմբագրել մեկնաբանությունը" msgid "Edit Comment" msgstr "Խմբագրել մեկնաբանությունը" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code Occurrences" msgstr "Այլագրի դեպքեր" #. TRANSLATORS: Meaning occurrences of the string in source code msgid "Code occurrences" msgstr "Այլագրի դեպքեր" msgid "Hide Sidebar" msgstr "Թաքցնել կողագոտին" msgid "Show Sidebar" msgstr "Ցուցադրել կողագոտին" msgid "Hide Status Bar" msgstr "Թաքցնել Վիճակի գոտին" msgid "Show Status Bar" msgstr "Ցուցադրել Վիճակի գոտին" msgid "String length in characters: translation | source" msgstr "Տողի երկարությունը նիշերով. թարգմանություն | աղբյուր" msgid "String length in characters" msgstr "Տողի երկարությունը նիշերով" msgid "Source text" msgstr "Սկզբնական գրվածք" msgid "Singular" msgstr "Եզակի" msgid "Plural" msgstr "Հոգնակի" msgid "Translation" msgstr "Թարգմանություն" msgid "Pre-translated" msgstr "Նախաթարգմանված" 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. msgid "Needs work" msgstr "Վերջնական չէ" msgid "" "POT files are only templates and don’t contain any translations themselves.\n" "To make a translation, create a new PO file based on the template." msgstr "" "POT նիշքերը միայն նմուշներ են եւ չեն պարունակում որեւէ թարգմանություն:\n" "Թարգմանություն ստեղծելու համար ստեղծեք նոր PO նիշք:" msgid "Create new translation" msgstr "Ստեղծել նոր թարգմանություն" msgid "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 msgid "Source text ID" msgstr "Աղբյուրի տեքստի ID" msgid "Everything" msgstr "Ամենը" #, c-format msgid "Form %i" msgstr "%i-ից" #, c-format msgid "Form %i (unused)" msgstr "Ձեւ %i (չօգտագործված)" msgid "Zero" msgstr "Զրո" msgid "One" msgstr "Մեկ" msgid "Two" msgstr "Երկու" msgid "Other" msgstr "Այլ" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #, c-format msgid "String context: %s" msgstr "Լարի համատեքստ՝ %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #, c-format msgid "String identifier: %s" msgstr "Լարի նույնացուցիչ՝ %s" #, c-format msgid "%s Format" msgstr "%s ձեւաչափ" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #, c-format msgid "%s format" msgstr "%s ձեւաչափ" #, c-format msgid "Translation — %s" msgstr "Թարգմանություն՝ — %s" msgid "ID" msgstr "ID" #, c-format msgid "Source text — %s" msgstr "Սկզբնական գրվածք՝— %s" msgid "unknown language" msgstr "անհայտ լեզու" #, c-format msgid "Network error: %s (%d)" msgstr "" msgid "Unknown error" msgstr "" #, c-format msgid "Failed command: %s" msgstr "Ձախողված հրաման. %s" msgid "Failed to merge gettext catalogs." msgstr "Հնարավոր չեղավ ձուլել gettext գրացուցակները:" msgid "Open in Editor" msgstr "Բացել Խմբագրիչով" msgid "Open in editor" msgstr "Բացել Խմբագրիչով" msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" "Չկա տեղեկություն այս տողերի դեպքերի համար նիշքում տրամադրված սկզբնական " "կոդում:" msgid "No usage information" msgstr "Չկա օգտագործման տեղեկություն" #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d կոդի դեպք" msgstr[1] "%d կոդի դեպքեր" msgid "Source code not found" msgstr "Մեկնարկային կոդը չի գտնվել" 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-ը չի կարող ցուցադրել սկզբնական կոդը, որտեղ օգտագործված է տողը, քանի " "որ նիշքը կամ մատչելի չէ հղվող տեղում, կամ այն նշանային հղում է, որը չի " "մատնանշում իրական նիշքի:" msgid "File cannot be opened" msgstr "Նիշքը հնարավոր չէ բացել" #, c-format msgid "Poedit was unable to open the “%s” file." msgstr "Poedit-ը չկարողացավ բացել “%s” նիշքը:" msgid "Find" msgstr "Գտնել" msgid "Replace" msgstr "Փոխարինել" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) msgid "Options" msgstr "Ընտրանքներ" msgid "Ignore case" msgstr "Անտեսել գրանցատեղին" msgid "Wrap around" msgstr "Ծալել շուրջը" msgid "Whole words only" msgstr "Միայն ամբողջ բառը" msgid "Find in source texts" msgstr "Գտնել սկզբնական գրվածքում" msgid "Find in translations" msgstr "Գտնել թարգմանություններում" msgid "Find in comments" msgstr "Գտնել մեկնաբանություններում" msgid "Close" msgstr "Փակել" msgid "Replace &All" msgstr "Փոխարինել &բոլորը" msgid "Replace &all" msgstr "Փոխարինել &բոլորը" msgid "&Replace" msgstr "&Փոխարինել" msgid "< &Previous" msgstr "« &Նախորդ" msgid "&Next >" msgstr "&Հաջորդ »" msgid "String to find" msgstr "Ինչ փնտրել" msgid "Replacement string" msgstr "Ինչով փոխարինել" #, c-format msgid "Cannot execute program: %s" msgstr "Հնարավոր չէ կատարել %s ծրագիրը" #. TRANSLATORS: placeholder/hint in language controls msgid "Language name or code" msgstr "Լեզվի անունը կամ կոդը" msgid "Translation Language" msgstr "Թարգմանության լեզուն" msgid "Language of the translation:" msgstr "Թարգմանության լեզուն՝" msgid "All strings" msgstr "Բոլոր տողերը" msgid "Couldn’t download Localazy project details." msgstr "Անհնար է ներբեռնել Localazy նախագծի մանրամասները:" msgid "There was an error when uploading translations to Localazy." msgstr "Սխալ՝ թարգմանությունները Localazy ներբեռնելիս:" msgid "Projects" msgstr "Նախագծեր" msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Localazy-ը վերին աստիճան ինքնաշխատ տեղայնացման հարթակ է, որը ցանկացած անձի " "հնարավորություն է տալիս հեշտությամբ թարգմանել իր արտադրանքը և " "բովանդակությունը տարբեր լեզուներով:" msgid "Add Project" msgstr "Հավելել նախագիծ" msgid "Add project" msgstr "Հավելել նախագիծ" msgid "Poedit - Catalogs manager" msgstr "Poedit-ի Գրացուցակների կառավար" msgid "Edit…" msgstr "Խմբագրել…" msgid "Create new translations project" msgstr "Ստեղծել թարգմանության նոր նախագիծ" msgid "Delete the project" msgstr "Ջնջել նախագիծը" msgid "Edit the project" msgstr "Խմբագրել նախագիծը" msgid "Update all" msgstr "Թարմացնել բոլորը" msgid "Update all catalogs in the project" msgstr "Թարմացնել բոլոր գրացուցակները նախագծում" msgid "Total" msgstr "Ընդամենը" msgid "Untrans" msgstr "Չթարգմանված" msgctxt "column/row header" msgid "Needs Work" msgstr "Վերջնական չէ" msgid "Errors" msgstr "Սխալներ" msgid "Last modified" msgstr "Վերջին փոփոխումը" msgid "Select directory" msgstr "Ընտրել գրացուցակը" msgid "Directories:" msgstr "Գրացուցակներ." msgid "" msgstr "<անանուն>" #, c-format msgid "Do you want to delete project “%s”?" msgstr "Ցանկանո՞ւմ եք ջնջել “%s” նախագիծը:" msgid "Delete project" msgstr "Ջնջել նախագիծը" msgid "Deleting the project will not delete any translation files." msgstr "Ծրագիրը ջնջելով՝ թարգմանության որեւէ նիշքեր չեն ջնջվի։" msgid "Confirmation" msgstr "Հաստատում" msgid "Update all catalogs in this project?" msgstr "Արդիականացնե՞լ բոլոր գրացուցակները այս նախագծում։" msgid "Performs update from source code on all files in the project." msgstr "Ծրագրի բոլոր նիշքերի վրա կատարում է արդիացում աղբյուրի այլագրից:" msgid "Check for Updates…" msgstr "Ստուգել թարմացումները…" msgid "Catalogs Manager" msgstr "Գրացուցակների կառավար" msgid "&Preferences…" msgstr "&Նախապատվություններ…" msgid "&Edit" msgstr "&Խմբագրել" msgid "Undo" msgstr "Հետարկել" msgid "Redo" msgstr "Վերարկել" msgid "Paste and Match Style" msgstr "Տեղադրել եւ ըստ ոճի" msgid "Delete" msgstr "Ջնջել" msgid "Spelling and Grammar" msgstr "Ուղղագրություն եւ քերականություն" msgid "Show Spelling and Grammar" msgstr "Ցուցադրել ուղղագրությունը եւ քերականությունը" msgid "Check Document Now" msgstr "Ստուգել փաստաթուղթը" msgid "Check Spelling While Typing" msgstr "Ստուգել ուղղագրոթյունը մուտքագրելիս" msgid "Check Grammar With Spelling" msgstr "Ստուգել քերականությունը մուտքագրելիս" msgid "Correct Spelling Automatically" msgstr "Ինքնաբար ուղղել" msgid "Substitutions" msgstr "Փոխարինումներ" msgid "Show Substitutions" msgstr "Ցուցադրել փոխարինումները" msgid "Smart Copy/Paste" msgstr "Խելացի պատճենում/տեղադրում" msgid "Smart Quotes" msgstr "Խելացի ծելաաչակերտներ" msgid "Smart Dashes" msgstr "Խելացի գծեր" msgid "Smart Links" msgstr "Խելացի հղումներ" msgid "Text Replacement" msgstr "Գրվածքի փոխարինում" msgid "Transformations" msgstr "Փոխակերպում" msgid "Make Upper Case" msgstr "Դարձնել մեծատառ" msgid "Make Lower Case" msgstr "Դարձնել փոքրատառ" msgid "Capitalize" msgstr "Գլխատառացել" msgid "Speech" msgstr "Խոսք" msgid "Start Speaking" msgstr "Սկսել արտասանել" msgid "Stop Speaking" msgstr "Ընդհատել արտասանումը" msgid "&View" msgstr "&Տեսք" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Show Toolbar" msgstr "Ցուցադրել Գործիքագոտին" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Customize Toolbar…" msgstr "Կարգավորել գործիքագոտին..." #. TRANSLATORS: This must be the same as OS X's translation of this View menu item msgid "Enter Full Screen" msgstr "Լրաէկրան" msgid "Window" msgstr "Պատուհան" msgid "Minimize" msgstr "Նվազեցնել" msgid "Zoom" msgstr "Չափորոշել" msgid "Welcome to Poedit" msgstr "Բարի գալուստ Poedit" msgid "Bring All to Front" msgstr "Պահել բոլորը առջեւում" msgid "Information about the translator" msgstr "Տեղեկություններ թարգմանողի մասին" msgid "Name:" msgstr "Անուն՝" msgid "Your Name" msgstr "Ձեր անունը" msgid "Email:" msgstr "Էլ. փոստ՝" msgid "you@example.com" msgstr "դուք@օրինակ.հայ" msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "Ձեր անունը եւ էլ. փոստը օգտագործվելու են միայն GNU gettext նիշքերի " "գլխագրերում՝ ցուցադրելու վերջին թարգմանողին:" msgid "Editing" msgstr "Խմբագրում" msgid "Automatically compile MO file when saving" msgstr "Պահելիս ինքնաբար կազմարկել MO նիշք" msgid "Show summary after updating files" msgstr "Ֆայլերը թարմացնելուց հետո ցուցադրել ամփոփումը" msgid "Check spelling" msgstr "Ստուգել ուղղագրությունը" msgid "Always change focus to text input field" msgstr "Դաշտը միշտ ակտիվ դարձնել՝ գրվածք մուտքագրելու համար" msgid "" "Never let the list of strings take focus. If enabled, you must use Ctrl-" "arrows for keyboard navigation but you can also type text immediately, " "without having to press Tab to change focus." msgstr "" "Երբեք ակտիվ չի դարձնի տողերով ցանկերը: Եթե միացված է, ապա պետք է օգտագործեք " "ստեղնաշարի Ctrl+սլաքները, կարող եք նաեւ մուտքագրել անմիջապես՝ առանց Tab-ի " "միջոցով առաջնահերթությունը փոխելու:" msgid "Appearance" msgstr "Տեսք" msgid "Use custom list font:" msgstr "Ցանկի տառատեսակը." msgid "Use custom text fields font:" msgstr "Գրվածքի տառատեսակը." msgid "Change UI language" msgstr "Փոխել OՄ-ի լեզուն (Օգտվողի Միջերես)" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions msgid "(requires Windows 8 or newer)" msgstr "(պահանջում է Windows 8 կամ ավելի նորը)" msgid "General" msgstr "Գլխավոր" msgid "Use translation memory" msgstr "Օգտ. թարգմանության հիշողությունը" msgid "Manage…" msgstr "Կառավարել…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" msgid "When updating from sources" msgstr "Սկզբնականից արդիացնելիս" #. TRANSLATORS: Preceded by "When updating from sources" msgid "fuzzy match within the file" msgstr "ոչ վերջնականի համընկնում նիշքում" #. TRANSLATORS: Preceded by "When updating from sources" msgid "pre-translate from TM" msgstr "նախաթարգմանել TM-ից" 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-ի " "օգտագործումը արդյունավետ չի լինի, եթե այն գրեթե դատարկ է, բայց կլավարկվի " "թարգմանություններ ավելացնելու ընթացքում:" msgid "Stored translations:" msgstr "Պահված թարգմանություններ՝" msgid "Database size on disk:" msgstr "Շտեմարանի չափը՝" msgid "Import Translation Files…" msgstr "Ներմուծել թարգմանության ֆայլերը…" msgid "Import translation files…" msgstr "Ներմուծել թարգմանության ֆայլերը…" msgid "Import From TMX…" msgstr "Ներմուծել TMX-ից…" msgid "Import from TMX…" msgstr "Ներմուծել TMX-ից…" msgid "Export To TMX…" msgstr "Արտահանել TMX…" msgid "Export to TMX…" msgstr "Արտահանել TMX…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). msgid "Reset" msgstr "Վերակայել" msgid "Select translation files to import" msgstr "Ընտրեք ներմուծվող նիշքերը" msgid "Translation Memory" msgstr "Թարգմանության հիշողություն (ԹՀ)" msgid "Importing translations…" msgstr "Թարգմանությունների ներմուծում…" #, c-format msgid "Error loading translation file “%s”." msgstr "Սխալ՝ “%s” նիշքը բեռնելիս:" msgid "Finalizing…" msgstr "Ամփոփում…" msgid "Select TMX files to import" msgstr "Ընտրեք TMX ֆայլերը՝ ներմուծելու համար" msgid "TMX Files" msgstr "TMX նիշքեր" #, c-format msgid "Importing translation memory from “%s” failed." msgstr "Թարգմանության հիշողության ներմուծումը «%s»-ից ձախողվեց:" msgid "Import error" msgstr "Ներմուծելու սխալ" msgid "Export as…" msgstr "Արտահանել որպես…" msgid "Exporting translations…" msgstr "Թարգմանությունների արտահանում…" #, c-format msgid "Exporting translation memory to “%s” failed." msgstr "Թարգմանության հիշողության արտահանումը “%s” ձախողվեց:" msgid "Export error" msgstr "Արտահանելու սխալ" msgid "Reset translation memory" msgstr "Վերակայել թարգմանության հիշողությունը" msgid "Are you sure you want to reset the translation memory?" msgstr "Վերակայե՞լ թարգմանության հիշողությունը" 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. msgid "TM" msgstr "ԹՀ" msgid "" "Source code extractors are used to find translatable strings in the source " "code files and extract them so that they can be translated." msgstr "" "Սկզբնական կոդի արտահանիչները օգտագործվում են գտնելու թարգմանվող տողեր " "սկզբնական կոդի նիշքերում եւ դուրս բերելու դրանք, որպեսզի հնարավոր լինի " "թարգմանել:" msgid "Custom Extractors:" msgstr "Ընտրովի դուրս բերում." msgid "Custom extractors:" msgstr "Ընտրովի դուրս բերում." msgid "GNU gettext" msgstr "GNU gettext" 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 եւ այլն):" msgid "Delete extractor" msgstr "Ջնջել արտահանիչը" #, c-format msgid "Are you sure you want to delete the “%s” extractor?" msgstr "Ջնջե՞լ “%s” արտահանիչը:" msgid "Extractors" msgstr "Արտահանիչներ" msgid "Accounts" msgstr "Հաշիվներ" msgid "Automatically check for updates" msgstr "Ինքնաբար ստուգել թարմացումները" msgid "Include beta versions" msgstr "Ներառյալ բետա վարկածը" msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "Բետա վարկածը պարունակում է ամենավերջին յուրահատկությունները եւ " "լավարկումները, բայց կարող է կայուն չաշխատել:" msgid "Updates" msgstr "Թարմացումներ" msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Այս կարգավորումները վերաբերում են PO ֆայլերի ներքին ձևաչափմանը: Հարմարեցրեք " "դրանք, եթե ունեք որոշակի պահանջներ, ինչպես օրինակ՝ տարբերակի կառավարում:" msgid "Line endings:" msgstr "Տողի ավարտ." msgid "Unix (recommended)" msgstr "Unix (խորհուրդ է տրվում)" msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width msgid "Wrap at:" msgstr "Տողադարձը՝" msgid "Preserve formatting of existing files" msgstr "Պահել առկա նիշքերի ձեւաչափումը" msgid "Advanced" msgstr "Ընդլայնված" msgid "Settings" msgstr "" msgid "Preparing strings…" msgstr "Տողերի նախապատրաստում…" msgid "Pre-translating from translation memory…" msgstr "Նախաթարգմանություն թարգմանության հիշողությունից…" #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "Նախաթարգմանված %u տող" msgstr[1] "Նախաթարգմանված %u տողեր" msgid "Pre-translating…" msgstr "Նախաթարգմանություն..." 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. msgid "Pre-translate" msgstr "Նախաթարգմանել" msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "Նախաթարգմանությունը պահանջում է, որ մատչելի լինի սկզբնական գրվածքը: Այն չի " "աշխատի, եթե իրական գրվածքի փոխարեն օգտագործվեն միայն ID-ներ:" msgid "Cannot pre-translate from unknown language." msgstr "Հնարավոր չէ նախաթարգմանել անհայտ լեզվից:" msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Նախաթարգմանությունը պահանջում է, որ սկզբնական գրվածքի լեզուն հայտնի լինի: " "Poedit-ը չի կարողանում հայտնաբերել այն տվյալ ֆայլում:" msgid "Only fill in exact matches" msgstr "Լցնել միայն ճիշտ համընկնումներով" msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "Սկզբնադիր ոչ ճիշտ արդյունքները նույնպես ներառված են, բայց նշված որպես ոչ " "վերջնական: Ընտրեք այս ընտրանքը՝ միայն ճիշտ համընկնումները ներառելու հանար:" msgid "Don’t mark exact matches as needing work" msgstr "Չնշել ճիշտ համընկնումները որպես ոչ վերջնական" 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-ից բոլոր " "համընկնումները կնշվեն որպես ոչ վերջնական աշխատանք եւ պետք է ստուգվեն:" msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "Նախաթարգմանությունը ինքնաբար գտնում է ճիշտ կամ ոչ վերջնական համընկնումները " "չթարգմանված տողերի համար թարգմանության հիշողությունում եւ լցնում է դրանց " "թարգմանություններում:" #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%d գրառումը նախաթարգմանվել է:" msgstr[1] "%d գրառումները նախաթարգմանվել են:" msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "Թարգմանությունները նշվել են որպես ոչ վերջնական, քանի որ դրանք, հնարավոր է, " "ճիշտ չեն: Դուք պետք է ստուգեք դրանք:" msgid "No entries could be pre-translated." msgstr "Նախաթարգմանելու համար գրառումներ չկան" msgid "" "The TM doesn’t contain any strings similar to the content of this file. It " "is only effective for semi-automatic translations after Poedit learns enough " "from files that you translated manually." msgstr "" "ԹՀ-ը չի պարունակում այս բովանդակությանը համապատասխանող որեւէ տող: Սա օգտակար " "է ինքնաբար թարգմանելու համար, եթե միայն Poedit-ը սովորում է մեծ քանակությամբ " "թարգմանություններ, որոնք դուք ձեռքով եք կատարել:" msgid "Cancelling…" msgstr "Չեղարկում…" msgid "Drag Folders or Files Here" msgstr "Գցել պանակները կամ նիշքերը այստեղ" msgid "Drag folders or files here" msgstr "Գցել պանակները կամ նիշքերը այստեղ" msgid "Add Folders…" msgstr "Հավելել թղթապանակներ…" msgid "Add folders…" msgstr "Հավելել թղթապանակներ…" msgid "Add Files…" msgstr "Հավելել նիշքեր…" msgid "Add files…" msgstr "Հավելել նիշքեր…" msgid "Add Wildcard…" msgstr "Հավելել դերանշան…" msgid "Add wildcard…" msgstr "Հավելել դերանշան…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) msgid "Reveal in Finder" msgstr "Բացահայտել Որոնիչում" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" msgid "Show in Explorer" msgstr "Ցուցադրել Նիշքախույզում" msgid "Show in Folder" msgstr "Ցուցադրել պանակում" msgid "Paths" msgstr "Ուղիներ" msgid "Excluded paths" msgstr "Բացառված ուղիներ" msgid "Advanced extraction settings" msgstr "Դուրս բերելու ընդլայնված կարգավորումներ" msgid "Extract notes for translators from:" msgstr "Դուրս բերել նշումները թարգմանիչների համար հետեւյալից՝" msgid "Comments prefixed with:" msgstr "Մեկնաբանություններ նախանծանցով՝" msgid "All comments" msgstr "Բոլոր մեկնաբանությունները" msgid "Additional xgettext flags:" msgstr "Լրացուցիչ xgettext դրոշակներ." msgid "Additional keywords" msgstr "Լրացուցիչ հիմնաբառեր" msgid "Name of the project the translation is for" msgstr "Թարգմանության նախագծի անունը" msgid "Team name and email address or URL" msgstr "Թիմի անունը եւ էլ. փոստը կամ URL-ն" msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "օրինակ՝ nplurals=2; plural=(n > 1);" msgid "UTF-8 (recommended)" msgstr "UTF-8 (խորհուրդ է տրվում)" msgid "Please save the file first. This section cannot be edited until then." msgstr "Խնդրում ենք նախ պահել նիշքը:" msgid "Placeholders correctness" msgstr "Տեղապահների ճիշտ օգտագործումը" #, c-format msgid "Placeholder “%s” is missing from translation." msgstr "Թարգմանության մեջ բացակայում է “%s” տեղապահը:" #, c-format msgid "Superfluous placeholder “%s” that isn’t in source text." msgstr "Լրացուցիչ “%s” տեղապահ, որը չկա բնօրինակ տեքստում:" msgid "Plural form translations" msgstr "Հոգնակի թվով թարգմանություններ" msgid "Not all plural forms are translated." msgstr "Ոչ բոլոր հոգնակի ձեւերն են թարգմանված:" msgid "Inconsistent upper/lower case" msgstr "Անհամապատասխան մեծա/փոքրատառ" msgid "The translation should start as a sentence." msgstr "Թարգմանությունը պետք է սկսի որպես նախադասություն:" msgid "The translation should start with a lowercase character." msgstr "Նախադասությունը պետք է սկսվի փոքրատառ գրանշանով:" msgid "Inconsistent whitespace" msgstr "Անհամապատասխան սպիտակ տարածք" msgid "The translation doesn’t start with a space." msgstr "Թարգմանությունը չի սկսվում բացատով:" msgid "The translation starts with a space, but the source text doesn’t." msgstr "Թարգմանությունը սկսվում է բացատով, բայց սկզբնական գրվածքը՝ ոչ:" msgid "The translation is missing a newline at the end." msgstr "Թարգմանությունում բաց է թողնված նոր տողը վերջում:" msgid "The translation ends with a newline, but the source text doesn’t." msgstr "Թարգմանությունը վերջանում է նոր տողով, բայց սկզբնական գրվածքը՝ ոչ:" msgid "The translation is missing a space at the end." msgstr "Թարգմանության վերջում բացակայում է բացատը:" msgid "The translation ends with a space, but the source text doesn’t." msgstr "Թարգմանությունը վերջանում է բացատով, բայց սկզբնական գրվածքը՝ ոչ:" msgid "Punctuation checks" msgstr "Կետադրության ստուգում" #, c-format msgid "The translation should end with “%s”." msgstr "Թարգմանությունը պետք է ավարտվի «%s»-ով:" #, c-format msgid "The translation should not end with “%s”." msgstr "Թարգմանությունը չպետք է ավարտվի «%s»-ով:" #, c-format msgid "The translation ends with “%s”, but the source text ends with “%s”." msgstr "" "Թարգմանությունը վերջանում է “%s”-ով, բայց սկզբնական գրվածքը վերջանում է “%s”-" "ով:" msgid "Cloud" msgstr "" msgid "Clear Menu" msgstr "Մաքրել ցանկը" msgid "Clear menu" msgstr "Մաքրել ցանկը" msgid "Comment:" msgstr "Մեկնաբանություն." msgid "Update" msgstr "Թարմացնել" msgid "&Delete" msgstr "&Ջնջել" msgid "Delete the comment" msgstr "Ջնջել մեկնաբանությունը" msgid "Edit project" msgstr "Խմբագրել նախագիծը" msgid "Project name:" msgstr "Նախագծի անունը." msgid "Browse" msgstr "Ընտրել" msgid "Add directory to the list" msgstr "Գրացուցակը հավելել ցանկում" msgid "OK" msgstr "Լավ" msgid "&File" msgstr "&Նիշք" msgid "&New…" msgstr "&Նոր…" msgid "New from &POT/PO file…" msgstr "Նոր &POT/PO նիշքից…" msgid "New From &POT/PO File…" msgstr "Նոր &POT/PO նիշքից…" msgid "&Open…" msgstr "&Բացել…" msgid "Open Recent" msgstr "Բացել վերջինը" msgid "Open recent" msgstr "Բացել վերջինը" msgid "Open cloud translation…" msgstr "Բացել ամպի թարգմանություն..." msgid "Open Cloud Translation…" msgstr "Բացել ամպի թարգմանություն..." msgid "&Start window" msgstr "&Մեկնարկային պատուհան" msgid "&Start Window" msgstr "&Մեկնարկային պատուհան" msgid "Catalogs &manager" msgstr "Գրացուցակների &կառավար" msgid "Catalogs &Manager" msgstr "Գրացուցակների &կառավար" msgid "&Close" msgstr "&Փակել" msgid "&Save" msgstr "&Պահել" msgid "Save &as…" msgstr "Պահել &որպես…" msgid "Save &As…" msgstr "Պահել &որպես…" msgid "Compile to MO…" msgstr "Կազմարկել MO-ի…" msgid "E&xport to HTML…" msgstr "" msgid "Check for updates…" msgstr "Ստուգել թարմացումները…" msgid "Settings…" msgstr "Կայանքներ…" msgid "&Preferences" msgstr "&Նախապատվություններ" msgid "E&xit" msgstr "Փ&ակել" msgid "Quit" msgstr "Փակել" msgid "Copy from singular" msgstr "Պատճենել հոգնակիից" msgid "Copy From Singular" msgstr "Պատճենել եզակիից" msgid "Translation needs &work" msgstr "Թարգմանությունը վերջնական &չէ" msgid "Translation Needs &Work" msgstr "Թարգմանությունը վերջնական &չէ" msgid "Edit &comment" msgstr "Խմբագրել &մեկնաբանությունը" msgid "Edit &Comment" msgstr "Խմբագրել &մեկնաբանությունը" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short msgid "Suggestions" msgstr "Առաջարկություններ" msgid "&Find…" msgstr "&Գտնել…" msgid "Replace…" msgstr "Փոխարինել…" msgid "Find next" msgstr "Գտնել հաջորդը" msgid "Find previous" msgstr "Գտնել նախորդը" msgid "Find and Replace…" msgstr "Գտնել եւ փոխարինել…" msgid "Find Next" msgstr "Գտնել հաջորդը" msgid "Find Previous" msgstr "Գտնել նախորդը" msgid "Show string &ID" msgstr "Ցուցադրել տողի &ID-ին" msgid "Show String &ID" msgstr "Ցուցադրել տողի &ID-ին" msgid "Show warnings" msgstr "Ցուցադրել զգուշացումները" msgid "Show Warnings" msgstr "Ցուցադրել զգուշացումները" msgid "Sort by &file order" msgstr "Խմբավորել ըստ &նիշքի կարգի" msgid "Sort by &File Order" msgstr "Խմբավորել ըստ &նիշքի կարգի" msgid "Sort by &source" msgstr "Խմբավորել ըստ &սկզբնականի" msgid "Sort by &Source" msgstr "Խմբավորել ըստ &սկզբնականի" msgid "Sort by &translation" msgstr "Խմբավորել ըստ &թարգմանության" msgid "Sort by &Translation" msgstr "Խմբավորել ըստ &թարգմանության" msgid "&Group by context" msgstr "&Խմբավորել ըստ համագրվածքի" msgid "&Group By Context" msgstr "&Խմբավորել ըստ համագրվածքի" msgid "Entries with errors first" msgstr "Նախ սխալներով գրառումները" msgid "Entries with Errors First" msgstr "Նախ սխալներով գրառումները" msgid "&Untranslated entries first" msgstr "&Նախ չթարգմանվածները" msgid "&Untranslated Entries First" msgstr "&Նախ չթարգմանվածները" msgid "&Show code occurrences" msgstr "&Ցուցադրել կոդի դեպքերը" msgid "&Show Code Occurrences" msgstr "&Ցուցադրել կոդի դեպքերը" msgid "Show sidebar" msgstr "Ցուցադրել կողագոտին" msgid "Show status bar" msgstr "Ցուցադրել վիճակի գոտին" msgid "&Translation" msgstr "&Թարգմանություն" msgid "&Update from source code" msgstr "&Արդիացնել սկզբնականից" msgid "&Update from Source Code" msgstr "&Արդիացնել սկզբնականից" msgid "Update from &POT file…" msgstr "Թարմացնել &POT նիշքից…" msgid "Update from &POT File…" msgstr "Թարմացնել &POT նիշքից…" msgid "Sync with Crowdin" msgstr "Հմժմ Crowdin-ի հետ" msgid "Pre-&translate…" msgstr "Նախա&թարգմանություն…" msgid "&Validate translations" msgstr "&Վավերացնել թարգմանությունները" msgid "&Validate Translations" msgstr "&Վավերացնել թարգմանությունները" msgid "Remove Same-as-Source Translations" msgstr "" msgid "&Purge deleted translations" msgstr "&Մաքրել ջնջված թարգմանությունները" msgid "&Purge Deleted Translations" msgstr "&Մաքրել ջնջված թարգմանությունները" msgid "&Properties…" msgstr "&Հատկություններ…" msgid "&Go" msgstr "&Անցնել" msgid "&Done and next" msgstr "&Պատրաստ է եւ հաջորդը" msgid "&Done and Next" msgstr "&Պատրաստ է եւ հաջորդը" msgid "Previously edited" msgstr "Նախկինում խմբագրված" msgid "Previously Edited" msgstr "Նախկինում Խմբագրված" msgid "&Previous translation" msgstr "&Նախորդ թարգմանությունը" msgid "&Previous Translation" msgstr "&Նախորդ թարգմանությունը" msgid "&Next translation" msgstr "&Հաջորդ թարգմանությունը" msgid "&Next Translation" msgstr "&Հաջորդ թարգմանությունը" msgid "P&revious unfinished" msgstr "Ն&ախորդ անավարտը" msgid "P&revious Unfinished" msgstr "Ն&ախորդ անավարտը" msgid "Ne&xt unfinished" msgstr "Հաջ&որդ անավարտը" msgid "Ne&xt Unfinished" msgstr "Հաջ&որդ անավարտը" msgid "Previous plural form" msgstr "Նախորդ հոգնակին" msgid "Previous Plural Form" msgstr "Նախորդ հոգնակին" msgid "Next plural form" msgstr "Հաջորդ հոգնակին" msgid "Next Plural Form" msgstr "Հաջորդ հոգնակին" msgid "&Online help" msgstr "&Առցանց օգնություն" msgid "&Online Help" msgstr "&Առցանց օգնություն" msgid "&GNU gettext manual" msgstr "&GNU gettext-ի ձեռնարկ" msgid "&GNU gettext Manual" msgstr "&GNU gettext-ի ձեռնարկ" msgid "&About Poedit" msgstr "Poedit-ի &մասին" msgid "&About" msgstr "&Ծրագրի մասին" msgid "Extractor setup" msgstr "Արտահանիչի կարգավորում" msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Ընդլայնումների ցուցակը՝ առանձնացված կետ-ստորակետով (օր.՝ *.cpp;*.h)." msgid "Invocation:" msgstr "Կանչ." msgid "Command to extract translations:" msgstr "Թարգմանությունները դուրս հանելու հրաման." 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-ը՝ կոդավորման դրոշակին (տես ստորեւ):" msgid "An item in keywords list:" msgstr "Միավոր՝ հիմնաբառերի ցանկում." msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Սա կկցվի հրամանի տողին մեկ անգամ՝\n" "յուրաքանչյուր ստեղնաշարի համար: %k-ը կավելացվի ստեղնաշարին:" msgid "An item in input files list:" msgstr "Միավորը ներածված նիշքերի ցանկում է." #, 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-ը կավելացվի նիշքի անվանը:" msgid "Source code charset:" msgstr "Սկզբնական կոդի գրանշանը՝" #, 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-ը կավելացվի կոդավորման արժեքին:" msgid "Translation Properties" msgstr "Թարգմանության հատկությունները" msgid "Project name and version:" msgstr "Նախագծի անունը եւ տարբեակը." msgid "Language team:" msgstr "Լեզվի թիմը." msgid "Plural forms:" msgstr "Հոգնակի ձեւեր." msgid "Use default rules for this language" msgstr "Օգտ. այս լեզվի ծրագրային կանոնները" msgid "Use custom expression" msgstr "Օգտ. հարմարեցված արտահայտություն" msgid "Learn about plural forms" msgstr "Մանրամասներ հոգնակի ձեւերի մասին" msgid "Charset:" msgstr "Այլագիրավորում." msgid "Advanced Extraction Settings…" msgstr "Դուրս բերելու ընդլայնված կարգավորումներ…" msgid "Advanced extraction settings…" msgstr "Դուրս բերելու ընդլայնված կարգավորումներ…" msgid "Translation properties" msgstr "Թարգմանության հատկություններ" msgid "Sources Paths" msgstr "Սկզբնականների ուղիները" msgid "Sources paths" msgstr "Սկզբնական ուղիներ" msgid "Extract text from source files in the following directories:" msgstr "Հանել գրվածքը սկզբնական նիշքից հետեւյալ տեղում՝" msgid "Base path:" msgstr "Հիմնական ուղին." msgid "Sources Keywords" msgstr "Սկզբնականների հիմնաբառերը" msgid "Sources keywords" msgstr "Սկզբնականի հիմնաբառեր" msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Օգտ. այս հիմնաբառերը (գործառույթի անունները)՝ ճանաչելու համար թարգմանվող " "տողերը\n" "սկզբնական նիշքում." msgid "Also use default keywords for supported languages" msgstr "Նաեւ օգտագործեք լռելյայն հիմնաբառեր՝ աջակցվող լեզուների համար" msgid "Learn about gettext keywords" msgstr "Մանրամասներ gettext հիմնաբառի մասին" msgid "Update summary" msgstr "Թարմացումների ամփոփում" msgid "" "These strings were found in the sources but were not in the file.\n" "Poedit will add them to the file now." msgstr "" "Այս տողերը գտնվել են աղբյուրներում, բայց ոչ նիշքում:\n" "nPoedit-ը այժմ դրանք կավելացնի նիշքում:" msgid "New strings" msgstr "Նոր տող" msgid "" "These strings are no longer in the source code.\n" "Poedit will remove them from the file now." msgstr "" "Այս տողերը այլեւս սկզբնական կոդում չեն:\n" "Poedit-ը այժմ դրանք կհեռացնի նիշքից:" msgid "Obsolete strings" msgstr "Հնացած տողեր" msgid "(0 new, 0 obsolete)" msgstr "(0 նոր, 0 հնացած)" msgid "Open" msgstr "" msgid "Open file" msgstr "Բացել նիշքը" msgid "Save file" msgstr "Պահել նիշքը" msgid "Validate" msgstr "Վավերացնել" msgid "Check for errors in the translation" msgstr "Ստուգել թարգմանության սխալները" msgid "Update from code" msgstr "Արդիացնել այլագրից" msgid "Update from Code" msgstr "Արդիացնել կոդից" msgid "Update from source code" msgstr "Արդիացնել սկզբնական կոդից" msgid "Sidebar" msgstr "Կողագոտի" msgid "Show or hide the sidebar" msgstr "Ցուցադրել կամ թաքցնել կողագոտին" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. msgid "Previous source text" msgstr "Նախորդ սկզբնական գրվածքը" msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "Հին սկզբնական գրվածքը (մինչեւ արդիացման ընթացքում դրա փոխվելը), որը այժմ ոչ " "ճիշտ է:" msgid "Notes for translators" msgstr "Նշում թարգմանողների համար" msgid "Comment" msgstr "Մեկնաբանություն" msgid "Add comment" msgstr "Հավելել մեկնաբանություն" msgid "Add Comment" msgstr "Հավելել մեկնաբանություն" msgid "Delete From Translation Memory" msgstr "Ջնջել Թարգմանության հիշողությունից" msgid "Delete from translation memory" msgstr "Ջնջել Թարգմանության հիշողությունից" msgid "Translation suggestions" msgstr "Թարգմանության առաջարկություններ" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). msgid "No matches found" msgstr "Չկան համապատասխանություններ" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). msgid "No Matches Found" msgstr "Չկան համապատասխանություններ" msgid "This string was found in Poedit’s translation memory." msgstr "Այս տողը գտնվել է Poedit-ի թարգմանության հիշողությունում:" msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "Նախաթարգմանությունը պահանջում է, որ մատչելի լինի սկզբնական գրվածքը: Այն չի " "աշխատի, եթե իրական գրվածքի փոխարեն օգտագործվեն միայն ID-ներ:" msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Թարգմանության առաջարկները պահանջում են, որ սկզբնական գրվածքի լեզուն հայտնի " "լինի: Poedit-ը չի կարողանում հայտնաբերել այն տվյալ ֆայլում:" msgid "The TMX file is malformed." msgstr "TMX նիշքը այլակերպված է" msgid "No translations were found in the TMX file." msgstr "Թարգմանություններ չկան TMX նիշքում:" #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Թարգմանության հիշողության շտեմարանը վնասված է՝ %s (%d):" #, c-format msgid "Translation memory error: %s (%d)." msgstr "Թարգմանության հիշողության սխալ. %s (%d):" msgid "Cannot create temporary directory." msgstr "Հնարավոր չեղավ ստեղծել ժամանակավոր գրացուցակ:" msgid "There are no translations. That’s unusual." msgstr "Թարգմանություններ չկան: Դա նորմալ չէ:" msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted\n" "from source code. This way, they stay up to date and accurate.\n" "Translators typically use PO template files (POTs) prepared for them by the " "developer." msgstr "" "Թարգմանելի գրառումները ձեռքով չեն ավելացվել Gettext համակարգում, բայց " "ինքնաբար դուրս են բերվել\n" "աղբյուր այլագրից: Այս ճանապարհով դրանք մնում են արդիացված եւ ճիշտ:\n" "Թարգմանիչները սովորաբար օգտագործում են PO ձեւանմուշի նիշքեր ((POT-եր), որոնք " "նրանց համար նախապատրաստվել են մշակողների կողմից:" msgid "(Learn more about GNU gettext)" msgstr "(Մանրամասներ GNU gettext-ի մասին)" msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "Թարգմանություններով այս նիշքը լրացնելու ամենապարզ ձեւը այն POT նիշքից " "թարմացնելն է." msgid "Update from POT" msgstr "Թարմացնել POT-ից" msgid "Take translatable strings from an existing POT template." msgstr "Վերցնել թարգմանվող տողերը առկա POT նմուշից:" msgid "" "You can also extract translatable strings directly from the source code:" msgstr "" "Կարող եք նաեւ հանել թարգմանվող տողերը անմիջականորեն սկզբնական այլագրից." msgid "Extract from sources" msgstr "Հանել սկզբնական այլագրից" msgid "Configure source code extraction in Properties." msgstr "Կազմաձեւել սկզբնական կոդի դուրս բերումը Հատկություններում:" #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #, c-format msgid "Version %s" msgstr "Վարկած՝ %s" msgid "Create new" msgstr "Ստեղծել նորը" msgid "Create new translation from POT template." msgstr "Ստեղծել նոր թարգմանություն POT ձեւանմուշից:" msgid "Browse files" msgstr "Դիտել նիշքերը" msgid "Open and edit translation files." msgstr "Բացել եւ խմբագրել թարգմանության նիշքերը:" msgid "Translate cloud project" msgstr "Թարգմանել ամպի նախագիծ" msgid "Collaborate with other people online." msgstr "Համագործակցել այլ մարդկանց հետ առցանց:" msgid "Recent files" msgstr "Վերջին նիշքերը" msgid "Sync" msgstr "Հմժմ" 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") #, c-format msgid "About %s" msgstr "%s-ի մասին" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #, c-format msgid "%s Preferences" msgstr "%s-ի նախապատվություններ" #. TRANSLATORS: macOS item in app menu msgid "Services" msgstr "Ծառայություններ" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Hide %s" msgstr "Թաքցնել %s-ը" #. TRANSLATORS: macOS item in app menu msgid "Hide Others" msgstr "Թաքցնել ուրիշները" #. TRANSLATORS: macOS item in app menu msgid "Show All" msgstr "Ցուցադրել բոլորը" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #, c-format msgid "Quit %s" msgstr "Փակել %s-ը" #. TRANSLATORS: macOS item in app menu msgid "Preferences…" msgstr "Նախապատվություններ…" msgid "Preferences..." msgstr "Նախապատվություններ..." #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Recent" msgstr "Վերջինը" #. TRANSLATORS: Title of a category in Windows task menu (right-click icon in taskbar) msgid "Frequent" msgstr "Հաճախակի" msgid "&Apply" msgstr "&Գործադրել" msgid "Apply" msgstr "Գործադրել" msgid "&Back" msgstr "&Հետ" msgid "Back" msgstr "Հետ" msgid "&Cancel" msgstr "&Չեղարկել" msgid "&Clear" msgstr "&Մաքրել" msgid "Clear" msgstr "Մաքրել" msgid "Copy" msgstr "Պատճենել" msgid "Cu&t" msgstr "Կտրե&լ" msgid "Cut" msgstr "Կտրել" msgid "Edit" msgstr "Խմբագրել" msgid "&Quit" msgstr "&Փակել" msgid "Help" msgstr "Օգնություն" msgid "&New" msgstr "&Նոր" msgid "New" msgstr "Նոր" msgid "&No" msgstr "&Ոչ" msgid "No" msgstr "Ոչ" msgid "&OK" msgstr "&Լավ" msgid "Open…" msgstr "Բացել…" msgid "&Open..." msgstr "&Բացել..." msgid "Open..." msgstr "Բացել..." msgid "&Paste" msgstr "&Տեղադրել" msgid "Paste" msgstr "Տեղադրել" msgid "Preferences" msgstr "Նախապատվություններ" msgid "&Redo" msgstr "&Կրկնակել" msgid "Refresh" msgstr "Թարմացնել" msgid "&Save as" msgstr "&Պահել որպես" msgid "Save as" msgstr "Պահել որպես" msgid "Select &All" msgstr "Նշել &բոլորը" msgid "Select All" msgstr "Նշել բոլորը" msgid "&Undo" msgstr "&Հետարկել" msgid "&Yes" msgstr "&Այո" msgid "Yes" msgstr "Այո" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Up" msgstr "Up" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Down" msgstr "Down" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Left" msgstr "Ձախ" #. TRANSLATORS: Keyboard shortcut for display in Windows menus msgid "Right" msgstr "Աջ" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" msgid "shift" msgstr "shift" poedit-3.5/locales/ar.mo0000644000175100001770000017673514664354152012207 00000000000000m,)6 6 6&67<37p7J7g7 68@8 O8Y8 `8n8u8{888888888888889"9(9-959=9O9a9e9 i9 v9999 999999:,:2:8:A:G:P:g: ~: : ::::::;.;E;K;P;d;;;;; ; ;;;<< < < ,<9<H< X< d<p< <<<<<<<=+=K= a=1n=='=== >>7>6M>>)>> >]>DLDRDWDjD}DDDDDDDEE%E;8E tE'E^E?F HF VFcF*vFFF"F5FG-GHGNG SG aG oG |G GGGGGGGfG=HWHuqH(HI#I"5IXI _IjIyI I II0IIJ#J<9J"vJJ JJ*J0J!#K'EKmKrKK(KTK %L3L 8L BLPLdLuLL L L L LLLL MM"M +M7M ?MJMOM WM cMpMMMMMfNzNiO pO|OO OOO2OP4P;PQPoP PP P PPP;P(!QJQgQzQ Q QQQ QQQR:R OR<]R.RRR*RS/S ?SIS`S*iSSSS S SSTTT TTTTT#U\*UU'U/U+UV$1V%VV|VVVVV=W XW dWW WWW WWWWWXXX2XGXaXXXY=YRY1eYYnYEZeZlZ;Z ZZZ@Z1['\,\,]A] S]a]2p]*]]] p^|^^^%^^^^_&_8_ R_`_i_|____8__ ___ ` ` `*` 2` ?`L` _`(j```z`-a>aEaKa Pa \a ha taa a a a a a aaaa"b5bQbpb yb b bbb bbbbb c c$c5cDc ]cjczc!c ccccc ccdd.d7d@d Qd ^d jdwddddddddee eee ee ffKfff{f fff1ff g g$g=ggqhvh(hh hh+hi i8i"ViyiiMjChj8jjk8tl1lRlc2mQmm'n:+nlfnPn-$oCRoAoKo0$p.Upp!q)5q-_q+q8qCqu6r,rLr]&ssZ tgetJt[utu7 vmXv_v[&wwwwx xxxxx7y2Jy"}yyyyyyzzz zzzzz z"z${9{R{k{|{{{{{{<{|/|$L|q|||||#|V}o}}} }}}}} ~~.~ G~S~\~t~Hx~5~m~7e 3a=BGKh.m ـ&,=V!f +bӄ6J;V݇ ʼn ׉    $ . 8#B#f $$Њ  9 G Q^"r" ʋ "2"I"l--̌  $!5:W ΍6ڍ6Hf..#B)Y0%*ڏ -7@ Q\pڐ/4Ol6# ߑ/,/I$yp)J.3y= 0<41q5ٔ'WO8a Ɩ4*AWv ԗ""11"c/#ژ -C]f|0)Ù , 7K$^H̚՚'''כ$3D"x3Μ),FLTs%3%"%<bx?,$Kџ/ AVb ڠ)C 4Q4 šС :Rj {$Ӣ)o)ã2\#'Ӥ #8Rd8ҥ 4jH41/Fa71(;*dn 9"R"u ک(<Xt&˪ ު "(8a+5Ӭ ~ +Ů++:W",ׯ'$,QZw 7(+A \jU|'ұ69pVyвaQM++˳8'0X t'? )))S-iS4(R({7pf8zC=A5-w1!׹ $-33.K&z ̻  $ .;)D)n׼q$xb$(Mas f$qg 3#ZW KKW0!*? `{\k}%<((!Ji%", I THb , ANgA"+EUh*91k"(98r(!"86U((86Ppw!2 20 9F]s$((:V.t0~* .B.^ N#9$O%tD(U= )1Fx2G*DJUV t"U3!E8Tamr,% ?3s[7vglYF9$^168:o18cy;RbWZ1CPuyVXgy|+"3K'gIF/<'l  7* 3>8RS3Q3c%in--(*.*Y79( 2+Kw [ %A{HE H35B)E+oB'FMS!g3mUlQj"9S2Rq?~ h*YD5bc90X5Kz n%YO]"Hu~}z9g AJ)_{I4" oWp&/p?XUl]`bfVU7;H7J3wrBIa$i!v OyaV G}eZ6gcj>i-|CokMLhn/^E8;+,L(F EM3_-G+r;:`tNPsTb[eFu#Q]CYK=T(Z<rv{a$ %6q |:x[Nu#I &tg-|:0 *k2C ylw6(B}^.,! 'Tht.qJ4&.d!c>HOZ{?7jLmm4$>\@ #S2'*~Q\5WoF=%AS'1`peA@NGX=M)03/ fDw @<k 81vnDsf1PRx8<)[sEdRi,d\KW+ VBP_x^yz (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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd AccountAdd CommentAdd Files…Add Folders…Add Wildcard…Add accountAdd 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 languagesAlt+Always 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 errorCtrl+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 no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownDownloading 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:EnterEnter 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 loading translation file “%s”.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export errorExport 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:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…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)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport from TMX…Import translation files…Importing translation memory from “%s” failed.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 CrowdinLeftLine %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 translations were found in the TMX file.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKObsolete stringsOneOnly 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 translation templateOpen...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 translationsQuitQuit %sReading file content failed with the following error: %sRecentRecent 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 FinderReviewRightSaveSave &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 languageServicesSet LanguageSet languageSettings…Shift+Show AllShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow summary after updating filesShow 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.These strings are no longer in the source code. Poedit will remove them from the file now.These strings were found in the sources but were not in the file. Poedit will add them to the file now.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.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.Translated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation entries in the file are probably incorrect.Translation 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)UntransUpUpdateUpdate 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 the file failed. Click on 'Details >>' for details.Updating 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’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:// URIpre-translate from TMshiftunknown 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: 2024-08-30 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ت&طبيق&رجوعأل&غاءام&سحأ&غلقا&نسخا&حذف&تمّت وإلى التّالية&تمّت وإلى التّاليةت&حرير&ملفّ&بحث…كتيّب &غنو غِت​تكستكتيّب &غنو غِت​تكست&انتقال&جمّع بالسّياق&جمّع بالسّياقم&ساعدة&جديد&جديد…ال&تّالية >التّرجمة ال&تّاليةالتّرجمة ال&تّالية&لا&موافقمساعدة &شبكيّةمساعدة &شبكيّةا&فتح...&فتح…أ&لصقت&فضيلات&التفضيلات…التّرجمة ال&سّابقةالتّرجمة ال&سّابقة&خصائص…ن&ظّف التّرجمات المحذوفةن&ظّف التّرجمات المحذوفةإ&نهاءأ&عدا&ستبدل&حفظ&حفظ باسم&إظهار أحداث الكود&إظهار أحداث التعليمات البرمجية&بدء نافذة&بدء النافذة&التّرجمةترا&جعالمدخلات &غير المترجمة أوّلًاالمدخلات &غير المترجمة أوّلًاتحديث من &مصادرِتحديث من &مصادرِت&حقّق من سلامة التّرجماتت&حقّق من سلامة التّرجمات&عرضن&عم(لا جديدة، لا بائدة)(اطّلع على المزيد عن «غنو غِت‌تكست»)(الجديدة: %i، البائدة: %i)(استخدم اللغة الافتراضيّة)(لم يتم تسجيل الدخول)(يتطلّب «وندوز» 8 وأحدث)< ال&سّابقة<غير معنون>عنْ %sحسابالحساباتإضافةإضافة حسابإضافة تعليقإضافة ملفّات…إضافة مجلّدات…إضافة حرف بدل…إضافة حسابإضافة تعليقإضافة الدّليل إلى القائمةإضافة ملفّات…إضافة مجلّدات…أضف حرف بدل…الكلمات المفتاحيّة الإضافيّةرايات xgettext إضافيّة:متقدّمإعدادات استخراج متقدّمة…إعدادات استخراج متقدّمةإعدادات استخراج متقدّمة…كلّ ملفّات التّرجمةكل التّعليقاتاستخدم أيضًا الكلمات المفتاحيّة الافتراضيّة للّغات المدعومةAlt+غيّر دائمًا التّركيز إلى حقل إدخال النصّعنصر في قائمة ملفّات الدّخل:عنصر في قائمة الكلمات المفتاحيّة:المظهرتطبيقأمتأكّد من حذف مستخرج «%s»؟أمتأكّد من تصفير ذاكرة التّرجمة؟التمس آليًّا عن التّحديثاتصرّف آليًّا ملف ‎.mo عند الحفظرجوعالمسار الأساس:نسخ بيتا تحوي المزايا الجديدة الأخيرة مع التّحسينات، لكن قد تكون أقلّ استقرارًا.اجلب الكلّ إلى الأمامملفّ PO معطوب: استُخدمت صيغة الجمع msgstr دون msgid_pluralملف PO المكسور: نموذج وحيد يستخدم مع msgid_multiuralخطأ في الترميز في جملة الترجمة.تصفّحتصفح الملفاتألغِجارٍ الإلغاء…تعذّر إنشاء الدّليل المؤقّت.تعذّر تنفيذ البرنامج: %sكبّر الحروفم&دير الكتالوجاتم&دير الكتالوجاتمدير الكتالوجاتتغيير لغة الواجهةطقم المحارف:تدقيق المستند الآنتدقيق إملائي ونحويتدقيق إملائي أثناء الكتابةالتمس التّحديثات…تحقّق الأخطاء في التّرجمةتحقق من التحديثات…دقّق الإملاءتنظيفمسح القائمةتنظيف الترجمةمسح القائمةتنظيف الترجمةأغلقأحداث الكودأحداث الكودجاري تجميع ملفّات المصدر…أمر استخراج التّرجمات:تعليقالتّعليق:التعليقات المُبتدأة ب‍:جمع الى MO…صرّف إلى…ملفّات ترجمة مصرّفةاضبط استخراج الكود المصدريّ في الخصائص.أكّدتوصيل Poedit مع منصات التوطين السحابية المدعومة لمزامنة الترجمات التي تتم إدارتها عليها بسلاسة.نسخنسخ من الصيغة المفردةانسخ من النّصّ المصدرنسخ من الصيغة المفردةنسخ من نص المصدريصحّح الإملاء آليًّاتعذر تحميل الملف، ربما تالف.تعذّر حفظ الملفّ %s.إنشاء جديدأنشئ ترجمة جديدةإنشاء ترجمة جديدة من قالب POT.أنشئ مشروع ترجمات جديدخطأ «كراودِن»Ctrl+&قصّمستخرجات مخصّصة:مستخرجات مخصّصة:تخصيص شريط الأدوات…قصّحجم قاعدة البيانات في القرص:احذفحذف من ذاكرة الترجمةاحذف المستخرجحذف من ذاكرة الترجمةحذف المشروعحذف التعليقاحذف المشروعحذف المشروع لن يحذف أي ملفات ترجمة.الأدلّة:هل تريد حذف المشروع «%s»؟هل تريد إعادة تحميل الملف من القرص؟ سيتم فقدان تعديلاتك غير المحفوظة في «محرّر Po» إذا فعلت ذلك.أتريد إزالة كلّ التّرجمات غير المستخدمة؟عدم الحفظعدم الحفظعدم العرض مجدّدًالا تعلّم المطابقات التّامّة بِ‍”تحتاج عملًا“عدم العرض مجدّدًاأسفلينزّل أحدث التّرجمات…عُطِّل تنزيل التّرجمات لهذا المشروع.اسحب المجلدات أو الملفات هنااسحب المجلدات أو الملفات هناأ&نهِتحريرتحرير الت&عليقتحرير الت&عليقتحرير التعليقتحرير التعليقحرّر المشروعحرّر المشروعالتّحريرتحرير…البريد الإلكترونيّ:Enterادخل ملء الشّاشةالإدخالات في هذا الملف لها صيغ معدودة مختلفة مما يقوله ترويسة الأشكال المتعددة للملفالمدخلات مع أخطاء أولاالمدخلات مع أخطاء أولاالمدخلات بأخطاء عُلّمت بالأحمر في القائمة. ستظهر تفاصيل الخطأ عندما تختار مدخلة ما.خطأ في تحميل ملف الترجمة "%s".خطأ في فتح الملفّخطأ أثناء حفظ الملفخطأ في تحميل ملف XLIFF: %sأخطاءكلّ شيءالمسارات المستثناةتصدير إلى TMX ...صدّر ك‍…خطأ في التصديرتصدير إلى TMX ...فشل تصدير ذاكرة الترجمة إلى "%s".تصدير الترجمات ...استخرج من المصادراستخرج ملاحظات المترجمين من:استخرج النّصوص من الملفّات المصدريّة في الأدلّة التّالية:جاري إستخراج مقاطع الترجمة…إعداد المستخرجالمستخرجاتفشل الأمر: %sفشل الاتّصال مع عمليّة Poedit.فشل تحميل الملف مع الترجمات المستخرجة.فشل دمج كاتالوجات «غِت‌تكست».فشل تحديث ذاكرة التّرجمة: %sملفّلا يمكن فتح الملفالملفّ ”%s“ غير موجود.الملف "%s" ليس ملف ترجمة. الملفّ ”%s“ للقراءة فقط ولا يمكن حفظه. رجاء احفظه باسم مختلف.جاري الإنهاء…بحثبحث عن التاليبحث عن السابقإيجاد والاستبدال…البحث في التعليقاتالبحث نصوص المصدرالبحث في الترجماتابحث عن التّاليابحث عن السّابقأصلح اللغةأصلح اللغةأصلح التّرويسةأصلح التّرويسةملفات ترجمة Flutterالصّيغة %iالنموذج%i (غير مستخدم)المتكرّرةGNU gettextعامّملفّات HTMLمساعدةأخفِ «%s»أخفِ البقيةأخفِ الشّريط الجانبيّأخفِ شريط الحالةإخفاء رسالة التنبيه هذهكيفية عمل المزامنة السحابية؟المعرّفإن تابعت مع التّنظيف، ستُزال كلّ التّرجمات المعلّمة بِ‍”محذوفة“ نهائيًّا. ستستطيع ترجمتها مجدّدًا إن أُضيفت في المستقبل.إذا كنت قد منعت من الوصول إلى ملفاتك، يمكنك السماح به في تفضيلات النظام > الحماية والخصوصية > الخصوصية > الملفات والمجلدات.إذا كنت قد منعت من الوصول إلى ملفاتك، يمكنك السماح بذلك في إعدادات النظام > الخصوصية والأمان > الملفات والمجلدات.تجاهلتجاهل حالة الأحرفاستيراد من TMX…استيراد ملفات الترجمة…خطأ في الإستيراداستيراد من TMX…استيراد ملفات الترجمة…فشل استيراد ذاكرة الترجمة من "%s".يستورد التّرجمات…في: %sضمّن نسخ بيتاحالة أعلى/أسفل غير متسقةمسافة بيضاء غير متسقةمعلومات حول المترجمثبّتالملفّ غير صالحالاستدعاء:ملفات ترجمة JSONأبقهالغة التّرجمة نفسها لغة المصدر.لغة التّرجمة لم تُضبط.لغة التّرجمة:حدّد اللّغةفريق التّرجمة:اللّغة:آخر تعديلتعلّم المزيد عن كلمات «غِت‌​تكست» المفتاحيّةتعلّم حول صيغ المعدوداطّلع على المزيدمعرفة المزيد عن %sاطّلع على المزيد عن «كراودِن»شمالالسطر %d من الملف “%s” معطوب (بيانات %s غير صالحة).نهايات الأسطر:قائمة الامتدادات مفصولة بفواصل منقوطة (مثلًا ‎*.cpp;*.h):لا يمكن تحرير ملفّات MO مباشرةً في «محرِّر Po».اجعلها بحالة أحرف صغيرةاجعلها بحالة أحرف كبيرةإنشاء ترجمة جديدة من ملف POT هذا.التّرويسة فاسدة: ”%s“إدارة الحساباتإدارة…جاري دمج الاختلافات…صغّراسم المشروع الذي تكون التّرجمات لهالاسم:غير المنتهية ال&تّاليةغير المنتهية ال&تّاليةتحتاج عملًاتحتاج المزيد من الانتباهلا تدع قائمة السلاسل تأخذ التّركيز أبدًا. إن فُعّل، عليك استخدام مفتاح Ctrl مع الأسهم للتّنقّل عبر لوحة المفاتيح. يمكنك هكذا طباعة النصّ مباشرةً دون الحاجة إلى ضغط مفتاح Tab لتغيير التّركيز.جديدملف جديد من &POT/PO…ملف جديد من &POT/PO…السلاسل الجديدةصيغة المعدود التّاليةصيغة المعدود التّاليةلالا مطابقاتلا مدخلات يمكن ترجمتها مسبقًا.لا توجد معلومات حول تواتر هذه السلسلة في شفرة المصدر في الملف.لا مطابقاتلم يُعثر على مشاكل مع التّرجمة.لا توجد مشروعات ترجمة مدرجة في حسابك.لم يتم العثور على ترجمات في ملف TMX.لم يتم العثور على معلومات الاستخداملم تُترجم كلّ صيغ الجموع.غير مستوثق، رجاء لِج ثانية.ملاحظات للمترجمينحسنًاالسّلاسل البائدةواحدفعّله فقط إن كنت تثق بجودة TM. افتراضيًّا، كلّ المطابقات من TM تُعلّم بِ‍”تحتاج عملًا“ ويجب مراجعتها قبل استخدامها.املأ فقط المطابقات التّامّةافتح الأخيرةفتح وتحرير ملفات الترجمة.فتح الترجمة السحابيةفتح ملفافتح في المحرّرفتح في المحرّرفتح الأحدثفتح قالب الترجمةفتح...فتح…خياراتأخرىغير المنتهية ال&سّابقةغير المنتهية ال&سّابقةملفّات PO ترجميّةملفّات POT قالبيّةملفّات POT ما هي إلّا قوالب لا تحوي ترجمات. لبدء الترجمة، أنشئ ملفّ PO مبنيّ على القالب.لصقلصق ومطابقة التنسيقالمساراتإجراء تحديث من رمز المصدر على جميع الملفات في المشروع.الإذن مرفوض.المكون "%s" غير مترجم.صحة المكونالرجاء فتح ملف PO المقابل والقيام بتحريره عوض ذلك. عند الحفظ، سيُحدّث ملف MO كذلك.رجاء احفظ الملفّ أوّلًا. لا يمكن تحرير هذا القسم حتّى ذلك الحين.الجمعترجمات بصيغة الجموعتعبير أشكال المعدود المستخدم من قبل الملف غير معتاد لـ %s.صيغ المعدود:محرّر Po«محرِّر Po» - مدير الكتالوجاتلقد أصلح Poedit محتوى غير صالح تلقائيا في الملف ”%s“.يمكن ل‍«محرِّر Po» محاولة ملء المدخلات الجديدة فقط من التّرجمات السّابقة في الملفّ أو من ذاكرة التّرجمة كلّها. استخدام ذاكرة التّرجمة لن يكون فعّالًا جديًّا إن كانت شبه فارغة، ولكنّها ستصبح أفضل متى ما أضف ترجمات أخرى إليها.لا يستطيع تحرير Poedit إظهار شفرة المصدر حيث يتم استخدام السلسلة، لأن الملف إما غير متوفر في الموقع المشار إليه أو أنه مرجع رمزي لا يشير إلى ملف حقيقي.«محرِّر Po» هو محرّر ترجمات سهل الاستخدام.تعذر على Poedit فتح الملف «%s».الترجمة &المسبقة…تُرجمت مسبقًاتُرجمت مسبقًالم يُترجم أيّ مقطع مسبقًاتُرجم مقطع واحد مسبقًاتُرجم مقطعين مسبقًاتُرجمت %u مقاطع مسبقًاتُرجمت %u مقطعًا مسبقًاتُرجمت %u مقطع مسبقًاالترجمة المسبقة من ذاكرة الترجمة...يترجم مسبقًا…التّرجمة مسبقًا تبحث آليًّا عن المطابقات التّامّة أو الغبشة للسّلاسل غير المترجمة، وذلك في ذاكرة التّرجمة لملء التّرجمات.تفضيلاتتفضيلات...التّفضيلات…جارٍ إعداد المقاطع…حافظ على تنسيق الملفّات الموجودةصيغة المعدود السّابقةصيغة المعدود السّابقةنص المصدر السابقتم تعديله سابقاتم تعديله سابقااسم المشروع وإصداره:اسم المشروع:المشروع:فحص علامات الترقيمنظّفنظّف التّرجمات المحذوفةإنهاءإنهاء %sفشل قراءة محتوى الملف مع الخطأ التالي: %sالأخيرةالملفات الأخيرةأعدتحديثإعادة تحميل الملفإعادة تحميل الملفالمتبقّي: %dاستبدلاستبدل ال&كلّاستبدل ال&كلّنصّ الاستبدالاستبدال…ترويسة صيغ المعدود المطلوبة مفقودة.صفّرصفّر ذاكرة الترجمةتصفير ذاكرة الترجمة سيحذف كلّ التّرجمات المخزّنة منها إلى الأبد. لا عودة عن هذه العمليّة.كشف في Finderراجعيمينحفظحفظ &باسم…حفظ &باسم…حفظ على أي حالحفظ على أي حالحفظ باسمحفظ باسم…حفظ التغييرات حفظ الملفلقطات شاشة:تحديد الك&لتحديد الكلحدد ملفات TMX لاستيرادهااختر دليلًاحدد ملف الترجمةاختر ملفات التّرجمة لاستيرادهاحدد قالب الترجمةاختر لغتك المفضّلةالخدماتاضبط اللغةاضبط اللغةإعدادات…Shift+أظهر الكلأظهر الشّريط الجانبيّإظهار التدقيق الإملائي والنحويأظهر شريط الحالةإظهار السلسلة ومعرف 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 الدّاخليّ. عدّلها إن أردت متطلّبات محدّدة كالتّحكّم بالإصدارات.لم تعد هذه المقاطع في الكود المصدري. سيقوم محرر «Po» بإزالتها من الملف الآن.تم العثور على هذه السلاسل في المصادر ولكن لم تكن في الملف. سيقوم «محرّر Po» بإضافتها إلى الملف الآن.ملف JSON هذا ليس ملف ترجمات ولا يمكن تعديله في Poedit.يحتوي هذا الملف على إدخالات مع نماذج معدودة، ولكن ليس لديه ترويسة أشكال متعددة.يُستخدم هذا الأمر لإطلاق المستخرج. يُوسّع ‎%o إلى اسم ملفّ الخرج، و‎%K إلى قائمة الكلمات المفتاحيّة، و‎%F إلى قائمة ملفّات الدّخل، و‎%C إلى راية طقم المحارف (طالع أدناه).عُثر على السّلسلة في ذاكرة ترجمة «محرِّر Po».سيُرفق هذا بسطر الأمر فقط إن أُعطي طقم المحارف. يُوسّع ‎%c إلى قيمة طقم المحارف.سيُرفق هذا بسطر الأمر مرّة لكلّ ملفّ دخل. يُوسّع ‎%f إلى اسم الملفّ.سيُرفق هذا بسطر الأمر مرّة لكلّ ملفّ دخل. يُوسّع ‎%K إلى الكلمة المفتاحيّة.المجموعالتّحويلاتلا تتم إضافة الإدخالات القابلة للترجمة يدويا في نظام Gettext، ولكن يتم استخراجها تلقائيا من شفرة المصدر. وبهذه الطريقة، فإنها تبقى محدثة ودقيقة. يستخدم المترجمون عادة ملفات نماذج PO (POTs) المعدة لهم بواسطة المطور.المُترجَمة: %d من %d ‏(%d %%)التّرجمةلغة التّرجمةذاكرة التّرجمةتحتاج التّرجمة &عملًاخصائص التّرجمةإدخالات الترجمة في الملف ربما غير صحيحة.قاعدة بيانات ذاكرة الترجمة تالفة: %s (%d).خطأ في ذاكرة الترجمة: %s (%d).تحتاج التّرجمة &عملًاخصائص التّرجمةاقتراحات الترجمةالتّرجمة — %sتعذر تحديث الترجمات من رمز المصدر، لأنه لم يتم العثور على رمز في الموقع المحدد في خصائص الملف.إثنانUTF-8 (مستحسن)تراجعحدث خطأ لا يمكن التّعامل معه: %sيُنِكس (مستحسن)غير المترجمةأعلىتحديثحدّث الكلّحدّث كلّ الكتالوجات في المشروعهل تريد تحديث جميع الكتالوجات في هذا المشروع؟تحديث من ملف &POT…تحديث من ملف &POT…تحديث من التعليمات البرمجيةحدّث من POTتحديث من التعليمات البرمجيةتحديث من شفرة المصدرملخص التّحديثالتّحديثاتفشل التّحديثفشل تحديث الملف. انقر على "التفاصيل >>" للحصول على التفاصيل.تحديث الترجماتيحدّث معلومات المستخدم…فشل تحميل الترجمات إلى %s.تحميل الترجمات إلى %s…يرفع التّرجمات…استخدم تعبيرًا مخصّصًااستخدم خطّ قوائم مخصّص:استخدم خطّ حقول النّصوص مخصّص:استخدم قواعد اللغة الافتراضيّةاستخدم الكلمات المفتاحيّة هذه (أسماء الدّوال) للتعرّف على السلاسل القابلة للتّرجمة في الملفات المصدريّة:استخدم ذاكرة التّرجمةتحققنتائج الفحصالنّسخة %sينتظر الاستيثاق…مرحبًا في Poeditعند التّحديث من المصادركامل الكلمات فقطنافذةوندوزهل ترغب في استخدام اللغة الإنجليزية للنص المصدري؟لفّ حوللفّ عند:ملفات ترجمة XLIFFنعميمكنك أيضًا استخراج السّلاسل التّرجميّة مباشرةً من الكود المصدريّ:لا يمكنك إسقاط أكثر من ملف واحد في Poedit.ليس لديك الصلاحية لقراءة ملفات التعليمات البرمجية المصدر من الموقع المحدد في خصائص الملف.عليك إعادة تشغيل Poedit لتطبيق التّعديلات.اسمكستفقد تعديلاتك إن لم تحفظها.يُستخدم اسمك وبريدك الإلكترونيّ فقط لضبط ترويسة ”آخر مترجم“ لملفّات «غنو غِت‌تكست».صفرقرّبaltتحتاج عملًاctrlلا تحذف الملفّات المؤقّتة (للتّنقيح)مثلًا nplurals=2; plural=(n > 1);‎مطابقة غبشة داخل الملفّانتقل إلى العنصر في رقم السطر المعينتعامل مع معرّف poedit://‎احصل على ترجمة سابقة من ذاكرة التّرجمةshiftلغة مجهولةإصدار غير مدعوم (%s)بريدك الإلكترونيالملفّ ”%s“ ليس ملفّ POT صالح.poedit-3.5/locales/oc.mo0000644000175100001770000012445314664354154012176 000000000000006|#P/ Q/ ]/h/|/J/g/ B0L0 [0e0 l0z000000000000001 11.14191A1I1[1m1q1 u1 1111 111112282>2D2M2S2 \2 j2 x2222222 3#3)3.3B3a3y333 3 33333 3 3 44 &4 24>4 X4e4t444 4 44'44 5 $5/57556m55)55 5]5\6$o66 66 6"66 677*7;7N7W7j777#7777 88 "8-8?8E8V8g8 8888 88/8 9+909C9Y9l999 99)9: &:4:::?:T:X:o:v:::::: :';?/; o; };;;;";5;<< < '< 5< B< O<\<m<u<}<<<<<u<(F=o=== === = === >< >"]>> >>*>!>'>#?(?>?(]?T? ?? ? ?@@+@@@ U@ _@ m@ z@@@@@@ @@ @@@ @ @ AA;A>AA AAB *B7BJBfBBBBB BB B CC;C(VCCCC C CCC DD+DDD:ID D<D.DDE*EIE dEnEE*EEEE E EEFFF FFGGG+G'VwVRfWcWQXoX:X-XKX.?YnY!Y)Z-IZ8wZCZ,ZL![n[[7\m\_F][]^^^ 5^A^V^i^^^^^^^^ _ _0_C_K_N_ U_"`________``&`<`Y`y````#`VaWanawa aaaaaaa b bb-bH1b5zb7b b3ba&cccccc.c cd$d;dQdWd!hdd 2f ?fMfdfBwff FgPg dg ngyggggggg gggg g hh+hBhIh_huh|h h hhhh hhh h i ii!i3iJiai#qi#ii i i iii j "j.j%7j%]j#j#jjj jk k&kEkdkk"k k kkkkkkll/lDlSl hllll l!ll mm-$m1Rm(m mm6mBm(:nCcnnnln+o-Go uooo o,o&opp.pFp!^ppp)p-pq''qOqoqqqqqqqqq r%2r Xr brnrr!r=r rrss6sJs&is(s ss8s't DtRtXt"`tt&tt$tt$tu/uEu `u.nuCuuuvv"v.&vIUvv vvvvvw&w =w IwTw\wdw!w!ww7]x!x!xxxxx yy)y:yWyGsy(yy z z4'z,\z;zz#z&z:{kT{{{{{{|1|O|k|}|||||||} }}}.} 4}>}P}i}'}}}U~]~n~&~~~&~!~ "%=c  3'$=Pdl$$ ʀ׀ DSIcG ;YyʂЂ ( (Ir##ل/#-$Q'v ҅1Յ,CZo †׆ $ʇч4&rBZ*<"CHf43 + 9BD, Ŋӊ0D\t ȋӋ" !+3E KVh}  ь'ߌ(?ݍ  6N^q+Ŏ2$W*sɏ؏ ݏ#'@]w"͐5 DR bpӑ#9M]#s)B XdwY(<!Xz >C %̕ە*/N Q:_#xD[{Lqș3::n)_Ӛ*3^,*3.^.C+e,AJ\TEA àנ$$-Rl+  ."+Q+}ɢ$+ ER l2$#% $/9T/s"2U] x1 3QVUS@ A?M#5<:"w!ب&2`3lwzm9s%i.=vE Grqr@pagdnA:C" "lH+);x((8 -L*Ny6VFC8kuB}! X`In1J^SU{0G'#{1wc+ cPoHjuyDQ&T ?!TY2_'7>&/.}20h4t6e),<x9$^@|pZ 1K " ?-b\dM%KI5a!$FMX<% 'gNs|Lv5[h)Em6 Rk]//> 7fZ,*5[3e0WY4i ;j qU_:&]Q#WD.o3z ,$*A~VOt-# O~P=JS+b4 (Rf\B (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&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(0 new, 0 obsolete)(Learn more about GNU gettext)(New: %i, obsolete: %i)(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd AccountAdd CommentAdd Files…Add Folders…Add accountAdd commentAdd directory to the listAdd files…Add folders…Additional keywordsAdvancedAll Translation FilesAll commentsAll stringsAlt+Always 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 errorCtrl+Cu&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 againDownDownloading latest translations…Downloading translations is disabled in this project.E&xitEditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:EnterEnter 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 loading translation file “%s”.Error opening fileError saving fileErrorsEverythingExcluded pathsExport To TMX…Export as…Export errorExport to TMX…Exporting translations…Extract from sourcesExtract text from source files in the following directories:Extracting translatable strings…Extractor setupExtractorsFailed command: %sFailed 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.Finalizing…FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerForm %iForm %i (unused)FrequentGNU gettextGeneralHTML FilesHelpHide %sHide OthersHide 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 errorImport from TMX…Import translation files…Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation 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 %sLearn more about CrowdinLeftLine %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…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 translatorsOKObsolete stringsOneOnly fill in exact matchesOpen RecentOpen fileOpen in EditorOpen in editorOpen recentOpen translation templateOpen...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 textProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitQuit %sRecentRecent 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.ReviewRightSaveSave &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 languageServicesSet LanguageSet languageSettings…Shift+Show AllShow 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 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)UntransUpUpdateUpdate 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.ZeroZoomaltcolumn/row headerNeeds Workctrldon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);fuzzy match within the filehandle a poedit:// URIpre-translate from TMshiftunknown language“%s” is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2024-08-30 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&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(0 novèla, 0 obsolèta)(Ne saber mai sus GNU gettext)(Novèla : %i, obsolèta : %i)(Utilizar la lenga per defaut)(non connectat)(necessita Windows 8 o mai recent)< &PrecedentaA prepaus de %sCompteComptesApondreApondre compteApondre un comentariApondre fichièrs…Apondre dossièrs…Apondre compteApondre 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 cadenasAlt+Activar 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 CrowdinCtrl+&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 maiBasTelecargament 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 :EntradaPassar en mòde ecran completEntradas 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 al cargament del fichièr de traduccion « %s ».Error a la dobertura del fichièrError en enregistrant lo fichièrErrorsTotCamins exclusesExportar en TMX…Exportar...Error d’exportacionExport en TMX…Export de las traduccions…Extraire dempuèi las fontsExtraire lo tèxte dels fichièrs fonts dins los repertòris seguents :Extraccion de las cadenas tradusiblas…Installacion de l'extractorExtractorsLa comanda a fracassat : %sImpossible 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.Finalizacion...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èstaForma %iFormulari %i (non utilizat)FrequentGNU gettextGeneralFichièrs HTMLAjudaAmagar %sAmagar los autresAmagar 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…Error d’importacionImport 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 :ConservarLa 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 CrowdinEsquèrraLa 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…Integracion dels cambiaments...ReduireNom del projècte de traduccionNom :Incomplet seguen&tIncomplet 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òrdiCadenas obsolètasUnCompletar unicament las correspondéncias exactasDobèrts recentamentDobrir fichièrDobrir dins l’EditorDobrir dins l’EditorDobèrts recentamentDobrir modèl de traduccionDobrir...Dobrir…OpcionsAutreIncomplet p&recedentIncomplet 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 precedentNom e version del projècte :Nom del projècte :Projècte :ProjèctesVerificacions de pontuacionEscafarEscafar las traduccions suprimidasQuitarQuitar %sRecentsFichiè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.RepassarDrechEnregistrarEnregistrar 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énciaServicisDefinir la lengaDefinir la lengaParamètres…Maj+Afichar totAfichar 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'identificarConnectatz-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)Pas traduitNautActualizarTot 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 poliça personalizada :Utilizar una poliça 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èroAgrandiraltTrabalh necessarictrlsuprimir 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://pretraduire amb la MTmajlenga desconeguda« %s » es pas un fichièr POT valid.poedit-3.5/admin/0000755000175100001770000000000014664354152010753 500000000000000poedit-3.5/admin/ax_boost_base.m40000644000175100001770000003262414664354065013757 00000000000000# =========================================================================== # 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.5/admin/wxwin.m40000644000175100001770000011716114664354065012323 00000000000000dnl --------------------------------------------------------------------------- dnl Author: wxWidgets development team, dnl Francesco Montorsi, dnl Bob McCown (Mac-testing) dnl Creation date: 24/11/2001 dnl --------------------------------------------------------------------------- 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_SYSTEM 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 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 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 ($4) to this variable as this would result in dnl 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_LIBS=`$WX_CONFIG_WITH_ARGS --libs $4` 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 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, AC_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="auto" else AC_MSG_ERROR([ Unrecognized option value (allowed values: yes, no, auto) ]) fi ]) AC_DEFUN([WX_ARG_WITH_YESNOAUTO], [AC_ARG_WITH($1, AC_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="auto" 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], AC_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="auto" else TOOLKIT="$withval" dnl PORT must be one of the allowed values if test "$TOOLKIT" != "gtk1" -a "$TOOLKIT" != "gtk2" -a \ "$TOOLKIT" != "msw" -a "$TOOLKIT" != "motif" -a \ "$TOOLKIT" != "osx_carbon" -a "$TOOLKIT" != "osx_cocoa" -a \ "$TOOLKIT" != "dfb" -a "$TOOLKIT" != "x11"; then AC_MSG_ERROR([ Unrecognized option value (allowed values: auto, gtk1, gtk2, msw, motif, osx_carbon, osx_cocoa, dfb, x11) ]) 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], AC_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="auto" 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 are different from "auto". 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 "$TOOLKIT" != "auto" ; then WXCONFIG_FLAGS="$WXCONFIG_FLAGS""--toolkit=$TOOLKIT " fi if test "$WX_RELEASE" != "auto" ; 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 [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]) dnl dnl Outputs the given MSG. Then searches the given STRING in the wxWidgets dnl additional CPP flags and put the result of the search in WX_$RESULTVAR dnl also adding the "yes" or "no" message result to MSG. dnl --------------------------------------------------------------------------- AC_DEFUN([_WX_SELECTEDCONFIG_CHECKFOR], [ if test "$$1" = "auto" ; 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]) ifelse([$4], , :, [$4]) else WX_$1=0 AC_MSG_RESULT([no]) ifelse([$5], , :, [$5]) 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 elif test $WX_SHARED = "auto"; then STATIC="auto" 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 "$TOOLKIT" = "auto" ; 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_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_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_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 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 if test -z "$TOOLKIT" ; then WX_PORT=$TOOLKIT else dnl try with PORT WX_PORT=$PORT fi 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 DEBUG,UNICODE,SHARED options dnl to their final values if they were set to 'auto' if test "$DEBUG" = "auto"; then DEBUG=$WX_DEBUG fi if test "$UNICODE" = "auto"; then UNICODE=$WX_UNICODE fi if test "$SHARED" = "auto"; then SHARED=$WX_SHARED fi if test "$TOOLKIT" = "auto"; then TOOLKIT=$WX_PORT fi dnl in case the user needs a BUILD=debug/release var... if test "$DEBUG" = "1"; then BUILD="debug" elif test "$DEBUG" = "0" -o "$DEBUG" = ""; then BUILD="release" fi dnl respect the DEBUG variable adding the optimize/debug flags 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 CXXFLAGS="$CXXFLAGS -g -O0" CFLAGS="$CFLAGS -g -O0" else 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.5/admin/ax_cxx_compile_stdcxx.m40000644000175100001770000005207514664354065015550 00000000000000# =========================================================================== # 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.5/admin/missing0000755000175100001770000001533614664354142012301 00000000000000#! /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.5/admin/config.sub0000755000175100001770000010511614664354142012661 00000000000000#! /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.5/admin/ax_boost_thread.m40000644000175100001770000001321114664354065014303 00000000000000# =========================================================================== # 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.5/admin/ax_boost_iostreams.m40000644000175100001770000001101314664354065015040 00000000000000# =========================================================================== # 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.5/admin/config.guess0000755000175100001770000014051214664354142013215 00000000000000#! /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.5/admin/install-sh0000755000175100001770000003577614664354142012720 00000000000000#!/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.5/admin/ax_boost_system.m40000644000175100001770000001012614664354065014362 00000000000000# =========================================================================== # 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.5/admin/compile0000755000175100001770000001635014664354142012255 00000000000000#! /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.5/admin/depcomp0000755000175100001770000005602014664354142012252 00000000000000#! /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.5/src/0000755000175100001770000000000014664354152010452 500000000000000poedit-3.5/src/str_helpers.h0000644000175100001770000002460114664354065013103 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2013-2024 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 void ensure_owned() { if (m_owned) return; 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; } 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 std::wstring& str) { return to_icu(str.c_str()); } 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.5/src/errors.cpp0000644000175100001770000000550514664354065012422 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2013-2024 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 #ifndef __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(); } #ifndef __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 // !__WXOSX__ catch (const std::exception& e) { return from_c_string(e.what()); } catch (...) { return _("Unknown error"); } } poedit-3.5/src/findframe.cpp0000644000175100001770000004762714664354065013054 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2001-2024 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 "catalog.h" #include "text_control.h" #include "edframe.h" #include "editing_area.h" #include "edlistctrl.h" #include "findframe.h" #include "hidpi.h" #include "utility.h" namespace { // The word separators used when doing a "Whole words only" search // FIXME-ICU: use ICU to separate words 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 (ignoreCase) str.MakeLower(); if (ignoreAmp) str.Replace("&", ""); if (ignoreUnderscore) str.Replace("_", ""); return FindTextInStringAndDo(str, text, wholeWords, [=](const wxString&,size_t,size_t){ return wxString::npos;/*just 1 hit*/ }); } size_t IsTextInStrings(const wxArrayString& strs, const wxString& text, bool ignoreCase, bool wholeWords, bool ignoreAmp, bool ignoreUnderscore) { // loop through all strings and search for the substring in them for (size_t i = 0; i < strs.GetCount(); i++) { 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_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 textc; wxString text(ms_text); if (ignoreCase) text.MakeLower(); // Only ignore mnemonics when searching if the text being searched for // doesn't contain them. That's a reasonable heuristics: most of the time, // ignoring them is the right thing to do and provides better results. But // sometimes, people want to search for them. const bool 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 (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_InComments: case Found_InExtractedComments: case Found_Not: break; } if (txt) { textc = txt->GetValue(); if (ignoreCase) textc.MakeLower(); 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.5/src/cat_update.cpp0000644000175100001770000002313414664354065013215 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2000-2024 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 "errors.h" #include "extractors/extractor.h" #include "progressinfo.h" #include "utility.h" #include #include #include #include #include #include #include #include namespace { /** 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. \param snew list of strings that are new to the catalog \param sobsolete list of strings that no longer appear in the catalog (as compared to catalog's state before parsing sources). */ void TransferTo(const wxArrayString& snew, const wxArrayString& sobsolete); }; MergeSummaryDialog::MergeSummaryDialog(wxWindow *parent) { wxXmlResource::Get()->LoadDialog(this, parent, "summary"); RestoreWindowState(this, wxDefaultSize, WinState_Size); CentreOnParent(); } MergeSummaryDialog::~MergeSummaryDialog() { SaveWindowState(this, WinState_Size); } void MergeSummaryDialog::TransferTo(const wxArrayString& snew, const wxArrayString& sobsolete) { wxString sum; sum.Printf(_("(New: %i, obsolete: %i)"), (int)snew.GetCount(), (int)sobsolete.GetCount()); XRCCTRL(*this, "items_count", wxStaticText)->SetLabel(sum); wxListBox *listbox; size_t i; listbox = XRCCTRL(*this, "new_strings", wxListBox); #ifdef __WXOSX__ if (@available(macOS 11.0, *)) ((NSTableView*)[((NSScrollView*)listbox->GetHandle()) documentView]).style = NSTableViewStyleFullWidth; #endif for (i = 0; i < snew.GetCount(); i++) { listbox->Append(snew[i]); } listbox = XRCCTRL(*this, "obsolete_strings", wxListBox); #ifdef __WXOSX__ if (@available(macOS 11.0, *)) ((NSTableView*)[((NSScrollView*)listbox->GetHandle()) documentView]).style = NSTableViewStyleFullWidth; #endif for (i = 0; i < sobsolete.GetCount(); i++) { listbox->Append(sobsolete[i]); } } inline wxString ItemMergeSummary(const CatalogItemPtr& item) { wxString s = item->GetString(); if ( item->HasPlural() ) s += "|" + item->GetPluralString(); if ( item->HasContext() ) s += wxString::Format(" [%s]", item->GetContext()); return s; } /** Returns list of strings that are new in reference catalog (compared to this one) and that are not present in \a refcat (i.e. are obsoleted). \see ShowMergeSummary */ void GetMergeSummary(CatalogPtr po, CatalogPtr refcat, wxArrayString& snew, wxArrayString& sobsolete) { wxASSERT( snew.empty() ); wxASSERT( sobsolete.empty() ); std::set strsThis, strsRef; for (auto& i: po->items()) strsThis.insert(ItemMergeSummary(i)); for (auto& i: refcat->items()) strsRef.insert(ItemMergeSummary(i)); for (auto& i: strsThis) { if (strsRef.find(i) == strsRef.end()) sobsolete.Add(i); } for (auto& i: strsRef) { if (strsThis.find(i) == strsThis.end()) snew.Add(i); } } /** Shows a dialog with merge summary. \see GetMergeSummary, Merge \return true if the merge was OK'ed by the user, false otherwise */ bool ShowMergeSummary(wxWindow *parent, CatalogPtr po, CatalogPtr refcat, bool *cancelledByUser) { if (cancelledByUser) *cancelledByUser = false; if (wxConfig::Get()->ReadBool("show_summary", false)) { wxArrayString snew, sobsolete; GetMergeSummary(po, refcat, snew, sobsolete); MergeSummaryDialog sdlg(parent); sdlg.TransferTo(snew, sobsolete); bool ok = (sdlg.ShowModal() == wxID_OK); if (cancelledByUser) *cancelledByUser = !ok; return ok; } else return true; } POCatalogPtr ExtractPOTFromSources(POCatalogPtr catalog, UpdateResultReason& reason) { Progress progress(1); reason = UpdateResultReason::Unspecified; auto spec = catalog->GetSourceCodeSpec(); if (!spec) { reason = UpdateResultReason::NoSourcesFound; return nullptr; } progress.message(_(L"Collecting source files…")); try { auto files = Extractor::CollectAllFiles(*spec); progress.message(_(L"Extracting translatable strings…")); if (!files.empty()) { TempDirectory tmpdir; auto potFile = Extractor::ExtractWithAll(tmpdir, *spec, files); if (!potFile.empty()) { try { auto pot = POCatalog::Create(potFile, Catalog::CreationFlag_IgnoreHeader); return pot; } catch (...) { wxLogError(_("Failed to load file with extracted translations.")); reason = UpdateResultReason::Unspecified; return nullptr; } } } else { reason = UpdateResultReason::NoSourcesFound; return nullptr; } } catch (ExtractionException& e) { switch (e.error) { case ExtractionError::Unspecified: reason = UpdateResultReason::Unspecified; break; case ExtractionError::NoSourcesFound: reason = UpdateResultReason::NoSourcesFound; break; case ExtractionError::PermissionDenied: reason = UpdateResultReason::PermissionDenied; break; } reason.file = e.file; return nullptr; } return nullptr; } } // anonymous namespace bool PerformUpdateFromSources(POCatalogPtr catalog, UpdateResultReason& reason) { Progress p(100); POCatalogPtr pot; { Progress subtask(1, p, 90); pot = ExtractPOTFromSources(catalog, reason); if (!pot) return false; } { Progress subtask(1, p, 10); subtask.message(_(L"Merging differences…")); return catalog->UpdateFromPOT(pot); } } bool PerformUpdateFromSourcesWithUI(wxWindow *parent, POCatalogPtr catalog, UpdateResultReason& reason, int flags) { const bool skipSummary = (flags & Update_DontShowSummary); POCatalogPtr pot; bool succ = ProgressWindow::RunCancellableTask(parent, _("Updating translations"), [&reason,&pot,catalog](dispatch::cancellation_token_ptr /*cancellationToken*/) { pot = ExtractPOTFromSources(catalog, reason); }); if (!succ) { reason = UpdateResultReason::CancelledByUser; return false; } if (!pot) return false; bool cancelledByUser = false; if (skipSummary || ShowMergeSummary(parent, catalog, pot, &cancelledByUser)) { succ = catalog->UpdateFromPOT(pot); } if (cancelledByUser) reason = UpdateResultReason::CancelledByUser; return succ; } bool PerformUpdateFromPOTWithUI(wxWindow *parent, POCatalogPtr catalog, const wxString& pot_file, UpdateResultReason& reason) { reason = UpdateResultReason::Unspecified; try { auto pot = POCatalog::Create(pot_file, Catalog::CreationFlag_IgnoreTranslations); // Silently fix duplicates because they are common in WP world: if (pot->HasDuplicateItems()) pot->FixDuplicateItems(); bool cancelledByUser = false; if (ShowMergeSummary(parent, catalog, pot, &cancelledByUser)) { return catalog->UpdateFromPOT(pot); } else { if (cancelledByUser) reason = UpdateResultReason::CancelledByUser; return false; } } catch (...) { wxMessageDialog dlg ( parent, wxString::Format(_(L"The file “%s” couldn’t be opened."), wxFileName(pot_file).GetFullName()), _("Invalid file"), wxOK | wxICON_ERROR ); dlg.SetExtendedMessage(DescribeCurrentException()); dlg.ShowModal(); return false; } } poedit-3.5/src/catalog_po.cpp0000644000175100001770000016077714664354065013233 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 1999-2024 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 #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 (!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 (!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)) { throw 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)) { throw 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()) { throw 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) { throw 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. int msgcat_ok = false; { int wrapping = DEFAULT_WRAPPING; if (wxConfig::Get()->ReadBool("keep_crlf", true)) wrapping = m_fileWrappingWidth; wxString wrappingFlag; 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) wrappingFlag = " --no-wrap"; else if (wrapping != DEFAULT_WRAPPING) wrappingFlag.Printf(" --width=%d", wrapping); TempOutputFileFor po_file_temp2_obj(po_file_temp); const wxString po_file_temp2 = po_file_temp2_obj.FileName(); auto msgcatCmd = wxString::Format("msgcat --force-po%s -o %s %s", wrappingFlag, QuoteCmdlineArg(po_file_temp2), QuoteCmdlineArg(po_file_temp)); wxLogTrace("poedit", "formatting file with %s", msgcatCmd); // 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. wxLogNull null; msgcat_ok = ExecuteGettext(msgcatCmd) && 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. wxLogNull null; if ( ExecuteGettext ( wxString::Format("msgfmt -o %s %s", QuoteCmdlineArg(mo_file_temp), QuoteCmdlineArg(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)]; bool sandboxed = (getenv("APP_SANDBOX_CONTAINER_ID") != NULL); CompiledMOFilePresenter *presenter = nil; if (sandboxed) { presenter = [CompiledMOFilePresenter new]; presenter.presentedItemURL = mofileUrl; presenter.primaryPresentedItemURL = [NSURL fileURLWithPath:str::to_NS(po_file)]; [NSFileCoordinator addFilePresenter:presenter]; [NSFileCoordinator filePresenters]; } 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; } }]; if (sandboxed) { [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; wxString po_file_temp = tmpdir.CreateFileName("output.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(); { // Ignore msgfmt errors output (but not exit code), because it // complains about things DoValidate() already complained above. wxLogNull null; ExecuteGettext(wxString::Format("msgfmt -o %s %s", QuoteCmdlineArg(mo_file_temp), QuoteCmdlineArg(po_file_temp))); } // Don't check return code: // 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; } ExecuteGettext(wxString::Format("msguniq -o %s %s", QuoteCmdlineArg(CliSafeFileName(po_file_fixed)), QuoteCmdlineArg(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) { GettextErrors err; ExecuteGettextAndParseOutput ( wxString::Format("msgfmt -o /dev/null -c %s", QuoteCmdlineArg(CliSafeFileName(po_file))), err ); res.errors += (int)err.size(); for ( GettextErrors::const_iterator i = err.begin(); i != err.end(); ++i ) { if ( i->line != -1 ) { auto item = FindItemByLine(i->line); if ( item ) { item->SetIssue(CatalogItem::Issue::Error, i->text); continue; } } // if not matched to an item: wxLogError(i->text); } } 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; 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); wxString flags("-q --force-po --previous"); if (Config::MergeBehavior() == Merge_None) { flags += " --no-fuzzy-matching"; } bool succ = ExecuteGettext ( wxString::Format ( "msgmerge %s -o %s %s %s", flags, QuoteCmdlineArg(tmp3), QuoteCmdlineArg(tmp2), QuoteCmdlineArg(tmp1) ) ); if (succ) { 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; } m_fileName = oldname; return succ; } poedit-3.5/src/attentionbar.h0000644000175100001770000001170414664354065013243 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2008-2024 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.5/src/syntaxhighlighter.h0000644000175100001770000000554114664354065014320 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2014-2024 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.5/src/spellchecking.h0000644000175100001770000000412214664354065013360 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2014-2024 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.5/src/menus.cpp0000644000175100001770000002560614664354065012241 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 1999-2024 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.5/src/cat_sorting.cpp0000644000175100001770000001466214664354065013426 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 1999-2024 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.5/src/catalog.h0000644000175100001770000005433714664354065012174 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 1999-2024 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) { m_comment = 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, 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.5/src/catalog_xliff.cpp0000644000175100001770000006354014664354065013713 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2018-2024 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'; }); } 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::Open(const wxString& filename) { xml_document doc; auto result = doc.load_file(filename.fn_str(), PUGI_PARSE_FLAGS); if (!result) throw XLIFFReadException(result.description()); std::shared_ptr cat; auto xliff_root = doc.child("xliff"); std::string xliff_version = xliff_root.attribute("version").value(); if (xliff_version == "1.0") cat.reset(new XLIFF1Catalog(std::move(doc), 0)); else if (xliff_version == "1.1") cat.reset(new XLIFF1Catalog(std::move(doc), 1)); else if (xliff_version == "1.2") cat.reset(new XLIFF1Catalog(std::move(doc), 2)); else if (xliff_version == "2.0" || xliff_version == "2.1") cat.reset(new XLIFF2Catalog(std::move(doc))); else throw XLIFFReadException(wxString::Format(_("unsupported version (%s)"), xliff_version)); cat->Parse(xliff_root); return cat; } 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)) 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")) 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 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()) { 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); } 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)) 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); } } 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.5/src/logcapture.h0000644000175100001770000000501414664354065012713 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2013-2024 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.5/src/gexecute.h0000644000175100001770000000404714664354065012364 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2000-2024 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 _GEXECUTE_H_ #define _GEXECUTE_H_ #include #include struct GettextError { int line; wxString text; }; typedef std::vector GettextErrors; /** Executes command. Writes stderr output to \a stderrOutput if not NULL, and logs it with wxLogError otherwise. \return true if program exited with exit code 0, false otherwise. */ extern bool ExecuteGettext(const wxString& cmdline); /// Like ExecuteGettext(), but stores error output parsed into per-item entries. extern bool ExecuteGettextAndParseOutput(const wxString& cmdline, GettextErrors& errors); extern wxString QuoteCmdlineArg(const wxString& s); #if defined(__WXOSX__) || defined(__WXMSW__) extern wxString GetGettextPackagePath(); extern wxString GetGettextBinaryPath(const wxString& program); #endif #endif // _GEXECUTE_H_ poedit-3.5/src/edlistctrl.h0000644000175100001770000002413314664354065012722 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 1999-2024 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.5/src/prefsdlg.h0000644000175100001770000000273714664354065012365 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2000-2024 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.5/src/spellchecking.cpp0000644000175100001770000001307014664354065013715 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2014-2024 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.5/src/custom_notebook.h0000644000175100001770000000551614664354065013767 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2021-2024 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 /// 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 }; #if defined(__WXOSX__) || defined(__WXMSW__) #define HAS_SEGMENTED_NOTEBOOK #endif #ifdef HAS_SEGMENTED_NOTEBOOK /** wxNotebook with nicer tabs. Uses NSSegmentedControl on macOS and custom, modern-looking tabs on Windows. */ class SegmentedNotebook : public wxSimplebook { public: SegmentedNotebook(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: 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: SegmentedNotebook(wxWindow *parent, SegmentStyle style); wxSizer *GetTabsExtensibleArea() const { return nullptr; } }; #endif #endif // Poedit_custom_notebook_h poedit-3.5/src/sidebar.cpp0000644000175100001770000010100014664354065012502 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2014-2024 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", _("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() { ClearSuggestionsMenu(); for (auto i : m_suggestionMenuItems) delete i; } 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_suggestionMenuItems.reserve(SUGGESTIONS_MENU_ENTRIES); auto menu = m_suggestionsMenu; for (int i = 0; i < count; i++) { auto text = wxString::Format("(empty)\t%s%d", _("Ctrl+"), i+1); auto item = new wxMenuItem(menu, wxID_ANY, text); item->SetBitmap(wxArtProvider::GetBitmap("SuggestionTMTemplate")); m_suggestionMenuItems.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" + _("Ctrl+") + "%d"; else formatMask = L"\u202a%s\u202c\t" + _("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_suggestionMenuItems[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; auto menuItems = m->GetMenuItems(); for (auto i: menuItems) { if (std::find(m_suggestionMenuItems.begin(), m_suggestionMenuItems.end(), i) != m_suggestionMenuItems.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.5/src/wx/0000755000175100001770000000000014664354152011110 500000000000000poedit-3.5/src/wx/main_toolbar.cpp0000644000175100001770000001116514664354065014211 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2014-2024 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.5/src/text_control.h0000644000175100001770000001237614664354065013303 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 1999-2024 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.5/src/colorscheme.cpp0000644000175100001770000002361614664354065013414 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2016-2024 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 // 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.5/src/editing_area.cpp0000644000175100001770000010470714664354065013525 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 1999-2024 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 wxWindow { public: enum Mode { Fixed, Ellipsize }; TagLabel(wxWindow *parent, Color fg, Color bg, wxWindowID labelChildID = wxID_ANY) : wxWindow(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(); }); } 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(6))); sizer->AddSpacer(PX(6)); auto origTextSizer = new wxBoxSizer(wxVERTICAL); origTextSizer->Add(m_labelSingular, wxSizerFlags().Border(wxLEFT|wxTOP, PX(6))); origTextSizer->Add(m_textOrig, wxSizerFlags(1).Expand().Border(wxLEFT|wxRIGHT, PX(4))); origTextSizer->Add(m_labelPlural, wxSizerFlags().Border(wxLEFT, PX(6))); origTextSizer->Add(m_textOrigPlural, wxSizerFlags(1).Expand().Border(wxLEFT|wxRIGHT, PX(4))); 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 = new SegmentedNotebook(this, SegmentStyle::SmallInline); sizer->Add(transLineSizer, wxSizerFlags().Expand().Border(wxLEFT|wxTOP, PX(6))); sizer->AddSpacer(PX(6)); sizer->Add(m_textTrans, wxSizerFlags(1).Expand().Border(wxLEFT|wxRIGHT|wxBOTTOM, PX(4))); 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.5/src/resources/0000755000175100001770000000000014664354152012464 500000000000000poedit-3.5/src/resources/summary.xrc0000644000175100001770000000660314664354065014627 00000000000000 Update summary 300,200d wxVERTICAL small wxVERTICAL 5d wxALL 5d wxEXPAND|wxLEFT|wxRIGHT|wxBOTTOM wxVERTICAL 5d wxALL 5d wxEXPAND|wxLEFT|wxRIGHT|wxBOTTOM wxEXPAND|wxLEFT|wxRIGHT|wxTOP 5d wxHORIZONTAL small wxALL 5d 1 5d wxTOP|wxLEFT|wxBOTTOM 5d wxALL wxEXPAND poedit-3.5/src/resources/comment.xrc0000644000175100001770000000370314664354065014572 00000000000000 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.5/src/resources/properties.xrc0000644000175100001770000003122114664354065015320 00000000000000 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.5/src/resources/prefs.xrc0000644000175100001770000001454614664354065014256 00000000000000 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.5/src/resources/menus.xrc0000644000175100001770000004467114664354065014270 00000000000000 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.5/src/resources/toolbar.xrc0000644000175100001770000000444414664354065014575 00000000000000 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.5/src/resources/manager.xrc0000644000175100001770000000445714664354065014551 00000000000000 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.5/src/catalog.cpp0000644000175100001770000007504114664354065012522 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 1999-2024 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 "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::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;*.json;*.arb", _("All Translation Files"), /*showExt=*/false) + "|" + GetTypesFileMask({ Type::PO, Type::POT, Type::XLIFF, Type::JSON, Type::JSON_FLUTTER }); } 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) m_oldMsgid.clear(); m_isFuzzy = fuzzy; 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() { m_isFuzzy = false; m_isPreTranslated = false; m_isTranslated = false; for (auto& t: m_translations) { if (!t.empty()) m_isModified = true; t.clear(); } 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::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); } if (!cat) throw 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.5/src/app_updates.h0000644000175100001770000000417414664354065013061 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2024 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.5/src/errors.h0000644000175100001770000000600414664354065012062 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2013-2024 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.5/src/welcomescreen.cpp0000644000175100001770000003013314664354065013734 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2013-2024 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 "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\nfrom source code. This way, they stay up to date and accurate.\nTranslators 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, PX(15)).Align(wxALIGN_RIGHT)); 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 #if defined(__WXMSW__) wxIcon logo; if (HiDPIScalingFactor() == 1.0) { logo.LoadFile("appicon", wxBITMAP_TYPE_ICO_RESOURCE, 128, 128); } else { logo.LoadFile("appicon", wxBITMAP_TYPE_ICO_RESOURCE, 256, 256); if (HiDPIScalingFactor() != 2.0) { wxBitmap bmp; bmp.CopyFromIcon(logo); logo.CopyFromBitmap(wxBitmap(bmp.ConvertToImage().Scale(PX(128), PX(128), wxIMAGE_QUALITY_BICUBIC))); } } #elif defined(__WXGTK__) auto logo = wxArtProvider::GetIcon("net.poedit.Poedit", wxART_FRAME_ICON, wxSize(128, 128)); #else auto logo = wxArtProvider::GetBitmap("Poedit"); #endif auto logoWindow = new wxStaticBitmap(this, wxID_ANY, logo, 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.5/src/languagectrl.h0000644000175100001770000000504414664354065013221 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2013-2024 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.5/src/cloud_sync.h0000644000175100001770000001312414664354065012711 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2017-2024 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.5/src/version.h0000644000175100001770000000256414664354065012242 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2010-2024 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.5" #define POEDIT_VERSION "3.5" #define POEDIT_VERSION_WIN 3,5,0 #endif // Poedit_version_h poedit-3.5/src/crowdin_client.h0000644000175100001770000001156414664354065013560 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2015-2024 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.5/src/edframe.h0000644000175100001770000003367714664354065012171 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 1999-2024 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); /// 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. */ bool 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 save 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); bool 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.5/src/custom_buttons.cpp0000644000175100001770000004466414664354065014207 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2016-2024 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.5/src/catalog_json.h0000644000175100001770000000612114664354065013211 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2023-2024 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.5/src/commentdlg.h0000644000175100001770000000444514664354065012706 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2001-2024 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.5/src/gexecute.cpp0000644000175100001770000002337314664354065012722 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2000-2024 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" namespace { struct CommandInvocation { CommandInvocation(const wxString& command, const wxString& arguments) : exe(command), args(arguments) { } CommandInvocation(const wxString& cmdline) { exe = cmdline.BeforeFirst(_T(' ')); args = cmdline.Mid(exe.length() + 1); } wxString cmdline() const { #if defined(__WXOSX__) || defined(__WXMSW__) const auto fullexe = "\"" + GetGettextBinaryPath(exe) + "\""; #else const auto& fullexe(exe); #endif return args.empty() ? fullexe : fullexe + " " + args; } wxString exe; wxString args; }; struct ProcessOutput { long return_code = -1; std::vector std_out; std::vector std_err; }; bool ReadOutput(wxInputStream& s, std::vector& out) { // the stream could be already at EOF or in wxSTREAM_BROKEN_PIPE state s.Reset(); // Read the input as Latin1, even though we know it's UTF-8. This is terrible, // terrible thing to do, but gettext tools may sometimes output invalid UTF-8 // (e.g. when using non-ASCII, non-UTF8 msgids) and wxTextInputStream logic // can't cope well with failing conversions. To make this work, we read the // input as Latin1 and later re-encode it back and re-parse as UTF-8. wxTextInputStream tis(s, " ", wxConvISO8859_1); while (true) { const wxString line = tis.ReadLine(); if ( !line.empty() ) { // reconstruct the UTF-8 text if we can wxString line2(line.mb_str(wxConvISO8859_1), wxConvUTF8); if (line2.empty()) line2 = line; out.push_back(line2); } if (s.Eof()) break; if ( !s ) return false; } return true; } ProcessOutput ExecuteCommandAndCaptureOutput(const CommandInvocation& cmd, const wxExecuteEnv *env) { ProcessOutput pout; auto cmdline = cmd.cmdline(); wxLogTrace("poedit.execute", "executing: %s", cmdline.c_str()); wxScopedPtr process(new wxProcess); process->Redirect(); pout.return_code = wxExecute(cmdline, wxEXEC_BLOCK | wxEXEC_NODISABLE | wxEXEC_NOEVENTS, process.get(), env); if (pout.return_code != 0) { wxLogTrace("poedit.execute", " execution of command failed with exit code %d: %s", (int)pout.return_code, cmdline.c_str()); } wxInputStream *std_out = process->GetInputStream(); if ( std_out && !ReadOutput(*std_out, pout.std_out) ) pout.return_code = -1; wxInputStream *std_err = process->GetErrorStream(); if ( std_err && !ReadOutput(*std_err, pout.std_err) ) pout.return_code = -1; if ( pout.return_code == -1 ) { BOOST_THROW_EXCEPTION(Exception(wxString::Format(_("Cannot execute program: %s"), cmdline.c_str()))); } return pout; } #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 GetGettextVersion() { static uint32_t s_version = 0; if (!s_version) { // set old enough fallback version s_version = GETTEXT_VERSION_NUM(0, 18, 0); // then determine actual version CommandInvocation msgfmt("msgfmt", "--version"); auto p = ExecuteCommandAndCaptureOutput(msgfmt, nullptr); if (p.return_code == 0 && p.std_out.size() > 1) { auto line = str::to_utf8(p.std_out[0]); std::smatch m; if (std::regex_match(line, m, std::regex(R"(.* (([0-9]+)\.([0-9]+)(\.([0-9]+))?)$)"))) { 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; } ProcessOutput DoExecuteGettextImpl(CommandInvocation cmd) { // 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 (cmd.exe == "msgfmt" && GetGettextVersion() >= GETTEXT_VERSION_NUM(0, 22, 0)) { cmd.args = "--no-convert " + cmd.args; } #if defined(__WXOSX__) || defined(__WXMSW__) wxExecuteEnv env; wxGetEnvMap(&env.env); env.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.env["LANG"] = lang; return ExecuteCommandAndCaptureOutput(cmd, &env); #else // Unix return ExecuteCommandAndCaptureOutput(cmd, nullptr); #endif } ProcessOutput DoExecuteGettext(const wxString& cmdline) { #if wxUSE_GUI if (wxThread::IsMain()) { return DoExecuteGettextImpl(cmdline); } else { return dispatch::on_main([=]{ return DoExecuteGettextImpl(cmdline); }).get(); } #else return DoExecuteGettextImpl(cmdline); #endif } void LogUnrecognizedError(const wxString& err) { #ifdef __WXOSX__ // gettext-0.20 started showing setlocale() warnings under what are // normal circumstances when running from GUI; filter them out. // // Warning: Failed to set locale category LC_NUMERIC to de. // Warning: Failed to set locale category LC_TIME to de. // ...etc... if (err.starts_with("Warning: Failed to set locale category")) return; #endif // __WXOSX__ wxLogError("%s", err); } } // anonymous namespace bool ExecuteGettext(const wxString& cmdline) { auto output = DoExecuteGettext(cmdline); wxString pending; for (auto& ln: output.std_err) { if (ln.empty()) continue; // special handling of multiline errors if (ln[0] == ' ' || ln[0] == '\t') { pending += "\n\t" + ln.Strip(wxString::both); } else { if (!pending.empty()) LogUnrecognizedError(pending); pending = ln; } } if (!pending.empty()) LogUnrecognizedError(pending); return output.return_code == 0; } bool ExecuteGettextAndParseOutput(const wxString& cmdline, GettextErrors& errors) { auto output = DoExecuteGettext(cmdline); static const std::wregex RE_ERROR(L".*\\.po:([0-9]+)(:[0-9]+)?: (.*)"); for (const auto& ewx: output.std_err) { const auto e = ewx.ToStdWstring(); wxLogTrace("poedit", " stderr: %s", e.c_str()); if ( e.empty() ) continue; GettextError rec; std::wsmatch match; if (std::regex_match(e, match, RE_ERROR)) { rec.line = std::stoi(match.str(1)); rec.text = match.str(3); errors.push_back(rec); wxLogTrace("poedit.execute", _T(" => parsed error = \"%s\" at %d"), rec.text.c_str(), rec.line); } else { wxLogTrace("poedit.execute", " (unrecognized line!)"); // FIXME: handle the rest of output gracefully too } } return output.return_code == 0; } wxString QuoteCmdlineArg(const wxString& s) { wxString s2(s); #ifdef __UNIX__ s2.Replace("\"", "\\\""); #endif return "\"" + s2 + "\""; } #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 GetGettextBinaryPath(const wxString& program) { wxFileName path; path.SetPath(GetGettextPackagePath() + "/bin"); path.SetName(program); #ifdef __WXMSW__ path.SetExt("exe"); #endif if ( path.IsFileExecutable() ) { return path.GetFullPath(); } else { wxLogTrace("poedit.execute", L"%s doesn’t exist, falling back to %s", path.GetFullPath().c_str(), program.c_str()); return program; } } #endif // __WXOSX__ || __WXMSW__ poedit-3.5/src/utility.h0000644000175100001770000002030014664354065012244 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2010-2024 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 #ifndef HAVE_MKDTEMP #ifdef __WXOSX__ #define HAVE_MKDTEMP #endif #endif #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); } // ---------------------------------------------------------------------- // 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(); bool IsOk() const { return !m_dir.empty(); } // 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(); /// 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.5/src/icons.h0000644000175100001770000000321114664354065011656 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2004-2024 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 #endif // _ICONS_H_ poedit-3.5/src/sidebar.h0000644000175100001770000001506114664354065012162 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2014-2024 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 "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; wxMenu *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_suggestionMenuItems; 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.5/src/manager.cpp0000644000175100001770000005030014664354065012511 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2001-2024 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 "progressinfo.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; ProgressWindow::RunCancellableTaskThenDo(this, ("Updating project catalogs"), [=](dispatch::cancellation_token_ptr cancellationToken) { Progress progress((int)m_catalogs.GetCount()); for (size_t i = 0; i < m_catalogs.GetCount(); i++) { if (cancellationToken->is_cancelled()) return; wxString f = m_catalogs[i]; PoeditFrame *fr = PoeditFrame::Find(f); if (fr) { fr->UpdateCatalog(); } else { Progress subtask(1, progress, 1); auto cat = POCatalog::Create(f); UpdateResultReason reason; if (PerformUpdateFromSources(cat, reason)) { Catalog::ValidationResults validation_results; Catalog::CompilationStatus mo_status; cat->Save(f, false, validation_results, mo_status); } } } }, [=](bool /*finished*/) { UpdateListCat(); }); }); } void ManagerFrame::OnOpenCatalog(wxListEvent& event) { PoeditFrame *f = PoeditFrame::Create(m_catalogs[event.GetIndex()]); if (f) f->Raise(); } poedit-3.5/src/fileviewer.extensions.h0000644000175100001770000002230614664354065015110 00000000000000// Code generated with scripts/extract-fileviewer-mappings.py begins here { "_coffee", "coffeescript" }, { "_js", "javascript" }, { "_ls", "livescript" }, { "a51", "nasm" }, { "adb", "ada" }, { "adml", "xml" }, { "admx", "xml" }, { "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" }, { "avsc", "json" }, { "aw", "php" }, { "axml", "xml" }, { "b", "brainfuck" }, { "bas", "vbnet" }, { "bat", "batch" }, { "bats", "bash" }, { "bf", "brainfuck" }, { "bones", "javascript" }, { "boot", "clojure" }, { "brs", "brightscript" }, { "builder", "ruby" }, { "builds", "xml" }, { "bzl", "python" }, { "c++", "cpp" }, { "cake", "coffeescript" }, { "cats", "c" }, { "cc", "cpp" }, { "ccproj", "xml" }, { "ccxml", "xml" }, { "cfg", "ini" }, { "cgi", "perl" }, { "cginc", "hlsl" }, { "cjsx", "coffeescript" }, { "cl", "lisp" }, { "cl2", "clojure" }, { "clixml", "xml" }, { "clj", "clojure" }, { "cljc", "clojure" }, { "cljs", "clojure" }, { "cljs.hl", "clojure" }, { "cljscm", "clojure" }, { "cljx", "clojure" }, { "cls", "vbnet" }, { "cmake.in", "cmake" }, { "cmd", "batch" }, { "coffee", "coffeescript" }, { "command", "bash" }, { "cp", "cpp" }, { "cproject", "xml" }, { "cr", "crystal" }, { "cs", "csharp" }, { "cscfg", "xml" }, { "csdef", "xml" }, { "cshtml", "csharp" }, { "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" }, { "dotsettings", "xml" }, { "dpr", "pascal" }, { "dyalog", "apl" }, { "e", "eiffel" }, { "el", "elisp" }, { "eliom", "ocaml" }, { "eliomi", "ocaml" }, { "emacs", "elisp" }, { "emacs.desktop", "elisp" }, { "erb.deface", "erb" }, { "erl", "erlang" }, { "es", "javascript" }, { "es6", "javascript" }, { "escript", "erlang" }, { "ex", "elixir" }, { "exs", "elixir" }, { "eye", "ruby" }, { "f", "fortran" }, { "f03", "fortran" }, { "f08", "fortran" }, { "f77", "fortran" }, { "f90", "fortran" }, { "f95", "fortran" }, { "fcgi", "lua" }, { "feature", "gherkin" }, { "filters", "xml" }, { "for", "fortran" }, { "fpp", "fortran" }, { "frag", "javascript" }, { "frm", "vbnet" }, { "frx", "vbnet" }, { "fs", "fsharp" }, { "fsi", "fsharp" }, { "fsproj", "xml" }, { "fsx", "fsharp" }, { "fun", "sml" }, { "fx", "hlsl" }, { "fxh", "hlsl" }, { "fxml", "xml" }, { "gd", "gdscript" }, { "gemspec", "ruby" }, { "geojson", "json" }, { "glade", "xml" }, { "gltf", "json" }, { "gml", "xml" }, { "gmx", "xml" }, { "god", "ruby" }, { "gql", "graphql" }, { "grt", "groovy" }, { "grxml", "xml" }, { "gs", "javascript" }, { "gtpl", "groovy" }, { "gvy", "groovy" }, { "gyp", "python" }, { "gypi", "python" }, { "h", "cpp" }, { "h++", "cpp" }, { "haml.deface", "haml" }, { "hbs", "handlebars" }, { "hh", "cpp" }, { "hic", "clojure" }, { "hlsli", "hlsl" }, { "hpp", "cpp" }, { "hqf", "sqf" }, { "hrl", "erlang" }, { "hs", "haskell" }, { "hsc", "haskell" }, { "htm", "html" }, { "html.hl", "html" }, { "hx", "haxe" }, { "hxsl", "haxe" }, { "hxx", "cpp" }, { "i7x", "inform7" }, { "iced", "coffeescript" }, { "idc", "c" }, { "ijs", "j" }, { "ily", "lilypond" }, { "iml", "xml" }, { "inc", "php" }, { "inl", "cpp" }, { "ino", "cpp" }, { "iol", "jolie" }, { "ipp", "cpp" }, { "ivy", "xml" }, { "jade", "pug" }, { "jake", "javascript" }, { "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" }, { "kml", "xml" }, { "kojo", "scala" }, { "ksh", "bash" }, { "kt", "kotlin" }, { "ktm", "kotlin" }, { "kts", "kotlin" }, { "l", "lisp" }, { "launch", "xml" }, { "lektorproject", "ini" }, { "ll", "llvm" }, { "lmi", "python" }, { "lol", "lolcode" }, { "lpr", "pascal" }, { "ls", "livescript" }, { "lsp", "lisp" }, { "ly", "lilypond" }, { "m", "objectivec" }, { "mak", "makefile" }, { "make", "makefile" }, { "md", "markdown" }, { "mdown", "markdown" }, { "mdpolicy", "xml" }, { "mdwn", "markdown" }, { "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" }, { "mspec", "ruby" }, { "mumps", "m" }, { "mustache", "django" }, { "mxml", "xml" }, { "natvis", "xml" }, { "ncl", "xml" }, { "ndproj", "xml" }, { "ni", "inform7" }, { "nimrod", "nim" }, { "njk", "django" }, { "njs", "javascript" }, { "nproj", "xml" }, { "nse", "lua" }, { "nsh", "nsis" }, { "nsi", "nsis" }, { "nuspec", "xml" }, { "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" }, { "plist", "xml" }, { "plx", "perl" }, { "pm", "perl" }, { "podsl", "lisp" }, { "podspec", "ruby" }, { "pp", "pascal" }, { "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" }, { "qbs", "qml" }, { "rabl", "ruby" }, { "rake", "ruby" }, { "rb", "ruby" }, { "rbuild", "ruby" }, { "rbw", "ruby" }, { "rbx", "ruby" }, { "rbxs", "lua" }, { "rd", "r" }, { "rdf", "xml" }, { "re", "cpp" }, { "reek", "yaml" }, { "regexp", "regex" }, { "resx", "xml" }, { "rkt", "racket" }, { "rktd", "racket" }, { "rktl", "racket" }, { "robot", "robotframework" }, { "ronn", "markdown" }, { "rpy", "python" }, { "rq", "sparql" }, { "rs", "rust" }, { "rs.in", "rust" }, { "rss", "xml" }, { "rsx", "r" }, { "ru", "ruby" }, { "rviz", "yaml" }, { "sbt", "scala" }, { "sc", "scala" }, { "sch", "scheme" }, { "scm", "scheme" }, { "scpt", "applescript" }, { "scrbl", "racket" }, { "scxml", "xml" }, { "sexp", "lisp" }, { "sfproj", "xml" }, { "sh", "bash" }, { "sh-session", "shellsession" }, { "sh.in", "bash" }, { "shproj", "xml" }, { "sig", "sml" }, { "sjs", "javascript" }, { "sld", "scheme" }, { "sls", "scheme" }, { "sps", "scheme" }, { "srdf", "xml" }, { "ss", "scheme" }, { "ssjs", "javascript" }, { "st", "smalltalk" }, { "storyboard", "xml" }, { "sttheme", "xml" }, { "styl", "stylus" }, { "sublime-snippet", "xml" }, { "sublime-syntax", "yaml" }, { "syntax", "yaml" }, { "t", "perl" }, { "tac", "python" }, { "targets", "xml" }, { "tcc", "cpp" }, { "tf", "hcl" }, { "tfstate", "json" }, { "tfstate.backup", "json" }, { "tfvars", "hcl" }, { "thor", "ruby" }, { "tm", "tcl" }, { "tmcommand", "xml" }, { "tml", "xml" }, { "tmlanguage", "xml" }, { "tmpreferences", "xml" }, { "tmsnippet", "xml" }, { "tmtheme", "xml" }, { "tmux", "bash" }, { "tool", "bash" }, { "topojson", "json" }, { "tpl", "smarty" }, { "tpp", "cpp" }, { "ts", "typescript" }, { "tsx", "typescript" }, { "ttl", "turtle" }, { "uc", "unrealscript" }, { "ui", "xml" }, { "urdf", "xml" }, { "ux", "xml" }, { "v", "verilog" }, { "vapi", "vala" }, { "vb", "vbnet" }, { "vba", "vbnet" }, { "vbhtml", "vbnet" }, { "vbproj", "xml" }, { "vbs", "vbnet" }, { "vcxproj", "xml" }, { "veo", "verilog" }, { "vhd", "vhdl" }, { "vhf", "vhdl" }, { "vhi", "vhdl" }, { "vho", "vhdl" }, { "vhs", "vhdl" }, { "vht", "vhdl" }, { "vhw", "vhdl" }, { "vsixmanifest", "xml" }, { "vssettings", "xml" }, { "vstemplate", "xml" }, { "vxml", "xml" }, { "wast", "wasm" }, { "wat", "wasm" }, { "watchr", "ruby" }, { "webapp", "json" }, { "webmanifest", "json" }, { "wixproj", "xml" }, { "wlua", "lua" }, { "workbook", "markdown" }, { "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" }, { "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" }, { "yap", "prolog" }, { "yml", "yaml" }, { "yml.mysql", "yaml" }, { "yrl", "erlang" }, { "yy", "json" }, { "yyp", "json" }, { "zcml", "xml" }, { "zsh", "bash" }, // Code generated with scripts/extract-fileviewer-mappings.py ends here poedit-3.5/src/tm/0000755000175100001770000000000014664354152011072 500000000000000poedit-3.5/src/tm/suggestions.cpp0000644000175100001770000000471514664354065014102 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2014-2024 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.5/src/tm/tmx_io.h0000644000175100001770000000274214664354065012472 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2018-2024 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 { void ImportFromFile(std::istream& file, TranslationMemory& tm); void ExportToFile(TranslationMemory& tm, std::ostream& file); } // namespace TMX #endif // Poedit_tmx_io_h poedit-3.5/src/tm/transmem.cpp0000644000175100001770000007256714664354065013370 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2013-2024 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 "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: \ throw Exception(wxString::Format(_("Translation memory database is corrupted: %s (%d)."), \ e.getError(), (int)e.getType())); \ default: \ throw Exception(wxString::Format(_("Translation memory error: %s (%d)."), \ e.getError(), (int)e.getType())); \ } \ } \ catch (std::exception& e) \ { \ throw Exception(e.what()); \ } // Manages IndexReader and Searcher instances in multi-threaded environment. // Curiously, Lucene uses shared_ptr-based refcounting *and* explicit one as // well, with a crucial part not well protected. // // See https://issues.apache.org/jira/browse/LUCENE-3567 for the exact issue // encountered by Poedit's use as well. For an explanation of the manager // class, see // http://blog.mikemccandless.com/2011/09/lucenes-searchermanager-simplifies.html // http://blog.mikemccandless.com/2011/11/near-real-time-readers-with-lucenes.html class SearcherManager { public: SearcherManager(IndexWriterPtr writer) { m_reader = writer->getReader(); m_searcher = newLucene(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 = 2; 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()); 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(); for (int32_t i = 0; i < numDocs; i++) { 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 { 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); } } 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.5/src/tm/tmx_io.cpp0000644000175100001770000001617414664354065013031 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2018-2024 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 "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 void TMX::ImportFromFile(std::istream& file, TranslationMemory& tm) { xml_document doc; auto result = doc.load(file); if (!result) throw std::runtime_error(result.description()); auto root = doc.child("tmx"); if (!root) throw 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) throw Exception(_("The TMX file is malformed.")); tm.ImportData([=,&counter,&body](auto& writer) { for (auto tu: body.children("tu")) { 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++; } } }); if (counter == 0) throw Exception(_("No translations were found in the TMX file.")); } 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.5/src/tm/transmem.h0000644000175100001770000001427214664354065013022 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2013-2024 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.5/src/tm/suggestions.h0000644000175100001770000001242614664354065013545 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2014-2024 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.5/src/commentdlg.cpp0000644000175100001770000000556314664354065013243 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2001-2024 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.5/src/hidpi.h0000644000175100001770000000674614664354065011660 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2015-2024 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.5/src/app_updates.cpp0000644000175100001770000001527414664354065013417 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2024 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.5/src/language_impl_legacy.h0000644000175100001770000002616514664354065014710 00000000000000 // 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.5/src/pretranslate.h0000644000175100001770000000552214664354065013256 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 1999-2024 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 a range of items. If not nullptr, report # of pre-translated items in @a matchesCount. Returns number of pre-translated (i.e. changed) items. */ template int PreTranslateCatalog(wxWindow *window, CatalogPtr catalog, const T& range, const PreTranslateOptions& options); /** 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. */ int PreTranslateCatalog(wxWindow *window, CatalogPtr catalog, const PreTranslateOptions& options); /** 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.5/src/icons.cpp0000644000175100001770000001631714664354065012224 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2004-2024 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__ poedit-3.5/src/http_client.cpp0000644000175100001770000001331514664354065013421 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2015-2024 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.5/src/utility.cpp0000644000175100001770000003355614664354065012620 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2010-2024 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; } // ---------------------------------------------------------------------- // TempDirectory // ---------------------------------------------------------------------- bool TempDirectory::ms_keepFiles = false; TempDirectory::TempDirectory() { #ifdef HAVE_MKDTEMP 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 URLByDeletingLastPathComponent] 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.5/src/catalog_xliff.h0000644000175100001770000001074014664354065013352 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2018-2024 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)) {} 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.5/src/prefsdlg.cpp0000644000175100001770000013736614664354065012727 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2000-2024 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 "configuration.h" #include "crowdin_gui.h" #include "hidpi.h" #include "tm/transmem.h" #include "tm/tmx_io.h" #include "chooselang.h" #include "errors.h" #include "extractors/extractor_legacy.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); m_showSummary = new wxCheckBox(this, wxID_ANY, _("Show summary after updating files")); sizer->Add(m_showSummary, wxSizerFlags().PXBorder(wxTOP)); 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_showSummary->SetValue(cfg.ReadBool("show_summary", false)); 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("show_summary", m_showSummary->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_showSummary, *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); wxProgressDialog progress(_("Translation Memory"), _(L"Importing translations…"), (int)paths.size() * 2 + 1, this, wxPD_APP_MODAL|wxPD_AUTO_HIDE|wxPD_CAN_ABORT); auto tm = TranslationMemory::Get().GetWriter(); int step = 0; for (size_t i = 0; i < paths.size(); i++) { try { auto cat = Catalog::Create(paths[i]); if (!progress.Update(++step)) break; tm->Insert(cat); if (!progress.Update(++step)) break; } catch (...) { wxLogError(_(L"Error loading translation file “%s”."), paths[i]); progress.Update(++step); if (!progress.Update(++step)) break; } } progress.Pulse(_(L"Finalizing…")); tm->Commit(); UpdateStats(); } } 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); wxProgressDialog progress(_("Translation Memory"), _(L"Importing translations…"), (int)paths.size() + 1, this, wxPD_APP_MODAL|wxPD_AUTO_HIDE|wxPD_CAN_ABORT); progress.Pulse(); for (auto p: paths) { try { std::ifstream f; f.open(p.fn_str()); TMX::ImportFromFile(f, TranslationMemory::Get()); f.close(); if (!progress.Pulse()) break; } catch (...) { wxWindowPtr err(new wxMessageDialog ( this, wxString::Format(_(L"Importing translation memory from “%s” failed."), p), _("Import error"), wxOK | wxICON_ERROR )); err->SetExtendedMessage(DescribeCurrentException()); // FIXME: can't use ShowWindowModalThenDo, as would be better, because multiple // errors may occur in this loop. See https://github.com/vslavik/poedit/issues/748 if (paths.size() == 1) err->ShowWindowModalThenDo([err](int){}); else err->ShowModal(); } } 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(); wxProgressDialog progress(_("Translation Memory"), _(L"Exporting translations…"), 1, this, wxPD_APP_MODAL|wxPD_AUTO_HIDE|wxPD_CAN_ABORT); progress.Pulse(); try { std::ofstream f; f.open(p.fn_str()); TMX::ExportToFile(TranslationMemory::Get(), f); f.close(); } catch (...) { wxWindowPtr err(new wxMessageDialog ( this, wxString::Format(_(L"Exporting translation memory to “%s” failed."), p), _("Export error"), wxOK | wxICON_ERROR )); err->SetExtendedMessage(DescribeCurrentException()); err->ShowWindowModalThenDo([err](int){}); } } } 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()); #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: if (ColorScheme::GetWindowMode(this) == ColorScheme::Dark) { listPanel->SetBackgroundColour(wxNullColour); } else #endif { listPanel->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_LISTBOX)); } }); 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_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.5/src/extractors/0000755000175100001770000000000014664354152012650 500000000000000poedit-3.5/src/extractors/extractor_legacy.h0000644000175100001770000001201214664354065016277 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 1999-2024 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; } wxString 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.5/src/extractors/extractor.h0000644000175100001770000001347014664354065014764 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2017-2024 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 "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; }; /** 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. Returns filename of the created POT file, which is stored in @a tmpdir or empty string on failure. */ static wxString 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. Returns filename of the created POT file, which is stored in @a tmpdir or empty string on failure. */ virtual wxString 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 catalogs using msgcat static wxString ConcatCatalogs(TempDirectory& tmpdir, const std::vector& files); 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.5/src/extractors/extractor_legacy.cpp0000644000175100001770000002535414664354065016647 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2000-2024 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); } // FIXME: Do this in subprocess, avoid changing CWD altogether in main process class CurrentWorkingDirectoryChanger { public: CurrentWorkingDirectoryChanger(const wxString& path) { if (!path.empty() && path != ".") { m_old = wxGetCwd(); wxSetWorkingDirectory(path); } } ~CurrentWorkingDirectoryChanger() { if (!m_old.empty()) wxSetWorkingDirectory(m_old); } private: wxString m_old; }; } // 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 { wxString cmdline, kline, fline; cmdline = Command; cmdline.Replace("%o", QuoteCmdlineArg(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", QuoteCmdlineArg(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()); } } wxString 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 batchfiles, tempfiles; size_t i, last = 0; while (last < files.size()) { batchfiles.clear(); 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"); CurrentWorkingDirectoryChanger cwd(sourceSpec.BasePath); if (!ExecuteGettext(m_spec.BuildCommand(batchfiles, sourceSpec.Keywords, tempfile, sourceSpec.Charset))) { throw ExtractionException(ExtractionError::Unspecified); } tempfiles.push_back(tempfile); } return ConcatCatalogs(tmpdir, tempfiles); } 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.5/src/extractors/extractor_gettext.cpp0000644000175100001770000001661314664354065017065 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2017-2024 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: wxString Extract(TempDirectory& tmpdir, const SourceCodeSpec& sourceSpec, const std::vector& files) const override { 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", QuoteCmdlineArg(outfile), QuoteCmdlineArg(basepath), QuoteCmdlineArg(filelist.GetName()), QuoteCmdlineArg(!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", QuoteCmdlineArg(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; if (!ExecuteGettext(cmdline)) throw ExtractionException(ExtractionError::Unspecified); return outfile; } 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.5/src/extractors/extractor.cpp0000644000175100001770000002450414664354065015317 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2000-2024 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)) { throw 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 { throw 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; } wxString 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 subPots; 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 subPot = ex->Extract(tmpdir, sourceSpec, ex_files); if (!subPot.empty()) subPots.push_back(subPot); 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)subPots.size()); if (subPots.empty()) { throw ExtractionException(ExtractionError::NoSourcesFound); } else if (subPots.size() == 1) { return subPots.front(); } else { wxLogTrace("poedit.extractor", "merging %d subPOTs", (int)subPots.size()); return ConcatCatalogs(tmpdir, subPots); } } 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); } wxString Extractor::ConcatCatalogs(TempDirectory& tmpdir, const std::vector& files) { if (files.empty()) { return ""; } else if (files.size() == 1) { return files.front(); } auto outfile = tmpdir.CreateFileName("concatenated.pot"); 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 cmd = wxString::Format ( "msgcat --force-po -o %s --files-from=%s", QuoteCmdlineArg(outfile), QuoteCmdlineArg(filelist.GetName()) ); bool succ = ExecuteGettext(cmd); if (!succ) { wxLogError(_("Failed command: %s"), cmd.c_str()); wxLogError(_("Failed to merge gettext catalogs.")); throw ExtractionException(ExtractionError::Unspecified); } return outfile; } 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.5/src/custom_buttons.h0000644000175100001770000000755114664354065013646 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2016-2024 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.5/src/findframe.h0000644000175100001770000000722614664354065012510 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2001-2024 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.5/src/languagectrl.cpp0000644000175100001770000002001214664354065013544 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2013-2024 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.5/src/recent_files.h0000644000175100001770000000524314664354065013214 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2020-2024 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.5/src/Makefile.am0000644000175100001770000001036614664354065012437 00000000000000 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_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_xliff.cpp catalog_xliff.h \ chooselang.cpp chooselang.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 \ progressinfo.h progressinfo.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 \ 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/summary.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.5/src/cat_sorting.h0000644000175100001770000000670314664354065013070 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2010-2024 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; } } private: const Catalog& m_catalog; SortOrder m_order; std::unique_ptr m_collator; std::vector m_sortKeys; }; #endif // _CAT_SORTING_H_ poedit-3.5/src/http_client.h0000644000175100001770000001743014664354065013070 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2014-2024 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; }; /** 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.5/src/hidpi.cpp0000644000175100001770000001016514664354065012201 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2015-2024 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.5/src/attentionbar.cpp0000644000175100001770000002127314664354065013600 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2008-2024 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.5/src/cloud_accounts_ui.cpp0000644000175100001770000006514314664354065014614 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2023-2024 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 ServiceSelectionPanel::ServiceSelectionPanel(wxWindow *parent) : wxPanel(parent, wxID_ANY) { auto topsizer = new wxBoxSizer(wxVERTICAL); SetSizer(topsizer); m_sizer = new wxBoxSizer(wxVERTICAL); topsizer->AddStretchSpacer(); topsizer->Add(m_sizer, wxSizerFlags().Expand().Border(wxALL, PX(16))); topsizer->AddStretchSpacer(); } void ServiceSelectionPanel::AddService(AccountDetailPanel *account) { bool isFirst = GetChildren().empty(); auto content = CreateServiceContent(account); size_t pos = (!isFirst && time(NULL) % 2 == 0 /* aka rand() w/o need to seed */) ? m_sizer->GetItemCount() : 0; size_t posLine = (pos == 0) ? 1 : pos; m_sizer->Insert(pos, content, wxSizerFlags(1).Expand()); if (!isFirst) m_sizer->Insert(posLine, new wxStaticLine(this, wxID_ANY), wxSizerFlags().Expand().Border(wxTOP|wxBOTTOM, PX(24))); } wxSizer *ServiceSelectionPanel::CreateServiceContent(AccountDetailPanel *account) { auto sizer = new wxBoxSizer(wxVERTICAL); auto logo = new StaticBitmap(this, account->GetServiceLogo()); logo->SetCursor(wxCURSOR_HAND); logo->Bind(wxEVT_LEFT_UP, [=](wxMouseEvent&){ wxLaunchDefaultBrowser(account->GetServiceLearnMoreURL()); }); sizer->Add(logo, wxSizerFlags().PXDoubleBorder(wxBOTTOM)); auto explain = new ExplanationLabel(this, account->GetServiceDescription()); sizer->Add(explain, wxSizerFlags().Expand()); auto signIn = new wxButton(this, wxID_ANY, MSW_OR_OTHER(_("Add account"), _("Add Account"))); signIn->Bind(wxEVT_BUTTON, [=](wxCommandEvent&){ account->SignIn(); }); #ifdef __WXMSW__ signIn->SetBackgroundColour(GetBackgroundColour()); #endif auto learnMore = new LearnMoreLink(this, account->GetServiceLearnMoreURL(), // TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" wxString::Format(_("Learn more about %s"), account->GetServiceName())); auto buttons = new wxBoxSizer(wxHORIZONTAL); sizer->Add(buttons, wxSizerFlags().Expand().Border(wxTOP, PX(16))); buttons->Add(learnMore, wxSizerFlags().Center()); buttons->AddStretchSpacer(); buttons->Add(signIn, wxSizerFlags()); return sizer; } AccountsPanel::AccountsPanel(wxWindow *parent, int flags) : wxPanel(parent, wxID_ANY) { wxSizer *topsizer = new wxBoxSizer(wxVERTICAL); SetSizer(topsizer); 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, [=] { if (ColorScheme::GetWindowMode(m_panelsBook) == ColorScheme::Light) m_panelsBook->SetBackgroundColour(*wxWHITE); else m_panelsBook->SetBackgroundColour(wxNullColour); }); sizer->Add(m_panelsBook, wxSizerFlags(1).Expand()); m_introPanel = new ServiceSelectionPanel(m_panelsBook); m_panelsBook->AddPage(m_introPanel, ""); 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() { if (IsSignedIn()) { // select 1st available signed-in service if we can and hide the intro panel: if (m_list->GetSelectedRow() == wxNOT_FOUND) { for (unsigned i = 0; i < m_panels.size(); i++) { if (m_panels[i]->IsSignedIn()) { SelectAccount(i); break; } } } } else { // don't show the list yet if no account was signed in: auto sizer = m_list->GetContainingSizer(); sizer->Hide(m_list); sizer->Layout(); } // perform first-show initialization: for (auto& p: m_panels) p->InitializeAfterShown(); 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_introPanel->AddService(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; } SelectAccount(index); } void AccountsPanel::SelectAccount(unsigned index) { m_list->SelectRow(index); m_panelsBook->SetSelection(1 + 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.5/src/titleless_window.cpp0000644000175100001770000002175414664354065014511 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2013-2024 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 BOOL running; BOOL ret = SystemParametersInfo(SPI_GETSCREENREADER, 0, &running, 0); if (ret && running) 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.5/src/json.h0000644000175100001770000000504014664354065011516 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2016-2024 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.5/src/cloud_accounts_ui.h0000644000175100001770000001550314664354065014254 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2015-2024 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 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; }; /// Panel for choosing a service if the user doesn't have any yet class ServiceSelectionPanel : public wxPanel { public: ServiceSelectionPanel(wxWindow *parent); /// Add service information void AddService(AccountDetailPanel *account); protected: wxSizer *CreateServiceContent(AccountDetailPanel *account); private: wxBoxSizer *m_sizer; }; /// 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; ServiceSelectionPanel *m_introPanel; 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(wxHORIZONTAL); m_panel = new LoginPanel(this, LoginPanel::AddCancelButton | LoginPanel::SlimBorders); m_panel->SetClientSize(m_panel->GetBestSize()); topsizer->Add(m_panel, wxSizerFlags(1).Expand().Border(wxALL, 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.5/src/syntaxhighlighter.cpp0000644000175100001770000003352114664354065014652 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2014-2024 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])" 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.5/src/concurrency.cpp0000644000175100001770000001173514664354065013442 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2010-2024 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) && !defined(__WXOSX__) #include #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) && !defined(__WXOSX__) CATCH_AND_WRAP(web::http::http_exception) #endif CATCH_AND_WRAP(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, detail::queue q) { dispatch_queue_t dq = 0; switch (q) { case detail::queue::main: dq = dispatch_get_main_queue(); break; case detail::queue::priority_default: dq = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); break; } 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(); gs_background_executor.reset(); gs_main_thread_executor.reset(); } poedit-3.5/src/http_client_cpprestsdk.cpp0000644000175100001770000003222214664354065015661 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2014-2024 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::http_exception(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.5/src/titleless_window.h0000644000175100001770000000703314664354065014150 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2020-2024 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.5/src/localazy_gui.h0000644000175100001770000000547614664354065013244 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2023-2024 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.5/src/edapp.cpp0000644000175100001770000011360214664354065012175 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 1999-2024 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 #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 "chooselang.h" #include "customcontrols.h" #include "gexecute.h" #include "hidpi.h" #include "http_client.h" #include "icons.h" #include "version.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); 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); // workaround wx bug, see https://github.com/wxWidgets/wxWidgets/pull/24297 class PoeditTranslationsLoader : public wxFileTranslationsLoader { public: wxArrayString GetAvailableTranslations(const wxString& domain) const override { auto all = wxFileTranslationsLoader::GetAvailableTranslations(domain); all.push_back("en"); return all; } }; trans->SetLoader(new PoeditTranslationsLoader); int language = wxLANGUAGE_DEFAULT; #if NEED_CHOOSELANG_UI auto uilang = GetUILanguage(); if (!uilang.empty()) { auto langinfo = wxLocale::FindLanguageInfo(uilang); if (langinfo) { language = langinfo->Language; // keep 'uilang' for use below } } #endif // Properly set locale is important for some aspects of GTK+ as well as // other things. It's also the common thing to do, so don't break // expectations needlessly: { // 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(); #if NEED_CHOOSELANG_UI if (!uilang.empty()) trans->SetLanguage(uilang); #endif } trans->AddStdCatalog(); trans->AddCatalog("poedit"); wxString bestTrans = trans->GetBestTranslation("poedit"); Language uiLang = Language::TryParse(bestTrans.ToStdWstring()); 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()); const wxLanguageInfo *info = wxLocale::FindLanguageInfo(bestTrans); g_layoutDirection = info ? info->LayoutDirection : wxLayout_Default; #ifdef __WXMSW__ AppUpdates::Get().SetLanguage(bestTrans.utf8_string()); #endif #ifdef SUPPORTS_OTA_UPDATES SetupOTALanguageUpdate(trans, bestTrans); #endif } #ifdef SUPPORTS_OTA_UPDATES void PoeditApp::SetupOTALanguageUpdate(wxTranslations *trans, const wxString& lang) { if (lang == "en" || lang == "en_US") return; // normalize language code for requests wxString langMO(lang); if (langMO == "zh-Hans") langMO = "zh_CN"; else if (langMO == "zh-Hant") langMO = "zh_TW"; else langMO.Replace("-", "_"); #if defined(__UNIX__) && !defined(__WXOSX__) // GetBestTranslation() can fall back to the locale there, so check if we ship this translation auto avail = trans->GetAvailableTranslations("poedit"); if (std::find(avail.begin(), avail.end(), lang) == avail.end()) { langMO = lang.BeforeFirst('_'); if (std::find(avail.begin(), avail.end(), langMO) == avail.end()) return; } #endif 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 + "/" + lang + "/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 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-2024 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 } 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(); 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.5/src/edframe.cpp0000644000175100001770000032117414664354065012514 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 1999-2024 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 "progressinfo.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(*wxSTANDARD_CURSOR); } }; 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(); // shutdown the spellchecker: InitSpellchecker(); } 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); }); } bool PoeditFrame::ExportCatalogToHTML(const wxString& filename) { wxBusyCursor bcur; TempOutputFileFor tempfile(filename); std::ofstream f; f.open(tempfile.FileName().fn_str()); m_catalog->ExportToHTML(f); f.close(); if (!tempfile.Commit()) { wxLogError(_(L"Couldn’t save file %s."), filename); return false; } return true; } 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::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(); } } bool PoeditFrame::UpdateCatalog(const wxString& pot_file) { auto cat = std::dynamic_pointer_cast(m_catalog); if (!cat) return false; // 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 std::unique_ptr locker; if (m_list) locker.reset(new wxWindowUpdateLocker(m_list)); UpdateResultReason reason; bool succ; if (pot_file.empty()) { if (cat->HasSourcesAvailable()) { succ = PerformUpdateFromSourcesWithUI(this, cat, reason); locker.reset(); EnsureAppropriateContentView(); NotifyCatalogChanged(m_catalog); } else { reason = UpdateResultReason::NoSourcesFound; succ = false; } } else { succ = PerformUpdateFromPOTWithUI(this, cat, pot_file, reason); locker.reset(); EnsureAppropriateContentView(); NotifyCatalogChanged(m_catalog); } m_modified = succ || m_modified; UpdateStatusBar(); if (!succ) { // FIXME: nicer UI than this wxString msgSuffix; if (!reason.file.empty() && reason.file != ".") msgSuffix += "\n\n" + wxString::Format(_("In: %s"), reason.file); switch (reason.code) { case UpdateResultReason::NoSourcesFound: { 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."); expl += msgSuffix; dlg->SetExtendedMessage(expl); dlg->ShowWindowModalThenDo([dlg](int){}); break; } case UpdateResultReason::PermissionDenied: { wxWindowPtr dlg(new wxMessageDialog ( this, _("Permission denied."), MSW_OR_OTHER(_("Updating failed"), ""), wxOK | wxICON_ERROR )); wxString expl = _(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. expl += "\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. expl += "\n\n" + _("If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders."); } #endif expl += msgSuffix; dlg->SetExtendedMessage(expl); dlg->ShowWindowModalThenDo([dlg](int){}); break; } case UpdateResultReason::Unspecified: { wxLogWarning(_("Translation entries in the file are probably incorrect.")); wxLogError( _("Updating the file failed. Click on 'Details >>' for details.")); break; } case UpdateResultReason::CancelledByUser: break; } } return succ; } void PoeditFrame::OnUpdateFromSources(wxCommandEvent&) { DoIfCanDiscardCurrentDoc([=]{ try { if (UpdateCatalog()) { if (Config::UseTM() && Config::MergeBehavior() == Merge_UseTM) { if (PreTranslateCatalog(this, m_catalog, PreTranslateOptions(PreTranslate_OnlyGoodQuality))) { if (!m_modified) { m_modified = true; UpdateTitle(); } RefreshControls(); } } } } catch (...) { wxLogError("%s", DescribeCurrentException()); } RefreshControls(); }); } 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); wxWindowPtr dlg( new wxFileDialog(this, MACOS_OR_OTHER("", _("Open translation template")), path, wxEmptyString, Catalog::GetTypesFileMask({Catalog::Type::POT, Catalog::Type::PO}), 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)); try { if (UpdateCatalog(pot_file)) { if (Config::UseTM() && Config::MergeBehavior() == Merge_UseTM) { if (PreTranslateCatalog(this, m_catalog, PreTranslateOptions(PreTranslate_OnlyGoodQuality))) { if (!m_modified) { m_modified = true; UpdateTitle(); } RefreshControls(); } } } } catch (...) { wxLogError("%s", DescribeCurrentException()); } } RefreshControls(); }); } void PoeditFrame::OnUpdateFromPOTUpdate(wxUpdateUIEvent& event) { if (!m_catalog || m_catalog->GetFileType() != Catalog::Type::PO) event.Enable(false); else OnHasCatalogUpdate(event); } #ifdef HAVE_HTTP_CLIENT void PoeditFrame::OnUpdateFromCrowdin(wxCommandEvent&) { 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()); m_pendingHumanEditedItem.reset(); m_navigationHistory.clear(); 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; wildcard.Replace("*", "en"); wxFileName ref(wildcard); if (!ref.FileExists() || wxFileName(filename) == ref) return; 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."), ref.GetFullName())); // 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) { 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; if ( !m_catalog->Save(catalog, true, validation_results, mo_compilation_status) ) { 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" + _("Ctrl+") + "B"); menu->Append(XRCID("menu_clear"), #ifdef __WXMSW__ wxString(_("Clear translation")) #else wxString(_("Clear Translation")) #endif + "\t" + _("Ctrl+") + "K"); menu->Append(XRCID("menu_comment"), #ifdef __WXMSW__ wxString(_("Edit comment")) #else wxString(_("Edit Comment")) #endif #ifndef __WXOSX__ + "\t" + _("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.5/src/main_toolbar.h0000644000175100001770000000320214664354065013211 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2014-2024 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.5/src/cat_update.h0000644000175100001770000000451614664354065012665 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2000-2024 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_po.h" class WXDLLIMPEXP_FWD_CORE wxWindow; /// Result of PerformUpdateFromSources() struct UpdateResultReason { enum Code { CancelledByUser, Unspecified, NoSourcesFound, PermissionDenied }; UpdateResultReason(Code c = Unspecified) : code(c) {} Code code; wxString file; }; enum UpdateFlags { Update_DontShowSummary = 1 }; /** Update catalog from source code, if configured, and provide UI during the operation. */ bool PerformUpdateFromSources(POCatalogPtr catalog, UpdateResultReason& reason); bool PerformUpdateFromSourcesWithUI(wxWindow *parent, POCatalogPtr catalog, UpdateResultReason& reason, int flags = 0); /** Similarly for updating from a POT file. */ bool PerformUpdateFromPOTWithUI(wxWindow *parent, POCatalogPtr catalog, const wxString& pot_file, UpdateResultReason& reason); #endif // Poedit_cat_update_h poedit-3.5/src/text_control.cpp0000644000175100001770000006705014664354065013635 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 1999-2024 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(5); padding.SetRightIndent(5); 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) { 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) { 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.5/src/colorscheme.h0000644000175100001770000001156014664354065013054 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2016-2024 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, 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.5/src/localazy_gui.cpp0000644000175100001770000003060614664354065013570 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2023-2024 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.5/src/language_impl_plurals.h0000644000175100001770000003121014664354065015111 00000000000000// 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.5/src/recent_files.cpp0000644000175100001770000004030614664354065013546 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2020-2024 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); #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.IsOk() && (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.5/src/customcontrols.h0000644000175100001770000001673614664354065013661 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2014-2024 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.5/src/manager.h0000644000175100001770000000670614664354065012171 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2001-2024 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.5/src/propertiesdlg.cpp0000644000175100001770000010065314664354065013771 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2000-2024 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); sizer->Add(lbl, wxSizerFlags().Expand()); m_list = new wxListBox(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0, nullptr, wxLB_EXTENDED); sizer->Add(m_list, wxSizerFlags(1).Expand().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.5/src/welcomescreen.h0000644000175100001770000000475614664354065013415 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2013-2024 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.5/src/qa_checks.h0000644000175100001770000000610214664354065012466 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2017-2024 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.5/src/configuration.cpp0000644000175100001770000002001714664354065013750 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2016-2024 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.5/src/chooselang.cpp0000644000175100001770000000555614664354065013236 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2003-2024 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 "chooselang.h" #if NEED_CHOOSELANG_UI #include "language.h" #include #include #include static void SaveUILanguage(const wxString& lang) { if (lang.empty()) wxConfig::Get()->Write("ui_language", "default"); else wxConfig::Get()->Write("ui_language", lang); } wxString GetUILanguage() { wxString lng = wxConfig::Get()->Read("ui_language"); if (!lng.empty() && lng != "default") return lng; else return ""; } static bool ChooseLanguage(wxString *value) { wxArrayString langs; wxArrayString arr; { wxBusyCursor bcur; langs = wxTranslations::Get()->GetAvailableTranslations("poedit"); langs.insert(langs.begin(), "en"); 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.empty() ? 0 : langs.Index(current) + 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.5/src/language.h0000644000175100001770000001736014664354065012340 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2013-2024 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(); } 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.5/src/fileviewer.cpp0000644000175100001770000005705214664354065013253 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 1999-2024 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.5/src/chooselang.h0000644000175100001770000000311714664354065012672 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2003-2024 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 _CHOOSELANG_H_ #define _CHOOSELANG_H_ #include #include #ifdef __WXMSW__ #define NEED_CHOOSELANG_UI 1 #else #define NEED_CHOOSELANG_UI 0 #endif #if NEED_CHOOSELANG_UI /// Let the user change UI language void ChangeUILanguage(); /** Return currently chosen language. Calls ChooseLanguage if necessary. */ wxString GetUILanguage(); #endif // NEED_CHOOSELANG_UI #endif poedit-3.5/src/export_html.cpp0000644000175100001770000002713114664354065013452 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2003 Christophe Hermier * Copyright (C) 2013-2024 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.5/src/qa_checks.cpp0000644000175100001770000004654714664354065013042 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2017-2024 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"); } 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") { // 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.5/src/edlistctrl.cpp0000644000175100001770000006146014664354065013261 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 1999-2024 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); 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()); sourceTitle += wxString::Format(" [%s]", fn.GetFullName()); } 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) { 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); if (!m_catalog) return; UpdateColumns(); if (sizeOrCatalogChanged && GetItemCount() > 0) CallAfter([=]{ SelectAndFocus(0); }); } void PoeditListCtrl::RefreshAllItems() { // Can't use Cleared() here because it messes up selection and scroll position 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); } 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.5/src/filemonitor.h0000644000175100001770000000555014664354065013102 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2021-2024 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.5/src/edapp.h0000644000175100001770000001177114664354065011646 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 1999-2024 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 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 wxString& 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 OnQuit(wxCommandEvent& event); void OnPreferences(wxCommandEvent& event); void OnHelp(wxCommandEvent& event); void OnGettextManual(wxCommandEvent& 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.5/src/editing_area.h0000644000175100001770000001167214664354065013170 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 1999-2024 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.5/src/localazy_client.h0000644000175100001770000001200114664354065013714 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2023-2024 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.5/src/language.cpp0000644000175100001770000005310514664354065012670 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2013-2024 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[128] = {0}; char script[128] = {0}; char country[128] = {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[512]; 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; char buf[512]; if (uloc_getLanguage(locale, buf, 512, &status)) lang.m_code = buf; if (uloc_getCountry(locale, buf, 512, &status)) lang.m_code += "_" + std::string(buf); // 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)) lang.m_code += "@" + m.str(1); 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.5/src/crowdin_gui.cpp0000644000175100001770000002560414664354065013421 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2015-2024 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 localization management platform and collaborative translation tool."); } 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.5/src/cloud_accounts.cpp0000644000175100001770000000417614664354065014116 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2023-2024 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(); throw 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.5/src/keychain/0000755000175100001770000000000014664354152012245 500000000000000poedit-3.5/src/keychain/keytar.h0000644000175100001770000000304014664354065013635 00000000000000/* * Copyright (c) 2013 GitHub Inc. * Copyright (c) 2015-2024 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.5/src/keychain/keytar_posix.cc0000644000175100001770000000626414664354065015230 00000000000000/* * Copyright (c) 2013 GitHub Inc. * Copyright (c) 2015-2024 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.5/src/menus.h0000644000175100001770000000405314664354065011677 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 1999-2024 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.5/src/propertiesdlg.h0000644000175100001770000000621514664354065013435 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2000-2024 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.5/src/catalog_po.h0000644000175100001770000002727014664354065012666 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 1999-2024 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.5/src/pluralforms/0000755000175100001770000000000014664354152013020 500000000000000poedit-3.5/src/pluralforms/COPYING0000644000175100001770000000467214664354065014007 00000000000000 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.5/src/pluralforms/pl_evaluate.h0000644000175100001770000001032614664354065015417 00000000000000///////////////////////////////////////////////////////////////////////////// // 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.5/src/pluralforms/pl_evaluate.cpp0000644000175100001770000003502514664354065015755 00000000000000///////////////////////////////////////////////////////////////////////////// // 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.5/src/catalog_json.cpp0000644000175100001770000003716414664354065013557 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2023-2024 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) throw 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) { throw 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()) throw 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 { throw 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 { throw 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()) throw JSONUnrecognizedFileException(); m_items.push_back(std::make_shared(++id, el.key(), val)); } if (m_items.empty()) throw 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.5/src/progressinfo.h0000644000175100001770000001573114664354065013275 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2000-2024 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_progressinfo_h #define Poedit_progressinfo_h #include "concurrency.h" #include "errors.h" #include "titleless_window.h" #include #include #include class WXDLLIMPEXP_FWD_CORE wxStaticBitmap; class WXDLLIMPEXP_FWD_CORE wxStaticText; class WXDLLIMPEXP_FWD_CORE wxGauge; class SecondaryLabel; /** Accurate progress tracking for both simple and composed operations. Modelled after https://developer.apple.com/documentation/foundation/nsprogress */ class Progress { public: Progress(int totalCount); Progress(int totalCount, Progress& parent, int parentCountTaken); 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() : m_observedProgress(nullptr) {} virtual ~ProgressObserver(); void attach(Progress& observedProgress); void detach(); virtual void update_message(const wxString& text) = 0; virtual void update_progress(double completedFraction) = 0; private: Progress *m_observedProgress; }; /// Window showing progress of a long-running task class ProgressWindow : public TitlelessDialog, public ProgressObserver { protected: ProgressWindow(wxWindow *parent, const wxString& title, dispatch::cancellation_token_ptr cancellationToken = dispatch::cancellation_token_ptr()); template void DoRunTask(const TBackgroundJob& task, const TCompletion& completionHandler, bool forceModal = false) { m_progress = std::make_shared(1); attach(*m_progress); // don't show any flushed log output until the modal progress window closes: // FIXME: proper UI for showing logged errors directly within wxLog::Suspend(); auto bg = dispatch::async([=] { Progress progress(1, *m_progress, 1); task(); }) .then_on_main([=] { // make sure EndModal() is only called within event loop, i.e. not before // Show*Modal() was called (which could happen if `bg` finished instantly): CallAfter([=]{ EndModal(wxID_OK); wxLog::Resume(); }); }) .catch_all([=](dispatch::exception_ptr e){ // make sure EndModal() is only called within event loop, i.e. not before // Show*Modal() was called (which could happen if `bg` finished instantly): CallAfter([=]{ // TODO: handle errors better -- show error inline, indicate to caller (possibly rethrow on main?) wxLogError(DescribeException(e)); EndModal(wxID_CANCEL); wxLog::Resume(); }); }); if (forceModal || !GetParent()) { ShowModal(); detach(); m_progress.reset(); completionHandler(); } else { ShowWindowModalThenDo([=](int /*retcode*/) { detach(); m_progress.reset(); completionHandler(); }); } } public: template static void RunTaskThenDo(wxWindow *parent, const wxString& title, const TBackgroundJob& task, const TCompletion& completionHandler) { wxWindowPtr window(new ProgressWindow(parent, title)); window->DoRunTask(task, [=]{ completionHandler(); window->Hide(); }); } template static void RunCancellableTaskThenDo(wxWindow *parent, const wxString& title, const TBackgroundJob& task, const TCompletion& completionHandler) { auto token = std::make_shared(); wxWindowPtr window(new ProgressWindow(parent, title, token)); window->DoRunTask([=]{ task(token); }, [=]{ completionHandler(!token->is_cancelled()); window->Hide(); }); } template static void RunTask(wxWindow *parent, const wxString& title, const TBackgroundJob& task) { wxWindowPtr window(new ProgressWindow(parent, title)); window->DoRunTask(task, [=]{}, true); } template static bool RunCancellableTask(wxWindow *parent, const wxString& title, const TBackgroundJob& task) { auto token = std::make_shared(); wxWindowPtr window(new ProgressWindow(parent, title, token)); window->DoRunTask([=]{ task(token); }, []{}, true); return !token->is_cancelled(); } void update_message(const wxString& text) override; void update_progress(double completedFraction) override; void UpdateMessage(const wxString& text); // TODO: remove protected: const int PROGRESS_BAR_RANGE = 100; void OnCancel(wxCommandEvent&); private: std::shared_ptr m_progress; wxStaticBitmap *m_image; wxStaticText *m_title; SecondaryLabel *m_message; wxGauge *m_gauge; dispatch::cancellation_token_ptr m_cancellationToken; }; #endif // Poedit_progressinfo_h poedit-3.5/src/crowdin_client.cpp0000644000175100001770000006020614664354065014110 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2015-2024 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, "publicDownloads", false) == false) throw 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 } })) .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.5/src/unicode_helpers.cpp0000644000175100001770000001101714664354065014251 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2016-2024 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.5/src/progressinfo.cpp0000644000175100001770000002177314664354065013633 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2000-2024 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 "progressinfo.h" #include "customcontrols.h" #include "hidpi.h" #include "utility.h" #include #include #include #include #include #include #include #include #include #include #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; observedProgress.m_impl->set_observer(this); } void ProgressObserver::detach() { if (m_observedProgress) { m_observedProgress->m_impl->set_observer(nullptr); m_observedProgress = nullptr; } } ProgressObserver::~ProgressObserver() { detach(); } 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))); wxSize logoSize(PX(64), PX(64)); #if defined(__WXMSW__) wxIcon logo; logo.LoadFile("appicon", wxBITMAP_TYPE_ICO_RESOURCE, 256, 256); { wxBitmap bmp; bmp.CopyFromIcon(logo); logo.CopyFromBitmap(wxBitmap(bmp.ConvertToImage().Scale(logoSize.x, logoSize.y, wxIMAGE_QUALITY_BICUBIC))); } #elif defined(__WXGTK__) auto logo = wxArtProvider::GetIcon("net.poedit.Poedit", wxART_FRAME_ICON, logoSize); #else auto logo = wxArtProvider::GetBitmap("Poedit"); #endif m_image = new wxStaticBitmap(this, wxID_ANY, logo, wxDefaultPosition, logoSize); m_image->SetMinSize(logoSize); topsizer->Add(m_image, wxSizerFlags().Center().Border(wxTOP, MSW_OR_OTHER(PX(10), 0))); auto infosizer = new wxBoxSizer(wxVERTICAL); topsizer->Add(infosizer, wxSizerFlags().Center().Border(wxLEFT, PX(10))); 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); infosizer->Add(m_title, wxSizerFlags().Left().Border(wxBOTTOM, PX(3))); m_message = new SecondaryLabel(this, ""); infosizer->Add(m_message, wxSizerFlags().Left().Border(wxBOTTOM, PX(2))); m_gauge = new wxGauge(this, wxID_ANY, PROGRESS_BAR_RANGE, wxDefaultPosition, wxSize(PX(350), -1), wxGA_SMOOTH); m_gauge->Pulse(); infosizer->Add(m_gauge, wxSizerFlags().Expand()); if (cancellationToken) { auto cancelButton = new wxButton(this, wxID_CANCEL); cancelButton->Bind(wxEVT_BUTTON, &ProgressWindow::OnCancel, this); sizer->Add(cancelButton, wxSizerFlags().Right().Border(wxRIGHT|wxBOTTOM, PX(20))); } SetSizerAndFit(sizer); if (parent) CenterOnParent(); } void ProgressWindow::update_message(const wxString& text) { if (m_cancellationToken && m_cancellationToken->is_cancelled()) return; dispatch::on_main([=] { m_message->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); if (m_cancellationToken && m_cancellationToken->is_cancelled()) return; // don't update anymore m_gauge->SetValue(value); }); } void ProgressWindow::UpdateMessage(const wxString& text) { if (m_cancellationToken && m_cancellationToken->is_cancelled()) return; m_message->SetLabel(text); m_message->Refresh(); m_message->Update(); } void ProgressWindow::OnCancel(wxCommandEvent&) { ((wxButton*)FindWindow(wxID_CANCEL))->Enable(false); UpdateMessage(_(L"Cancelling…")); m_gauge->Pulse(); m_cancellationToken->cancel(); } poedit-3.5/src/unicode_helpers.h0000644000175100001770000002217414664354065013724 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2016-2024 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.5/src/crowdin_gui.h0000644000175100001770000000704614664354065013066 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2015-2024 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.5/src/customcontrols.cpp0000644000175100001770000004654314664354065014213 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2015-2024 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; 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) { m_text.Replace("\n", " "); 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); #ifdef __WXOSX__ wxColour normal(NSColor.linkColor); wxColour hover([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.5/src/Makefile.in0000644000175100001770000012671114664354142012446 00000000000000# 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_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_xliff.cpp catalog_xliff.h chooselang.cpp chooselang.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 progressinfo.h \ progressinfo.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 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_update.$(OBJEXT) cat_sorting.$(OBJEXT) catalog.$(OBJEXT) \ catalog_po.$(OBJEXT) catalog_json.$(OBJEXT) \ catalog_xliff.$(OBJEXT) chooselang.$(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) progressinfo.$(OBJEXT) \ propertiesdlg.$(OBJEXT) qa_checks.$(OBJEXT) \ recent_files.$(OBJEXT) sidebar.$(OBJEXT) \ spellchecking.$(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_sorting.Po \ ./$(DEPDIR)/cat_update.Po ./$(DEPDIR)/catalog.Po \ ./$(DEPDIR)/catalog_json.Po ./$(DEPDIR)/catalog_po.Po \ ./$(DEPDIR)/catalog_xliff.Po ./$(DEPDIR)/chooselang.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)/progressinfo.Po ./$(DEPDIR)/propertiesdlg.Po \ ./$(DEPDIR)/qa_checks.Po ./$(DEPDIR)/recent_files.Po \ ./$(DEPDIR)/sidebar.Po ./$(DEPDIR)/spellchecking.Po \ ./$(DEPDIR)/syntaxhighlighter.Po ./$(DEPDIR)/text_control.Po \ ./$(DEPDIR)/titleless_window.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_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_xliff.cpp catalog_xliff.h \ chooselang.cpp chooselang.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 \ progressinfo.h progressinfo.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 \ 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/summary.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_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_xliff.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chooselang.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)/progressinfo.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)/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)/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_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_xliff.Po -rm -f ./$(DEPDIR)/chooselang.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)/progressinfo.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)/syntaxhighlighter.Po -rm -f ./$(DEPDIR)/text_control.Po -rm -f ./$(DEPDIR)/titleless_window.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_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_xliff.Po -rm -f ./$(DEPDIR)/chooselang.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)/progressinfo.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)/syntaxhighlighter.Po -rm -f ./$(DEPDIR)/text_control.Po -rm -f ./$(DEPDIR)/titleless_window.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.5/src/localazy_client.cpp0000644000175100001770000003665514664354065014274 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2023-2024 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; } } throw 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) { throw 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") { throw 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.5/src/filemonitor.cpp0000644000175100001770000001327114664354065013434 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2021-2024 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 FSWatcher& Get() { if (!ms_instance) ms_instance.reset(new FSWatcher); 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::unique_ptr ms_instance; }; std::unique_ptr FSWatcher::ms_instance; } // anonymous namespace class FileMonitor::Impl { public: Impl(const wxFileName& fn) { m_dir = wxFileName::DirName(fn.GetPath()); FSWatcher::Get().Add(m_dir); } ~Impl() { FSWatcher::Get().Remove(m_dir); } private: wxFileName m_dir; }; #endif // !__WXOSX__ void FileMonitor::EventLoopStarted() { #ifndef __WXOSX__ FSWatcher::Get().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.5/src/configuration.h0000644000175100001770000000751714664354065013427 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2016-2024 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.5/src/cloud_accounts.h0000644000175100001770000001360114664354065013554 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2015-2024 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.5/src/static_ids.h0000644000175100001770000000647114664354065012704 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2024 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.5/src/concurrency.h0000644000175100001770000004562714664354065013116 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2010-2024 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 { std::lock_guard lock(m_mutex); m_closed = true; } bool closed() override { std::lock_guard lock(m_mutex); return m_closed; } bool try_executing_one() override { return false; } private: std::mutex m_mutex; bool m_closed; }; #if defined(HAVE_DISPATCH) enum class queue { main, priority_default }; extern void dispatch_async_cxx(boost::executors::work&& f, queue q = queue::priority_default); class background_queue_executor : public custom_executor { public: static background_queue_executor& get(); void submit(work&& closure) override { 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) { 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(); }; #endif // HAVE_DISPATCH etc. class main_thread_executor : public custom_executor { public: static main_thread_executor& get(); void submit(work&& closure) { #ifdef HAVE_DISPATCH dispatch_async_cxx(std::forward(closure), queue::main); #else wxTheApp->CallAfter(std::forward(closure)); #endif } }; // 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(); })}; } /// 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 = true; } /// Should the operation be cancelled? bool is_cancelled() const { return m_cancelled; } private: std::atomic_bool 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.5/src/pretranslate.cpp0000644000175100001770000002736514664354065013622 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 1999-2024 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 "progressinfo.h" #include "str_helpers.h" #include "tm/transmem.h" #include "utility.h" #include #include #include #include #include #include #include template int PreTranslateCatalogImpl(CatalogPtr catalog, const T& range, PreTranslateOptions options, dispatch::cancellation_token_ptr cancellation_token) { if (range.empty()) return 0; if (!Config::UseTM()) return 0; 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) -> bool { if (results.empty()) return false; auto& res = results.front(); if ((flags & PreTranslate_OnlyExact) && !res.IsExactMatch()) return false; if ((flags & PreTranslate_OnlyGoodQuality) && res.score < 0.80) return false; 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 true; }; std::vector> operations; for (auto dt: range) { if (dt->IsTranslated() && !dt->IsFuzzy()) continue; operations.push_back(dispatch::async([=,&tm]{ if (cancellation_token->is_cancelled()) return false; auto results = tm.Search(srclang, lang, str::to_wstring(dt->GetString())); bool ok = process_results(dt, 0, results); if (ok && 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 ok; })); } Progress progress((int)operations.size()); progress.message(_(L"Pre-translating from translation memory…")); int matches = 0; for (auto& op: operations) { if (cancellation_token->is_cancelled()) break; if (op.get()) { matches++; progress.message(wxString::Format(wxPLURAL("Pre-translated %u string", "Pre-translated %u strings", matches), matches)); } progress.increment(); } return matches; } template int PreTranslateCatalog(wxWindow *window, CatalogPtr catalog, const T& range, const PreTranslateOptions& options) { int matches = 0; ProgressWindow::RunCancellableTask(window, _(L"Pre-translating…"), [=,&matches](dispatch::cancellation_token_ptr cancellationToken) { matches = PreTranslateCatalogImpl(catalog, range, options, cancellationToken); }); return matches; } int PreTranslateCatalog(wxWindow *window, CatalogPtr catalog, const PreTranslateOptions& options) { return PreTranslateCatalog(window, catalog, catalog->items(), options); } 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); int matches = 0; PreTranslateOptions options; if (settings.onlyExact) options.flags |= PreTranslate_OnlyExact; if (settings.exactNotFuzzy) options.flags |= PreTranslate_ExactNotFuzzy; if (list->HasMultipleSelection()) { matches = PreTranslateCatalog(window, catalog, list->GetSelectedCatalogItems(), options); if (matches == 0) return; } else { matches = PreTranslateCatalog(window, catalog, options); if (matches == 0) return; } onChangesMade(); wxString msg, details; if (matches) { msg = wxString::Format(wxPLURAL("%d entry was pre-translated.", "%d entries were pre-translated.", matches), matches); details = _("The translations were marked as needing work, because they may be inaccurate. You should review them for correctness."); } else { msg = _("No entries could be pre-translated."); details = _(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."); } wxWindowPtr resultsDlg( new wxMessageDialog ( window, msg, _("Pre-translate"), wxOK | wxICON_INFORMATION ) ); resultsDlg->SetExtendedMessage(details); resultsDlg->ShowWindowModalThenDo([resultsDlg](int){}); }); } poedit-3.5/src/custom_notebook.cpp0000644000175100001770000003446514664354065014327 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2016-2024 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()); 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; }; 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; } #else // !HAS_SEGMENTED_NOTEBOOK SegmentedNotebook::SegmentedNotebook(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); } #endif // !HAS_SEGMENTED_NOTEBOOK poedit-3.5/src/fileviewer.h0000644000175100001770000000531714664354065012715 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 1999-2024 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.5/src/pugixml.h0000644000175100001770000000270414664354065012236 00000000000000/* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2018-2024 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.5/AUTHORS0000644000175100001770000003501314664354065010660 00000000000000Maintainer: 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.5/net.poedit.PoeditURI.desktop0000644000175100001770000000024714664354065015060 00000000000000[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.5/net.poedit.Poedit.desktop0000644000175100001770000000071014664354065014473 00000000000000[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.5/Makefile.in0000644000175100001770000007244714664354142011665 00000000000000# 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.5/deps/0000755000175100001770000000000014664354152010616 500000000000000poedit-3.5/deps/pugixml/0000755000175100001770000000000014664354152012303 500000000000000poedit-3.5/deps/pugixml/LICENSE.md0000644000175100001770000000206714664354075013640 00000000000000MIT License Copyright (c) 2006-2023 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.5/deps/pugixml/src/0000755000175100001770000000000014664354152013072 500000000000000poedit-3.5/deps/pugixml/src/pugixml.cpp0000644000175100001770000124531314664354075015220 00000000000000/** * pugixml parser - version 1.14 * -------------------------------------------------------- * Copyright (C) 2006-2023, 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(_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 } // 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 = 0; return result; } }; PUGI_IMPL_NS_END #ifdef PUGIXML_COMPACT PUGI_IMPL_NS_BEGIN class compact_hash_table { public: compact_hash_table(): _items(0), _capacity(0), _count(0) { } void clear() { if (_items) { xml_memory::deallocate(_items); _items = 0; _capacity = 0; _count = 0; } } void* find(const void* key) { if (_capacity == 0) return 0; item_t* item = get_item(key); assert(item); assert(item->key == key || (item->key == 0 && item->value == 0)); 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 == 0) { _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 == 0) return &probe_item; // hash collision, quadratic probing bucket = (bucket + probe + 1) & hashmod; } assert(false && "Hash table is full"); // unreachable return 0; } 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 = 0; result->prev = 0; result->next = 0; result->busy_size = 0; result->freed_size = 0; #ifdef PUGIXML_COMPACT result->compact_string_base = 0; result->compact_shared_parent = 0; result->compact_page_marker = 0; #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 = 0; #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 0; // 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 0; // 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 == 0) { 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 = 0; page->compact_shared_parent = 0; page->compact_page_marker = 0; #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 0; // 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 0; 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 0; } 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 == 0)) 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 0; } 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 == 0)) 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 0; } 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(0), value(0), prev_attribute_c(0), next_attribute(0) { 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(0), value(0), parent(0), first_child(0), prev_sibling_c(0), next_sibling(0), first_attribute(0) { 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(0), extra_buffers(0) { } 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 0; 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 0; 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 = 0; node->prev_sibling_c = 0; node->next_sibling = 0; } 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 = 0; attr->next_attribute = 0; } 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 0; xml_node_struct* child = allocate_node(alloc, type); if (!child) return 0; 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 0; xml_attribute_struct* attr = allocate_attribute(alloc); if (!attr) return 0; 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 = static_cast(ch - 0x10000) >> 10; uint32_t lsh = static_cast(ch - 0x10000) & 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 = 0; 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(0), 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, reinterpret_cast(s) - reinterpret_cast(end)); } 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, reinterpret_cast(s) - reinterpret_cast(end)); 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(0) #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 0; } 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 0; } 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 0; // 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 0; } 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 0; } 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 0; } 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 0; } 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 0; // 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(0), 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 : 0; // 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 : 0; 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 : 0; 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, 0); #else return strtod(value, 0); #endif } PUGI_IMPL_FN float get_value_float(const char_t* value) { #ifdef PUGIXML_WCHAR_MODE return static_cast(wcstod(value, 0)); #else return static_cast(strtod(value, 0)); #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 : 0, xml_memory::deallocate); // get private buffer char_t* buffer = 0; 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; } // 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; typedef off_t length_type; length_type length = st.st_size; #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 typedef __int64 length_type; _fseeki64(file, 0, SEEK_END); length_type length = _ftelli64(file); _fseeki64(file, 0, SEEK_SET); #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 typedef off64_t length_type; fseeko64(file, 0, SEEK_END); length_type length = ftello64(file); fseeko64(file, 0, SEEK_SET); #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. typedef long length_type; fseek(file, 0, SEEK_END); length_type length = ftell(file); fseek(file, 0, SEEK_SET); #endif // 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; // finalize out_result = result; return status_ok; } // 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 0; 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(0), 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(0, xml_stream_chunk::destroy); // read file to a chunk list size_t total = 0; xml_stream_chunk* last = 0; 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 = 0; 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) { #if defined(PUGI_IMPL_MSVC_CRT_VERSION) && PUGI_IMPL_MSVC_CRT_VERSION >= 1400 FILE* file = 0; return _wfopen_s(&file, path, mode) == 0 ? file : 0; #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 0; // 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 0; // 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 = 0; return fopen_s(&file, path, mode) == 0 ? file : 0; #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 = 0; } ~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(0) { } PUGI_IMPL_FN xml_writer_stream::xml_writer_stream(std::basic_ostream >& stream): narrow_stream(0), 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(0) { } 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 : 0; } 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 static_cast(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_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); } 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); } 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(0) { } 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 : 0; } 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 : 0, _root); } PUGI_IMPL_FN xml_node::iterator xml_node::end() const { return iterator(0, _root); } PUGI_IMPL_FN xml_node::attribute_iterator xml_node::attributes_begin() const { return attribute_iterator(_root ? _root->first_attribute + 0 : 0, _root); } PUGI_IMPL_FN xml_node::attribute_iterator xml_node::attributes_end() const { return attribute_iterator(0, _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(0, _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(); } 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(); } 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); } 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); } 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; } 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; } 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_)); } 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 = 0; return true; } PUGI_IMPL_FN bool xml_node::remove_child(const char_t* name_) { return remove_child(child(name_)); } 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 = 0; 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 = 0; 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 = 0; 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 : 0; 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 static_cast(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 0; } 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(0) { } 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 : 0; } PUGI_IMPL_FN bool xml_text::operator!() const { return !_data(); } PUGI_IMPL_FN bool xml_text::empty() const { return _data() == 0; } 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; } 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_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 const_cast(&_wrap); // BCC5 workaround } 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 const_cast(&_wrap); // BCC5 workaround } 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(0) { } 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 const_cast(&_wrap); // BCC5 workaround } 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(0) { _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(0) { _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 = 0; } // 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 = 0; } #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 = 0; #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 = 0; } // 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 = 0; } #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) && 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] == 0) { 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 = 0): _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 0; } 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 == 0 || 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 0; // 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 = 0; 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 0; 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) : 0, (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 0; _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 0; } 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 0; } return 0; } 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 0; #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, 0); #else return strtod(string, 0); #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 : 0; 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 0; // 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 0; 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(0) { } ~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 0; // 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 0; 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 0; } } 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(0), _end(0), _eos(0) { } 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(0), end(0) { } 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(0), _right(0), _next(0) { 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(0), _right(0), _next(0) { 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(0), _right(0), _next(0) { assert(type == ast_variable); _data.variable = value; } xpath_ast_node(ast_type_t type, xpath_value_type rettype_, xpath_ast_node* left = 0, xpath_ast_node* right = 0): _type(static_cast(type)), _rettype(static_cast(rettype_)), _axis(0), _test(0), _left(left), _right(right), _next(0) { } 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(0), _next(0) { 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(0) { 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()) != 0; } 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 0; } xpath_ast_node* error_oom() { assert(_alloc->_error); *_alloc->_error = true; return 0; } 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) : 0; } 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) : 0; } 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) : 0; } xpath_ast_node* alloc_node(ast_type_t type, xpath_value_type rettype, xpath_ast_node* left = 0, xpath_ast_node* right = 0) { void* memory = alloc_node(); return memory ? new (memory) xpath_ast_node(type, rettype, left, right) : 0; } 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) : 0; } 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) : 0; } 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 0; 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 = 0; 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 0; 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 0; _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] = {0}; size_t argc = 0; xpath_lexer_string function = _lexer.contents(); _lexer.next(); xpath_ast_node* last_arg = 0; 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 0; 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 0; 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 0; n = alloc_node(ast_filter, n, expr, predicate_default); if (!n) return 0; 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, 0); } 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, 0); } 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 0; xpath_ast_node* n = alloc_node(ast_step, set, axis, nt_type, nt_name_copy); if (!n) return 0; size_t old_depth = _depth; xpath_ast_node* last = 0; 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 0; xpath_ast_node* pred = alloc_node(ast_predicate, 0, expr, predicate_default); if (!pred) return 0; 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 0; 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, 0); if (!n) return 0; ++_depth; } if (++_depth > xpath_ast_depth_limit) return error_rec(); n = parse_step(n); if (!n) return 0; } _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 0; // 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 0; n = alloc_node(ast_step, n, axis_descendant_or_self, nodetest_type_node, 0); if (!n) return 0; 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(0); } // 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 0; 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, 0); if (!n) return 0; } // 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 0; 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 0; 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 0; 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 0; 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 0; 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 0; 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 0; 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(0), alloc(&block, &oom), oom(false) { block.next = 0; 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 0; 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 throw() { 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 : 0; } 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 == 0; } 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(0) { } 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 0; } } 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 : 0; 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] = 0; } 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] = 0; _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] = 0; } } 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] = 0; } 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 0; } PUGI_IMPL_FN bool xpath_variable_set::_clone(xpath_variable* var, xpath_variable** out_result) { xpath_variable* last = 0; 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 : 0; // 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(0) { 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 = 0; } 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(0) { } 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 = 0; 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 = 0; 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 : 0; } 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 // 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 #if defined(_MSC_VER) && defined(__c2__) # pragma clang diagnostic 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-2023 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.5/deps/pugixml/src/pugiconfig.hpp0000644000175100001770000000552014664354075015663 00000000000000/** * pugixml parser - version 1.14 * -------------------------------------------------------- * Copyright (C) 2006-2023, 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 // #define PUGIXML_HAS_LONG_LONG #endif /** * Copyright (c) 2006-2023 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.5/deps/pugixml/src/pugixml.hpp0000644000175100001770000015203114664354075015216 00000000000000/** * pugixml parser - version 1.14 * -------------------------------------------------------- * Copyright (C) 2006-2023, 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 1140 // 1.14 #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 // 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, add '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 # 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, std::allocator > string_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 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); bool set_value(const char_t* rhs); bool set_value(const char_t* rhs, size_t size); // 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_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. 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; // 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; // 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); bool set_value(const char_t* rhs); bool set_value(const char_t* rhs, size_t size); // 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); // 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); // 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); // Remove all attributes bool remove_attributes(); // Remove specified child bool remove_child(const xml_node& n); bool remove_child(const char_t* name); // 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 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); // 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_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 throw() 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, std::allocator > PUGIXML_FUNCTION as_utf8(const wchar_t* str); std::basic_string, std::allocator > PUGIXML_FUNCTION as_utf8(const std::basic_string, std::allocator >& str); // Convert UTF8 to wide string std::basic_string, std::allocator > PUGIXML_FUNCTION as_wide(const char* str); std::basic_string, std::allocator > PUGIXML_FUNCTION as_wide(const std::basic_string, std::allocator >& 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-2023 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.5/deps/json/0000755000175100001770000000000014664354152011567 500000000000000poedit-3.5/deps/json/single_include/0000755000175100001770000000000014664354152014553 500000000000000poedit-3.5/deps/json/single_include/nlohmann/0000755000175100001770000000000014664354152016365 500000000000000poedit-3.5/deps/json/single_include/nlohmann/json.hpp0000644000175100001770000340464714664354075020015 00000000000000// __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 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.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann // SPDX-License-Identifier: MIT #include // #include // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 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 != 11 || NLOHMANN_JSON_VERSION_PATCH != 3 #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 11 // NOLINT(modernize-macro-to-enum) #define NLOHMANN_JSON_VERSION_PATCH 3 // NOLINT(modernize-macro-to-enum) #ifndef JSON_DIAGNOSTICS #define JSON_DIAGNOSTICS 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_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) json_abi ## a ## b #define NLOHMANN_JSON_ABI_TAGS_CONCAT(a, b) \ NLOHMANN_JSON_ABI_TAGS_CONCAT_EX(a, b) #define NLOHMANN_JSON_ABI_TAGS \ NLOHMANN_JSON_ABI_TAGS_CONCAT( \ NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS, \ NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON) // 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.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann // SPDX-License-Identifier: MIT #include // transform #include // array #include // forward_list #include // inserter, front_inserter, end #include // map #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.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 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.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann // SPDX-License-Identifier: MIT #include // array #include // size_t #include // uint8_t #include // string // #include // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann // SPDX-License-Identifier: MIT #include // declval, pair // #include // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann // SPDX-License-Identifier: MIT #include // #include // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 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.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 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_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_20 #define JSON_HAS_CPP_17 #define JSON_HAS_CPP_14 #elif (defined(__cplusplus) && __cplusplus >= 201703L) || (defined(_HAS_CXX17) && _HAS_CXX17 == 1) // fix for issue #464 #define JSON_HAS_CPP_17 #define JSON_HAS_CPP_14 #elif (defined(__cplusplus) && __cplusplus >= 201402L) || (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) \ { \ static_assert(std::is_enum::value, #ENUM_TYPE " must be an enum!"); \ 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) \ { \ static_assert(std::is_enum::value, #ENUM_TYPE " must be an enum!"); \ 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.value(#v1, nlohmann_json_default_obj.v1); /*! @brief macro @def NLOHMANN_DEFINE_TYPE_INTRUSIVE @since version 3.9.0 */ #define NLOHMANN_DEFINE_TYPE_INTRUSIVE(Type, ...) \ friend void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ friend void from_json(const nlohmann::json& nlohmann_json_j, Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM, __VA_ARGS__)) } #define NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT(Type, ...) \ friend void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ friend void from_json(const nlohmann::json& 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__)) } #define NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE(Type, ...) \ friend void to_json(nlohmann::json& 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 */ #define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(Type, ...) \ inline void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ inline void from_json(const nlohmann::json& nlohmann_json_j, Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM, __VA_ARGS__)) } #define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE(Type, ...) \ inline void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } #define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT(Type, ...) \ inline void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ inline void from_json(const nlohmann::json& 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__)) } // inspired from https://stackoverflow.com/a/26745591 // allows to call 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.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 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.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 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.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 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 inline 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.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann // SPDX-License-Identifier: MIT #include // numeric_limits #include // false_type, is_constructible, is_integral, is_same, true_type #include // declval #include // tuple #include // char_traits // #include // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 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.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 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.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 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.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 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(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(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