Compare commits
116 Commits
Author | SHA1 | Date |
---|---|---|
cketti | 39026ec3a5 | |
cketti | c578fcae6f | |
cketti | 4ece2bb428 | |
cketti | 3b17aa0496 | |
cketti | 19b180a3b6 | |
cketti | 0c37a28754 | |
Dominik Heidler | dcd1e63812 | |
cketti | ca16f36db9 | |
cketti | d3a5395d2c | |
cketti | e8f7f6ef38 | |
Koji Arai | 25c3c635fc | |
cketti | 5d130b2de1 | |
Troy Rollo | aef6321ecd | |
cketti | 5437dc39e1 | |
cketti | 0910e0bedb | |
cketti | 06f31dd872 | |
Jesse Vincent | 99dbe6b666 | |
cketti | cfbe6c2446 | |
cketti | 85317af6ff | |
nysatrok | 301527417d | |
pyler | 2655132c87 | |
cketti | 0582432166 | |
Joe Steele | d1fc587772 | |
Joe Steele | b392603ae0 | |
Joe Steele | d6b6bf6254 | |
cketti | dc0c567007 | |
Joe Steele | c47777b821 | |
cketti | c5d3e4e814 | |
Joe Steele | f38659d30e | |
cketti | f336dc1959 | |
cketti | 0ecfb5e45c | |
Igor Nedoboy | e7ebb8621e | |
Mittaa | ff302e7890 | |
pyler | 329dca1491 | |
Andrew Chen | b14c5a7222 | |
cketti | 6c9d84b9fa | |
Andrew Chen | 7333d94973 | |
Mittaa | 25236e7085 | |
cketti | 27743681b4 | |
Joe Steele | f6d08fe852 | |
dzan | 1d4b84c266 | |
miplopez | 3a502f4471 | |
dzan | 86e15bd888 | |
Arnout Engelen | 12d886e144 | |
Arnout Engelen | e1c9916eb2 | |
Arnout Engelen | a9fac2af3c | |
cketti | 2e398c8f79 | |
cketti | cfaa36403c | |
Jesse Vincent | 38d58a68ae | |
cketti | 089a5474fd | |
cketti | 4499ebf7e8 | |
cketti | 6633cfb872 | |
cketti | cca983fe99 | |
erlendorf | df0f6f3a8e | |
Jasper Klein | c1bcdf5dbe | |
cketti | 3947f05d6a | |
cketti | d518d47d09 | |
pyler | faac8670f5 | |
Erkan | d78d43f7e9 | |
ascob | 74b7a7a069 | |
Marcio Zomb13 | ca8d4a08d7 | |
cketti | a275e913bc | |
cketti | 624a16b900 | |
cketti | 181ce28413 | |
cketti | 513f28e69a | |
cketti | 2fac2d6e0e | |
cketti | 26a25b8df0 | |
cketti | e54cba22fd | |
cketti | 956972b8d0 | |
Joe Steele | 927950b16c | |
cketti | 957dc2af5b | |
cketti | f7f6a0e9f3 | |
cketti | 12742d9df2 | |
cketti | 182c9dd95f | |
Joe Steele | 8099aff8e7 | |
Joe Steele | 255bf1fb36 | |
cketti | 8d85fe7e9e | |
cketti | 16aa119d65 | |
Joe Steele | 9727cd6bca | |
cketti | dc5afd4b67 | |
Joe Steele | 7296b67126 | |
cketti | ee69bd0845 | |
Joe Steele | 7a9663c4f9 | |
cketti | 0c96c799eb | |
Joe Steele | fd9eb78aa3 | |
cketti | 07e4eb9042 | |
Joe Steele | a2162e4c37 | |
cketti | 9cc98bcd33 | |
Joe Steele | 8a6e8de56d | |
cketti | 5282fe482f | |
Danny Baumann | f95ab8f6a8 | |
Joe Steele | 583d1d403f | |
cketti | 6ebec69383 | |
brian m. carlson | 266a715138 | |
cketti | 7ab9d5c3e8 | |
cketti | 3170de4229 | |
RootRulez | c4b44bb6e3 | |
igavio | 14b291a4de | |
Igor Nedoboy | b8786d27bf | |
Jan Urbánek | 45a725b51b | |
Jacek Sowiński | ee98624a41 | |
Koji Arai | ad2fdbdc00 | |
Jesse Vincent | bc144d684b | |
Jesse Vincent | 9469a433bd | |
Jesse Vincent | 68d0a5823b | |
Jesse Vincent | be14a88103 | |
cketti | ed3a160403 | |
Koji Arai | d97176e6c7 | |
Koji Arai | 4ac1b6328b | |
Jesse Vincent | 3a0dcd70b8 | |
Jesse Vincent | c0b6793053 | |
Jesse Vincent | 99193195f9 | |
Jesse Vincent | e8bbd01cd5 | |
Jesse Vincent | 4134685c65 | |
Jesse Vincent | bc10b8d965 | |
Jesse Vincent | 20ce31146a |
|
@ -22,3 +22,5 @@ target
|
|||
build
|
||||
.gradle
|
||||
out
|
||||
build.xml
|
||||
proguard-project.txt
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
[main]
|
||||
host = https://www.transifex.com
|
||||
lang_map = af_ZA: af-rZA, am_ET: am-rET, ar_AE: ar-rAE, ar_BH: ar-rBH, ar_DZ: ar-rDZ, ar_EG: ar-rEG, ar_IQ: ar-rIQ, ar_JO: ar-rJO, ar_KW: ar-rKW, ar_LB: ar-rLB, ar_LY: ar-rLY, ar_MA: ar-rMA, ar_OM: ar-rOM, ar_QA: ar-rQA, ar_SA: ar-rSA, ar_SY: ar-rSY, ar_TN: ar-rTN, ar_YE: ar-rYE, arn_CL: arn-rCL, as_IN: as-rIN, az_AZ: az-rAZ, ba_RU: ba-rRU, be_BY: be-rBY, bg_BG: bg-rBG, bn_BD: bn-rBD, bn_IN: bn-rIN, bo_CN: bo-rCN, br_FR: br-rFR, bs_BA: bs-rBA, ca_ES: ca-rES, co_FR: co-rFR, cs_CZ: cs-rCZ, cy_GB: cy-rGB, da_DK: da-rDK, de_AT: de-rAT, de_CH: de-rCH, de_DE: de-rDE, de_LI: de-rLI, de_LU: de-rLU, dsb_DE: dsb-rDE, dv_MV: dv-rMV, el_GR: el-rGR, en_AU: en-rAU, en_BZ: en-rBZ, en_CA: en-rCA, en_GB: en-rGB, en_IE: en-rIE, en_IN: en-rIN, en_JM: en-rJM, en_MY: en-rMY, en_NZ: en-rNZ, en_PH: en-rPH, en_SG: en-rSG, en_TT: en-rTT, en_US: en-rUS, en_ZA: en-rZA, en_ZW: en-rZW, es_AR: es-rAR, es_BO: es-rBO, es_CL: es-rCL, es_CO: es-rCO, es_CR: es-rCR, es_DO: es-rDO, es_EC: es-rEC, es_ES: es-rES, es_GT: es-rGT, es_HN: es-rHN, es_MX: es-rMX, es_NI: es-rNI, es_PA: es-rPA, es_PE: es-rPE, es_PR: es-rPR, es_PY: es-rPY, es_SV: es-rSV, es_US: es-rUS, es_UY: es-rUY, es_VE: es-rVE, et_EE: et-rEE, eu_ES: eu-rES, fa_IR: fa-rIR, fi_FI: fi-rFI, fil_PH: fil-rPH, fo_FO: fo-rFO, fr_BE: fr-rBE, fr_CA: fr-rCA, fr_CH: fr-rCH, fr_FR: fr-rFR, fr_LU: fr-rLU, fr_MC: fr-rMC, fy_NL: fy-rNL, ga_IE: ga-rIE, gd_GB: gd-rGB, gl_ES: gl-rES, gsw_FR: gsw-rFR, gu_IN: gu-rIN, ha_NG: ha-rNG, hi_IN: hi-rIN, hr_BA: hr-rBA, hr_HR: hr-rHR, hsb_DE: hsb-rDE, hu_HU: hu-rHU, hy_AM: hy-rAM, id_ID: id-rID, ig_NG: ig-rNG, ii_CN: ii-rCN, is_IS: is-rIS, it_CH: it-rCH, it_IT: it-rIT, iu_CA: iu-rCA, ja_JP: ja-rJP, ka_GE: ka-rGE, kk_KZ: kk-rKZ, kl_GL: kl-rGL, km_KH: km-rKH, kn_IN: kn-rIN, ko_KR: ko-rKR, kok_IN: kok-rIN, ky_KG: ky-rKG, lb_LU: lb-rLU, lo_LA: lo-rLA, lt_LT: lt-rLT, lv_LV: lv-rLV, mi_NZ: mi-rNZ, mk_MK: mk-rMK, ml_IN: ml-rIN, mn_CN: mn-rCN, mn_MN: mn-rMN, moh_CA: moh-rCA, mr_IN: mr-rIN, ms_BN: ms-rBN, ms_MY: ms-rMY, mt_MT: mt-rMT, nb_NO: nb-rNO, ne_NP: ne-rNP, nl_BE: nl-rBE, nl_NL: nl-rNL, nn_NO: nn-rNO, nso_ZA: nso-rZA, oc_FR: oc-rFR, or_IN: or-rIN, pa_IN: pa-rIN, pl_PL: pl-rPL, prs_AF: prs-rAF, ps_AF: ps-rAF, pt_BR: pt-rBR, pt_PT: pt-rPT, qut_GT: qut-rGT, quz_BO: quz-rBO, quz_EC: quz-rEC, quz_PE: quz-rPE, rm_CH: rm-rCH, ro_RO: ro-rRO, ru_RU: ru-rRU, rw_RW: rw-rRW, sa_IN: sa-rIN, sah_RU: sah-rRU, se_FI: se-rFI, se_NO: se-rNO, se_SE: se-rSE, si_LK: si-rLK, sk_SK: sk-rSK, sl_SI: sl-rSI, sma_NO: sma-rNO, sma_SE: sma-rSE, smj_NO: smj-rNO, smj_SE: smj-rSE, smn_FI: smn-rFI, sms_FI: sms-rFI, sq_AL: sq-rAL, sr_BA: sr-rBA, sr_CS: sr-rCS, sr_ME: sr-rME, sr_RS: sr-rRS, sv_FI: sv-rFI, sv_SE: sv-rSE, sw_KE: sw-rKE, syr_SY: syr-rSY, ta_IN: ta-rIN, te_IN: te-rIN, tg_TJ: tg-rTJ, th_TH: th-rTH, tk_TM: tk-rTM, tn_ZA: tn-rZA, tr_TR: tr-rTR, tt_RU: tt-rRU, tzm_DZ: tzm-rDZ, ug_CN: ug-rCN, uk_UA: uk-rUA, ur_PK: ur-rPK, uz_UZ: uz-rUZ, vi_VN: vi-rVN, wo_SN: wo-rSN, xh_ZA: xh-rZA, yo_NG: yo-rNG, zh_CN: zh-rCN, zh_HK: zh-rHK, zh_MO: zh-rMO, zh_SG: zh-rSG, zh_TW: zh-rTW, zu_ZA: zu-rZA, no_NO: no-rNO, he_IL: iw-rIL, he: iw
|
||||
|
||||
[k9mail.strings]
|
||||
file_filter = res/values-<lang>/strings.xml
|
||||
source_file = res/values/strings.xml
|
||||
source_lang = en
|
|
@ -1,8 +1,8 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:versionCode="19002"
|
||||
android:versionName="4.701" package="com.fsck.k9"
|
||||
android:versionCode="20005"
|
||||
android:versionName="4.804" package="com.fsck.k9"
|
||||
>
|
||||
<uses-sdk
|
||||
android:minSdkVersion="8"
|
||||
|
|
|
@ -1,23 +0,0 @@
|
|||
# This file is used to override default values used by the Ant build system.
|
||||
#
|
||||
# This file must be checked in Version Control Systems, as it is
|
||||
# integral to the build system of your project.
|
||||
|
||||
# This file is only used by the Ant script.
|
||||
|
||||
# You can use this to override default values such as
|
||||
# 'source.dir' for the location of your java source folder and
|
||||
# 'out.dir' for the location of your output folder.
|
||||
|
||||
# You can also use it define how the release builds are signed by declaring
|
||||
# the following properties:
|
||||
# 'key.store' for the location of your keystore and
|
||||
# 'key.alias' for the name of the key to use.
|
||||
# The password will be asked during the build when you use the 'release' target.
|
||||
|
||||
# Indicates whether an apk should be generated for each density.
|
||||
split.density=false
|
||||
java.encoding=utf8
|
||||
# Project target.
|
||||
target=android-17
|
||||
extensible.libs.classpath=compile-only-libs
|
BIN
assets/icon.png
Before Width: | Height: | Size: 7.4 KiB After Width: | Height: | Size: 5.7 KiB |
12
build.gradle
|
@ -4,7 +4,7 @@ buildscript {
|
|||
}
|
||||
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:0.5.+'
|
||||
classpath 'com.android.tools.build:gradle:0.7.+'
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -20,18 +20,26 @@ dependencies {
|
|||
|
||||
android {
|
||||
compileSdkVersion 17
|
||||
buildToolsVersion '17'
|
||||
buildToolsVersion '18.1.1'
|
||||
|
||||
sourceSets {
|
||||
main {
|
||||
manifest.srcFile 'AndroidManifest.xml'
|
||||
java.srcDirs = ['src']
|
||||
res.srcDirs = ['res']
|
||||
assets.srcDirs = ['assets']
|
||||
}
|
||||
|
||||
instrumentTest {
|
||||
manifest.srcFile 'tests/AndroidManifest.xml'
|
||||
java.srcDirs = ['tests/src']
|
||||
assets.srcDirs = ['tests/assets']
|
||||
}
|
||||
}
|
||||
|
||||
packagingOptions {
|
||||
exclude 'META-INF/DEPENDENCIES'
|
||||
exclude 'META-INF/LICENSE'
|
||||
exclude 'META-INF/NOTICE'
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
#Mon Nov 04 16:58:06 CET 2013
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=http\://services.gradle.org/distributions/gradle-1.9-bin.zip
|
|
@ -0,0 +1,164 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
##############################################################################
|
||||
##
|
||||
## Gradle start up script for UN*X
|
||||
##
|
||||
##############################################################################
|
||||
|
||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
DEFAULT_JVM_OPTS=""
|
||||
|
||||
APP_NAME="Gradle"
|
||||
APP_BASE_NAME=`basename "$0"`
|
||||
|
||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||
MAX_FD="maximum"
|
||||
|
||||
warn ( ) {
|
||||
echo "$*"
|
||||
}
|
||||
|
||||
die ( ) {
|
||||
echo
|
||||
echo "$*"
|
||||
echo
|
||||
exit 1
|
||||
}
|
||||
|
||||
# OS specific support (must be 'true' or 'false').
|
||||
cygwin=false
|
||||
msys=false
|
||||
darwin=false
|
||||
case "`uname`" in
|
||||
CYGWIN* )
|
||||
cygwin=true
|
||||
;;
|
||||
Darwin* )
|
||||
darwin=true
|
||||
;;
|
||||
MINGW* )
|
||||
msys=true
|
||||
;;
|
||||
esac
|
||||
|
||||
# For Cygwin, ensure paths are in UNIX format before anything is touched.
|
||||
if $cygwin ; then
|
||||
[ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
|
||||
fi
|
||||
|
||||
# Attempt to set APP_HOME
|
||||
# Resolve links: $0 may be a link
|
||||
PRG="$0"
|
||||
# Need this for relative symlinks.
|
||||
while [ -h "$PRG" ] ; do
|
||||
ls=`ls -ld "$PRG"`
|
||||
link=`expr "$ls" : '.*-> \(.*\)$'`
|
||||
if expr "$link" : '/.*' > /dev/null; then
|
||||
PRG="$link"
|
||||
else
|
||||
PRG=`dirname "$PRG"`"/$link"
|
||||
fi
|
||||
done
|
||||
SAVED="`pwd`"
|
||||
cd "`dirname \"$PRG\"`/" >&-
|
||||
APP_HOME="`pwd -P`"
|
||||
cd "$SAVED" >&-
|
||||
|
||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||
|
||||
# Determine the Java command to use to start the JVM.
|
||||
if [ -n "$JAVA_HOME" ] ; then
|
||||
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
||||
# IBM's JDK on AIX uses strange locations for the executables
|
||||
JAVACMD="$JAVA_HOME/jre/sh/java"
|
||||
else
|
||||
JAVACMD="$JAVA_HOME/bin/java"
|
||||
fi
|
||||
if [ ! -x "$JAVACMD" ] ; then
|
||||
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
|
||||
|
||||
Please set the JAVA_HOME variable in your environment to match the
|
||||
location of your Java installation."
|
||||
fi
|
||||
else
|
||||
JAVACMD="java"
|
||||
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
|
||||
Please set the JAVA_HOME variable in your environment to match the
|
||||
location of your Java installation."
|
||||
fi
|
||||
|
||||
# Increase the maximum file descriptors if we can.
|
||||
if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
|
||||
MAX_FD_LIMIT=`ulimit -H -n`
|
||||
if [ $? -eq 0 ] ; then
|
||||
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
|
||||
MAX_FD="$MAX_FD_LIMIT"
|
||||
fi
|
||||
ulimit -n $MAX_FD
|
||||
if [ $? -ne 0 ] ; then
|
||||
warn "Could not set maximum file descriptor limit: $MAX_FD"
|
||||
fi
|
||||
else
|
||||
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
|
||||
fi
|
||||
fi
|
||||
|
||||
# For Darwin, add options to specify how the application appears in the dock
|
||||
if $darwin; then
|
||||
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
|
||||
fi
|
||||
|
||||
# For Cygwin, switch paths to Windows format before running java
|
||||
if $cygwin ; then
|
||||
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
|
||||
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
|
||||
|
||||
# We build the pattern for arguments to be converted via cygpath
|
||||
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
|
||||
SEP=""
|
||||
for dir in $ROOTDIRSRAW ; do
|
||||
ROOTDIRS="$ROOTDIRS$SEP$dir"
|
||||
SEP="|"
|
||||
done
|
||||
OURCYGPATTERN="(^($ROOTDIRS))"
|
||||
# Add a user-defined pattern to the cygpath arguments
|
||||
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
|
||||
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
|
||||
fi
|
||||
# Now convert the arguments - kludge to limit ourselves to /bin/sh
|
||||
i=0
|
||||
for arg in "$@" ; do
|
||||
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
|
||||
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
|
||||
|
||||
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
|
||||
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
|
||||
else
|
||||
eval `echo args$i`="\"$arg\""
|
||||
fi
|
||||
i=$((i+1))
|
||||
done
|
||||
case $i in
|
||||
(0) set -- ;;
|
||||
(1) set -- "$args0" ;;
|
||||
(2) set -- "$args0" "$args1" ;;
|
||||
(3) set -- "$args0" "$args1" "$args2" ;;
|
||||
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
|
||||
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
|
||||
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
|
||||
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
|
||||
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
|
||||
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
|
||||
function splitJvmOpts() {
|
||||
JVM_OPTS=("$@")
|
||||
}
|
||||
eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
|
||||
JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
|
||||
|
||||
exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
|
|
@ -0,0 +1,90 @@
|
|||
@if "%DEBUG%" == "" @echo off
|
||||
@rem ##########################################################################
|
||||
@rem
|
||||
@rem Gradle startup script for Windows
|
||||
@rem
|
||||
@rem ##########################################################################
|
||||
|
||||
@rem Set local scope for the variables with windows NT shell
|
||||
if "%OS%"=="Windows_NT" setlocal
|
||||
|
||||
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
set DEFAULT_JVM_OPTS=
|
||||
|
||||
set DIRNAME=%~dp0
|
||||
if "%DIRNAME%" == "" set DIRNAME=.
|
||||
set APP_BASE_NAME=%~n0
|
||||
set APP_HOME=%DIRNAME%
|
||||
|
||||
@rem Find java.exe
|
||||
if defined JAVA_HOME goto findJavaFromJavaHome
|
||||
|
||||
set JAVA_EXE=java.exe
|
||||
%JAVA_EXE% -version >NUL 2>&1
|
||||
if "%ERRORLEVEL%" == "0" goto init
|
||||
|
||||
echo.
|
||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
echo.
|
||||
echo Please set the JAVA_HOME variable in your environment to match the
|
||||
echo location of your Java installation.
|
||||
|
||||
goto fail
|
||||
|
||||
:findJavaFromJavaHome
|
||||
set JAVA_HOME=%JAVA_HOME:"=%
|
||||
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
||||
|
||||
if exist "%JAVA_EXE%" goto init
|
||||
|
||||
echo.
|
||||
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
||||
echo.
|
||||
echo Please set the JAVA_HOME variable in your environment to match the
|
||||
echo location of your Java installation.
|
||||
|
||||
goto fail
|
||||
|
||||
:init
|
||||
@rem Get command-line arguments, handling Windowz variants
|
||||
|
||||
if not "%OS%" == "Windows_NT" goto win9xME_args
|
||||
if "%@eval[2+2]" == "4" goto 4NT_args
|
||||
|
||||
:win9xME_args
|
||||
@rem Slurp the command line arguments.
|
||||
set CMD_LINE_ARGS=
|
||||
set _SKIP=2
|
||||
|
||||
:win9xME_args_slurp
|
||||
if "x%~1" == "x" goto execute
|
||||
|
||||
set CMD_LINE_ARGS=%*
|
||||
goto execute
|
||||
|
||||
:4NT_args
|
||||
@rem Get arguments from the 4NT Shell from JP Software
|
||||
set CMD_LINE_ARGS=%$
|
||||
|
||||
:execute
|
||||
@rem Setup the command line
|
||||
|
||||
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
||||
|
||||
@rem Execute Gradle
|
||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
|
||||
|
||||
:end
|
||||
@rem End local scope for the variables with windows NT shell
|
||||
if "%ERRORLEVEL%"=="0" goto mainEnd
|
||||
|
||||
:fail
|
||||
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
|
||||
rem the _cmd.exe /c_ return code!
|
||||
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
|
||||
exit /b 1
|
||||
|
||||
:mainEnd
|
||||
if "%OS%"=="Windows_NT" endlocal
|
||||
|
||||
:omega
|
|
@ -6,7 +6,7 @@ dependencies {
|
|||
|
||||
android {
|
||||
compileSdkVersion 17
|
||||
buildToolsVersion '17'
|
||||
buildToolsVersion '18.1.1'
|
||||
|
||||
sourceSets {
|
||||
main {
|
||||
|
|
|
@ -2,7 +2,7 @@ apply plugin: 'android-library'
|
|||
|
||||
android {
|
||||
compileSdkVersion 17
|
||||
buildToolsVersion '17'
|
||||
buildToolsVersion '18.1.1'
|
||||
|
||||
sourceSets {
|
||||
main {
|
||||
|
|
|
@ -2,7 +2,7 @@ apply plugin: 'android-library'
|
|||
|
||||
android {
|
||||
compileSdkVersion 17
|
||||
buildToolsVersion '17'
|
||||
buildToolsVersion '18.1.1'
|
||||
|
||||
sourceSets {
|
||||
main {
|
||||
|
|
|
@ -2,7 +2,7 @@ apply plugin: 'android-library'
|
|||
|
||||
android {
|
||||
compileSdkVersion 17
|
||||
buildToolsVersion '17'
|
||||
buildToolsVersion '18.1.1'
|
||||
|
||||
sourceSets {
|
||||
main {
|
||||
|
|
Before Width: | Height: | Size: 7.4 KiB After Width: | Height: | Size: 5.7 KiB |
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 8.5 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 22 KiB |
|
@ -196,12 +196,7 @@ Si us plau, envia\'ns els errors, contribueix a millorar-lo a
|
|||
<string name="abbrev_kilobytes">KB</string>
|
||||
<string name="abbrev_bytes">B</string>
|
||||
|
||||
<string name="account_size_changed">
|
||||
Compte \"<xliff:g id="account">%s</xliff:g>\" comprimida des de
|
||||
<xliff:g id="oldSize">%s</xliff:g>
|
||||
a
|
||||
<xliff:g id="newSize">%s</xliff:g>
|
||||
</string>
|
||||
<string name="account_size_changed">Compte \"<xliff:g id="account">%s</xliff:g>\" comprimida des de <xliff:g id="oldSize">%s</xliff:g> a <xliff:g id="newSize">%s</xliff:g></string>
|
||||
|
||||
<string name="compacting_account">S\'està compactant el compte \"<xliff:g id="account">%s</xliff:g>\"</string>
|
||||
<string name="clearing_account">S\'està netejant el compte \"<xliff:g id="account">%s</xliff:g>\"</string>
|
||||
|
@ -986,7 +981,7 @@ Si us plau, envia\'ns els errors, contribueix a millorar-lo a
|
|||
(1) http://developer.android.com/guide/topics/resources/string-resource.html#Plurals
|
||||
|
||||
-->
|
||||
<plurals name="dialog_confirm_delete_message">
|
||||
<plurals name="dialog_confirm_delete_messages">
|
||||
<item quantity="one">Voleu eliminar aquest missatge?</item>
|
||||
<item quantity="other">Voleu eliminar <xliff:g id="message_count">%1$d</xliff:g> missatges?</item>
|
||||
</plurals>
|
||||
|
@ -1023,7 +1018,7 @@ Si us plau, envia\'ns els errors, contribueix a millorar-lo a
|
|||
<string name="settings_export_success">S\'han exportat els paràmetres globals a <xliff:g id="filename">%s</xliff:g></string>
|
||||
<string name="settings_import_global_settings_success">S\'han importat els paràmetres globals de <xliff:g id="filename">%s</xliff:g></string>
|
||||
<string name="settings_import_success">S\'ha importat <xliff:g id="accounts">%s</xliff:g> des de <xliff:g id="filename">%s</xliff:g></string>
|
||||
<plurals name="settings_import_success">
|
||||
<plurals name="settings_import_accounts">
|
||||
<item quantity="one">un compte</item>
|
||||
<item quantity="other"><xliff:g id="numAccounts">%s</xliff:g> comptes</item>
|
||||
</plurals>
|
||||
|
|
|
@ -200,12 +200,7 @@ Posílejte prosím chybová hlášení, přispívejte novými funkcemi a ptejte
|
|||
<string name="abbrev_kilobytes">KiB</string>
|
||||
<string name="abbrev_bytes">B</string>
|
||||
|
||||
<string name="account_size_changed">
|
||||
Účet \"<xliff:g id="account">%s</xliff:g>\" byl stlačen z
|
||||
<xliff:g id="oldSize">%s</xliff:g>
|
||||
na
|
||||
<xliff:g id="newSize">%s</xliff:g>
|
||||
</string>
|
||||
<string name="account_size_changed">Účet \"<xliff:g id="account">%s</xliff:g>\" byl stlačen z <xliff:g id="oldSize">%s</xliff:g> na <xliff:g id="newSize">%s</xliff:g></string>
|
||||
|
||||
<string name="compacting_account">Stlačuji účet \"<xliff:g id="account">%s</xliff:g>\"</string>
|
||||
<string name="clearing_account">Čistím účet \"<xliff:g id="account">%s</xliff:g>\"</string>
|
||||
|
@ -989,7 +984,7 @@ Posílejte prosím chybová hlášení, přispívejte novými funkcemi a ptejte
|
|||
(1) http://developer.android.com/guide/topics/resources/string-resource.html#Plurals
|
||||
|
||||
-->
|
||||
<plurals name="dialog_confirm_delete_message">
|
||||
<plurals name="dialog_confirm_delete_messages">
|
||||
<item quantity="one">Opravdu si přejete smazat tuto zprávu?</item>
|
||||
<item quantity="few">Opravdu si přejete smazat <xliff:g id="message_count">%1$d</xliff:g> zprávy?</item>
|
||||
<item quantity="other">Opravdu si přejete smazat <xliff:g id="message_count">%1$d</xliff:g> zpráv?</item>
|
||||
|
@ -1028,7 +1023,7 @@ Posílejte prosím chybová hlášení, přispívejte novými funkcemi a ptejte
|
|||
<string name="settings_export_success">Export nastavení uložen do <xliff:g id="filename">%s</xliff:g></string>
|
||||
<string name="settings_import_global_settings_success">Importovano globální nastaveni z <xliff:g id="filename">%s</xliff:g></string>
|
||||
<string name="settings_import_success">Importováno <xliff:g id="accounts">%s</xliff:g> z <xliff:g id="filename">%s</xliff:g></string>
|
||||
<plurals name="settings_import_success">
|
||||
<plurals name="settings_import_accounts">
|
||||
<item quantity="one"><xliff:g id="numAccounts">%s</xliff:g> účet</item><!-- added var in place of 1 účet -->
|
||||
<item quantity="few"><xliff:g id="numAccounts">%s</xliff:g> účty</item><!-- 2-4 need to be this and 5- other -->
|
||||
<item quantity="other"><xliff:g id="numAccounts">%s</xliff:g> účtů</item>
|
||||
|
@ -1151,13 +1146,13 @@ Posílejte prosím chybová hlášení, přispívejte novými funkcemi a ptejte
|
|||
<string name="mark_all_as_read">Označ vše jako přečtené</string>
|
||||
|
||||
<string name="global_settings_colorize_missing_contact_pictures_label">Zabarvit chybějcí obrázky kontaktů</string>
|
||||
<!-- NEW: <string name="global_settings_colorize_missing_contact_pictures_summary">Colorize missing contact pictures</string>-->
|
||||
<string name="global_settings_colorize_missing_contact_pictures_summary">Zabarví chybějcí obrázky u kontaktů</string>
|
||||
|
||||
<string name="global_settings_messageview_visible_refile_actions_title">Zobrazení funkcí zpráv</string>
|
||||
<string name="global_settings_messageview_visible_refile_actions_summary">Zobrazí vybrané funkce v dolním menu u zpráv</string>
|
||||
|
||||
<!-- NEW: <string name="loading_attachment">Loading attachment…</string>-->
|
||||
<!-- NEW: <string name="fetching_attachment_dialog_title_send">Sending message</string>-->
|
||||
<!-- NEW: <string name="fetching_attachment_dialog_title_save">Saving draft</string>-->
|
||||
<!-- NEW: <string name="fetching_attachment_dialog_message">Fetching attachment…</string>-->
|
||||
<string name="loading_attachment">Nahrávám přílohu…</string>
|
||||
<string name="fetching_attachment_dialog_title_send">Odesílám zprávu</string>
|
||||
<string name="fetching_attachment_dialog_title_save">Ukládám koncept</string>
|
||||
<string name="fetching_attachment_dialog_message">Stahuji přílohu…</string>
|
||||
</resources>
|
||||
|
|
|
@ -68,8 +68,8 @@ Vær venlig at sende fejlrapporter, anmodning om nye funktioner, og spørgsmål
|
|||
|
||||
<!-- === App Store-specific strings ======================================================= -->
|
||||
|
||||
<!-- NEW: <string name="import_dialog_error_message">Please install a file manager to continue with this import.</string>-->
|
||||
<!-- NEW: <string name="open_market">Open Play Store</string>-->
|
||||
<string name="import_dialog_error_message">Du skal have en filemanager installeret for at kunne importere.</string>
|
||||
<string name="open_market">Åben Play Store</string>
|
||||
|
||||
|
||||
|
||||
|
@ -89,15 +89,15 @@ Vær venlig at sende fejlrapporter, anmodning om nye funktioner, og spørgsmål
|
|||
|
||||
<string name="about_title_fmt">Om <xliff:g id="app_name">%s</xliff:g></string>
|
||||
<string name="accounts_title">Konti</string>
|
||||
<!-- NEW: <string name="folders_title">Folders</string>-->
|
||||
<string name="folders_title">Mapper</string>
|
||||
<string name="advanced">Avanceret</string>
|
||||
|
||||
<string name="message_list_title"><xliff:g id="account">%s</xliff:g>:<xliff:g id="folder">%s</xliff:g> </string>
|
||||
|
||||
<string name="compose_title_compose">Skriv</string>
|
||||
<!-- NEW: <string name="compose_title_reply">Reply</string>-->
|
||||
<!-- NEW: <string name="compose_title_reply_all">Reply all</string>-->
|
||||
<!-- NEW: <string name="compose_title_forward">Forward</string>-->
|
||||
<string name="compose_title_reply">Svar</string>
|
||||
<string name="compose_title_reply_all">Svar alle</string>
|
||||
<string name="compose_title_forward">Vidersend</string>
|
||||
|
||||
<string name="choose_folder_title">Vælg en mappe</string>
|
||||
|
||||
|
@ -110,7 +110,7 @@ Vær venlig at sende fejlrapporter, anmodning om nye funktioner, og spørgsmål
|
|||
<string name="status_next_poll">Næste synkronisering <xliff:g id="nexttime">%s</xliff:g></string>
|
||||
<string name="status_syncing_off">synkronisering deaktiveret</string>
|
||||
|
||||
<!-- NEW: <string name="actionbar_selected"><xliff:g id="selection_count">%d</xliff:g> selected</string>-->
|
||||
<string name="actionbar_selected"><xliff:g id="selection_count">%d</xliff:g> valgt</string>
|
||||
<!-- Actions will be used as buttons and in menu items -->
|
||||
<string name="next_action">Næste</string> <!-- Used as part of a multi-step process -->
|
||||
<string name="previous_action">Forrige</string> <!-- Used as part of a multi-step process -->
|
||||
|
@ -127,17 +127,17 @@ Vær venlig at sende fejlrapporter, anmodning om nye funktioner, og spørgsmål
|
|||
<string name="spam_action">Spam</string>
|
||||
<string name="forward_action">Videresend</string>
|
||||
<string name="move_action">Flyt</string>
|
||||
<!-- NEW: <string name="single_message_options_action">Send…</string>-->
|
||||
<string name="single_message_options_action">Send…</string>
|
||||
<!-- NEW: <string name="refile_action">Refile…</string>-->
|
||||
<string name="continue_action">Fortsæt</string>
|
||||
<!-- NEW: <string name="back_action">Back</string>-->
|
||||
<string name="back_action">Tilbage</string>
|
||||
<string name="done_action">Afslut</string> <!-- Used to complete a multi-step process -->
|
||||
<string name="discard_action">Slet</string>
|
||||
<string name="save_draft_action">Gem som kladde</string>
|
||||
<string name="check_mail_action">Synkroniser mails</string>
|
||||
<string name="send_messages_action">Send mails</string>
|
||||
<string name="refresh_folders_action">Genindlæs mapper</string>
|
||||
<!-- NEW: <string name="filter_folders_action">Find folder</string>-->
|
||||
<string name="filter_folders_action">Find mappe</string>
|
||||
<string name="add_account_action">Tilføj konto</string>
|
||||
<string name="compose_action">Skriv</string>
|
||||
<string name="search_action">Søg</string>
|
||||
|
@ -157,12 +157,12 @@ Vær venlig at sende fejlrapporter, anmodning om nye funktioner, og spørgsmål
|
|||
<string name="unflag_action">Fjern stjernemarkering</string>
|
||||
<string name="copy_action">Kopier</string>
|
||||
<string name="select_text_action">Vælg tekst</string>
|
||||
<!-- NEW: <string name="show_headers_action">Show headers</string>-->
|
||||
<!-- NEW: <string name="hide_headers_action">Hide headers</string>-->
|
||||
|
||||
<!-- NEW: <string name="message_view_theme_action_dark">Switch to dark theme</string>-->
|
||||
<!-- NEW: <string name="message_view_theme_action_light">Switch to light theme</string>-->
|
||||
<string name="show_headers_action">Vis headers</string>
|
||||
<string name="hide_headers_action">Skjul headers</string>
|
||||
|
||||
<string name="message_view_theme_action_dark">Skift til mørkt theme</string>
|
||||
<string name="message_view_theme_action_light">Skift til lyst theme</string>
|
||||
|
||||
<string name="mark_as_unread_action">Marker som ulæst</string>
|
||||
<string name="add_cc_bcc_action">Tilføj Cc/Bcc</string>
|
||||
<string name="read_receipt">Kvittering for modtagelse</string>
|
||||
|
@ -196,27 +196,22 @@ Vær venlig at sende fejlrapporter, anmodning om nye funktioner, og spørgsmål
|
|||
<string name="abbrev_kilobytes">KB</string>
|
||||
<string name="abbrev_bytes">B</string>
|
||||
|
||||
<string name="account_size_changed">
|
||||
Konto \"<xliff:g id="account">%s</xliff:g>\" nedbragt fra
|
||||
<xliff:g id="oldSize">%s</xliff:g>
|
||||
til
|
||||
<xliff:g id="newSize">%s</xliff:g>
|
||||
</string>
|
||||
<string name="account_size_changed">Konto \"<xliff:g id="account">%s</xliff:g>\" nedbragt fra <xliff:g id="oldSize">%s</xliff:g> til <xliff:g id="newSize">%s</xliff:g></string>
|
||||
|
||||
<string name="compacting_account">Komprimerer konto \"<xliff:g id="account">%s</xliff:g>\"</string>
|
||||
<string name="clearing_account">Renser konto \"<xliff:g id="account">%s</xliff:g>\"</string>
|
||||
<string name="recreating_account">Genskaber konto \"<xliff:g id="account">%s</xliff:g>\"</string>
|
||||
|
||||
<string name="notification_new_title">Ny mail</string>
|
||||
<!-- NEW: <string name="notification_new_messages_title"><xliff:g id="new_message_count">%d</xliff:g> new messages</string>-->
|
||||
<string name="notification_new_messages_title"><xliff:g id="new_message_count">%d</xliff:g> nye meddelelser</string>
|
||||
<string name="notification_new_one_account_fmt"><xliff:g id="unread_message_count">%d</xliff:g> ulæst(e) (<xliff:g id="account">%s</xliff:g>)</string> <!-- 279 Unread (someone@google.com) -->
|
||||
<!-- NEW: <string name="notification_additional_messages">+ <xliff:g id="additional_messages">%d</xliff:g> more on <xliff:g id="account">%s</xliff:g></string>-->
|
||||
<string name="notification_additional_messages">+ <xliff:g id="additional_messages">%d</xliff:g> yderligere på <xliff:g id="account">%s</xliff:g></string>
|
||||
|
||||
<!-- NEW: <string name="notification_action_reply">Reply</string>-->
|
||||
<!-- NEW: <string name="notification_action_mark_as_read">Mark Read</string>-->
|
||||
<!-- NEW: <string name="notification_action_delete">Delete</string>-->
|
||||
<!-- NEW: <string name="notification_certificate_error_title">Certificate error for <xliff:g id="account">%s</xliff:g></string>-->
|
||||
<!-- NEW: <string name="notification_certificate_error_text">Check your server settings</string>-->
|
||||
<string name="notification_action_reply">Svar</string>
|
||||
<string name="notification_action_mark_as_read">Marker som læst</string>
|
||||
<string name="notification_action_delete">Slet</string>
|
||||
<string name="notification_certificate_error_title">Certifikat fejl for <xliff:g id="account">%s</xliff:g></string>
|
||||
<string name="notification_certificate_error_text">Check indstillinger for server</string>
|
||||
|
||||
<string name="notification_bg_sync_ticker">Synkroniserer mail: <xliff:g id="account">%s</xliff:g>:<xliff:g id="folder">%s</xliff:g></string>
|
||||
<string name="notification_bg_sync_title">Synkroniserer mail</string>
|
||||
|
@ -256,7 +251,7 @@ Vær venlig at sende fejlrapporter, anmodning om nye funktioner, og spørgsmål
|
|||
<string name="message_compose_bcc_hint">Bcc</string>
|
||||
<string name="message_compose_subject_hint">Emne</string>
|
||||
<string name="message_compose_content_hint">Meddelelsestekst</string>
|
||||
<!-- NEW: <string name="message_compose_signature_hint">Signature</string>-->
|
||||
<string name="message_compose_signature_hint">Signatur</string>
|
||||
<string name="message_compose_quote_header_separator">-------- Original meddelelse --------</string>
|
||||
<string name="message_compose_quote_header_subject">Emne:</string>
|
||||
<string name="message_compose_quote_header_send_date">Sendt:</string>
|
||||
|
@ -268,11 +263,11 @@ Vær venlig at sende fejlrapporter, anmodning om nye funktioner, og spørgsmål
|
|||
<string name="error_contact_address_not_found">Mail addresse ikke fundet.</string>
|
||||
<string name="message_compose_attachments_skipped_toast">Nogle vedhæftninger kunne ikke videresendes fordi de ikke er blevet hentet fra server.</string>
|
||||
<string name="message_compose_show_quoted_text_action">Citer meddelelse</string>
|
||||
<!-- NEW: <string name="message_compose_description_add_to">Add recipient (To)</string>-->
|
||||
<!-- NEW: <string name="message_compose_description_add_cc">Add recipient (CC)</string>-->
|
||||
<!-- NEW: <string name="message_compose_description_add_bcc">Add recipient (BCC)</string>-->
|
||||
<!-- NEW: <string name="message_compose_description_delete_quoted_text">Remove quoted text</string>-->
|
||||
<!-- NEW: <string name="message_compose_description_edit_quoted_text">Edit quoted text</string>-->
|
||||
<string name="message_compose_description_add_to">Tilføj modtager (Til)</string>
|
||||
<string name="message_compose_description_add_cc">ATilføj modtager (CC)</string>
|
||||
<string name="message_compose_description_add_bcc">Tilføj modtager (BCC)</string>
|
||||
<string name="message_compose_description_delete_quoted_text">Fjern citeret tekst</string>
|
||||
<string name="message_compose_description_edit_quoted_text">Rediger citeret tekst</string>
|
||||
|
||||
<string name="message_view_from_format">Fra: <xliff:g id="name">%s</xliff:g> <<xliff:g id="email">%s</xliff:g>></string>
|
||||
<string name="message_to_label">Til:</string>
|
||||
|
@ -282,13 +277,13 @@ Vær venlig at sende fejlrapporter, anmodning om nye funktioner, og spørgsmål
|
|||
<string name="message_view_status_attachment_saved">Vedhæftning gemt på SD kort som <xliff:g id="filename">%s</xliff:g>.</string>
|
||||
<string name="message_view_status_attachment_not_saved">Kan ikke gemme vedhæftning på SD kort.</string>
|
||||
<string name="message_view_show_pictures_action">Vis billeder</string>
|
||||
<!-- NEW: <string name="message_view_show_message_action">Show message</string>-->
|
||||
<!-- NEW: <string name="message_view_show_attachments_action">Show attachments</string>-->
|
||||
<!-- NEW: <string name="message_view_show_more_attachments_action">More…</string>-->
|
||||
<string name="message_view_show_message_action">Vis meddelelse</string>
|
||||
<string name="message_view_show_attachments_action">Vis vedhæftning</string>
|
||||
<string name="message_view_show_more_attachments_action">Mere…</string>
|
||||
<string name="message_view_fetching_attachment_toast">Henter vedhæftede filer.</string>
|
||||
<string name="message_view_no_viewer">Kan ikke finde program som kan vise <xliff:g id="mimetype">%s</xliff:g>.</string>
|
||||
<string name="message_view_download_remainder">Hent hele meddelelsen</string>
|
||||
<!-- NEW: <string name="message_view_downloading">Downloading…</string>-->
|
||||
<string name="message_view_downloading">Henter…</string>
|
||||
|
||||
<!-- NOTE: The following message refers to strings with id 'account_setup_incoming_save_all_headers_label' and 'account_setup_incoming_title' -->
|
||||
<string name="message_additional_headers_not_downloaded">Ikke alle mail headers blev hentet eller gemt. Vælg \"Gem alle headers lokalt\" under kontoens indstillinger for indgående server, for at aktivere denne funktion fremover.</string>
|
||||
|
@ -316,13 +311,13 @@ Vær venlig at sende fejlrapporter, anmodning om nye funktioner, og spørgsmål
|
|||
<string name="global_settings_registered_name_color_label">Farvelæg kontakter</string>
|
||||
<string name="global_settings_registered_name_color_default">Benyt ikke farvelægning af navne i kontaktlisten</string>
|
||||
<string name="global_settings_registered_name_color_changed">Farvelæg navne i kontaklisten</string>
|
||||
<!-- NEW: <string name="global_settings_folderlist_wrap_folder_names_label">Wrap long folder names</string>-->
|
||||
<!-- NEW: <string name="global_settings_folderlist_wrap_folder_names_summary">Use multiple lines to show long folder names</string>-->
|
||||
<string name="global_settings_folderlist_wrap_folder_names_label">Wrap lange mappenavne</string>
|
||||
<string name="global_settings_folderlist_wrap_folder_names_summary">Benyt flere linier til visning af lange mappenavne</string>
|
||||
|
||||
<string name="global_settings_messageview_fixedwidth_label">Tegnsæt med fast bredde</string>
|
||||
<string name="global_settings_messageview_fixedwidth_summary">Benyt tegnsæt med fast bredde til visning af mails med ren tekst</string>
|
||||
<!-- NEW: <string name="global_settings_messageview_autofit_width_label">Auto-fit messages</string>-->
|
||||
<!-- NEW: <string name="global_settings_messageview_autofit_width_summary">Shrink messages to fit the screen</string>-->
|
||||
<string name="global_settings_messageview_autofit_width_label">Auto tilpas størrelse på meddelser</string>
|
||||
<string name="global_settings_messageview_autofit_width_summary">Afkort meddelser så de passer til skærm</string>
|
||||
<string name="global_settings_messageview_return_to_list_label">Retur til liste efter sletning</string>
|
||||
<string name="global_settings_messageview_return_to_list_summary">Returner til mailliste efter sletning af mail</string>
|
||||
<string name="global_settings_messageview_show_next_label">Vis næste mail efter sletning</string>
|
||||
|
@ -333,28 +328,28 @@ Vær venlig at sende fejlrapporter, anmodning om nye funktioner, og spørgsmål
|
|||
<string name="global_settings_confirm_action_delete">Slet mail (kun i forb. med visning af mails)</string>
|
||||
<string name="global_settings_confirm_action_delete_starred">Slet stjernemarkeringer (kun i forb. med visning af mails)</string>
|
||||
<string name="global_settings_confirm_action_spam">Spam</string>
|
||||
<!-- NEW: <string name="global_settings_confirm_action_delete_notif">Delete (from notification)</string>-->
|
||||
<string name="global_settings_confirm_action_delete_notif">Slet (fra notifikation)</string>
|
||||
|
||||
<!-- NEW: <string name="global_settings_notification_hide_subject_title">Hide subject in notifications</string>-->
|
||||
<!-- NEW: <string name="global_settings_notification_hide_subject_never">Never</string>-->
|
||||
<!-- NEW: <string name="global_settings_notification_hide_subject_when_locked">When device is locked</string>-->
|
||||
<!-- NEW: <string name="global_settings_notification_hide_subject_always">Always</string>-->
|
||||
<string name="global_settings_notification_hide_subject_title">Skjul emne i notifikations bjælke</string>
|
||||
<string name="global_settings_notification_hide_subject_never">Aldrig</string>
|
||||
<string name="global_settings_notification_hide_subject_when_locked">Når enhed er låst</string>
|
||||
<string name="global_settings_notification_hide_subject_always">Altid</string>
|
||||
|
||||
<!-- NEW: <string name="global_settings_notification_quick_delete_title">Show \'Delete\' button</string>-->
|
||||
<!-- NEW: <string name="global_settings_notification_quick_delete_never">Never</string>-->
|
||||
<!-- NEW: <string name="global_settings_notification_quick_delete_when_single_msg">For single message notification</string>-->
|
||||
<!-- NEW: <string name="global_settings_notification_quick_delete_always">Always</string>-->
|
||||
<!-- NEW: <string name="global_settings_notification_quick_delete_description">Show a button in the notification that allows quick message deletion</string>-->
|
||||
<string name="global_settings_notification_quick_delete_title">Vis \'Slet\' knap</string>
|
||||
<string name="global_settings_notification_quick_delete_never">Aldrig</string>
|
||||
<string name="global_settings_notification_quick_delete_when_single_msg">For single meddelelse notifikation</string>
|
||||
<string name="global_settings_notification_quick_delete_always">Altid</string>
|
||||
<string name="global_settings_notification_quick_delete_description">Vis knap i notifikation bjælke som tillader sletning af meddelese</string>
|
||||
|
||||
<!-- NEW: <string name="global_settings_batch_buttons">Batch buttons</string>-->
|
||||
<!-- NEW: <string name="global_settings_batch_buttons_summary">Configure message list batch buttons</string>-->
|
||||
<!-- NEW: <string name="global_settings_mark_read">Mark read/unread</string>-->
|
||||
<!-- NEW: <string name="global_settings_delete">Delete</string>-->
|
||||
<!-- NEW: <string name="global_settings_archive">Move to archive</string>-->
|
||||
<!-- NEW: <string name="global_settings_archive_disabled_reason">No archive folders.</string>-->
|
||||
<!-- NEW: <string name="global_settings_move">Move</string>-->
|
||||
<!-- NEW: <string name="global_settings_flag">Flag</string>-->
|
||||
<!-- NEW: <string name="global_settings_unselect">Unselect</string>-->
|
||||
<string name="global_settings_batch_buttons">Batch håndterings knapper</string>
|
||||
<string name="global_settings_batch_buttons_summary">Konfigurer meddelelses liste batch håndterings knapper</string>
|
||||
<string name="global_settings_mark_read">Marker som læst/ulæst</string>
|
||||
<string name="global_settings_delete">Slet</string>
|
||||
<string name="global_settings_archive">Flyt til arkiv</string>
|
||||
<string name="global_settings_archive_disabled_reason">Ingen arkivmapper.</string>
|
||||
<string name="global_settings_move">Flyt</string>
|
||||
<string name="global_settings_flag">Marker</string>
|
||||
<string name="global_settings_unselect">Fravælg</string>
|
||||
|
||||
<string name="quiet_time">Tidsrum med stilhed</string>
|
||||
<string name="quiet_time_description">Undlad at ringe, vibrere og blinke i tidsrummet</string>
|
||||
|
@ -419,7 +414,7 @@ Vær venlig at sende fejlrapporter, anmodning om nye funktioner, og spørgsmål
|
|||
<string name="account_setup_expunge_policy_on_poll">I forbindelse med hentning af mails</string>
|
||||
<string name="account_setup_expunge_policy_manual">Kun manuelt</string>
|
||||
|
||||
<!-- NEW: <string name="account_setup_incoming_autodetect_namespace_label">Auto-detect IMAP namespace</string>-->
|
||||
<string name="account_setup_incoming_autodetect_namespace_label">Auto detekter IMAP namespace</string>
|
||||
<string name="account_setup_incoming_imap_path_prefix_label">IMAP søge prefix</string>
|
||||
|
||||
<string name="drafts_folder_label">Navn på Kladde mappe</string>
|
||||
|
@ -523,8 +518,8 @@ Vær venlig at sende fejlrapporter, anmodning om nye funktioner, og spørgsmål
|
|||
<string name="account_settings_notification_opens_unread_summary">Søger efter ulæste mails når besked vises</string>
|
||||
<string name="account_settings_notification_unread_count_label">Vis antal ulæste mails</string>
|
||||
<string name="account_settings_notification_unread_count_summary">Vis antallet af ulæste mails i statusbar.</string>
|
||||
<!-- NEW: <string name="account_settings_mark_message_as_read_on_view_label">Mark as read when opened</string>-->
|
||||
<!-- NEW: <string name="account_settings_mark_message_as_read_on_view_summary">Mark a message as read when it is opened for viewing</string>-->
|
||||
<string name="account_settings_mark_message_as_read_on_view_label">Marker som læst ved åbning</string>
|
||||
<string name="account_settings_mark_message_as_read_on_view_summary">Marker som læst når meddelses åbnes for læsning</string>
|
||||
|
||||
<string name="account_settings_show_pictures_label">Vis altid billeder</string>
|
||||
<string name="account_settings_show_pictures_never">Aldrig</string>
|
||||
|
@ -547,7 +542,7 @@ Vær venlig at sende fejlrapporter, anmodning om nye funktioner, og spørgsmål
|
|||
<string name="account_settings_message_format_html">HTML (billeder og formattering bevares)</string>
|
||||
<string name="account_settings_message_format_auto">Automatisk (ren tekst med mindre mail som besvares er i HTML format)</string>
|
||||
|
||||
<!-- NEW: <string name="account_settings_always_show_cc_bcc_label">Always show Cc/Bcc</string>-->
|
||||
<string name="account_settings_always_show_cc_bcc_label">Vis altid Cc/Bcc</string>
|
||||
|
||||
<string name="account_settings_message_read_receipt_label">Kvittering for modtagelse</string>
|
||||
<string name="account_settings_message_read_receipt_summary">Anmod altid om kvittering for modtagelse</string>
|
||||
|
@ -557,7 +552,7 @@ Vær venlig at sende fejlrapporter, anmodning om nye funktioner, og spørgsmål
|
|||
<string name="account_settings_quote_style_header">Header (som Outlook, Yahoo!, Hotmail)</string>
|
||||
|
||||
<string name="account_settings_general_title">Generelt</string>
|
||||
<!-- NEW: <string name="account_settings_reading_mail">Reading mail</string>-->
|
||||
<string name="account_settings_reading_mail">Læsning af mail</string>
|
||||
<string name="account_settings_sync">Hentning af mail</string>
|
||||
<string name="account_settings_folders">Mapper</string>
|
||||
<string name="account_settings_quote_prefix_label">Citeret tekst prefix</string>
|
||||
|
@ -566,9 +561,9 @@ Vær venlig at sende fejlrapporter, anmodning om nye funktioner, og spørgsmål
|
|||
<string name="account_settings_crypto_app_none">Ingen</string>
|
||||
<string name="account_settings_crypto_auto_signature">Auto signering</string>
|
||||
<string name="account_settings_crypto_auto_signature_summary">Benyt kontoens mail addresse til at gætte signaturnøgle.</string>
|
||||
<!-- NEW: <string name="account_settings_crypto_auto_encrypt">Auto-encrypt</string>-->
|
||||
<!-- NEW: <string name="account_settings_crypto_auto_encrypt_summary">Automatically set encrypt if a public key matches a recipient.</string>-->
|
||||
<!-- NEW: <string name="account_settings_crypto_apg_not_installed">APG not installed</string>-->
|
||||
<string name="account_settings_crypto_auto_encrypt">Auto kryptering</string>
|
||||
<string name="account_settings_crypto_auto_encrypt_summary">Automatisk kryptering hvis offentlig nøgle matcher en modtager.</string>
|
||||
<string name="account_settings_crypto_apg_not_installed">APG ikke installeret</string>
|
||||
|
||||
<string name="account_settings_mail_check_frequency_label">Frekvens for hentning af mails</string>
|
||||
|
||||
|
@ -732,8 +727,8 @@ Vær venlig at sende fejlrapporter, anmodning om nye funktioner, og spørgsmål
|
|||
<string name="sort_latest_first">Nyeste mails først</string>
|
||||
<string name="sort_subject_alpha">Sorter efter emne</string>
|
||||
<string name="sort_subject_re_alpha">Sorter efter emne omvendt alfabetisk</string>
|
||||
<!-- NEW: <string name="sort_sender_alpha">Sender alphabetical</string>-->
|
||||
<!-- NEW: <string name="sort_sender_re_alpha">Sender reverse alphabetical</string>-->
|
||||
<string name="sort_sender_alpha">Afsender alfabetisk</string>
|
||||
<string name="sort_sender_re_alpha">Afsender omvendt alfabetisk</string>
|
||||
<string name="sort_flagged_first">Stjernemarkerede mails først</string>
|
||||
<string name="sort_flagged_last">Ikke stjernemarkerede mails først</string>
|
||||
<string name="sort_unread_first">Ulæste mails først</string>
|
||||
|
@ -743,9 +738,9 @@ Vær venlig at sende fejlrapporter, anmodning om nye funktioner, og spørgsmål
|
|||
|
||||
<string name="sort_by">Sorter efter…</string>
|
||||
<string name="sort_by_date">Dato</string>
|
||||
<!-- NEW: <string name="sort_by_arrival">Arrival</string>-->
|
||||
<string name="sort_by_arrival">Modtagelsestidspunkt</string>
|
||||
<string name="sort_by_subject">Emne</string>
|
||||
<!-- NEW: <string name="sort_by_sender">Sender</string>-->
|
||||
<string name="sort_by_sender">Afsender</string>
|
||||
<string name="sort_by_flag">Stjernemarkering</string>
|
||||
<string name="sort_by_unread">Læst/ulæst</string>
|
||||
<string name="sort_by_attach">Vedhæftning</string>
|
||||
|
@ -757,7 +752,7 @@ Vær venlig at sende fejlrapporter, anmodning om nye funktioner, og spørgsmål
|
|||
<string name="account_clear_dlg_title">Rens konto</string>
|
||||
|
||||
<string name="provider_note_yahoojp">Hvis du ønsker at benytte POP3 med denne leverandør, skal du vælge at tillade POP3 i Yahoo\'s indstillinger for mail.</string>
|
||||
<!-- NEW: <string name="provider_note_auonejp">Be sure to enable IMAP or POP3 on the au one mail settings page.</string>-->
|
||||
<string name="provider_note_auonejp">Husk at aktiver IMAP eller POP3 i \"au one mail\" indstillings siden.</string>
|
||||
<string name="provider_note_naver">Hvis du ønsker at benytte POP3 med denne leverandør, skal du vælge at tillade IMAP eller POP3 i Naver\'s indstillinger for mail.</string>
|
||||
<string name="provider_note_hanmail">Hvis du ønsker at benytte POP3 med denne leverandør, skal du vælge at tillade IMAP eller POP3 i Hanmail\'s(Daum)indstillinger for mail.</string>
|
||||
<string name="provider_note_paran">Hvis du ønsker at benytte POP3 med denne leverandør, skal du vælge at tillade IMAP eller POP3 i Paran\'s indstillinger for mail.</string>
|
||||
|
@ -805,7 +800,7 @@ Vær venlig at sende fejlrapporter, anmodning om nye funktioner, og spørgsmål
|
|||
<string name="account_settings_signature__location_label">Signatur position</string>
|
||||
<string name="account_settings_signature__location_before_quoted_text">Før citeret tekst</string>
|
||||
<string name="account_settings_signature__location_after_quoted_text">Efter citeret tekst</string>
|
||||
<!-- NEW: <string name="setting_theme_global">Use app theme</string>-->
|
||||
<string name="setting_theme_global">Benyt app theme</string>
|
||||
<string name="setting_theme_dark">Mørk</string>
|
||||
<string name="setting_theme_light">Lys</string>
|
||||
<string name="display_preferences">Visning</string>
|
||||
|
@ -817,15 +812,15 @@ Vær venlig at sende fejlrapporter, anmodning om nye funktioner, og spørgsmål
|
|||
<string name="accountlist_preferences">Kontoliste</string>
|
||||
<string name="messagelist_preferences">Mailliste</string>
|
||||
<string name="messageview_preferences">Mails</string>
|
||||
<!-- NEW: <string name="folderlist_preferences">Folder lists</string>-->
|
||||
<string name="folderlist_preferences">Mappe lister</string>
|
||||
<string name="settings_theme_label">Tema</string>
|
||||
<!-- NEW: <string name="settings_message_theme_label">Message view theme</string>-->
|
||||
<!-- NEW: <string name="settings_compose_theme_label">Composer theme</string>-->
|
||||
<string name="settings_message_theme_label">Meddelelsesvisnings theme</string>
|
||||
<string name="settings_compose_theme_label">Editor theme</string>
|
||||
<string name="settings_language_label">Sprog</string>
|
||||
|
||||
<!-- NEW: <string name="settings_message_theme_selection_label">Fixed message theme</string>-->
|
||||
<!-- NEW: <string name="settings_message_theme_selection_summary_off">Select the message view theme while viewing the message</string>-->
|
||||
<!-- NEW: <string name="settings_message_theme_selection_summary_on">Use a fixed message view theme</string>-->
|
||||
<string name="settings_message_theme_selection_label">Fixed meddelelses theme</string>
|
||||
<string name="settings_message_theme_selection_summary_off">Benyt meddelelsesvisnings theme når meddelelser læses</string>
|
||||
<string name="settings_message_theme_selection_summary_on">Benyt et fixed meddelelsesvisnings theme</string>
|
||||
|
||||
<string name="settings_messageview_mobile_layout_label">Enkelkolonne layout</string>
|
||||
<string name="settings_messageview_mobile_layout_summary">Reformater HTML meddelelser til visning på små skærme</string>
|
||||
|
@ -837,7 +832,7 @@ Vær venlig at sende fejlrapporter, anmodning om nye funktioner, og spørgsmål
|
|||
<string name="background_ops_always">Altid</string>
|
||||
<string name="background_ops_enabled">Når \"Baggrundsdata\" er aktiveret</string>
|
||||
<string name="background_ops_auto_sync">Når \"Baggrundsdata\" & \"Auto-sync\" er aktiveret</string>
|
||||
<!-- NEW: <string name="background_ops_auto_sync_only">When \'Auto-sync\' is checked</string>-->
|
||||
<string name="background_ops_auto_sync_only">Når \"Auto-sync\" er valgt</string>
|
||||
|
||||
<string name="batch_select_all">Vælg alle</string>
|
||||
|
||||
|
@ -916,10 +911,10 @@ Vær venlig at sende fejlrapporter, anmodning om nye funktioner, og spørgsmål
|
|||
<string name="font_size_message_view_date">Tid og dato</string>
|
||||
<string name="font_size_message_view_content">Indhold</string>
|
||||
|
||||
<!-- NEW: <string name="font_size_message_compose">Message composition</string>-->
|
||||
<!-- NEW: <string name="font_size_message_compose_input">Text input fields</string>-->
|
||||
<string name="font_size_message_compose">Meddelelses redigering</string>
|
||||
<string name="font_size_message_compose_input">Tekst input felter</string>
|
||||
|
||||
<!-- NEW: <string name="font_size_default">Default</string>-->
|
||||
<string name="font_size_default">Forudvalgt</string>
|
||||
<string name="font_size_tiniest">Mindst</string>
|
||||
<string name="font_size_tiny">Mindre</string>
|
||||
<string name="font_size_smaller">Lille</string>
|
||||
|
@ -960,14 +955,14 @@ Vær venlig at sende fejlrapporter, anmodning om nye funktioner, og spørgsmål
|
|||
<string name="save_or_discard_draft_message_dlg_title">Gem kladde?</string>
|
||||
<string name="save_or_discard_draft_message_instructions_fmt">Gem eller fortryd denne meddelelse?</string>
|
||||
|
||||
<!-- NEW: <string name="confirm_discard_draft_message_title">Discard message?</string>-->
|
||||
<!-- NEW: <string name="confirm_discard_draft_message">Are you sure you want to discard this message?</string>-->
|
||||
<string name="confirm_discard_draft_message_title">Annuler meddelelse?</string>
|
||||
<string name="confirm_discard_draft_message">Er du sikker på at du ønsker at annulere denne meddelelse?</string>
|
||||
|
||||
<!-- NEW: <string name="refuse_to_save_draft_marked_encrypted_dlg_title">Refuse to save draft message.</string>-->
|
||||
<!-- NEW: <string name="refuse_to_save_draft_marked_encrypted_instructions_fmt">Refuse to save draft message marked encrypted.</string>-->
|
||||
|
||||
<!-- NEW: <string name="continue_without_public_key_dlg_title">Continue without public key?</string>-->
|
||||
<!-- NEW: <string name="continue_without_public_key_instructions_fmt">One or more recipients do not have a saved public key. Continue?</string>-->
|
||||
<string name="continue_without_public_key_dlg_title">Fortsæt uden offentlig nøgle?</string>
|
||||
<string name="continue_without_public_key_instructions_fmt">En eller flere modtagere har ikke en offentlig nøgle. Fortsæt?</string>
|
||||
|
||||
<string name="select_text_now">Vælg tekst som skal kopieres.</string>
|
||||
|
||||
|
@ -985,12 +980,11 @@ Vær venlig at sende fejlrapporter, anmodning om nye funktioner, og spørgsmål
|
|||
(1) http://developer.android.com/guide/topics/resources/string-resource.html#Plurals
|
||||
|
||||
-->
|
||||
<!-- NEW:
|
||||
<plurals name="dialog_confirm_delete_message">
|
||||
<item quantity="one">Do you really want to delete this message?</item>
|
||||
<item quantity="other">Do you really want to delete <xliff:g id="message_count">%1$d</xliff:g> messages?</item>
|
||||
<plurals name="dialog_confirm_delete_messages">
|
||||
<item quantity="one">Ønsker du virkelig at slette denne meddelelse?</item>
|
||||
<item quantity="other">Ønsker du virkelig at slette <xliff:g id="message_count">%1$d</xliff:g> meddelelser?</item>
|
||||
</plurals>
|
||||
-->
|
||||
|
||||
<string name="dialog_confirm_delete_confirm_button">Slet</string>
|
||||
<string name="dialog_confirm_delete_cancel_button">Slet ikke</string>
|
||||
|
||||
|
@ -1024,7 +1018,7 @@ Vær venlig at sende fejlrapporter, anmodning om nye funktioner, og spørgsmål
|
|||
<string name="settings_export_success">Indstillinger gemt som <xliff:g id="filename">%s</xliff:g></string>
|
||||
<string name="settings_import_global_settings_success">Importerede globale indstillinger fra <xliff:g id="filename">%s</xliff:g></string>
|
||||
<string name="settings_import_success">Importerede <xliff:g id="accounts">%s</xliff:g> fra <xliff:g id="filename">%s</xliff:g></string>
|
||||
<plurals name="settings_import_success">
|
||||
<plurals name="settings_import_accounts">
|
||||
<item quantity="one">1 konto</item>
|
||||
<item quantity="other"><xliff:g id="numAccounts">%s</xliff:g> konti</item>
|
||||
</plurals>
|
||||
|
@ -1059,99 +1053,96 @@ Vær venlig at sende fejlrapporter, anmodning om nye funktioner, og spørgsmål
|
|||
<string name="manage_accounts_move_down_action">Flyt ned</string>
|
||||
<string name="manage_accounts_moving_message">Flytter konto…</string>
|
||||
|
||||
<!-- NEW: <string name="unread_widget_select_account">Show unread count for…</string>-->
|
||||
|
||||
<!-- NEW: <string name="import_dialog_error_title">Missing File Manager Application</string>-->
|
||||
<!-- NEW: <string name="close">Close</string>-->
|
||||
<!-- NEW: Danish translation added-->
|
||||
<string name="unread_widget_select_account">Vis antal ulæste for…</string>
|
||||
<string name="import_dialog_error_title">Manglende File Manager program</string>
|
||||
<string name="close">Luk</string>
|
||||
<string name="webview_empty_message">Ingen tekst</string>
|
||||
<string name="webview_contextmenu_link_view_action">Åben link</string>
|
||||
<string name="webview_contextmenu_link_share_action">Del link</string>
|
||||
<string name="webview_contextmenu_link_copy_action">Kopier link til clipboard</string>
|
||||
<string name="webview_contextmenu_link_clipboard_label">Link</string>
|
||||
<string name="webview_contextmenu_image_title">Bilelde</string>
|
||||
<string name="webview_contextmenu_image_view_action">Vis billede</string>
|
||||
<string name="webview_contextmenu_image_save_action">Gem billede</string>
|
||||
<string name="webview_contextmenu_image_download_action">Download billede</string>
|
||||
<string name="webview_contextmenu_image_copy_action">Kopier billed URL til clipboard</string>
|
||||
<string name="webview_contextmenu_image_clipboard_label">Billed URL</string>
|
||||
|
||||
<!-- NEW: <string name="webview_empty_message">No text</string>-->
|
||||
<string name="webview_contextmenu_phone_call_action">Opkald til nummer</string>
|
||||
<string name="webview_contextmenu_phone_save_action">Gem i Kontakter</string>
|
||||
<string name="webview_contextmenu_phone_copy_action">Kopier nummer til clipboard</string>
|
||||
<string name="webview_contextmenu_phone_clipboard_label">Telefonnummer</string>
|
||||
|
||||
<!-- NEW: <string name="webview_contextmenu_link_view_action">Open link</string>-->
|
||||
<!-- NEW: <string name="webview_contextmenu_link_share_action">Share link</string>-->
|
||||
<!-- NEW: <string name="webview_contextmenu_link_copy_action">Copy link to clipboard</string>-->
|
||||
<!-- NEW: <string name="webview_contextmenu_link_clipboard_label">Link</string>-->
|
||||
<string name="webview_contextmenu_email_send_action">Send mail</string>
|
||||
<string name="webview_contextmenu_email_save_action">Gem i Kontakter</string>
|
||||
<string name="webview_contextmenu_email_copy_action">Kopier addresse til clipboard</string>
|
||||
<string name="webview_contextmenu_email_clipboard_label">Mail addresse</string>
|
||||
|
||||
<!-- NEW: <string name="webview_contextmenu_image_title">Image</string>-->
|
||||
<!-- NEW: <string name="webview_contextmenu_image_view_action">View image</string>-->
|
||||
<!-- NEW: <string name="webview_contextmenu_image_save_action">Save image</string>-->
|
||||
<!-- NEW: <string name="webview_contextmenu_image_download_action">Download image</string>-->
|
||||
<!-- NEW: <string name="webview_contextmenu_image_copy_action">Copy image URL to clipboard</string>-->
|
||||
<!-- NEW: <string name="webview_contextmenu_image_clipboard_label">Image URL</string>-->
|
||||
<string name="image_saved_as">Billed gemt som \"<xliff:g id="filename">%s</xliff:g>\"</string>
|
||||
<string name="image_saving_failed">Fejl iforb. med at gemme billede.</string>
|
||||
<string name="account_settings_remote_search_num_results_entries_all">Alle</string>
|
||||
<string name="account_settings_remote_search_num_results_entries_10">10</string>
|
||||
<string name="account_settings_remote_search_num_results_entries_25">25</string>
|
||||
<string name="account_settings_remote_search_num_results_entries_50">50</string>
|
||||
<string name="account_settings_remote_search_num_results_entries_100">100</string>
|
||||
<string name="account_settings_remote_search_num_results_entries_250">250</string>
|
||||
<string name="account_settings_remote_search_num_results_entries_500">500</string>
|
||||
<string name="account_settings_remote_search_num_results_entries_1000">1000</string>
|
||||
<string name="account_settings_remote_search_num_label">Server søge begrænsning</string>
|
||||
<string name="account_settings_remote_search_num_summary">Søgning vil stoppe når der er fundet <xliff:g id="num_results">%s</xliff:g> resultater</string>
|
||||
<string name="account_settings_remote_search_full_text">Medtag meddelelsestekst i server søgning</string>
|
||||
<string name="account_settings_remote_search_full_text_summary">Fuldtekstsøgning kan være langsom.</string>
|
||||
<string name="remote_search_sending_query">Sender forspørgsel til server</string>
|
||||
<string name="remote_search_downloading">Henter %d resultater</string>
|
||||
<string name="remote_search_downloading_limited">Henter %1$d ud af %2$d resultater</string>
|
||||
<string name="remote_search_error">Fjernsøgning fejlede</string>
|
||||
|
||||
<!-- NEW: <string name="webview_contextmenu_phone_call_action">Call number</string>-->
|
||||
<!-- NEW: <string name="webview_contextmenu_phone_save_action">Save to Contacts</string>-->
|
||||
<!-- NEW: <string name="webview_contextmenu_phone_copy_action">Copy number to clipboard</string>-->
|
||||
<!-- NEW: <string name="webview_contextmenu_phone_clipboard_label">Phone number</string>-->
|
||||
<string name="account_settings_search">Søg</string>
|
||||
<string name="account_settings_remote_search_enabled">Aktiver søgning på server</string>
|
||||
<string name="account_settings_remote_search_enabled_summary">Søg meddelelser på både enhed og server</string>
|
||||
<string name="action_remote_search">Søg i meddelelser på server</string>
|
||||
<string name="pull_to_refresh_remote_search_from_local_search_pull">Træ for at søge på server…</string>
|
||||
<string name="pull_to_refresh_remote_search_from_local_search_release">Slip for at søge på server…</string>
|
||||
<string name="remote_search_unavailable_no_network">En netværksforbindelse er nødvendig når der søges på server.</string>
|
||||
|
||||
<!-- NEW: <string name="webview_contextmenu_email_send_action">Send mail</string>-->
|
||||
<!-- NEW: <string name="webview_contextmenu_email_save_action">Save to Contacts</string>-->
|
||||
<!-- NEW: <string name="webview_contextmenu_email_copy_action">Copy address to clipboard</string>-->
|
||||
<!-- NEW: <string name="webview_contextmenu_email_clipboard_label">Email address</string>-->
|
||||
<string name="global_settings_background_as_unread_indicator_label">Nedton meddelelser efter læsning</string>
|
||||
<string name="global_settings_background_as_unread_indicator_summary">En grå baggrund vil angive at meddelelse er læst</string>
|
||||
|
||||
<!-- NEW: <string name="image_saved_as">Saved image as \"<xliff:g id="filename">%s</xliff:g>\"</string>-->
|
||||
<!-- NEW: <string name="image_saving_failed">Saving the image failed.</string>-->
|
||||
<string name="global_settings_threaded_view_label">Visning i tråd</string>
|
||||
<string name="global_settings_threaded_view_summary">Grupper meddelelser i tråde</string>
|
||||
|
||||
<!-- NEW: <string name="account_settings_remote_search_num_results_entries_all">All</string>-->
|
||||
<!-- NEW: <string name="account_settings_remote_search_num_results_entries_10">10</string>-->
|
||||
<!-- NEW: <string name="account_settings_remote_search_num_results_entries_25">25</string>-->
|
||||
<!-- NEW: <string name="account_settings_remote_search_num_results_entries_50">50</string>-->
|
||||
<!-- NEW: <string name="account_settings_remote_search_num_results_entries_100">100</string>-->
|
||||
<!-- NEW: <string name="account_settings_remote_search_num_results_entries_250">250</string>-->
|
||||
<!-- NEW: <string name="account_settings_remote_search_num_results_entries_500">500</string>-->
|
||||
<!-- NEW: <string name="account_settings_remote_search_num_results_entries_1000">1000</string>-->
|
||||
<!-- NEW: <string name="account_settings_remote_search_num_label">Server search limit</string>-->
|
||||
<!-- NEW: <string name="account_settings_remote_search_num_summary">Search will stop after finding <xliff:g id="num_results">%s</xliff:g> results.</string>-->
|
||||
<!-- NEW: <string name="account_settings_remote_search_full_text">Include messages text in server search</string>-->
|
||||
<!-- NEW: <string name="account_settings_remote_search_full_text_summary">Full text searches can be slow.</string>-->
|
||||
<!-- NEW: <string name="remote_search_sending_query">Sending query to server</string>-->
|
||||
<!-- NEW: <string name="remote_search_downloading">Fetching %d results</string>-->
|
||||
<!-- NEW: <string name="remote_search_downloading_limited">Fetching %1$d of %2$d results</string>-->
|
||||
<!-- NEW: <string name="remote_search_error">Remote search failed</string>-->
|
||||
<string name="upgrade_databases_title">Opdaterer databaser</string>
|
||||
<string name="upgrade_databases_unspecified">Opdaterer databaser…</string>
|
||||
<string name="upgrade_database_format">Opdaterer databaser for konto \"<xliff:g id="account">%s</xliff:g>\"</string>
|
||||
|
||||
<!-- NEW: <string name="account_settings_search">Search</string>-->
|
||||
<!-- NEW: <string name="account_settings_remote_search_enabled">Enable server search</string>-->
|
||||
<!-- NEW: <string name="account_settings_remote_search_enabled_summary">Search messages on the server in addition to those on your device</string>-->
|
||||
<!-- NEW: <string name="action_remote_search">Search messages on server</string>-->
|
||||
<!-- NEW: <string name="pull_to_refresh_remote_search_from_local_search_pull">Pull to search server…</string>-->
|
||||
<!-- NEW: <string name="pull_to_refresh_remote_search_from_local_search_release">Release to search server…</string>-->
|
||||
<!-- NEW: <string name="remote_search_unavailable_no_network">A network connection is required for server search.</string>-->
|
||||
<string name="message_list_loading">Indlæser…</string>
|
||||
|
||||
<!-- NEW: <string name="global_settings_background_as_unread_indicator_label">Dim messages after reading</string>-->
|
||||
<!-- NEW: <string name="global_settings_background_as_unread_indicator_summary">A grey background will show that a message has been read</string>-->
|
||||
<string name="global_settings_splitview_mode_label">Vis delt skærm</string>
|
||||
<string name="global_settings_splitview_always">Altid</string>
|
||||
<string name="global_settings_splitview_never">Aldrig</string>
|
||||
<string name="global_settings_splitview_when_in_landscape">Når skærm er i Landscape mode</string>
|
||||
|
||||
<!-- NEW: <string name="global_settings_threaded_view_label">Threaded view</string>-->
|
||||
<!-- NEW: <string name="global_settings_threaded_view_summary">Group messages by conversation</string>-->
|
||||
<string name="message_view_empty">Vær venlig og vælg en meddelelse fra venstre side</string>
|
||||
|
||||
<!-- NEW: <string name="upgrade_databases_title">Upgrading databases</string>-->
|
||||
<!-- NEW: <string name="upgrade_databases_unspecified">Upgrading databases…</string>-->
|
||||
<!-- NEW: <string name="upgrade_database_format">Upgrading database of account \"<xliff:g id="account">%s</xliff:g>\"</string>-->
|
||||
<string name="global_settings_show_contact_picture_label">Vis kontaktbilleder</string>
|
||||
<string name="global_settings_show_contact_picture_summary">Vis kontaktbilleder i meddelelsesliste</string>
|
||||
|
||||
<!-- NEW: <string name="message_list_loading">Loading…</string>-->
|
||||
<string name="last_refresh_time_format">Opdateret <xliff:g id="formatted_time">%s</xliff:g></string>
|
||||
<string name="last_refresh_time_format_with_push">Opdateret <xliff:g id="time_with_preposition">%s</xliff:g> (Push aktiveret)</string>
|
||||
<string name="preposition_for_date">den <xliff:g id="date">%s</xliff:g></string>
|
||||
|
||||
<!-- NEW: <string name="global_settings_splitview_mode_label">Show split-screen</string>-->
|
||||
<!-- NEW: <string name="global_settings_splitview_always">Always</string>-->
|
||||
<!-- NEW: <string name="global_settings_splitview_never">Never</string>-->
|
||||
<!-- NEW: <string name="global_settings_splitview_when_in_landscape">When in Landscape orientation</string>-->
|
||||
<string name="mark_all_as_read">Marker alle som læst</string>
|
||||
|
||||
<!-- NEW: <string name="message_view_empty">Please select a message on the left</string>-->
|
||||
<string name="global_settings_colorize_missing_contact_pictures_label">Farvelægning af kontakter</string>
|
||||
<string name="global_settings_colorize_missing_contact_pictures_summary">Benyt farver hvis der ikke findes billede af kontakter</string>
|
||||
|
||||
<!-- NEW: <string name="global_settings_show_contact_picture_label">Show contact pictures</string>-->
|
||||
<!-- NEW: <string name="global_settings_show_contact_picture_summary">Show contact pictures in the message list</string>-->
|
||||
<string name="global_settings_messageview_visible_refile_actions_title">Visning af handlinger for valgte meddelelses</string>
|
||||
<string name="global_settings_messageview_visible_refile_actions_summary">Vis handlinger for valgte meddelelser i Visnings menu</string>
|
||||
|
||||
<!-- NEW: <string name="last_refresh_time_format">Refreshed <xliff:g id="formatted_time">%s</xliff:g></string>-->
|
||||
<!-- NEW: <string name="last_refresh_time_format_with_push">Refreshed <xliff:g id="time_with_preposition">%s</xliff:g> (Push active)</string>-->
|
||||
<!-- NEW: <string name="preposition_for_date">on <xliff:g id="date">%s</xliff:g></string>-->
|
||||
|
||||
<!-- NEW: <string name="mark_all_as_read">Mark all as read</string>-->
|
||||
|
||||
<!-- NEW: <string name="global_settings_colorize_missing_contact_pictures_label">Colorize contact pictures</string>-->
|
||||
<!-- NEW: <string name="global_settings_colorize_missing_contact_pictures_summary">Colorize missing contact pictures</string>-->
|
||||
|
||||
<!-- NEW: <string name="global_settings_messageview_visible_refile_actions_title">Visible message actions</string>-->
|
||||
<!-- NEW: <string name="global_settings_messageview_visible_refile_actions_summary">Show selected actions in the message view menu</string>-->
|
||||
|
||||
<!-- NEW: <string name="loading_attachment">Loading attachment…</string>-->
|
||||
<!-- NEW: <string name="fetching_attachment_dialog_title_send">Sending message</string>-->
|
||||
<!-- NEW: <string name="fetching_attachment_dialog_title_save">Saving draft</string>-->
|
||||
<!-- NEW: <string name="fetching_attachment_dialog_message">Fetching attachment…</string>-->
|
||||
<string name="loading_attachment">Henter vedhæftning…</string>
|
||||
<string name="fetching_attachment_dialog_title_send">Sender meddelelse</string>
|
||||
<string name="fetching_attachment_dialog_title_save">Gemmer kladde</string>
|
||||
<string name="fetching_attachment_dialog_message">Henter vedhæftning…</string>
|
||||
</resources>
|
||||
|
|
|
@ -187,21 +187,14 @@ Um Fehler zu melden, neue Funktionen vorzuschlagen oder Fragen zu stellen, besuc
|
|||
|
||||
<string name="status_loading_more_failed">Ladevorgang erneut starten</string>
|
||||
|
||||
<string name="load_more_messages_fmt">Bis zu
|
||||
<xliff:g id="messages_to_load">%d</xliff:g> weitere abrufen</string>
|
||||
<string name="load_more_messages_fmt">Bis zu <xliff:g id="messages_to_load">%d</xliff:g> weitere abrufen</string>
|
||||
|
||||
<string name="abbrev_gigabytes">GB</string>
|
||||
<string name="abbrev_megabytes">MB</string>
|
||||
<string name="abbrev_kilobytes">KB</string>
|
||||
<string name="abbrev_bytes">B</string>
|
||||
|
||||
<string name="account_size_changed">
|
||||
Konto \'<xliff:g id="account">%s</xliff:g>\' von
|
||||
<xliff:g id="oldSize">%s</xliff:g>
|
||||
auf
|
||||
<xliff:g id="newSize">%s</xliff:g>
|
||||
komprimiert
|
||||
</string>
|
||||
<string name="account_size_changed">Konto \'<xliff:g id="account">%s</xliff:g>\' von <xliff:g id="oldSize">%s</xliff:g> auf <xliff:g id="newSize">%s</xliff:g> komprimiert</string>
|
||||
|
||||
<string name="compacting_account">Konto \'<xliff:g id="account">%s</xliff:g>\' wird komprimiert</string>
|
||||
<string name="clearing_account">Konto \'<xliff:g id="account">%s</xliff:g>\' wird bereinigt</string>
|
||||
|
@ -985,7 +978,7 @@ Um Fehler zu melden, neue Funktionen vorzuschlagen oder Fragen zu stellen, besuc
|
|||
(1) http://developer.android.com/guide/topics/resources/string-resource.html#Plurals
|
||||
|
||||
-->
|
||||
<plurals name="dialog_confirm_delete_message">
|
||||
<plurals name="dialog_confirm_delete_messages">
|
||||
<item quantity="one">Möchten Sie diese Nachricht wirklich löschen?</item>
|
||||
<item quantity="other">Möchten Sie wirklich <xliff:g id="message_count">%1$d</xliff:g> Nachrichten löschen?</item>
|
||||
</plurals>
|
||||
|
@ -1022,7 +1015,7 @@ Um Fehler zu melden, neue Funktionen vorzuschlagen oder Fragen zu stellen, besuc
|
|||
<string name="settings_export_success">Exportierte Einstellungen wurden erfolgreich nach <xliff:g id="filename">%s</xliff:g> gespeichert</string>
|
||||
<string name="settings_import_global_settings_success">Globale Einstellungen erfolgreich aus <xliff:g id="filename">%s</xliff:g> importiert</string>
|
||||
<string name="settings_import_success">\'<xliff:g id="accounts">%s</xliff:g>\' erfolgreich aus <xliff:g id="filename">%s</xliff:g> importiert</string>
|
||||
<plurals name="settings_import_success">
|
||||
<plurals name="settings_import_accounts">
|
||||
<item quantity="one">1 Konto</item>
|
||||
<item quantity="other"><xliff:g id="numAccounts">%s</xliff:g> Konten</item>
|
||||
</plurals>
|
||||
|
|
|
@ -195,8 +195,7 @@
|
|||
<string name="abbrev_kilobytes">Kb</string>
|
||||
<string name="abbrev_bytes">b</string>
|
||||
|
||||
<string name="account_size_changed">Ο λογαριασμός \'<xliff:g id="account">%s</xliff:g>\' συμπυκνώθηκε από
|
||||
<xliff:g id="oldSize">%s</xliff:g> σε <xliff:g id="newSize">%s</xliff:g></string>
|
||||
<string name="account_size_changed">Ο λογαριασμός \'<xliff:g id="account">%s</xliff:g>\' συμπυκνώθηκε από <xliff:g id="oldSize">%s</xliff:g> σε <xliff:g id="newSize">%s</xliff:g></string>
|
||||
|
||||
<string name="compacting_account">Συμπύκνωση λογαριασμού \'<xliff:g id="account">%s</xliff:g>\'</string>
|
||||
<string name="clearing_account">Καθαρισμός λογαριασμού \'<xliff:g id="account">%s</xliff:g>\'</string>
|
||||
|
@ -980,7 +979,7 @@
|
|||
(1) http://developer.android.com/guide/topics/resources/string-resource.html#Plurals
|
||||
|
||||
-->
|
||||
<plurals name="dialog_confirm_delete_message">
|
||||
<plurals name="dialog_confirm_delete_messages">
|
||||
<item quantity="one">Θέλετε πράγματι να διαγράψετε αυτό το μήνυμα;</item>
|
||||
<item quantity="other">Θέλετε πράγματι να διαγράψετε <xliff:g id="message_count">%1$d</xliff:g> μηνύματα;</item>
|
||||
</plurals>
|
||||
|
@ -1017,7 +1016,7 @@
|
|||
<string name="settings_export_success">Οι εξαγόμενες ρυθμίσεις αποθηκεύτηκαν στο <xliff:g id="filename">%s</xliff:g></string>
|
||||
<string name="settings_import_global_settings_success">Ρυθμίσεις εισήχθηκαν από το <xliff:g id="filename">%s</xliff:g></string>
|
||||
<string name="settings_import_success">Εισήχθηκαν <xliff:g id="accounts">%s</xliff:g> λογαριασμοί από το <xliff:g id="filename">%s</xliff:g></string>
|
||||
<plurals name="settings_import_success">
|
||||
<plurals name="settings_import_accounts">
|
||||
<item quantity="one">1 λογαριασμός</item>
|
||||
<item quantity="other"><xliff:g id="numAccounts">%s</xliff:g> λογαριασμοί</item>
|
||||
</plurals>
|
||||
|
@ -1138,13 +1137,13 @@
|
|||
<string name="mark_all_as_read">Μαρκάρισμα όλων ως αναγνωσμένων</string>
|
||||
|
||||
<string name="global_settings_colorize_missing_contact_pictures_label">Χρωματισμός επαφών χωρίς εικόνα</string>
|
||||
<!-- NEW: <string name="global_settings_colorize_missing_contact_pictures_summary">Colorize missing contact pictures</string>-->
|
||||
<string name="global_settings_colorize_missing_contact_pictures_summary">Χρωματισμός επαφών χωρίς εικόνα</string>
|
||||
|
||||
<string name="global_settings_messageview_visible_refile_actions_title">Ορατές ενέργειες μηνυμάτων</string>
|
||||
<string name="global_settings_messageview_visible_refile_actions_summary">Προβολή των επιλεγμένων ενεργειών στο μενού προβολής μηνύματος</string>
|
||||
|
||||
<!-- NEW: <string name="loading_attachment">Loading attachment…</string>-->
|
||||
<!-- NEW: <string name="fetching_attachment_dialog_title_send">Sending message</string>-->
|
||||
<!-- NEW: <string name="fetching_attachment_dialog_title_save">Saving draft</string>-->
|
||||
<!-- NEW: <string name="fetching_attachment_dialog_message">Fetching attachment…</string>-->
|
||||
<string name="loading_attachment">Φόρτωση συνημμένων…</string>
|
||||
<string name="fetching_attachment_dialog_title_send">Αποστολή μηνύματος</string>
|
||||
<string name="fetching_attachment_dialog_title_save">Αποθήκευση πρόχειρου</string>
|
||||
<string name="fetching_attachment_dialog_message">Ανάκληση συνημμένων…</string>
|
||||
</resources>
|
||||
|
|
|
@ -195,12 +195,7 @@ Por favor, envía los errores detectados, contribuye con nuevas funcionalidades
|
|||
<string name="abbrev_kilobytes">KB</string>
|
||||
<string name="abbrev_bytes">B</string>
|
||||
|
||||
<string name="account_size_changed">
|
||||
Cuenta \"<xliff:g id="account">%s</xliff:g>\" reducida desde
|
||||
<xliff:g id="oldSize">%s</xliff:g>
|
||||
a
|
||||
<xliff:g id="newSize">%s</xliff:g>
|
||||
</string>
|
||||
<string name="account_size_changed">Cuenta \"<xliff:g id="account">%s</xliff:g>\" reducida desde <xliff:g id="oldSize">%s</xliff:g> a <xliff:g id="newSize">%s</xliff:g></string>
|
||||
|
||||
<string name="compacting_account">Compactando cuenta \"<xliff:g id="account">%s</xliff:g>\"</string>
|
||||
<string name="clearing_account">Limpiando cuenta \"<xliff:g id="account">%s</xliff:g>\"</string>
|
||||
|
@ -858,7 +853,7 @@ Por favor, envía los errores detectados, contribuye con nuevas funcionalidades
|
|||
<string name="volume_navigation_message">Vista de mensaje</string>
|
||||
<string name="volume_navigation_list">Listas de mensajes</string>
|
||||
|
||||
<string name="start_integrated_inbox_title">Usar Bandeja inificada</string>
|
||||
<string name="start_integrated_inbox_title">Usar Bandeja unificada</string>
|
||||
|
||||
<string name="measure_accounts_title">Tamaño cuenta</string>
|
||||
<string name="measure_accounts_summary">Desactivar para mejorar rendimiento</string>
|
||||
|
@ -1023,7 +1018,7 @@ Por favor, envía los errores detectados, contribuye con nuevas funcionalidades
|
|||
<string name="settings_export_success">Ajustes guardados en <xliff:g id="filename">%s</xliff:g></string>
|
||||
<string name="settings_import_global_settings_success">Ajustes globales importados desde <xliff:g id="filename">%s</xliff:g></string>
|
||||
<string name="settings_import_success">Importado <xliff:g id="accounts">%s</xliff:g> desde <xliff:g id="filename">%s</xliff:g></string>
|
||||
<plurals name="settings_import_success">
|
||||
<plurals name="settings_import_accounts">
|
||||
<item quantity="one">1 cuenta</item>
|
||||
<item quantity="other"><xliff:g id="numAccounts">%s</xliff:g> cuentas</item>
|
||||
</plurals>
|
||||
|
|
|
@ -189,20 +189,14 @@ Virheraportit, osallistuminen projektiin ja kysymykset: Mene osoitteeseen
|
|||
|
||||
<string name="status_loading_more_failed">Yritetään ladata uudelleen lisää viestejä</string>
|
||||
|
||||
<string name="load_more_messages_fmt">Lataa
|
||||
<xliff:g id="messages_to_load">%d</xliff:g> lisää</string>
|
||||
<string name="load_more_messages_fmt">Lataa <xliff:g id="messages_to_load">%d</xliff:g> lisää</string>
|
||||
|
||||
<string name="abbrev_gigabytes">Gt</string>
|
||||
<string name="abbrev_megabytes">Mt</string>
|
||||
<string name="abbrev_kilobytes">kt</string>
|
||||
<string name="abbrev_bytes">t</string>
|
||||
|
||||
<string name="account_size_changed">
|
||||
Tilin \"<xliff:g id="account">%s</xliff:g>\" vanha koko
|
||||
<xliff:g id="oldSize">%s</xliff:g>
|
||||
on nyt
|
||||
<xliff:g id="newSize">%s</xliff:g>
|
||||
</string>
|
||||
<string name="account_size_changed">Tilin \"<xliff:g id="account">%s</xliff:g>\" vanha koko <xliff:g id="oldSize">%s</xliff:g> on nyt <xliff:g id="newSize">%s</xliff:g></string>
|
||||
|
||||
<string name="compacting_account">Tiivistetään tiliä \"<xliff:g id="account">%s</xliff:g>\"</string>
|
||||
<string name="clearing_account">Tyhjennetään tiliä \"<xliff:g id="account">%s</xliff:g>\"</string>
|
||||
|
@ -788,12 +782,12 @@ Virheraportit, osallistuminen projektiin ja kysymykset: Mene osoitteeseen
|
|||
</string>
|
||||
|
||||
<string name="folder_list_help_key">
|
||||
1 - Näytä vain 1. luokan kansiot\u000A
|
||||
2 - Näytä 1. ja 2. luokan kansiot\u000A
|
||||
3 - Näytä kaikki paitsi 2. luokan kansiot\u000A
|
||||
4 - Näytä kaikki kansiot\u000A
|
||||
Q - Palaa tileihin\u000A
|
||||
S - Muokkaa tilin asetuksia</string>
|
||||
1 - Näytä vain 1. luokan kansiot\u000A
|
||||
2 - Näytä 1. ja 2. luokan kansiot\u000A
|
||||
3 - Näytä kaikki paitsi 2. luokan kansiot\u000A
|
||||
4 - Näytä kaikki kansiot\u000A
|
||||
Q - Palaa tileihin\u000A
|
||||
S - Muokkaa tilin asetuksia</string>
|
||||
|
||||
<string name="folder_list_filter_hint">kansionimi sisältää</string>
|
||||
|
||||
|
@ -986,7 +980,7 @@ Virheraportit, osallistuminen projektiin ja kysymykset: Mene osoitteeseen
|
|||
(1) http://developer.android.com/guide/topics/resources/string-resource.html#Plurals
|
||||
|
||||
-->
|
||||
<plurals name="dialog_confirm_delete_message">
|
||||
<plurals name="dialog_confirm_delete_messages">
|
||||
<item quantity="one">Haluatko varmasti poistaa tämän viestin?</item>
|
||||
<item quantity="other">Haluatko varmasti poistaa <xliff:g id="message_count">%1$d</xliff:g> viestiä?</item>
|
||||
</plurals>
|
||||
|
@ -1023,7 +1017,7 @@ Virheraportit, osallistuminen projektiin ja kysymykset: Mene osoitteeseen
|
|||
<string name="settings_export_success">Viedyt asetukset tallennettu tiedostoon <xliff:g id="filename">%s</xliff:g></string>
|
||||
<string name="settings_import_global_settings_success">Yleiset asetukset tuotu tiedostosta <xliff:g id="filename">%s</xliff:g></string>
|
||||
<string name="settings_import_success">Tuotu <xliff:g id="accounts">%s</xliff:g> tiedostosta <xliff:g id="filename">%s</xliff:g></string>
|
||||
<plurals name="settings_import_success">
|
||||
<plurals name="settings_import_accounts">
|
||||
<item quantity="one">1 tili</item>
|
||||
<item quantity="other"><xliff:g id="numAccounts">%s</xliff:g> tiliä</item>
|
||||
</plurals>
|
||||
|
|
|
@ -221,12 +221,7 @@ de plus</string>
|
|||
<string name="abbrev_kilobytes">ko</string>
|
||||
<string name="abbrev_bytes">oct.</string>
|
||||
|
||||
<string name="account_size_changed">
|
||||
Espace sur «\u00A0<xliff:g id="account">%s</xliff:g>\u00A0» passé de
|
||||
<xliff:g id="oldSize">%s</xliff:g>
|
||||
à
|
||||
<xliff:g id="newSize">%s</xliff:g>
|
||||
</string>
|
||||
<string name="account_size_changed">Espace sur «\u00A0<xliff:g id="account">%s</xliff:g>\u00A0» passé de <xliff:g id="oldSize">%s</xliff:g> à <xliff:g id="newSize">%s</xliff:g></string>
|
||||
|
||||
<string name="compacting_account">Compactage du compte «\u00A0<xliff:g id="account">%s</xliff:g>\u00A0»</string>
|
||||
<string name="clearing_account">Effacement du compte «\u00A0<xliff:g id="account">%s</xliff:g>\u00A0»</string>
|
||||
|
@ -1010,7 +1005,7 @@ de plus</string>
|
|||
(1) http://developer.android.com/guide/topics/resources/string-resource.html#Plurals
|
||||
|
||||
-->
|
||||
<plurals name="dialog_confirm_delete_message">
|
||||
<plurals name="dialog_confirm_delete_messages">
|
||||
<item quantity="one">Voulez-vous vraiment supprimer ce message?</item>
|
||||
<item quantity="other">Voulez-vous vraiment supprimer les <xliff:g id="message_count">%1$d</xliff:g> messages?</item>
|
||||
</plurals>
|
||||
|
@ -1047,7 +1042,7 @@ de plus</string>
|
|||
<string name="settings_export_success">Paramètres exportés vers <xliff:g id="filename">%s</xliff:g></string>
|
||||
<string name="settings_import_global_settings_success">Paramètres globaux importés depuis <xliff:g id="filename">%s</xliff:g></string>
|
||||
<string name="settings_import_success">Importés <xliff:g id="accounts">%s</xliff:g> depuis <xliff:g id="filename">%s</xliff:g></string>
|
||||
<plurals name="settings_import_success">
|
||||
<plurals name="settings_import_accounts">
|
||||
<item quantity="one">1 compte</item>
|
||||
<item quantity="other"><xliff:g id="numAccounts">%s</xliff:g> comptes</item>
|
||||
</plurals>
|
||||
|
@ -1168,13 +1163,13 @@ de plus</string>
|
|||
<string name="mark_all_as_read">Marquer tous comme lus</string>
|
||||
|
||||
<string name="global_settings_colorize_missing_contact_pictures_label">Colorier les images de contact manquantes</string>
|
||||
<!-- NEW: <string name="global_settings_colorize_missing_contact_pictures_summary">Colorize missing contact pictures</string>-->
|
||||
<string name="global_settings_colorize_missing_contact_pictures_summary">Coloriser les images de contact manquantes</string>
|
||||
|
||||
<string name="global_settings_messageview_visible_refile_actions_title">Actions disponibles dans les messages</string>
|
||||
<string name="global_settings_messageview_visible_refile_actions_summary">Afficher les actions séléctionnées dans le menu des messages</string>
|
||||
|
||||
<!-- NEW: <string name="loading_attachment">Loading attachment…</string>-->
|
||||
<!-- NEW: <string name="fetching_attachment_dialog_title_send">Sending message</string>-->
|
||||
<!-- NEW: <string name="fetching_attachment_dialog_title_save">Saving draft</string>-->
|
||||
<!-- NEW: <string name="fetching_attachment_dialog_message">Fetching attachment…</string>-->
|
||||
<string name="loading_attachment">Chargement pièce jointe…</string>
|
||||
<string name="fetching_attachment_dialog_title_send">Envoi du message</string>
|
||||
<string name="fetching_attachment_dialog_title_save">Enregistrement du brouillon</string>
|
||||
<string name="fetching_attachment_dialog_message">Récupération pièce jointe…</string>
|
||||
</resources>
|
||||
|
|
|
@ -195,12 +195,7 @@ Por favor, envía os erros detectados, contribúe con novas funcionalidas e preg
|
|||
<string name="abbrev_kilobytes">KB</string>
|
||||
<string name="abbrev_bytes">B</string>
|
||||
|
||||
<string name="account_size_changed">
|
||||
Conta \"<xliff:g id="account">%s</xliff:g>\" reducida dende
|
||||
<xliff:g id="oldSize">%s</xliff:g>
|
||||
a
|
||||
<xliff:g id="newSize">%s</xliff:g>
|
||||
</string>
|
||||
<string name="account_size_changed">Conta \"<xliff:g id="account">%s</xliff:g>\" reducida dende <xliff:g id="oldSize">%s</xliff:g> a <xliff:g id="newSize">%s</xliff:g></string>
|
||||
|
||||
<string name="compacting_account">Compactando conta \"<xliff:g id="account">%s</xliff:g>\"</string>
|
||||
<string name="clearing_account">Limpando conta \"<xliff:g id="account">%s</xliff:g>\"</string>
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
|
||||
|
||||
<!-- Welcome message -->
|
||||
<!-- NEW: <string name="welcome_message_title">Welcome to K-9 Mail</string>-->
|
||||
<string name="welcome_message_title">Üdvözli a K-9 Mail</string>
|
||||
<string name="accounts_welcome"><![CDATA[
|
||||
<p>
|
||||
A K-9 egy nyílt forráskódú levelezőprogram Androidra, a sima mail kliens alapjaira helyezve.
|
||||
|
@ -69,7 +69,7 @@ Hibajelentéseivel hozzájárul az újabb verziók tökéletesítéséhez, kérd
|
|||
|
||||
<!-- === App Store-specific strings ======================================================= -->
|
||||
|
||||
<!-- NEW: <string name="import_dialog_error_message">Please install a file manager to continue with this import.</string>-->
|
||||
<string name="import_dialog_error_message">Az importálás folytatásához, telepítsen egy fájlkezelőt.</string>
|
||||
<string name="open_market">Play áruház megnyitása</string>
|
||||
|
||||
|
||||
|
@ -90,15 +90,15 @@ Hibajelentéseivel hozzájárul az újabb verziók tökéletesítéséhez, kérd
|
|||
|
||||
<string name="about_title_fmt">A <xliff:g id="app_name">%s</xliff:g> névjegye</string>
|
||||
<string name="accounts_title">Fióklista</string>
|
||||
<!-- NEW: <string name="folders_title">Folders</string>-->
|
||||
<string name="folders_title">Mappák</string>
|
||||
<string name="advanced">Haladó beállítások</string>
|
||||
|
||||
<string name="message_list_title"><xliff:g id="account">%s</xliff:g>:<xliff:g id="folder">%s</xliff:g> </string>
|
||||
|
||||
<string name="compose_title_compose">Levélírás</string>
|
||||
<!-- NEW: <string name="compose_title_reply">Reply</string>-->
|
||||
<!-- NEW: <string name="compose_title_reply_all">Reply all</string>-->
|
||||
<!-- NEW: <string name="compose_title_forward">Forward</string>-->
|
||||
<string name="compose_title_reply">Válasz</string>
|
||||
<string name="compose_title_reply_all">Válasz mindnekinek</string>
|
||||
<string name="compose_title_forward">Továbbít</string>
|
||||
|
||||
<string name="choose_folder_title">Válasszon mappát</string>
|
||||
|
||||
|
@ -111,7 +111,7 @@ Hibajelentéseivel hozzájárul az újabb verziók tökéletesítéséhez, kérd
|
|||
<string name="status_next_poll">Frissítés <xliff:g id="nexttime">%s</xliff:g></string>
|
||||
<string name="status_syncing_off">Nincs frissítve</string>
|
||||
|
||||
<!-- NEW: <string name="actionbar_selected"><xliff:g id="selection_count">%d</xliff:g> selected</string>-->
|
||||
<string name="actionbar_selected"><xliff:g id="selection_count">%d</xliff:g> kiválasztva</string>
|
||||
<!-- Actions will be used as buttons and in menu items -->
|
||||
<string name="next_action">Tovább</string> <!-- Used as part of a multi-step process -->
|
||||
<string name="previous_action">Vissza</string> <!-- Used as part of a multi-step process -->
|
||||
|
@ -128,7 +128,7 @@ Hibajelentéseivel hozzájárul az újabb verziók tökéletesítéséhez, kérd
|
|||
<string name="spam_action">Levélszemét</string>
|
||||
<string name="forward_action">Továbbítás</string>
|
||||
<string name="move_action">Áthelyez</string>
|
||||
<!-- NEW: <string name="single_message_options_action">Send…</string>-->
|
||||
<string name="single_message_options_action">Küldés…</string>
|
||||
<!-- NEW: <string name="refile_action">Refile…</string>-->
|
||||
<string name="continue_action">Folytatás</string>
|
||||
<string name="back_action">Vissza</string>
|
||||
|
@ -158,11 +158,11 @@ Hibajelentéseivel hozzájárul az újabb verziók tökéletesítéséhez, kérd
|
|||
<string name="unflag_action">Csillag törlése</string>
|
||||
<string name="copy_action">Másolás</string>
|
||||
<string name="select_text_action">Szöveg kijelölése</string>
|
||||
<!-- NEW: <string name="show_headers_action">Show headers</string>-->
|
||||
<!-- NEW: <string name="hide_headers_action">Hide headers</string>-->
|
||||
<string name="show_headers_action">Fejlécek megjelenítése</string>
|
||||
<string name="hide_headers_action">Fejlécek elrejtése</string>
|
||||
|
||||
<!-- NEW: <string name="message_view_theme_action_dark">Switch to dark theme</string>-->
|
||||
<!-- NEW: <string name="message_view_theme_action_light">Switch to light theme</string>-->
|
||||
<string name="message_view_theme_action_dark">Váltás sötét témára</string>
|
||||
<string name="message_view_theme_action_light">Váltás világos témára</string>
|
||||
|
||||
<string name="mark_as_unread_action">Olvasatlannak jelöl</string>
|
||||
<string name="add_cc_bcc_action">Másolatot kap</string>
|
||||
|
@ -196,27 +196,22 @@ Hibajelentéseivel hozzájárul az újabb verziók tökéletesítéséhez, kérd
|
|||
<string name="abbrev_kilobytes">KB</string>
|
||||
<string name="abbrev_bytes">B</string>
|
||||
|
||||
<string name="account_size_changed">
|
||||
\"<xliff:g id="account">%s</xliff:g>\" fiók tömörítése
|
||||
<xliff:g id="oldSize">%s</xliff:g>
|
||||
helyett
|
||||
<xliff:g id="newSize">%s</xliff:g>
|
||||
</string>
|
||||
<string name="account_size_changed">\"<xliff:g id="account">%s</xliff:g>\" fiók tömörítése <xliff:g id="oldSize">%s</xliff:g> helyett <xliff:g id="newSize">%s</xliff:g></string>
|
||||
|
||||
<string name="compacting_account">Fiók tömörítése \"<xliff:g id="account">%s</xliff:g>\"</string>
|
||||
<string name="clearing_account">Fiók takarítása \"<xliff:g id="account">%s</xliff:g>\"</string>
|
||||
<string name="recreating_account">A \"<xliff:g id="account">%s</xliff:g>\" újbóli létrehozása</string>
|
||||
|
||||
<string name="notification_new_title">Új levél</string>
|
||||
<!-- NEW: <string name="notification_new_messages_title"><xliff:g id="new_message_count">%d</xliff:g> new messages</string>-->
|
||||
<string name="notification_new_messages_title"><xliff:g id="new_message_count">%d</xliff:g> új üzenet</string>
|
||||
<string name="notification_new_one_account_fmt"><xliff:g id="unread_message_count">%d</xliff:g> Olvasatlan (<xliff:g id="account">%s</xliff:g>)</string> <!-- 279 Unread (someone@google.com) -->
|
||||
<!-- NEW: <string name="notification_additional_messages">+ <xliff:g id="additional_messages">%d</xliff:g> more on <xliff:g id="account">%s</xliff:g></string>-->
|
||||
<string name="notification_additional_messages">+ <xliff:g id="additional_messages">%d</xliff:g> érkezett ide: <xliff:g id="account">%s</xliff:g></string>
|
||||
|
||||
<!-- NEW: <string name="notification_action_reply">Reply</string>-->
|
||||
<!-- NEW: <string name="notification_action_mark_as_read">Mark Read</string>-->
|
||||
<!-- NEW: <string name="notification_action_delete">Delete</string>-->
|
||||
<!-- NEW: <string name="notification_certificate_error_title">Certificate error for <xliff:g id="account">%s</xliff:g></string>-->
|
||||
<!-- NEW: <string name="notification_certificate_error_text">Check your server settings</string>-->
|
||||
<string name="notification_action_reply">Válasz</string>
|
||||
<string name="notification_action_mark_as_read">Olvasottnak jelöl</string>
|
||||
<string name="notification_action_delete">Töröl</string>
|
||||
<string name="notification_certificate_error_title">Hitelesítései hiba: <xliff:g id="account">%s</xliff:g></string>
|
||||
<string name="notification_certificate_error_text">Ellenőrizze a kiszolgáló beállításait</string>
|
||||
|
||||
<string name="notification_bg_sync_ticker">Levelek ellenőrzése: <xliff:g id="account">%s</xliff:g>:<xliff:g id="folder">%s</xliff:g></string>
|
||||
<string name="notification_bg_sync_title">Levelek ellenőrzése</string>
|
||||
|
@ -316,13 +311,13 @@ Hibajelentéseivel hozzájárul az újabb verziók tökéletesítéséhez, kérd
|
|||
<string name="global_settings_registered_name_color_label">Névjegyek színe</string>
|
||||
<string name="global_settings_registered_name_color_default">Ne használjon színeket a névjegyzékben</string>
|
||||
<string name="global_settings_registered_name_color_changed">Színek használata a névjegyzékben</string>
|
||||
<!-- NEW: <string name="global_settings_folderlist_wrap_folder_names_label">Wrap long folder names</string>-->
|
||||
<!-- NEW: <string name="global_settings_folderlist_wrap_folder_names_summary">Use multiple lines to show long folder names</string>-->
|
||||
<string name="global_settings_folderlist_wrap_folder_names_label">Hosszú mappa neveinek levágása</string>
|
||||
<string name="global_settings_folderlist_wrap_folder_names_summary">Több sor használata a hosszú mappanevek megjelenítéséhez</string>
|
||||
|
||||
<string name="global_settings_messageview_fixedwidth_label">Fix szélességű betűk</string>
|
||||
<string name="global_settings_messageview_fixedwidth_summary">Fix szélességű betűtípus használata a sima szöveges üzeneteknél</string>
|
||||
<!-- NEW: <string name="global_settings_messageview_autofit_width_label">Auto-fit messages</string>-->
|
||||
<!-- NEW: <string name="global_settings_messageview_autofit_width_summary">Shrink messages to fit the screen</string>-->
|
||||
<string name="global_settings_messageview_autofit_width_label">Üzenetek automatikus kitöltése</string>
|
||||
<string name="global_settings_messageview_autofit_width_summary">Üzenetek összehúzása, egy képernyőre</string>
|
||||
<string name="global_settings_messageview_return_to_list_label">Visszalépés törlés után</string>
|
||||
<string name="global_settings_messageview_return_to_list_summary">Törlés után visszalép a levelek listájára</string>
|
||||
<string name="global_settings_messageview_show_next_label">Mutassa a következő üzenetet törlés után</string>
|
||||
|
@ -333,14 +328,14 @@ Hibajelentéseivel hozzájárul az újabb verziók tökéletesítéséhez, kérd
|
|||
<string name="global_settings_confirm_action_delete">Törlés (csak üzenetek nézet)</string>
|
||||
<string name="global_settings_confirm_action_delete_starred">Csillagozott törlése (csak olvasható üzenet)</string>
|
||||
<string name="global_settings_confirm_action_spam">Levélszemét</string>
|
||||
<!-- NEW: <string name="global_settings_confirm_action_delete_notif">Delete (from notification)</string>-->
|
||||
<string name="global_settings_confirm_action_delete_notif">Törlés (az értesítések közül)</string>
|
||||
|
||||
<string name="global_settings_notification_hide_subject_title">Tárgy elrejtése az értesítésekben</string>
|
||||
<string name="global_settings_notification_hide_subject_never">Soha</string>
|
||||
<string name="global_settings_notification_hide_subject_when_locked">Ha a készülék le van zárva</string>
|
||||
<string name="global_settings_notification_hide_subject_always">Mindig</string>
|
||||
|
||||
<!-- NEW: <string name="global_settings_notification_quick_delete_title">Show \'Delete\' button</string>-->
|
||||
<string name="global_settings_notification_quick_delete_title">\'Törlés\' gomb megjelenítése</string>
|
||||
<string name="global_settings_notification_quick_delete_never">Soha</string>
|
||||
<!-- NEW: <string name="global_settings_notification_quick_delete_when_single_msg">For single message notification</string>-->
|
||||
<string name="global_settings_notification_quick_delete_always">Mindig</string>
|
||||
|
@ -353,7 +348,7 @@ Hibajelentéseivel hozzájárul az újabb verziók tökéletesítéséhez, kérd
|
|||
<string name="global_settings_archive">Áthelyezés az archívumba</string>
|
||||
<string name="global_settings_archive_disabled_reason">Nincs archívum mappa.</string>
|
||||
<string name="global_settings_move">Áthelyezés</string>
|
||||
<!-- NEW: <string name="global_settings_flag">Flag</string>-->
|
||||
<string name="global_settings_flag">Zászló</string>
|
||||
<string name="global_settings_unselect">Kijelölés megszüntetése</string>
|
||||
|
||||
<string name="quiet_time">Csendes mód</string>
|
||||
|
@ -367,7 +362,7 @@ Hibajelentéseivel hozzájárul az újabb verziók tökéletesítéséhez, kérd
|
|||
<string name="account_setup_basics_manual_setup_action">Kézi beállítás</string>
|
||||
|
||||
<string name="account_setup_check_settings_title"/>
|
||||
<string name="account_setup_check_settings_retr_info_msg">Fiók adatainak ellenörzése…</string>
|
||||
<string name="account_setup_check_settings_retr_info_msg">Fiók adatainak ellenőrzése…</string>
|
||||
<string name="account_setup_check_settings_check_incoming_msg">Bejövő szerver tesztelése…</string>
|
||||
<string name="account_setup_check_settings_check_outgoing_msg">Kimenő szerver tesztelése…</string>
|
||||
<string name="account_setup_check_settings_authenticate">Hitelesítés…</string>
|
||||
|
@ -420,7 +415,7 @@ Hibajelentéseivel hozzájárul az újabb verziók tökéletesítéséhez, kérd
|
|||
<string name="account_setup_expunge_policy_manual">Kézileg</string>
|
||||
|
||||
<string name="account_setup_incoming_autodetect_namespace_label">IMAP névtér automatikus felismerése</string>
|
||||
<string name="account_setup_incoming_imap_path_prefix_label">IMAP útvonal prefix</string>
|
||||
<string name="account_setup_incoming_imap_path_prefix_label">IMAP útvonal előtag</string>
|
||||
|
||||
<string name="drafts_folder_label">Piszkozatok mappája</string>
|
||||
<string name="sent_folder_label">Elküldöttek mappája</string>
|
||||
|
@ -436,7 +431,7 @@ Hibajelentéseivel hozzájárul az újabb verziók tökéletesítéséhez, kérd
|
|||
|
||||
<string name="account_setup_incoming_webdav_auth_path_label">Hitelesítési útvonal</string>
|
||||
<string name="account_setup_incoming_webdav_auth_path_hint">Választható</string>
|
||||
<string name="account_setup_incoming_webdav_mailbox_path_label">Mailbox álnév</string>
|
||||
<string name="account_setup_incoming_webdav_mailbox_path_label">Postafiók álnév</string>
|
||||
<string name="account_setup_incoming_webdav_mailbox_path_hint">Választható</string>
|
||||
|
||||
<string name="account_setup_outgoing_title">Kimenő szerver beállításai</string>
|
||||
|
@ -539,15 +534,15 @@ Hibajelentéseivel hozzájárul az újabb verziók tökéletesítéséhez, kérd
|
|||
<string name="account_settings_reply_after_quote_label">Válasz az idézet után</string>
|
||||
<string name="account_settings_reply_after_quote_summary">Válaszlevélnél az eredeti üzenet fent jelenik meg</string>
|
||||
|
||||
<!-- NEW: <string name="account_settings_strip_signature_label">Strip signatures on reply</string>-->
|
||||
<!-- NEW: <string name="account_settings_strip_signature_summary">Signatures will be removed from quoted messages</string>-->
|
||||
<string name="account_settings_strip_signature_label">Aláírás elhagyása a válaszban</string>
|
||||
<string name="account_settings_strip_signature_summary">Az aláírás el lesz távolítva az idézett üzenetből</string>
|
||||
|
||||
<string name="account_settings_message_format_label">Levél formátuma</string>
|
||||
<string name="account_settings_message_format_text">Sima szöveg (képek és formázás nélkül)</string>
|
||||
<string name="account_settings_message_format_html">HTML (képekkel és formázással)</string>
|
||||
<string name="account_settings_message_format_auto">Automatikus</string>
|
||||
|
||||
<!-- NEW: <string name="account_settings_always_show_cc_bcc_label">Always show Cc/Bcc</string>-->
|
||||
<string name="account_settings_always_show_cc_bcc_label">A Cc/Bcc mindig jelenjen meg</string>
|
||||
|
||||
<!-- NEW: <string name="account_settings_message_read_receipt_label">Read receipt</string>-->
|
||||
<!-- NEW: <string name="account_settings_message_read_receipt_summary">Always request a read receipt</string>-->
|
||||
|
@ -557,18 +552,18 @@ Hibajelentéseivel hozzájárul az újabb verziók tökéletesítéséhez, kérd
|
|||
<string name="account_settings_quote_style_header">Fejléc (pl. Outlook, Yahoo!, Hotmail)</string>
|
||||
|
||||
<string name="account_settings_general_title">Általános beállítások</string>
|
||||
<!-- NEW: <string name="account_settings_reading_mail">Reading mail</string>-->
|
||||
<string name="account_settings_reading_mail">Levél olvasása</string>
|
||||
<string name="account_settings_sync">Levelek letöltése</string>
|
||||
<string name="account_settings_folders">Mappák</string>
|
||||
<string name="account_settings_quote_prefix_label">Idézett szöveg előtagja</string>
|
||||
<string name="account_settings_crypto">Titkosítás</string>
|
||||
<string name="account_settings_crypto_app">OpenPGP Provider</string>
|
||||
<string name="account_settings_crypto_app_none">None</string>
|
||||
<string name="account_settings_crypto_auto_signature">Auto aláírás</string>
|
||||
<string name="account_settings_crypto_app_none">Nincs</string>
|
||||
<string name="account_settings_crypto_auto_signature">Automatikus aláírás</string>
|
||||
<string name="account_settings_crypto_auto_signature_summary">Használja az email címet a titkosítási kulcshoz</string>
|
||||
<!-- NEW: <string name="account_settings_crypto_auto_encrypt">Auto-encrypt</string>-->
|
||||
<string name="account_settings_crypto_auto_encrypt">Automatikusan titkosított</string>
|
||||
<!-- NEW: <string name="account_settings_crypto_auto_encrypt_summary">Automatically set encrypt if a public key matches a recipient.</string>-->
|
||||
<!-- NEW: <string name="account_settings_crypto_apg_not_installed">APG not installed</string>-->
|
||||
<string name="account_settings_crypto_apg_not_installed">Az APG nincs telepítve</string>
|
||||
|
||||
<string name="account_settings_mail_check_frequency_label">Frissítés gyakorisága</string>
|
||||
|
||||
|
@ -610,7 +605,7 @@ Hibajelentéseivel hozzájárul az újabb verziók tökéletesítéséhez, kérd
|
|||
<string name="account_settings_message_age_1_month">elmúlt hónap</string>
|
||||
<string name="account_settings_message_age_2_months">elmúlt 2 hónap</string>
|
||||
<string name="account_settings_message_age_3_months">elmúlt 3 hónap</string>
|
||||
<string name="account_settings_message_age_6_months">elműlt 6 hónap</string>
|
||||
<string name="account_settings_message_age_6_months">elmúlt 6 hónap</string>
|
||||
<string name="account_settings_message_age_1_year">az elmúlt év</string>
|
||||
|
||||
<string name="account_settings_folder_display_mode_label">Megjelenítendő mappák</string>
|
||||
|
@ -645,7 +640,7 @@ Hibajelentéseivel hozzájárul az újabb verziók tökéletesítéséhez, kérd
|
|||
<string name="folder_settings_title">Mappa beállításai</string>
|
||||
|
||||
<string name="folder_settings_in_top_group_label">Megjelenítés a fenti csoportban</string>
|
||||
<string name="folder_settings_in_top_group_summary">Mutassa a mappa lista tetjén</string>
|
||||
<string name="folder_settings_in_top_group_summary">Mutassa a mappa lista tetején</string>
|
||||
|
||||
<string name="folder_settings_folder_display_mode_label">Osztályozott mappanézet</string>
|
||||
<string name="folder_settings_folder_display_mode_normal">Nincs</string>
|
||||
|
@ -729,11 +724,11 @@ Hibajelentéseivel hozzájárul az újabb verziók tökéletesítéséhez, kérd
|
|||
<string name="identity_has_no_email">Nem tudja használni az azonosítót email cím nélkül</string>
|
||||
|
||||
<string name="sort_earliest_first">Korábbi leveleket előre</string>
|
||||
<string name="sort_latest_first">Későbbi levelket előre</string>
|
||||
<string name="sort_latest_first">Későbbi leveleket előre</string>
|
||||
<string name="sort_subject_alpha">Tárgy szerint sorban</string>
|
||||
<string name="sort_subject_re_alpha">Tárgy szerint fordítva</string>
|
||||
<!-- NEW: <string name="sort_sender_alpha">Sender alphabetical</string>-->
|
||||
<!-- NEW: <string name="sort_sender_re_alpha">Sender reverse alphabetical</string>-->
|
||||
<string name="sort_sender_alpha">Feladó szerint ABC rendben</string>
|
||||
<string name="sort_sender_re_alpha">Feladó szerint fordított ABC rendben</string>
|
||||
<string name="sort_flagged_first">Csillagos levelek előre</string>
|
||||
<string name="sort_flagged_last">Csillag nélküliek előre</string>
|
||||
<string name="sort_unread_first">Olvasatlanok előre</string>
|
||||
|
@ -745,7 +740,7 @@ Hibajelentéseivel hozzájárul az újabb verziók tökéletesítéséhez, kérd
|
|||
<string name="sort_by_date">Dátum</string>
|
||||
<string name="sort_by_arrival">Érkezés</string>
|
||||
<string name="sort_by_subject">Tárgy</string>
|
||||
<!-- NEW: <string name="sort_by_sender">Sender</string>-->
|
||||
<string name="sort_by_sender">Feladó</string>
|
||||
<string name="sort_by_flag">Csillag</string>
|
||||
<string name="sort_by_unread">Olvasott</string>
|
||||
<string name="sort_by_attach">Melléklet</string>
|
||||
|
@ -757,7 +752,7 @@ Hibajelentéseivel hozzájárul az újabb verziók tökéletesítéséhez, kérd
|
|||
<string name="account_clear_dlg_title">Fiók tisztítása</string>
|
||||
|
||||
<string name="provider_note_yahoojp">Ha POP3-at szeretne használni ehhez a szolgáltatóhoz, akkor engedélyezze a Yahoo mail beállításai oldalon.</string>
|
||||
<!-- NEW: <string name="provider_note_auonejp">Be sure to enable IMAP or POP3 on the au one mail settings page.</string>-->
|
||||
<string name="provider_note_auonejp">Ügylejen az IMAP vagy POP3 engedélyezésére az au mail beállítások oldalán.</string>
|
||||
<string name="provider_note_naver">Ha POP3-at vagy IMAP-ot szeretne használni ehhez a szolgáltatóhoz, akkor engedélyeznie kell az IMAP vagy POP3 beállításokat a Naver oldalán.</string>
|
||||
<string name="provider_note_hanmail">Ha POP3-at vagy IMAP-ot szeretne használni ehhez a szolgáltatóhoz, akkor engedélyeznie kell az IMAP vagy POP3 beállításokat a Hanmail(Daum) oldalán.</string>
|
||||
<string name="provider_note_paran">Ha POP3-at vagy IMAP-ot szeretne használni ehhez a szolgáltatóhoz, akkor engedélyeznie kell az IMAP vagy POP3 beállításokat a Paran oldalán.</string>
|
||||
|
@ -767,32 +762,32 @@ Hibajelentéseivel hozzájárul az újabb verziók tökéletesítéséhez, kérd
|
|||
<string name="account_setup_failed_dlg_invalid_certificate_accept">Kulcs elfogadva</string>
|
||||
<string name="account_setup_failed_dlg_invalid_certificate_reject">Kulcs elutasítva</string>
|
||||
|
||||
<string name="message_list_help_key"><!-- NEW: V, Z untranslated -->
|
||||
Del (or D) - Törlés\n
|
||||
<string name="message_list_help_key">
|
||||
Del (vagy D) - Törlés\n
|
||||
R - Válasz\n
|
||||
A - Válasz mindenkinek\n
|
||||
C - Írás\n
|
||||
F - Továbbít\n
|
||||
M - Áthelyezés\n
|
||||
V - Archive\n
|
||||
Y - Násolás\n
|
||||
Z - Mark (Un)read\n
|
||||
V - Archívum\n
|
||||
Y - Másolás\n
|
||||
Z - Olvasottnak vagy olvasatlannak jelöl\n
|
||||
G - Csillagoz\n
|
||||
O - Rendezési típus\n
|
||||
I - Rendezési sorrend\n
|
||||
Q - Vissza a mappákba\n
|
||||
S - Select/deselect\n
|
||||
S - Kijelölés/Kijelölés megszüntetése\n
|
||||
J, P - Előző üzenet\n
|
||||
K, N - Kövtkető üzenet
|
||||
K, N - Következő üzenet
|
||||
</string>
|
||||
|
||||
<!-- NEW: <string name="folder_list_help_key">
|
||||
1 - Display only 1st Class folders\u000A
|
||||
2 - Display 1st and 2nd Class folders\u000A
|
||||
3 - Display all except 2nd Class folders\u000A
|
||||
4 - Display all folders\u000A
|
||||
Q - Return to Accounts\u000A
|
||||
S - Edit Account Settings</string>-->
|
||||
<string name="folder_list_help_key">
|
||||
1 - Csak az elsődleges mappák megjelenítése\u000A
|
||||
2 - Elsődleges és másodlagos mappák megjelenítése\u000A
|
||||
3 - Mindet megjeleníti, kivéve a másodlagos mappákat\u000A
|
||||
4 - Minden mappa megjelenítése\u000A
|
||||
Q - Vissza fiókokhoz\u000A
|
||||
S - Fiókbeállítások módosítása</string>
|
||||
|
||||
<string name="folder_list_filter_hint">mappa neve</string>
|
||||
|
||||
|
@ -805,7 +800,7 @@ Hibajelentéseivel hozzájárul az újabb verziók tökéletesítéséhez, kérd
|
|||
<string name="account_settings_signature__location_label">Aláírás helyzete</string>
|
||||
<string name="account_settings_signature__location_before_quoted_text">Idézett szöveg elé</string>
|
||||
<string name="account_settings_signature__location_after_quoted_text">Idézett szöveg után</string>
|
||||
<!-- NEW: <string name="setting_theme_global">Use app theme</string>-->
|
||||
<string name="setting_theme_global">Alkalmazás téma használata</string>
|
||||
<string name="setting_theme_dark">Sötét</string>
|
||||
<string name="setting_theme_light">Világos</string>
|
||||
<string name="display_preferences">Megjelenés beállításai</string>
|
||||
|
@ -817,10 +812,10 @@ Hibajelentéseivel hozzájárul az újabb verziók tökéletesítéséhez, kérd
|
|||
<string name="accountlist_preferences">Fiókok listája</string>
|
||||
<string name="messagelist_preferences">Levelek listája</string>
|
||||
<string name="messageview_preferences">Levélírás</string>
|
||||
<!-- NEW: <string name="folderlist_preferences">Folder lists</string>-->
|
||||
<string name="folderlist_preferences">Mappalisták</string>
|
||||
<string name="settings_theme_label">Téma</string>
|
||||
<!-- NEW: <string name="settings_message_theme_label">Message view theme</string>-->
|
||||
<!-- NEW: <string name="settings_compose_theme_label">Composer theme</string>-->
|
||||
<string name="settings_message_theme_label">Üzenetmegjelenítés témája</string>
|
||||
<string name="settings_compose_theme_label">Üzenetírás témája</string>
|
||||
<string name="settings_language_label">Nyelv</string>
|
||||
|
||||
<!-- NEW: <string name="settings_message_theme_selection_label">Fixed message theme</string>-->
|
||||
|
@ -837,11 +832,11 @@ Hibajelentéseivel hozzájárul az újabb verziók tökéletesítéséhez, kérd
|
|||
<string name="background_ops_always">Mindig</string>
|
||||
<string name="background_ops_enabled">"Ha a 'Háttéradatok' bekapcsolva"</string>
|
||||
<string name="background_ops_auto_sync">"Ha a 'Háttéradatok' és 'Auto-szink' bekapcsolva"</string>
|
||||
<string name="background_ops_auto_sync_only">AMikor az \'Automatikus szinkronizáció\' be van kapcsolva</string>
|
||||
<string name="background_ops_auto_sync_only">Amikor az \'Automatikus szinkronizáció\' be van kapcsolva</string>
|
||||
|
||||
<string name="batch_select_all">Mindent kijelöl</string>
|
||||
|
||||
<string name="account_setup_push_limit_label">Ellenőrízhető mappák száma</string>
|
||||
<string name="account_setup_push_limit_label">Ellenőrizhető mappák száma</string>
|
||||
<string name="account_setup_push_limit_10">10 mappa</string>
|
||||
<string name="account_setup_push_limit_25">25 mappa</string>
|
||||
<string name="account_setup_push_limit_50">50 mappa</string>
|
||||
|
@ -851,9 +846,9 @@ Hibajelentéseivel hozzájárul az újabb verziók tökéletesítéséhez, kérd
|
|||
<string name="account_setup_push_limit_1000">1000 mappa</string>
|
||||
|
||||
<string name="animations_title">Animációk</string>
|
||||
<string name="animations_summary">Áttünési effektusok használata.</string>
|
||||
<string name="animations_summary">Áttűnési effektusok használata.</string>
|
||||
<string name="gestures_title">Kézmozdulatok</string>
|
||||
<string name="gestures_summary">Engedélyezi a kézmozdulakkal való vezérlést.</string>
|
||||
<string name="gestures_summary">Engedélyezi a kézmozdulatokkal való vezérlést.</string>
|
||||
|
||||
<string name="volume_navigation_title">Hangerő gomb vezérlés</string>
|
||||
<string name="volume_navigation_message">Leveleknél</string>
|
||||
|
@ -865,7 +860,7 @@ Hibajelentéseivel hozzájárul az újabb verziók tökéletesítéséhez, kérd
|
|||
<string name="measure_accounts_summary">Kikapcsolva gyorsabb működés</string>
|
||||
|
||||
<string name="count_search_title">Számolja a keresés eredményét</string>
|
||||
<string name="count_search_summary">Kikcsapcsolva gyorsabb műkodés</string>
|
||||
<string name="count_search_summary">Kikapcsolva gyorsabb működés</string>
|
||||
|
||||
<string name="hide_special_accounts_title">Különleges fiókok elrejtése</string>
|
||||
<string name="hide_special_accounts_summary">Egységesen elrejti a fiókok bejövő mappáit</string>
|
||||
|
@ -899,7 +894,7 @@ Hibajelentéseivel hozzájárul az újabb verziók tökéletesítéséhez, kérd
|
|||
|
||||
<string name="font_size_folder_list">Mappák listája</string>
|
||||
<string name="font_size_folder_name">Mappa neve</string>
|
||||
<string name="font_size_folder_status">Mappa státuszta</string>
|
||||
<string name="font_size_folder_status">Mappa állapota</string>
|
||||
|
||||
<string name="font_size_message_list">Levelek listája</string>
|
||||
<string name="font_size_message_list_subject">Tárgy</string>
|
||||
|
@ -919,7 +914,7 @@ Hibajelentéseivel hozzájárul az újabb verziók tökéletesítéséhez, kérd
|
|||
<string name="font_size_message_compose">Üzenet írása</string>
|
||||
<string name="font_size_message_compose_input">Szöveg beviteli mezők</string>
|
||||
|
||||
<!-- NEW: <string name="font_size_default">Default</string>-->
|
||||
<string name="font_size_default">Alapértelmezett</string>
|
||||
<string name="font_size_tiniest">Mini</string>
|
||||
<string name="font_size_tiny">Pici</string>
|
||||
<string name="font_size_smaller">Kisebb</string>
|
||||
|
@ -963,11 +958,11 @@ Hibajelentéseivel hozzájárul az újabb verziók tökéletesítéséhez, kérd
|
|||
<string name="confirm_discard_draft_message_title">Üzenet elvetése?</string>
|
||||
<string name="confirm_discard_draft_message">Valóban elveti az üzenetet?</string>
|
||||
|
||||
<!-- NEW: <string name="refuse_to_save_draft_marked_encrypted_dlg_title">Refuse to save draft message.</string>-->
|
||||
<!-- NEW: <string name="refuse_to_save_draft_marked_encrypted_instructions_fmt">Refuse to save draft message marked encrypted.</string>-->
|
||||
<string name="refuse_to_save_draft_marked_encrypted_dlg_title">Piszkozat mentésének elutasítása.</string>
|
||||
<string name="refuse_to_save_draft_marked_encrypted_instructions_fmt">Titkosított piszkozatok mentésének elutasítása.</string>
|
||||
|
||||
<!-- NEW: <string name="continue_without_public_key_dlg_title">Continue without public key?</string>-->
|
||||
<!-- NEW: <string name="continue_without_public_key_instructions_fmt">One or more recipients do not have a saved public key. Continue?</string>-->
|
||||
<string name="continue_without_public_key_dlg_title">Folytatás nyilvános kulcs nélkül?</string>
|
||||
<string name="continue_without_public_key_instructions_fmt">Egy vagy több címzettnek nincs elmentett nyilvános kulcsa. Folytatás?</string>
|
||||
|
||||
<string name="select_text_now">Szöveg kijelölése.</string>
|
||||
|
||||
|
@ -985,22 +980,18 @@ Hibajelentéseivel hozzájárul az újabb verziók tökéletesítéséhez, kérd
|
|||
(1) http://developer.android.com/guide/topics/resources/string-resource.html#Plurals
|
||||
|
||||
-->
|
||||
<!-- NEW:
|
||||
<plurals name="dialog_confirm_delete_message">
|
||||
<item quantity="one">Do you really want to delete this message?</item>
|
||||
<item quantity="other">Do you really want to delete <xliff:g id="message_count">%1$d</xliff:g> messages?</item>
|
||||
<plurals name="dialog_confirm_delete_messages">
|
||||
<item quantity="one">Biztos hogy törli ezt a levelet?</item>
|
||||
<item quantity="other">Biztos hogy törli ezt: <xliff:g id="message_count">%1$d</xliff:g> ?</item>
|
||||
</plurals>
|
||||
-->
|
||||
<string name="dialog_confirm_delete_confirm_button">Törlés</string>
|
||||
<string name="dialog_confirm_delete_cancel_button">Nem törlöm</string>
|
||||
|
||||
<string name="dialog_confirm_spam_title">Levélszemét mappa áthelyzésének jóváhagyása</string>
|
||||
<!-- NEW:
|
||||
<string name="dialog_confirm_spam_title">Levélszemét mappa áthelyezésének jóváhagyása</string>
|
||||
<plurals name="dialog_confirm_spam_message">
|
||||
<item quantity="one">Do you really want to move this message to the spam folder?</item>
|
||||
<item quantity="other">Do you really want to move <xliff:g id="message_count">%1$d</xliff:g> messages to the spam folder?</item>
|
||||
<item quantity="one">Valóban át akarja helyezni ezt a levelet a spam mappába?</item>
|
||||
<item quantity="other">Valóban át akarja helyezni ezt a levelet a spam mappába: <xliff:g id="message_count">%1$d</xliff:g> ?</item>
|
||||
</plurals>
|
||||
-->
|
||||
<string name="dialog_confirm_spam_confirm_button">Igen</string>
|
||||
<string name="dialog_confirm_spam_cancel_button">Nem</string>
|
||||
|
||||
|
@ -1018,7 +1009,7 @@ Hibajelentéseivel hozzájárul az újabb verziók tökéletesítéséhez, kérd
|
|||
<string name="settings_import_dialog_title">Importálás</string>
|
||||
<string name="settings_export_dialog_title">Exportálás</string>
|
||||
<string name="settings_import">Beállítások importálása</string>
|
||||
<!-- NEW: <string name="settings_import_selection">Import selection</string>-->
|
||||
<string name="settings_import_selection">Kijelöltek importálása</string>
|
||||
<string name="settings_import_global_settings">Általános beállítások</string>
|
||||
<string name="settings_exporting">Beállítások exportálása…</string>
|
||||
<string name="settings_importing">Beállítások importálása…</string>
|
||||
|
@ -1026,7 +1017,7 @@ Hibajelentéseivel hozzájárul az újabb verziók tökéletesítéséhez, kérd
|
|||
<string name="settings_export_success">Exportált beállítások mentve ide: <xliff:g id="filename">%s</xliff:g></string>
|
||||
<string name="settings_import_global_settings_success">Az általános beállítások importálva innen: <xliff:g id="filename">%s</xliff:g></string>
|
||||
<string name="settings_import_success">A(z) <xliff:g id="accounts">%s</xliff:g> importálva innen: <xliff:g id="filename">%s</xliff:g></string>
|
||||
<plurals name="settings_import_success">
|
||||
<plurals name="settings_import_accounts">
|
||||
<item quantity="one">1 fiók</item>
|
||||
<item quantity="other"><xliff:g id="numAccounts">%s</xliff:g> fiók</item>
|
||||
</plurals>
|
||||
|
@ -1037,35 +1028,33 @@ Hibajelentéseivel hozzájárul az újabb verziók tökéletesítéséhez, kérd
|
|||
<string name="settings_import_success_header">Importálás sikeresen befejezve</string>
|
||||
<string name="settings_import_failed_header">Importálás sikertelen</string>
|
||||
<string name="settings_import_activate_account_header">Fiók aktiválása</string>
|
||||
<!-- NEW: <string name="settings_import_activate_account_intro">To be able to use the account \"<xliff:g id="account">%s</xliff:g>\" you need to provide the <xliff:g id="server_passwords">%s</xliff:g>.</string>-->
|
||||
<string name="settings_import_activate_account_intro">Ahhoz, hogy használja ezt a fiókot: \"<xliff:g id="account">%s</xliff:g>\", meg kell adnia ezt: <xliff:g id="server_passwords">%s</xliff:g>.</string>
|
||||
<plurals name="settings_import_server_passwords">
|
||||
<item quantity="one">szerver jelszava</item>
|
||||
<item quantity="other">szerver jelszavai</item>
|
||||
</plurals>
|
||||
<string name="settings_import_incoming_server">Bwjövő szerver (<xliff:g id="hostname">%s</xliff:g>):</string>
|
||||
<string name="settings_import_outgoing_server">Kimenü szerver (<xliff:g id="hostname">%s</xliff:g>):</string>
|
||||
<!-- NEW:
|
||||
<string name="settings_import_incoming_server">Bejövő szerver (<xliff:g id="hostname">%s</xliff:g>):</string>
|
||||
<string name="settings_import_outgoing_server">Kimenő szerver (<xliff:g id="hostname">%s</xliff:g>):</string>
|
||||
<plurals name="settings_import_setting_passwords">
|
||||
<item quantity="one">Setting password…</item>
|
||||
<item quantity="other">Setting passwords…</item>
|
||||
<item quantity="one">Jelszó beállítása…</item>
|
||||
<item quantity="other">Jelszavak beállítása…</item>
|
||||
</plurals>
|
||||
-->
|
||||
<!-- NEW: <string name="settings_import_use_incoming_server_password">Use the incoming server password</string>-->
|
||||
<!-- NEW: <string name="activate_account_action">Activate</string>-->
|
||||
<string name="settings_import_use_incoming_server_password">Bejövő kiszolgáló jelszavának használata</string>
|
||||
<string name="activate_account_action">Aktiválás</string>
|
||||
|
||||
<string name="account_unavailable">\"<xliff:g id="account">%s</xliff:g>\" fiók nem elérhető ellenőríze a tárhelyet</string>
|
||||
|
||||
<string name="settings_attachment_default_path">Csatolményok mentése ide:</string>
|
||||
<string name="attachment_save_title">Csatolményok mentése</string>
|
||||
<string name="attachment_save_desc">Nincs fájlkezelő. Hova szeretné mentni a csatolmányt?</string>
|
||||
<string name="settings_attachment_default_path">Csatolmányok mentése ide:</string>
|
||||
<string name="attachment_save_title">Csatolmányok mentése</string>
|
||||
<string name="attachment_save_desc">Nincs fájlkezelő. Hova szeretné menteni a csatolmányt?</string>
|
||||
|
||||
<string name="manage_accounts_move_up_action">Mozgatás fel</string>
|
||||
<string name="manage_accounts_move_down_action">Mozgatás le</string>
|
||||
<string name="manage_accounts_moving_message">Fiók mozgatása…</string>
|
||||
|
||||
<!-- NEW: <string name="unread_widget_select_account">Show unread count for…</string>-->
|
||||
<string name="unread_widget_select_account">Olvasatlan üzenetek számának megjelenítése…</string>
|
||||
|
||||
<string name="import_dialog_error_title">Nincs fájlkezleő alkalmazás</string>
|
||||
<string name="import_dialog_error_title">Nincs fájlkezelő alkalmazás</string>
|
||||
<string name="close">Bezárás</string>
|
||||
|
||||
<string name="webview_empty_message">Nincs szöveg</string>
|
||||
|
@ -1088,74 +1077,74 @@ Hibajelentéseivel hozzájárul az újabb verziók tökéletesítéséhez, kérd
|
|||
<string name="webview_contextmenu_phone_clipboard_label">Telefonszám</string>
|
||||
|
||||
<string name="webview_contextmenu_email_send_action">Levél küldése</string>
|
||||
<string name="webview_contextmenu_email_save_action">Mentés a névjegyekzeh</string>
|
||||
<string name="webview_contextmenu_email_save_action">Mentés a névjegyekhez</string>
|
||||
<string name="webview_contextmenu_email_copy_action">E-mail cím másolása a vágólapra</string>
|
||||
<string name="webview_contextmenu_email_clipboard_label">E-mail cím</string>
|
||||
|
||||
<string name="image_saved_as">Kép mentése: \"<xliff:g id="filename">%s</xliff:g>\"</string>
|
||||
<string name="image_saving_failed">A kép mentése sikertelen.</string>
|
||||
|
||||
<!-- NEW: <string name="account_settings_remote_search_num_results_entries_all">All</string>-->
|
||||
<!-- NEW: <string name="account_settings_remote_search_num_results_entries_10">10</string>-->
|
||||
<!-- NEW: <string name="account_settings_remote_search_num_results_entries_25">25</string>-->
|
||||
<!-- NEW: <string name="account_settings_remote_search_num_results_entries_50">50</string>-->
|
||||
<!-- NEW: <string name="account_settings_remote_search_num_results_entries_100">100</string>-->
|
||||
<!-- NEW: <string name="account_settings_remote_search_num_results_entries_250">250</string>-->
|
||||
<!-- NEW: <string name="account_settings_remote_search_num_results_entries_500">500</string>-->
|
||||
<!-- NEW: <string name="account_settings_remote_search_num_results_entries_1000">1000</string>-->
|
||||
<!-- NEW: <string name="account_settings_remote_search_num_label">Server search limit</string>-->
|
||||
<string name="account_settings_remote_search_num_results_entries_all">Mind</string>
|
||||
<string name="account_settings_remote_search_num_results_entries_10">10</string>
|
||||
<string name="account_settings_remote_search_num_results_entries_25">25</string>
|
||||
<string name="account_settings_remote_search_num_results_entries_50">50</string>
|
||||
<string name="account_settings_remote_search_num_results_entries_100">100</string>
|
||||
<string name="account_settings_remote_search_num_results_entries_250">250</string>
|
||||
<string name="account_settings_remote_search_num_results_entries_500">500</string>
|
||||
<string name="account_settings_remote_search_num_results_entries_1000">1000</string>
|
||||
<string name="account_settings_remote_search_num_label">Kiszolgáló keresési határa</string>
|
||||
<!-- NEW: <string name="account_settings_remote_search_num_summary">Search will stop after finding <xliff:g id="num_results">%s</xliff:g> results.</string>-->
|
||||
<!-- NEW: <string name="account_settings_remote_search_full_text">Include messages text in server search</string>-->
|
||||
<!-- NEW: <string name="account_settings_remote_search_full_text_summary">Full text searches can be slow.</string>-->
|
||||
<!-- NEW: <string name="remote_search_sending_query">Sending query to server</string>-->
|
||||
<!-- NEW: <string name="remote_search_downloading">Fetching %d results</string>-->
|
||||
<!-- NEW: <string name="remote_search_downloading_limited">Fetching %1$d of %2$d results</string>-->
|
||||
<!-- NEW: <string name="remote_search_error">Remote search failed</string>-->
|
||||
<string name="remote_search_downloading">%d letöltési eredmény</string>
|
||||
<string name="remote_search_downloading_limited">%1$d letöltése a(z) %2$d eredményből</string>
|
||||
<string name="remote_search_error">A távoli keresés sikertelen</string>
|
||||
|
||||
<!-- NEW: <string name="account_settings_search">Search</string>-->
|
||||
<!-- NEW: <string name="account_settings_remote_search_enabled">Enable server search</string>-->
|
||||
<!-- NEW: <string name="account_settings_remote_search_enabled_summary">Search messages on the server in addition to those on your device</string>-->
|
||||
<!-- NEW: <string name="action_remote_search">Search messages on server</string>-->
|
||||
<!-- NEW: <string name="pull_to_refresh_remote_search_from_local_search_pull">Pull to search server…</string>-->
|
||||
<!-- NEW: <string name="pull_to_refresh_remote_search_from_local_search_release">Release to search server…</string>-->
|
||||
<!-- NEW: <string name="remote_search_unavailable_no_network">A network connection is required for server search.</string>-->
|
||||
<string name="account_settings_search">Keresés</string>
|
||||
<string name="account_settings_remote_search_enabled">Keresés a kiszolgálón engedélyezése</string>
|
||||
<string name="account_settings_remote_search_enabled_summary">Üzenetek keresése a kiszolgálón, a készüléken kívül</string>
|
||||
<string name="action_remote_search">Üzenetek keresése a kiszolgálón</string>
|
||||
<string name="pull_to_refresh_remote_search_from_local_search_pull">Húzza el a kereséshez…</string>
|
||||
<string name="pull_to_refresh_remote_search_from_local_search_release">Engedje a keresést a kiszolgálón…</string>
|
||||
<string name="remote_search_unavailable_no_network">Hálózati kapcsolatra van szükség a kereséshez.</string>
|
||||
|
||||
<!-- NEW: <string name="global_settings_background_as_unread_indicator_label">Dim messages after reading</string>-->
|
||||
<!-- NEW: <string name="global_settings_background_as_unread_indicator_summary">A grey background will show that a message has been read</string>-->
|
||||
<string name="global_settings_background_as_unread_indicator_label">Üzenet elhalványítása olvasás után</string>
|
||||
<string name="global_settings_background_as_unread_indicator_summary">Szürke háttere lesz az elolvasott üzenetnek</string>
|
||||
|
||||
<!-- NEW: <string name="global_settings_threaded_view_label">Threaded view</string>-->
|
||||
<!-- NEW: <string name="global_settings_threaded_view_summary">Group messages by conversation</string>-->
|
||||
<string name="global_settings_threaded_view_label">Beszélgetés nézet</string>
|
||||
<string name="global_settings_threaded_view_summary">Üzenetek beszélgetésbe csoportosítása</string>
|
||||
|
||||
<!-- NEW: <string name="upgrade_databases_title">Upgrading databases</string>-->
|
||||
<!-- NEW: <string name="upgrade_databases_unspecified">Upgrading databases…</string>-->
|
||||
<!-- NEW: <string name="upgrade_database_format">Upgrading database of account \"<xliff:g id="account">%s</xliff:g>\"</string>-->
|
||||
<string name="upgrade_databases_title">Adatbázisok frissítése</string>
|
||||
<string name="upgrade_databases_unspecified">Adatbázisok frissítése…</string>
|
||||
<string name="upgrade_database_format">A(z) \"<xliff:g id="account">%s</xliff:g>\ fiók adatbázisának frissítése"</string>
|
||||
|
||||
<!-- NEW: <string name="message_list_loading">Loading…</string>-->
|
||||
<string name="message_list_loading">Töltés…</string>
|
||||
|
||||
<!-- NEW: <string name="global_settings_splitview_mode_label">Show split-screen</string>-->
|
||||
<!-- NEW: <string name="global_settings_splitview_always">Always</string>-->
|
||||
<!-- NEW: <string name="global_settings_splitview_never">Never</string>-->
|
||||
<!-- NEW: <string name="global_settings_splitview_when_in_landscape">When in Landscape orientation</string>-->
|
||||
<string name="global_settings_splitview_mode_label">Osztott képernyő megjelenítése</string>
|
||||
<string name="global_settings_splitview_always">Mindig</string>
|
||||
<string name="global_settings_splitview_never">Soha</string>
|
||||
<string name="global_settings_splitview_when_in_landscape">Amikor fekvő módban van</string>
|
||||
|
||||
<!-- NEW: <string name="message_view_empty">Please select a message on the left</string>-->
|
||||
<string name="message_view_empty">Kérjük, válasszon ki egy üzenetet a bal oldalon</string>
|
||||
|
||||
<!-- NEW: <string name="global_settings_show_contact_picture_label">Show contact pictures</string>-->
|
||||
<!-- NEW: <string name="global_settings_show_contact_picture_summary">Show contact pictures in the message list</string>-->
|
||||
<string name="global_settings_show_contact_picture_label">Kapcsolatok képeinek megjelenítése</string>
|
||||
<string name="global_settings_show_contact_picture_summary">Kapcsolatok képeinek megjelenítése az üzenetlistában</string>
|
||||
|
||||
<!-- NEW: <string name="last_refresh_time_format">Refreshed <xliff:g id="formatted_time">%s</xliff:g></string>-->
|
||||
<!-- NEW: <string name="last_refresh_time_format_with_push">Refreshed <xliff:g id="time_with_preposition">%s</xliff:g> (Push active)</string>-->
|
||||
<!-- NEW: <string name="preposition_for_date">on <xliff:g id="date">%s</xliff:g></string>-->
|
||||
<string name="last_refresh_time_format"><xliff:g id="formatted_time">%s</xliff:g> frissítve</string>
|
||||
<string name="last_refresh_time_format_with_push"><xliff:g id="time_with_preposition">%s</xliff:g> frissítve (Push active)</string>
|
||||
<string name="preposition_for_date">on <xliff:g id="date">%s</xliff:g></string>
|
||||
|
||||
<!-- NEW: <string name="mark_all_as_read">Mark all as read</string>-->
|
||||
<string name="mark_all_as_read">Összes megjelölése olvasottként</string>
|
||||
|
||||
<!-- NEW: <string name="global_settings_colorize_missing_contact_pictures_label">Colorize contact pictures</string>-->
|
||||
<string name="global_settings_colorize_missing_contact_pictures_label">Partnerek képeinek színezése</string>
|
||||
<!-- NEW: <string name="global_settings_colorize_missing_contact_pictures_summary">Colorize missing contact pictures</string>-->
|
||||
|
||||
<!-- NEW: <string name="global_settings_messageview_visible_refile_actions_title">Visible message actions</string>-->
|
||||
<!-- NEW: <string name="global_settings_messageview_visible_refile_actions_summary">Show selected actions in the message view menu</string>-->
|
||||
<string name="global_settings_messageview_visible_refile_actions_title">Üzenetműveletek megjelenítése</string>
|
||||
<string name="global_settings_messageview_visible_refile_actions_summary">Kiválasztott művelet megjelenítése az üzenetnézet menüben</string>
|
||||
|
||||
<!-- NEW: <string name="loading_attachment">Loading attachment…</string>-->
|
||||
<!-- NEW: <string name="fetching_attachment_dialog_title_send">Sending message</string>-->
|
||||
<!-- NEW: <string name="fetching_attachment_dialog_title_save">Saving draft</string>-->
|
||||
<!-- NEW: <string name="fetching_attachment_dialog_message">Fetching attachment…</string>-->
|
||||
<string name="loading_attachment">Melléklet betöltése…</string>
|
||||
<string name="fetching_attachment_dialog_title_send">Üzenet küldése</string>
|
||||
<string name="fetching_attachment_dialog_title_save">Piszkozat mentése</string>
|
||||
<string name="fetching_attachment_dialog_message">Melléklet letöltése…</string>
|
||||
</resources>
|
||||
|
|
|
@ -188,20 +188,14 @@ Invia le tue segnalazioni, suggerisci nuove funzionalità e chiedi informazioni
|
|||
|
||||
<string name="status_loading_more_failed">Riprova a caricare altri messaggi</string>
|
||||
|
||||
<string name="load_more_messages_fmt">Scarica altri
|
||||
<xliff:g id="messages_to_load">%d</xliff:g> messaggi</string>
|
||||
<string name="load_more_messages_fmt">Scarica altri <xliff:g id="messages_to_load">%d</xliff:g> messaggi</string>
|
||||
|
||||
<string name="abbrev_gigabytes">GB</string>
|
||||
<string name="abbrev_megabytes">MB</string>
|
||||
<string name="abbrev_kilobytes">KB</string>
|
||||
<string name="abbrev_bytes">B</string>
|
||||
|
||||
<string name="account_size_changed">
|
||||
Account \"<xliff:g id="account">%s</xliff:g>\" ridimensionato da
|
||||
<xliff:g id="oldSize">%s</xliff:g>
|
||||
a
|
||||
<xliff:g id="newSize">%s</xliff:g>
|
||||
</string>
|
||||
<string name="account_size_changed">Account \"<xliff:g id="account">%s</xliff:g>\" ridimensionato da <xliff:g id="oldSize">%s</xliff:g> a <xliff:g id="newSize">%s</xliff:g></string>
|
||||
|
||||
<string name="compacting_account">Compattazione account \"<xliff:g id="account">%s</xliff:g>\"</string>
|
||||
<string name="clearing_account">Rimozione account \"<xliff:g id="account">%s</xliff:g>\"</string>
|
||||
|
@ -985,7 +979,7 @@ Invia le tue segnalazioni, suggerisci nuove funzionalità e chiedi informazioni
|
|||
(1) http://developer.android.com/guide/topics/resources/string-resource.html#Plurals
|
||||
|
||||
-->
|
||||
<plurals name="dialog_confirm_delete_message">
|
||||
<plurals name="dialog_confirm_delete_messages">
|
||||
<item quantity="one">Vuoi davvero eliminare questo messaggio?</item>
|
||||
<item quantity="other">Vuoi davvero eliminare i <xliff:g id="message_count">%1$d</xliff:g> messaggi selezionati?</item>
|
||||
</plurals>
|
||||
|
@ -1022,7 +1016,7 @@ Invia le tue segnalazioni, suggerisci nuove funzionalità e chiedi informazioni
|
|||
<string name="settings_export_success">Salvata esportazione impostazioni in <xliff:g id="filename">%s</xliff:g></string>
|
||||
<string name="settings_import_global_settings_success">Impostazioni globali importate da <xliff:g id="filename">%s</xliff:g></string>
|
||||
<string name="settings_import_success">Importato <xliff:g id="accounts">%s</xliff:g> da <xliff:g id="filename">%s</xliff:g></string>
|
||||
<plurals name="settings_import_success">
|
||||
<plurals name="settings_import_accounts">
|
||||
<item quantity="one">1 account</item>
|
||||
<item quantity="other"><xliff:g id="numAccounts">%s</xliff:g> account</item>
|
||||
</plurals>
|
||||
|
|
|
@ -197,11 +197,7 @@
|
|||
<string name="abbrev_bytes">B</string>
|
||||
|
||||
<string name="account_size_changed"><!-- NEW: Note: part of 'account_size_changed' is untranslated -->
|
||||
חשבון \"<xliff:g id="account">%s</xliff:g>\" נדחס ל
|
||||
<xliff:g id="oldSize">%s</xliff:g>
|
||||
to
|
||||
<xliff:g id="newSize">%s</xliff:g>
|
||||
</string>
|
||||
חשבון \"<xliff:g id="account">%s</xliff:g>\" נדחס ל <xliff:g id="oldSize">%s</xliff:g> to <xliff:g id="newSize">%s</xliff:g></string>
|
||||
|
||||
<string name="compacting_account">דחיסת חשבון</string>
|
||||
<string name="clearing_account">מנקה חשבון \"<xliff:g id="account">%s</xliff:g>\"</string>
|
||||
|
@ -1022,7 +1018,7 @@
|
|||
<string name="settings_export_success">יצוא הגדרות נשמרו ל <xliff:g id="filename">%s</xliff:g></string>
|
||||
<string name="settings_import_global_settings_success">יבא הגדרות כלליות מ <xliff:g id="filename">%s</xliff:g></string>
|
||||
<string name="settings_import_success">יבא <xliff:g id="accounts">%s</xliff:g> מ <xliff:g id="filename">%s</xliff:g></string>
|
||||
<plurals name="settings_import_success">
|
||||
<plurals name="settings_import_accounts">
|
||||
<item quantity="one">חשבון 1</item>
|
||||
<item quantity="other"><xliff:g id="numAccounts">%s</xliff:g> חשבונות</item>
|
||||
</plurals>
|
||||
|
|
|
@ -195,12 +195,7 @@ K-9 は大多数のメールクライアントと同様に、ほとんどのフ
|
|||
<string name="abbrev_kilobytes">KB</string>
|
||||
<string name="abbrev_bytes">B</string>
|
||||
|
||||
<string name="account_size_changed">
|
||||
アカウント \"<xliff:g id="account">%s</xliff:g>\" 現在
|
||||
<xliff:g id="oldSize">%s</xliff:g>
|
||||
から
|
||||
<xliff:g id="newSize">%s</xliff:g> へ
|
||||
</string>
|
||||
<string name="account_size_changed">アカウント \"<xliff:g id="account">%s</xliff:g>\" 現在 <xliff:g id="oldSize">%s</xliff:g> から <xliff:g id="newSize">%s</xliff:g> へ</string>
|
||||
|
||||
<string name="compacting_account">アカウント \"<xliff:g id="account">%s</xliff:g>\" を最適化しています</string>
|
||||
<string name="clearing_account">アカウント \"<xliff:g id="account">%s</xliff:g>\" をクリアしています</string>
|
||||
|
@ -983,7 +978,7 @@ K-9 は大多数のメールクライアントと同様に、ほとんどのフ
|
|||
(1) http://developer.android.com/guide/topics/resources/string-resource.html#Plurals
|
||||
|
||||
-->
|
||||
<plurals name="dialog_confirm_delete_message">
|
||||
<plurals name="dialog_confirm_delete_messages">
|
||||
<item quantity="one">本当にこのメッセージを削除しますか?</item>
|
||||
<item quantity="other">本当に<xliff:g id="message_count">%1$d</xliff:g>件のメッセージを削除しますか?</item>
|
||||
</plurals>
|
||||
|
@ -1020,7 +1015,7 @@ K-9 は大多数のメールクライアントと同様に、ほとんどのフ
|
|||
<string name="settings_export_success">設定を <xliff:g id="filename">%s</xliff:g> に保存しました。</string>
|
||||
<string name="settings_import_global_settings_success">グローバル設定を <xliff:g id="filename">%s</xliff:g> からインポートしました。</string>
|
||||
<string name="settings_import_success"><xliff:g id="accounts">%s</xliff:g> の設定を <xliff:g id="filename">%s</xliff:g> からインポートしました。</string>
|
||||
<plurals name="settings_import_success">
|
||||
<plurals name="settings_import_accounts">
|
||||
<item quantity="one">1 アカウント</item>
|
||||
<item quantity="other"><xliff:g id="numAccounts">%s</xliff:g> アカウント</item>
|
||||
</plurals>
|
||||
|
|
|
@ -194,12 +194,7 @@ K-9 메일은 대부분의 무료 hotmail 계정을 지원하지 않으며, 다
|
|||
<string name="abbrev_kilobytes">KB</string>
|
||||
<string name="abbrev_bytes">B</string>
|
||||
|
||||
<string name="account_size_changed">
|
||||
\"<xliff:g id="account">%s</xliff:g>\" 계정이 차지하는 용량이
|
||||
<xliff:g id="oldSize">%s</xliff:g>
|
||||
에서
|
||||
<xliff:g id="newSize">%s</xliff:g> 로 줄었습니다
|
||||
</string>
|
||||
<string name="account_size_changed">\"<xliff:g id="account">%s</xliff:g>\" 계정이 차지하는 용량이 <xliff:g id="oldSize">%s</xliff:g> 에서 <xliff:g id="newSize">%s</xliff:g> 로 줄었습니다</string>
|
||||
|
||||
<string name="compacting_account">계정 최적화 \"<xliff:g id="account">%s</xliff:g>\"</string>
|
||||
<string name="clearing_account">계정 비우기 \"<xliff:g id="account">%s</xliff:g>\"</string>
|
||||
|
@ -983,7 +978,7 @@ K-9 메일은 대부분의 무료 hotmail 계정을 지원하지 않으며, 다
|
|||
(1) http://developer.android.com/guide/topics/resources/string-resource.html#Plurals
|
||||
|
||||
-->
|
||||
<plurals name="dialog_confirm_delete_message">
|
||||
<plurals name="dialog_confirm_delete_messages">
|
||||
<item quantity="one">정말 이 메시지를 삭제하겠습니까?</item>
|
||||
<item quantity="other">정말 <xliff:g id="message_count">%1$d</xliff:g> 통의 메시지를 삭제하겠습니까?</item>
|
||||
</plurals>
|
||||
|
@ -1020,7 +1015,7 @@ K-9 메일은 대부분의 무료 hotmail 계정을 지원하지 않으며, 다
|
|||
<string name="settings_export_success">설정을 파일 <xliff:g id="filename">%s</xliff:g>로 내보냄</string>
|
||||
<string name="settings_import_global_settings_success">설정을 <xliff:g id="filename">%s</xliff:g>로부터 가져옴</string>
|
||||
<string name="settings_import_success"><xliff:g id="filename">%s</xliff:g>에서 <xliff:g id="accounts">%s</xliff:g>를 가져옴</string>
|
||||
<plurals name="settings_import_success">
|
||||
<plurals name="settings_import_accounts">
|
||||
<item quantity="one">계정 하나</item>
|
||||
<item quantity="other">계정 <xliff:g id="numAccounts">%s</xliff:g> 개</item>
|
||||
</plurals>
|
||||
|
|
|
@ -195,12 +195,7 @@ Graag foutrapporten, bijdrage nieuwe functies en vragen stellen op
|
|||
<string name="abbrev_kilobytes">KB</string>
|
||||
<string name="abbrev_bytes">B</string>
|
||||
|
||||
<string name="account_size_changed">
|
||||
Account \"<xliff:g id="account">%s</xliff:g>\" shrunk van
|
||||
<xliff:g id="oldSize">%s</xliff:g>
|
||||
naar
|
||||
<xliff:g id="newSize">%s</xliff:g>
|
||||
</string>
|
||||
<string name="account_size_changed">Account \"<xliff:g id="account">%s</xliff:g>\" shrunk van <xliff:g id="oldSize">%s</xliff:g> naar <xliff:g id="newSize">%s</xliff:g></string>
|
||||
|
||||
<string name="compacting_account">Account \"<xliff:g id="account">%s</xliff:g>\" comprimeren</string>
|
||||
<string name="clearing_account">Account \"<xliff:g id="account">%s</xliff:g>\" wissen</string>
|
||||
|
@ -282,9 +277,9 @@ Graag foutrapporten, bijdrage nieuwe functies en vragen stellen op
|
|||
<string name="message_view_status_attachment_not_saved">Opslaan bijlage op SD-kaart mislukt.</string>
|
||||
<string name="message_view_show_pictures_action">Laat afbeeldingen zien</string>
|
||||
<string name="message_view_show_message_action">Bericht laten zien</string>
|
||||
<string name="message_view_show_attachments_action">Bijvoegsel laten zien</string>
|
||||
<string name="message_view_show_attachments_action">Bijlage laten zien</string>
|
||||
<string name="message_view_show_more_attachments_action">Meer…</string>
|
||||
<string name="message_view_fetching_attachment_toast">bijlage ophalen.</string>
|
||||
<string name="message_view_fetching_attachment_toast">Bijlage ophalen.</string>
|
||||
<string name="message_view_no_viewer">Niet in staat viewer te vinden voor <xliff:g id="mimetype">%s</xliff:g>.</string>
|
||||
<string name="message_view_download_remainder">Download compleet bericht</string>
|
||||
<string name="message_view_downloading">Downloaden…</string>
|
||||
|
@ -328,7 +323,7 @@ Graag foutrapporten, bijdrage nieuwe functies en vragen stellen op
|
|||
<string name="global_settings_messageview_show_next_summary">Standaard volgend bericht laten zien na verwijderen</string>
|
||||
|
||||
<string name="global_settings_confirm_actions_title">Bevestig acties</string>
|
||||
<string name="global_settings_confirm_actions_summary">Toon een dialoogvenster altijd wanneer u de geselecteerde acties uitvoerd</string>
|
||||
<string name="global_settings_confirm_actions_summary">Toon een dialoogvenster altijd wanneer u de geselecteerde acties uitvoert</string>
|
||||
<string name="global_settings_confirm_action_delete">Verwijder (alleen berichten bekijken)</string>
|
||||
<string name="global_settings_confirm_action_delete_starred">Gemarkeerd verwijderen (in bericht-view)</string>
|
||||
<string name="global_settings_confirm_action_spam">Spam</string>
|
||||
|
@ -668,7 +663,7 @@ Graag foutrapporten, bijdrage nieuwe functies en vragen stellen op
|
|||
<string name="account_settings_outgoing_label">Uitgaande server</string>
|
||||
<string name="account_settings_outgoing_summary">Configureren van de uitgaande (SMTP) server</string>
|
||||
<string name="account_settings_description_label">Account naam</string>
|
||||
<string name="account_settings_name_label">Jou naam</string>
|
||||
<string name="account_settings_name_label">Jouw naam</string>
|
||||
<string name="notifications_title">Waarschuwingen</string>
|
||||
<string name="account_settings_vibrate_enable">Trillen</string>
|
||||
<string name="account_settings_vibrate_summary">Trillen wanneer nieuwe mail binnenkomt</string>
|
||||
|
@ -860,7 +855,7 @@ Graag foutrapporten, bijdrage nieuwe functies en vragen stellen op
|
|||
|
||||
<string name="start_integrated_inbox_title">Geïntegreerde Inbox bij start</string>
|
||||
|
||||
<string name="measure_accounts_title">Laat account grootte zien</string>
|
||||
<string name="measure_accounts_title">Laat accountgrootte zien</string>
|
||||
<string name="measure_accounts_summary">Zet uit voor sneller beeldscherm</string>
|
||||
|
||||
<string name="count_search_title">Tel zoek resultaten</string>
|
||||
|
@ -984,7 +979,7 @@ Graag foutrapporten, bijdrage nieuwe functies en vragen stellen op
|
|||
(1) http://developer.android.com/guide/topics/resources/string-resource.html#Plurals
|
||||
|
||||
-->
|
||||
<plurals name="dialog_confirm_delete_message">
|
||||
<plurals name="dialog_confirm_delete_messages">
|
||||
<item quantity="one">Wil je dit bericht echt verwijderen?</item>
|
||||
<item quantity="other">Wil je echt <xliff:g id="message_count">%1$d</xliff:g> berichten verwijderen?</item>
|
||||
</plurals>
|
||||
|
@ -1021,7 +1016,7 @@ Graag foutrapporten, bijdrage nieuwe functies en vragen stellen op
|
|||
<string name="settings_export_success">Geexporteerde instellingen opgeslagen in <xliff:g id="filename">%s</xliff:g></string>
|
||||
<string name="settings_import_global_settings_success">Globale instellingen geimporteerd van <xliff:g id="filename">%s</xliff:g></string>
|
||||
<string name="settings_import_success"><xliff:g id="accounts">%s</xliff:g> geimporteerd vanuit <xliff:g id="filename">%s</xliff:g></string>
|
||||
<plurals name="settings_import_success">
|
||||
<plurals name="settings_import_accounts">
|
||||
<item quantity="one">1 account</item>
|
||||
<item quantity="other"><xliff:g id="numAccounts">%s</xliff:g> accounts</item>
|
||||
</plurals>
|
||||
|
@ -1132,23 +1127,23 @@ Graag foutrapporten, bijdrage nieuwe functies en vragen stellen op
|
|||
|
||||
<string name="message_view_empty">Selecteer een bericht aan de linker kant</string>
|
||||
|
||||
<string name="global_settings_show_contact_picture_label">Laat contact afbeeldingen zien</string>
|
||||
<string name="global_settings_show_contact_picture_summary">Laat contact afbeeldingen in de berichtenlijst zien</string>
|
||||
<string name="global_settings_show_contact_picture_label">Laat contactafbeeldingen zien</string>
|
||||
<string name="global_settings_show_contact_picture_summary">Laat contactafbeeldingen in de berichtenlijst zien</string>
|
||||
|
||||
<string name="last_refresh_time_format">Verversd <xliff:g id="formatted_time">%s</xliff:g></string>
|
||||
<string name="last_refresh_time_format_with_push">Verversd <xliff:g id="time_with_preposition">%s</xliff:g> (Push actief)</string>
|
||||
<string name="last_refresh_time_format">Ververst <xliff:g id="formatted_time">%s</xliff:g></string>
|
||||
<string name="last_refresh_time_format_with_push">Ververst <xliff:g id="time_with_preposition">%s</xliff:g> (Push actief)</string>
|
||||
<string name="preposition_for_date">op <xliff:g id="date">%s</xliff:g></string>
|
||||
|
||||
<string name="mark_all_as_read">Markeer alles als gelezen</string>
|
||||
|
||||
<!-- NEW: <string name="global_settings_colorize_missing_contact_pictures_label">Colorize contact pictures</string>-->
|
||||
<!-- NEW: <string name="global_settings_colorize_missing_contact_pictures_summary">Colorize missing contact pictures</string>-->
|
||||
<string name="global_settings_colorize_missing_contact_pictures_label">Contactafbeeldingen kleuren</string>
|
||||
<string name="global_settings_colorize_missing_contact_pictures_summary">Voorzie afwezige contactafbeeldingen van een kleur</string>
|
||||
|
||||
<!-- NEW: <string name="global_settings_messageview_visible_refile_actions_title">Visible message actions</string>-->
|
||||
<!-- NEW: <string name="global_settings_messageview_visible_refile_actions_summary">Show selected actions in the message view menu</string>-->
|
||||
<string name="global_settings_messageview_visible_refile_actions_title">Zichtbare berichtacties</string>
|
||||
<string name="global_settings_messageview_visible_refile_actions_summary">Toon de geselecteerde acties in het Berichten-menu</string>
|
||||
|
||||
<!-- NEW: <string name="loading_attachment">Loading attachment…</string>-->
|
||||
<!-- NEW: <string name="fetching_attachment_dialog_title_send">Sending message</string>-->
|
||||
<!-- NEW: <string name="fetching_attachment_dialog_title_save">Saving draft</string>-->
|
||||
<!-- NEW: <string name="fetching_attachment_dialog_message">Fetching attachment…</string>-->
|
||||
<string name="loading_attachment">Bijlage laden…</string>
|
||||
<string name="fetching_attachment_dialog_title_send">Bericht wordt verstuurd</string>
|
||||
<string name="fetching_attachment_dialog_title_save">Concept wordt opgeslagen</string>
|
||||
<string name="fetching_attachment_dialog_message">Bijlage ophalen…</string>
|
||||
</resources>
|
||||
|
|
|
@ -3,10 +3,11 @@
|
|||
<!-- ## ## -->
|
||||
<!-- ## Polska wersja jezykowa: Marcin Orlowski <carlos@wfmh.org.pl> ## -->
|
||||
<!-- ## ## -->
|
||||
<!-- ## Latest update: (YYYY-MM-DD): 2013.07.15 ## -->
|
||||
<!-- ## Latest update: (YYYY-MM-DD): 2013.10.30 ## -->
|
||||
<!-- ## Modified by rabbbit, 2011.03.03 ## -->
|
||||
<!-- ## Updated by Błażej Jeżewski, 2012.04.10 ## -->
|
||||
<!-- ## Updated by Mirosław Lach, 2013.07.15 ## -->
|
||||
<!-- ## Updated by Jacek Sowiński, 2013.10.30 ## -->
|
||||
<!-- ## ## -->
|
||||
<!-- #################################################################################### -->
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
|
@ -205,8 +206,7 @@ Wszelkie zgłoszenia usterek, zapytania oraz nowe pomysły prosimy przesyłać z
|
|||
<string name="abbrev_kilobytes">KB</string>
|
||||
<string name="abbrev_bytes">B</string>
|
||||
|
||||
<string name="account_size_changed">
|
||||
Objętość konta \"<xliff:g id="account">%s</xliff:g>\" zmniejszyła się z <xliff:g id="oldSize">%s</xliff:g> do <xliff:g id="newSize">%s</xliff:g></string>
|
||||
<string name="account_size_changed">Objętość konta \"<xliff:g id="account">%s</xliff:g>\" zmniejszyła się z <xliff:g id="oldSize">%s</xliff:g> do <xliff:g id="newSize">%s</xliff:g></string>
|
||||
|
||||
<string name="compacting_account">Kompaktuję konto \"<xliff:g id="account">%s</xliff:g>\"</string>
|
||||
<string name="clearing_account">Czyszczę konto \"<xliff:g id="account">%s</xliff:g>\"</string>
|
||||
|
@ -955,7 +955,7 @@ Wszelkie zgłoszenia usterek, zapytania oraz nowe pomysły prosimy przesyłać z
|
|||
<string name="btn_crypto_sign">Podpisz</string>
|
||||
<string name="btn_encrypt">Szyfruj</string>
|
||||
<string name="btn_decrypt">Deszyfruj</string>
|
||||
<string name="btn_verify">Potwiedź</string>
|
||||
<string name="btn_verify">Potwierdź</string>
|
||||
<string name="unknown_crypto_signature_user_id"><nieznany></string>
|
||||
<string name="key_id">id: %s</string>
|
||||
<string name="pgp_mime_unsupported">Wiadomości PGP/MIME nie są jeszcze wspierane.</string>
|
||||
|
@ -990,7 +990,7 @@ Wszelkie zgłoszenia usterek, zapytania oraz nowe pomysły prosimy przesyłać z
|
|||
(1) http://developer.android.com/guide/topics/resources/string-resource.html#Plurals
|
||||
|
||||
-->
|
||||
<plurals name="dialog_confirm_delete_message">
|
||||
<plurals name="dialog_confirm_delete_messages">
|
||||
<item quantity="one">Na pewno chcesz usunąć wiadomość?</item>
|
||||
<item quantity="other">Na pewno chcesz usunąć <xliff:g id="message_count">%1$d</xliff:g> wiadomości?</item>
|
||||
</plurals>
|
||||
|
@ -1027,7 +1027,7 @@ Wszelkie zgłoszenia usterek, zapytania oraz nowe pomysły prosimy przesyłać z
|
|||
<string name="settings_export_success">Zapisano ustawienia do <xliff:g id="filename">%s</xliff:g></string>
|
||||
<string name="settings_import_global_settings_success">Importowano ustawienia z <xliff:g id="filename">%s</xliff:g></string>
|
||||
<string name="settings_import_success">Importowano <xliff:g id="accounts">%s</xliff:g> z <xliff:g id="filename">%s</xliff:g></string>
|
||||
<plurals name="settings_import_success">
|
||||
<plurals name="settings_import_accounts">
|
||||
<item quantity="one">1 konto</item>
|
||||
<item quantity="other"><xliff:g id="numAccounts">%s</xliff:g> kont</item>
|
||||
</plurals>
|
||||
|
@ -1147,14 +1147,14 @@ Wszelkie zgłoszenia usterek, zapytania oraz nowe pomysły prosimy przesyłać z
|
|||
|
||||
<string name="mark_all_as_read">Oznacz wszystkie jako przeczytane</string>
|
||||
|
||||
<!-- NEW: <string name="global_settings_colorize_missing_contact_pictures_label">Colorize contact pictures</string>-->
|
||||
<!-- NEW: <string name="global_settings_colorize_missing_contact_pictures_summary">Colorize missing contact pictures</string>-->
|
||||
<string name="global_settings_colorize_missing_contact_pictures_label">Pokoloruj zdjęcia kontaktów</string>
|
||||
<string name="global_settings_colorize_missing_contact_pictures_summary">Używa kolorów gdy brakuje zdjęć kontaktów</string>
|
||||
|
||||
<!-- NEW: <string name="global_settings_messageview_visible_refile_actions_title">Visible message actions</string>-->
|
||||
<!-- NEW: <string name="global_settings_messageview_visible_refile_actions_summary">Show selected actions in the message view menu</string>-->
|
||||
<string name="global_settings_messageview_visible_refile_actions_title">Widoczne operacje wiadomości</string>
|
||||
<string name="global_settings_messageview_visible_refile_actions_summary">Pokaż wybrane operacje w menu widoku wiadomości</string>
|
||||
|
||||
<!-- NEW: <string name="loading_attachment">Loading attachment…</string>-->
|
||||
<!-- NEW: <string name="fetching_attachment_dialog_title_send">Sending message</string>-->
|
||||
<!-- NEW: <string name="fetching_attachment_dialog_title_save">Saving draft</string>-->
|
||||
<!-- NEW: <string name="fetching_attachment_dialog_message">Fetching attachment…</string>-->
|
||||
<string name="loading_attachment">Ładowanie załącznika…</string>
|
||||
<string name="fetching_attachment_dialog_title_send">Wysyłanie wiadomości</string>
|
||||
<string name="fetching_attachment_dialog_title_save">Zapisywanie szkicu</string>
|
||||
<string name="fetching_attachment_dialog_message">Pobieranie załącznika…</string>
|
||||
</resources>
|
||||
|
|
|
@ -195,9 +195,7 @@ Por favor, nos envie relatórios de bugs, contribua para novas melhorias e faça
|
|||
<string name="abbrev_kilobytes">KB</string>
|
||||
<string name="abbrev_bytes">B</string>
|
||||
|
||||
<string name="account_size_changed">
|
||||
Conta \"<xliff:g id="account">%s</xliff:g>\" reduziu-se de <xliff:g id="oldSize">%s</xliff:g> para <xliff:g id="newSize">%s</xliff:g>
|
||||
</string>
|
||||
<string name="account_size_changed">Conta \"<xliff:g id="account">%s</xliff:g>\" reduziu-se de <xliff:g id="oldSize">%s</xliff:g> para <xliff:g id="newSize">%s</xliff:g></string>
|
||||
|
||||
<string name="compacting_account">Compactando conta \"<xliff:g id="account">%s</xliff:g>\"</string>
|
||||
<string name="clearing_account">Limpando conta \"<xliff:g id="account">%s</xliff:g>\"</string>
|
||||
|
@ -870,7 +868,7 @@ Por favor, nos envie relatórios de bugs, contribua para novas melhorias e faça
|
|||
<string name="flagged_modifier"> - Favorito</string>
|
||||
<string name="unread_modifier"> - Não lido</string>
|
||||
|
||||
<string name="search_all_messages_title">Todas as mensagens</string>
|
||||
<string name="search_all_messages_title">Todas as Mensagens</string>
|
||||
<string name="search_all_messages_detail">Todas as mensagens em pastas pesquisáveis</string>
|
||||
|
||||
<string name="integrated_inbox_title">Entrada Unificada</string>
|
||||
|
@ -981,7 +979,7 @@ Por favor, nos envie relatórios de bugs, contribua para novas melhorias e faça
|
|||
(1) http://developer.android.com/guide/topics/resources/string-resource.html#Plurals
|
||||
|
||||
-->
|
||||
<plurals name="dialog_confirm_delete_message">
|
||||
<plurals name="dialog_confirm_delete_messages">
|
||||
<item quantity="one">Deseja mesmo excluir esta mensagem?</item>
|
||||
<item quantity="other">Deseja mesmo excluir estas <xliff:g id="message_count">%1$d</xliff:g> mensagens?</item>
|
||||
</plurals>
|
||||
|
@ -1018,7 +1016,7 @@ Por favor, nos envie relatórios de bugs, contribua para novas melhorias e faça
|
|||
<string name="settings_export_success">Configurações salvas para <xliff:g id="filename">%s</xliff:g></string>
|
||||
<string name="settings_import_global_settings_success">Configurações importadas de <xliff:g id="filename">%s</xliff:g></string>
|
||||
<string name="settings_import_success">Importação concluída para <xliff:g id="accounts">%s</xliff:g> de <xliff:g id="filename">%s</xliff:g></string>
|
||||
<plurals name="settings_import_success">
|
||||
<plurals name="settings_import_accounts">
|
||||
<item quantity="one">1 conta</item>
|
||||
<item quantity="other"><xliff:g id="numAccounts">%s</xliff:g> contas</item>
|
||||
</plurals>
|
||||
|
@ -1034,18 +1032,16 @@ Por favor, nos envie relatórios de bugs, contribua para novas melhorias e faça
|
|||
<item quantity="one">senha do servidor</item>
|
||||
<item quantity="other">senhas do servidor</item>
|
||||
</plurals>
|
||||
<!-- NEW: <string name="settings_import_incoming_server">Incoming server (<xliff:g id="hostname">%s</xliff:g>):</string>-->
|
||||
<!-- NEW: <string name="settings_import_outgoing_server">Outgoing server (<xliff:g id="hostname">%s</xliff:g>):</string>-->
|
||||
<!-- NEW:
|
||||
<string name="settings_import_incoming_server">Servidor de entrada (<xliff:g id="hostname">%s</xliff:g>):</string>
|
||||
<string name="settings_import_outgoing_server">Servidor de saída (<xliff:g id="hostname">%s</xliff:g>):</string>
|
||||
<plurals name="settings_import_setting_passwords">
|
||||
<item quantity="one">Setting password…</item>
|
||||
<item quantity="other">Setting passwords…</item>
|
||||
<item quantity="one">Definindo senha…</item>
|
||||
<item quantity="other">Definindo senhas…</item>
|
||||
</plurals>
|
||||
-->
|
||||
<!-- NEW: <string name="settings_import_use_incoming_server_password">Use the incoming server password</string>-->
|
||||
<!-- NEW: <string name="activate_account_action">Activate</string>-->
|
||||
<string name="settings_import_use_incoming_server_password">Usar a senha do servidor de entrada</string>
|
||||
<string name="activate_account_action">Ativar</string>
|
||||
|
||||
<!-- NEW: <string name="account_unavailable">Account \"<xliff:g id="account">%s</xliff:g>\" is unavailable; check storage</string>-->
|
||||
<string name="account_unavailable">A conta \"<xliff:g id="account">%s</xliff:g>\" está indisponível; verifique o armazenamento</string>
|
||||
|
||||
<string name="settings_attachment_default_path">Salvar anexos para…</string>
|
||||
<string name="attachment_save_title">Salvar anexo</string>
|
||||
|
@ -1141,13 +1137,13 @@ Por favor, nos envie relatórios de bugs, contribua para novas melhorias e faça
|
|||
<string name="mark_all_as_read">Marcar todas como lidas</string>
|
||||
|
||||
<string name="global_settings_colorize_missing_contact_pictures_label">Colorir contatos sem foto</string>
|
||||
<!-- NEW: <string name="global_settings_colorize_missing_contact_pictures_summary">Colorize missing contact pictures</string>-->
|
||||
<string name="global_settings_colorize_missing_contact_pictures_summary">Usar cores em contatos que não tiverem foto</string>
|
||||
|
||||
<string name="global_settings_messageview_visible_refile_actions_title">Ações de mensagens visíveis</string>
|
||||
<string name="global_settings_messageview_visible_refile_actions_summary">Exibir as ações selecionadas na tela de mensagem</string>
|
||||
|
||||
<!-- NEW: <string name="loading_attachment">Loading attachment…</string>-->
|
||||
<!-- NEW: <string name="fetching_attachment_dialog_title_send">Sending message</string>-->
|
||||
<!-- NEW: <string name="fetching_attachment_dialog_title_save">Saving draft</string>-->
|
||||
<!-- NEW: <string name="fetching_attachment_dialog_message">Fetching attachment…</string>-->
|
||||
<string name="loading_attachment">Carregando anexo…</string>
|
||||
<string name="fetching_attachment_dialog_title_send">Enviando mensagem</string>
|
||||
<string name="fetching_attachment_dialog_title_save">Salvando rascunho</string>
|
||||
<string name="fetching_attachment_dialog_message">Buscando anexo…</string>
|
||||
</resources>
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<!-- Translation of RU version (06.07.2013): Igor Nedoboy (k9russian<AT>gmail<DOT>com) -->
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<!-- === App-specific strings ============================================================= -->
|
||||
|
||||
|
@ -200,7 +199,7 @@ K-9 Mail — почтовый клиент для Android.
|
|||
|
||||
<string name="compacting_account">Сжатие ящика \"<xliff:g id="account">%s</xliff:g>\"</string>
|
||||
<string name="clearing_account">Очистка ящика \"<xliff:g id="account">%s</xliff:g>\"</string>
|
||||
<string name="recreating_account">Пересоздание ящика\"<xliff:g id="account">%s</xliff:g>\"</string>
|
||||
<string name="recreating_account">Пересоздание ящика \"<xliff:g id="account">%s</xliff:g>\"</string>
|
||||
|
||||
<string name="notification_new_title">Новая почта</string>
|
||||
<string name="notification_new_messages_title"><xliff:g id="new_message_count">%d</xliff:g> новых</string>
|
||||
|
@ -213,9 +212,9 @@ K-9 Mail — почтовый клиент для Android.
|
|||
<string name="notification_certificate_error_title">Ошибка сертификата <xliff:g id="account">%s</xliff:g></string>
|
||||
<string name="notification_certificate_error_text">Проверьте настройки сервера</string>
|
||||
|
||||
<string name="notification_bg_sync_ticker">Проверка: <xliff:g id="account">%s</xliff:g>:<xliff:g id="folder">%s</xliff:g></string>
|
||||
<string name="notification_bg_sync_ticker">Проверка <xliff:g id="account">%s</xliff:g>:<xliff:g id="folder">%s</xliff:g></string>
|
||||
<string name="notification_bg_sync_title">Проверка почты</string>
|
||||
<string name="notification_bg_send_ticker">Отправка: <xliff:g id="account">%s</xliff:g></string>
|
||||
<string name="notification_bg_send_ticker">Отправка <xliff:g id="account">%s</xliff:g></string>
|
||||
<string name="notification_bg_send_title">Отправка почты</string>
|
||||
<string name="notification_bg_title_separator">:</string>
|
||||
|
||||
|
@ -259,6 +258,7 @@ K-9 Mail — почтовый клиент для Android.
|
|||
<string name="message_compose_quote_header_to">Кому:</string>
|
||||
<string name="message_compose_quote_header_cc">Копия:</string>
|
||||
<string name="message_compose_reply_header_fmt"><xliff:g id="sender">%s</xliff:g> пишет:</string>
|
||||
<string name="message_compose_reply_header_fmt_with_date"><xliff:g id="sent_date">%1$s</xliff:g>, <xliff:g id="sender">%2$s</xliff:g> пишет:</string>
|
||||
<string name="message_compose_error_no_recipients">Укажите адресата</string>
|
||||
<string name="error_contact_address_not_found">Контакт не содержит сведений о email</string>
|
||||
<string name="message_compose_attachments_skipped_toast">Некоторые вложения не были загружены и не могут быть отправлены</string>
|
||||
|
@ -980,7 +980,7 @@ K-9 Mail — почтовый клиент для Android.
|
|||
(1) http://developer.android.com/guide/topics/resources/string-resource.html#Plurals
|
||||
|
||||
-->
|
||||
<plurals name="dialog_confirm_delete_message">
|
||||
<plurals name="dialog_confirm_delete_messages">
|
||||
<item quantity="one">Сообщение будет удалено. Продолжить?</item>
|
||||
<item quantity="other">Сообщения (<xliff:g id="message_count">%1$d</xliff:g> шт.) будут удалены. Продолжить?</item>
|
||||
</plurals>
|
||||
|
@ -1017,7 +1017,7 @@ K-9 Mail — почтовый клиент для Android.
|
|||
<string name="settings_export_success">Настройки сохранены в <xliff:g id="filename">%s</xliff:g></string>
|
||||
<string name="settings_import_global_settings_success">Настройки K-9 импортированы из <xliff:g id="filename">%s</xliff:g></string>
|
||||
<string name="settings_import_success">Импортировано: <xliff:g id="accounts">%s</xliff:g> из <xliff:g id="filename">%s</xliff:g></string>
|
||||
<plurals name="settings_import_success">
|
||||
<plurals name="settings_import_accounts">
|
||||
<item quantity="one">1 ящик</item>
|
||||
<item quantity="few"><xliff:g id="numAccounts">%s</xliff:g> ящика</item>
|
||||
<item quantity="other"><xliff:g id="numAccounts">%s</xliff:g> ящиков</item>
|
||||
|
|
|
@ -12,13 +12,13 @@
|
|||
<string name="unread_widget_label">K-9 Neprečítaná</string>
|
||||
|
||||
<string name="remote_control_label">Diaľkové ovládanie aplikácie K-9 Mail</string>
|
||||
<string name="remote_control_desc">Povolí tejto aplikácii ovládať aktivity a nastavenia aplikácie K-9 Mail.</string>
|
||||
<string name="remote_control_desc">Umožní tejto aplikácii ovládať aktivity a nastavenia aplikácie K-9 Mail.</string>
|
||||
|
||||
|
||||
<!-- Used in the about dialog -->
|
||||
<string name="app_authors">Google, The K-9 Dog Walkers.</string>
|
||||
<string name="app_copyright_fmt">Autorské práva 2008-<xliff:g>%s</xliff:g> The K-9 Dog Walkers. Portions Copyright 2006-<xliff:g>%s</xliff:g> the Android Open Source Project.</string>
|
||||
<string name="app_license">Licencované pod Apache licenciou vo verzii 2.0.</string>
|
||||
<string name="app_license">Licencované pod licenciou Apache 2.0.</string>
|
||||
|
||||
|
||||
<!-- Welcome message -->
|
||||
|
@ -30,7 +30,7 @@ K-9 Mail je výkonný e-mailový klient pre Android a navyše je zadarmo.
|
|||
Jeho vylepšené funkcie zahŕňajú:
|
||||
</p>
|
||||
<ul>
|
||||
<li>Push mail pri použití IMAP IDLE</li>
|
||||
<li>Push pošta pri použití IMAP IDLE</li>
|
||||
<li>Lepší výkon</li>
|
||||
<li>Doplňovanie správ</li>
|
||||
<li>Podpisy správ</li>
|
||||
|
@ -40,7 +40,7 @@ Jeho vylepšené funkcie zahŕňajú:
|
|||
<li>Nastavenie spiatočnej adresy</li>
|
||||
<li>Klávesové skratky</li>
|
||||
<li>Lepšia podpora pre IMAP</li>
|
||||
<li>Ukladanie príloh na SD</li>
|
||||
<li>Ukladanie príloh na kartu SD</li>
|
||||
<li>Vyprázdňovanie koša</li>
|
||||
<li>Triedenie správ</li>
|
||||
<li>…a ďalšie</li>
|
||||
|
@ -48,7 +48,7 @@ Jeho vylepšené funkcie zahŕňajú:
|
|||
<p>
|
||||
Vezmite prosím na vedomie, že K-9 nepodporuje väčšinu Hotmail účtov a ako mnoho ďalších e-mailových klientov vykazuje zvláštnosti pri komunikácii s Microsoft Exchange.
|
||||
</p><p>
|
||||
Prosím nahlasujte prípadné chyby, prispievajte novými funkciami a pýtajte sa na
|
||||
Prosím, nahlasujte prípadné chyby, prispievajte novými funkciami a pýtajte sa na
|
||||
<a href="http://k9mail.googlecode.com/">http://k9mail.googlecode.com/</a>.
|
||||
</p>
|
||||
]]></string>
|
||||
|
@ -62,13 +62,13 @@ Prosím nahlasujte prípadné chyby, prispievajte novými funkciami a pýtajte s
|
|||
<string name="account_delete_dlg_instructions_fmt">Účet \"<xliff:g id="account">%s</xliff:g>\" bude odstránený z K-9 Mail.</string>
|
||||
<string name="account_recreate_dlg_instructions_fmt">Všetky dáta pre účet \"<xliff:g id="account">%s</xliff:g>\" budú odstránené. Nastavenia účtu budú však zachované.</string>
|
||||
<string name="account_clear_dlg_instructions_fmt">Všetky správy pre účet \"<xliff:g id="account">%s</xliff:g>\" budú odstránené. Nastavenia účtu budú však zachované.</string>
|
||||
<string name="insufficient_apg_permissions">K-9 nemá povolenia k plnému prístupu k APG, pre opravu prosím preinštalujte K-9 Mail.</string>
|
||||
<string name="insufficient_apg_permissions">K-9 nemá povolenia k plnému prístupu k APG, pre opravu prosím, preinštalujte K-9 Mail.</string>
|
||||
|
||||
|
||||
|
||||
<!-- === App Store-specific strings ======================================================= -->
|
||||
|
||||
<string name="import_dialog_error_message">Prosím nainštalujte správcu súborov pre pokračovanie v tomto importe.</string>
|
||||
<string name="import_dialog_error_message">Prosím, nainštalujte správcu súborov pre pokračovanie v tomto importovaní.</string>
|
||||
<string name="open_market">Otvoriť Obchod Play</string>
|
||||
|
||||
|
||||
|
@ -78,14 +78,14 @@ Prosím nahlasujte prípadné chyby, prispievajte novými funkciami a pýtajte s
|
|||
<string name="app_authors_fmt">Autori: <xliff:g id="app_authors">%s</xliff:g></string>
|
||||
<string name="app_revision_fmt">Informácie o revízii: <xliff:g id="app_revision_url">%s</xliff:g></string>
|
||||
<string name="app_libraries">Používame tieto knižnice tretích strán: <xliff:g id="app_libraries_list">%s</xliff:g></string>
|
||||
<string name="app_emoji_icons">Emoji ikony: <xliff:g id="app_emoji_icons_link">%s</xliff:g></string>
|
||||
<string name="app_emoji_icons">Ikony Emoji: <xliff:g id="app_emoji_icons_link">%s</xliff:g></string>
|
||||
|
||||
<string name="read_attachment_label">čítať prílohy e-mailov</string>
|
||||
<string name="read_attachment_desc">Povolí tejto aplikácii čítať prílohy Vašich e-mailov.</string>
|
||||
<string name="read_messages_label">čítať e-maily</string>
|
||||
<string name="read_messages_desc">Povolí tejto aplikácii čítať Vaše e-maily.</string>
|
||||
<string name="delete_messages_label">mazať e-maily</string>
|
||||
<string name="delete_messages_desc">Povolí tejto aplikácii mazať Vaše e-maily.</string>
|
||||
<string name="read_attachment_label">čítať prílohy správ</string>
|
||||
<string name="read_attachment_desc">Povolí tejto aplikácii čítať prílohy Vašich správ.</string>
|
||||
<string name="read_messages_label">čítať správy</string>
|
||||
<string name="read_messages_desc">Povolí tejto aplikácii čítať Vaše správy.</string>
|
||||
<string name="delete_messages_label">mazať správy</string>
|
||||
<string name="delete_messages_desc">Povolí tejto aplikácii mazať Vaše správy.</string>
|
||||
|
||||
<string name="about_title_fmt">O aplikácii <xliff:g id="app_name">%s</xliff:g></string>
|
||||
<string name="accounts_title">Účty</string>
|
||||
|
@ -94,7 +94,7 @@ Prosím nahlasujte prípadné chyby, prispievajte novými funkciami a pýtajte s
|
|||
|
||||
<string name="message_list_title"><xliff:g id="account">%s</xliff:g>:<xliff:g id="folder">%s</xliff:g> </string>
|
||||
|
||||
<string name="compose_title_compose">Vytvoriť</string>
|
||||
<string name="compose_title_compose">Napísať</string>
|
||||
<string name="compose_title_reply">Odpovedať</string>
|
||||
<string name="compose_title_reply_all">Odpovedať všetkým</string>
|
||||
<string name="compose_title_forward">Preposlať</string>
|
||||
|
@ -132,22 +132,22 @@ Prosím nahlasujte prípadné chyby, prispievajte novými funkciami a pýtajte s
|
|||
<string name="continue_action">Pokračovať</string>
|
||||
<string name="back_action">Späť</string>
|
||||
<string name="done_action">Hotovo</string> <!-- Used to complete a multi-step process -->
|
||||
<string name="discard_action">Neukladať</string>
|
||||
<string name="discard_action">Zahodiť</string>
|
||||
<string name="save_draft_action">Uložiť ako koncept</string>
|
||||
<string name="check_mail_action">Skontrolovať poštu</string>
|
||||
<string name="send_messages_action">Odoslať správy</string>
|
||||
<string name="refresh_folders_action">Obnoviť zoznam priečinkov</string>
|
||||
<string name="filter_folders_action">Nájsť priečinok</string>
|
||||
<string name="add_account_action">Pridať účet</string>
|
||||
<string name="compose_action">Vytvoriť</string>
|
||||
<string name="search_action">Hľadať</string>
|
||||
<string name="search_results">Výsledky hľadania</string>
|
||||
<string name="compose_action">Napísať</string>
|
||||
<string name="search_action">Vyhľadať</string>
|
||||
<string name="search_results">Výsledky vyhľadávania</string>
|
||||
<string name="preferences_action">Nastavenia</string>
|
||||
<string name="account_settings_action">Nastavenia účtu</string>
|
||||
<string name="folder_settings_action">Nastavenia priečinku</string>
|
||||
<string name="global_settings_action">Všeobecné nastavenia</string>
|
||||
<string name="remove_account_action">Odstrániť účet</string>
|
||||
<string name="clear_pending_action">Zrušiť čakajúce akcie (nebezpečné!)</string>
|
||||
<string name="clear_pending_action">Zrušiť čakajúce akcie (nebezpečné)</string>
|
||||
|
||||
<string name="mark_as_read_action">Označiť ako prečítané</string>
|
||||
<string name="send_alternate_action">Zdieľať</string>
|
||||
|
@ -188,35 +188,29 @@ Prosím nahlasujte prípadné chyby, prispievajte novými funkciami a pýtajte s
|
|||
|
||||
<string name="status_loading_more_failed">Opakujte načítanie ďalších správ</string>
|
||||
|
||||
<string name="load_more_messages_fmt">Načítať až
|
||||
o <xliff:g id="messages_to_load">%d</xliff:g> viac</string>
|
||||
<string name="load_more_messages_fmt">Načítať ďalších <xliff:g id="messages_to_load">%d</xliff:g></string>
|
||||
|
||||
<string name="abbrev_gigabytes">GB</string>
|
||||
<string name="abbrev_megabytes">MB</string>
|
||||
<string name="abbrev_kilobytes">KB</string>
|
||||
<string name="abbrev_bytes">B</string>
|
||||
|
||||
<string name="account_size_changed">
|
||||
Účet \"<xliff:g id="account">%s</xliff:g>\" bol zmenšený z
|
||||
<xliff:g id="oldSize">%s</xliff:g>
|
||||
na
|
||||
<xliff:g id="newSize">%s</xliff:g>
|
||||
</string>
|
||||
<string name="account_size_changed">Účet \"<xliff:g id="account">%s</xliff:g>\" bol zmenšený z <xliff:g id="oldSize">%s</xliff:g> na <xliff:g id="newSize">%s</xliff:g></string>
|
||||
|
||||
<string name="compacting_account">Zmenšujem účet \"<xliff:g id="account">%s</xliff:g>\"</string>
|
||||
<string name="clearing_account">Čistím účet \"<xliff:g id="account">%s</xliff:g>\"</string>
|
||||
<string name="recreating_account">Obnovujem účet \"<xliff:g id="account">%s</xliff:g>\"</string>
|
||||
<string name="compacting_account">Zmenšovanie účtu \"<xliff:g id="account">%s</xliff:g>\"</string>
|
||||
<string name="clearing_account">Čistenie účtu \"<xliff:g id="account">%s</xliff:g>\"</string>
|
||||
<string name="recreating_account">Obnovovanie účtu \"<xliff:g id="account">%s</xliff:g>\"</string>
|
||||
|
||||
<string name="notification_new_title">Nová správa</string>
|
||||
<string name="notification_new_messages_title">Počet nových správ: <xliff:g id="new_message_count">%d</xliff:g></string>
|
||||
<string name="notification_new_one_account_fmt">Počet neprečítaných správ: <xliff:g id="unread_message_count">%d</xliff:g> v <xliff:g id="account">%s</xliff:g></string> <!-- 279 Unread (someone@google.com) -->
|
||||
<string name="notification_additional_messages">+ <xliff:g id="additional_messages">%d</xliff:g> viac v <xliff:g id="account">%s</xliff:g></string>
|
||||
<string name="notification_additional_messages">+ ďalších <xliff:g id="additional_messages">%d</xliff:g> v <xliff:g id="account">%s</xliff:g></string>
|
||||
|
||||
<string name="notification_action_reply">Odpovedať</string>
|
||||
<string name="notification_action_mark_as_read">Ozn. ako prečítané</string>
|
||||
<string name="notification_action_delete">Zmazať</string>
|
||||
<string name="notification_action_mark_as_read">Označiť ako prečítané</string>
|
||||
<string name="notification_action_delete">Vymazať</string>
|
||||
<string name="notification_certificate_error_title">Chyba certifikátu pre <xliff:g id="account">%s</xliff:g></string>
|
||||
<string name="notification_certificate_error_text">Skontrolujte nastavenia serveru</string>
|
||||
<string name="notification_certificate_error_text">Skontrolujte nastavenia servera</string>
|
||||
|
||||
<string name="notification_bg_sync_ticker">Kontrolovanie pošty: <xliff:g id="account">%s</xliff:g>:<xliff:g id="folder">%s</xliff:g></string>
|
||||
<string name="notification_bg_sync_title">Kontrolovanie pošty</string>
|
||||
|
@ -263,7 +257,7 @@ Prosím nahlasujte prípadné chyby, prispievajte novými funkciami a pýtajte s
|
|||
<string name="message_compose_quote_header_from">Od:</string>
|
||||
<string name="message_compose_quote_header_to">Komu:</string>
|
||||
<string name="message_compose_quote_header_cc">Kópia:</string>
|
||||
<string name="message_compose_reply_header_fmt"><xliff:g id="sender">%s</xliff:g> napísal(-a):</string>
|
||||
<string name="message_compose_reply_header_fmt">Používateľ <xliff:g id="sender">%s</xliff:g> napísal:</string>
|
||||
<string name="message_compose_error_no_recipients">Musíte pridať aspoň jedného príjemcu.</string>
|
||||
<string name="error_contact_address_not_found">Nebola nájdená žiadna e-mailová adresa pre tento kontakt.</string>
|
||||
<string name="message_compose_attachments_skipped_toast">Niektoré prílohy nemožno preposlať, pretože neboli stiahnuté.</string>
|
||||
|
@ -284,7 +278,7 @@ Prosím nahlasujte prípadné chyby, prispievajte novými funkciami a pýtajte s
|
|||
<string name="message_view_show_pictures_action">Zobraziť obrázky</string>
|
||||
<string name="message_view_show_message_action">Zobraziť správy</string>
|
||||
<string name="message_view_show_attachments_action">Zobraziť prílohy</string>
|
||||
<string name="message_view_show_more_attachments_action">Viac…</string>
|
||||
<string name="message_view_show_more_attachments_action">Ďalšie…</string>
|
||||
<string name="message_view_fetching_attachment_toast">Načítavanie prílohy.</string>
|
||||
<string name="message_view_no_viewer">Nemožno nájsť prehliadač pre <xliff:g id="mimetype">%s</xliff:g>.</string>
|
||||
<string name="message_view_download_remainder">Stiahnuť kompletnú správu</string>
|
||||
|
@ -297,7 +291,7 @@ Prosím nahlasujte prípadné chyby, prispievajte novými funkciami a pýtajte s
|
|||
|
||||
<string name="from_same_sender">Viac od tohto odosielateľa</string>
|
||||
|
||||
<string name="message_discarded_toast">Správa nebola uložená</string>
|
||||
<string name="message_discarded_toast">Správa bola zahodená</string>
|
||||
<string name="message_saved_toast">Správa bola uložená ako koncept</string>
|
||||
|
||||
<string name="global_settings_flag_label">Zobraziť hviezdičky</string>
|
||||
|
@ -329,22 +323,22 @@ Prosím nahlasujte prípadné chyby, prispievajte novými funkciami a pýtajte s
|
|||
<string name="global_settings_messageview_show_next_summary">Zobraziť ďalšiu správu automaticky po zmazaní správy</string>
|
||||
|
||||
<string name="global_settings_confirm_actions_title">Potvrdzovanie akcií</string>
|
||||
<string name="global_settings_confirm_actions_summary">Zobraziť dialógové okno vždy, keď budete vykonávať vybrané akcie</string>
|
||||
<string name="global_settings_confirm_action_delete">Mazanie (v zobrazení správ)</string>
|
||||
<string name="global_settings_confirm_action_delete_starred">Mazanie správ s hviezdičkou (v zobrazení správ)</string>
|
||||
<string name="global_settings_confirm_actions_summary">Zobraziť dialógové okno pri vykonávaní vybraných akcií</string>
|
||||
<string name="global_settings_confirm_action_delete">Vymazať (v zobrazení správ)</string>
|
||||
<string name="global_settings_confirm_action_delete_starred">Vymazať správy s hviezdičkou (v zobrazení správ)</string>
|
||||
<string name="global_settings_confirm_action_spam">Nevyžiadaná pošta</string>
|
||||
<string name="global_settings_confirm_action_delete_notif">Mazanie (z oznámenia)</string>
|
||||
<string name="global_settings_confirm_action_delete_notif">Vymazať (z oznámenia)</string>
|
||||
|
||||
<string name="global_settings_notification_hide_subject_title">Skryť predmet v oznámeniach</string>
|
||||
<string name="global_settings_notification_hide_subject_title">Skryť predmet v oznámení</string>
|
||||
<string name="global_settings_notification_hide_subject_never">Nikdy</string>
|
||||
<string name="global_settings_notification_hide_subject_when_locked">Pri uzamknutom zariadení</string>
|
||||
<string name="global_settings_notification_hide_subject_always">Vždy</string>
|
||||
|
||||
<string name="global_settings_notification_quick_delete_title">Zobraziť tlačidlo \'Vymazať\'</string>
|
||||
<string name="global_settings_notification_quick_delete_never">Nikdy</string>
|
||||
<string name="global_settings_notification_quick_delete_when_single_msg">Pre zmazanie jednej správy</string>
|
||||
<string name="global_settings_notification_quick_delete_when_single_msg">Pre vymazanie jednej správy</string>
|
||||
<string name="global_settings_notification_quick_delete_always">Vždy</string>
|
||||
<string name="global_settings_notification_quick_delete_description">Zobrazí tlačidlo v oznámení, ktoré umožní rýchle zmazanie správy</string>
|
||||
<string name="global_settings_notification_quick_delete_description">Zobraziť tlačidlo v oznámení pre rýchle vymazanie správy</string>
|
||||
|
||||
<string name="global_settings_batch_buttons">Skupina tlačidiel</string>
|
||||
<string name="global_settings_batch_buttons_summary">Nastavenie skupiny tlačidiel v zozname správ</string>
|
||||
|
@ -356,10 +350,10 @@ Prosím nahlasujte prípadné chyby, prispievajte novými funkciami a pýtajte s
|
|||
<string name="global_settings_flag">Značka</string>
|
||||
<string name="global_settings_unselect">Odznačiť</string>
|
||||
|
||||
<string name="quiet_time">Doba pokoja</string>
|
||||
<string name="quiet_time_description">Zakázať zvonenie, bzučanie a blikanie v noci</string>
|
||||
<string name="quiet_time_starts">Doba pokoja začína o</string>
|
||||
<string name="quiet_time_ends">Doba pokoja končí o</string>
|
||||
<string name="quiet_time">Čas ticha</string>
|
||||
<string name="quiet_time_description">Zakázať vyzváňanie, bzučanie a blikanie v noci</string>
|
||||
<string name="quiet_time_starts">Čas ticha začína o</string>
|
||||
<string name="quiet_time_ends">Čas ticha končí o</string>
|
||||
|
||||
<string name="account_setup_basics_title">Nastaviť nový účet</string>
|
||||
<string name="account_setup_basics_email_hint">E-mailová adresa</string>
|
||||
|
@ -368,40 +362,40 @@ Prosím nahlasujte prípadné chyby, prispievajte novými funkciami a pýtajte s
|
|||
|
||||
<string name="account_setup_check_settings_title"/>
|
||||
<string name="account_setup_check_settings_retr_info_msg">Načítavanie informácií o účte\u2026</string>
|
||||
<string name="account_setup_check_settings_check_incoming_msg">Kontrola nastavení serveru prichádzajúcej pošty\u2026</string>
|
||||
<string name="account_setup_check_settings_check_outgoing_msg">Kontrola nastavení serveru odchádzajúcej pošty\u2026</string>
|
||||
<string name="account_setup_check_settings_check_incoming_msg">Kontrola nastavení servera prichádzajúcej pošty\u2026</string>
|
||||
<string name="account_setup_check_settings_check_outgoing_msg">Kontrola nastavení servera odchádzajúcej pošty\u2026</string>
|
||||
<string name="account_setup_check_settings_authenticate">Overovanie\u2026</string>
|
||||
<string name="account_setup_check_settings_fetch">Načítavanie nastavení účtu\u2026</string>
|
||||
<string name="account_setup_check_settings_canceling_msg">Rušenie\u2026</string>
|
||||
|
||||
<string name="account_setup_names_title">Takmer hotovo!</string>
|
||||
<string name="account_setup_names_account_name_label">Pomenovať tento účet (nepovinné):</string>
|
||||
<string name="account_setup_names_account_name_label">Pomenovať tento účet (voliteľné):</string>
|
||||
<string name="account_setup_names_user_name_label">Zadajte Vaše meno (zobrazí sa v odchádzajúcich správach):</string>
|
||||
|
||||
<string name="account_setup_account_type_title">Typ účtu</string>
|
||||
<string name="account_setup_account_type_instructions">Aký je druh tohto účtu?</string>
|
||||
<string name="account_setup_account_type_instructions">Typ účtu</string>
|
||||
<string name="account_setup_account_type_pop_action">POP3</string>
|
||||
<string name="account_setup_account_type_imap_action">IMAP</string>
|
||||
<string name="account_setup_account_type_webdav_action">Exchange (WebDAV)</string>
|
||||
|
||||
<string name="account_setup_incoming_title">Nastavenia serveru prichádzajúcej pošty</string>
|
||||
<string name="account_setup_incoming_username_label">Užívateľské meno</string>
|
||||
<string name="account_setup_incoming_title">Nastavenia servera prichádzajúcej pošty</string>
|
||||
<string name="account_setup_incoming_username_label">Používateľské meno</string>
|
||||
<string name="account_setup_incoming_password_label">Heslo</string>
|
||||
<string name="account_setup_incoming_pop_server_label">Server POP3</string>
|
||||
<string name="account_setup_incoming_imap_server_label">Server IMAP</string>
|
||||
<string name="account_setup_incoming_webdav_server_label">Server Exchange</string>
|
||||
<string name="account_setup_incoming_port_label">Port</string>
|
||||
<string name="account_setup_incoming_security_label">Zabezpečenie</string>
|
||||
<string name="account_setup_incoming_auth_type_label">Overovanie</string>
|
||||
<string name="account_setup_incoming_auth_type_label">Overenie</string>
|
||||
<string name="account_setup_incoming_security_none_label">Žiadne</string>
|
||||
<string name="account_setup_incoming_security_ssl_optional_label">SSL/TLS (ak je k dispozícii)</string>
|
||||
<string name="account_setup_incoming_security_ssl_label">SSL/TLS (vždy)</string>
|
||||
<string name="account_setup_incoming_security_tls_optional_label">STARTTLS (ak je k dispozícii)</string>
|
||||
<string name="account_setup_incoming_security_tls_label">STARTTLS (vždy)</string>
|
||||
|
||||
<string name="account_setup_incoming_delete_policy_label">Keď zmažem správu</string>
|
||||
<string name="account_setup_incoming_delete_policy_never_label">Nemazať na serveri</string>
|
||||
<string name="account_setup_incoming_delete_policy_delete_label">Zmazať na serveri</string>
|
||||
<string name="account_setup_incoming_delete_policy_label">Akcia po vymazaní správy</string>
|
||||
<string name="account_setup_incoming_delete_policy_never_label">Ponechať na serveri</string>
|
||||
<string name="account_setup_incoming_delete_policy_delete_label">Vymazať na serveri</string>
|
||||
<string name="account_setup_incoming_delete_policy_markread_label">Označiť ako prečítanú na serveri</string>
|
||||
|
||||
<string name="account_setup_incoming_compression_label">Použiť kompresiu na sieti:</string>
|
||||
|
@ -409,12 +403,12 @@ Prosím nahlasujte prípadné chyby, prispievajte novými funkciami a pýtajte s
|
|||
<string name="account_setup_incoming_wifi_label">Wi-Fi</string>
|
||||
<string name="account_setup_incoming_other_label">Iná</string>
|
||||
|
||||
<string name="local_storage_provider_external_label">Externé úložisko (SD karta)</string>
|
||||
<string name="local_storage_provider_external_label">Externé úložisko (Karta SD)</string>
|
||||
<string name="local_storage_provider_internal_label">Interné úložisko</string>
|
||||
<string name="local_storage_provider_samsunggalaxy_label">%1$s prídavné vnútorné úložisko</string>
|
||||
<string name="local_storage_provider_samsunggalaxy_label">%1$s prídavné interné úložisko</string>
|
||||
<string name="local_storage_provider_label">Umiestnenie úložiska</string>
|
||||
|
||||
<string name="account_setup_expunge_policy_label">Odstrániť vymazané správy zo serveru</string>
|
||||
<string name="account_setup_expunge_policy_label">Odstrániť vymazané správy zo servera</string>
|
||||
<string name="account_setup_expunge_policy_immediately">Ihneď</string>
|
||||
<string name="account_setup_expunge_policy_on_poll">Pri synchronizovaní</string>
|
||||
<string name="account_setup_expunge_policy_manual">Ručne</string>
|
||||
|
@ -432,29 +426,29 @@ Prosím nahlasujte prípadné chyby, prispievajte novými funkciami a pýtajte s
|
|||
<string name="account_setup_auto_expand_folder">Automaticky rozbaliť priečinok</string>
|
||||
|
||||
<string name="account_setup_incoming_webdav_path_prefix_label">Cesta OWA</string>
|
||||
<string name="account_setup_incoming_webdav_path_prefix_hint">Nepovinné</string>
|
||||
<string name="account_setup_incoming_webdav_path_prefix_hint">Voliteľné</string>
|
||||
|
||||
<string name="account_setup_incoming_webdav_auth_path_label">Overovacia cesta</string>
|
||||
<string name="account_setup_incoming_webdav_auth_path_hint">Nepovinné</string>
|
||||
<string name="account_setup_incoming_webdav_auth_path_hint">Voliteľné</string>
|
||||
<string name="account_setup_incoming_webdav_mailbox_path_label">Identita schránky</string>
|
||||
<string name="account_setup_incoming_webdav_mailbox_path_hint">Nepovinné</string>
|
||||
<string name="account_setup_incoming_webdav_mailbox_path_hint">Voliteľné</string>
|
||||
|
||||
<string name="account_setup_outgoing_title">Nastavenia serveru odchádzajúcej pošty</string>
|
||||
<string name="account_setup_outgoing_title">Nastavenia servera odchádzajúcej pošty</string>
|
||||
<string name="account_setup_outgoing_smtp_server_label">Server SMTP</string>
|
||||
<string name="account_setup_outgoing_port_label">Port</string>
|
||||
<string name="account_setup_outgoing_security_label">Zabezpečenie</string>
|
||||
<string name="account_setup_outgoing_require_login_label">Vyžadovať prihlásenie</string>
|
||||
<string name="account_setup_outgoing_username_label">Užívateľské meno</string>
|
||||
<string name="account_setup_outgoing_username_label">Používateľské meno</string>
|
||||
<string name="account_setup_outgoing_password_label">Heslo</string>
|
||||
<string name="account_setup_outgoing_authentication_label">Overovanie</string>
|
||||
<string name="account_setup_outgoing_authentication_label">Overenie</string>
|
||||
|
||||
<string name="account_setup_bad_uri">Neplatné nastavenie: <xliff:g id="err_mess">%s</xliff:g></string>
|
||||
|
||||
<string name="account_setup_options_title">Možnosti účtu</string>
|
||||
|
||||
<string name="compact_action">Zmenšiť účet</string>
|
||||
<string name="clear_action">Vyčistiť správy (nebezpečné!)</string>
|
||||
<string name="recreate_action">Obnoviť dáta (posledná možnosť!)</string>
|
||||
<string name="clear_action">Vyčistiť správy (nebezpečné)</string>
|
||||
<string name="recreate_action">Obnoviť dáta (posledná možnosť)</string>
|
||||
|
||||
<string name="account_setup_options_mail_check_frequency_label">Frekvencia synchronizácie priečinkov</string>
|
||||
<!-- Frequency also used in account_settings_* -->
|
||||
|
@ -472,8 +466,8 @@ Prosím nahlasujte prípadné chyby, prispievajte novými funkciami a pýtajte s
|
|||
<string name="account_setup_options_mail_check_frequency_24hour">Každých 24 hodín</string>
|
||||
|
||||
<string name="push_poll_on_connect_label">Synchronizácia pri pripojení pre push</string>
|
||||
<string name="account_setup_options_enable_push_label">Povoliť Push mail pre tento účet</string>
|
||||
<string name="account_setup_options_enable_push_summary">Ak server podporuje Push mail, nové správy sa objavia okamžite. Táto možnosť môže dramaticky zlepšiť alebo poškodiť výkon.</string>
|
||||
<string name="account_setup_options_enable_push_label">Povoliť push poštu pre tento účet</string>
|
||||
<string name="account_setup_options_enable_push_summary">Ak server podporuje push poštu, nové správy sa objavia okamžite. Táto možnosť môže dramaticky zlepšiť alebo poškodiť výkon.</string>
|
||||
<string name="idle_refresh_period_label">Obnoviť pripojenie IDLE</string>
|
||||
<string name="idle_refresh_period_1min">Každú minútu</string>
|
||||
<string name="idle_refresh_period_2min">Každé 2 minúty</string>
|
||||
|
@ -502,7 +496,7 @@ Prosím nahlasujte prípadné chyby, prispievajte novými funkciami a pýtajte s
|
|||
<string name="move_copy_cannot_copy_unsynced_message">Nemožno skopírovať alebo presunúť správu, ktorá nie je synchronizovaná so serverom</string>
|
||||
|
||||
<string name="account_setup_failed_dlg_title">Nastavenie nemohlo byť dokončené</string>
|
||||
<string name="account_setup_failed_dlg_auth_message_fmt">Užívateľské meno alebo heslo je nesprávne.\n(<xliff:g id="error">%s</xliff:g>)</string> <!-- Username or password incorrect\n(ERR01 Account does not exist) -->
|
||||
<string name="account_setup_failed_dlg_auth_message_fmt">Používateľské meno alebo heslo je nesprávne.\n(<xliff:g id="error">%s</xliff:g>)</string> <!-- Username or password incorrect\n(ERR01 Account does not exist) -->
|
||||
<string name="account_setup_failed_dlg_certificate_message_fmt">Nemožno sa bezpečne pripojiť k serveru.\n(<xliff:g id="error">%s</xliff:g>)</string> <!-- Cannot safely connect to server\n(Invalid certificate) -->
|
||||
<string name="account_setup_failed_dlg_server_message_fmt">Nemožno sa pripojiť k serveru.\n(<xliff:g id="error">%s</xliff:g>)</string> <!-- Cannot connect to server\n(Connection timed out) -->
|
||||
<string name="account_setup_failed_dlg_edit_details_action">Upraviť podrobnosti</string>
|
||||
|
@ -512,15 +506,15 @@ Prosím nahlasujte prípadné chyby, prispievajte novými funkciami a pýtajte s
|
|||
<string name="account_settings_title_fmt">Nastavenia účtu</string>
|
||||
<string name="account_settings_default_label">Predvolený účet</string>
|
||||
<string name="account_settings_default_summary">Odosielať e-maily z tohto účtu</string>
|
||||
<string name="account_settings_notify_label">Oznámenia o nových správach</string>
|
||||
<string name="account_settings_notify_sync_label">Synchronizovať oznámenia</string>
|
||||
<string name="account_settings_notify_label">Oznámenie o nových správach</string>
|
||||
<string name="account_settings_notify_sync_label">Oznámenie o synchronizácii</string>
|
||||
<string name="account_settings_email_label">Vaša e-mailová adresa</string>
|
||||
<string name="account_settings_notify_summary">Oznamovať v stavovej lište, keď príde nová pošta</string>
|
||||
<string name="account_settings_notify_sync_summary">Oznamovať v stavovej lište, keď je pošta kontrolovaná</string>
|
||||
<string name="account_settings_notify_self_label">Zahrnúť odchádzajúcu poštu</string>
|
||||
<string name="account_settings_notify_self_summary">Zobraziť oznámenie pre odoslané správy</string>
|
||||
<string name="account_settings_notification_opens_unread_label">Oznámenie otvorí neprečítané správy</string>
|
||||
<string name="account_settings_notification_opens_unread_summary">Zobraziť neprečítané správy, keď je oznámenie otvorené</string>
|
||||
<string name="account_settings_notification_opens_unread_summary">Po otvorení oznámenia zobraziť neprečítané správy</string>
|
||||
<string name="account_settings_notification_unread_count_label">Zobraziť počet neprečítaných</string>
|
||||
<string name="account_settings_notification_unread_count_summary">Zobraziť počet neprečítaných správ v notifikačnej lište</string>
|
||||
<string name="account_settings_mark_message_as_read_on_view_label">Po otvorení označiť ako prečítané</string>
|
||||
|
@ -545,7 +539,7 @@ Prosím nahlasujte prípadné chyby, prispievajte novými funkciami a pýtajte s
|
|||
<string name="account_settings_message_format_label">Formát správy</string>
|
||||
<string name="account_settings_message_format_text">Jednoduchý text (odstrániť obrázky a formátovanie)</string>
|
||||
<string name="account_settings_message_format_html">HTML (ponechať obrázky a formátovanie)</string>
|
||||
<string name="account_settings_message_format_auto">Automaticky</string>
|
||||
<string name="account_settings_message_format_auto">Automatický</string>
|
||||
|
||||
<string name="account_settings_always_show_cc_bcc_label">Vždy zobraziť kópiu/skrytú kópiu</string>
|
||||
|
||||
|
@ -599,19 +593,19 @@ Prosím nahlasujte prípadné chyby, prispievajte novými funkciami a pýtajte s
|
|||
<string name="account_settings_autodownload_message_size_10240">10Mb</string>
|
||||
<string name="account_settings_autodownload_message_size_any">akákoľvek veľkosť (bez obmedzenia)</string>
|
||||
|
||||
<string name="account_settings_message_age_label">Synchronizovať správy za</string>
|
||||
<string name="account_settings_message_age_any">akýkoľvek čas (bez obmedzenia)</string>
|
||||
<string name="account_settings_message_age_0">dnes</string>
|
||||
<string name="account_settings_message_age_1">posledné 2 dni</string>
|
||||
<string name="account_settings_message_age_2">posledné 3 dni</string>
|
||||
<string name="account_settings_message_age_7">posledný týždeň</string>
|
||||
<string name="account_settings_message_age_14">posledné 2 týždne</string>
|
||||
<string name="account_settings_message_age_21">posledné 3 týždne</string>
|
||||
<string name="account_settings_message_age_1_month">posledný mesiac</string>
|
||||
<string name="account_settings_message_age_2_months">posledné 2 mesiace</string>
|
||||
<string name="account_settings_message_age_3_months">posledné 3 mesiace</string>
|
||||
<string name="account_settings_message_age_6_months">posledných 6 mesiacov</string>
|
||||
<string name="account_settings_message_age_1_year">posledný rok</string>
|
||||
<string name="account_settings_message_age_label">Synchronizácia správ</string>
|
||||
<string name="account_settings_message_age_any">Akýkoľvek čas (bez obmedzenia)</string>
|
||||
<string name="account_settings_message_age_0">Dnes</string>
|
||||
<string name="account_settings_message_age_1">Posledné 2 dni</string>
|
||||
<string name="account_settings_message_age_2">Posledné 3 dni</string>
|
||||
<string name="account_settings_message_age_7">Posledný týždeň</string>
|
||||
<string name="account_settings_message_age_14">Posledné 2 týždne</string>
|
||||
<string name="account_settings_message_age_21">Posledné 3 týždne</string>
|
||||
<string name="account_settings_message_age_1_month">Posledný mesiac</string>
|
||||
<string name="account_settings_message_age_2_months">Posledné 2 mesiace</string>
|
||||
<string name="account_settings_message_age_3_months">Posledné 3 mesiace</string>
|
||||
<string name="account_settings_message_age_6_months">Posledných 6 mesiacov</string>
|
||||
<string name="account_settings_message_age_1_year">Posledný rok</string>
|
||||
|
||||
<string name="account_settings_folder_display_mode_label">Priečinky na zobrazenie</string>
|
||||
<string name="account_settings_folder_display_mode_all">Všetky</string>
|
||||
|
@ -670,7 +664,7 @@ Prosím nahlasujte prípadné chyby, prispievajte novými funkciami a pýtajte s
|
|||
<string name="account_settings_outgoing_summary">Nastaviť (SMTP) server odchádzajúcej pošty</string>
|
||||
<string name="account_settings_description_label">Názov účtu</string>
|
||||
<string name="account_settings_name_label">Vaše meno</string>
|
||||
<string name="notifications_title">Oznámenia</string>
|
||||
<string name="notifications_title">Upozornenia</string>
|
||||
<string name="account_settings_vibrate_enable">Vibrovanie</string>
|
||||
<string name="account_settings_vibrate_summary">Vibrovať pri doručení nového e-mailu</string>
|
||||
<string name="account_settings_vibrate_pattern_label">Vzory vibrovania</string>
|
||||
|
@ -681,9 +675,9 @@ Prosím nahlasujte prípadné chyby, prispievajte novými funkciami a pýtajte s
|
|||
<string name="account_settings_vibrate_pattern_4">Vzor 4</string>
|
||||
<string name="account_settings_vibrate_pattern_5">Vzor 5</string>
|
||||
<string name="account_settings_vibrate_times">Opakovať vibrovanie</string>
|
||||
<string name="account_settings_ringtone">Zvonenie pre nový email</string>
|
||||
<string name="account_settings_led_label">LED blikanie</string>
|
||||
<string name="account_settings_led_summary">Blikať LED diódou pri doručení nového e-mailu</string>
|
||||
<string name="account_settings_ringtone">Vyzváňanie pre novä správu</string>
|
||||
<string name="account_settings_led_label">Blikanie LED</string>
|
||||
<string name="account_settings_led_summary">Blikať diódou LED pri doručení novej správy</string>
|
||||
|
||||
<string name="account_settings_composition_title">Možnosti vytvárania správ</string>
|
||||
<string name="account_settings_composition_label">Predvolené vytváranie</string>
|
||||
|
@ -938,7 +932,7 @@ Prosím nahlasujte prípadné chyby, prispievajte novými funkciami a pýtajte s
|
|||
<string name="message_compose_buggy_gallery">Skontrolujte \"Nastavenia\" -> \"Používať riešenie chyby pre Galériu\", aby ste boli schopný pripojiť obrázky alebo videá pomocou Galérie 3D.</string>
|
||||
|
||||
<!-- Note: Contains references to add_attachment_action_image and add_attachment_action_video -->
|
||||
<string name="message_compose_use_workaround">Použite \"Pridať prílohu (obrázok)\" or \"Pridať prílohu (video)\" pre pridanie obrázkov a videí pomocou Galérie 3D.</string>
|
||||
<string name="message_compose_use_workaround">Použite \"Pridať prílohu (obrázok)\" alebo \"Pridať prílohu (video)\" pre pridanie obrázkov a videí pomocou Galérie 3D.</string>
|
||||
|
||||
<string name="miscellaneous_preferences">Rôzne</string>
|
||||
<string name="misc_preferences_attachment_title">Používať riešenie chyby pre Galériu</string>
|
||||
|
@ -960,8 +954,8 @@ Prosím nahlasujte prípadné chyby, prispievajte novými funkciami a pýtajte s
|
|||
<string name="save_or_discard_draft_message_dlg_title">Uložiť koncept správy?</string>
|
||||
<string name="save_or_discard_draft_message_instructions_fmt">Ste si istí, že chcete uložiť túto správu?</string>
|
||||
|
||||
<string name="confirm_discard_draft_message_title">Neukladať správu?</string>
|
||||
<string name="confirm_discard_draft_message">Ste si istí, že nechcete uložiť túto správu?</string>
|
||||
<string name="confirm_discard_draft_message_title">Zahodiť správu?</string>
|
||||
<string name="confirm_discard_draft_message">Ste si istí, že chcete zahodiť túto správu?</string>
|
||||
|
||||
<string name="refuse_to_save_draft_marked_encrypted_dlg_title">Odmietnuť uloženie konceptu správy.</string>
|
||||
<string name="refuse_to_save_draft_marked_encrypted_instructions_fmt">Odmietnuť uloženie konceptu zašifrovanej správy.</string>
|
||||
|
@ -969,10 +963,10 @@ Prosím nahlasujte prípadné chyby, prispievajte novými funkciami a pýtajte s
|
|||
<string name="continue_without_public_key_dlg_title">Pokračovať bez verejného kľúča?</string>
|
||||
<string name="continue_without_public_key_instructions_fmt">Jeden alebo viacerí príjemcovia nemajú uložený verejný kľúč. Pokračovať?</string>
|
||||
|
||||
<string name="select_text_now">Vyberte text pre skopírovanie.</string>
|
||||
<string name="select_text_now">Vyberte text na kopírovanie.</string>
|
||||
|
||||
<string name="dialog_confirm_delete_title">Potvrdiť zmazanie</string>
|
||||
<string name="dialog_confirm_delete_message">Chcete odstrániť túto správu?</string>
|
||||
<string name="dialog_confirm_delete_title">Potvrdiť vymazanie</string>
|
||||
<string name="dialog_confirm_delete_message">Chcete vymazať túto správu?</string>
|
||||
|
||||
<!--
|
||||
Translators:
|
||||
|
@ -985,7 +979,7 @@ Prosím nahlasujte prípadné chyby, prispievajte novými funkciami a pýtajte s
|
|||
(1) http://developer.android.com/guide/topics/resources/string-resource.html#Plurals
|
||||
|
||||
-->
|
||||
<plurals name="dialog_confirm_delete_message">
|
||||
<plurals name="dialog_confirm_delete_messages">
|
||||
<item quantity="one">Vymazať túto správu?</item>
|
||||
<item quantity="few">Vymmazať <xliff:g id="message_count">%1$d</xliff:g> správy?</item>
|
||||
<item quantity="other">Vymazať <xliff:g id="message_count">%1$d</xliff:g> správ?</item>
|
||||
|
@ -1024,7 +1018,7 @@ Prosím nahlasujte prípadné chyby, prispievajte novými funkciami a pýtajte s
|
|||
<string name="settings_export_success">Exportované nastavenia boli uložené do <xliff:g id="filename">%s</xliff:g></string>
|
||||
<string name="settings_import_global_settings_success">Importované všeobecné nastavenia z <xliff:g id="filename">%s</xliff:g></string>
|
||||
<string name="settings_import_success">Importované: <xliff:g id="accounts">%s</xliff:g> z <xliff:g id="filename">%s</xliff:g></string>
|
||||
<plurals name="settings_import_success">
|
||||
<plurals name="settings_import_accounts">
|
||||
<item quantity="one">1 účet</item>
|
||||
<item quantity="few"><xliff:g id="numAccounts">%s</xliff:g> účty</item>
|
||||
<item quantity="other"><xliff:g id="numAccounts">%s</xliff:g> účtov</item>
|
||||
|
@ -1036,7 +1030,7 @@ Prosím nahlasujte prípadné chyby, prispievajte novými funkciami a pýtajte s
|
|||
<string name="settings_import_success_header">Import bol úspešný</string>
|
||||
<string name="settings_import_failed_header">Import sa nepodaril</string>
|
||||
<string name="settings_import_activate_account_header">Aktivovať účet</string>
|
||||
<string name="settings_import_activate_account_intro">Pre používanie účtu \"<xliff:g id="account">%s</xliff:g>" je potrebné poskytnúť <xliff:g id="server_passwords">%s</xliff:g>.</string>
|
||||
<string name="settings_import_activate_account_intro">Pre používanie účtu \"<xliff:g id="account">%s</xliff:g>\" je potrebné poskytnúť <xliff:g id="server_passwords">%s</xliff:g>.</string>
|
||||
<plurals name="settings_import_server_passwords">
|
||||
<item quantity="one">heslo</item>
|
||||
<item quantity="few">heslá</item>
|
||||
|
@ -1080,10 +1074,10 @@ Prosím nahlasujte prípadné chyby, prispievajte novými funkciami a pýtajte s
|
|||
<string name="webview_contextmenu_image_copy_action">Skopírovať URL do schránky</string>
|
||||
<string name="webview_contextmenu_image_clipboard_label">URL adresa obrázka</string>
|
||||
|
||||
<string name="webview_contextmenu_phone_call_action">Volať číslo</string>
|
||||
<string name="webview_contextmenu_phone_call_action">Vytočiť číslo</string>
|
||||
<string name="webview_contextmenu_phone_save_action">Uložiť do kontaktov</string>
|
||||
<string name="webview_contextmenu_phone_copy_action">Skopírovať číslo do schránky</string>
|
||||
<string name="webview_contextmenu_phone_clipboard_label">Telefónne čáslo</string>
|
||||
<string name="webview_contextmenu_phone_clipboard_label">Telefónne číslo</string>
|
||||
|
||||
<string name="webview_contextmenu_email_send_action">Odoslať správu</string>
|
||||
<string name="webview_contextmenu_email_save_action">Uložiť do kontaktov</string>
|
||||
|
@ -1110,10 +1104,10 @@ Prosím nahlasujte prípadné chyby, prispievajte novými funkciami a pýtajte s
|
|||
<string name="remote_search_downloading_limited">Načítavanie %1$d z %2$d výsledkov</string>
|
||||
<string name="remote_search_error">Vzdialené vyhľadávanie sa nepodarilo</string>
|
||||
|
||||
<string name="account_settings_search">Hľadanie</string>
|
||||
<string name="account_settings_search">Vyhľadávanie</string>
|
||||
<string name="account_settings_remote_search_enabled">Povoliť vyhľadávanie na serveri</string>
|
||||
<string name="account_settings_remote_search_enabled_summary">Hľadať správy na serveri, okrem tých na Vašom zariadení</string>
|
||||
<string name="action_remote_search">Hľadať správy na serveri</string>
|
||||
<string name="action_remote_search">Vyhľadávať správy na serveri</string>
|
||||
<string name="pull_to_refresh_remote_search_from_local_search_pull">Potiahnite pre vyhľadávanie na serveri…</string>
|
||||
<string name="pull_to_refresh_remote_search_from_local_search_release">Uvoľnite pre vyhľadávanie na serveri…</string>
|
||||
<string name="remote_search_unavailable_no_network">Pripojenie k sieti je nevyhnutné pre vzdialené vyhľadávanie.</string>
|
||||
|
@ -1125,8 +1119,8 @@ Prosím nahlasujte prípadné chyby, prispievajte novými funkciami a pýtajte s
|
|||
<string name="global_settings_threaded_view_summary">Zoskupiť správy podľa konverzácie</string>
|
||||
|
||||
<string name="upgrade_databases_title">Aktualizácia databáz</string>
|
||||
<string name="upgrade_databases_unspecified">Aktualizovanie databáz…</string>
|
||||
<string name="upgrade_database_format">Aktualizujem databázu pre účet \"<xliff:g id="account">%s</xliff:g>\"</string>
|
||||
<string name="upgrade_databases_unspecified">Aktualizácia databáz…</string>
|
||||
<string name="upgrade_database_format">Aktualizácia databázy pre účet \"<xliff:g id="account">%s</xliff:g>\"</string>
|
||||
|
||||
<string name="message_list_loading">Načítavanie…</string>
|
||||
|
||||
|
@ -1135,7 +1129,7 @@ Prosím nahlasujte prípadné chyby, prispievajte novými funkciami a pýtajte s
|
|||
<string name="global_settings_splitview_never">Nikdy</string>
|
||||
<string name="global_settings_splitview_when_in_landscape">Iba v orientácii obrazovky na šírku</string>
|
||||
|
||||
<string name="message_view_empty">Prosím vyberte správu vľavo</string>
|
||||
<string name="message_view_empty">Prosím, vyberte správu vľavo</string>
|
||||
|
||||
<string name="global_settings_show_contact_picture_label">Zobraziť obrázky kontaktov</string>
|
||||
<string name="global_settings_show_contact_picture_summary">Zobraziť obrázky kontaktov v zozname správ</string>
|
||||
|
|
|
@ -196,12 +196,7 @@ Vänligen skicka felrapporter, hjälp till med nya funktioner och ställ frågor
|
|||
<string name="abbrev_kilobytes">KB</string>
|
||||
<string name="abbrev_bytes">B</string>
|
||||
|
||||
<string name="account_size_changed">
|
||||
Kontot \"<xliff:g id="account">%s</xliff:g>\" har krympt från
|
||||
<xliff:g id="oldSize">%s</xliff:g>
|
||||
till
|
||||
<xliff:g id="newSize">%s</xliff:g>
|
||||
</string>
|
||||
<string name="account_size_changed">Kontot \"<xliff:g id="account">%s</xliff:g>\" har krympt från <xliff:g id="oldSize">%s</xliff:g> till <xliff:g id="newSize">%s</xliff:g></string>
|
||||
|
||||
<string name="compacting_account">Komprimerar konto \"<xliff:g id="account">%s</xliff:g>\"</string>
|
||||
<string name="clearing_account">Rensar konto \"<xliff:g id="account">%s</xliff:g>\"</string>
|
||||
|
@ -985,7 +980,7 @@ Vänligen skicka felrapporter, hjälp till med nya funktioner och ställ frågor
|
|||
(1) http://developer.android.com/guide/topics/resources/string-resource.html#Plurals
|
||||
|
||||
-->
|
||||
<plurals name="dialog_confirm_delete_message">
|
||||
<plurals name="dialog_confirm_delete_messages">
|
||||
<item quantity="one">Vill du verkligen radera detta meddelande?</item>
|
||||
<item quantity="other">Vill du verkligen radera <xliff:g id="message_count">%1$d</xliff:g> meddelanden?</item>
|
||||
</plurals>
|
||||
|
@ -1022,7 +1017,7 @@ Vänligen skicka felrapporter, hjälp till med nya funktioner och ställ frågor
|
|||
<string name="settings_export_success">Sparade exporterade inställningar till <xliff:g id="filename">%s</xliff:g></string>
|
||||
<string name="settings_import_global_settings_success">Importerade globala inställningar från <xliff:g id="filename">%s</xliff:g></string>
|
||||
<string name="settings_import_success">Importerade <xliff:g id="accounts">%s</xliff:g> från <xliff:g id="filename">%s</xliff:g></string>
|
||||
<plurals name="settings_import_success">
|
||||
<plurals name="settings_import_accounts">
|
||||
<item quantity="one">1 konto</item>
|
||||
<item quantity="other"><xliff:g id="numAccounts">%s</xliff:g> konton</item>
|
||||
</plurals>
|
||||
|
|
|
@ -188,20 +188,14 @@ Lütfen hata raporlarınızı, istediğiniz yeni özellikleri ve sorularınızı
|
|||
|
||||
<string name="status_loading_more_failed">Birden fazla mesaj yüklemeyi deniyor</string>
|
||||
|
||||
<string name="load_more_messages_fmt">Boyuta kadar yükle
|
||||
<xliff:g id="messages_to_load">%d</xliff:g> daha fazla</string>
|
||||
<string name="load_more_messages_fmt">Boyuta kadar yükle <xliff:g id="messages_to_load">%d</xliff:g> daha fazla</string>
|
||||
|
||||
<string name="abbrev_gigabytes">GB</string>
|
||||
<string name="abbrev_megabytes">MB</string>
|
||||
<string name="abbrev_kilobytes">KB</string>
|
||||
<string name="abbrev_bytes">B</string>
|
||||
|
||||
<string name="account_size_changed">
|
||||
\"<xliff:g id="account">%s</xliff:g>\" hesabı
|
||||
<xliff:g id="oldSize">%s</xliff:g>
|
||||
den
|
||||
<xliff:g id="newSize">%s</xliff:g>\'e küçüldü
|
||||
</string>
|
||||
<string name="account_size_changed">\"<xliff:g id="account">%s</xliff:g>\" hesabı <xliff:g id="oldSize">%s</xliff:g> den <xliff:g id="newSize">%s</xliff:g>\'e küçüldü</string>
|
||||
|
||||
<string name="compacting_account">Hesap sıkıştırma \"<xliff:g id="account">%s</xliff:g>\"</string>
|
||||
<string name="clearing_account">Hesap temizleme \"<xliff:g id="account">%s</xliff:g>\"</string>
|
||||
|
@ -1024,7 +1018,7 @@ Lütfen hata raporlarınızı, istediğiniz yeni özellikleri ve sorularınızı
|
|||
<string name="settings_export_success">Dışarı aktarılan ayarlar <xliff:g id="filename">%s</xliff:g> olarak kaydedildi.</string>
|
||||
<string name="settings_import_global_settings_success">Genel ayarlar <xliff:g id="filename">%s</xliff:g> dosyasından alındı</string>
|
||||
<string name="settings_import_success"><xliff:g id="accounts">%s</xliff:g>, <xliff:g id="filename">%s</xliff:g> dosyasından alındı</string>
|
||||
<plurals name="settings_import_success">
|
||||
<plurals name="settings_import_accounts">
|
||||
<item quantity="one">1 hesap</item>
|
||||
<item quantity="other"><xliff:g id="numAccounts">%s</xliff:g> hesap</item>
|
||||
</plurals>
|
||||
|
|
|
@ -163,7 +163,7 @@ K-9 Mail це поштовий клієнт з відкритим вихідни
|
|||
<!-- NEW: <string name="message_view_theme_action_dark">Switch to dark theme</string>-->
|
||||
<!-- NEW: <string name="message_view_theme_action_light">Switch to light theme</string>-->
|
||||
|
||||
<string name="mark_as_unread_action">Відмітити як прочитаний</string>
|
||||
<string name="mark_as_unread_action">Відмітити як непрочитаний</string>
|
||||
<string name="add_cc_bcc_action">Додати копію/приховану</string>
|
||||
<string name="read_receipt">Повідомлення про прочитання</string>
|
||||
<string name="read_receipt_enabled">Включити запит повідомлень про прочитання</string>
|
||||
|
@ -188,20 +188,14 @@ K-9 Mail це поштовий клієнт з відкритим вихідни
|
|||
|
||||
<string name="status_loading_more_failed">Спробуйте ще раз завантажити повідомлення</string>
|
||||
|
||||
<string name="load_more_messages_fmt">Завантажити ще
|
||||
<xliff:g id="messages_to_load">%d</xliff:g> </string>
|
||||
<string name="load_more_messages_fmt">Завантажити ще <xliff:g id="messages_to_load">%d</xliff:g> </string>
|
||||
|
||||
<string name="abbrev_gigabytes">ГБ</string>
|
||||
<string name="abbrev_megabytes">МБ</string>
|
||||
<string name="abbrev_kilobytes">кБ</string>
|
||||
<string name="abbrev_bytes">Б</string>
|
||||
|
||||
<string name="account_size_changed">
|
||||
Розмір \"<xliff:g id="account">%s</xliff:g>\" зменшився від
|
||||
<xliff:g id="oldSize">%s</xliff:g>
|
||||
до
|
||||
<xliff:g id="newSize">%s</xliff:g>
|
||||
</string>
|
||||
<string name="account_size_changed">Розмір \"<xliff:g id="account">%s</xliff:g>\" зменшився від <xliff:g id="oldSize">%s</xliff:g> до <xliff:g id="newSize">%s</xliff:g></string>
|
||||
|
||||
<string name="compacting_account">Стискання скриньки \"<xliff:g id="account">%s</xliff:g>\"</string>
|
||||
<string name="clearing_account">Очищення скриньки \"<xliff:g id="account">%s</xliff:g>\"</string>
|
||||
|
@ -1024,7 +1018,7 @@ K-9 Mail це поштовий клієнт з відкритим вихідни
|
|||
<string name="settings_export_success">Налаштування були експортовані у <xliff:g id="filename">%s</xliff:g></string>
|
||||
<string name="settings_import_global_settings_success">Глобальні налаштування були імпортовані з <xliff:g id="filename">%s</xliff:g></string>
|
||||
<string name="settings_import_success">Імпортовано <xliff:g id="accounts">%s</xliff:g> з <xliff:g id="filename">%s</xliff:g></string>
|
||||
<plurals name="settings_import_success">
|
||||
<plurals name="settings_import_accounts">
|
||||
<item quantity="one">1 обліковий запис</item>
|
||||
<item quantity="few"><xliff:g id="numAccounts">%s</xliff:g> облікові записи</item>
|
||||
<item quantity="other"><xliff:g id="numAccounts">%s</xliff:g> облікових записів</item>
|
||||
|
|
|
@ -1017,7 +1017,7 @@ K-9改进的功能包括:
|
|||
<string name="settings_export_success">设置已导出到<xliff:g id="filename">%s</xliff:g></string>
|
||||
<string name="settings_import_global_settings_success">全局设置已自<xliff:g id="filename">%s</xliff:g>导入</string>
|
||||
<string name="settings_import_success">账户<xliff:g id="accounts">%s</xliff:g>已自<xliff:g id="filename">%s</xliff:g>导入</string>
|
||||
<plurals name="settings_import_success">
|
||||
<plurals name="settings_import_accounts">
|
||||
<item quantity="one">单个账户</item>
|
||||
<item quantity="other"><xliff:g id="numAccounts">%s</xliff:g> 账户</item>
|
||||
</plurals>
|
||||
|
|
|
@ -948,7 +948,7 @@
|
|||
(1) http://developer.android.com/guide/topics/resources/string-resource.html#Plurals
|
||||
|
||||
-->
|
||||
<plurals name="dialog_confirm_delete_message">
|
||||
<plurals name="dialog_confirm_delete_messages">
|
||||
<item quantity="other">確定要刪除 %1$d 則訊息?</item>
|
||||
<item quantity="one">確定要刪除此訊息?</item>
|
||||
</plurals>
|
||||
|
@ -985,7 +985,7 @@
|
|||
<string name="settings_export_success">匯出的設定檔案已經儲存到 %s</string>
|
||||
<string name="settings_import_global_settings_success">從 %s 匯入全域設定檔案</string>
|
||||
<string name="settings_import_success" formatted="false">成功匯入 %s 從 %s</string>
|
||||
<plurals name="settings_import_success">
|
||||
<plurals name="settings_import_accounts">
|
||||
<item quantity="other">%s 帳號</item>
|
||||
<item quantity="one">1 帳號</item>
|
||||
</plurals>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<!--
|
||||
When removing strings from the main file, please cleanup the translations.
|
||||
The script tools/sync_translation.py will get rid of any surplus strings.
|
||||
|
@ -201,12 +201,7 @@ Please submit bug reports, contribute new features and ask questions at
|
|||
<string name="abbrev_kilobytes">KB</string>
|
||||
<string name="abbrev_bytes">B</string>
|
||||
|
||||
<string name="account_size_changed">
|
||||
Account \"<xliff:g id="account">%s</xliff:g>\" shrunk from
|
||||
<xliff:g id="oldSize">%s</xliff:g>
|
||||
to
|
||||
<xliff:g id="newSize">%s</xliff:g>
|
||||
</string>
|
||||
<string name="account_size_changed">Account \"<xliff:g id="account">%s</xliff:g>\" shrunk from <xliff:g id="oldSize">%s</xliff:g> to <xliff:g id="newSize">%s</xliff:g></string>
|
||||
|
||||
<string name="compacting_account">Compacting account \"<xliff:g id="account">%s</xliff:g>\"</string>
|
||||
<string name="clearing_account">Clearing account \"<xliff:g id="account">%s</xliff:g>\"</string>
|
||||
|
@ -269,6 +264,7 @@ Please submit bug reports, contribute new features and ask questions at
|
|||
<string name="message_compose_quote_header_to">To:</string>
|
||||
<string name="message_compose_quote_header_cc">Cc:</string>
|
||||
<string name="message_compose_reply_header_fmt"><xliff:g id="sender">%s</xliff:g> wrote:</string>
|
||||
<string name="message_compose_reply_header_fmt_with_date">On <xliff:g id="sent_date">%1$s</xliff:g>, <xliff:g id="sender">%2$s</xliff:g> wrote:</string>
|
||||
<string name="message_compose_error_no_recipients">You must add at least one recipient.</string>
|
||||
<string name="error_contact_address_not_found">No email address could be found for this contact.</string>
|
||||
<string name="message_compose_attachments_skipped_toast">Some attachments cannot be forwarded because they have not been downloaded.</string>
|
||||
|
@ -289,7 +285,7 @@ Please submit bug reports, contribute new features and ask questions at
|
|||
<string name="message_view_show_pictures_action">Show pictures</string>
|
||||
<string name="message_view_show_message_action">Show message</string>
|
||||
<string name="message_view_show_attachments_action">Show attachments</string>
|
||||
<string name="message_view_show_more_attachments_action">More…</string>
|
||||
<string name="message_view_show_more_attachments_action">More…</string>
|
||||
<string name="message_view_fetching_attachment_toast">Fetching attachment.</string>
|
||||
<string name="message_view_no_viewer">Unable to find viewer for <xliff:g id="mimetype">%s</xliff:g>.</string>
|
||||
<string name="message_view_download_remainder">Download complete message</string>
|
||||
|
@ -371,7 +367,7 @@ Please submit bug reports, contribute new features and ask questions at
|
|||
<string name="account_setup_basics_password_hint">Password</string>
|
||||
<string name="account_setup_basics_manual_setup_action">Manual setup</string>
|
||||
|
||||
<string name="account_setup_check_settings_title"></string>
|
||||
<string name="account_setup_check_settings_title"/>
|
||||
<string name="account_setup_check_settings_retr_info_msg">Retrieving account information\u2026</string>
|
||||
<string name="account_setup_check_settings_check_incoming_msg">Checking incoming server settings\u2026</string>
|
||||
<string name="account_setup_check_settings_check_outgoing_msg">Checking outgoing server settings\u2026</string>
|
||||
|
@ -990,7 +986,7 @@ Please submit bug reports, contribute new features and ask questions at
|
|||
(1) http://developer.android.com/guide/topics/resources/string-resource.html#Plurals
|
||||
|
||||
-->
|
||||
<plurals name="dialog_confirm_delete_message">
|
||||
<plurals name="dialog_confirm_delete_messages">
|
||||
<item quantity="one">Do you really want to delete this message?</item>
|
||||
<item quantity="other">Do you really want to delete <xliff:g id="message_count">%1$d</xliff:g> messages?</item>
|
||||
</plurals>
|
||||
|
@ -1027,7 +1023,7 @@ Please submit bug reports, contribute new features and ask questions at
|
|||
<string name="settings_export_success">Saved exported settings to <xliff:g id="filename">%s</xliff:g></string>
|
||||
<string name="settings_import_global_settings_success">Imported global settings from <xliff:g id="filename">%s</xliff:g></string>
|
||||
<string name="settings_import_success">Imported <xliff:g id="accounts">%s</xliff:g> from <xliff:g id="filename">%s</xliff:g></string>
|
||||
<plurals name="settings_import_success">
|
||||
<plurals name="settings_import_accounts">
|
||||
<item quantity="one">1 account</item>
|
||||
<item quantity="other"><xliff:g id="numAccounts">%s</xliff:g> accounts</item>
|
||||
</plurals>
|
||||
|
|
|
@ -1,5 +1,21 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<changelog>
|
||||
<release version="4.801" versioncode="20002" >
|
||||
<change>KitKatでの設定をインポートする際のバグを修正しました</change>
|
||||
<change>'メッセージサイズ自動調整'オプションをチェックした時に空のメッセージが表示される問題を修正しました</change>
|
||||
</release>
|
||||
<release version="4.800" versioncode="20001" >
|
||||
<change>これはKitKatデバイスでよりよく振る舞うべくリリースされました。古いデバイスで動く4.8のバージョンはすぐに現れなければなりません</change>
|
||||
</release>
|
||||
<release version="4.701" versioncode="19002" >
|
||||
<change>KitKatでの問題を修正するためにメッセージビューのスクロールの仕方を見直しました。ありがとう Joe Steele!</change>
|
||||
<change>TLS暗号スイートとバージョンを堅牢にしました</change>
|
||||
<change>引用テキストがない場合に不要な空行を追加しないようにしました</change>
|
||||
<change>メッセージの下書きに関連するいくつかの問題を修正しました</change>
|
||||
<change>アカウントを削除した時に古いデータの削除を改善しました</change>
|
||||
<change>KitKatのバグを一時的に回避するため設定のインポートを停止しました</change>
|
||||
<change>ドイツ語、ギリシャ語、日本語、韓国語、リトアニア語、ポルトガル語、ロシア語そしてスロバキア語の翻訳を更新しました</change>
|
||||
</release>
|
||||
<release version="4.700" versioncode="19001" >
|
||||
<change>コードをきれいにしました</change>
|
||||
<change>ドラフトメッセージが送信されてしまうバグを修正しました</change>
|
||||
|
|
|
@ -8,6 +8,44 @@
|
|||
They are automatically updated with "ant bump-version".
|
||||
-->
|
||||
<changelog>
|
||||
<release version="4.804" versioncode="20005" >
|
||||
<change>Fixed a bug with IMAP Push that could cause excessive battery drain</change>
|
||||
<change>Exclude error folder from unread/starred count</change>
|
||||
<change>Avoid adding the same recipient twice when using "reply to all"</change>
|
||||
<change>Improved compatibility with IMAP (proxy) servers</change>
|
||||
<change>Improved support for non-standard conform "share" functionality used by some apps</change>
|
||||
<change>Another attempt at working around the display bug on Asus Transformer devices</change>
|
||||
<change>Added mailbox.org to the list of providers</change>
|
||||
<change>More bug fixes</change>
|
||||
</release>
|
||||
<release version="4.803" versioncode="20004" >
|
||||
<change>Removed the work-around for the display bug on Asus Transformer devices introduced in v4.802 because it was causing problems</change>
|
||||
<change>K-9 Mail now uses a locale-specific date in the header of a quoted message</change>
|
||||
<change>Fixed bug where inline images where not showing in KitKat</change>
|
||||
<change>Fixed POP3 STLS command</change>
|
||||
<change>Added auto-configuration settings for some providers</change>
|
||||
<change>Updated Dutch, Spanish, Danish, Slovak, Russian translation</change>
|
||||
<change>More bug fixes</change>
|
||||
</release>
|
||||
<release version="4.802" versioncode="20003" >
|
||||
<change>Added work-around for a display bug on Asus Transformer devices</change>
|
||||
<change>Improved certificate validation. If you had to manually accept a certificate before you will have to do it again after this update.</change>
|
||||
<change>Re-added support for SSLv3; fixed SSL-related problems with Android 2.2</change>
|
||||
<change>Also use SSL/TLS hardening for STARTTLS connections</change>
|
||||
<change>Added support for Bitcoin-URIs</change>
|
||||
<change>Added higher resolution app icon</change>
|
||||
<change>Added support for non-standard conforming servers when looking for "Drafts" folder</change>
|
||||
<change>Added auto-configuration settings for some providers</change>
|
||||
<change>Fixed color generation for contact picture placeholders</change>
|
||||
<change>Updated Japanese, Polish, Czech, Russian, Greek, Hungarian, Dutch, Ukrainian, Brazilian Portuguese, French translations</change>
|
||||
</release>
|
||||
<release version="4.801" versioncode="20002" >
|
||||
<change>Further bugfixes for importing settings on KitKat</change>
|
||||
<change>First pass at a fix for blank messages showing up when the 'Auto-fit messages' option is checked</change>
|
||||
</release>
|
||||
<release version="4.800" versioncode="20001" >
|
||||
<change>This release should behave better on KitKat devices. A version of 4.8 that runs on older devices should appear shortly.</change>
|
||||
</release>
|
||||
<release version="4.701" versioncode="19002" >
|
||||
<change>Overhauled how we do message view scrolling to fix a KitKat issue. Thanks to Joe Steele!</change>
|
||||
<change>Hardened TLS cipher suites and versions</change>
|
||||
|
|
|
@ -215,38 +215,46 @@
|
|||
</provider>
|
||||
|
||||
<!-- Germany -->
|
||||
<provider id="mailbox.org" label="mailbox.org" domain="mailbox.org">
|
||||
<incoming uri="imap+tls+://imap.mailbox.org" username="$email" />
|
||||
<outgoing uri="smtp+tls+://smtp.mailbox.org" username="$email" />
|
||||
</provider>
|
||||
<provider id="freenet" label="Freenet" domain="freenet.de">
|
||||
<incoming uri="pop3://mx.freenet.de" username="$user" />
|
||||
<outgoing uri="smtp+ssl://mx.freenet.de" username="$email" />
|
||||
<incoming uri="imap+tls+://mx.freenet.de" username="$email" />
|
||||
<outgoing uri="smtp+tls+://mx.freenet.de" username="$email" />
|
||||
</provider>
|
||||
<provider id="T-Online" label="T-Online" domain="t-online.de">
|
||||
<incoming uri="pop3://popmail.t-online.de" username="$email" />
|
||||
<outgoing uri="smtp://smtpmail.t-online.de" username="$email" />
|
||||
<incoming uri="imap+ssl+://secureimap.t-online.de" username="$email" />
|
||||
<outgoing uri="smtp+tls+://securesmtp.t-online.de" username="$email" />
|
||||
</provider>
|
||||
<provider id="web.de" label="Web.de" domain="web.de">
|
||||
<incoming uri="imap+ssl://imap.web.de" username="$user" />
|
||||
<outgoing uri="smtp://smtp.web.de" username="$user" />
|
||||
<incoming uri="imap+ssl+://imap.web.de" username="$user" />
|
||||
<outgoing uri="smtp+tls+://smtp.web.de" username="$user" />
|
||||
</provider>
|
||||
<provider id="posteo" label="Posteo" domain="posteo.de">
|
||||
<incoming uri="imap+tls+://posteo.de" username="$email" />
|
||||
<outgoing uri="smtp+tls+://posteo.de" username="$email" />
|
||||
</provider>
|
||||
<!-- GMX variants -->
|
||||
<provider id="gmx.net" label="GMX.net" domain="gmx.net">
|
||||
<incoming uri="imap+ssl+://imap.gmx.net" username="$email" />
|
||||
<outgoing uri="smtp+ssl+://mail.gmx.net" username="$email" />
|
||||
<outgoing uri="smtp+tls+://mail.gmx.net" username="$email" />
|
||||
</provider>
|
||||
<provider id="gmx.de" label="GMX.de" domain="gmx.de">
|
||||
<incoming uri="imap+ssl+://imap.gmx.net" username="$email" />
|
||||
<outgoing uri="smtp+ssl+://mail.gmx.net" username="$email" />
|
||||
<outgoing uri="smtp+tls+://mail.gmx.net" username="$email" />
|
||||
</provider>
|
||||
<provider id="gmx.at" label="GMX.at" domain="gmx.at">
|
||||
<incoming uri="imap+ssl+://imap.gmx.net" username="$email" />
|
||||
<outgoing uri="smtp+ssl+://mail.gmx.net" username="$email" />
|
||||
<outgoing uri="smtp+tls+://mail.gmx.net" username="$email" />
|
||||
</provider>
|
||||
<provider id="gmx.ch" label="GMX.ch" domain="gmx.ch">
|
||||
<incoming uri="imap+ssl+://imap.gmx.net" username="$email" />
|
||||
<outgoing uri="smtp+ssl+://mail.gmx.net" username="$email" />
|
||||
<outgoing uri="smtp+tls+://mail.gmx.net" username="$email" />
|
||||
</provider>
|
||||
<provider id="gmx.eu" label="GMX.eu" domain="gmx.eu">
|
||||
<incoming uri="imap+ssl+://imap.gmx.net" username="$email" />
|
||||
<outgoing uri="smtp+ssl+://mail.gmx.net" username="$email" />
|
||||
<outgoing uri="smtp+tls+://mail.gmx.net" username="$email" />
|
||||
</provider>
|
||||
|
||||
<!-- Netherlands -->
|
||||
|
@ -517,7 +525,17 @@
|
|||
<incoming uri="pop3://pop.safebox.ru" username="$email" />
|
||||
<outgoing uri="smtp://smtp.safebox.ru:2525" username="$email" />
|
||||
</provider>
|
||||
|
||||
|
||||
<!-- Slovakia -->
|
||||
<provider id="azet.sk" label="Azet.sk" domain="azet.sk">
|
||||
<incoming uri="imap+ssl+://imap.azet.sk" username="$email" />
|
||||
<outgoing uri="smtp+ssl+://smtp.azet.sk" username="$email" />
|
||||
</provider>
|
||||
<provider id="outlook.sk" label="Outlook.sk" domain="outlook.sk">
|
||||
<incoming uri="imap+ssl+://imap-mail.outlook.com" username="$email" />
|
||||
<outgoing uri="smtp+tls+://smtp-mail.outlook.com" username="$email" />
|
||||
</provider>
|
||||
|
||||
<!-- Developers' vanity providers -->
|
||||
<provider id="fsck.com" label="Jesse's personal mail" domain="fsck.com" >
|
||||
<incoming uri="imap+ssl://fsck.com" username="$user" />
|
||||
|
|
|
@ -1,16 +1,18 @@
|
|||
|
||||
package com.fsck.k9;
|
||||
|
||||
import java.security.cert.CertificateException;
|
||||
import java.security.cert.X509Certificate;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Calendar;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
import java.util.HashMap;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import android.content.ContentResolver;
|
||||
|
@ -22,13 +24,14 @@ import android.net.ConnectivityManager;
|
|||
import android.net.Uri;
|
||||
import android.util.Log;
|
||||
|
||||
import com.fsck.k9.activity.setup.AccountSetupCheckSettings.CheckDirection;
|
||||
import com.fsck.k9.crypto.Apg;
|
||||
import com.fsck.k9.crypto.CryptoProvider;
|
||||
import com.fsck.k9.helper.Utility;
|
||||
import com.fsck.k9.mail.Address;
|
||||
import com.fsck.k9.mail.Folder.FolderClass;
|
||||
import com.fsck.k9.mail.MessagingException;
|
||||
import com.fsck.k9.mail.Store;
|
||||
import com.fsck.k9.mail.Folder.FolderClass;
|
||||
import com.fsck.k9.mail.store.LocalStore;
|
||||
import com.fsck.k9.mail.store.StorageManager;
|
||||
import com.fsck.k9.mail.store.StorageManager.StorageProvider;
|
||||
|
@ -36,10 +39,11 @@ import com.fsck.k9.provider.EmailProvider;
|
|||
import com.fsck.k9.provider.EmailProvider.StatsColumns;
|
||||
import com.fsck.k9.search.ConditionsTreeNode;
|
||||
import com.fsck.k9.search.LocalSearch;
|
||||
import com.fsck.k9.search.SqlQueryBuilder;
|
||||
import com.fsck.k9.search.SearchSpecification.Attribute;
|
||||
import com.fsck.k9.search.SearchSpecification.SearchCondition;
|
||||
import com.fsck.k9.search.SearchSpecification.Searchfield;
|
||||
import com.fsck.k9.search.SqlQueryBuilder;
|
||||
import com.fsck.k9.security.LocalKeyStore;
|
||||
import com.fsck.k9.view.ColorChip;
|
||||
import com.larswerkman.colorpicker.ColorPicker;
|
||||
|
||||
|
@ -525,7 +529,6 @@ public class Account implements BaseAccount {
|
|||
}
|
||||
|
||||
editor.remove(mUuid + ".storeUri");
|
||||
editor.remove(mUuid + ".localStoreUri");
|
||||
editor.remove(mUuid + ".transportUri");
|
||||
editor.remove(mUuid + ".description");
|
||||
editor.remove(mUuid + ".name");
|
||||
|
@ -551,12 +554,10 @@ public class Account implements BaseAccount {
|
|||
editor.remove(mUuid + ".vibrateTimes");
|
||||
editor.remove(mUuid + ".ring");
|
||||
editor.remove(mUuid + ".ringtone");
|
||||
editor.remove(mUuid + ".lastFullSync");
|
||||
editor.remove(mUuid + ".folderDisplayMode");
|
||||
editor.remove(mUuid + ".folderSyncMode");
|
||||
editor.remove(mUuid + ".folderPushMode");
|
||||
editor.remove(mUuid + ".folderTargetMode");
|
||||
editor.remove(mUuid + ".hideButtonsEnum");
|
||||
editor.remove(mUuid + ".signatureBeforeQuotedText");
|
||||
editor.remove(mUuid + ".expungePolicy");
|
||||
editor.remove(mUuid + ".syncRemoteDeletions");
|
||||
|
@ -582,13 +583,24 @@ public class Account implements BaseAccount {
|
|||
editor.remove(mUuid + ".cryptoAutoSignature");
|
||||
editor.remove(mUuid + ".cryptoAutoEncrypt");
|
||||
editor.remove(mUuid + ".enabled");
|
||||
editor.remove(mUuid + ".hideMoveButtonsEnum");
|
||||
editor.remove(mUuid + ".markMessageAsReadOnView");
|
||||
editor.remove(mUuid + ".alwaysShowCcBcc");
|
||||
editor.remove(mUuid + ".allowRemoteSearch");
|
||||
editor.remove(mUuid + ".remoteSearchFullText");
|
||||
editor.remove(mUuid + ".remoteSearchNumResults");
|
||||
editor.remove(mUuid + ".defaultQuotedTextShown");
|
||||
editor.remove(mUuid + ".displayCount");
|
||||
editor.remove(mUuid + ".inboxFolderName");
|
||||
editor.remove(mUuid + ".localStorageProvider");
|
||||
editor.remove(mUuid + ".messageFormat");
|
||||
editor.remove(mUuid + ".messageReadReceipt");
|
||||
editor.remove(mUuid + ".notifyMailCheck");
|
||||
for (String type : networkTypes) {
|
||||
editor.remove(mUuid + ".useCompression." + type);
|
||||
}
|
||||
deleteIdentities(preferences.getPreferences(), editor);
|
||||
// TODO: Remove preference settings that may exist for individual
|
||||
// folders in the account.
|
||||
editor.commit();
|
||||
}
|
||||
|
||||
|
@ -1833,6 +1845,7 @@ public class Account implements BaseAccount {
|
|||
excludeSpecialFolder(search, getSpamFolderName());
|
||||
excludeSpecialFolder(search, getOutboxFolderName());
|
||||
excludeSpecialFolder(search, getSentFolderName());
|
||||
excludeSpecialFolder(search, getErrorFolderName());
|
||||
search.or(new SearchCondition(Searchfield.FOLDER, Attribute.EQUALS, getInboxFolderName()));
|
||||
}
|
||||
|
||||
|
@ -1865,4 +1878,57 @@ public class Account implements BaseAccount {
|
|||
search.and(Searchfield.FOLDER, folderName, Attribute.NOT_EQUALS);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a new certificate for the incoming or outgoing server to the local key store.
|
||||
*/
|
||||
public void addCertificate(CheckDirection direction,
|
||||
X509Certificate certificate) throws CertificateException {
|
||||
Uri uri;
|
||||
if (direction.equals(CheckDirection.INCOMING)) {
|
||||
uri = Uri.parse(getStoreUri());
|
||||
} else {
|
||||
uri = Uri.parse(getTransportUri());
|
||||
}
|
||||
LocalKeyStore localKeyStore = LocalKeyStore.getInstance();
|
||||
localKeyStore.addCertificate(uri.getHost(), uri.getPort(), certificate);
|
||||
}
|
||||
|
||||
/**
|
||||
* Examine the existing settings for an account. If the old host/port is different from the
|
||||
* new host/port, then try and delete any (possibly non-existent) certificate stored for the
|
||||
* old host/port.
|
||||
*/
|
||||
public void deleteCertificate(String newHost, int newPort,
|
||||
CheckDirection direction) {
|
||||
Uri uri;
|
||||
if (direction.equals(CheckDirection.INCOMING)) {
|
||||
uri = Uri.parse(getStoreUri());
|
||||
} else {
|
||||
uri = Uri.parse(getTransportUri());
|
||||
}
|
||||
String oldHost = uri.getHost();
|
||||
int oldPort = uri.getPort();
|
||||
if (oldPort == -1) {
|
||||
// This occurs when a new account is created
|
||||
return;
|
||||
}
|
||||
if (!newHost.equals(oldHost) || newPort != oldPort) {
|
||||
LocalKeyStore localKeyStore = LocalKeyStore.getInstance();
|
||||
localKeyStore.deleteCertificate(oldHost, oldPort);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Examine the settings for the account and attempt to delete (possibly non-existent)
|
||||
* certificates for the incoming and outgoing servers.
|
||||
*/
|
||||
public void deleteCertificates() {
|
||||
LocalKeyStore localKeyStore = LocalKeyStore.getInstance();
|
||||
|
||||
Uri uri = Uri.parse(getStoreUri());
|
||||
localKeyStore.deleteCertificate(uri.getHost(), uri.getPort());
|
||||
uri = Uri.parse(getTransportUri());
|
||||
localKeyStore.deleteCertificate(uri.getHost(), uri.getPort());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -39,6 +39,7 @@ import com.fsck.k9.mail.MessagingException;
|
|||
import com.fsck.k9.mail.internet.BinaryTempFileBody;
|
||||
import com.fsck.k9.mail.store.LocalStore;
|
||||
import com.fsck.k9.provider.UnreadWidgetProvider;
|
||||
import com.fsck.k9.security.LocalKeyStore;
|
||||
import com.fsck.k9.service.BootReceiver;
|
||||
import com.fsck.k9.service.MailService;
|
||||
import com.fsck.k9.service.ShutdownReceiver;
|
||||
|
@ -59,7 +60,7 @@ public class K9 extends Application {
|
|||
* The application instance. Never <code>null</code>.
|
||||
* @throws Exception
|
||||
*/
|
||||
void initializeComponent(K9 application);
|
||||
void initializeComponent(Application application);
|
||||
}
|
||||
|
||||
public static Application app = null;
|
||||
|
@ -91,6 +92,15 @@ public class K9 extends Application {
|
|||
*/
|
||||
private static List<ApplicationAware> observers = new ArrayList<ApplicationAware>();
|
||||
|
||||
/**
|
||||
* This will be {@code true} once the initialization is complete and {@link #notifyObservers()}
|
||||
* was called.
|
||||
* Afterwards calls to {@link #registerApplicationAware(com.fsck.k9.K9.ApplicationAware)} will
|
||||
* immediately call {@link com.fsck.k9.K9.ApplicationAware#initializeComponent(K9)} for the
|
||||
* supplied argument.
|
||||
*/
|
||||
private static boolean sInitialized = false;
|
||||
|
||||
public enum BACKGROUND_OPS {
|
||||
WHEN_CHECKED, ALWAYS, NEVER, WHEN_CHECKED_AUTO_SYNC
|
||||
}
|
||||
|
@ -117,7 +127,7 @@ public class K9 extends Application {
|
|||
* It should NEVER be on for Market builds
|
||||
* Right now, it just governs strictmode
|
||||
**/
|
||||
public static boolean DEVELOPER_MODE = true;
|
||||
public static boolean DEVELOPER_MODE = false;
|
||||
|
||||
|
||||
/**
|
||||
|
@ -581,6 +591,8 @@ public class K9 extends Application {
|
|||
*/
|
||||
BinaryTempFileBody.setTempDirectory(getCacheDir());
|
||||
|
||||
LocalKeyStore.setKeyStoreLocation(getDir("KeyStore", MODE_PRIVATE).toString());
|
||||
|
||||
/*
|
||||
* Enable background sync of messages
|
||||
*/
|
||||
|
@ -829,15 +841,20 @@ public class K9 extends Application {
|
|||
* component that the application is available and ready
|
||||
*/
|
||||
protected void notifyObservers() {
|
||||
for (final ApplicationAware aware : observers) {
|
||||
if (K9.DEBUG) {
|
||||
Log.v(K9.LOG_TAG, "Initializing observer: " + aware);
|
||||
}
|
||||
try {
|
||||
aware.initializeComponent(this);
|
||||
} catch (Exception e) {
|
||||
Log.w(K9.LOG_TAG, "Failure when notifying " + aware, e);
|
||||
synchronized (observers) {
|
||||
for (final ApplicationAware aware : observers) {
|
||||
if (K9.DEBUG) {
|
||||
Log.v(K9.LOG_TAG, "Initializing observer: " + aware);
|
||||
}
|
||||
try {
|
||||
aware.initializeComponent(this);
|
||||
} catch (Exception e) {
|
||||
Log.w(K9.LOG_TAG, "Failure when notifying " + aware, e);
|
||||
}
|
||||
}
|
||||
|
||||
sInitialized = true;
|
||||
observers.clear();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -848,8 +865,12 @@ public class K9 extends Application {
|
|||
* Never <code>null</code>.
|
||||
*/
|
||||
public static void registerApplicationAware(final ApplicationAware component) {
|
||||
if (!observers.contains(component)) {
|
||||
observers.add(component);
|
||||
synchronized (observers) {
|
||||
if (sInitialized) {
|
||||
component.initializeComponent(K9.app);
|
||||
} else if (!observers.contains(component)) {
|
||||
observers.add(component);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -127,6 +127,7 @@ public class Preferences {
|
|||
|
||||
Store.removeAccount(account);
|
||||
|
||||
account.deleteCertificates();
|
||||
account.delete(this);
|
||||
|
||||
if (newAccount == account) {
|
||||
|
|
|
@ -1371,10 +1371,8 @@ public class Accounts extends K9ListActivity implements OnItemClickListener {
|
|||
|
||||
private void onImport() {
|
||||
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
|
||||
i.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
|
||||
i.addCategory(Intent.CATEGORY_OPENABLE);
|
||||
i.setType("*/*"); // KitKat seems to be ignoring mimetypes and won't load settings
|
||||
// MimeUtility.K9_SETTINGS_MIME_TYPE);
|
||||
i.setType("*/*");
|
||||
|
||||
PackageManager packageManager = getPackageManager();
|
||||
List<ResolveInfo> infos = packageManager.queryIntentActivities(i, 0);
|
||||
|
@ -1519,7 +1517,7 @@ public class Accounts extends K9ListActivity implements OnItemClickListener {
|
|||
|
||||
int imported = mImportResults.importedAccounts.size();
|
||||
String accounts = activity.getResources().getQuantityString(
|
||||
R.plurals.settings_import_success, imported, imported);
|
||||
R.plurals.settings_import_accounts, imported, imported);
|
||||
return activity.getString(R.string.settings_import_success, accounts, mFilename);
|
||||
}
|
||||
|
||||
|
|
|
@ -121,7 +121,7 @@ public class ChooseFolder extends K9ListActivity {
|
|||
Intent result = new Intent();
|
||||
result.putExtra(EXTRA_ACCOUNT, mAccount.getUuid());
|
||||
result.putExtra(EXTRA_CUR_FOLDER, mFolder);
|
||||
String destFolderName = (String)((TextView)view).getText();
|
||||
String destFolderName = ((TextView)view).getText().toString();
|
||||
if (mHeldInbox != null && getString(R.string.special_mailbox_name_inbox).equals(destFolderName)) {
|
||||
destFolderName = mHeldInbox;
|
||||
}
|
||||
|
|
|
@ -92,6 +92,8 @@ import org.htmlcleaner.CleanerProperties;
|
|||
import org.htmlcleaner.HtmlCleaner;
|
||||
import org.htmlcleaner.SimpleHtmlSerializer;
|
||||
import org.htmlcleaner.TagNode;
|
||||
|
||||
import java.text.DateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
|
@ -915,8 +917,6 @@ public class MessageCompose extends K9Activity implements OnClickListener,
|
|||
final String action = intent.getAction();
|
||||
|
||||
if (Intent.ACTION_VIEW.equals(action) || Intent.ACTION_SENDTO.equals(action)) {
|
||||
startedByExternalIntent = true;
|
||||
|
||||
/*
|
||||
* Someone has clicked a mailto: link. The address is in the URI.
|
||||
*/
|
||||
|
@ -928,21 +928,21 @@ public class MessageCompose extends K9Activity implements OnClickListener,
|
|||
}
|
||||
|
||||
/*
|
||||
* Note: According to the documenation ACTION_VIEW and ACTION_SENDTO don't accept
|
||||
* Note: According to the documentation ACTION_VIEW and ACTION_SENDTO don't accept
|
||||
* EXTRA_* parameters.
|
||||
* And previously we didn't process these EXTRAs. But it looks like nobody bothers to
|
||||
* read the official documentation and just copies wrong sample code that happens to
|
||||
* work with the AOSP Email application. And because even big players get this wrong,
|
||||
* we're now finally giving in and read the EXTRAs for ACTION_SENDTO (below).
|
||||
* we're now finally giving in and read the EXTRAs for those actions (below).
|
||||
*/
|
||||
}
|
||||
|
||||
if (Intent.ACTION_SEND.equals(action) || Intent.ACTION_SEND_MULTIPLE.equals(action) ||
|
||||
Intent.ACTION_SENDTO.equals(action)) {
|
||||
Intent.ACTION_SENDTO.equals(action) || Intent.ACTION_VIEW.equals(action)) {
|
||||
startedByExternalIntent = true;
|
||||
|
||||
/*
|
||||
* Note: Here we allow a slight deviation from the documentated behavior.
|
||||
* Note: Here we allow a slight deviation from the documented behavior.
|
||||
* EXTRA_TEXT is used as message body (if available) regardless of the MIME
|
||||
* type of the intent. In addition one or multiple attachments can be added
|
||||
* using EXTRA_STREAM.
|
||||
|
@ -1171,9 +1171,6 @@ public class MessageCompose extends K9Activity implements OnClickListener,
|
|||
// So compute the visibility of the "Add Cc/Bcc" menu item again.
|
||||
computeAddCcBccVisibility();
|
||||
|
||||
showOrHideQuotedText(
|
||||
(QuotedTextMode) savedInstanceState.getSerializable(STATE_KEY_QUOTED_TEXT_MODE));
|
||||
|
||||
mQuotedHtmlContent =
|
||||
(InsertableHtmlContent) savedInstanceState.getSerializable(STATE_KEY_HTML_QUOTE);
|
||||
if (mQuotedHtmlContent != null && mQuotedHtmlContent.getQuotedContent() != null) {
|
||||
|
@ -1191,6 +1188,9 @@ public class MessageCompose extends K9Activity implements OnClickListener,
|
|||
mQuotedTextFormat = (SimpleMessageFormat) savedInstanceState.getSerializable(
|
||||
STATE_KEY_QUOTED_TEXT_FORMAT);
|
||||
|
||||
showOrHideQuotedText(
|
||||
(QuotedTextMode) savedInstanceState.getSerializable(STATE_KEY_QUOTED_TEXT_MODE));
|
||||
|
||||
initializeCrypto();
|
||||
updateFrom();
|
||||
updateSignature();
|
||||
|
@ -2802,7 +2802,7 @@ public class MessageCompose extends K9Activity implements OnClickListener,
|
|||
if (mAction == Action.REPLY_ALL) {
|
||||
if (message.getReplyTo().length > 0) {
|
||||
for (Address address : message.getFrom()) {
|
||||
if (!mAccount.isAnIdentity(address)) {
|
||||
if (!mAccount.isAnIdentity(address) && !Utility.arrayContains(replyToAddresses, address)) {
|
||||
addAddress(mToView, address);
|
||||
}
|
||||
}
|
||||
|
@ -3703,12 +3703,20 @@ public class MessageCompose extends K9Activity implements OnClickListener,
|
|||
*/
|
||||
private String quoteOriginalTextMessage(final Message originalMessage, final String messageBody, final QuoteStyle quoteStyle) throws MessagingException {
|
||||
String body = messageBody == null ? "" : messageBody;
|
||||
String sentDate = getSentDateText(originalMessage);
|
||||
if (quoteStyle == QuoteStyle.PREFIX) {
|
||||
StringBuilder quotedText = new StringBuilder(body.length() + QUOTE_BUFFER_LENGTH);
|
||||
quotedText.append(String.format(
|
||||
getString(R.string.message_compose_reply_header_fmt) + "\r\n",
|
||||
Address.toString(originalMessage.getFrom()))
|
||||
);
|
||||
if (sentDate.length() != 0) {
|
||||
quotedText.append(String.format(
|
||||
getString(R.string.message_compose_reply_header_fmt_with_date) + "\r\n",
|
||||
sentDate,
|
||||
Address.toString(originalMessage.getFrom())));
|
||||
} else {
|
||||
quotedText.append(String.format(
|
||||
getString(R.string.message_compose_reply_header_fmt) + "\r\n",
|
||||
Address.toString(originalMessage.getFrom()))
|
||||
);
|
||||
}
|
||||
|
||||
final String prefix = mAccount.getQuotePrefix();
|
||||
final String wrappedText = Utility.wrap(body, REPLY_WRAP_LINE_WIDTH - prefix.length());
|
||||
|
@ -3726,8 +3734,8 @@ public class MessageCompose extends K9Activity implements OnClickListener,
|
|||
if (originalMessage.getFrom() != null && Address.toString(originalMessage.getFrom()).length() != 0) {
|
||||
quotedText.append(getString(R.string.message_compose_quote_header_from)).append(" ").append(Address.toString(originalMessage.getFrom())).append("\r\n");
|
||||
}
|
||||
if (originalMessage.getSentDate() != null) {
|
||||
quotedText.append(getString(R.string.message_compose_quote_header_send_date)).append(" ").append(originalMessage.getSentDate()).append("\r\n");
|
||||
if (sentDate.length() != 0) {
|
||||
quotedText.append(getString(R.string.message_compose_quote_header_send_date)).append(" ").append(sentDate).append("\r\n");
|
||||
}
|
||||
if (originalMessage.getRecipients(RecipientType.TO) != null && originalMessage.getRecipients(RecipientType.TO).length != 0) {
|
||||
quotedText.append(getString(R.string.message_compose_quote_header_to)).append(" ").append(Address.toString(originalMessage.getRecipients(RecipientType.TO))).append("\r\n");
|
||||
|
@ -3760,13 +3768,22 @@ public class MessageCompose extends K9Activity implements OnClickListener,
|
|||
private InsertableHtmlContent quoteOriginalHtmlMessage(final Message originalMessage, final String messageBody, final QuoteStyle quoteStyle) throws MessagingException {
|
||||
InsertableHtmlContent insertable = findInsertionPoints(messageBody);
|
||||
|
||||
String sentDate = getSentDateText(originalMessage);
|
||||
if (quoteStyle == QuoteStyle.PREFIX) {
|
||||
StringBuilder header = new StringBuilder(QUOTE_BUFFER_LENGTH);
|
||||
header.append("<div class=\"gmail_quote\">");
|
||||
header.append(HtmlConverter.textToHtmlFragment(String.format(
|
||||
getString(R.string.message_compose_reply_header_fmt),
|
||||
Address.toString(originalMessage.getFrom()))
|
||||
));
|
||||
if (sentDate.length() != 0) {
|
||||
header.append(HtmlConverter.textToHtmlFragment(String.format(
|
||||
getString(R.string.message_compose_reply_header_fmt_with_date),
|
||||
sentDate,
|
||||
Address.toString(originalMessage.getFrom()))
|
||||
));
|
||||
} else {
|
||||
header.append(HtmlConverter.textToHtmlFragment(String.format(
|
||||
getString(R.string.message_compose_reply_header_fmt),
|
||||
Address.toString(originalMessage.getFrom()))
|
||||
));
|
||||
}
|
||||
header.append("<blockquote class=\"gmail_quote\" " +
|
||||
"style=\"margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;\">\r\n");
|
||||
|
||||
|
@ -3779,29 +3796,29 @@ public class MessageCompose extends K9Activity implements OnClickListener,
|
|||
StringBuilder header = new StringBuilder();
|
||||
header.append("<div style='font-size:10.0pt;font-family:\"Tahoma\",\"sans-serif\";padding:3.0pt 0in 0in 0in'>\r\n");
|
||||
header.append("<hr style='border:none;border-top:solid #E1E1E1 1.0pt'>\r\n"); // This gets converted into a horizontal line during html to text conversion.
|
||||
if (mSourceMessage.getFrom() != null && Address.toString(mSourceMessage.getFrom()).length() != 0) {
|
||||
if (originalMessage.getFrom() != null && Address.toString(originalMessage.getFrom()).length() != 0) {
|
||||
header.append("<b>").append(getString(R.string.message_compose_quote_header_from)).append("</b> ")
|
||||
.append(HtmlConverter.textToHtmlFragment(Address.toString(mSourceMessage.getFrom())))
|
||||
.append(HtmlConverter.textToHtmlFragment(Address.toString(originalMessage.getFrom())))
|
||||
.append("<br>\r\n");
|
||||
}
|
||||
if (mSourceMessage.getSentDate() != null) {
|
||||
if (sentDate.length() != 0) {
|
||||
header.append("<b>").append(getString(R.string.message_compose_quote_header_send_date)).append("</b> ")
|
||||
.append(mSourceMessage.getSentDate())
|
||||
.append(sentDate)
|
||||
.append("<br>\r\n");
|
||||
}
|
||||
if (mSourceMessage.getRecipients(RecipientType.TO) != null && mSourceMessage.getRecipients(RecipientType.TO).length != 0) {
|
||||
if (originalMessage.getRecipients(RecipientType.TO) != null && originalMessage.getRecipients(RecipientType.TO).length != 0) {
|
||||
header.append("<b>").append(getString(R.string.message_compose_quote_header_to)).append("</b> ")
|
||||
.append(HtmlConverter.textToHtmlFragment(Address.toString(mSourceMessage.getRecipients(RecipientType.TO))))
|
||||
.append(HtmlConverter.textToHtmlFragment(Address.toString(originalMessage.getRecipients(RecipientType.TO))))
|
||||
.append("<br>\r\n");
|
||||
}
|
||||
if (mSourceMessage.getRecipients(RecipientType.CC) != null && mSourceMessage.getRecipients(RecipientType.CC).length != 0) {
|
||||
if (originalMessage.getRecipients(RecipientType.CC) != null && originalMessage.getRecipients(RecipientType.CC).length != 0) {
|
||||
header.append("<b>").append(getString(R.string.message_compose_quote_header_cc)).append("</b> ")
|
||||
.append(HtmlConverter.textToHtmlFragment(Address.toString(mSourceMessage.getRecipients(RecipientType.CC))))
|
||||
.append(HtmlConverter.textToHtmlFragment(Address.toString(originalMessage.getRecipients(RecipientType.CC))))
|
||||
.append("<br>\r\n");
|
||||
}
|
||||
if (mSourceMessage.getSubject() != null) {
|
||||
if (originalMessage.getSubject() != null) {
|
||||
header.append("<b>").append(getString(R.string.message_compose_quote_header_subject)).append("</b> ")
|
||||
.append(HtmlConverter.textToHtmlFragment(mSourceMessage.getSubject()))
|
||||
.append(HtmlConverter.textToHtmlFragment(originalMessage.getSubject()))
|
||||
.append("<br>\r\n");
|
||||
}
|
||||
header.append("</div>\r\n");
|
||||
|
@ -3990,6 +4007,26 @@ public class MessageCompose extends K9Activity implements OnClickListener,
|
|||
return (mQuotedTextMode == QuotedTextMode.SHOW);
|
||||
}
|
||||
|
||||
/**
|
||||
* Extract the date from a message and convert it into a locale-specific
|
||||
* date string suitable for use in a header for a quoted message.
|
||||
*
|
||||
* @param message
|
||||
* @return A string with the formatted date/time
|
||||
*/
|
||||
private String getSentDateText(Message message) {
|
||||
try {
|
||||
final int dateStyle = DateFormat.LONG;
|
||||
final int timeStyle = DateFormat.LONG;
|
||||
Date date = message.getSentDate();
|
||||
Locale locale = getResources().getConfiguration().locale;
|
||||
return DateFormat.getDateTimeInstance(dateStyle, timeStyle, locale)
|
||||
.format(date);
|
||||
} catch (Exception e) {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* An {@link EditText} extension with methods that convert line endings from
|
||||
* {@code \r\n} to {@code \n} and back again when setting and getting text.
|
||||
|
|
|
@ -973,6 +973,7 @@ public class MessageList extends K9FragmentActivity implements MessageListFragme
|
|||
menu.findItem(R.id.previous_message).setVisible(false);
|
||||
menu.findItem(R.id.single_message_options).setVisible(false);
|
||||
menu.findItem(R.id.delete).setVisible(false);
|
||||
menu.findItem(R.id.compose).setVisible(false);
|
||||
menu.findItem(R.id.archive).setVisible(false);
|
||||
menu.findItem(R.id.move).setVisible(false);
|
||||
menu.findItem(R.id.copy).setVisible(false);
|
||||
|
@ -1091,6 +1092,7 @@ public class MessageList extends K9FragmentActivity implements MessageListFragme
|
|||
} else {
|
||||
menu.findItem(R.id.set_sort).setVisible(true);
|
||||
menu.findItem(R.id.select_all).setVisible(true);
|
||||
menu.findItem(R.id.compose).setVisible(true);
|
||||
menu.findItem(R.id.mark_all_as_read).setVisible(
|
||||
mMessageListFragment.isMarkAllAsReadSupported());
|
||||
|
||||
|
|
|
@ -90,7 +90,7 @@ public class NotificationDeleteConfirmation extends Activity {
|
|||
case DIALOG_CONFIRM:
|
||||
int messageCount = mMessageRefs.size();
|
||||
alert.setMessage(getResources().getQuantityString(
|
||||
R.plurals.dialog_confirm_delete_message, messageCount, messageCount));
|
||||
R.plurals.dialog_confirm_delete_messages, messageCount, messageCount));
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
@ -161,7 +161,7 @@ public class ContactPictureLoader {
|
|||
return mDefaultBackgroundColor;
|
||||
}
|
||||
|
||||
int val = address.getAddress().toLowerCase(Locale.getDefault()).hashCode();
|
||||
int val = address.hashCode();
|
||||
int rgb = CONTACT_DUMMY_COLORS_ARGB[Math.abs(val) % CONTACT_DUMMY_COLORS_ARGB.length];
|
||||
return rgb;
|
||||
}
|
||||
|
|
|
@ -17,6 +17,7 @@ import android.widget.Button;
|
|||
import android.widget.EditText;
|
||||
import com.fsck.k9.*;
|
||||
import com.fsck.k9.activity.K9Activity;
|
||||
import com.fsck.k9.activity.setup.AccountSetupCheckSettings.CheckDirection;
|
||||
import com.fsck.k9.helper.Utility;
|
||||
import java.io.Serializable;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
|
@ -36,7 +37,9 @@ public class AccountSetupBasics extends K9Activity
|
|||
private final static String EXTRA_ACCOUNT = "com.fsck.k9.AccountSetupBasics.account";
|
||||
private final static int DIALOG_NOTE = 1;
|
||||
private final static String STATE_KEY_PROVIDER =
|
||||
"com.fsck.k9.AccountSetupBasics.provider";
|
||||
"com.fsck.k9.AccountSetupBasics.provider";
|
||||
private final static String STATE_KEY_CHECKED_INCOMING =
|
||||
"com.fsck.k9.AccountSetupBasics.checkedIncoming";
|
||||
|
||||
private EditText mEmailView;
|
||||
private EditText mPasswordView;
|
||||
|
@ -46,6 +49,7 @@ public class AccountSetupBasics extends K9Activity
|
|||
private Provider mProvider;
|
||||
|
||||
private EmailAddressValidator mEmailValidator = new EmailAddressValidator();
|
||||
private boolean mCheckedIncoming = false;
|
||||
|
||||
public static void actionNewAccount(Context context) {
|
||||
Intent i = new Intent(context, AccountSetupBasics.class);
|
||||
|
@ -66,15 +70,6 @@ public class AccountSetupBasics extends K9Activity
|
|||
|
||||
mEmailView.addTextChangedListener(this);
|
||||
mPasswordView.addTextChangedListener(this);
|
||||
|
||||
if (savedInstanceState != null && savedInstanceState.containsKey(EXTRA_ACCOUNT)) {
|
||||
String accountUuid = savedInstanceState.getString(EXTRA_ACCOUNT);
|
||||
mAccount = Preferences.getPreferences(this).getAccount(accountUuid);
|
||||
}
|
||||
|
||||
if (savedInstanceState != null && savedInstanceState.containsKey(STATE_KEY_PROVIDER)) {
|
||||
mProvider = (Provider)savedInstanceState.getSerializable(STATE_KEY_PROVIDER);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -92,6 +87,23 @@ public class AccountSetupBasics extends K9Activity
|
|||
if (mProvider != null) {
|
||||
outState.putSerializable(STATE_KEY_PROVIDER, mProvider);
|
||||
}
|
||||
outState.putBoolean(STATE_KEY_CHECKED_INCOMING, mCheckedIncoming);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onRestoreInstanceState(Bundle savedInstanceState) {
|
||||
super.onRestoreInstanceState(savedInstanceState);
|
||||
|
||||
if (savedInstanceState.containsKey(EXTRA_ACCOUNT)) {
|
||||
String accountUuid = savedInstanceState.getString(EXTRA_ACCOUNT);
|
||||
mAccount = Preferences.getPreferences(this).getAccount(accountUuid);
|
||||
}
|
||||
|
||||
if (savedInstanceState.containsKey(STATE_KEY_PROVIDER)) {
|
||||
mProvider = (Provider) savedInstanceState.getSerializable(STATE_KEY_PROVIDER);
|
||||
}
|
||||
|
||||
mCheckedIncoming = savedInstanceState.getBoolean(STATE_KEY_CHECKED_INCOMING);
|
||||
}
|
||||
|
||||
public void afterTextChanged(Editable s) {
|
||||
|
@ -229,7 +241,8 @@ public class AccountSetupBasics extends K9Activity
|
|||
} else if (incomingUri.toString().startsWith("pop3")) {
|
||||
mAccount.setDeletePolicy(Account.DELETE_POLICY_NEVER);
|
||||
}
|
||||
AccountSetupCheckSettings.actionCheckSettings(this, mAccount, true, true);
|
||||
// Check incoming here. Then check outgoing in onActivityResult()
|
||||
AccountSetupCheckSettings.actionCheckSettings(this, mAccount, CheckDirection.INCOMING);
|
||||
} catch (UnsupportedEncodingException enc) {
|
||||
// This really shouldn't happen since the encoding is hardcoded to UTF-8
|
||||
Log.e(K9.LOG_TAG, "Couldn't urlencode username or password.", enc);
|
||||
|
@ -266,11 +279,18 @@ public class AccountSetupBasics extends K9Activity
|
|||
@Override
|
||||
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
if (resultCode == RESULT_OK) {
|
||||
mAccount.setDescription(mAccount.getEmail());
|
||||
mAccount.save(Preferences.getPreferences(this));
|
||||
K9.setServicesEnabled(this);
|
||||
AccountSetupNames.actionSetNames(this, mAccount);
|
||||
finish();
|
||||
if (!mCheckedIncoming) {
|
||||
//We've successfully checked incoming. Now check outgoing.
|
||||
mCheckedIncoming = true;
|
||||
AccountSetupCheckSettings.actionCheckSettings(this, mAccount, CheckDirection.OUTGOING);
|
||||
} else {
|
||||
//We've successfully checked outgoing as well.
|
||||
mAccount.setDescription(mAccount.getEmail());
|
||||
mAccount.save(Preferences.getPreferences(this));
|
||||
K9.setServicesEnabled(this);
|
||||
AccountSetupNames.actionSetNames(this, mAccount);
|
||||
finish();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -22,7 +22,6 @@ import com.fsck.k9.mail.AuthenticationFailedException;
|
|||
import com.fsck.k9.mail.CertificateValidationException;
|
||||
import com.fsck.k9.mail.Store;
|
||||
import com.fsck.k9.mail.Transport;
|
||||
import com.fsck.k9.mail.store.TrustManagerFactory;
|
||||
import com.fsck.k9.mail.store.WebDavStore;
|
||||
import com.fsck.k9.mail.filter.Hex;
|
||||
|
||||
|
@ -47,9 +46,12 @@ public class AccountSetupCheckSettings extends K9Activity implements OnClickList
|
|||
|
||||
private static final String EXTRA_ACCOUNT = "account";
|
||||
|
||||
private static final String EXTRA_CHECK_INCOMING = "checkIncoming";
|
||||
private static final String EXTRA_CHECK_DIRECTION ="checkDirection";
|
||||
|
||||
private static final String EXTRA_CHECK_OUTGOING = "checkOutgoing";
|
||||
public enum CheckDirection {
|
||||
INCOMING,
|
||||
OUTGOING
|
||||
}
|
||||
|
||||
private Handler mHandler = new Handler();
|
||||
|
||||
|
@ -59,20 +61,16 @@ public class AccountSetupCheckSettings extends K9Activity implements OnClickList
|
|||
|
||||
private Account mAccount;
|
||||
|
||||
private boolean mCheckIncoming;
|
||||
|
||||
private boolean mCheckOutgoing;
|
||||
private CheckDirection mDirection;
|
||||
|
||||
private boolean mCanceled;
|
||||
|
||||
private boolean mDestroyed;
|
||||
|
||||
public static void actionCheckSettings(Activity context, Account account,
|
||||
boolean checkIncoming, boolean checkOutgoing) {
|
||||
public static void actionCheckSettings(Activity context, Account account, CheckDirection direction) {
|
||||
Intent i = new Intent(context, AccountSetupCheckSettings.class);
|
||||
i.putExtra(EXTRA_ACCOUNT, account.getUuid());
|
||||
i.putExtra(EXTRA_CHECK_INCOMING, checkIncoming);
|
||||
i.putExtra(EXTRA_CHECK_OUTGOING, checkOutgoing);
|
||||
i.putExtra(EXTRA_CHECK_DIRECTION, direction);
|
||||
context.startActivityForResult(i, ACTIVITY_REQUEST_CODE);
|
||||
}
|
||||
|
||||
|
@ -89,8 +87,7 @@ public class AccountSetupCheckSettings extends K9Activity implements OnClickList
|
|||
|
||||
String accountUuid = getIntent().getStringExtra(EXTRA_ACCOUNT);
|
||||
mAccount = Preferences.getPreferences(this).getAccount(accountUuid);
|
||||
mCheckIncoming = getIntent().getBooleanExtra(EXTRA_CHECK_INCOMING, false);
|
||||
mCheckOutgoing = getIntent().getBooleanExtra(EXTRA_CHECK_OUTGOING, false);
|
||||
mDirection = (CheckDirection) getIntent().getSerializableExtra(EXTRA_CHECK_DIRECTION);
|
||||
|
||||
new Thread() {
|
||||
@Override
|
||||
|
@ -108,9 +105,9 @@ public class AccountSetupCheckSettings extends K9Activity implements OnClickList
|
|||
|
||||
final MessagingController ctrl = MessagingController.getInstance(getApplication());
|
||||
ctrl.clearCertificateErrorNotifications(AccountSetupCheckSettings.this,
|
||||
mAccount, mCheckIncoming, mCheckOutgoing);
|
||||
mAccount, mDirection);
|
||||
|
||||
if (mCheckIncoming) {
|
||||
if (mDirection.equals(CheckDirection.INCOMING)) {
|
||||
store = mAccount.getRemoteStore();
|
||||
|
||||
if (store instanceof WebDavStore) {
|
||||
|
@ -133,7 +130,7 @@ public class AccountSetupCheckSettings extends K9Activity implements OnClickList
|
|||
finish();
|
||||
return;
|
||||
}
|
||||
if (mCheckOutgoing) {
|
||||
if (mDirection.equals(CheckDirection.OUTGOING)) {
|
||||
if (!(mAccount.getRemoteStore() instanceof WebDavStore)) {
|
||||
setMessage(R.string.account_setup_check_settings_check_outgoing_msg);
|
||||
}
|
||||
|
@ -366,21 +363,14 @@ public class AccountSetupCheckSettings extends K9Activity implements OnClickList
|
|||
new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
try {
|
||||
String alias = mAccount.getUuid();
|
||||
if (mCheckIncoming) {
|
||||
alias = alias + ".incoming";
|
||||
}
|
||||
if (mCheckOutgoing) {
|
||||
alias = alias + ".outgoing";
|
||||
}
|
||||
TrustManagerFactory.addCertificateChain(alias, chain);
|
||||
mAccount.addCertificate(mDirection, chain[0]);
|
||||
} catch (CertificateException e) {
|
||||
showErrorDialog(
|
||||
R.string.account_setup_failed_dlg_certificate_message_fmt,
|
||||
e.getMessage() == null ? "" : e.getMessage());
|
||||
}
|
||||
AccountSetupCheckSettings.actionCheckSettings(AccountSetupCheckSettings.this, mAccount,
|
||||
mCheckIncoming, mCheckOutgoing);
|
||||
mDirection);
|
||||
}
|
||||
})
|
||||
.setNegativeButton(
|
||||
|
|
|
@ -16,6 +16,7 @@ import android.widget.CompoundButton.OnCheckedChangeListener;
|
|||
|
||||
import com.fsck.k9.*;
|
||||
import com.fsck.k9.activity.K9Activity;
|
||||
import com.fsck.k9.activity.setup.AccountSetupCheckSettings.CheckDirection;
|
||||
import com.fsck.k9.helper.Utility;
|
||||
import com.fsck.k9.mail.ConnectionSecurity;
|
||||
import com.fsck.k9.mail.ServerSettings;
|
||||
|
@ -427,6 +428,7 @@ public class AccountSetupIncoming extends K9Activity implements OnClickListener
|
|||
mWebdavMailboxPathView.getText().toString());
|
||||
}
|
||||
|
||||
mAccount.deleteCertificate(host, port, CheckDirection.INCOMING);
|
||||
ServerSettings settings = new ServerSettings(mStoreType, host, port,
|
||||
connectionSecurity, authType, username, password, extra);
|
||||
|
||||
|
@ -437,7 +439,7 @@ public class AccountSetupIncoming extends K9Activity implements OnClickListener
|
|||
mAccount.setCompression(Account.TYPE_OTHER, mCompressionOther.isChecked());
|
||||
mAccount.setSubscribedFoldersOnly(mSubscribedFoldersOnly.isChecked());
|
||||
|
||||
AccountSetupCheckSettings.actionCheckSettings(this, mAccount, true, false);
|
||||
AccountSetupCheckSettings.actionCheckSettings(this, mAccount, CheckDirection.INCOMING);
|
||||
} catch (Exception e) {
|
||||
failure(e);
|
||||
}
|
||||
|
|
|
@ -15,6 +15,7 @@ import android.widget.*;
|
|||
import android.widget.CompoundButton.OnCheckedChangeListener;
|
||||
import com.fsck.k9.*;
|
||||
import com.fsck.k9.activity.K9Activity;
|
||||
import com.fsck.k9.activity.setup.AccountSetupCheckSettings.CheckDirection;
|
||||
import com.fsck.k9.helper.Utility;
|
||||
import com.fsck.k9.mail.transport.SmtpTransport;
|
||||
|
||||
|
@ -95,7 +96,7 @@ public class AccountSetupOutgoing extends K9Activity implements OnClickListener,
|
|||
try {
|
||||
if (new URI(mAccount.getStoreUri()).getScheme().startsWith("webdav")) {
|
||||
mAccount.setTransportUri(mAccount.getStoreUri());
|
||||
AccountSetupCheckSettings.actionCheckSettings(this, mAccount, false, true);
|
||||
AccountSetupCheckSettings.actionCheckSettings(this, mAccount, CheckDirection.OUTGOING);
|
||||
}
|
||||
} catch (URISyntaxException e) {
|
||||
// TODO Auto-generated catch block
|
||||
|
@ -308,10 +309,12 @@ public class AccountSetupOutgoing extends K9Activity implements OnClickListener,
|
|||
if (mRequireLoginView.isChecked()) {
|
||||
userInfo = usernameEnc + ":" + passwordEnc + ":" + authType;
|
||||
}
|
||||
uri = new URI(smtpSchemes[securityType], userInfo, mServerView.getText().toString(),
|
||||
Integer.parseInt(mPortView.getText().toString()), null, null, null);
|
||||
String newHost = mServerView.getText().toString();
|
||||
int newPort = Integer.parseInt(mPortView.getText().toString());
|
||||
uri = new URI(smtpSchemes[securityType], userInfo, newHost, newPort, null, null, null);
|
||||
mAccount.deleteCertificate(newHost, newPort, CheckDirection.OUTGOING);
|
||||
mAccount.setTransportUri(uri.toString());
|
||||
AccountSetupCheckSettings.actionCheckSettings(this, mAccount, false, true);
|
||||
AccountSetupCheckSettings.actionCheckSettings(this, mAccount, CheckDirection.OUTGOING);
|
||||
} catch (UnsupportedEncodingException enc) {
|
||||
// This really shouldn't happen since the encoding is hardcoded to UTF-8
|
||||
Log.e(K9.LOG_TAG, "Couldn't urlencode username or password.", enc);
|
||||
|
|
|
@ -53,6 +53,7 @@ import com.fsck.k9.activity.FolderList;
|
|||
import com.fsck.k9.activity.MessageList;
|
||||
import com.fsck.k9.activity.MessageReference;
|
||||
import com.fsck.k9.activity.NotificationDeleteConfirmation;
|
||||
import com.fsck.k9.activity.setup.AccountSetupCheckSettings.CheckDirection;
|
||||
import com.fsck.k9.activity.setup.AccountSetupIncoming;
|
||||
import com.fsck.k9.activity.setup.AccountSetupOutgoing;
|
||||
import com.fsck.k9.cache.EmailProviderCache;
|
||||
|
@ -2671,14 +2672,13 @@ public class MessagingController implements Runnable {
|
|||
}
|
||||
|
||||
public void clearCertificateErrorNotifications(Context context,
|
||||
final Account account, boolean incoming, boolean outgoing) {
|
||||
final Account account, CheckDirection direction) {
|
||||
final NotificationManager nm = (NotificationManager)
|
||||
context.getSystemService(Context.NOTIFICATION_SERVICE);
|
||||
|
||||
if (incoming) {
|
||||
if (direction.equals(CheckDirection.INCOMING)) {
|
||||
nm.cancel(null, K9.CERTIFICATE_EXCEPTION_NOTIFICATION_INCOMING + account.getAccountNumber());
|
||||
}
|
||||
if (outgoing) {
|
||||
} else {
|
||||
nm.cancel(null, K9.CERTIFICATE_EXCEPTION_NOTIFICATION_OUTGOING + account.getAccountNumber());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1134,32 +1134,30 @@ public class MessageListFragment extends SherlockFragment implements OnItemClick
|
|||
View loadingView = inflater.inflate(R.layout.message_list_loading, null);
|
||||
mPullToRefreshView.setEmptyView(loadingView);
|
||||
|
||||
if (isCheckMailSupported()) {
|
||||
if (mSearch.isManualSearch() && mSingleAccountMode && mAccount.allowRemoteSearch()) {
|
||||
// "Pull to search server"
|
||||
mPullToRefreshView.setOnRefreshListener(
|
||||
new PullToRefreshBase.OnRefreshListener<ListView>() {
|
||||
@Override
|
||||
public void onRefresh(PullToRefreshBase<ListView> refreshView) {
|
||||
mPullToRefreshView.onRefreshComplete();
|
||||
onRemoteSearchRequested();
|
||||
}
|
||||
});
|
||||
ILoadingLayout proxy = mPullToRefreshView.getLoadingLayoutProxy();
|
||||
proxy.setPullLabel(getString(
|
||||
R.string.pull_to_refresh_remote_search_from_local_search_pull));
|
||||
proxy.setReleaseLabel(getString(
|
||||
R.string.pull_to_refresh_remote_search_from_local_search_release));
|
||||
} else {
|
||||
// "Pull to refresh"
|
||||
mPullToRefreshView.setOnRefreshListener(
|
||||
new PullToRefreshBase.OnRefreshListener<ListView>() {
|
||||
@Override
|
||||
public void onRefresh(PullToRefreshBase<ListView> refreshView) {
|
||||
checkMail();
|
||||
}
|
||||
});
|
||||
}
|
||||
if (isRemoteSearchAllowed()) {
|
||||
// "Pull to search server"
|
||||
mPullToRefreshView.setOnRefreshListener(
|
||||
new PullToRefreshBase.OnRefreshListener<ListView>() {
|
||||
@Override
|
||||
public void onRefresh(PullToRefreshBase<ListView> refreshView) {
|
||||
mPullToRefreshView.onRefreshComplete();
|
||||
onRemoteSearchRequested();
|
||||
}
|
||||
});
|
||||
ILoadingLayout proxy = mPullToRefreshView.getLoadingLayoutProxy();
|
||||
proxy.setPullLabel(getString(
|
||||
R.string.pull_to_refresh_remote_search_from_local_search_pull));
|
||||
proxy.setReleaseLabel(getString(
|
||||
R.string.pull_to_refresh_remote_search_from_local_search_release));
|
||||
} else if (isCheckMailSupported()) {
|
||||
// "Pull to refresh"
|
||||
mPullToRefreshView.setOnRefreshListener(
|
||||
new PullToRefreshBase.OnRefreshListener<ListView>() {
|
||||
@Override
|
||||
public void onRefresh(PullToRefreshBase<ListView> refreshView) {
|
||||
checkMail();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Disable pull-to-refresh until the message list has been loaded
|
||||
|
@ -1237,6 +1235,8 @@ public class MessageListFragment extends SherlockFragment implements OnItemClick
|
|||
mRemoteSearchFuture = mController.searchRemoteMessages(searchAccount, searchFolder,
|
||||
queryString, null, null, mListener);
|
||||
|
||||
setPullToRefreshEnabled(false);
|
||||
|
||||
mFragmentListener.remoteSearchStarted();
|
||||
}
|
||||
|
||||
|
@ -3409,10 +3409,7 @@ public class MessageListFragment extends SherlockFragment implements OnItemClick
|
|||
// Remove the "Loading..." view
|
||||
mPullToRefreshView.setEmptyView(null);
|
||||
|
||||
// Enable pull-to-refresh if allowed
|
||||
if (isCheckMailSupported()) {
|
||||
setPullToRefreshEnabled(true);
|
||||
}
|
||||
setPullToRefreshEnabled(isPullToRefreshAllowed());
|
||||
|
||||
final int loaderId = loader.getId();
|
||||
mCursors[loaderId] = data;
|
||||
|
@ -3621,4 +3618,12 @@ public class MessageListFragment extends SherlockFragment implements OnItemClick
|
|||
return (mAllAccounts || !isSingleAccountMode() || !isSingleFolderMode() ||
|
||||
isRemoteFolder());
|
||||
}
|
||||
|
||||
private boolean isCheckMailAllowed() {
|
||||
return (!isManualSearch() && isCheckMailSupported());
|
||||
}
|
||||
|
||||
private boolean isPullToRefreshAllowed() {
|
||||
return (isRemoteSearchAllowed() || isCheckMailAllowed());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,6 +4,7 @@ import android.app.Dialog;
|
|||
import android.app.ProgressDialog;
|
||||
import android.content.DialogInterface;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.FragmentActivity;
|
||||
|
||||
import com.actionbarsherlock.app.SherlockDialogFragment;
|
||||
|
||||
|
@ -40,8 +41,9 @@ public class ProgressDialogFragment extends SherlockDialogFragment {
|
|||
|
||||
@Override
|
||||
public void onCancel(DialogInterface dialog) {
|
||||
CancelListener listener = (CancelListener) getActivity();
|
||||
if (listener != null && listener instanceof CancelListener) {
|
||||
FragmentActivity activity = getActivity();
|
||||
if (activity != null && activity instanceof CancelListener) {
|
||||
CancelListener listener = (CancelListener) activity;
|
||||
listener.onCancel(this);
|
||||
}
|
||||
|
||||
|
|
|
@ -392,7 +392,9 @@ public class HtmlConverter {
|
|||
* @param outputBuffer Buffer to append linked text to.
|
||||
*/
|
||||
private static void linkifyText(final String text, final StringBuffer outputBuffer) {
|
||||
Matcher m = Regex.WEB_URL_PATTERN.matcher(text);
|
||||
String prepared = text.replaceAll(Regex.BITCOIN_URI_PATTERN, "<a href=\"$0\">$0</a>");
|
||||
|
||||
Matcher m = Regex.WEB_URL_PATTERN.matcher(prepared);
|
||||
while (m.find()) {
|
||||
int start = m.start();
|
||||
if (start == 0 || (start != 0 && text.charAt(start - 1) != '@')) {
|
||||
|
|
|
@ -103,4 +103,7 @@ public class Regex {
|
|||
"[a-zA-Z0-9][a-zA-Z0-9\\-]{0,25}" +
|
||||
")+"
|
||||
);
|
||||
|
||||
public static final String BITCOIN_URI_PATTERN =
|
||||
"bitcoin:[1-9a-km-zA-HJ-NP-Z]{27,34}(\\?[a-zA-Z0-9$\\-_.+!*'(),%:@&=]*)?";
|
||||
}
|
||||
|
|
|
@ -96,6 +96,8 @@ import com.fsck.k9.mail.store.ImapResponseParser.ImapList;
|
|||
import com.fsck.k9.mail.store.ImapResponseParser.ImapResponse;
|
||||
import com.fsck.k9.mail.store.imap.ImapUtility;
|
||||
import com.fsck.k9.mail.transport.imap.ImapSettings;
|
||||
import com.fsck.k9.net.ssl.TrustManagerFactory;
|
||||
import com.fsck.k9.net.ssl.TrustedSocketFactory;
|
||||
import com.jcraft.jzlib.JZlib;
|
||||
import com.jcraft.jzlib.ZOutputStream;
|
||||
|
||||
|
@ -2446,9 +2448,12 @@ public class ImapStore extends Store {
|
|||
connectionSecurity == CONNECTION_SECURITY_SSL_OPTIONAL) {
|
||||
SSLContext sslContext = SSLContext.getInstance("TLS");
|
||||
boolean secure = connectionSecurity == CONNECTION_SECURITY_SSL_REQUIRED;
|
||||
sslContext.init(null, new TrustManager[] {
|
||||
TrustManagerFactory.get(mSettings.getHost(), secure)
|
||||
}, new SecureRandom());
|
||||
sslContext
|
||||
.init(null,
|
||||
new TrustManager[] { TrustManagerFactory.get(
|
||||
mSettings.getHost(),
|
||||
mSettings.getPort(), secure) },
|
||||
new SecureRandom());
|
||||
mSocket = TrustedSocketFactory.createSocket(sslContext);
|
||||
} else {
|
||||
mSocket = new Socket();
|
||||
|
@ -2501,11 +2506,13 @@ public class ImapStore extends Store {
|
|||
|
||||
SSLContext sslContext = SSLContext.getInstance("TLS");
|
||||
boolean secure = mSettings.getConnectionSecurity() == CONNECTION_SECURITY_TLS_REQUIRED;
|
||||
sslContext.init(null, new TrustManager[] {
|
||||
TrustManagerFactory.get(mSettings.getHost(), secure)
|
||||
}, new SecureRandom());
|
||||
mSocket = sslContext.getSocketFactory().createSocket(mSocket, mSettings.getHost(), mSettings.getPort(),
|
||||
true);
|
||||
sslContext.init(null,
|
||||
new TrustManager[] { TrustManagerFactory.get(
|
||||
mSettings.getHost(),
|
||||
mSettings.getPort(), secure) },
|
||||
new SecureRandom());
|
||||
mSocket = TrustedSocketFactory.createSocket(sslContext, mSocket,
|
||||
mSettings.getHost(), mSettings.getPort(), true);
|
||||
mSocket.setSoTimeout(Store.SOCKET_READ_TIMEOUT);
|
||||
mIn = new PeekableInputStream(new BufferedInputStream(mSocket
|
||||
.getInputStream(), 1024));
|
||||
|
@ -2773,10 +2780,8 @@ public class ImapStore extends Store {
|
|||
try {
|
||||
open();
|
||||
String tag = Integer.toString(mNextCommandTag++);
|
||||
String commandToSend = tag + " " + command;
|
||||
String commandToSend = tag + " " + command + "\r\n";
|
||||
mOut.write(commandToSend.getBytes());
|
||||
mOut.write('\r');
|
||||
mOut.write('\n');
|
||||
mOut.flush();
|
||||
|
||||
if (K9.DEBUG && K9.DEBUG_PROTOCOL_IMAP) {
|
||||
|
@ -2971,6 +2976,7 @@ public class ImapStore extends Store {
|
|||
if (K9.DEBUG)
|
||||
Log.i(K9.LOG_TAG, "Pusher starting for " + getLogId());
|
||||
|
||||
long lastUidNext = -1L;
|
||||
while (!stop.get()) {
|
||||
try {
|
||||
long oldUidNext = -1L;
|
||||
|
@ -2983,6 +2989,18 @@ public class ImapStore extends Store {
|
|||
} catch (Exception e) {
|
||||
Log.e(K9.LOG_TAG, "Unable to get oldUidNext for " + getLogId(), e);
|
||||
}
|
||||
|
||||
/*
|
||||
* This makes sure 'oldUidNext' is never smaller than 'UIDNEXT' from
|
||||
* the last loop iteration. This way we avoid looping endlessly causing
|
||||
* the battery to drain.
|
||||
*
|
||||
* See issue 4907
|
||||
*/
|
||||
if (oldUidNext < lastUidNext) {
|
||||
oldUidNext = lastUidNext;
|
||||
}
|
||||
|
||||
ImapConnection oldConnection = mConnection;
|
||||
internalOpen(OPEN_MODE_RO);
|
||||
ImapConnection conn = mConnection;
|
||||
|
@ -3034,6 +3052,8 @@ public class ImapStore extends Store {
|
|||
if (startUid < 1) {
|
||||
startUid = 1;
|
||||
}
|
||||
|
||||
lastUidNext = newUidNext;
|
||||
if (newUidNext > startUid) {
|
||||
|
||||
if (K9.DEBUG)
|
||||
|
|
|
@ -772,9 +772,11 @@ public class LocalStore extends Store implements Serializable {
|
|||
public Long doDbWork(final SQLiteDatabase db) {
|
||||
final File[] files = attachmentDirectory.listFiles();
|
||||
long attachmentLength = 0;
|
||||
for (File file : files) {
|
||||
if (file.exists()) {
|
||||
attachmentLength += file.length();
|
||||
if (files != null) {
|
||||
for (File file : files) {
|
||||
if (file.exists()) {
|
||||
attachmentLength += file.length();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -10,6 +10,8 @@ import com.fsck.k9.helper.Utility;
|
|||
import com.fsck.k9.mail.*;
|
||||
|
||||
import com.fsck.k9.mail.internet.MimeMessage;
|
||||
import com.fsck.k9.net.ssl.TrustManagerFactory;
|
||||
import com.fsck.k9.net.ssl.TrustedSocketFactory;
|
||||
|
||||
import javax.net.ssl.SSLContext;
|
||||
import javax.net.ssl.SSLException;
|
||||
|
@ -327,9 +329,9 @@ public class Pop3Store extends Store {
|
|||
mConnectionSecurity == CONNECTION_SECURITY_SSL_OPTIONAL) {
|
||||
SSLContext sslContext = SSLContext.getInstance("TLS");
|
||||
final boolean secure = mConnectionSecurity == CONNECTION_SECURITY_SSL_REQUIRED;
|
||||
sslContext.init(null, new TrustManager[] {
|
||||
TrustManagerFactory.get(mHost, secure)
|
||||
}, new SecureRandom());
|
||||
sslContext.init(null,
|
||||
new TrustManager[] { TrustManagerFactory.get(mHost,
|
||||
mPort, secure) }, new SecureRandom());
|
||||
mSocket = TrustedSocketFactory.createSocket(sslContext);
|
||||
} else {
|
||||
mSocket = new Socket();
|
||||
|
@ -352,15 +354,16 @@ public class Pop3Store extends Store {
|
|||
mCapabilities = getCapabilities();
|
||||
|
||||
if (mCapabilities.stls) {
|
||||
writeLine(STLS_COMMAND);
|
||||
executeSimpleCommand(STLS_COMMAND);
|
||||
|
||||
SSLContext sslContext = SSLContext.getInstance("TLS");
|
||||
boolean secure = mConnectionSecurity == CONNECTION_SECURITY_TLS_REQUIRED;
|
||||
sslContext.init(null, new TrustManager[] {
|
||||
TrustManagerFactory.get(mHost, secure)
|
||||
}, new SecureRandom());
|
||||
mSocket = sslContext.getSocketFactory().createSocket(mSocket, mHost, mPort,
|
||||
true);
|
||||
sslContext.init(null,
|
||||
new TrustManager[] { TrustManagerFactory.get(
|
||||
mHost, mPort, secure) },
|
||||
new SecureRandom());
|
||||
mSocket = TrustedSocketFactory.createSocket(sslContext, mSocket, mHost,
|
||||
mPort, true);
|
||||
mSocket.setSoTimeout(Store.SOCKET_READ_TIMEOUT);
|
||||
mIn = new BufferedInputStream(mSocket.getInputStream(), 1024);
|
||||
mOut = new BufferedOutputStream(mSocket.getOutputStream(), 512);
|
||||
|
|
|
@ -1,214 +0,0 @@
|
|||
|
||||
package com.fsck.k9.mail.store;
|
||||
|
||||
import android.app.Application;
|
||||
import android.content.Context;
|
||||
import android.util.Log;
|
||||
import com.fsck.k9.K9;
|
||||
import com.fsck.k9.helper.DomainNameChecker;
|
||||
import com.fsck.k9.mail.CertificateChainException;
|
||||
|
||||
import org.apache.commons.io.IOUtils;
|
||||
|
||||
import javax.net.ssl.TrustManager;
|
||||
import javax.net.ssl.X509TrustManager;
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.security.KeyStore;
|
||||
import java.security.KeyStoreException;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.security.cert.CertificateException;
|
||||
import java.security.cert.X509Certificate;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public final class TrustManagerFactory {
|
||||
private static final String LOG_TAG = "TrustManagerFactory";
|
||||
|
||||
private static X509TrustManager defaultTrustManager;
|
||||
private static X509TrustManager unsecureTrustManager;
|
||||
private static X509TrustManager localTrustManager;
|
||||
|
||||
private static File keyStoreFile;
|
||||
private static KeyStore keyStore;
|
||||
|
||||
|
||||
private static class SimpleX509TrustManager implements X509TrustManager {
|
||||
public void checkClientTrusted(X509Certificate[] chain, String authType)
|
||||
throws CertificateException {
|
||||
}
|
||||
|
||||
public void checkServerTrusted(X509Certificate[] chain, String authType)
|
||||
throws CertificateException {
|
||||
}
|
||||
|
||||
public X509Certificate[] getAcceptedIssuers() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private static class SecureX509TrustManager implements X509TrustManager {
|
||||
private static final Map<String, SecureX509TrustManager> mTrustManager =
|
||||
new HashMap<String, SecureX509TrustManager>();
|
||||
|
||||
private final String mHost;
|
||||
|
||||
private SecureX509TrustManager(String host) {
|
||||
mHost = host;
|
||||
}
|
||||
|
||||
public synchronized static X509TrustManager getInstance(String host) {
|
||||
SecureX509TrustManager trustManager;
|
||||
if (mTrustManager.containsKey(host)) {
|
||||
trustManager = mTrustManager.get(host);
|
||||
} else {
|
||||
trustManager = new SecureX509TrustManager(host);
|
||||
mTrustManager.put(host, trustManager);
|
||||
}
|
||||
|
||||
return trustManager;
|
||||
}
|
||||
|
||||
public void checkClientTrusted(X509Certificate[] chain, String authType)
|
||||
throws CertificateException {
|
||||
defaultTrustManager.checkClientTrusted(chain, authType);
|
||||
}
|
||||
|
||||
public void checkServerTrusted(X509Certificate[] chain, String authType)
|
||||
throws CertificateException {
|
||||
try {
|
||||
defaultTrustManager.checkServerTrusted(chain, authType);
|
||||
} catch (CertificateException e) {
|
||||
try {
|
||||
localTrustManager.checkServerTrusted(
|
||||
new X509Certificate[] { chain[0] }, authType);
|
||||
} catch (CertificateException ce) {
|
||||
throw new CertificateChainException(ce, chain);
|
||||
}
|
||||
}
|
||||
if (!DomainNameChecker.match(chain[0], mHost)) {
|
||||
try {
|
||||
String dn = chain[0].getSubjectDN().toString();
|
||||
if ((dn != null) && (dn.equalsIgnoreCase(keyStore.getCertificateAlias(chain[0])))) {
|
||||
return;
|
||||
}
|
||||
} catch (KeyStoreException e) {
|
||||
throw new CertificateException("Certificate cannot be verified; KeyStore Exception: " + e);
|
||||
}
|
||||
throw new CertificateChainException(
|
||||
"Certificate domain name does not match " + mHost,
|
||||
chain);
|
||||
}
|
||||
}
|
||||
|
||||
public X509Certificate[] getAcceptedIssuers() {
|
||||
return defaultTrustManager.getAcceptedIssuers();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static {
|
||||
java.io.InputStream fis = null;
|
||||
try {
|
||||
javax.net.ssl.TrustManagerFactory tmf = javax.net.ssl.TrustManagerFactory.getInstance("X509");
|
||||
Application app = K9.app;
|
||||
keyStoreFile = new File(app.getDir("KeyStore", Context.MODE_PRIVATE) + File.separator + "KeyStore.bks");
|
||||
keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
|
||||
try {
|
||||
fis = new java.io.FileInputStream(keyStoreFile);
|
||||
} catch (FileNotFoundException e1) {
|
||||
fis = null;
|
||||
}
|
||||
try {
|
||||
keyStore.load(fis, "".toCharArray());
|
||||
} catch (IOException e) {
|
||||
Log.e(LOG_TAG, "KeyStore IOException while initializing TrustManagerFactory ", e);
|
||||
keyStore = null;
|
||||
} catch (CertificateException e) {
|
||||
Log.e(LOG_TAG, "KeyStore CertificateException while initializing TrustManagerFactory ", e);
|
||||
keyStore = null;
|
||||
}
|
||||
tmf.init(keyStore);
|
||||
TrustManager[] tms = tmf.getTrustManagers();
|
||||
if (tms != null) {
|
||||
for (TrustManager tm : tms) {
|
||||
if (tm instanceof X509TrustManager) {
|
||||
localTrustManager = (X509TrustManager)tm;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
tmf = javax.net.ssl.TrustManagerFactory.getInstance("X509");
|
||||
tmf.init((KeyStore)null);
|
||||
tms = tmf.getTrustManagers();
|
||||
if (tms != null) {
|
||||
for (TrustManager tm : tms) {
|
||||
if (tm instanceof X509TrustManager) {
|
||||
defaultTrustManager = (X509TrustManager) tm;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
} catch (NoSuchAlgorithmException e) {
|
||||
Log.e(LOG_TAG, "Unable to get X509 Trust Manager ", e);
|
||||
} catch (KeyStoreException e) {
|
||||
Log.e(LOG_TAG, "Key Store exception while initializing TrustManagerFactory ", e);
|
||||
} finally {
|
||||
IOUtils.closeQuietly(fis);
|
||||
}
|
||||
unsecureTrustManager = new SimpleX509TrustManager();
|
||||
}
|
||||
|
||||
private TrustManagerFactory() {
|
||||
}
|
||||
|
||||
public static X509TrustManager get(String host, boolean secure) {
|
||||
return secure ? SecureX509TrustManager.getInstance(host) :
|
||||
unsecureTrustManager;
|
||||
}
|
||||
|
||||
public static KeyStore getKeyStore() {
|
||||
return keyStore;
|
||||
}
|
||||
|
||||
public static void addCertificateChain(String alias, X509Certificate[] chain) throws CertificateException {
|
||||
try {
|
||||
javax.net.ssl.TrustManagerFactory tmf = javax.net.ssl.TrustManagerFactory.getInstance("X509");
|
||||
for (X509Certificate element : chain) {
|
||||
keyStore.setCertificateEntry
|
||||
(element.getSubjectDN().toString(), element);
|
||||
}
|
||||
|
||||
tmf.init(keyStore);
|
||||
TrustManager[] tms = tmf.getTrustManagers();
|
||||
if (tms != null) {
|
||||
for (TrustManager tm : tms) {
|
||||
if (tm instanceof X509TrustManager) {
|
||||
localTrustManager = (X509TrustManager) tm;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
java.io.OutputStream keyStoreStream = null;
|
||||
try {
|
||||
keyStoreStream = new java.io.FileOutputStream(keyStoreFile);
|
||||
keyStore.store(keyStoreStream, "".toCharArray());
|
||||
} catch (FileNotFoundException e) {
|
||||
throw new CertificateException("Unable to write KeyStore: " + e.getMessage());
|
||||
} catch (CertificateException e) {
|
||||
throw new CertificateException("Unable to write KeyStore: " + e.getMessage());
|
||||
} catch (IOException e) {
|
||||
throw new CertificateException("Unable to write KeyStore: " + e.getMessage());
|
||||
} finally {
|
||||
IOUtils.closeQuietly(keyStoreStream);
|
||||
}
|
||||
|
||||
} catch (NoSuchAlgorithmException e) {
|
||||
Log.e(LOG_TAG, "Unable to get X509 Trust Manager ", e);
|
||||
} catch (KeyStoreException e) {
|
||||
Log.e(LOG_TAG, "Key Store exception while initializing TrustManagerFactory ", e);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,96 +0,0 @@
|
|||
package com.fsck.k9.mail.store;
|
||||
|
||||
import javax.net.ssl.SSLContext;
|
||||
import javax.net.ssl.SSLSocket;
|
||||
import javax.net.ssl.SSLSocketFactory;
|
||||
import java.io.IOException;
|
||||
import java.net.Socket;
|
||||
import java.security.KeyManagementException;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.security.SecureRandom;
|
||||
import java.util.*;
|
||||
|
||||
|
||||
/**
|
||||
* Filter and reorder list of cipher suites and TLS versions.
|
||||
*
|
||||
* <p>
|
||||
* See: <a href="http://op-co.de/blog/posts/android_ssl_downgrade/">http://op-co.de/blog/posts/android_ssl_downgrade/</a>
|
||||
* </p>
|
||||
*/
|
||||
public class TrustedSocketFactory {
|
||||
protected static final String ENABLED_CIPHERS[];
|
||||
protected static final String ENABLED_PROTOCOLS[];
|
||||
|
||||
static {
|
||||
String preferredCiphers[] = {
|
||||
"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA",
|
||||
"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA",
|
||||
"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA",
|
||||
"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA",
|
||||
"TLS_DHE_RSA_WITH_AES_128_CBC_SHA",
|
||||
"TLS_DHE_RSA_WITH_AES_256_CBC_SHA",
|
||||
"TLS_DHE_DSS_WITH_AES_128_CBC_SHA",
|
||||
"TLS_ECDHE_RSA_WITH_RC4_128_SHA",
|
||||
"TLS_ECDHE_ECDSA_WITH_RC4_128_SHA",
|
||||
"TLS_RSA_WITH_AES_128_CBC_SHA",
|
||||
"TLS_RSA_WITH_AES_256_CBC_SHA",
|
||||
"SSL_RSA_WITH_3DES_EDE_CBC_SHA",
|
||||
"SSL_RSA_WITH_RC4_128_SHA",
|
||||
"SSL_RSA_WITH_RC4_128_MD5",
|
||||
};
|
||||
String preferredProtocols[] = {
|
||||
"TLSv1.2", "TLSv1.1", "TLSv1"
|
||||
};
|
||||
|
||||
String[] supportedCiphers = null;
|
||||
String[] supportedProtocols = null;
|
||||
|
||||
try {
|
||||
SSLContext sslContext = SSLContext.getInstance("TLS");
|
||||
sslContext.init(null, null, new SecureRandom());
|
||||
SSLSocketFactory sf = sslContext.getSocketFactory();
|
||||
supportedCiphers = sf.getSupportedCipherSuites();
|
||||
SSLSocket sock = (SSLSocket)sf.createSocket();
|
||||
supportedProtocols = sock.getSupportedProtocols();
|
||||
} catch (IOException ioe) {
|
||||
ioe.printStackTrace();
|
||||
} catch (KeyManagementException kme) {
|
||||
kme.printStackTrace();
|
||||
} catch (NoSuchAlgorithmException nsae) {
|
||||
nsae.printStackTrace();
|
||||
}
|
||||
|
||||
ENABLED_CIPHERS = supportedCiphers == null ? null :
|
||||
filterBySupport(preferredCiphers, supportedCiphers);
|
||||
ENABLED_PROTOCOLS = supportedProtocols == null ? null :
|
||||
filterBySupport(preferredProtocols, supportedProtocols);
|
||||
}
|
||||
|
||||
protected static String[] filterBySupport(String[] preferred, String[] supported) {
|
||||
List<String> enabled = new ArrayList<String>();
|
||||
Set<String> available = new HashSet<String>();
|
||||
Collections.addAll(available, supported);
|
||||
|
||||
for (String item : preferred) {
|
||||
if (available.contains(item)) enabled.add(item);
|
||||
}
|
||||
return enabled.toArray(new String[enabled.size()]);
|
||||
}
|
||||
|
||||
public static Socket createSocket(SSLContext sslContext) throws IOException {
|
||||
SSLSocket socket = (SSLSocket) sslContext.getSocketFactory().createSocket();
|
||||
hardenSocket(socket);
|
||||
|
||||
return socket;
|
||||
}
|
||||
|
||||
private static void hardenSocket(SSLSocket sock) {
|
||||
if (ENABLED_CIPHERS != null) {
|
||||
sock.setEnabledCipherSuites(ENABLED_CIPHERS);
|
||||
}
|
||||
if (ENABLED_PROTOCOLS != null) {
|
||||
sock.setEnabledProtocols(ENABLED_PROTOCOLS);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -4,6 +4,8 @@ import org.apache.http.conn.ConnectTimeoutException;
|
|||
import org.apache.http.conn.scheme.LayeredSocketFactory;
|
||||
import org.apache.http.params.HttpParams;
|
||||
|
||||
import com.fsck.k9.net.ssl.TrustManagerFactory;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.InetAddress;
|
||||
import java.net.Socket;
|
||||
|
@ -26,10 +28,10 @@ public class WebDavSocketFactory implements LayeredSocketFactory {
|
|||
private SSLSocketFactory mSocketFactory;
|
||||
private org.apache.http.conn.ssl.SSLSocketFactory mSchemeSocketFactory;
|
||||
|
||||
public WebDavSocketFactory(String host, boolean secure) throws NoSuchAlgorithmException, KeyManagementException {
|
||||
public WebDavSocketFactory(String host, int port, boolean secure) throws NoSuchAlgorithmException, KeyManagementException {
|
||||
SSLContext sslContext = SSLContext.getInstance("TLS");
|
||||
sslContext.init(null, new TrustManager[] {
|
||||
TrustManagerFactory.get(host, secure)
|
||||
TrustManagerFactory.get(host, port, secure)
|
||||
}, new SecureRandom());
|
||||
mSocketFactory = sslContext.getSocketFactory();
|
||||
mSchemeSocketFactory = org.apache.http.conn.ssl.SSLSocketFactory.getSocketFactory();
|
||||
|
|
|
@ -1079,7 +1079,7 @@ public class WebDavStore extends Store {
|
|||
|
||||
SchemeRegistry reg = mHttpClient.getConnectionManager().getSchemeRegistry();
|
||||
try {
|
||||
Scheme s = new Scheme("https", new WebDavSocketFactory(mHost, mSecure), 443);
|
||||
Scheme s = new Scheme("https", new WebDavSocketFactory(mHost, 443, mSecure), 443);
|
||||
reg.register(s);
|
||||
} catch (NoSuchAlgorithmException nsa) {
|
||||
Log.e(K9.LOG_TAG, "NoSuchAlgorithmException in getHttpClient: " + nsa);
|
||||
|
|
|
@ -12,9 +12,9 @@ import com.fsck.k9.mail.filter.LineWrapOutputStream;
|
|||
import com.fsck.k9.mail.filter.PeekableInputStream;
|
||||
import com.fsck.k9.mail.filter.SmtpDataStuffing;
|
||||
import com.fsck.k9.mail.internet.MimeUtility;
|
||||
import com.fsck.k9.mail.store.TrustManagerFactory;
|
||||
import com.fsck.k9.mail.store.LocalStore.LocalMessage;
|
||||
import com.fsck.k9.mail.store.TrustedSocketFactory;
|
||||
import com.fsck.k9.net.ssl.TrustManagerFactory;
|
||||
import com.fsck.k9.net.ssl.TrustedSocketFactory;
|
||||
|
||||
import javax.net.ssl.SSLContext;
|
||||
import javax.net.ssl.SSLException;
|
||||
|
@ -242,9 +242,10 @@ public class SmtpTransport extends Transport {
|
|||
mConnectionSecurity == CONNECTION_SECURITY_SSL_OPTIONAL) {
|
||||
SSLContext sslContext = SSLContext.getInstance("TLS");
|
||||
boolean secure = mConnectionSecurity == CONNECTION_SECURITY_SSL_REQUIRED;
|
||||
sslContext.init(null, new TrustManager[] {
|
||||
TrustManagerFactory.get(mHost, secure)
|
||||
}, new SecureRandom());
|
||||
sslContext.init(null,
|
||||
new TrustManager[] { TrustManagerFactory.get(
|
||||
mHost, mPort, secure) },
|
||||
new SecureRandom());
|
||||
mSocket = TrustedSocketFactory.createSocket(sslContext);
|
||||
mSocket.connect(socketAddress, SOCKET_CONNECT_TIMEOUT);
|
||||
} else {
|
||||
|
@ -301,11 +302,11 @@ public class SmtpTransport extends Transport {
|
|||
|
||||
SSLContext sslContext = SSLContext.getInstance("TLS");
|
||||
boolean secure = mConnectionSecurity == CONNECTION_SECURITY_TLS_REQUIRED;
|
||||
sslContext.init(null, new TrustManager[] {
|
||||
TrustManagerFactory.get(mHost, secure)
|
||||
}, new SecureRandom());
|
||||
mSocket = sslContext.getSocketFactory().createSocket(mSocket, mHost, mPort,
|
||||
true);
|
||||
sslContext.init(null,
|
||||
new TrustManager[] { TrustManagerFactory.get(mHost,
|
||||
mPort, secure) }, new SecureRandom());
|
||||
mSocket = TrustedSocketFactory.createSocket(sslContext, mSocket, mHost,
|
||||
mPort, true);
|
||||
mIn = new PeekableInputStream(new BufferedInputStream(mSocket.getInputStream(),
|
||||
1024));
|
||||
mOut = mSocket.getOutputStream();
|
||||
|
|
|
@ -0,0 +1,139 @@
|
|||
|
||||
package com.fsck.k9.net.ssl;
|
||||
|
||||
import android.util.Log;
|
||||
|
||||
import com.fsck.k9.helper.DomainNameChecker;
|
||||
import com.fsck.k9.mail.CertificateChainException;
|
||||
import com.fsck.k9.security.LocalKeyStore;
|
||||
|
||||
import javax.net.ssl.TrustManager;
|
||||
import javax.net.ssl.X509TrustManager;
|
||||
import java.security.KeyStore;
|
||||
import java.security.KeyStoreException;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.security.cert.CertificateException;
|
||||
import java.security.cert.X509Certificate;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public final class TrustManagerFactory {
|
||||
private static final String LOG_TAG = "TrustManagerFactory";
|
||||
|
||||
private static X509TrustManager defaultTrustManager;
|
||||
private static X509TrustManager unsecureTrustManager;
|
||||
|
||||
private static LocalKeyStore keyStore;
|
||||
|
||||
private static class SimpleX509TrustManager implements X509TrustManager {
|
||||
public void checkClientTrusted(X509Certificate[] chain, String authType)
|
||||
throws CertificateException {
|
||||
}
|
||||
|
||||
public void checkServerTrusted(X509Certificate[] chain, String authType)
|
||||
throws CertificateException {
|
||||
}
|
||||
|
||||
public X509Certificate[] getAcceptedIssuers() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private static class SecureX509TrustManager implements X509TrustManager {
|
||||
private static final Map<String, SecureX509TrustManager> mTrustManager =
|
||||
new HashMap<String, SecureX509TrustManager>();
|
||||
|
||||
private final String mHost;
|
||||
private final int mPort;
|
||||
|
||||
private SecureX509TrustManager(String host, int port) {
|
||||
mHost = host;
|
||||
mPort = port;
|
||||
}
|
||||
|
||||
public synchronized static X509TrustManager getInstance(String host, int port) {
|
||||
String key = host + ":" + port;
|
||||
SecureX509TrustManager trustManager;
|
||||
if (mTrustManager.containsKey(key)) {
|
||||
trustManager = mTrustManager.get(key);
|
||||
} else {
|
||||
trustManager = new SecureX509TrustManager(host, port);
|
||||
mTrustManager.put(key, trustManager);
|
||||
}
|
||||
|
||||
return trustManager;
|
||||
}
|
||||
|
||||
public void checkClientTrusted(X509Certificate[] chain, String authType)
|
||||
throws CertificateException {
|
||||
defaultTrustManager.checkClientTrusted(chain, authType);
|
||||
}
|
||||
|
||||
public void checkServerTrusted(X509Certificate[] chain, String authType)
|
||||
throws CertificateException {
|
||||
String message = null;
|
||||
boolean foundInGlobalKeyStore = false;
|
||||
try {
|
||||
defaultTrustManager.checkServerTrusted(chain, authType);
|
||||
foundInGlobalKeyStore = true;
|
||||
} catch (CertificateException e) {
|
||||
message = e.getMessage();
|
||||
}
|
||||
|
||||
X509Certificate certificate = chain[0];
|
||||
|
||||
// Check the local key store if we couldn't verify the certificate using the global
|
||||
// key store or if the host name doesn't match the certificate name
|
||||
if (foundInGlobalKeyStore
|
||||
&& DomainNameChecker.match(certificate, mHost)
|
||||
|| keyStore.isValidCertificate(certificate, mHost, mPort)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (message == null) {
|
||||
message = (foundInGlobalKeyStore) ?
|
||||
"Certificate domain name does not match " + mHost :
|
||||
"Couldn't find certificate in local key store";
|
||||
}
|
||||
|
||||
throw new CertificateChainException(message, chain);
|
||||
}
|
||||
|
||||
public X509Certificate[] getAcceptedIssuers() {
|
||||
return defaultTrustManager.getAcceptedIssuers();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static {
|
||||
try {
|
||||
keyStore = LocalKeyStore.getInstance();
|
||||
|
||||
javax.net.ssl.TrustManagerFactory tmf = javax.net.ssl.TrustManagerFactory.getInstance("X509");
|
||||
tmf.init((KeyStore) null);
|
||||
|
||||
TrustManager[] tms = tmf.getTrustManagers();
|
||||
if (tms != null) {
|
||||
for (TrustManager tm : tms) {
|
||||
if (tm instanceof X509TrustManager) {
|
||||
defaultTrustManager = (X509TrustManager) tm;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (NoSuchAlgorithmException e) {
|
||||
Log.e(LOG_TAG, "Unable to get X509 Trust Manager ", e);
|
||||
} catch (KeyStoreException e) {
|
||||
Log.e(LOG_TAG, "Key Store exception while initializing TrustManagerFactory ", e);
|
||||
}
|
||||
unsecureTrustManager = new SimpleX509TrustManager();
|
||||
}
|
||||
|
||||
private TrustManagerFactory() {
|
||||
}
|
||||
|
||||
public static X509TrustManager get(String host, int port, boolean secure) {
|
||||
return secure ? SecureX509TrustManager.getInstance(host, port) :
|
||||
unsecureTrustManager;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,142 @@
|
|||
package com.fsck.k9.net.ssl;
|
||||
|
||||
import android.util.Log;
|
||||
|
||||
import com.fsck.k9.K9;
|
||||
|
||||
import javax.net.ssl.SSLContext;
|
||||
import javax.net.ssl.SSLSocket;
|
||||
import javax.net.ssl.SSLSocketFactory;
|
||||
import java.io.IOException;
|
||||
import java.net.Socket;
|
||||
import java.security.KeyManagementException;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.security.SecureRandom;
|
||||
import java.util.*;
|
||||
|
||||
|
||||
/**
|
||||
* Filter and reorder list of cipher suites and TLS versions.
|
||||
*/
|
||||
public class TrustedSocketFactory {
|
||||
protected static final String ENABLED_CIPHERS[];
|
||||
protected static final String ENABLED_PROTOCOLS[];
|
||||
|
||||
// Order taken from OpenSSL 1.0.1c
|
||||
protected static final String ORDERED_KNOWN_CIPHERS[] = {
|
||||
"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA",
|
||||
"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA",
|
||||
"TLS_DHE_RSA_WITH_AES_256_CBC_SHA",
|
||||
"TLS_DHE_DSS_WITH_AES_256_CBC_SHA",
|
||||
"TLS_ECDH_RSA_WITH_AES_256_CBC_SHA",
|
||||
"TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA",
|
||||
"TLS_RSA_WITH_AES_256_CBC_SHA",
|
||||
"TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA",
|
||||
"TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA",
|
||||
"TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA",
|
||||
"TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA",
|
||||
"SSL_RSA_WITH_3DES_EDE_CBC_SHA",
|
||||
"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA",
|
||||
"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA",
|
||||
"TLS_DHE_RSA_WITH_AES_128_CBC_SHA",
|
||||
"TLS_DHE_DSS_WITH_AES_128_CBC_SHA",
|
||||
"TLS_ECDH_RSA_WITH_AES_128_CBC_SHA",
|
||||
"TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA",
|
||||
"TLS_RSA_WITH_AES_128_CBC_SHA",
|
||||
"TLS_ECDHE_RSA_WITH_RC4_128_SHA",
|
||||
"TLS_ECDHE_ECDSA_WITH_RC4_128_SHA",
|
||||
"TLS_ECDH_RSA_WITH_RC4_128_SHA",
|
||||
"TLS_ECDH_ECDSA_WITH_RC4_128_SHA",
|
||||
"SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA",
|
||||
"SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA",
|
||||
"SSL_RSA_WITH_RC4_128_SHA",
|
||||
"SSL_RSA_WITH_RC4_128_MD5",
|
||||
};
|
||||
|
||||
protected static final String[] BLACKLISTED_CIPHERS = {
|
||||
"SSL_RSA_WITH_DES_CBC_SHA",
|
||||
"SSL_DHE_RSA_WITH_DES_CBC_SHA",
|
||||
"SSL_DHE_DSS_WITH_DES_CBC_SHA",
|
||||
"SSL_RSA_EXPORT_WITH_RC4_40_MD5",
|
||||
"SSL_RSA_EXPORT_WITH_DES40_CBC_SHA",
|
||||
"SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA",
|
||||
"SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA",
|
||||
};
|
||||
|
||||
protected static final String ORDERED_KNOWN_PROTOCOLS[] = {
|
||||
"TLSv1.2", "TLSv1.1", "TLSv1", "SSLv3"
|
||||
};
|
||||
|
||||
static {
|
||||
String[] enabledCiphers = null;
|
||||
String[] enabledProtocols = null;
|
||||
|
||||
try {
|
||||
SSLContext sslContext = SSLContext.getInstance("TLS");
|
||||
sslContext.init(null, null, new SecureRandom());
|
||||
SSLSocketFactory sf = sslContext.getSocketFactory();
|
||||
SSLSocket sock = (SSLSocket) sf.createSocket();
|
||||
enabledCiphers = sock.getEnabledCipherSuites();
|
||||
enabledProtocols = sock.getEnabledProtocols();
|
||||
} catch (Exception e) {
|
||||
Log.e(K9.LOG_TAG, "Error getting information about available SSL/TLS ciphers and " +
|
||||
"protocols", e);
|
||||
}
|
||||
|
||||
ENABLED_CIPHERS = (enabledCiphers == null) ? null :
|
||||
reorder(enabledCiphers, ORDERED_KNOWN_CIPHERS, BLACKLISTED_CIPHERS);
|
||||
|
||||
ENABLED_PROTOCOLS = (enabledProtocols == null) ? null :
|
||||
reorder(enabledProtocols, ORDERED_KNOWN_PROTOCOLS, null);
|
||||
}
|
||||
|
||||
protected static String[] reorder(String[] enabled, String[] known, String[] blacklisted) {
|
||||
List<String> unknown = new ArrayList<String>();
|
||||
Collections.addAll(unknown, enabled);
|
||||
|
||||
// Remove blacklisted items
|
||||
if (blacklisted != null) {
|
||||
for (String item : blacklisted) {
|
||||
unknown.remove(item);
|
||||
}
|
||||
}
|
||||
|
||||
// Order known items
|
||||
List<String> result = new ArrayList<String>();
|
||||
for (String item : known) {
|
||||
if (unknown.remove(item)) {
|
||||
result.add(item);
|
||||
}
|
||||
}
|
||||
|
||||
// Add unknown items at the end. This way security won't get worse when unknown ciphers
|
||||
// start showing up in the future.
|
||||
result.addAll(unknown);
|
||||
|
||||
return result.toArray(new String[result.size()]);
|
||||
}
|
||||
|
||||
public static Socket createSocket(SSLContext sslContext) throws IOException {
|
||||
SSLSocket socket = (SSLSocket) sslContext.getSocketFactory().createSocket();
|
||||
hardenSocket(socket);
|
||||
|
||||
return socket;
|
||||
}
|
||||
|
||||
public static Socket createSocket(SSLContext sslContext, Socket s, String host, int port,
|
||||
boolean autoClose) throws IOException {
|
||||
SSLSocket socket = (SSLSocket) sslContext.getSocketFactory().createSocket(s, host, port, autoClose);
|
||||
hardenSocket(socket);
|
||||
|
||||
return socket;
|
||||
}
|
||||
|
||||
private static void hardenSocket(SSLSocket sock) {
|
||||
if (ENABLED_CIPHERS != null) {
|
||||
sock.setEnabledCipherSuites(ENABLED_CIPHERS);
|
||||
}
|
||||
if (ENABLED_PROTOCOLS != null) {
|
||||
sock.setEnabledProtocols(ENABLED_PROTOCOLS);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,5 +1,6 @@
|
|||
package com.fsck.k9.provider;
|
||||
|
||||
import android.app.Application;
|
||||
import android.content.ContentProvider;
|
||||
import android.content.ContentResolver;
|
||||
import android.content.ContentValues;
|
||||
|
@ -981,7 +982,7 @@ public class MessageProvider extends ContentProvider {
|
|||
|
||||
K9.registerApplicationAware(new K9.ApplicationAware() {
|
||||
@Override
|
||||
public void initializeComponent(final K9 application) {
|
||||
public void initializeComponent(final Application application) {
|
||||
Log.v(K9.LOG_TAG, "Registering content resolver notifier");
|
||||
|
||||
MessagingController.getInstance(application).addListener(new MessagingListener() {
|
||||
|
|
|
@ -0,0 +1,193 @@
|
|||
package com.fsck.k9.security;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.security.KeyStore;
|
||||
import java.security.KeyStoreException;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.security.cert.Certificate;
|
||||
import java.security.cert.CertificateException;
|
||||
import java.security.cert.X509Certificate;
|
||||
|
||||
import org.apache.commons.io.IOUtils;
|
||||
|
||||
import android.util.Log;
|
||||
|
||||
import com.fsck.k9.K9;
|
||||
|
||||
public class LocalKeyStore {
|
||||
private static final int KEY_STORE_FILE_VERSION = 1;
|
||||
|
||||
private static String sKeyStoreLocation;
|
||||
|
||||
public static void setKeyStoreLocation(String directory) {
|
||||
sKeyStoreLocation = directory;
|
||||
}
|
||||
|
||||
private static class LocalKeyStoreHolder {
|
||||
static final LocalKeyStore INSTANCE = new LocalKeyStore();
|
||||
}
|
||||
|
||||
public static LocalKeyStore getInstance() {
|
||||
return LocalKeyStoreHolder.INSTANCE;
|
||||
}
|
||||
|
||||
|
||||
private File mKeyStoreFile;
|
||||
private KeyStore mKeyStore;
|
||||
|
||||
|
||||
private LocalKeyStore() {
|
||||
try {
|
||||
upgradeKeyStoreFile();
|
||||
setKeyStoreFile(null);
|
||||
} catch (CertificateException e) {
|
||||
/*
|
||||
* Can happen if setKeyStoreLocation(String directory) has not been
|
||||
* called before the first call to getInstance(). Not necessarily an
|
||||
* error, presuming setKeyStoreFile(File) is called next with a
|
||||
* non-null File.
|
||||
*/
|
||||
Log.w(K9.LOG_TAG, "Local key store has not been initialized");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Reinitialize the local key store with certificates contained in
|
||||
* {@code file}
|
||||
*
|
||||
* @param file
|
||||
* {@link File} containing locally saved certificates. May be 0
|
||||
* length, in which case it is deleted and recreated. May be
|
||||
* {@code null}, in which case a default file location is used.
|
||||
* @throws CertificateException
|
||||
* Occurs if {@code file == null} and
|
||||
* {@code setKeyStoreLocation(directory)} was not called previously.
|
||||
*/
|
||||
public synchronized void setKeyStoreFile(File file) throws CertificateException {
|
||||
if (file == null) {
|
||||
file = new File(getKeyStoreFilePath(KEY_STORE_FILE_VERSION));
|
||||
}
|
||||
if (file.length() == 0) {
|
||||
/*
|
||||
* The file may be empty (e.g., if it was created with
|
||||
* File.createTempFile). We can't pass an empty file to
|
||||
* Keystore.load. Instead, we let it be created anew.
|
||||
*/
|
||||
file.delete();
|
||||
}
|
||||
|
||||
FileInputStream fis = null;
|
||||
try {
|
||||
fis = new FileInputStream(file);
|
||||
} catch (FileNotFoundException e) {
|
||||
// If the file doesn't exist, that's fine, too
|
||||
}
|
||||
|
||||
try {
|
||||
KeyStore store = KeyStore.getInstance(KeyStore.getDefaultType());
|
||||
store.load(fis, "".toCharArray());
|
||||
mKeyStore = store;
|
||||
mKeyStoreFile = file;
|
||||
} catch (Exception e) {
|
||||
Log.e(K9.LOG_TAG, "Failed to initialize local key store", e);
|
||||
// Use of the local key store is effectively disabled.
|
||||
mKeyStore = null;
|
||||
mKeyStoreFile = null;
|
||||
} finally {
|
||||
IOUtils.closeQuietly(fis);
|
||||
}
|
||||
}
|
||||
|
||||
public synchronized void addCertificate(String host, int port,
|
||||
X509Certificate certificate) throws CertificateException {
|
||||
if (mKeyStore == null) {
|
||||
throw new CertificateException(
|
||||
"Certificate not added because key store not initialized");
|
||||
}
|
||||
try {
|
||||
mKeyStore.setCertificateEntry(getCertKey(host, port), certificate);
|
||||
} catch (KeyStoreException e) {
|
||||
throw new CertificateException(
|
||||
"Failed to add certificate to local key store", e);
|
||||
}
|
||||
writeCertificateFile();
|
||||
}
|
||||
|
||||
private void writeCertificateFile() throws CertificateException {
|
||||
java.io.OutputStream keyStoreStream = null;
|
||||
try {
|
||||
keyStoreStream = new java.io.FileOutputStream(mKeyStoreFile);
|
||||
mKeyStore.store(keyStoreStream, "".toCharArray());
|
||||
} catch (FileNotFoundException e) {
|
||||
throw new CertificateException("Unable to write KeyStore: "
|
||||
+ e.getMessage());
|
||||
} catch (CertificateException e) {
|
||||
throw new CertificateException("Unable to write KeyStore: "
|
||||
+ e.getMessage());
|
||||
} catch (IOException e) {
|
||||
throw new CertificateException("Unable to write KeyStore: "
|
||||
+ e.getMessage());
|
||||
} catch (NoSuchAlgorithmException e) {
|
||||
throw new CertificateException("Unable to write KeyStore: "
|
||||
+ e.getMessage());
|
||||
} catch (KeyStoreException e) {
|
||||
throw new CertificateException("Unable to write KeyStore: "
|
||||
+ e.getMessage());
|
||||
} finally {
|
||||
IOUtils.closeQuietly(keyStoreStream);
|
||||
}
|
||||
}
|
||||
|
||||
public synchronized boolean isValidCertificate(Certificate certificate,
|
||||
String host, int port) {
|
||||
if (mKeyStore == null) {
|
||||
return false;
|
||||
}
|
||||
Certificate storedCert = null;
|
||||
try {
|
||||
storedCert = mKeyStore.getCertificate(getCertKey(host, port));
|
||||
return (storedCert != null && storedCert.equals(certificate));
|
||||
} catch (KeyStoreException e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private static String getCertKey(String host, int port) {
|
||||
return host + ":" + port;
|
||||
}
|
||||
|
||||
public synchronized void deleteCertificate(String oldHost, int oldPort) {
|
||||
if (mKeyStore == null) {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
mKeyStore.deleteEntry(getCertKey(oldHost, oldPort));
|
||||
writeCertificateFile();
|
||||
} catch (KeyStoreException e) {
|
||||
// Ignore: most likely there was no cert. found
|
||||
} catch (CertificateException e) {
|
||||
Log.e(K9.LOG_TAG, "Error updating the local key store file", e);
|
||||
}
|
||||
}
|
||||
|
||||
private void upgradeKeyStoreFile() throws CertificateException {
|
||||
if (KEY_STORE_FILE_VERSION > 0) {
|
||||
// Blow away version "0" because certificate aliases have changed.
|
||||
new File(getKeyStoreFilePath(0)).delete();
|
||||
}
|
||||
}
|
||||
|
||||
private String getKeyStoreFilePath(int version) throws CertificateException {
|
||||
if (sKeyStoreLocation == null) {
|
||||
throw new CertificateException("Local key store location has not been initialized");
|
||||
}
|
||||
if (version < 1) {
|
||||
return sKeyStoreLocation + File.separator + "KeyStore.bks";
|
||||
} else {
|
||||
return sKeyStoreLocation + File.separator + "KeyStore_v" + version + ".bks";
|
||||
}
|
||||
}
|
||||
}
|
|
@ -8,7 +8,6 @@ import android.util.AttributeSet;
|
|||
import android.util.Log;
|
||||
import android.view.KeyEvent;
|
||||
import android.webkit.WebSettings;
|
||||
import android.webkit.WebView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.fsck.k9.K9;
|
||||
|
@ -26,7 +25,7 @@ public class MessageWebView extends RigidWebView {
|
|||
* isn't exposed via the official Android API. That's why we use reflection to be able
|
||||
* to call the method.
|
||||
*/
|
||||
public static final Method mGetBlockNetworkLoads = K9.getMethod(WebSettings.class, "setBlockNetworkLoads");
|
||||
public static final Method mSetBlockNetworkLoads = K9.getMethod(WebSettings.class, "setBlockNetworkLoads");
|
||||
|
||||
/**
|
||||
* Check whether the single column layout algorithm can be used on this version of Android.
|
||||
|
@ -72,17 +71,20 @@ public class MessageWebView extends RigidWebView {
|
|||
return;
|
||||
}
|
||||
|
||||
// Block network loads.
|
||||
if (mGetBlockNetworkLoads != null) {
|
||||
/*
|
||||
* Block network loads.
|
||||
*
|
||||
* Images with content: URIs will not be blocked, nor
|
||||
* will network images that are already in the WebView cache.
|
||||
*
|
||||
*/
|
||||
if (mSetBlockNetworkLoads != null) {
|
||||
try {
|
||||
mGetBlockNetworkLoads.invoke(getSettings(), shouldBlockNetworkData);
|
||||
mSetBlockNetworkLoads.invoke(getSettings(), shouldBlockNetworkData);
|
||||
} catch (Exception e) {
|
||||
Log.e(K9.LOG_TAG, "Error on invoking WebSettings.setBlockNetworkLoads()", e);
|
||||
}
|
||||
}
|
||||
|
||||
// Block network images.
|
||||
getSettings().setBlockNetworkImage(shouldBlockNetworkData);
|
||||
}
|
||||
|
||||
|
||||
|
@ -111,12 +113,7 @@ public class MessageWebView extends RigidWebView {
|
|||
webSettings.setBuiltInZoomControls(true);
|
||||
webSettings.setUseWideViewPort(true);
|
||||
if (K9.autofitWidth()) {
|
||||
// 1% will be smaller than overview, so it effectively
|
||||
// goes into overview mode.
|
||||
// Tried the following, neither of which worked:
|
||||
// webSettings.setLoadWithOverviewMode(true);
|
||||
// setInitialScale(0);
|
||||
setInitialScale(1);
|
||||
webSettings.setLoadWithOverviewMode(true);
|
||||
}
|
||||
|
||||
disableDisplayZoomControls();
|
||||
|
@ -185,6 +182,7 @@ public class MessageWebView extends RigidWebView {
|
|||
content += HtmlConverter.cssStylePre();
|
||||
content += "</head><body>" + text + "</body></html>";
|
||||
loadDataWithBaseURL("http://", content, "text/html", "utf-8", null);
|
||||
resumeTimers();
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package com.fsck.k9.view;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.ActivityNotFoundException;
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
|
@ -191,14 +192,14 @@ public class SingleMessageView extends LinearLayout implements OnClickListener,
|
|||
switch (item.getItemId()) {
|
||||
case MENU_ITEM_LINK_VIEW: {
|
||||
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
|
||||
getContext().startActivity(intent);
|
||||
startActivityIfAvailable(getContext(), intent);
|
||||
break;
|
||||
}
|
||||
case MENU_ITEM_LINK_SHARE: {
|
||||
Intent intent = new Intent(Intent.ACTION_SEND);
|
||||
intent.setType("text/plain");
|
||||
intent.putExtra(Intent.EXTRA_TEXT, url);
|
||||
getContext().startActivity(intent);
|
||||
startActivityIfAvailable(getContext(), intent);
|
||||
break;
|
||||
}
|
||||
case MENU_ITEM_LINK_COPY: {
|
||||
|
@ -243,7 +244,7 @@ public class SingleMessageView extends LinearLayout implements OnClickListener,
|
|||
// AttachmentProvider
|
||||
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
||||
}
|
||||
getContext().startActivity(intent);
|
||||
startActivityIfAvailable(getContext(), intent);
|
||||
break;
|
||||
}
|
||||
case MENU_ITEM_IMAGE_SAVE: {
|
||||
|
@ -291,7 +292,7 @@ public class SingleMessageView extends LinearLayout implements OnClickListener,
|
|||
case MENU_ITEM_PHONE_CALL: {
|
||||
Uri uri = Uri.parse(WebView.SCHEME_TEL + phoneNumber);
|
||||
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
|
||||
getContext().startActivity(intent);
|
||||
startActivityIfAvailable(getContext(), intent);
|
||||
break;
|
||||
}
|
||||
case MENU_ITEM_PHONE_SAVE: {
|
||||
|
@ -336,7 +337,7 @@ public class SingleMessageView extends LinearLayout implements OnClickListener,
|
|||
case MENU_ITEM_EMAIL_SEND: {
|
||||
Uri uri = Uri.parse(WebView.SCHEME_MAILTO + email);
|
||||
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
|
||||
getContext().startActivity(intent);
|
||||
startActivityIfAvailable(getContext(), intent);
|
||||
break;
|
||||
}
|
||||
case MENU_ITEM_EMAIL_SAVE: {
|
||||
|
@ -375,6 +376,14 @@ public class SingleMessageView extends LinearLayout implements OnClickListener,
|
|||
}
|
||||
}
|
||||
|
||||
private void startActivityIfAvailable(Context context, Intent intent) {
|
||||
try {
|
||||
context.startActivity(intent);
|
||||
} catch (ActivityNotFoundException e) {
|
||||
Toast.makeText(context, R.string.error_activity_not_found, Toast.LENGTH_LONG).show();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
switch (view.getId()) {
|
||||
|
|
|
@ -0,0 +1,316 @@
|
|||
package com.fsck.k9.net.ssl;
|
||||
|
||||
import javax.net.ssl.X509TrustManager;
|
||||
|
||||
import com.fsck.k9.security.LocalKeyStore;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.File;
|
||||
import java.security.cert.CertificateException;
|
||||
import java.security.cert.CertificateFactory;
|
||||
import java.security.cert.X509Certificate;
|
||||
import android.test.AndroidTestCase;
|
||||
|
||||
/**
|
||||
* Test the functionality of {@link TrustManagerFactory}.
|
||||
*/
|
||||
public class TrustManagerFactoryTest extends AndroidTestCase {
|
||||
public static final String MATCHING_HOST = "k9.example.com";
|
||||
public static final String NOT_MATCHING_HOST = "bla.example.com";
|
||||
public static final int PORT1 = 993;
|
||||
public static final int PORT2 = 465;
|
||||
|
||||
private static final String K9_EXAMPLE_COM_CERT1 =
|
||||
"-----BEGIN CERTIFICATE-----\n"
|
||||
+ "MIICCTCCAXICCQD/R0TV7d0C5TANBgkqhkiG9w0BAQUFADBJMQswCQYDVQQGEwJD\n"
|
||||
+ "SDETMBEGA1UECBMKU29tZS1TdGF0ZTEMMAoGA1UEChMDSy05MRcwFQYDVQQDEw5r\n"
|
||||
+ "OS5leGFtcGxlLmNvbTAeFw0xMTA5MDYxOTU3MzVaFw0yMTA5MDMxOTU3MzVaMEkx\n"
|
||||
+ "CzAJBgNVBAYTAkNIMRMwEQYDVQQIEwpTb21lLVN0YXRlMQwwCgYDVQQKEwNLLTkx\n"
|
||||
+ "FzAVBgNVBAMTDms5LmV4YW1wbGUuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB\n"
|
||||
+ "iQKBgQCp7FvHRaQaOIu3iyB5GB0PtPCxy/bLlBxBb8p9QsMimX2Yz3SNjWVUzU5N\n"
|
||||
+ "ggpXmmeGopLAnvZlhWYSx0yIGWwPB44kGK5eaYDRWav+K+XXgdNCJij1UWPSmFwZ\n"
|
||||
+ "hUoNbrahco5AFw0jC1qi+3Dht6Y64nfNzTOYTcm1Pz4tqXiADQIDAQABMA0GCSqG\n"
|
||||
+ "SIb3DQEBBQUAA4GBAIPsgd6fuFRojSOAcUyhaoKaY5hXJf8d7R3AYWxcAPYmn6g7\n"
|
||||
+ "3Zms+f7/CH0y/tM81oBTlq9ZLbrJyLzC7vG1pqWHMNaK7miAho22IRuk+HwvL6OA\n"
|
||||
+ "uH3x3W1/mH4ci268cIFVmofID0nYLTqOxBTczfYhI7q0VBUXqv/bZ+3bVMSh\n"
|
||||
+ "-----END CERTIFICATE-----\n";
|
||||
|
||||
private static final String K9_EXAMPLE_COM_CERT2 =
|
||||
"-----BEGIN CERTIFICATE-----\n"
|
||||
+ "MIICCTCCAXICCQDMryqq0gZ80jANBgkqhkiG9w0BAQUFADBJMQswCQYDVQQGEwJD\n"
|
||||
+ "SDETMBEGA1UECBMKU29tZS1TdGF0ZTEMMAoGA1UEChMDSy05MRcwFQYDVQQDEw5r\n"
|
||||
+ "OS5leGFtcGxlLmNvbTAeFw0xMTA5MDYyMDAwNTVaFw0yMTA5MDMyMDAwNTVaMEkx\n"
|
||||
+ "CzAJBgNVBAYTAkNIMRMwEQYDVQQIEwpTb21lLVN0YXRlMQwwCgYDVQQKEwNLLTkx\n"
|
||||
+ "FzAVBgNVBAMTDms5LmV4YW1wbGUuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB\n"
|
||||
+ "iQKBgQDOLzRucC3tuXL/NthnGkgTnVn03balrvYPkABvvrG83Dpp5ipIC/iPsQvw\n"
|
||||
+ "pvqypSNHqrloEB7o3obQ8tiRDtbOsNQ7gKJ+YoD1drDNClV0pBvr7mvRgA2AcDpw\n"
|
||||
+ "CTLKwVIyKmE+rm3vl8CWFd9CqHcYQ3Mc1KXXasN4DEAzZ/sHRwIDAQABMA0GCSqG\n"
|
||||
+ "SIb3DQEBBQUAA4GBAFDcHFpmZ9SUrc0WayrKNUpSaHLRG94uzIx0VUMLROcXEEWU\n"
|
||||
+ "soRw1RfoSBkcy2SEjB4CAvex6qAiOT3ubXuL+BYFav/uU8JPWZ9ovSAYqBZ9aUJo\n"
|
||||
+ "G6A2hvA1lpvP97qQ/NFaGQ38XqSykZamZwSx3PlZUM/i9S9n/3MfuuXWqtLC\n"
|
||||
+ "-----END CERTIFICATE-----\n";
|
||||
|
||||
private static final String CA_CERT =
|
||||
"-----BEGIN CERTIFICATE-----\n"
|
||||
+ "MIIDbTCCAlWgAwIBAgIJANCdQ+Cwnyg+MA0GCSqGSIb3DQEBBQUAME0xCzAJBgNV\n"
|
||||
+ "BAYTAkNIMRMwEQYDVQQIDApTb21lLVN0YXRlMQwwCgYDVQQKDANLLTkxGzAZBgNV\n"
|
||||
+ "BAMMEnRlc3QtY2EuazltYWlsLm9yZzAeFw0xMzEyMDIxMjUwNThaFw0yMzExMzAx\n"
|
||||
+ "MjUwNThaME0xCzAJBgNVBAYTAkNIMRMwEQYDVQQIDApTb21lLVN0YXRlMQwwCgYD\n"
|
||||
+ "VQQKDANLLTkxGzAZBgNVBAMMEnRlc3QtY2EuazltYWlsLm9yZzCCASIwDQYJKoZI\n"
|
||||
+ "hvcNAQEBBQADggEPADCCAQoCggEBAJ+YLg9enfFk5eba6B3LtQzUE7GiR2tIpQSi\n"
|
||||
+ "zHMtHzn8KUnRDiGwC8VnSuWCOX7hXyQ0P6i2+DVRVBYOAeDCNMZHOq1hRqI66B33\n"
|
||||
+ "QqLfkBnJAIDeLqfqlgigHs1+//7eagVA6Z38ZFre3PFuKnK9NCwS+gz7PKw/poIG\n"
|
||||
+ "/FZP+ltMlkwvPww4S8SMlY6RXXH09+S/uM8aG6DUBT298eoAXTbSEIeaNhwBHZPe\n"
|
||||
+ "rXqqzd8QDAIE9BFXSkh/BQiVEFDPSBMSdmUzUAsT2aM8osntnKWY5/G7B60wutvA\n"
|
||||
+ "jYCULgtR6lR6jIDbG3ECHVDsTWR+Pgl+h1zeyERhN5iG1ffOtLUCAwEAAaNQME4w\n"
|
||||
+ "HQYDVR0OBBYEFBlUYiTGlOu9zIPx8Q13xcnDL5QpMB8GA1UdIwQYMBaAFBlUYiTG\n"
|
||||
+ "lOu9zIPx8Q13xcnDL5QpMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEB\n"
|
||||
+ "AJ6oC6O6I6p0vgA4+7dfyxKX745zl/fK6IVHV/GO75mLjVdyw00USbHGHAmZM5C6\n"
|
||||
+ "eCKVV83m/Re5lHf8ZBjc+3rWdGCEjwyUwvDeUvzpcKF3wPxYDUOOqSI+np1cxj6q\n"
|
||||
+ "6+XI5QXwyUObWtWyw1GOpLuFPbxny/TlRWvk8AfOaLANg3UhvITNZMdMHoQ2sJ3u\n"
|
||||
+ "MrQ+CHe/Tal2MkwiCrYT91f3YWVaswiEAxpqxnwuSXnYyaJpqMCcA1txBDgX84FP\n"
|
||||
+ "dSIM4ut+QltV2Tlx0lpH43dvttAwkPB+iL7ZF6zUki/Nq5aKyNoHOL88TACe18Lq\n"
|
||||
+ "zOztD2HZfxhIz3uH2gXmqUo=\n"
|
||||
+ "-----END CERTIFICATE-----\n";
|
||||
|
||||
private static final String CERT3 =
|
||||
"-----BEGIN CERTIFICATE-----\n"
|
||||
+ "MIIDjDCCAnSgAwIBAgIBATANBgkqhkiG9w0BAQUFADBNMQswCQYDVQQGEwJDSDET\n"
|
||||
+ "MBEGA1UECAwKU29tZS1TdGF0ZTEMMAoGA1UECgwDSy05MRswGQYDVQQDDBJ0ZXN0\n"
|
||||
+ "LWNhLms5bWFpbC5vcmcwHhcNMTMxMjAyMTMxNzEyWhcNMjMxMTMwMTMxNzEyWjBJ\n"
|
||||
+ "MQswCQYDVQQGEwJDSDETMBEGA1UECAwKU29tZS1TdGF0ZTEMMAoGA1UECgwDSy05\n"
|
||||
+ "MRcwFQYDVQQDDA5rOS5leGFtcGxlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEP\n"
|
||||
+ "ADCCAQoCggEBAL9OvWtLcp6bd40Hai6A6cCmJRwn3mwcTB8E41iEQgQexqx/f9RR\n"
|
||||
+ "BuQi2s80k/vXq8QU2GbwGiPkBBXMUHuiT27Lsoj8kMOnH5BXeKLaWDiMpvNqfent\n"
|
||||
+ "UzBXSIOK6Yu9UtlU0MzAuYxXaunrXoS5Dejrbz743P9yW8hx7pANNU0Qfck+ekR7\n"
|
||||
+ "Q4PWNgfbFHrnvcobzuFzJeWg8x9iTTsVGIaX9AVMjMUlIKvhhOWTlcTJHKzU67sp\n"
|
||||
+ "OLzwH9IJ3hqwdmsgZu5D/2AZlYlpFk6AlnoxNhfy9m+T41P8+iWDYCJoxvf3d6gl\n"
|
||||
+ "TlZ1FL0PzPReXeAgugyJ1qx5gJ9Vhf/rBaUCAwEAAaN7MHkwCQYDVR0TBAIwADAs\n"
|
||||
+ "BglghkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYD\n"
|
||||
+ "VR0OBBYEFPm9hbTbfmcnjjfOzrec/TrvsS5ZMB8GA1UdIwQYMBaAFBlUYiTGlOu9\n"
|
||||
+ "zIPx8Q13xcnDL5QpMA0GCSqGSIb3DQEBBQUAA4IBAQAgvYQoCEklJNXBwLuWpSMx\n"
|
||||
+ "CQrVxLI1XsYRzqMs0kUgM59OhwAPwdSR+UEuyXQ8QGKwSt1d//DkdhzQDATXSBYc\n"
|
||||
+ "VHr16ocYPGNd/VNo7BoUCvykp3cCH3WxYYpAugXbLU8RBJzQwCM75SLQtFe20qfI\n"
|
||||
+ "LErbrmKONtMk3Rfg6XtLLcaOVh1A3q13CKqDvwtZT4oo56EJOvkBkzlCvTuxJb6s\n"
|
||||
+ "FD9pwROFpIN8O54C333tZzj4TDP4g9zb3sofAJ4U0osfQAXekZJdZETFGJsU6TIM\n"
|
||||
+ "Dcf5/G8bZe2DnavBQfML1wI5d7NUWE8CWb95SsIvFXI0qZE0oIR+axBVl9u97uaO\n"
|
||||
+ "-----END CERTIFICATE-----\n";
|
||||
|
||||
private static final String STARFIELD_CERT =
|
||||
"-----BEGIN CERTIFICATE-----\n" +
|
||||
"MIIFBzCCA++gAwIBAgICAgEwDQYJKoZIhvcNAQEFBQAwaDELMAkGA1UEBhMCVVMx\n" +
|
||||
"JTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAsT\n" +
|
||||
"KVN0YXJmaWVsZCBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2\n" +
|
||||
"MTExNjAxMTU0MFoXDTI2MTExNjAxMTU0MFowgdwxCzAJBgNVBAYTAlVTMRAwDgYD\n" +
|
||||
"VQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFy\n" +
|
||||
"ZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTkwNwYDVQQLEzBodHRwOi8vY2VydGlm\n" +
|
||||
"aWNhdGVzLnN0YXJmaWVsZHRlY2guY29tL3JlcG9zaXRvcnkxMTAvBgNVBAMTKFN0\n" +
|
||||
"YXJmaWVsZCBTZWN1cmUgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxETAPBgNVBAUT\n" +
|
||||
"CDEwNjg4NDM1MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4qddo+1m\n" +
|
||||
"72ovKzYf3Y3TBQKgyg9eGa44cs8W2lRKy0gK9KFzEWWFQ8lbFwyaK74PmFF6YCkN\n" +
|
||||
"bN7i6OUVTVb/kNGnpgQ/YAdKym+lEOez+FyxvCsq3AF59R019Xoog/KTc4KJrGBt\n" +
|
||||
"y8JIwh3UBkQXPKwBR6s+cIQJC7ggCEAgh6FjGso+g9I3s5iNMj83v6G3W1/eXDOS\n" +
|
||||
"zz4HzrlIS+LwVVAv+HBCidGTlopj2WYN5lhuuW2QvcrchGbyOY5bplhVc8tibBvX\n" +
|
||||
"IBY7LFn1y8hWMkpQJ7pV06gBy3KpdIsMrTrlFbYq32X43or174Q7+edUZQuAvUdF\n" +
|
||||
"pfBE2FM7voDxLwIDAQABo4IBRDCCAUAwHQYDVR0OBBYEFElLUifRG7zyoSFqYntR\n" +
|
||||
"QnqK19VWMB8GA1UdIwQYMBaAFL9ft9HO3R+G9FtVrNzXEMIOqYjnMBIGA1UdEwEB\n" +
|
||||
"/wQIMAYBAf8CAQAwOQYIKwYBBQUHAQEELTArMCkGCCsGAQUFBzABhh1odHRwOi8v\n" +
|
||||
"b2NzcC5zdGFyZmllbGR0ZWNoLmNvbTBMBgNVHR8ERTBDMEGgP6A9hjtodHRwOi8v\n" +
|
||||
"Y2VydGlmaWNhdGVzLnN0YXJmaWVsZHRlY2guY29tL3JlcG9zaXRvcnkvc2Zyb290\n" +
|
||||
"LmNybDBRBgNVHSAESjBIMEYGBFUdIAAwPjA8BggrBgEFBQcCARYwaHR0cDovL2Nl\n" +
|
||||
"cnRpZmljYXRlcy5zdGFyZmllbGR0ZWNoLmNvbS9yZXBvc2l0b3J5MA4GA1UdDwEB\n" +
|
||||
"/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAhlK6sx+mXmuQpmQq/EWyrp8+s2Kv\n" +
|
||||
"2x9nxL3KoS/HnA0hV9D4NiHOOiU+eHaz2d283vtshF8Mow0S6xE7cV+AHvEfbQ5f\n" +
|
||||
"wezUpfdlux9MlQETsmqcC+sfnbHn7RkNvIV88xe9WWOupxoFzUfjLZZiUTIKCGhL\n" +
|
||||
"Indf90XcYd70yysiKUQl0p8Ld3qhJnxK1w/C0Ty6DqeVmlsFChD5VV/Bl4t0zF4o\n" +
|
||||
"aRN+0AqNnQ9gVHrEjBs1D3R6cLKCzx214orbKsayUWm/EheSYBeqPVsJ+IdlHaek\n" +
|
||||
"KOUiAgOCRJo0Y577KM/ozS4OUiDtSss4fJ2ubnnXlSyokfOGASGRS7VApA==\n" +
|
||||
"-----END CERTIFICATE-----\n";
|
||||
|
||||
private static final String LINUX_COM_CERT =
|
||||
"-----BEGIN CERTIFICATE-----\n" +
|
||||
"MIIFfDCCBGSgAwIBAgIHJ7DOOMo+MDANBgkqhkiG9w0BAQUFADCB3DELMAkGA1UE\n" +
|
||||
"BhMCVVMxEDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAj\n" +
|
||||
"BgNVBAoTHFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xOTA3BgNVBAsTMGh0\n" +
|
||||
"dHA6Ly9jZXJ0aWZpY2F0ZXMuc3RhcmZpZWxkdGVjaC5jb20vcmVwb3NpdG9yeTEx\n" +
|
||||
"MC8GA1UEAxMoU3RhcmZpZWxkIFNlY3VyZSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0\n" +
|
||||
"eTERMA8GA1UEBRMIMTA2ODg0MzUwHhcNMTExMDA1MDI1MTQyWhcNMTQxMDA1MDI1\n" +
|
||||
"MTQyWjBPMRQwEgYDVQQKFAsqLmxpbnV4LmNvbTEhMB8GA1UECxMYRG9tYWluIENv\n" +
|
||||
"bnRyb2wgVmFsaWRhdGVkMRQwEgYDVQQDFAsqLmxpbnV4LmNvbTCCASIwDQYJKoZI\n" +
|
||||
"hvcNAQEBBQADggEPADCCAQoCggEBANoZR/TDp2/8LtA8k9Li55I665ssC7rHX+Wk\n" +
|
||||
"oiGa6xBeCKTvNy9mgaUVzHwrOQlwJ2GbxFI+X0e3W2sWXUDTSxESZSEW2VZnjEn2\n" +
|
||||
"600Qm8XMhZPvqztLRweHH8IuBNNYZHnW4Z2L4DS/Mi03EmjKZt2g3heGQbrv74m4\n" +
|
||||
"v9/g6Jgr5ZOIwES6LUJchSWV2zcL8VYunpxnAtbi2hq1YfA9oYU82ngP40Ds7HEB\n" +
|
||||
"9pUlzcWu9gcasWGzTvbVBZ4nA29pz5zWn1LHYfSYVSmXKU/ggfZb2nXd5/NkbWQX\n" +
|
||||
"7B2SNH9/OVrHtFZldzD1+ddfCt1DQjXfGv7QqpAVsFTdKspPDLMCAwEAAaOCAc0w\n" +
|
||||
"ggHJMA8GA1UdEwEB/wQFMAMBAQAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUF\n" +
|
||||
"BwMCMA4GA1UdDwEB/wQEAwIFoDA5BgNVHR8EMjAwMC6gLKAqhihodHRwOi8vY3Js\n" +
|
||||
"LnN0YXJmaWVsZHRlY2guY29tL3NmczEtMjAuY3JsMFkGA1UdIARSMFAwTgYLYIZI\n" +
|
||||
"AYb9bgEHFwEwPzA9BggrBgEFBQcCARYxaHR0cDovL2NlcnRpZmljYXRlcy5zdGFy\n" +
|
||||
"ZmllbGR0ZWNoLmNvbS9yZXBvc2l0b3J5LzCBjQYIKwYBBQUHAQEEgYAwfjAqBggr\n" +
|
||||
"BgEFBQcwAYYeaHR0cDovL29jc3Auc3RhcmZpZWxkdGVjaC5jb20vMFAGCCsGAQUF\n" +
|
||||
"BzAChkRodHRwOi8vY2VydGlmaWNhdGVzLnN0YXJmaWVsZHRlY2guY29tL3JlcG9z\n" +
|
||||
"aXRvcnkvc2ZfaW50ZXJtZWRpYXRlLmNydDAfBgNVHSMEGDAWgBRJS1In0Ru88qEh\n" +
|
||||
"amJ7UUJ6itfVVjAhBgNVHREEGjAYggsqLmxpbnV4LmNvbYIJbGludXguY29tMB0G\n" +
|
||||
"A1UdDgQWBBQ44sIiZfPIl4PY51fh2TCZkqtToTANBgkqhkiG9w0BAQUFAAOCAQEA\n" +
|
||||
"HFMuDtEZ+hIrIp4hnRJXUiTsc4Vaycxd5X/axDzUx+ooT3y2jBw0rcNnFhgD1T3u\n" +
|
||||
"9zKiOLGXidvy2G/ppy/ymE+gcNqcEzfV1pKggNqStCwpEX1K8GBD46mX5qJ1RxI+\n" +
|
||||
"QoHo/FZe7Vt+dQjHHdGWh27iVWadpBo/FJnHOsTaHewKL8+Aho0M84nxnUolYxzC\n" +
|
||||
"9H3ViEz+mfMISLzvWicxVU71aJ4yI9JmaL1ddRppBovZHOeWshizcMVtFwcza1S0\n" +
|
||||
"ZfajonXj48ZkXMXGWuomWxE2dGro6ZW6DdyIjTpZHCJuIvGC10J3mHIR5XaTj6mv\n" +
|
||||
"zkVBz5DhpshQe97x6OGLOA==\n" +
|
||||
"-----END CERTIFICATE-----\n";
|
||||
|
||||
private File mKeyStoreFile;
|
||||
private LocalKeyStore mKeyStore;
|
||||
private X509Certificate mCert1;
|
||||
private X509Certificate mCert2;
|
||||
private X509Certificate mCaCert;
|
||||
private X509Certificate mCert3;
|
||||
private X509Certificate mStarfieldCert;
|
||||
private X509Certificate mLinuxComCert;
|
||||
|
||||
|
||||
public TrustManagerFactoryTest() throws CertificateException {
|
||||
mCert1 = loadCert(K9_EXAMPLE_COM_CERT1);
|
||||
mCert2 = loadCert(K9_EXAMPLE_COM_CERT2);
|
||||
mCaCert = loadCert(CA_CERT);
|
||||
mCert3 = loadCert(CERT3);
|
||||
mStarfieldCert = loadCert(STARFIELD_CERT);
|
||||
mLinuxComCert = loadCert(LINUX_COM_CERT);
|
||||
}
|
||||
|
||||
private X509Certificate loadCert(String encodedCert) throws CertificateException {
|
||||
CertificateFactory certFactory = CertificateFactory.getInstance("X509");
|
||||
return (X509Certificate) certFactory.generateCertificate(
|
||||
new ByteArrayInputStream(encodedCert.getBytes()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setUp() throws Exception {
|
||||
mKeyStoreFile = File.createTempFile("localKeyStore", null, getContext().getCacheDir());
|
||||
mKeyStore = LocalKeyStore.getInstance();
|
||||
mKeyStore.setKeyStoreFile(mKeyStoreFile);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void tearDown() {
|
||||
mKeyStoreFile.delete();
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if TrustManagerFactory supports a host with different certificates for different
|
||||
* services (e.g. SMTP and IMAP).
|
||||
*
|
||||
* <p>
|
||||
* This test is to make sure entries in the keystore file aren't overwritten.
|
||||
* See <a href="https://code.google.com/p/k9mail/issues/detail?id=1326">Issue 1326</a>.
|
||||
* </p>
|
||||
*
|
||||
* @throws Exception
|
||||
* if anything goes wrong
|
||||
*/
|
||||
public void testDifferentCertificatesOnSameServer() throws Exception {
|
||||
mKeyStore.addCertificate(NOT_MATCHING_HOST, PORT1, mCert1);
|
||||
mKeyStore.addCertificate(NOT_MATCHING_HOST, PORT2, mCert2);
|
||||
|
||||
X509TrustManager trustManager1 = TrustManagerFactory.get(NOT_MATCHING_HOST, PORT1, true);
|
||||
X509TrustManager trustManager2 = TrustManagerFactory.get(NOT_MATCHING_HOST, PORT2, true);
|
||||
trustManager2.checkServerTrusted(new X509Certificate[] { mCert2 }, "authType");
|
||||
trustManager1.checkServerTrusted(new X509Certificate[] { mCert1 }, "authType");
|
||||
}
|
||||
|
||||
public void testSelfSignedCertificateMatchingHost() throws Exception {
|
||||
mKeyStore.addCertificate(MATCHING_HOST, PORT1, mCert1);
|
||||
X509TrustManager trustManager = TrustManagerFactory.get(MATCHING_HOST, PORT1, true);
|
||||
trustManager.checkServerTrusted(new X509Certificate[] { mCert1 }, "authType");
|
||||
}
|
||||
|
||||
public void testSelfSignedCertificateNotMatchingHost() throws Exception {
|
||||
mKeyStore.addCertificate(NOT_MATCHING_HOST, PORT1, mCert1);
|
||||
X509TrustManager trustManager = TrustManagerFactory.get(NOT_MATCHING_HOST, PORT1, true);
|
||||
trustManager.checkServerTrusted(new X509Certificate[] { mCert1 }, "authType");
|
||||
}
|
||||
|
||||
public void testWrongCertificate() throws Exception {
|
||||
mKeyStore.addCertificate(MATCHING_HOST, PORT1, mCert1);
|
||||
X509TrustManager trustManager = TrustManagerFactory.get(MATCHING_HOST, PORT1, true);
|
||||
assertCertificateRejection(trustManager, new X509Certificate[] { mCert2 });
|
||||
}
|
||||
|
||||
public void testCertificateOfOtherHost() throws Exception {
|
||||
mKeyStore.addCertificate(MATCHING_HOST, PORT1, mCert1);
|
||||
mKeyStore.addCertificate(MATCHING_HOST, PORT2, mCert2);
|
||||
|
||||
X509TrustManager trustManager = TrustManagerFactory.get(MATCHING_HOST, PORT1, true);
|
||||
assertCertificateRejection(trustManager, new X509Certificate[] { mCert2 });
|
||||
}
|
||||
|
||||
public void testUntrustedCertificateChain() throws Exception {
|
||||
X509TrustManager trustManager = TrustManagerFactory.get(MATCHING_HOST, PORT1, true);
|
||||
assertCertificateRejection(trustManager, new X509Certificate[] { mCert3, mCaCert });
|
||||
}
|
||||
|
||||
public void testLocallyTrustedCertificateChain() throws Exception {
|
||||
mKeyStore.addCertificate(MATCHING_HOST, PORT1, mCert3);
|
||||
|
||||
X509TrustManager trustManager = TrustManagerFactory.get(MATCHING_HOST, PORT1, true);
|
||||
trustManager.checkServerTrusted(new X509Certificate[] { mCert3, mCaCert }, "authType");
|
||||
}
|
||||
|
||||
public void testLocallyTrustedCertificateChainNotMatchingHost() throws Exception {
|
||||
mKeyStore.addCertificate(NOT_MATCHING_HOST, PORT1, mCert3);
|
||||
|
||||
X509TrustManager trustManager = TrustManagerFactory.get(NOT_MATCHING_HOST, PORT1, true);
|
||||
trustManager.checkServerTrusted(new X509Certificate[] { mCert3, mCaCert }, "authType");
|
||||
}
|
||||
|
||||
public void testGloballyTrustedCertificateChain() throws Exception {
|
||||
X509TrustManager trustManager = TrustManagerFactory.get("www.linux.com", PORT1, true);
|
||||
X509Certificate[] certificates = new X509Certificate[] { mLinuxComCert, mStarfieldCert };
|
||||
trustManager.checkServerTrusted(certificates, "authType");
|
||||
}
|
||||
|
||||
public void testGloballyTrustedCertificateNotMatchingHost() throws Exception {
|
||||
X509TrustManager trustManager = TrustManagerFactory.get(NOT_MATCHING_HOST, PORT1, true);
|
||||
assertCertificateRejection(trustManager, new X509Certificate[] { mLinuxComCert, mStarfieldCert });
|
||||
}
|
||||
|
||||
public void testGloballyTrustedCertificateNotMatchingHostOverride() throws Exception {
|
||||
mKeyStore.addCertificate(MATCHING_HOST, PORT1, mLinuxComCert);
|
||||
|
||||
X509TrustManager trustManager = TrustManagerFactory.get(MATCHING_HOST, PORT1, true);
|
||||
X509Certificate[] certificates = new X509Certificate[] { mLinuxComCert, mStarfieldCert };
|
||||
trustManager.checkServerTrusted(certificates, "authType");
|
||||
}
|
||||
|
||||
private void assertCertificateRejection(X509TrustManager trustManager,
|
||||
X509Certificate[] certificates) {
|
||||
boolean certificateValid;
|
||||
try {
|
||||
trustManager.checkServerTrusted(certificates, "authType");
|
||||
certificateValid = true;
|
||||
} catch (CertificateException e) {
|
||||
certificateValid = false;
|
||||
}
|
||||
assertFalse("The certificate should have been rejected but wasn't", certificateValid);
|
||||
}
|
||||
|
||||
public void testKeyStoreLoading() throws Exception {
|
||||
mKeyStore.addCertificate(MATCHING_HOST, PORT1, mCert1);
|
||||
mKeyStore.addCertificate(NOT_MATCHING_HOST, PORT2, mCert2);
|
||||
assertTrue(mKeyStore.isValidCertificate(mCert1, MATCHING_HOST, PORT1));
|
||||
assertTrue(mKeyStore.isValidCertificate(mCert2, NOT_MATCHING_HOST, PORT2));
|
||||
|
||||
// reload store from same file
|
||||
mKeyStore.setKeyStoreFile(mKeyStoreFile);
|
||||
assertTrue(mKeyStore.isValidCertificate(mCert1, MATCHING_HOST, PORT1));
|
||||
assertTrue(mKeyStore.isValidCertificate(mCert2, NOT_MATCHING_HOST, PORT2));
|
||||
|
||||
// reload store from empty file
|
||||
mKeyStoreFile.delete();
|
||||
mKeyStore.setKeyStoreFile(mKeyStoreFile);
|
||||
assertFalse(mKeyStore.isValidCertificate(mCert1, MATCHING_HOST, PORT1));
|
||||
assertFalse(mKeyStore.isValidCertificate(mCert2, NOT_MATCHING_HOST, PORT2));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
#!/bin/bash
|
||||
|
||||
SCRIPT=$(readlink -f $0)
|
||||
SCRIPTPATH=`dirname $SCRIPT`
|
||||
PROJECTROOT=`dirname $SCRIPTPATH`
|
||||
|
||||
cd $PROJECTROOT
|
||||
|
||||
find res/values* -name "strings.xml" -type f ! -wholename "res/values-fr-rCA/strings.xml" -exec ./tools/fix_strings.py {} \;
|
||||
|
||||
cd -
|
|
@ -0,0 +1,76 @@
|
|||
#!/usr/bin/env python
|
||||
# Rewrite a strings file to get rid of line break/whitespace combinations that get stripped when building with Gradle.
|
||||
#
|
||||
# Example:
|
||||
# <string name="account_size_changed">
|
||||
# Account \"<xliff:g id="account">%s</xliff:g>\" shrunk from
|
||||
# <xliff:g id="oldSize">%s</xliff:g>
|
||||
# to
|
||||
# <xliff:g id="newSize">%s</xliff:g>
|
||||
# </string>
|
||||
#
|
||||
# will be rendered as
|
||||
#
|
||||
# Account "account" shrunk from10MB to1MB
|
||||
#
|
||||
# when built with Gradle, but displays fine when built with Ant.
|
||||
#
|
||||
#
|
||||
# Written for use with K-9 Mail (https://github.com/k9mail/k-9)
|
||||
# Licensed under the WTFPL (http://www.wtfpl.net/about/)
|
||||
|
||||
import sys
|
||||
import re
|
||||
from lxml import etree
|
||||
|
||||
|
||||
def fix_text(element):
|
||||
if element.text is not None:
|
||||
element.text = re.sub(r'^\n\s*([^\s])', "\\1", element.text)
|
||||
element.text = re.sub(r'\n\s*$', " ", element.text)
|
||||
|
||||
|
||||
def fix_tail(element, is_last):
|
||||
if element.tail is not None:
|
||||
if is_last:
|
||||
replacement = ""
|
||||
else:
|
||||
replacement = " "
|
||||
element.tail = re.sub(r'^\n\s*([^\s])', " \\1", element.tail)
|
||||
element.tail = re.sub(r'\n\s*$', replacement, element.tail)
|
||||
|
||||
|
||||
def cleanup_string_elements(elements):
|
||||
for element in elements:
|
||||
if element.tag is None:
|
||||
continue
|
||||
|
||||
tag = element.tag
|
||||
children = element.getchildren()
|
||||
|
||||
if tag in ["string", "item"]:
|
||||
if len(children) > 0:
|
||||
fix_text(element)
|
||||
|
||||
for child in children:
|
||||
if isinstance(child.tag, basestring):
|
||||
fix_text(child)
|
||||
fix_tail(child, child == children[-1])
|
||||
|
||||
elif tag == "plurals":
|
||||
cleanup_string_elements(children)
|
||||
|
||||
|
||||
if len(sys.argv) < 2:
|
||||
print "Usage: fix_strings.py <strings file>"
|
||||
print "Example: fix_strings.py res/values/strings.xml"
|
||||
exit(1)
|
||||
|
||||
strings_file = sys.argv[1]
|
||||
|
||||
parser = etree.XMLParser(strip_cdata=False)
|
||||
strings = etree.parse(strings_file, parser=parser)
|
||||
|
||||
cleanup_string_elements(strings.getroot().getchildren())
|
||||
|
||||
strings.write(strings_file, xml_declaration=True, encoding="UTF-8", pretty_print=True)
|