Compare commits
440 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
bbb6f939ba | ||
|
edbf7d74e9 | ||
|
a93d1ce4bc | ||
|
733727c478 | ||
|
a2b4715f5c | ||
|
8a6d42477e | ||
|
7cd8d5f66f | ||
|
57302f6689 | ||
|
d34c0474b8 | ||
|
2144f32b65 | ||
|
a83ffff1e0 | ||
|
3c37a8a22f | ||
|
46f56742cd | ||
|
33a1b5542e | ||
|
8a0c8bb569 | ||
|
7b7e55853d | ||
|
7c41ec2e42 | ||
|
e5f96a7a9e | ||
|
e773058e6a | ||
|
44773ffc75 | ||
|
edfbc5a77a | ||
|
7d677a9fe2 | ||
|
5ea03be8d6 | ||
|
4c7dd797f2 | ||
|
cd45e0ba95 | ||
|
679e39c019 | ||
|
5a975b2843 | ||
|
cdcb26b2de | ||
|
3c889b8727 | ||
|
0fcd5e1b90 | ||
|
874444e8eb | ||
|
b9a78a0262 | ||
|
a8479b59bf | ||
|
fa56c85969 | ||
|
fd592fb39e | ||
|
ba24fa7fed | ||
|
d4cd898a05 | ||
|
cda7c306c8 | ||
|
989946263d | ||
|
3233007191 | ||
|
6364bccfba | ||
|
130b45a901 | ||
|
90358e07f7 | ||
|
2b18901a97 | ||
|
3834633d78 | ||
|
74b74d1265 | ||
|
18982eed14 | ||
|
8f7ce34a02 | ||
|
8f6cec4501 | ||
|
b5f144cb16 | ||
|
802fc1b68d | ||
|
8765a0bbbf | ||
|
e60e1d5805 | ||
|
904c9fe870 | ||
|
eb58db193d | ||
|
cc49a6e828 | ||
|
c5cd46cdef | ||
|
4da04c6cb3 | ||
|
f16702b7c2 | ||
|
c2a2afaa88 | ||
|
02967d3640 | ||
|
9be7af764d | ||
|
14063ef66a | ||
|
769425ab94 | ||
|
8566985222 | ||
|
8e91e061ef | ||
|
fb19382fd2 | ||
|
68ea2f80a3 | ||
|
8d2a1bab74 | ||
|
a5a9c7967d | ||
|
2bae3bcc93 | ||
|
f25b6ea1e3 | ||
|
c652d1a6e6 | ||
|
2450a74c32 | ||
|
10cbe87f51 | ||
|
c0a6f565c7 | ||
|
eac20f4094 | ||
|
873678d1ec | ||
|
7a446f3243 | ||
|
c7605ede18 | ||
|
1a1a88bd44 | ||
|
010db03f37 | ||
|
24f3bba827 | ||
|
fbfb72acdf | ||
|
237c695922 | ||
|
22218bb556 | ||
|
c25ebc819a | ||
|
8d29a90222 | ||
|
a056d07cdc | ||
|
b0353c3de9 | ||
|
577ac531ee | ||
|
a373de0b5d | ||
|
72ff4c0d21 | ||
|
18b3380cdc | ||
|
c1aa168642 | ||
|
534d4b5a3f | ||
|
9e8733e4f6 | ||
|
e000f06939 | ||
|
2658f9ca62 | ||
|
083fc202c7 | ||
|
0c36ff37ac | ||
|
106b615201 | ||
|
8040bd9b43 | ||
|
ddc837e580 | ||
|
e19b1048c5 | ||
|
30cfebaf87 | ||
|
95e6c294ae | ||
|
10acdd47f8 | ||
|
fe052f0fdc | ||
|
63b8c9c512 | ||
|
98698068b1 | ||
|
7101e5e714 | ||
|
7d8867da60 | ||
|
df68852fd5 | ||
|
72bb1858a6 | ||
|
6f56028b00 | ||
|
7a851a1684 | ||
|
527c6f535c | ||
|
1cb7a81a47 | ||
|
93f83c216a | ||
|
80ec02b767 | ||
|
5309e46d58 | ||
|
b61d82fe1e | ||
|
0c6d16063c | ||
|
74dd4b33a4 | ||
|
f0d6588c07 | ||
|
8302493940 | ||
|
fc5241d6f9 | ||
|
65e3c246d7 | ||
|
5ddf363b20 | ||
|
dbe2543fcf | ||
|
3dd9acddc7 | ||
|
0a9d1cc191 | ||
|
643203c874 | ||
|
5fe15716ee | ||
|
599fe53515 | ||
|
8a87e4d63a | ||
|
ffd5119c98 | ||
|
11409cbead | ||
|
78f3d79630 | ||
|
6687f92346 | ||
|
2836ac6869 | ||
|
59acbd9ef5 | ||
|
fcbaf713f3 | ||
|
e515419d63 | ||
|
17374d2183 | ||
|
915617d79a | ||
|
786ee2b842 | ||
|
a3d804325f | ||
|
991bde7231 | ||
|
58205cc06c | ||
|
c07dabf789 | ||
|
bd8b23f1e0 | ||
|
3b682e25d6 | ||
|
ea17951c0a | ||
|
b7e5690a81 | ||
|
eabab3be02 | ||
|
710e471811 | ||
|
7c2eef2e88 | ||
|
477e3f8319 | ||
|
f49f575971 | ||
|
0ceb01b2bd | ||
|
a240c1cbef | ||
|
29ff6635f2 | ||
|
a63d9599e1 | ||
|
5261961673 | ||
|
8adc71c413 | ||
|
3a0601d217 | ||
|
cb1c6fb71a | ||
|
2e287d4dcb | ||
|
64e26551a6 | ||
|
4ecf711a65 | ||
|
8e6e5b64e4 | ||
|
86ac855e9a | ||
|
aa530a204c | ||
|
bd0c9c0c97 | ||
|
00c2c6e8ea | ||
|
18650d4d7b | ||
|
3b23a320bc | ||
|
1a18eb48a1 | ||
|
4d17c9c5af | ||
|
07fb0e7a87 | ||
|
e2c8f185f5 | ||
|
c88c9bb5be | ||
|
dc04f5997b | ||
|
5e9bcc88ca | ||
|
b99951c444 | ||
|
353145693d | ||
|
c57f5237ed | ||
|
be3a183633 | ||
|
511e11e454 | ||
|
837a3effb1 | ||
|
739ac51931 | ||
|
1b58f45a9f | ||
|
e5f6719d22 | ||
|
151b1488d4 | ||
|
171890e507 | ||
|
6a4c2363e7 | ||
|
598f3413cf | ||
|
ec9729ebeb | ||
|
ab60df2369 | ||
|
e11bed3f31 | ||
|
02375e41c5 | ||
|
05380b2d39 | ||
|
c19248555d | ||
|
b0785093a9 | ||
|
5d244ca55a | ||
|
46327119f8 | ||
|
f682438980 | ||
|
dd09e43818 | ||
|
150284e27b | ||
|
f8b9665963 | ||
|
2aacbb13b5 | ||
|
e43a172079 | ||
|
d96b8a7875 | ||
|
478e3718fb | ||
|
3c19e328a2 | ||
|
c9ed554c6d | ||
|
5bc84f9e7f | ||
|
a6ee12a195 | ||
|
86d2dce73b | ||
|
236d348aba | ||
|
98daefe3df | ||
|
abce140b8f | ||
|
548e0d871f | ||
|
633901ea99 | ||
|
889e365e03 | ||
|
b1688dbfed | ||
|
93c954ec7c | ||
|
a7d74d4686 | ||
|
961c731f60 | ||
|
72702ab53e | ||
|
c199f6f60d | ||
|
dc41bf3798 | ||
|
53d9431c15 | ||
|
4d00647cc1 | ||
|
8130af570f | ||
|
fee8902acb | ||
|
333a31b056 | ||
|
48dca0fbb4 | ||
|
6c63d8f89b | ||
|
9bca7b4ca2 | ||
|
79a56e2ada | ||
|
859147b69b | ||
|
00850485e9 | ||
|
7bf6b842a0 | ||
|
6ad684b650 | ||
|
6554f343ae | ||
|
4fc26ff2d4 | ||
|
d15945c1ca | ||
|
8bf4ab7c93 | ||
|
600cb29c9c | ||
|
6840c982ca | ||
|
04b35c398d | ||
|
070a53167a | ||
|
badb5aaaa1 | ||
|
7e73e2336b | ||
|
598f1fcf9a | ||
|
13f164b867 | ||
|
0c5290118f | ||
|
58a4a7bc4e | ||
|
5bfbb005a5 | ||
|
ad2f7c10f7 | ||
|
82f43a885f | ||
|
76f2388f02 | ||
|
e6e1f1a721 | ||
|
961a760234 | ||
|
5ea297104c | ||
|
855de0f86e | ||
|
191fabbca4 | ||
|
d5149f729b | ||
|
5f5cc55259 | ||
|
50d4de987e | ||
|
584524a1c9 | ||
|
1730a48f23 | ||
|
9f4219bd68 | ||
|
3cdf1337f8 | ||
|
9a1f187058 | ||
|
b09f60cc4e | ||
|
9e5297f2aa | ||
|
080ad35048 | ||
|
c64745d885 | ||
|
f66e101e76 | ||
|
33a62654cb | ||
|
dc13d4a21c | ||
|
bbef52e03a | ||
|
812c801042 | ||
|
926182f997 | ||
|
f75a6d40f1 | ||
|
b3aca1c6b3 | ||
|
5a02dfa045 | ||
|
76f901c81f | ||
|
6a13d7ac83 | ||
|
f1e5df9e02 | ||
|
6bbd5da44f | ||
|
523603c1e3 | ||
|
f953e6cd09 | ||
|
123ce0adb3 | ||
|
7c14bff700 | ||
|
d92ed7d4b1 | ||
|
4f265773b8 | ||
|
da0082ccac | ||
|
363248f580 | ||
|
13a44da126 | ||
|
9409ca64e2 | ||
|
27942004b5 | ||
|
15aa29910d | ||
|
6ceee7b012 | ||
|
b5957f0c06 | ||
|
d4d7fce3e8 | ||
|
a7b33e58ac | ||
|
7d8db76067 | ||
|
5106432c2b | ||
|
42a2a55cae | ||
|
a9cf377063 | ||
|
bccfbae82c | ||
|
cfb605928d | ||
|
5cae31082b | ||
|
0cda521540 | ||
|
d26712cd89 | ||
|
a05a30b0e2 | ||
|
d9ca696db0 | ||
|
a81c5ad464 | ||
|
dc593807d4 | ||
|
3e5f5705d2 | ||
|
8a10e28a1a | ||
|
2e0ce0706d | ||
|
484c25dabe | ||
|
5fc47f03e8 | ||
|
b012971a8c | ||
|
816e975ca0 | ||
|
649c97d31e | ||
|
4f139906a5 | ||
|
1e206b55c8 | ||
|
5b184b0490 | ||
|
9847559732 | ||
|
ceea85925f | ||
|
e81ed347e7 | ||
|
32d6864e7c | ||
|
50683049fd | ||
|
edb117a020 | ||
|
1a89b1d5f1 | ||
|
67f60015ec | ||
|
90b651f3f1 | ||
|
55e17986a9 | ||
|
2b4a1ecf9a | ||
|
77ab787db7 | ||
|
d88836e7d2 | ||
|
f5147e1bc0 | ||
|
6bd1ce5ae9 | ||
|
58a753c921 | ||
|
3668bbff51 | ||
|
990de7450b | ||
|
6b9c825ed9 | ||
|
c4598208ac | ||
|
03d18ae1e2 | ||
|
3bb087663a | ||
|
a43e3f410c | ||
|
a836408cae | ||
|
e2e7ff783d | ||
|
201da17578 | ||
|
6e8a2d10b9 | ||
|
dfc9f81695 | ||
|
8d6b6b20e8 | ||
|
261da28edb | ||
|
7d00089898 | ||
|
ceefd6c5d7 | ||
|
54ba895d1d | ||
|
75eb21fb4a | ||
|
3243292a66 | ||
|
bc7d23970e | ||
|
28cfd0ce2a | ||
|
c50ce0e89c | ||
|
6594fee930 | ||
|
753505141f | ||
|
c2cbee5cef | ||
|
cf3c7da645 | ||
|
b500d02695 | ||
|
e5573e7f56 | ||
|
397a766663 | ||
|
b06b50a8be | ||
|
8a628abb29 | ||
|
cb2a8835d3 | ||
|
7b9f035cd0 | ||
|
96cdeaa2f0 | ||
|
92ef7cf592 | ||
|
3b8f63d419 | ||
|
c1fc5571bf | ||
|
f76798cb9e | ||
|
9ff749182b | ||
|
94818906ae | ||
|
9e597fb58c | ||
|
4a526730fa | ||
|
0bed763021 | ||
|
5c8ba4b370 | ||
|
77dd567593 | ||
|
7d017c9919 | ||
|
79cb5983a2 | ||
|
e1fad991a8 | ||
|
160688d06f | ||
|
449a6b2a81 | ||
|
15c9617a2b | ||
|
7af398786e | ||
|
99560474fb | ||
|
9a1b28cb6d | ||
|
ae910f363b | ||
|
dd9be98ac8 | ||
|
b1ab14f2b0 | ||
|
cf7611999c | ||
|
60ac0afbea | ||
|
a1db1d3c03 | ||
|
1451943e68 | ||
|
6d82702a8d | ||
|
f2348d0a46 | ||
|
95d2bfe8f9 | ||
|
61ed3d2791 | ||
|
8ad3b251b0 | ||
|
db2cc05a3a | ||
|
1f26787983 | ||
|
5d0b5d377b | ||
|
d57810b5d8 | ||
|
5317dc4fd9 | ||
|
62747ae33e | ||
|
a8fad0bd3f | ||
|
f099ca95d2 | ||
|
314016b5ca | ||
|
a7917c0b45 | ||
|
da2a42ba91 | ||
|
108c619fe7 | ||
|
59db354042 | ||
|
92930ec758 | ||
|
b877807f76 | ||
|
8acf838b88 | ||
|
3d27756f02 | ||
|
c90d3c0fc2 | ||
|
5b2c22e4ba | ||
|
14916aa092 | ||
|
1553bc2e0e | ||
|
98f24bdf78 | ||
|
3a04abe2d7 |
14
.travis.yml
@ -11,22 +11,18 @@ cache:
|
||||
jdk:
|
||||
- oraclejdk8
|
||||
|
||||
before_install:
|
||||
- yes | sdkmanager "platforms;android-28"
|
||||
|
||||
android:
|
||||
components:
|
||||
- tools
|
||||
- platform-tools
|
||||
- extra
|
||||
- build-tools-27.0.2
|
||||
- android-27
|
||||
- build-tools-28.0.3
|
||||
- android-28
|
||||
licenses:
|
||||
- 'android-sdk-license-.+'
|
||||
- 'google-gdk-license-.+'
|
||||
- 'android-sdk-preview-license-.+'
|
||||
- 'android-.*'
|
||||
|
||||
before_install:
|
||||
- wget https://dl.google.com/android/repository/android-ndk-r16-linux-x86_64.zip > /dev/null
|
||||
- mkdir -p /usr/local/android-sdk/ndk-bundle
|
||||
- unzip android-ndk-r16-linux-x86_64.zip -d /usr/local/android-sdk/ndk-bundle > /dev/null
|
||||
- export ANDROID_NDK_HOME="/usr/local/android-sdk/ndk-bundle/android-ndk-r16"
|
||||
- rm -Rf "${ANDROID_HOME}/cmake"
|
13
.tx/config
@ -1,16 +1,17 @@
|
||||
[main]
|
||||
host = https://www.transifex.com
|
||||
|
||||
[nextcloud.android-sms]
|
||||
[o:nextcloud:p:nextcloud:r:android-sms]
|
||||
file_filter = src/main/res/values-<lang>/strings.xml
|
||||
source_file = src/main/res/values/strings.xml
|
||||
type = ANDROID
|
||||
source_lang = en
|
||||
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, en@pirate: en-rpirate, 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, he_IL: he-rIL, 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, ku_IQ: ku-rIQ, 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, my_MM: my, 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, sr@latin: sr-rSP, sv_FI: sv-rFI, sv_SE: sv-rSE, sw_KE: sw-rKE, syr_SY: syr-rSY, ta_IN: ta-rIN, ta_LK: ta-rLK, 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_CN.GB2312:zh-rBG, zh_HK: zh-rHK, zh_MO: zh-rMO, zh_SG: zh-rSG, zh_TW: zh-rTW, zu_ZA: zu-rZA
|
||||
type = ANDROID
|
||||
lang_map = ar_EG: ar-rEG, ar_KW: ar-rKW, da_DK: da-rDK, hu_HU: hu-rHU, lb_LU: lb-rLU, tzm_DZ: tzm-rDZ, ar_DZ: ar-rDZ, ar_SA: ar-rSA, arn_CL: arn-rCL, de_LI: de-rLI, fr_MC: fr-rMC, se_FI: se-rFI, ta_LK: ta-rLK, tt_RU: tt-rRU, xh_ZA: xh-rZA, co_FR: co-rFR, cy_GB: cy-rGB, en_SG: en-rSG, es_PA: es-rPA, es_UY: es-rUY, ku_IQ: ku-rIQ, rm_CH: rm-rCH, smj_SE: smj-rSE, sq_AL: sq-rAL, tr_TR: tr-rTR, uz_UZ: uz-rUZ, en_AU: en-rAU, ar_OM: ar-rOM, el_GR: el-rGR, es_EC: es-rEC, ha_NG: ha-rNG, hr_HR: hr-rHR, or_IN: or-rIN, pt_BR: pt-rBR, se_NO: se-rNO, am_ET: am-rET, en_US: en-rUS, es_PE: es-rPE, fa_IR: fa-rIR, fr_CA: fr-rCA, fy_NL: fy-rNL, hr_BA: hr-rBA, hy_AM: hy-rAM, lt_LT: lt-rLT, ar_SY: ar-rSY, ca_ES: ca-rES, en_JM: en-rJM, es_AR: es-rAR, es_PY: es-rPY, it_CH: it-rCH, kk_KZ: kk-rKZ, vi_VN: vi-rVN, es_MX: es-rMX, pt_PT: pt-rPT, uk_UA: uk-rUA, zh_CN.GB2312: zh-rBG, zu_ZA: zu-rZA, bs_BA: bs-rBA, is_IS: is-rIS, my_MM: my, quz_PE: quz-rPE, ur_PK: ur-rPK, ar_AE: ar-rAE, ar_LY: ar-rLY, ar_QA: ar-rQA, ja_JP: ja-rJP, nl_BE: nl-rBE, nso_ZA: nso-rZA, rw_RW: rw-rRW, sr_BA: sr-rBA, te_IN: te-rIN, de_AT: de-rAT, dv_MV: dv-rMV, ro_RO: ro-rRO, sv_SE: sv-rSE, fr_FR: fr-rFR, he_IL: he-rIL, ne_NP: ne-rNP, sms_FI: sms-rFI, ar_TN: ar-rTN, az_AZ: az-rAZ, de_LU: de-rLU, es_CO: es-rCO, es_NI: es-rNI, id_ID: id-rID, quz_BO: quz-rBO, sr@latin: sr-rSP, en_GB: en-rGB, es_PR: es-rPR, es_SV: es-rSV, kn_IN: kn-rIN, ar_MA: ar-rMA, bo_CN: bo-rCN, dsb_DE: dsb-rDE, ig_NG: ig-rNG, mn_CN: mn-rCN, moh_CA: moh-rCA, pa_IN: pa-rIN, ps_AF: ps-rAF, smn_FI: smn-rFI, zh_MO: zh-rMO, en@pirate: en-rpirate, gl_ES: gl-rES, th_TH: th-rTH, fr_BE: fr-rBE, nb_NO: nb-rNO, prs_AF: prs-rAF, qut_GT: qut-rGT, en_ZW: en-rZW, eu_ES: eu-rES, hsb_DE: hsb-rDE, lo_LA: lo-rLA, mk_MK: mk-rMK, sk_SK: sk-rSK, sma_SE: sma-rSE, zh_HK: zh-rHK, as_IN: as-rIN, en_MY: en-rMY, en_NZ: en-rNZ, es_GT: es-rGT, es_HN: es-rHN, hi_IN: hi-rIN, mt_MT: mt-rMT, oc_FR: oc-rFR, sa_IN: sa-rIN, tk_TM: tk-rTM, ba_RU: ba-rRU, be_BY: be-rBY, kl_GL: kl-rGL, lv_LV: lv-rLV, sah_RU: sah-rRU, yo_NG: yo-rNG, de_DE: de-rDE, es_VE: es-rVE, gd_GB: gd-rGB, ko_KR: ko-rKR, sl_SI: sl-rSI, ug_CN: ug-rCN, ar_YE: ar-rYE, en_IN: en-rIN, es_BO: es-rBO, fr_LU: fr-rLU, bn_BD: bn-rBD, bn_IN: bn-rIN, gu_IN: gu-rIN, mr_IN: mr-rIN, ar_IQ: ar-rIQ, en_CA: en-rCA, es_CR: es-rCR, es_ES: es-rES, ga_IE: ga-rIE, gsw_FR: gsw-rFR, mn_MN: mn-rMN, ru_RU: ru-rRU, sr_CS: sr-rCS, tg_TJ: tg-rTJ, bg_BG: bg-rBG, iu_CA: iu-rCA, nl_NL: nl-rNL, quz_EC: quz-rEC, sma_NO: sma-rNO, sv_FI: sv-rFI, en_IE: en-rIE, fr_CH: fr-rCH, zh_TW: zh-rTW, ar_LB: ar-rLB, br_FR: br-rFR, cs_CZ: cs-rCZ, en_BZ: en-rBZ, en_TT: en-rTT, et_EE: et-rEE, fi_FI: fi-rFI, ii_CN: ii-rCN, km_KH: km-rKH, kok_IN: kok-rIN, ml_IN: ml-rIN, se_SE: se-rSE, syr_SY: syr-rSY, af_ZA: af-rZA, en_ZA: en-rZA, es_CL: es-rCL, mi_NZ: mi-rNZ, smj_NO: smj-rNO, wo_SN: wo-rSN, ar_BH: ar-rBH, fo_FO: fo-rFO, ky_KG: ky-rKG, ms_BN: ms-rBN, nn_NO: nn-rNO, zh_SG: zh-rSG, ar_JO: ar-rJO, en_PH: en-rPH, es_DO: es-rDO, ms_MY: ms-rMY, pl_PL: pl-rPL, sr_RS: sr-rRS, zh_CN: zh-rCN, es_419: es-rUS, it_IT: it-rIT, ka_GE: ka-rGE, si_LK: si-rLK, tn_ZA: tn-rZA, de_CH: de-rCH, fil_PH: fil-rPH, sr_ME: sr-rME, sw_KE: sw-rKE, ta_IN: ta-rIN
|
||||
|
||||
[nextcloud.android-sms-playstore]
|
||||
[o:nextcloud:p:nextcloud:r:android-sms-playstore]
|
||||
file_filter = src/main/res/values-<lang>/google_playstore_strings.xml
|
||||
source_file = src/main/res/values/google_playstore_strings.xml
|
||||
type = ANDROID
|
||||
source_lang = en
|
||||
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, en@pirate: en-rpirate, 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, he_IL: he-rIL, 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, ku_IQ: ku-rIQ, 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, my_MM: my, 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, sr@latin: sr-rSP, sv_FI: sv-rFI, sv_SE: sv-rSE, sw_KE: sw-rKE, syr_SY: syr-rSY, ta_IN: ta-rIN, ta_LK: ta-rLK, 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_CN.GB2312:zh-rBG, zh_HK: zh-rHK, zh_MO: zh-rMO, zh_SG: zh-rSG, zh_TW: zh-rTW, zu_ZA: zu-rZA
|
||||
type = ANDROID
|
||||
lang_map = ka_GE: ka-rGE, kn_IN: kn-rIN, sr_CS: sr-rCS, tr_TR: tr-rTR, bs_BA: bs-rBA, es_VE: es-rVE, gd_GB: gd-rGB, es_BO: es-rBO, es_HN: es-rHN, es_PE: es-rPE, eu_ES: eu-rES, rw_RW: rw-rRW, de_CH: de-rCH, de_DE: de-rDE, en_GB: en-rGB, sk_SK: sk-rSK, smj_NO: smj-rNO, zu_ZA: zu-rZA, es_ES: es-rES, mn_MN: mn-rMN, sa_IN: sa-rIN, ta_LK: ta-rLK, uk_UA: uk-rUA, fil_PH: fil-rPH, hr_BA: hr-rBA, ml_IN: ml-rIN, tg_TJ: tg-rTJ, uz_UZ: uz-rUZ, ar_LY: ar-rLY, ar_YE: ar-rYE, my_MM: my, ar_KW: ar-rKW, en_ZW: en-rZW, es_PA: es-rPA, it_CH: it-rCH, ku_IQ: ku-rIQ, ar_AE: ar-rAE, ar_BH: ar-rBH, ar_DZ: ar-rDZ, prs_AF: prs-rAF, pt_BR: pt-rBR, ug_CN: ug-rCN, oc_FR: oc-rFR, sma_NO: sma-rNO, es_PY: es-rPY, ms_MY: ms-rMY, mt_MT: mt-rMT, es_CR: es-rCR, fr_BE: fr-rBE, or_IN: or-rIN, quz_EC: quz-rEC, sr@latin: sr-rSP, zh_HK: zh-rHK, ar_JO: ar-rJO, ar_MA: ar-rMA, bn_BD: bn-rBD, en_ZA: en-rZA, it_IT: it-rIT, ko_KR: ko-rKR, mk_MK: mk-rMK, bo_CN: bo-rCN, co_FR: co-rFR, dsb_DE: dsb-rDE, nl_NL: nl-rNL, sah_RU: sah-rRU, se_SE: se-rSE, zh_CN.GB2312: zh-rBG, zh_TW: zh-rTW, az_AZ: az-rAZ, cy_GB: cy-rGB, nb_NO: nb-rNO, es_UY: es-rUY, fo_FO: fo-rFO, ig_NG: ig-rNG, lo_LA: lo-rLA, mi_NZ: mi-rNZ, en_MY: en-rMY, en_TT: en-rTT, es_SV: es-rSV, nso_ZA: nso-rZA, th_TH: th-rTH, ms_BN: ms-rBN, en_SG: en-rSG, es_EC: es-rEC, id_ID: id-rID, nl_BE: nl-rBE, fr_CH: fr-rCH, hi_IN: hi-rIN, is_IS: is-rIS, en_AU: en-rAU, et_EE: et-rEE, pt_PT: pt-rPT, hy_AM: hy-rAM, lv_LV: lv-rLV, tk_TM: tk-rTM, ur_PK: ur-rPK, en_NZ: en-rNZ, es_DO: es-rDO, es_GT: es-rGT, sv_FI: sv-rFI, tzm_DZ: tzm-rDZ, vi_VN: vi-rVN, ar_OM: ar-rOM, fa_IR: fa-rIR, hu_HU: hu-rHU, de_AT: de-rAT, en_IN: en-rIN, iu_CA: iu-rCA, qut_GT: qut-rGT, smj_SE: smj-rSE, ar_SY: ar-rSY, ar_TN: ar-rTN, cs_CZ: cs-rCZ, te_IN: te-rIN, zh_MO: zh-rMO, quz_BO: quz-rBO, ta_IN: ta-rIN, zh_CN: zh-rCN, de_LI: de-rLI, en_BZ: en-rBZ, ga_IE: ga-rIE, fy_NL: fy-rNL, ha_NG: ha-rNG, kk_KZ: kk-rKZ, rm_CH: rm-rCH, ro_RO: ro-rRO, ar_SA: ar-rSA, en_PH: en-rPH, es_419: es-rUS, hr_HR: hr-rHR, pa_IN: pa-rIN, pl_PL: pl-rPL, sma_SE: sma-rSE, xh_ZA: xh-rZA, dv_MV: dv-rMV, fi_FI: fi-rFI, fr_FR: fr-rFR, zh_SG: zh-rSG, ne_NP: ne-rNP, da_DK: da-rDK, gu_IN: gu-rIN, km_KH: km-rKH, mr_IN: mr-rIN, smn_FI: smn-rFI, el_GR: el-rGR, es_CL: es-rCL, ky_KG: ky-rKG, ps_AF: ps-rAF, ru_RU: ru-rRU, sms_FI: sms-rFI, sq_AL: sq-rAL, arn_CL: arn-rCL, es_AR: es-rAR, fr_LU: fr-rLU, sr_ME: sr-rME, sr_RS: sr-rRS, sw_KE: sw-rKE, yo_NG: yo-rNG, be_BY: be-rBY, es_MX: es-rMX, es_NI: es-rNI, ii_CN: ii-rCN, si_LK: si-rLK, sl_SI: sl-rSI, tn_ZA: tn-rZA, ar_EG: ar-rEG, ar_IQ: ar-rIQ, fr_MC: fr-rMC, moh_CA: moh-rCA, se_NO: se-rNO, en_CA: en-rCA, fr_CA: fr-rCA, kl_GL: kl-rGL, en_IE: en-rIE, en_JM: en-rJM, gl_ES: gl-rES, hsb_DE: hsb-rDE, lb_LU: lb-rLU, af_ZA: af-rZA, ba_RU: ba-rRU, bn_IN: bn-rIN, sv_SE: sv-rSE, wo_SN: wo-rSN, es_CO: es-rCO, br_FR: br-rFR, he_IL: he-rIL, ja_JP: ja-rJP, lt_LT: lt-rLT, tt_RU: tt-rRU, ar_LB: ar-rLB, ar_QA: ar-rQA, as_IN: as-rIN, de_LU: de-rLU, es_PR: es-rPR, gsw_FR: gsw-rFR, kok_IN: kok-rIN, mn_CN: mn-rCN, am_ET: am-rET, bg_BG: bg-rBG, ca_ES: ca-rES, quz_PE: quz-rPE, se_FI: se-rFI, sr_BA: sr-rBA, syr_SY: syr-rSY, en_US: en-rUS, en@pirate: en-rpirate, nn_NO: nn-rNO
|
||||
|
||||
|
@ -1,14 +0,0 @@
|
||||
cmake_minimum_required(VERSION 3.5.0)
|
||||
|
||||
set (SRC_FILES
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/main/cpp/httpclient.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/main/cpp/json.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/main/cpp/nativesms.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/main/cpp/smsbuffer.cpp
|
||||
)
|
||||
|
||||
find_library(LOGGING_LIBRARY log)
|
||||
|
||||
add_library(nativesms SHARED ${SRC_FILES})
|
||||
|
||||
target_link_libraries(nativesms ${LOGGING_LIBRARY})
|
20
PRIVACY_POLICY.md
Normal file
@ -0,0 +1,20 @@
|
||||
# Overview
|
||||
|
||||
Nextcloud SMS is a free software developed by its contributors. This privacy policy
|
||||
is intended to inform you about data gathered by this application."
|
||||
|
||||
# Information we collect
|
||||
|
||||
Only SMS and call log are collected by the application.
|
||||
|
||||
# Where information is sent.
|
||||
|
||||
Information is neither sent to Nextcloud team servers nor Nextcloud SMS team servers nor
|
||||
any government nor another entity you don't want.
|
||||
|
||||
When you configure a Nextcloud account in the application, you agree with the Nextcloud
|
||||
instance owner that your SMS and call log data will be stored in his infrastructure
|
||||
under his responsibility.
|
||||
|
||||
We __don't__ recommend to use a public or a company Nextcloud instance account. Your privacy
|
||||
must be under your control on your own Nextcloud instance.
|
@ -6,14 +6,13 @@ Nextcloud SMS app pushes your Android devices conversation into your Nextcloud i
|
||||
|
||||
## :arrow_forward: Access
|
||||
|
||||
[](https://play.google.com/store/apps/details?id=fr.unix_experience.owncloud_sms)
|
||||
[](https://f-droid.org/repository/browse/?fdid=fr.unix_experience.owncloud_sms)
|
||||
|
||||
ocsms app sources are available here: https://github.com/nerzhul/ocsms/
|
||||
ocsms app sources are available here: https://github.com/nextcloud/ocsms
|
||||
|
||||
## :notebook: Application documentation
|
||||
|
||||
You can find the application documentation here: https://github.com/nerzhul/ownCloud-SMS-App/wiki
|
||||
You can find the application documentation here: https://github.com/nerzhul/ncsms-android/wiki
|
||||
|
||||
## :link: Requirements
|
||||
- [Nextcloud](https://nextcloud.com/) instance running
|
||||
@ -21,13 +20,14 @@ You can find the application documentation here: https://github.com/nerzhul/ownC
|
||||
|
||||
## :exclamation: Reporting issues
|
||||
|
||||
- **Client:** https://github.com/nerzhul/ownCloud-SMS-App/issues
|
||||
- **Client:** https://github.com/nerzhul/ncsms-android/issues
|
||||
- **Server:** https://github.com/nextcloud/ocsms/issues
|
||||
|
||||
## :rocket: Contributions
|
||||
|
||||
- We are searching for **translations** into others languages. To contribute please download `res/values/strings.xml` and `res/values/google_playstore_strings.xml` and provide a Pull Request with a translated version!
|
||||
- You can also contribute by adding **patches** in Java code or cleanups.
|
||||
- Application uses a [GoMobile AAR](https://gitlab.com/nerzhul/ncsmsgo) to have the best performance on phones with modern technologies like HTTP/2.0
|
||||
|
||||
### Build requirements
|
||||
- gradle
|
||||
|
45
build.gradle
@ -2,17 +2,25 @@ buildscript {
|
||||
repositories {
|
||||
mavenCentral()
|
||||
jcenter()
|
||||
google()
|
||||
}
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:3.0.1'
|
||||
classpath 'com.android.tools.build:gradle:3.2.1'
|
||||
}
|
||||
}
|
||||
|
||||
allprojects {
|
||||
repositories {
|
||||
jcenter()
|
||||
google()
|
||||
}
|
||||
}
|
||||
|
||||
apply plugin: 'com.android.application'
|
||||
|
||||
android {
|
||||
compileSdkVersion 27
|
||||
buildToolsVersion "27.0.2"
|
||||
compileSdkVersion 28
|
||||
buildToolsVersion "28.0.3"
|
||||
|
||||
lintOptions {
|
||||
abortOnError false
|
||||
@ -20,22 +28,17 @@ android {
|
||||
|
||||
defaultConfig {
|
||||
applicationId "fr.unix_experience.owncloud_sms"
|
||||
versionCode 64
|
||||
versionName "1.3.4"
|
||||
versionCode 70
|
||||
versionName "2.0.6"
|
||||
minSdkVersion 16
|
||||
targetSdkVersion 27
|
||||
maxSdkVersion 27
|
||||
targetSdkVersion 28
|
||||
maxSdkVersion 28
|
||||
ndk {
|
||||
// Specifies the ABI configurations of your native
|
||||
// libraries Gradle should build and package with your APK.
|
||||
abiFilters 'x86', 'x86_64', 'armeabi', 'armeabi-v7a',
|
||||
'arm64-v8a', 'mips', 'mips64'
|
||||
}
|
||||
externalNativeBuild {
|
||||
cmake {
|
||||
cppFlags "-frtti -fexceptions -std=c++11"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
@ -47,11 +50,6 @@ android {
|
||||
packagingOptions {
|
||||
exclude 'META-INF/LICENSE.txt'
|
||||
}
|
||||
externalNativeBuild {
|
||||
cmake {
|
||||
path 'CMakeLists.txt'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
repositories {
|
||||
@ -63,10 +61,11 @@ repositories {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compile 'com.android.support:support-v13:27.0.2'
|
||||
compile 'com.android.support:appcompat-v7:27.0.2'
|
||||
compile 'com.android.support:design:27.0.2'
|
||||
compile 'in.srain.cube:ultra-ptr:1.0.11'
|
||||
compile 'com.github.dmytrodanylyk.android-process-button:library:1.0.4'
|
||||
compile 'com.android.support:support-v4:27.0.2'
|
||||
implementation 'com.android.support:support-v13:28.0.0'
|
||||
implementation 'com.android.support:appcompat-v7:28.0.0'
|
||||
implementation 'com.android.support:design:28.0.0'
|
||||
implementation 'in.srain.cube:ultra-ptr:1.0.11'
|
||||
implementation 'com.github.dmytrodanylyk.android-process-button:library:1.0.4'
|
||||
implementation 'com.android.support:support-v4:28.0.0'
|
||||
implementation project(':ncsmsgo')
|
||||
}
|
||||
|
4
gradle/wrapper/gradle-wrapper.properties
vendored
@ -1,6 +1,6 @@
|
||||
#Sat Aug 27 20:10:09 CEST 2016
|
||||
#Sat Dec 22 18:14:31 CET 2018
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
|
||||
|
2
ncsmsgo/build.gradle
Normal file
@ -0,0 +1,2 @@
|
||||
configurations.maybeCreate("default")
|
||||
artifacts.add("default", file('ncsmsgo.aar'))
|
BIN
ncsmsgo/ncsmsgo.aar
Normal file
25
ncsmsgo/ncsmsgo.iml
Normal file
@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module external.linked.project.id=":ncsmsgo" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$/.." external.system.id="GRADLE" type="JAVA_MODULE" version="4">
|
||||
<component name="FacetManager">
|
||||
<facet type="android-gradle" name="Android-Gradle">
|
||||
<configuration>
|
||||
<option name="GRADLE_PROJECT_PATH" value=":ncsmsgo" />
|
||||
</configuration>
|
||||
</facet>
|
||||
<facet type="java-gradle" name="Java-Gradle">
|
||||
<configuration>
|
||||
<option name="BUILD_FOLDER_PATH" value="$MODULE_DIR$/build" />
|
||||
<option name="BUILDABLE" value="false" />
|
||||
</configuration>
|
||||
</facet>
|
||||
</component>
|
||||
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="true">
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<excludeFolder url="file://$MODULE_DIR$/.gradle" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
</module>
|
BIN
screenshots/login.png
Normal file
After Width: | Height: | Size: 22 KiB |
BIN
screenshots/settings.png
Normal file
After Width: | Height: | Size: 44 KiB |
BIN
screenshots/settings2.png
Normal file
After Width: | Height: | Size: 45 KiB |
1
settings.gradle
Normal file
@ -0,0 +1 @@
|
||||
include ':ncsmsgo'
|
@ -1,42 +1,43 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest package="fr.unix_experience.owncloud_sms"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<!-- From Android 4.1 to O -->
|
||||
<uses-sdk android:maxSdkVersion="26"/>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
package="fr.unix_experience.owncloud_sms"> <!-- From Android 4.1 to O -->
|
||||
<uses-sdk android:maxSdkVersion="26" />
|
||||
|
||||
<uses-permission android:name="android.permission.READ_SMS"/>
|
||||
<uses-permission android:name="android.permission.READ_SMS" />
|
||||
<uses-permission android:name="android.permission.WRITE_SMS" />
|
||||
|
||||
<!-- For SMS Restore & Sending -->
|
||||
<uses-permission android:name="android.permission.SEND_SMS"/>
|
||||
<uses-permission android:name="android.permission.SEND_SMS" />
|
||||
|
||||
<!-- For SMS Broadcaster -->
|
||||
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
|
||||
<uses-permission android:name="android.permission.RECEIVE_SMS" />
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||
|
||||
<!-- For syncer -->
|
||||
<uses-permission android:name="android.permission.READ_SYNC_STATS"/>
|
||||
<uses-permission android:name="android.permission.READ_SYNC_SETTINGS"/>
|
||||
<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS"/>
|
||||
<uses-permission android:name="android.permission.WAKE_LOCK"/>
|
||||
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
|
||||
<uses-permission android:name="android.permission.READ_SYNC_STATS" />
|
||||
<uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
|
||||
<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
|
||||
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
||||
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
|
||||
|
||||
<!-- For account management -->
|
||||
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
|
||||
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS"/>
|
||||
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/>
|
||||
<uses-permission android:name="android.permission.USE_CREDENTIALS"/>
|
||||
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
|
||||
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
|
||||
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
|
||||
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
|
||||
|
||||
<!-- For backup restauration -->
|
||||
<uses-permission android:name="android.permission.READ_CONTACTS"/>
|
||||
<uses-permission android:name="android.permission.VIBRATE"/>
|
||||
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
|
||||
<uses-permission android:name="android.permission.READ_CONTACTS" />
|
||||
<uses-permission android:name="android.permission.VIBRATE" />
|
||||
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
|
||||
|
||||
<application
|
||||
android:allowBackup="true"
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:label="@string/app_name"
|
||||
android:roundIcon="@mipmap/ic_launcher_round"
|
||||
android:theme="@style/OcSmsTheme">
|
||||
|
||||
<!-- Related to periodic sync -->
|
||||
@ -45,55 +46,59 @@
|
||||
android:exported="true"
|
||||
android:process=":sync">
|
||||
<intent-filter>
|
||||
<action android:name="android.content.SyncAdapter"/>
|
||||
<action android:name="android.content.SyncAdapter" />
|
||||
</intent-filter>
|
||||
|
||||
<meta-data
|
||||
android:name="android.content.SyncAdapter"
|
||||
android:resource="@xml/sync_adapter"/>
|
||||
android:resource="@xml/sync_adapter" />
|
||||
</service>
|
||||
|
||||
<provider
|
||||
android:name=".providers.SmsDataProvider"
|
||||
android:authorities="@string/account_authority"
|
||||
android:label="@string/pref_title_sync">
|
||||
</provider>
|
||||
android:label="@string/pref_title_sync"></provider>
|
||||
|
||||
<!-- Related to Login -->
|
||||
<service android:name=".authenticators.OwnCloudAuthenticatorService">
|
||||
<intent-filter>
|
||||
<action android:name="android.accounts.AccountAuthenticator"/>
|
||||
<action android:name="android.accounts.AccountAuthenticator" />
|
||||
</intent-filter>
|
||||
|
||||
<meta-data
|
||||
android:name="android.accounts.AccountAuthenticator"
|
||||
android:resource="@xml/owncloud_account_authenticator"/>
|
||||
android:resource="@xml/owncloud_account_authenticator" />
|
||||
</service>
|
||||
|
||||
<receiver android:name=".broadcast_receivers.IncomingSms"
|
||||
android:permission="android.permission.BROADCAST_SMS">
|
||||
<receiver
|
||||
android:name=".broadcast_receivers.IncomingSms"
|
||||
android:permission="android.permission.BROADCAST_SMS">
|
||||
<intent-filter>
|
||||
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
|
||||
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
|
||||
<action android:name="android.provider.Telephony.SMS_DELIVER" />
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
|
||||
<!-- BroadcastReceiver that listens for incoming MMS messages. Note: useless class, used only for restoring SMS -->
|
||||
<receiver android:name=".misc.MmsReceiver"
|
||||
android:permission="android.permission.BROADCAST_WAP_PUSH">
|
||||
<receiver
|
||||
android:name=".misc.MmsReceiver"
|
||||
android:permission="android.permission.BROADCAST_WAP_PUSH">
|
||||
<intent-filter>
|
||||
<action android:name="android.provider.Telephony.WAP_PUSH_DELIVER" />
|
||||
|
||||
<data android:mimeType="application/vnd.wap.mms-message" />
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
|
||||
<!-- Activity that allows the user to send new SMS/MMS messages Note: useless class, used only for restoring SMS -->
|
||||
<activity android:name=".misc.ComposeSmsActivity" >
|
||||
<activity android:name=".misc.ComposeSmsActivity">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.SEND" />
|
||||
<action android:name="android.intent.action.SENDTO" />
|
||||
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<category android:name="android.intent.category.BROWSABLE" />
|
||||
|
||||
<data android:scheme="sms" />
|
||||
<data android:scheme="smsto" />
|
||||
<data android:scheme="mms" />
|
||||
@ -102,12 +107,15 @@
|
||||
</activity>
|
||||
|
||||
<!-- Service that delivers messages from the phone "quick response" Note: useless class, used only for restoring SMS -->
|
||||
<service android:name=".misc.HeadlessSmsSendService"
|
||||
android:permission="android.permission.SEND_RESPOND_VIA_MESSAGE"
|
||||
android:exported="true" >
|
||||
<service
|
||||
android:name=".misc.HeadlessSmsSendService"
|
||||
android:exported="true"
|
||||
android:permission="android.permission.SEND_RESPOND_VIA_MESSAGE">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.RESPOND_VIA_MESSAGE" />
|
||||
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
|
||||
<data android:scheme="sms" />
|
||||
<data android:scheme="smsto" />
|
||||
<data android:scheme="mms" />
|
||||
@ -117,45 +125,43 @@
|
||||
|
||||
<receiver android:name=".broadcast_receivers.ConnectivityChanged">
|
||||
<intent-filter>
|
||||
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
|
||||
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
|
||||
<activity
|
||||
android:name=".activities.LoginActivity"
|
||||
android:label="@string/title_activity_login"
|
||||
android:theme="@style/OcSmsTheme.Login">
|
||||
</activity>
|
||||
android:theme="@style/OcSmsTheme.Login"></activity>
|
||||
<activity
|
||||
android:name=".activities.remote_account.AccountListActivity"
|
||||
android:label="@string/title_activity_select_account">
|
||||
</activity>
|
||||
android:label="@string/title_activity_select_account"></activity>
|
||||
<activity
|
||||
android:name=".activities.OCSMSSettingsActivity"
|
||||
android:label="@string/title_activity_general_settings">
|
||||
</activity>
|
||||
android:label="@string/title_activity_general_settings"></activity>
|
||||
<activity
|
||||
android:name=".activities.MainActivity"
|
||||
android:label="@string/app_name"
|
||||
android:theme="@style/OcSmsTheme.Drawer">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".activities.remote_account.ContactListActivity"
|
||||
android:label="@string/title_activity_select_contact">
|
||||
</activity>
|
||||
android:label="@string/title_activity_select_contact"></activity>
|
||||
<activity
|
||||
android:name=".activities.remote_account.AccountActionsActivity"
|
||||
android:label="@string/account_actions">
|
||||
</activity>
|
||||
android:label="@string/account_actions"></activity>
|
||||
<activity
|
||||
android:name=".activities.remote_account.RestoreMessagesActivity"
|
||||
android:label="@string/restore_all_messages">
|
||||
</activity>
|
||||
android:label="@string/restore_all_messages"></activity>
|
||||
<activity
|
||||
android:name=".activities.PrivacyPolicyActivity"
|
||||
android:label="@string/action_appinfo_privacy_policy"
|
||||
android:theme="@style/OcSmsTheme.NoActionBar"></activity>
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
</manifest>
|
@ -1,56 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2017, Loic Blot <loic.blot@unix-experience.fr>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "httpclient.h"
|
||||
|
||||
const char *HTTPClient::classPathName = "fr/unix_experience/owncloud_sms/engine/OCHttpClient";
|
||||
|
||||
// See https://docs.oracle.com/javase/8/docs/technotes/guides/jni/spec/types.html
|
||||
JNINativeMethod HTTPClient::methods[] =
|
||||
{
|
||||
DECL_JNIMETHOD(getAllSmsIdsCall, "()Ljava/lang/String;")
|
||||
DECL_JNIMETHOD(getLastMsgTimestamp, "()Ljava/lang/String;")
|
||||
DECL_JNIMETHOD(getPushRoute, "()Ljava/lang/String;")
|
||||
DECL_JNIMETHOD(getVersionCall, "()Ljava/lang/String;")
|
||||
};
|
||||
DECL_METHODSIZE(HTTPClient)
|
||||
|
||||
// APIv1 calls
|
||||
#define RCALL_GET_VERSION "/index.php/apps/ocsms/get/apiversion?format=json"
|
||||
#define RCALL_GET_ALL_SMS_IDS "/index.php/apps/ocsms/get/smsidlist?format=json"
|
||||
#define RCALL_GET_LAST_MSG_TIMESTAMP "/index.php/apps/ocsms/get/lastmsgtime?format=json"
|
||||
#define RCALL_PUSH_ROUTE "/index.php/apps/ocsms/push?format=json"
|
||||
|
||||
jstring HTTPClient::getVersionCall(JNIEnv *env, jobject)
|
||||
{
|
||||
return env->NewStringUTF(RCALL_GET_VERSION);
|
||||
}
|
||||
|
||||
jstring HTTPClient::getAllSmsIdsCall(JNIEnv *env, jobject)
|
||||
{
|
||||
return env->NewStringUTF(RCALL_GET_ALL_SMS_IDS);
|
||||
}
|
||||
|
||||
jstring HTTPClient::getLastMsgTimestamp(JNIEnv *env, jobject)
|
||||
{
|
||||
return env->NewStringUTF(RCALL_GET_LAST_MSG_TIMESTAMP);
|
||||
}
|
||||
|
||||
jstring HTTPClient::getPushRoute(JNIEnv *env, jobject)
|
||||
{
|
||||
return env->NewStringUTF(RCALL_PUSH_ROUTE);
|
||||
}
|
@ -1,34 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2017, Loic Blot <loic.blot@unix-experience.fr>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <jni.h>
|
||||
#include "macro_helpers.h"
|
||||
|
||||
class HTTPClient
|
||||
{
|
||||
public:
|
||||
JNIEXPORT static jstring JNICALL getVersionCall(JNIEnv *env, jobject);
|
||||
JNIEXPORT static jstring JNICALL getAllSmsIdsCall(JNIEnv *env, jobject);
|
||||
JNIEXPORT static jstring JNICALL getLastMsgTimestamp(JNIEnv *env, jobject);
|
||||
JNIEXPORT static jstring JNICALL getPushRoute(JNIEnv *env, jobject);
|
||||
|
||||
DECL_JNICLASSATTRS
|
||||
};
|
||||
|
||||
|
@ -1,73 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2017, Loic Blot <loic.blot@unix-experience.fr>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "json.h"
|
||||
#include <iomanip>
|
||||
#include <sstream>
|
||||
#include <cstring>
|
||||
|
||||
namespace json {
|
||||
|
||||
std::string escape_string(const char *str)
|
||||
{
|
||||
if (!str) {
|
||||
return "";
|
||||
}
|
||||
|
||||
std::string result;
|
||||
// Create a sufficient buffer to escape all chars
|
||||
result.reserve(strlen(str) * 2 + 3);
|
||||
result += "\"";
|
||||
for (const char *c = str; *c != 0; ++c) {
|
||||
switch (*c) {
|
||||
case '\"':
|
||||
result += "\\\"";
|
||||
break;
|
||||
case '\\':
|
||||
result += "\\\\";
|
||||
break;
|
||||
case '\b':
|
||||
result += "\\b";
|
||||
break;
|
||||
case '\t':
|
||||
result += "\\t";
|
||||
break;
|
||||
case '\n':
|
||||
result += "\\n";
|
||||
break;
|
||||
case '\f':
|
||||
result += "\\f";
|
||||
break;
|
||||
case '\r':
|
||||
result += "\\r";
|
||||
break;
|
||||
default:
|
||||
if (is_control_character(*c)) {
|
||||
std::stringstream oss;
|
||||
oss << "\\u" << std::hex << std::uppercase << std::setfill('0')
|
||||
<< std::setw(4) << static_cast<int>(*c);
|
||||
result += oss.str();
|
||||
} else {
|
||||
result += *c;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
result += "\"";
|
||||
return result;
|
||||
}
|
||||
}
|
@ -1,29 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2017, Loic Blot <loic.blot@unix-experience.fr>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <string>
|
||||
|
||||
namespace json {
|
||||
|
||||
static inline bool is_control_character(char ch)
|
||||
{ return ch > 0 && ch <= 0x1F; }
|
||||
|
||||
std::string escape_string(const char *str);
|
||||
|
||||
}
|
@ -1,29 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2017, Loic Blot <loic.blot@unix-experience.fr>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define DECL_JNIMETHOD(name, type) \
|
||||
{#name, type, (void*) &name },
|
||||
|
||||
#define DECL_METHODSIZE(T) \
|
||||
int T::methods_size = sizeof(T::methods) / sizeof(T::methods[0]);
|
||||
|
||||
#define DECL_JNICLASSATTRS \
|
||||
static const char *classPathName; \
|
||||
static JNINativeMethod methods[]; \
|
||||
static int methods_size;
|
@ -1,76 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2014-2017, Loic Blot <loic.blot@unix-experience.fr>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <jni.h>
|
||||
#include <android/log.h>
|
||||
#include "httpclient.h"
|
||||
#include "smsbuffer.h"
|
||||
|
||||
#define LOG_TAG "nativesms.cpp"
|
||||
|
||||
/*
|
||||
* Register several native methods for one class.
|
||||
*/
|
||||
static int registerNativeMethods(JNIEnv* env, const char* className,
|
||||
JNINativeMethod* gMethods, int numMethods)
|
||||
{
|
||||
jclass clazz;
|
||||
clazz = env->FindClass(className);
|
||||
__android_log_print(ANDROID_LOG_INFO, LOG_TAG, "Registering class '%s'", className);
|
||||
if (clazz == NULL) {
|
||||
__android_log_print(ANDROID_LOG_FATAL, LOG_TAG, "Native registration unable to find class %s", className);
|
||||
return JNI_FALSE;
|
||||
}
|
||||
if (env->RegisterNatives(clazz, gMethods, numMethods) < 0) {
|
||||
__android_log_print(ANDROID_LOG_ERROR, LOG_TAG, "RegisterNatives failed for %s", className);
|
||||
return JNI_FALSE;
|
||||
}
|
||||
return JNI_TRUE;
|
||||
}
|
||||
|
||||
static int registerNatives(JNIEnv* env)
|
||||
{
|
||||
if (!registerNativeMethods(env,
|
||||
HTTPClient::classPathName,
|
||||
HTTPClient::methods,
|
||||
HTTPClient::methods_size)) {
|
||||
return JNI_FALSE;
|
||||
}
|
||||
|
||||
if (!registerNativeMethods(env,
|
||||
SmsBuffer::classPathName,
|
||||
SmsBuffer::methods,
|
||||
SmsBuffer::methods_size)) {
|
||||
return JNI_FALSE;
|
||||
}
|
||||
|
||||
return JNI_TRUE;
|
||||
}
|
||||
|
||||
jint JNI_OnLoad(JavaVM* vm, void* reserved)
|
||||
{
|
||||
__android_log_print(ANDROID_LOG_INFO, LOG_TAG, "NativeSMS library loading...");
|
||||
JNIEnv* env;
|
||||
if (vm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_6) != JNI_OK) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
registerNatives(env);
|
||||
|
||||
__android_log_print(ANDROID_LOG_INFO, LOG_TAG, "NativeSMS library loaded.");
|
||||
return JNI_VERSION_1_6;
|
||||
}
|
@ -1,162 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2017, Loic Blot <loic.blot@unix-experience.fr>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <android/log.h>
|
||||
#include <cassert>
|
||||
#include <iomanip>
|
||||
#include "smsbuffer.h"
|
||||
#include "json.h"
|
||||
|
||||
#define LOG_TAG "SmsBuffer"
|
||||
const char *SmsBuffer::classPathName = "fr/unix_experience/owncloud_sms/jni/SmsBuffer";
|
||||
|
||||
// See https://docs.oracle.com/javase/8/docs/technotes/guides/jni/spec/types.html
|
||||
JNINativeMethod SmsBuffer::methods[] =
|
||||
{
|
||||
DECL_JNIMETHOD(createNativeObject, "()J")
|
||||
DECL_JNIMETHOD(deleteNativeObject, "()V")
|
||||
DECL_JNIMETHOD(empty, "()Z")
|
||||
DECL_JNIMETHOD(asRawJsonString, "()Ljava/lang/String;")
|
||||
DECL_JNIMETHOD(getLastMessageDate, "()J")
|
||||
DECL_JNIMETHOD(push,
|
||||
"(IIIJLjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V")
|
||||
DECL_JNIMETHOD(print, "()V")
|
||||
};
|
||||
DECL_METHODSIZE(SmsBuffer)
|
||||
|
||||
#define SMSBUFFER_CAST \
|
||||
if (!SmsBuffer::gJava_inited) { \
|
||||
SmsBuffer::gJava_inited = true; \
|
||||
SmsBuffer::gJava_mHandle = env->GetFieldID(env->GetObjectClass(self), "mHandle", "J"); \
|
||||
} \
|
||||
long ptr = env->GetLongField(self, SmsBuffer::gJava_mHandle); \
|
||||
SmsBuffer *me = reinterpret_cast<SmsBuffer *>(ptr); \
|
||||
if (!me) { \
|
||||
__android_log_print(ANDROID_LOG_FATAL, LOG_TAG, "It's not a SmsBuffer!"); \
|
||||
assert(false); \
|
||||
}
|
||||
|
||||
bool SmsBuffer::gJava_inited = false;
|
||||
jfieldID SmsBuffer::gJava_mHandle{};
|
||||
|
||||
jlong SmsBuffer::createNativeObject(JNIEnv *env, jobject self)
|
||||
{
|
||||
return reinterpret_cast<jlong>(new SmsBuffer());
|
||||
}
|
||||
|
||||
void SmsBuffer::deleteNativeObject(JNIEnv *env, jobject self)
|
||||
{
|
||||
SMSBUFFER_CAST
|
||||
__android_log_print(ANDROID_LOG_INFO, LOG_TAG, "deleteNativeObject 0x%li", ptr);
|
||||
delete reinterpret_cast<SmsBuffer *>(ptr);
|
||||
}
|
||||
|
||||
void SmsBuffer::reset_buffer()
|
||||
{
|
||||
m_buffer.clear();
|
||||
m_buffer_empty = true;
|
||||
m_sms_count = 0;
|
||||
m_last_message_date = 0;
|
||||
}
|
||||
|
||||
void SmsBuffer::push(JNIEnv *env, jobject self, jint msg_id, jint mailbox_id, jint type,
|
||||
jlong date, jstring address, jstring body, jstring read, jstring seen)
|
||||
{
|
||||
SMSBUFFER_CAST
|
||||
me->_push(msg_id, mailbox_id, type, date, env->GetStringUTFChars(address, NULL),
|
||||
env->GetStringUTFChars(body, NULL), env->GetStringUTFChars(read, NULL),
|
||||
env->GetStringUTFChars(seen, NULL));
|
||||
}
|
||||
|
||||
void SmsBuffer::_push(int msg_id, int mailbox_id, int type,
|
||||
long long date, const char *address, const char *body, const char *read,
|
||||
const char *seen)
|
||||
{
|
||||
// If buffer is not empty, we are joining messages
|
||||
if (!m_buffer_empty) {
|
||||
m_buffer << ",";
|
||||
}
|
||||
// Else, we are starting array
|
||||
else {
|
||||
m_buffer << "[";
|
||||
m_buffer_empty = false;
|
||||
}
|
||||
|
||||
m_buffer << "{\"_id\":" << msg_id << ","
|
||||
<< "\"mbox\":" << mailbox_id << ","
|
||||
<< "\"type\":" << type << ","
|
||||
<< "\"date\":" << date << ","
|
||||
<< "\"body\":" << json::escape_string(body) << ","
|
||||
<< "\"address\":" << json::escape_string(address) << ","
|
||||
<< "\"read\":" << json::escape_string(read) << ","
|
||||
<< "\"seen\":" << json::escape_string(seen)
|
||||
<< "}";
|
||||
|
||||
if (date > m_last_message_date) {
|
||||
m_last_message_date = date;
|
||||
}
|
||||
m_sms_count++;
|
||||
}
|
||||
|
||||
jboolean SmsBuffer::empty(JNIEnv *env, jobject self)
|
||||
{
|
||||
SMSBUFFER_CAST
|
||||
return (jboolean) (me->_empty() ? 1 : 0);
|
||||
}
|
||||
|
||||
bool SmsBuffer::_empty() const
|
||||
{
|
||||
return m_buffer_empty;
|
||||
}
|
||||
|
||||
void SmsBuffer::print(JNIEnv *env, jobject self)
|
||||
{
|
||||
SMSBUFFER_CAST
|
||||
me->_print();
|
||||
}
|
||||
|
||||
void SmsBuffer::_print()
|
||||
{
|
||||
__android_log_print(ANDROID_LOG_INFO, LOG_TAG, "SmsBuffer content: '%s'",
|
||||
m_buffer.str().c_str());
|
||||
}
|
||||
|
||||
jstring SmsBuffer::asRawJsonString(JNIEnv *env, jobject self)
|
||||
{
|
||||
SMSBUFFER_CAST
|
||||
std::string result;
|
||||
me->as_raw_json_string(result);
|
||||
return env->NewStringUTF(result.c_str());
|
||||
}
|
||||
|
||||
void SmsBuffer::as_raw_json_string(std::string &result)
|
||||
{
|
||||
std::stringstream ss;
|
||||
ss << "{\"smsCount\": " << m_sms_count << ", \"smsDatas\": " << m_buffer.str() << "]}";
|
||||
result = ss.str();
|
||||
}
|
||||
|
||||
jlong SmsBuffer::getLastMessageDate(JNIEnv *env, jobject self)
|
||||
{
|
||||
SMSBUFFER_CAST
|
||||
return me->_get_last_message_date();
|
||||
}
|
||||
|
||||
long long SmsBuffer::_get_last_message_date() const
|
||||
{
|
||||
return m_last_message_date;
|
||||
}
|
@ -1,80 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2017, Loic Blot <loic.blot@unix-experience.fr>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <jni.h>
|
||||
#include <sstream>
|
||||
#include "macro_helpers.h"
|
||||
|
||||
class SmsBuffer
|
||||
{
|
||||
public:
|
||||
SmsBuffer() = default;
|
||||
~SmsBuffer() = default;
|
||||
|
||||
JNIEXPORT static jlong JNICALL createNativeObject(JNIEnv *env, jobject self);
|
||||
JNIEXPORT static void JNICALL deleteNativeObject(JNIEnv *env, jobject self);
|
||||
|
||||
/*
|
||||
* push method
|
||||
*/
|
||||
JNIEXPORT static void JNICALL push(JNIEnv *env, jobject self, jint msg_id,
|
||||
jint mailbox_id, jint type, jlong date, jstring address,
|
||||
jstring body, jstring read, jstring seen);
|
||||
void _push(int msg_id, int mailbox_id, int type,
|
||||
long long date, const char *address, const char *body, const char *read,
|
||||
const char *seen);
|
||||
|
||||
/*
|
||||
* empty method
|
||||
*/
|
||||
|
||||
JNIEXPORT static jboolean JNICALL empty(JNIEnv *env, jobject self);
|
||||
bool _empty() const;
|
||||
|
||||
/*
|
||||
* print method
|
||||
*/
|
||||
JNIEXPORT static void JNICALL print(JNIEnv *env, jobject self);
|
||||
void _print();
|
||||
|
||||
/*
|
||||
* asRawJsonString method
|
||||
*/
|
||||
JNIEXPORT static jstring JNICALL asRawJsonString(JNIEnv *env, jobject self);
|
||||
void as_raw_json_string(std::string &result);
|
||||
|
||||
/*
|
||||
* getLastMessageDate method
|
||||
*/
|
||||
|
||||
JNIEXPORT static jlong JNICALL getLastMessageDate(JNIEnv *env, jobject self);
|
||||
long long _get_last_message_date() const;
|
||||
|
||||
DECL_JNICLASSATTRS
|
||||
|
||||
private:
|
||||
void reset_buffer();
|
||||
std::stringstream m_buffer;
|
||||
uint32_t m_sms_count{0};
|
||||
bool m_buffer_empty{true};
|
||||
long long m_last_message_date{0};
|
||||
|
||||
static bool gJava_inited;
|
||||
static jfieldID gJava_mHandle;
|
||||
};
|
BIN
src/main/ic_launcher-web.png
Normal file
After Width: | Height: | Size: 37 KiB |
@ -208,7 +208,7 @@ public class AppCompatListActivity extends AppCompatActivity {
|
||||
super.onContentChanged();
|
||||
|
||||
View emptyView = findViewById(R.id.empty);
|
||||
mList = (ListView)findViewById(R.id.list);
|
||||
mList = findViewById(R.id.list);
|
||||
if (mList == null) {
|
||||
throw new RuntimeException(
|
||||
"Your content must have a ListView whose id attribute is " +
|
||||
|
@ -44,8 +44,6 @@ import android.widget.TextView;
|
||||
|
||||
import com.dd.processbutton.iml.ActionProcessButton;
|
||||
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
|
||||
@ -85,11 +83,11 @@ public class LoginActivity extends AppCompatActivity {
|
||||
actionBar.setDisplayHomeAsUpEnabled(true);
|
||||
|
||||
// Set up the login form.
|
||||
_protocolView = (Spinner) findViewById(R.id.oc_protocol);
|
||||
_serverView = (EditText) findViewById(R.id.oc_server);
|
||||
_loginView = (EditText) findViewById(R.id.oc_login);
|
||||
_protocolView = findViewById(R.id.oc_protocol);
|
||||
_serverView = findViewById(R.id.oc_server);
|
||||
_loginView = findViewById(R.id.oc_login);
|
||||
|
||||
_passwordView = (EditText) findViewById(R.id.oc_password);
|
||||
_passwordView = findViewById(R.id.oc_password);
|
||||
_passwordView
|
||||
.setOnEditorActionListener(new TextView.OnEditorActionListener() {
|
||||
@Override
|
||||
@ -103,7 +101,7 @@ public class LoginActivity extends AppCompatActivity {
|
||||
}
|
||||
});
|
||||
|
||||
_signInButton = (ActionProcessButton) findViewById(R.id.oc_signin_button);
|
||||
_signInButton = findViewById(R.id.oc_signin_button);
|
||||
_signInButton.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
@ -263,6 +261,7 @@ public class LoginActivity extends AppCompatActivity {
|
||||
Log.i(TAG, "_serverURL = " + serverURL);
|
||||
_login = login;
|
||||
_password = password;
|
||||
_last_http_error = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -270,8 +269,8 @@ public class LoginActivity extends AppCompatActivity {
|
||||
_returnCode = 0;
|
||||
OCHttpClient http = new OCHttpClient(getBaseContext(), _serverURL, _login, _password);
|
||||
try {
|
||||
Pair<Integer, JSONObject> response = http.getVersion();
|
||||
_returnCode = response.first;
|
||||
Pair<Integer, Integer> vPair = http.getVersion();
|
||||
_returnCode = vPair.first;
|
||||
} catch (IllegalArgumentException e) {
|
||||
Log.w(TAG, "Failed to getVersion, IllegalArgumentException occured: " + e.getMessage());
|
||||
_returnCode = 597;
|
||||
@ -280,6 +279,7 @@ public class LoginActivity extends AppCompatActivity {
|
||||
_returnCode = 599;
|
||||
}
|
||||
|
||||
_last_http_error = http.getLastError();
|
||||
return (_returnCode == 200);
|
||||
}
|
||||
|
||||
@ -327,7 +327,12 @@ public class LoginActivity extends AppCompatActivity {
|
||||
boolean serverViewRequestFocus = true;
|
||||
switch (_returnCode) {
|
||||
case 0:
|
||||
_serverView.setError("UNK");
|
||||
if (!_last_http_error.isEmpty()) {
|
||||
_serverView.setError("Low level error: " + _last_http_error);
|
||||
}
|
||||
else {
|
||||
_serverView.setError("Unknown error");
|
||||
}
|
||||
break;
|
||||
case 404:
|
||||
_serverView.setError(getString(R.string.error_connection_failed_not_found));
|
||||
@ -373,6 +378,7 @@ public class LoginActivity extends AppCompatActivity {
|
||||
private final URL _serverURL;
|
||||
private final String _login;
|
||||
private final String _password;
|
||||
private String _last_http_error;
|
||||
private int _returnCode;
|
||||
|
||||
static final String PARAM_AUTHTOKEN_TYPE = "auth.token";
|
||||
|
@ -73,10 +73,12 @@ public class MainActivity extends AppCompatActivity
|
||||
setContentView(R.layout.activity_main);
|
||||
|
||||
setupToolbar();
|
||||
getSupportActionBar().setHomeButtonEnabled(true);
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
if (getSupportActionBar() != null) {
|
||||
getSupportActionBar().setHomeButtonEnabled(true);
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
}
|
||||
|
||||
drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
|
||||
drawer = findViewById(R.id.drawer_layout);
|
||||
setupDrawer();
|
||||
drawer.openDrawer(GravityCompat.START);
|
||||
}
|
||||
@ -93,7 +95,7 @@ public class MainActivity extends AppCompatActivity
|
||||
toggle.syncState();
|
||||
toggle.setDrawerIndicatorEnabled(true);
|
||||
|
||||
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
|
||||
NavigationView navigationView = findViewById(R.id.nav_view);
|
||||
assert navigationView != null;
|
||||
navigationView.setNavigationItemSelectedListener(this);
|
||||
}
|
||||
@ -153,7 +155,7 @@ public class MainActivity extends AppCompatActivity
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onNavigationItemSelected(MenuItem item) {
|
||||
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
|
||||
int id = item.getItemId();
|
||||
boolean res = true;
|
||||
|
||||
@ -176,6 +178,11 @@ public class MainActivity extends AppCompatActivity
|
||||
case R.id.nav_appinfo_perms:
|
||||
res = openAppInfos();
|
||||
break;
|
||||
case R.id.nav_appinfo_privacy_policy:
|
||||
res = openPrivacyPolicy();
|
||||
break;
|
||||
default:
|
||||
Log.e(TAG, "Unhandled navigation item " + Integer.toString(id));
|
||||
}
|
||||
closeDrawer();
|
||||
return res;
|
||||
@ -218,7 +225,7 @@ public class MainActivity extends AppCompatActivity
|
||||
Intent intent;
|
||||
try {
|
||||
intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + getPackageName()));
|
||||
} catch (android.content.ActivityNotFoundException anfe) {
|
||||
} catch (android.content.ActivityNotFoundException e) {
|
||||
intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + getPackageName()));
|
||||
}
|
||||
|
||||
@ -235,6 +242,11 @@ public class MainActivity extends AppCompatActivity
|
||||
return true;
|
||||
}
|
||||
|
||||
private boolean openPrivacyPolicy() {
|
||||
startActivity(new Intent(this, PrivacyPolicyActivity.class));
|
||||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
* Permissions
|
||||
*/
|
||||
|
@ -0,0 +1,21 @@
|
||||
package fr.unix_experience.owncloud_sms.activities;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.design.widget.FloatingActionButton;
|
||||
import android.support.design.widget.Snackbar;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.view.View;
|
||||
|
||||
import fr.unix_experience.owncloud_sms.R;
|
||||
|
||||
public class PrivacyPolicyActivity extends AppCompatActivity {
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_privacy_policy);
|
||||
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
|
||||
setSupportActionBar(toolbar);
|
||||
}
|
||||
}
|
@ -55,12 +55,12 @@ public class ContactListActivity extends AppCompatActivity implements ASyncConta
|
||||
mObjects = new ArrayList<>();
|
||||
setContentView(R.layout.restore_activity_contactlist);
|
||||
|
||||
mLayout = (SwipeRefreshLayout) findViewById(R.id.contactlist_swipe_container);
|
||||
mLayout = findViewById(R.id.contactlist_swipe_container);
|
||||
|
||||
mAdapter = new ContactListAdapter(getBaseContext(), mObjects);
|
||||
|
||||
mContactInfos = (LinearLayout) findViewById(R.id.contactinfos_layout);
|
||||
ListView contactPhoneListView = (ListView) findViewById(R.id.contact_phonelistView);
|
||||
mContactInfos = findViewById(R.id.contactinfos_layout);
|
||||
ListView contactPhoneListView = findViewById(R.id.contact_phonelistView);
|
||||
mContactPhoneListAdapter = new RecoveryPhoneNumberListViewAdapter(getBaseContext());
|
||||
assert contactPhoneListView != null;
|
||||
contactPhoneListView.setAdapter(mContactPhoneListAdapter);
|
||||
@ -72,7 +72,7 @@ public class ContactListActivity extends AppCompatActivity implements ASyncConta
|
||||
}
|
||||
|
||||
private void createAccountList() {
|
||||
final ProgressBar contactProgressBar = (ProgressBar) findViewById(R.id.contactlist_pgbar);
|
||||
final ProgressBar contactProgressBar = findViewById(R.id.contactlist_pgbar);
|
||||
assert contactProgressBar != null;
|
||||
|
||||
String accountName = getIntent().getExtras().getString("account");
|
||||
@ -112,7 +112,7 @@ public class ContactListActivity extends AppCompatActivity implements ASyncConta
|
||||
}
|
||||
|
||||
private void initSpinner() {
|
||||
final Spinner sp = (Spinner) findViewById(R.id.contact_spinner);
|
||||
final Spinner sp = findViewById(R.id.contact_spinner);
|
||||
assert sp != null;
|
||||
sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
|
||||
@Override
|
||||
|
@ -73,9 +73,9 @@ public class RestoreMessagesActivity extends AppCompatActivity {
|
||||
}
|
||||
|
||||
initInterface();
|
||||
Button fix_button = (Button) findViewById(R.id.button_fix_permissions);
|
||||
final Button launch_restore = (Button) findViewById(R.id.button_launch_restore);
|
||||
final ProgressBar pb = (ProgressBar) findViewById(R.id.progressbar_restore);
|
||||
Button fix_button = findViewById(R.id.button_fix_permissions);
|
||||
final Button launch_restore = findViewById(R.id.button_launch_restore);
|
||||
final ProgressBar pb = findViewById(R.id.progressbar_restore);
|
||||
|
||||
final RestoreMessagesActivity me = this;
|
||||
fix_button.setOnClickListener(new View.OnClickListener() {
|
||||
@ -130,13 +130,13 @@ public class RestoreMessagesActivity extends AppCompatActivity {
|
||||
}
|
||||
|
||||
private void initInterface() {
|
||||
TextView tv_error = (TextView) findViewById(R.id.tv_error_default_smsapp);
|
||||
TextView tv_error = findViewById(R.id.tv_error_default_smsapp);
|
||||
tv_error.setText(R.string.error_make_default_sms_app);
|
||||
findViewById(R.id.tv_restore_finished).setVisibility(View.INVISIBLE);
|
||||
findViewById(R.id.tv_progress_value).setVisibility(View.INVISIBLE);
|
||||
Button fix_button = (Button) findViewById(R.id.button_fix_permissions);
|
||||
Button launch_restore = (Button) findViewById(R.id.button_launch_restore);
|
||||
ProgressBar pb = (ProgressBar) findViewById(R.id.progressbar_restore);
|
||||
Button fix_button = findViewById(R.id.button_fix_permissions);
|
||||
Button launch_restore = findViewById(R.id.button_launch_restore);
|
||||
ProgressBar pb = findViewById(R.id.progressbar_restore);
|
||||
pb.setVisibility(View.INVISIBLE);
|
||||
|
||||
if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.KITKAT) {
|
||||
@ -158,10 +158,10 @@ public class RestoreMessagesActivity extends AppCompatActivity {
|
||||
}
|
||||
|
||||
private void errorNotification(int err) {
|
||||
TextView tv = (TextView) findViewById(R.id.tv_error_default_smsapp);
|
||||
Button fix_button = (Button) findViewById(R.id.button_fix_permissions);
|
||||
Button launch_restore = (Button) findViewById(R.id.button_launch_restore);
|
||||
ProgressBar pb = (ProgressBar) findViewById(R.id.progressbar_restore);
|
||||
TextView tv = findViewById(R.id.tv_error_default_smsapp);
|
||||
Button fix_button = findViewById(R.id.button_fix_permissions);
|
||||
Button launch_restore = findViewById(R.id.button_launch_restore);
|
||||
ProgressBar pb = findViewById(R.id.progressbar_restore);
|
||||
tv.setText(err);
|
||||
tv.setVisibility(View.VISIBLE);
|
||||
fix_button.setVisibility(View.INVISIBLE);
|
||||
@ -182,9 +182,9 @@ public class RestoreMessagesActivity extends AppCompatActivity {
|
||||
switch (requestCode) {
|
||||
case RestoreMessagesActivity.REQUEST_DEFAULT_SMSAPP:
|
||||
if (resultCode == Activity.RESULT_OK) {
|
||||
TextView tv = (TextView) findViewById(R.id.tv_error_default_smsapp);
|
||||
Button fix_button = (Button) findViewById(R.id.button_fix_permissions);
|
||||
Button launch_restore = (Button) findViewById(R.id.button_launch_restore);
|
||||
TextView tv = findViewById(R.id.tv_error_default_smsapp);
|
||||
Button fix_button = findViewById(R.id.button_fix_permissions);
|
||||
Button launch_restore = findViewById(R.id.button_launch_restore);
|
||||
tv.setVisibility(View.INVISIBLE);
|
||||
fix_button.setVisibility(View.INVISIBLE);
|
||||
launch_restore.setVisibility(View.VISIBLE);
|
||||
@ -225,7 +225,7 @@ public class RestoreMessagesActivity extends AppCompatActivity {
|
||||
}
|
||||
|
||||
public void onProgressUpdate(Integer value) {
|
||||
TextView tv_progress = (TextView) findViewById(R.id.tv_progress_value);
|
||||
TextView tv_progress = findViewById(R.id.tv_progress_value);
|
||||
if (tv_progress.getVisibility() == View.INVISIBLE) {
|
||||
tv_progress.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
@ -43,7 +43,7 @@ public class AndroidAccountAdapter extends ArrayAdapter<Account> {
|
||||
final Account account = _accounts.get(position);
|
||||
|
||||
if (account != null) {
|
||||
TextView label = (TextView) v.findViewById(AndroidAccountAdapter._accountFieldId);
|
||||
TextView label = v.findViewById(AndroidAccountAdapter._accountFieldId);
|
||||
if (label != null) {
|
||||
label.setText(account.name + " >");
|
||||
v.setOnClickListener(new OnClickListener() {
|
||||
|
@ -39,7 +39,7 @@ public class ContactListAdapter extends ArrayAdapter<String> {
|
||||
String element = _objects.get(position);
|
||||
|
||||
if (element != null) {
|
||||
TextView label = (TextView) v.findViewById(ContactListAdapter._fieldId);
|
||||
TextView label = v.findViewById(ContactListAdapter._fieldId);
|
||||
if (label != null) {
|
||||
label.setText(element);
|
||||
}
|
||||
|
@ -30,7 +30,7 @@ public class RecoveryPhoneNumberListViewAdapter extends ArrayAdapter<String> {
|
||||
v = inflater.inflate(RecoveryPhoneNumberListViewAdapter._itemLayout, null);
|
||||
}
|
||||
|
||||
TextView label = (TextView) v.findViewById(RecoveryPhoneNumberListViewAdapter._fieldId);
|
||||
TextView label = v.findViewById(RecoveryPhoneNumberListViewAdapter._fieldId);
|
||||
if (label != null) {
|
||||
final String l = getItem(position).toString();
|
||||
label.setText(getItem(position).toString());
|
||||
|
@ -32,9 +32,9 @@ import fr.unix_experience.owncloud_sms.engine.ASyncSMSSync;
|
||||
import fr.unix_experience.owncloud_sms.engine.AndroidSmsFetcher;
|
||||
import fr.unix_experience.owncloud_sms.engine.ConnectivityMonitor;
|
||||
import fr.unix_experience.owncloud_sms.enums.PermissionID;
|
||||
import fr.unix_experience.owncloud_sms.jni.SmsBuffer;
|
||||
import fr.unix_experience.owncloud_sms.prefs.OCSMSSharedPrefs;
|
||||
import fr.unix_experience.owncloud_sms.prefs.PermissionChecker;
|
||||
import ncsmsgo.SmsBuffer;
|
||||
|
||||
public class ConnectivityChanged extends BroadcastReceiver implements ASyncSMSSync {
|
||||
|
||||
|
@ -12,15 +12,13 @@ import android.view.View;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.ProgressBar;
|
||||
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
|
||||
import fr.unix_experience.owncloud_sms.R;
|
||||
import fr.unix_experience.owncloud_sms.adapters.ContactListAdapter;
|
||||
import fr.unix_experience.owncloud_sms.exceptions.OCSyncException;
|
||||
import ncsmsgo.SmsPhoneListResponse;
|
||||
|
||||
public interface ASyncContactLoad {
|
||||
class ContactLoadTask extends AsyncTask<Void, Void, Boolean> {
|
||||
@ -68,24 +66,24 @@ public interface ASyncContactLoad {
|
||||
|
||||
ArrayList<String> serverPhoneList = new ArrayList<>();
|
||||
|
||||
JSONArray phoneNumbers = _client.getServerPhoneNumbers();
|
||||
for (int i = 0; i < phoneNumbers.length(); i++) {
|
||||
String phone = phoneNumbers.getString(i);
|
||||
serverPhoneList.add(phone);
|
||||
SmsPhoneListResponse splr = _client.getServerPhoneNumbers();
|
||||
if (splr == null) {
|
||||
_objects.add(_context.getString(R.string.err_fetch_phonelist));
|
||||
return false;
|
||||
}
|
||||
|
||||
String phoneNumber;
|
||||
while (!(phoneNumber = splr.getNextEntry()).equals("")) {
|
||||
serverPhoneList.add(phoneNumber);
|
||||
}
|
||||
|
||||
// Read all contacts
|
||||
readContacts(serverPhoneList);
|
||||
|
||||
for (String phone : serverPhoneList) {
|
||||
_objects.add(phone);
|
||||
}
|
||||
_objects.addAll(serverPhoneList);
|
||||
|
||||
// Sort phone numbers
|
||||
Collections.sort(_objects);
|
||||
} catch (JSONException e) {
|
||||
_objects.add(_context.getString(R.string.err_fetch_phonelist));
|
||||
return false;
|
||||
} catch (OCSyncException e) {
|
||||
_objects.add(_context.getString(e.getErrorId()));
|
||||
return false;
|
||||
|
@ -7,14 +7,11 @@ import android.os.AsyncTask;
|
||||
import android.provider.Telephony;
|
||||
import android.util.Log;
|
||||
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.util.Iterator;
|
||||
|
||||
import fr.unix_experience.owncloud_sms.activities.remote_account.RestoreMessagesActivity;
|
||||
import fr.unix_experience.owncloud_sms.enums.MailboxID;
|
||||
import fr.unix_experience.owncloud_sms.providers.SmsDataProvider;
|
||||
import ncsmsgo.SmsMessage;
|
||||
import ncsmsgo.SmsMessagesResponse;
|
||||
|
||||
/*
|
||||
* Copyright (c) 2014-2016, Loic Blot <loic.blot@unix-experience.fr>
|
||||
@ -60,81 +57,70 @@ public interface ASyncSMSRecovery {
|
||||
|
||||
OCSMSOwnCloudClient client = new OCSMSOwnCloudClient(_context, _account);
|
||||
SmsDataProvider smsDataProvider = new SmsDataProvider(_context);
|
||||
JSONObject obj = client.retrieveSomeMessages(start, 500);
|
||||
SmsMessagesResponse obj = client.retrieveSomeMessages(start, 500);
|
||||
if (obj == null) {
|
||||
Log.i(ASyncSMSRecovery.TAG, "Retrieved returns failure");
|
||||
return null;
|
||||
}
|
||||
|
||||
Integer nb = 0;
|
||||
try {
|
||||
while ((obj != null) && (obj.getLong("last_id") != start)) {
|
||||
JSONObject messages = obj.getJSONObject("messages");
|
||||
Iterator<?> keys = messages.keys();
|
||||
while (keys.hasNext()) {
|
||||
String key = (String)keys.next();
|
||||
if (messages.get(key) instanceof JSONObject) {
|
||||
JSONObject msg = messages.getJSONObject(key);
|
||||
|
||||
int mbid = msg.getInt("mailbox");
|
||||
// Ignore invalid mailbox
|
||||
if (mbid > MailboxID.ALL.getId()) {
|
||||
Log.e(ASyncSMSRecovery.TAG, "Invalid mailbox found: " + msg.getString("mailbox"));
|
||||
continue;
|
||||
}
|
||||
|
||||
String address;
|
||||
String body;
|
||||
int type;
|
||||
try {
|
||||
address = msg.getString("address");
|
||||
body = msg.getString("msg");
|
||||
type = msg.getInt("type");
|
||||
}
|
||||
catch (JSONException e) {
|
||||
Log.e(ASyncSMSRecovery.TAG, "Invalid SMS data found: " + e.getMessage());
|
||||
continue;
|
||||
}
|
||||
MailboxID mailbox_id = MailboxID.fromInt(mbid);
|
||||
|
||||
// Ignore already existing messages
|
||||
if (smsDataProvider.messageExists(address, body, key, mailbox_id)) {
|
||||
publishProgress(nb);
|
||||
continue;
|
||||
}
|
||||
|
||||
ContentValues values = new ContentValues();
|
||||
values.put(Telephony.Sms.ADDRESS, address);
|
||||
values.put(Telephony.Sms.BODY, body);
|
||||
values.put(Telephony.Sms.DATE, key);
|
||||
values.put(Telephony.Sms.TYPE, type);
|
||||
values.put(Telephony.Sms.SEEN, 1);
|
||||
values.put(Telephony.Sms.READ, 1);
|
||||
|
||||
// @TODO verify message exists before inserting it
|
||||
_context.getContentResolver().insert(Uri.parse(mailbox_id.getURI()), values);
|
||||
|
||||
nb++;
|
||||
if ((nb % 5) == 0) {
|
||||
publishProgress(nb);
|
||||
}
|
||||
}
|
||||
while ((obj != null) && (obj.getLastID() != start)) {
|
||||
Log.i(TAG, "Retrieving messages from " + Long.toString(start)
|
||||
+ " to " + Long.toString(obj.getLastID()));
|
||||
SmsMessage message;
|
||||
while ((message = obj.getNextMessage()) != null) {
|
||||
int mbid = (int) message.getMailbox();
|
||||
// Ignore invalid mailbox
|
||||
if (mbid > MailboxID.ALL.getId()) {
|
||||
Log.e(ASyncSMSRecovery.TAG, "Invalid mailbox found: " + mbid);
|
||||
continue;
|
||||
}
|
||||
|
||||
start = obj.getLong("last_id");
|
||||
|
||||
if (!new ConnectivityMonitor(_context).isValid()) {
|
||||
Log.e(ASyncSMSRecovery.TAG, "Restore connectivity problems, aborting");
|
||||
return null;
|
||||
String address = message.getAddress();
|
||||
String body = message.getMessage();
|
||||
int type = (int) message.getType();
|
||||
if (address.isEmpty() || body.isEmpty()) {
|
||||
Log.e(ASyncSMSRecovery.TAG, "Invalid SMS message found: " + message.toString());
|
||||
continue;
|
||||
}
|
||||
|
||||
MailboxID mailbox_id = MailboxID.fromInt(mbid);
|
||||
|
||||
String date = Long.toString(message.getDate());
|
||||
// Ignore already existing messages
|
||||
if (smsDataProvider.messageExists(address, body, date, mailbox_id)) {
|
||||
publishProgress(nb);
|
||||
continue;
|
||||
}
|
||||
|
||||
ContentValues values = new ContentValues();
|
||||
values.put(Telephony.Sms.ADDRESS, address);
|
||||
values.put(Telephony.Sms.BODY, body);
|
||||
values.put(Telephony.Sms.DATE, date);
|
||||
values.put(Telephony.Sms.TYPE, type);
|
||||
values.put(Telephony.Sms.SEEN, 1);
|
||||
values.put(Telephony.Sms.READ, 1);
|
||||
|
||||
_context.getContentResolver().insert(Uri.parse(mailbox_id.getURI()), values);
|
||||
|
||||
nb++;
|
||||
if ((nb % 10) == 0) {
|
||||
publishProgress(nb);
|
||||
}
|
||||
obj = client.retrieveSomeMessages(start, 500);
|
||||
}
|
||||
} catch (JSONException e) {
|
||||
Log.e(ASyncSMSRecovery.TAG, "Missing last_id field!");
|
||||
|
||||
start = obj.getLastID();
|
||||
|
||||
if (!new ConnectivityMonitor(_context).isValid()) {
|
||||
Log.e(ASyncSMSRecovery.TAG, "Restore connectivity problems, aborting");
|
||||
return null;
|
||||
}
|
||||
obj = client.retrieveSomeMessages(start, 500);
|
||||
}
|
||||
|
||||
// Force this refresh to fix dates
|
||||
_context.getContentResolver().delete(Uri.parse("content://sms/conversations/-1"), null, null);
|
||||
_context.getContentResolver().delete(Uri.parse("content://sms/conversations/-1"),
|
||||
null, null);
|
||||
|
||||
publishProgress(nb);
|
||||
|
||||
|
@ -28,9 +28,9 @@ import android.widget.Toast;
|
||||
import fr.unix_experience.owncloud_sms.R;
|
||||
import fr.unix_experience.owncloud_sms.enums.OCSMSNotificationType;
|
||||
import fr.unix_experience.owncloud_sms.exceptions.OCSyncException;
|
||||
import fr.unix_experience.owncloud_sms.jni.SmsBuffer;
|
||||
import fr.unix_experience.owncloud_sms.notifications.OCSMSNotificationUI;
|
||||
import fr.unix_experience.owncloud_sms.prefs.OCSMSSharedPrefs;
|
||||
import ncsmsgo.SmsBuffer;
|
||||
|
||||
public interface ASyncSMSSync {
|
||||
class SyncTask extends AsyncTask<Void, Void, Void> {
|
||||
@ -93,12 +93,16 @@ public interface ASyncSMSSync {
|
||||
|
||||
if (prefs.showSyncNotifications()) {
|
||||
OCSMSNotificationUI.notify(_context, _context.getString(R.string.sync_title),
|
||||
_context.getString(R.string.sync_inprogress), OCSMSNotificationType.SYNC.ordinal());
|
||||
_context.getString(R.string.sync_inprogress), OCSMSNotificationType.SYNC);
|
||||
}
|
||||
|
||||
syncStartupDate = smsBuffer.getLastMessageDate();
|
||||
performSync(smsBuffer);
|
||||
hasSyncSomething = true;
|
||||
try {
|
||||
syncStartupDate = smsBuffer.getLastMessageDate();
|
||||
performSync(smsBuffer);
|
||||
hasSyncSomething = true;
|
||||
} finally {
|
||||
OCSMSNotificationUI.cancel(_context, OCSMSNotificationType.SYNC);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -111,18 +115,19 @@ public interface ASyncSMSSync {
|
||||
for (Account element : myAccountList) {
|
||||
try {
|
||||
OCSMSOwnCloudClient _client = new OCSMSOwnCloudClient(_context, element);
|
||||
// Fetch API version first to do some early verifications
|
||||
Log.i(ASyncSMSSync.TAG, "Server API version: " + _client.getServerAPIVersion());
|
||||
_client.doPushRequest(smsBuffer);
|
||||
OCSMSNotificationUI.cancel(_context);
|
||||
OCSMSNotificationUI.cancel(_context, OCSMSNotificationType.SYNC_FAILED);
|
||||
} catch (IllegalStateException e) { // Fail to read account data
|
||||
OCSMSNotificationUI.notify(_context, _context.getString(R.string.fatal_error),
|
||||
e.getMessage(), OCSMSNotificationType.SYNC_FAILED.ordinal());
|
||||
e.getMessage(), OCSMSNotificationType.SYNC_FAILED);
|
||||
} catch (OCSyncException e) {
|
||||
Log.e(ASyncSMSSync.TAG, _context.getString(e.getErrorId()));
|
||||
OCSMSNotificationUI.notify(_context, _context.getString(R.string.fatal_error),
|
||||
e.getMessage(), OCSMSNotificationType.SYNC_FAILED.ordinal());
|
||||
e.getMessage(), OCSMSNotificationType.SYNC_FAILED);
|
||||
}
|
||||
}
|
||||
OCSMSNotificationUI.cancel(_context);
|
||||
smsBuffer.clear();
|
||||
}
|
||||
|
||||
|
@ -25,8 +25,8 @@ import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
|
||||
import fr.unix_experience.owncloud_sms.enums.MailboxID;
|
||||
import fr.unix_experience.owncloud_sms.jni.SmsBuffer;
|
||||
import fr.unix_experience.owncloud_sms.providers.SmsDataProvider;
|
||||
import ncsmsgo.SmsBuffer;
|
||||
|
||||
public class AndroidSmsFetcher {
|
||||
public AndroidSmsFetcher(Context ct) {
|
||||
@ -53,7 +53,14 @@ public class AndroidSmsFetcher {
|
||||
|
||||
// Mailbox ID is required by server
|
||||
entry.mailboxId = mbID.ordinal();
|
||||
smsBuffer.push(mbID, entry);
|
||||
smsBuffer.push(entry.id,
|
||||
mbID.ordinal(),
|
||||
entry.type,
|
||||
entry.date,
|
||||
entry.address,
|
||||
entry.body,
|
||||
entry.read ? "true" : "false",
|
||||
entry.seen ? "true" : "false");
|
||||
}
|
||||
while (c.moveToNext());
|
||||
}
|
||||
@ -114,7 +121,14 @@ public class AndroidSmsFetcher {
|
||||
* aren't indexed in the same mean
|
||||
*/
|
||||
entry.mailboxId = mboxId - 1;
|
||||
results.push(mbID, entry);
|
||||
results.push(entry.id,
|
||||
mbID.ordinal(),
|
||||
entry.type,
|
||||
entry.date,
|
||||
entry.address,
|
||||
entry.body,
|
||||
entry.read ? "true" : "false",
|
||||
entry.seen ? "true" : "false");
|
||||
|
||||
c.close();
|
||||
|
||||
|
@ -18,244 +18,97 @@ package fr.unix_experience.owncloud_sms.engine;
|
||||
*/
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.Base64;
|
||||
import android.util.Log;
|
||||
import android.util.Pair;
|
||||
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.io.BufferedOutputStream;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.OutputStream;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.ProtocolException;
|
||||
import java.net.URL;
|
||||
import java.nio.charset.Charset;
|
||||
|
||||
import javax.net.ssl.HttpsURLConnection;
|
||||
import javax.net.ssl.SSLContext;
|
||||
import javax.net.ssl.TrustManager;
|
||||
import javax.net.ssl.X509TrustManager;
|
||||
|
||||
import fr.unix_experience.owncloud_sms.R;
|
||||
import fr.unix_experience.owncloud_sms.enums.OCSyncErrorType;
|
||||
import fr.unix_experience.owncloud_sms.exceptions.OCSyncException;
|
||||
import fr.unix_experience.owncloud_sms.providers.AndroidVersionProvider;
|
||||
import ncsmsgo.SmsBuffer;
|
||||
import ncsmsgo.SmsHTTPClient;
|
||||
import ncsmsgo.SmsIDListResponse;
|
||||
import ncsmsgo.SmsMessagesResponse;
|
||||
import ncsmsgo.SmsPhoneListResponse;
|
||||
import ncsmsgo.SmsPushResponse;
|
||||
|
||||
public class OCHttpClient {
|
||||
static {
|
||||
System.loadLibrary("nativesms");
|
||||
}
|
||||
|
||||
public static native String getAllSmsIdsCall();
|
||||
public static native String getLastMsgTimestamp();
|
||||
public static native String getPushRoute();
|
||||
public static native String getVersionCall();
|
||||
|
||||
private static final String TAG = OCHttpClient.class.getCanonicalName();
|
||||
private static final String PARAM_PROTOCOL_VERSION = "http.protocol.version";
|
||||
private final URL _url;
|
||||
private final String _userAgent;
|
||||
private final String _username;
|
||||
private final String _password;
|
||||
|
||||
// API v2 calls
|
||||
private static final String OC_V2_GET_PHONELIST = "/index.php/apps/ocsms/api/v2/phones/list?format=json";
|
||||
private static final String OC_V2_GET_MESSAGES ="/index.php/apps/ocsms/api/v2/messages/[START]/[LIMIT]?format=json";
|
||||
private static final String OC_V2_GET_MESSAGES_PHONE ="/index.php/apps/ocsms/api/v2/messages/[PHONENUMBER]/[START]/[LIMIT]?format=json";
|
||||
private static final String OC_V2_GET_MESSAGES_SENDQUEUE = "/index.php/apps/ocsms/api/v2/messages/sendqueue?format=json";
|
||||
private SmsHTTPClient _smsHttpClient;
|
||||
|
||||
public OCHttpClient(Context context, URL serverURL, String accountName, String accountPassword) {
|
||||
// Create a trust manager that does not validate certificate chains
|
||||
TrustManager[] trustAllCerts = new TrustManager[]{
|
||||
new X509TrustManager() {
|
||||
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
|
||||
return null;
|
||||
}
|
||||
public void checkClientTrusted(
|
||||
java.security.cert.X509Certificate[] certs, String authType) {
|
||||
}
|
||||
public void checkServerTrusted(
|
||||
java.security.cert.X509Certificate[] certs, String authType) {
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// Install the all-trusting trust manager
|
||||
try {
|
||||
SSLContext sc = SSLContext.getInstance("SSL");
|
||||
sc.init(null, trustAllCerts, new java.security.SecureRandom());
|
||||
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
|
||||
_url = serverURL;
|
||||
_username = accountName;
|
||||
_password = accountPassword;
|
||||
|
||||
_userAgent = "nextcloud-phonesync (" + new AndroidVersionProvider(context).getVersionCode() + ")";
|
||||
_smsHttpClient = new SmsHTTPClient();
|
||||
// @TODO: at a point add a flag to permit insecure connections somewhere instead of trusting them
|
||||
_smsHttpClient.init(serverURL.toString(), new AndroidVersionProvider(context).getVersionCode(),
|
||||
accountName, accountPassword, false);
|
||||
}
|
||||
|
||||
private Pair<Integer, JSONObject> get(String oc_call, boolean skipError) throws OCSyncException {
|
||||
Log.i(OCHttpClient.TAG, "Perform GET " + _url + oc_call);
|
||||
try {
|
||||
return execute("GET",
|
||||
new URL(_url.toString() + oc_call), "", skipError);
|
||||
} catch (MalformedURLException e) {
|
||||
Log.e(OCHttpClient.TAG, "Malformed URL provided, aborting. URL was: "
|
||||
+ _url.toExternalForm() + oc_call);
|
||||
}
|
||||
|
||||
return new Pair<>(0, null);
|
||||
}
|
||||
|
||||
private Pair<Integer, JSONObject> post(String oc_call, String data) throws OCSyncException {
|
||||
Log.i(OCHttpClient.TAG, "Perform POST " + _url + oc_call);
|
||||
try {
|
||||
return execute("POST",
|
||||
new URL(_url.toString() + oc_call), data, false);
|
||||
} catch (MalformedURLException e) {
|
||||
Log.e(OCHttpClient.TAG, "Malformed URL provided, aborting. URL was: "
|
||||
+ _url.toExternalForm() + oc_call);
|
||||
}
|
||||
|
||||
return new Pair<>(0, null);
|
||||
}
|
||||
|
||||
Pair<Integer, JSONObject> getAllSmsIds() throws OCSyncException {
|
||||
return get(OCHttpClient.getAllSmsIdsCall(), false);
|
||||
}
|
||||
|
||||
public Pair<Integer, JSONObject> getVersion() throws OCSyncException {
|
||||
return get(OCHttpClient.getVersionCall(), true);
|
||||
}
|
||||
|
||||
Pair<Integer, JSONObject> pushSms(String smsBuf) throws OCSyncException {
|
||||
return post(OCHttpClient.getPushRoute(), smsBuf);
|
||||
}
|
||||
|
||||
Pair<Integer, JSONObject> getPhoneList() throws OCSyncException {
|
||||
return get(OCHttpClient.OC_V2_GET_PHONELIST, true);
|
||||
}
|
||||
|
||||
Pair<Integer, JSONObject> getMessages(Long start, Integer limit) throws OCSyncException {
|
||||
return get(OCHttpClient.OC_V2_GET_MESSAGES
|
||||
.replace("[START]", start.toString())
|
||||
.replace("[LIMIT]", limit.toString()), false);
|
||||
}
|
||||
|
||||
public Pair<Integer, JSONObject> execute(String method, URL url, String requestBody, boolean skipError) throws OCSyncException {
|
||||
Pair<Integer, JSONObject> response;
|
||||
HttpURLConnection urlConnection = null;
|
||||
|
||||
try {
|
||||
urlConnection = (HttpURLConnection) url.openConnection();
|
||||
} catch (IOException e) {
|
||||
Log.e(OCHttpClient.TAG, "Failed to open connection to server: " + e);
|
||||
throw new OCSyncException(R.string.err_sync_http_request_ioexception, OCSyncErrorType.IO);
|
||||
} finally {
|
||||
if (urlConnection != null) {
|
||||
urlConnection.disconnect();
|
||||
private void handleEarlyHTTPStatus(int httpStatus) throws OCSyncException {
|
||||
switch (httpStatus) {
|
||||
case 403: {
|
||||
// Authentication failed
|
||||
throw new OCSyncException(R.string.err_sync_auth_failed, OCSyncErrorType.AUTH);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (urlConnection == null) {
|
||||
Log.e(OCHttpClient.TAG, "Failed to open connection to server: null urlConnection");
|
||||
public String getLastError() {
|
||||
return _smsHttpClient.getLastError();
|
||||
}
|
||||
|
||||
Pair<Integer, SmsIDListResponse> getAllSmsIds() throws OCSyncException {
|
||||
SmsIDListResponse silr = _smsHttpClient.doGetSmsIDList();
|
||||
int httpStatus = (int) _smsHttpClient.getLastHTTPStatus();
|
||||
handleEarlyHTTPStatus(httpStatus);
|
||||
return new Pair<>(httpStatus, silr);
|
||||
}
|
||||
|
||||
// Perform the GoLang doVersionCall and handle return
|
||||
public Pair<Integer, Integer> getVersion() throws OCSyncException {
|
||||
Integer serverAPIVersion = (int) _smsHttpClient.doVersionCall();
|
||||
int httpStatus = (int) _smsHttpClient.getLastHTTPStatus();
|
||||
|
||||
handleEarlyHTTPStatus(httpStatus);
|
||||
|
||||
// If last status is not 200, send the wrong status now
|
||||
if (httpStatus != 200) {
|
||||
return new Pair<>(httpStatus, 0);
|
||||
}
|
||||
|
||||
if (serverAPIVersion > 0) {
|
||||
return new Pair<>(200, serverAPIVersion);
|
||||
}
|
||||
else if (serverAPIVersion == 0) {
|
||||
// Return default version
|
||||
return new Pair<>(200, 1);
|
||||
}
|
||||
else if (serverAPIVersion == -1) {
|
||||
// This return code from API means I/O error
|
||||
throw new OCSyncException(R.string.err_sync_http_request_ioexception, OCSyncErrorType.IO);
|
||||
}
|
||||
|
||||
try {
|
||||
urlConnection.setRequestMethod(method);
|
||||
} catch (ProtocolException e) {
|
||||
Log.e(OCHttpClient.TAG, "Fatal error when setting request method: " + e);
|
||||
throw new OCSyncException(R.string.err_sync_http_request_protocol_exception, OCSyncErrorType.IO);
|
||||
else {
|
||||
throw new OCSyncException(R.string.err_sync_http_request_returncode_unhandled, OCSyncErrorType.SERVER_ERROR);
|
||||
}
|
||||
urlConnection.setRequestProperty("User-Agent", _userAgent);
|
||||
urlConnection.setInstanceFollowRedirects(true);
|
||||
if (!"GET".equals(method)) {
|
||||
urlConnection.setDoOutput(true);
|
||||
}
|
||||
urlConnection.setRequestProperty("Content-Type", "application/json");
|
||||
urlConnection.setRequestProperty("Accept", "application/json");
|
||||
if (!"GET".equals(method)) {
|
||||
urlConnection.setRequestProperty("Transfer-Encoding", "chunked");
|
||||
}
|
||||
String basicAuth = "Basic " +
|
||||
Base64.encodeToString((_username + ":" + _password).getBytes(), Base64.NO_WRAP);
|
||||
urlConnection.setRequestProperty("Authorization", basicAuth);
|
||||
urlConnection.setChunkedStreamingMode(0);
|
||||
|
||||
if (!"GET".equals(method)) {
|
||||
try {
|
||||
OutputStream out = new BufferedOutputStream(urlConnection.getOutputStream());
|
||||
out.write(requestBody.getBytes(Charset.forName("UTF-8")));
|
||||
out.close();
|
||||
} catch (IOException e) {
|
||||
Log.e(OCHttpClient.TAG, "Failed to open connection to server: " + e);
|
||||
throw new OCSyncException(R.string.err_sync_http_write_failed, OCSyncErrorType.IO);
|
||||
}
|
||||
}
|
||||
|
||||
response = handleHTTPResponse(urlConnection, skipError);
|
||||
return response;
|
||||
}
|
||||
|
||||
private Pair<Integer, JSONObject> handleHTTPResponse(HttpURLConnection connection, Boolean skipError) throws OCSyncException {
|
||||
try {
|
||||
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
Pair<Integer, SmsPushResponse> pushSms(SmsBuffer smsBuf) throws OCSyncException {
|
||||
SmsPushResponse spr = _smsHttpClient.doPushCall(smsBuf);
|
||||
int httpStatus = (int) _smsHttpClient.getLastHTTPStatus();
|
||||
handleEarlyHTTPStatus(httpStatus);
|
||||
return new Pair<>(httpStatus, spr);
|
||||
}
|
||||
|
||||
String line;
|
||||
while ((line = reader.readLine()) != null) {
|
||||
stringBuilder.append(line).append("\n");
|
||||
}
|
||||
Pair<Integer, SmsPhoneListResponse> getPhoneList() throws OCSyncException {
|
||||
SmsPhoneListResponse splr = _smsHttpClient.doGetPhoneList();
|
||||
int httpStatus = (int) _smsHttpClient.getLastHTTPStatus();
|
||||
handleEarlyHTTPStatus(httpStatus);
|
||||
return new Pair<>(httpStatus, splr);
|
||||
}
|
||||
|
||||
String response = stringBuilder.toString();
|
||||
int status = connection.getResponseCode();
|
||||
|
||||
switch (status) {
|
||||
case 200: {
|
||||
// Parse the response
|
||||
try {
|
||||
JSONObject jsonResponse = new JSONObject(response);
|
||||
return new Pair<>(status, jsonResponse);
|
||||
|
||||
} catch (JSONException e) {
|
||||
if (!skipError) {
|
||||
if (response.contains("ownCloud") && response.contains("DOCTYPE")) {
|
||||
Log.e(OCHttpClient.TAG, "OcSMS app not enabled or ownCloud upgrade is required");
|
||||
throw new OCSyncException(R.string.err_sync_ocsms_not_installed_or_oc_upgrade_required,
|
||||
OCSyncErrorType.SERVER_ERROR);
|
||||
} else {
|
||||
Log.e(OCHttpClient.TAG, "Unable to parse server response", e);
|
||||
throw new OCSyncException(R.string.err_sync_http_request_parse_resp, OCSyncErrorType.PARSE);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 403: {
|
||||
// Authentication failed
|
||||
throw new OCSyncException(R.string.err_sync_auth_failed, OCSyncErrorType.AUTH);
|
||||
}
|
||||
default: {
|
||||
// Unk error
|
||||
Log.e(OCHttpClient.TAG, "Server set unhandled HTTP return code " + status);
|
||||
Log.e(OCHttpClient.TAG, "Status code: " + status + ". Response message: " + response);
|
||||
throw new OCSyncException(R.string.err_sync_http_request_returncode_unhandled, OCSyncErrorType.SERVER_ERROR);
|
||||
}
|
||||
}
|
||||
|
||||
reader.close();
|
||||
}
|
||||
catch (IOException e) {
|
||||
throw new OCSyncException(R.string.err_sync_http_request_ioexception, OCSyncErrorType.IO);
|
||||
}
|
||||
|
||||
return new Pair<>(0, null);
|
||||
Pair<Integer, SmsMessagesResponse> getMessages(Long start, Integer limit) throws OCSyncException {
|
||||
SmsMessagesResponse smr = _smsHttpClient.doGetMessagesCall(start, limit);
|
||||
int httpStatus = (int) _smsHttpClient.getLastHTTPStatus();
|
||||
handleEarlyHTTPStatus(httpStatus);
|
||||
return new Pair<>(httpStatus, smr);
|
||||
}
|
||||
}
|
||||
|
@ -23,18 +23,18 @@ import android.content.Context;
|
||||
import android.util.Log;
|
||||
import android.util.Pair;
|
||||
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
|
||||
import fr.unix_experience.owncloud_sms.R;
|
||||
import fr.unix_experience.owncloud_sms.enums.OCSyncErrorType;
|
||||
import fr.unix_experience.owncloud_sms.exceptions.OCSyncException;
|
||||
import fr.unix_experience.owncloud_sms.jni.SmsBuffer;
|
||||
import fr.unix_experience.owncloud_sms.prefs.OCSMSSharedPrefs;
|
||||
import ncsmsgo.SmsBuffer;
|
||||
import ncsmsgo.SmsIDListResponse;
|
||||
import ncsmsgo.SmsMessagesResponse;
|
||||
import ncsmsgo.SmsPhoneListResponse;
|
||||
import ncsmsgo.SmsPushResponse;
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public class OCSMSOwnCloudClient {
|
||||
@ -56,42 +56,28 @@ public class OCSMSOwnCloudClient {
|
||||
_http = new OCHttpClient(context,
|
||||
serverURL, accountManager.getUserData(account, "ocLogin"),
|
||||
accountManager.getPassword(account));
|
||||
_connectivityMonitor = new ConnectivityMonitor(_context);
|
||||
} catch (MalformedURLException e) {
|
||||
throw new IllegalStateException(context.getString(R.string.err_sync_account_unparsable));
|
||||
}
|
||||
}
|
||||
|
||||
public Integer getServerAPIVersion() throws OCSyncException {
|
||||
Pair<Integer, JSONObject> response = _http.getVersion();
|
||||
if (response.second == null) {
|
||||
// Return default version
|
||||
return 1;
|
||||
Pair<Integer, Integer> vPair = _http.getVersion();
|
||||
_serverAPIVersion = vPair.second;
|
||||
if (vPair.first == 200 && _serverAPIVersion > 0) {
|
||||
return _serverAPIVersion;
|
||||
}
|
||||
|
||||
try {
|
||||
_serverAPIVersion = response.second.getInt("version");
|
||||
}
|
||||
catch (JSONException e) {
|
||||
Log.e(OCSMSOwnCloudClient.TAG, "No version received from server, assuming version 1", e);
|
||||
_serverAPIVersion = 1;
|
||||
}
|
||||
|
||||
return _serverAPIVersion;
|
||||
return 0;
|
||||
}
|
||||
|
||||
JSONArray getServerPhoneNumbers() throws OCSyncException {
|
||||
Pair<Integer, JSONObject> response = _http.getPhoneList();
|
||||
if (response.second == null) {
|
||||
SmsPhoneListResponse getServerPhoneNumbers() throws OCSyncException {
|
||||
Pair<Integer, SmsPhoneListResponse> response = _http.getPhoneList();
|
||||
if (response.second == null || response.first != 200) {
|
||||
return null;
|
||||
}
|
||||
|
||||
try {
|
||||
return response.second.getJSONArray("phoneList");
|
||||
} catch (JSONException e) {
|
||||
Log.e(OCSMSOwnCloudClient.TAG, "No phonelist received from server, empty it", e);
|
||||
return null;
|
||||
}
|
||||
return response.second;
|
||||
}
|
||||
|
||||
public void doPushRequest(SmsBuffer smsBuffer) throws OCSyncException {
|
||||
@ -106,12 +92,12 @@ public class OCSMSOwnCloudClient {
|
||||
|
||||
private void doPushRequestV1(SmsBuffer smsBuffer) throws OCSyncException {
|
||||
if (smsBuffer == null) {
|
||||
Pair<Integer, JSONObject> response = _http.getAllSmsIds();
|
||||
Pair<Integer, SmsIDListResponse> response = _http.getAllSmsIds();
|
||||
if (response.second == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Create new JSONArray to get results
|
||||
// Create new SmsBuffer to get results
|
||||
smsBuffer = new SmsBuffer();
|
||||
}
|
||||
|
||||
@ -120,39 +106,29 @@ public class OCSMSOwnCloudClient {
|
||||
return;
|
||||
}
|
||||
|
||||
Pair<Integer, JSONObject> response = _http.pushSms(smsBuffer.asRawJsonString());
|
||||
Pair<Integer, SmsPushResponse> response = _http.pushSms(smsBuffer);
|
||||
|
||||
if (response.second == null) {
|
||||
Log.e(OCSMSOwnCloudClient.TAG,"Request failed. It doesn't return a valid JSON Object");
|
||||
Log.e(OCSMSOwnCloudClient.TAG,"Push request failed. GoLang response is empty.");
|
||||
throw new OCSyncException(R.string.err_sync_push_request, OCSyncErrorType.IO);
|
||||
}
|
||||
|
||||
Boolean pushStatus;
|
||||
String pushMessage;
|
||||
try {
|
||||
pushStatus = response.second.getBoolean("status");
|
||||
pushMessage = response.second.getString("msg");
|
||||
}
|
||||
catch (JSONException e) {
|
||||
Log.e(OCSMSOwnCloudClient.TAG, "Invalid datas received from server", e);
|
||||
throw new OCSyncException(R.string.err_sync_push_request_resp, OCSyncErrorType.PARSE);
|
||||
}
|
||||
|
||||
// Push was OK, we can save the lastMessageDate which was saved to server
|
||||
(new OCSMSSharedPrefs(_context)).setLastMessageDate(smsBuffer.getLastMessageDate());
|
||||
|
||||
Log.i(OCSMSOwnCloudClient.TAG, "SMS Push request said: status " + pushStatus + " - " + pushMessage);
|
||||
Log.i(OCSMSOwnCloudClient.TAG, "SMS Push request said: status " +
|
||||
response.second.getStatus() + " - " + response.second.getMessage());
|
||||
Log.i(OCSMSOwnCloudClient.TAG, "LastMessageDate set to: " + smsBuffer.getLastMessageDate());
|
||||
}
|
||||
|
||||
JSONObject retrieveSomeMessages(Long start, Integer limit) {
|
||||
SmsMessagesResponse retrieveSomeMessages(Long start, Integer limit) {
|
||||
// This is not allowed by server
|
||||
if (limit > OCSMSOwnCloudClient.SERVER_RECOVERY_MSG_LIMIT) {
|
||||
Log.e(OCSMSOwnCloudClient.TAG, "Message recovery limit exceeded");
|
||||
return null;
|
||||
}
|
||||
|
||||
Pair<Integer, JSONObject> response;
|
||||
Pair<Integer, SmsMessagesResponse> response;
|
||||
try {
|
||||
response = _http.getMessages(start, limit);
|
||||
} catch (OCSyncException e) {
|
||||
@ -160,8 +136,7 @@ public class OCSMSOwnCloudClient {
|
||||
return null;
|
||||
}
|
||||
|
||||
if ((response.second == null) || !response.second.has("messages")
|
||||
|| !response.second.has("last_id")) {
|
||||
if (response.second == null) {
|
||||
Log.e(OCSMSOwnCloudClient.TAG,
|
||||
"Invalid response received from server, either messages or last_id field is missing.");
|
||||
return null;
|
||||
@ -172,7 +147,6 @@ public class OCSMSOwnCloudClient {
|
||||
|
||||
private final OCHttpClient _http;
|
||||
private final Context _context;
|
||||
private final ConnectivityMonitor _connectivityMonitor;
|
||||
|
||||
private Integer _serverAPIVersion;
|
||||
|
||||
|
@ -0,0 +1,48 @@
|
||||
package fr.unix_experience.owncloud_sms.enums;
|
||||
|
||||
import android.app.NotificationManager;
|
||||
import android.os.Build;
|
||||
import android.support.annotation.StringRes;
|
||||
|
||||
import fr.unix_experience.owncloud_sms.R;
|
||||
|
||||
public enum OCSMSNotificationChannel {
|
||||
DEFAULT("OCSMS_DEFAULT", R.string.notification_channel_name_default, null),
|
||||
SYNC("OCSMS_SYNC", R.string.notification_channel_name_sync, null);
|
||||
|
||||
static {
|
||||
// well, that's a bit of a hack :/
|
||||
// can be inlined in the future
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||
DEFAULT.importance = NotificationManager.IMPORTANCE_DEFAULT;
|
||||
SYNC.importance = NotificationManager.IMPORTANCE_LOW;
|
||||
}
|
||||
}
|
||||
|
||||
private final String channelId;
|
||||
private final int nameResId;
|
||||
private final Integer descResId;
|
||||
private int importance;
|
||||
|
||||
OCSMSNotificationChannel(String channelId, @StringRes int nameResId, @StringRes Integer descResId) {
|
||||
this.channelId = channelId;
|
||||
this.nameResId = nameResId;
|
||||
this.descResId = descResId;
|
||||
}
|
||||
|
||||
public String getChannelId() {
|
||||
return channelId;
|
||||
}
|
||||
|
||||
public int getNameResId() {
|
||||
return nameResId;
|
||||
}
|
||||
|
||||
public Integer getDescResId() {
|
||||
return descResId;
|
||||
}
|
||||
|
||||
public int getImportance() {
|
||||
return importance;
|
||||
}
|
||||
}
|
@ -18,8 +18,23 @@ package fr.unix_experience.owncloud_sms.enums;
|
||||
*/
|
||||
|
||||
public enum OCSMSNotificationType {
|
||||
SYNC,
|
||||
SYNC_FAILED,
|
||||
DEBUG,
|
||||
PERMISSION,
|
||||
SYNC(OCSMSNotificationChannel.SYNC, 0),
|
||||
SYNC_FAILED(OCSMSNotificationChannel.DEFAULT, 1),
|
||||
PERMISSION(OCSMSNotificationChannel.DEFAULT, 2);
|
||||
|
||||
private final OCSMSNotificationChannel channel;
|
||||
private final int notificationId;
|
||||
|
||||
OCSMSNotificationType(OCSMSNotificationChannel channel, int notificationId) {
|
||||
this.channel = channel;
|
||||
this.notificationId = notificationId;
|
||||
}
|
||||
|
||||
public OCSMSNotificationChannel getChannel() {
|
||||
return channel;
|
||||
}
|
||||
|
||||
public int getNotificationId() {
|
||||
return notificationId;
|
||||
}
|
||||
}
|
||||
|
@ -1,69 +0,0 @@
|
||||
package fr.unix_experience.owncloud_sms.jni;
|
||||
|
||||
import fr.unix_experience.owncloud_sms.engine.SmsEntry;
|
||||
import fr.unix_experience.owncloud_sms.enums.MailboxID;
|
||||
|
||||
/**
|
||||
* Copyright (c) 2014-2017, Loic Blot <loic.blot@unix-experience.fr>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
public class SmsBuffer {
|
||||
static {
|
||||
System.loadLibrary("nativesms");
|
||||
}
|
||||
|
||||
private long mHandle;
|
||||
|
||||
String TAG = SmsBuffer.class.getSimpleName();
|
||||
|
||||
public SmsBuffer() {
|
||||
mHandle = SmsBuffer.createNativeObject();
|
||||
}
|
||||
|
||||
protected void finalize() throws Throwable {
|
||||
clear();
|
||||
super.finalize();
|
||||
}
|
||||
|
||||
private static native long createNativeObject();
|
||||
private native void deleteNativeObject();
|
||||
public native void push(int id, int mbid, int type, long date, String address,
|
||||
String body, String read, String seen);
|
||||
public native boolean empty();
|
||||
public native void print();
|
||||
public native String asRawJsonString();
|
||||
public native long getLastMessageDate();
|
||||
|
||||
public void push(MailboxID mbid, SmsEntry smsEntry) {
|
||||
push(smsEntry.id,
|
||||
mbid.ordinal(),
|
||||
smsEntry.type,
|
||||
smsEntry.date,
|
||||
smsEntry.address,
|
||||
smsEntry.body,
|
||||
smsEntry.read ? "true" : "false",
|
||||
smsEntry.seen ? "true" : "false");
|
||||
}
|
||||
|
||||
public void clear() {
|
||||
if (mHandle == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
deleteNativeObject();
|
||||
mHandle = 0;
|
||||
}
|
||||
}
|
@ -17,17 +17,17 @@ package fr.unix_experience.owncloud_sms.notifications;
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import android.annotation.TargetApi;
|
||||
import android.app.Notification;
|
||||
import android.app.NotificationChannel;
|
||||
import android.app.NotificationManager;
|
||||
import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.BitmapFactory;
|
||||
import android.os.Build;
|
||||
import android.support.v4.app.NotificationCompat;
|
||||
|
||||
import fr.unix_experience.owncloud_sms.R;
|
||||
import fr.unix_experience.owncloud_sms.enums.OCSMSNotificationChannel;
|
||||
import fr.unix_experience.owncloud_sms.enums.OCSMSNotificationType;
|
||||
|
||||
/**
|
||||
* Helper class for showing and canceling ui
|
||||
@ -42,25 +42,30 @@ public class OCSMSNotificationUI {
|
||||
*/
|
||||
private static final String NOTIFICATION_TAG = "OCSMS_NOTIFICATION";
|
||||
|
||||
public static void notify(Context context, String titleString,
|
||||
String contentString, OCSMSNotificationType type) {
|
||||
notify(context, titleString, contentString,
|
||||
type.getChannel().getChannelId(), type.getNotificationId());
|
||||
}
|
||||
|
||||
/**
|
||||
* Shows the notification, or updates a previously shown notification of
|
||||
* this type, with the given parameters.
|
||||
*
|
||||
* @see #cancel(Context)
|
||||
* @see #cancel(Context, OCSMSNotificationType)
|
||||
*/
|
||||
public static void notify(Context context, String titleString,
|
||||
String contentString, int number) {
|
||||
public static void notify(Context context, String titleString, String contentString,
|
||||
String channelId, int notificationId) {
|
||||
Resources res = context.getResources();
|
||||
|
||||
// This image is used as the notification's large icon (thumbnail).
|
||||
// TODO: Remove this if your notification has no relevant thumbnail.
|
||||
Bitmap picture = BitmapFactory.decodeResource(res, R.mipmap.ic_launcher);
|
||||
// Bitmap picture = BitmapFactory.decodeResource(res, R.mipmap.ic_launcher);
|
||||
|
||||
|
||||
String ticker = (titleString.length() > 20) ? titleString.substring(0, 20) : titleString;
|
||||
// String ticker = (titleString.length() > 20) ? titleString.substring(0, 20) : titleString;
|
||||
String title = res.getString(R.string.ui_notification_title_template, titleString);
|
||||
|
||||
NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
|
||||
NotificationCompat.Builder builder = new NotificationCompat.Builder(context, channelId)
|
||||
|
||||
// Set appropriate defaults for the notification light, sound,
|
||||
// and vibration.
|
||||
@ -77,9 +82,6 @@ public class OCSMSNotificationUI {
|
||||
// Set ticker text (preview) information for this notification.
|
||||
//.setTicker(ticker)
|
||||
|
||||
// Show a number. This is useful when stacking notifications of
|
||||
// a single type.
|
||||
.setNumber(number)
|
||||
.setStyle(new NotificationCompat.BigTextStyle()
|
||||
.bigText(contentString)
|
||||
.setBigContentTitle(title)
|
||||
@ -87,24 +89,45 @@ public class OCSMSNotificationUI {
|
||||
.setAutoCancel(true)
|
||||
.setColor(context.getResources().getColor(R.color.oc_primary));
|
||||
|
||||
OCSMSNotificationUI.notify(context, builder.build());
|
||||
notify(context, builder.build(), notificationId);
|
||||
}
|
||||
|
||||
@TargetApi(Build.VERSION_CODES.ECLAIR)
|
||||
private static void notify(Context context, Notification notification) {
|
||||
private static void notify(Context context, Notification notification, int notificationId) {
|
||||
NotificationManager nm = (NotificationManager) context
|
||||
.getSystemService(Context.NOTIFICATION_SERVICE);
|
||||
nm.notify(OCSMSNotificationUI.NOTIFICATION_TAG, 0, notification);
|
||||
createNotificationChannels(context, nm);
|
||||
nm.notify(OCSMSNotificationUI.NOTIFICATION_TAG, notificationId, notification);
|
||||
}
|
||||
|
||||
/**
|
||||
* Cancels any notifications of this type previously shown using
|
||||
* {@link #notify(Context, String, String, int)}.
|
||||
* {@link #notify(Context, String, String, OCSMSNotificationType)}.
|
||||
*/
|
||||
@TargetApi(Build.VERSION_CODES.ECLAIR)
|
||||
public static void cancel(Context context) {
|
||||
public static void cancel(Context context, OCSMSNotificationType type) {
|
||||
cancel(context, type.getNotificationId());
|
||||
}
|
||||
|
||||
public static void cancel(Context context, int notificationId) {
|
||||
NotificationManager nm = (NotificationManager) context
|
||||
.getSystemService(Context.NOTIFICATION_SERVICE);
|
||||
nm.cancel(OCSMSNotificationUI.NOTIFICATION_TAG, 0);
|
||||
nm.cancel(OCSMSNotificationUI.NOTIFICATION_TAG, notificationId);
|
||||
}
|
||||
|
||||
private static void createNotificationChannels(Context context, NotificationManager nm) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
for (OCSMSNotificationChannel ocsmsChannel : OCSMSNotificationChannel.values()) {
|
||||
NotificationChannel channel = new NotificationChannel(
|
||||
ocsmsChannel.getChannelId(),
|
||||
context.getString(ocsmsChannel.getNameResId()),
|
||||
ocsmsChannel.getImportance());
|
||||
|
||||
if (ocsmsChannel.getDescResId() != null) {
|
||||
channel.setDescription(context.getString(ocsmsChannel.getDescResId()));
|
||||
}
|
||||
|
||||
nm.createNotificationChannel(channel);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -32,8 +32,8 @@ import fr.unix_experience.owncloud_sms.engine.ConnectivityMonitor;
|
||||
import fr.unix_experience.owncloud_sms.engine.OCSMSOwnCloudClient;
|
||||
import fr.unix_experience.owncloud_sms.enums.MailboxID;
|
||||
import fr.unix_experience.owncloud_sms.enums.PermissionID;
|
||||
import fr.unix_experience.owncloud_sms.jni.SmsBuffer;
|
||||
import fr.unix_experience.owncloud_sms.prefs.PermissionChecker;
|
||||
import ncsmsgo.SmsBuffer;
|
||||
|
||||
public class SmsObserver extends ContentObserver implements ASyncSMSSync {
|
||||
|
||||
|
@ -67,7 +67,7 @@ public class PermissionChecker {
|
||||
// For context only show a notification
|
||||
OCSMSNotificationUI.notify(context, context.getString(R.string.notif_permission_required),
|
||||
context.getString(R.string.notif_permission_required_content),
|
||||
OCSMSNotificationType.PERMISSION.ordinal());
|
||||
OCSMSNotificationType.PERMISSION);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
@ -45,7 +45,7 @@ class SmsSyncAdapter extends AbstractThreadedSyncAdapter {
|
||||
|
||||
if (new OCSMSSharedPrefs(getContext()).showSyncNotifications()) {
|
||||
OCSMSNotificationUI.notify(getContext(), getContext().getString(R.string.sync_title),
|
||||
getContext().getString(R.string.sync_inprogress), OCSMSNotificationType.SYNC.ordinal());
|
||||
getContext().getString(R.string.sync_inprogress), OCSMSNotificationType.SYNC);
|
||||
}
|
||||
|
||||
try {
|
||||
@ -56,14 +56,13 @@ class SmsSyncAdapter extends AbstractThreadedSyncAdapter {
|
||||
|
||||
// and push datas
|
||||
_client.doPushRequest(null);
|
||||
OCSMSNotificationUI.cancel(getContext());
|
||||
OCSMSNotificationUI.cancel(getContext(), OCSMSNotificationType.SYNC_FAILED);
|
||||
} catch (IllegalStateException e) {
|
||||
OCSMSNotificationUI.notify(getContext(), getContext().getString(R.string.fatal_error),
|
||||
e.getMessage(), OCSMSNotificationType.SYNC_FAILED.ordinal());
|
||||
e.getMessage(), OCSMSNotificationType.SYNC_FAILED);
|
||||
} catch (OCSyncException e) {
|
||||
OCSMSNotificationUI.cancel(getContext());
|
||||
OCSMSNotificationUI.notify(getContext(), getContext().getString(R.string.fatal_error),
|
||||
getContext().getString(e.getErrorId()), OCSMSNotificationType.SYNC_FAILED.ordinal());
|
||||
getContext().getString(e.getErrorId()), OCSMSNotificationType.SYNC_FAILED);
|
||||
if (e.getErrorType() == OCSyncErrorType.IO) {
|
||||
syncResult.stats.numIoExceptions++;
|
||||
}
|
||||
@ -76,6 +75,8 @@ class SmsSyncAdapter extends AbstractThreadedSyncAdapter {
|
||||
else {
|
||||
Log.w(SmsSyncAdapter.TAG, "onPerformSync: unhandled response");
|
||||
}
|
||||
} finally {
|
||||
OCSMSNotificationUI.cancel(getContext(), OCSMSNotificationType.SYNC);
|
||||
}
|
||||
}
|
||||
|
||||
|
Before Width: | Height: | Size: 1.8 KiB |
28
src/main/res/drawable/ic_launcher_background.xml
Normal file
@ -0,0 +1,28 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:width="108dp"
|
||||
android:height="108dp"
|
||||
android:autoMirrored="true"
|
||||
android:viewportWidth="1344"
|
||||
android:viewportHeight="1344">
|
||||
<path
|
||||
android:fillType="evenOdd"
|
||||
android:pathData="M0,0h1344v1344h-1344z"
|
||||
android:strokeLineJoin="round">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient
|
||||
android:endX="1344"
|
||||
android:endY="1.2959057E-4"
|
||||
android:startX="163.34073"
|
||||
android:startY="1344"
|
||||
android:type="linear">
|
||||
<item
|
||||
android:color="#FF0082C9"
|
||||
android:offset="0" />
|
||||
<item
|
||||
android:color="#FF1CAFFF"
|
||||
android:offset="1" />
|
||||
</gradient>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
</vector>
|
22
src/main/res/drawable/ic_launcher_foreground.xml
Normal file
@ -0,0 +1,22 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="108dp"
|
||||
android:height="108dp"
|
||||
android:viewportWidth="816.5869"
|
||||
android:viewportHeight="816.5869">
|
||||
<group android:translateX="20.414673"
|
||||
android:translateY="20.414673">
|
||||
<group android:translateX="131.87878"
|
||||
android:translateY="131.87878">
|
||||
<path
|
||||
android:pathData="m122.444,89.125c-18.459,0 -33.319,14.115 -33.319,31.648l0,143.74c0,17.533 14.86,31.648 33.319,31.648l38.249,0 152.528,126.434 -49.393,-126.434 125.728,0c18.459,0 33.319,-14.115 33.319,-31.648l0,-143.74c0,-17.533 -14.86,-31.648 -33.319,-31.648zM131.499,116.333 L380.501,116.333c9.089,0 16.405,5.854 16.405,13.126l0,8.539c0,7.271 -7.317,13.124 -16.405,13.124l-249.003,0c-9.089,0 -16.406,-5.852 -16.406,-13.124l0,-8.539c0,-7.271 7.317,-13.126 16.406,-13.126zM131.499,176.841 L380.501,176.841c9.089,0 16.405,5.854 16.405,13.126l0,8.537c0,7.271 -7.317,13.126 -16.405,13.126l-249.003,0c-9.089,0 -16.406,-5.854 -16.406,-13.126l0,-8.537c0,-7.271 7.317,-13.126 16.406,-13.126zM131.499,236.851 L221.453,236.851c9.089,0 16.405,7.988 16.405,15.259l0,6.404c0,7.271 -7.317,13.126 -16.405,13.126l-89.954,0c-9.089,0 -16.406,-5.854 -16.406,-13.126l0,-6.404c0,-7.271 7.317,-15.259 16.406,-15.259z"
|
||||
android:strokeAlpha="0"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeWidth="0.25007507"
|
||||
android:fillColor="#ffffff"
|
||||
android:strokeColor="#000000"
|
||||
android:fillType="evenOdd"
|
||||
android:fillAlpha="1"
|
||||
android:strokeLineCap="butt"/>
|
||||
</group>
|
||||
</group>
|
||||
</vector>
|
38
src/main/res/layout/activity_privacy_policy.xml
Normal file
@ -0,0 +1,38 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:fitsSystemWindows="true"
|
||||
tools:context=".activities.PrivacyPolicyActivity">
|
||||
|
||||
<android.support.design.widget.AppBarLayout
|
||||
android:id="@+id/app_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/app_bar_height"
|
||||
android:fitsSystemWindows="true"
|
||||
android:theme="@style/OcSmsTheme.AppBarOverlay">
|
||||
|
||||
<android.support.design.widget.CollapsingToolbarLayout
|
||||
android:id="@+id/toolbar_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:fitsSystemWindows="true"
|
||||
app:contentScrim="?attr/colorPrimary"
|
||||
app:layout_scrollFlags="scroll|exitUntilCollapsed"
|
||||
app:toolbarId="@+id/toolbar">
|
||||
|
||||
<android.support.v7.widget.Toolbar
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
app:layout_collapseMode="pin"
|
||||
app:popupTheme="@style/OcSmsTheme.PopupOverlay" />
|
||||
|
||||
</android.support.design.widget.CollapsingToolbarLayout>
|
||||
</android.support.design.widget.AppBarLayout>
|
||||
|
||||
<include layout="@layout/content_privacy_policy" />
|
||||
|
||||
</android.support.design.widget.CoordinatorLayout>
|
17
src/main/res/layout/content_privacy_policy.xml
Normal file
@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior"
|
||||
tools:context=".activities.PrivacyPolicyActivity"
|
||||
tools:showIn="@layout/activity_privacy_policy">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="@dimen/text_margin"
|
||||
android:text="@string/privacy_policy_large_text" />
|
||||
|
||||
</android.support.v4.widget.NestedScrollView>
|
@ -1,24 +1,30 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/nav_header_height"
|
||||
android:background="@drawable/side_nav_bar"
|
||||
android:gravity="bottom"
|
||||
android:orientation="vertical"
|
||||
android:padding="@dimen/activity_horizontal_margin"
|
||||
android:theme="@style/ThemeOverlay.AppCompat.Dark">
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/side_nav_bar"
|
||||
android:gravity="bottom"
|
||||
android:orientation="horizontal"
|
||||
android:padding="10dp"
|
||||
android:theme="@style/ThemeOverlay.AppCompat.Dark">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/imageView"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/ic_launcher"/>
|
||||
android:contentDescription="@string/app_name"
|
||||
android:paddingTop="24dp"
|
||||
android:src="@mipmap/ic_launcher" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingTop="@dimen/standard_half_padding"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:paddingLeft="12dp"
|
||||
android:paddingStart="12dp"
|
||||
android:paddingTop="24dp"
|
||||
android:text="@string/app_name"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Body1"/>
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Title" />
|
||||
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
@ -22,6 +22,10 @@
|
||||
android:id="@+id/nav_appinfo_perms"
|
||||
android:icon="@drawable/ic_information"
|
||||
android:title="@string/action_appinfo_perms"/>
|
||||
<item
|
||||
android:id="@+id/nav_appinfo_privacy_policy"
|
||||
android:icon="@drawable/ic_information"
|
||||
android:title="@string/action_appinfo_privacy_policy"/>
|
||||
</group>
|
||||
|
||||
<item android:title="@string/communicate">
|
||||
|
10
src/main/res/menu/menu_privacy_policy.xml
Normal file
@ -0,0 +1,10 @@
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
tools:context="fr.unix_experience.owncloud_sms.activities.PrivacyPolicyActivity">
|
||||
<item
|
||||
android:id="@+id/action_settings"
|
||||
android:orderInCategory="100"
|
||||
android:title="@string/action_settings"
|
||||
app:showAsAction="never" />
|
||||
</menu>
|
5
src/main/res/mipmap-anydpi-v26/ic_launcher.xml
Normal file
@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<background android:drawable="@drawable/ic_launcher_background"/>
|
||||
<foreground android:drawable="@drawable/ic_launcher_foreground"/>
|
||||
</adaptive-icon>
|
5
src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
Normal file
@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<background android:drawable="@drawable/ic_launcher_background"/>
|
||||
<foreground android:drawable="@drawable/ic_launcher_foreground"/>
|
||||
</adaptive-icon>
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 4.4 KiB |
BIN
src/main/res/mipmap-hdpi/ic_launcher_round.png
Normal file
After Width: | Height: | Size: 4.4 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 2.9 KiB |
BIN
src/main/res/mipmap-mdpi/ic_launcher_round.png
Normal file
After Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 6.1 KiB |
BIN
src/main/res/mipmap-xhdpi/ic_launcher_round.png
Normal file
After Width: | Height: | Size: 6.1 KiB |
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 9.1 KiB |
BIN
src/main/res/mipmap-xxhdpi/ic_launcher_round.png
Normal file
After Width: | Height: | Size: 9.1 KiB |
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 13 KiB |
BIN
src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
Normal file
After Width: | Height: | Size: 13 KiB |
36
src/main/res/values-ar/google_playstore_strings.xml
Normal file
@ -0,0 +1,36 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
/*
|
||||
* Copyright (c) 2014, Loic Blot <loic.blot@unix-experience.fr>
|
||||
* All rights reserved.
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
-->
|
||||
<resources
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
tools:ignore="MissingTranslation">
|
||||
<!-- Translations must begin here -->
|
||||
<string name="gp_short_description">يقوم تطبيق ناكست كلاود للرسائل القصيرة بمُزامنَة رسائلك النصية القصيرة المحلية مع خادمك النيكست كلاود.</string>
|
||||
<string name="gp_description">
|
||||
تطبيق نيكست كلاود الخاص بالرسائل القصيرة يقوم بمزامنة رسائلك القصيرة على خادم نيكست كلاود البعيد و يُمكّنك من قراءة رسائلك منه. إرسال الرسائل القصيرة سيكون متاحاً في المستقبل القريب.
|
||||
التطبيق متوافق تماماً مع نسخ أندرويد من 4.0 إلى 6.0.</string>
|
||||
</resources>
|
200
src/main/res/values-ar/strings.xml
Normal file
@ -0,0 +1,200 @@
|
||||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
/*
|
||||
* Copyright (c) 2014-2015, Loic Blot <loic.blot@unix-experience.fr>
|
||||
* All rights reserved.
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
-->
|
||||
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
|
||||
|
||||
<!-- Translation version, reference for translators -->
|
||||
<string name="translation_version">7</string>
|
||||
|
||||
<!-- System strings, do not translate -->
|
||||
<string name="app_name">الرسائل القصيرة على نكست كلاود Nextcloud SMS</string>
|
||||
<string name="login_logo">شعار تسجيل الدخول</string>
|
||||
|
||||
<!-- Translations must begin there -->
|
||||
<!-- Preferences -->
|
||||
<string name="pref_title_sync">الرسائل القصيرة SMS - سريع</string>
|
||||
<string name="pref_title_sync_frequency">تردُّد المزامنة السريعة</string>
|
||||
<string name="pref_title_slow_sync">الرسائل القصيرة SMS - بطيء و سريع</string>
|
||||
<string name="pref_title_slow_sync_frequency">تردُّد المزامنة البطيء الآمن </string>
|
||||
<string name="action_settings">الإعدادات</string>
|
||||
<string name="sync_now">زامن الآن</string>
|
||||
<string name="pref_category_sync">المُزامنة</string>
|
||||
<string name="title_global_pref_to_general_prefs">الخيارات العامة</string>
|
||||
<string name="summary_global_pref_to_general_prefs">خيارات المُزامنة</string>
|
||||
<string name="summary_notif_prefs">الإشعارات</string>
|
||||
<string name="pref_header_data_sync">بيانات & مُزامَنة</string>
|
||||
<string name="title_activity_general_settings">الإعدادات العامة</string>
|
||||
|
||||
<string-array name="pref_sync_frequency_titles">
|
||||
<item>5 دقائق</item>
|
||||
<item>15 دقيقة</item>
|
||||
<item>30 دقيقة</item>
|
||||
<item>1 ساعة</item>
|
||||
<item>3 ساعات</item>
|
||||
<item>6 ساعات</item>
|
||||
<item>12 ساعة</item>
|
||||
<item>24 ساعة</item>
|
||||
<item>إطلاقاً</item>
|
||||
</string-array>
|
||||
<string-array name="pref_sync_bulk_max_messages_titles">
|
||||
<item>100 رسالة قصيرة</item>
|
||||
<item>1000 رسالة قصيرة</item>
|
||||
<item>2000 رسالة قصيرة</item>
|
||||
<item>5000 رسالة قصيرة</item>
|
||||
<item>10000 رسالة قصيرة</item>
|
||||
<item>25000 رسالة قصيرة</item>
|
||||
<item>كل رسالة قصيرة لم تتم مُزامنتها</item>
|
||||
</string-array>
|
||||
<string-array name="pref_slow_sync_frequency_titles">
|
||||
<item>1 ساعة</item>
|
||||
<item>3 ساعات</item>
|
||||
<item>6 ساعات</item>
|
||||
<item>12 ساعة</item>
|
||||
<item>24 ساعة</item>
|
||||
<item>إطلاقاً</item>
|
||||
</string-array>
|
||||
<string name="pref_push_on_receive">زُجَّ بالرسائل القصيرة عند استلامها</string>
|
||||
<string name="pref_sync_wifi">المزامنة عبر الواي فاي</string>
|
||||
<string name="pref_sync_4g">المزامنة عبر 4G</string>
|
||||
<string name="pref_sync_3g">المزامنة عبر 3G</string>
|
||||
<string name="pref_sync_gprs">المزامنة في وضع 2.5G (GPRS)</string>
|
||||
<string name="pref_sync_2g">المزامنة عبر 2G</string>
|
||||
<string name="pref_sync_others">المزامنة في الأوضاع الأخرى</string>
|
||||
<string name="title_activity_login">تسجيل الدخول</string>
|
||||
|
||||
<!-- Login -->
|
||||
<string name="prompt_login">الدخول</string>
|
||||
<string name="prompt_password">كلمة المرور</string>
|
||||
<string name="action_sign_in">تسجيل الدخول أو إنشاء حساب</string>
|
||||
<string name="action_sign_in_short">تسجيل الدخول</string>
|
||||
<string name="error_invalid_login">اسم المستخدم أو كلمة المرور خاطئة</string>
|
||||
<string name="error_invalid_password">كلمة المرور قصيرةٌ جداً</string>
|
||||
<string name="error_field_required">هذا الحقل مطلوب</string>
|
||||
<string name="prompt_serverURI">عنوان الخادم</string>
|
||||
<string name="error_invalid_server_address">عنوان الخادم غير صالح</string>
|
||||
<string name="error_connection_failed">تعذّر الاتصال. تأكد أن هذا هو الخادم الصحيح</string>
|
||||
<string name="error_http_connection_failed">تعذّر أداء اتصال HTTP. رجاءً، تأكّد من وجود خادوم الويب</string>
|
||||
|
||||
<!-- Main activity -->
|
||||
<string name="ma_title_rate_us">قم بتقييمنا !</string>
|
||||
<string name="ma_title_add_account">إضافة حساب</string>
|
||||
<string name="ma_title_welcome">مرحباً</string>
|
||||
<string name="ma_content_welcome">مرحبًا بك في تطبيق \"الرسائل القصيرة على نكست كلاود\" Nextcloud SMS. يتيح لك هذا التطبيق مُزامنة رسائل SMS الخاصة بك مع خادوم نكست كلاود الخاص بك باستخدام تطبيق SMS.</string>
|
||||
<string name="ma_title_remote_account">حسابٌ قَصِيٌّ</string>
|
||||
<string name="choose_account">إختر حسابًا</string>
|
||||
|
||||
<!-- Restauration -->
|
||||
<string name="title_activity_select_account">إختيار حساب</string>
|
||||
<string name="title_activity_select_contact">إختيار جهة اتصالٍ</string>
|
||||
<string name="no_account_configured">لم يتم إعداد أي حساب حتى الآن.</string>
|
||||
|
||||
<!-- Notifications -->
|
||||
<string name="sync_title">عملية المُزامنة</string>
|
||||
<string name="sync_inprogress">مُزامنة تحت الإجراء ...</string>
|
||||
<string name="fatal_error">خطأ فادح !</string>
|
||||
<string name="notification_channel_name_default">التلقائي</string>
|
||||
<string name="notification_channel_name_sync">زامن</string>
|
||||
|
||||
<!-- Errors -->
|
||||
<string name="err_sync_get_smslist">الخطأ # 1: تلقّي بياناتٍ غير صالحة من الخادوم عند جلب الرسائل السابقة</string>
|
||||
<string name="err_sync_craft_http_request">خطأ #2: خطأ عند صياغة طلب HTTP</string>
|
||||
<string name="err_sync_push_request">خطأ #3: فشل في طلب الدفع Push request</string>
|
||||
<string name="err_sync_push_request_resp">خطأ #4: تلقّي بياناتٍ غير صالحة من الخادوم عند زجّ البيانات pushing data</string>
|
||||
<string name="err_sync_create_json_null_smslist">الخطأ #5: قائمة رسائل قصيرة فارغة NULL SMS List</string>
|
||||
<string name="err_sync_create_json_put_smslist">الخطأ # 6: خطأ أثناء صياغة طلب أسلوب الإشعارات Push</string>
|
||||
<string name="err_sync_create_json_request_encoding">خطأ #7: ترميز غير مدعوم عند توليد الطلب </string>
|
||||
<string name="err_sync_auth_failed">خطأ #8: فشلت المُصادقة</string>
|
||||
<string name="err_sync_http_request_returncode_unhandled">خطأ #9: قام الخادوم بتعيين كود إرجاع HTTP غير مُعالجٍ unhandled</string>
|
||||
<string name="err_sync_http_request_connect">خطأ #11: تعذّر الاتصال مع خادوم نكست كلاود</string>
|
||||
<string name="err_sync_http_request_httpexception">خطأ #12: تعذّر الاتصال مع خادوم نكست كلاود</string>
|
||||
<string name="err_sync_http_request_ioexception">خطأ #13: تعذّر الاتصال مع خادوم نكست كلاود</string>
|
||||
<string name="err_sync_http_request_resp">خطأ #14: تعذّر تحليل استجابة الخادم</string>
|
||||
<string name="err_sync_http_request_parse_resp">خطأ #15: تعذّر تحليل استجابة الخادم</string>
|
||||
<string name="err_sync_no_connection_available">خطأ #16: لا يوجد اتصال بيانات مُتاح</string>
|
||||
<string name="err_sync_account_unparsable">الخطأ # 17: حسابٌ مُشوّهٌ. يُرجى إعادة تكوينه</string>
|
||||
<string name="err_sync_ocsms_not_installed_or_oc_upgrade_required">خطأ #18: تطبيق نكست كلاود للرسائل القصيرة لم يتم تنصيبه، أو أن إصدار نكست كلاود يحتاج إلى ترقية </string>
|
||||
<string name="err_fetch_phonelist">قائمة الهواتف المستلمة من الخادم غير صحيحة.</string>
|
||||
<string name="err_proto_v2">الخادوم لا يدعم هذه الميزة. تأكد أن رقم إصداره 1.6 أو أحدث.</string>
|
||||
<string name="contactinfos_title">معلومات عن جهة الاتصال</string>
|
||||
<string name="subtitle_contact_phones">- هواتف جهة الاتصال</string>
|
||||
<string name="pref_title_bulk_messages">أقصى عدد من الرسائل يتم إرسالها عند كل مُزامنة</string>
|
||||
<string name="contactinfos_list">جهات الاتصال</string>
|
||||
<string name="function_not_available">هذه الوظيفة ليست متاحة حتى الآن</string>
|
||||
|
||||
<string name="ui_notification_title_template">الرسائل القصيرة على نكست كلاود: %1$s</string>
|
||||
<string name="communicate">إتّصِل</string>
|
||||
<string name="title_activity_main2">Main2Activity</string>
|
||||
|
||||
<string name="navigation_drawer_open">فتح درج التنقل </string>
|
||||
<string name="navigation_drawer_close">أقفل دُرج التّنقل </string>
|
||||
<string name="ma_title_my_accounts">حساباتي</string>
|
||||
<string name="ma_content_swipeaction">إسحب من اليسار إلى اليمين للوصول إلى قائمة الإجراءات action menu.</string>
|
||||
<string name="cancel">إلغاء</string>
|
||||
<string name="understood">عُلِم</string>
|
||||
<string name="notif_permission_required">أذونات سماح مطلوبة</string>
|
||||
<string name="notif_permission_required_content">صلاحيات تنفيذ عملية المزامنة غير موجودة. يرجى إصلاح ذلك في إعدادات التطبيق.</string>
|
||||
<string name="please_fix_it">يرجى تصليحه.</string>
|
||||
<string name="err_cannot_read_contacts">ليس بإمكاننا النفاذ لقراءة جهات اتصالك.</string>
|
||||
<string name="err_cannot_read_sms">ليس بإمكاننا قراءة رسائلك القصيرة.</string>
|
||||
<string name="action_appinfo_perms">معلومات التطبيق و الأذونات</string>
|
||||
<string name="restore_all_messages">استرجاع كافة الرسائل</string>
|
||||
<string name="account_actions">إجراءات الحساب</string>
|
||||
<string name="error_connection_failed_not_found">فشل الاتصال. قام الخادم بإرجاع رسالة الخطأ رقم 404 NOT FOUND. تأكّد من تعيين المسار الصحيح path لخادوم نكست كلاود.</string>
|
||||
<string name="nothing_to_sync">ليس هناك أي شيء للمزامنة.</string>
|
||||
<string name="feature_not_already_implemented">هذه الخاصية لم يتم تطويرها حتى الآن و ستكون جاهزةً قريباً </string>
|
||||
<string name="pref_title_minimum_sync_chars">الحد الأدنى لطول رقم الهاتف</string>
|
||||
<string name="err_didnt_find_account_restore">لم نعثر على حسابك لاستعادة رسالتك. و يُفترض ألّا يحدث مثل هذا الخطأ.</string>
|
||||
<string name="launch_restore">إستعادة رسائلي القصيرة</string>
|
||||
<string name="error_make_default_sms_app">يُرجى جعل هذا التطبيق هو تطبيق الرسائل القصيرة الافتراضي للسماح باستعادة رسائلك. هذا القيد منصوصٌ عليه في الإصدار قم Android 4.4.</string>
|
||||
<string name="fix_permissions">إصلاح الصلاحيات</string>
|
||||
<string name="err_kitkat_required">يلزم أندرويد من الإصدار 4.4 أو أحدث لاستخدام هذه الميزة.</string>
|
||||
<string name="restore_finished">تمت الآن عملية استعادة الرسائل القصيرة.</string>
|
||||
<string name="x_messages_restored">رسائل تمّت استعادتها …</string>
|
||||
<string name="err_no_connection">لا يوجد اتصالٌ متاحٌ ، يرجى التأكد من أن لديك اتصال بياناتٍ صالحٍ.</string>
|
||||
<string name="reinit_sync_cursor">أعد تشغيل مؤشر التزامن sync cursor.</string>
|
||||
<string name="reinit_sync_cursor_confirm">هل أنت متأكد من أنك تريد إعادة تهيئة مؤشر المزامنة sycn cursor؟ يمكن أن يؤدي هذا إلى إبطاء المزامنة التالية إذا كان هنالك أعدادٌ كبيرةٌ من الرسائل القديمة التي تحتاج إلى مُزامنةٍ.</string>
|
||||
<string name="yes_confirm">نعم</string>
|
||||
<string name="no_confirm">لا</string>
|
||||
<string name="pref_show_sync_notifications">إظهار إشعارات المزامنة</string>
|
||||
<string name="sync_complete">تمت عملية المزامنة</string>
|
||||
<string name="err_sync_http_write_failed">الخطأ #19: فشل كتابة stream ـ HTTP عند زجّ pushing البيانات إلى الخادوم</string>
|
||||
<string name="err_sync_http_request_protocol_exception">خطأ #20: فشل في تعيين رقم الإصدار المناسب لبروتوكول HTTP.</string>
|
||||
<string name="action_appinfo_privacy_policy">سياسة الخصوصية</string>
|
||||
<string name="privacy_policy_large_text">
|
||||
\"نظرة عامة
|
||||
تطبيق الرسائل القصيرة من نكست كلاود Nextcloud SMS.
|
||||
|
||||
سياسة الخصوصية هذه\"
|
||||
تهدف إلى إعلامك بالبيانات التي يتم جمعها بواسطة هذا التطبيق.
|
||||
|
||||
ما هي المعلومات التي يتم جمعها؟
|
||||
يتم جمع رسائل SMS وسجل المكالمات فقط بواسطة التطبيق.
|
||||
|
||||
أين يتم إرسال المعلومات؟
|
||||
لا يتم إرسال المعلومات إلى خوادم فريق نكست كلاود ولا إلى خوادم فريق تطبيق نكست كلاود للرسائل القصيرة ولا إلى أي حكومة أو كيان آخر.
|
||||
عند تكوين حساب نكست كلاود في التطبيق ، فإنك توافق على أن يقوم مالك أو مُشغل خادوم نكست كلاود بتخزين رسائل SMS وبيانات سجل المكالمات في بنيته التحتية و تحت مسؤوليته.
|
||||
لا نوصي باستخدام حسابٍ على خادومٍ عاّمٍ. بياناتك الخاصة يجب أن تكون تحت سيطرتك على خادومك الخاص.</string>
|
||||
</resources>
|
40
src/main/res/values-ast/google_playstore_strings.xml
Normal file
@ -0,0 +1,40 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
/*
|
||||
* Copyright (c) 2014, Loic Blot <loic.blot@unix-experience.fr>
|
||||
* All rights reserved.
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
-->
|
||||
<resources
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
tools:ignore="MissingTranslation">
|
||||
<!-- Translations must begin here -->
|
||||
<string name="gp_short_description">Nextcloud SMS sincroniza los SMS na to instancia de Nextcloud</string>
|
||||
<string name="gp_description">
|
||||
L\'aplicación Nextcloud SMS sincroniza los SMS nuna insntacia remota de Nextcloud y déxate lleer los mensaxes dende ellí.
|
||||
|
||||
Nuna versión futura, va poder unviase SMS dende Nextcloud..
|
||||
|
||||
L\'aplicación ye completamente compatible coles d\'Android 4.0 n\'adelantre
|
||||
</string>
|
||||
</resources>
|
121
src/main/res/values-ast/strings.xml
Normal file
@ -0,0 +1,121 @@
|
||||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
/*
|
||||
* Copyright (c) 2014-2015, Loic Blot <loic.blot@unix-experience.fr>
|
||||
* All rights reserved.
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
-->
|
||||
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
|
||||
|
||||
<!-- Translation version, reference for translators -->
|
||||
<string name="translation_version">7</string>
|
||||
|
||||
<!-- System strings, do not translate -->
|
||||
<string name="app_name">Nextcloud SMS</string>
|
||||
<string name="pref_title_sync_frequency">Frecuencia de sincronización rápida</string>
|
||||
<string name="action_settings">Configuración</string>
|
||||
<string name="sync_now">Sincronizar agora</string>
|
||||
<string name="pref_category_sync">Sincronización</string>
|
||||
<string name="title_global_pref_to_general_prefs">Preferencies xenerales</string>
|
||||
<string name="summary_notif_prefs">Avisos</string>
|
||||
<string name="pref_header_data_sync">Datos y sincronización</string>
|
||||
<string name="title_activity_general_settings">Configuración xeneral</string>
|
||||
|
||||
<string-array name="pref_sync_frequency_titles">
|
||||
<item>5 minutos</item>
|
||||
<item>15 minutos</item>
|
||||
<item>30 minutos</item>
|
||||
<item>1 hora</item>
|
||||
<item>3 hores</item>
|
||||
<item>6 hores</item>
|
||||
<item>12 hores</item>
|
||||
<item>24 hores</item>
|
||||
<item>Enxamás</item>
|
||||
</string-array>
|
||||
<string-array name="pref_sync_bulk_max_messages_titles">
|
||||
<item>100 SMS</item>
|
||||
<item>1000 SMS</item>
|
||||
<item>2000 SMS</item>
|
||||
<item>5000 SMS</item>
|
||||
<item>10000 SMS</item>
|
||||
<item>25000 SMS</item>
|
||||
</string-array>
|
||||
<string-array name="pref_slow_sync_frequency_titles">
|
||||
<item>1 hora</item>
|
||||
<item>3 hores</item>
|
||||
<item>6 hores</item>
|
||||
<item>12 hores</item>
|
||||
<item>24 hores</item>
|
||||
<item>Enxamás</item>
|
||||
</string-array>
|
||||
<string name="pref_sync_wifi">Sincronizar nes Wi-Fi</string>
|
||||
<string name="pref_sync_4g">Sincronizar en 4G</string>
|
||||
<string name="pref_sync_3g">Sincronizar en 3G</string>
|
||||
<string name="pref_sync_gprs">Sincronizar en GPRS</string>
|
||||
<string name="pref_sync_2g">Sincronizar en 2G</string>
|
||||
<string name="pref_sync_others">Sincronizar nos demás moos</string>
|
||||
<string name="title_activity_login">Aniciar la sesión</string>
|
||||
|
||||
<!-- Login -->
|
||||
<string name="prompt_login">Aniciar la sesión</string>
|
||||
<string name="prompt_password">Contraseña</string>
|
||||
<string name="action_sign_in_short">Aniciar la sesión</string>
|
||||
<string name="error_invalid_password">Esta contraseña ye mui curtia</string>
|
||||
<string name="error_field_required">El campu ye obligatoriu</string>
|
||||
<string name="prompt_serverURI">Direición del sirvidor</string>
|
||||
<string name="error_invalid_server_address">La direición del sirvidor ye inválida</string>
|
||||
<!-- Main activity -->
|
||||
<string name="ma_title_rate_us">¡Valóranos!</string>
|
||||
<string name="ma_title_add_account">Amestar una cuenta</string>
|
||||
<string name="ma_title_welcome">Afáyate</string>
|
||||
<string name="ma_title_remote_account">Cuenta remota</string>
|
||||
<string name="no_account_configured">Nun se configuró nenguna cuenta</string>
|
||||
|
||||
<string name="sync_inprogress">Sincronización en cursu…</string>
|
||||
<string name="fatal_error">¡Error fatal!</string>
|
||||
<string name="notification_channel_name_default">Por defeutu</string>
|
||||
<string name="notification_channel_name_sync">Sincronizar</string>
|
||||
|
||||
<string name="err_sync_http_request_resp">Error #14: nun ye posible analizar la rempuesta del sirvidor</string>
|
||||
<string name="err_sync_http_request_parse_resp">Error #15: nun ye posible analizar la rempuesta del sirvidor</string>
|
||||
<string name="contactinfos_list">Llista de contautos</string>
|
||||
<string name="function_not_available">Esta función entá nun ta disponible.</string>
|
||||
|
||||
<string name="ui_notification_title_template">Nextcloud SMS: %1$s</string>
|
||||
<string name="title_activity_main2">Main2Activity</string>
|
||||
|
||||
<string name="navigation_drawer_open">Abrir el caxón de navegación</string>
|
||||
<string name="navigation_drawer_close">Zarrar el caxón de navegación</string>
|
||||
<string name="ma_title_my_accounts">Les mios cuentes</string>
|
||||
<string name="cancel">Encaboxar</string>
|
||||
<string name="understood">Entendílo</string>
|
||||
<string name="notif_permission_required_content">Falten dalgunos permisos pa facer el procesu de sincronización. Igua esti problema na configuración de l\'aplicación</string>
|
||||
<string name="err_cannot_read_contacts">Nun podemos lleer los contautos.</string>
|
||||
<string name="err_cannot_read_sms">Nun podemos lleer los SMS.</string>
|
||||
<string name="restore_all_messages">Restaurar tolos mensaxes</string>
|
||||
<string name="nothing_to_sync">Nun hai nada pa sincronizar.</string>
|
||||
<string name="feature_not_already_implemented">Esta función entá nun s\'implementó mas va tar disponible pronto.</string>
|
||||
<string name="yes_confirm">Sí</string>
|
||||
<string name="no_confirm">Non</string>
|
||||
<string name="sync_complete">Completóse la sincronización</string>
|
||||
<string name="action_appinfo_privacy_policy">Política de privacidá</string>
|
||||
</resources>
|
40
src/main/res/values-bg-rBG/google_playstore_strings.xml
Normal file
@ -0,0 +1,40 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
/*
|
||||
* Copyright (c) 2014, Loic Blot <loic.blot@unix-experience.fr>
|
||||
* All rights reserved.
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
-->
|
||||
<resources
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
tools:ignore="MissingTranslation">
|
||||
<!-- Translations must begin here -->
|
||||
<string name="gp_short_description">Nextcloud SMS синхронизира вашия локален SMS с вашия екземпляр на Nextcloud</string>
|
||||
<string name="gp_description">
|
||||
Приложението Nextcloud SMS, синхронизира вашите SMS съобщения на отдалечен екземпляр на Nextcloud и ви позволява да четете съобщенията си от него.
|
||||
|
||||
Изпращането на SMS от екземпляр на Nextcloud ще е възможно в бъдеща версия.
|
||||
|
||||
Приложението е напълно съвместимо с версии от Android 4.0 до 6.0
|
||||
</string>
|
||||
</resources>
|
212
src/main/res/values-bg-rBG/strings.xml
Normal file
@ -0,0 +1,212 @@
|
||||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
/*
|
||||
* Copyright (c) 2014-2015, Loic Blot <loic.blot@unix-experience.fr>
|
||||
* All rights reserved.
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
-->
|
||||
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
|
||||
|
||||
<!-- Translation version, reference for translators -->
|
||||
<string name="translation_version">7</string>
|
||||
|
||||
<!-- System strings, do not translate -->
|
||||
<string name="app_name">Nextcloud SMS</string>
|
||||
<string name="login_logo">Лого за вход</string>
|
||||
|
||||
<!-- Translations must begin there -->
|
||||
<!-- Preferences -->
|
||||
<string name="pref_title_sync">SMS - Бързо</string>
|
||||
<string name="pref_title_sync_frequency">Честота на бърза синхронизация</string>
|
||||
<string name="pref_title_slow_sync">SMS - бавно и сигурно</string>
|
||||
<string name="pref_title_slow_sync_frequency">Сигурна честота и бавно синхронизиране</string>
|
||||
<string name="action_settings">Настройки</string>
|
||||
<string name="sync_now">Синхронизиране сега</string>
|
||||
<string name="pref_category_sync">Синхронизиране</string>
|
||||
<string name="title_global_pref_to_general_prefs">Общи предпочитания</string>
|
||||
<string name="summary_global_pref_to_general_prefs">Опции за синхронизиране</string>
|
||||
<string name="summary_notif_prefs">Известия</string>
|
||||
<string name="pref_header_data_sync">Данни и Синхронизиране</string>
|
||||
<string name="title_activity_general_settings">Общи настройки</string>
|
||||
|
||||
<string-array name="pref_sync_frequency_titles">
|
||||
<item>5 минути</item>
|
||||
<item>15 минути</item>
|
||||
<item>30 минути</item>
|
||||
<item>1 час</item>
|
||||
<item>3 часа</item>
|
||||
<item>6 часа</item>
|
||||
<item>12 часа</item>
|
||||
<item>24 часа</item>
|
||||
<item>Никога</item>
|
||||
</string-array>
|
||||
<string-array name="pref_sync_bulk_max_messages_titles">
|
||||
<item>100 SMS</item>
|
||||
<item>1000 SMS</item>
|
||||
<item>2000 SMS</item>
|
||||
<item>5000 SMS</item>
|
||||
<item>10000 SMS</item>
|
||||
<item>25000 SMS</item>
|
||||
<item>Всеки SMS не се синхронизира</item>
|
||||
</string-array>
|
||||
<string-array name="pref_slow_sync_frequency_titles">
|
||||
<item>1 час</item>
|
||||
<item>3 часа</item>
|
||||
<item>6 часа</item>
|
||||
<item>12 часа</item>
|
||||
<item>24 часа</item>
|
||||
<item>Никога</item>
|
||||
</string-array>
|
||||
<string name="pref_push_on_receive">Насочен SMS към приемане</string>
|
||||
<string name="pref_sync_wifi">Синхронизиране с Wi-Fi</string>
|
||||
<string name="pref_sync_4g">Синхронизиране с 4G</string>
|
||||
<string name="pref_sync_3g">Синхронизиране с 3G</string>
|
||||
<string name="pref_sync_gprs">Синхронизиране с 2.5G (GPRS)</string>
|
||||
<string name="pref_sync_2g">Синхронизиране с 2G</string>
|
||||
<string name="pref_sync_others">Синхронизиране в други режими</string>
|
||||
<string name="title_activity_login">Вписване</string>
|
||||
|
||||
<!-- Login -->
|
||||
<string name="prompt_login">Вписване</string>
|
||||
<string name="prompt_password">Парола</string>
|
||||
<string name="action_sign_in">Влезане или регистриране</string>
|
||||
<string name="action_sign_in_short">Вписване</string>
|
||||
<string name="error_invalid_login">Грешно име или парола</string>
|
||||
<string name="error_invalid_password">Тази парола е твърде кратка</string>
|
||||
<string name="error_field_required">Полето е задължително</string>
|
||||
<string name="prompt_serverURI">Адрес на сървъра</string>
|
||||
<string name="error_invalid_server_address">Адресът на сървъра не е валиден</string>
|
||||
<string name="error_connection_failed">Връзката е неуспешна, уверете се, че това е правилният сървър </string>
|
||||
<string name="error_http_connection_failed">Не може да се осъществи HTTP връзка. Моля, уверете се, че има уеб сървър</string>
|
||||
|
||||
<!-- Main activity -->
|
||||
<string name="ma_title_rate_us">Оценете ни!</string>
|
||||
<string name="ma_title_add_account">Добавяне на профил</string>
|
||||
<string name="ma_title_welcome">Добре дошли</string>
|
||||
<string name="ma_content_welcome">Добре дошли в приложението Nextcloud SMS. Това приложение ви позволява да синхронизирате вашите SMS с вашия Nextcloud екземпляр като изполвате SMS приложение.</string>
|
||||
<string name="ma_title_remote_account">Отдалечен профил</string>
|
||||
<string name="choose_account">Изберете профил</string>
|
||||
|
||||
<!-- Restauration -->
|
||||
<string name="title_activity_select_account">Избери акаунт</string>
|
||||
<string name="title_activity_select_contact">Избор на контакт</string>
|
||||
<string name="no_account_configured">Няма конфигуриран профил.</string>
|
||||
|
||||
<!-- Notifications -->
|
||||
<string name="sync_title">Процес на синхронизиране</string>
|
||||
<string name="sync_inprogress">В ход на синхронизиране...</string>
|
||||
<string name="fatal_error">Фатална грешка !</string>
|
||||
<string name="notification_channel_name_default">По подразбиране</string>
|
||||
<string name="notification_channel_name_sync">Синхронизиране</string>
|
||||
|
||||
<!-- Errors -->
|
||||
<string name="err_sync_get_smslist">Грешка #1: Невалидни данни, получени от сървъра при получаване на предишни съобщения</string>
|
||||
<string name="err_sync_craft_http_request">Грешка #2: Грешка при създаването на HTTP заявка</string>
|
||||
<string name="err_sync_push_request">Грешка #3: Неуспешна /насочена/Push заявка </string>
|
||||
<string name="err_sync_push_request_resp">Грешка #4: Невалидни данни, получени от сървъра при насочване на данни</string>
|
||||
<string name="err_sync_create_json_null_smslist">Грешка #5: NULL SMS Списък</string>
|
||||
<string name="err_sync_create_json_put_smslist">Грешка #6: Грешка при изработването на /насочена/push заявка</string>
|
||||
<string name="err_sync_create_json_request_encoding">Грешка #7: Неподдържано кодиране при генериране на заявка</string>
|
||||
<string name="err_sync_auth_failed">Error #8: Authentication failed</string>
|
||||
<string name="err_sync_http_request_returncode_unhandled">Грешка #9: Сървърът задава необработен HTTP код за връщане</string>
|
||||
<string name="err_sync_http_request_connect">Грешка #11: Не може да се осъществи връзка с екземпляр на Nextcloud</string>
|
||||
<string name="err_sync_http_request_httpexception">Грешка #12: Не може да се осъществи връзка с екземпляр на Nextcloud</string>
|
||||
<string name="err_sync_http_request_ioexception">Грешка #13: Не може да се осъществи връзка с екземпляр на Nextcloud</string>
|
||||
<string name="err_sync_http_request_resp">Грешка #14: Не може да се анализира отговора на сървъра</string>
|
||||
<string name="err_sync_http_request_parse_resp">Грешка #15: Не може да се анализира отговора на сървъра</string>
|
||||
<string name="err_sync_no_connection_available">Грешка #16: Няма налична връзка за данни</string>
|
||||
<string name="err_sync_account_unparsable">Грешка #17: деформиран профил. Моля, конфигурирайте го отново</string>
|
||||
<string name="err_sync_ocsms_not_installed_or_oc_upgrade_required">Грешка #18: Приложението Nextcloud SMS не е инсталирано или Nextcloud очаква надстройка</string>
|
||||
<string name="err_fetch_phonelist">Получен е невалиден телефонен списък от сървъра. </string>
|
||||
<string name="err_proto_v2">Сървърът не поддържа тази функция. Уверете се, че версията на сървъра е поне 1.6.</string>
|
||||
<string name="contactinfos_title">Информация за контакт</string>
|
||||
<string name="subtitle_contact_phones">- Телефони за контакт</string>
|
||||
<string name="pref_title_bulk_messages">Максимален брой съобщения за изпращане при синхронизация</string>
|
||||
<string name="contactinfos_list">Списък с контакти</string>
|
||||
<string name="function_not_available">Тази функция все още не е налична.</string>
|
||||
|
||||
<string name="ui_notification_title_template">Nextcloud SMS: %1$s</string>
|
||||
<string name="communicate">Комуникация</string>
|
||||
<string name="title_activity_main2">Main2Activity</string>
|
||||
|
||||
<string name="navigation_drawer_open">Отворяне на чекмеджето за навигация</string>
|
||||
<string name="navigation_drawer_close">Затворяне на чекмеджето за навигация</string>
|
||||
<string name="ma_title_my_accounts">Моите профили</string>
|
||||
<string name="ma_content_swipeaction">Плъзгане отляво надясно за достъп до менюто с действия.</string>
|
||||
<string name="cancel">Отказ</string>
|
||||
<string name="understood">Разбрано</string>
|
||||
<string name="notif_permission_required">Нужни са права</string>
|
||||
<string name="notif_permission_required_content">Липсват някои права за да се извърши процеса на синхронизиране. Моля, поправете ги в настройките на приложението</string>
|
||||
<string name="please_fix_it">Моля, поправете го.</string>
|
||||
<string name="err_cannot_read_contacts">Контактите не могат да бъдат прочетени</string>
|
||||
<string name="err_cannot_read_sms">SMS не могат да бъдат прочетени.</string>
|
||||
<string name="action_appinfo_perms">Информация за приложения и права</string>
|
||||
<string name="restore_all_messages">Възстановене на всички съобщения</string>
|
||||
<string name="account_actions">Действия на профил</string>
|
||||
<string name="error_connection_failed_not_found">Връзката е неуспешна, сървърът връща 404 NOT FOUND/НЕ Е НАМЕРЕН/. Уверете се, че сте задали правилния път за вашия екземпляр на Nextcloud.</string>
|
||||
<string name="nothing_to_sync">Няма с какво да се синхронизира.</string>
|
||||
<string name="feature_not_already_implemented">Тази функция все още не е внедрена и скоро ще бъде налична.</string>
|
||||
<string name="pref_title_minimum_sync_chars">Минимална дължина на телефонния номер</string>
|
||||
<string name="err_didnt_find_account_restore">Не намерихме вашият профил, за да възстановим съобщението ви, това е много странна ситуация.</string>
|
||||
<string name="launch_restore">Възстановяване на моя SMS</string>
|
||||
<string name="error_make_default_sms_app">Моля, направете това приложение, да е SMS приложение по подразбиране , за да разрешите възстановяването на вашите съобщения. Това ограничение е въведено от Android 4.4.</string>
|
||||
<string name="fix_permissions">Поправка на права</string>
|
||||
<string name="err_kitkat_required">За да използвате тази функция, е нужно да използвате Android 4.4 или по -нова версия.</string>
|
||||
<string name="restore_finished">Възстановяването на SMS вече приключи.</string>
|
||||
<string name="x_messages_restored">възстановени съобщения …</string>
|
||||
<string name="err_no_connection">Няма налична връзка, моля, уверете се, че имате валидна връзка за данни.</string>
|
||||
<string name="reinit_sync_cursor">Повторно инициализиране на курсора за синхронизация</string>
|
||||
<string name="reinit_sync_cursor_confirm">Сигурни ли сте, че искате да инициализирате отново курсора за синхронизация? Това може да забави следващата синхронизация, ако открием много стари съобщения, които не са синхронизирани със сървъра.</string>
|
||||
<string name="yes_confirm">Да</string>
|
||||
<string name="no_confirm">Не</string>
|
||||
<string name="pref_show_sync_notifications">Показване на известията за синхронизaция</string>
|
||||
<string name="sync_complete">Синхронизацията завърши</string>
|
||||
<string name="err_sync_http_write_failed">Грешка #19: Неуспешно записване на HTTP поток при насочване на данни към сървъра.</string>
|
||||
<string name="err_sync_http_request_protocol_exception">Грешка #20: Неправилно задаване на версията на HTTP протокол.</string>
|
||||
<string name="action_appinfo_privacy_policy">Политика за поверителност</string>
|
||||
<string name="privacy_policy_large_text">
|
||||
\"Общ преглед \ n \ n“
|
||||
|
||||
„Nextcloud SMS е безплатен софтуер, разработен от сътрудниците му. Тази политика за поверителност“
|
||||
|
||||
„има за цел да ви информира за данните, събирани от това приложение.“
|
||||
|
||||
„Информацията, която събираме \ n \ n“
|
||||
|
||||
„ Приложението събира само SMS и журнал на обажданията. \ n \ n “
|
||||
|
||||
„Къде се изпраща информация? \ n \ n“
|
||||
|
||||
„ Информация не се изпраща нито на екипни сървъри на Nextcloud, нито на екипни сървъри на Nextcloud SMS нито“
|
||||
|
||||
„ нито на някое правителство, нито на друг субект, който не искате. \ n \ n“
|
||||
|
||||
„ Когато конфигурирате профил в приложението Nextcloud, вие се съгласявате със собственика на екземпляр на Nextcloud, “
|
||||
|
||||
„че вашите SMS и данни от журнала на обажданията ще се съхранява в неговата инфраструктура “
|
||||
|
||||
„под негова отговорност. \ n \ n “
|
||||
|
||||
„Не препоръчваме да използвате публичен или фирмен профил в Nextcloud. Вашата поверителност “
|
||||
|
||||
„трябва да бъде под ваш контрол на ваш самостоятелен Екземпляр на Nextcloud. \ N \ n “ </string>
|
||||
</resources>
|
38
src/main/res/values-br/google_playstore_strings.xml
Normal file
@ -0,0 +1,38 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
/*
|
||||
* Copyright (c) 2014, Loic Blot <loic.blot@unix-experience.fr>
|
||||
* All rights reserved.
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
-->
|
||||
<resources
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
tools:ignore="MissingTranslation">
|
||||
<!-- Translations must begin here -->
|
||||
<string name="gp_short_description">Kempredañ a ra Nextcloud o SMSoù war o azgoulenn Nexcloud</string>
|
||||
<string name="gp_description">
|
||||
Ar meziant Nexcloud SMS a kempred o kmenadennoù SMS war un azgoulenn Nextcloud pell ha laosk a ra ac\'haneoc\'h lenn anezho euz outi.
|
||||
Kasit SMSoù eus azgoulenn Nexcloud a vo en un adnevesadenn da zonet.
|
||||
Meziant kenglotus gant Android 4.0 betek 6.0
|
||||
</string>
|
||||
</resources>
|
@ -28,16 +28,13 @@
|
||||
<resources
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
tools:ignore="MissingTranslation">
|
||||
<!-- Translation version, reference for translators -->
|
||||
<string name="gp_translation_version">3</string>
|
||||
|
||||
<!-- Translations must begin here -->
|
||||
<string name="gp_short_description">Nextcloud SMS sincronitza els missatges SMS amb el teu compte de Nextcloud</string>
|
||||
<!-- Translations must begin here -->
|
||||
<string name="gp_short_description">Nextcloud SMS sincronitza els missatges SMS amb el vostre compte de Nextcloud</string>
|
||||
<string name="gp_description">
|
||||
L\'aplicació onwCloud SMS sincronitza els teus missatges SMS amb la teva instància Nextcloud i et permet llegir-los allà.
|
||||
L\'aplicació SMS de Nextcloud sincronitza els vostres missatges SMS en una instància de Nextcloud remota i us hi permetrà llegir els vostres missatges.
|
||||
|
||||
L\'enviament de SMS des de Nextcloud arribarà en un futur.
|
||||
L\'enviament d\'SMS des de la instància de Nextcloud serà possible en un llançament futur.
|
||||
|
||||
L\'aplicació es compatible des de la versió 4.0 a la versió 6.0 d\'Android.
|
||||
L\'aplicació és totalment compatible des d\'Android 4.0 a 6.0
|
||||
</string>
|
||||
</resources>
|
||||
|
@ -1,5 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
/*
|
||||
* Copyright (c) 2014-2015, Loic Blot <loic.blot@unix-experience.fr>
|
||||
* All rights reserved.
|
||||
@ -25,32 +24,28 @@
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
-->
|
||||
<resources
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
tools:ignore="MissingTranslation">
|
||||
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
|
||||
|
||||
<!-- Translation version, reference for translators -->
|
||||
<string name="translation_version">7</string>
|
||||
|
||||
<!-- System strings, do not translate -->
|
||||
<string name="app_name">Nextcloud SMS</string>
|
||||
<string name="login_logo">Login logo</string>
|
||||
|
||||
<string name="pref_lastmsgdate">last_message_date</string>
|
||||
<string name="login_logo">Logo d\'inici de sessió</string>
|
||||
|
||||
<!-- Translations must begin there -->
|
||||
<!-- Preferences -->
|
||||
<string name="pref_title_sync">SMS-Ràpid</string>
|
||||
<string name="pref_title_sync_frequency">Freqüència ràpida de sincronització</string>
|
||||
<string name="pref_title_sync">SMS - Ràpid</string>
|
||||
<string name="pref_title_sync_frequency">Freqüència de Sincronització ràpida</string>
|
||||
<string name="pref_title_slow_sync">SMS - Lent i segur</string>
|
||||
<string name="pref_title_slow_sync_frequency">Freqüència de sincronització lenta lenta</string>
|
||||
<string name="pref_title_slow_sync_frequency">Freqüència segura de sincronització lenta</string>
|
||||
<string name="action_settings">Paràmetres</string>
|
||||
<string name="sync_now">Sincronitza ara</string>
|
||||
<string name="pref_category_sync">Sincronització</string>
|
||||
<string name="title_global_pref_to_general_prefs">Genera preferències</string>
|
||||
<string name="title_global_pref_to_general_prefs">Preferències generals</string>
|
||||
<string name="summary_global_pref_to_general_prefs">Opcions de sincronització</string>
|
||||
<string name="summary_notif_prefs">Notificacions</string>
|
||||
<string name="pref_header_data_sync">Dades & sincronització</string>
|
||||
<string name="pref_header_data_sync">Sincronització & de dades </string>
|
||||
<string name="title_activity_general_settings">Paràmetres generals</string>
|
||||
|
||||
<string-array name="pref_sync_frequency_titles">
|
||||
@ -71,7 +66,7 @@
|
||||
<item>5000 SMS</item>
|
||||
<item>10000 SMS</item>
|
||||
<item>25000 SMS</item>
|
||||
<item>Tots els SMS no se sincronitzen</item>
|
||||
<item>Cada SMS no sincronitzat</item>
|
||||
</string-array>
|
||||
<string-array name="pref_slow_sync_frequency_titles">
|
||||
<item>1 hora</item>
|
||||
@ -81,66 +76,68 @@
|
||||
<item>24 hores</item>
|
||||
<item>Mai</item>
|
||||
</string-array>
|
||||
<string name="pref_push_on_receive">Premeu SMS a la recepció</string>
|
||||
<string name="pref_sync_wifi">Sincronitza amb Wi-Fi</string>
|
||||
<string name="pref_sync_4g">Sincronització en 4G</string>
|
||||
<string name="pref_sync_3g">Sincronitza amb 3G</string>
|
||||
<string name="pref_push_on_receive">Notifica SMS a la recepció</string>
|
||||
<string name="pref_sync_wifi">Sincronitza en Wi-Fi</string>
|
||||
<string name="pref_sync_4g">Sincronitza en 4G</string>
|
||||
<string name="pref_sync_3g">Sincronitza en 3G</string>
|
||||
<string name="pref_sync_gprs">Sincronitza en 2.5G (GPRS)</string>
|
||||
<string name="pref_sync_2g">Sinconització en 2G</string>
|
||||
<string name="pref_sync_others">Sincronitza en altres maneres</string>
|
||||
<string name="title_activity_login">Inicia sessió</string>
|
||||
<string name="pref_sync_2g">Sincronitza en 2G</string>
|
||||
<string name="pref_sync_others">Sincronitza en altres modes</string>
|
||||
<string name="title_activity_login">Inicia la sessió</string>
|
||||
|
||||
<!-- Login -->
|
||||
<string name="prompt_login">Login</string>
|
||||
<string name="prompt_login">Inici de sessió</string>
|
||||
<string name="prompt_password">Contrasenya</string>
|
||||
<string name="action_sign_in">Entra o registra\'t</string>
|
||||
<string name="action_sign_in_short">Inicia sessió</string>
|
||||
<string name="action_sign_in">Inicia la sessió o registra\'t</string>
|
||||
<string name="action_sign_in_short">Inicia la sessió</string>
|
||||
<string name="error_invalid_login">L\'inici de sessió o la contrasenya són incorrectes</string>
|
||||
<string name="error_invalid_password">Aquesta contrasenya és massa curta</string>
|
||||
<string name="error_field_required">Aquest camps és obligatori</string>
|
||||
<string name="error_field_required">Aquest camp és obligatori</string>
|
||||
<string name="prompt_serverURI">Adreça del servidor</string>
|
||||
<string name="error_invalid_server_address">Adreça del servidor invàlida</string>
|
||||
<string name="error_invalid_server_address">Adreça del servidor no vàlida</string>
|
||||
<string name="error_connection_failed">La connexió ha fallat, assegureu-vos que aquest és el servidor correcte</string>
|
||||
<string name="error_http_connection_failed">No es pot realitzar una connexió HTTP. Assegureu-vos que hi ha un servidor web</string>
|
||||
<string name="error_http_connection_failed">No es pot realitzar una connexió HTTP. Si us plau, assegureu-vos que hi ha un servidor web</string>
|
||||
|
||||
<!-- Main activity -->
|
||||
<string name="ma_title_rate_us">Puntua\'ns!</string>
|
||||
<string name="ma_title_rate_us">Puntueu-nos!</string>
|
||||
<string name="ma_title_add_account">Afegeix un compte</string>
|
||||
<string name="ma_title_welcome">Benvingut</string>
|
||||
<string name="ma_content_welcome">Benvingut a l\'aplicació SMS de Nextcloud. Aquesta aplicació us permet sincronitzar els vostres SMS a la vostra instància de Nextcloud mitjançant l\'aplicació SMS.</string>
|
||||
<string name="ma_title_remote_account">Compte remot</string>
|
||||
<string name="choose_account">Escolleix compte</string>
|
||||
<string name="choose_account">Trieu un compte</string>
|
||||
|
||||
<!-- Restauration -->
|
||||
<string name="title_activity_select_account">Selecciona compte</string>
|
||||
<string name="title_activity_select_contact">Selecciona contacte</string>
|
||||
<string name="no_account_configured">Compte no configurat</string>
|
||||
<string name="title_activity_select_account">Seleccioneu un compte</string>
|
||||
<string name="title_activity_select_contact">Seleccioneu un contacte</string>
|
||||
<string name="no_account_configured">No hi ha cap compte configurat.</string>
|
||||
|
||||
<!-- Notifications -->
|
||||
<string name="sync_title">Procés de sincronització</string>
|
||||
<string name="sync_inprogress">Sincronització en procés...</string>
|
||||
<string name="sync_inprogress">Sincronització en curs…</string>
|
||||
<string name="fatal_error">Error fatal!</string>
|
||||
<string name="notification_channel_name_default">Per defecte</string>
|
||||
<string name="notification_channel_name_sync">Sincronitza</string>
|
||||
|
||||
<!-- Errors -->
|
||||
<string name="err_sync_get_smslist">Error núm. 1: dades no vàlides rebudes del servidor quan s\'obtenen missatges anteriors</string>
|
||||
<string name="err_sync_craft_http_request">Error n. ° 2: Error en elaborar la sol · licitud HTTP</string>
|
||||
<string name="err_sync_push_request">Error núm. 3: Error en la sol·licitud de prémer</string>
|
||||
<string name="err_sync_push_request_resp">Error n.º 4: dades no vàlides rebudes del servidor quan s\'utilitzen dades</string>
|
||||
<string name="err_sync_create_json_null_smslist">Error n. ° 5: Llista de SMS NULL</string>
|
||||
<string name="err_sync_create_json_put_smslist">Error # 6: es va produir un error mentre es feia una sol·licitud d\'enviament</string>
|
||||
<string name="err_sync_create_json_request_encoding">Error # 7: Codificació no compatible quan es genera una sol·licitud</string>
|
||||
<string name="err_sync_auth_failed">Error n. ° 8: l\'autenticació ha fallat</string>
|
||||
<string name="err_sync_http_request_returncode_unhandled">Error 9: El servidor estableix el codi de retorn HTTP no controlat</string>
|
||||
<string name="err_sync_http_request_connect">Error 11: No es pot realitzar una connexió amb la instància de Nextcloud</string>
|
||||
<string name="err_sync_http_request_httpexception">Error n.º 12: No es pot realitzar una connexió amb la instància de Nextcloud</string>
|
||||
<string name="err_sync_http_request_ioexception">Error n.º 13: No es pot realitzar una connexió amb la instància de Nextcloud</string>
|
||||
<string name="err_sync_http_request_resp">Error n.º 14: No es pot analitzar la resposta del servidor</string>
|
||||
<string name="err_sync_http_request_parse_resp">Error 15: No es pot analitzar la resposta del servidor</string>
|
||||
<string name="err_sync_no_connection_available">Error # 16: no hi ha connexió de dades disponible</string>
|
||||
<string name="err_sync_account_unparsable">Error núm. 17: compte incorrecta. Torna a configurar-la</string>
|
||||
<string name="err_sync_ocsms_not_installed_or_oc_upgrade_required">Error # 18: l\'aplicació de SMS Nextcloud no està instal·lada o Nextcloud a l\'espera d\'una actualització</string>
|
||||
<string name="err_fetch_phonelist">La llista telefònica no és vàlida rebuda del servidor.</string>
|
||||
<string name="err_proto_v2">El servidor no admet aquesta característica. Assegureu-vos que la versió del servidor és almenys d\'1,6.</string>
|
||||
<string name="err_sync_get_smslist">Error núm. 1: S\'han rebut dades no vàlides del servidor mentre s\'obtenien missatges anteriors</string>
|
||||
<string name="err_sync_craft_http_request">Error núm. 2: Hi ha hagut un error mentre s\'elaborava la sol·licitud HTTP</string>
|
||||
<string name="err_sync_push_request">Error núm. 3: Ha fallat la petició de notificació</string>
|
||||
<string name="err_sync_push_request_resp">Error núm. 4: S\'han rebut dades no vàlides del servidor mentre s\'incorporaven dades</string>
|
||||
<string name="err_sync_create_json_null_smslist">Error núm. 5: Llista d\'SMS NULL</string>
|
||||
<string name="err_sync_create_json_put_smslist">Error núm. 6: Hi ha hagut un error mentre s\'elaborava una sol·licitud d\'incorporació</string>
|
||||
<string name="err_sync_create_json_request_encoding">Error núm. 7: S\'ha trobat una codificació no compatible mentre es generava una sol·licitud</string>
|
||||
<string name="err_sync_auth_failed">Error núm. 8: L\'autenticació ha fallat</string>
|
||||
<string name="err_sync_http_request_returncode_unhandled">Error núm. 9: El servidor ha establert el codi de retorn HTTP no controlat</string>
|
||||
<string name="err_sync_http_request_connect">Error núm. 11: No es pot realitzar una connexió amb la instància de Nextcloud</string>
|
||||
<string name="err_sync_http_request_httpexception">Error núm. 12: No es pot realitzar una connexió amb la instància de Nextcloud</string>
|
||||
<string name="err_sync_http_request_ioexception">Error núm. 13: No es pot realitzar una connexió amb la instància de Nextcloud</string>
|
||||
<string name="err_sync_http_request_resp">Error núm. 14: No es pot analitzar la resposta del servidor</string>
|
||||
<string name="err_sync_http_request_parse_resp">Error núm. 15: No es pot analitzar la resposta del servidor</string>
|
||||
<string name="err_sync_no_connection_available">Error núm. 16: No hi ha connexió de dades disponible</string>
|
||||
<string name="err_sync_account_unparsable">Error núm. 17: Compte incorrecte. Si us plau, torneu-lo a configurar</string>
|
||||
<string name="err_sync_ocsms_not_installed_or_oc_upgrade_required">Error núm. 18: L\'aplicació d\'SMS Nextcloud no està instal·lada o Nextcloud està esperant una actualització</string>
|
||||
<string name="err_fetch_phonelist">La llista de telèfons rebuda del servidor no és vàlida.</string>
|
||||
<string name="err_proto_v2">El servidor no admet aquesta característica. Assegureu-vos que la versió del servidor és com a mínim la 1.6.</string>
|
||||
<string name="contactinfos_title">Informació de contacte</string>
|
||||
<string name="subtitle_contact_phones">- Telèfons de contacte</string>
|
||||
<string name="pref_title_bulk_messages">Missatges màxims per enviar per sincronització</string>
|
||||
@ -149,38 +146,65 @@
|
||||
|
||||
<string name="ui_notification_title_template">Nextcloud SMS: %1$s</string>
|
||||
<string name="communicate">Comunica</string>
|
||||
<string name="title_activity_main2">Activitat principal 2</string>
|
||||
<string name="title_activity_main2">Main2Activity</string>
|
||||
|
||||
<string name="navigation_drawer_open">Navegació oberta</string>
|
||||
<string name="navigation_drawer_close">Tanca la navegació</string>
|
||||
<string name="navigation_drawer_open">Obre el calaix de navegació</string>
|
||||
<string name="navigation_drawer_close">Tanca el calaix la navegació</string>
|
||||
<string name="ma_title_my_accounts">Els meus comptes</string>
|
||||
<string name="ma_content_swipeaction">Feu lliscar d\'esquerra a dreta per accedir al menú d\'acció.</string>
|
||||
<string name="cancel">Cancel·la</string>
|
||||
<string name="understood">Entès</string>
|
||||
<string name="understood">Entesos</string>
|
||||
<string name="notif_permission_required">Es necessiten permisos</string>
|
||||
<string name="notif_permission_required_content">Falta alguns permisos per realitzar el procés de sincronització. Corregiu-lo a la configuració de l\'aplicació</string>
|
||||
<string name="please_fix_it">Corregiu-lo.</string>
|
||||
<string name="notif_permission_required_content">Hi manquen alguns permisos per realitzar el procés de sincronització. Si us plau, corregiu-ho a la configuració de l\'aplicació</string>
|
||||
<string name="please_fix_it">Si us plau, corregiu-ho.</string>
|
||||
<string name="err_cannot_read_contacts">No podem llegir els vostres contactes.</string>
|
||||
<string name="err_cannot_read_sms">No podem llegir el teu SMS</string>
|
||||
<string name="err_cannot_read_sms">No podem llegir els vostres SMS.</string>
|
||||
<string name="action_appinfo_perms">Informació i permisos de l\'aplicació</string>
|
||||
<string name="restore_all_messages">Restaura tots els missatges</string>
|
||||
<string name="account_actions">Accions del compte</string>
|
||||
<string name="error_connection_failed_not_found">Error de connexió, el servidor torna 404 NO S\'OFUNDA. Assegureu-vos que configureu la ruta correcta per a la vostra instància de Nextcloud.</string>
|
||||
<string name="nothing_to_sync">No hi ha res per sincronitzar</string>
|
||||
<string name="error_connection_failed_not_found">La connexió ha fallat, el servidor retorna un 404 NO TROBAT. Assegureu-vos que heu configurat la ruta correcta per a la vostra instància de Nextcloud.</string>
|
||||
<string name="nothing_to_sync">No hi ha res a sincronitzar.</string>
|
||||
<string name="feature_not_already_implemented">Aquesta funció encara no està implementada i aviat estarà disponible.</string>
|
||||
<string name="pref_title_minimum_sync_chars">Longitud mínima del número de telèfon</string>
|
||||
<string name="err_didnt_find_account_restore">No hem trobat el vostre compte per restaurar el vostre missatge, aquesta és una situació molt estranya.</string>
|
||||
<string name="launch_restore">Restaurar els meus SMS</string>
|
||||
<string name="launch_restore">Restaura els meus SMS</string>
|
||||
<string name="error_make_default_sms_app">Feu que aquesta aplicació sigui l\'aplicació SMS predeterminada per permetre restaurar els vostres missatges. Aquesta limitació ha estat introduïda per Android 4.4.</string>
|
||||
<string name="fix_permissions">Assignar permisos</string>
|
||||
<string name="err_kitkat_required">Es requereix Android 4.4 o superior per utilitzar aquesta funció.</string>
|
||||
<string name="restore_finished">La restauració de SMS s\'ha finalitzat</string>
|
||||
<string name="x_messages_restored">S\'han restablert els missatges…</string>
|
||||
<string name="err_no_connection">No hi ha cap connexió disponible, assegureu-vos que teniu una connexió de dades vàlida.</string>
|
||||
<string name="reinit_sync_cursor">Reiniciar el cursor de sincronització</string>
|
||||
<string name="fix_permissions">Assigna permisos</string>
|
||||
<string name="err_kitkat_required">Es requereix Android 4.4 o superior per fer servir aquesta funció.</string>
|
||||
<string name="restore_finished">Ha finalitzat la restauració d\'SMS.</string>
|
||||
<string name="x_messages_restored">S\'han restaurat … missatges</string>
|
||||
<string name="err_no_connection">No hi ha cap connexió disponible, si us plau, assegureu-vos que teniu una connexió de dades vàlida.</string>
|
||||
<string name="reinit_sync_cursor">Reinicia el cursor de sincronització</string>
|
||||
<string name="reinit_sync_cursor_confirm">Esteu segur que voleu reinicialitzar el cursor de sincronització? Això pot frenar la propera sincronització si trobem molts missatges antics que no es sincronitzen amb el servidor.</string>
|
||||
<string name="yes_confirm">Sí</string>
|
||||
<string name="no_confirm">No</string>
|
||||
<string name="pref_show_sync_notifications">Mostra notificacions de sincronització</string>
|
||||
<string name="sync_complete">S\'ha completat la sincronització</string>
|
||||
</resources>
|
||||
<string name="err_sync_http_write_failed">Error núm. 19: No s\'ha pogut escriure la transmissió HTTP en el moment d\'enviar la informació al servidor.</string>
|
||||
<string name="err_sync_http_request_protocol_exception">Error núm. 20: No s\'ha pogut establir correctament la versió del protocol HTTP.</string>
|
||||
<string name="action_appinfo_privacy_policy">Política de privadesa</string>
|
||||
<string name="privacy_policy_large_text">
|
||||
\"Resum\n\n\"
|
||||
|
||||
\"Nextcloud SMS és un programari lliure desenvolupat pels seus contribuïdors. Aquesta política de privadesa\"
|
||||
\"té la intenció d\'informar-vos sobre les dades recopilades per aquesta aplicació.\"
|
||||
|
||||
\"Informació que recollim\n\n
|
||||
|
||||
L\'aplicació només recull SMS i registres de trucades.\n\n
|
||||
|
||||
\"On s\'envia la informació.\n\n\"
|
||||
|
||||
La informació no s\'envia mai als servidors de l\'equip de Nextcloud, ni tampoc als servidors de l\'equip de Nextcloud SMS\"
|
||||
\"ni tampoc a cap govern ni cap altra entitat que no vulgueu.\n\n\"
|
||||
|
||||
\"Quan configureu un compte de Nextcloud a aquesta aplicació, accepteu que el propietari de\"
|
||||
\"la instància de Nextcloud emmagatzemarà les dades dels SMS i el registre de trucades a la\"
|
||||
\"seva infraestructura, sota la seva responsabilitat.\n\n\"
|
||||
|
||||
\"No us recomanem que feu servir cap instància pública ni corporativa de Nextcloud.\"
|
||||
\"La vostra privadesa ha d\'estar sota el vostre control en la vostra instància\"
|
||||
\"de Nextcloud.\n\n\"
|
||||
|
||||
</string>
|
||||
</resources>
|
||||
|
@ -28,15 +28,12 @@
|
||||
<resources
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
tools:ignore="MissingTranslation">
|
||||
<!-- Translation version, reference for translators -->
|
||||
<string name="gp_translation_version">3</string>
|
||||
|
||||
<!-- Translations must begin here -->
|
||||
<string name="gp_short_description">Nextcloud SMS synchronizuje vaše lokální SMS do vašeho prostředí Nextcloud</string>
|
||||
<!-- Translations must begin here -->
|
||||
<string name="gp_short_description">Nextcloud SMS synchronizuje SMS zprávy z telefonu na vámi využívanou instanci Nextcloud</string>
|
||||
<string name="gp_description">
|
||||
Aplikace NextCloud SMS synchronizuje vaše SMS zprávy do vzdáleného prostředí Nextcloud a také vám umožňuje je v něm číst.
|
||||
Aplikace Nextcloud SMS synchronizuje vaše SMS zprávy na vámi využívanou instanci Nextcloud serveru, kde si je také můžete číst.
|
||||
|
||||
Odesílání SMS z prostředí Nextcloud bude uvedeno v budoucích verzích.
|
||||
|
||||
Aplikace je plně kompatibilní s Androidem 4.0 až 6.0</string>
|
||||
Aplikace je plně kompatibilní se systémem Android verze 4.0 a novějšími</string>
|
||||
</resources>
|
||||
|
@ -1,5 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
/*
|
||||
* Copyright (c) 2014-2015, Loic Blot <loic.blot@unix-experience.fr>
|
||||
* All rights reserved.
|
||||
@ -25,29 +24,25 @@
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
-->
|
||||
<resources
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
tools:ignore="MissingTranslation">
|
||||
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
|
||||
|
||||
<!-- Translation version, reference for translators -->
|
||||
<string name="translation_version">7</string>
|
||||
|
||||
<!-- System strings, do not translate -->
|
||||
<string name="app_name">Nextcloud SMS</string>
|
||||
<string name="login_logo">Přihlašovací logo</string>
|
||||
|
||||
<string name="pref_lastmsgdate">last_message_date</string>
|
||||
<string name="login_logo">Logo na přihlašovací obrazovce</string>
|
||||
|
||||
<!-- Translations must begin there -->
|
||||
<!-- Preferences -->
|
||||
<string name="pref_title_sync">SMS - Rychlé</string>
|
||||
<string name="pref_title_sync_frequency">Rychlá Synchronizační frekvence</string>
|
||||
<string name="pref_title_slow_sync">SMS - Zabezpečené a Pomalejší</string>
|
||||
<string name="pref_title_slow_sync_frequency">Zabezpečená Pomalejší Synchronizační frekvence</string>
|
||||
<string name="pref_title_sync">SMS – rychlé</string>
|
||||
<string name="pref_title_sync_frequency">Četnost rychlé synchronizace</string>
|
||||
<string name="pref_title_slow_sync">SMS – pomalé a zabezpečné</string>
|
||||
<string name="pref_title_slow_sync_frequency">Četnost zabezpečené pomalé synchronizace</string>
|
||||
<string name="action_settings">Nastavení</string>
|
||||
<string name="sync_now">Synchronizovat nyní</string>
|
||||
<string name="pref_category_sync">Synchronizace</string>
|
||||
<string name="title_global_pref_to_general_prefs">Obecné preference</string>
|
||||
<string name="title_global_pref_to_general_prefs">Obecné předvolby</string>
|
||||
<string name="summary_global_pref_to_general_prefs">Nastavení synchronizace</string>
|
||||
<string name="summary_notif_prefs">Upozornění</string>
|
||||
<string name="pref_header_data_sync">Data a synchronizace</string>
|
||||
@ -71,7 +66,7 @@
|
||||
<item>5000 SMS</item>
|
||||
<item>10000 SMS</item>
|
||||
<item>25000 SMS</item>
|
||||
<item>Všechny SMS nesynchronizovány</item>
|
||||
<item>Všechny nesesynchronizované SMS</item>
|
||||
</string-array>
|
||||
<string-array name="pref_slow_sync_frequency_titles">
|
||||
<item>1 hodina</item>
|
||||
@ -87,63 +82,65 @@
|
||||
<string name="pref_sync_3g">Synchronizovat přes 3G</string>
|
||||
<string name="pref_sync_gprs">Synchronizovat přes 2.5G (GPRS)</string>
|
||||
<string name="pref_sync_2g">Synchronizovat přes 2G</string>
|
||||
<string name="pref_sync_others">Synchronizovat v ostatních módech</string>
|
||||
<string name="pref_sync_others">Synchronizovat v ostatních režimech</string>
|
||||
<string name="title_activity_login">Přihlásit se</string>
|
||||
|
||||
<!-- Login -->
|
||||
<string name="prompt_login">Přihlásit</string>
|
||||
<string name="prompt_login">Přihlašovací jméno</string>
|
||||
<string name="prompt_password">Heslo</string>
|
||||
<string name="action_sign_in">Přihlásit nebo zaregistrovat</string>
|
||||
<string name="action_sign_in">Přihlásit se nebo zaregistrovat</string>
|
||||
<string name="action_sign_in_short">Přihlásit se</string>
|
||||
<string name="error_invalid_login">Jméno nebo heslo není správné</string>
|
||||
<string name="error_invalid_login">Přihlašovací jméno nebo heslo není správné</string>
|
||||
<string name="error_invalid_password">Toto heslo je příliš krátké</string>
|
||||
<string name="error_field_required">Toto pole je vyžadováno</string>
|
||||
<string name="error_field_required">Tuto kolonku je třeba vyplnit</string>
|
||||
<string name="prompt_serverURI">Adresa serveru</string>
|
||||
<string name="error_invalid_server_address">Neplatná adresa serveru</string>
|
||||
<string name="error_connection_failed">Připojení se nezdařilo. Ujistěte se, že se připojujete ke správnému serveru</string>
|
||||
<string name="error_http_connection_failed">Nezdařilo se vytvořit HTTP připojení. Prosím ujistěte se, že na druhé straně je webový server.</string>
|
||||
<string name="error_connection_failed">Připojení se nezdařilo. Ověřte, že se připojujete ke správnému serveru</string>
|
||||
<string name="error_http_connection_failed">Nezdařilo se vytvořit HTTP připojení. Ověřte, že na druhé straně je webový server</string>
|
||||
|
||||
<!-- Main activity -->
|
||||
<string name="ma_title_rate_us">Ohodnotit!</string>
|
||||
<string name="ma_title_rate_us">Ohodnoťte!</string>
|
||||
<string name="ma_title_add_account">Přidat účet</string>
|
||||
<string name="ma_title_welcome">Vítejte</string>
|
||||
<string name="ma_content_welcome">Vítejte v aplikaci Nextcloud SMS. Tato aplikace vám umožní synchronizovat SMS do vašeho prostředí Nextcloud použitím aplikace SMS.</string>
|
||||
<string name="ma_title_remote_account">Vzdálený účet</string>
|
||||
<string name="choose_account">Vyberte účet</string>
|
||||
<string name="ma_content_welcome">Vítejte v aplikaci Nextcloud SMS. Tato aplikace vám umožní synchronizovat SMS zprávy na vámi využívanou instanci Nextcloud.</string>
|
||||
<string name="ma_title_remote_account">Federovaný účet</string>
|
||||
<string name="choose_account">Zvolte účet</string>
|
||||
|
||||
<!-- Restauration -->
|
||||
<string name="title_activity_select_account">Vybrat účet</string>
|
||||
<string name="title_activity_select_contact">Vybrat kontakt</string>
|
||||
<string name="no_account_configured">Nenakonfigurován žádný účet</string>
|
||||
<string name="no_account_configured">Nenastaven žádný účet.</string>
|
||||
|
||||
<!-- Notifications -->
|
||||
<string name="sync_title">Průběh synchronizace</string>
|
||||
<string name="sync_inprogress">Probíhá synchronizace</string>
|
||||
<string name="fatal_error">Závažná chyba !</string>
|
||||
<string name="sync_inprogress">Synchronizuje se…</string>
|
||||
<string name="fatal_error">Závažná chyba!</string>
|
||||
<string name="notification_channel_name_default">Výchozí</string>
|
||||
<string name="notification_channel_name_sync">Synchronizovat</string>
|
||||
|
||||
<!-- Errors -->
|
||||
<string name="err_sync_get_smslist">Error #1: Ze serveru obdržena neplatná data při získávání předchozích zpráv.</string>
|
||||
<string name="err_sync_craft_http_request">Error #2: Chyba při vytváření HTTP požadavku</string>
|
||||
<string name="err_sync_push_request">Error #3: Selhal požadavek nahrání</string>
|
||||
<string name="err_sync_push_request_resp">Error #4: Ze serveru obdržena neplatná data během odesílání.</string>
|
||||
<string name="err_sync_create_json_null_smslist">Error #5: Prázdný seznam SMS</string>
|
||||
<string name="err_sync_create_json_put_smslist">Error #6: Chyba při vytváření požadavku nahrání</string>
|
||||
<string name="err_sync_create_json_request_encoding">Error #7: Nepodporované kódování během generování požadavku</string>
|
||||
<string name="err_sync_auth_failed">Error #8: Selhalo ověření</string>
|
||||
<string name="err_sync_http_request_returncode_unhandled">Error #9: Server nastavil neošetřený HTTP návratový kód</string>
|
||||
<string name="err_sync_http_request_connect">Error #11: Není možné vytvořit připojení k prostředí Nextcloud</string>
|
||||
<string name="err_sync_http_request_httpexception">Error #12: Není možné vytvořit připojení k prostředí Nextcloud</string>
|
||||
<string name="err_sync_http_request_ioexception">Error #13: Není možné vytvořit připojení k prostředí Nextcloud</string>
|
||||
<string name="err_sync_http_request_resp">Error #14: Nezdařilo se rozebrat odpověď serveru</string>
|
||||
<string name="err_sync_http_request_parse_resp">Error #15: Nezdařilo se rozebrat odpověď serveru</string>
|
||||
<string name="err_sync_no_connection_available">Error #16: Není dostupné žádné datové připojení</string>
|
||||
<string name="err_sync_account_unparsable">Error #17: poškozený účet. Prosím nakonfigurujte ho znovu.</string>
|
||||
<string name="err_sync_ocsms_not_installed_or_oc_upgrade_required">Error #18: Aplikace Nextcloud SMS není na serveru nainstalována, nebo Nextcloud čeká na aktualizace.</string>
|
||||
<string name="err_sync_get_smslist">Chyba č. 1: Při získávání předchozích zpráv ze serveru obdržena neplatná data</string>
|
||||
<string name="err_sync_craft_http_request">Chyba č. 2: Chyba při vytváření HTTP požadavku</string>
|
||||
<string name="err_sync_push_request">Chyba č. 3: Nezdařil se požadavek nahrání</string>
|
||||
<string name="err_sync_push_request_resp">Chyba č. 4: Při odesílání obdržena neplatná data ze serveru</string>
|
||||
<string name="err_sync_create_json_null_smslist">Chyba č. 5: Prázdný seznam SMS</string>
|
||||
<string name="err_sync_create_json_put_smslist">Chyba č. 6: Chyba při vytváření požadavku nahrání</string>
|
||||
<string name="err_sync_create_json_request_encoding">Chyba č. 7: Nepodporované kódování znaků při vytváření požadavku</string>
|
||||
<string name="err_sync_auth_failed">Chyba č. 8: Ověření se nezdařilo</string>
|
||||
<string name="err_sync_http_request_returncode_unhandled">Chyba č. 9: Server nastavil neošetřený HTTP návratový kód</string>
|
||||
<string name="err_sync_http_request_connect">Chyba č. 11: Nedaří se spojit s instancí Nextcloud</string>
|
||||
<string name="err_sync_http_request_httpexception">Chyba č. 12: Nedaří se spojit s instancí Nextcloud</string>
|
||||
<string name="err_sync_http_request_ioexception">Chyba č. 13: Nedaří se spojit s instancí Nextcloud</string>
|
||||
<string name="err_sync_http_request_resp">Chyba č. 14: Nedaří se zpracovat odpověď serveru</string>
|
||||
<string name="err_sync_http_request_parse_resp">Chyba č. 15: Nedaří se zpracovat odpověď serveru</string>
|
||||
<string name="err_sync_no_connection_available">Chyba č. 16: Není dostupné žádné datové připojení</string>
|
||||
<string name="err_sync_account_unparsable">Chyba č. 17: chybně definovaný účet. Nastavte ho znovu</string>
|
||||
<string name="err_sync_ocsms_not_installed_or_oc_upgrade_required">Chyba č. 18: Aplikace Nextcloud SMS není na serveru nainstalována, nebo ten čeká přechod na novější verzi</string>
|
||||
<string name="err_fetch_phonelist">Ze serveru obdržen neplatný telefonní seznam.</string>
|
||||
<string name="err_proto_v2">Server nepodporuje tuto funkci. Ujistěte se, že serverová verze je minimálně 1.6.</string>
|
||||
<string name="contactinfos_title">Kontaktní informace</string>
|
||||
<string name="subtitle_contact_phones">Kontaktní telefony</string>
|
||||
<string name="pref_title_bulk_messages">Maximální počet odeslaných zpráv pro jednu synchronizaci.</string>
|
||||
<string name="err_proto_v2">Server tuto funkci nepodporuje. Zajistěte, aby jeho verze byla alespoň 1.6.</string>
|
||||
<string name="contactinfos_title">Kontaktní údaje</string>
|
||||
<string name="subtitle_contact_phones">- Kontaktní telefony</string>
|
||||
<string name="pref_title_bulk_messages">Maximální počet odeslaných zpráv v rámci jedné synchronizace.</string>
|
||||
<string name="contactinfos_list">Kontakty</string>
|
||||
<string name="function_not_available">Tato funkce ještě není dostupná</string>
|
||||
|
||||
@ -154,33 +151,59 @@
|
||||
<string name="navigation_drawer_open">Otevřít navigační panel</string>
|
||||
<string name="navigation_drawer_close">Zavřít navigační panel</string>
|
||||
<string name="ma_title_my_accounts">Moje účty</string>
|
||||
<string name="ma_content_swipeaction">Pro otevření menu akcí přejeďte prstem zleva doprava.</string>
|
||||
<string name="cancel">Zrušit</string>
|
||||
<string name="ma_content_swipeaction">Pro otevření nabídky akcí přejeďte prstem zleva doprava.</string>
|
||||
<string name="cancel">Storno</string>
|
||||
<string name="understood">Rozumím</string>
|
||||
<string name="notif_permission_required">Vyžadováno oprávnění</string>
|
||||
<string name="notif_permission_required_content">Chybí některá oprávnění vyžadována pro synchronizace. Prosím opravte je v nastavení aplikace.</string>
|
||||
<string name="please_fix_it">Prosím opravte to.</string>
|
||||
<string name="err_cannot_read_contacts">Nemůžeme načíst vaše kontakty.</string>
|
||||
<string name="err_cannot_read_sms">Nemůžeme načíst vaše SMS.</string>
|
||||
<string name="notif_permission_required_content">Chybí některá oprávnění vyžadovaná pro synchronizaci. Opravte je v nastavení aplikace</string>
|
||||
<string name="please_fix_it">Opravte to.</string>
|
||||
<string name="err_cannot_read_contacts">Nedaří se načíst vaše kontakty.</string>
|
||||
<string name="err_cannot_read_sms">Nedaří se načíst vaše SMS.</string>
|
||||
<string name="action_appinfo_perms">Informace o aplikaci a oprávněních</string>
|
||||
<string name="restore_all_messages">Obnovit všechny zprávy</string>
|
||||
<string name="account_actions">Akce účtu</string>
|
||||
<string name="error_connection_failed_not_found">Připojení selhalo, server vrátil 404 NENALEZENO/NOT FOUND. Ujistěte se, že jste nastavili správnou cestu k vašemu prostředí Nextcloud.</string>
|
||||
<string name="error_connection_failed_not_found">Připojení se nezdařilo, server vrátil 404 NENALEZENO (NOT FOUND). Ověřte, že jste nastavili správný popis umístění k vámi využívané instance Nextcloud.</string>
|
||||
<string name="nothing_to_sync">Není co synchronizovat.</string>
|
||||
<string name="feature_not_already_implemented">Tato funkce ještě není implementována a bude dostupná brzy.</string>
|
||||
<string name="feature_not_already_implemented">Tato funkce ještě není implementována, ale bude dostupná brzy.</string>
|
||||
<string name="pref_title_minimum_sync_chars">Minimální délka telefonního čísla</string>
|
||||
<string name="err_didnt_find_account_restore">Nebyl nalezen váš účet pro obnovu zpráv, toto je velmi zvláštní situace.</string>
|
||||
<string name="launch_restore">Obnovit mé SMS</string>
|
||||
<string name="error_make_default_sms_app">Prosím zvolte tuto aplikaci jako výchozí SMS aplikaci pro obnovení vašich SMS zpráv. Toto omezení bylo uvedeno v Adnroidu 4.4.</string>
|
||||
<string name="error_make_default_sms_app">Pro obnovení vašich SMS zpráv zvolte tuto aplikaci jako výchozí SMS aplikaci. Toto omezení bylo zavedeno v Adnroid 4.4.</string>
|
||||
<string name="fix_permissions">Opravit oprávnění</string>
|
||||
<string name="err_kitkat_required">Android 4.4 nebo novější je vyžadován pro využití této funkce.</string>
|
||||
<string name="err_kitkat_required">Pro používání této funkce je zapotřebí systém Android 4.4 a novější.</string>
|
||||
<string name="restore_finished">Obnovení SMS je nyní dokončeno.</string>
|
||||
<string name="x_messages_restored">zprávy obnoveny…</string>
|
||||
<string name="err_no_connection">Připojení nedostupné. Prosím ujistěte se, že máte platné datové připojení.</string>
|
||||
<string name="reinit_sync_cursor">Reinicializovat synchronizační kurzor</string>
|
||||
<string name="reinit_sync_cursor_confirm">Opravdu si přejete reinicializovat synchronizační kurzor ? Pokud bude nalezeno mnoho starých zpráv nesynchronizovaných se serverem, může to zdržet příští synchronizaci.</string>
|
||||
<string name="err_no_connection">Není k dispozici připojení k síti. Ověřte, že máte funkční datové připojení.</string>
|
||||
<string name="reinit_sync_cursor">Znovu inicializovat synchronizační kurzor</string>
|
||||
<string name="reinit_sync_cursor_confirm">Opravdu chcete znovu inicializovat synchronizační kurzor? Pokud bude nalezeno mnoho starých zpráv nesynchronizovaných se serverem, může to zdržet příští synchronizaci.</string>
|
||||
<string name="yes_confirm">Ano</string>
|
||||
<string name="no_confirm">Ne</string>
|
||||
<string name="pref_show_sync_notifications">Zobrazit notifikace synchronizace</string>
|
||||
<string name="pref_show_sync_notifications">Zobrazit upozornění ohledně synchronizace</string>
|
||||
<string name="sync_complete">Synchronizace dokončena</string>
|
||||
</resources>
|
||||
<string name="err_sync_http_write_failed">Chyba č. 19: Při odesílání dat na server se nepodařilo zapsat do HTTP proudu (stream).</string>
|
||||
<string name="err_sync_http_request_protocol_exception">Chyba č. 20: Nepodařilo se řádné nastavit verzi HTTP protokolu.</string>
|
||||
<string name="action_appinfo_privacy_policy">Zásady ochrany soukromí</string>
|
||||
<string name="privacy_policy_large_text">
|
||||
\"Přehled\n\n\"
|
||||
|
||||
\"Nextcloud SMS je svobodný software vyvinutý přispěvateli do tohoto projektu. Tyto zásady ochrany soukromí \"
|
||||
\"jsou zamýšleny jako informace pro vás o datech shromažďovaných touto aplikací.\"
|
||||
|
||||
\"Informace, které jsou shromažďovány\n\n\"
|
||||
|
||||
\"Aplikací jsou shromažďovány pouze záznamy SMS zpráv a volání.\n\n\"
|
||||
|
||||
\"Kam jsou informace odesílány.\n\n\"
|
||||
|
||||
\"Informace nejsou odesílány ani na servery vývojářů Nextcloud ani Nextcloud SMS \"
|
||||
\"ani žádné vládní či jiné entitě, kterou nechcete.\n\n\"
|
||||
|
||||
\"Když nastavujete účet v aplikaci Nexcloud odsouhlasíte vlastníkovi instance \"
|
||||
\"Nextcloud že data vašeho záznamu SMS zpráv a hovorů budou ukládána na jeho infrastruktuře,\"
|
||||
\"na jeho odpovědnost.\n\n\"
|
||||
|
||||
\"Nedoporučujeme použít účet ve veřejné nebo firemní instanci Nextcloud. Je třeba, aby vaše soukromí \"
|
||||
\"bylo pod vaší kontrolou na vaší vlastní instanci Nextcloud.\n\n\"
|
||||
|
||||
</string>
|
||||
</resources>
|
||||
|
@ -1,160 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
/*
|
||||
* Copyright (c) 2014-2015, Loic Blot <loic.blot@unix-experience.fr>
|
||||
* All rights reserved.
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
-->
|
||||
<resources
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
tools:ignore="MissingTranslation">
|
||||
|
||||
<!-- Translation version, reference for translators -->
|
||||
<string name="translation_version">7</string>
|
||||
|
||||
<!-- Translations must begin there -->
|
||||
<!-- Preferences -->
|
||||
<string name="pref_title_sync">SMS - rychle</string>
|
||||
<string name="pref_title_sync_frequency">Frekvence rychlé synchronizace</string>
|
||||
<string name="pref_title_slow_sync">SMS - pomalu a bezpečně</string>
|
||||
<string name="pref_title_slow_sync_frequency">Frekvence bezpečné pomalé synchronizace</string>
|
||||
<string name="action_settings">Nastavení</string>
|
||||
<string name="sync_now">Synchronizovat teď</string>
|
||||
<string name="pref_category_sync">Synchronizace</string>
|
||||
<string name="title_global_pref_to_general_prefs">Všeobecné možnosti</string>
|
||||
<string name="summary_global_pref_to_general_prefs">Možnosti synchronizace</string>
|
||||
<string name="summary_notif_prefs">Upozornění</string>
|
||||
<string name="pref_header_data_sync">Data a synchronizace</string>
|
||||
<string name="title_activity_general_settings">Hlavní nastavení</string>
|
||||
|
||||
<string-array name="pref_sync_frequency_titles">
|
||||
<item>5 minut</item>
|
||||
<item>15 minut</item>
|
||||
<item>30 minut</item>
|
||||
<item>1 hodina</item>
|
||||
<item>3 hodiny</item>
|
||||
<item>6 hodin</item>
|
||||
<item>12 hodin</item>
|
||||
<item>24 hodin</item>
|
||||
<item>Nikdy</item>
|
||||
</string-array>
|
||||
<string-array name="pref_sync_bulk_max_messages_titles">
|
||||
<item>100 SMS</item>
|
||||
<item>1000 SMS</item>
|
||||
<item>2000 SMS</item>
|
||||
<item>5000 SMS</item>
|
||||
<item>10000 SMS</item>
|
||||
<item>25000 SMS</item>
|
||||
<item>Všechny nesynchronizované SMS</item>
|
||||
</string-array>
|
||||
<string-array name="pref_slow_sync_frequency_titles">
|
||||
<item>1 hodina</item>
|
||||
<item>3 hodiny</item>
|
||||
<item>6 hodin</item>
|
||||
<item>12 hodin</item>
|
||||
<item>24 hodin</item>
|
||||
<item>Nikdy</item>
|
||||
</string-array>
|
||||
<string name="pref_push_on_receive">Oznámit SMS při přijetí</string>
|
||||
<string name="pref_sync_wifi">Synchronizovat přes Wi-Fi</string>
|
||||
<string name="pref_sync_4g">Synchronizovat přes 4G</string>
|
||||
<string name="pref_sync_3g">Synchronizovat přes 3G</string>
|
||||
<string name="pref_sync_gprs">Synchronizovat přes 2.5G (GPRS)</string>
|
||||
<string name="pref_sync_2g">Synchronizovat přes 2G</string>
|
||||
<string name="pref_sync_others">Synchronizovat přes jiná připojení</string>
|
||||
<string name="title_activity_login">Přihlášení</string>
|
||||
|
||||
<!-- Login -->
|
||||
<string name="prompt_login">Login</string>
|
||||
<string name="prompt_password">Heslo</string>
|
||||
<string name="action_sign_in">Přihlásit se nebo registrovat</string>
|
||||
<string name="action_sign_in_short">Přihlášení</string>
|
||||
<string name="error_invalid_login">Nesprávné jméno nebo heslo</string>
|
||||
<string name="error_invalid_password">Toto heslo je příliš krátké</string>
|
||||
<string name="error_field_required">Toto pole je vyžadováno</string>
|
||||
<string name="prompt_serverURI">Adresa serveru</string>
|
||||
<string name="error_invalid_server_address">Neplatná adresa serveru</string>
|
||||
<string name="error_connection_failed">Připojení selhalo, ujistěte se, že máte správný server</string>
|
||||
<string name="error_http_connection_failed">Nelze provést připojení přes HTTP. Ujistěte se, že je webový server dostupný</string>
|
||||
|
||||
<!-- Main activity -->
|
||||
<string name="ma_title_rate_us">Ohodnoťit!</string>
|
||||
<string name="ma_title_add_account">Přidat účet</string>
|
||||
<string name="ma_title_welcome">Vítejte</string>
|
||||
<string name="ma_content_welcome">Vítejte v aplikaci ownCloud SMS. Tato aplikace umožnuje sychronizovat SMS do vašeho účtu na serveru ownCloud za pomoci aplikace pro SMS.</string>
|
||||
<string name="ma_title_remote_account">Vzdálený účet</string>
|
||||
<string name="choose_account">Vybrat účet</string>
|
||||
|
||||
<!-- Restauration -->
|
||||
<string name="title_activity_select_account">Vybrat účet</string>
|
||||
<string name="title_activity_select_contact">Vybrat kontakt</string>
|
||||
<string name="no_account_configured">Není nakonfigurovaný žádný účet.</string>
|
||||
|
||||
<!-- Notifications -->
|
||||
<string name="sync_title">Proces synchronizace</string>
|
||||
<string name="sync_inprogress">Probíhá synchronizace...</string>
|
||||
<string name="fatal_error">Chyba !</string>
|
||||
|
||||
<!-- Errors -->
|
||||
<string name="err_sync_get_smslist">Chyba #1: Přijata neplatná data ze serveru při přijímání předchozích zpráv</string>
|
||||
<string name="err_sync_craft_http_request">Chyba #2: Chyba při vytváření HTTP požadavku</string>
|
||||
<string name="err_sync_push_request">Chyba #3: Požadavek Push selhal</string>
|
||||
<string name="err_sync_push_request_resp">Chyba #4: Přijata neplatná data ze serveru při jejich odesílání</string>
|
||||
<string name="err_sync_create_json_null_smslist">Chyba #5: NULL SMS List</string>
|
||||
<string name="err_sync_create_json_put_smslist">Chyba #6: Chyba při vytváření Push požadavku</string>
|
||||
<string name="err_sync_create_json_request_encoding">Chyba #7: Nepodporované kódování při vytváření požadavku</string>
|
||||
<string name="err_sync_auth_failed">Chyba #8: Ověření selhalo</string>
|
||||
<string name="err_sync_http_request_returncode_unhandled">Chyba #9: Server nastavil neznámý HTTP kód odpovědi</string>
|
||||
<string name="err_sync_http_request_connect">Chyba #11: Nelze se připojit k Nextcloud serveru</string>
|
||||
<string name="err_sync_http_request_httpexception">Chyba #12: Nelze se připojit k Nextcloud serveru</string>
|
||||
<string name="err_sync_http_request_ioexception">Chyba #13: Nelze se připojit k Nextcloud serveru</string>
|
||||
<string name="err_sync_http_request_resp">Chyba #14: Nelze zpracovat odpověď serveru</string>
|
||||
<string name="err_sync_http_request_parse_resp">Chyba #15: Nelze zpracovat odpověď serveru</string>
|
||||
<string name="err_sync_no_connection_available">Chyba #16: Není dostupné datové připojení</string>
|
||||
<string name="err_sync_account_unparsable">Chyba #17: účet poškozený Znovu nakonfigurovat</string>
|
||||
<string name="err_sync_ocsms_not_installed_or_oc_upgrade_required">Chyba #18: Nextcloud SMS aplikace není nainstalována nebo ownCloud čeká na aktualizaci</string>
|
||||
<string name="err_fetch_phonelist">Přijat neplatný seznam telefoních čísel ze serveru.</string>
|
||||
<string name="err_proto_v2">Server nepodporuje tuto funkci. Zajistěte verzi na serveru alespoň 1.6.</string>
|
||||
<string name="contactinfos_title">Informace kontaktu</string>
|
||||
<string name="subtitle_contact_phones">- Telefony kontaktu</string>
|
||||
<string name="pref_title_bulk_messages">Maximální počet zpráv pro odeslání na synchronizaci</string>
|
||||
<string name="contactinfos_list">Adresář</string>
|
||||
<string name="function_not_available">Tato funkce ještě není dostupná.</string>
|
||||
|
||||
<string name="ui_notification_title_template">Nextcloud SMS: %1$s</string>
|
||||
<string name="communicate">Communicate</string>
|
||||
<string name="title_activity_main2">Main2Activity</string>
|
||||
|
||||
<string name="navigation_drawer_open">Otevřít navigační panel</string>
|
||||
<string name="navigation_drawer_close">Zavřít navigační panel</string>
|
||||
<string name="ma_title_my_accounts">Moje účty</string>
|
||||
<string name="ma_content_swipeaction">Tahem zleva doprava otevřít menu akcí.</string>
|
||||
<string name="cancel">Zrušit</string>
|
||||
<string name="understood">Rozumím</string>
|
||||
<string name="notif_permission_required">Vyžadovaná oprávnění</string>
|
||||
<string name="notif_permission_required_content">Některá oprávnění nutná pro provedení synchronizace chybí. Napravte toto v nastavení aplikace</string>
|
||||
<string name="please_fix_it">Napravte to prosím.</string>
|
||||
<string name="err_cannot_read_contacts">Nelze přistupovat ke kontaktům.</string>
|
||||
<string name="err_cannot_read_sms">Nelze přistupovat ke zprávám SMS.</string>
|
||||
<string name="action_appinfo_perms">Informace a oprávnění aplikace</string>
|
||||
</resources>
|
@ -28,15 +28,12 @@
|
||||
<resources
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
tools:ignore="MissingTranslation">
|
||||
<!-- Translation version, reference for translators -->
|
||||
<string name="gp_translation_version">3</string>
|
||||
|
||||
<!-- Translations must begin here -->
|
||||
<!-- Translations must begin here -->
|
||||
<string name="gp_short_description">Nextcloud SMS synkroniserer dine lokale SMS med din Nextcloud server</string>
|
||||
<string name="gp_description">
|
||||
Nextcloud SMS app synkroniserer dine SMS beskeder med en Nextcloud server og lader dig læse dem der.
|
||||
Nextcloud SMS app synkroniserer dine SMS beskeder med en Nextcloud server og lader dig læse dem der.
|
||||
|
||||
Sende SMS ffra Nextcloud serveren er en af de funktioner der vil komme i en senere udgivelse.
|
||||
Afsendelse af SMS fra Nextcloud serveren kommer i en senere udgivelse.
|
||||
|
||||
App\'en er fuldt kompatibel med Android 4.0 til 6.0
|
||||
</string>
|
||||
|
@ -1,5 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
/*
|
||||
* Copyright (c) 2014-2015, Loic Blot <loic.blot@unix-experience.fr>
|
||||
* All rights reserved.
|
||||
@ -25,9 +24,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
-->
|
||||
<resources
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
tools:ignore="MissingTranslation">
|
||||
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
|
||||
|
||||
<!-- Translation version, reference for translators -->
|
||||
<string name="translation_version">7</string>
|
||||
@ -36,8 +33,6 @@
|
||||
<string name="app_name">Nextcloud SMS</string>
|
||||
<string name="login_logo">Login logo</string>
|
||||
|
||||
<string name="pref_lastmsgdate">sidste_meddelelsesdato</string>
|
||||
|
||||
<!-- Translations must begin there -->
|
||||
<!-- Preferences -->
|
||||
<string name="pref_title_sync">SMS - Hurtig</string>
|
||||
@ -93,7 +88,7 @@
|
||||
<!-- Login -->
|
||||
<string name="prompt_login">Brugernavn</string>
|
||||
<string name="prompt_password">Adgangskode</string>
|
||||
<string name="action_sign_in">Log ind eller registér</string>
|
||||
<string name="action_sign_in">Log ind eller register</string>
|
||||
<string name="action_sign_in_short">Log ind</string>
|
||||
<string name="error_invalid_login">Brugernavn eller adgangskode er ikke korrekt</string>
|
||||
<string name="error_invalid_password">Adgangskoden er forkort</string>
|
||||
@ -118,8 +113,10 @@
|
||||
|
||||
<!-- Notifications -->
|
||||
<string name="sync_title">Ajourføringsproces</string>
|
||||
<string name="sync_inprogress">Ajourføring i gang...</string>
|
||||
<string name="sync_inprogress">Synkronisering i gang …</string>
|
||||
<string name="fatal_error">Fatal fejl!</string>
|
||||
<string name="notification_channel_name_default">Standard</string>
|
||||
<string name="notification_channel_name_sync">Synkroniser</string>
|
||||
|
||||
<!-- Errors -->
|
||||
<string name="err_sync_get_smslist">Error #1: Forkerte data modtaget fra serveren ved modtagelsen af sidste beskeder</string>
|
||||
@ -148,14 +145,14 @@
|
||||
<string name="function_not_available">Denne funktion er endnu ikke tilgængelig.</string>
|
||||
|
||||
<string name="ui_notification_title_template">Nextcloud SMS: %1$s</string>
|
||||
<string name="communicate">Kommunikér</string>
|
||||
<string name="communicate">Kommuniker</string>
|
||||
<string name="title_activity_main2">Main2Aktivitet</string>
|
||||
|
||||
<string name="navigation_drawer_open">Åben navigationsskuffe</string>
|
||||
<string name="navigation_drawer_open">Åbn navigationsskuffe</string>
|
||||
<string name="navigation_drawer_close">Luk navigationsskuffe</string>
|
||||
<string name="ma_title_my_accounts">Mine konti</string>
|
||||
<string name="ma_content_swipeaction">Stryg fra venstre mod højre for adgang til handlingsmenu.</string>
|
||||
<string name="cancel">Annullér</string>
|
||||
<string name="cancel">Annuller</string>
|
||||
<string name="understood">Forstået</string>
|
||||
<string name="notif_permission_required">Rettigheder påkrævet</string>
|
||||
<string name="notif_permission_required_content">Der mangler nogle rettigheder for at kunne gennemføre en synkronisering. Ret fejlen i app indstillingerne</string>
|
||||
@ -183,4 +180,29 @@
|
||||
<string name="no_confirm">Nej</string>
|
||||
<string name="pref_show_sync_notifications">Vis notifikationer</string>
|
||||
<string name="sync_complete">Synkronisering fuldført </string>
|
||||
</resources>
|
||||
<string name="err_sync_http_write_failed">Fejl #19: Kunne ikke skrive HTTP Stream når data blev sendt til server.</string>
|
||||
<string name="err_sync_http_request_protocol_exception">Fejl # 20: Kunne ikke indstille HTTP-protokolversionen korrekt.</string>
|
||||
<string name="action_appinfo_privacy_policy">Fortrolighedspolitik</string>
|
||||
<string name="privacy_policy_large_text">
|
||||
\"Overblik\n\n\"
|
||||
|
||||
\"Nextcloud SMS er gratis software udviklet af dets bidragere. Denne privatlivs politik \"
|
||||
\"er ment til at informere dig om data indsamlet af denne applikation.\"
|
||||
|
||||
\"Information vi samler\n\n\"
|
||||
|
||||
\"Kun SMS- og opkaldslog bliver indsamlet af applikationen.\n\n\"
|
||||
|
||||
\"Hvor bliver information sendt.\n\n\"
|
||||
|
||||
\"Informationen hverken sendt til Nextcloud holdets server eller Nextcloud SMS holdets servere eller \"
|
||||
\" nogle stater eller andet instans du ikke vil have.\n\n\"
|
||||
|
||||
\"Når du konfigurerer en Nextcloud konto i applikationen, erklærer du dig enig i at din SMS- og opkaldslog data vil blive opbevaret på ejerens infrastruktur \"
|
||||
\" under ejers ansvar.\n\n\"
|
||||
|
||||
\"Vi foreslår ikke at bruge en offentlig eller firma-ejet Nextcloud konto. Dit privatliv \"
|
||||
\"skal være under din kontrol på din egen Nextcloud instans.\n\n\"
|
||||
|
||||
</string>
|
||||
</resources>
|
||||
|
@ -1,187 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
/*
|
||||
* Copyright (c) 2014-2015, Loic Blot <loic.blot@unix-experience.fr>
|
||||
* All rights reserved.
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
-->
|
||||
<resources
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
tools:ignore="MissingTranslation">
|
||||
|
||||
<!-- Translation version, reference for translators -->
|
||||
<string name="translation_version">7</string>
|
||||
|
||||
<!-- System strings, do not translate -->
|
||||
<string name="app_name">Nextcloud SMS</string>
|
||||
<string name="login_logo">Anmelde-Logo</string>
|
||||
|
||||
<string name="pref_lastmsgdate">last_message_date</string>
|
||||
|
||||
<!-- Translations must begin there -->
|
||||
<!-- Preferences -->
|
||||
<string name="pref_title_sync">SMS - Schnell</string>
|
||||
<string name="pref_title_sync_frequency">Schnelle Sync-Frequenz</string>
|
||||
<string name="pref_title_slow_sync">SMS - Langsam und sicher</string>
|
||||
<string name="pref_title_slow_sync_frequency">Langsame Sync-Frequenz</string>
|
||||
<string name="action_settings">Einstellungen</string>
|
||||
<string name="sync_now">Jetzt synchronisieren</string>
|
||||
<string name="pref_category_sync">Synchronisierung</string>
|
||||
<string name="title_global_pref_to_general_prefs">Allg. Einstellungen</string>
|
||||
<string name="summary_global_pref_to_general_prefs">Sync-Einstellungen</string>
|
||||
<string name="summary_notif_prefs">Benachrichtigungen</string>
|
||||
<string name="pref_header_data_sync">Daten & Sync</string>
|
||||
<string name="title_activity_general_settings">Allg. Einstellungen</string>
|
||||
|
||||
<string-array name="pref_sync_frequency_titles">
|
||||
<item>5 Minuten</item>
|
||||
<item>15 Minuten</item>
|
||||
<item>30 Minuten</item>
|
||||
<item>1 Stunde</item>
|
||||
<item>3 Stunden</item>
|
||||
<item>6 Stunden</item>
|
||||
<item>12 Stunden</item>
|
||||
<item>24 Stunden</item>
|
||||
<item>Nie</item>
|
||||
</string-array>
|
||||
<string-array name="pref_sync_bulk_max_messages_titles">
|
||||
<item>100 SMS</item>
|
||||
<item>1000 SMS</item>
|
||||
<item>2000 SMS</item>
|
||||
<item>5000 SMS</item>
|
||||
<item>10000 SMS</item>
|
||||
<item>25000 SMS</item>
|
||||
<item>Noch nicht alle SMS synchronisiert</item>
|
||||
</string-array>
|
||||
<string-array name="pref_slow_sync_frequency_titles">
|
||||
<item>1 Stunde</item>
|
||||
<item>3 Stunden</item>
|
||||
<item>6 Stunden</item>
|
||||
<item>12 Stunden</item>
|
||||
<item>24 Stunden</item>
|
||||
<item>Nie</item>
|
||||
</string-array>
|
||||
<string name="pref_push_on_receive">SMS beim Empfang weiterleiten</string>
|
||||
<string name="pref_sync_wifi">Synchronisiere über WLAN</string>
|
||||
<string name="pref_sync_4g">Synchronisiere über LTE</string>
|
||||
<string name="pref_sync_3g">Synchronisiere über UMTS</string>
|
||||
<string name="pref_sync_gprs">Synchronisiere über GPRS</string>
|
||||
<string name="pref_sync_2g">Synchronisiere über GSM</string>
|
||||
<string name="pref_sync_others">Synchronisiere über anderen Modus</string>
|
||||
<string name="title_activity_login">Anmelden</string>
|
||||
|
||||
<!-- Login -->
|
||||
<string name="prompt_login">Anmelden</string>
|
||||
<string name="prompt_password">Passwort</string>
|
||||
<string name="action_sign_in">Anmelden oder Registrieren</string>
|
||||
<string name="action_sign_in_short">Anmelden</string>
|
||||
<string name="error_invalid_login">Benutzername oder Passwort falsch</string>
|
||||
<string name="error_invalid_password">Dieses Passwort ist zu kurz</string>
|
||||
<string name="error_field_required">Pflichtfeld</string>
|
||||
<string name="prompt_serverURI">Serveradresse</string>
|
||||
<string name="error_invalid_server_address">Ungültige Serveradresse</string>
|
||||
<string name="error_connection_failed">Verbindung fehlgeschlagen, ist dies der richtige Server?</string>
|
||||
<string name="error_http_connection_failed">Kann keine HTTP-Verbindung aufbauen. Läuft der Webserver unter dieser Adresse?</string>
|
||||
|
||||
<!-- Main activity -->
|
||||
<string name="ma_title_rate_us">Bewerte uns!</string>
|
||||
<string name="ma_title_add_account">Account hinzufügen</string>
|
||||
<string name="ma_title_welcome">Willkommen</string>
|
||||
<string name="ma_content_welcome">Willkommen bei Nextcloud SMS. Diese Anwendung ermöglicht dir die Synchronisation deiner SMS mit deiner Nextcloud-Instanz.</string>
|
||||
<string name="ma_title_remote_account">Entfernter Account</string>
|
||||
<string name="choose_account">Account auswählen</string>
|
||||
|
||||
<!-- Restauration -->
|
||||
<string name="title_activity_select_account">Account auswählen</string>
|
||||
<string name="title_activity_select_contact">Kontakt auswählen</string>
|
||||
<string name="no_account_configured">Kein Account konfiguriert.</string>
|
||||
|
||||
<!-- Notifications -->
|
||||
<string name="sync_title">Synchronisation</string>
|
||||
<string name="sync_inprogress">Sychronisation läuft …</string>
|
||||
<string name="fatal_error">Kritischer Fehler!</string>
|
||||
|
||||
<!-- Errors -->
|
||||
<string name="err_sync_get_smslist">Fehler #1: Bei vorherigen Nachrichten ungültige Serverdaten empfangen</string>
|
||||
<string name="err_sync_craft_http_request">Fehler #2: Fehler bei der Erstellung des HTTP-Requests</string>
|
||||
<string name="err_sync_push_request">Fehler #3: Push-Request fehlgeschlagen</string>
|
||||
<string name="err_sync_push_request_resp">Fehler #4: Beim Pushen von Daten ungültige Serverdaten empfangen</string>
|
||||
<string name="err_sync_create_json_null_smslist">Fehler #5: SMS-Liste gab NULL zurück</string>
|
||||
<string name="err_sync_create_json_put_smslist">Fehler #6: Fehler bei der Erstellung des Push-Requests</string>
|
||||
<string name="err_sync_create_json_request_encoding">Fehler #7: Ungültige Zeichenkodierung bei der Erstellung des Requests</string>
|
||||
<string name="err_sync_auth_failed">Fehler #8: Anmeldung fehlgeschlagen</string>
|
||||
<string name="err_sync_http_request_returncode_unhandled">Fehler #9: Unbekannter HTTP-Antwortcode vom Server</string>
|
||||
<string name="err_sync_http_request_connect">Fehler #11: Konnte nicht mit der Nextcloud-Instanz verbinden (HTTP-Request)</string>
|
||||
<string name="err_sync_http_request_httpexception">Fehler #12: Konnte nicht mit der Nextcloud-Instanz verbinden (HTTP-Ausnahme)</string>
|
||||
<string name="err_sync_http_request_ioexception">Fehler #13: Konnte nicht mit der Nextcloud-Instanz verbinden (IO-Fehler)</string>
|
||||
<string name="err_sync_http_request_resp">Fehler #14: Konnte Server-Antwort nicht parsen</string>
|
||||
<string name="err_sync_http_request_parse_resp">Fehler #15: Konnte Server-Antwort nicht parsen</string>
|
||||
<string name="err_sync_no_connection_available">Fehler #16: Keine Datenverbindung verfügbar</string>
|
||||
<string name="err_sync_account_unparsable">Fehler #17: Fehlerhaftes Konto. Bitte Konfiguration prüfen.</string>
|
||||
<string name="err_sync_ocsms_not_installed_or_oc_upgrade_required">Fehler #18: Nextcloud SMS App ist niht installiert oder Nextcloud führt gerade ein Uprade durch</string>
|
||||
<string name="err_fetch_phonelist">Nicht valide Telefonliste vom Server empfangen.</string>
|
||||
<string name="err_proto_v2">Der Server unterstützt diese Funktion nicht. Stellen Sie sicher, dass die Serverversion mindestens 1.6 ist.</string>
|
||||
<string name="contactinfos_title">Kontaktinformationen</string>
|
||||
<string name="subtitle_contact_phones">- Handys kontaktieren</string>
|
||||
<string name="pref_title_bulk_messages">Maximale Anzahl von Nachrichten, die pro Synchronisieren gesendet werden</string>
|
||||
<string name="contactinfos_list">Kontaktliste</string>
|
||||
<string name="function_not_available">Diese Funktion ist noch nicht verfügbar.</string>
|
||||
|
||||
<string name="ui_notification_title_template">Nextcloud SMS: %1$s</string>
|
||||
<string name="communicate">Kommunizieren</string>
|
||||
<string name="title_activity_main2">Main2Activity</string>
|
||||
|
||||
<string name="navigation_drawer_open">Navigationsleiste öffnen</string>
|
||||
<string name="navigation_drawer_close">Navigationsleiste schließen</string>
|
||||
<string name="ma_title_my_accounts">Meine Accounts</string>
|
||||
<string name="ma_content_swipeaction">Wisch von links nach rechts um auf das Action-Menü zuzugreifen</string>
|
||||
<string name="cancel">Abbrechen</string>
|
||||
<string name="understood">Verstanden</string>
|
||||
<string name="notif_permission_required">Berechtigungen benötigt</string>
|
||||
<string name="notif_permission_required_content">Einige Berechtigungen fehlen zur Durchführung des Synchronisationsprozesses. Bitte in den App-Einstellungen korrigieren.</string>
|
||||
<string name="please_fix_it">Bitte behebe es.</string>
|
||||
<string name="err_cannot_read_contacts">Wir können deine Kontakte nicht lesen.</string>
|
||||
<string name="err_cannot_read_sms">Wir können deine SMS nicht lesen.</string>
|
||||
<string name="action_appinfo_perms">App Infos und Berechtigungen</string>
|
||||
<string name="restore_all_messages">Alle Nachrichten wiederherstellen</string>
|
||||
<string name="account_actions">Account-Aktionen</string>
|
||||
<string name="error_connection_failed_not_found">Verbindung fehlgeschlagen, der Server hat 404 NICHT GEFUNDEN geantworet. Stellen Sie sicher, dass der Pfad zur Nextcloud-Instanz korrekt gesetzt ist.</string>
|
||||
<string name="nothing_to_sync">Es gibt nichts zu synchronisieren.</string>
|
||||
<string name="feature_not_already_implemented">Diese Funktion ist noch nicht implementiert aber wird in Kürze verfügbar sein.</string>
|
||||
<string name="pref_title_minimum_sync_chars">Minimale Telefonnummernlänge</string>
|
||||
<string name="err_didnt_find_account_restore">Wir haben deinen Account nicht gefunden, um deine Nachricht wiederherstellen. Dieses ist eine sehr seltsame Situation.</string>
|
||||
<string name="launch_restore">Meine SMS wiederherstellen</string>
|
||||
<string name="error_make_default_sms_app">Bitte diese Anwendung als Standard-SMS-Anwendung definieren. Hierdurch können deine SMS-Nachrichten wiederhergestellt werden. Diese Einschränkung wurde mit Android 4.4 eingeführt.</string>
|
||||
<string name="fix_permissions">Berechtigungen korrigieren</string>
|
||||
<string name="err_kitkat_required">Android 4.4 oder höher ist erforderlich, um diese Funktion zu verwenden.</string>
|
||||
<string name="restore_finished">SMS-Wiederherstellung ist nun abgeschlossen.</string>
|
||||
<string name="x_messages_restored">Nachrichten wiederhergestellt…</string>
|
||||
<string name="err_no_connection">Keine Verbindung verfügbar, bitte stellen Sie sicher, dass Sie eine stabile Datenverbindung haben.</string>
|
||||
<string name="reinit_sync_cursor">Synchronisationscursor reinitialisieren</string>
|
||||
<string name="reinit_sync_cursor_confirm">Sind Sie sich sicher, dass Sie den Synchronisationscursor reinitialisieren möchten? Dies kann die nächste Synchronisation verlangsammen, wenn mehrere, mit dem Server, nicht synchronisierte Nachrichten gefunden werden.</string>
|
||||
<string name="yes_confirm">Ja</string>
|
||||
<string name="no_confirm">Nein</string>
|
||||
<string name="pref_show_sync_notifications">Synchronisations-Benachrichtigungen anzeigen</string>
|
||||
<string name="sync_complete">Synchronisierung abgeschlossen</string>
|
||||
<string name="err_sync_http_write_failed">Fehler #19: Fehler beim Schreiben des HTTP-Streams während der Datenübertragung zum Server.</string>
|
||||
</resources>
|
@ -28,16 +28,12 @@
|
||||
<resources
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
tools:ignore="MissingTranslation">
|
||||
<!-- Translation version, reference for translators -->
|
||||
<string name="gp_translation_version">3</string>
|
||||
|
||||
<!-- Translations must begin here -->
|
||||
<string name="gp_short_description">Mit Nextcloud SMS kannst Du Deine SMS mit Deiner Nextcloud synchronisieren</string>
|
||||
<!-- Translations must begin here -->
|
||||
<string name="gp_short_description">Mit Nextcloud SMS können Sie Ihre SMS mit Ihrer Nextcloud synchronisieren</string>
|
||||
<string name="gp_description">
|
||||
Die Nextloud SMS App synchronisiert Deine SMS-Nachrichten mit einer Nextloud-Instanz und erlaubt Dir die SMS dort zu lesen.
|
||||
Die Nextcloud SMS-App synchronisiert Ihre SMS-Nachrichten mit Ihrer Nextcloud und ermöglicht es ihnen so, die SMS dort zu lesen.
|
||||
|
||||
In kommenden Versionen soll auch den SMS-Versand von der Nextcloud-Instanz aus möglich sein.
|
||||
Auf diese Weise wirst Du von überall in der Welt SMS versenden können, solange Dein Android-Smartphone GSM- und Datenempfang hat.
|
||||
In kommenden Versionen soll auch der SMS-Versand aus Nextcloud heraus ermöglicht werden.
|
||||
|
||||
Die App ist vollständig kompatibel mit Android 4.0 bis 6.0
|
||||
</string>
|
||||
|
@ -1,5 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
/*
|
||||
* Copyright (c) 2014-2015, Loic Blot <loic.blot@unix-experience.fr>
|
||||
* All rights reserved.
|
||||
@ -25,9 +24,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
-->
|
||||
<resources
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
tools:ignore="MissingTranslation">
|
||||
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
|
||||
|
||||
<!-- Translation version, reference for translators -->
|
||||
<string name="translation_version">7</string>
|
||||
@ -36,8 +33,6 @@
|
||||
<string name="app_name">Nextcloud SMS</string>
|
||||
<string name="login_logo">Anmelde-Logo</string>
|
||||
|
||||
<string name="pref_lastmsgdate">last_message_date</string>
|
||||
|
||||
<!-- Translations must begin there -->
|
||||
<!-- Preferences -->
|
||||
<string name="pref_title_sync">SMS - Schnell</string>
|
||||
@ -47,11 +42,11 @@
|
||||
<string name="action_settings">Einstellungen</string>
|
||||
<string name="sync_now">Jetzt synchronisieren</string>
|
||||
<string name="pref_category_sync">Synchronisierung</string>
|
||||
<string name="title_global_pref_to_general_prefs">Allg. Einstellungen</string>
|
||||
<string name="title_global_pref_to_general_prefs">Allgemeine Einstellungen</string>
|
||||
<string name="summary_global_pref_to_general_prefs">Sync-Einstellungen</string>
|
||||
<string name="summary_notif_prefs">Benachrichtigungen</string>
|
||||
<string name="pref_header_data_sync">Daten & Sync</string>
|
||||
<string name="title_activity_general_settings">Allg. Einstellungen</string>
|
||||
<string name="title_activity_general_settings">Allgemeine Einstellungen</string>
|
||||
|
||||
<string-array name="pref_sync_frequency_titles">
|
||||
<item>5 Minuten</item>
|
||||
@ -71,7 +66,7 @@
|
||||
<item>5000 SMS</item>
|
||||
<item>10000 SMS</item>
|
||||
<item>25000 SMS</item>
|
||||
<item>Alle SMS wurde noch nicht synchronisiert</item>
|
||||
<item>Noch nicht alle SMS synchronisiert</item>
|
||||
</string-array>
|
||||
<string-array name="pref_slow_sync_frequency_titles">
|
||||
<item>1 Stunde</item>
|
||||
@ -93,7 +88,7 @@
|
||||
<!-- Login -->
|
||||
<string name="prompt_login">Anmelden</string>
|
||||
<string name="prompt_password">Passwort</string>
|
||||
<string name="action_sign_in">Anmelden oder registrieren</string>
|
||||
<string name="action_sign_in">Anmelden oder Registrieren</string>
|
||||
<string name="action_sign_in_short">Anmelden</string>
|
||||
<string name="error_invalid_login">Benutzername oder Passwort falsch</string>
|
||||
<string name="error_invalid_password">Dieses Passwort ist zu kurz</string>
|
||||
@ -105,21 +100,23 @@
|
||||
|
||||
<!-- Main activity -->
|
||||
<string name="ma_title_rate_us">Bewerte uns!</string>
|
||||
<string name="ma_title_add_account">Account hinzufügen</string>
|
||||
<string name="ma_title_add_account">Konto hinzufügen</string>
|
||||
<string name="ma_title_welcome">Willkommen</string>
|
||||
<string name="ma_content_welcome">Willkommen bei Nextcloud SMS. Diese Anwendung ermöglicht dir die Synchronisation deiner SMS mit deiner Nextcloud-Instanz.</string>
|
||||
<string name="ma_title_remote_account">Entfernter Account</string>
|
||||
<string name="choose_account">Account auswählen</string>
|
||||
<string name="ma_content_welcome">Willkommen bei Nextcloud SMS. Diese Anwendung ermöglicht Dir die Synchronisierung Deiner SMS mit Deiner Nextcloud-Instanz.</string>
|
||||
<string name="ma_title_remote_account">Entferntes Konto</string>
|
||||
<string name="choose_account">Konto auswählen</string>
|
||||
|
||||
<!-- Restauration -->
|
||||
<string name="title_activity_select_account">Account auswählen</string>
|
||||
<string name="title_activity_select_account">Konto auswählen</string>
|
||||
<string name="title_activity_select_contact">Kontakt auswählen</string>
|
||||
<string name="no_account_configured">Kein Account konfiguriert.</string>
|
||||
<string name="no_account_configured">Kein Konto eingerichtet.</string>
|
||||
|
||||
<!-- Notifications -->
|
||||
<string name="sync_title">Synchronisation</string>
|
||||
<string name="sync_inprogress">Sychronisation läuft…</string>
|
||||
<string name="sync_title">Synchronisierungsprozess</string>
|
||||
<string name="sync_inprogress">Sychronisation läuft …</string>
|
||||
<string name="fatal_error">Kritischer Fehler!</string>
|
||||
<string name="notification_channel_name_default">Standard</string>
|
||||
<string name="notification_channel_name_sync">Synchronisieren</string>
|
||||
|
||||
<!-- Errors -->
|
||||
<string name="err_sync_get_smslist">Fehler #1: Bei vorherigen Nachrichten ungültige Serverdaten empfangen</string>
|
||||
@ -131,21 +128,21 @@
|
||||
<string name="err_sync_create_json_request_encoding">Fehler #7: Ungültige Zeichenkodierung bei der Erstellung des Requests</string>
|
||||
<string name="err_sync_auth_failed">Fehler #8: Anmeldung fehlgeschlagen</string>
|
||||
<string name="err_sync_http_request_returncode_unhandled">Fehler #9: Unbekannter HTTP-Antwortcode vom Server</string>
|
||||
<string name="err_sync_http_request_connect">Fehler #11: Konnte nicht mit der Nextcloud-Instanz verbinden (HTTP-Request)</string>
|
||||
<string name="err_sync_http_request_connect">Fehler #11: Konnte nicht mit der Nextcloud-Instanz verbinden</string>
|
||||
<string name="err_sync_http_request_httpexception">Fehler #12: Konnte nicht mit der Nextcloud-Instanz verbinden (HTTP-Ausnahme)</string>
|
||||
<string name="err_sync_http_request_ioexception">Fehler #13: Konnte nicht mit der Nextcloud-Instanz verbinden (IO-Fehler)</string>
|
||||
<string name="err_sync_http_request_resp">Fehler #14: Konnte Server-Antwort nicht parsen</string>
|
||||
<string name="err_sync_http_request_parse_resp">Fehler #15: Konnte Server-Antwort nicht parsen</string>
|
||||
<string name="err_sync_http_request_resp">Fehler #14: Konnte Serverantwort nicht parsen</string>
|
||||
<string name="err_sync_http_request_parse_resp">Fehler #15: Konnte Serverantwort nicht parsen</string>
|
||||
<string name="err_sync_no_connection_available">Fehler #16: Keine Datenverbindung verfügbar</string>
|
||||
<string name="err_sync_account_unparsable">Fehler #17: Fehlerhaftes Konto. Bitte Konfiguration prüfen.</string>
|
||||
<string name="err_sync_ocsms_not_installed_or_oc_upgrade_required">Fehler #18: Nextcloud SMS App ist niht installiert oder Nextcloud führt gerade ein Uprade durch</string>
|
||||
<string name="err_fetch_phonelist">Nicht valide Telefonliste vom Server empfangen.</string>
|
||||
<string name="err_proto_v2">Der Server unterstützt diese Funktion nicht. Stelle sicher, dass die Serverversion mindestens 1.6 ist.</string>
|
||||
<string name="err_proto_v2">Der Server unterstützt diese Funktion nicht. Stellen Sie sicher, dass die Serverversion mindestens 1.6 ist.</string>
|
||||
<string name="contactinfos_title">Kontaktinformationen</string>
|
||||
<string name="subtitle_contact_phones">- Handys kontaktieren</string>
|
||||
<string name="subtitle_contact_phones">- Kontaktrufnummern</string>
|
||||
<string name="pref_title_bulk_messages">Maximale Anzahl von Nachrichten, die pro Synchronisieren gesendet werden</string>
|
||||
<string name="contactinfos_list">Kontaktliste</string>
|
||||
<string name="function_not_available">Diese Funktion ist noch nicht verfügbar.</string>
|
||||
<string name="function_not_available">Diese Funktion ist nicht verfügbar.</string>
|
||||
|
||||
<string name="ui_notification_title_template">Nextcloud SMS: %1$s</string>
|
||||
<string name="communicate">Kommunizieren</string>
|
||||
@ -153,35 +150,60 @@
|
||||
|
||||
<string name="navigation_drawer_open">Navigationsleiste öffnen</string>
|
||||
<string name="navigation_drawer_close">Navigationsleiste schließen</string>
|
||||
<string name="ma_title_my_accounts">Meine Accounts</string>
|
||||
<string name="ma_content_swipeaction">Wisch von links nach rechts um auf das Action-Menü zuzugreifen</string>
|
||||
<string name="ma_title_my_accounts">Meine Konten</string>
|
||||
<string name="ma_content_swipeaction">Wische von links nach rechts, um auf das Action-Menü zuzugreifen</string>
|
||||
<string name="cancel">Abbrechen</string>
|
||||
<string name="understood">Verstanden</string>
|
||||
<string name="notif_permission_required">Berechtigungen benötigt</string>
|
||||
<string name="notif_permission_required_content">Einige Berechtigungen fehlen zur Durchführung des Synchronisationsprozesses. Bitte in den App-Einstellungen korrigieren.</string>
|
||||
<string name="please_fix_it">Bitte behebe es.</string>
|
||||
<string name="err_cannot_read_contacts">Wir können deine Kontakte nicht lesen.</string>
|
||||
<string name="err_cannot_read_sms">Wir können deine SMS nicht lesen.</string>
|
||||
<string name="notif_permission_required_content">Einige Berechtigungen fehlen zur Durchführung des Synchronisierungsprozesses. Bitte in den App-Einstellungen korrigieren.</string>
|
||||
<string name="please_fix_it">Bitte beheben.</string>
|
||||
<string name="err_cannot_read_contacts">Ihre Kontakte können nicht gelesen werden.</string>
|
||||
<string name="err_cannot_read_sms">Ihre SMS können nicht gelesen werden.</string>
|
||||
<string name="action_appinfo_perms">App Infos und Berechtigungen</string>
|
||||
<string name="restore_all_messages">Alle Nachrichten wiederherstellen</string>
|
||||
<string name="account_actions">Account-Aktionen</string>
|
||||
<string name="error_connection_failed_not_found">Verbindung fehlgeschlagen, der Server hat 404 NICHT GEFUNDEN geantworet. Stelle sicher, dass der Pfad zur Nextcloud-Instanz korrekt gesetzt ist.</string>
|
||||
<string name="account_actions">Konto-Aktionen</string>
|
||||
<string name="error_connection_failed_not_found">Verbindung fehlgeschlagen, der Server hat 404 NICHT GEFUNDEN geantworet. Stellen Sie sicher, dass der Pfad zur Nextcloud-Instanz korrekt gesetzt ist.</string>
|
||||
<string name="nothing_to_sync">Es gibt nichts zu synchronisieren.</string>
|
||||
<string name="feature_not_already_implemented">Diese Funktion ist noch nicht implementiert aber wird in Kürze verfügbar sein.</string>
|
||||
<string name="feature_not_already_implemented">Diese Funktion ist noch nicht implementiert, wird aber in Kürze verfügbar sein.</string>
|
||||
<string name="pref_title_minimum_sync_chars">Minimale Telefonnummernlänge</string>
|
||||
<string name="err_didnt_find_account_restore">Wir haben deinen Account nicht gefunden, um deine Nachricht wiederherstellen. Dieses ist eine sehr seltsame Situation.</string>
|
||||
<string name="err_didnt_find_account_restore">Wir haben Ihr Konto nicht gefunden, um Ihre Nachricht wiederherstellen. Dies ist eine seltsame Situation.</string>
|
||||
<string name="launch_restore">Meine SMS wiederherstellen</string>
|
||||
<string name="error_make_default_sms_app">Bitte diese Anwendung als Standard-SMS-Anwendung definieren. Hierdurch können deine SMS-Nachrichten wiederhergestellt werden. Diese Einschränkung wurde mit Android 4.4 eingeführt.</string>
|
||||
<string name="error_make_default_sms_app">Bitte machen Sie diese Anwendung zur Standard-SMS-Anwendung, um die Wiederherstellung Ihrer Nachrichten zu ermöglichen. Diese Einschränkung wurde mit Android 4.4 eingeführt.</string>
|
||||
<string name="fix_permissions">Berechtigungen korrigieren</string>
|
||||
<string name="err_kitkat_required">Android 4.4 oder höher ist erforderlich, um diese Funktion zu verwenden.</string>
|
||||
<string name="restore_finished">SMS-Wiederherstellung ist nun abgeschlossen.</string>
|
||||
<string name="x_messages_restored">Nachrichten wiederhergestellt…</string>
|
||||
<string name="err_no_connection">Keine Verbindung verfügbar, bitte stelle sicher, dass du eine stabile Datenverbindung hast.</string>
|
||||
<string name="reinit_sync_cursor">Synchronisationscursor reinitialisieren</string>
|
||||
<string name="reinit_sync_cursor_confirm">Bist du dir sicher, dass du den Synchronisationscursor reinitialisieren möchtest? Dies kann die nächste Synchronisation verlangsammen, wenn mehrere, mit dem Server, nicht synchronisierte Nachrichten gefunden werden.</string>
|
||||
<string name="err_no_connection">Keine Verbindung verfügbar, bitte stellen Sie sicher, dass Sie eine stabile Datenverbindung haben.</string>
|
||||
<string name="reinit_sync_cursor">Synchronisierungszeiger reinitialisieren</string>
|
||||
<string name="reinit_sync_cursor_confirm">Sind Sie sich sicher, dass Sie den Synchronisierungzeiger reinitialisieren möchten? Dies kann die nächste Synchronisierung verlangsammen, wenn eine Vielzahl mit dem Server nicht synchrone Nachrichten gefunden werden.</string>
|
||||
<string name="yes_confirm">Ja</string>
|
||||
<string name="no_confirm">Nein</string>
|
||||
<string name="pref_show_sync_notifications">Synchronisations-Benachrichtigungen anzeigen</string>
|
||||
<string name="pref_show_sync_notifications">Synchronisierungsbenachrichtigungen anzeigen</string>
|
||||
<string name="sync_complete">Synchronisierung abgeschlossen</string>
|
||||
<string name="err_sync_http_write_failed">Fehler #19: Fehler beim Schreiben des HTTP-Streams während der Datenübertragung zum Server.</string>
|
||||
<string name="err_sync_http_request_protocol_exception">Error #20: Fehler beim Setzen der HTTP-Protokoll-Version.</string>
|
||||
<string name="action_appinfo_privacy_policy">Datenschutzerklärung</string>
|
||||
<string name="privacy_policy_large_text">
|
||||
\"Übersicht\n\n\"
|
||||
|
||||
\"Nextcloud SMS ist freie Software und wird von Freiwilligen entwickelte. Diese Datenschutzerklärung \"
|
||||
\"soll Sie über die von dieser Anwendung erfassten Daten informieren.\"
|
||||
|
||||
\"Informationen, die wir sammeln\n\n\"
|
||||
|
||||
\"Nur SMS und Anrufprotokoll werden von der Anwendung gesammelt.\n\n\"
|
||||
|
||||
\"Wohin die Informationen geschickt werden.\n\n\"
|
||||
|
||||
\"Informationen werden weder an Nextcloud-Server noch an Nextcloud SMS-Server oder \"
|
||||
\"irgendeine Regierung oder eine andere Einheit gesendet, die Sie nicht wollen.
|
||||
|
||||
\"Wenn Sie ein Nextcloud-Konto in der Anwendung einrichten, stimmen Sie mit dem Nextcloud-Instanzinhaber überein, \"
|
||||
\"dass Ihre SMS- und Anrufprotokolldaten in seiner Infrastruktur gespeichert werden, \"
|
||||
\"unter seiner Verantwortung.\n\n\"
|
||||
|
||||
\"Wir empfehlen nicht, ein öffentliches oder firmeneigenes Nextcloud-Instanzkonto zu verwenden. Ihre Privatsphäre \"
|
||||
\"muss unter Ihrer Kontrolle sein, bei Ihrer eigenen Nextcloud-Instanz.\n\n\"
|
||||
|
||||
</string>
|
||||
</resources>
|
||||
|
@ -28,16 +28,10 @@
|
||||
<resources
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
tools:ignore="MissingTranslation">
|
||||
<!-- Translation version, reference for translators -->
|
||||
<string name="gp_translation_version">3</string>
|
||||
|
||||
<!-- Translations must begin here -->
|
||||
<!-- Translations must begin here -->
|
||||
<string name="gp_short_description">Το Nextcloud SMS συγχρονίζει τα τοπικά SMS στην Nextcloud εγκατάστασή σας</string>
|
||||
<string name="gp_description">
|
||||
Η εφαρμογή Nextcloud SMS συγχρονίζει τα μηνύματα SMS σε απομακρυσμένη εγκατάσταση Nextcloud και σας επιτρέπει να διαβάσετε τα μηνύματά σας από εκεί.
|
||||
|
||||
<string name="gp_description">Η εφαρμογή Nextcloud SMS συγχρονίζει τα μηνύματα SMS σε απομακρυσμένη εγκατάσταση Nextcloud και σας επιτρέπει να διαβάσετε τα μηνύματά σας από εκεί.
|
||||
Η αποστολή SMS από την εγκατάσταση Nextcloud θα είναι διαθέσιμη σε μελλοντική έκδοση.
|
||||
|
||||
Η εφαρμογή είναι πλήρως συμβατή από έκδοση Android 4.0 έως 6.0
|
||||
</string>
|
||||
Η εφαρμογή είναι πλήρως συμβατή από την έκδοση Android 4.0 έως 6.0
|
||||
</string>
|
||||
</resources>
|
||||
|
@ -1,5 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
/*
|
||||
* Copyright (c) 2014-2015, Loic Blot <loic.blot@unix-experience.fr>
|
||||
* All rights reserved.
|
||||
@ -25,9 +24,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
-->
|
||||
<resources
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
tools:ignore="MissingTranslation">
|
||||
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
|
||||
|
||||
<!-- Translation version, reference for translators -->
|
||||
<string name="translation_version">7</string>
|
||||
@ -36,8 +33,6 @@
|
||||
<string name="app_name">Nextcloud SMS</string>
|
||||
<string name="login_logo">Λογότυπο εισόδου</string>
|
||||
|
||||
<string name="pref_lastmsgdate">τελευταία_ημερομηνία_μηνύματος</string>
|
||||
|
||||
<!-- Translations must begin there -->
|
||||
<!-- Preferences -->
|
||||
<string name="pref_title_sync">SMS - Γρήγορα</string>
|
||||
@ -118,8 +113,10 @@
|
||||
|
||||
<!-- Notifications -->
|
||||
<string name="sync_title">Διεργασία συγχρονισμού</string>
|
||||
<string name="sync_inprogress">Συγχρονισμός σε εξέλιξη</string>
|
||||
<string name="sync_inprogress">Συγχρονισμός σε εξέλιξη ...</string>
|
||||
<string name="fatal_error"> Καίριο σφάλμα</string>
|
||||
<string name="notification_channel_name_default">Προεπιλογή</string>
|
||||
<string name="notification_channel_name_sync">Συγχρονισμός</string>
|
||||
|
||||
<!-- Errors -->
|
||||
<string name="err_sync_get_smslist">Σφάλμα #1: Μη έγκυρα δεδομένα ελήφθησαν από τον εξυπηρετητή όταν λήφθηκαν παλαιότερα μηνύματα</string>
|
||||
@ -183,4 +180,28 @@
|
||||
<string name="no_confirm">Όχι</string>
|
||||
<string name="pref_show_sync_notifications">Εμφάνιση ειδοποιήσεων συγχρονισμού</string>
|
||||
<string name="sync_complete">Ο συγχρονισμός ολοκληρώθηκε</string>
|
||||
</resources>
|
||||
<string name="err_sync_http_write_failed">Σφάλμα #19: Αποτυχία εγγραφής ροής HTTP κατά την προώθηση δεδομένων στον διακομιστή.</string>
|
||||
<string name="err_sync_http_request_protocol_exception">Σφάλμα #20: Αποτυχία καθορισμού έκδοσης πρωτοκόλλου HTTP.</string>
|
||||
<string name="action_appinfo_privacy_policy">Πολιτική Απορρήτου</string>
|
||||
<string name="privacy_policy_large_text">
|
||||
\"Επισκόπηση \ n \ n\"
|
||||
|
||||
\"Το Nextcloud SMS είναι ένα δωρεάν λογισμικό που αναπτύχθηκε από τους συνεργάτες του.
|
||||
\"Σκοπός είναι να σας ενημερώσουμε για τα δεδομένα που συλλέγονται από αυτήν την εφαρμογή.\"
|
||||
|
||||
\"Πληροφορίες που συλλέγουμε \ n \ n\"
|
||||
|
||||
\"Μόνο η εφαρμογή SMS συλλέγει και καταγράφει κλήσεις. \ N \ n\"
|
||||
|
||||
\"Όπου αποστέλλονται πληροφορίες. \ N \ n\"
|
||||
|
||||
\"Οι πληροφορίες δεν αποστέλλονται στους διακομιστές ομάδας Nextcloud ούτε στους εξυπηρετητές ομάδων SMS Nextcloud ούτε\"
|
||||
\"οποιαδήποτε κυβέρνηση ή άλλη οντότητα που δεν θέλετε. \ n \ n\"
|
||||
|
||||
\"Όταν ρυθμίζετε έναν λογαριασμό Nextcloud στην εφαρμογή, συμφωνείτε με το Nextcloud\"
|
||||
\"ιδιοκτήτης στιγμιότυπου ότι τα δεδομένα του SMS και του αρχείου καταγραφής κλήσεων θα αποθηκευτούν στην υποδομή του\"
|
||||
\"υπό την ευθύνη του. \ n \ n\"
|
||||
|
||||
\"Δεν συνιστούμε να χρησιμοποιήσετε έναν δημόσιο λογαριασμό ή έναν λογαριασμό εταιρείας Nextcloud. Το απόρρητό σας\"
|
||||
\"πρέπει να βρίσκεται υπό τον έλεγχό σας στη δική σας περίπτωση Nextcloud. \ n \ n\"</string>
|
||||
</resources>
|
||||
|
@ -28,15 +28,12 @@
|
||||
<resources
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
tools:ignore="MissingTranslation">
|
||||
<!-- Translation version, reference for translators -->
|
||||
<string name="gp_translation_version">3</string>
|
||||
|
||||
<!-- Translations must begin here -->
|
||||
<!-- Translations must begin here -->
|
||||
<string name="gp_short_description">Nextcloud SMS synchronises your SMS with your Nextcloud</string>
|
||||
<string name="gp_description">
|
||||
ownCloud SMS application synchronise your SMS messages on a remote ownCloud instance and let you read your messages from it.
|
||||
Nextcloud SMS application synchronize your SMS messages on a remote Nextcloud instance and let you read your messages from it.
|
||||
|
||||
Sending SMS from ownCloud instance will coming in a future release.
|
||||
Sending SMS from Nextcloud instance will coming in a future release.
|
||||
|
||||
Application is fully compatible from Android 4.0 to 6.0
|
||||
</string>
|
||||
|
@ -1,5 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
/*
|
||||
* Copyright (c) 2014-2015, Loic Blot <loic.blot@unix-experience.fr>
|
||||
* All rights reserved.
|
||||
@ -25,9 +24,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
-->
|
||||
<resources
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
tools:ignore="MissingTranslation">
|
||||
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
|
||||
|
||||
<!-- Translation version, reference for translators -->
|
||||
<string name="translation_version">7</string>
|
||||
@ -36,8 +33,6 @@
|
||||
<string name="app_name">Nextcloud SMS</string>
|
||||
<string name="login_logo">Login logo</string>
|
||||
|
||||
<string name="pref_lastmsgdate">last_message_date</string>
|
||||
|
||||
<!-- Translations must begin there -->
|
||||
<!-- Preferences -->
|
||||
<string name="pref_title_sync">SMS - Fast</string>
|
||||
@ -118,8 +113,10 @@
|
||||
|
||||
<!-- Notifications -->
|
||||
<string name="sync_title">Sync process</string>
|
||||
<string name="sync_inprogress">Sync in progress...</string>
|
||||
<string name="sync_inprogress">Sync in progress …</string>
|
||||
<string name="fatal_error">Fatal error ! </string>
|
||||
<string name="notification_channel_name_default">Default</string>
|
||||
<string name="notification_channel_name_sync">Sync</string>
|
||||
|
||||
<!-- Errors -->
|
||||
<string name="err_sync_get_smslist">Error #1: Invalid data received from server when getting previous messages</string>
|
||||
@ -184,4 +181,29 @@
|
||||
<string name="pref_show_sync_notifications">Show sync notifications</string>
|
||||
<string name="sync_complete">Synchronisation complete</string>
|
||||
<string name="err_sync_http_write_failed">Error #19: Failed to write HTTP stream when pushing data to server.</string>
|
||||
<string name="err_sync_http_request_protocol_exception">Error #20: Failed to properly set HTTP protocol version.</string>
|
||||
<string name="action_appinfo_privacy_policy">Privacy policy</string>
|
||||
<string name="privacy_policy_large_text">
|
||||
\"Overview\n\n\"
|
||||
|
||||
\"Nextcloud SMS is a free software developed by its contributors. This privacy policy \"
|
||||
\"is intended to inform you about data gathered by this application.\"
|
||||
|
||||
\"Information we collect\n\n\"
|
||||
|
||||
\"Only SMS and call log are collected by the application.\n\n\"
|
||||
|
||||
\"Where information is sent.\n\n\"
|
||||
|
||||
\"Information is neither sent to Nextcloud team servers nor Nextcloud SMS team servers nor \"
|
||||
\"any government nor another entity you don\'t want.\n\n\"
|
||||
|
||||
\"When you configure a Nextcloud account in the application, you agree with the Nextcloud \"
|
||||
\"instance owner that your SMS and call log data will be stored in his infrastructure \"
|
||||
\"under his responsibility.\n\n\"
|
||||
|
||||
\"We don\'t recommend to use a public or a company Nextcloud instance account. Your privacy \"
|
||||
\"must be under your control on your own Nextcloud instance.\n\n\"
|
||||
|
||||
</string>
|
||||
</resources>
|
||||
|
@ -28,15 +28,6 @@
|
||||
<resources
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
tools:ignore="MissingTranslation">
|
||||
<!-- Translation version, reference for translators -->
|
||||
<string name="gp_translation_version">3</string>
|
||||
|
||||
<!-- Translations must begin here -->
|
||||
<!-- Translations must begin here -->
|
||||
<string name="gp_short_description">Nextcloud SMS sincronice su SMS local con su instancia Nextcloud</string>
|
||||
<string name="gp_description">
|
||||
Con la aplicación SMS para ownCloud sincronice sus mensajes SMS en una instancia remota de ownCloud y podrá leer sus mensajes desde ella.
|
||||
|
||||
Enviar mensajes SMS desde la instancia ownCloud es una funcionalidad que se incorporará en un futuro lanzamiento.
|
||||
|
||||
La aplicación es totalmente compatible con Android 4.0 hasta 6.0</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -1,5 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
/*
|
||||
* Copyright (c) 2014-2015, Loic Blot <loic.blot@unix-experience.fr>
|
||||
* All rights reserved.
|
||||
@ -25,9 +24,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
-->
|
||||
<resources
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
tools:ignore="MissingTranslation">
|
||||
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
|
||||
|
||||
<!-- Translation version, reference for translators -->
|
||||
<string name="translation_version">7</string>
|
||||
@ -36,12 +33,10 @@
|
||||
<string name="app_name">Nextcloud SMS</string>
|
||||
<string name="login_logo">Logotipo para inicio de sesión</string>
|
||||
|
||||
<string name="pref_lastmsgdate">fecha_de_ultimo_mensaje</string>
|
||||
|
||||
<!-- Translations must begin there -->
|
||||
<!-- Preferences -->
|
||||
<string name="pref_title_sync">SMS - Rápido</string>
|
||||
<string name="pref_title_sync_frequency">Frecuencia de Sinconrización Rápida</string>
|
||||
<string name="pref_title_sync_frequency">Frecuencia de Sincronización Rápida</string>
|
||||
<string name="pref_title_slow_sync">SMS - Lento y Seguro</string>
|
||||
<string name="pref_title_slow_sync_frequency">Frecuencia de Sincronización Lenta y Segura</string>
|
||||
<string name="action_settings">Configuraciones</string>
|
||||
@ -118,8 +113,9 @@
|
||||
|
||||
<!-- Notifications -->
|
||||
<string name="sync_title">Proceso de sincronización</string>
|
||||
<string name="sync_inprogress">Sincronización en curso...</string>
|
||||
<string name="sync_inprogress">Sincronización en progreso...</string>
|
||||
<string name="fatal_error">¡Error fatal!</string>
|
||||
<string name="notification_channel_name_sync">Sincronizar</string>
|
||||
|
||||
<!-- Errors -->
|
||||
<string name="err_sync_get_smslist">Error #1: Se recibieron datos inválidos al tratar de obtener los mensajes previos</string>
|
||||
@ -181,4 +177,33 @@
|
||||
<string name="reinit_sync_cursor_confirm">¿Está seguro de que desea reinicializar el cursor de inicialización? Esto puede alentar la siguiente sincronización si se encuentran varios mensajes antiguos que no hayan sincronizado con el servidor. </string>
|
||||
<string name="yes_confirm">Sí</string>
|
||||
<string name="no_confirm">No</string>
|
||||
</resources>
|
||||
<string name="pref_show_sync_notifications">Mostrar notificaciones de sincronización</string>
|
||||
<string name="sync_complete">Sincronización completa</string>
|
||||
<string name="err_sync_http_write_failed">Error #19: No se pudo escribir la secuencia HTTP al enviar datos al servidor.</string>
|
||||
<string name="err_sync_http_request_protocol_exception">Error #20: Error al establecer correctamente la versión del protocolo HTTP.</string>
|
||||
<string name="action_appinfo_privacy_policy">Políticas de privacidad</string>
|
||||
<string name="privacy_policy_large_text">
|
||||
Generalidades\n\n
|
||||
|
||||
\"SMS de Nextcloud es software libre desarrollado por sus contribuyentes. Esta política de privacidad\"
|
||||
\"pretende informarte acerca de los datos reunidos por esta aplicación.\"
|
||||
|
||||
\"Información que recogemos\n\n\"
|
||||
|
||||
\"Solo se recogen los registros de llamadas y mensajes.\n\n\"
|
||||
|
||||
\"Dónde se envía la información.\n\n\"
|
||||
|
||||
\"La información no se envía ni a los servidores del equipo Nextcloud ni ª
|
||||
ªa ningún gobierno u otra entidad a la que no quieras enviar.\n\n\"
|
||||
|
||||
\"Cuando configurás una cuenta de Nextcloud en la aplicación, aceptás que el propietario de la instancia\"
|
||||
|
||||
\"almacene tus registros de llmadas y SMS en su infraestructura\"
|
||||
\"bajo su responsabilidad.\n\n\"
|
||||
|
||||
\"No recomendamos usar una cuenta pública o empresarial de Nextcloud. Tu privacidad\"
|
||||
\"debe estar bajo tu control en tu propia instancia de Nextcloud.\n\n\"
|
||||
|
||||
</string>
|
||||
</resources>
|
||||
|
@ -28,15 +28,6 @@
|
||||
<resources
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
tools:ignore="MissingTranslation">
|
||||
<!-- Translation version, reference for translators -->
|
||||
<string name="gp_translation_version">3</string>
|
||||
|
||||
<!-- Translations must begin here -->
|
||||
<!-- Translations must begin here -->
|
||||
<string name="gp_short_description">SMS de Nextcloud sincroniza tu SMS local con tu instancia Nextcloud</string>
|
||||
<string name="gp_description">
|
||||
Con la aplicación SMS para ownCloud sincroniza tus mensajes SMS en una instancia remota de ownCloud y podrás leer tus mensajes desde ella.
|
||||
|
||||
Enviar mensajes SMS desde la instancia ownCloud es una funcionalidad que se incorporará en un futuro lanzamiento.
|
||||
|
||||
La aplicación es totalmente compatible con Android 4.0 hasta 6.0</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -1,5 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
/*
|
||||
* Copyright (c) 2014-2015, Loic Blot <loic.blot@unix-experience.fr>
|
||||
* All rights reserved.
|
||||
@ -25,9 +24,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
-->
|
||||
<resources
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
tools:ignore="MissingTranslation">
|
||||
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
|
||||
|
||||
<!-- Translation version, reference for translators -->
|
||||
<string name="translation_version">7</string>
|
||||
@ -36,8 +33,6 @@
|
||||
<string name="app_name">SMS de Nextcloud</string>
|
||||
<string name="login_logo">Logotipo para inicio de sesión</string>
|
||||
|
||||
<string name="pref_lastmsgdate">last_message_date</string>
|
||||
|
||||
<!-- Translations must begin there -->
|
||||
<!-- Preferences -->
|
||||
<string name="pref_title_sync">SMS - Rápido</string>
|
||||
@ -118,8 +113,8 @@
|
||||
|
||||
<!-- Notifications -->
|
||||
<string name="sync_title">Proceso de sincronización</string>
|
||||
<string name="sync_inprogress">Sincronización en curso...</string>
|
||||
<string name="fatal_error">¡Error fatal!</string>
|
||||
<string name="notification_channel_name_sync">Sincronizar</string>
|
||||
|
||||
<!-- Errors -->
|
||||
<string name="err_sync_get_smslist">Error #1: Se recibieron datos inválidos al tratar de obtener los mensajes previos</string>
|
||||
@ -183,4 +178,6 @@
|
||||
<string name="no_confirm">No</string>
|
||||
<string name="pref_show_sync_notifications">Mostrar notificaciones de sincronización</string>
|
||||
<string name="sync_complete">Sincronización completa</string>
|
||||
<string name="err_sync_http_write_failed">Error #19: Falla al escribir al flujo HTTP al enviar datos al servidor. </string>
|
||||
<string name="err_sync_http_request_protocol_exception">Error #20: Falla al establecer correctamente la versión del protocolo HTTP.</string>
|
||||
</resources>
|
||||
|
@ -28,15 +28,6 @@
|
||||
<resources
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
tools:ignore="MissingTranslation">
|
||||
<!-- Translation version, reference for translators -->
|
||||
<string name="gp_translation_version">3</string>
|
||||
|
||||
<!-- Translations must begin here -->
|
||||
<!-- Translations must begin here -->
|
||||
<string name="gp_short_description">SMS de Nextcloud sincroniza tu SMS local con tu instancia Nextcloud</string>
|
||||
<string name="gp_description">
|
||||
Con la aplicación SMS para ownCloud sincroniza tus mensajes SMS en una instancia remota de ownCloud y podrás leer tus mensajes desde ella.
|
||||
|
||||
Enviar mensajes SMS desde la instancia ownCloud es una funcionalidad que se incorporará en un futuro lanzamiento.
|
||||
|
||||
La aplicación es totalmente compatible con Android 4.0 hasta 6.0</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -1,5 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
/*
|
||||
* Copyright (c) 2014-2015, Loic Blot <loic.blot@unix-experience.fr>
|
||||
* All rights reserved.
|
||||
@ -25,9 +24,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
-->
|
||||
<resources
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
tools:ignore="MissingTranslation">
|
||||
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
|
||||
|
||||
<!-- Translation version, reference for translators -->
|
||||
<string name="translation_version">7</string>
|
||||
@ -36,8 +33,6 @@
|
||||
<string name="app_name">SMS de Nextcloud</string>
|
||||
<string name="login_logo">Logotipo para inicio de sesión</string>
|
||||
|
||||
<string name="pref_lastmsgdate">last_message_date</string>
|
||||
|
||||
<!-- Translations must begin there -->
|
||||
<!-- Preferences -->
|
||||
<string name="pref_title_sync">SMS - Rápido</string>
|
||||
@ -118,8 +113,8 @@
|
||||
|
||||
<!-- Notifications -->
|
||||
<string name="sync_title">Proceso de sincronización</string>
|
||||
<string name="sync_inprogress">Sincronización en curso...</string>
|
||||
<string name="fatal_error">¡Error fatal!</string>
|
||||
<string name="notification_channel_name_sync">Sincronizar</string>
|
||||
|
||||
<!-- Errors -->
|
||||
<string name="err_sync_get_smslist">Error #1: Se recibieron datos inválidos al tratar de obtener los mensajes previos</string>
|
||||
@ -183,4 +178,6 @@
|
||||
<string name="no_confirm">No</string>
|
||||
<string name="pref_show_sync_notifications">Mostrar notificaciones de sincronización</string>
|
||||
<string name="sync_complete">Sincronización completa</string>
|
||||
<string name="err_sync_http_write_failed">Error #19: Falla al escribir al flujo HTTP al enviar datos al servidor. </string>
|
||||
<string name="err_sync_http_request_protocol_exception">Error #20: Falla al establecer correctamente la versión del protocolo HTTP.</string>
|
||||
</resources>
|
||||
|
@ -28,15 +28,6 @@
|
||||
<resources
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
tools:ignore="MissingTranslation">
|
||||
<!-- Translation version, reference for translators -->
|
||||
<string name="gp_translation_version">3</string>
|
||||
|
||||
<!-- Translations must begin here -->
|
||||
<!-- Translations must begin here -->
|
||||
<string name="gp_short_description">SMS de Nextcloud sincroniza tu SMS local con tu instancia Nextcloud</string>
|
||||
<string name="gp_description">
|
||||
Con la aplicación SMS para ownCloud sincroniza tus mensajes SMS en una instancia remota de ownCloud y podrás leer tus mensajes desde ella.
|
||||
|
||||
Enviar mensajes SMS desde la instancia ownCloud es una funcionalidad que se incorporará en un futuro lanzamiento.
|
||||
|
||||
La aplicación es totalmente compatible con Android 4.0 hasta 6.0</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -1,5 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
/*
|
||||
* Copyright (c) 2014-2015, Loic Blot <loic.blot@unix-experience.fr>
|
||||
* All rights reserved.
|
||||
@ -25,9 +24,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
-->
|
||||
<resources
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
tools:ignore="MissingTranslation">
|
||||
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
|
||||
|
||||
<!-- Translation version, reference for translators -->
|
||||
<string name="translation_version">7</string>
|
||||
@ -36,8 +33,6 @@
|
||||
<string name="app_name">SMS de Nextcloud</string>
|
||||
<string name="login_logo">Logotipo para inicio de sesión</string>
|
||||
|
||||
<string name="pref_lastmsgdate">last_message_date</string>
|
||||
|
||||
<!-- Translations must begin there -->
|
||||
<!-- Preferences -->
|
||||
<string name="pref_title_sync">SMS - Rápido</string>
|
||||
@ -118,8 +113,8 @@
|
||||
|
||||
<!-- Notifications -->
|
||||
<string name="sync_title">Proceso de sincronización</string>
|
||||
<string name="sync_inprogress">Sincronización en curso...</string>
|
||||
<string name="fatal_error">¡Error fatal!</string>
|
||||
<string name="notification_channel_name_sync">Sincronizar</string>
|
||||
|
||||
<!-- Errors -->
|
||||
<string name="err_sync_get_smslist">Error #1: Se recibieron datos inválidos al tratar de obtener los mensajes previos</string>
|
||||
@ -183,4 +178,6 @@
|
||||
<string name="no_confirm">No</string>
|
||||
<string name="pref_show_sync_notifications">Mostrar notificaciones de sincronización</string>
|
||||
<string name="sync_complete">Sincronización completa</string>
|
||||
<string name="err_sync_http_write_failed">Error #19: Falla al escribir al flujo HTTP al enviar datos al servidor. </string>
|
||||
<string name="err_sync_http_request_protocol_exception">Error #20: Falla al establecer correctamente la versión del protocolo HTTP.</string>
|
||||
</resources>
|
||||
|
@ -28,15 +28,13 @@
|
||||
<resources
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
tools:ignore="MissingTranslation">
|
||||
<!-- Translation version, reference for translators -->
|
||||
<string name="gp_translation_version">3</string>
|
||||
|
||||
<!-- Translations must begin here -->
|
||||
<!-- Translations must begin here -->
|
||||
<string name="gp_short_description">SMS de Nextcloud sincroniza tu SMS local con tu instancia Nextcloud</string>
|
||||
<string name="gp_description">
|
||||
Con la aplicación SMS para ownCloud sincroniza tus mensajes SMS en una instancia remota de ownCloud y podrás leer tus mensajes desde ella.
|
||||
La aplicación de SMS Nextcloud sincroniza sus mensajes SMS en una instancia remota de Nextcloud y le permite leer sus mensajes desde ella.
|
||||
|
||||
Enviar mensajes SMS desde la instancia ownCloud es una funcionalidad que se incorporará en un futuro lanzamiento.
|
||||
El envío de SMS desde la instancia de Nextcloud llegará en una versión futura.
|
||||
|
||||
La aplicación es totalmente compatible con Android 4.0 hasta 6.0</string>
|
||||
La aplicación es totalmente compatible desde Android 4.0 a 6.0
|
||||
</string>
|
||||
</resources>
|
||||
|
@ -1,5 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
/*
|
||||
* Copyright (c) 2014-2015, Loic Blot <loic.blot@unix-experience.fr>
|
||||
* All rights reserved.
|
||||
@ -25,9 +24,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
-->
|
||||
<resources
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
tools:ignore="MissingTranslation">
|
||||
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
|
||||
|
||||
<!-- Translation version, reference for translators -->
|
||||
<string name="translation_version">7</string>
|
||||
@ -36,8 +33,6 @@
|
||||
<string name="app_name">SMS de Nextcloud</string>
|
||||
<string name="login_logo">Logotipo para inicio de sesión</string>
|
||||
|
||||
<string name="pref_lastmsgdate">last_message_date</string>
|
||||
|
||||
<!-- Translations must begin there -->
|
||||
<!-- Preferences -->
|
||||
<string name="pref_title_sync">SMS - Rápido</string>
|
||||
@ -118,8 +113,8 @@
|
||||
|
||||
<!-- Notifications -->
|
||||
<string name="sync_title">Proceso de sincronización</string>
|
||||
<string name="sync_inprogress">Sincronización en curso...</string>
|
||||
<string name="fatal_error">¡Error fatal!</string>
|
||||
<string name="notification_channel_name_sync">Sincronizar</string>
|
||||
|
||||
<!-- Errors -->
|
||||
<string name="err_sync_get_smslist">Error #1: Se recibieron datos inválidos al tratar de obtener los mensajes previos</string>
|
||||
@ -183,4 +178,6 @@
|
||||
<string name="no_confirm">No</string>
|
||||
<string name="pref_show_sync_notifications">Mostrar notificaciones de sincronización</string>
|
||||
<string name="sync_complete">Sincronización completa</string>
|
||||
<string name="err_sync_http_write_failed">Error #19: Falla al escribir al flujo HTTP al enviar datos al servidor. </string>
|
||||
<string name="err_sync_http_request_protocol_exception">Error #20: Falla al establecer correctamente la versión del protocolo HTTP.</string>
|
||||
</resources>
|
||||
|
@ -28,15 +28,12 @@
|
||||
<resources
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
tools:ignore="MissingTranslation">
|
||||
<!-- Translation version, reference for translators -->
|
||||
<string name="gp_translation_version">3</string>
|
||||
|
||||
<!-- Translations must begin here -->
|
||||
<string name="gp_short_description">SMS de Nextcloud sincroniza tu SMS local con tu instancia Nextcloud</string>
|
||||
<!-- Translations must begin here -->
|
||||
<string name="gp_short_description">Nextcloud SMS sincroniza tus mensajes SMS locales en tu instancia de Nextcloud</string>
|
||||
<string name="gp_description">
|
||||
Con la aplicación SMS para ownCloud sincroniza tus mensajes SMS en una instancia remota de ownCloud y podrás leer tus mensajes desde ella.
|
||||
La aplicación Nextcloud SMS sincroniza tus mensajes SMS en una instancia remota de Nextcloud y te permite leer tus mensajes desde allí.
|
||||
|
||||
Enviar mensajes SMS desde la instancia ownCloud es una funcionalidad que se incorporará en un futuro lanzamiento.
|
||||
El envío de mensajes SMS desde una instancia de Nextcloud estará disponible en una futura versión.
|
||||
|
||||
La aplicación es totalmente compatible con Android 4.0 hasta 6.0</string>
|
||||
La aplicación es totalmente compatible desde Android 4.0 hasta 6.0.</string>
|
||||
</resources>
|
||||
|
@ -1,5 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
/*
|
||||
* Copyright (c) 2014-2015, Loic Blot <loic.blot@unix-experience.fr>
|
||||
* All rights reserved.
|
||||
@ -25,9 +24,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
-->
|
||||
<resources
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
tools:ignore="MissingTranslation">
|
||||
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
|
||||
|
||||
<!-- Translation version, reference for translators -->
|
||||
<string name="translation_version">7</string>
|
||||
@ -36,8 +33,6 @@
|
||||
<string name="app_name">SMS de Nextcloud</string>
|
||||
<string name="login_logo">Logotipo para inicio de sesión</string>
|
||||
|
||||
<string name="pref_lastmsgdate">last_message_date</string>
|
||||
|
||||
<!-- Translations must begin there -->
|
||||
<!-- Preferences -->
|
||||
<string name="pref_title_sync">SMS - Rápido</string>
|
||||
@ -118,8 +113,9 @@
|
||||
|
||||
<!-- Notifications -->
|
||||
<string name="sync_title">Proceso de sincronización</string>
|
||||
<string name="sync_inprogress">Sincronización en curso...</string>
|
||||
<string name="sync_inprogress">Sincronización en progreso…</string>
|
||||
<string name="fatal_error">¡Error fatal!</string>
|
||||
<string name="notification_channel_name_sync">Sincronizar</string>
|
||||
|
||||
<!-- Errors -->
|
||||
<string name="err_sync_get_smslist">Error #1: Se recibieron datos inválidos al tratar de obtener los mensajes previos</string>
|
||||
@ -183,4 +179,30 @@
|
||||
<string name="no_confirm">No</string>
|
||||
<string name="pref_show_sync_notifications">Mostrar notificaciones de sincronización</string>
|
||||
<string name="sync_complete">Sincronización completa</string>
|
||||
</resources>
|
||||
<string name="err_sync_http_write_failed">Error #19: Falla al escribir al flujo HTTP al enviar datos al servidor. </string>
|
||||
<string name="err_sync_http_request_protocol_exception">Error #20: Falla al establecer correctamente la versión del protocolo HTTP.</string>
|
||||
<string name="action_appinfo_privacy_policy">Política de privacidad</string>
|
||||
<string name="privacy_policy_large_text">
|
||||
\"Visión general\n\n\"
|
||||
|
||||
\"Nextcloud SMS es un software gratuito desarrollado por sus colaboradores. Política de privacidad \"
|
||||
\"está destinado a informarle sobre los datos recopilados por esta aplicación.\"
|
||||
|
||||
\"Información que recopilamos\n\n\"
|
||||
|
||||
\"La aplicación solo recopila los SMS y el registro de llamadas.\n\n\"
|
||||
|
||||
\"Donde se envía la información.\n\n\"
|
||||
|
||||
\"La información no se envía a los servidores del equipo de Nextcloud ni a los servidores del equipo de SMS de Nextcloud ni \"
|
||||
\"cualquier gobierno ni otra entidad que no desee.\n\n\"
|
||||
|
||||
\"Cuando configura una cuenta de Nextcloud en la aplicación, está de acuerdo con Nextcloud\"
|
||||
\"propietario de la instancia que sus datos de registro de llamadas y SMS se almacenarán en su infraestructura \"
|
||||
\"bajo su responsabilidad\n\n\"
|
||||
|
||||
\"No recomendamos utilizar una cuenta de instancia de Nextcloud pública o de una empresa. Tu privacidad \"
|
||||
\"debe estar bajo su control en su propia instancia de Nextcloud.\n\n\"
|
||||
|
||||
</string>
|
||||
</resources>
|
||||
|