Compare commits

...

161 Commits

Author SHA1 Message Date
128f1df0ac update gradle plugin version 2024-10-11 18:09:43 -04:00
ed085194e6 Update for GPlay compliance issues 2024-10-11 18:06:56 -04:00
52a4c2f430 Increment version code 2024-10-11 17:46:39 -04:00
784918d220 Update libraries and fix unit test 2024-10-11 17:44:07 -04:00
f129773255 Merge branch 'master' of i2pgit.org:i2p-hackers/i2p.android.base 2024-10-11 15:46:46 -04:00
b304771eca Update build.gradle and I2P dependencies, move es_rAR to es-rAR 2024-10-11 15:45:12 -04:00
f87e8d036b Release: bump I2P version, I2P for Android version, and Build Number 2024-07-18 15:31:05 -04:00
zzz
16c1277935 Add new translation: Argentinian Spanish 2024-07-14 10:25:40 -04:00
zzz
a6aa76f9dd Pull translations from tx 2024-06-10 17:55:27 -04:00
zzz
a0ced4133d Pull translations from tx 2024-05-16 09:23:37 -04:00
e024950567 Update pull translation instructions 2024-05-16 09:09:28 -04:00
ea68f116e1 Increment build 2024-05-15 20:04:41 -04:00
3cb746594c Fix url text 2024-05-05 10:23:46 -04:00
27adae63eb Update forum URLs 2024-05-05 10:11:45 -04:00
85890d3b68 update CI files 2024-04-29 20:49:41 -04:00
96b045eb2a update CI files 2024-04-29 20:45:05 -04:00
8d00c5fa31 fix sync CI file 2024-04-29 20:28:08 -04:00
fc93a71552 Use CI to sync with gitlab 2024-04-29 18:59:34 -04:00
18e4aef4ca I2P for Android 2.5.0 2024-04-08 23:31:40 -04:00
5315e35adc I2P for Android 2.5.0 2024-04-08 23:23:24 -04:00
9ad9bc07ff Fix keystore name to produce signed build 2024-04-06 23:18:15 -04:00
bde92be29d Fix keystore path to produce signed build 2024-04-06 23:13:25 -04:00
849150ffa6 list keystore location at final step of CI so I can fix properties file 2024-04-06 23:08:51 -04:00
52dad19c7a list keystore location at final step of CI so I can fix properties file 2024-04-06 23:03:52 -04:00
e84a51097d fix base64 decode syntax 2024-04-05 16:13:54 -04:00
5289f5068a fix base64 decode syntax 2024-04-05 16:10:02 -04:00
09c7d9cfd8 fix base64 decode syntax 2024-04-05 16:06:12 -04:00
14d293fe6f Move keystore directory to runner user 2024-04-05 16:01:37 -04:00
7cd08cfd4c Assure keystore directory exists 2024-04-05 15:58:05 -04:00
aa22d83a44 fix syntax error 2024-04-05 15:10:11 -04:00
a1fd8d41b2 fix syntax error 2024-04-05 15:09:13 -04:00
9d24e68b57 remove secrets from sign.yml 2024-04-05 15:02:42 -04:00
d5e2804ea4 fix secret access to sign.yml 2024-04-05 14:58:33 -04:00
1edabd7252 fix secret access to sign.yml 2024-04-05 14:56:42 -04:00
52c1901eba fix secret access to sign.yml 2024-04-05 14:55:41 -04:00
a6f5221975 add secret access to sign.yml 2024-04-05 14:52:41 -04:00
caa57bbc3a add secret access to sign.yml 2024-04-05 14:51:34 -04:00
b28e5d741e add secret access to sign.yml 2024-04-05 14:50:20 -04:00
0f3a61390c fix typo in sign.yml 2024-04-05 14:46:58 -04:00
30a1f1d800 Create signing keys for dev-build specific builds 2024-04-05 14:41:38 -04:00
22d5d126f6 Create signing keys for dev-build specific builds 2024-04-05 14:36:18 -04:00
70e4ea810f Attempt signed CI builds(will fail right now) 2024-04-03 15:38:53 -04:00
b5c6e1489a Attempt signed CI builds(will fail right now) 2024-04-03 15:37:35 -04:00
333a1a49b1 Attempt CI builds 2024-04-03 15:26:58 -04:00
2ea93f106e unzip only tagged apk 2024-03-25 15:05:28 -04:00
d99ed0e5da Reduce timeout for release uploader 2024-03-25 14:53:34 -04:00
3881966ddb see if I can get trunk builds to work 2024-03-25 14:46:55 -04:00
9de9f46489 when a release is tagged copy over artifacts 2024-03-25 14:30:17 -04:00
149881522e specify a tag for non-trunk CI builds 2024-03-25 14:25:52 -04:00
df26d89310 attempt a trunk build too 2024-03-25 14:18:37 -04:00
707dcbbc78 create local.properties for routerjars 2024-03-25 14:08:25 -04:00
812aea9873 clone i2p.i2p in CI 2024-03-25 14:04:49 -04:00
aeb7614b62 clone i2p.i2p in CI 2024-03-25 14:00:30 -04:00
9bf9d27c5a use Java 11 in CI 2024-03-25 13:58:07 -04:00
f2cfe4cee5 start a CI build of the Android APK 2024-03-25 13:55:38 -04:00
45865ff5b9 Increment version code and upload to GPlay 2023-12-19 13:45:24 -05:00
96f9905952 Update I2P library version to 2.4.0 2023-12-19 13:44:04 -05:00
idk
41ca3fe527 tx pull 2023-07-05 18:18:32 -04:00
idk
c5468e4829 migrate transifex configs 2023-07-05 18:17:16 -04:00
idk
174bb7f827 increment version code 2023-07-05 15:51:33 -04:00
idk
3d92f32c13 update I2P library 2023-07-05 13:54:21 -04:00
idk
2fae27a3b3 bump version code 2023-04-15 05:46:17 +00:00
idk
71d38c64e0 fix version 2023-04-15 02:37:48 +00:00
idk
ddb651a602 pull in new translations 2023-03-18 04:04:56 +00:00
idk
a8ad1d8d47 update changelog 2023-03-18 04:02:13 +00:00
idk
912602bfc0 bump versioncode 2023-03-18 04:01:16 +00:00
idk
24e3358ffa check in stats page translation fix, update for release 2023-03-18 01:29:12 +00:00
idk
fcc51c429d update version code again 2023-03-04 23:09:41 +00:00
idk
de0ee87db3 bump versionCode and I2P_ANDROID_VERSION 2023-03-04 23:05:24 +00:00
idk
2102d55315 update javadoc on long copypasta section 2023-02-10 00:21:36 +00:00
idk
2f900ebe2d blocklist entries first attempt 2023-02-10 00:20:48 +00:00
idk
5c03981a61 don't overwrite subscriptions.txt TODO look into possible permissions issues obscuring the behavior of cRTFIA 2023-01-31 22:34:12 +00:00
idk
c68f0ff23a Add broadcast intent change from @RyeMantis to changelog 2023-01-23 00:36:14 +00:00
idk
b01f44ae1f enable adding base32 destinations from the addressbook interface. Allow base32 addresses which contain ports to validate 2023-01-23 00:32:26 +00:00
idk
05aeb0cf37 Merge branch 'remote-start' into 'master'
Allow third-party apps to start I2P on Android via a Bradcast Intent

Closes #39

See merge request i2p-hackers/i2p.android.base!3
2023-01-22 23:28:43 +00:00
fd8d596064 Allow third-party apps to start I2P on Android via a Bradcast Intent 2023-01-22 23:28:43 +00:00
idk
ea3fe136e4 bump versionCode for gplay release 2023-01-11 16:38:32 +00:00
idk
47f4530f6f bump version for release, add jcenter repository to app/build.gradle to resolve missing packages 2023-01-11 16:00:52 +00:00
idk
016a7a47fd check in new translations 2023-01-07 19:54:33 +00:00
idk
f8410deeba -f pull just in case, at some point translation got out-of-sync on my end and needed refreshed, probably good to be sure at release time 2022-12-11 16:25:55 +00:00
idk
7268132ddd Add tag freeze note to RELEASE_PROCESS.md 2022-12-11 02:55:40 +00:00
idk
62545f1247 Target latest SDK version, which requires updating gradle plugin. Add TODO: for maven plugin which breaks on newer versions of gradle 2022-12-09 21:32:59 +00:00
zzz
99b6992b5c Build: Disable lint which fails with a class conflict.
As recommended by idk
2022-12-09 12:56:28 -05:00
zzz
e8ebb0a569 Pull translations from tx 2022-12-06 13:45:55 -05:00
idk
3ab2c83b7b bump release version and version code 2022-11-23 14:53:47 -05:00
idk
cb46abca82 Always compile with the TARGET_SDK_VERSION even if we're compatible with lower versions 2022-11-23 14:09:28 -05:00
idk
63b345e329 Add FLAG_IMMUTABLE recent Android versions, should fix #49 but still untested 2022-11-23 13:30:36 -05:00
idk
794b8433d8 update changelog 2022-11-22 22:12:59 -05:00
idk
a7891a3674 check in version 2.0.0 2022-11-22 11:53:02 -05:00
idk
7076785ec1 add instructions for Privacy Browser 2022-11-09 01:16:17 -05:00
idk
f8eda45409 promote privacybrowser back to supported, demote non-fennec firefoxes to unsupported 2022-11-09 00:53:52 -05:00
idk
8d0f1689c1 Merge branch 'android-build-updates' into 'master'
Android build updates

See merge request idk/i2p.android.base!1
2022-10-19 01:38:22 +00:00
idk
25ef37cddf Merge branch 'master' into 'android-build-updates'
# Conflicts:
#   gradle.properties
2022-10-19 01:38:08 +00:00
idk
c5936858a2 fix Android 12 builds 2022-10-18 21:33:43 -04:00
idk
17d2e2fc93 list all browsers in prep for VPN mode 2022-10-18 20:32:43 -04:00
idk
a0e41e5171 update the changelog 2022-09-08 11:51:50 -04:00
idk
2d1244f339 update versions for F-Droid main 2022-09-04 11:23:37 -04:00
idk
9eec1d3348 checkin android build updates 2022-08-30 11:07:40 -04:00
idk
5824fd4efa update the version code 2022-08-26 22:29:07 -04:00
idk
9c87bfcb51 After un-breaking the gradle build, bump the version to 1.9.0 2022-08-26 22:27:43 -04:00
idk
0c380f2ef5 Fix backward base32 validator condition 2022-08-21 12:10:37 -04:00
idk
dafe3d0002 make base32's greater than 64 chars in length validate 2022-08-08 14:23:20 -04:00
idk
255ac60691 update changelog and fix string 2022-08-08 14:08:59 -04:00
idk
23f681dd7d start retroactively fixing the changelog which I did not update for a while. 2022-07-18 12:47:46 -04:00
idk
d6a55a122a switch back I2P_VERSION 2022-06-26 18:41:02 -04:00
idk
454937d345 checkin release update 2022-06-25 10:16:47 -04:00
idk
ec8cf76fc4 reverse changes to settings_net.xml 2022-06-24 13:34:05 -04:00
idk
6788f9a663 make speed_values an integer array 2022-06-24 01:34:40 -04:00
idk
dc96c6251f remove less-good family keys workaround 2022-06-17 03:13:30 -04:00
idk
c2bced68bb fix missing cert issue 2022-06-16 15:59:40 -04:00
idk
e21b4e5cbd fix .gitignore 2022-05-28 02:13:42 -04:00
idk
1f434d8a05 re-do the AndroidSAMSecureSession so it doesn't require me to ask permission to draw over other apps. Permission to draw over other apps gives apps the power to take screenshots, so it's a special permission on Android. 2022-05-28 02:12:23 -04:00
idk
cd12d84d47 get rid of buggy new-version check which prevents merging of new hosts files. More refactoring of interactive SAM Auth interface. 2022-05-19 18:29:31 -04:00
idk
82b92caa55 only loop for 1 minute before returning false by default 2022-05-19 15:51:56 -04:00
idk
49e4fcc49c refactor SAMSecureSession implementation 2022-05-19 15:41:48 -04:00
idk
a9abe05325 check in new turkish strings 2022-05-19 13:29:24 -04:00
idk
ea6705374f Make the SAM approver do UI stuff on the main thread 2022-04-22 00:46:31 -04:00
idk
3e28f2bf93 A do even more early logging. Certs need to be kept up to date and should be updated regardless of whether it's a new version or not 2022-04-21 17:10:57 -04:00
idk
4c881525f9 Use localized strings for interactive SAM auth 2022-04-21 12:30:34 -04:00
idk
9280c80a53 Add SAM interstitial 2022-04-20 14:11:40 -04:00
idk
e465a6d232 Check in translations 2022-04-18 14:29:54 -04:00
idk
d7f79e7b0b do much more logging in the initialization process. Account for differences in application path when seen from aab vs apk viewpoint. 2022-03-02 17:22:55 -05:00
idk
68f44b8ec1 Bump for release and tag 2022-02-22 15:27:48 -05:00
idk
0835a42fbd Replace donate references with gitlab references 2022-01-07 15:52:02 -05:00
idk
78e649dc9b Bump GPlay version 2022-01-06 20:02:04 -05:00
idk
84e73a693c Bump 1.6.1 2022-01-06 19:32:45 -05:00
idk
c0ad7dfc09 Fix zip path traversal issue(we are likely unaffected since we do not unzip arbitrary zip files, just certificates_zip. Update certificates_zip. 2022-01-06 19:31:25 -05:00
idk
dec68432bc Check in translations. Fix dockerfile. Bump I2P_VERSION. Bump versionCode. 2021-11-30 19:57:51 -05:00
idk
f93fc155ef Merge branch 'Battery-Optimization-Fix' into 'master'
Battery optimization fix

See merge request i2p-hackers/i2p.android.base!2
2021-09-05 20:19:42 +00:00
e348af340a Battery optimization fix 2021-09-05 20:19:41 +00:00
idk
aa3631ed33 Merge branch 'start-on-boot-fix' into 'master'
Fixed start on boot

See merge request i2p-hackers/i2p.android.base!1
2021-09-02 16:04:07 +00:00
idk
f2088ad1e5 bump versions and tag 2021-08-30 09:58:27 -04:00
008e9b7961 Fixed start on boot 2021-08-27 04:22:06 -07:00
idk
90a46bcc3f make sure gitignore and dockerignore are checked in 2021-08-15 14:49:54 -04:00
idk
f69f748064 Checkin release 0.9.50 2021-05-19 09:32:41 -04:00
idk
640a2e1918 Add Docker release instructions, since it takes a bunch of the toolchain-management difficulty and automates it 2021-05-07 02:00:36 -04:00
idk
8aead91700 Add GPG to docker container builds 2021-05-06 17:06:16 -04:00
idk
b18a2e6241 Dockerize the build process to save time setting up releases in the future 2021-05-04 15:02:37 -04:00
idk
09c3e6e12c Remove docker instructions until I have time to write them better 2021-05-03 21:35:28 -04:00
idk
74bf0eade2 Merge branch 'master' of 127.0.0.1:i2p-hackers/i2p.android.base 2021-05-03 21:33:40 -04:00
idk
2fa6e7f3cb Enable Docker builds 2021-05-03 21:32:53 -04:00
idk
24b741be1e Enable Docker builds 2021-05-03 21:32:02 -04:00
zzz
ac8ce6f916 Update and remove old links in welcome_html 2021-05-02 11:50:14 -04:00
idk
cd7d0ad723 Android release 2021-02-28
-----BEGIN PGP SIGNATURE-----
 
 iQFMBAABCgA2FiEEcNIGBzi++AUjrK/311wDs5teFOEFAmAugowYHGhhbmtoaWxs
 MTk1ODBAZ21haWwuY29tAAoJENdcA7ObXhThwQsIAK0A284NXvJsJ7an3CCIf1Ws
 DEYmG1fibJA3BwgSYxgFUy5bgN3tEAEvwldo8PyRq6EBxe419/Ab9awoepx1wmN+
 NtfOOTuB0kHTRKUreZNuhwYUKddNrr7o10WJgHhyj6PPGIau/4XYvTVuQ70hOoI4
 Vw809u7bk5mM4cGCAnxnsgNus7khcwzbDeYZI5CbbEClk+QcKHTDkC1sMCo9vqTo
 bbS+zIoy9G+4k6LCaiC0QL6GeLcwns2vtRfDaXgImjoDGx9TL0nm/USBwsllkkmW
 +GZAvbck43yh8DixuERHN6NncuF0EI01etgvl4H8no31tQxVU+7UsZWTkz1uyKQ=
 =tJK3
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQFMBAABCgA2FiEEcNIGBzi++AUjrK/311wDs5teFOEFAmCFoG4YHGhhbmtoaWxs
 MTk1ODBAZ21haWwuY29tAAoJENdcA7ObXhThM08H/2+D0RCbP0/2QxYxFsf3NuZp
 UizMCnVqKCoomN1dChLs1kw00dJXAEAGtFZqzT8nbUHD8W98pljFc5j0qJ3BLQNU
 xrNHkE3KiwHU0ACZvrIPN9X1bj3uhNnziblPlpEBpMq/p3W8oKUWnLr9Zv8Gyetu
 Cpqjr/p4OaYpTUHLzp9NWltUpDDul0Mgy+lmhtUbYfNW4NtlVMAfOpNvBwFDcYGn
 FW4cP7t8nPzv4Cdzn5SD19KFCgGxHEFkWCF2uiJTiXOdi7LNsljKEgdMVNokO5Av
 zF97Cr+alLhg/GnxYeUB/Tgn4mTOBqzM4ir8EhIb+APWYowoWUossr68mgZ5aco=
 =BGmd
 -----END PGP SIGNATURE-----

Merge tag 'android-0.9.49'

Android release 2021-02-28
2021-04-25 13:01:31 -04:00
zzz
c5a0c3608d Drop .mtn-ignore 2021-04-25 07:11:49 -04:00
idk
3863c0e183 Increase version numbers for release 2021-02-18 10:05:20 -05:00
idk
69ea3d8bde remove trailing slash from gradle.properties 2021-02-10 17:25:32 -05:00
idk
7cafe6da48 add gitlab SSH and HTTP to i2ptunnel_config. Invalidate the view containing the I2P tunnel lists, in order to force them to redraw when a new tunnel is created. Closes #4 2021-02-04 12:41:03 -05:00
idk
9464b46ad0 Change the foreground service notification priorities from PRIORITY_MIN to PRIORITY_LOW. Don't check if we're restarting on Android versions greater than O since it uses the notificationChannel. Closes #5 2021-02-03 14:25:08 -05:00
idk
c230a5a101 Create the notification channel right before updating the statusbar notification. 2021-02-02 01:22:37 -05:00
idk
3d37f2ae07 use a toast for clipboard notification instead 2021-02-02 00:38:50 -05:00
idk
f88aafe292 fix the notification channel for the main status 2021-02-01 21:22:51 -05:00
idk
aa2dab1d3c Re-enable NTCP because it fixes the firewalled but inbound TCP not enabled issue 2021-01-29 16:45:07 -05:00
idk
8e85eaa2f0 SAM needs run() instead of start() to work correctly 2021-01-29 16:05:41 -05:00
zzz
6a1848caf6 Startup: Don't sleep in startup Jobs, requeue instead, to not clog the job queue 2021-01-27 09:09:52 -05:00
idk
aa36b4cb14 add facility to copy base32 URL of a tunnel by long-pressing the tunnel name 2021-01-18 11:58:48 -05:00
idk
78d4b12142 Remove nonsense comment at the end of the line which was covered up by the terminal 2021-01-11 10:46:15 -05:00
idk
c2f3a80dec Correctly fetch new SAM API preference when starting the SAM API job 2021-01-11 10:45:19 -05:00
idk
a679784aab Fix some build issues(Stemming from resources moving to wars) and add a SAM API option 2021-01-10 09:23:43 -05:00
idk
835667437b Fix some build issues(Stemming from resources moving to wars) and add a SAM API option 2021-01-10 09:20:45 -05:00
idk
f016edec7a add logo 2021-01-09 17:26:18 -05:00
96 changed files with 3201 additions and 1058 deletions

3
.dockerignore Normal file
View File

@ -0,0 +1,3 @@
app/pkg-temp
app/build
app/pkg-mavencentral

73
.github/workflows/ant.yml vendored Normal file
View File

@ -0,0 +1,73 @@
# Mostly copied from https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-ant
# zlatinb
name: Java CI
on: [push]
permissions:
contents: read
pages: write
id-token: write
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: GetText
run: sudo apt install gettext git
- uses: actions/checkout@v4
- name: Set up JDK 11
uses: actions/setup-java@v4
with:
java-version: '11'
distribution: 'temurin'
- name : Generate override.properties
run: |
rm -f override.properties
echo "build.built-by=GitHub Actions" >> override.properties
echo "noExe=true" >> override.properties
- name: build with Gradle
run: |
echo "i2psrc=$HOME/i2p.i2p" > routerjars/local.properties
git clone -b i2p-2.4.0 https://github.com/i2p/i2p.i2p "$HOME/i2p.i2p"
./gradlew assembleDebug
find . -name '*.apk'
- name: Upload i2p-debug-${{ github.sha }}.apk
uses: actions/upload-artifact@v4
with:
name: i2p-debug.apk
path: ./app/build/outputs/apk/free/debug/app-free-debug.apk
trunk:
runs-on: ubuntu-latest
steps:
- name: GetText
run: sudo apt install gettext git
- uses: actions/checkout@v4
- name: Set up JDK 11
uses: actions/setup-java@v4
with:
java-version: '11'
distribution: 'temurin'
- name : Generate override.properties
run: |
rm -f override.properties
echo "build.built-by=GitHub Actions" >> override.properties
echo "noExe=true" >> override.properties
grep -v I2P_ gradle.properties > gradle.properties.update
echo "I2P_VERSION=2.5.0-1" >> gradle.properties.update
echo "I2P_ANDROID_VERSION=2.5.0-1" >> gradle.properties.update
cp -v gradle.properties.update gradle.properties
- name: build with Gradle
run: |
echo "i2psrc=$HOME/i2p.i2p" > routerjars/local.properties
git clone -b master https://github.com/i2p/i2p.i2p "$HOME/i2p.i2p"
bash -c "cd $HOME/i2p.i2p && ./installer/resources/maven-dev-release.sh 1"
./gradlew assembleDebug
find . -name '*.apk'
- name: Upload i2p-debug-${{ github.sha }}.apk
uses: actions/upload-artifact@v4
with:
name: i2p-debug-trunk-${{ github.sha }}.apk
path: ./app/build/outputs/apk/free/debug/app-free-debug.apk

22
.github/workflows/github-sync.yml vendored Normal file
View File

@ -0,0 +1,22 @@
# File: .github/workflows/github-sync.yml for i2p-hackers/i2p.android.base
on:
schedule:
- cron: "*/5 * * * *"
workflow_dispatch:
jobs:
repo-sync:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- name: repo-sync
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
uses: repo-sync/github-sync@v2
with:
source_repo: "https://i2pgit.org/i2p-hackers/i2p.android.base"
source_branch: "master"
destination_branch: "master"
github_token: ${{ secrets.PAT }}

62
.github/workflows/release.yml vendored Normal file
View File

@ -0,0 +1,62 @@
name: Release
#on: [push]
on:
push:
# Sequence of patterns matched against refs/tags
tags:
- 'i2p-android-*.*.*' # Release i2p-firefox-1.2.3
- 'i2p-android-*.*.*-*' # Release i2p-firefox-1.2.3
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v4
with:
sparse-checkout: |
CHANGELOG.md
sparse-checkout-cone-mode: false
- name: sleep 6 minutes
run: |
echo "sleeping 6 minutes to wait for artifacts"
sleep 1m
echo "sleeping 5 minutes to wait for artifacts"
sleep 1m
echo "sleeping 4 minutes to wait for artifacts"
sleep 1m
echo "sleeping 3 minutes to wait for artifacts"
sleep 1m
echo "sleeping 2 minutes to wait for artifacts"
sleep 1m
echo "sleeping 1 minutes to wait for artifacts"
sleep 1m
- name: Download artifacts
id: download-artifact
uses: dawidd6/action-download-artifact@v3
with:
skip_unpack: true
workflow: ant.yml
if_no_artifact_found: fail
# remove .zip file extension
#- run: for f in *.zip; do unzip "$f"; rm "$f"; done
- run: unzip i2p-debug.apk.zip
- run: echo "" | tee -a RELEASE.md
- run: echo "## Checksums" | tee -a RELEASE.md
- run: echo "" | tee -a RELEASE.md
- run: echo '```' | tee -a RELEASE.md
- run: sha256sum * | tee -a RELEASE.md
- run: echo '```' | tee -a RELEASE.md
- run: echo "" | tee -a RELEASE.md
- run: echo '```' | tee -a RELEASE.md
- run: file * | tee -a RELEASE.md
- run: echo '```' | tee -a RELEASE.md
- run: echo "" | tee -a RELEASE.md
- name: Upload artifacts
uses: ncipollo/release-action@v1
with:
artifacts: "*"
bodyFile: "RELEASE.md"

95
.github/workflows/sign.yml vendored Normal file
View File

@ -0,0 +1,95 @@
# Mostly copied from https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-ant
# zlatinb
name: Java Signed CI
on: [push]
permissions:
contents: read
pages: write
id-token: write
jobs:
build-signed:
runs-on: ubuntu-latest
steps:
- name: GetText
run: sudo apt install gettext git
- uses: actions/checkout@v4
- name: Set up JDK 11
uses: actions/setup-java@v4
with:
java-version: '11'
distribution: 'temurin'
- name: Generate override.properties
env:
DEV_SIGNING_KEY: ${{ secrets.DEV_SIGNING_KEY }}
DEV_PASSWORD: ${{ secrets.DEV_PASSWORD }}
run: |
rm -f override.properties
mv etc/github.gradle.properties gradle.properties
mv etc/github.signing.properties signing.properties
mkdir -p $HOME/keystores/
echo $DEV_SIGNING_KEY | base64 --decode > $HOME/keystores/android-release.keystore
echo "KEY_ALIAS=mykey" >> signing.properties
echo "KEY_PASSWORD=$DEV_PASSWORD" >> signing.properties
echo "build.built-by=GitHub Actions" >> override.properties
echo "noExe=true" >> override.properties
- name: build with Gradle
run: |
echo "i2psrc=$HOME/i2p.i2p" > routerjars/local.properties
git clone -b i2p-2.4.0 https://github.com/i2p/i2p.i2p "$HOME/i2p.i2p"
./gradlew assembleRelease
find . -name '*.apk'
ls -lah $HOME/keystores/android-release.keystore
ls -d $HOME
- name: Upload i2p-debug-${{ github.sha }}.apk
uses: actions/upload-artifact@v4
with:
name: i2p-debug.apk
path: ./app/build/outputs/apk/free/debug/app-free-debug.apk
trunk-signed:
runs-on: ubuntu-latest
steps:
- name: GetText
run: sudo apt install gettext git
- uses: actions/checkout@v4
- name: Set up JDK 11
uses: actions/setup-java@v4
with:
java-version: '11'
distribution: 'temurin'
- name: Generate override.properties
env:
DEV_SIGNING_KEY: ${{ secrets.DEV_SIGNING_KEY }}
DEV_PASSWORD: ${{ secrets.DEV_PASSWORD }}
run: |
rm -f override.properties
echo "build.built-by=GitHub Actions" >> override.properties
echo "noExe=true" >> override.properties
mv etc/github.gradle.properties gradle.properties
mv etc/github.signing.properties signing.properties
mkdir -p $HOME/keystores/
echo $DEV_SIGNING_KEY | base64 --decode > $HOME/keystores/android-release.keystore
echo "KEY_ALIAS=mykey" >> signing.properties
echo "KEY_PASSWORD=$DEV_PASSWORD" >> signing.properties
grep -v I2P_ gradle.properties > gradle.properties.update
echo "I2P_VERSION=2.5.0-1" >> gradle.properties.update
echo "I2P_ANDROID_VERSION=2.5.0-1" >> gradle.properties.update
cp -v gradle.properties.update gradle.properties
- name: build with Gradle
run: |
echo "i2psrc=$HOME/i2p.i2p" > routerjars/local.properties
git clone -b master https://github.com/i2p/i2p.i2p "$HOME/i2p.i2p"
bash -c "cd $HOME/i2p.i2p && ./installer/resources/maven-dev-release.sh 1"
./gradlew assembleRelease
find . -name '*.apk'
ls -lah $HOME/keystores/android-release.keystore
ls -d $HOME
- name: Upload i2p-debug-${{ github.sha }}.apk
uses: actions/upload-artifact@v4
with:
name: i2p-debug-trunk-${{ github.sha }}.apk
path: ./app/build/outputs/apk/free/debug/app-free-debug.apk

8
.gitignore vendored Normal file
View File

@ -0,0 +1,8 @@
etc/docker.signing.properties
signing.properties
.idea
.idea/
.gradle/
local.properties
override.properties
build

View File

@ -1,52 +0,0 @@
# Just to try and prevent some noob disasters.
# Use mtn add --no-respect-ignore foo.jar to ignore this ignore list
_jsp\.java$
\.bz2$
\.class$
\.diff$
\.exe$
\.fba$
\.gz$
\.jar$
\.out$
\.patch$
\.sig$
\.sud$
\.su2$
\.tar$
\.war$
\.zip$
^\.
^build/
^pkg-temp/
~$
/build/
/classes/
# Android-specific ignores
^lib/client/libs
^routerjars/libs
local.properties
signing.properties
#IntelliJ IDEA
^.idea
.*.iml
.*.ipr
.*.iws
#Gradle
build
# I2P-specific ignores
^app/src/main/res/drawable/i2plogo.png
^app/src/main/res/raw/blocklist_txt
^app/src/main/res/raw/hosts_txt
^app/src/main/res/raw/.*_ht
^app/src/main/res/raw/license_
^app/src/main/res/raw/certificates_zip
^app/src/main/assets/themes/console/images
^app/src/main/assets/themes/console/light/console.css
^app/src/main/assets/themes/console/light/images/header.png
^scripts/build.number
^scripts/version.properties

View File

@ -1,18 +1,18 @@
[main]
host = https://www.transifex.com
lang_map = he: iw, id: in, pt_BR: pt-rBR, ru_RU: ru, sv_SE: sv, tr_TR: tr, uk_UA: uk, yi: ji, zh_CN: zh, zh_TW: zh-rTW
host = https://www.transifex.com
lang_map = pt_BR: pt-rBR, yi: ji, zh_CN: zh, zh_TW: zh-rTW, id: in, ru_RU: ru, sv_SE: sv, tr_TR: tr, uk_UA: uk, he: iw, es_AR: es-rAR
[I2P.android]
file_filter = app/src/main/res/values-<lang>/strings.xml
[o:otf:p:I2P:r:android]
file_filter = app/src/main/res/values-<lang>/strings.xml
source_file = app/src/main/res/values/strings.xml
source_lang = en
type = ANDROID
minimum_perc = 22
source_file = app/src/main/res/values/strings.xml
source_lang = en
type = ANDROID
[I2P.android_lib_helper]
file_filter = lib/helper/src/main/res/values-<lang>/strings.xml
[o:otf:p:I2P:r:android_lib_helper]
file_filter = lib/helper/src/main/res/values-<lang>/strings.xml
source_file = lib/helper/src/main/res/values/strings.xml
source_lang = en
type = ANDROID
minimum_perc = 50
source_file = lib/helper/src/main/res/values/strings.xml
source_lang = en
type = ANDROID

View File

@ -1,3 +1,78 @@
2.4.0
* Update I2P Library
2.3.0
* Update I2P Library
2.2.0
* Add blocklist feed support
* Fix translations on stats page
* Various bugfixes
2.1.0-1
* adds support for adding base32 addresses to the local addressbook
* adds support for destinations with ports in the string to i2ptunnel
* adds support for remote applications launching I2P, via MR#3 from @RyeMantis
2.1.0
* Upgrades router to version 2.1.0
* Adds jcenter repository back to app/ target, removes jcenter from other targets
* explicitly set android.useAndroidX
2.0.1
* Fixes gitlab#49 by applying MUTABLE or IMMUTABLE flags across all PendingIntents
2.0.0
* Updates router to version 2.0.0
* Updates gradle plugin
* Remove Firefox from supported browsers list due to lack of about:config support
* Add Privacy Browser to supported browsers list and write guide for it
1.9.1
* Switches back to mavenCentral builds
* Fixes build process for F-Droid main
* Using tag i2p.i2p:i2p-android-1.9.0
* Allow b32 and blinded b32 to validate in I2PTunnel UI
1.9.0
* Updates router to version 1.9.0
* Using tag i2p.i2p:i2p-android-1.9.0
1.8.2
* This update fixes a bug where Family Keys are incorrectly handled by the Android router, leading
to a crash.
* This update fixes a bug wherein incorrect type-checking caused a crash when using the Network
Config page for some users.
1.8.1
* This update fixes a bug where certificates were unpacked to the wrong location on new installs,
resulting in the router failing to start.
* Decouples the Android version from the I2P library version to allow for android point
releases with less pain.
1.8.0
* This release updates the underlying I2P libraries to I2P version 1.8.0
* The SAM API now operates in "Interactive Authentication" mode. Users will be prompted via
the notificationArea to approve or ignore new SAM connections initiated by external apps.
* The network config menu now features a drop-down configuration instead of a slider configuration
(since reversed)
1.7.1
* This release updates the underlying I2P libraries to I2P version 1.7.1
1.7.0
* This release updates the underlying I2P libraries to I2P version 1.7.0
* Refactor of the unzipResourceToDir function
1.6.0
* This release updates the underlying I2P libraries to I2P version 1.6.0
1.5.0
* This release updates the underlying I2P libraries to I2P version 1.5.0
0.9.50 2021-05-18
* This release updates the underlying I2P libraries to I2P version 0.9.50
0.9.48 2020-12-02
* This release updates the underlying I2P libraries to I2P version 0.9.48
* Updates to browser configuration documentation

91
DOCKER.md Normal file
View File

@ -0,0 +1,91 @@
Docker Build Instructions
=========================
It is possible to build a container with a pre-installed environment for
correctly compiling an I2P for Android development build. Unlike the i2p.i2p
container, zero attempt has been made to optimize the size of the container,
as it contains a copy of the latest Android SDK, toolchains, and Android NDK,
which it must download. To save time, this is cached locally. It is likely to
take up to 30 GB of disk space to compile in this way, however, it is very easy
and convenient compared to the steps in RELEASE-PROCESS.md and may make
building Android reproducibly easier in the future.
Container dependencies
----------------------
- `menny/android_ndk` (third-party image) (reviewed by idk) (depends on menny/android_sdk
- `menny/android_sdk` (third-party image) (reviewed by idk) (depends on ubuntu/18.04)
- `ubuntu/18.04` (official docker container) (base container)
Build the container locally
---------------------------
Run:
docker build -t i2p.android.base .
To build the container. It will have a lot to download the first time, so it may take
a while to complete.
Run an Android build in the container
-------------------------------------
Copy the `etc/docker.signing.example.proprties` file to `etc/docker.signing.proprties`,
edit it to match your key information and rebuild the container.
Run:
docker run -it \
-u $(id -u):$(id -g) \
--name i2p.android.base \
-v $HOME/.gnupg/:/.gnupg/:ro \
-v $HOME/.i2p-plugin-keys/:/.i2p-plugin-keys/:ro \
-v /run/user/$(id -u)/:/run/user/$(id -u)/:ro \
i2p.android.base
To get the build artifacts for uploading to Maven out of the container, use:
docker cp i2p.android.base:/opt/workspace/i2p.i2p/pkg-mavencentral app/pkg-mavencentral
docker cp i2p.android.base:/opt/workspace/i2p.i2p/mavencentral-i2p.jar app/pkg-mavencentral
docker cp i2p.android.base:/opt/workspace/i2p.i2p/mavencentral-mstreaming.jar app/pkg-mavencentral
docker cp i2p.android.base:/opt/workspace/i2p.i2p/mavencentral-router.jar app/pkg-mavencentral
docker cp i2p.android.base:/opt/workspace/i2p.i2p/mavencentral-servlet-i2p.jar app/pkg-mavencentral
docker cp i2p.android.base:/opt/workspace/i2p.i2p/mavencentral-streaming.jar app/pkg-mavencentral
To get the Android build artifacts out of the container, use:
docker cp i2p.android.base:/opt/workspace/i2p.android.base/app/build/ app/build
And your android applications will appear in the `app/build` directory, in the same
place where non-container builds would go.
If you encounter a permissions error when rebuilding, delete the `app/build`,
`app/pkg-mavencentral` and `app/pkg-temp` path.
rm -rf app/pkg-temp app/build app/pkg-mavencentral
Copypasta
---------
Once you have set up builds for the first time, from then on you can update the container and
build a fresh set of Maven jars and a new I2P for Android app by copy-pasting the following
commands:
``` sh
rm -rf app/pkg-temp app/build app/pkg-mavencentral
docker build -t i2p.android.base .
docker run -it \
-u $(id -u):$(id -g) \
--name i2p.android.base \
-v $HOME/.gnupg/:/.gnupg/:ro \
-v $HOME/.i2p-plugin-keys/:/.i2p-plugin-keys/:ro \
-v /run/user/$(id -u)/:/run/user/$(id -u)/:ro \
i2p.android.base
docker cp i2p.android.base:/opt/workspace/i2p.i2p/pkg-mavencentral app/pkg-mavencentral
docker cp i2p.android.base:/opt/workspace/i2p.i2p/mavencentral-i2p.jar app/pkg-mavencentral
docker cp i2p.android.base:/opt/workspace/i2p.i2p/mavencentral-mstreaming.jar app/pkg-mavencentral
docker cp i2p.android.base:/opt/workspace/i2p.i2p/mavencentral-router.jar app/pkg-mavencentral
docker cp i2p.android.base:/opt/workspace/i2p.i2p/mavencentral-servlet-i2p.jar app/pkg-mavencentral
docker cp i2p.android.base:/opt/workspace/i2p.i2p/mavencentral-streaming.jar app/pkg-mavencentral
docker cp i2p.android.base:/opt/workspace/i2p.android.base/app/build/ app/build
```

39
Dockerfile Normal file
View File

@ -0,0 +1,39 @@
FROM menny/android_ndk
ENV VERSION=0.9.50
ENV JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/
RUN echo 'deb http://deb.i2p2.de/ sid main' >> /etc/apt/sources.list
RUN echo 'deb-src http://deb.i2p2.de/ sid main' >> /etc/apt/sources.list
RUN echo 'deb http://archive.ubuntu.com/ubuntu trusty universe' >> /etc/apt/sources.list
RUN wget -O /etc/apt/trusted.gpg.d/i2p-debian-repo.key.asc https://geti2p.net/_static/i2p-debian-repo.key.asc
COPY etc/debian-jessie-repo.key.asc /etc/apt/trusted.gpg.d
RUN mkdir -p /opt/packages && wget -O /opt/packages/openjdk-7-jre-headless.deb http://security.debian.org/debian-security/pool/updates/main/o/openjdk-7/openjdk-7-jre-headless_7u261-2.6.22-1~deb8u1_amd64.deb
RUN apt-get update
RUN apt-get build-dep -y i2p i2p-router
RUN apt-get install -y ant openjdk-8* libxml2-utils junit4 libhamcrest-java libmockito-java libmaven-ant-tasks-java dpkg-sig maven
RUN cd /opt/packages && dpkg-sig -l openjdk-7-jre-headless.deb && dpkg -x openjdk-7-jre-headless.deb /opt/packages/openjdk-7-jre
RUN git clone https://github.com/i2p/i2p.i2p --depth=1 -b i2p-$VERSION /opt/workspace/i2p.i2p
RUN update-java-alternatives --jre-headless --set java-1.8.0-openjdk-amd64
RUN update-java-alternatives --set java-1.8.0-openjdk-amd64
RUN update-alternatives --set javac /usr/lib/jvm/java-8-openjdk-amd64/bin/javac
RUN update-alternatives --set java /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
RUN rm /opt/java/openjdk/ -rfv
COPY . /opt/workspace/i2p.android.base
COPY etc/docker.local.ndk.properties /opt/workspace/i2p.android.base/client/local.properties
COPY etc/docker.local.router.properties /opt/workspace/i2p.android.base/routerjars/local.properties
COPY etc/docker.local.sdk.properties /opt/workspace/i2p.android.base/local.properties
COPY etc/docker.override.properties /opt/workspace/i2p.android.base/override.properties
COPY etc/docker.override.properties /opt/workspace/i2p.i2p/override.properties
COPY etc/docker.signing.properties /opt/workspace/i2p.android.base/signing.properties
WORKDIR /opt/workspace/i2p.android.base
RUN find /opt/android-sdk-linux -type d -print0 | xargs -0 chown -R 1000:1000
RUN find /opt/android-sdk-linux -type d -print0 | xargs -0 chmod -Rc o+rw
RUN find /opt/android-sdk-linux -type d -print0 | xargs -0 chmod -c 0755
RUN find /opt/workspace -type d -print0 | xargs -0 chown -R 1000:1000
RUN find /opt/workspace -type d -print0 | xargs -0 chmod -Rc o+rw
RUN find /opt/workspace -type d -print0 | xargs -0 chmod -c 0755
CMD cd /opt/workspace/i2p.i2p && \
ant -k mavenCentral; \
cp -v *.jar pkg-mavencentral/; \
cd /opt/workspace/i2p.android.base && \
./gradlew --continue dependencies || true ; \
./gradlew --continue assembleRelease; tail -f README.md

View File

@ -10,18 +10,32 @@ At the time of this revision, 2020/09/13, the main Android maintainer is idk. id
Play, and f-droid.i2p.io, and nextl00p handles working with the F-Droid project to provide an I2P release
in their main repository.
NOTE: The docker container built by the Dockerfile in this repostory ensures that the Pre-requisites and
Dependencies are properly met by obtaining them from the Debian package in `oldoldstable` and pre-configuring
the override.properties that is used in the Docker container.
## Tag Freezes and Translations
1-2 weeks before the software is released, I2P Desktop will have a "Tag Freeze" which is the deadline for
translations to be checked in. **When** that time comes, someone who has Transifex privileges should use
the command: `tx push -s -R I2P.android` to push any and all changed string resources to transifex for
translation.
**>> Beginning of Docker-enabled Steps <<**
## Prerequirements
1. Ensure you got the deprecated maven ant tasks. ( https://maven.apache.org/ant-tasks/download.cgi )
0. Update the changelog!
1. Ensure you have the deprecated maven ant tasks. ( https://maven.apache.org/ant-tasks/download.cgi )
2. It should exist at `~/.ant/lib/maven-ant-tasks-2.1.3.jar`
3. Ensure you got hamcrest-integration, hamcrest-library, hamcrest-core in the hamcrest.home directory.
3. Ensure you have hamcrest-integration, hamcrest-library, hamcrest-core in the hamcrest.home directory.
4. Ensure junit 4.12 at least in junit.home, ensure the jar file is named `junit4.jar`.
5. Ensure to have updated the changelog with the changes done.
6. Ensure that you are configured to build i2p.i2p with Java 8. On Debian it is easiest to set with
`update-java-alternatives --set java-8-openjdk-amd64` and picking Java 8. **TODO:** add instructions for non-Debian-based
5. Ensure you have the Mockito framework and accompanying documentation in your $JAVA_HOME
6. Ensure to have updated the changelog with the changes done.
7. Ensure that you are configured to build i2p.i2p with Java 8. On Debian it is easiest to set with
`update-java-alternatives --set java-1.8.0-openjdk-amd64` and picking Java 8. **TODO:** add instructions for non-Debian-based
systems.
7. Ensure that you have a Java 1.7 bootclasspath available. (See **Maven Central** step 2A.)
8. Ensure that you have a Java 1.7 bootclasspath available. (See **Maven Central** step 2A.)
## Get all the dependencies ready
@ -33,10 +47,9 @@ in their main repository.
2. **A)** I2P for Android requires a Java 1.7 bootclasspath, but the servlet jar requires Java 8. So, to do the builds:
- First set `javac.compilerargs=-bootclasspath /path/to/java/7/rt.jar:/path/to/java/7/jce.jar` in override.properties
- Build with `ant mavenCentral`
- upload everything *except* servlet.jar
- Unset bootclasspath in override.properties
- Build with `ant mavenCentral`
- upload servlet.jar
**>> End of Docker-enabled Steps for Maven <<**
3. Login to http://oss.sonatype.org for uploading the mavencentral-*.jar bundles.
4. In nexus, choose "Staging Upload" and upload all of the files with upload mode set to "Artifacts with POM".
When uploading the files to nexus, you *must* upload the pom.xml files, and all of their artifacts. For each
@ -57,12 +70,18 @@ in their main repository.
### Android Common Build
Using Docker: in order to use Docker to generate a new Android apk for release, you will
need to run the build twice, once for the mavenCentral jars, and once for the actual Android
app. After doing the Maven release, follow these steps in the i2p.android.base repository, and re-run
the `docker run` step described in `DOCKER.md`
1. Edit `routerjars/local.properties` to use the clean i2p.i2p copy.
2. Pull the latest translations with `tx pull -a` and commit them. (If you don't have the `tx` command,
do `pip install transifex-client` )
2. Pull the latest translations with `tx pull --use-git-timestamps` and commit them. (If you don't have the `tx` command,
do `pip install transifex-client` ). If there are broken translations, exclude them and only them.
- If there are any new translations, `mtn add` them, and add them to `app/src/main/res/values/arrays.xml`
(two places, alphabetical order please)
3. Ensure that `signing.properties` contains the details of the release key.
3. Ensure that `signing.properties` contains the details of the release key. If you are using Docker, see
`DOCKER.md` to perform this step for Docker builds by editing `etc/docker.signing.properties` instead.
4. Edit `gradle.properties` to bump the I2P version.
5. Edit `app/build.gradle` to bump the Android version number.
6. Edit `CHANGELOG` to add the release and date.

View File

@ -1,15 +1,17 @@
apply plugin: 'com.android.application'
repositories {
mavenLocal()
mavenCentral()
maven { url 'https://jitpack.io' }
}
android {
compileSdkVersion 28
compileSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION as String)
defaultConfig {
versionCode 4745259
versionName "$I2P_VERSION"
minSdkVersion 14
versionCode Integer.parseInt(project.I2P_ANDROID_VERSION_CODE as String)
versionName "$I2P_ANDROID_VERSION"
minSdkVersion 21
targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION as String)
// For Espresso
@ -31,15 +33,19 @@ android {
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
coreLibraryDesugaringEnabled true
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
lintOptions {
abortOnError false
checkReleaseBuilds false
disable 'MissingDefaultResource'
}
packagingOptions {
exclude 'LICENSE.txt'
resources {
excludes += ['LICENSE.txt']
}
}
flavorDimensions 'tier'
productFlavors {
@ -56,7 +62,6 @@ android {
applicationId 'net.i2p.android.router'
}
}
buildToolsVersion '28.0.3'
}
dependencies {
@ -72,22 +77,28 @@ dependencies {
implementation "com.android.support:preference-v14:$supportVersion"
implementation "com.android.support:recyclerview-v7:$supportVersion"
// Remote dependencies
implementation 'com.androidplot:androidplot-core:1.4.1'
implementation 'com.androidplot:androidplot-core:1.5.11'
implementation 'com.eowise:recyclerview-stickyheaders:0.5.2@aar'
implementation 'com.inkapplications.viewpageindicator:library:2.4.4'
implementation 'com.inkapplications.viewpageindicator:library:2.4.3'
implementation 'com.pnikosis:materialish-progress:1.7'
implementation "net.i2p:router:$I2P_VERSION"
implementation "net.i2p:i2p:$I2P_VERSION"
implementation "net.i2p.client:mstreaming:$I2P_VERSION"
implementation "net.i2p.client:streaming:$I2P_VERSION"
implementation 'net.i2p.android.ext:floatingactionbutton:1.10.1'
implementation 'org.sufficientlysecure:html-textview:3.1'
implementation 'com.github.SufficientlySecure:html-textview:v3.6'
// Testing-only dependencies
androidTestImplementation('com.android.support.test.espresso:espresso-core:3.0.2') {
exclude group: 'com.android.support', module: 'support-annotations'
}
}
dependencies {
implementation 'androidx.test.espresso:espresso-core:3.6.1'
implementation 'androidx.test.ext:junit:1.2.1'
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
}
project.ext.i2pbase = "../i2p.i2p"
def Properties props = new Properties()
def propFile = new File(project(':routerjars').projectDir, 'local.properties')
@ -114,7 +125,7 @@ task copyI2PResources(type: Copy) {
outputs.upToDateWhen { false }
into 'src/main/res'
into('drawable') {
from file(i2pbase + '/installer/resources/themes/console/images/i2plogo.png')
from file(i2pbase + '/apps/routerconsole/jsp/themes/console/images/i2plogo.png')
}
into('raw') {
from(i2pbase + '/installer/resources/blocklist.txt') { rename { 'blocklist_txt' } }
@ -177,15 +188,15 @@ task copyI2PAssets(type: Copy) {
outputs.upToDateWhen { false }
into 'src/main/assets/themes/console'
into('images') {
from file(i2pbase + '/installer/resources/themes/console/images/i2plogo.png')
from file(i2pbase + '/installer/resources/themes/console/images/inbound.png')
from file(i2pbase + '/installer/resources/themes/console/images/outbound.png')
from file(i2pbase + '/apps/routerconsole/jsp/themes/console/images/i2plogo.png')
from file(i2pbase + '/apps/routerconsole/jsp/themes/console/images/inbound.png')
from file(i2pbase + '/apps/routerconsole/jsp/themes/console/images/outbound.png')
}
into('light') {
from file(i2pbase + '/installer/resources/themes/console/light/console.css')
from file(i2pbase + '/apps/routerconsole/jsp/themes/console/light/console.css')
}
into('light/images') {
from file(i2pbase + '/installer/resources/themes/console/light/images/header.png')
from file(i2pbase + '/apps/routerconsole/jsp/themes/console/light/images/header.png')
}
}

View File

@ -1,39 +1,43 @@
package net.i2p.android;
import android.test.ActivityInstrumentationTestCase2;
import androidx.test.core.app.ActivityScenario;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import net.i2p.android.router.R;
import static android.support.test.espresso.Espresso.closeSoftKeyboard;
import static android.support.test.espresso.Espresso.onView;
import static android.support.test.espresso.Espresso.openActionBarOverflowOrOptionsMenu;
import static android.support.test.espresso.Espresso.pressBack;
import static android.support.test.espresso.action.ViewActions.click;
import static android.support.test.espresso.action.ViewActions.swipeLeft;
import static android.support.test.espresso.assertion.ViewAssertions.doesNotExist;
import static android.support.test.espresso.assertion.ViewAssertions.matches;
import static android.support.test.espresso.matcher.ViewMatchers.hasSibling;
import static android.support.test.espresso.matcher.ViewMatchers.isDescendantOfA;
import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
import static android.support.test.espresso.matcher.ViewMatchers.withId;
import static android.support.test.espresso.matcher.ViewMatchers.withParent;
import static android.support.test.espresso.matcher.ViewMatchers.withText;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import static androidx.test.espresso.Espresso.closeSoftKeyboard;
import static androidx.test.espresso.Espresso.onView;
import static androidx.test.espresso.Espresso.openActionBarOverflowOrOptionsMenu;
import static androidx.test.espresso.Espresso.pressBack;
import static androidx.test.espresso.action.ViewActions.click;
import static androidx.test.espresso.action.ViewActions.swipeLeft;
import static androidx.test.espresso.assertion.ViewAssertions.doesNotExist;
import static androidx.test.espresso.assertion.ViewAssertions.matches;
import static androidx.test.espresso.matcher.ViewMatchers.hasSibling;
import static androidx.test.espresso.matcher.ViewMatchers.isDescendantOfA;
import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
import static androidx.test.espresso.matcher.ViewMatchers.withId;
import static androidx.test.espresso.matcher.ViewMatchers.withParent;
import static androidx.test.espresso.matcher.ViewMatchers.withText;
import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
import static org.hamcrest.Matchers.allOf;
import static org.hamcrest.Matchers.not;
public class I2PActivityTest extends ActivityInstrumentationTestCase2<I2PActivity> {
public I2PActivityTest() {
super(I2PActivity.class);
}
@Override
protected void setUp() throws Exception {
super.setUp();
// For each test method invocation, the Activity will not actually be created
// until the first time this method is called.
getActivity();
@RunWith(AndroidJUnit4.class)
public class I2PActivityTest {
private ActivityScenario<I2PActivity> scenario;
@Before
public void setUp() {
scenario = ActivityScenario.launch(I2PActivity.class);
}
@Test
public void testMainTabs() {
onView(withId(R.id.router_onoff_button)).check(matches(isDisplayed()));
@ -55,6 +59,7 @@ public class I2PActivityTest extends ActivityInstrumentationTestCase2<I2PActivit
onView(withId(R.id.router_onoff_button)).check(matches(isDisplayed()));
}
@Test
public void testMainSwipe() {
onView(withId(R.id.router_onoff_button)).check(matches(isDisplayed()));
@ -70,9 +75,10 @@ public class I2PActivityTest extends ActivityInstrumentationTestCase2<I2PActivit
// TODO: test addressbook ViewPager
}
@Test
public void testSettingsNavigation() {
// Open settings menu
openActionBarOverflowOrOptionsMenu(getActivity());
openActionBarOverflowOrOptionsMenu(getInstrumentation().getTargetContext());
onView(withText(R.string.menu_settings)).perform(click());
// Open bandwidth page
@ -106,4 +112,4 @@ public class I2PActivityTest extends ActivityInstrumentationTestCase2<I2PActivit
pressBack();
onView(withText(R.string.settings_label_advanced)).check(doesNotExist());
}
}
}

View File

@ -27,6 +27,8 @@
<service
android:name=".service.RouterService"
android:icon="@drawable/ic_launcher_itoopie"
android:enabled="true"
android:exported="true"
android:label="@string/app_name">
<intent-filter>
<action android:name="net.i2p.android.router.service.IRouterState" />
@ -35,17 +37,28 @@
<provider
android:name=".provider.CacheProvider"
android:authorities="${applicationId}.provider" />
<receiver android:name=".receiver.OnBootReceiver">
<receiver
android:name=".receiver.OnBootReceiver"
android:exported="false">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
<receiver
android:name=".receiver.RemoteStartReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="net.i2p.android.router.receiver.START_I2P" />
</intent-filter>
</receiver>
<activity
android:name="net.i2p.android.I2PActivity"
android:icon="@drawable/ic_launcher_itoopie"
android:label="@string/app_name"
android:launchMode="singleTop">
android:launchMode="singleTop"
android:exported="true">
<!-- Console filters -->
<intent-filter>
<action android:name="android.intent.action.MAIN" />
@ -55,6 +68,10 @@
<action android:name="net.i2p.android.router.START_I2P" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<intent-filter>
<action android:name="net.i2p.android.router.service.APPROVE_SAM" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<!-- Addressbook filters -->
<intent-filter>
@ -105,6 +122,7 @@
<activity
android:name=".web.WebActivity"
android:configChanges="orientation|keyboardHidden"
android:exported="true"
android:label="I2P Web Browser">
<!-- Disabled, this browser is not very secure
Temporarily enabled until an alternative browser is ready -->

View File

@ -19,6 +19,7 @@ import net.i2p.android.router.MainFragment;
import net.i2p.android.router.R;
import net.i2p.android.router.SettingsActivity;
import net.i2p.android.router.addressbook.AddressbookContainer;
import net.i2p.android.router.service.AndroidSAMSecureSession;
import net.i2p.android.router.service.RouterService;
import net.i2p.android.router.service.State;
import net.i2p.android.router.util.Connectivity;
@ -134,6 +135,7 @@ public class I2PActivity extends I2PActivityBase implements
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
handleIntents();
}
@ -143,17 +145,29 @@ public class I2PActivity extends I2PActivityBase implements
Intent intent = getIntent();
String action = intent.getAction();
Util.d("handleIntent: intent=" + intent.toString());
if (action == null)
return;
Util.d("handleIntent: action=" + action);
Bundle extra = intent.getExtras();
if (extra != null)
Util.d("handleIntent extra=" + extra.toString());
switch (action) {
case "net.i2p.android.router.START_I2P":
if (mViewPager.getCurrentItem() != 0)
mViewPager.setCurrentItem(0, false);
autoStart();
break;
case "net.i2p.android.router.service.APPROVE_SAM":
Util.w("Affirmed SAM Connection");
String ID = extra.getString("ID");
Util.d("SAM ID was: " + ID);
AndroidSAMSecureSession.affirmResult(ID);
break;
case Intent.ACTION_PICK:
mViewPager.setFixedPage(2, R.string.select_an_address);
break;

View File

@ -35,6 +35,7 @@ class InitActivities {
public InitActivities(Context c) {
ctx = c;
myDir = Util.getFileDir(c);
Util.i("My app directory is "+myDir);
_ourVersion = Util.getOurVersion(c);
}
@ -59,90 +60,89 @@ class InitActivities {
}
void initialize() {
Util.i("Initializing the I2P resources");
if (checkNewVersion()) {
List<Properties> lProps = Util.getPropertiesFromPreferences(ctx);
Properties props = lProps.get(0);
List<Properties> lProps = Util.getPropertiesFromPreferences(ctx);
Properties props = lProps.get(0);
props.setProperty("i2p.dir.temp", myDir + "/tmp");
props.setProperty("i2p.dir.pid", myDir + "/tmp");
// Time disabled in default router.config
// But lots of time problems on Android, not all carriers support NITZ
// and there was no NTP before 3.0. Tablets should be fine?
// Phones in airplane mode with wifi enabled still a problem.
// Deactivated phones in airplane mode definitely won't have correct time.
if (Build.VERSION.SDK_INT < 11) // Honeycomb 3.0
props.setProperty("time.disabled", "false");
mergeResourceToFile(R.raw.router_config, "router.config", props);
mergeResourceToFile(R.raw.logger_config, "logger.config", lProps.get(1));
// This is not needed for now, i2ptunnel.config only contains tunnel
// settings, which can now be configured manually. We don't want to
// overwrite the user's tunnels.
//mergeResourceToFile(R.raw.i2ptunnel_config, "i2ptunnel.config", null);
copyResourceToFileIfAbsent(R.raw.i2ptunnel_config, "i2ptunnel.config");
// FIXME this is a memory hog to merge this way
mergeResourceToFile(R.raw.hosts_txt, "hosts.txt", null);
mergeResourceToFile(R.raw.more_hosts_txt, "hosts.txt", null);
copyResourceToFile(R.raw.blocklist_txt, "blocklist.txt");
props.setProperty("i2p.dir.temp", myDir + "/tmp");
props.setProperty("i2p.dir.pid", myDir + "/tmp");
// Time disabled in default router.config
// But lots of time problems on Android, not all carriers support NITZ
// and there was no NTP before 3.0. Tablets should be fine?
// Phones in airplane mode with wifi enabled still a problem.
// Deactivated phones in airplane mode definitely won't have correct time.
if (Build.VERSION.SDK_INT < 11) // Honeycomb 3.0
props.setProperty("time.disabled", "false");
mergeResourceToFile(R.raw.router_config, "router.config", props);
mergeResourceToFile(R.raw.logger_config, "logger.config", lProps.get(1));
// This is not needed for now, i2ptunnel.config only contains tunnel
// settings, which can now be configured manually. We don't want to
// overwrite the user's tunnels.
//mergeResourceToFile(R.raw.i2ptunnel_config, "i2ptunnel.config", null);
copyResourceToFileIfAbsent(R.raw.i2ptunnel_config, "i2ptunnel.config");
// FIXME this is a memory hog to merge this way
mergeResourceToFile(R.raw.hosts_txt, "hosts.txt", null);
mergeResourceToFile(R.raw.more_hosts_txt, "hosts.txt", null);
copyResourceToFile(R.raw.blocklist_txt, "blocklist.txt");
File abDir = new File(myDir, "addressbook");
abDir.mkdir();
copyResourceToFile(R.raw.subscriptions_txt, "addressbook/subscriptions.txt");
mergeResourceToFile(R.raw.addressbook_config_txt, "addressbook/config.txt", null);
File abDir = new File(myDir, "addressbook");
abDir.mkdir();
copyResourceToFileIfAbsent(R.raw.subscriptions_txt, "addressbook/subscriptions.txt");
mergeResourceToFile(R.raw.addressbook_config_txt, "addressbook/config.txt", null);
File docsDir = new File(myDir, "docs");
docsDir.mkdir();
copyResourceToFile(R.raw.ahelper_conflict_header_ht, "docs/ahelper-conflict-header.ht");
copyResourceToFile(R.raw.ahelper_new_header_ht, "docs/ahelper-new-header.ht");
copyResourceToFile(R.raw.ahelper_notfound_header_ht, "docs/ahelper-notfound-header.ht");
copyResourceToFile(R.raw.auth_header_ht, "docs/auth-header.ht");
copyResourceToFile(R.raw.baduri_header_ht, "docs/baduri-header.ht");
copyResourceToFile(R.raw.denied_header_ht, "docs/denied-header.ht");
copyResourceToFile(R.raw.dnf_header_ht, "docs/dnf-header.ht");
copyResourceToFile(R.raw.dnfb_header_ht, "docs/dnfb-header.ht");
copyResourceToFile(R.raw.dnfh_header_ht, "docs/dnfh-header.ht");
copyResourceToFile(R.raw.dnfp_header_ht, "docs/dnfp-header.ht");
copyResourceToFile(R.raw.enc_header_ht, "docs/enc-header.ht");
copyResourceToFile(R.raw.encp_header_ht, "docs/encp-header.ht");
copyResourceToFile(R.raw.localhost_header_ht, "docs/localhost-header.ht");
copyResourceToFile(R.raw.nols_header_ht, "docs/nols-header.ht");
copyResourceToFile(R.raw.nolsp_header_ht, "docs/nolsp-header.ht");
copyResourceToFile(R.raw.noproxy_header_ht, "docs/noproxy-header.ht");
copyResourceToFile(R.raw.protocol_header_ht, "docs/protocol-header.ht");
copyResourceToFile(R.raw.reset_header_ht, "docs/reset-header.ht");
copyResourceToFile(R.raw.resetp_header_ht, "docs/resetp-header.ht");
File docsDir = new File(myDir, "docs");
docsDir.mkdir();
/*copyResourceToFile(R.raw.ahelper_conflict_header_ht, "docs/ahelper-conflict-header.ht");
copyResourceToFile(R.raw.ahelper_new_header_ht, "docs/ahelper-new-header.ht");
copyResourceToFile(R.raw.ahelper_notfound_header_ht, "docs/ahelper-notfound-header.ht");
copyResourceToFile(R.raw.auth_header_ht, "docs/auth-header.ht");
copyResourceToFile(R.raw.baduri_header_ht, "docs/baduri-header.ht");
copyResourceToFile(R.raw.denied_header_ht, "docs/denied-header.ht");
copyResourceToFile(R.raw.dnf_header_ht, "docs/dnf-header.ht");
copyResourceToFile(R.raw.dnfb_header_ht, "docs/dnfb-header.ht");
copyResourceToFile(R.raw.dnfh_header_ht, "docs/dnfh-header.ht");
copyResourceToFile(R.raw.dnfp_header_ht, "docs/dnfp-header.ht");
copyResourceToFile(R.raw.enc_header_ht, "docs/enc-header.ht");
copyResourceToFile(R.raw.encp_header_ht, "docs/encp-header.ht");
copyResourceToFile(R.raw.localhost_header_ht, "docs/localhost-header.ht");
copyResourceToFile(R.raw.nols_header_ht, "docs/nols-header.ht");
copyResourceToFile(R.raw.nolsp_header_ht, "docs/nolsp-header.ht");
copyResourceToFile(R.raw.noproxy_header_ht, "docs/noproxy-header.ht");
copyResourceToFile(R.raw.protocol_header_ht, "docs/protocol-header.ht");
copyResourceToFile(R.raw.reset_header_ht, "docs/reset-header.ht");
copyResourceToFile(R.raw.resetp_header_ht, "docs/resetp-header.ht");*/
File cssDir = new File(docsDir, "themes/console/light");
cssDir.mkdirs();
//copyResourceToFile(R.raw.console_css, "docs/themes/console/light/console.css");
//copyResourceToFile(R.raw.android_css, "docs/themes/console/light/android.css");
File cssDir = new File(docsDir, "themes/console/light");
cssDir.mkdirs();
//copyResourceToFile(R.raw.console_css, "docs/themes/console/light/console.css");
//copyResourceToFile(R.raw.android_css, "docs/themes/console/light/android.css");
File imgDir = new File(docsDir, "themes/console/images");
imgDir.mkdir();
copyResourceToFile(R.drawable.i2plogo, "docs/themes/console/images/i2plogo.png");
copyResourceToFile(R.drawable.itoopie_sm, "docs/themes/console/images/itoopie_sm.png");
//copyResourceToFile(R.drawable.outbound, "docs/themes/console/images/outbound.png");
//copyResourceToFile(R.drawable.inbound, "docs/themes/console/images/inbound.png");
File imgDir = new File(docsDir, "themes/console/images");
imgDir.mkdir();
copyResourceToFile(R.drawable.i2plogo, "docs/themes/console/images/i2plogo.png");
copyResourceToFile(R.drawable.itoopie_sm, "docs/themes/console/images/itoopie_sm.png");
//copyResourceToFile(R.drawable.outbound, "docs/themes/console/images/outbound.png");
//copyResourceToFile(R.drawable.inbound, "docs/themes/console/images/inbound.png");
File img2Dir = new File(cssDir, "images");
img2Dir.mkdir();
//copyResourceToFile(R.drawable.header, "docs/themes/console/light/images/header.png");
File img2Dir = new File(cssDir, "images");
img2Dir.mkdir();
//copyResourceToFile(R.drawable.header, "docs/themes/console/light/images/header.png");
File certDir = new File(myDir, "certificates");
certDir.mkdir();
File certificates = new File(myDir, "certificates");
File[] allcertificates = certificates.listFiles();
if ( allcertificates != null) {
for (File f : allcertificates) {
Util.d("Deleting old certificate file/dir " + f);
FileUtil.rmdir(f, false);
}
File certDir = new File(myDir, "certificates");
certDir.mkdir();
File certificates = new File(myDir, "certificates");
File[] allCertificates = certificates.listFiles();
if ( allCertificates != null) {
for (File f : allCertificates) {
Util.d("Deleting old certificate file/dir " + f);
FileUtil.rmdir(f, false);
}
unzipResourceToDir(R.raw.certificates_zip, "certificates");
//File netDBDir = new File(myDir, "netDB");
//netDBDir.mkdir();
//unzipResourceToDir(R.raw.netdb_zip, "netDB");
}
File netDBDir = new File(myDir, "netDB");
netDBDir.mkdir();
//unzipResourceToDir(R.raw.netdb_zip, "netDB");
unzipResourceToDir(R.raw.certificates_zip, "certificates");
// Set up the locations so settings can find them
System.setProperty("i2p.dir.base", myDir);
@ -178,10 +178,16 @@ class InitActivities {
out.write(buf, 0, read);
} catch (IOException ioe) {
Util.e("copyResourceToFile" + "IOE: ", ioe);
} catch (Resources.NotFoundException nfe) {
Util.e("copyResourceToFile" + "NFE: ", nfe);
} finally {
if (in != null) try { in.close(); } catch (IOException ioe) {}
if (out != null) try { out.close(); } catch (IOException ioe) {}
if (in != null) try { in.close(); } catch (IOException ioe) {
Util.e("copyResourceToFile" + "IOE in.close(): ", ioe);
}
if (out != null) try { out.close(); } catch (IOException ioe) {
Util.e("copyResourceToFile" + "IOE out.close(): ", ioe);
}
}
}
/**
@ -192,7 +198,7 @@ class InitActivities {
FileOutputStream out = null;
ZipInputStream zis = null;
Util.d("Creating files in '" + myDir + "/" + folder + "/' from resource");
Util.i("Creating files in '" + myDir + "/" + folder + "/' from resource");
try {
// Context methods
in = ctx.getResources().openRawResource(resID);
@ -200,6 +206,7 @@ class InitActivities {
ZipEntry ze;
while ((ze = zis.getNextEntry()) != null) {
out = null;
Util.i("unzipping "+ze);
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
@ -209,26 +216,51 @@ class InitActivities {
}
String name = ze.getName();
File f = new File(myDir + "/" + folder +"/" + name);
if (ze.isDirectory()) {
Util.d("Creating directory " + myDir + "/" + folder +"/" + name + " from resource");
String canonicalPath = f.getCanonicalPath().replace("/user/0/", "/data/");
// account for canonical path differences when using .aab bundles
if (!canonicalPath.startsWith(myDir.replace("/user/0/", "/data/"))) {
// If these don't match, there's a path-traversal possibility.
// So ignore it.
Util.e("Path mismatch bug " + canonicalPath.toString() + " " + myDir.toString());
} else if (ze.isDirectory()) {
Util.i("Creating directory " + myDir + "/" + folder +"/" + name + " from resource");
f.mkdir();
} else {
Util.d("Creating file " + myDir + "/" + folder +"/" + name + " from resource");
Util.i("Creating file " + myDir + "/" + folder +"/" + name + " from resource");
//create all the leading directories
File newFile = new File(myDir+"/"+folder+"/"+name);
newFile.getParentFile().mkdirs();
byte[] bytes = baos.toByteArray();
out = new FileOutputStream(f);
out.write(bytes);
}
} catch (IOException ioe) {
Util.e("unzipResourceToDir" + "IOE: ", ioe);
} finally {
if (out != null) { try { out.close(); } catch (IOException ioe) {} out = null; }
if (out != null) {
try {
out.close();
} catch (IOException ioe) {
Util.e("unzipResourceToDir" + "IOE: interior out.close ", ioe);
}
out = null;
}
}
}
} catch (IOException ioe) {
Util.e("unzipResourceToDir" + "IOE: ", ioe);
} catch (Resources.NotFoundException nfe) {
Util.e("unzipResourceToDir" + "NFE: ", nfe);
} finally {
if (in != null) try { in.close(); } catch (IOException ioe) {}
if (out != null) try { out.close(); } catch (IOException ioe) {}
if (zis != null) try { zis.close(); } catch (IOException ioe) {}
if (in != null) try { in.close(); } catch (IOException ioe) {
Util.e("unzipResourceToDir" + "IOE: in.close() ", ioe);
}
if (out != null) try { out.close(); } catch (IOException ioe) {
Util.e("unzipResourceToDir" + "IOE: out.close() ", ioe);
}
if (zis != null) try { zis.close(); } catch (IOException ioe) {
Util.e("unzipResourceToDir" + "IOE: zis.close() ", ioe);
}
}
}
@ -252,18 +284,31 @@ class InitActivities {
private boolean checkNewVersion() {
Properties props = new Properties();
Util.i("Checking for a new install/version");
InputStream fin = null;
try {
fin = ctx.openFileInput(CONFIG_FILE);
DataHelper.loadProps(props, fin);
} catch (IOException ioe) {
Util.d("Looks like a new install");
Util.i("Looks like a new install");
} finally {
if (fin != null) try { fin.close(); } catch (IOException ioe) {}
if (fin != null) {
try {
Util.i("fin was not null "+CONFIG_FILE);
fin.close();
} catch (IOException ioe) {
Util.i("Error loading config:", ioe);
}
}else {
Util.i("fin was null");
}
}
String oldVersion = props.getProperty(PROP_INSTALLED_VERSION);
Util.i("Old version is:"+oldVersion);
boolean newInstall = oldVersion == null;
if (newInstall)
return true;
boolean newVersion = !_ourVersion.equals(oldVersion);
if (newVersion) {

View File

@ -1,5 +1,13 @@
package net.i2p.android.apps;
import static net.i2p.app.ClientAppState.INITIALIZED;
import static net.i2p.app.ClientAppState.RUNNING;
import static net.i2p.app.ClientAppState.STARTING;
import static net.i2p.app.ClientAppState.STOPPED;
import static net.i2p.app.ClientAppState.STOPPING;
import static net.i2p.app.ClientAppState.UNINITIALIZED;
import static net.i2p.update.UpdateType.BLOCKLIST;
import android.content.Context;
import net.i2p.android.router.NewsActivity;
@ -8,20 +16,26 @@ import net.i2p.android.router.util.Notifications;
import net.i2p.app.ClientApp;
import net.i2p.app.ClientAppManager;
import net.i2p.app.ClientAppState;
import static net.i2p.app.ClientAppState.*;
import net.i2p.crypto.SU3File;
import net.i2p.data.Base64;
import net.i2p.data.DataHelper;
import net.i2p.data.Hash;
import net.i2p.router.Banlist;
import net.i2p.router.Blocklist;
import net.i2p.router.RouterContext;
import net.i2p.router.news.BlocklistEntries;
import net.i2p.router.news.NewsEntry;
import net.i2p.router.news.NewsMetadata;
import net.i2p.router.news.NewsXMLParser;
import net.i2p.util.Addresses;
import net.i2p.util.EepGet;
import net.i2p.util.FileUtil;
import net.i2p.util.I2PAppThread;
import net.i2p.util.Log;
import net.i2p.util.ReusableGZIPInputStream;
import net.i2p.util.SecureFileOutputStream;
import net.i2p.util.RFC822Date;
import net.i2p.util.ReusableGZIPInputStream;
import net.i2p.util.SecureFile;
import net.i2p.util.SecureFileOutputStream;
import java.io.BufferedWriter;
import java.io.File;
@ -32,6 +46,7 @@ import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
/**
@ -58,6 +73,10 @@ public class NewsFetcher implements Runnable, EepGet.StatusListener, ClientApp {
private volatile ClientAppState _state = UNINITIALIZED;
public static final String APP_NAME = "NewsFetcher";
static final String PROP_BLOCKLIST_TIME = "router.blocklistVersion";
private static final String BLOCKLIST_DIR = "docs/feed/blocklist";
private static final String BLOCKLIST_FILE = "blocklist.txt";
/**
* As of 0.9.41, returns a new one every time. Only call once.
*/
@ -333,6 +352,11 @@ public class NewsFetcher implements Runnable, EepGet.StatusListener, ClientApp {
xml.delete();
NewsMetadata data = parser.getMetadata();
List<NewsEntry> entries = parser.getEntries();
BlocklistEntries ble = parser.getBlocklistEntries();
if (ble != null && ble.isVerified())
processBlocklistEntries(ble);
else
_log.info("No blocklist entries found in news feed");
String sudVersion = su3.getVersionString();
String signingKeyName = su3.getSignerString();
File to3 = new File(_context.getTempDir(), "tmp3-" + _context.random().nextInt() + ".xml");
@ -343,6 +367,104 @@ public class NewsFetcher implements Runnable, EepGet.StatusListener, ClientApp {
}
}
/**
* Process blocklist entries
*
* @since 0.9.57
*/
private void processBlocklistEntries(BlocklistEntries ble) {
long oldTime = _context.getProperty(PROP_BLOCKLIST_TIME, 0L);
if (ble.updated <= oldTime) {
if (_log.shouldWarn())
_log.warn("Not processing blocklist " + DataHelper.formatDate(ble.updated) +
", already have " + DataHelper.formatDate(oldTime));
return;
}
Blocklist bl = _context.blocklist();
Banlist ban = _context.banlist();
String reason = "Blocklist feed " + DataHelper.formatDate(ble.updated);
int banned = 0;
for (Iterator<String> iter = ble.entries.iterator(); iter.hasNext(); ) {
String s = iter.next();
if (s.length() == 44) {
byte[] b = Base64.decode(s);
if (b == null || b.length != Hash.HASH_LENGTH) {
iter.remove();
continue;
}
Hash h = Hash.create(b);
if (!ban.isBanlistedForever(h)) {
ban.banlistRouterForever(h, reason);
_context.commSystem().forceDisconnect(h);
}
} else {
byte[] ip = Addresses.getIP(s);
if (ip == null) {
iter.remove();
continue;
}
if (!bl.isBlocklisted(ip))
bl.add(ip);
}
if (++banned >= BlocklistEntries.MAX_ENTRIES) {
// prevent somebody from destroying the whole network
break;
}
}
for (String s : ble.removes) {
if (s.length() == 44) {
byte[] b = Base64.decode(s);
if (b == null || b.length != Hash.HASH_LENGTH)
continue;
Hash h = Hash.create(b);
if (ban.isBanlistedForever(h))
ban.unbanlistRouter(h);
} else {
byte[] ip = Addresses.getIP(s);
if (ip == null)
continue;
if (bl.isBlocklisted(ip))
bl.remove(ip);
}
}
// Save the blocks. We do not save the unblocks.
File f = new SecureFile(_context.getConfigDir(), BLOCKLIST_DIR);
f.mkdirs();
f = new File(f, BLOCKLIST_FILE);
boolean fail = false;
BufferedWriter out = null;
try {
out = new BufferedWriter(new OutputStreamWriter(new SecureFileOutputStream(f), "UTF-8"));
out.write("# ");
out.write(ble.supdated);
out.newLine();
banned = 0;
for (String s : ble.entries) {
s = s.replace(':', ';'); // IPv6
out.write(reason);
out.write(':');
out.write(s);
out.newLine();
if (++banned >= BlocklistEntries.MAX_ENTRIES)
break;
}
} catch (IOException ioe) {
_log.error("Error writing blocklist", ioe);
fail = true;
} finally {
if (out != null) try {
out.close();
} catch (IOException ioe) {}
}
if (!fail) {
f.setLastModified(ble.updated);
String upd = Long.toString(ble.updated);
_context.router().saveConfig(PROP_BLOCKLIST_TIME, upd);
}
if (_log.shouldWarn())
_log.warn("Processed " + ble.entries.size() + " blocks and " + ble.removes.size() + " unblocks from news feed");
}
/**
* Gunzip the file
*

View File

@ -102,8 +102,28 @@ public class BrowserListFragment extends Fragment implements
getContext().getResources().getStringArray(R.array.supported_browsers));
supportedLabels = Arrays.asList(
getContext().getResources().getStringArray(R.array.supported_browser_labels));
unsupported = Arrays.asList(
context.getResources().getStringArray(R.array.unsupported_browsers));
unsupported = allBrowsers(context);//Arrays.asList(
//context.getResources().getStringArray(R.array.unsupported_browsers));
}
public List<String> allBrowsers(Context context){
//try {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.google.com"));
List<ResolveInfo> browserList;
PackageManager pm = context.getPackageManager();
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
// gets all
browserList = pm.queryIntentActivities(intent, PackageManager.MATCH_ALL);
} else {
browserList = pm.queryIntentActivities(intent, 0);
}
//}catch()
List<String> finalResult = new ArrayList<String>();
for (ResolveInfo ri : browserList){
finalResult.add(ri.resolvePackageName);
}
return finalResult;
}
@Override

View File

@ -5,11 +5,13 @@ import android.os.Build;
import android.support.v4.util.Pair;
import android.support.v4.view.ViewCompat;
import android.support.v7.widget.RecyclerView;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import net.i2p.android.router.R;
import net.i2p.android.util.FragmentUtils;
@ -129,6 +131,17 @@ public class TunnelEntryAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
}
}
private void setClipboard(Context context, String text) {
if(android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.HONEYCOMB) {
android.text.ClipboardManager clipboard = (android.text.ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
clipboard.setText(text);
} else {
android.content.ClipboardManager clipboard = (android.content.ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
android.content.ClipData clip = android.content.ClipData.newPlainText("Copied Text", text);
clipboard.setPrimaryClip(clip);
}
}
// Replace the contents of a view (invoked by the layout manager)
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
@ -183,6 +196,19 @@ public class TunnelEntryAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
ViewCompat.getTransitionName(tvh.status));
Pair<View, String>[] pairs = new Pair[]{ statusPair};
mListener.onTunnelSelected(tunnel.getId(), pairs);
view.invalidate();
}
});
tvh.itemView.setOnLongClickListener(new View.OnLongClickListener() {
//@Override
public boolean onLongClick(View view) {
setClipboard(mCtx, tunnel.getDestHashBase32());
Toast clipboardMessage = Toast.makeText(mCtx, R.string.copied_base32_system_notification_title, Toast. LENGTH_LONG);
clipboardMessage.setGravity(Gravity.TOP, 0, 0); //optional
clipboardMessage.show();
view.invalidate();
return true;
}
});
break;
@ -190,6 +216,7 @@ public class TunnelEntryAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
default:
break;
}
}
// Return the size of the dataset (invoked by the layout manager)

View File

@ -406,20 +406,21 @@ public class MainFragment extends I2PFragmentBase {
//ctx.commSystem().getReachabilityStatus();
String status =
"Exploratory Tunnels in/out: " + inEx + " / " + outEx
+ "\nClient Tunnels in/out: " + inCl + " / " + outCl;
getString(R.string.notification_status_expl, inEx, outEx) + '\n' +
getString(R.string.notification_status_client, inCl, outCl);
// Need to see if we have the participation option set to on.
// I thought there was a router method for that? I guess not! WHY NOT?
// It would be easier if we had a number to test status.
String participate = "\nParticipation: " + tunnelStatus + " (" + part + ")";
String participate = '\n' + getString(R.string.settings_label_hiddenMode) + ": " + tunnelStatus + " (" + part + ")";
String details =
"\nMemory: " + DataHelper.formatSize(Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory())
+ "B / " + DataHelper.formatSize(Runtime.getRuntime().maxMemory()) + 'B'
+ "\nJob Lag: " + jobLag
+ "\nMsg Delay: " + msgDelay;
'\n' + getString(R.string.stats_memory) + ": " +
DataHelper.formatSize(Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()) +
"B / " + DataHelper.formatSize(Runtime.getRuntime().maxMemory()) + 'B' +
'\n' + getString(R.string.stats_lag) + ": " + jobLag +
'\n' + getString(R.string.stats_delay) + ": " + msgDelay;
_savedStatus = status + participate + details;
vAdvStatusText.setText(_savedStatus);
@ -661,6 +662,7 @@ public class MainFragment extends I2PFragmentBase {
// even if an error occurs. http://trac.i2p2.i2p/ticket/2783
intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
intent.setData(Uri.parse("package:" + packageName));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
try {
mContext.startActivity(intent);
} catch (ActivityNotFoundException activityNotFound) {

View File

@ -4,7 +4,7 @@ import android.content.Context;
import android.content.res.Resources;
import net.i2p.android.router.R;
import net.i2p.android.wizard.model.AbstractWizardModel;
import net.i2p.android.wizard.model.I2PB64DestinationPage;
import net.i2p.android.wizard.model.I2PDestinationPage;
import net.i2p.android.wizard.model.PageList;
import net.i2p.android.wizard.model.SingleTextFieldPage;
@ -22,7 +22,7 @@ public class AddressbookAddWizardModel extends AbstractWizardModel {
.setDescription(res.getString(R.string.addressbook_add_wizard_desc_name))
.setRequired(true),
new I2PB64DestinationPage(this, res.getString(R.string.addressbook_add_wizard_k_destination))
new I2PDestinationPage(this, res.getString(R.string.i2ptunnel_wizard_k_dest))
.setDescription(res.getString(R.string.addressbook_add_wizard_desc_destination))
.setRequired(true)
);

View File

@ -25,16 +25,16 @@ public class AboutDialog extends DialogFragment {
View view = li.inflate(R.layout.fragment_dialog_about, null);
final String currentVersion = Util.getOurVersion(getActivity());
TextView tv = (TextView)view.findViewById(R.id.about_version);
TextView tv = (TextView) view.findViewById(R.id.about_version);
tv.setText(currentVersion);
tv = (TextView)view.findViewById(R.id.url_project);
tv = (TextView) view.findViewById(R.id.url_project);
Linkify.addLinks(tv, I2Patterns.I2P_WEB_URL, "http://");
tv = (TextView)view.findViewById(R.id.url_android_bugs);
tv = (TextView) view.findViewById(R.id.url_android_bugs);
Linkify.addLinks(tv, I2Patterns.I2P_WEB_URL, "http://");
tv = (TextView)view.findViewById(R.id.url_android_volunteer);
tv = (TextView) view.findViewById(R.id.url_android_volunteer);
Linkify.addLinks(tv, I2Patterns.I2P_WEB_URL, "http://");
tv = (TextView)view.findViewById(R.id.url_donate);
tv = (TextView) view.findViewById(R.id.url_gitlab);
Linkify.addLinks(tv, I2Patterns.I2P_WEB_URL, "http://");
AlertDialog.Builder b = new AlertDialog.Builder(getActivity());

View File

@ -27,7 +27,11 @@ public class OnBootReceiver extends BroadcastReceiver implements I2PConstants {
Intent routerService = new Intent(context, RouterService.class);
// Ticket #2404
try {
context.startService(routerService);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O){
context.startForegroundService(routerService);
} else {
context.startService(routerService);
}
} catch (IllegalStateException ex) {
Util.e("Error: ", ex);
}

View File

@ -0,0 +1,23 @@
package net.i2p.android.router.receiver;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
import net.i2p.android.router.service.RouterService;
import net.i2p.android.router.util.Util;
public class RemoteStartReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
if(Util.getRouterContext() == null){
Intent rsIntent = new Intent(context, RouterService.class);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O){
context.startForegroundService(rsIntent);
} else {
context.startService(rsIntent);
}
Toast.makeText(context, "Starting I2P Router", Toast.LENGTH_SHORT).show();
}
}
}

View File

@ -0,0 +1,147 @@
package net.i2p.android.router.service;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import net.i2p.android.I2PActivity;
import net.i2p.android.I2PActivityBase;
import net.i2p.android.router.R;
import net.i2p.android.router.util.Notifications;
import net.i2p.android.router.util.Util;
import net.i2p.router.Router;
import net.i2p.router.RouterContext;
import net.i2p.sam.*;
import net.i2p.sam.SAMException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
/**
* Implements SAMSecureSessionInterface on Android platforms using a Toast
* as the interactive channel.
*
* @since 1.8.0
*/
public class AndroidSAMSecureSession extends AppCompatActivity implements SAMSecureSessionInterface {
private static final String URI_I2P_ANDROID = "net.i2p.android";
private final Context mCtx;
private final RouterService _routerService;
private final StatusBar _statusBar;
static private Map<String, Integer> results = new HashMap<>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
public static void affirmResult(String clientId) {
Util.d("Affirmed result for: " + clientId);
results.put(clientId, 1);
}
public AndroidSAMSecureSession(Context ctx, RouterService rCtx, StatusBar statusBar) {
mCtx = ctx;
_routerService = rCtx;
_statusBar = statusBar;
}
private void waitForResult(String clientId) {
for (int i=0;i<60;i++) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
Util.e("SAMSecureSession Error", e);
}
Integer result = results.get(clientId);
if (result == null)
continue;
if (result != -1)
break;
Util.d("Waiting on user to approve SAM connection for: "+clientId);
}
}
private boolean isResult(String clientId) {
waitForResult(clientId);
final Integer finResult = results.get(clientId);
if (finResult == null)
return false;
_routerService.updateStatus();
if (finResult == 0) {
Util.w("SAM connection cancelled by user request");
return false;
}
if (finResult == 1) {
Util.w("SAM connection allowed by user action");
return true;
}
Util.w("SAM connection denied by timeout.");
return false;
}
private boolean checkResult(String clientId) {
Intent intent = new Intent("net.i2p.android.router.service.APPROVE_SAM", null, mCtx, I2PActivity.class );
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setPackage(URI_I2P_ANDROID);
Bundle bundle = new Bundle();
bundle.putBoolean("approveSAMConnection", true);
bundle.putString("ID", clientId);
intent.putExtras(bundle);
PendingIntent pendingIntent;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.S) {
pendingIntent = PendingIntent.getActivity(
mCtx, 7656,
intent,
PendingIntent.FLAG_MUTABLE,
bundle);
} else {
pendingIntent = PendingIntent.getActivity(
mCtx, 7656,
intent,
PendingIntent.FLAG_UPDATE_CURRENT,
bundle);
}
String dlgText = mCtx.getString(R.string.settings_confirm_sam) + "\n";//""</br>";
dlgText += mCtx.getString(R.string.settings_confirm_sam_id) + clientId + "\n";//""</br>";
dlgText += mCtx.getString(R.string.settings_confirm_allow_sam) + "\n";//""</br>";
dlgText += mCtx.getString(R.string.settings_confirm_deny_sam) + "\n";//""</br>";
_statusBar.replaceIntent(StatusBar.ICON_ACTIVE, dlgText, pendingIntent);
return isResult(clientId);
}
@Override
public boolean approveOrDenySecureSession(Properties i2cpProps, Properties props) throws SAMException {
String ID = props.getProperty("USER");
if (ID == null)
ID = i2cpProps.getProperty("inbound.nickname");
if (ID == null)
ID = i2cpProps.getProperty("outbound.nickname");
if (ID == null)
ID = props.getProperty("ID");
if (ID == null) {
MessageDigest messageDigest = null;
try {
messageDigest = MessageDigest.getInstance("SHA-256");
} catch (NoSuchAlgorithmException e) {
ID = "No_ID_Present";
}
if (messageDigest != null) {
String combinedProps = i2cpProps.toString() + props.toString();
messageDigest.update(combinedProps.getBytes());
ID = messageDigest.digest().toString();
}else{
ID = "No_ID_Present";
}
}
return checkResult(ID);
}
}

View File

@ -1,21 +1,30 @@
package net.i2p.android.router.service;
import android.app.Notification;
import android.content.Context;
//import net.i2p.BOB.BOB;
import net.i2p.I2PAppContext;
import net.i2p.addressbook.DaemonThread;
import android.content.Intent;
import android.os.Looper;
import android.preference.PreferenceManager;
import net.i2p.android.apps.NewsFetcher;
import net.i2p.android.router.service.AndroidSAMSecureSession;
import net.i2p.android.router.util.Notifications;
import net.i2p.android.router.util.Util;
import net.i2p.i2ptunnel.TunnelControllerGroup;
import net.i2p.router.Job;
import net.i2p.router.JobImpl;
import net.i2p.router.Router;
import net.i2p.router.RouterContext;
import net.i2p.router.startup.RouterAppManager;
import net.i2p.util.I2PAppThread;
import net.i2p.sam.SAMBridge;
import net.i2p.sam.SAMSecureSessionInterface;
import java.io.File;
import java.io.IOException;
import java.util.Properties;
/**
* Load the clients we want.
@ -23,7 +32,8 @@ import java.io.IOException;
* We can't use LoadClientAppsJob (reading in clients.config) directly
* because Class.forName() needs a PathClassLoader argument -
* http://doandroids.com/blogs/2010/6/10/android-classloader-dynamic-loading-of/
* ClassLoader cl = new PathClassLoader(_apkPath, ClassLoader.getSystemClassLoader());
* ClassLoader cl = new PathClassLoader(_apkPath,
* ClassLoader.getSystemClassLoader());
*
* We can't extend LoadClientAppsJob to specify a class loader,
* even if we use it only for Class.forName() and not for
@ -39,37 +49,69 @@ import java.io.IOException;
class LoadClientsJob extends JobImpl {
private final Context mCtx;
private final RouterService _routerService;
private final Notifications _notif;
private DaemonThread _addressbook;
//private BOB _bob;
public SAMBridge SAM_BRIDGE;
private final StatusBar _statusBar;
// private BOB _bob;
/** this is the delay to load (and start) the clients. */
private static final long LOAD_DELAY = 60*1000;
private static final long LOAD_DELAY = 60 * 1000;
public LoadClientsJob(Context ctx, RouterContext rCtx, Notifications notif, StatusBar status) {
super(rCtx);
mCtx = ctx;
_routerService = null;
_notif = notif;
getTiming().setStartAfter(getContext().clock().now() + LOAD_DELAY);
_statusBar = status;
}
public LoadClientsJob(Context ctx, RouterContext rCtx, RouterService rSvc, Notifications notif, StatusBar status) {
super(rCtx);
mCtx = ctx;
_routerService = rSvc;
_notif = notif;
getTiming().setStartAfter(getContext().clock().now() + LOAD_DELAY);
_statusBar = status;
}
public LoadClientsJob(Context ctx, RouterContext rCtx, Notifications notif) {
super(rCtx);
mCtx = ctx;
_routerService = null;
_notif = notif;
getTiming().setStartAfter(getContext().clock().now() + LOAD_DELAY);
_statusBar = null;
}
public String getName() { return "Start Clients"; }
public String getName() {
return "Start Clients";
}
public void runJob() {
Job j = new RunI2PTunnel(getContext());
getContext().jobQueue().addJob(j);
Job jtunnel = new RunI2PTunnel(getContext());
getContext().jobQueue().addJob(jtunnel);
Thread t = new I2PAppThread(new StatSummarizer(), "StatSummarizer", true);
t.setPriority(Thread.NORM_PRIORITY - 1);
t.start();
// add other clients here
//_bob = new BOB(I2PAppContext.getGlobalContext(), null, new String[0]);
//try {
// _bob.startup();
//} catch (IOException ioe) {}
// _bob = new BOB(I2PAppContext.getGlobalContext(), null, new String[0]);
// try {
// _bob.startup();
// } catch (IOException ioe) {}
boolean useSAM = PreferenceManager.getDefaultSharedPreferences(mCtx).getBoolean("i2pandroid.client.SAM", true);
Util.i("SAM API " + useSAM);
if (useSAM) {
Job jsam = new RunI2PSAM(getContext());
getContext().jobQueue().addJob(jsam);
Util.i("SAM API started successfully" + useSAM);
} else {
Util.i("SAM API disabled, not starting " + useSAM);
}
getContext().addShutdownTask(new ClientShutdownHook());
}
@ -79,15 +121,18 @@ class LoadClientsJob extends JobImpl {
super(ctx);
}
public String getName() { return "Start I2P Tunnel"; }
public String getName() {
return "Start I2P Tunnel";
}
public void runJob() {
while (!getContext().router().isRunning()) {
try { Thread.sleep(1000); } catch (InterruptedException ie) { return; }
if (!getContext().router().isAlive()) {
if (!getContext().router().isRunning()) {
if (getContext().router().isAlive()) {
requeue(1000);
} else {
Util.e("Router stopped before i2ptunnel could start");
return;
}
return;
}
Util.d("Starting i2ptunnel");
TunnelControllerGroup tcg = TunnelControllerGroup.getInstance(getContext());
@ -101,7 +146,7 @@ class LoadClientsJob extends JobImpl {
NewsFetcher fetcher = NewsFetcher.getInstance(mCtx, getContext(), _notif);
ctx.routerAppManager().addAndStart(fetcher, new String[0]);
_addressbook = new DaemonThread(new String[] {"addressbook"});
_addressbook = new DaemonThread(new String[] { "addressbook" });
_addressbook.setName("Addressbook");
_addressbook.setDaemon(true);
_addressbook.start();
@ -112,14 +157,62 @@ class LoadClientsJob extends JobImpl {
}
}
private class RunI2PSAM extends JobImpl {
public RunI2PSAM(RouterContext ctx) {
super(ctx);
}
public String getName() {
return "Start SAM API";
}
public void runJob() {
if (!getContext().router().isRunning()) {
if (getContext().router().isAlive()) {
requeue(1000);
} else {
Util.e("Router stopped before SAM API could start");
}
return;
}
Util.d("Starting SAM");
try {
Util.i("Starting the SAM API");
Looper.prepare();
AndroidSAMSecureSession _androidSecureSession = new AndroidSAMSecureSession(mCtx, _routerService, _statusBar);
SAMSecureSessionInterface _secureSession = _androidSecureSession;
SAM_BRIDGE = new SAMBridge("127.0.0.1",
7656,
false,
SAM_PROPERTIES(),
"sam.keys",
new File("sam_config"),
_secureSession);
SAM_BRIDGE.run();
} catch (IOException e) {
Util.e(e.toString());
e.printStackTrace();
}
}
public Properties SAM_PROPERTIES() throws IOException {
Util.i("Getting the default properties");
Properties sam_properties = new Properties();
return sam_properties;
}
}
private class ClientShutdownHook implements Runnable {
public void run() {
Util.d("client shutdown hook");
// i2ptunnel registers its own hook
// StatSummarizer registers its own hook
// NewsFetcher registers its own hook
//if (_bob != null)
// _bob.shutdown(null);
// if (_bob != null)
// _bob.shutdown(null);
if (SAM_BRIDGE != null)
SAM_BRIDGE.shutdown(null);
if (_addressbook != null)
_addressbook.halt();
}

View File

@ -1,23 +1,17 @@
package net.i2p.android.router.service;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.os.Build;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
import android.os.RemoteCallbackList;
import android.os.RemoteException;
import android.support.annotation.RequiresApi;
import android.support.v4.app.NotificationCompat;
import android.support.v4.content.LocalBroadcastManager;
import net.i2p.android.router.R;
@ -175,42 +169,22 @@ public class RouterService extends Service {
}
_handler.removeCallbacks(_updater);
_handler.postDelayed(_updater, 50);
// We need to *not* check if we're restarting on Android greater than Oreo due to
// changes in how notifications work and the use of NotificationChannels.
if(!restart) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
startOwnForeground();
else
startForeground(1337, _statusBar.getNote());
} else {
if (Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
startForeground(1337, _statusBar.getNote());
}
}
//return START_STICKY;
return START_NOT_STICKY;
}
/**
* Android 8.1, 9.0, 10 handle foreground applications differently and as such require us to
* start our foreground service differently.
* */
@RequiresApi(api = Build.VERSION_CODES.O)
private void startOwnForeground(){
String NOTIFICATION_CHANNEL_ID = "com.example.simpleapp";
String channelName = "My Background Service";
NotificationChannel chan = new NotificationChannel(NOTIFICATION_CHANNEL_ID, channelName, NotificationManager.IMPORTANCE_NONE);
chan.setLightColor(Color.BLUE);
chan.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE);
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
assert manager != null;
manager.createNotificationChannel(chan);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this, NOTIFICATION_CHANNEL_ID);
Notification notification = notificationBuilder.setOngoing(true)
.setSmallIcon(R.drawable.i2plogo)
.setContentTitle(getString(R.string.running_background))
.setPriority(NotificationManager.IMPORTANCE_MIN)
.setCategory(Notification.CATEGORY_SERVICE)
.build();
startForeground(1337, notification);
}
/**
* maybe this goes away when the receiver can bind to us
*/
@ -262,7 +236,7 @@ public class RouterService extends Service {
throw new IllegalStateException("Router has no context?");
}
_context.router().setKillVMOnEnd(false);
Job loadJob = new LoadClientsJob(RouterService.this, _context, _notif);
Job loadJob = new LoadClientsJob(RouterService.this, _context, RouterService.this, _notif, _statusBar);
_context.jobQueue().addJob(loadJob);
_context.addShutdownTask(new ShutdownHook());
_context.addFinalShutdownTask(new FinalShutdownHook());
@ -288,6 +262,16 @@ public class RouterService extends Service {
private String _currTitle;
private boolean _hadTunnels;
public void updateStatus() {
RouterContext ctx = _context;
if(ctx != null && (_state == State.RUNNING || _state == State.ACTIVE || _state == State.GRACEFUL_SHUTDOWN)) {
Router router = ctx.router();
if(router.isAlive()) {
updateStatus(ctx);
}
}
}
private void updateStatus(RouterContext ctx) {
int active = ctx.commSystem().countActivePeers();
int known = Math.max(ctx.netDb().getKnownRouters() - 1, 0);

View File

@ -1,14 +1,19 @@
package net.i2p.android.router.service;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.support.v4.app.NotificationCompat;
import android.view.Gravity;
import android.widget.Toast;
import net.i2p.android.I2PActivity;
import net.i2p.android.router.R;
import net.i2p.android.router.util.Notifications;
class StatusBar {
@ -16,6 +21,9 @@ class StatusBar {
private final NotificationManager mNotificationManager;
private final NotificationCompat.Builder mNotifyBuilder;
private Notification mNotif;
private final String NOTIFICATION_CHANNEL_ID = "net.i2p.android.STARTUP_STATE_CHANNEL";
private final String channelName = "I2P Router Service";
NotificationChannel mNotificationChannel;
private static final int ID = 1337;
@ -28,39 +36,90 @@ class StatusBar {
StatusBar(Context ctx) {
mCtx = ctx;
mNotificationManager = (NotificationManager) ctx.getSystemService(
mNotificationManager = (NotificationManager) mCtx.getSystemService(
Context.NOTIFICATION_SERVICE);
assert mNotificationManager != null;
Thread.currentThread().setUncaughtExceptionHandler(
new CrashHandler(mNotificationManager));
int icon = ICON_STARTING;
// won't be shown if replace() is called
String text = ctx.getString(R.string.notification_status_starting);
String text = mCtx.getString(R.string.notification_status_starting);
mNotifyBuilder = notifyBuilder(icon, text);
}
mNotifyBuilder = new NotificationCompat.Builder(ctx)
.setContentText(text)
.setSmallIcon(icon)
.setColor(mCtx.getResources().getColor(R.color.primary_light))
.setOngoing(true)
.setOnlyAlertOnce(true);
private NotificationCompat.Builder notifyBuilder(int icon, String text) {
NotificationCompat.Builder tNotifyBuilder;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
tNotifyBuilder = new NotificationCompat.Builder(mCtx);
} else {
tNotifyBuilder = new NotificationCompat.Builder(mCtx, NOTIFICATION_CHANNEL_ID);
}
tNotifyBuilder.setContentText(text);
tNotifyBuilder.setSmallIcon(icon);
tNotifyBuilder.setColor(mCtx.getResources().getColor(R.color.primary_light));
tNotifyBuilder.setOngoing(true);
tNotifyBuilder.setPriority(NotificationManager.IMPORTANCE_LOW);
tNotifyBuilder.setCategory(Notification.CATEGORY_SERVICE);
Intent intent = new Intent(ctx, I2PActivity.class);
PendingIntent pi = this.pendingIntent();
tNotifyBuilder.setContentIntent(pi);
return tNotifyBuilder;
}
private PendingIntent pendingIntent() {
Intent intent = new Intent(mCtx, I2PActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pi = PendingIntent.getActivity(ctx, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
mNotifyBuilder.setContentIntent(pi);
PendingIntent pi = null;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.S) {
pi = PendingIntent.getActivity(mCtx,
0,
intent,
PendingIntent.FLAG_MUTABLE);
} else {
pi = PendingIntent.getActivity(mCtx,
0,
intent,
PendingIntent.FLAG_UPDATE_CURRENT);
}
return pi;
}
public void replace(int icon, int textResource) {
PendingIntent pi = pendingIntent();
mNotifyBuilder.setContentIntent(pi);
replace(icon, mCtx.getString(textResource));
}
public void replace(int icon, String title) {
PendingIntent pi = pendingIntent();
mNotifyBuilder.setContentIntent(pi);
mNotifyBuilder.setSmallIcon(icon)
.setStyle(null)
.setTicker(title);
update(title);
}
public void replaceIntent(int icon, String text, PendingIntent pi) {
mNotifyBuilder.setContentIntent(pi);
mNotifyBuilder.setPriority(NotificationCompat.PRIORITY_MAX);
mNotifyBuilder.setAutoCancel(true);
mNotifyBuilder.setStyle(new NotificationCompat.BigTextStyle().bigText(text));
mNotifyBuilder.setSmallIcon(icon).setContentText(text);
update(null, text);
}
public void replaceIntent(int icon, int textResource, PendingIntent pi) {
String text = mCtx.getString(textResource);
mNotifyBuilder.setContentIntent(pi);
mNotifyBuilder.setPriority(NotificationCompat.PRIORITY_MAX);
mNotifyBuilder.setAutoCancel(true);
mNotifyBuilder.setStyle(new NotificationCompat.BigTextStyle().bigText(text));
mNotifyBuilder.setSmallIcon(icon).setContentText(text);
update(null, text);
}
public void update(String title) {
update(title, null);
}
@ -72,8 +131,16 @@ class StatusBar {
}
public void update(String title, String text) {
mNotifyBuilder.setContentTitle(title)
.setContentText(text);
if (title != null)
mNotifyBuilder.setContentTitle(title);
if (text != null)
mNotifyBuilder.setContentText(text);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
mNotificationChannel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, channelName, NotificationManager.IMPORTANCE_LOW);
mNotificationManager.createNotificationChannel(mNotificationChannel);
mNotificationChannel.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE);
mNotifyBuilder.setChannelId(NOTIFICATION_CHANNEL_ID);
}
mNotif = mNotifyBuilder.build();
mNotificationManager.notify(ID, mNotif);
}

View File

@ -46,16 +46,36 @@ public class NamingServiceUtil {
String displayHost = host.equals(hostName) ? hostName :
hostName + " (" + host + ')';
String destB64 = data.getBundle(kDest).getString(Page.SIMPLE_DATA_KEY);
Destination dest = new Destination();
try {
dest.fromBase64(destB64);
} catch (DataFormatException e) {} // Already validated
String dest = data.getBundle(kDest).getString(Page.SIMPLE_DATA_KEY).split(":")[0];
Destination destination = new Destination();
if (dest.endsWith(".b32.i2p")) {
NamingService dns = NamingServiceUtil.getNamingService(Util.getRouterContext(),"");
destination = dns.lookup(dest);
int i = 0;
while (destination == null) {
dns = NamingServiceUtil.getNamingService(Util.getRouterContext(),"");
destination = dns.lookup(dest);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
i++;
if (i > 500){
break;
}
}
} else {
try {
destination.fromBase64(dest);
} catch (DataFormatException e) {
e.printStackTrace();
}
}
// Check if already in addressbook
Destination oldDest = ns.lookup(host);
if (oldDest != null) {
if (destB64.equals(oldDest.toBase64()))
if (destination.toBase64().equals(oldDest.toBase64()))
Toast.makeText(ctx,
"Host name " + displayHost + " is already in address book, unchanged.",
Toast.LENGTH_LONG).show();
@ -65,7 +85,7 @@ public class NamingServiceUtil {
Toast.LENGTH_LONG).show();
} else {
// Put the new host name
success = ns.put(host, dest);
success = ns.put(host, destination);
if (!success)
Toast.makeText(ctx,
"Failed to add Destination " + displayHost + " to naming service " + ns.getName(),

View File

@ -2,16 +2,20 @@ package net.i2p.android.router.util;
import net.i2p.android.router.R;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.support.v4.app.NotificationCompat;
public class Notifications {
private final Context mCtx;
private final NotificationManager mNotificationManager;
public static final int ICON = R.drawable.ic_stat_router_active;
public Notifications(Context ctx) {
@ -25,18 +29,36 @@ public class Notifications {
}
public void notify(String title, String text, Class<?> c) {
NotificationCompat.Builder b =
new NotificationCompat.Builder(mCtx)
.setContentTitle(title)
.setContentText(text)
.setSmallIcon(ICON)
.setColor(mCtx.getResources().getColor(R.color.primary_light))
.setAutoCancel(true);
notify(title, text, "", c);
}
public void notify(String title, String text, String channel, Class<?> c) {
NotificationCompat.Builder b;
if (Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
b = new NotificationCompat.Builder(mCtx);
} else {
if (channel.equals("")){
b = new NotificationCompat.Builder(mCtx);
} else {
b = new NotificationCompat.Builder(mCtx, channel);
}
}
b.setContentTitle(title);
b.setContentText(text);
b.setSmallIcon(ICON);
b.setColor(mCtx.getResources().getColor(R.color.primary_light));
b.setAutoCancel(true);
if (c != null) {
Intent intent = new Intent(mCtx, c);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pi = PendingIntent.getActivity(mCtx, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
PendingIntent pi;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.S) {
pi = PendingIntent.getActivity(mCtx, 0, intent, PendingIntent.FLAG_MUTABLE);
} else {
pi = PendingIntent.getActivity(mCtx, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
}
b.setContentIntent(pi);
}

View File

@ -1,47 +0,0 @@
package net.i2p.android.wizard.model;
import android.support.v4.app.Fragment;
import net.i2p.android.wizard.ui.I2PB64DestinationFragment;
import net.i2p.data.DataFormatException;
import net.i2p.data.Destination;
/**
* A page asking for an I2P Destination.
* This must be the B64 representation of a Destination.
*/
public class I2PB64DestinationPage extends SingleTextFieldPage {
private String mFeedback;
public I2PB64DestinationPage(ModelCallbacks callbacks, String title) {
super(callbacks, title);
}
@Override
public Fragment createFragment() {
return I2PB64DestinationFragment.create(getKey());
}
@Override
public boolean isValid() {
String data = mData.getString(SIMPLE_DATA_KEY);
try {
new Destination().fromBase64(data);
} catch (DataFormatException dfe) {
mFeedback = "Invalid B64";
return false;
}
mFeedback = "";
return true;
}
@Override
public boolean showFeedback() {
return true;
}
@Override
public String getFeedback() {
return mFeedback;
}
}

View File

@ -4,9 +4,12 @@ import java.util.Locale;
import android.support.v4.app.Fragment;
import net.i2p.I2PAppContext;
import net.i2p.android.wizard.ui.I2PDestinationFragment;
import net.i2p.client.naming.NamingService;
import net.i2p.data.DataFormatException;
import net.i2p.data.Destination;
import net.i2p.client.naming.DummyNamingService;
/**
* A page asking for an I2P Destination.
@ -27,12 +30,20 @@ public class I2PDestinationPage extends SingleTextFieldPage {
@Override
public boolean isValid() {
String data = mData.getString(SIMPLE_DATA_KEY);
String data = mData.getString(SIMPLE_DATA_KEY).split(":")[0];
if (data.toLowerCase(Locale.US).endsWith(".b32.i2p")) { /* B32 */
if (data.length() != BASE32_HASH_LENGTH + 8) {
mFeedback = "Invalid B32";
return false;
if (data.length() == BASE32_HASH_LENGTH){
mFeedback = "";
return true;
}
if (data.length() >= BASE32_HASH_LENGTH + 8) {
if (data.length() <= BASE32_HASH_LENGTH + 12) {
mFeedback = "";
return true;
}
}
mFeedback = "Invalid B32";
return false;
} else if (data.endsWith(".i2p")) { /* Domain */
// Valid
} else if (data.length() >= 516) { /* B64 */

View File

@ -1,208 +0,0 @@
/*
* Copyright 2013 str4d
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package net.i2p.android.wizard.ui;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.ParcelFileDescriptor;
import android.support.v4.app.Fragment;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import net.i2p.android.router.R;
import net.i2p.android.router.util.Util;
import net.i2p.android.wizard.model.Page;
import net.i2p.android.wizard.model.SingleTextFieldPage;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
public class I2PB64DestinationFragment extends Fragment {
static final int REQUEST_DESTINATION_FILE = 1;
private static final String ARG_KEY = "key";
private PageFragmentCallbacks mCallbacks;
private SingleTextFieldPage mPage;
protected TextView mFieldView;
private TextView mFeedbackView;
public static I2PB64DestinationFragment create(String key) {
Bundle args = new Bundle();
args.putString(ARG_KEY, key);
I2PB64DestinationFragment fragment = new I2PB64DestinationFragment();
fragment.setArguments(args);
return fragment;
}
public I2PB64DestinationFragment() {
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle args = getArguments();
String mKey = args.getString(ARG_KEY);
mPage = (SingleTextFieldPage) mCallbacks.onGetPage(mKey);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_wizard_page_single_text_field_picker, container, false);
((TextView) rootView.findViewById(android.R.id.title)).setText(mPage.getTitle());
((TextView) rootView.findViewById(R.id.wizard_text_field_desc)).setText(mPage.getDesc());
Button b = (Button) rootView.findViewById(R.id.wizard_text_field_pick);
b.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.setType("text/plain");
i.addCategory(Intent.CATEGORY_OPENABLE);
try {
startActivityForResult(
Intent.createChooser(i,"Select B64 file"),
REQUEST_DESTINATION_FILE);
} catch (android.content.ActivityNotFoundException ex) {
Toast.makeText(getActivity(), "Please install a File Manager.",
Toast.LENGTH_SHORT).show();
}
}
});
mFieldView = ((TextView) rootView.findViewById(R.id.wizard_text_field));
mFieldView.setHint(mPage.getTitle());
if (mPage.getData().getString(Page.SIMPLE_DATA_KEY) != null)
mFieldView.setText(mPage.getData().getString(Page.SIMPLE_DATA_KEY));
else if (mPage.getDefault() != null) {
mFieldView.setText(mPage.getDefault());
mPage.getData().putString(Page.SIMPLE_DATA_KEY, mPage.getDefault());
}
mFeedbackView = (TextView) rootView.findViewById(R.id.wizard_text_field_feedback);
return rootView;
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
if (!(activity instanceof PageFragmentCallbacks)) {
throw new ClassCastException("Activity must implement PageFragmentCallbacks");
}
mCallbacks = (PageFragmentCallbacks) activity;
}
@Override
public void onDetach() {
super.onDetach();
mCallbacks = null;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
mFieldView.addTextChangedListener(new TextWatcher() {
public void beforeTextChanged(CharSequence charSequence, int i, int i1,
int i2) {
}
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
public void afterTextChanged(Editable editable) {
mPage.getData().putString(Page.SIMPLE_DATA_KEY,
(editable != null) ? editable.toString() : null);
mPage.notifyDataChanged();
if (mPage.showFeedback()) {
mFeedbackView.setText(mPage.getFeedback());
}
}
});
}
@Override
public void setMenuVisibility(boolean menuVisible) {
super.setMenuVisibility(menuVisible);
// In a future update to the support library, this should override setUserVisibleHint
// instead of setMenuVisibility.
if (mFieldView != null) {
InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(
Context.INPUT_METHOD_SERVICE);
if (!menuVisible) {
imm.hideSoftInputFromWindow(getView().getWindowToken(), 0);
}
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_DESTINATION_FILE) {
if (resultCode == Activity.RESULT_OK) {
Uri result = data.getData();
BufferedReader br = null;
try {
ParcelFileDescriptor pfd = getActivity().getContentResolver().openFileDescriptor(result, "r");
br = new BufferedReader(
new InputStreamReader(
new ParcelFileDescriptor.AutoCloseInputStream(pfd)));
try {
mFieldView.setText(br.readLine());
} catch (IOException ioe) {
Util.e("Failed to read B64 file", ioe);
Toast.makeText(getActivity(), "Failed to read B64 file.",
Toast.LENGTH_SHORT).show();
}
} catch (FileNotFoundException fnfe) {
Util.e("Could not find B64 file", fnfe);
Toast.makeText(getActivity(), "Could not find B64 file.",
Toast.LENGTH_SHORT).show();
} catch (SecurityException se) {
Util.e("Could not open B64 file", se);
Toast.makeText(getActivity(), "Could not open B64 file.",
Toast.LENGTH_SHORT).show();
} finally {
if (br != null)
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
}

View File

@ -64,13 +64,13 @@
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/about_donate" />
android:text="@string/about_gitlab" />
<TextView
android:id="@+id/url_donate"
android:id="@+id/url_gitlab"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/url_donate" />
android:text="@string/url_gitlab" />
</LinearLayout>

View File

@ -0,0 +1,17 @@
<html>
<head></head>
<body>
<h2>Privacy Brower has native I2P support!</h2>
<p>Make sure your I2P router is started before launching Privacy Browser</p>
<p>Privacy Browser supports both I2P and Orbot (Tor), but not at the same time.</p>
<h2>How to configure Privacy Browser:</h2>
<ol>
<li>Open the main menu and tap “Settings”</li>
<li>Select "Disable Javascript"(Recommended)</li>
<li>Select "Enable Incognito Mode"(Optional)</li>
<li>Tap the "Proxy" menu item and select "I2P" from the submenu</li>
<li>Exit the settings menu.</li>
</ol>
<a href="https://eyedeekay.github.io/Configuring-Privacy-Browser-for-I2P-on-Android/">A detailed guide with screenshots to is available online</a>
</body>
</html>

View File

@ -100,3 +100,56 @@ tunnel.3.option.outbound.length=2
tunnel.3.option.outbound.lengthVariance=0
tunnel.3.option.outbound.priority=15
tunnel.3.startOnLoad=true
# I2P Git Repositories SSH Access
tunnel.6.description=I2P Git Repositories SSH Access
tunnel.6.interface=127.0.0.1
tunnel.6.listenPort=7670
tunnel.6.name=gitssh.idk.i2p
tunnel.6.option.i2cp.closeIdleTime=1800000
tunnel.6.option.i2cp.closeOnIdle=false
tunnel.6.option.i2cp.delayOpen=true
tunnel.6.option.i2cp.destination.sigType=7
tunnel.6.option.i2cp.newDestOnResume=false
tunnel.6.option.i2cp.reduceIdleTime=1200000
tunnel.6.option.i2cp.reduceOnIdle=true
tunnel.6.option.i2cp.reduceQuantity=1
tunnel.6.option.inbound.backupQuantity=1
tunnel.6.option.inbound.length=3
tunnel.6.option.inbound.nickname=gitssh.idk.i2p
tunnel.6.option.inbound.quantity=3
tunnel.6.option.outbound.backupQuantity=1
tunnel.6.option.outbound.length=3
tunnel.6.option.outbound.nickname=gitssh.idk.i2p
tunnel.6.option.outbound.quantity=3
tunnel.6.sharedClient=false
tunnel.6.startOnLoad=false
tunnel.6.targetDestination=gitssh.idk.i2p
tunnel.6.type=client
# I2P Git Repositories HTTP Access(Android only)
# Disabled by default, useful for Android gitlab clients like labcoat
tunnel.7.description=I2P Git Repositories HTTP Access(Android Only)
tunnel.7.interface=127.0.0.1
tunnel.7.listenPort=7671
tunnel.7.name=git.idk.i2p
tunnel.7.option.i2cp.closeIdleTime=1800000
tunnel.7.option.i2cp.closeOnIdle=false
tunnel.7.option.i2cp.delayOpen=true
tunnel.7.option.i2cp.destination.sigType=7
tunnel.7.option.i2cp.newDestOnResume=false
tunnel.7.option.i2cp.reduceIdleTime=1200000
tunnel.7.option.i2cp.reduceOnIdle=true
tunnel.7.option.i2cp.reduceQuantity=1
tunnel.7.option.inbound.backupQuantity=1
tunnel.7.option.inbound.length=3
tunnel.7.option.inbound.nickname=git.idk.i2p
tunnel.7.option.inbound.quantity=3
tunnel.7.option.outbound.backupQuantity=1
tunnel.7.option.outbound.length=3
tunnel.7.option.outbound.nickname=git.idk.i2p
tunnel.7.option.outbound.quantity=3
tunnel.7.sharedClient=false
tunnel.7.startOnLoad=false
tunnel.7.targetDestination=ssh.idk.i2p
tunnel.7.type=client

View File

@ -50,7 +50,7 @@ i2np.bandwidth.outboundKBytesPerSecond=50
#
# NTCP
#
i2np.ntcp.enable=false
i2np.ntcp.enable=true
i2np.ntcp.maxConnections=32
#
# NTCP2

View File

@ -36,9 +36,8 @@ services. You can also access the normal web anonymously via I2P's built-in web
proxy (outproxy). <a href="https://geti2p.net/en/about/browser-config"
target="_blank">Configure your browser</a> to use the HTTP proxy at
<code>127.0.0.1 port 4444</code>, then browse to an eepsite or a normal,
unencrypted <code>http://</code> address. For a pre-configured browser, you may
wish to try <a href="http://echelon.i2p/i2pfox/">I2PFox</a>, a custom build of
Firefox security hardened and tailored especially for I2P. If you wish to
unencrypted <code>http://</code> address.
If you wish to
disable or change outproxy access to the normal internet, remove or modify the
outproxy entry for <code>false.i2p</code> under the <i>Outproxies</i> option in
the <a href="/i2ptunnel/edit?tunnel=0" target="_blank">I2P HTTP Proxy Tunnel
@ -80,13 +79,12 @@ target="_blank">geti2p.net</a>. If you want to know
more about how I2P works or how you can participate, this is your first port of
call!</li>
<li class="tidylist"><b>I2P Community Forums</b><br><a
href="http://forum.i2p/" target="_blank">forum.i2p</a>: A secure
href="http://i2pforum.i2p/" target="_blank">i2pforum.i2p</a>: A secure
and anonymous online forum community where developers
and users alike discuss problems and ideas relating to I2P and associated
topics, and <a href="http://zzz.i2p/" target="_blank">zzz's developer
forums</a> for both end users and developers.</li>
topics.</li>
<li class="tidylist"><b>I2P Anonymous Pastebin</b><br><a
href="http://pastethis.i2p/" target="_blank">pastethis.i2p</a>: Secure and
href="http://paste.idk.i2p/" target="_blank">paste.idk.i2p</a>: Secure and
anonymous paste service allowing anonymous text and text-based code
sharing over I2P.</li>
<li class="tidylist"><b>Echelon's I2P Resources</b><br><a
@ -95,14 +93,6 @@ href="http://echelon.i2p/" target="_blank">echelon.i2p</a>: I2P software
including a <a href="http://echelon.i2p/I2Pguide/index.html"
target="_blank">beginner's guide</a> and pre-release developer builds of I2P
for the adventurous to try.</li>
<li class="tidylist"><b>Ugha's Wiki</b><br><a href="http://ugha.i2p/"
target="_blank">ugha.i2p</a>: An open wiki that anyone can edit with plenty of
information about I2P, help for beginners, additional links into the network,
and more.</li>
<li class="tidylist"><b>I2P-to-Freenet Proxy</b><br><a
href="http://fproxy.tino.i2p/" target="_blank">fproxy.tino.i2p</a>:
Peer into the world of the <a href="http://freenetproject.org/"
target="_blank">Freenet</a> network with Tino's I2P-to-Freenet proxy.</li>
<li class="tidylist"><b>The Planet (on I2P)</b><br><a
href="http://planet.i2p/" target="_blank">planet.i2p</a>: An RSS aggregator
site that takes news and events from around I2P and publishes them all in one
@ -149,32 +139,24 @@ discussion forum</a>,
<a href="irc://127.0.0.1:6668/i2p-help">#i2p-help</a>, <a
href="irc://127.0.0.1:6668/i2p">#i2p</a> or <a
href="irc://127.0.0.1:6668/i2p-chat">#i2p-chat</a> on I2P's internal IRC
network (<code>irc.postman.i2p</code> or <code>irc.freshcoffee.i2p</code>).
network (<code>irc.postman.i2p</code> or <code>irc.echelon.i2p</code>).
These channels are also available outside of I2P's encrypted, anonymous network
via <a href="irc://irc.freenode.net/i2p">Freenode IRC</a>.
</li>
<li class="tidylist"><b>Reporting Bugs</b><br>If you'd like to report a bug,
please file a ticket on <a href="http://trac.i2p2.i2p/"
target="_blank">trac.i2p2.i2p</a>. For developer-related discussions, please
visit <a href="http://zzz.i2p/" target="_blank">zzz's developer forums</a> or
please file a ticket on <a href="http://git.idk.i2p/"
target="_blank">git.idk.i2p</a>. For developer-related discussions, please
visit <a href="http://i2pforum.i2p/" target="_blank">I2P's developer forums</a> or
come and visit the <a href="irc://127.0.0.1:6668/i2p-dev">developer channel</a>
on I2P's IRC network. Developers can browse source at <a
href="http://stats.i2p/cgi-bin/viewmtn/" target="_blank">zzz's mtn repository
viewer</a>, <a href="http://i2host.i2p/cgi-bin/view/branch/changes/i2p.i2p"
target="_blank">Sponge's instance</a>, or via <a
href="http://trac.i2p2.i2p/browser" target="_blank">trac.i2p2.i2p</a>. We
primarily use <a href="http://i2p-projekt.i2p/monotone.html"
target="_blank">monotone</a> to manage our source code.
href="git.idk.i2p/i2p-hackers/i2p.i2p/-/commits/master" target="_blank">git.idk.i2p</a> or
<a href="https://github.com/i2p/i2p.i2p" target="_blank">GitHub</a>.
</li>
<li class="tidylist"><b>Get Involved!</b><br>I2P is developed and maintained
mostly through unfunded, voluntary participation by community members. We're
happy to accept <a href="http://i2p-projekt.i2p/donate.html"
target="_blank">donations</a>, which go into essential hosting and
administrative costs. We have <a href="http://i2p-projekt.i2p/bounties.html"
target="_blank">cash bounties</a> for aspects of I2P for developers looking for
incentives to participate, and we're always looking for more <a
mostly through unfunded, voluntary participation by community members. We're
always looking for more <a
href="http://i2p-projekt.i2p/newdevelopers.html" target="_blank">Java coders</a>,
<a href="http://i2p-projekt.i2p/newtranslators.html"
target="_blank">translators</a>, promoters and users to help I2P grow. The
@ -188,6 +170,6 @@ page</a> on the website.
</ul>
<div class="topness"><a href="#top">[Return to Top]</a></div>
<div class="footnote"><hr>Document updated: June 2011</div>
<div class="footnote"><hr>Document updated: May 2021</div>
</div>
</body></html>

View File

@ -45,7 +45,9 @@
<string name="action_reload">إعادة تحميل</string>
<string name="action_refresh">تحديث</string>
<string name="stats_not_ready">مدير الإحصاءات غير جاهز حاليا. يرجى المحاولة لاحقا</string>
<string name="statistics">إحصائيات</string>
<string name="routers">الموجه</string>
<string name="countries">بلدان</string>
<string name="country">البلد</string>
<string name="transport">نقل</string>
<string name="version">إصدار</string>
@ -105,6 +107,7 @@
<string name="description">وصف</string>
<string name="auto_start">تشغيل آلي</string>
<string name="outproxies">بروكسي خارجي</string>
<string name="irc">IRC</string>
<string name="use_ssl">استعمل SSL</string>
<string name="profile">بروفايل</string>
<string name="access_control">سيطرة الوصول</string>

View File

@ -169,7 +169,6 @@
<string name="about_bugs">Xətalar və dəstək:</string>
<string name="about_helpwanted">Yardıma ehtiyac var!</string>
<string name="about_volunteer">Proqramı yaxşılaşdırmaq istəyirsiniz? Android forumunda könüllü:</string>
<string name="about_donate">İnkişaf və sınaq üçün daha çox Android qurğusunun alınmasına pul və ya bitkoyn bağışlamaq istəyirsiniz? Keç:</string>
<string name="menu_help">Kömək</string>
<string name="general">Əsas</string>
<string name="label_router">İctimai ünvanlar</string>
@ -230,7 +229,6 @@
<string name="enabled">Aktivdir</string>
<string name="i2ptunnel_wizard_desc_name"> Tunel siyahısında müəyyənləşdirilməsi üçün tunel adı.</string>
<string name="i2ptunnel_wizard_desc_desc">Tunelin təsviri. Bu, istəkdən asılıdır və tamamilə informativdir.</string>
<string name="i2ptunnel_wizard_desc_dest">Bu müştəri tunelinə bağlanacaq xidmətin İ2P hədəfinə yazın. Bu, tam əsaslı 64 hədəf açarı və ya ünvan kitabından bir İ2P hostun adı ola bilər. </string>
<string name="i2ptunnel_wizard_desc_outproxies">Bu növ tunel (HTTP və ya SOCKS) üçün hər hansı bir outproxies bilirsinizsə, onları doldurun. Proksiləri vergül vasitəsilə ayırın. </string>
<string name="i2ptunnel_wizard_desc_target_host">Bu, xidmətinizin işlədiyi IP-dir, adətən eyni alətdə olduğundan 127.0.0.1 avtomatik olaraq doldurulur.</string>
<string name="i2ptunnel_wizard_desc_target_port">Bu, xidmət əlaqələrini qəbul edən portdur.</string>

View File

@ -2,10 +2,12 @@
<resources>
<string name="app_name">I2P</string>
<string name="desc_i2p_logo">I2P logo</string>
<string name="choose_language">Vyberte jazyk</string>
<string name="welcome_new_install">Vítejte v I2P! Tato aplikace je ALPHA software a neposkytuje silnou anonymitu. Prosím přečtěte si poznámky k verzi a informace o licenci.</string>
<string name="welcome_new_version">Nová verze aktualizována. Prosím přečtěte si poznámky k verzi. Verze:</string>
<string name="label_tunnels">Tunely</string>
<string name="label_status">Status</string>
<string name="label_console">Konzole</string>
<string name="label_addresses">Adresy</string>
<string name="label_addressbook">Adresář</string>
<string name="label_i2ptunnel_client">Tunely klienta</string>
@ -20,14 +22,41 @@
<string name="label_graphs">Grafy</string>
<string name="button_router_off">Dlouze stiskněte pro spuštění I2P</string>
<string name="button_router_on">I2P běží (dlouze stiskněte pro zastavení)</string>
<string name="button_router_graceful">I2P se vypne za %s</string>
<string name="button_shutdown_now">Podržte pro zastavení</string>
<string name="button_cancel_graceful">Podržte pro zrušení vypnutí</string>
<string name="no_internet">Není dostupné žádné internetové připojení</string>
<string name="hidden">Skryté</string>
<string name="testing">Testování</string>
<string name="firewalled">Za firewallem</string>
<string name="symmetric_nat">Symetrický NAT</string>
<string name="net_status_error_i2cp">I2CP chyba manažera klienta - zkontrolujte logy</string>
<!--Parameter is a time, e.g. 32s or 2m-->
<string name="net_status_error_skew">Časový rozdíl %s</string>
<string name="net_status_error_unresolved_tcp">Nevyřešená/unresolved TCP adresa</string>
<string name="net_status_error_private_tcp">Soukromá TCP adresa</string>
<string name="net_status_warn_firewalled_inbound_tcp">Za firewallem, zapnutý příchozí TCP</string>
<string name="net_status_warn_firewalled_floodfill">Za firewallem a floodfill</string>
<string name="net_status_info_disconnected">Odpojeno - zkontrolujte síťové připojení</string>
<string name="net_status_error_udp_port">UDP port je používán - změňte v nastavení a restartujte</string>
<string name="net_status_error_no_active_peers">Žádní aktivní peeři - zkontrolujte síťové připojení a firewall</string>
<string name="net_status_error_udp_disabled_tcp_not_set">UDP vypnuto a příchozí TCP hostitel/port nenastaven</string>
<string name="net_status_warn_firewalled_udp_disabled">Za firewallem, vypnutý UDP</string>
<string name="shared_clients">Sdílení klienti</string>
<string name="uptime">Dostupnost</string>
<string name="active_peers">Aktivní peeři</string>
<string name="known_peers">Známí peeři</string>
<!--Character to indicate a client tunnel. Usually first letter of the word "client".-->
<string name="char_client_tunnel">C</string>
<!--Character to indicate a server tunnel. Usually first letter of the word "server".-->
<string name="char_server_tunnel">B</string>
<string name="no_tunnels_running">Zatím neběží žádné tunely.</string>
<string name="download">Stáhnout</string>
<string name="upload">Nahrát</string>
<string name="configure_browser_title">Nastavit prohlížeč?</string>
<string name="configure_browser_for_i2p">Přejete si nastavit prohlížeč pro procházení I2P stránek? (Toto můžete udělat i později z menu nápovědy.)</string>
<string name="configure_no_doze_title">Spravovat optimalizace baterie?</string>
<string name="configure_no_doze">I2P funguje nejlépe, pokud ho necháte běžet. Abyste předešli jeho zavření Androidem ve snaze o úsporu energie, můžete I2P přidat do seznamu výjimek úspory baterie. Toto výrazně zvýší spolehlivost aplikace.\n\nNechat I2P běžet na pozadí? (doporučeno)</string>
<string name="first_start_title">Gratulujeme k nainstalování I2P!</string>
<string name="first_start_welcome"><b>Vítejte v I2P\'</b>Prosíme<b>buďte trpěliví</b> dokud I2P nenastartuje a najde peery.</string>
<string name="first_start_read">Během čekání si prosím přečtěte poznámky k verzi a úvodní stránku.</string>
@ -47,29 +76,129 @@
<string name="action_refresh">Obnovit</string>
<string name="hint_search_addressbook">Prohledat adresář</string>
<string name="action_reload_subscriptions">Znovu načíst odběry</string>
<string name="news_last_updated">Novinky naposledy aktualizovány před %s</string>
<string name="news_last_checked">Novinky naposledy zkontrolovány před %s</string>
<string name="news_updated">Novinky aktualizovány</string>
<string name="view_news">Dotkněte se pro zobrazení posledních novinek I2P</string>
<string name="router_not_running">Tento router nepracuje</string>
<string name="router_shutting_down">Router se vypíná.</string>
<string name="stats_not_ready">Manažer statistik ještě není připraven. Zkuste to prosím později.</string>
<string name="select_an_address">Vyberte adresu.</string>
<string name="no_graphs_configured">Žádné grafy nebyly konfigurovány. Můžete si vybrat převod statistik do grafů v menu nastavení. Jakékoliv změny se projeví po 60 sekundách.</string>
<string name="configure_graphs">Konfigurovat grafy</string>
<string name="graphs_not_ready">Grafy ještě nejsou připraveny. Zkuste to znovu později.</string>
<string name="statistics">Statistiky</string>
<string name="routers">Routery</string>
<string name="leasesets">Sety pronájmu</string>
<string name="countries">Země</string>
<string name="country">Země</string>
<string name="transport">Přenos</string>
<string name="versions">Verze</string>
<string name="version">Verze</string>
<string name="count">Počet</string>
<string name="tname_0">Skrytý nebo spouštějící se</string>
<string name="netdb_routers_empty">Žádné routery ve vaší NetDB</string>
<string name="netdb_leases_empty">Žádné LeaseSets ve vaší NetDB</string>
<string name="netdb_leases_empty">Žádné sety pronájmu ve vaší NetDB</string>
<string name="notification_status_starting">I2P startuje</string>
<string name="notification_status_restarting">I2P se restartuje</string>
<string name="notification_status_waiting">I2P čeká na síťové připojení</string>
<string name="notification_status_starting_after_waiting">Síť připojena, I2P startuje</string>
<string name="notification_status_running">I2P běží</string>
<string name="notification_status_client_ready">Klientské tunely jsou připraveny</string>
<string name="notification_status_client_down">Klientské tunely neběží</string>
<string name="notification_status_graceful">Zastavuji I2P za %s</string>
<string name="notification_status_stopping">Zastavuji I2P</string>
<string name="notification_status_stopping_after_net">Síť odpojena, zastavuji I2P</string>
<string name="notification_status_shutdown_cancelled">Vypnutí zrušeno</string>
<string name="notification_status_shutting_down">I2P se vypíná</string>
<string name="notification_status_bw">Datový přenos: %1$sBps stahování / %2$sBps nahrávání</string>
<string name="notification_status_peers">Peeři: %1$d aktivní, %2$d známí</string>
<string name="notification_status_expl">Průzkumné tunely: %1$d/%2$d</string>
<string name="notification_status_client">Klientské tunely: %1$d/%2$d</string>
<string name="stats_memory">Paměť využitá/max.</string>
<string name="stats_lag">Zpoždění práce</string>
<string name="stats_delay">Prodleva zprávy</string>
<string name="copied_base32_system_notification_title">Base32 zkopírován do schránky</string>
<string name="copied_base32_system_notification_body">Adresa vašeho I2P tunelu byla zkopírována do schránky.</string>
<string name="menu_settings">Nastavení</string>
<string name="settings_enable">Zapnout</string>
<string name="settings_desc_subscriptions">URL odběrů</string>
<string name="settings_label_bandwidth_net">Datový přenos a síť</string>
<string name="settings_label_startOnBoot">Spustit I2P po startu OS</string>
<string name="settings_desc_startOnBoot">Automaticky připojit k I2P, jakmile se spustí vaše zařízení Android</string>
<string name="settings_label_bandwidth">Šířka pásma</string>
<string name="settings_label_bw_inbound">Příchozí rychlost</string>
<string name="settings_desc_bw_inbound">Maximální příchozí rychlost</string>
<string name="settings_label_bw_outbound">Odchozí rychlost</string>
<string name="settings_desc_bw_outbound">Maximální odchozí rychlost</string>
<string name="settings_label_network">Síť</string>
<string name="settings_label_hiddenMode">Spoluúčast</string>
<string name="settings_desc_hiddenMode">Vypnout skrytý režim</string>
<string name="settings_label_maxPartTunnels">Max. participujících tunelů</string>
<string name="settings_desc_maxPartTunnels">Maximum tunelů na kterých participovat (výchozí=20)</string>
<string name="settings_dialog_maxPartTunnels">Maximum tunelů na kterých participovat</string>
<string name="settings_label_sharePercent">Procento sdílení</string>
<string name="settings_desc_sharePercent">Procento datového přenosu ke sdílení (výchozí=80)</string>
<string name="settings_dialog_sharePercent">Procento šířky pásma ke sdílení</string>
<string name="settings_desc_upnp">Automatické otevření portů firewallu</string>
<string name="settings_label_logging">Logování</string>
<string name="settings_label_default_log_level">Výchozí úroveň logování</string>
<string name="settings_label_appearance">Podoba</string>
<string name="settings_label_language">Jazyk</string>
<string name="settings_default">Výchozí</string>
<string name="settings_label_advanced">Pokročilé</string>
<string name="settings_label_showStats">Statistiky routeru</string>
<string name="settings_summ_showStats">Zobrazit pokročilé statistiky na hlavní konzoli</string>
<string name="settings_label_transports">Transporty</string>
<string name="settings_label_maxConns">Max. připojení</string>
<string name="settings_label_i2cp">I2CP rozhraní</string>
<string name="settings_desc_i2cp">Povolit aplikacím třetích stran vytvářet tunely pomocí I2CP (vyžaduje restart routeru)</string>
<string name="settings_label_sam">SAM rozhraní</string>
<string name="settings_desc_sam">Povolit aplikacím třetích stran vytvářet tunely pomocí SAM (vyžaduje restart routeru)</string>
<string name="settings_confirm_sam">Aplikace se pokouší navázat připojení SAM.</string>
<string name="settings_confirm_sam_id">Název připojení/ID:</string>
<string name="settings_confirm_allow_sam">Klepněte pro povolení</string>
<string name="settings_confirm_deny_sam">Ignorujte pro zamítnutí</string>
<string name="settings_label_exploratory_pool">Průzkumný zásobník</string>
<string name="settings_desc_exploratory_pool">Parametry tunelu</string>
<string name="settings_label_expl_inbound">Příchozí tunely</string>
<string name="settings_label_expl_outbound">Odchozí tunely</string>
<string name="settings_label_expl_length">Délka</string>
<string name="settings_summ_expl_length">%s skoků</string>
<string name="settings_desc_expl_length">Kolik skoků použít</string>
<string name="settings_label_expl_lengthVariance">Rozptyl skoků</string>
<string name="settings_summ_expl_lengthVariance">%s</string>
<string name="settings_desc_expl_lengthVariance">Kolik skoků náhodně přidat</string>
<string name="settings_label_expl_quantity">Množství</string>
<string name="settings_summ_expl_quantity">%s tunelů</string>
<string name="settings_desc_expl_quantity">Kolik tunelů</string>
<string name="settings_label_expl_backupQuantity">Množství záloh</string>
<string name="settings_summ_expl_backupQuantity">%s tunelů</string>
<string name="settings_desc_expl_backupQuantity">Kolik záložních tunelů</string>
<string name="settings_need_transport_enabled">Musíte mít zapnut nejméně jeden přenos</string>
<string name="settings_router_restart_required">Prosím restartujte I2P pro použití změn</string>
<string name="menu_about">O programu</string>
<string name="about_version">Version:</string>
<string name="about_project">Domov projektu:</string>
<string name="about_bugs">Chyby a podpora:</string>
<string name="about_helpwanted">Je potřeba pomoc!</string>
<string name="about_volunteer">Chcete pomoci vylepšit aplikaci? Staňte se dobrovolníkem pomocí Android fóra:</string>
<string name="about_gitlab">Chcete doporučit novou funkci nebo opravu chyby? Vytvořte požadavek na Android Gitlabu:</string>
<string name="menu_help">Pomoc</string>
<string name="general">Hlavní</string>
<string name="label_router">Veřejné adresy</string>
<string name="label_private">Soukromé adresy</string>
<string name="addressbook_is_empty">Adresář je prázdný</string>
<string name="addressbook_search_header">%s nalezeno</string>
<string name="addressbook_add_wizard_k_name">Jméno</string>
<string name="addressbook_add_wizard_k_destination">Cíl</string>
<string name="addressbook_add_wizard_desc_name">Název</string>
<string name="addressbook_add_wizard_desc_destination">Sem vložte B64 cíle. Pokud máte nainstalován Správce souborů, můžete ho použít k nalezení souboru, který obsahuje B64.</string>
<string name="nsu_iae_illegal_char">Jméno hostitele \"%1$s\" obsahuje nepovolený znak %2$s</string>
<string name="nsu_iae_cannot_start_with">Jméno hostitele nemůže začínat \"%s\"</string>
<string name="nsu_iae_cannot_end_with">Jméno hostitele nemůže končit \"%s\"</string>
<string name="nsu_iae_cannot_contain">Jméno hostitele nemůže obsahovat \"%s\"</string>
<string name="nsu_iae_requires_conversion">Jméno hostitele \"%s\" vyžaduje převod do ASCII, ale knihovna pro převod není v této verzi Android dostupná.</string>
<string name="i2ptunnel_type_client">Standardní klient</string>
<string name="i2ptunnel_type_httpclient">Klient pro HTTP</string>
<string name="i2ptunnel_type_ircclient">Klient pro IRC</string>
@ -81,34 +210,168 @@
<string name="i2ptunnel_type_ircserver">IRC server</string>
<string name="i2ptunnel_type_streamrclient">Streamr klient</string>
<string name="i2ptunnel_type_streamrserver">Streamr server</string>
<string name="i2ptunnel_type_httpbidirserver">HTTP bidir</string>
<string name="i2ptunnel_type_httpbidirserver">HTTP obousměrný</string>
<string name="install_recommended_app">Nainstalovat doporučenou aplikaci?</string>
<string name="app_needed_for_this_tunnel_type">Pro použití tohoto tunelu potřebujete nainstalovat aplikaci. Chcete nainstalovat doporučenou aplikaci?</string>
<string name="i2ptunnel_not_initialized">Tunely nejsou ještě zprovozněny, prosím proveďte obnovu za dvě minuty.</string>
<string name="no_configured_client_tunnels">Žádné nastavené klientské tunely.</string>
<string name="no_configured_server_tunnels">Žádné nastavené serverové tunely.</string>
<string name="i2ptunnel_new_tunnel">Nový tunel</string>
<string name="i2ptunnel_msg_config_saved">Změny nastavení byly uloženy</string>
<string name="i2ptunnel_msg_config_save_failed">Nepodařilo se uložit nastavení</string>
<string name="i2ptunnel_msg_tunnel_starting">Startuji tunel</string>
<string name="i2ptunnel_msg_tunnel_stopping">Zastavuji tunel</string>
<string name="i2ptunnel_delete_confirm_message">Smazat tunel?</string>
<string name="i2ptunnel_delete_confirm_button">Smazat tunel</string>
<string name="i2ptunnel_no_tunnel_details">Nepodařilo se načíst detaily tunelu</string>
<string name="i2ptunnel_wizard_k_client_server">Klient nebo Server</string>
<string name="i2ptunnel_wizard_v_client">Klientský tunel</string>
<string name="i2ptunnel_wizard_v_server">Serverový tunel</string>
<string name="i2ptunnel_wizard_k_type">Typ tunelu</string>
<string name="i2ptunnel_wizard_k_name">Jméno</string>
<string name="i2ptunnel_wizard_k_desc">Popis</string>
<string name="i2ptunnel_wizard_k_dest">Cíl</string>
<string name="i2ptunnel_wizard_k_outproxies">Výstupní proxy (Outproxies)</string>
<string name="i2ptunnel_wizard_k_target_host">Cílový hostitel</string>
<string name="i2ptunnel_wizard_k_target_port">Cílový port</string>
<string name="i2ptunnel_wizard_k_reachable_on">Dosažitelné na</string>
<string name="i2ptunnel_wizard_k_binding_port">Port pro binding/spojení</string>
<string name="i2ptunnel_wizard_k_auto_start">Automatický start</string>
<string name="next">Další</string>
<string name="prev">Předchozí</string>
<string name="finish">Předložit</string>
<string name="review">Revidovat</string>
<string name="enabled">Povoleno</string>
<string name="i2ptunnel_wizard_desc_name">Název tunelu pro rozpoznání v seznamu tunelů.</string>
<string name="i2ptunnel_wizard_desc_desc">Popis tunelu. Toto je volitelné a pouze informativní.</string>
<string name="i2ptunnel_wizard_desc_dest">Zde stanovte .i2p adresu nebo cíl (jmenohostitele.i2p, b32 nebo b64) tunelu.</string>
<string name="i2ptunnel_wizard_desc_outproxies">Pokud víte o jakýchkoli outproxies pro tento typ tunelu (buď HTTP nebo SOCKS), vyplňte je. V případě několika proxies je oddělte čárkami.</string>
<string name="i2ptunnel_wizard_desc_target_host">Toto je IP, na které běží vaše služba, obvykle je na stejném zařízení, takže je automaticky vyplněna 127.0.0.1.</string>
<string name="i2ptunnel_wizard_desc_target_port">Toto je port, na kterém služba přijímá připojení.</string>
<string name="i2ptunnel_wizard_desc_reachable_on">Toto omezuje které počítače/chytré telefony mohou přistupovat k tomuto tunelu.</string>
<string name="i2ptunnel_wizard_desc_binding_port">Toto je port, ze kterého bude lokálně přistupováno ke klientskému tunelu. Je to také klientský port pro obousměrný serverový tunel HTTP.</string>
<string name="i2ptunnel_wizard_desc_auto_start">Měl by být tunel automaticky spuštěn při startu routeru?</string>
<string name="i2ptunnel_wizard_submit_confirm_message">Vytvořit tunel?</string>
<string name="i2ptunnel_wizard_submit_confirm_button">Vytvořit tunel</string>
<string name="i2ptunnel_view_target">Cíl</string>
<string name="i2ptunnel_view_access_point">Přístupový bod</string>
<string name="i2ptunnel_view_autostart">Automatické spuštění</string>
<string name="address_copied_to_clipboard">Adresa zkopírována do schránky</string>
<string name="edit_tunnel">Upravit tunel</string>
<string name="name">Jméno</string>
<string name="description">Popis</string>
<string name="auto_start">Automatické spuštění</string>
<string name="tunnel_summ_auto_start">Spustit tunel při startu routeru.</string>
<string name="tunnel_cat_ports">Místní porty</string>
<string name="shared_client">Sdílený klient</string>
<string name="tunnel_summ_shared_client">Použijte stejný cíl a tunely jako ostatní sdílení klienti</string>
<string name="target_destination">Cílové umístění</string>
<string name="persistent_key">Trvalý klíč</string>
<string name="persistent_key_conflict_title">Vypnout nové klíče při opětovném otevření?</string>
<string name="persistent_key_conflict_msg">Nemůžete zapnout trvalé klíče když je tunel nastaven pro vygenerování nových klíčů při opětovném otevření. Chcete vypnout nové klíče při opětovném otevření?</string>
<string name="tunnel_summ_persistent_key">Uchovat toto cílové umístění při restartu</string>
<string name="reachable_on">Dosažitelné na</string>
<string name="listen_port">Port naslouchání</string>
<string name="client_ssl">SSL klienta</string>
<string name="tunnel_summ_client_ssl">Klient musí k připojení používat SSL</string>
<string name="outproxies">Výstupní proxy (Outproxies)</string>
<string name="ssl_outproxies">SSL outproxies</string>
<string name="irc">IRC</string>
<string name="enable_dcc">Zapnout DCC</string>
<string name="tunnel_summ_enable_dcc">Povolit IRC klientům používat DCC</string>
<string name="website_domain_name">Doména webové stránky</string>
<string name="target_host">Cílový hostitel</string>
<string name="target_port">Cílový port</string>
<string name="use_ssl">Použít SSL</string>
<string name="tunnel_summ_use_ssl">Použít SSL pro připojení k cíli</string>
<string name="tunnel_parameters">Parametry tunelu</string>
<string name="profile">Profil</string>
<string name="profile_bulk">Hromadné připojení (stahování/webové stránky/BT)</string>
<string name="profile_interactive">Interaktivní připojení</string>
<string name="delay_connect">Pozdržet připojení</string>
<string name="tunnel_summ_delay_connect">Zapnout pro připojení požadavek/odpověď</string>
<string name="access_control">Řízení přístupu</string>
<string name="restricted_access">Omezený přístup</string>
<string name="disabled">Vypnuto</string>
<string name="whitelist">Seznam povolených (whitelist)</string>
<string name="blacklist">Seznam zakázaných (blacklist)</string>
<string name="access_list">Přístupový seznam</string>
<string name="reject_inproxies">Odmítnout inproxies</string>
<string name="tunnel_summ_reject_inproxies">Povolit připojení jen uživatelům I2P</string>
<string name="unique_local">Unikátní místní</string>
<string name="tunnel_summ_unique_local">Použít pro každého klienta unikátní místní IP</string>
<string name="multihome">Multihome</string>
<string name="tunnel_summ_multihome">Zapnout multihoming optimalizace</string>
<string name="client_connection_limits">Klientské limity připojení</string>
<string name="connections_per_minute">Připojení za minutu</string>
<string name="connections_per_hour">Připojení za hodinu</string>
<string name="connections_per_day">Připojení za den</string>
<string name="total_connection_limits">Celkové limity připojení</string>
<string name="total_connections_per_minute">Celkem připojení za minutu</string>
<string name="total_connections_per_hour">Celkem připojení za hodinu</string>
<string name="total_connections_per_day">Celkem připojení za den</string>
<string name="max_active_connections">Maximum aktivních připojení</string>
<string name="num_per_minute">%s za minutu</string>
<string name="num_per_hour">%s za hodinu</string>
<string name="num_per_day">%s za den</string>
<string name="unlimited">Neomezeně</string>
<string name="set_zero_for_unlimited">Nastavte 0 pro neomezeně</string>
<string name="post_limits">POST limity</string>
<string name="limit_period">Omezení periody</string>
<string name="client_posts_per_period">Požadavky POST klienta za periodu</string>
<string name="client_ban_length">Délka zákazu klienta</string>
<string name="total_posts_per_period">Celkový počet požadavků POST za periodu</string>
<string name="total_ban_length">Celková délka zákazu</string>
<string name="power_saving">Úspora energie</string>
<string name="delay_open">Prodleva otevření</string>
<string name="tunnel_summ_delay_open">Zpozdit otevření tunelu dokud není vyžadováno</string>
<string name="reduce_quantity">Snížit množství</string>
<string name="tunnel_summ_reduce_quantity">Snížit množství tunelů při nečinnosti</string>
<string name="idle_time">Čas nečinnosti</string>
<string name="num_minutes">%s minut</string>
<string name="reduced_tunnel_quantity">Snížit množství tunelů</string>
<string name="close_tunnels">Zavřít tunely při nečinnosti</string>
<string name="new_keys_on_reopen">Nové klíče při opětovném otevření</string>
<string name="new_keys_on_reopen_conflict_title">Vypnout trvalé klíče</string>
<string name="new_keys_on_reopen_conflict_msg">Nemůžete zapnout použití nových klíčů při opětovném otevření, když je tunel nastaven na trvalé klíče. Chcete vypnout trvalé klíče?</string>
<string name="http_client">Klient pro HTTP</string>
<string name="tunnel_summ_user_agent">Předání hlavičky \'User-Agent\'</string>
<string name="tunnel_summ_referer">Předání hlavičky \'Referent\'</string>
<string name="tunnel_summ_accept">Předání hlavičky \'Accept-*\'</string>
<string name="tunnel_summ_allow_ssl">Povolit SSL I2P adresám</string>
<string name="jump_url_list">Seznam Jump URL</string>
<string name="proxy_auth">Proxy autorizace</string>
<string name="tunnel_summ_proxy_auth">Vyžadovat přihlášení pro použití této proxy</string>
<string name="username">Uživatelské jméno</string>
<string name="password">Heslo</string>
<string name="outproxy_auth">Outproxy autorizace</string>
<string name="tunnel_summ_outproxy_auth">Přihlášení vyžadované pro outproxy</string>
<string name="other">Další</string>
<string name="signature_type">Typ podpisu</string>
<string name="custom_options">Vlastní možnosti</string>
<string name="all">Vše</string>
<string name="no_messages">Žádné zprávy</string>
<string name="no_error_messages">Žádné chybové zprávy</string>
<plurals name="log_error_messages">
<item quantity="one">Jedna chybová zpráva</item>
<item quantity="few">%d chybové zprávy, nejnovější nahoře</item>
<item quantity="many">%d chybových zpráv, nejnovější nahoře</item>
<item quantity="other">%d chybových zpráv, nejnovější nahoře</item>
</plurals>
<plurals name="log_messages">
<item quantity="one">Jedna zpráva</item>
<item quantity="few">%d zprávy, nejnovější nahoře</item>
<item quantity="many">%d zpráv, nejnovější nahoře</item>
<item quantity="other">%d zpráv, nejnovější nahoře</item>
</plurals>
<string name="log_entry">Záznam logu</string>
<string name="copy_logs">Kopírovat logy</string>
<string name="i2p_android_error_logs">Chybové logy I2P Android</string>
<string name="i2p_android_logs">Logy I2P Android</string>
<string name="error_logs_copied_to_clipboard">Chybové logy zkopírovány do schránky</string>
<string name="logs_copied_to_clipboard">Logy zkopírovány do schránky</string>
<string name="label_browser_configuration">Nastavení prohlížeče</string>
<string name="no_market_app">Nenalezena žádná aplikace obchodu, prosím proveďte ruční instalaci</string>
<string name="unset">Zrušit nastavení</string>
<string name="running_background">I2P běží na pozadí</string>
</resources>

View File

@ -84,6 +84,7 @@
<string name="name">Navn</string>
<string name="description">Beskrivelse</string>
<string name="use_ssl">Brug SSL</string>
<string name="profile">Profil</string>
<string name="access_control">Adgangskontrol</string>
<string name="disabled">Deaktiveret</string>
<string name="http_client">HTTP klient</string>

View File

@ -115,6 +115,9 @@
<string name="notification_status_peers">Teilnehmer: %1$d aktiv, %2$d bekannt</string>
<string name="notification_status_expl">Erkundungstunnel: %1$d/%2$d</string>
<string name="notification_status_client">Clienttunnel: %1$d/%2$d</string>
<string name="stats_delay">Nachrichtenverzögerung</string>
<string name="copied_base32_system_notification_title">Base32 in die Zwischenablage kopiert</string>
<string name="copied_base32_system_notification_body">Die Adresse Ihres I2P-Tunnels wurde in die Zwischenablage kopiert.</string>
<string name="menu_settings">Einstellungen</string>
<string name="settings_enable">Erlauben</string>
<string name="settings_desc_subscriptions">Abonnements-URLs</string>
@ -147,7 +150,13 @@
<string name="settings_label_transports">Übertragungen</string>
<string name="settings_label_maxConns">Max. Verbindungen</string>
<string name="settings_label_i2cp">I2CP-Benutzeroberfläche</string>
<string name="settings_desc_i2cp">Erlaube anderen Applikationen das Erzeugen von Tunneln (benötigt ein Neustart des Routers)</string>
<string name="settings_desc_i2cp">Apps von Drittanbietern die Erstellung von Tunneln über I2CP erlauben (erfordert einen Neustart des Routers)</string>
<string name="settings_label_sam">SAM-Schnittstelle</string>
<string name="settings_desc_sam">Apps von Drittanbietern die Erstellung von Tunneln mit SAM erlauben (erfordert einen Neustart des Routers)</string>
<string name="settings_confirm_sam">Eine Anwendung versucht, eine SAM-Verbindung herzustellen.</string>
<string name="settings_confirm_sam_id">Verbindungsname/-kennung:</string>
<string name="settings_confirm_allow_sam">Zum Erlauben antippen</string>
<string name="settings_confirm_deny_sam">Zum Verweigern ignorieren</string>
<string name="settings_label_exploratory_pool">Satz an Erkundungstunneln</string>
<string name="settings_desc_exploratory_pool">Tunnelparameter</string>
<string name="settings_label_expl_inbound">Eingehende Tunnel</string>
@ -172,7 +181,6 @@
<string name="about_bugs">Fehlermeldungen und Unterstützung:</string>
<string name="about_helpwanted">Unterstützer gesucht!!</string>
<string name="about_volunteer">Sie wollen mithelfen, die App besser zu machen? Dann schauen Sie in das Android-Forum:</string>
<string name="about_donate">Sie wollen Geld oder Bitcoins spenden, damit wir mehr Android-Geräte zum Entwickeln und Testen kaufen können? Gehen Sie auf:</string>
<string name="menu_help">Hilfe</string>
<string name="general">Allgemein</string>
<string name="label_router">Öffentliche Adressen</string>
@ -233,7 +241,6 @@
<string name="enabled">Aktiviert</string>
<string name="i2ptunnel_wizard_desc_name">Der Name des Tunnels zur Erkennung in der Tunnelliste.</string>
<string name="i2ptunnel_wizard_desc_desc">Eine optionale, aber für Sie aussagekräftige Beschreibung des Tunnels.</string>
<string name="i2ptunnel_wizard_desc_dest">Tragen Sie das I2P-Ziel des Dienstes ein, zu welchem sich dieser Clienttunnel verbinden soll. Dies kann ein kompletter Base-64-Zielschlüssel oder ein I2P-Hostname aus Ihrem Adressbuch sein.</string>
<string name="i2ptunnel_wizard_desc_outproxies">Falls Sie Ausgangsproxies für diese Tunnelart kennen (entweder HTTP oder SOCKS), geben Sie sie hier ein. Trennen Sie mehrere Proxies mit Kommas.</string>
<string name="i2ptunnel_wizard_desc_target_host">Das ist die IP, unter der der Dienst erreichbar ist. Normalerweise ist er auf der gleichen Maschine, also wird 127.0.0.1 automatisch ausgefüllt.</string>
<string name="i2ptunnel_wizard_desc_target_port">Dies ist der Port, unter dem der Dienst erreichbar ist.</string>
@ -358,4 +365,5 @@
<string name="label_browser_configuration">Browserkonfiguration</string>
<string name="no_market_app">Keine angebotene App gefunden, bitte manuell installieren.</string>
<string name="unset">Deaktivieren</string>
<string name="running_background">I2P läuft im Hintergrund</string>
</resources>

View File

@ -0,0 +1,375 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="app_name">I2P</string>
<string name="desc_i2p_logo">Logotipo de I2P</string>
<string name="choose_language">Escoger idioma</string>
<string name="welcome_new_install">¡Bienvenido a I2P! Esta aplicación es un software en versión ALFA y no proporciona un anonimato fuerte. Por favor, lea las notas de las versiones y la información sobre la licencia.</string>
<string name="welcome_new_version">Nueva versión instalada. Por favor, lea las notas de las versiones. Versión:</string>
<string name="label_tunnels">Túneles</string>
<string name="label_status">Estado</string>
<string name="label_console">Consola</string>
<string name="label_addresses">Direcciones</string>
<string name="label_addressbook">Libreta de direcciones</string>
<string name="label_i2ptunnel_client">Túneles de cliente</string>
<string name="label_i2ptunnel_server">Túneles de servidor</string>
<string name="label_logs">Registros (log)</string>
<string name="label_error_logs">Registros (logs) de errores</string>
<string name="label_news">Noticias</string>
<string name="label_peers_status">Pares (peers)</string>
<string name="label_release_notes">Notas de Versión</string>
<string name="label_licenses">Licencias</string>
<string name="label_browse">Navegar</string>
<string name="label_graphs">Gráficas</string>
<string name="button_router_off">Mantenga pulsado para iniciar I2P</string>
<string name="button_router_on">I2P está en marcha (mantenga pulsado para detenerlo)</string>
<string name="button_router_graceful">I2P se cerrará en %s</string>
<string name="button_shutdown_now">Mantenga pulsado para detener ahora</string>
<string name="button_cancel_graceful">Mantenga pulsado para cancelar cierre</string>
<string name="no_internet">No hay ninguna conexión a Internet disponible</string>
<string name="hidden">Oculto</string>
<string name="testing">Probando</string>
<string name="firewalled">Bloqueado por cortafuegos (firewall)</string>
<string name="symmetric_nat">NAT simétrico</string>
<string name="net_status_error_i2cp">Error de I2CP del administrador de clientes - compruebe los registros (logs)</string>
<!--Parameter is a time, e.g. 32s or 2m-->
<string name="net_status_error_skew">Desincronización de reloj de %s</string>
<string name="net_status_error_unresolved_tcp">Direcciones TCP no resueltas</string>
<string name="net_status_error_private_tcp">Direcciones TCP privadas</string>
<string name="net_status_warn_firewalled_inbound_tcp">Bloqueado por cortafuegos (firewall) con TCP entrante habilitado</string>
<string name="net_status_warn_firewalled_floodfill">Bloqueado por cortafuegos (firewall) y es router I2P de inundación (floodfill)</string>
<string name="net_status_info_disconnected">Desconectado - compruebe la conexión a la red</string>
<string name="net_status_error_udp_port">Puerto UDP en uso - cámbielo en la configuración y reinicie</string>
<string name="net_status_error_no_active_peers">No hay pares (peers) activos - compruebe la conexión a la red y el cortafuegos (firewall)</string>
<string name="net_status_error_udp_disabled_tcp_not_set">UDP deshabilitado y nodo/puerto-TCP de entrada no establecido</string>
<string name="net_status_warn_firewalled_udp_disabled">Bloqueado por cortafuegos (firewall) con UDP deshabilitado</string>
<string name="shared_clients">Clientes compartidos</string>
<string name="uptime">Duración de la conexión</string>
<string name="active_peers">Pares activos</string>
<string name="known_peers">Pares conocidos</string>
<!--Character to indicate a client tunnel. Usually first letter of the word "client".-->
<string name="char_client_tunnel">K</string>
<!--Character to indicate a server tunnel. Usually first letter of the word "server".-->
<string name="char_server_tunnel">G</string>
<string name="no_tunnels_running">Aún no hay túneles en marcha.</string>
<string name="download">Descargar</string>
<string name="upload">Subir</string>
<string name="configure_browser_title">¿Configurar navegador?</string>
<string name="configure_browser_for_i2p">¿Desea configurar un navegador para ver sitios I2P? (también puede hacer esto más tarde desde el menú de ayuda).</string>
<string name="configure_no_doze_title">¿Gestionar las Optimizaciones de la Batería?</string>
<string name="configure_no_doze">I2P funciona mejor si sigue funcionando. Para evitar que Android cierre I2P cuando intente ahorrar energía, puede agregarlo a la lista de excepciones de batería. Esto mejorará sustancialmente la fiabilidad de la aplicación. (recomendado)</string>
<string name="first_start_title">¡Felicidades por conseguir instalar I2P!</string>
<string name="first_start_welcome"><b>¡Bienvenido a I2P!</b> Por favor, <b>tenga paciencia</b> mientras I2P se inicia y busca pares (peers).</string>
<string name="first_start_read">Mientras espera, por favor, lea las notas de la versión y la página de bienvenida.</string>
<string name="first_start_faq">Una vez tenga túneles de cliente, por favor, <b>eche un vistazo</b> a nuestras preguntas frecuentes (FAQ):</string>
<string name="first_start_faq_nonanon">O utilice este enlace no-anónimo si no quiere esperar a los túneles:</string>
<string name="first_start_irc">Dirija su cliente IRC hacia <b>localhost:6668</b> y pase a saludarnos en:</string>
<string name="action_search">Búsqueda</string>
<string name="action_add">Agregar</string>
<string name="action_edit">Editar</string>
<string name="action_delete">Borrar</string>
<string name="action_i2ptunnel_start">Iniciar túnel</string>
<string name="action_i2ptunnel_stop">Detener túnel</string>
<string name="action_i2ptunnel_start_all">Iniciar todos los túneles</string>
<string name="action_i2ptunnel_stop_all">Detener todos los túneles</string>
<string name="action_i2ptunnel_restart_all">Reiniciar todos los túneles</string>
<string name="action_reload">Recargar</string>
<string name="action_refresh">Actualizar</string>
<string name="hint_search_addressbook">Buscar en la libreta de direcciones</string>
<string name="action_reload_subscriptions">Volver a cargar suscripciones</string>
<string name="news_last_updated">Última actualización de las noticias hace %s</string>
<string name="news_last_checked">Última comprobación de las noticias hace %s</string>
<string name="news_updated">Se han actualizado las noticias</string>
<string name="view_news">Pulse para ver las últimas noticias de I2P</string>
<string name="router_not_running">El router I2P no está en marcha.</string>
<string name="router_shutting_down">El router I2P se está cerrando.</string>
<string name="stats_not_ready">El administrador de estadísticas aún no está listo. Inténtelo de nuevo más tarde.</string>
<string name="select_an_address">Seleccione una dirección.</string>
<string name="no_graphs_configured">No se ha configurado ninguna gráfica. Puede escoger las estadísticas a graficar en el menú de configuración. Cualquier cambio tendrá efecto después de 60 segundos.</string>
<string name="configure_graphs">Configurar gráficas</string>
<string name="graphs_not_ready">Las gráficas aún no están listas. Inténtelo de nuevo más tarde.</string>
<string name="statistics">Estadísticas</string>
<string name="routers">Routers I2P</string>
<string name="leasesets">LeaseSets</string>
<string name="countries">Países </string>
<string name="country">País </string>
<string name="transport">Transporte</string>
<string name="versions">Versiones</string>
<string name="version">Versión</string>
<string name="count">Conteo</string>
<string name="tname_0">Oculto al iniciarse</string>
<string name="netdb_routers_empty">No hay routers I2P en su NetDB.</string>
<string name="netdb_leases_empty">No hay LeaseSets (túneles al mismo destino I2P) en su NetDB.</string>
<string name="notification_status_starting">I2P se está iniciando</string>
<string name="notification_status_restarting">I2P se está reiniciando</string>
<string name="notification_status_waiting">I2P está esperando una conexión de red</string>
<string name="notification_status_starting_after_waiting">Red conectada, I2P se está iniciando</string>
<string name="notification_status_running">I2P está en marcha</string>
<string name="notification_status_client_ready">Los túneles de cliente están listos</string>
<string name="notification_status_client_down">Los túneles de cliente están caídos</string>
<string name="notification_status_graceful">Deteniendo I2P en %s</string>
<string name="notification_status_stopping">Deteniendo I2P</string>
<string name="notification_status_stopping_after_net">Red desconectada, deteniendo I2P</string>
<string name="notification_status_shutdown_cancelled">Cierre cancelado</string>
<string name="notification_status_shutting_down">I2P se está cerrando</string>
<string name="notification_status_bw">Ancho de banda: %1$sBps bajada / %2$sBps subida</string>
<string name="notification_status_peers">Pares: %1$d activos, %2$d conocidos</string>
<string name="notification_status_expl">Túneles exploratorios: %1$d/%2$d</string>
<string name="notification_status_client">Túneles de cliente: %1$d/%2$d</string>
<string name="stats_memory">Memoria usada/max</string>
<string name="stats_lag">Demora de tareas</string>
<string name="stats_delay">Demora de mensajes</string>
<string name="copied_base32_system_notification_title">Base32 copiado al portapapeles</string>
<string name="copied_base32_system_notification_body">La dirección de su túnel I2P se ha copiado en el portapapeles.</string>
<string name="menu_settings">Ajustes</string>
<string name="settings_enable">habilitar</string>
<string name="settings_desc_subscriptions">URLs de suscripción</string>
<string name="settings_label_bandwidth_net">Red y ancho de banda</string>
<string name="settings_label_startOnBoot">Iniciar I2P en el arranque</string>
<string name="settings_desc_startOnBoot">Conecta automáticamente a I2P cuando arranca su dispositivo Android</string>
<string name="settings_label_bandwidth">Ancho de banda</string>
<string name="settings_label_bw_inbound">Velocidad de bajada</string>
<string name="settings_desc_bw_inbound">Velocidad máxima de bajada</string>
<string name="settings_label_bw_outbound">Velocidad de subida</string>
<string name="settings_desc_bw_outbound">Velocidad máxima de subida</string>
<string name="settings_label_network">Red</string>
<string name="settings_label_hiddenMode">Participación</string>
<string name="settings_desc_hiddenMode">Desactivar modo oculto</string>
<string name="settings_label_maxPartTunnels">Máximo de túneles participantes</string>
<string name="settings_desc_maxPartTunnels">Máximo de túneles en los que participar (por defecto=20)</string>
<string name="settings_dialog_maxPartTunnels">Máximo de túneles en los que participar</string>
<string name="settings_label_sharePercent">Porcentaje de participación</string>
<string name="settings_desc_sharePercent">Porcentaje de ancho de banda a compartir (por defecto=80)</string>
<string name="settings_dialog_sharePercent">Porcentaje de ancho de banda a compartir</string>
<string name="settings_desc_upnp">Abrir los puertos del cortafuegos (firewall) automáticamente</string>
<string name="settings_label_logging">Registro (log)</string>
<string name="settings_label_default_log_level">Nivel de registro predeterminado</string>
<string name="settings_label_appearance">Apariencia</string>
<string name="settings_label_language">Idioma</string>
<string name="settings_default">Por defecto</string>
<string name="settings_label_advanced">Avanzado</string>
<string name="settings_label_showStats">Estadísticas del router I2P</string>
<string name="settings_summ_showStats">Muestra estadísticas avanzadas en la consola principal</string>
<string name="settings_label_transports">Transportes</string>
<string name="settings_label_maxConns">Conexiones máximas</string>
<string name="settings_label_i2cp">Interfaz de I2CP</string>
<string name="settings_desc_i2cp">Permitir que las aplicaciones de terceros creen túneles usando I2CP (requiere el reinicio del enrutador)</string>
<string name="settings_label_sam">Interfaz SAM</string>
<string name="settings_desc_sam">Permitir que las aplicaciones de terceros creen túneles usando SAM (requiere el reinicio del enrutador)</string>
<string name="settings_confirm_sam">Una aplicación está intentando establecer una conexión SAM.</string>
<string name="settings_confirm_sam_id">Nombre de conexión/ID:</string>
<string name="settings_confirm_allow_sam">Toca para permitir</string>
<string name="settings_confirm_deny_sam">Ignorar para negar</string>
<string name="settings_label_exploratory_pool">Grupo exploratorio</string>
<string name="settings_desc_exploratory_pool">Parámetros de túnel</string>
<string name="settings_label_expl_inbound">Túneles de entrada</string>
<string name="settings_label_expl_outbound">Túneles de salida</string>
<string name="settings_label_expl_length">Longitud</string>
<string name="settings_summ_expl_length">%s saltos</string>
<string name="settings_desc_expl_length">Cuántos saltos usar</string>
<string name="settings_label_expl_lengthVariance">Variabilidad del salto</string>
<string name="settings_summ_expl_lengthVariance">%s</string>
<string name="settings_desc_expl_lengthVariance">Cuántos saltos se añadirán aleatoriamente.</string>
<string name="settings_label_expl_quantity">Cantidad</string>
<string name="settings_summ_expl_quantity">%s túneles</string>
<string name="settings_desc_expl_quantity">Cuántos túneles</string>
<string name="settings_label_expl_backupQuantity">Cantidad de respaldo</string>
<string name="settings_summ_expl_backupQuantity">%s túneles</string>
<string name="settings_desc_expl_backupQuantity">Cuántos túneles de respaldo</string>
<string name="settings_need_transport_enabled">Debe tener al menos un transporte habilitado</string>
<string name="settings_router_restart_required">Reinicie I2P para aplicar los cambios</string>
<string name="menu_about">Acerca de</string>
<string name="about_version">Versión:</string>
<string name="about_project">Página principal del proyecto:</string>
<string name="about_bugs">Fallos y soporte:</string>
<string name="about_helpwanted">¡Buscamos ayuda!</string>
<string name="about_volunteer">¿Quiere ayudar a hacer mejor la aplicación? Ofrézcase voluntario en el foro de Android:</string>
<string name="about_gitlab">¿Quiere sugerir una función o corregir un error? haga una solicitud de fusión en Android Gitlab:</string>
<string name="menu_help">Ayuda</string>
<string name="general">General</string>
<string name="label_router">Direcciones públicas</string>
<string name="label_private">Direcciones privadas</string>
<string name="addressbook_is_empty">La libreta de direcciones está vacía</string>
<string name="addressbook_search_header">%s encontrados</string>
<string name="addressbook_add_wizard_k_name">Nombre</string>
<string name="addressbook_add_wizard_k_destination">Destino I2P</string>
<string name="addressbook_add_wizard_desc_name">El nombre</string>
<string name="addressbook_add_wizard_desc_destination">Pegue la B64 del destino I2P aquí. Si tiene un administrador de ficheros instalado, puede navegar hasta el fichero de texto que contenga la B64.</string>
<string name="nsu_iae_illegal_char">El nombre del nodo \"%1$s\" contiene un caracter no permitido %2$s</string>
<string name="nsu_iae_cannot_start_with">El nombre del nodo no puede comenzar con \"%s\"</string>
<string name="nsu_iae_cannot_end_with">El nombre del nodo no puede finalizar con \"%s\"</string>
<string name="nsu_iae_cannot_contain">El nombre del nodo no puede contener \"%s\"</string>
<string name="nsu_iae_requires_conversion">El nombre del nodo \"%s\" requiere la conversión a ASCII, pero la librería de conversión no está disponible en esta versión de Android.</string>
<string name="i2ptunnel_type_client">Cliente estándar</string>
<string name="i2ptunnel_type_httpclient">Cliente HTTP</string>
<string name="i2ptunnel_type_ircclient">Cliente IRC</string>
<string name="i2ptunnel_type_server">Servidor estándar</string>
<string name="i2ptunnel_type_httpserver">Servidor HTTP</string>
<string name="i2ptunnel_type_sockstunnel">Proxy SOCKS 4/4a/5</string>
<string name="i2ptunnel_type_socksirctunnel">Proxy SOCKS IRC</string>
<string name="i2ptunnel_type_connectclient">Proxy CONNECT/SSL/HTTPS</string>
<string name="i2ptunnel_type_ircserver">Servidor IRC</string>
<string name="i2ptunnel_type_streamrclient">Cliente Streamr</string>
<string name="i2ptunnel_type_streamrserver">Servidor Streamr</string>
<string name="i2ptunnel_type_httpbidirserver">HTTP bidir</string>
<string name="install_recommended_app">¿Instalar aplicación recomendada?</string>
<string name="app_needed_for_this_tunnel_type">Tiene que instalar una aplicación para usar este túnel. ¿Desea instalar la aplicación recomendada?</string>
<string name="i2ptunnel_not_initialized">Los túneles aún no están inicializados, por favor, vuelva a cargar en dos minutos.</string>
<string name="no_configured_client_tunnels">No hay túneles de cliente configurados.</string>
<string name="no_configured_server_tunnels">No hay túneles de servidor configurados.</string>
<string name="i2ptunnel_new_tunnel">Nuevo túnel</string>
<string name="i2ptunnel_msg_config_saved">Se guardaron los cambios en la configuración </string>
<string name="i2ptunnel_msg_config_save_failed">No se pudo guardar la configuración</string>
<string name="i2ptunnel_msg_tunnel_starting">Iniciando el túnel</string>
<string name="i2ptunnel_msg_tunnel_stopping">Deteniendo túnel</string>
<string name="i2ptunnel_delete_confirm_message">¿Eliminar túnel?</string>
<string name="i2ptunnel_delete_confirm_button">Eliminar túnel</string>
<string name="i2ptunnel_no_tunnel_details">No se pudieron cargar los detalles del túnel</string>
<string name="i2ptunnel_wizard_k_client_server">Cliente o servidor</string>
<string name="i2ptunnel_wizard_v_client">Túnel de cliente</string>
<string name="i2ptunnel_wizard_v_server">Túnel de servidor</string>
<string name="i2ptunnel_wizard_k_type">Tipo de túnel</string>
<string name="i2ptunnel_wizard_k_name">Nombre</string>
<string name="i2ptunnel_wizard_k_desc">Descripción</string>
<string name="i2ptunnel_wizard_k_dest">Destino I2P</string>
<string name="i2ptunnel_wizard_k_outproxies">Proxys de salida a Internet</string>
<string name="i2ptunnel_wizard_k_target_host">Nodo objetivo</string>
<string name="i2ptunnel_wizard_k_target_port">Puerto objetivo</string>
<string name="i2ptunnel_wizard_k_reachable_on">Alcanzable en</string>
<string name="i2ptunnel_wizard_k_binding_port">Puerto de asociación</string>
<string name="i2ptunnel_wizard_k_auto_start">Auto iniciar</string>
<string name="next">Siguiente</string>
<string name="prev">Anterior</string>
<string name="finish">Enviar</string>
<string name="review">Revisar</string>
<string name="enabled">Activo</string>
<string name="i2ptunnel_wizard_desc_name">El nombre del túnel, para su identificación en la lista de túneles.</string>
<string name="i2ptunnel_wizard_desc_desc">Una descripción del túnel. Esto es opcional y puramente informativo.</string>
<string name="i2ptunnel_wizard_desc_dest">Especifique aquí la dirección .i2p o destino (hostname.i2p, b32 o b64) del túnel.</string>
<string name="i2ptunnel_wizard_desc_outproxies">Si sabe de cualquier proxy de salida para este tipo de túnel (bien HTTP o SOCKS), introdúzcalo. Separe los proxys con comas.</string>
<string name="i2ptunnel_wizard_desc_target_host">Esta es la IP sobre la que su servicio está ejecutándose, como este normalmente está en la misma máquina, se autorellena con 127.0.0.1</string>
<string name="i2ptunnel_wizard_desc_target_port">Este es el puerto sobre el que el servicio está aceptando conexiones.</string>
<string name="i2ptunnel_wizard_desc_reachable_on">Esto limita qué computadoras o smartphones pueden acceder a este túnel según su alcance.</string>
<string name="i2ptunnel_wizard_desc_binding_port">Este es el puerto desde el que se accederá localmente al túnel de cliente. Este también es el puerto del cliente para el túnel de servidor HTTP bidireccional.</string>
<string name="i2ptunnel_wizard_desc_auto_start">¿Debe iniciarse automáticamente el túnel cuando se inicia el router I2P?</string>
<string name="i2ptunnel_wizard_submit_confirm_message">¿Crear túnel?</string>
<string name="i2ptunnel_wizard_submit_confirm_button">Crear túnel</string>
<string name="i2ptunnel_view_target">Servicio Objetivo</string>
<string name="i2ptunnel_view_access_point">Punto de acceso</string>
<string name="i2ptunnel_view_autostart">Auto-iniciar</string>
<string name="address_copied_to_clipboard">Dirección copiada al portapapeles</string>
<string name="edit_tunnel">Editar túnel</string>
<string name="name">Nombre</string>
<string name="description">Descripción</string>
<string name="auto_start">Auto-iniciar</string>
<string name="tunnel_summ_auto_start">Inicia el túnel al iniciarse el router I2P.</string>
<string name="tunnel_cat_ports">Puertos locales</string>
<string name="shared_client">Cliente compartido</string>
<string name="tunnel_summ_shared_client">Usa el mismo destino I2P y túneles que otros clientes compartidos</string>
<string name="target_destination">Destino I2P objetivo</string>
<string name="persistent_key">Clave persistente</string>
<string name="persistent_key_conflict_title">¿Deshabilitar generación de nuevas claves al reabrir?</string>
<string name="persistent_key_conflict_msg">No puede habilitar claves persistentes mientras el túnel está configurado para generar nuevas claves al reabrir ¿Quiere deshabilitar la generación de nuevas claves al reabrir?</string>
<string name="tunnel_summ_persistent_key">Conserva este destino I2P del túnel cuando se reinicie</string>
<string name="reachable_on">Alcanzable en</string>
<string name="listen_port">Escuchar puerto</string>
<string name="client_ssl">SSL de cliente</string>
<string name="tunnel_summ_client_ssl">Los clientes tienen que usar SSL para conectar</string>
<string name="outproxies">Proxys de salida a Internet</string>
<string name="ssl_outproxies">Proxys SSL de salida a Internet</string>
<string name="irc">IRC</string>
<string name="enable_dcc">Habilitar DCC</string>
<string name="tunnel_summ_enable_dcc">Permite usar DCC (conexión directa) a los clientes de IRC</string>
<string name="website_domain_name">Nombre de dominio del sitio web</string>
<string name="target_host">Nodo objetivo</string>
<string name="target_port">Puerto objetivo</string>
<string name="use_ssl">Usar SSL</string>
<string name="tunnel_summ_use_ssl">Usa SSL para conectar al objetivo</string>
<string name="tunnel_parameters">Parámetros de túnel</string>
<string name="profile">Perfil</string>
<string name="profile_bulk">Conexión masiva (descargas/sitios-web/bittorrent)</string>
<string name="profile_interactive">Conexión interactiva</string>
<string name="delay_connect">Retardar conexión</string>
<string name="tunnel_summ_delay_connect">Habilítelo para conexiones de petición/respuesta</string>
<string name="access_control">Control de acceso</string>
<string name="restricted_access">Acceso restringido</string>
<string name="disabled">Deshabilitado</string>
<string name="whitelist">Lista blanca</string>
<string name="blacklist">Lista negra</string>
<string name="access_list">Lista de acceso</string>
<string name="reject_inproxies">Rechazar proxys de entrada desde Internet</string>
<string name="tunnel_summ_reject_inproxies">Permite conectar sólo a usuarios de I2P</string>
<string name="unique_local">Direcciones locales únicas</string>
<string name="tunnel_summ_unique_local">Usa IPs únicas de nodo local (localhost) para cada cliente</string>
<string name="multihome">Alojamiento redundante</string>
<string name="tunnel_summ_multihome">Habilita optimizaciones de alojamiento redundante (multihoming)</string>
<string name="client_connection_limits">Límites de conexiones de los clientes</string>
<string name="connections_per_minute">Conexiones por minuto</string>
<string name="connections_per_hour">Conexiones por hora</string>
<string name="connections_per_day">Conexiones por día</string>
<string name="total_connection_limits">Límites totales de conexión</string>
<string name="total_connections_per_minute">Conexiones totales por minuto</string>
<string name="total_connections_per_hour">Conexiones totales por hora</string>
<string name="total_connections_per_day">Conexiones totales por día</string>
<string name="max_active_connections">Máximo de conexiones activas</string>
<string name="num_per_minute">%s por minuto</string>
<string name="num_per_hour">%s por hora</string>
<string name="num_per_day">%s por día</string>
<string name="unlimited">Ilimitado</string>
<string name="set_zero_for_unlimited">Establezca 0 para ilimitado</string>
<string name="post_limits">Límites de peticiones POST (HTTP)</string>
<string name="limit_period">Periodo límite</string>
<string name="client_posts_per_period">POSTs de cliente por periodo</string>
<string name="client_ban_length">Duración de la exclusión de cliente</string>
<string name="total_posts_per_period">POSTs totales por periodo</string>
<string name="total_ban_length">Duración total de las exclusiones</string>
<string name="power_saving">Ahorro de energía</string>
<string name="delay_open">Retardar apertura</string>
<string name="tunnel_summ_delay_open">Retarda la apertura del túnel hasta que sea requerida</string>
<string name="reduce_quantity">Reducir cantidad</string>
<string name="tunnel_summ_reduce_quantity">Reduce el número de túneles cuando estén desocupados</string>
<string name="idle_time">Tiempo desocupado</string>
<string name="num_minutes">%s minutos</string>
<string name="reduced_tunnel_quantity">Se redujo la cantidad de túneles</string>
<string name="close_tunnels">Cerrar túneles cuando estén desocupados</string>
<string name="new_keys_on_reopen">Nuevas claves al reabrir</string>
<string name="new_keys_on_reopen_conflict_title">¿Deshabilitar claves persistentes?</string>
<string name="new_keys_on_reopen_conflict_msg">No puede habilitar nuevas claves al reabrir mientras el túnel está configurado para tener claves persistentes. ¿Quiere deshabilitar claves persistentes?</string>
<string name="http_client">Cliente HTTP</string>
<string name="tunnel_summ_user_agent">Hace pasar la cabecera \'User-Agent\' (agente del usuario)</string>
<string name="tunnel_summ_referer">Hace pasar la cabecera \'Referer\' (procedencia)</string>
<string name="tunnel_summ_accept">Hace pasar las cabeceras \'Accept-*\' (tipos de ficheros aceptados)</string>
<string name="tunnel_summ_allow_ssl">Permite SSL para direcciones I2P</string>
<string name="jump_url_list">Lista de URLs de servicios de salto (jump)</string>
<string name="proxy_auth">Autorización del proxy</string>
<string name="tunnel_summ_proxy_auth">Se requiere iniciar sesión para usar este proxy</string>
<string name="username">Nombre de usuario</string>
<string name="password">Contraseña</string>
<string name="outproxy_auth">Autorización del proxy de salida a Internet</string>
<string name="tunnel_summ_outproxy_auth">Se requiere iniciar sesión para el proxy de salida a Internet</string>
<string name="other">Otro</string>
<string name="signature_type">Tipo de firma</string>
<string name="custom_options">Opciones personalizadas</string>
<string name="all">Todos</string>
<string name="no_messages">No hay mensajes</string>
<string name="no_error_messages">No hay mensajes de error</string>
<plurals name="log_error_messages">
<item quantity="one">Un mensaje de error</item>
<item quantity="many">%d mensajes de error, los más recientes primero</item>
<item quantity="other">%d mensajes de error, los más recientes primero</item>
</plurals>
<plurals name="log_messages">
<item quantity="one">Un mensaje</item>
<item quantity="many">%d mensajes, los más recientes primero</item>
<item quantity="other">%d mensajes, los más recientes primero</item>
</plurals>
<string name="log_entry">Entrada de registro (log)</string>
<string name="copy_logs">Copiar registros (logs)</string>
<string name="i2p_android_error_logs">Registros (logs) de errores de I2P Android</string>
<string name="i2p_android_logs">Registros (logs) de I2P Android</string>
<string name="error_logs_copied_to_clipboard">Los registros (logs) de errores se copiaron al portapapeles</string>
<string name="logs_copied_to_clipboard">Registros copiados al portapapeles</string>
<string name="label_browser_configuration">Configuración del navegador</string>
<string name="no_market_app">No se encontró la aplicación en Android market, por favor, instálela manualmente</string>
<string name="unset">No configurado</string>
<string name="running_background">I2P se ejecuta en segundo plano</string>
</resources>

View File

@ -115,6 +115,11 @@
<string name="notification_status_peers">Pares: %1$d activos, %2$d conocidos</string>
<string name="notification_status_expl">Túneles exploratorios: %1$d/%2$d</string>
<string name="notification_status_client">Túneles de cliente: %1$d/%2$d</string>
<string name="stats_memory">Memoria usada/max</string>
<string name="stats_lag">Demora de tareas</string>
<string name="stats_delay">Demora de mensajes</string>
<string name="copied_base32_system_notification_title">Base32 copiado al portapapeles</string>
<string name="copied_base32_system_notification_body">La dirección de su túnel I2P se ha copiado en el portapapeles.</string>
<string name="menu_settings">Configuración</string>
<string name="settings_enable">Activar</string>
<string name="settings_desc_subscriptions">URLs de suscripción</string>
@ -147,7 +152,13 @@
<string name="settings_label_transports">Transportes</string>
<string name="settings_label_maxConns">Conexiones máximas</string>
<string name="settings_label_i2cp">Interfaz de I2CP</string>
<string name="settings_desc_i2cp">Permitir que las aplicaciones de terceros creen túneles (requiere el reinicio del enrutador)</string>
<string name="settings_desc_i2cp">Permitir que las aplicaciones de terceros creen túneles usando I2CP (requiere el reinicio del enrutador)</string>
<string name="settings_label_sam">Interfaz SAM</string>
<string name="settings_desc_sam">Permitir que las aplicaciones de terceros creen túneles usando SAM (requiere el reinicio del enrutador)</string>
<string name="settings_confirm_sam">Una aplicación está intentando establecer una conexión SAM.</string>
<string name="settings_confirm_sam_id">Nombre de conexión/ID:</string>
<string name="settings_confirm_allow_sam">Toca para permitir</string>
<string name="settings_confirm_deny_sam">Ignorar para negar</string>
<string name="settings_label_exploratory_pool">Grupo exploratorio</string>
<string name="settings_desc_exploratory_pool">Parámetros de túneles</string>
<string name="settings_label_expl_inbound">Túneles de entrada</string>
@ -172,7 +183,7 @@
<string name="about_bugs">Fallos y soporte:</string>
<string name="about_helpwanted">¡Buscamos ayuda!</string>
<string name="about_volunteer">¿Quiere ayudar a hacer mejor la aplicación? Ofrézcase voluntario en el foro de Android:</string>
<string name="about_donate">¿Quiere donar dinero o bitcoins para la compra de más dispositivos Android para el desarrollo y puesta a prueba? Vaya a:</string>
<string name="about_gitlab">¿Quiere sugerir una función o corregir un error? haga una solicitud de fusión en Android Gitlab:</string>
<string name="menu_help">Ayuda</string>
<string name="general">General</string>
<string name="label_router">Direcciones públicas</string>
@ -233,7 +244,7 @@
<string name="enabled">Habilitado</string>
<string name="i2ptunnel_wizard_desc_name">El nombre del túnel, para su identificación en la lista de túneles.</string>
<string name="i2ptunnel_wizard_desc_desc">Una descripción del túnel. Esto es opcional y puramente informativo.</string>
<string name="i2ptunnel_wizard_desc_dest">Escriba el destino I2P del servicio al que este túnel de cliente debe conectarse. Este podría ser la clave base 64 completa del destino I2P, o un nombre de nodo I2P de su libreta de direcciones.</string>
<string name="i2ptunnel_wizard_desc_dest">Especifique aquí la dirección .i2p o destino (hostname.i2p, b32 o b64) del túnel.</string>
<string name="i2ptunnel_wizard_desc_outproxies">Si sabe de cualquier proxy de salida para este tipo de túnel (bien HTTP o SOCKS), introdúzcalo. Separe los proxys con comas.</string>
<string name="i2ptunnel_wizard_desc_target_host">Esta es la IP sobre la que su servicio está ejecutándose, como este normalmente está en la misma máquina, se autorellena con 127.0.0.1</string>
<string name="i2ptunnel_wizard_desc_target_port">Este es el puerto sobre el que el servicio está aceptando conexiones.</string>
@ -343,10 +354,12 @@
<string name="no_error_messages">No hay mensajes de error</string>
<plurals name="log_error_messages">
<item quantity="one">Un mensaje de error</item>
<item quantity="many">%d mensajes de error, los más recientes primero</item>
<item quantity="other">%d mensajes de error, los más recientes primero</item>
</plurals>
<plurals name="log_messages">
<item quantity="one">Un mensaje</item>
<item quantity="many">%d mensajes, los más recientes primero</item>
<item quantity="other">%d mensajes, los más recientes primero</item>
</plurals>
<string name="log_entry">Entrada de registro (log)</string>
@ -358,4 +371,5 @@
<string name="label_browser_configuration">Configuración del navegador</string>
<string name="no_market_app">No se encontró la aplicación en Android market, por favor, instálela manualmente</string>
<string name="unset">No configurado</string>
<string name="running_background">I2P se ejecuta en segundo plano</string>
</resources>

View File

@ -26,6 +26,7 @@
<string name="button_router_graceful">I2P در %s خاموش خواهد شد</string>
<string name="no_internet">هیچ اتصال اینترنتی موجود نمی باشد</string>
<string name="hidden">پنهان</string>
<string name="testing">در حال تست</string>
<string name="symmetric_nat">NAT همگام</string>
<!--Parameter is a time, e.g. 32s or 2m-->
<string name="net_status_error_unresolved_tcp">آدرس های TCP حل نشده</string>
@ -70,6 +71,7 @@
<string name="transport">انتقال</string>
<string name="versions">نسخه ها</string>
<string name="version">نسخه</string>
<string name="count">شمارش</string>
<string name="notification_status_starting">I2P در حال شروع می باشد</string>
<string name="notification_status_restarting">I2P در حال راه اندازی مجدد است</string>
<string name="notification_status_starting_after_waiting">شبکه اتصال یافت، I2P در حال آغاز است</string>
@ -95,6 +97,7 @@
<string name="settings_desc_hiddenMode">خاموش کردن حالت پنهان</string>
<string name="settings_label_sharePercent">اشتراک گذاری درصد</string>
<string name="settings_desc_upnp">باز کردن درگاه های دیوار آتشین به صورت خودکار</string>
<string name="settings_label_logging">ثبت وقایع</string>
<string name="settings_label_appearance">ظاهر</string>
<string name="settings_label_language">زبان</string>
<string name="settings_default">پیش فرض</string>

View File

@ -135,7 +135,6 @@
<string name="settings_label_transports">Siirrot</string>
<string name="settings_label_maxConns">Yhteyksien enimmäismäärä</string>
<string name="settings_label_i2cp">I2CP-käyttöliittymä</string>
<string name="settings_desc_i2cp">Salli kolmanten osapuolien sovellusten luoda tunneleita (vaatii reitittimen uudelleenkäynnistyksen)</string>
<string name="settings_desc_exploratory_pool">Tunneliparametrit</string>
<string name="settings_label_expl_inbound">Tulotunnelit</string>
<string name="settings_label_expl_outbound">Lähtötunnelit</string>

View File

@ -115,6 +115,10 @@
<string name="notification_status_peers">Pairs : %1$d actifs, %2$d connus</string>
<string name="notification_status_expl">Tunnels exploratoires : %1$d/%2$d</string>
<string name="notification_status_client">Tunnels client : %1$d/%2$d</string>
<string name="stats_memory">Mémoire utilisée/max</string>
<string name="stats_delay">Délai de message</string>
<string name="copied_base32_system_notification_title">Base 32 copié au presse-papier</string>
<string name="copied_base32_system_notification_body">L\'adresse de votre tunnel I2P a été copiée au presse-papier.</string>
<string name="menu_settings">Paramètres</string>
<string name="settings_enable">Activer</string>
<string name="settings_desc_subscriptions">URL dabonnement</string>
@ -147,7 +151,13 @@
<string name="settings_label_transports">Transports</string>
<string name="settings_label_maxConns">Maximum de connexions</string>
<string name="settings_label_i2cp">Interface dI2CP</string>
<string name="settings_desc_i2cp">Permettre aux applis tierces de créer des tunnels (exige un redémarrage du routeur)</string>
<string name="settings_desc_i2cp">Autorise les applications tiers à créer des tunnels en utilisant I2CP (requiert un redémarrage du routeur)</string>
<string name="settings_label_sam">Interface SAM</string>
<string name="settings_desc_sam">Autorise les applis tiers à créer des tunnels en utilisant SAM (requiert un redémarrage du routeur)</string>
<string name="settings_confirm_sam">Une application essaye d\'engager une connexion SAM.</string>
<string name="settings_confirm_sam_id">Connexion Nom/ID :</string>
<string name="settings_confirm_allow_sam">Appuyez pour autoriser</string>
<string name="settings_confirm_deny_sam">Ignorez pour refuser</string>
<string name="settings_label_exploratory_pool">Réserve exploratoire</string>
<string name="settings_desc_exploratory_pool">Paramètres des tunnels</string>
<string name="settings_label_expl_inbound">Tunnels entrants</string>
@ -172,7 +182,7 @@
<string name="about_bugs">Bogues et assistance :</string>
<string name="about_helpwanted">Aide recherchée!</string>
<string name="about_volunteer">Voulez-vous aider à améliorer lappli? Portez-vous volontaire sur le forum Android :</string>
<string name="about_donate">Voulez-vous faire un don en argent ou en bitcoins pour acheter plus dappareils Android pour le développement et les tests? Rendez-vous sur :</string>
<string name="about_gitlab">Avez vous envie de suggérer une fonctionnalité ou corriger un bug ? faites une requête sur le Gitlab Android :</string>
<string name="menu_help">Aide</string>
<string name="general">Général</string>
<string name="label_router">Adresses publiques</string>
@ -233,7 +243,7 @@
<string name="enabled">Activé</string>
<string name="i2ptunnel_wizard_desc_name">Le nom du tunnel, pour identification dans la liste des tunnels.</string>
<string name="i2ptunnel_wizard_desc_desc">Une description du tunnel. Ceci est facultatif et purement informatif.</string>
<string name="i2ptunnel_wizard_desc_dest">Saisir la destination I2P du service auquel ce tunnel client devrait se connecter. Cela pourrait être la clé de destination entière en Base64 ou un nom dhôte I2P de votre carnet dadresses.</string>
<string name="i2ptunnel_wizard_desc_dest">Spécifiez l\'adresse ou destination .i2p (hostname.i2p, b32 ou B64) du tunnel ici.</string>
<string name="i2ptunnel_wizard_desc_outproxies">Si vous connaissez des mandataire sortants pour ce type de tunnel (soit HTTP ou SOCKS), ajoutez-les en les séparant par des virgules.</string>
<string name="i2ptunnel_wizard_desc_target_host">LIP sur laquelle votre service fonctionne, habituellement sur la même machine, donc 127.0.0.1 est préremplie.</string>
<string name="i2ptunnel_wizard_desc_target_port">Le port sur lequel le service accepte des connexions.</string>
@ -343,10 +353,12 @@
<string name="no_error_messages">Aucun message derreur</string>
<plurals name="log_error_messages">
<item quantity="one">Un message derreur</item>
<item quantity="many">%d messages derreur, les plus récents en premier</item>
<item quantity="other">%d messages derreur, les plus récents en premier</item>
</plurals>
<plurals name="log_messages">
<item quantity="one">Un message</item>
<item quantity="many">%d messages, les plus récents en premier</item>
<item quantity="other">%d messages, les plus récents en premier</item>
</plurals>
<string name="log_entry">Entrée de journal</string>
@ -358,4 +370,5 @@
<string name="label_browser_configuration">Configuration du navigateur</string>
<string name="no_market_app">Aucune logithèque trouvée, veuillez installer manuellement.</string>
<string name="unset">Non défini</string>
<string name="running_background">I2P s\'exécute en arrière-plan</string>
</resources>

View File

@ -55,6 +55,7 @@
<string name="upload">Feltöltés</string>
<string name="configure_browser_title">Böngésző beállítása?</string>
<string name="configure_browser_for_i2p">Szeretné beállítani a böngészőt az I2P oldalak megjelenítéséhez? (Ezt később is megteheti a “Segítség” menüből.)</string>
<string name="configure_no_doze_title">Hírek frissítve</string>
<string name="first_start_title">Gratulálunk az I2P telepítéséhez!</string>
<string name="first_start_welcome"><b>Üdvözli az I2P!</b> Kérem <b>legyen türelemmel</b> amíg az I2P elindul és peer-eket talál.</string>
<string name="first_start_read">Amíg várakozik, kérjük olvassa el a kiadási megjegyzéseket és az üdvözlőlapot.</string>
@ -73,15 +74,28 @@
<string name="action_refresh">Frissítés</string>
<string name="hint_search_addressbook">Keresés a címjegyzékben</string>
<string name="action_reload_subscriptions">Feliratkozások újratöltése</string>
<string name="news_updated">Hírek Frissítve</string>
<string name="router_not_running">A router nem fut.</string>
<string name="router_shutting_down">A router bezárása folyamatban.</string>
<string name="stats_not_ready">A statisztikakezelő még nincs kész. Próbáld újra később.</string>
<string name="select_an_address">Válassz egy címet.</string>
<string name="configure_graphs">Grafikonok beállítása</string>
<string name="statistics">Statisztikák</string>
<string name="routers">Routerek</string>
<string name="leasesets">LeaseSet-ek</string>
<string name="leasesets">Úticél Kapcsolódási Információ (LeaseSet)</string>
<string name="countries">Ország</string>
<string name="country">Ország</string>
<string name="transport">Szállítás</string>
<string name="versions">Verziók</string>
<string name="version">Verzió</string>
<string name="count">Mennyiség</string>
<string name="tname_0">Rejtett vagy indul</string>
<string name="netdb_routers_empty">Nincsenek router-ek a NetDB-dben.</string>
<string name="notification_status_starting">az I2P indul</string>
<string name="notification_status_restarting">Az I2P újraindul</string>
<string name="notification_status_waiting">Az I2P hálózati kapcsolatra vár</string>
<string name="notification_status_starting_after_waiting">Hálózat csatlakoztatva, az I2P indul</string>
<string name="notification_status_running">Az I2P fut</string>
<string name="notification_status_client_ready">Kliens alagutak készen állnak</string>
<string name="notification_status_client_down">Kliens alagutak leálltak</string>
<string name="notification_status_graceful">I2P megállítása %s másodperc múlva</string>
@ -95,19 +109,30 @@
<string name="notification_status_client">Kliens alagutak: %1$d/%2$d</string>
<string name="menu_settings">Beállítások</string>
<string name="settings_enable">Engedélyezés</string>
<string name="settings_label_bandwidth_net">Sávszélesség és hálózat</string>
<string name="settings_label_startOnBoot">Az I2P indítása Rendszerindításkor</string>
<string name="settings_desc_startOnBoot">Automatikus csatlakozás az I2P-hez, mikor az Android eszközöd elindul</string>
<string name="settings_label_bandwidth">Sávszélesség</string>
<string name="settings_label_bw_inbound">Bejövő sebesség</string>
<string name="settings_desc_bw_inbound">Maximális bejövő sebesség</string>
<string name="settings_label_bw_outbound">Kimenő sebesség</string>
<string name="settings_desc_bw_outbound">Maximális kimenő sebesség</string>
<string name="settings_label_network">Hálózat</string>
<string name="settings_desc_hiddenMode">Rejtett mód kikapcsolása</string>
<string name="settings_label_maxPartTunnels">Maximális résztvevő alagutak</string>
<string name="settings_desc_maxPartTunnels">Alagutak maximális száma amiben részt vesz (alapértelmezés=20)</string>
<string name="settings_dialog_maxPartTunnels">Alagutak maximális száma amiben részt vesz</string>
<string name="settings_desc_upnp">Tűzfal portok automatikus nyitása</string>
<string name="settings_label_logging">Naplózás</string>
<string name="settings_label_default_log_level">Alapértelmezett naplózási szint</string>
<string name="settings_label_appearance">Megjelenés</string>
<string name="settings_label_language">Nyelv</string>
<string name="settings_default">Alapértelmezett</string>
<string name="settings_label_advanced">Haladó</string>
<string name="settings_label_showStats">Router statisztika</string>
<string name="settings_label_transports">Átvitel</string>
<string name="settings_desc_i2cp">Alagutak létrehozásának engedélyezése harmadik féltől származó alkalmazásoknak (a router újraindítása szükséges hozzá)</string>
<string name="settings_label_maxConns">Max kapcsolatok</string>
<string name="settings_label_i2cp">I2CP felület</string>
<string name="settings_desc_exploratory_pool">Alagút paraméterei</string>
<string name="settings_label_expl_inbound">Bejövő alagutak</string>
<string name="settings_label_expl_outbound">Kimenő alagutak</string>
@ -121,10 +146,17 @@
<string name="menu_about">Névjegy</string>
<string name="about_version">Verzió:</string>
<string name="about_project">A projekt honlapja:</string>
<string name="about_bugs">Hibaelhárítás és Támogatás:</string>
<string name="about_helpwanted">Segítséget Kérünk!</string>
<string name="menu_help">Segítség</string>
<string name="general">Általános</string>
<string name="label_router">Nyilvános cmek</string>
<string name="label_private">Privát címek</string>
<string name="addressbook_is_empty">Címjegyzék üres</string>
<string name="addressbook_search_header">%s találat</string>
<string name="addressbook_add_wizard_k_name">Név</string>
<string name="addressbook_add_wizard_k_destination">Célállomás</string>
<string name="addressbook_add_wizard_desc_name">A név</string>
<string name="i2ptunnel_type_client">Normál kliens</string>
<string name="i2ptunnel_type_httpclient">HTTP kliens</string>
<string name="i2ptunnel_type_ircclient">IRC kliens</string>
@ -150,6 +182,7 @@
<string name="i2ptunnel_delete_confirm_message">Törli az alagutat?</string>
<string name="i2ptunnel_delete_confirm_button">Alagút törlése</string>
<string name="i2ptunnel_no_tunnel_details">Alagút részleteit nem lehet betölteni</string>
<string name="i2ptunnel_wizard_k_client_server">Kliens vagy Szerver</string>
<string name="i2ptunnel_wizard_v_client">Kliens alagút</string>
<string name="i2ptunnel_wizard_v_server">Kiszolgáló alagút</string>
<string name="i2ptunnel_wizard_k_type">Alagút típusa</string>
@ -157,6 +190,8 @@
<string name="i2ptunnel_wizard_k_desc">Leírás</string>
<string name="i2ptunnel_wizard_k_dest">Célállomás</string>
<string name="i2ptunnel_wizard_k_outproxies">Kimenő proxyk</string>
<string name="i2ptunnel_wizard_k_target_port">Célport</string>
<string name="i2ptunnel_wizard_k_reachable_on">Elérhető itt:</string>
<string name="i2ptunnel_wizard_k_auto_start">Automatikus indítás</string>
<string name="next">Következő</string>
<string name="prev">Előző</string>
@ -164,7 +199,6 @@
<string name="enabled">Engedélyezve</string>
<string name="i2ptunnel_wizard_desc_name">Az alagút neve, az alagutak listáján való azonosítás érdekében.</string>
<string name="i2ptunnel_wizard_desc_desc">Az alagút leírása. Opcionális és csupán csak tájékoztató jellegű.</string>
<string name="i2ptunnel_wizard_desc_dest">Adja meg az I2P célállomását a szolgáltatásnak amihez ennek a kliens alagútnak kapcsolódnia kellene. Ez lehet akár a teljes base-64 kódolt célállomás kulcs, vagy egy I2P állomás neve a címjegyzékéből.</string>
<string name="i2ptunnel_wizard_desc_outproxies">Ha tud bármilyen kimenő proxy-t ezen típusú alagúthoz (legyen az akár HTTP vagy SOCKS), akkor írja be ide. A proxy-kat vesszővel választhatja el.</string>
<string name="i2ptunnel_wizard_desc_target_host">Ez az IP, melyen a szolgáltatásod fut, ez rendszerint ugyanazon a gépen van, így a 127.0.0.1 automatikusan beírásra kerül.</string>
<string name="i2ptunnel_wizard_desc_target_port">Ez a port, melyen a szolgáltatás csatlakozásokat fogad.</string>
@ -174,30 +208,52 @@
<string name="i2ptunnel_wizard_submit_confirm_message">Létrehozza az alagutat?</string>
<string name="i2ptunnel_wizard_submit_confirm_button">Alagút létrehozása</string>
<string name="i2ptunnel_view_target">Cél</string>
<string name="i2ptunnel_view_autostart">Automatikus indítás</string>
<string name="address_copied_to_clipboard">Cím másolva a vágólapra</string>
<string name="edit_tunnel">Alagút szerkesztése</string>
<string name="name">Név</string>
<string name="description">Leírás</string>
<string name="auto_start">Automatikus indítás</string>
<string name="tunnel_summ_auto_start">A router indulásakor az alagút is induljon el.</string>
<string name="tunnel_cat_ports">Helyi portok</string>
<string name="shared_client">Megosztott kliens</string>
<string name="tunnel_summ_shared_client">Használja ugyanazt a Célállomást és alagutakat mint a többi megosztott kliens</string>
<string name="persistent_key_conflict_msg">Nem engedélyezheti az állandó kulcsokat amíg az alagút arra van konfigurálva hogy készítsen új kulcsokat újranyitáskor. Le akarja tiltani az új kulcsok készítését újranyitáskor?</string>
<string name="tunnel_summ_persistent_key">Tartsa meg ennek az alagútnak a Célállomását amikor újraindul</string>
<string name="reachable_on">Elérhető itt:</string>
<string name="listen_port">Figyelő port</string>
<string name="client_ssl">Kliens SSL</string>
<string name="tunnel_summ_client_ssl">Klienseknek a kapcsolódáshoz SSL használata kötelező</string>
<string name="outproxies">Kimenő proxyk</string>
<string name="ssl_outproxies">SSL kimenő proxyk</string>
<string name="irc">IRC</string>
<string name="enable_dcc">DCC Engedélyezése</string>
<string name="tunnel_summ_enable_dcc">IRC klienseknek DCC használatának engedélyezése</string>
<string name="target_port">Célport</string>
<string name="use_ssl">SSL használata</string>
<string name="tunnel_summ_use_ssl">SSL használata célhoz való kapcsolódáshoz</string>
<string name="tunnel_parameters">Alagút paraméterei</string>
<string name="profile">Profil</string>
<string name="delay_connect">Csatlakozás késleltetése</string>
<string name="access_control">Hozzáférés kezelése</string>
<string name="restricted_access">Korlátozott elérés</string>
<string name="disabled">Tiltva</string>
<string name="whitelist">Engedélyezett-Lista</string>
<string name="blacklist">Tiltott-Lista</string>
<string name="access_list">Elérési lista</string>
<string name="reject_inproxies">Bejövő proxyk elutasítása</string>
<string name="post_limits">POST korlát</string>
<string name="tunnel_summ_delay_open">Az alagút nyitás késleltetése szükségessé válásig</string>
<string name="tunnel_summ_reduce_quantity">Alagutak mennyiségének csökkentése üres állapotban</string>
<string name="reduced_tunnel_quantity">Csökkentett alagút mennyiség</string>
<string name="close_tunnels">Alagutak bezárása üresjárat esetén</string>
<string name="new_keys_on_reopen_conflict_msg">Nem engedélyezheti az új kulcsok készítését újranyitáskor amíg az alagút állandó kulcsok használatára van konfigurálva. Le akarja tiltani az állandó kulcsokat?</string>
<string name="http_client">HTTP kliens</string>
<string name="tunnel_summ_allow_ssl">SSL engedélyezése I2P címekhez</string>
<string name="username">Felhasználónév</string>
<string name="password">Jelszó</string>
<string name="other">Egyéb</string>
<string name="signature_type">Aláírás Típusa</string>
<string name="custom_options">Egyéni beállítások</string>
<string name="all">Összes</string>
<string name="no_messages">Nincs üzenet</string>

View File

@ -55,6 +55,8 @@
<string name="upload">Unggah</string>
<string name="configure_browser_title">Ubah pengaturan peramban?</string>
<string name="configure_browser_for_i2p">Apakah anda ingin mengubah pengaturan peramban untuk mengunjungi situs-situs I2P? (Anda dapat melakukan ini nanti di menu bantuan.)</string>
<string name="configure_no_doze_title">Atur Optimisasi Baterai?</string>
<string name="configure_no_doze">I2P bekerja dengan baik jika terus dijalankan. Supaya Android tidak menutup I2P ketika mencoba menghemat baterai, Anda dapat memasukkannya ke dalam daftar pengecualian baterai. Ini akan secara signifikan meningkatkan keandalan aplikasi. \n\nTetap jalankan I2P di latar belakang? (direkomendasikan)</string>
<string name="first_start_title">Selamat atas terpasangnya I2P!</string>
<string name="first_start_welcome"><b>Selamat datang di I2P</b> Mohon <b>bersabar</b> karena I2P boot up dan menemukan peers.</string>
<string name="first_start_read">Sementara Anda menunggu, silahkan baca catatn rilis dan laman sambutan.</string>
@ -113,6 +115,11 @@
<string name="notification_status_peers">Peers: %1$d aktif, %2$d diketahui</string>
<string name="notification_status_expl">Saluran eksplorasi: %1$d/%2$d</string>
<string name="notification_status_client">Saluran klien: %1$d/%2$d</string>
<string name="stats_memory">Memori digunakan/maks</string>
<string name="stats_lag">Job Lag</string>
<string name="stats_delay">Message Delay</string>
<string name="copied_base32_system_notification_title">Alamat base32 disalin ke clipboard</string>
<string name="copied_base32_system_notification_body">Alamat tunnel I2P Anda telah disalin ke dalam clipboard.</string>
<string name="menu_settings">Pengaturan</string>
<string name="settings_enable">Aktifkan</string>
<string name="settings_desc_subscriptions">URL Langganan</string>
@ -145,6 +152,13 @@
<string name="settings_label_transports">Transport</string>
<string name="settings_label_maxConns">Maks sambungan</string>
<string name="settings_label_i2cp">I2CP antarmuka</string>
<string name="settings_desc_i2cp">Ijinkan aplikasi third-party untuk membuat tunnels menggunakan I2CP (memerlukan router untuk di-restart)</string>
<string name="settings_label_sam">SAM interface</string>
<string name="settings_desc_sam">Ijinkan aplikasi third-party untuk membuat tunnels menggunakan SAM (memerlukan router untuk di-restart)</string>
<string name="settings_confirm_sam">Sebuah aplikasi sedang berusaha untuk membuat koneksi SAM.</string>
<string name="settings_confirm_sam_id">Nama Koneksi/ID:</string>
<string name="settings_confirm_allow_sam">Ketuk untuk memberikan ijin</string>
<string name="settings_confirm_deny_sam">Abaikan untuk tidak memberikan ijin</string>
<string name="settings_label_exploratory_pool">Pool eksplorasi</string>
<string name="settings_desc_exploratory_pool">Parameter saluran</string>
<string name="settings_label_expl_inbound">Saluran inbound</string>
@ -169,7 +183,7 @@
<string name="about_bugs">Bugs dan Dukungan:</string>
<string name="about_helpwanted">Dibutuhkan Bantuan!</string>
<string name="about_volunteer">Ingin membantu membuat aplikasi lebih baik? Jadilah relawan di forum Android:</string>
<string name="about_donate">Ingin memberikan donasi uang atau bitcoin agar kami dapat membeli lebih banyak perangkat Android untuk pengembangan dan pengujian? Pergi ke:</string>
<string name="about_gitlab">Anda ingin memberikan saran fitur atau memperbaiki bug? Berikan Merge Request di Android Gitlab:</string>
<string name="menu_help">Bantuan</string>
<string name="general">Umum</string>
<string name="label_router">Alamat publik</string>
@ -230,7 +244,7 @@
<string name="enabled">Diaktifkan</string>
<string name="i2ptunnel_wizard_desc_name">Nama saluran, untuk identifikasi dalam daftar saluran.</string>
<string name="i2ptunnel_wizard_desc_desc">Deskripsi saluran. Ini opsional dan murni informatif.</string>
<string name="i2ptunnel_wizard_desc_dest">Ketik destinasi I2P service yang harus terhubung dengan client tunnel ini. Destinasi ini bisa berbentuk 64 bit destination key atau nama I2P host yang berada di buku alamat anda.</string>
<string name="i2ptunnel_wizard_desc_dest">Tetapkan alamat atau tujuan .i2p (hostname.i2p, b32 atau b64) dari tunnel di sini.</string>
<string name="i2ptunnel_wizard_desc_outproxies">Jika Anda tahu berbagai outproxy untuk jenis saluran ini (baik HTTP ataupun SOCKS), isikan mereka. Pisahkan proxy ganda dengan koma.</string>
<string name="i2ptunnel_wizard_desc_target_host">Ini adalah IP yang padanya berjalan layanan Anda, ini umumnya pada mesin yang sama, jadi 127.0.0.1 diisikan secara otomatis.</string>
<string name="i2ptunnel_wizard_desc_target_port">Ini adalah port yang padanya menerima koneksi layanan.</string>
@ -322,8 +336,8 @@
<string name="new_keys_on_reopen_conflict_msg">Anda tidak dapat mengaktifkan key baru pada saat membuka kembali ketika tunnel sedang dikonfigurasi untuk mendapatkan persistent key. Apakah anda ingin menonaktifkan persistent key?</string>
<string name="http_client">Klien HTTP</string>
<string name="tunnel_summ_user_agent">Perbolehkan \'User-Agent\' header melalui</string>
<string name="tunnel_summ_referer">Pass \'Referer\' header through</string>
<string name="tunnel_summ_accept">Pass \'Accept-*\' header through</string>
<string name="tunnel_summ_referer">Perbolehkan \'Referer\' header melalui</string>
<string name="tunnel_summ_accept">Perbolehkan \'Accept-*\' header melalui</string>
<string name="tunnel_summ_allow_ssl">Perbolehkan SSL ke alamat I2P</string>
<string name="jump_url_list">Lewati daftar URL</string>
<string name="proxy_auth">Otorisasi proxy</string>
@ -353,4 +367,5 @@
<string name="label_browser_configuration">Konfigurasi peramban</string>
<string name="no_market_app">Tidak ada aplikasi market ditemukan, silakan install secara manual</string>
<string name="unset">Belum disetel</string>
<string name="running_background">I2P sedang berjalan di latar belakang</string>
</resources>

View File

@ -169,7 +169,6 @@
<string name="about_bugs">Bug e supporto:</string>
<string name="about_helpwanted">Abbiamo bisogno di te!</string>
<string name="about_volunteer">Vuoi aiutarci a creare un\'app migliore? Offriti volontario sul forum di Android:</string>
<string name="about_donate">Vuoi donare al progetto denaro o bitcoin per comprare dispositivi Android, su cui effettuare sviluppo e test dell\'app? Vai qui:</string>
<string name="menu_help">Aiuto</string>
<string name="general">Generale</string>
<string name="label_router">Indirizzi pubblici</string>
@ -229,7 +228,6 @@
<string name="enabled">Abilita</string>
<string name="i2ptunnel_wizard_desc_name">Il nome del tunnel, per identificarlo nell\'elenco dei tunnel.</string>
<string name="i2ptunnel_wizard_desc_desc">Una descrizione del tunnel. È un attributo opzionale a puro titolo informativo.</string>
<string name="i2ptunnel_wizard_desc_dest">Scrivi la destinazione I2P del servizio a cui questo client tunnel dovrebbe connettersi. Questa potrebbe essere la chiave base 64 di destinazione, o un hostname I2P della tua rubrica.</string>
<string name="i2ptunnel_wizard_desc_outproxies">Se conosci qualche proxy di uscita per questo tipo di tunnel (HTTP oppure SOCKS), inseriscilo. Per inserire più proxy, separa i valori usando le virgole.</string>
<string name="i2ptunnel_wizard_desc_target_host">Questo è l\'indirizzo IP sul quale è in funzione il servizio, che generalmente risiede sulla stessa macchina: pertanto si assume il valore 127.0.0.1.</string>
<string name="i2ptunnel_wizard_desc_target_port">Questa è la porta per la quale il servizio accetta connessioni.</string>
@ -339,10 +337,12 @@
<string name="no_error_messages">Nessun messaggio di errore</string>
<plurals name="log_error_messages">
<item quantity="one">Un messaggio di errore</item>
<item quantity="many">%d messaggi di errore, più recenti per primi</item>
<item quantity="other">%d messaggi di errore, più recenti per primi</item>
</plurals>
<plurals name="log_messages">
<item quantity="one">Un messaggio</item>
<item quantity="many">%d messaggi, più recenti per primi</item>
<item quantity="other">%d messaggi, più recenti per primi</item>
</plurals>
<string name="log_entry">Record di log</string>

View File

@ -2,10 +2,12 @@
<resources>
<string name="app_name">I2P</string>
<string name="desc_i2p_logo">I2P ロゴ</string>
<string name="choose_language">言語を選択</string>
<string name="welcome_new_install">I2P へようこそ!このアプリはアルファ版のソフトウェアであり、強い匿名性を提供いたしません。リリース・ノート及びライセンス情報をご覧ください。</string>
<string name="welcome_new_version">新しいバージョンがインストールされました。リリース・ノートをご覧ください。バージョン:</string>
<string name="label_tunnels">トンネル</string>
<string name="label_status">ステータス</string>
<string name="label_status">状態</string>
<string name="label_console">コンソール</string>
<string name="label_addresses">アドレス</string>
<string name="label_addressbook">アドレス帳</string>
<string name="label_i2ptunnel_client">クライアントトンネル</string>
@ -19,25 +21,46 @@
<string name="label_browse">ブラウズ</string>
<string name="label_graphs">グラフ</string>
<string name="button_router_off">長押しして I2P を起動</string>
<string name="button_router_on">I2P を起動中 (長押しで止)</string>
<string name="button_router_on">I2Pは稼働中 (長押しで止)</string>
<string name="button_router_graceful">I2Pは%sでシャットダウン</string>
<string name="button_shutdown_now">長押しで今すぐ停止</string>
<string name="button_cancel_graceful">長押ししてシャットダウンをキャンセル</string>
<string name="no_internet">インターネット接続は利用不可能</string>
<string name="hidden">非表示</string>
<string name="testing">テスト中</string>
<string name="firewalled">警告-ファイアーウォールされ、高速</string>
<string name="firewalled">ファイアーウォールされ</string>
<string name="symmetric_nat">対称型NAT</string>
<string name="net_status_error_i2cp">クライアントマネージャ I2CP エラー- ログをご確認ください</string>
<!--Parameter is a time, e.g. 32s or 2m-->
<string name="net_status_error_skew">%sのクロックスキュー</string>
<string name="net_status_error_unresolved_tcp">未解決の TCP アドレス</string>
<string name="net_status_error_private_tcp">プライベートな TCP アドレス</string>
<string name="net_status_warn_firewalled_inbound_tcp">着信 TCP が有効となり、ファイアーウォールされています</string>
<string name="net_status_warn_firewalled_floodfill">ファイアーウォールに防がれ、 Floodfill</string>
<string name="net_status_info_disconnected">切断されました - ネットワーク接続を確認してください</string>
<string name="net_status_error_udp_port">UDPポートが使用中 - 設定を変更して再起動してください</string>
<string name="net_status_error_no_active_peers">アクティブなピアなし - ネットワークの接続およびファイアーウォールを確認してください</string>
<string name="net_status_error_udp_disabled_tcp_not_set">UDP が無効化され、着信 TCP のホスト/ポートが設定されていません</string>
<string name="net_status_warn_firewalled_udp_disabled">UDP が無効化され、ファイアウォールされています</string>
<string name="shared_clients">共有クライアント</string>
<string name="uptime">稼働時間</string>
<string name="active_peers">アクティブなピア</string>
<string name="known_peers">既知のピア</string>
<!--Character to indicate a client tunnel. Usually first letter of the word "client".-->
<string name="char_client_tunnel">C</string>
<!--Character to indicate a server tunnel. Usually first letter of the word "server".-->
<string name="char_server_tunnel">S</string>
<string name="no_tunnels_running">まだトンネルは起動していません。</string>
<string name="download">ダウンロード</string>
<string name="upload">アップロード</string>
<string name="configure_browser_title">ブラウザの設定をしますか?</string>
<string name="configure_browser_for_i2p">I2Pサイトを見るためにブラウザを設定しますか(あとでヘルプメニューからも設定できます)</string>
<string name="configure_no_doze_title">電池最適化を管理?</string>
<string name="configure_no_doze">I2Pは稼働し続けていれば最もよく動作します。Androidが電気の節約を試みたときにI2Pを終了しないようにするため、電池例外の一覧にI2Pを追加できます。これにより、アプリケーションの信頼性が大幅に上昇します。\n\nI2Pをバックグラウンドで稼働し続けますか推奨</string>
<string name="first_start_title">I2P のインストールおめでとうございます!</string>
<string name="first_start_welcome"><b>I2P へようこそ!</b> I2P が立ち上がり、ピアを見つけるまで<b>我慢してください</b></string>
<string name="first_start_read">待っている間、リリースノートとウェルカムページをお読みください。</string>
<string name="first_start_faq">クライアントトンネルを得たら、以下の FAQ <b>ご確認ください</b>:</string>
<string name="first_start_faq">クライアントトンネルを得たら、以下のよくある質問<b>ご確認ください</b>:</string>
<string name="first_start_faq_nonanon">あるいは、トンネルを待ちたくないなら、この非匿名リンクを使用してください:</string>
<string name="first_start_irc">IRC クライアントを <b>localhost:6668</b> に合わせて、私たちに一言挨拶してください:</string>
<string name="action_search">検索</string>
@ -51,31 +74,57 @@
<string name="action_i2ptunnel_restart_all">全てのトンネルを再開始</string>
<string name="action_reload">再読み込み</string>
<string name="action_refresh">更新</string>
<string name="hint_search_addressbook">アドレスブックを検索</string>
<string name="hint_search_addressbook">アドレスを検索</string>
<string name="action_reload_subscriptions">購読を再読込</string>
<string name="news_last_updated">ニュースは%s前に最終更新</string>
<string name="news_last_checked">ニュースは%s前に最終確認</string>
<string name="news_updated">ニュース更新</string>
<string name="view_news">タッチして最終のI2Pのニュースを表示</string>
<string name="router_not_running">ルーターが起動していません。</string>
<string name="router_shutting_down">ルーターはシャットダウン中です。</string>
<string name="stats_not_ready">統計マネージャーはまだ準備出来ていません。後でやり直してください。</string>
<string name="select_an_address">アドレスを選択</string>
<string name="no_graphs_configured">グラフは設定されていません。設定でどの統計をグラフにするか選択できます。すべての変更は60秒後に有効になります</string>
<string name="configure_graphs">グラフ設定</string>
<string name="graphs_not_ready">グラフの準備ができていません。後でやり直してください。</string>
<string name="statistics">統計</string>
<string name="routers">ルーター</string>
<string name="leasesets">リースセット</string>
<string name="countries"></string>
<string name="country"></string>
<string name="transport">トランスポート</string>
<string name="versions">バージョン</string>
<string name="version">バージョン</string>
<string name="count">カウント</string>
<string name="tname_0">隠すか起動中</string>
<string name="netdb_routers_empty">NetDB にルーターがありません。</string>
<string name="netdb_leases_empty">NetDB にリースセットがありません。</string>
<string name="notification_status_starting">I2P は起動中</string>
<string name="notification_status_restarting">I2P は再起動中</string>
<string name="notification_status_waiting">I2Pはネットワーク接続を待機しています</string>
<string name="notification_status_starting_after_waiting">ネットワーク接続済み、I2Pは起動中</string>
<string name="notification_status_running">I2P は稼働中</string>
<string name="notification_status_client_ready">クライアントトンネルは準備完了</string>
<string name="notification_status_client_down">クライアントトンネルは落ちます</string>
<string name="notification_status_graceful">%sでI2Pを停止</string>
<string name="notification_status_stopping">I2Pを停止中</string>
<string name="notification_status_stopping_after_net">ネットワーク切断、I2Pを停止中</string>
<string name="notification_status_shutdown_cancelled">シャットダウンをキャンセルしました</string>
<string name="notification_status_shutting_down">I2Pはシャットダウン中です。</string>
<string name="notification_status_bw">帯域幅: %1$sBps 下方向 / %2$sBps 上方向</string>
<string name="notification_status_peers">ピア: %1$d アクティブ、 %2$d 既知</string>
<string name="notification_status_expl">予備トンネル: %1$d/%2$d</string>
<string name="notification_status_expl">調査トンネル: %1$d/%2$d</string>
<string name="notification_status_client">クライアントトンネル: %1$d/%2$d</string>
<string name="stats_memory">メモリ 使用/最大</string>
<string name="stats_delay">メッセージ遅延</string>
<string name="copied_base32_system_notification_title">Base32をクリップボードにコピー</string>
<string name="copied_base32_system_notification_body">あなたのI2Pトンネルのアドレスはクリップボードにコピーされました。</string>
<string name="menu_settings">設定</string>
<string name="settings_enable">有効</string>
<string name="settings_desc_subscriptions">URL を登録</string>
<string name="settings_label_bandwidth_net">帯域幅とネットワーク</string>
<string name="settings_label_startOnBoot">デバイスの起動時にI2Pも起動</string>
<string name="settings_desc_startOnBoot">デバイスの起動時に自動でI2Pに接続</string>
<string name="settings_label_startOnBoot">端末の起動時にI2Pも起動</string>
<string name="settings_desc_startOnBoot">Android端末の起動時に自動でI2Pに接続</string>
<string name="settings_label_bandwidth">帯域幅</string>
<string name="settings_label_bw_inbound">受信速度</string>
<string name="settings_desc_bw_inbound">最大受信速度</string>
@ -83,7 +132,7 @@
<string name="settings_desc_bw_outbound">最大送信速度</string>
<string name="settings_label_network">ネットワーク</string>
<string name="settings_label_hiddenMode">参加</string>
<string name="settings_desc_hiddenMode">ヒドゥン・モードを切る</string>
<string name="settings_desc_hiddenMode">秘匿モードを切る</string>
<string name="settings_label_maxPartTunnels">最大参加トンネル数</string>
<string name="settings_desc_maxPartTunnels">参加するトンネルの最大数 (既定=20)</string>
<string name="settings_dialog_maxPartTunnels">参加するトンネルの最大数</string>
@ -92,7 +141,7 @@
<string name="settings_dialog_sharePercent">共有する帯域幅の割合</string>
<string name="settings_desc_upnp">自動的にファイアーウォールのポートを開く</string>
<string name="settings_label_logging">ロギング</string>
<string name="settings_label_default_log_level">デフォルトのログ水準</string>
<string name="settings_label_default_log_level">規定のログ水準</string>
<string name="settings_label_appearance">外観</string>
<string name="settings_label_language">言語</string>
<string name="settings_default">デフォルト</string>
@ -102,7 +151,14 @@
<string name="settings_label_transports">トランスポート</string>
<string name="settings_label_maxConns">最大接続数</string>
<string name="settings_label_i2cp">I2CP インターフェース</string>
<string name="settings_label_exploratory_pool">予備プール</string>
<string name="settings_desc_i2cp">サードパーティのアプリがI2CPを使用するトンネルを作成することを許可ルーターの再起動が必要</string>
<string name="settings_label_sam">SAMインターフェース</string>
<string name="settings_desc_sam">サードパーティのアプリがSAMを使用するトンネルを作成することを許可ルーターの再起動が必要</string>
<string name="settings_confirm_sam">アプリケーションはSAM接続を作成することを試行中。</string>
<string name="settings_confirm_sam_id">接続 名/ID:</string>
<string name="settings_confirm_allow_sam">タップして許可</string>
<string name="settings_confirm_deny_sam">無視して拒否</string>
<string name="settings_label_exploratory_pool">調査のプール</string>
<string name="settings_desc_exploratory_pool">トンネルパラーメーター</string>
<string name="settings_label_expl_inbound">受信トンネル</string>
<string name="settings_label_expl_outbound">送信トンネル</string>
@ -125,10 +181,13 @@
<string name="about_project">プロジェクトホーム:</string>
<string name="about_bugs">バグとサポート:</string>
<string name="about_helpwanted">人手募集中!</string>
<string name="about_volunteer">アプリの改善を手伝いたいですか? Android フォーラム上でボランティア:</string>
<string name="about_donate">開発や試験用にさらに Android デバイスを購入するために、お金や Bitcoin を寄付していただけますか? こちらです:</string>
<string name="about_volunteer">アプリの改善を手伝いたいですか? Android フォーラム上で助力:</string>
<string name="about_gitlab">機能またはバグ修正の提案を行いますか Android Gitlab上でMerge要求を作成してください:</string>
<string name="menu_help">ヘルプ</string>
<string name="general">一般</string>
<string name="label_router">公開アドレス</string>
<string name="label_private">非公開アドレス</string>
<string name="addressbook_is_empty">アドレス帳は空です</string>
<string name="addressbook_search_header">%s 検出</string>
<string name="addressbook_add_wizard_k_name">名前</string>
<string name="addressbook_add_wizard_k_destination">宛先</string>
@ -153,7 +212,9 @@
<string name="i2ptunnel_type_httpbidirserver">HTTP 双方向</string>
<string name="install_recommended_app">推奨アプリをインストールしますか?</string>
<string name="app_needed_for_this_tunnel_type">このトンネルを使用するには推奨アプリをインストールする必要があります。インストールしますか?</string>
<string name="i2ptunnel_not_initialized">トンネルはまだ初期化されていません、2分後に再読み込みしてください。</string>
<string name="i2ptunnel_not_initialized">トンネルはまだ初期化されていませんので、2分後に再読み込みしてください。</string>
<string name="no_configured_client_tunnels">設定されていないクライアントンネル。</string>
<string name="no_configured_server_tunnels">設定されていないサーバートンネル。</string>
<string name="i2ptunnel_new_tunnel">新規トンネル</string>
<string name="i2ptunnel_msg_config_saved">構成の変更が保存されました</string>
<string name="i2ptunnel_msg_config_save_failed">構成の保存に失敗しました</string>
@ -161,10 +222,11 @@
<string name="i2ptunnel_msg_tunnel_stopping">トンネルを停止中</string>
<string name="i2ptunnel_delete_confirm_message">トンネルを削除しますか?</string>
<string name="i2ptunnel_delete_confirm_button">トンネルを削除</string>
<string name="i2ptunnel_no_tunnel_details">トンネルの詳細を読み込めませんでした</string>
<string name="i2ptunnel_wizard_k_client_server">クライアントあるいはサーバー</string>
<string name="i2ptunnel_wizard_v_client">クライアントトンネル</string>
<string name="i2ptunnel_wizard_v_server">サーバートンネル</string>
<string name="i2ptunnel_wizard_k_type">トンネルタイプ</string>
<string name="i2ptunnel_wizard_k_type">トンネルの種類</string>
<string name="i2ptunnel_wizard_k_name">名前</string>
<string name="i2ptunnel_wizard_k_desc">説明</string>
<string name="i2ptunnel_wizard_k_dest">宛先</string>
@ -181,7 +243,8 @@
<string name="enabled">有効</string>
<string name="i2ptunnel_wizard_desc_name">トンネルリストでの識別用に、トンネルの名前。</string>
<string name="i2ptunnel_wizard_desc_desc">トンネルの説明。これは任意であり、単なる参考です。</string>
<string name="i2ptunnel_wizard_desc_outproxies">のタイプのトンネル用 HTTP か SOCKS のいずれか) のアウトプロキシを知っているなら、それらを入力してください。カンマで複数のプロキシを分割できます。</string>
<string name="i2ptunnel_wizard_desc_dest">こでは、トンネルの .i2p アドレスまたは宛先(ホスト名.i2p、b32 または b64を指定します。</string>
<string name="i2ptunnel_wizard_desc_outproxies">この種類のトンネル用 HTTP か SOCKS のいずれか) のアウトプロキシを知っているなら、それらを入力してください。カンマで複数のプロキシを分割できます。</string>
<string name="i2ptunnel_wizard_desc_target_host">これは、サービスが起動している IPです。通常同一のマシン上なので、 127.0.0.1 が自動で入力されます。</string>
<string name="i2ptunnel_wizard_desc_target_port">これはサービスが接続を受け入れているポートです。</string>
<string name="i2ptunnel_wizard_desc_reachable_on">これはどのコンピューターまたはスマートフォンがトンネルにアクセスできるかを制限するものです。</string>
@ -190,7 +253,9 @@
<string name="i2ptunnel_wizard_submit_confirm_message">トンネルを作成しますか?</string>
<string name="i2ptunnel_wizard_submit_confirm_button">トンネルを作成</string>
<string name="i2ptunnel_view_target">ターゲット</string>
<string name="i2ptunnel_view_access_point">アクセスポイント</string>
<string name="i2ptunnel_view_autostart">自動開始</string>
<string name="address_copied_to_clipboard">アドレスはクリップボードにコピーされました</string>
<string name="edit_tunnel">トンネルを編集</string>
<string name="name">名前</string>
<string name="description">説明</string>
@ -198,8 +263,12 @@
<string name="tunnel_summ_auto_start">ルーター起動時にトンネルを開始</string>
<string name="tunnel_cat_ports">ローカルポート</string>
<string name="shared_client">共有クライアント</string>
<string name="target_destination">範囲</string>
<string name="persistent_key">永続的なキー</string>
<string name="tunnel_summ_shared_client">他の共有クライアントと同じ宛先を使う</string>
<string name="target_destination">対象の宛先</string>
<string name="persistent_key">永続的な鍵</string>
<string name="persistent_key_conflict_title">新しい鍵の再開放を無効にしますか?</string>
<string name="persistent_key_conflict_msg">再開放で新しい鍵を生成するようトンネルを設定している間に永続鍵を有効にできません。新しい鍵の再開放を無効にしますか?</string>
<string name="tunnel_summ_persistent_key">再起動時にこのトンネルの宛先を維持する</string>
<string name="reachable_on">到達可能</string>
<string name="listen_port">着信ポート</string>
<string name="client_ssl">クライアントSSL</string>
@ -209,22 +278,27 @@
<string name="irc">IRC</string>
<string name="enable_dcc">DCC有効</string>
<string name="tunnel_summ_enable_dcc">DCCを使用しているクライアントにIRCを許可</string>
<string name="website_domain_name">ウェブサイトドメイン・ネーム</string>
<string name="website_domain_name">ウェブサイトドメイン</string>
<string name="target_host">ターゲットホスト</string>
<string name="target_port">ターゲットポート</string>
<string name="use_ssl">SSLを使用</string>
<string name="tunnel_summ_use_ssl">ターゲットに接続するためにSSLを使用</string>
<string name="tunnel_parameters">トンネル調節</string>
<string name="profile">プロファイル</string>
<string name="profile_bulk">バルク接続(ダウンロード/ウェブサイト/BT</string>
<string name="profile_interactive">双方向接続</string>
<string name="delay_connect">接続延滞</string>
<string name="access_control">アクセスコントロール</string>
<string name="tunnel_summ_delay_connect">要求/応答 接続用を有効</string>
<string name="access_control">アクセス制御</string>
<string name="restricted_access">許可されたアクセス</string>
<string name="disabled">無効</string>
<string name="whitelist">ホワイトリスト</string>
<string name="blacklist">ブラックリスト</string>
<string name="access_list">アクセスリスト</string>
<string name="tunnel_summ_reject_inproxies">I2Pユーザー飲みに接続を許可</string>
<string name="reject_inproxies">インプロキシを拒否する</string>
<string name="tunnel_summ_reject_inproxies">I2Pユーザーのみに接続を許可</string>
<string name="unique_local">ユニークローカル</string>
<string name="tunnel_summ_unique_local">クライアントごとに固有のローカルホストIPを使用</string>
<string name="multihome">マルチホーム</string>
<string name="tunnel_summ_multihome">マルチホーム最適化を有効</string>
<string name="client_connection_limits">接続数制限</string>
@ -242,29 +316,55 @@
<string name="unlimited">無制限</string>
<string name="set_zero_for_unlimited">0=無制限</string>
<string name="post_limits">投稿制限</string>
<string name="power_saving">パワーセーブ</string>
<string name="tunnel_summ_delay_open">要求されるまでトンネルのオープンを遅らせる</string>
<string name="limit_period">制限期間</string>
<string name="client_posts_per_period">期間当たりのクライアントのPOST数</string>
<string name="client_ban_length">クライアントの禁止の長さ</string>
<string name="total_posts_per_period">期間当たりの合計POST数</string>
<string name="total_ban_length">禁止の長さの合計</string>
<string name="power_saving">出力温存</string>
<string name="delay_open">開放を遅れさせる</string>
<string name="tunnel_summ_delay_open">要求されるまでトンネルの開放を遅らせる</string>
<string name="reduce_quantity">数を減らす</string>
<string name="tunnel_summ_reduce_quantity">アイドル時トンネルの数を減らす</string>
<string name="idle_time">アイドル時間</string>
<string name="num_minutes">%s /分</string>
<string name="reduced_tunnel_quantity">減らしたトンネルの数量</string>
<string name="close_tunnels">アイドル時トンネルを閉じる</string>
<string name="new_keys_on_reopen">再開放で新しい鍵にする</string>
<string name="new_keys_on_reopen_conflict_title">持続的な鍵を無効化する?</string>
<string name="new_keys_on_reopen_conflict_msg">トンネルが永続鍵を持つよう設定している間に新しい鍵の再解放を有効にできません。永続鍵を無効にしますか?</string>
<string name="http_client">HTTPクライアント</string>
<string name="tunnel_summ_user_agent">\'User-Agent\'ヘッダーを通す</string>
<string name="tunnel_summ_referer">\'リファラー\'ヘッダーを通す</string>
<string name="tunnel_summ_accept">\'Accept-*\'ヘッダーを通す</string>
<string name="tunnel_summ_allow_ssl">I2PアドレスにSSLを使用可能にする</string>
<string name="jump_url_list">ジャンプURLリスト</string>
<string name="proxy_auth">プロキシ認証</string>
<string name="tunnel_summ_proxy_auth">このプロキシを使用するにはログインが必要です</string>
<string name="username">ユーザーネーム</string>
<string name="username">ユーザー</string>
<string name="password">パスワード</string>
<string name="outproxy_auth">外部プロキシ認証</string>
<string name="tunnel_summ_outproxy_auth">ログインにはアウトプロキシが必要です</string>
<string name="other">その他</string>
<string name="signature_type">署名形式</string>
<string name="custom_options">カスタムオプション</string>
<string name="all">すべて</string>
<string name="no_messages">本文がありません</string>
<string name="no_messages">本文なし</string>
<string name="no_error_messages">エラーメッセージなし</string>
<plurals name="log_error_messages">
<item quantity="other">%d エラーメッセージ、新しい順</item>
</plurals>
<plurals name="log_messages">
<item quantity="other">%dメッセージ、新しい順</item>
</plurals>
<string name="log_entry">ログ項目</string>
<string name="copy_logs">ログをコピー</string>
<string name="i2p_android_error_logs">I2PAndroidエラーログ</string>
<string name="i2p_android_logs">I2PAndroidログ</string>
<string name="error_logs_copied_to_clipboard">エラーログはクリップボードにコピーされました</string>
<string name="logs_copied_to_clipboard">ログはクリップボードにコピーされました</string>
<string name="label_browser_configuration">ブラウザ設定</string>
<string name="no_market_app">マーケットのアプリが見つかりませんでした。手動でインストールしてください。</string>
<string name="unset">解除</string>
<string name="running_background">I2Pはバックグラウンドで稼働中</string>
</resources>

View File

@ -169,7 +169,6 @@
<string name="about_bugs">버그와 지원:</string>
<string name="about_helpwanted">도움이 필요합니다!</string>
<string name="about_volunteer">이 앱을 개선시키고 싶나요? 안드로이드 포럼에서 기여하세요:</string>
<string name="about_donate">돈이나 비트코인 기부로 개발과 테스팅에 필요한 안드로이드 기기 구입을 돕고 싶나요? 참조하세요:</string>
<string name="menu_help">도움말</string>
<string name="general">일반</string>
<string name="label_router">공공 주소들</string>
@ -229,7 +228,6 @@
<string name="enabled">활성화됨</string>
<string name="i2ptunnel_wizard_desc_name">터널 리스트에서 구별하기 위한 터널의 이름</string>
<string name="i2ptunnel_wizard_desc_desc">터널의 설명. 선택적이고 단순 정보용.</string>
<string name="i2ptunnel_wizard_desc_dest">클라이언트 터널이 접속하야 하는 I2P 서비스 도착점 입력. 전체 Base 64 도착점 키나 사용자의 주소록에 있는 I2P 호스트 이름 사용 가능.</string>
<string name="i2ptunnel_wizard_desc_outproxies">만약 이 터널 종류의 나가는 프록시를 안다면 (HTTP 또는 SOCKS), 입력. 여러 프록시들을 콤마로 구별.</string>
<string name="i2ptunnel_wizard_desc_target_host">서비스가 작동중인 IP, 대부분의 경우 같은 기기이기 때문에 127.0.0.1이 자동 입력됨.</string>
<string name="i2ptunnel_wizard_desc_target_port">서비스가 접속을 받아들일 포트.</string>

View File

@ -169,7 +169,6 @@
<string name="about_bugs">Feil og brukerstøtte:</string>
<string name="about_helpwanted">Hjelp ønskes!</string>
<string name="about_volunteer">Vil du gjøre dette programmet bedre? Meld deg som frivillig på Android-forumet:</string>
<string name="about_donate">Vil du donere penger eller bitcoin øremerket flere Android-enheter til utvikling og testformål? Gå til:</string>
<string name="menu_help">Hjelp</string>
<string name="general">Generelt</string>
<string name="label_router">Offentlige adresser</string>
@ -230,7 +229,6 @@
<string name="enabled">Påskrudd</string>
<string name="i2ptunnel_wizard_desc_name">Tunnel-navn, for identifikasjon i tunnel-listen.</string>
<string name="i2ptunnel_wizard_desc_desc">Beskrivelse av tunnelen. Dette er valgfritt, og bare til informasjon.</string>
<string name="i2ptunnel_wizard_desc_dest">Skriv inn I2P-målet og tjenesten som denne klienttunnelen skal koble til. Dette bør være hele base-64 -målnøkkelen, eller et I2P-vertsnavn fra adresseboka di.</string>
<string name="i2ptunnel_wizard_desc_outproxies">Hvis du vet om noen utgående mellomtjenere for denne typen tunnel (enten HTTP eller SOCKS), fyll dem inn. Oppgis flere mellomtjenere må de deles med komma.</string>
<string name="i2ptunnel_wizard_desc_target_host">Dette er IP-en din tjeneste kjører på, dette er vanligvis den samme maskinen, så 127.0.0.1 er ferdigutfylt. </string>
<string name="i2ptunnel_wizard_desc_target_port">Dette er porten tjenesten godtar tilkoblinger på.</string>

View File

@ -169,7 +169,6 @@
<string name="about_bugs">Bugs en ondersteuning:</string>
<string name="about_helpwanted">Hulp gezocht!</string>
<string name="about_volunteer">Wil je vrijwillig helpen de app beter te maken? Kijk op het Android forum:</string>
<string name="about_donate">Wil je geld of bitcoins doneren zodat we op meer Android telefoons kunnen ontwikkelen en testen? Ga naar:</string>
<string name="menu_help">Help</string>
<string name="general">Algemeen</string>
<string name="label_router">Publieke adressen</string>
@ -230,7 +229,6 @@
<string name="enabled">Staat aan</string>
<string name="i2ptunnel_wizard_desc_name">De naam van de tunnel, voor het identificeren in de tunnellijst.</string>
<string name="i2ptunnel_wizard_desc_desc">Een beschrijving van de tunnel. Dit is niet verplicht maar wel informatief.</string>
<string name="i2ptunnel_wizard_desc_dest">Typ de I2P-bestemming van de dienst in waar deze cliënt-tunnel mee moet verbinden. Dit kan de volledige base-64 bestemmingssleutel zijn, of een I2P-hostnaam van je adresboek.</string>
<string name="i2ptunnel_wizard_desc_outproxies">Als je outproxies kent voor dit type tunnel (HTTP of SOCKS), vul ze dan in. Scheid meerdere proxies door middel van komma\'s.</string>
<string name="i2ptunnel_wizard_desc_target_host">Dit is het IP-adres waarop je service runt, dit is meestal op dezelfde machine, dus 127.0.0.1 is standaard ingevuld.</string>
<string name="i2ptunnel_wizard_desc_target_port">Dit is de poort waar de service verbindingen op ontvangt.</string>

View File

@ -111,7 +111,7 @@
<string name="notification_status_stopping_after_net">Sieć rozłączona, zatrzymywanie I2P</string>
<string name="notification_status_shutdown_cancelled">Anulowano zamknięcie</string>
<string name="notification_status_shutting_down">Trwa wyłączanie I2P</string>
<string name="notification_status_bw">Przepustowość: %1$sBps pobieranie / %2$sBps wysyłanie</string>
<string name="notification_status_bw">Przepustowość: %1$s B/s pobieranie / %2$s B/s wysyłanie</string>
<string name="notification_status_peers">Peery: %1$d aktywnych, %2$d znanych</string>
<string name="notification_status_expl">Tunelów rozpoznawczych: %1$d/%2$d</string>
<string name="notification_status_client">Tunele klienta: %1$d/%2$d</string>
@ -147,7 +147,6 @@
<string name="settings_label_transports">Transporty</string>
<string name="settings_label_maxConns">Maksymalna liczba połączeń</string>
<string name="settings_label_i2cp">Interfejs I2CP</string>
<string name="settings_desc_i2cp">Zezwól aplikacjom stron trzecich na tworzenie tuneli (wymaga restartu węzła)</string>
<string name="settings_label_exploratory_pool">Pole rozpoznawcze</string>
<string name="settings_desc_exploratory_pool">Parametry tuneli</string>
<string name="settings_label_expl_inbound">Tunele przychodzące</string>
@ -172,7 +171,6 @@
<string name="about_bugs">Błędy i wsparcie:</string>
<string name="about_helpwanted">Potrzebna pomoc!</string>
<string name="about_volunteer">Chcesz pomóc w ulepszeniu tej aplikacji? Zgłoś się na ochotnika na forum Android:</string>
<string name="about_donate">Chcesz przesłać pieniądze lub bitcoiny, aby zakupić więcej Androidów dla rozwoju i testowania? Idź do:</string>
<string name="menu_help">Pomoc</string>
<string name="general">Ogólne</string>
<string name="label_router">Adres publiczny</string>
@ -233,7 +231,6 @@
<string name="enabled">Włączony</string>
<string name="i2ptunnel_wizard_desc_name">Nazwa tunelu dla identyfikacji w liście tuneli.</string>
<string name="i2ptunnel_wizard_desc_desc">Opis tunelu. Ta opcja jest nieobowiązkowa i służąca wyłącznie do celów informacyjnych.</string>
<string name="i2ptunnel_wizard_desc_dest">Wpisz adres Przeznaczenia I2P usługi z którą klient powinien się połączyć. To powinien być pełny adres Przeznaczenia w formacie Base64, lub adres z Twojej książki adresowej.</string>
<string name="i2ptunnel_wizard_desc_outproxies">Jeśli znasz jakieś wychodzące proxy dla tego typu tunelów (HTTP lub SOCKS), to je wpisz. Serwery proxy oddziel przecinkami.</string>
<string name="i2ptunnel_wizard_desc_target_host">To jest IP na którym Twój serwis jest uruchomiony, zazwyczaj jest to te same urządzenie więc 127.0.0.1 jest wpisane automatycznie.</string>
<string name="i2ptunnel_wizard_desc_target_port">To jest port na którym Twój serwis akceptuje połączenia.</string>

View File

@ -6,10 +6,10 @@
<string name="welcome_new_install">Bem vindo ao I2P! Este aplicativo está em estágio ALPHA e não provê anonimidade forte. Por favor leia as notas e informações de licença.</string>
<string name="welcome_new_version">Nova versão instalada. Por favor, leia as notas de lançamento. Versão:</string>
<string name="label_tunnels">Túneis</string>
<string name="label_status">Estado</string>
<string name="label_status">Status</string>
<string name="label_console">Painel</string>
<string name="label_addresses">Endereços</string>
<string name="label_addressbook">Livro de endereços</string>
<string name="label_addressbook">Catálogo de endereços</string>
<string name="label_i2ptunnel_client">Túneis clientes</string>
<string name="label_i2ptunnel_server">Túneis servidor</string>
<string name="label_logs">Registros</string>
@ -32,9 +32,11 @@
<string name="symmetric_nat">NAT simétrico</string>
<string name="net_status_error_i2cp">Erro no gerenciador de clientes I2CP - verificar logs</string>
<!--Parameter is a time, e.g. 32s or 2m-->
<string name="net_status_error_skew">Desincronização do relógio de %s</string>
<string name="net_status_error_unresolved_tcp">Endereço TCP não resolvido</string>
<string name="net_status_error_private_tcp">Endereço TCP privado</string>
<string name="net_status_warn_firewalled_inbound_tcp">Sob firewall com entrada via TCP ativada</string>
<string name="net_status_warn_firewalled_floodfill">Sob firewall e enchimento por inundação</string>
<string name="net_status_info_disconnected">Desconectado - verifique a conexão de rede</string>
<string name="net_status_error_udp_port">Porta UDP em uso - altere as configurações e reinicie</string>
<string name="net_status_error_no_active_peers">Sem pares ativos - verifique a conexão de rede e o firewall</string>
@ -53,8 +55,10 @@
<string name="upload">Carregar</string>
<string name="configure_browser_title">Configurar o navegador?</string>
<string name="configure_browser_for_i2p">Gostaria de configurar um navegador para visualizar sites da I2P? (Você pode também fazer isso depois a partir do menu ajuda.)</string>
<string name="first_start_title">Parabéns em instalar o I2P!</string>
<string name="first_start_welcome">&lt;b&gt;Seja bem-vindo!&lt;/b&gt; Por favor&lt;b&gt;, tenha paciência enquanto o roteador I2P inicia e procura por pares.</string>
<string name="configure_no_doze_title">Gerenciar otimizações de bateria?</string>
<string name="configure_no_doze">I2P funciona melhor se continuar funcionando. Para evitar que o Android feche o I2P ao tentar economizar/salvar energia, você pode adicioná-lo à lista de exceções da bateria. Isto melhorá substancialmente a confiabilidade do aplicativo.\n\nMantenha I2P funcionando em segundo plano? (recomendado)</string>
<string name="first_start_title">Parabéns por ter I2P instalado!</string>
<string name="first_start_welcome"><b>Boas-Vindas ao I2P!</b> Por favor <b>tenha paciência</b> enquanto I2P inicia e procura por pares.</string>
<string name="first_start_read">Enquanto você está esperando, por favor leia as notas de lançamento e a página de boas vindas.</string>
<string name="first_start_faq">Uma vez que você tenha túneis clientes, por favor <b>verifique</b> nosso FAQ:</string>
<string name="first_start_faq_nonanon">Ou use esse link não-anonimo se você não deseja esperar por túneis:</string>
@ -70,7 +74,7 @@
<string name="action_i2ptunnel_restart_all">Reiniciar todos os túneis</string>
<string name="action_reload">Recarregar</string>
<string name="action_refresh">Atualizar</string>
<string name="hint_search_addressbook">Procurar por livro de endereços</string>
<string name="hint_search_addressbook">Pesquisar no catálogo de endereços</string>
<string name="action_reload_subscriptions">Recarregar inscriçoes</string>
<string name="news_last_updated">Última atualização das noticias a %s atrás</string>
<string name="news_last_checked">Última verificação das noticias a %s atrás</string>
@ -85,6 +89,7 @@
<string name="graphs_not_ready">Gráficos não estão prontos ainda. Tente novamente.</string>
<string name="statistics">Estatísticas</string>
<string name="routers">Roteadores</string>
<string name="leasesets">LeaseSets</string>
<string name="countries">Países</string>
<string name="country">País</string>
<string name="transport">Transporte</string>
@ -93,11 +98,12 @@
<string name="count">Contagem</string>
<string name="tname_0">Oculto ou inicializando</string>
<string name="netdb_routers_empty">Sem roteadores em seu NetDB.</string>
<string name="netdb_leases_empty">Não tem LeaseSets na sua NetDB.</string>
<string name="notification_status_starting">O roteador I2P está inicializando</string>
<string name="notification_status_restarting">O roteador I2P está reiniciando</string>
<string name="notification_status_waiting">O roteador I2P está esperando por uma conexão de rede</string>
<string name="notification_status_starting_after_waiting">Conectado a rede, inicializando o roteador I2P</string>
<string name="notification_status_running">Software I2P em execução</string>
<string name="notification_status_running">I2P está em execução</string>
<string name="notification_status_client_ready">Os túneis de cliente estão prontos</string>
<string name="notification_status_client_down">Os túneis de cliente estão fora de serviço</string>
<string name="notification_status_graceful">Interrompendo o roteador I2P em %s</string>
@ -109,6 +115,11 @@
<string name="notification_status_peers">Pares: %1$d ativos, %2$d conhecidos</string>
<string name="notification_status_expl">Túneis exploratórios: %1$d/%2$d</string>
<string name="notification_status_client">Túneis cliente: %1$d/%2$d</string>
<string name="stats_memory">Memória usada/max</string>
<string name="stats_lag">Atraso no trabalho</string>
<string name="stats_delay">Atraso de mensagem</string>
<string name="copied_base32_system_notification_title">Base32 copiado para a área de transferência</string>
<string name="copied_base32_system_notification_body">O endereço do túnel I2P foi copiado para a área de transferência.</string>
<string name="menu_settings">Especificações</string>
<string name="settings_enable">Ativar</string>
<string name="settings_desc_subscriptions">URLs para inscrição</string>
@ -130,6 +141,7 @@
<string name="settings_desc_sharePercent">Percentual da largura de banda compartilhada (por omissão=80)</string>
<string name="settings_dialog_sharePercent">Porcentagem de banda para comprtilhar</string>
<string name="settings_desc_upnp">Abrir portas do firewall automaticamente</string>
<string name="settings_label_logging">Registo de Eventos</string>
<string name="settings_label_default_log_level">Nível padrão do log</string>
<string name="settings_label_appearance">Aparência</string>
<string name="settings_label_language">Idioma</string>
@ -140,12 +152,21 @@
<string name="settings_label_transports">Transportes</string>
<string name="settings_label_maxConns">Número máximo de conexões</string>
<string name="settings_label_i2cp">Interface do I2CP</string>
<string name="settings_desc_exploratory_pool">Parêmetros de tunel</string>
<string name="settings_desc_i2cp">Permitir que aplicativos de terceiros criem túneis usando I2CP (requer a reinicialização do roteador)</string>
<string name="settings_label_sam">Interface SAM</string>
<string name="settings_desc_sam">Permitir que aplicativos de terceiros criem túneis usando SAM (requer a reinicialização do roteador)</string>
<string name="settings_confirm_sam">Um aplicativo está tentando fazer uma conexão SAM.</string>
<string name="settings_confirm_sam_id">Nome/ID da conexão:</string>
<string name="settings_confirm_allow_sam">Toque para permitir</string>
<string name="settings_confirm_deny_sam">Ignorar para negar</string>
<string name="settings_label_exploratory_pool">Reservatório exploratório</string>
<string name="settings_desc_exploratory_pool">Parâmetros do túnel</string>
<string name="settings_label_expl_inbound">Túneis entrantes</string>
<string name="settings_label_expl_outbound">Tuneis de saída</string>
<string name="settings_label_expl_outbound">Túneis de saída</string>
<string name="settings_label_expl_length">Comprimento</string>
<string name="settings_summ_expl_length">%s saltos</string>
<string name="settings_desc_expl_length">Quantos saltos usar</string>
<string name="settings_label_expl_lengthVariance">Variação do salto</string>
<string name="settings_summ_expl_lengthVariance">%s</string>
<string name="settings_desc_expl_lengthVariance">Quantos saltos aleatórios a adicionar</string>
<string name="settings_label_expl_quantity">Quantidade</string>
@ -155,14 +176,14 @@
<string name="settings_summ_expl_backupQuantity">%s túneis</string>
<string name="settings_desc_expl_backupQuantity">Quantos backups de túneis</string>
<string name="settings_need_transport_enabled">Você deve ter pelo menos um transporte ativado</string>
<string name="settings_router_restart_required">Por favor, reinicialize o software I2P para aplicar as alterações</string>
<string name="settings_router_restart_required">Por favor reinicie I2P para aplicar as mudanças</string>
<string name="menu_about">Sobre</string>
<string name="about_version">Versão:</string>
<string name="about_project">Lar do projeto:</string>
<string name="about_bugs">Bugs e suporte:</string>
<string name="about_bugs">Falhas e Suporte:</string>
<string name="about_helpwanted">Procura-se ajuda!</string>
<string name="about_volunteer">Quer ajudar a tornar o aplicativo melhor? Seja voluntário no fórum Android:</string>
<string name="about_donate">Quer doar dinheiro ou bitcoins para comprar mais dispositivos Android para desenvolvimento e testes? Vá para:</string>
<string name="about_gitlab">Quer sugerir um recurso ou corrigir um bug? faça uma solicitação de mesclagem no Gitlab do Android:</string>
<string name="menu_help">Ajuda</string>
<string name="general">Geral</string>
<string name="label_router">Endereços públicos</string>
@ -203,7 +224,7 @@
<string name="i2ptunnel_delete_confirm_message">Apagar túnel?</string>
<string name="i2ptunnel_delete_confirm_button">Apagar túnel</string>
<string name="i2ptunnel_no_tunnel_details">Não foi possível carregar os detalhes do túnel</string>
<string name="i2ptunnel_wizard_k_client_server">Cliente ou servidor</string>
<string name="i2ptunnel_wizard_k_client_server">Cliente ou Servidor</string>
<string name="i2ptunnel_wizard_v_client">Túnel cliente</string>
<string name="i2ptunnel_wizard_v_server">Túnel servidor</string>
<string name="i2ptunnel_wizard_k_type">Tipo de túnel</string>
@ -223,6 +244,8 @@
<string name="enabled">Ativado</string>
<string name="i2ptunnel_wizard_desc_name">O nome do túnel, para identificação na lista de túneis.</string>
<string name="i2ptunnel_wizard_desc_desc">Uma descrição do túnel. Isso é opcional e puramente informativo.</string>
<string name="i2ptunnel_wizard_desc_dest">Especifique o endereço .i2p ou o destino (hostname.i2p, b32 ou b64) do túnel aqui.</string>
<string name="i2ptunnel_wizard_desc_outproxies">Se você souber de algum proxies de saída para este tipo de túnel (seja HTTP ou SOCKS), digite-os. Separe os múltiplos proxies com vírgulas.</string>
<string name="i2ptunnel_wizard_desc_target_host">Esse é o IP no qual o serviço está rodando, isto está geralmente na mesma maquina então 127.0.0.1 é autopreenchido.</string>
<string name="i2ptunnel_wizard_desc_target_port">Essa é a porta pela qual o serviço está aceitando conexões.</string>
<string name="i2ptunnel_wizard_desc_reachable_on">Isso limita quais computadores ou smartphones podem acessar esse túnel</string>
@ -233,6 +256,7 @@
<string name="i2ptunnel_view_target">Alvo</string>
<string name="i2ptunnel_view_access_point">Ponto de acesso</string>
<string name="i2ptunnel_view_autostart">Auto-inicialização</string>
<string name="address_copied_to_clipboard">Endereço copiado para a área de transferência</string>
<string name="edit_tunnel">Editar túnel</string>
<string name="name">Nome</string>
<string name="description">Descrição</string>
@ -273,7 +297,7 @@
<string name="blacklist">Lista de proibições</string>
<string name="access_list">Lista de acessos</string>
<string name="reject_inproxies">Rejeitar proxies de entrada</string>
<string name="tunnel_summ_reject_inproxies">Permitir que apenas usuários da I2P se conectem</string>
<string name="tunnel_summ_reject_inproxies">Permitir que apenas usuários I2P se conectem</string>
<string name="unique_local">Local único</string>
<string name="tunnel_summ_unique_local">Usar IPs de host locais únicos para cada cliente</string>
<string name="multihome">Multihome</string>
@ -294,6 +318,10 @@
<string name="set_zero_for_unlimited">Especifique 0 para ilimitado</string>
<string name="post_limits">Limites de POST</string>
<string name="limit_period">Período limite</string>
<string name="client_posts_per_period">POSTs de clientes por período</string>
<string name="client_ban_length">Duração do banir/exclusão do cliente</string>
<string name="total_posts_per_period">Total de POSTs por período</string>
<string name="total_ban_length">Duração total do banir/exclusão</string>
<string name="power_saving">Economia de energia</string>
<string name="delay_open">Atrasar a abertura</string>
<string name="tunnel_summ_delay_open">Atrasar a abertura do túnel até ser utilizado</string>
@ -316,7 +344,7 @@
<string name="tunnel_summ_proxy_auth">É necessário um login para usar esse proxy</string>
<string name="username">Nome de usuário</string>
<string name="password">Senha</string>
<string name="outproxy_auth">Autorização de proxy de saída</string>
<string name="outproxy_auth">Autorização do proxy de saída</string>
<string name="tunnel_summ_outproxy_auth">Autenticação necessária para o proxy de saída</string>
<string name="other">Outros</string>
<string name="signature_type">Tipo de assinatura</string>
@ -324,14 +352,24 @@
<string name="all">Todos</string>
<string name="no_messages">Sem mensagens</string>
<string name="no_error_messages">Nenhuma mensagem de erro</string>
<plurals name="log_error_messages">
<item quantity="one">Uma mensagem de erro</item>
<item quantity="many">%d mensagens de erro, a primeira a mais recente</item>
<item quantity="other">%d mensagens de erro, a primeira a mais recente</item>
</plurals>
<plurals name="log_messages">
<item quantity="one">Uma mensagem</item>
<item quantity="many">%d mensagens, mais novas primeiro</item>
<item quantity="other">%d mensagens, mais novas primeiro</item>
</plurals>
<string name="log_entry">Entrada no log</string>
<string name="copy_logs">Copiar logs</string>
<string name="error_logs_copied_to_clipboard">Logs de erro copiados para a área de transferência</string>
<string name="logs_copied_to_clipboard">Logs copiados para a área de transferência</string>
<string name="i2p_android_error_logs">Registros de erros do I2P Android</string>
<string name="i2p_android_logs">Registros do I2P Android</string>
<string name="error_logs_copied_to_clipboard">Registros dos erros copiados para a área de transferência</string>
<string name="logs_copied_to_clipboard">Registros copiados para a área de transferência</string>
<string name="label_browser_configuration">Configuração do navegador</string>
<string name="no_market_app">Nenhum aplicativo de mercado encontrado, por favor, instale manualmente</string>
<string name="unset">Desligado</string>
<string name="running_background">I2P está sendo executado em segundo plano</string>
</resources>

View File

@ -55,6 +55,8 @@
<string name="upload">Enviar</string>
<string name="configure_browser_title">Configurar o navegador?</string>
<string name="configure_browser_for_i2p">Gostaria de configurar um navegador para ver sites I2P? (Pode fazê-lo mais tarde através do menu de ajuda.)</string>
<string name="configure_no_doze_title">Gerenciar otimizações de bateria?</string>
<string name="configure_no_doze">I2P funciona melhor se continuar funcionando. Para evitar que o Android feche o I2P ao tentar economizar/salvar energia, você pode adicioná-lo à lista de exceções da bateria. Isto melhorá substancialmente a confiabilidade do aplicativo.\n\nMantenha I2P funcionando em segundo plano? (recomendado)</string>
<string name="first_start_title">Parabéns por ter instalado o I2P!</string>
<string name="first_start_welcome"><b>Bem vindo ao I2P!</b> Por favor <b>tenha paciência</b> enquanto o I2P arranca e encontra outros nós na rede.</string>
<string name="first_start_read">Enquanto espera, pode ler as notas de lançamento e a página de boas vindas.</string>
@ -113,6 +115,11 @@
<string name="notification_status_peers">Nós: %1$d ativos, %2$d conhecidos</string>
<string name="notification_status_expl">Túneis exploratórios: %1$d/%2$d</string>
<string name="notification_status_client">Túneis de cliente: %1$d/%2$d</string>
<string name="stats_memory">Memória usada/max</string>
<string name="stats_lag">Atraso no trabalho</string>
<string name="stats_delay">Atraso de mensagem</string>
<string name="copied_base32_system_notification_title">Base32 copiado para a área de transferência</string>
<string name="copied_base32_system_notification_body">O endereço do túnel I2P foi copiado para a área de transferência.</string>
<string name="menu_settings">Configurações</string>
<string name="settings_enable">Ativar</string>
<string name="settings_desc_subscriptions">URLs de Subscrição</string>
@ -145,6 +152,13 @@
<string name="settings_label_transports">Transportes</string>
<string name="settings_label_maxConns">Nr. máx. de ligações</string>
<string name="settings_label_i2cp">Interface I2CP</string>
<string name="settings_desc_i2cp">Permitir que aplicativos de terceiros criem túneis usando I2CP (requer a reinicialização do roteador)</string>
<string name="settings_label_sam">Interface SAM</string>
<string name="settings_desc_sam">Permitir que aplicativos de terceiros criem túneis usando SAM (requer a reinicialização do roteador)</string>
<string name="settings_confirm_sam">Um aplicativo está tentando fazer uma conexão SAM.</string>
<string name="settings_confirm_sam_id">Nome/ID da conexão:</string>
<string name="settings_confirm_allow_sam">Toque para permitir</string>
<string name="settings_confirm_deny_sam">Ignorar para negar</string>
<string name="settings_label_exploratory_pool">Poço exploratório</string>
<string name="settings_desc_exploratory_pool">Parâmetros dos túneis</string>
<string name="settings_label_expl_inbound">Túneis de entrada</string>
@ -169,7 +183,7 @@
<string name="about_bugs">Erros e Suporte</string>
<string name="about_helpwanted">Preciso de Ajuda!</string>
<string name="about_volunteer">Queres tornar a aplicação melhor? Voluntariar-te no fórum do Android </string>
<string name="about_donate">Pretende doar dinheiro ou bitcoins para comprar mais dispositivos Android para programação e testes? Vá a:</string>
<string name="about_gitlab">Quer sugerir um recurso ou corrigir um bug? faça uma solicitação de mesclagem no Gitlab do Android:</string>
<string name="menu_help">Ajuda</string>
<string name="general">Geral</string>
<string name="label_router">Endereços públicos</string>
@ -209,6 +223,7 @@
<string name="i2ptunnel_msg_tunnel_stopping">Parar túnel</string>
<string name="i2ptunnel_delete_confirm_message">Apagar túnel?</string>
<string name="i2ptunnel_delete_confirm_button">Apagar túnel </string>
<string name="i2ptunnel_no_tunnel_details">Não foi possível carregar os detalhes do túnel</string>
<string name="i2ptunnel_wizard_k_client_server">Cliente ou Servidor</string>
<string name="i2ptunnel_wizard_v_client">Túnel cliente </string>
<string name="i2ptunnel_wizard_v_server">Túnel servidor </string>
@ -229,7 +244,7 @@
<string name="enabled">Ativado</string>
<string name="i2ptunnel_wizard_desc_name">O nome do túnel, para identificação na lista de túneis.</string>
<string name="i2ptunnel_wizard_desc_desc">A descrição do túnel. Este elemento é opcional e puramente informativo.</string>
<string name="i2ptunnel_wizard_desc_dest">Endereço I2P ao qual este túnel cliente se deve ligar. Pode introduzir um endereço completo usando a base 64 da chave de destino, ou então, o nome de uma máquina I2P presente no seu livro de endereços.</string>
<string name="i2ptunnel_wizard_desc_dest">Especifique o endereço .i2p ou o destino (hostname.i2p, b32 ou b64) do túnel aqui.</string>
<string name="i2ptunnel_wizard_desc_outproxies">Pode aqui introduzir proxies de saída para este tipo de túnel (HTTP ou SOCKS). Separe as proxies com vírgulas.</string>
<string name="i2ptunnel_wizard_desc_target_host">Este é o endereço IP no qual o seu serviço I2P está a correr. Normalmente corresponde à mesma máquina, portanto é automaticamente preenchido com 127.0.0.1.</string>
<string name="i2ptunnel_wizard_desc_target_port">Este é a porta na qual o seu serviço aceita ligações.</string>
@ -241,6 +256,7 @@
<string name="i2ptunnel_view_target">Alvo</string>
<string name="i2ptunnel_view_access_point">Ponto de acesso</string>
<string name="i2ptunnel_view_autostart">Iniciar automaticamente</string>
<string name="address_copied_to_clipboard">Endereço copiado para a área de transferência</string>
<string name="edit_tunnel">Alterar túnel </string>
<string name="name">Nome</string>
<string name="description">Descrição </string>
@ -338,10 +354,12 @@
<string name="no_error_messages">Não há mensagens de erro</string>
<plurals name="log_error_messages">
<item quantity="one">Uma mensagem de erro</item>
<item quantity="many">%d mensagens de erro, mais recentes primeiro</item>
<item quantity="other">%d mensagens de erro, mais recentes primeiro</item>
</plurals>
<plurals name="log_messages">
<item quantity="one">Uma mensagem</item>
<item quantity="many">%d mensagens, mais recentes primeiro</item>
<item quantity="other">%d mensagens, mais recentes primeiro</item>
</plurals>
<string name="log_entry">Entrada no registo</string>
@ -351,5 +369,7 @@
<string name="error_logs_copied_to_clipboard">Registos de erro copiados para a área de transferência</string>
<string name="logs_copied_to_clipboard">Registos copiados para a área de transferência</string>
<string name="label_browser_configuration">Configuração do navegador</string>
<string name="no_market_app">Nenhum aplicativo de mercado encontrado, por favor, instale manualmente</string>
<string name="unset">Desselecionar</string>
<string name="running_background">I2P está sendo executado em segundo plano</string>
</resources>

View File

@ -147,7 +147,6 @@
<string name="settings_label_transports">Transporturi</string>
<string name="settings_label_maxConns">Maxim conexiuni</string>
<string name="settings_label_i2cp">Interfata I2CP</string>
<string name="settings_desc_i2cp">Permiteți aplicațiilor terților să creeze tuneluri (necesită repornirea routerului)</string>
<string name="settings_label_exploratory_pool">pool de explorare</string>
<string name="settings_desc_exploratory_pool">Parametri tunelului</string>
<string name="settings_label_expl_inbound">Tunele de intrare</string>
@ -172,7 +171,6 @@
<string name="about_bugs">Defecte și suport:</string>
<string name="about_helpwanted">Doresc ajutor!</string>
<string name="about_volunteer">Doriți să faceți aplicația mai bună? Voluntari pe forumul Android:</string>
<string name="about_donate">Doriți să donați bani sau bitcoins pentru cumpărarea de mai multe dispozitive Android pentru dezvoltare și testare? Mergeți la:</string>
<string name="menu_help">Ajutor</string>
<string name="general">General</string>
<string name="label_router">Adrese publice</string>
@ -233,7 +231,6 @@
<string name="enabled">Activat</string>
<string name="i2ptunnel_wizard_desc_name">Numele tunelului, pentru identificare în lista tunelurilor.</string>
<string name="i2ptunnel_wizard_desc_desc">O descriere a tunelului. Este facultativ și pur informativ.</string>
<string name="i2ptunnel_wizard_desc_dest">Tastați destinația I2P a serviciului la care ar trebui să se conecteze acest tunel client. Aceasta poate fi cheia de destinație completă a bazei 64 sau un nume de gazdă I2P din agenda dvs. de adrese.</string>
<string name="i2ptunnel_wizard_desc_outproxies">Dacă cunoașteți vreo problemă pentru acest tip de tunel (HTTP sau SOCKS), completați-le. Separați mai multe proxy cu virgule.</string>
<string name="i2ptunnel_wizard_desc_target_host">Acesta este IP la care serviciul se execută, aceasta este, de obicei pe aceeași mașină, astfel 127.0.0.1 este autofilled.</string>
<string name="i2ptunnel_wizard_desc_target_port">Acesta este portul pe care serviciul accepta conexiuni.</string>

View File

@ -147,7 +147,6 @@
<string name="settings_label_transports">Транспортные протоколы</string>
<string name="settings_label_maxConns">Максимум соединений</string>
<string name="settings_label_i2cp">I2CP-интерфейс</string>
<string name="settings_desc_i2cp">Разрешить создание туннелей сторонним программам (требуется перезапуск маршрутизатора)</string>
<string name="settings_label_exploratory_pool">Зондирующий пул</string>
<string name="settings_desc_exploratory_pool">Параметры тоннелей</string>
<string name="settings_label_expl_inbound">Входящие туннели</string>
@ -172,7 +171,6 @@
<string name="about_bugs">Ошибки и поддержка:</string>
<string name="about_helpwanted">Требуется помощь!</string>
<string name="about_volunteer">Хотите помочь улучшить приложение? Добровольцы на Android-форуме:</string>
<string name="about_donate">Хотите пожертвовать деньги или bitcoins на покупку дополнительных Android-устройств для разработчиков и тестировщиков? Зайдите:</string>
<string name="menu_help">Справка</string>
<string name="general">Общие</string>
<string name="label_router">Публичные адреса</string>
@ -233,7 +231,6 @@
<string name="enabled">Включить</string>
<string name="i2ptunnel_wizard_desc_name">Имя туннеля для идентификации в списке туннелей.</string>
<string name="i2ptunnel_wizard_desc_desc">Описание туннеля. Заполнять не обязательно.</string>
<string name="i2ptunnel_wizard_desc_dest">Впишите пункт назначения I2P сервиса, к которому должен подключаться этот туннель. Это может быть base 64 ключ назначения или I2P URL из вашей адресной книги.</string>
<string name="i2ptunnel_wizard_desc_outproxies">Если вам известны любые внешние прокси для этого типа туннеля (как HTTP, так и SOCKS), впишите их. Несколько прокси перечисляются через запятую.</string>
<string name="i2ptunnel_wizard_desc_target_host">Это IP, на котором запущен ваш сервис, обычно он находится на том же устройстве, так что 127.0.0.1 заполняется автоматически.</string>
<string name="i2ptunnel_wizard_desc_target_port">Это порт, на котором сервис принимает подключения.</string>

View File

@ -111,7 +111,6 @@
<string name="about_bugs">Bugy a podpora:</string>
<string name="about_helpwanted">Pomoc je žiadaná!</string>
<string name="about_volunteer">Chceli by ste urobiť aplikáciu lepšou? Prihláste sa na androidovom fóre:</string>
<string name="about_donate">Chcete darovať peniaze alebo bitcoiny za účelom zakúpenia ďalších zariadení s Androidom pre vývoj a testovanie? Choďte na:</string>
<string name="menu_help">Pomoc</string>
<string name="general">Všeobecné</string>
<string name="addressbook_search_header">%s nájdených</string>
@ -198,4 +197,5 @@
<string name="other">Ďalší</string>
<string name="custom_options">Vlastné nastavenia</string>
<string name="all">Všetko</string>
<string name="no_messages">Žiadne správy</string>
</resources>

View File

@ -1,26 +1,17 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="app_name">I2P</string>
<string name="desc_i2p_logo">Logoja e I2P\'së</string>
<string name="welcome_new_install">Mirë se vini në I2P! Ky aplikacion është i tipit ALPHA sopftware dhe nuk mund të ju shërbej me anonimitet të plotë. Ju lutem lexoni notat dhe informacionin e lisencës. </string>
<string name="welcome_new_version">Tip/version i ri është instaluar. Ju lutem lexoni notat e lëshimit .Versioni:</string>
<string name="label_tunnels">Tunelet</string>
<string name="label_status">Statusi</string>
<string name="label_tunnels">Tunele</string>
<string name="label_status">Gjendje</string>
<string name="label_console">Konsolë</string>
<string name="label_addresses">Adresa</string>
<string name="label_addressbook">Libri i adresave. </string>
<string name="label_i2ptunnel_client">Tunelet e klientëve</string>
<string name="label_i2ptunnel_server">Tunelet e Serverave. </string>
<string name="label_logs">Logot</string>
<string name="label_error_logs">Logot e gabimeve</string>
<string name="label_news">Lajmet. </string>
<string name="label_peers_status">Të barabartit/shokët. </string>
<string name="label_release_notes">Shënime lëshimi</string>
<string name="label_licenses">Lisencat</string>
<string name="label_browse">Shfletimi</string>
<string name="label_graphs">Grafikët</string>
<string name="button_router_off">Mbaje tastin për ta filluar I2P\'në</string>
<string name="button_router_on">I2P është në funkcion (mbaje tastin gjatë për ta ndalur) </string>
<string name="label_addressbook">Libër adresash</string>
<string name="label_logs">Shënime</string>
<string name="label_news">Lajme</string>
<string name="label_peers_status">Ortakë</string>
<string name="label_release_notes">Shënime Hedhjeje Në Qarkullim</string>
<string name="label_licenses">Licenca</string>
<string name="label_browse">Shfletoni</string>
<string name="label_graphs">Grafikë</string>
<string name="hidden">Fshehur</string>
<string name="testing">Po provohet</string>
<!--Parameter is a time, e.g. 32s or 2m-->
@ -30,169 +21,76 @@
<string name="char_server_tunnel">S</string>
<string name="download">Shkarkim</string>
<string name="upload">Ngarkoni</string>
<string name="first_start_title">Urime që arritët ta instaloni I2P\'në!</string>
<string name="first_start_title">Urime që arritët ta instaloni I2P-në!</string>
<string name="first_start_welcome">&lt;b&gt;Mirë se vini në I2P!&lt;b&gt; Ju lutem &lt;b&gt;duroni&lt;b&gt; deri sa I2P të boot dhe tåe gjejë peers, </string>
<string name="first_start_read">Deri sa jeni duke pritur, ju lutem lexoni notat që janë lëshuar dhe vizitoni faqen e mirëseardhjes. </string>
<string name="first_start_faq">Kur ti keni tunelët për klientë, ju lutem &lt;b&gt;vështroni&lt;b&gt; FAQ\'un tonë: </string>
<string name="first_start_faq_nonanon">Ose mund ta përdorni këtë link që nuk mund të ku sigurojë anonimitetin, nëse nuk keni durim të pritni për tunelët: </string>
<string name="first_start_irc">Drejtoni IRC klientin tuaj te &lt;b&gt; localhost:66688&lt;b&gt; dhe na përshëndetni në: </string>
<string name="action_search">Kërko</string>
<string name="action_add">Shto</string>
<string name="action_edit">Përmirso</string>
<string name="action_delete">Fshij</string>
<string name="action_i2ptunnel_start">Starto tunelin</string>
<string name="action_i2ptunnel_stop">Ndalo tunelin</string>
<string name="action_i2ptunnel_start_all">Starto të gjithë tunelët</string>
<string name="action_i2ptunnel_stop_all">Ndalo të gjithë tunelët </string>
<string name="action_i2ptunnel_restart_all">Restarto të gjithë tunelët</string>
<string name="action_reload">Ringarko</string>
<string name="action_refresh">Ripajis</string>
<string name="hint_search_addressbook">Kërko në librin e adresave</string>
<string name="action_reload_subscriptions">Rifresko abonimet</string>
<string name="router_not_running">Routeri nuk është duke punuar.</string>
<string name="stats_not_ready">menaxheri i statistikave nuk është gati ende. Provoni përsëri më vone. </string>
<string name="no_graphs_configured">Asnjë graf nuk është konfigururar. Mund të zgjedhni statistikat për graf në menynë e cilësimeve. Ndryshimet do të kenë efekt pas 60 sekondave.</string>
<string name="configure_graphs">Konfiguro grafët</string>
<string name="action_add">Shtoje</string>
<string name="action_edit">Përpunojeni</string>
<string name="action_delete">Fshije</string>
<string name="action_reload">Ringarkoje</string>
<string name="action_refresh">Rifreskoje</string>
<string name="statistics">Statistika</string>
<string name="country">Vendi</string>
<string name="version">Version</string>
<string name="netdb_routers_empty">Nuk ka routerë në NetDB\'në tuaj. </string>
<string name="netdb_leases_empty">Nuk ka LeaseSets në NetDB\'në tuaj.</string>
<string name="notification_status_peers">Peers: %1$d aktivë, %2$d të njohur</string>
<string name="notification_status_expl">Tunelët zbulues: %1$d/%2$d</string>
<string name="notification_status_client">Tunelët për klientë: %1$d/%2$d</string>
<string name="menu_settings">Cilësimet</string>
<string name="settings_enable">Mundëso</string>
<string name="settings_desc_subscriptions">URL`të për abonim</string>
<string name="settings_label_bandwidth_net">Bandwidth dhe rrjeti. </string>
<string name="settings_label_bandwidth">Bandwidth</string>
<string name="settings_label_bw_inbound">Shpejtësia hyrëse</string>
<string name="settings_desc_bw_inbound">Shpejtësia hyrëse maksimale</string>
<string name="settings_label_bw_outbound">Shpejtësia dalëse</string>
<string name="settings_desc_bw_outbound">Shpejtësia dalëse maksimale</string>
<string name="settings_label_network">Rrjeti </string>
<string name="count">Numër</string>
<string name="menu_settings">Rregullime</string>
<string name="settings_enable">Aktivizoje</string>
<string name="settings_label_bandwidth">Gjerësi bande</string>
<string name="settings_label_network">Rrjet</string>
<string name="settings_label_hiddenMode">Pjesëmarrje</string>
<string name="settings_desc_hiddenMode">Fike mode\'in e fshehur</string>
<string name="settings_label_maxPartTunnels">Pjesëmarrja maksimale e tuneleve</string>
<string name="settings_desc_maxPartTunnels">Pjesëmarrja maksimale e tunelëve në (default=20)</string>
<string name="settings_dialog_maxPartTunnels">Pjesëmarrja maksimale e tuneleve në</string>
<string name="settings_label_sharePercent">Përqindja e shpërndarjes</string>
<string name="settings_desc_sharePercent">Përqindja e Bandwidth\'it për shpërndarje (default=80)</string>
<string name="settings_dialog_sharePercent">Përqindja e Bandwidth\'it për shpërndarje</string>
<string name="settings_desc_upnp">Hapni portalet e firewall\'ëve automatikisht</string>
<string name="settings_label_logging">Logimet</string>
<string name="settings_label_default_log_level">Niveli i logimit mesatar</string>
<string name="settings_dialog_sharePercent">Përqindje gjerësie bande për tu ndarë me të tjerë</string>
<string name="settings_label_appearance">Paraqitja</string>
<string name="settings_label_language">Gjuhë</string>
<string name="settings_default">Parazgjedhje</string>
<string name="settings_label_advanced">I/e avancuar</string>
<string name="settings_label_showStats">Statistikat e Router\'ëve</string>
<string name="settings_summ_showStats">Paraqiti cilësitë e avancuara në konsolin kryesor</string>
<string name="settings_label_transports">Transportimet</string>
<string name="settings_label_maxConns">Lidhjet maksimale</string>
<string name="settings_label_i2cp">Ndërfaqja e I2CP\'së</string>
<string name="settings_label_exploratory_pool">Mjet zbulimi</string>
<string name="settings_desc_exploratory_pool">Parametrat e tunelëve</string>
<string name="settings_label_expl_inbound">Tunelët në hyrje</string>
<string name="settings_label_expl_outbound">Tunelët në dalje</string>
<string name="settings_label_expl_length">Gjatësia</string>
<string name="settings_summ_expl_length">%s hope</string>
<string name="settings_desc_expl_length">Sa hope për tu përdorur</string>
<string name="settings_label_expl_lengthVariance">Variacionet e hopeve</string>
<string name="settings_summ_expl_lengthVariance">%s</string>
<string name="settings_desc_expl_lengthVariance">Sa hope të i inkludojmë rëndom</string>
<string name="settings_label_expl_quantity">Kvantitet</string>
<string name="settings_summ_expl_quantity">%s tunelet</string>
<string name="settings_desc_expl_quantity">Sa tunele</string>
<string name="settings_label_expl_backupQuantity">Kvantiteti i rezervave</string>
<string name="settings_summ_expl_backupQuantity">%s tunele</string>
<string name="settings_desc_expl_backupQuantity">Sa rezerva të tuneleve</string>
<string name="menu_about">Për</string>
<string name="about_version">Variant:</string>
<string name="about_project">Projekti Home:</string>
<string name="about_bugs">Bugs dhe Ndihmuesi:</string>
<string name="about_helpwanted">Kërkohet Ndihmë!</string>
<string name="about_volunteer">Doni të ndihmoni aplikacionin të përmirësohet? Ndihmo vullnetarisht në forumin e Android\'it:</string>
<string name="about_donate">Doni të jipni para ose bitcoins për të blerë më shumë pajisje të Android\'it për zhvillim dhe testim? Shko te:</string>
<string name="settings_label_advanced">Të mëtejshme</string>
<string name="settings_label_transports">Bartje</string>
<string name="settings_label_expl_length">Gjatësi</string>
<string name="settings_label_expl_quantity">Sasi</string>
<string name="settings_label_expl_backupQuantity">Sasi kopjeruajtjeje</string>
<string name="menu_about">Mbi</string>
<string name="about_version">Versioni:</string>
<string name="menu_help">Ndihmë</string>
<string name="general">Të përgjithshme</string>
<string name="addressbook_search_header">%s u gjetën</string>
<string name="addressbook_add_wizard_k_name">Emër</string>
<string name="addressbook_add_wizard_k_destination">Destinacioni</string>
<string name="addressbook_add_wizard_desc_name">Emri</string>
<string name="addressbook_add_wizard_desc_destination">Paste B64\'në të Destinacionit këtu. Nëse keni Menaxher Filesh të instaluar, mund të shfletoni për një fil teksti që përmban B64në.</string>
<string name="nsu_iae_illegal_char">Emri i host\'it \"%1$s\" përmban karakterë ilegalë %2$s</string>
<string name="nsu_iae_cannot_start_with">Emri i host\'it nuk mund të fillojë me \"%s\"</string>
<string name="nsu_iae_cannot_end_with">Emri i host\'it nuk mund të përfundojë me \"%s\"</string>
<string name="nsu_iae_cannot_contain">Emri i host\'it nuk mund të përmban \"%s\"</string>
<string name="nsu_iae_requires_conversion">Emri i hostit \"%s\" i duhet konvertim në ASCII por libraria e konvertimeve është e padisponueshme në këtë verzion të Android\'it. </string>
<string name="i2ptunnel_type_client">Klient standard</string>
<string name="i2ptunnel_type_httpclient">Klient i HTTP\'së</string>
<string name="i2ptunnel_type_ircclient">Klient i IRC\'së</string>
<string name="i2ptunnel_type_server">Server i rëndomtë</string>
<string name="i2ptunnel_type_httpserver">Server HTTP</string>
<string name="i2ptunnel_type_sockstunnel">Proksi SOCKS 4/4a/5</string>
<string name="i2ptunnel_type_socksirctunnel">Proksi SOCKS IRC</string>
<string name="i2ptunnel_type_connectclient">Proksi CONNECT/SSL/HTTPS</string>
<string name="i2ptunnel_type_ircserver">IRC server </string>
<string name="i2ptunnel_type_streamrclient">Klienti i Streamr\'it</string>
<string name="i2ptunnel_type_streamrserver">Serveri i Streamr\'it</string>
<string name="i2ptunnel_type_httpbidirserver">HTTP bidir</string>
<string name="i2ptunnel_not_initialized">Tunelët nuk janë inicializuar ende, ju lutem ringarkoni pas dy minutave.</string>
<string name="i2ptunnel_new_tunnel">Tunel i Ri</string>
<string name="i2ptunnel_msg_config_saved">Ndryshimet në konigurim janë ruajtur</string>
<string name="i2ptunnel_msg_config_save_failed">Dështoi të ruaj konfigurimin</string>
<string name="i2ptunnel_msg_tunnel_starting">Duke startuar tunelin</string>
<string name="i2ptunnel_msg_tunnel_stopping">Duke ndalur tunelin</string>
<string name="i2ptunnel_delete_confirm_message">Fshij tunelin? </string>
<string name="i2ptunnel_delete_confirm_button">Fshij tunelin </string>
<string name="i2ptunnel_wizard_k_client_server">Klient ose Server</string>
<string name="i2ptunnel_wizard_v_client">Tuneli i klientëve</string>
<string name="i2ptunnel_wizard_v_server">Tuneli i serverëve</string>
<string name="i2ptunnel_wizard_k_type">Tipi i tunelit</string>
<string name="addressbook_add_wizard_k_destination">Vendmbërritje</string>
<string name="i2ptunnel_type_ircclient">Klient IRC</string>
<string name="i2ptunnel_type_server">Shërbyes standard</string>
<string name="i2ptunnel_type_httpserver">Shërbyes HTTP</string>
<string name="i2ptunnel_type_sockstunnel">Ndërmjetës SOCKS 4/4a/5</string>
<string name="i2ptunnel_type_socksirctunnel">Ndërmjetës SOCKS IRC</string>
<string name="i2ptunnel_type_connectclient">Ndërmjetës CONNECT/SSL/HTTPS</string>
<string name="i2ptunnel_type_ircserver">Shërbyes IRC</string>
<string name="i2ptunnel_type_streamrclient">Klient Streamr</string>
<string name="i2ptunnel_type_streamrserver">Shërbyes Streamr</string>
<string name="i2ptunnel_not_initialized">Tunelet sjanë gatitur ende, ju lutemi, ringarkojeni pas dy minutash.</string>
<string name="i2ptunnel_msg_tunnel_starting">Po niset tunel</string>
<string name="i2ptunnel_msg_tunnel_stopping">Po ndalet tunel</string>
<string name="i2ptunnel_wizard_k_type">Lloj tuneli</string>
<string name="i2ptunnel_wizard_k_name">Emër</string>
<string name="i2ptunnel_wizard_k_desc">Përshkrim</string>
<string name="i2ptunnel_wizard_k_dest">Destinacion</string>
<string name="i2ptunnel_wizard_k_outproxies">Prokurët jashtësor</string>
<string name="i2ptunnel_wizard_k_target_host">Host\'i i shënjuar</string>
<string name="i2ptunnel_wizard_k_target_port">Portalja e shenjuar</string>
<string name="i2ptunnel_wizard_k_reachable_on">Mund të arrihet në </string>
<string name="i2ptunnel_wizard_k_binding_port">Portalja lidhëse </string>
<string name="i2ptunnel_wizard_k_auto_start">Autostarto</string>
<string name="next">Tjetër</string>
<string name="prev">Mëparshme</string>
<string name="finish">Paraqit</string>
<string name="review">Rishikim</string>
<string name="enabled">I/e mundësuar</string>
<string name="i2ptunnel_wizard_desc_name">Emri i tunelit, për identifikim në listën e tuneleve.</string>
<string name="i2ptunnel_wizard_desc_desc">Një përshkrim i tunelit. Kjo është opcionale dhe vetëm informative.</string>
<string name="i2ptunnel_wizard_desc_outproxies">Nëse keni njohuri për ndonjë outproksë për këtë lloj tuneli (ja HTTP ose SOCKS), plotësoni. Proksa të veqantë dhe shumëfishtë med presje.</string>
<string name="i2ptunnel_wizard_desc_target_host">Kjo është IP\'ja ku shërbimi juaj është duke punuar, kjo është në të njëjtin kompjuter kështu që 127.0.0.1 është vetëmbushur. </string>
<string name="i2ptunnel_wizard_desc_target_port">Kjo është portalja ku shërbimi pranon lidhjet. </string>
<string name="i2ptunnel_wizard_desc_reachable_on">Kjo e kufizon çfarë kompjuterë ose smartfonë mund të kenë qasje në këtë tunel. </string>
<string name="i2ptunnel_wizard_desc_binding_port">Kjo është portalja ku tuneli i klientëve do të ketë qasje lokalisht. Kjo është poashtu portalja e klientëve për tunelin e serverëve HTTP bidir.</string>
<string name="i2ptunnel_wizard_desc_auto_start">Të startojë tuneli njëkohësisht me router\'in?</string>
<string name="i2ptunnel_wizard_submit_confirm_message">Krijo tunel?</string>
<string name="i2ptunnel_wizard_submit_confirm_button">Krijo tunel</string>
<string name="i2ptunnel_wizard_k_dest">Vendmbërritje</string>
<string name="next">Pasuesi</string>
<string name="prev">I mëparshmi</string>
<string name="finish">Parashtroje</string>
<string name="review">Shqyrtoni</string>
<string name="enabled">E aktivizuar</string>
<string name="i2ptunnel_wizard_desc_target_host">Kjo është IP-ja në të cilën xhiron shërbimi juaj, zakonisht bëhet fjalë për të njëjtën makinë, ndaj 127.0.0.1 është vetëplotësuar.</string>
<string name="i2ptunnel_wizard_desc_target_port">Kjo është porta në të cilën shërbimi po pranon lidhje. </string>
<string name="i2ptunnel_view_target">Objektiv</string>
<string name="i2ptunnel_view_autostart">Autostarto</string>
<string name="name">Emër</string>
<string name="description">Përshkrim</string>
<string name="auto_start">Autostarto</string>
<string name="reachable_on">Mund të arrihet në </string>
<string name="outproxies">Prokurët jashtësor</string>
<string name="target_host">Host\'i i shënjuar</string>
<string name="target_port">Portalja e shenjuar</string>
<string name="irc">IRC</string>
<string name="use_ssl">Përdorni SSL</string>
<string name="tunnel_parameters">Parametrat e tunelëve</string>
<string name="profile">Profil</string>
<string name="access_control">Kontrolli i qasjes</string>
<string name="disabled">E çaktivizuar</string>
<string name="whitelist">Listë lejimesh</string>
<string name="unlimited">E pakufizuar</string>
<string name="num_minutes">%s minuta</string>
<string name="http_client">Klient i HTTP\'së</string>
<string name="username">Emër përdoruesi</string>
<string name="password">Fjalëkalim</string>
<string name="other">Tjetër</string>
<string name="all">Krejt</string>
<string name="no_messages">Nuk ka mesazhe</string>
<string name="no_messages">Pa mesazhe</string>
</resources>

View File

@ -5,7 +5,7 @@
<string name="choose_language">Välj språk</string>
<string name="welcome_new_install">Välkommen till I2P! Den här appen är ALFA-mjukvara och erbjuder inte stark anonymitet.
Läs utgåvenoteringar och licens-information.</string>
<string name="welcome_new_version">Ny version installerad. Vänligen läs versionsanteckningarna. Version: </string>
<string name="welcome_new_version">Ny version installerad. Läs versionsanteckningarna. Version: </string>
<string name="label_tunnels">Tunnlar</string>
<string name="label_status">Status</string>
<string name="label_console">Konsoll</string>
@ -16,7 +16,7 @@ Läs utgåvenoteringar och licens-information.</string>
<string name="label_logs">Loggar</string>
<string name="label_error_logs">Felloggar</string>
<string name="label_news">Nyheter</string>
<string name="label_peers_status">Noder</string>
<string name="label_peers_status">Jämlikar</string>
<string name="label_release_notes">Utgåva noteringar</string>
<string name="label_licenses">Licenser</string>
<string name="label_browse">Bläddra</string>
@ -40,13 +40,13 @@ Läs utgåvenoteringar och licens-information.</string>
<string name="net_status_warn_firewalled_floodfill">Bakom brandvägg och \'floodfill\'</string>
<string name="net_status_info_disconnected">Frånkopplad - kontrollera nätverksanslutning</string>
<string name="net_status_error_udp_port">UDP-porten används - ändra i inställningar och start om</string>
<string name="net_status_error_no_active_peers">Inga aktiva noder - kontrollera nätverksanslutning och brandvägg</string>
<string name="net_status_error_no_active_peers">Inga aktiva jämlikar - kontrollera nätverksanslutning och brandvägg</string>
<string name="net_status_error_udp_disabled_tcp_not_set">UDP deaktiverad och inåtgående TCP värd/port inte angiven</string>
<string name="net_status_warn_firewalled_udp_disabled">Bakom brandvägg med UDP avaktiverad</string>
<string name="net_status_warn_firewalled_udp_disabled">Bakom brandvägg med UDP inaktiverad</string>
<string name="shared_clients">Delade klienter</string>
<string name="uptime">Drifttid</string>
<string name="active_peers">Aktiva noder</string>
<string name="known_peers">Kända noder</string>
<string name="uptime">Driftstid</string>
<string name="active_peers">Aktiva jämlikar</string>
<string name="known_peers">Kända jämlikar</string>
<!--Character to indicate a client tunnel. Usually first letter of the word "client".-->
<string name="char_client_tunnel">C</string>
<!--Character to indicate a server tunnel. Usually first letter of the word "server".-->
@ -59,15 +59,15 @@ Läs utgåvenoteringar och licens-information.</string>
<string name="configure_no_doze_title">Hantera batterioptimeringar?</string>
<string name="configure_no_doze">I2P fungerar bäst om den fortsätter att fungera. För att förhindra att Android stänger I2P när du försöker spara ström kan du lägga till den i listan över undantag från batterier. Detta kommer att förbättra applikationens tillförlitlighet avsevärt.\n\nHålla I2P igång i bakgrunden? (rekommenderad)</string>
<string name="first_start_title">Gratulerar till din I2P-installation!</string>
<string name="first_start_welcome"><b>Välkommen till I2P!</b> Vänligen <b>ha tålamod</b> medan I2P startar och letar upp noder.</string>
<string name="first_start_read">Medan du väntar, vänligen läs utgåvans meddelanden och välkomstsidan.</string>
<string name="first_start_faq">När du har fått klienttunnlar, vänligen <b>kolla</b> våra vanliga frågor:</string>
<string name="first_start_welcome"><b>Välkommen till I2P!</b> <b>Ha tålamod</b> medan I2P startar och letar upp jämlikar.</string>
<string name="first_start_read">Medan du väntar, läs utgåvans meddelanden och välkomstsidan.</string>
<string name="first_start_faq">När du har fått klienttunnlar, <b>kolla</b> våra vanliga frågor:</string>
<string name="first_start_faq_nonanon">Använd den här icke-anonyma länken om du inte vill vänta på tunnlar:</string>
<string name="first_start_irc">Peka din IRCclient till <b>localhost:6668</b> och säg hej till oss på:</string>
<string name="action_search">Sök</string>
<string name="action_add">Lägg till</string>
<string name="action_edit">Redigera</string>
<string name="action_delete">Radera</string>
<string name="action_delete">Ta bort</string>
<string name="action_i2ptunnel_start">Starta tunnel</string>
<string name="action_i2ptunnel_stop">Stanna tunnel</string>
<string name="action_i2ptunnel_start_all">Starta alla tunnlar</string>
@ -113,7 +113,7 @@ Läs utgåvenoteringar och licens-information.</string>
<string name="notification_status_shutdown_cancelled">Stängning avbruten</string>
<string name="notification_status_shutting_down">I2P stängs av</string>
<string name="notification_status_bw">Bandbredd:%1$sBps ner / %2$sBps upp</string>
<string name="notification_status_peers">Noder: %1$d aktiva, %2$d kända</string>
<string name="notification_status_peers">Jämlikar: %1$d aktiva, %2$d kända</string>
<string name="notification_status_expl">Utforskande tunnlar: %1$d/%2$d</string>
<string name="notification_status_client">Klienttunnlar:%1$d/%2$d</string>
<string name="menu_settings">Inställningar</string>
@ -138,7 +138,7 @@ Läs utgåvenoteringar och licens-information.</string>
<string name="settings_dialog_sharePercent">Procent av bandbredd at dela</string>
<string name="settings_desc_upnp">Öppna portar i brandvägg automatiskt</string>
<string name="settings_label_logging">Loggning</string>
<string name="settings_label_default_log_level">Förvald log nivå</string>
<string name="settings_label_default_log_level">Standard loggnivå</string>
<string name="settings_label_appearance">Stil</string>
<string name="settings_label_language">Språk</string>
<string name="settings_default">Förval</string>
@ -148,7 +148,6 @@ Läs utgåvenoteringar och licens-information.</string>
<string name="settings_label_transports">Transporter</string>
<string name="settings_label_maxConns">Max anslutningar</string>
<string name="settings_label_i2cp">I2CP interfrace</string>
<string name="settings_desc_i2cp">Tillåt tredjepartsappar att skapa tunnlar (kräver omstart av routern)</string>
<string name="settings_label_exploratory_pool">Utforskande pool</string>
<string name="settings_desc_exploratory_pool">Tunnelparametrar</string>
<string name="settings_label_expl_inbound">Inåtgående tunnlar</string>
@ -162,7 +161,7 @@ Läs utgåvenoteringar och licens-information.</string>
<string name="settings_label_expl_quantity">Kvantitet</string>
<string name="settings_summ_expl_quantity">%s tunnlar</string>
<string name="settings_desc_expl_quantity">Hur många tunnlar</string>
<string name="settings_label_expl_backupQuantity">Backup kvantitet</string>
<string name="settings_label_expl_backupQuantity">Reservmängd</string>
<string name="settings_summ_expl_backupQuantity">%s tunnlar</string>
<string name="settings_desc_expl_backupQuantity">Hur många reservtunnlar</string>
<string name="settings_need_transport_enabled">Du måste ha minst en transport aktiverad</string>
@ -173,7 +172,6 @@ Läs utgåvenoteringar och licens-information.</string>
<string name="about_bugs">Fel och Support:</string>
<string name="about_helpwanted">Hjälp Önskas!</string>
<string name="about_volunteer">Vill du hjälpa till att göra appen bättre? Anmäl dig på Android-forumet:</string>
<string name="about_donate">Vill du donera pengar eller bitcoin för inköp av fler Androidenheter till utveckling och testning? Gå till:</string>
<string name="menu_help">Hjälp</string>
<string name="general">Generell</string>
<string name="label_router">Publika adresser</string>
@ -190,8 +188,8 @@ Läs utgåvenoteringar och licens-information.</string>
<string name="nsu_iae_cannot_contain">Värdnamnet kan inte innehålla \"%s\"</string>
<string name="nsu_iae_requires_conversion">Värdnamnet \"%s\" kräver konvertering till ASCII men konverteringsbiblioteket är inte tillgängligt i denna version av Adroid</string>
<string name="i2ptunnel_type_client">Standardklient</string>
<string name="i2ptunnel_type_httpclient">HTTPklient</string>
<string name="i2ptunnel_type_ircclient">IRCklient</string>
<string name="i2ptunnel_type_httpclient">HTTP-klient</string>
<string name="i2ptunnel_type_ircclient">IRC-klient</string>
<string name="i2ptunnel_type_server">Standradserver</string>
<string name="i2ptunnel_type_httpserver">HTTPserver</string>
<string name="i2ptunnel_type_sockstunnel">SOCKS 4/4a/5 proxy</string>
@ -211,9 +209,9 @@ Läs utgåvenoteringar och licens-information.</string>
<string name="i2ptunnel_msg_config_save_failed">Misslyckades med att spara konfiguration</string>
<string name="i2ptunnel_msg_tunnel_starting">Startar tunnel</string>
<string name="i2ptunnel_msg_tunnel_stopping">Stannar tunnel</string>
<string name="i2ptunnel_delete_confirm_message">Radera tunnel?</string>
<string name="i2ptunnel_delete_confirm_button">Radera tunnel</string>
<string name="i2ptunnel_no_tunnel_details">Det gick inte att läsa in detaljer i tunneln</string>
<string name="i2ptunnel_delete_confirm_message">Ta bort tunnel?</string>
<string name="i2ptunnel_delete_confirm_button">Ta bort tunnel</string>
<string name="i2ptunnel_no_tunnel_details">Det gick inte att läsa in tunneldetaljer</string>
<string name="i2ptunnel_wizard_k_client_server">Klient eller Server</string>
<string name="i2ptunnel_wizard_v_client">Klienttunnel</string>
<string name="i2ptunnel_wizard_v_server">Servertunnel</string>
@ -234,9 +232,8 @@ Läs utgåvenoteringar och licens-information.</string>
<string name="enabled">Aktiverad</string>
<string name="i2ptunnel_wizard_desc_name">Tunnelns namn, för identifikation i tunnellistan</string>
<string name="i2ptunnel_wizard_desc_desc">Beskrivning av tunneln. Frivillig och endast för information.</string>
<string name="i2ptunnel_wizard_desc_dest">Mata in I2Pdestinationen för den tjänst denna tunnel skall ansluta till. Detta kan vara den fulla 64 destinationsnyckeln, eller ett I2Pvärdnamn från din adressbok.</string>
<string name="i2ptunnel_wizard_desc_outproxies">Om du känner till några utproxier för den här typen av tunnel (antingen HTTP eller SOCKS), fyll i dem. Separera flera proxier med kommatecken.</string>
<string name="i2ptunnel_wizard_desc_target_host">Detta är den IP din tjänst kör på, vanligtvis på samma maskin så 127.0.0.1 är automatiskt ifylld.</string>
<string name="i2ptunnel_wizard_desc_target_host">Detta är IP-adressen som din tjänst körs på, den är vanligtvis på samma maskin så 127.0.0.1 fylls i automatiskt.</string>
<string name="i2ptunnel_wizard_desc_target_port">Detta är den port din tjänst tar emot anslutningar på.</string>
<string name="i2ptunnel_wizard_desc_reachable_on">Det här begränsar vilka datorer eller smartphones som kan få tillgång till denna tunnel.</string>
<string name="i2ptunnel_wizard_desc_binding_port">Detta är den port som klienttunneln blir åtkomlig från lokalt. Detta är också klientporten för HTTP bidir servertunneln.</string>
@ -257,8 +254,8 @@ Läs utgåvenoteringar och licens-information.</string>
<string name="tunnel_summ_shared_client">Använd samma Destination och tunnlar som andra klienter</string>
<string name="target_destination">Måldestination</string>
<string name="persistent_key">Beständig nyckel</string>
<string name="persistent_key_conflict_title">Avaktivera nya nycklar vid återöppning?</string>
<string name="persistent_key_conflict_msg">Du kan inte aktivera beständiga nycklar när tunneln är konfigurerad att generera nya nycklar vid återöppning. Vill du avaktivera ny nycklar vid återöppning?</string>
<string name="persistent_key_conflict_title">Inaktivera nya nycklar vid återöppning?</string>
<string name="persistent_key_conflict_msg">Du kan inte aktivera beständiga nycklar när tunneln är konfigurerad att generera nya nycklar vid återöppning. Vill du inaktivera ny nycklar vid återöppning?</string>
<string name="tunnel_summ_persistent_key">Behåll den här tunnelns destination när den startar om</string>
<string name="reachable_on">Nåbar på</string>
<string name="listen_port">Lyssnande port</string>
@ -268,7 +265,7 @@ Läs utgåvenoteringar och licens-information.</string>
<string name="ssl_outproxies">SSL utproxier</string>
<string name="irc">IRC</string>
<string name="enable_dcc">Aktivera DCC</string>
<string name="tunnel_summ_enable_dcc">Tillåt IRCklienter att använda DCC</string>
<string name="tunnel_summ_enable_dcc">Tillåt IRC-klienter att använda DCC</string>
<string name="website_domain_name">Webbplats domännamn</string>
<string name="target_host">Målvärd</string>
<string name="target_port">Målport</string>
@ -282,7 +279,7 @@ Läs utgåvenoteringar och licens-information.</string>
<string name="tunnel_summ_delay_connect">Aktivera för request/response-anslutningar</string>
<string name="access_control">Tillgångskontroll</string>
<string name="restricted_access">Bekgränsad åtkomst</string>
<string name="disabled">Avaktiverad</string>
<string name="disabled">Inaktiverad</string>
<string name="whitelist">Whitelist</string>
<string name="blacklist">Blacklist</string>
<string name="access_list">Åtkomstlista</string>
@ -322,10 +319,10 @@ Läs utgåvenoteringar och licens-information.</string>
<string name="reduced_tunnel_quantity">Minska tunnelmängd</string>
<string name="close_tunnels">Stäng tunnlar i viloläge</string>
<string name="new_keys_on_reopen">Nya nycklar vid återöppning</string>
<string name="new_keys_on_reopen_conflict_title">Avaktivera beständiga nycklar?</string>
<string name="new_keys_on_reopen_conflict_msg">Du kan inte aktivera nya nycklar vid återöppning medan tunneln är konfigurerad att ha beständiga nycklar. Vill du avaktivera beständiga nycklar?</string>
<string name="http_client">HTTPklient</string>
<string name="tunnel_summ_user_agent">Släpp igenom \'Användar-Agent\' header</string>
<string name="new_keys_on_reopen_conflict_title">Inaktivera beständiga nycklar?</string>
<string name="new_keys_on_reopen_conflict_msg">Du kan inte aktivera nya nycklar vid återöppning medan tunneln är konfigurerad att ha beständiga nycklar. Vill du inaktivera beständiga nycklar?</string>
<string name="http_client">HTTP-klient</string>
<string name="tunnel_summ_user_agent">Släpp igenom \'Användar-Agent\'-rubriken</string>
<string name="tunnel_summ_referer">Släpp igenom \'Referer\' header</string>
<string name="tunnel_summ_accept">Släpp igenom \'Accept-*\' headers</string>
<string name="tunnel_summ_allow_ssl">Tillåt SSL till I2Padresser</string>

View File

@ -9,14 +9,14 @@
<string name="label_status">Durum</string>
<string name="label_console">Pano</string>
<string name="label_addresses">Adresler</string>
<string name="label_addressbook">Adres Defteri</string>
<string name="label_addressbook">Adres defteri</string>
<string name="label_i2ptunnel_client">İstemci tünelleri</string>
<string name="label_i2ptunnel_server">Sunucu tünelleri</string>
<string name="label_logs">Günlükler</string>
<string name="label_error_logs">Hata Günlükleri</string>
<string name="label_error_logs">Hata günlükleri</string>
<string name="label_news">Haberler</string>
<string name="label_peers_status">Eşler</string>
<string name="label_release_notes">Yayım Notları</string>
<string name="label_release_notes">Yayım notları</string>
<string name="label_licenses">Lisanslar</string>
<string name="label_browse">Göz at</string>
<string name="label_graphs">Çizelgeler</string>
@ -30,17 +30,17 @@
<string name="testing">Sınanıyor</string>
<string name="firewalled">Güvenlik duvarlı</string>
<string name="symmetric_nat">Simetrik NAT</string>
<string name="net_status_error_i2cp">İstemci yöneticisi I2CP hatası - günlüklere bakın</string>
<string name="net_status_error_i2cp">İstemci yöneticisi I2CP hatası. Günlüklere bakın</string>
<!--Parameter is a time, e.g. 32s or 2m-->
<string name="net_status_error_skew">%s saat sapması</string>
<string name="net_status_error_unresolved_tcp">Çözümlenmemiş TCP adresi</string>
<string name="net_status_error_private_tcp">Kişisel TCP adresi</string>
<string name="net_status_warn_firewalled_inbound_tcp">Geliş TCP bağlantısı güvenlik duvarı etkinleştirilmiş </string>
<string name="net_status_warn_firewalled_floodfill">Güvenlik duvarı arkasında otomatik doldurma</string>
<string name="net_status_info_disconnected">Bağlantı kesildi - ağ bağlantısını denetleyin</string>
<string name="net_status_error_udp_port">UDP kapı numarası kullanılıyor - ayarları değiştirip yeniden başlatın</string>
<string name="net_status_info_disconnected">Bağlantı kesildi. Ağ bağlantısını denetleyin</string>
<string name="net_status_error_udp_port">UDP bağlantı noktası kullanılıyor. Ayarları değiştirip yeniden başlatın</string>
<string name="net_status_error_no_active_peers">Etkin eş yok, ağ bağlantısını ve güvenlik duvarını denetleyin</string>
<string name="net_status_error_udp_disabled_tcp_not_set">UDP devre dışı ve Geliş TCP bağlantısı sunucu/kapı numarası ayarlanmamış</string>
<string name="net_status_error_udp_disabled_tcp_not_set">UDP devre dışı ve Geliş TCP bağlantısı sunucu/bağlantı noktası ayarlanmamış</string>
<string name="net_status_warn_firewalled_udp_disabled">Güvenlik duvarı ve UDP devre dışı</string>
<string name="shared_clients">Paylaşılmış istemciler</string>
<string name="uptime">Çalışma süresi</string>
@ -58,9 +58,9 @@
<string name="configure_no_doze_title">Pil kullanımı yönetilsin mi?</string>
<string name="configure_no_doze">I2P için en iyi durum sürekli çalışmasıdır. I2P uygulamasının Android üzerinde pili korumak için kapatılmasını engellemek için uygulamayı pil kullanımı istisnası listesine ekleyebilirsiniz. Bu durumda uygulamanın güvenirliği önemli ölçüde artacaktır.\n\nI2P arka planda çalışır durumda tutulsun mu (önerilir)?</string>
<string name="first_start_title">Tebrikler, I2P kuruldu!</string>
<string name="first_start_welcome"><b>I2P Yazılımına Hoşgeldiniz</b> Lütfen I2P yüklenip eşleri bulana kadar <b>sabırlı olun</b>.</string>
<string name="first_start_welcome"><b>I2P uygulamasına h geldiniz</b> Lütfen I2P ılıp eşleri bulana kadar <b>sabırlı olun</b>.</string>
<string name="first_start_read">Beklerken, lütfen sürüm notları ve hoş geldiniz sayfalarını okuyun.</string>
<string name="first_start_faq">İstemci tünelleri bulunduğunda, lütfen Sık Sorulan Sorular bölümüne <b>bakın</b>:</string>
<string name="first_start_faq">İstemci tünelleri bulunduğunda, lütfen sık sorulan sorular bölümüne <b>bakın</b>:</string>
<string name="first_start_faq_nonanon">Ya da tünelleri beklemek istemiyorsanız anonim olmayan şu bağlantıyı kullanın:</string>
<string name="first_start_irc">IRC istemcinizi <b>localhost:6668</b> adresine yönlendirip şuradan bize merhaba deyin:</string>
<string name="action_search">Arama</string>
@ -72,13 +72,13 @@
<string name="action_i2ptunnel_start_all">Tüm tünelleri aç</string>
<string name="action_i2ptunnel_stop_all">Tüm tünelleri kapat</string>
<string name="action_i2ptunnel_restart_all">Tüm tünelleri yeniden aç</string>
<string name="action_reload">Yeniden Yükle</string>
<string name="action_reload">Yeniden yükle</string>
<string name="action_refresh">Yenile</string>
<string name="hint_search_addressbook">Adres defterinde arama</string>
<string name="action_reload_subscriptions">Abonelikleri yeniden yükle</string>
<string name="news_last_updated">Haberler en son %s önce güncellendi</string>
<string name="news_last_checked">Haberler en son %s önce denetlendi</string>
<string name="news_updated">Haberler Güncellendi</string>
<string name="news_updated">Haberler güncellendi</string>
<string name="view_news">I2P yeniliklerini görmek için dokunun</string>
<string name="router_not_running">Yöneltici çalışmıyor.</string>
<string name="router_shutting_down">Yöneltici kapatılıyor.</string>
@ -89,16 +89,16 @@
<string name="graphs_not_ready">Çizelgeler henüz hazır değil. Daha sonra yeniden deneyin.</string>
<string name="statistics">İstatistikler</string>
<string name="routers">Yönelticiler</string>
<string name="leasesets">Kiralama Kümeleri</string>
<string name="leasesets">\"Kiralama kümeleri\" (LeaseSets)</string>
<string name="countries">Ülkeler</string>
<string name="country">Ülke</string>
<string name="transport">Aktarım</string>
<string name="transport">Taşıyıcı</string>
<string name="versions">Sürümler</string>
<string name="version">Sürüm</string>
<string name="count">Sayı</string>
<string name="tname_0">Gizli ya da başlatılıyor</string>
<string name="netdb_routers_empty">Veritabanınızda bir yöneltici bulunamadı.</string>
<string name="netdb_leases_empty">Veritabanınızda bir LeaseSets bulunamadı.</string>
<string name="netdb_routers_empty">\"veri tabanınızda\" (NetDB) bir yöneltici bulunamadı.</string>
<string name="netdb_leases_empty">\"veri tabanınızda\" (NetDB) bir \"Kiralama kümesi\" (LeaseSet) bulunamadı.</string>
<string name="notification_status_starting">I2P başlatılıyor</string>
<string name="notification_status_restarting">I2P yeniden başlatılıyor</string>
<string name="notification_status_waiting">I2P bir ağ bağlantısının kurulmasını bekliyor</string>
@ -108,18 +108,23 @@
<string name="notification_status_client_down">İstemci tünelleri kapalı</string>
<string name="notification_status_graceful">I2P %s içinde durdurulacak</string>
<string name="notification_status_stopping">I2P durduruluyor</string>
<string name="notification_status_stopping_after_net">devre dışı bırakıldı, I2P durduruluyor</string>
<string name="notification_status_stopping_after_net">bağlantısı kesildi, I2P durduruluyor</string>
<string name="notification_status_shutdown_cancelled">Kapatma iptal edildi</string>
<string name="notification_status_shutting_down">I2P kapatılıyor</string>
<string name="notification_status_bw">Bant genişliği: %1$sBps indirme / %2$sBps yükleme</string>
<string name="notification_status_peers">Eşler: %1$d etkin, %2$d bilinmeyen</string>
<string name="notification_status_expl">Keşif tünelleri: %1$d/%2$d</string>
<string name="notification_status_client">İstemci tünelleri: %1$d/%2$d</string>
<string name="stats_memory">Bellek kullanılan/toplam</string>
<string name="stats_lag">Görev gecikmesi</string>
<string name="stats_delay">İleti gecikmesi</string>
<string name="copied_base32_system_notification_title">Base32 panoya kopyalandı</string>
<string name="copied_base32_system_notification_body">I2P tünelinizin adresi panoya kopyalandı.</string>
<string name="menu_settings">Ayarlar</string>
<string name="settings_enable">Etkinleştir</string>
<string name="settings_desc_subscriptions">Abonelik İnternet Adresleri</string>
<string name="settings_desc_subscriptions">Abonelik adresleri</string>
<string name="settings_label_bandwidth_net">Bant genişliği ve ağ</string>
<string name="settings_label_startOnBoot">I2P Açılışta Başlatılsın</string>
<string name="settings_label_startOnBoot">I2P açılışta başlatılsın</string>
<string name="settings_desc_startOnBoot">Android aygıtınız başlatıldığında I2P kendiliğinden bağlanır</string>
<string name="settings_label_bandwidth">Bant genişliği</string>
<string name="settings_label_bw_inbound">Geliş bağlantısı hızı</string>
@ -135,7 +140,7 @@
<string name="settings_label_sharePercent">Paylaşım yüzdesi</string>
<string name="settings_desc_sharePercent">Paylaşılacak bant genişliği yüzdesi (varsayılan=80)</string>
<string name="settings_dialog_sharePercent">Paylaşılacak bant genişliği yüzdesi</string>
<string name="settings_desc_upnp">Güvenlik duvarı kapı numaraları kendiliğindenılsın</string>
<string name="settings_desc_upnp">Güvenlik duvarı bağlantı noktaları otomatik olarakılsın</string>
<string name="settings_label_logging">Günlükleme</string>
<string name="settings_label_default_log_level">Varsayılan günlük düzeyi</string>
<string name="settings_label_appearance">Görünüm</string>
@ -144,10 +149,16 @@
<string name="settings_label_advanced">Gelişmiş</string>
<string name="settings_label_showStats">Yöneltici istatistikleri</string>
<string name="settings_summ_showStats">Ana panoda ayrıntılı istatistikler görüntülensin</string>
<string name="settings_label_transports">Aktarımlar</string>
<string name="settings_label_transports">Taşıyıcılar</string>
<string name="settings_label_maxConns">En fazla bağlantı</string>
<string name="settings_label_i2cp">I2CP Arabirimi</string>
<string name="settings_desc_i2cp">Üçüncü taraf uygulamalar tünel oluşturabilsin (yönelticinin yeniden başlatılması gerekir)</string>
<string name="settings_label_i2cp">I2CP arabirimi</string>
<string name="settings_desc_i2cp">Üçüncü taraf uygulamalar I2CP ile tüneller oluşturabilsin (yöneltici yeniden başlatılmalıdır)</string>
<string name="settings_label_sam">SAM arabirimi</string>
<string name="settings_desc_sam">Üçüncü taraf uygulamalar SAM ile tüneller oluşturabilsin (yöneltici yeniden başlatılmalıdır)</string>
<string name="settings_confirm_sam">Bir uygulama bir SAM bağlantısı kurmaya çalışıyor.</string>
<string name="settings_confirm_sam_id">Bağlantı adı/kodu:</string>
<string name="settings_confirm_allow_sam">İzin vermek için dokunun</string>
<string name="settings_confirm_deny_sam">Reddetmek için yok sayın</string>
<string name="settings_label_exploratory_pool">Keşif havuzu</string>
<string name="settings_desc_exploratory_pool">Tunel ayarları</string>
<string name="settings_label_expl_inbound">Geliş tünelleri</string>
@ -164,15 +175,15 @@
<string name="settings_label_expl_backupQuantity">Yedek sayısı</string>
<string name="settings_summ_expl_backupQuantity">%s tünel</string>
<string name="settings_desc_expl_backupQuantity">Tünel yedeği sayısı</string>
<string name="settings_need_transport_enabled">En az bir aktarım etkinleştirilmiş olmalıdır</string>
<string name="settings_need_transport_enabled">En az bir taşıyıcı etkinleştirilmiş olmalıdır</string>
<string name="settings_router_restart_required">Değişikliklerin etkili olması için I2P yeniden başlatılmalı</string>
<string name="menu_about">Hakkında</string>
<string name="about_version">Sürüm:</string>
<string name="about_project">Proje Web Sitesi:</string>
<string name="about_bugs">Hatalar ve Destek</string>
<string name="about_helpwanted">Yardımınız Gerekli!</string>
<string name="about_project">Proje sitesi:</string>
<string name="about_bugs">Hatalar ve destek</string>
<string name="about_helpwanted">Yardımınız gerekli!</string>
<string name="about_volunteer">Uygulamayı daha iyi duruma getirmek için yardımcı olmak ister misiniz? Android forumunda gönüllü olun:</string>
<string name="about_donate">Geliştirme ve denemeler için çeşitli Android aygıtları alabilmemiz için para ya da bitcoin bağışlamak ister misiniz:</string>
<string name="about_gitlab">Bir öneride bulunmak ya da hata bildirmek mi istiyorsunuz? Android GitLab üzerinden bir birleştirme isteği yapın:</string>
<string name="menu_help">Yardım</string>
<string name="general">Genel</string>
<string name="label_router">Herkese açık adresler</string>
@ -202,10 +213,10 @@
<string name="i2ptunnel_type_httpbidirserver">HTTP bidir</string>
<string name="install_recommended_app">Önerilen uygulama kurulsun mu?</string>
<string name="app_needed_for_this_tunnel_type">Bu tüneli kullanmak için bir uygulama kurmalısınız. Önerilen uygulamayı kurmak ister misiniz?</string>
<string name="i2ptunnel_not_initialized">Tüneller henüz hazır değil, lütfen iki dakika sonra yeniden yükleyin.</string>
<string name="i2ptunnel_not_initialized">Tüneller henüz hazır değil. Lütfen iki dakika sonra yeniden yükleyin.</string>
<string name="no_configured_client_tunnels">Henüz ayarlanmış bir istemci tüneli yok.</string>
<string name="no_configured_server_tunnels">Henüz ayarlanmış bir sunucu tüneli yok.</string>
<string name="i2ptunnel_new_tunnel">Yeni Tünel</string>
<string name="i2ptunnel_new_tunnel">Yeni tünel</string>
<string name="i2ptunnel_msg_config_saved">Yapılandırma değişiklikleri kaydedildi</string>
<string name="i2ptunnel_msg_config_save_failed">Yapılandırma kaydedilemedi</string>
<string name="i2ptunnel_msg_tunnel_starting">Tünel açılıyor</string>
@ -213,7 +224,7 @@
<string name="i2ptunnel_delete_confirm_message">Tüneli sil</string>
<string name="i2ptunnel_delete_confirm_button">Tüneli sil</string>
<string name="i2ptunnel_no_tunnel_details">Tünel ayrıntıları yüklenemedi</string>
<string name="i2ptunnel_wizard_k_client_server">İstemci ya da Sunucu</string>
<string name="i2ptunnel_wizard_k_client_server">İstemci ya da sunucu</string>
<string name="i2ptunnel_wizard_v_client">İstemci tüneli</string>
<string name="i2ptunnel_wizard_v_server">Sunucu tüneli</string>
<string name="i2ptunnel_wizard_k_type">Tünel türü</string>
@ -222,23 +233,23 @@
<string name="i2ptunnel_wizard_k_dest">Hedef</string>
<string name="i2ptunnel_wizard_k_outproxies">Çıkış vekil sunucuları</string>
<string name="i2ptunnel_wizard_k_target_host">Hedef sunucu</string>
<string name="i2ptunnel_wizard_k_target_port">Hedef kapı numarası</string>
<string name="i2ptunnel_wizard_k_target_port">Hedef bağlantı noktası</string>
<string name="i2ptunnel_wizard_k_reachable_on">Şuradan erişilebilir</string>
<string name="i2ptunnel_wizard_k_binding_port">Bağlanılacak kapı numarası</string>
<string name="i2ptunnel_wizard_k_binding_port">Bağlanılacak bağlantı noktası</string>
<string name="i2ptunnel_wizard_k_auto_start">Otomatik başlat</string>
<string name="next">Sonraki</string>
<string name="prev">Önceki</string>
<string name="finish">Gönder</string>
<string name="review">Gözden Geçir</string>
<string name="review">Gözden geçir</string>
<string name="enabled">Etkin</string>
<string name="i2ptunnel_wizard_desc_name">Tünel listesinde görüntülenecek tünel adı.</string>
<string name="i2ptunnel_wizard_desc_desc">İsteğe bağlı olarak yazılabilecek tünel açıklaması.</string>
<string name="i2ptunnel_wizard_desc_dest">Bu istemci tünelinin bağlanacağı hizmetin I2P hedefini yazın. Tam Base 64 hedef anahtarı ya da adres defterinizden bir sunucu adı olabilir.</string>
<string name="i2ptunnel_wizard_desc_dest">Tünelin .i2p adresini ya da hedefini (sunucuadi.i2p, b32 ya da b64) buraya yazın.</string>
<string name="i2ptunnel_wizard_desc_outproxies">Bu tünel türü için bildiğiniz çıkış sunucuları varsa (HTTP ya da SOCKS) buraya virgül ile ayırarak yazın. </string>
<string name="i2ptunnel_wizard_desc_target_host">Çalıştırdığınız hizmetin IP adresi. Genellikle aynı bilgisayarda olduğundan otomatik olarak 127.0.0.1 yazılır.</string>
<string name="i2ptunnel_wizard_desc_target_port">Hizmetin bağlantıları kabul edeceği kapı numarası.</string>
<string name="i2ptunnel_wizard_desc_target_port">Hizmetin bağlantıları kabul edeceği bağlantı noktası.</string>
<string name="i2ptunnel_wizard_desc_reachable_on">Bu seçenek bu tünele erişebilecek bilgisayar ve akıllı telefonları sınırlar.</string>
<string name="i2ptunnel_wizard_desc_binding_port">İstemci tüneline yerel olarak erişilebilecek kapı numarası. Aynı zamanda HTTP bidir sunucusu tünelinin istemci kapı numarasıdır.</string>
<string name="i2ptunnel_wizard_desc_binding_port">İstemci tüneline yerel olarak erişilebilecek bağlantı noktası. Aynı zamanda HTTP bidir sunucusu tünelinin istemci bağlantı noktasıdır.</string>
<string name="i2ptunnel_wizard_desc_auto_start">Yöneltici başlatıldığında tünel de başlatılsın mı?</string>
<string name="i2ptunnel_wizard_submit_confirm_message">Tünel oluşturulsun</string>
<string name="i2ptunnel_wizard_submit_confirm_button">Tüneli oluştur</string>
@ -251,7 +262,7 @@
<string name="description">ıklama</string>
<string name="auto_start">Otomatik başlat</string>
<string name="tunnel_summ_auto_start">Yöneltici başlatıldığında tünel de başlatılsın.</string>
<string name="tunnel_cat_ports">Yerel kapı numaraları</string>
<string name="tunnel_cat_ports">Yerel bağlantı noktaları</string>
<string name="shared_client">Paylaşılmış istemci</string>
<string name="tunnel_summ_shared_client">Diğer paylaşılmış istemciler ile aynı hedef ve tüneller kullanılsın</string>
<string name="target_destination">Hedef konum</string>
@ -260,22 +271,22 @@
<string name="persistent_key_conflict_msg">Tünel yeniden açıldığında yeni anahtarlar oluşturuluyorsa sürekli anahtarlar kullanılamaz. Yeniden açıldığından yeni anahtarların oluşturulması devre dışı bırakılsın mı?</string>
<string name="tunnel_summ_persistent_key">Yeniden başlatıldığında bu tünelin hedefi korunsun</string>
<string name="reachable_on">Şuradan erişilebilir</string>
<string name="listen_port">Dinlenecek kapı numarası</string>
<string name="client_ssl">SSL İstemci</string>
<string name="tunnel_summ_client_ssl">İstemci yalnız SSL üzerinden bağlanabilir</string>
<string name="listen_port">Dinlenecek bağlantı noktası</string>
<string name="client_ssl">İstemcide SSL</string>
<string name="tunnel_summ_client_ssl">İstemci yalnızca SSL üzerinden bağlanabilir</string>
<string name="outproxies">Çıkış vekil sunucuları</string>
<string name="ssl_outproxies">SSL çıkış vekil sunucuları</string>
<string name="irc">IRC</string>
<string name="enable_dcc">DCC Kullanılsın</string>
<string name="enable_dcc">DCC kullanılsın</string>
<string name="tunnel_summ_enable_dcc">IRC istemcileri DCC kullanabilsin</string>
<string name="website_domain_name">Web sitesinin etki alanı</string>
<string name="website_domain_name">Sitenin etki alanı</string>
<string name="target_host">Hedef sunucu</string>
<string name="target_port">Hedef kapı numarası</string>
<string name="use_ssl">SSL Kullanılsın</string>
<string name="target_port">Hedef bağlantı noktası</string>
<string name="use_ssl">SSL kullanılsın</string>
<string name="tunnel_summ_use_ssl">Hedefe bağlanmak için SSL kullanılsın</string>
<string name="tunnel_parameters">Tünel parametreleri</string>
<string name="profile">Profil</string>
<string name="profile_bulk">Toplu bağlantı (indirme/web siteleri/BT)</string>
<string name="profile_bulk">Toplu bağlantı (indirmeler/siteler/BT)</string>
<string name="profile_interactive">Etkileşimli bağlantı</string>
<string name="delay_connect">Bağlantı gecikmesi</string>
<string name="tunnel_summ_delay_connect">Bağlantı yanıtları için etkinleştirin</string>
@ -285,11 +296,11 @@
<string name="whitelist">Beyaz liste</string>
<string name="blacklist">Kara liste</string>
<string name="access_list">Erişim listesi</string>
<string name="reject_inproxies">Geçen vekil sunucular reddedilsin</string>
<string name="tunnel_summ_reject_inproxies">Yalnız I2P kullanıcıları bağlanabilsin</string>
<string name="unique_local">Tekil yerel</string>
<string name="tunnel_summ_unique_local">Her istemci için tekil yerel sunucu IP adresi kullanılsın</string>
<string name="multihome">Ana sayfa kopyası</string>
<string name="reject_inproxies">Giriş vekil sunucular reddedilsin</string>
<string name="tunnel_summ_reject_inproxies">Yalnızca I2P kullanıcıları bağlanabilsin</string>
<string name="unique_local">Benzersiz yerel</string>
<string name="tunnel_summ_unique_local">Her istemci için benzersiz yerel sunucu IP adresi kullanılsın</string>
<string name="multihome">Birden çok barındırma</string>
<string name="tunnel_summ_multihome">Çoklu ev iyileştirmeleri kullanılsın</string>
<string name="client_connection_limits">İstemci bağlantı sınırları</string>
<string name="connections_per_minute">Dakikalık bağlantı sayısı</string>
@ -324,17 +335,17 @@
<string name="new_keys_on_reopen_conflict_title">Sürekli anahtarlar kullanılamasın</string>
<string name="new_keys_on_reopen_conflict_msg">Tünel yeniden açıldığında yeni anahtarlar oluşturuluyorsa sürekli anahtarlar kullanılamaz. Sürekli anahtarlar devre dışı bırakılsın mı?</string>
<string name="http_client">HTTP istemcisi</string>
<string name="tunnel_summ_user_agent">\'User-Agent\' üstbilgisi geçirilsin</string>
<string name="tunnel_summ_referer">\'Referer\' üstbilgisi geçirilsin</string>
<string name="tunnel_summ_accept">\'Accept-*\' üstbilgisi geçirilsin</string>
<string name="tunnel_summ_user_agent">\'User-Agent\' üst bilgisi geçirilsin</string>
<string name="tunnel_summ_referer">\'Referer\' üst bilgisi geçirilsin</string>
<string name="tunnel_summ_accept">\'Accept-*\' üst bilgisi geçirilsin</string>
<string name="tunnel_summ_allow_ssl">I2P adreslerinde SSL kullanılabilsin</string>
<string name="jump_url_list">Sıçrama adresi listesi</string>
<string name="proxy_auth">Vekil sunucu kimlik doğrulaması</string>
<string name="tunnel_summ_proxy_auth">Bu vekil sunucuda oturum açmak için kimlik doğrulaması istensin</string>
<string name="username">Kullanıcı Adı</string>
<string name="username">Kullanıcı adı</string>
<string name="password">Parola</string>
<string name="outproxy_auth">Giden vekil sunucu kimlik doğrulaması</string>
<string name="tunnel_summ_outproxy_auth">Giden vekil sunucu için oturum açılması gerekiyor</string>
<string name="outproxy_auth">Çıkış vekil sunucusu kimlik doğrulaması</string>
<string name="tunnel_summ_outproxy_auth">Çıkış vekil sunucusu için oturum açılması gerekiyor</string>
<string name="other">Diğer</string>
<string name="signature_type">İmza türü</string>
<string name="custom_options">Uyarlanmış seçenekler</string>
@ -349,13 +360,14 @@
<item quantity="one">%d ileti, yeniden eskiye</item>
<item quantity="other">%d ileti, yeniden eskiye</item>
</plurals>
<string name="log_entry">Günlük Kaydı</string>
<string name="log_entry">Günlük kaydı</string>
<string name="copy_logs">Günlükleri kopyala</string>
<string name="i2p_android_error_logs">I2P Android Hata Günlükleri</string>
<string name="i2p_android_logs">I2P Android Günlükleri</string>
<string name="i2p_android_error_logs">I2P Android hata günlükleri</string>
<string name="i2p_android_logs">I2P Android günlükleri</string>
<string name="error_logs_copied_to_clipboard">Hata günlükleri panoya kopyalandı</string>
<string name="logs_copied_to_clipboard">Günlükler panoya kopyalandı</string>
<string name="label_browser_configuration">Tarayıcı yapılandırması</string>
<string name="no_market_app">Herhangi bir mağaza uygulaması bulunamadı, lütfen el ile kurun</string>
<string name="unset">Ayarı Kaldır</string>
<string name="unset">Ayarı kaldır</string>
<string name="running_background">I2P arka planda çalışıyor</string>
</resources>

View File

@ -170,7 +170,6 @@
<string name="about_bugs">Неполадки і підтримка:</string>
<string name="about_helpwanted">Потрібна допомога!</string>
<string name="about_volunteer">Бажаєте зробити цей додаток краще? Зголошуйтесь на форумі Android:</string>
<string name="about_donate">Бажаєте пожертвувати гроші на закупівлю більшої кількості різноманітних пристроїв Android для розробки та тестування? Вам сюди:</string>
<string name="menu_help">Допомога</string>
<string name="general">Головне</string>
<string name="label_router">Публічні адреси</string>
@ -231,7 +230,6 @@
<string name="enabled">Увімкнено</string>
<string name="i2ptunnel_wizard_desc_name">Назва тунелю для ідентифікації у списці тунелів.</string>
<string name="i2ptunnel_wizard_desc_desc">Опис тунелю. Використовуйте це необов\'язкове поле задля більшої інформативності.</string>
<string name="i2ptunnel_wizard_desc_dest">Тип призначення сервісу в мережі I2P, тобто куди клієнт має приєднатися. Це може бути повний BASE64 ключ призначення або імʼя вузла I2P з вашої адресної книги.</string>
<string name="i2ptunnel_wizard_desc_outproxies">Якщо ви знаєте інші вихідні проксі для цього типу тунелю (або HTTP або SOCKS), то надрукуйте тут. Розділяйте проксі комами.</string>
<string name="i2ptunnel_wizard_desc_target_host">Це IP-адреса, на якій сервіс працює. Зазвичай така сама, як у машини, тому 127.0.0.1 введено автоматично.</string>
<string name="i2ptunnel_wizard_desc_target_port">Це порт, на який сервіс приймає з’єднання.</string>

View File

@ -28,6 +28,7 @@
<string name="action_reload">Tải lại</string>
<string name="action_refresh">Nạp lại</string>
<string name="statistics">Thống kê</string>
<string name="countries">Quốc Gia</string>
<string name="country">Quốc gia</string>
<string name="version">Phiên bản</string>
<string name="count">Số lượng</string>
@ -110,6 +111,7 @@
<string name="use_ssl">Sử dụng SSL</string>
<string name="tunnel_parameters">Thông số đường hầm</string>
<string name="profile">Hồ sơ</string>
<string name="access_control">Kiểm soát truy cập</string>
<string name="disabled">Tàn tật</string>
<string name="whitelist">Sổ trắng</string>
<string name="blacklist">Sổ đen</string>
@ -120,6 +122,7 @@
<string name="http_client">Khách HTTP</string>
<string name="username">Tên đăng nhập</string>
<string name="password">Mật khẩu</string>
<string name="other">Khác</string>
<string name="custom_options">Tùy chọn tùy ý</string>
<string name="all">Tất cả</string>
</resources>

View File

@ -55,6 +55,8 @@
<string name="upload">上傳</string>
<string name="configure_browser_title">配置瀏覽器嗎?</string>
<string name="configure_browser_for_i2p">您要配置瀏覽器來查看I2P網站嗎? (您也可以稍後在幫助清單設定。)</string>
<string name="configure_no_doze_title">管理电池优化?</string>
<string name="configure_no_doze">I2P 在持续工作时能达到最佳效果。为阻止 Android 在尝试节省电量时关闭 I2P您可以将它添加到电池例外名单中。这将大幅提高应用稳定性。\n\n要保持 I2P 在后台运行吗?(推荐)</string>
<string name="first_start_title">恭喜您成功安裝了 I2P </string>
<string name="first_start_welcome"><b>歡迎來到I2P!</b><b>保持耐心</b> 等 I2P 啟動和找節點。</string>
<string name="first_start_read">在您等候的同時,請在閱讀發行公告與歡迎頁面。</string>
@ -113,6 +115,11 @@
<string name="notification_status_peers">節點: %1$d活躍%2$d已知</string>
<string name="notification_status_expl">隧道探索: %1$d/%2$d</string>
<string name="notification_status_client">客戶端隧道: %1$d/%2$d</string>
<string name="stats_memory">已用内存/最大内存</string>
<string name="stats_lag">作业日志</string>
<string name="stats_delay">消息延迟</string>
<string name="copied_base32_system_notification_title">将B32地址复制到剪贴板</string>
<string name="copied_base32_system_notification_body">将B32地址复制到剪贴板</string>
<string name="menu_settings">設定</string>
<string name="settings_enable">啟用</string>
<string name="settings_desc_subscriptions">訂閱的網址</string>
@ -145,6 +152,13 @@
<string name="settings_label_transports">傳輸</string>
<string name="settings_label_maxConns">最大連接數</string>
<string name="settings_label_i2cp">I2CP 介面</string>
<string name="settings_desc_i2cp">允许第三方应用程序使用I2CP需要重新启动路由器</string>
<string name="settings_label_sam">SAM接口</string>
<string name="settings_desc_sam">允许第三方应用程序使用SAM需要重新启动路由器</string>
<string name="settings_confirm_sam">一个应用程序正在试图建立一个SAM连接。</string>
<string name="settings_confirm_sam_id">会话名称/ID</string>
<string name="settings_confirm_allow_sam">点按允许</string>
<string name="settings_confirm_deny_sam">忽略否认</string>
<string name="settings_label_exploratory_pool">導坑池</string>
<string name="settings_desc_exploratory_pool">隧道參數</string>
<string name="settings_label_expl_inbound">Inbound 隧道</string>
@ -169,7 +183,7 @@
<string name="about_bugs">問題和支援:</string>
<string name="about_helpwanted">需要幫忙!</string>
<string name="about_volunteer">您是否願意伸出援手,讓這個 app 變得更好使用?我們的安卓論壇正在招募志工:</string>
<string name="about_donate">您願意捐款或捐比特幣給我們,去買開發和測試用的安卓設備嗎?這裡</string>
<string name="about_gitlab">想建议一个功能或修复一个错误吗? 在Android Gitlab上提出合并请求</string>
<string name="menu_help">幫助</string>
<string name="general">功能概況</string>
<string name="label_router">公共位址</string>
@ -179,6 +193,12 @@
<string name="addressbook_add_wizard_k_name">名稱</string>
<string name="addressbook_add_wizard_k_destination">目標</string>
<string name="addressbook_add_wizard_desc_name">名字是</string>
<string name="addressbook_add_wizard_desc_destination">在这里粘贴 B64 形式的目的地。如果您有安装一个文件管理器,您可以浏览包含 B64 的一个文本文件。</string>
<string name="nsu_iae_illegal_char">主机名称 \"%1$s\" 中包含非法字符 %2$s</string>
<string name="nsu_iae_cannot_start_with">主机名不能以 \"%s\"开始</string>
<string name="nsu_iae_cannot_end_with">主机名不能以 \"%s\"结尾</string>
<string name="nsu_iae_cannot_contain">主机名不能包含 \"%s\"</string>
<string name="nsu_iae_requires_conversion">主机名称 \"%s\" 需要转换为 ASCII但转换库在此 Android 版本中不可用</string>
<string name="i2ptunnel_type_client">標準客戶端</string>
<string name="i2ptunnel_type_httpclient">HTTP 客戶端</string>
<string name="i2ptunnel_type_ircclient">IRC客戶端</string>
@ -188,7 +208,11 @@
<string name="i2ptunnel_type_socksirctunnel">SOCKS IRC 代理</string>
<string name="i2ptunnel_type_connectclient">CONNECT/SSL/HTTPS 代理</string>
<string name="i2ptunnel_type_ircserver">IRC 伺服器</string>
<string name="i2ptunnel_type_streamrclient">Streamr 客户端</string>
<string name="i2ptunnel_type_streamrserver">Streamr 服务器</string>
<string name="i2ptunnel_type_httpbidirserver">双向 HTTP</string>
<string name="install_recommended_app">安裝建議的 app ?</string>
<string name="app_needed_for_this_tunnel_type">您需要安装一个应用以使用此隧道。您想安装推荐的应用吗?</string>
<string name="i2ptunnel_not_initialized">隧道尚未初始化,請在兩分鐘內重整。</string>
<string name="no_configured_client_tunnels">客戶端隧道沒有設定。</string>
<string name="no_configured_server_tunnels">伺服器隧道沒有設定。</string>
@ -211,12 +235,22 @@
<string name="i2ptunnel_wizard_k_target_host">目標主機</string>
<string name="i2ptunnel_wizard_k_target_port">目標端口</string>
<string name="i2ptunnel_wizard_k_reachable_on">開啟被連通</string>
<string name="i2ptunnel_wizard_k_binding_port">绑定端口</string>
<string name="i2ptunnel_wizard_k_auto_start">自動啟動</string>
<string name="next">下一個</string>
<string name="prev">前一個</string>
<string name="finish">提交</string>
<string name="review">複檢</string>
<string name="enabled">啟用</string>
<string name="i2ptunnel_wizard_desc_name">隧道的名称,隧道列表中的标识。</string>
<string name="i2ptunnel_wizard_desc_desc">隧道的描述。这是可选的,纯粹提供信息性。</string>
<string name="i2ptunnel_wizard_desc_dest">在这里指定隧道的.i2p地址或目的地hostname.i2pb32或b64</string>
<string name="i2ptunnel_wizard_desc_outproxies">如果您知道任何此类型的隧道 (HTTP 或者 SOCKS) 的出口代理,填入它们。用逗号分隔多个代理服务器。</string>
<string name="i2ptunnel_wizard_desc_target_host">这是您正在运行服务的所在 IP这通常是在同一台机器上所以 127.0.0.1 会被自动填写。</string>
<string name="i2ptunnel_wizard_desc_target_port">这是这项服务接受连接的端口。</string>
<string name="i2ptunnel_wizard_desc_reachable_on">这就限制了哪些电脑或智能手机可以访问此隧道。</string>
<string name="i2ptunnel_wizard_desc_binding_port">这是客户端隧道从本地访问的端口。这也是 HTTP bidir 服务器隧道的客户端端口。</string>
<string name="i2ptunnel_wizard_desc_auto_start">启动路由器时应自动启动隧道吗?</string>
<string name="i2ptunnel_wizard_submit_confirm_message">建立新隧道?</string>
<string name="i2ptunnel_wizard_submit_confirm_button">建立新隧道</string>
<string name="i2ptunnel_view_target">目標</string>
@ -230,21 +264,108 @@
<string name="tunnel_summ_auto_start">當路由器啟動時一併啟動這個隧道。</string>
<string name="tunnel_cat_ports">本地端口</string>
<string name="shared_client">共享客戶端</string>
<string name="tunnel_summ_shared_client">使用相同的目的地和隧道为其他客户端共享</string>
<string name="target_destination">目标目的地</string>
<string name="persistent_key">持久密钥</string>
<string name="persistent_key_conflict_title">禁用重新打开时新建密钥?</string>
<string name="persistent_key_conflict_msg">您不能在隧道被配置为重新打开时生成新密钥的情况下启用持久密钥。您想禁用重新打开时新建密钥吗?</string>
<string name="tunnel_summ_persistent_key">它重启时保持此隧道的目的地</string>
<string name="reachable_on">開啟被連通</string>
<string name="listen_port">监听端口</string>
<string name="client_ssl">客户端 SSL</string>
<string name="tunnel_summ_client_ssl">客户端必须使用 SSL 连接</string>
<string name="outproxies">連外代理</string>
<string name="ssl_outproxies">SSL 的連外代理</string>
<string name="irc">IRC</string>
<string name="enable_dcc">启用 DCC</string>
<string name="tunnel_summ_enable_dcc">允许 IRC 客户端使用 DCC</string>
<string name="website_domain_name">网站域名</string>
<string name="target_host">目標主機</string>
<string name="target_port">目標端口</string>
<string name="use_ssl">使用 SSL</string>
<string name="tunnel_summ_use_ssl">使用 SSL 连接目标</string>
<string name="tunnel_parameters">隧道參數</string>
<string name="profile">個人資料</string>
<string name="profile_bulk">大包连接 (下载/网站/BT)</string>
<string name="profile_interactive">交互连接</string>
<string name="delay_connect">延迟连接</string>
<string name="tunnel_summ_delay_connect">对请求/响应连接启用</string>
<string name="access_control">存取控制</string>
<string name="restricted_access">访问受限</string>
<string name="disabled">關閉</string>
<string name="whitelist">白名单</string>
<string name="blacklist">黑名单</string>
<string name="access_list">访问列表</string>
<string name="reject_inproxies">拒绝代理访问</string>
<string name="tunnel_summ_reject_inproxies">只允许 I2P 用户连接</string>
<string name="unique_local">唯一本地</string>
<string name="tunnel_summ_unique_local">使用唯一的本地 IP 对每个客户端</string>
<string name="multihome">多宿主</string>
<string name="tunnel_summ_multihome">启用多宿主优化</string>
<string name="client_connection_limits">客户端连接数限制</string>
<string name="connections_per_minute">每分钟连接数</string>
<string name="connections_per_hour">每小时连接数</string>
<string name="connections_per_day">每天连接数</string>
<string name="total_connection_limits">总连接数限制</string>
<string name="total_connections_per_minute">总连接数每分钟</string>
<string name="total_connections_per_hour">总连接数每小时</string>
<string name="total_connections_per_day">总连接数每天</string>
<string name="max_active_connections">最大活动连接数</string>
<string name="num_per_minute">%s 每分钟</string>
<string name="num_per_hour">%s 每小时</string>
<string name="num_per_day">%s 每天</string>
<string name="unlimited">無限制</string>
<string name="set_zero_for_unlimited">设置 0 表示无限制</string>
<string name="post_limits">POST 限制</string>
<string name="limit_period">限制周期</string>
<string name="client_posts_per_period">客户端 POST 数量每个周期</string>
<string name="client_ban_length">客户端封禁长度</string>
<string name="total_posts_per_period">POST 总数每个周期</string>
<string name="total_ban_length">总计封禁长度</string>
<string name="power_saving">省电</string>
<string name="delay_open">延迟打开</string>
<string name="tunnel_summ_delay_open">延迟隧道打开,直到请求</string>
<string name="reduce_quantity">减少数量</string>
<string name="tunnel_summ_reduce_quantity">减少隧道数量在空闲时</string>
<string name="idle_time">闲置时间</string>
<string name="num_minutes">%s 分钟</string>
<string name="reduced_tunnel_quantity">减少隧道数量</string>
<string name="close_tunnels">关闭隧道在闲置时</string>
<string name="new_keys_on_reopen">新建密钥在重新打开时</string>
<string name="new_keys_on_reopen_conflict_title">禁用持久密钥</string>
<string name="new_keys_on_reopen_conflict_msg">您不能在隧道被配置为有持久密钥情况下启用重新打开时新建密钥。您想禁用持久密钥吗?</string>
<string name="http_client">HTTP 客戶端</string>
<string name="tunnel_summ_user_agent">传递 \'User-Agent\' 头通过</string>
<string name="tunnel_summ_referer">传递 \'Referer\' 头通过</string>
<string name="tunnel_summ_accept">传递 \'Accept-*\' 头通过</string>
<string name="tunnel_summ_allow_ssl">允许 SSL 到 I2P 地址簿</string>
<string name="jump_url_list">跳到 URL 列表</string>
<string name="proxy_auth">代理身份验证</string>
<string name="tunnel_summ_proxy_auth">需要登录才能使用此代理</string>
<string name="username">使用者名稱</string>
<string name="password">密碼</string>
<string name="outproxy_auth">出口代理身份验证</string>
<string name="tunnel_summ_outproxy_auth">该出口代理需要登录</string>
<string name="other">其它</string>
<string name="signature_type">签名类型</string>
<string name="custom_options">自定义选项</string>
<string name="all">全部</string>
<string name="no_messages">沒有訊息</string>
<string name="no_error_messages">无错误消息</string>
<plurals name="log_error_messages">
<item quantity="other">%d 条错误消息,新消息优先</item>
</plurals>
<plurals name="log_messages">
<item quantity="other">%d 条消息,新消息优先</item>
</plurals>
<string name="log_entry">日志条目</string>
<string name="copy_logs">复制日志</string>
<string name="i2p_android_error_logs">I2P Android 错误日志</string>
<string name="i2p_android_logs">I2P Android 日志</string>
<string name="error_logs_copied_to_clipboard">错误日志已复制到剪贴板</string>
<string name="logs_copied_to_clipboard">日志已复制到剪贴板</string>
<string name="label_browser_configuration">浏览器配置</string>
<string name="no_market_app">没有找到应用商店,请手动安装</string>
<string name="unset">未设置</string>
<string name="running_background">I2P正在后台运行</string>
</resources>

View File

@ -1,17 +1,17 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="app_name">I2P</string>
<string name="desc_i2p_logo">I2P标识</string>
<string name="desc_i2p_logo">I2P logo</string>
<string name="choose_language">选择语言</string>
<string name="welcome_new_install">欢迎使用 I2P本应用是 Alpha 版的测试软件,并不提供强有力的匿名性。请阅读发布说明和许可信息。</string>
<string name="welcome_new_install">欢迎使用 I2P Android!本应用是 Alpha 版的测试软件,并不保证提供强匿名性。请阅读发布说明和许可信息。</string>
<string name="welcome_new_version">新版本已安装,请阅读发布说明。版本:</string>
<string name="label_tunnels">隧道</string>
<string name="label_status">状态</string>
<string name="label_console">控制台</string>
<string name="label_addresses">地址簿</string>
<string name="label_addressbook">地址簿</string>
<string name="label_i2ptunnel_client">客户隧道</string>
<string name="label_i2ptunnel_server">服务隧道</string>
<string name="label_i2ptunnel_client">客户隧道</string>
<string name="label_i2ptunnel_server">服务隧道</string>
<string name="label_logs">日志</string>
<string name="label_error_logs">错误日志</string>
<string name="label_news">新闻</string>
@ -23,29 +23,29 @@
<string name="button_router_off">长按启动 I2P</string>
<string name="button_router_on">I2P 正在运行 (长按停止)</string>
<string name="button_router_graceful">I2P 将在 %s 后关闭</string>
<string name="button_shutdown_now">长按现在停止</string>
<string name="button_shutdown_now">长按立即停止</string>
<string name="button_cancel_graceful">长按取消关闭</string>
<string name="no_internet">没有可用的互联网连接</string>
<string name="hidden">隐身</string>
<string name="hidden">隐身模式</string>
<string name="testing">测试中</string>
<string name="firewalled">防火墙</string>
<string name="firewalled">受到防火墙限制</string>
<string name="symmetric_nat">对称 NAT</string>
<string name="net_status_error_i2cp">客户端管理器 I2CP 错误 - 请检查日志</string>
<!--Parameter is a time, e.g. 32s or 2m-->
<string name="net_status_error_skew">时钟偏移 %s</string>
<string name="net_status_error_unresolved_tcp">解析的 TCP 地址</string>
<string name="net_status_error_unresolved_tcp">无法解析的 TCP 地址</string>
<string name="net_status_error_private_tcp">私有 TCP 地址</string>
<string name="net_status_warn_firewalled_inbound_tcp">入站 TCP 已启用但受防火墙限制</string>
<string name="net_status_warn_firewalled_floodfill">种子节点因防火墙受限</string>
<string name="net_status_warn_firewalled_floodfill">因防火墙受限的洪泛节点</string>
<string name="net_status_info_disconnected">已断开 - 请检查网络连接</string>
<string name="net_status_error_udp_port">UDP 端口被占用 - 请在设置中更改并重启</string>
<string name="net_status_error_no_active_peers">没有活跃的对等端 - 请检查连接和防火墙情况</string>
<string name="net_status_error_no_active_peers">没有活跃的节点 - 请检查连接和防火墙情况</string>
<string name="net_status_error_udp_disabled_tcp_not_set">UDP 已禁用并且入站 TCP 主机/端口未设置</string>
<string name="net_status_warn_firewalled_udp_disabled">UDP 已禁用且受防火墙限制</string>
<string name="shared_clients">共享客户端</string>
<string name="uptime">上线时间</string>
<string name="active_peers">活跃对等端</string>
<string name="known_peers">已知对等端</string>
<string name="active_peers">活跃节点</string>
<string name="known_peers">已知节点</string>
<!--Character to indicate a client tunnel. Usually first letter of the word "client".-->
<string name="char_client_tunnel">C</string>
<!--Character to indicate a server tunnel. Usually first letter of the word "server".-->
@ -56,13 +56,13 @@
<string name="configure_browser_title">配置浏览器?</string>
<string name="configure_browser_for_i2p">您想配置一个浏览器来查看 I2P 站点吗?(您也可以以后再从帮助菜单设置这个)</string>
<string name="configure_no_doze_title">管理电池优化?</string>
<string name="configure_no_doze">I2P 在持续工作时能达到最佳效果。为阻止 Android 在尝试省电时关闭 I2P您可以将它添加到电池例外名单中。这将大幅提高应用稳定性。\n\n要保持 I2P 在后台运行吗?(推荐)</string>
<string name="configure_no_doze">I2P 在持续工作时能达到最佳效果。为阻止 Android 在尝试省电时关闭 I2P您可以将它添加到电池例外名单中。这将大幅提高应用稳定性。\n\n要保持 I2P 在后台运行吗?(推荐)</string>
<string name="first_start_title">恭喜I2P 已安装!</string>
<string name="first_start_welcome"><b>欢迎使用 I2P</b>在 I2P 启动和寻找同伴时,请<b>保持耐心</b></string>
<string name="first_start_welcome"><b>欢迎使用 I2P</b>在 I2P 启动和寻找节点时,请<b>保持耐心</b></string>
<string name="first_start_read">在您等候时,请阅读发布说明和欢迎页面。</string>
<string name="first_start_faq">一旦您有了客户端隧道,请<b>看看</b>我们的常见问题解答:</string>
<string name="first_start_faq_nonanon">或使用此非匿名链接,如果您不想等待隧道:</string>
<string name="first_start_irc">将您的 IRC 客户端引导<b>localhost:6668</b> 然后与我们打招呼,就在:</string>
<string name="first_start_faq_nonanon">如果您不想等待隧道,可以使用此非匿名链接,</string>
<string name="first_start_irc">将您的 IRC 客户端指向<b>localhost:6668</b> 然后与我们打招呼,就在:</string>
<string name="action_search">搜索</string>
<string name="action_add">添加</string>
<string name="action_edit">编辑</string>
@ -89,32 +89,37 @@
<string name="graphs_not_ready">图表尚未就绪。请稍候再试。</string>
<string name="statistics">统计</string>
<string name="routers">路由器</string>
<string name="leasesets"></string>
<string name="leasesets"></string>
<string name="countries">国家</string>
<string name="country">国家</string>
<string name="transport">传输</string>
<string name="versions">版本</string>
<string name="version">版本</string>
<string name="count">数量</string>
<string name="tname_0">隐身或正在启动</string>
<string name="tname_0">隐身模式或正在启动</string>
<string name="netdb_routers_empty">您的网络库中没有路由器。</string>
<string name="netdb_leases_empty">您的网络库中没有集。</string>
<string name="netdb_leases_empty">您的网络库中没有租约集。</string>
<string name="notification_status_starting">I2P 正在启动</string>
<string name="notification_status_restarting">I2P 正在重启</string>
<string name="notification_status_waiting">I2P 正在等待一个网络连接</string>
<string name="notification_status_waiting">I2P 正在等待网络连接</string>
<string name="notification_status_starting_after_waiting">网络已连接I2P 正在启动</string>
<string name="notification_status_running">I2P 正在运行</string>
<string name="notification_status_client_ready">客户端隧道已就绪</string>
<string name="notification_status_client_down">客户端隧道未就绪</string>
<string name="notification_status_graceful">正在停止 I2P剩余 %s</string>
<string name="notification_status_stopping">正在停止 I2P</string>
<string name="notification_status_stopping_after_net">网络已中断,正在停止 I2P</string>
<string name="notification_status_graceful">正在关闭 I2P剩余 %s</string>
<string name="notification_status_stopping">正在关闭 I2P</string>
<string name="notification_status_stopping_after_net">网络已中断,正在关闭 I2P</string>
<string name="notification_status_shutdown_cancelled">关闭已取消</string>
<string name="notification_status_shutting_down">I2P 正在关闭</string>
<string name="notification_status_bw">带宽:下行 %1$sBps / 上行 %2$sBps</string>
<string name="notification_status_peers">节点:%1$d 活动,%2$d 已知</string>
<string name="notification_status_expl">探索隧道:%1$d/%2$d</string>
<string name="notification_status_client">客户隧道:%1$d/%2$d</string>
<string name="stats_memory">已用内存/最大内存</string>
<string name="stats_lag">作业日志</string>
<string name="stats_delay">消息延迟</string>
<string name="copied_base32_system_notification_title">将B32地址复制到剪贴板</string>
<string name="copied_base32_system_notification_body">您的地址已复制到剪贴板上。</string>
<string name="menu_settings">设置</string>
<string name="settings_enable">启用</string>
<string name="settings_desc_subscriptions">订阅 URL</string>
@ -130,8 +135,8 @@
<string name="settings_label_hiddenMode">参与</string>
<string name="settings_desc_hiddenMode">关闭隐身模式</string>
<string name="settings_label_maxPartTunnels">最大参与隧道数</string>
<string name="settings_desc_maxPartTunnels">参与贡献的最大隧道数量(默认=20)</string>
<string name="settings_dialog_maxPartTunnels">参与的最大隧道数量</string>
<string name="settings_desc_maxPartTunnels">参与中转的最大隧道数量(默认=20)</string>
<string name="settings_dialog_maxPartTunnels">参与中转的最大隧道数量</string>
<string name="settings_label_sharePercent">共享比例</string>
<string name="settings_desc_sharePercent">共享带宽的最大比例(默认=80%)</string>
<string name="settings_dialog_sharePercent">共享的带宽比例</string>
@ -147,14 +152,20 @@
<string name="settings_label_transports">传输</string>
<string name="settings_label_maxConns">最大连接数</string>
<string name="settings_label_i2cp">I2CP 接口</string>
<string name="settings_desc_i2cp">允许第三方应用创建隧道(需要路由重启</string>
<string name="settings_desc_i2cp">允许第三方应用程序使用I2CP需要重新启动路由器</string>
<string name="settings_label_sam">SAM接口</string>
<string name="settings_desc_sam">允许第三方应用程序使用SAM需要重新启动路由器</string>
<string name="settings_confirm_sam">一个应用程序正在试图建立一个SAM连接。</string>
<string name="settings_confirm_sam_id">会话名称/ID</string>
<string name="settings_confirm_allow_sam">点按允许</string>
<string name="settings_confirm_deny_sam">忽略否认</string>
<string name="settings_label_exploratory_pool">探索隧道池</string>
<string name="settings_desc_exploratory_pool">隧道参数</string>
<string name="settings_label_expl_inbound">入站隧道</string>
<string name="settings_label_expl_outbound">出站隧道</string>
<string name="settings_label_expl_length">长度</string>
<string name="settings_summ_expl_length">%s 跳</string>
<string name="settings_desc_expl_length">使用跳点数量</string>
<string name="settings_desc_expl_length">跳点数量</string>
<string name="settings_label_expl_lengthVariance">跳数变化量</string>
<string name="settings_summ_expl_lengthVariance">%s</string>
<string name="settings_desc_expl_lengthVariance">随机添加的跳点数量</string>
@ -164,7 +175,7 @@
<string name="settings_label_expl_backupQuantity">备用数量</string>
<string name="settings_summ_expl_backupQuantity">%s 隧道</string>
<string name="settings_desc_expl_backupQuantity">备用隧道数量</string>
<string name="settings_need_transport_enabled">您必须启用至少一传输</string>
<string name="settings_need_transport_enabled">您必须启用至少一传输</string>
<string name="settings_router_restart_required">请重新启动 I2P 以应用此更改</string>
<string name="menu_about">关于</string>
<string name="about_version">版本:</string>
@ -172,11 +183,11 @@
<string name="about_bugs">Bug 和支持:</string>
<string name="about_helpwanted">需要帮助!</string>
<string name="about_volunteer">想帮助让本应用变得更好吗?成为 Android 论坛志愿者:</string>
<string name="about_donate">想捐钱或比特币来为开发和测试购买更多 Android 设备吗?前往:</string>
<string name="about_gitlab">想建议一个功能或修复一个错误吗? 在Android Gitlab上提出合并请求</string>
<string name="menu_help">帮助</string>
<string name="general">常规</string>
<string name="label_router">地址</string>
<string name="label_private">地址</string>
<string name="label_router">地址簿</string>
<string name="label_private">地址簿</string>
<string name="addressbook_is_empty">地址簿是空的</string>
<string name="addressbook_search_header">%s 找到</string>
<string name="addressbook_add_wizard_k_name">名称</string>
@ -233,7 +244,7 @@
<string name="enabled">已启用</string>
<string name="i2ptunnel_wizard_desc_name">隧道的名称,隧道列表中的标识。</string>
<string name="i2ptunnel_wizard_desc_desc">隧道的描述。这是可选的,纯粹提供信息性。</string>
<string name="i2ptunnel_wizard_desc_dest">输入这个客户端隧道应该连接到的该服务的 I2P 目的地。这可以是完整的 base 64 目的地密钥,或者您地址簿中的 I2P 主机名</string>
<string name="i2ptunnel_wizard_desc_dest">在这里指定隧道的.i2p地址或目的地hostname.i2pb32或b64</string>
<string name="i2ptunnel_wizard_desc_outproxies">如果您知道任何此类型的隧道 (HTTP 或者 SOCKS) 的出口代理,填入它们。用逗号分隔多个代理服务器。</string>
<string name="i2ptunnel_wizard_desc_target_host">这是您正在运行服务的所在 IP这通常是在同一台机器上所以 127.0.0.1 会被自动填写。</string>
<string name="i2ptunnel_wizard_desc_target_port">这是这项服务接受连接的端口。</string>
@ -252,7 +263,7 @@
<string name="auto_start">自动启动</string>
<string name="tunnel_summ_auto_start">路由器启动时自动启动此隧道。</string>
<string name="tunnel_cat_ports">本地端口</string>
<string name="shared_client">共享客户端</string>
<string name="shared_client">共享隧道客户端</string>
<string name="tunnel_summ_shared_client">使用相同的目的地和隧道为其他客户端共享</string>
<string name="target_destination">目标目的地</string>
<string name="persistent_key">持久密钥</string>
@ -266,8 +277,8 @@
<string name="outproxies">代理出口</string>
<string name="ssl_outproxies">SSL 出口代理</string>
<string name="irc">IRC</string>
<string name="enable_dcc">启用 DCC</string>
<string name="tunnel_summ_enable_dcc">允许 IRC 客户端使用 DCC</string>
<string name="enable_dcc">启用 DCC 聊天直连(危险)</string>
<string name="tunnel_summ_enable_dcc">允许 IRC 客户端点对点连接</string>
<string name="website_domain_name">网站域名</string>
<string name="target_host">目标主机</string>
<string name="target_port">目标端口</string>
@ -356,4 +367,5 @@
<string name="label_browser_configuration">浏览器配置</string>
<string name="no_market_app">没有找到应用商店,请手动安装</string>
<string name="unset">未设置</string>
<string name="running_background">I2P正在后台运行</string>
</resources>

View File

@ -109,28 +109,25 @@
</string-array>
<string-array name="recommended_browsers">
<item>acr.browser.lightning</item>
<item>io.github.forkmaintainers.iceraven</item>
<item>com.stoutner.privacybrowser.standard</item>
</string-array>
<string-array name="recommended_browser_labels">
<item>Lightning</item>
<item>IceRaven(With Extension)</item>
<item>Privacy Browser</item>
</string-array>
<string-array name="supported_browsers">
<item>org.mozilla.firefox</item>
<item>org.mozilla.fennec_fdroid</item>
<item>org.gnu.icecat</item>
</string-array>
<string-array name="supported_browser_labels">
<item>Firefox</item>
<item>Fennec F-Droid</item>
<item>IceCatMobile</item>
</string-array>
<string-array name="unsupported_browsers">
<item>org.mozilla.firefox</item>
<item>com.android.chrome</item>
<item>com.brave.browser</item>
<item>com.android.browser</item>
<item>com.sec.android.app.sbrowser</item>
<item>com.stoutner.privacybrowser.standard</item>
<item>org.gnu.icecat</item>
<item>info.guardianproject.browser</item>
<item>mobi.mgeek.TunnyBrowser</item>
<item>com.lastpass.lpandroid</item>
@ -172,4 +169,28 @@
<item>ECDSA-P521</item>
<item>Ed25519</item>
</string-array>
<string-array name="speed_increments">
<item>100 KB/s</item>
<item>200 KB/s</item>
<item>300 KB/s</item>
<item>400 KB/s</item>
<item>500 KB/s</item>
<item>600 KB/s</item>
<item>700 KB/s</item>
<item>800 KB/s</item>
<item>900 KB/s</item>
<item>1000 KB/s</item>
</string-array>
<integer-array name="speed_values">
<item>100</item>
<item>200</item>
<item>300</item>
<item>400</item>
<item>500</item>
<item>600</item>
<item>700</item>
<item>800</item>
<item>900</item>
<item>1000</item>
</integer-array>
</resources>

View File

@ -150,6 +150,13 @@
<string name="notification_status_expl">Exploratory tunnels: %1$d/%2$d</string>
<string name="notification_status_client">Client tunnels: %1$d/%2$d</string>
<string name="stats_memory">Memory used/max</string>
<string name="stats_lag">Job Lag</string>
<string name="stats_delay">Message Delay</string>
<string name="copied_base32_system_notification_title">Base32 copied to clipboard</string>
<string name="copied_base32_system_notification_body">The address of your I2P tunnel has been copied to the clipboard.</string>
<string name="menu_settings">Settings</string>
<string name="settings_enable">Enable</string>
<string name="settings_desc_subscriptions">Subscription URLs</string>
@ -182,7 +189,13 @@
<string name="settings_label_transports">Transports</string>
<string name="settings_label_maxConns">Max connections</string>
<string name="settings_label_i2cp">I2CP interface</string>
<string name="settings_desc_i2cp">Allow third-party apps to create tunnels (requires router restart)</string>
<string name="settings_desc_i2cp">Allow third-party apps to create tunnels using I2CP (requires router restart)</string>
<string name="settings_label_sam">SAM interface</string>
<string name="settings_desc_sam">Allow third-party apps to create tunnels using SAM (requires router restart)</string>
<string name="settings_confirm_sam">An application is trying to make a SAM connection.</string>
<string name="settings_confirm_sam_id">Connection Name/ID:</string>
<string name="settings_confirm_allow_sam">Tap to allow</string>
<string name="settings_confirm_deny_sam">Ignore to deny</string>
<string name="settings_label_exploratory_pool">Exploratory pool</string>
<string name="settings_desc_exploratory_pool">Tunnel parameters</string>
<string name="settings_label_expl_inbound">Inbound tunnels</string>
@ -208,11 +221,11 @@
<string name="about_project">Project Home:</string>
<string name="url_project" translatable="false">https://geti2p.net | http://i2p-projekt.i2p</string>
<string name="about_bugs">Bugs and Support:</string>
<string name="url_android_forum" translatable="false">http://zzz.i2p/forums/17</string>
<string name="url_android_forum" translatable="false">http://i2pforum.i2p</string>
<string name="about_helpwanted">Help Wanted!</string>
<string name="about_volunteer">Want to help make the app better? Volunteer on the Android forum:</string>
<string name="about_donate">Want to donate money or bitcoins to buy more Android devices for development and testing? Go to:</string>
<string name="url_donate" translatable="false">https://geti2p.net/en/donate | http://i2p-projekt.i2p/en/donate</string>
<string name="about_gitlab">Want to suggest a feature or fix a bug? make a Merge Request on the Android Gitlab:</string>
<string name="url_gitlab" translatable="false">https://i2pgit.org/i2p-hackers/i2p.android.base | http://git.idk.i2p/i2p-hackers/i2p.android.base</string>
<string name="menu_help">Help</string>
<string name="general">General</string>
@ -285,7 +298,7 @@
<string name="i2ptunnel_wizard_desc_name">The name of the tunnel, for identification in the tunnel list.</string>
<string name="i2ptunnel_wizard_desc_desc">A description of the tunnel. This is optional and purely informative.</string>
<string name="i2ptunnel_wizard_desc_dest">Type in the I2P destination of the service that this client tunnel should connect to. This could be the full base 64 destination key, or an I2P host name from your address book.</string>
<string name="i2ptunnel_wizard_desc_dest">Specify the .i2p address or destination (hostname.i2p, b32 or b64) of the tunnel here.</string>
<string name="i2ptunnel_wizard_desc_outproxies">If you know of any outproxies for this type of tunnel (either HTTP or SOCKS), fill them in. Separate multiple proxies with commas.</string>
<string name="i2ptunnel_wizard_desc_target_host">This is the IP that your service is running on, this is usually on the same machine so 127.0.0.1 is autofilled.</string>
<string name="i2ptunnel_wizard_desc_target_port">This is the port that the service is accepting connections on.</string>
@ -415,5 +428,5 @@
<string name="no_market_app">No market app found, please install manually</string>
<string name="unset">Unset</string>
<string name="running_background">I2P is running in the background</string>
<string name="running_background">I2P is running in the background</string>
</resources>

View File

@ -23,6 +23,13 @@
android:summary="@string/settings_desc_i2cp"
/>
<CheckBoxPreference
android:key="i2pandroid.client.sam"
android:defaultValue="true"
android:title="@string/settings_label_sam"
android:summary="@string/settings_desc_sam"
/>
<Preference
android:key="preference_category_expl_tunnels"
android:summary="@string/settings_desc_exploratory_pool"

View File

@ -14,26 +14,26 @@
<PreferenceCategory
android:key="settings_bandwidth"
android:title="@string/settings_label_bandwidth">
<!--
i2np.bandwidth.inboundKBytesPerSecond=100
-->
<com.pavelsikun.seekbarpreference.SeekBarPreference
android:key="@string/PROP_INBOUND_BANDWIDTH"
android:title="@string/settings_desc_bw_inbound"
app:msbp_defaultValue="100"
app:msbp_maxValue="1000"
app:msbp_measurementUnit="KB/s"
/>
<!--
i2np.bandwidth.outboundKBytesPerSecond=30
-->
<com.pavelsikun.seekbarpreference.SeekBarPreference
android:key="@string/PROP_OUTBOUND_BANDWIDTH"
android:title="@string/settings_desc_bw_outbound"
app:msbp_defaultValue="100"
app:msbp_maxValue="1000"
app:msbp_measurementUnit="KB/s"
/>
<!--
i2np.bandwidth.inboundKBytesPerSecond=100
-->
<com.pavelsikun.seekbarpreference.SeekBarPreference
android:key="@string/PROP_INBOUND_BANDWIDTH"
android:title="@string/settings_desc_bw_inbound"
app:msbp_defaultValue="100"
app:msbp_maxValue="1000"
app:msbp_measurementUnit="KB/s"
/>
<!--
i2np.bandwidth.outboundKBytesPerSecond=30
-->
<com.pavelsikun.seekbarpreference.SeekBarPreference
android:key="@string/PROP_OUTBOUND_BANDWIDTH"
android:title="@string/settings_desc_bw_outbound"
app:msbp_defaultValue="100"
app:msbp_maxValue="1000"
app:msbp_measurementUnit="KB/s"
/>
</PreferenceCategory>
<PreferenceCategory
@ -51,9 +51,9 @@
android:summary="@string/settings_desc_hiddenMode"
/>
-->
<!--
router.maxParticipatingTunnels=0
-->
<!--
router.maxParticipatingTunnels=0
-->
<!--
<com.hlidskialf.android.preference.SeekBarPreference
android:key="router.maxParticipatingTunnels"
@ -66,9 +66,9 @@
android:dependency="router.hiddenMode"
/>
-->
<!--
router.sharePercentage=10
-->
<!--
router.sharePercentage=10
-->
<!--
<com.hlidskialf.android.preference.SeekBarPreference
android:key="router.sharePercentage"
@ -83,15 +83,15 @@
/>
-->
<!--
i2np.upnp.enable=false
-->
<CheckBoxPreference
android:key="@string/PROP_ENABLE_UPNP"
android:defaultValue="true"
android:title="UPnP"
android:summary="@string/settings_desc_upnp"
/>
<!--
i2np.upnp.enable=false
-->
<CheckBoxPreference
android:key="@string/PROP_ENABLE_UPNP"
android:defaultValue="true"
android:title="UPnP"
android:summary="@string/settings_desc_upnp"
/>
</PreferenceCategory>
</PreferenceScreen>

View File

@ -11,11 +11,11 @@ signing {
buildscript {
repositories {
mavenLocal()
jcenter()
mavenCentral()
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.3.0'
classpath 'com.android.tools.build:gradle:7.4.2'
classpath 'com.android.tools.lint:lint-gradle:26.1.1'
}
}
@ -26,7 +26,7 @@ allprojects {
repositories {
mavenLocal()
jcenter()
mavenCentral()
google()
}
}

17
build.sh Executable file
View File

@ -0,0 +1,17 @@
#! /usr/bin/env sh
rm -rf app/pkg-temp app/build app/pkg-mavencentral
docker build -t i2p.android.base .
docker run -itd \
-u $(id -u):$(id -g) \
--name i2p.android.base \
-v $HOME/.gnupg/:/.gnupg/:ro \
-v $HOME/.i2p-plugin-keys/:/.i2p-plugin-keys/:ro \
-v /run/user/$(id -u)/:/run/user/$(id -u)/:ro \
i2p.android.base
docker cp i2p.android.base:/opt/workspace/i2p.i2p/pkg-mavencentral app/pkg-mavencentral
docker cp i2p.android.base:/opt/workspace/i2p.i2p/mavencentral-i2p.jar app/pkg-mavencentral
docker cp i2p.android.base:/opt/workspace/i2p.i2p/mavencentral-mstreaming.jar app/pkg-mavencentral
docker cp i2p.android.base:/opt/workspace/i2p.i2p/mavencentral-router.jar app/pkg-mavencentral
docker cp i2p.android.base:/opt/workspace/i2p.i2p/mavencentral-servlet-i2p.jar app/pkg-mavencentral
docker cp i2p.android.base:/opt/workspace/i2p.i2p/mavencentral-streaming.jar app/pkg-mavencentral
docker cp i2p.android.base:/opt/workspace/i2p.android.base/app/build/ app/build

View File

@ -408,14 +408,14 @@
<target name="copy-i2p-resources" depends="-dirs" >
<copy file="LICENSE.txt" tofile="res/raw/license_app_txt" />
<copy file="licenses/LICENSE-Apache2.0.txt" tofile="res/raw/license_apache20_txt" />
<copy file="${i2pbase}/installer/resources/themes/console/images/i2plogo.png" todir="res/drawable/" />
<copy file="${i2pbase}/apps/routerconsole/jsp/themes/console/images/i2plogo.png" todir="res/drawable/" />
<!-- Static web sources should be in the assets directory. -->
<copy file="${i2pbase}/installer/resources/themes/console/images/i2plogo.png" todir="assets/themes/console/images/" />
<copy file="${i2pbase}/installer/resources/themes/console/images/outbound.png" todir="assets/themes/console/images/" />
<copy file="${i2pbase}/installer/resources/themes/console/images/inbound.png" todir="assets/themes/console/images/" />
<copy file="${i2pbase}/installer/resources/themes/console/light/images/header.png" todir="assets/themes/console/light/images/" />
<copy file="${i2pbase}/installer/resources/themes/console/light/console.css" todir="assets/themes/console/light/" />
<copy file="${i2pbase}/apps/routerconsole/jsp/themes/console/images/i2plogo.png" todir="assets/themes/console/images/" />
<copy file="${i2pbase}/apps/routerconsole/jsp/themes/console/images/outbound.png" todir="assets/themes/console/images/" />
<copy file="${i2pbase}/apps/routerconsole/jsp/themes/console/images/inbound.png" todir="assets/themes/console/images/" />
<copy file="${i2pbase}/apps/routerconsole/jsp/themes/console/light/images/header.png" todir="assets/themes/console/light/images/" />
<copy file="${i2pbase}/apps/routerconsole/jsp/themes/console/light/console.css" todir="assets/themes/console/light/" />
<copy file="${i2pbase}/installer/resources/blocklist.txt" tofile="res/raw/blocklist_txt" />
<copy file="${i2pbase}/installer/resources/hosts.txt" tofile="res/raw/hosts_txt" />

View File

@ -0,0 +1,190 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQINBFRvqBkBEADAe63Jl0pw5Ry9LDwn31BJSBat+2WYJXT4Iqsgtmm79drvAcVU
JjtGZX11XdJj/aIVxeafghYxVj4Ld+yxiB25GAcxGr5O3Acv7DOlBQnqFZ7jvZUd
qwSCpsoDoBt5rX+FlHl/NB8VGjpS0cgC+wuSrLRW6Qux0/tn2Dow7KzB5B7YvaCi
ChF2M7ZPJhhp5QGoI+ucEwSJ/NIeOguZWiOEl+Tbglz5YTHuVjZViNIX4Xdw+N7l
1//oR8k/GEWuVU4dFsWmc6UCEClCotYHXoPHHGJpIUDBMk3sU5v3ULjKcIDkHOHX
qu91lk9OEdteieWS6npsuyy2pOOgRgXKxi1mAc7jPTLejT2GTCoUl6anP6/MbMdC
uMww1TadVaVTnw7zxW0t/uQ97wr1YtwnB6mLdfgCbUTtXMoFdijGJx+k/qb4cmmr
hPBXn5frUdwA3He6x5gkGINxy6scHhwYXpLuvpgf6WCOMRQ7afeKokHN1ctnnKCr
LJbV/Y8wkWI62O0XkqqfFyaz0fhhnaoEbMjksWYo86GeAtZysrw0MwZfANf9/l5E
GfUZIAQNiMIsGjNmyc+pSyzbBQoaJpQOdzER7z6ywzUETLQp2TRIUg2BvDkLPzLJ
Lun4KdChr8TKHoq3EtiV0hIAeGDD173b5x8Mukb2DSyvzc2vPorqRyqawQARAQAB
iQI3BB8BCAAhBQJUc6YzFwyAAYDpdvFKUIpI6co/6bw3IlLKHPlkAgcAAAoJEHY4
0EQrkNAQNccP/jF5PrHhRZRbPBiXcYCBpceUUSmkd9nw0MKhL1MpqiQFF0izptt6
etsA1esy2oXl+lAywQfCFGXIu51CHXqJpAEnv0MNqhExLZTW1GjoBNGB7iPJdtDl
Gfk9eamWqNZ7F4RyTkppqLFT7tOrWW3pnPP9wgTwdu+qw4eC5T1DIDPNYnXZ/dcS
IzYS9t6H8HxROJvG0pnXKmUWn6EiASv6eEBbKC9lNnC1S1IqwELDV6fSjDqqAz88
MRdM1vqlmp1Oa1GqegPvIziuAUCP2XpMvGLf67CL4D5v4w9p8zLfNnK3G/s12S+l
+KalSlmufdbcyveVDD38bVjtLSwXoNQOG6GK+NvNlQGjsvRa8eQhVjCRtFTitH63
V6rDc7cuc+EFqrTIut37qD0fQMlxb2WF0VXg8vQqpuchFYbiYneH9vADGr0LG7cF
NKurEYgjsY+f8DJkPoNHkt7rLzmBX8wfhMDsIwoQgscNEQTRwyQYnUAHUyU9rcVq
E8puwLgy49bp2QXl079YO7s8vdHk7n5RbK93tADuSHMYY1bbhPP8dMCiuK35oDQm
SOzAURZx0C5XSGkm5gnlFCYNoirO3xEdh9C2Eu0JvcKBE5aPw1xNBLZml75jP3Wd
JpnR+bsQjCSofMRXFERt5unDXn0zNpaP1+czDKTxperLK09QyEhRKbtOiQI3BB8B
CAAhBQJUc6ZhFwyAAfv6vbVBtdyVW9m6btsWz1uxJSXEAgcAAAoJEHY40EQrkNAQ
hU4QAJVHgI4Tu//AmYrXUJQkVPqqLJojpRdXlyBSbUy6BMk+K4JjAG+drMeu4/CX
VXpX86EoA1u7VOZpSqAHFlWFnLZQRLjdLElW4Obi0O3TgHCrFcg3J9JxjxlX6jUn
eok6z1zPpWiKEV4UYuiBuRNhWCJW3T80ZUaR+CxRSI/f3vw74CkFAGAYhZW99lI1
gMAcozlVK+Z8JWH/QPFDRBy/n0Lk9FXfX95GtLE3JUBGoeBHt9Nn0kRck8daQttb
rASt2IqRIuJJCHn5QGSgqmtf6tXkF8n1BjZ+m6svMWj6BmELIo2mHE8y8v5Ax0QS
/SrVKQ6qh4oD3W6H9Y4TCF0yAAvSBkcrWzNw/ItUrWWJqDMP00n6WvYPxYKO6QaW
OOpikRWELTOpuVV/yGEqG2/xgrNtIAlGMamhhct5AFCv9/lniqyXilMaEOECw2Sd
SPnAaiBvxGqBMNt2T4KjQSvoMWaFD2SoRv+zZHAyt2GJ9QMSQn9imL8TNH7OajTy
B+5MJs5pWN4l1jv6T1pmIH2hqN5exmr/SvcYLiaMV9bus6C0QYk5THa2gQeQQBor
b6FoeXtWFyT9EF/R4/MY0DvflZAVsBO8d+5L6X7boVobef6TMPkNFzvQrtIz/KHX
vVlGf80KiL+jH/ZOwljXH/gsldbwZxM/mTFK7mscsdWp9+/1iQI3BB8BCAAhBQJU
c6aAFwyAATCZEb6pZtBhMFMEVxG05f8VsP2CAgcAAAoJEHY40EQrkNAQQt0P/1jW
fbtfR0A7WUChOPHWCNZ+rm8PdBpY4FnRS4hbrBHJdVJnMAIZJ2Ys+5Uj9/xzMLYm
rK8ObktUBBegrLTzkrS8B1OsvFJE7jSzoIxRZtYVMcsN2ADKj0dz1a9AMaKf8xtn
JBTxD6af8leb50FnR8iUV0ZPVD5zG3J49T2DmhkhFwgaU4fVY2Padtmp65CNdH2Y
UgPE9nCKU8tMVeVftFWfVBJRkmvwFkPaWy822IqTFkLWpNoSL+DCxDN0WKPbBfD+
7vEaKHfAA18MCF5d064FupUn7m61b969Ntie0UwoUjzooW7OIgNH0mpwrVNwQMa0
DPdr8zPQRX9mIgg5ZEz6SSi5KKZGK0PkOnx50fiAUwhaQ/WoSsZesmMauOokxzZM
Bkzp4QiSWOy3ctcEuAVSjg3Zb1kRkiRSyRZvzL57EET4W5t5d35GuPyF07D5cOsD
5EU368ACfIrJtUPRDHjOpV0E29kav65eHmYcGJW59wCnaCOFUVwFoRcLPkcYQCE3
XoWoGFOI9yCkYS1LEzyDKLrtrBJZ5rUGTQXA2A9RfXxwrJgnjq+jmRuce5C2eYvH
RNMrj9AsHGC23nj45pxLCHiRJO0hWcsnkFgWoEx5I6mcn1sI0FBpI2qc9CJ9/+GK
DUbjYoaZYUbT+OFIRqGWLtPE5BakbTL/8QO8JD4UtEZEZWJpYW4gQXJjaGl2ZSBB
dXRvbWF0aWMgU2lnbmluZyBLZXkgKDgvamVzc2llKSA8ZnRwbWFzdGVyQGRlYmlh
bi5vcmc+iJwEEAECAAYFAlbDd/sACgkQBAuk6zt/gdqmbAP9FuMpB4fHmaGVxQ3K
UWNFzAunAK3YwZaQVrvTWBHbraRLZqUpqskwBUo7RX0acV5RZhdqkgjBI4EGbMY1
GKW1dk2R2lGJX3j1dbbjxGURHkBdfUi3RrIgTm6Ya+B6I2gkjeJmxcJUbs+PdqxE
hGNh3psWYDOZfNpaYvcxUH7Ms0+JARwEEAEKAAYFAlZ1vOIACgkQhKVEYnRGm/7o
cQgAoj6DCIbQiGEtuxevFbYHVnVl41nw85o7hvG2HcQAY/2qb9QlRjL4I6r6jBpZ
aMyvSFdTbzOV/oEt1X3JC8fk2O1cq+PtZvJv/Y66ZTKUXdo+rGkJFLT7XGomuCsB
c2IvX68xGrasmNgljUAsGDedf+/SE/cQRu0tru/qkG/QbgKF1v5QBH6IIab+mRPW
w669rEoqLYE6sw4UxVDClbuOUp5QjVT/02EZdbi2JS8wISMkHfR4IDvpcdd1XSa/
rTPRskGNWQKPJxbF5wquBhDozDo4qAVbS9ZlfdwsR2NKgwIQUxjP+pG6TBi9p5+Y
uqAwGAPMLwW9ABOUq7ypQlXEbokCHAQQAQgABgUCVG+rPQAKCRCLSK1iRpJVUyNo
D/451GSQa3fu/go8PUDtZH+ym6OgAwW7epLY0wl4SS1LeFEhZJjA7qaJ2zMc85BE
jNhzn4gdxChaN/Yfc33mBXKjhTQQJfkG0FoZa/08qzET/Wt2y4nSX4gL8cd6nWw7
9a/YsOxRqdCFDIzbfoZpGOdy/RyFx3QpTN7PF4ZNOK4cW6dPSDjRQKn1uP0q0XuH
rUoELqHKNOHB1Z9QUwm36mE4lDQU/AX7UerZjxLXEbyxT73Pu+tey1S1cd0VVpXC
l84DOijSvcHyf7gHX4JKVKe6hwP030tvxilAOBp2gfNAs7zGlDsPY3RVaV99EP5j
f8MiHKFWKQPR/orvgeHWYFz5tRLi3Shl/EwSYt6DqAj59cg8k+KDfsk03lrMxKqB
NSZ+Onr7Di9qYEUeDIfZIHaqrYFqAFSvSEACSKoJfWcNuoroWMZfktxAxw9BeYQ/
S7G4jg1/JFml/poS2sdsIx3PoLgJyrWkeniELH91HZoqJwOaul1p7nYr5ZqR/wxm
lYSoD102Ewn7TWLVxnsL8IG1wdy8Q00sT2NeObFxkAJGyjoptZnwo/d3Cqki9xZo
4DPUyktoINWq0v7TeaB2gWFI8SZ3RFUUvXupnFfS5yYM/bIlVDTtJPFHuTak8nt/
YCeZc1Kjxn8Jx/eAzLAlINzpKnRAUA7RSO5Z01CNO//jBIkCHAQQAQgABgUCVHHh
nAAKCRARtOX/FbD9giWID/9wYtDp/HLqY7SVs+nQLXA8hNvU64KLVCIncw9nxNj7
JEJD1CyrhHd1eagaPSlQ8Eglkbw058QVAb0hYc4XD/h0DRZntYGTMBlo3DZM0+8W
CYNKgIKT96gn2MRG5+UvodzYNcwGGbWmqsZIaPA+TCr57tu9tI7qZ40Ep1nSC48g
Yh9e+ovYx+AxKsXUaR3D/vNj6eMr6XwnuoTaC6xe4764nRtt7a+eiIz48+ovmHh+
G6707cq6r2CKme2ZVCGe/6TvESilEaG9LTZTFrpTix58w9vJClOlKA3Lt6/DA/Ye
PlHbAsW6qMZ6EdMo1YDlIGDshFsmc9EIMgwpKMSsUUtS5GveVqdRym34AMs6QEWZ
kSwqifU/ICycr5+0EO9fubolApmEFB/6XkEBbhNKorAjpVlvIpNQdFd1lPVDwgEu
1Ab6vvaYfuNfJOkn8Z4+fkcpIi5ABMVbzZv7DHyUg0CJpY9dDw3L2XQKqx3nRjQp
n8NDo0cfOhHytgO3E0/ejWhhwYQThIm8YOiF44uUUaHYXOcydBLXyssp37VCdi9i
i63tXvbOEXhi7F/RFsUfasPdZqt2VrXnvouXK6OT+sacykAeae0d0tOODORmDnNw
KSS8DBWB1PK682lc4je1ni2xNOdxqgXusE03Bi1i0gBxEbDCyGdIVAqfCZdBm3R9
9YkCHAQQAQoABgUCVG+vbgAKCRC8NyJSyhz5ZNbbEACAlkzTwAgg4RUr742fyzfU
XA0BEBdDHGyzm9M5cdVu7XxAgjQ7wWqXMHX+ocXxAEZEbEUWS6WcqqDOQtOwgq4T
L+St/jnVpk+I+LJwAm1VTuXS7FfBxEa/q5SpLMKrnh6tl7ZTIvdDquIZWqiJmV7N
bgP3sMPH4mhxX0tkFnb78MdoT5geBYRxOYpn5eNdpoXvqak10oQqWVBQKWE6HziO
aUv5PLhES9F765TyKZDACU/9mblSCGVAEIrOENtjaC8tlE8B6JZZOZgE2sbbSFyy
jRF1MoQ4au6m+rh+GhKDcb0eH2fVgIS1qzOLfjoHsgIgLTGwuJOptKyLQBmbexHL
YEtmqx7Eu8oTTAupuP9UM0/qY3DD3/PAqREDV/mXd1Q9uMHNtc+fR2mfXnJoD1kz
/ujZiL2lvIqjq2Qiah9D/zINUNhWN9g2iRx3OHRiLswBTpTwG9q7WylJs3OLOIGQ
kvCVf6qENCFCgj95HUhu4f5IKQmcGNS7afm3ZbO665JijnAZB9P0izVvnvFDrDg3
fsvvT8Cm52aaNbIjBufONFroUHNhcrPmbBToRrbYygz/+tl2T2R7vyfcKNhTKSiu
cIUevWGaWILsejmfE/XrzNrygPgF7O6WiytVJNQxnsW4p44mdPbz8h98K9ffudOK
3kFmuZWBTVOI1DIqFqQp3okCHAQQAQoABgUCVbo+9gAKCRBbghqBO5SnxItOEACr
RT4q2dhm2yBTZTF2B2CXmi2jmRrxKFMSeP8WdzgkxWCvWJs3gT27b9mDtnQKdH34
PJw5nXhdgTRf9iBgtmJbYto+oow1mxTvn7yoz5unLNZBN058KcSudNQ9tJElT+P/
Kt8tJFwccTat/dpV829D+G6tXAIhs9xLSP1jTDm6/chRpNuLHWKODXvYluTEqhsc
VDJJaJDMMKf3C9ryQSGB28CmRJGBYXa4yodXHAtPcpMgEgLoYIaY4HBzbhorOojo
DvMKpY3SVk2BQtV/A8/fdAk5ZLEPHLcX1JNIjXm6OrFwgx2eI+9u8Vsy7jdgvBXP
YmOMryuYOb4r1DHuQvnmUhNAsSjBEZ9zfJWDVxafJS2NDEDHcvSuPg46lY7Jasp/
bhclNDVz0GbhyP8zpjvFYWFZd14fY+Ui7DjqSct7f0NsCAXotsOJgRELkS7m3E5A
25unILsZXxPLN7hlQzr7QfiHECc5rbUi7xhFex8r46Aok0+cKUYZEQvw7ULb7Kgg
HNLdU9W4eHC3L5Udd9IWU/cJj6UCtcCrRSkJaaYrDG4mE9j7o+BOjerH27Li48u9
4AC7ux6mcVr2L1MqjV8ZhWr7FT8wrc9W//v4kfOa9QXUzZOVi/K+6AyPLohJ0bJP
XGJQjERZtqzTAMav6UTqqdiQ3fCQX9Vy30g+gjv3bIkCHAQQAQoABgUCVr0j6AAK
CRDTLgZLGg2R9AcOEADfTVaXrh7Sh5KYUCXYOhQqUrXDegBz+y3ULo5gSB5pKofG
oZXhNh1ut41YUNZHiCYLtNTnAnZntbZm3dhA5Dqs1WKWbv4nDSTEhhi715AIjSsq
iDrIwB252ZUhOa6icOHh7sHiaiTsIxMhgkoVO5lswDh4BeSpiaQHn6KHx6NzI+Of
lVj5fShevzHOrJ0jFC+aUbqtUBzZ1uNkWzaJVQrMu5R47RZzrUJkSUzjhk99ad6t
GbYh0QuGhN1uqm7JYFcSMH4WPgowCCvbzAr4JbrrrD9oPrxWt91ZvQaeS4KQ1VKP
uGa4wWaILfFyJvS3xpLnIko4JeRyh67vEMjdG84P5WWsnhyi1CmppLN4q8tzXxav
j8ZMRkBJRzLjgxLFeNo3LRjch/6wML5byDNWroXoa/aY7CCm7ZXTPPxa+2mOJGGB
rbUpfvna/VZZA809iVlLmr78ud9Yp4GjmYX/DtuPJimLhHv+Wtvp579qa0k4KTlU
NP2vvOsJdhdsSEyqyA7kORNPwizzo4gGmkg6uevyhFAFT2e8ZK3RlogPeRiI1Q0N
k6a/c59AAJd0TgV81K5b/86k6cfl0LL+CJyINZt9t0jSBHcd0KMy9Fo5P5GkIS1B
PbLi3mu//BIzidaZmAQkqnT2edVRfwZmftUMTIVNU7s9DhZ6wpSYHfJc26PzQYkC
IgQQAQoADAUCVHsoUAWDA8JnAAAKCRDM0u2U0hc56WeED/9Zh+SkyW4l7GqU7JWV
UvzZYd1N3YrTKKs7oNI0/DzMIWztRFbMv2sStM8mPvnanGfqo1VtVXFLYjJvdS1g
yzT3Kh2lAgnpOkpGcx3y8aV8N9yDLG26NMBRNB4Bk45jklk/DGgvyz2WEOiQpdvL
vT74TQbPft9+PkmpEsvqb7BJtgHxDiE1dD2cyUHofZxv8uY1qPjKmyUfMApj9VUW
qaXvsLlrOksZQP/hrgAxSUtL3jxjx6QCp9QGV7lZ5GgFWesPKAcWpmr04LOWpG5D
xWePdfd98bZGuFjr+BQyD4eFg5budc8a6NSoCZ3Nd+CrtZUUDi7loifqcSKxj/ts
aQL6Ka/adDjnru6eQckuB2xnvrYE25PrEqKnvQ4VnWEWzDw62Q8MTi7I30XICPfy
swQGVQK2OHvEyizbKSUogeuBi2p58hOVF9bd7MAuK3KSi8z/mCCnthm7xAo4Glnc
sRDA//phKFtZvxTruQw2nFoxG38tLQOy125QpKJV5wdiavy7pfgTzidL5fV781qO
qDyyC64LgC+W+JZCOxS3TGtmldQ8WQGgTikuJRt/fUwE6CIPr46M9m5UROkFzKrF
vBar3y4j4jSa/+2uKYDp96uFazS01vj9+CCaTGWCmlbrBhUPSvhHKfg5t1vbkUaJ
gc3r67ImVOiExoQ3pKk40mnUH4kCPgQTAQgAKAUCVG+oGQIbAwUJDwmcAAYLCQgH
AwIGFQgCCQoLBBYCAwECHgECF4AACgkQdjjQRCuQ0BAumg//c3SXjKtqLh/gxO7H
r+ZfcOnULngHJI6+sL91eN9aZI8CbZv7xfkNG0xHLIzRPOA0O+sSi6Wc2fdFkfUL
HjVErqNF0H8rIcPfZtJcsqJsjL3DEL9gWLvzMj6fVb9R7jFW/6qQ4QX4SbR1xN1y
IXG4b77CmgNGtFicsnOfiiBW0+DMzsEhMkptatgQJUOEKAL218cwjOEhX8AsC5u0
oDPpN7z11LCMBWjBun67htyXeQyQcu3ViYiFfGePQ0i21DYIE2trFzHCN7+4ShF9
/1wYwkPN8hssH18Udx6nIFrobZpiACRPBQl3npCWWOlGE5vnyMa3bPLs+b1CPHaj
FTmERETRcdeB2+BWjkYvskgDWjF7ewqpXGzOJMK9BCvTSd37e6utzi+9A8YajAQv
DYp7EdAgu4rwb572i6UC299cwxPpMsojYKzGrja0LK/ybrCP6JVXTYsoK1xa3u5Y
VFTuIjjDnT1sWGRsmeqsYml2Kbtd4zf4MzvWvK3WyMDdg81czJhc2HN13xOOr//7
dUrkD2zbbS7u7d4hxp3tt1hHef12kClYYVa50QWr6jI7SZerRiaiKV/da0PsNkw2
ihRVUlri7ApUC1/71K9V+2i/a6BAxKp9znF2IfrbmR0YwaUA3OMMsXZ0BZ/u3Iqc
BwIdb+2c4jwIbKgOGn2cTr6E3K+JAksEEAEIADUFAlR08jkHGnN0cmluZyYaaHR0
cDovL2dwZy5nYW5uZWZmLmRlL3BvbGljeS50eHRfdjEuMwAKCRDbFs9bsSUlxI1G
EACPjcxscQk2e418hS+y3LyGr5g7d/oVJuLcXwP5MYU38CA12ZHUiAFPfRp6SrIE
xjxbo47dmbxm/hejONXXc2/thP9Qfnw/5h4ZUDcsIBxInmxTogKuwLmxI1BwELIb
TBMirwqIv9H69d+QiW4vky9jpmDrUb4XT3/GgusHENooZW+umrCbDKELE9lYFAQZ
3cWWywd1PrkvUFvYc5tnqpa8pu9qI4kxcuSxW78Rz4mEraMS7iL4wrn7CmwYYS+X
uSxPyBXS/tbas9+vAV2j7yaRjo5EkizwrGau5Z/umkvNOK8qYtRH/GsM+s7li7h8
DIyWWVsk0JHxI1I+FALxpBbDTRK2ai5R5NRPo6xAY4bHChLR+9qdHgiHRdEuFg0q
6Fl+MmuEF22o2M/r0FB91h8ZYpydCTQ+XFZrL0QYCMGMreasHabFaU5ZSTu6nOxx
gTSW/5NRTQ6lvHAYR5rZ35hoFL9lLLfIYyu/yR/hUz+JlQNhaysH/Sr5JFB5ooTb
gD2QN47iRNV682iWhEvBKShecH0XuFhsPcE43InmV9avXEvvhQ+8JgpknFxUnSu6
0RFg7GO8D6B40ekFlrUt0qDUpZ5kjs+locTX03ne7yFJ4UyRpMKoUuGTZaYRjJS2
LOolbehIWKohymLJ837Sst60ZrRayUOdIiHJyV/E48wfXokBHAQQAQIABgUCWZVR
jgAKCRCrZXoBw5Jn7oXsB/9D9bJDqOxHNIpI9V5n7cKKJMmqVH/sNkKe/zAHaQdQ
98nOetGd6xKpUVpXulOQDNOJoWdsv15l0tJCDKaAOoXE1oMFX4DbNAS7Y6ossd0g
+DS73gKzFb3bM1VV7/Df4dhFZqYAsYLPavNjR3by8cqYb+Wsqud95vX2UEuod55K
FXCt5DM4866ablGQbPln5w14wOOZSbnIySnJQ4HCj0RF5I0XZfwmOFvspGHpQzI5
g8iXitYzHR9g8ui3ixCA8f7EkbDgzRQq4N6Bzq0I2iKMb6uhFHt4MIKlUmSyqe2Z
nUH5FffCXq0ck3rziX+xMdOZ6vh5aGWE/VBOtI2oeHLYiQIzBBABCAAdFiEErhDb
8v8uve8iu439Y9CBS0ZzIz4FAloaue0ACgkQY9CBS0ZzIz7c4BAArEwwurhZQFbf
hPei+fsUvDgTMnPhyWWqVbiN/ugk7w8BXSJnd2FrsyXHABECnoDrnwpCimpUe3+4
aGge2yqG+RCYtKaiDqjwhRwPJQz3jn2VMlU4W+b9p81WXIOQfXn5aLa4vJcXpba2
uhjqBUPI6xhAAficSgmztud8jo4BHyypSDTeEDW+lVbyLX026bgdku9FDGuGwI6G
X9VIBdlmsUFEC6MhfS33PbDQMY6LpQHwgXD/Wba3sWrw0Qkz3Jq9dHhgLYG9GgnB
LDLuFk720hqxxT+i5FbZuP9dAJeu1wcoqn9KVDi9b4Db7qiuIaQdi7dGbjE95ciG
k28Ngi8YGY366ekdW82A/nD3/qQlPlFDpHXaq0kPPSCnc9MV0LxZs/Oa+FfciBcS
2Sx+CkjPA0iNs2M5240Qs8jpEqdzqs8Ci6R3pWx/a/p0zEyAggLmqRl9CQctHEwY
/mf3ZWF1ciz69Zalx2NjCgBGgCJZ9eBUXc46NFx1ZsT2t+fZaOiB/xDVihNV4bu9
GqUIBrG3vpbHg9c3CVCicfOqXzGZib1EVbs1XPy90LEabEVVRzIdhS9TGtWTXg47
kpWHplL1DTif7QXimSUWxazNQUWFjCTWnJhHRN/kRuF2dK2CpHWEahXrtmL3L1Nc
Q7vwsuzkv7ZOBu+7KXyHojJIwsMSbqeJAjMEEAEKAB0WIQR5WoWlo0Rae+lXZXjl
U+iy21aKCAUCWrlYQwAKCRDlU+iy21aKCCJsD/4ttww4019r9bzAHkSN1QKq16AG
TI5n1IxrKoMn47qHJSqesIMBBEbtp6LGNTH9Du5ipxiPZXDNMfpSPedgb/r/Hfrw
EEZ0Px3FTacFarkCKeqgru+m1/g87s5fiwPqCGdg5wpw6uXEIId4+5ZuOUEGAAH/
MUBVhLQr6zROfe0oSM2V0k+2nKtn5sFbaFafnOB3lgd0e+WkNabUsDsoWxL8/PBB
KfPne5Oiuuvh/e7GVEvyzr4AwH5RXPI1qO4pPSSmJaUFbPBVn4oXHNYEtHU/jMut
LjWVrtmxmwwxq35lpblpPveAUgrzzRIG4GAwdFwToJlnFIeBb0sVktVq6GBnDgwW
VL/ZJy/gY3YMXellmpiUZJXGX1EBAxOzOLYHRbUZbOSusRV/k6JKUQf1ABd4g9Wv
CHSe39k7jwgFatWDzqB8UK+dxzN6upg5yJjq5mM6LojORNz5YXCtH0QHFQtK2/+Y
YtacNrfG2SmALIX7O9biby9TW+KtXkeMw0EFFGXGrnAdsXtypNknRXmEHkSOZX8t
VdB6Dw6lkic74Z2h7KrWRtDJjAe5yw/z9E4xmYdVJeMWmci8cpRgLuJXXmwo+M07
X59esTuYauk1e6uyHEfTPL2FB3dFV7Bg5DqMHApyg1N9OfciBUazJJvjCTz3NpQn
6ZSxGwIK1lF0XRZvM4kBMwQQAQoAHRYhBPhewwO0ZbJ4LCH3J+OaFExOgWCIBQJb
zbHqAAoJEOOaFExOgWCICIUH/iPjuzQz5fFJB7cojC1uMhJbRaiGEOskh6qZiLkS
oAB8VH3KymHS4fCwoXLYaA3J733skguUIJYY3t47Qtwx45j1+FPex9a/z7JfNXCg
TzG1MRQs/E/zK3yD5oujHj8U1tIge/fSDsVAVMCWCAC/P+y+WnxJLT/beRZiDCc2
QruupiVEYmPUDUYLlq6xdlhakiBT8Pk9N/me3Aviy773TbUG/EM1wTXqSp9yQ811
vfcf1glUCdJxXPP08KBOZZfTiMaIn9B3evbEKVZXz6DYFMcfoFk5NbQYvNAVN/m5
EgzVzrGzxg+GMFCKyDdO3mfDeWR0KKPZ5v1mqQpp9yDy32I=
=qjte
-----END PGP PUBLIC KEY BLOCK-----

View File

@ -0,0 +1 @@
ndk.dir=/opt/android-sdk-linux/ndk/

View File

@ -0,0 +1 @@
i2psrc=/opt/workspace/i2p.i2p

View File

@ -0,0 +1 @@
sdk.dir=/opt/android-sdk-linux/

View File

@ -0,0 +1,10 @@
#javac.version=1.7
javac.source=1.8
javac.version=1.7
javac.target=1.7
javac.release=8
javac.compilerargs=-bootclasspath /opt/packages/openjdk-7-jre/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/rt.jar:/opt/packages/openjdk-7-jre/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/jce.jar
build.built-by=idk
junit.home=/usr/share/java
hamcrest.home=/usr/share/java
mockito.home=/usr/share/java

View File

@ -0,0 +1,4 @@
STORE_FILE=/.i2p-plugin-keys/android.keystore
STORE_PASSWORD=store.password
KEY_ALIAS=key.alias
KEY_PASSWORD=key.password

View File

@ -0,0 +1,23 @@
GROUP=net.i2p.android
org.gradle.jvmargs=-Xmx1536M
POM_URL=https://github.com/i2p/i2p.android.base
POM_SCM_URL=https://github.com/i2p/i2p.android.base
POM_SCM_CONNECTION=scm:git:git@github.com:i2p/i2p.android.base.git
POM_SCM_DEV_CONNECTION=scm:git:git@github.com:i2p/i2p.android.base.git
POM_LICENCE_NAME=The Apache Software License, Version 2.0
POM_LICENCE_URL=http://www.apache.org/licenses/LICENSE-2.0.txt
POM_LICENCE_DIST=repo
POM_DEVELOPER_ID=github-ci
POM_DEVELOPER_NAME=github-ci
POM_DEVELOPER_EMAIL=hankhill19580@gmail.com
ANDROID_BUILD_TARGET_SDK_VERSION=33
ANDROID_BUILD_SDK_VERSION=33
I2P_VERSION=2.4.0
I2P_ANDROID_VERSION=2.4.0
android.disableAutomaticComponentCreation=true
android.useAndroidX=true

View File

@ -0,0 +1,2 @@
STORE_FILE=/home/runner/keystores/android-release.keystore
KEY_ALIAS=mykey

View File

@ -14,7 +14,12 @@ POM_DEVELOPER_ID=idk
POM_DEVELOPER_NAME=idk
POM_DEVELOPER_EMAIL=hankhill19580@gmail.com
I2P_VERSION=0.9.48
ANDROID_BUILD_TARGET_SDK_VERSION=29
ANDROID_BUILD_SDK_VERSION=28
ANDROID_BUILD_TARGET_SDK_VERSION=34
ANDROID_BUILD_SDK_VERSION=34
I2P_VERSION=2.7.0
I2P_ANDROID_VERSION=2.7.0
I2P_ANDROID_VERSION_CODE=4745286
android.disableAutomaticComponentCreation=true
android.useAndroidX=true
#android.enableJetifier=true

View File

@ -14,7 +14,12 @@
* limitations under the License.
*/
apply plugin: 'maven'
// TODO: Migrate to something like this that works with Gradle 7.0
// EITHER: Document how to generate build artifacts, pom files, etc and upload them to Nexus manually
// OR: Automate the process like was possible when we could still use antique gradle versions
// I just commented out the old code, surely something must present a similar API?
//apply plugin: 'maven'
apply plugin: 'signing'
def isReleaseBuild() {
@ -39,7 +44,9 @@ def getRepositoryPassword() {
return hasProperty('NEXUS_PASSWORD') ? NEXUS_PASSWORD : ""
}
afterEvaluate { project ->
/*
uploadArchives {
repositories {
mavenDeployer {
@ -87,7 +94,9 @@ afterEvaluate { project ->
}
}
}
*/
/*
task installArchives(type: Upload) {
description "Installs the artifacts to the local Maven repository."
configuration = configurations['archives']
@ -101,6 +110,7 @@ afterEvaluate { project ->
}
}
}
*/
signing {
required { isReleaseBuild() && gradle.taskGraph.hasTask("uploadArchives") }

View File

@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip

View File

@ -9,7 +9,7 @@ repositories {
android {
compileSdkVersion Integer.parseInt(project.ANDROID_BUILD_SDK_VERSION as String)
defaultConfig {
minSdkVersion 14
minSdkVersion 21
targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION as String)
}
buildTypes {
@ -19,13 +19,17 @@ android {
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
coreLibraryDesugaringEnabled true
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
lintOptions {
abortOnError false
}
buildToolsVersion '28.0.3'
}
dependencies {
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
}
dependencies {

View File

@ -5,7 +5,7 @@ version = '0.9.5'
android {
compileSdkVersion Integer.parseInt(project.ANDROID_BUILD_SDK_VERSION as String)
defaultConfig {
minSdkVersion 14
minSdkVersion 21
targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION as String)
}
buildTypes {
@ -15,13 +15,13 @@ android {
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
coreLibraryDesugaringEnabled true
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
lintOptions {
abortOnError false
}
buildToolsVersion '28.0.3'
}
dependencies {
@ -33,4 +33,8 @@ dependencies {
testImplementation 'org.mockito:mockito-core:2.11.0'
}
dependencies {
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
}
apply from: "${project.rootDir}/gradle/maven-push.gradle"

View File

@ -5,4 +5,5 @@
<string name="install_i2p_android">Instalovat I2P Android?</string>
<string name="you_must_have_i2p_android">Musíte mít nainstalovaný a zapnutý I2P Android. Přejete si jej nainstalovat?</string>
<string name="start_i2p_android">Otevřít I2P Android?</string>
<string name="would_you_like_to_start_i2p_android">Zdá se, že I2P Android neběží. Chcete jej spustit?</string>
</resources>

View File

@ -0,0 +1,9 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="yes"></string>
<string name="no">No</string>
<string name="install_i2p_android">¿Instalar I2P Android?</string>
<string name="you_must_have_i2p_android">Ha de tener I2P Android instalado y ejecutándose. ¿Le gustaría instalarlo?</string>
<string name="start_i2p_android">¿Iniciar I2P Android?</string>
<string name="would_you_like_to_start_i2p_android">Parece que I2P Android no se está ejecutando. ¿Desea ejecutarlo?</string>
</resources>

View File

@ -0,0 +1,9 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="yes">Da</string>
<string name="no">Ne</string>
<string name="install_i2p_android">Namesti I2P Android?</string>
<string name="you_must_have_i2p_android">Vi morate imeti I2P Android nameščen in zagnan. Bi vi radi ga namestili?</string>
<string name="start_i2p_android">Zaženi I2P Android?</string>
<string name="would_you_like_to_start_i2p_android">Zgleda, da I2P Android ne teče. Želite ga zagnati?</string>
</resources>

View File

@ -2,8 +2,8 @@
<resources>
<string name="yes">Evet</string>
<string name="no">Hayır</string>
<string name="install_i2p_android">I2P Android Kurulsun mu?</string>
<string name="you_must_have_i2p_android">I2P Android yazılımı kurulmuş ve çalışıyor olmalıdır. Kurmak ister misiniz?</string>
<string name="start_i2p_android">I2P Android Başlatılsın</string>
<string name="would_you_like_to_start_i2p_android">I2P Android yazılımı çalışmıyor gibi görünüyor. Başlatmak ister misiniz?</string>
<string name="install_i2p_android">I2P Android kurulsun mu?</string>
<string name="you_must_have_i2p_android">I2P Android uygulaması kurulmuş ve çalışıyor olmalıdır. Kurmak ister misiniz?</string>
<string name="start_i2p_android">I2P Android başlatılsın</string>
<string name="would_you_like_to_start_i2p_android">I2P Android uygulaması çalışmıyor gibi görünüyor. Başlatmak ister misiniz?</string>
</resources>

View File

@ -5,5 +5,5 @@
<string name="install_i2p_android">安装 I2P Android</string>
<string name="you_must_have_i2p_android">您必须已经安装并运行 I2P Android。您想现在安装它吗</string>
<string name="start_i2p_android">启动 I2P Android</string>
<string name="would_you_like_to_start_i2p_android">看起来 I2P Android 未在运行您想启动它吗?</string>
<string name="would_you_like_to_start_i2p_android">看起来 I2P Android 未在运行您想启动它吗?</string>
</resources>

View File

@ -13,6 +13,7 @@ artifacts {
routerjars file: file('libs/i2ptunnel.jar'), builtBy: buildRouter
routerjars file: file('libs/i2ptunnel-ui.jar'), builtBy: buildRouter
routerjars file: file('libs/addressbook.jar'), builtBy: buildRouter
routerjars file: file('libs/sam.jar'), builtBy: buildRouter
//routerjars file: file('libs/BOB.jar'), builtBy: buildRouter
}
clean.dependsOn cleanBuildRouter

View File

@ -20,6 +20,7 @@
<available property="have.bob" file="${i2plib}/BOB.jar" />
<available property="have.newsxml" file="${i2pbase}/apps/routerconsole/java/build/newsxml.jar" />
<available property="have.i2ptunnel" file="${i2plib}/i2ptunnel-ui.jar" />
<available property="have.sam" file="${i2plib}/sam.jar" />
<available property="have.addressbook" file="${i2plib}/addressbook.jar" />
<target name="buildNewsXMLJar" unless="have.newsxml">
@ -36,7 +37,11 @@
<ant dir="${i2pbase}" inheritall="false" useNativeBasedir="true" target="buildBOB" />
</target>
<target name="buildrouter" depends="buildNewsXMLJar, buildI2PTunnelJar, buildAddressbook">
<target name="buildSAM" unless="have.sam">
<ant dir="${i2pbase}" inheritall="false" useNativeBasedir="true" target="buildSAM" />
</target>
<target name="buildrouter" depends="buildNewsXMLJar, buildI2PTunnelJar, buildAddressbook, buildSAM">
<mkdir dir="${jar.libs.dir}" />
<!-- newsxml -->
@ -50,10 +55,15 @@
<copy file="${i2plib}/addressbook.jar" todir="${jar.libs.dir}" />
<!-- bob -->
<!--
<!--
<copy file="${i2plib}/BOB.jar" todir="${jar.libs.dir}" />
-->
<!-- sam -->
<copy file="${i2plib}/sam.jar" todir="${jar.libs.dir}" />
</target>
<target name="clean">