Compare commits

...

85 Commits

Author SHA1 Message Date
idk
f2088ad1e5 bump versions and tag 2021-08-30 09:58:27 -04: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
1e3b517219 Bump target requirement to 29 for GPlay 2020-12-03 04:19:24 +00:00
f4e3b15fcf add new translation 'tk' 2020-12-02 22:51:06 +00:00
fc4154be67 Bump version for release 2020-12-02 22:48:07 +00:00
5bf0b18767 Add IceRaven configuration recommendation. 2020-11-11 05:28:17 +00:00
eb5ef3129b Add IceRaven configuration recommendation. 2020-11-11 05:26:05 +00:00
6e87d248c0 update changelog for 0.9.47-1 2020-10-30 12:39:27 +00:00
c9b0aff142 Add pushing mtn tags to the RELEASE-PROCESS.md so nobody confuses gitisms and mtnisms again 2020-10-30 02:44:26 +00:00
5acac0dbc4 increment version code 2020-10-29 19:38:28 +00:00
0b42a7ee64 add an example override.properties 2020-10-29 04:00:53 +00:00
c3a798ee3d add an example override.properties 2020-10-29 04:00:27 +00:00
e682369311 slightly better bootclasspath example in RELEASE-PROCESS.md 2020-10-28 21:40:28 +00:00
14b953f145 add classpath and Java Version requirements to RELEASE-PROCESS.md 2020-10-28 20:29:19 +00:00
036c807d6b Explicitly enable NTCP2 2020-10-28 02:00:52 +00:00
a41fca95df disable ntcp 2020-10-27 23:13:33 +00:00
26fdf40f25 merge of '5285d38e1dec9ca4af6fed9b10029de9c622a443'
and '890c3b02b48b2ff11946ccea164dad683aa2e8fd'
2020-10-27 20:29:03 +00:00
070af6529c Only ever pop the batter interstitial one time, no matter what, since we can't rely on the Android API to tell us the right thing 2020-10-27 20:28:41 +00:00
zzz
7ba0892351 Remove outproxy that's down 2020-10-26 17:30:52 +00:00
5b9cdb9f9f update release process again 2020-09-13 14:45:07 +00:00
zzz
b79d39a74a date format fixes 2020-09-03 15:07:09 +00:00
5fc5aed0c9 update the maven release instructions 2020-09-03 14:13:56 +00:00
aec25ab374 update build files for the release 2020-08-26 20:07:21 +00:00
zzz
9d5c495936 remove old subscription 2020-07-04 12:31:16 +00:00
4dc2bb6b01 check in new string for new foreground task 2020-06-29 23:28:18 +00:00
373e013911 fix foreground service notification issue on android 8.1 and greater 2020-06-29 20:12:32 +00:00
83bb7096a7 merge of '412007995e44aa866ff698a168742c4c330a62ef'
and '5bb8ab81cd3ab734f3c6b6d67d53eff28c5f5558'
2020-06-07 16:11:38 +00:00
cc1c4690a2 fix unchecked-in version code bump 2020-06-05 16:13:01 +00:00
69ad581235 update the changelog 2020-06-03 04:51:36 +00:00
4be227631d Bump version to 0.9.46 2020-06-03 00:20:01 +00:00
3f3f1f8e3d Catch the AndroidRuntimeException and warn if we can't change the power save permission 2020-06-02 22:40:58 +00:00
22290da1a4 merge of '01b01ebb27ab903f97975265856546c244185909'
and 'ac15ee2b1ce53342c8bfea5ccd3360220e615471'
2020-03-28 17:16:03 +00:00
7caf21d552 I2P Android 0.9.45 release commit 2020-03-08 04:51:08 +00:00
701860a525 Translations update in helper 2020-03-08 04:50:35 +00:00
7615aca89e Translations update 2020-03-08 04:50:07 +00:00
cae8ed2ae3 Remove arch x86 and mips due to google requirements 2020-03-08 04:49:49 +00:00
zzz
a523e1cb4a update default irc server list 2020-03-04 13:29:13 +00:00
5e048af9c1 Google said no. The 0.9.44 release would be based off this commit instead as it's has the current minimum target sdk. 2019-12-03 15:42:13 +00:00
77b6c4d30f Release commit for Android I2P 0.9.44 2019-12-03 15:33:29 +00:00
zzz
983a94e1c4 Update changelog after revert of:
Revision: 034402ca4ed4243122bd88857c7d306e295c9fbe
  Parent:   9f9a905cf75324471b3a8eb41da2feebf620207c
  Author:   meeh@mail.i2p
  Date:     10/27/2019 15:00:33
  Branch:   i2p.android.base
  Changelog:
  Merged two heads
2019-10-28 15:09:23 +00:00
zzz
1f79323d66 merge of '1d4693c3e133c94344da0418287d05613bfe34f5'
and 'cab71a0c3af65109945e3b7e4f927825e8e7deb4'
2019-10-28 15:05:50 +00:00
zzz
d86d3ad5ae disapproval of revision '034402ca4ed4243122bd88857c7d306e295c9fbe' 2019-10-28 15:05:37 +00:00
c41b064045 Android version 0.9.43 2019-10-27 15:01:28 +00:00
4c299ecda3 Merged two heads 2019-10-27 15:00:33 +00:00
761f427366 Translations update 2019-10-27 15:00:12 +00:00
f4c4bfe8be string improvements and remove redundancy in battery optimization fix 2019-10-12 17:49:06 +00:00
7f15a6f1e1 Inform the user of improved perfomance by excepting us from battery optimizations and prompt for permission to do so 2019-10-11 21:34:46 +00:00
zzz
5734760d58 Hide tunnel actions while TCG is starting 2019-10-11 17:12:33 +00:00
zzz
3244adfcd2 Rework fix for ticket #2629 to catch the null TCG sooner
javadocs
2019-10-11 16:52:43 +00:00
zzz
ce62b0fb97 Force logo to stopped if no router
Set logo for graceful shutdown
2019-10-11 16:25:43 +00:00
zzz
64673ee185 Change message for tunnel list when TCG not running yet 2019-10-11 16:20:06 +00:00
zzz
a36cabdcc8 Fix ISE in language dialog (ticket #2631) 2019-10-10 12:48:14 +00:00
1e8531c731 Fix for #2629, at least this is what we can do in the android end without adding new strings. 2019-10-09 20:19:24 +00:00
zzz
0935659d6d Save state to preferences in background thread (tickets #2595, #2632) 2019-10-08 15:45:34 +00:00
zzz
bef5f7e746 more README updates 2019-10-08 14:16:32 +00:00
zzz
d64e8359c1 Add dev build info to README 2019-10-08 14:11:20 +00:00
5fd77ea62d changelog reminder in RELEASE-PROCESS.md 2019-08-31 00:22:36 +00:00
8626ac2913 Changelog update 2019-08-31 00:21:05 +00:00
69 changed files with 1164 additions and 250 deletions

3
.dockerignore Normal file
View File

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

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
etc/docker.signing.properties
signing.properties

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,3 +1,42 @@
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
0.9.47-1 2020-10-29
* This release fixes a number of bugs arising from a misconfigured bootclasspath
* Fix a battery-management issue arising on some phones
0.9.47 / 2020-08-26
* Notification bug-fixes on platforms >8.0
0.9.46 / 2020-06-03
* catch ActivityNotFound exception in MainActivity
0.9.45 / 2020-03-07
* No significant changes
0.9.44 / 2019-12-03
* Updated translations
* Bumped target sdk version to 28, enforced by google
0.9.43-1 / 2019-10-28
* Fix crash at startup in TCG
0.9.43 / 2019-10-27
* Save state in background thread (tickets #2595, #2632)
* Fix ISE in language dialog (ticket #2631)
* Fix NPE in create tunnel (ticket #2629)
* Update logo after router killed in background
* Fix message in tunnels tabs when tunnels not up yet
* Hide tunnel actions while TCG is starting
* Add battery permissions dialog (ticket #2607)
0.9.42 / 2019-08-28
* Possible fix for tunnel edit dialog crash (ticket #2598)
0.9.41 / 2019-07-03
* New 64 bit libjbigi (ticket #2503)
* Update 32 bit jbigi to GMP 6.1.2

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 https://deb.i2p2.de/ sid main' >> /etc/apt/sources.list
RUN echo 'deb-src https://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://i2pgit.org/i2p-hackers/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

View File

@ -67,10 +67,18 @@ systemProp.socksProxyPort=9150
```
sdk.dir=/path/to/android-studio/sdk
```
1a. For building with a local router development build:
cd ../i2p.i2p
installer/resources/maven-dev-release.sh x // x is the build number, e.g. 6
cd back here
edit gradle.properties, add the build number x to I2P_PROPERTIES=0.9.xx-x
2. `gradle assembleDebug`
3. The APK will be placed in `i2p.android.base/app/build/outputs/apk`.
3. The APK files will be placed in `i2p.android.base/app/build/outputs/apk` subdirectories.
4. Install debug build on phone in USB debugging mode
adb install app/build/outputs/apk/free/debug/app-free-debug.apk
### Building with Android Studio

View File

@ -1,60 +1,120 @@
# Release Process
Note to all future maintainers: We have 4 channels that need to be updated in order to have a successful
Android release. Many of these channels are updated at different rates, and at times you must wait on a
third-party service to complete it's tasks before you may continue. When completing an Android release,
keep in mind that you must update 1) Maven 2) Google Play 3) f-droid.i2p.io and 4) F-Droid main
repository.
At the time of this revision, 2020/09/13, the main Android maintainer is idk. idk updates Maven, Google
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.
**>> Beginning of Docker-enabled Steps <<**
## Prerequirements
1. Ensure you got 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.
4. Ensure junit 4.12 at least in junit.home, ensure the jar file is named `junit4.jar`.
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 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 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-8-openjdk-amd64` and picking Java 8. **TODO:** add instructions for non-Debian-based
systems.
8. Ensure that you have a Java 1.7 bootclasspath available. (See **Maven Central** step 2A.)
## Maven Central
## Get all the dependencies ready
1. Check out a clean copy of i2p.i2p at the correct release version. (Make a clean checkout)
2. Build the maven packages via `ant mavenCentral` where you end up with mavencentral-*.jar files in the current directory.
3. Login to http://oss.sonatype.org for uploading the mavencentral-*.jar bundles.
4. In nexus, choose "Staging Upload" and upload all of the bundles with upload mode set to "Artifact Bundle"
5. Under "Staging Repositories" ensure all where uploaded correctly, select them all and press "Release" in the toolbar.
### Maven Central
## Android Common Build
1. Check out a clean copy of i2p.i2p at the correct release version. (Make a clean checkout)
2. Build the maven packages via `ant mavenCentral` where you end up with mavencentral-*.jar files in the
current directory.
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`
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` )
2a. 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.
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.
7. If the helper has changed since the last release, edit
`lib/helper/gradle.properties` to bump the version.
8. `./gradlew clean assembleRelease`
**>> 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
component, you will need to upload a *.jar, a *.jar.asc, a *sources.jar, a *sources.jar.asc, a javadoc.jar,
and a javadoc.jar.asc, and a pom.xml and a pom.xml.asc from the pkg-mavencentral directory during the "Upload
Artifacts with POM" operation. You will need to do this once for each component you upload to Nexus.
5. Under "Staging Repositories" ensure all where uploaded correctly, select them all and press "Release"
in the toolbar.
#### Example override.properties:
javac.version=1.7
javac.target=1.7
javac.source=1.8
javac.compilerargs=-bootclasspath /home/user/StudioProjects/java7bootclasspath/rt.jar:/home/user/StudioProjects/java7bootclasspath/jce.jar
javac.compilerargs7=-bootclasspath /home/user/StudioProjects/java7bootclasspath/rt.jar:/home/user/StudioProjects/java7bootclasspath/jce.jar
build.built-by=name
### 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` )
- 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. 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.
7. If the helper has changed since the last release, edit
`lib/helper/gradle.properties` to bump the version.
8. `./gradlew clean assembleRelease`
### Libraries
1. `./gradlew :lib:client:uploadArchives`
2. If the helper version was changed and should be released: `./gradlew :lib:helper:uploadArchives`
3. Check on Sonatype that everything worked, and close/release.
1. `./gradlew :lib:client:uploadArchives`
2. If the helper version was changed and should be released: `./gradlew :lib:helper:uploadArchives`
3. Check on Sonatype that everything worked, and close/release.
## F-Droid Guide
## Release Packages
1. Ensure you have the release keys, the keyfile must be placed at `~/.local/share/fdroidserver/keystore.jks`
2. If it's the first time, or you have reinstalled anything, ensure `path/to/fdroid/config.py` has correct information.
3. Assuming you already have ran `./gradlew clean assembleRelease` from a earlier step, continue.
4. `cp app/build/outputs/apk/free/release/app-free-release.apk path/to/fdroid/repo/I2P-VERSION.apk`
5. Update `path/to/fdroid/metadata/net.i2p.android.txt` (The versions at the bottom of the file)
6. Run `fdroid update` from inside the fdroid path (install fdroid command via `pip install fdroidserver`)
7. Zip/tar the local fdroid repo and archive. `rm fdroid.tgz && tar czf fdroid.tgz archive/ repo/` from the fdroid directory.
8. Push to download server and put in place. (via SSH for example, `scp fdroid.tgz download.i2p2.de:~/`)
9. On the server run `bin-fd/update-fdroid` and `sudo bin-fd/update-app i2p 0.9.40` (This ensures we use the exact same apk file for the download page as in fdroid and gplay)
10. Check F-Droid repo works, and app works.
### F-Droid Guide
## Google Play and finishing up
This guide is for f-droid.i2p.io, not for F-Droid's main repository. The repository keystore **and** the
config.py used to generate the repository are required to complete this process successfully.
1. Verify which files that are changed via `mtn ls cha`. It shouldn't be much more than those bellow this line and possible translations (`mtn ls unk`).
2. Commit your release changes, `mtn ci gradle.properties lib/helper/gradle.properties app/build.gradle`
3. Push free and donate builds to Google Play via https://play.google.com/apps/publish/
4. Tag the new release. Example `mtn tag h: android-0.9.36`
5. Push the monotone changes
6. Update download page (version and hash, including F-Droid)
1. Ensure you have the release keys, the keyfile must be placed at `~/.local/share/fdroidserver/keystore.jks`
2. If it's the first time, or you have reinstalled anything, ensure `path/to/fdroid/config.py` has correct
information.
3. Assuming you already have ran `./gradlew clean assembleRelease` from a earlier step, continue.
4. `cp app/build/outputs/apk/free/release/app-free-release.apk path/to/fdroid/repo/I2P-VERSION.apk`
5. Update `path/to/fdroid/metadata/net.i2p.android.txt` (The versions at the bottom of the file)
6. Run `fdroid update` from inside the fdroid path (install fdroid command via `pip install fdroidserver`)
7. Zip/tar the local fdroid repo and archive. `rm fdroid.tgz && tar czf fdroid.tgz archive/ repo/` from the
fdroid directory.
8. Push to download server and put in place. (via SSH for example, `scp fdroid.tgz download.i2p2.de:~/`)
9. On the server run `bin-fd/update-fdroid` and `sudo bin-fd/update-app i2p 0.9.40` (This ensures we use the
exact same apk file for the download page as in fdroid and gplay)
10. Check F-Droid repo works, and app works.
### Google Play and finishing up
1. Verify which files that are changed via `mtn ls cha`. It shouldn't be much more than those bellow this
line and possible translations (`mtn ls unk`).
2. Commit your release changes, `mtn ci gradle.properties lib/helper/gradle.properties app/build.gradle`
3. Push free and donate builds to Google Play via https://play.google.com/apps/publish/
4. Tag the new release. Example `mtn tag h: android-0.9.36`
5. Push the monotone changes. Make sure that they are there at the next git sync.
6. Update download page (version and hash, including F-Droid)

View File

@ -7,7 +7,7 @@ repositories {
android {
compileSdkVersion 28
defaultConfig {
versionCode 4745250
versionCode 4745263
versionName "$I2P_VERSION"
minSdkVersion 14
targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION as String)
@ -114,7 +114,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 +177,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

@ -14,6 +14,11 @@
<!-- following two are for UPnP -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
<!-- required for reliable core functionality on Android, see:
https://geti2p.net/en/docs/applications/embedding
heading: "Design for and Encourage Long Uptimes"
-->
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
<application
android:icon="@drawable/ic_launcher_itoopie"

View File

@ -92,7 +92,7 @@ class InitActivities {
File docsDir = new File(myDir, "docs");
docsDir.mkdir();
copyResourceToFile(R.raw.ahelper_conflict_header_ht, "docs/ahelper-conflict-header.ht");
/*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");
@ -110,7 +110,7 @@ class InitActivities {
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");
copyResourceToFile(R.raw.resetp_header_ht, "docs/resetp-header.ht");*/
File cssDir = new File(docsDir, "themes/console/light");
cssDir.mkdirs();

View File

@ -20,6 +20,10 @@ import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutionException;
/**
* A single tunnel.
* Stored by the TunnelEntryAdapter.
*/
public class TunnelEntry {
public static final int RUNNING = 1;
public static final int STARTING = 2;
@ -31,6 +35,7 @@ public class TunnelEntry {
private final int mId;
/**
* @param tcg non-null
* @return the new TunnelEntry, or null if there was an error.
*/
public static TunnelEntry createNewTunnel(

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;
@ -17,6 +19,12 @@ import net.i2p.android.util.FragmentUtils;
import java.util.ArrayList;
import java.util.List;
/**
* Contains the List of TunnelEntries.
* There's two of these, one for client tunnels and
* one for server tunnels.
* Created by the TunnelListFragment.
*/
public class TunnelEntryAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private final Context mCtx;
private final boolean mClientTunnels;
@ -123,13 +131,24 @@ 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) {
switch (holder.getItemViewType()) {
case R.string.router_not_running:
((TextView) holder.itemView).setText(
mCtx.getString(R.string.router_not_running));
mCtx.getString(R.string.i2ptunnel_not_initialized));
break;
case R.layout.listitem_empty:
@ -177,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;
@ -184,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

@ -31,6 +31,12 @@ import net.i2p.i2ptunnel.TunnelControllerGroup;
import java.util.ArrayList;
import java.util.List;
/**
* The list of tunnels.
* There's two of these, one for client tunnels and
* one for server tunnels.
* Creates the TunnelEntryAdapter.
*/
public class TunnelListFragment extends Fragment implements
LoaderManager.LoaderCallbacks<List<TunnelEntry>> {
public static final String SHOW_CLIENT_TUNNELS = "show_client_tunnels";

View File

@ -33,6 +33,11 @@ import net.i2p.router.RouterContext;
import java.util.List;
/**
* The top level Fragment of the tunnels tabs.
* Creates client and server TunnelListFragments,
* the options menu, and the new tunnel wizard button.
*/
public class TunnelsContainer extends Fragment implements
FragmentUtils.TwoPaneProvider,
TunnelListFragment.OnTunnelSelectedListener,
@ -65,12 +70,11 @@ public class TunnelsContainer extends Fragment implements
setHasOptionsMenu(true);
}
private boolean showActions() {
private static boolean showActions() {
RouterContext rCtx = Util.getRouterContext();
TunnelControllerGroup tcg = TunnelControllerGroup.getInstance();
return rCtx != null && tcg != null &&
(tcg.getState() == ClientAppState.STARTING ||
tcg.getState() == ClientAppState.RUNNING);
tcg.getState() == ClientAppState.RUNNING;
}
@Override
@ -216,6 +220,12 @@ public class TunnelsContainer extends Fragment implements
return;
// TODO fetch earlier
TunnelControllerGroup tcg = TunnelControllerGroup.getInstance();
if (tcg == null) {
// router went away
Toast.makeText(getActivity().getApplicationContext(),
R.string.router_not_running, Toast.LENGTH_LONG).show();
return;
}
TunnelConfig cfg = TunnelUtil.createConfigFromWizard(getActivity(), tcg, tunnelData);
TunnelEntry tunnel = TunnelEntry.createNewTunnel(getActivity(), tcg, cfg);

View File

@ -1,17 +1,22 @@
package net.i2p.android.router;
import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.Typeface;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.PowerManager;
import android.preference.PreferenceManager;
import android.provider.Settings;
import android.support.v4.content.LocalBroadcastManager;
import android.support.v7.app.AlertDialog;
import android.util.AndroidRuntimeException;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
@ -23,6 +28,7 @@ import android.widget.ScrollView;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.ToggleButton;
import net.i2p.android.I2PActivityBase;
@ -69,6 +75,7 @@ public class MainFragment extends I2PFragmentBase {
private TextView vAdvStatusText;
private static final String PREF_CONFIGURE_BROWSER = "app.dialog.configureBrowser";
private static final String PREF_CONFIGURE_BATTERY = "app.dialog.configureBattery";
private static final String PREF_FIRST_START = "app.router.firstStart";
private static final String PREF_SHOW_STATS = "i2pandroid.main.showStats";
protected static final String PROP_NEW_INSTALL = "i2p.newInstall";
@ -320,7 +327,10 @@ public class MainFragment extends I2PFragmentBase {
}
}
public void updateState(State newState) {
/**
* Changes the logo based on the state.
*/
private void updateState(State newState) {
if (newState == State.INIT ||
newState == State.STOPPED ||
newState == State.MANUAL_STOPPED ||
@ -328,13 +338,13 @@ public class MainFragment extends I2PFragmentBase {
newState == State.NETWORK_STOPPED) {
mConsoleLights.setImageResource(R.drawable.routerlogo_0);
} else if (newState == State.STARTING ||
//newState == State.GRACEFUL_SHUTDOWN || // Don't change lights for graceful
newState == State.STOPPING ||
newState == State.MANUAL_STOPPING ||
newState == State.MANUAL_QUITTING ||
newState == State.NETWORK_STOPPING) {
mConsoleLights.setImageResource(R.drawable.routerlogo_1);
} else if (newState == State.RUNNING) {
} else if (newState == State.RUNNING ||
newState == State.GRACEFUL_SHUTDOWN) {
mConsoleLights.setImageResource(R.drawable.routerlogo_2);
} else if (newState == State.ACTIVE) {
mConsoleLights.setImageResource(R.drawable.routerlogo_3);
@ -437,6 +447,7 @@ public class MainFragment extends I2PFragmentBase {
// network but no router context
vStatusContainer.setVisibility(View.GONE);
getActivity().findViewById(R.id.console_usage_stats).setVisibility(View.INVISIBLE);
updateState(State.STOPPED);
/**
* **
* RouterService svc = _routerService; String status = "connected? "
@ -526,8 +537,8 @@ public class MainFragment extends I2PFragmentBase {
* compare translated nicknames - put "shared clients" first in the sort
*/
private class AlphaComparator implements Comparator<Destination> {
private String xsc;
private RouterContext _ctx;
private final String xsc;
private final RouterContext _ctx;
public AlphaComparator(RouterContext ctx) {
_ctx = ctx;
@ -578,12 +589,14 @@ public class MainFragment extends I2PFragmentBase {
);
if (language == null) {
AlertDialog.Builder b = new AlertDialog.Builder(getActivity());
// avoid ISE caused by fragment detachment ticket #2631
final String languages[] = getResources().getStringArray(R.array.languages);
b.setTitle(R.string.choose_language)
.setItems(R.array.language_names, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// Save the language choice
String language = getResources().getStringArray(R.array.languages)[which];
String language = languages[which];
PreferenceManager.getDefaultSharedPreferences(getActivity())
.edit()
.putString(getString(R.string.PREF_LANGUAGE), language)
@ -614,16 +627,61 @@ public class MainFragment extends I2PFragmentBase {
ab.setPref(PREF_CONFIGURE_BROWSER, false);
Intent hi = new Intent(getActivity(), BrowserConfigActivity.class);
startActivity(hi);
checkDialog();
}
})
.setNegativeButton(R.string.no, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int i) {
dialog.cancel();
dialog.dismiss();
ab.setPref(PREF_CONFIGURE_BROWSER, false);
checkDialog();
}
})
.show();
} else if (ab.getPref(PREF_CONFIGURE_BATTERY, true)) {
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
// only for Marshmallow and newer versions
final Intent intent = new Intent();
final Context mContext = ab.getApplicationContext();
String packageName = mContext.getPackageName();
PowerManager pm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
if (!pm.isIgnoringBatteryOptimizations(packageName)) {
AlertDialog.Builder b = new AlertDialog.Builder(getActivity());
b.setTitle(R.string.configure_no_doze_title);
b.setMessage(R.string.configure_no_doze);
b.setCancelable(false);
b.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int i) {
String packageName = mContext.getPackageName();
ab.setPref(PREF_CONFIGURE_BATTERY, false);
dialog.dismiss();
// Simply do not re-attempt a battery optimization after the first time,
// 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));
try {
mContext.startActivity(intent);
} catch (ActivityNotFoundException activityNotFound) {
ab.setPref(PREF_CONFIGURE_BATTERY, false);
} catch (AndroidRuntimeException activityNotFound) {
ab.setPref(PREF_CONFIGURE_BATTERY, false);
}
}
});
b.setNegativeButton(R.string.no, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int i) {
dialog.cancel();
ab.setPref(PREF_CONFIGURE_BATTERY, false);
}
});
b.show();
}
} else {
ab.setPref(PREF_CONFIGURE_BATTERY, false);
}
}
/*VersionDialog dialog = new VersionDialog();
String oldVersion = ((I2PActivityBase) getActivity()).getPref(PREF_INSTALLED_VERSION, "??");

View File

@ -5,6 +5,7 @@ import android.content.Context;
//import net.i2p.BOB.BOB;
import net.i2p.I2PAppContext;
import net.i2p.addressbook.DaemonThread;
import android.preference.PreferenceManager;
import net.i2p.android.apps.NewsFetcher;
import net.i2p.android.router.util.Notifications;
import net.i2p.android.router.util.Util;
@ -14,8 +15,11 @@ import net.i2p.router.JobImpl;
import net.i2p.router.RouterContext;
import net.i2p.router.startup.RouterAppManager;
import net.i2p.util.I2PAppThread;
import net.i2p.sam.SAMBridge;
import java.io.File;
import java.io.IOException;
import java.util.Properties;
/**
* Load the clients we want.
@ -41,6 +45,7 @@ class LoadClientsJob extends JobImpl {
private final Context mCtx;
private final Notifications _notif;
private DaemonThread _addressbook;
public SAMBridge SAM_BRIDGE;
//private BOB _bob;
/** this is the delay to load (and start) the clients. */
@ -57,8 +62,9 @@ class LoadClientsJob extends JobImpl {
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);
@ -69,7 +75,15 @@ class LoadClientsJob extends JobImpl {
//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());
}
@ -82,12 +96,13 @@ class LoadClientsJob extends JobImpl {
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());
@ -112,6 +127,46 @@ 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");
SAM_BRIDGE = new SAMBridge("127.0.0.1",
7656,
false,
SAM_PROPERTIES(),
"sam.keys",
new File("sam_config"));
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");
@ -120,6 +175,8 @@ class LoadClientsJob extends JobImpl {
// NewsFetcher registers its own hook
//if (_bob != null)
// _bob.shutdown(null);
if (SAM_BRIDGE != null)
SAM_BRIDGE.shutdown(null);
if (_addressbook != null)
_addressbook.halt();
}

View File

@ -6,6 +6,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.os.Build;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
@ -168,10 +169,18 @@ 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) {
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;
}
@ -795,12 +804,12 @@ public class RouterService extends Service {
}
/**
* @return success
* Saves state in background thread
*/
private boolean saveState() {
private void saveState() {
SharedPreferences prefs = getSharedPreferences(SHARED_PREFS, 0);
SharedPreferences.Editor edit = prefs.edit();
edit.putString(LAST_STATE, _state.toString());
return edit.commit();
edit.apply();
}
}

View File

@ -1,11 +1,15 @@
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;
@ -16,6 +20,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,25 +35,33 @@ 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 = new NotificationCompat.Builder(ctx)
.setContentText(text)
.setSmallIcon(icon)
.setColor(mCtx.getResources().getColor(R.color.primary_light))
.setOngoing(true)
.setOnlyAlertOnce(true);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
mNotifyBuilder = new NotificationCompat.Builder(mCtx);
} else {
mNotifyBuilder = new NotificationCompat.Builder(mCtx, NOTIFICATION_CHANNEL_ID);
}
Intent intent = new Intent(ctx, I2PActivity.class);
mNotifyBuilder.setContentText(text);
mNotifyBuilder.setSmallIcon(icon);
mNotifyBuilder.setColor(mCtx.getResources().getColor(R.color.primary_light));
mNotifyBuilder.setOngoing(true);
mNotifyBuilder.setPriority(NotificationManager.IMPORTANCE_LOW);
mNotifyBuilder.setCategory(Notification.CATEGORY_SERVICE);
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);
PendingIntent pi = PendingIntent.getActivity(mCtx, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
mNotifyBuilder.setContentIntent(pi);
}
@ -74,6 +89,12 @@ class StatusBar {
public void update(String title, String text) {
mNotifyBuilder.setContentTitle(title)
.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

@ -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,13 +29,26 @@ 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);

View File

@ -0,0 +1,13 @@
<html>
<head></head>
<body>
<h2>How to configure IceRaven for Android:</h2>
<h3>Configuration via Webextension</h3>
<ol>
<li>Open IceRaven and click the main menu. Scroll to the top, and tap the "Add-Ons" submenu.</li>
<li>Tap on the "Add-Ons Manager" option.</li>
<li>Find the "I2P Proxy for Android and Other" extension in the Add-Ons collection and tap on the <code>+</code> symbol</li>
<li>You can now browse I2P Sites!</li>
</ol>
</body>
</html>

View File

@ -24,8 +24,7 @@
<li>Tap "Update"</li>
<li>You can now browse I2P eepsites!</li>
</ol>
<h3>Experimental Rootless Configuration via Webextension</h3>
<strong><p>Use at your own risk</p></strong>
<h3>Rootless Configuration via Webextension</h3>
<ol>
<li>Open this link in GNU IceCat and get the WebExtension from <a href="https://github.com/eyedeekay/i2psetproxy.js/releases">Github</a></li>
<li>Click through the "Blocked Extension" warning</li>

View File

@ -24,8 +24,7 @@
<li>Tap "Update"</li>
<li>You can now browse I2P eepsites!</li>
</ol>
<h3>Experimental Rootless Configuration via Webextension</h3>
<strong><p>Use at your own risk</p></strong>
<h3>Rootless Configuration via Webextension</h3>
<ol>
<li>Open this link in Fennec and get the WebExtension from <a href="https://github.com/eyedeekay/i2psetproxy.js/releases">Github</a></li>
<li>Click through the "Blocked Extension" warning</li>

View File

@ -24,8 +24,7 @@
<li>Tap "Update"</li>
<li>You can now browse I2P eepsites!</li>
</ol>
<h3>Experimental Rootless Configuration via Webextension</h3>
<strong><p>Use at your own risk</p></strong>
<h3>Rootless Configuration via Webextension</h3>
<ol>
<li>Open this link in Firefox and get the WebExtension from <a href="https://github.com/eyedeekay/i2psetproxy.js/releases">Github</a></li>
<li>Click through the "Blocked Extension" warning</li>

View File

@ -8,7 +8,7 @@ tunnel.0.type=httpclient
tunnel.0.sharedClient=false
tunnel.0.interface=127.0.0.1
tunnel.0.listenPort=4444
tunnel.0.proxyList=false.i2p,blue.proxynet.i2p
tunnel.0.proxyList=false.i2p
tunnel.0.i2cpHost=127.0.0.1
tunnel.0.i2cpPort=7654
tunnel.0.option.inbound.nickname=I2P HTTP Proxy
@ -18,7 +18,7 @@ tunnel.0.option.i2cp.reduceIdleTime=600000
tunnel.0.option.i2cp.reduceOnIdle=true
tunnel.0.option.i2cp.reduceQuantity=1
tunnel.0.option.i2p.streaming.connectDelay=1000
tunnel.0.option.i2ptunnel.httpclient.SSLOutproxies=false.i2p,blue.proxynet.i2p
tunnel.0.option.i2ptunnel.httpclient.SSLOutproxies=false.i2p
tunnel.0.option.inbound.length=2
tunnel.0.option.inbound.lengthVariance=0
tunnel.0.option.outbound.length=2
@ -33,7 +33,7 @@ tunnel.1.type=ircclient
tunnel.1.sharedClient=true
tunnel.1.interface=127.0.0.1
tunnel.1.listenPort=6668
tunnel.1.targetDestination=irc.dg.i2p:6667,irc.postman.i2p:6667,irc.echelon.i2p:6667
tunnel.1.targetDestination=irc.postman.i2p:6667,irc.echelon.i2p:6667
tunnel.1.i2cpHost=127.0.0.1
tunnel.1.i2cpPort=7654
tunnel.1.option.inbound.nickname=shared clients
@ -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

@ -53,6 +53,10 @@ i2np.bandwidth.outboundKBytesPerSecond=50
i2np.ntcp.enable=true
i2np.ntcp.maxConnections=32
#
# NTCP2
#
i2np.ntcp2.enable=true
#
# UDP
#
i2np.udp.enable=true

View File

@ -1,3 +1,2 @@
http://i2p-projekt.i2p/hosts.txt
http://i2host.i2p/cgi-bin/i2hostetag
http://stats.i2p/cgi-bin/newhosts.txt

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,13 @@ 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>
<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 +94,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,23 +140,19 @@ 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
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://zzz.i2p/" target="_blank">zzz'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
@ -188,6 +175,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

@ -64,10 +64,12 @@
<string name="settings_label_advanced">متقدم</string>
<string name="settings_label_transports">نقل</string>
<string name="settings_label_expl_length">الطول</string>
<string name="settings_summ_expl_lengthVariance">نسبة %s</string>
<string name="settings_label_expl_quantity">الكمية</string>
<string name="settings_label_expl_backupQuantity">قدر نسخ الاحتياط</string>
<string name="menu_about">حول</string>
<string name="about_version">الإصدار:</string>
<string name="about_project">مركز المشروع:</string>
<string name="menu_help">المساعدة</string>
<string name="general">عام</string>
<string name="addressbook_add_wizard_k_name">الاسم</string>
@ -105,9 +107,11 @@
<string name="outproxies">بروكسي خارجي</string>
<string name="use_ssl">استعمل SSL</string>
<string name="profile">بروفايل</string>
<string name="access_control">سيطرة الوصول</string>
<string name="disabled">معطل</string>
<string name="whitelist">قائمة بيضاء</string>
<string name="blacklist">قائمة سوداء</string>
<string name="unlimited">غير محدود</string>
<string name="tunnel_summ_delay_open">عطل النفق حتى الحاجة اليه</string>
<string name="tunnel_summ_reduce_quantity">قلل قدر الأنفاق عند الانتظار</string>
<string name="num_minutes">%sدقائق </string>
@ -115,6 +119,8 @@
<string name="http_client">HTTP client</string>
<string name="username">اسم المستخدم</string>
<string name="password">كلمة السر</string>
<string name="other">أخرى</string>
<string name="custom_options">خيارات خاصة</string>
<string name="all">الكل</string>
<string name="no_messages">لا رسائل</string>
</resources>

View File

@ -213,8 +213,10 @@
<string name="http_client">Client HTTP</string>
<string name="username">Nom d\'usuari</string>
<string name="password">Contrasenya</string>
<string name="other">Altres</string>
<string name="signature_type">Tipus de signatura</string>
<string name="custom_options">Opcions personalitzades</string>
<string name="all">Tots</string>
<string name="no_messages">Sense missatges</string>
<string name="copy_logs">Copia registres</string>
<string name="i2p_android_error_logs">Registres d\'error d\'I2P Android</string>

View File

@ -6,6 +6,7 @@
<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_addresses">Adresy</string>
<string name="label_addressbook">Adresář</string>
<string name="label_i2ptunnel_client">Tunely klienta</string>
<string name="label_i2ptunnel_server">Tunely serveru</string>
@ -62,6 +63,7 @@
<string name="settings_default">Výchozí</string>
<string name="settings_label_advanced">Pokročilé</string>
<string name="settings_label_expl_length">Délka</string>
<string name="settings_summ_expl_lengthVariance">%s</string>
<string name="menu_about">O programu</string>
<string name="about_version">Version:</string>
<string name="menu_help">Pomoc</string>
@ -92,12 +94,14 @@
<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_view_target">Cíl</string>
<string name="name">Jméno</string>
<string name="description">Popis</string>
<string name="outproxies">Výstupní proxy (Outproxies)</string>
<string name="use_ssl">Použít SSL</string>
<string name="access_control">Řízení přístupu</string>
<string name="disabled">Vypnuto</string>
<string name="whitelist">Seznam povolených (whitelist)</string>
<string name="blacklist">Seznam zakázaných (blacklist)</string>
@ -105,5 +109,6 @@
<string name="username">Uživatelské jméno</string>
<string name="password">Heslo</string>
<string name="other">Další</string>
<string name="all">Vše</string>
<string name="no_messages">Žádné zprávy</string>
</resources>

View File

@ -4,6 +4,7 @@
<string name="label_status">Status</string>
<string name="label_addressbook">Adressebog</string>
<string name="label_logs">Logs</string>
<string name="label_news">Nyheder</string>
<string name="label_peers_status">Peers</string>
<string name="label_release_notes">Udgivelsesnoter</string>
<string name="label_browse">Brows</string>
@ -26,6 +27,7 @@
<string name="action_delete">Slet</string>
<string name="action_reload">Genindlæs</string>
<string name="action_refresh">Genopfrisk</string>
<string name="statistics">Statistik</string>
<string name="routers">Routere</string>
<string name="leasesets">LeaseSets</string>
<string name="country">Land</string>
@ -82,6 +84,7 @@
<string name="name">Navn</string>
<string name="description">Beskrivelse</string>
<string name="use_ssl">Brug SSL</string>
<string name="access_control">Adgangskontrol</string>
<string name="disabled">Deaktiveret</string>
<string name="http_client">HTTP klient</string>
<string name="username">Brugernavn</string>

View File

@ -55,6 +55,8 @@
<string name="upload">Hochladen</string>
<string name="configure_browser_title">Browser konfigurieren?</string>
<string name="configure_browser_for_i2p">Möchten Sie einen Browser zum Betrachten von I2P-Seiten einrichten? (Sie können dieses auch später noch im Hilfe-Menü erledigen).</string>
<string name="configure_no_doze_title">Batterie Optimierung managen?</string>
<string name="configure_no_doze">I2P funktioniert am besten, wenn es dauerhaft läuft. Um Android davon abzuhalten, I2P zu schließen, um Energie zu sparen, solltest du es zur Ausnahmeliste der Energiesparfunktionen hinzufügen. Dies sollte die Zuverlässigkeit des Programms \n\nKeep I2P massgeblich verbessern (empfohlen).</string>
<string name="first_start_title">Herzlichen Glückwunsch, Sie haben I2P installiert!</string>
<string name="first_start_welcome"><b>Willkommen im I2P</b> Bitte <b>haben Sie Geduld</b>, während I2P startet und Teilnehmer findet.</string>
<string name="first_start_read">Lesen Sie bitte die Veröffentlichungshinweise und die Startseite während Sie warten.</string>

View File

@ -21,6 +21,7 @@
<string name="symmetric_nat">Συμμετρικό NAT</string>
<!--Parameter is a time, e.g. 32s or 2m-->
<string name="net_status_info_disconnected">Αποσυνδέθηκε-ελένξετε την σύνδεση Δικτύου</string>
<string name="uptime">Χρόνος λειτουργίας δικτύου</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".-->
@ -50,6 +51,7 @@
<string name="transport">Transport</string>
<string name="versions">Εκδόσεις</string>
<string name="version">Εκδοση</string>
<string name="count">Υπολογισμός</string>
<string name="tname_0">Κρυμμένο κατά την εκκίνηση</string>
<string name="menu_settings">Ρυθμίσεις</string>
<string name="settings_enable">Ενεργοποίηση </string>
@ -66,6 +68,7 @@
<string name="settings_label_expl_quantity">Ποσότητα</string>
<string name="menu_about">Σχετικά με</string>
<string name="about_version">Έκδοση</string>
<string name="about_project">Project Home:</string>
<string name="menu_help">Βοήθεια</string>
<string name="general">Γενικά</string>
<string name="addressbook_add_wizard_k_name">Όνομα</string>
@ -79,17 +82,21 @@
<string name="next">Επόμενο</string>
<string name="prev">Προηγούμενο</string>
<string name="finish">Υποβολή</string>
<string name="review">Ανασκόπηση</string>
<string name="enabled">Ενεργοποιημένο</string>
<string name="i2ptunnel_view_target">Στόχος</string>
<string name="name">Όνομα</string>
<string name="description">Περιγραφή</string>
<string name="use_ssl">Χρήση SSL</string>
<string name="profile">Προφίλ</string>
<string name="access_control">Έλεγχος πρόσβασης</string>
<string name="disabled">Απενεργοποιημένο</string>
<string name="whitelist">Λίστα Επιτρεπόμενων</string>
<string name="unlimited">Απεριόριστο</string>
<string name="username">Όνομα χρήστη</string>
<string name="password">Κωδικός</string>
<string name="other">Άλλ</string>
<string name="all">Όλοι</string>
<string name="no_messages">Κανένα μήνυμα</string>
<string name="logs_copied_to_clipboard">Τα αρχεία καταγραφής αντιγράφηκαν στο πρόχειρο</string>
</resources>

View File

@ -55,6 +55,8 @@
<string name="upload">Subida</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>
@ -145,6 +147,7 @@
<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_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>

View File

@ -189,6 +189,7 @@
<string name="tunnel_summ_use_ssl">استفاده از SSL برای اتصال به هدف</string>
<string name="tunnel_parameters">پارامتر های تونل</string>
<string name="profile">پروفایل</string>
<string name="access_control">کنترل دسترسی</string>
<string name="restricted_access">دسترسی محدود</string>
<string name="disabled">غیر فعال شد</string>
<string name="whitelist">لیست سفید</string>

View File

@ -213,6 +213,7 @@
<string name="use_ssl">Käytä SSL:ää</string>
<string name="tunnel_parameters">Tunneliparametrit</string>
<string name="profile">Profiili</string>
<string name="access_control">Käyttöoikeuksien hallinta</string>
<string name="disabled">Otettu pois käytöstä</string>
<string name="whitelist">Valkoinen lista</string>
<string name="blacklist">Musta lista</string>

View File

@ -25,7 +25,7 @@
<string name="button_router_graceful">I2P se fermera dans %s</string>
<string name="button_shutdown_now">Appuyer longuement pour arrêter maintenant</string>
<string name="button_cancel_graceful">Appuyer longuement pour annuler la fermeture</string>
<string name="no_internet">Aucune connexion Internet nest disponible</string>
<string name="no_internet">Aucune connexion à Internet nest disponible</string>
<string name="hidden">caché</string>
<string name="testing">en test</string>
<string name="firewalled">derrière un pare-feu</string>
@ -54,7 +54,9 @@
<string name="download">Téléchargement</string>
<string name="upload">Téléversement</string>
<string name="configure_browser_title">Configurer le navigateur?</string>
<string name="configure_browser_for_i2p">Souhaitez-vous configurer un navigateur pour visualiser les sites I2P? (Vous pouvez aussi le faire plus tard grâce au menu daide.)</string>
<string name="configure_browser_for_i2p">Voulez-vous configurer un navigateur pour visualiser les sites I2P? (Vous pouvez aussi le faire plus tard grâce au menu daide.)</string>
<string name="configure_no_doze_title">Gérer les optimisations de la pile?</string>
<string name="configure_no_doze">I2P fonctionne mieux sil fonctionne en permanence. Pour empêcher quAndroid ferme I2P quand il essaie déconomiser lénergie, vous pouvez ajouter I2P à la liste dexception de la pile. La fiabilité de lappli sen trouvera grandement améliorée.\n\nGarder I2P en fonction en arrière-plan? (recommandé)</string>
<string name="first_start_title">Félicitations pour votre installation dI2P!</string>
<string name="first_start_welcome"><b>Bienvenue sur I2P!</b> Veuillez <b>patienter</b> pendant quI2P samorce et trouve des pairs.</string>
<string name="first_start_read">Pendant que vous patientez, veuillez consulter les notes de mise à jour et la page daccueil.</string>
@ -80,11 +82,11 @@
<string name="view_news">Toucher pour voir les dernières nouvelles dI2P</string>
<string name="router_not_running">Le routeur ne fonctionne pas.</string>
<string name="router_shutting_down">Le routeur séteint.</string>
<string name="stats_not_ready">Le gestionnaire de statistiques nest pas encore prêt. Ressayer ultérieurement.</string>
<string name="stats_not_ready">Le gestionnaire de statistiques nest pas encore prêt. Réessayer plus tard.</string>
<string name="select_an_address">Sélectionner une adresse.</string>
<string name="no_graphs_configured">Aucun graphique na été configuré. Vous pouvez choisir les statistiques à graphiquer dans le menu des paramètres. Tout changement prendra effet après 60 secondes.</string>
<string name="configure_graphs">Configurer les graphiques</string>
<string name="graphs_not_ready">Les graphiques ne sont pas encore prêts. Ressayer ultérieurement.</string>
<string name="graphs_not_ready">Les graphiques ne sont pas encore prêts. Réessayer plus tard.</string>
<string name="statistics">Statistiques</string>
<string name="routers">Routeurs</string>
<string name="leasesets">Jeux de baux</string>
@ -169,8 +171,8 @@
<string name="about_project">Page daccueil du projet :</string>
<string name="about_bugs">Bogues et assistance :</string>
<string name="about_helpwanted">Aide recherchée!</string>
<string name="about_volunteer">Souhaitez-vous aider à améliorer lappli? Portez-vous volontaire sur le forum Android :</string>
<string name="about_donate">Souhaitez-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_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="menu_help">Aide</string>
<string name="general">Général</string>
<string name="label_router">Adresses publiques</string>
@ -181,11 +183,11 @@
<string name="addressbook_add_wizard_k_destination">Destination</string>
<string name="addressbook_add_wizard_desc_name">Le nom</string>
<string name="addressbook_add_wizard_desc_destination">Coller ici le Base64 de la destination. Si avez un gestionnaire de fichiers dinstallé, vous pouvez chercher un fichier texte contenant le Base64.</string>
<string name="nsu_iae_illegal_char">Le nom dhôte « %1$s » contient le caractère illégal %2$s</string>
<string name="nsu_iae_cannot_start_with">Le nom dhôte ne peut pas commencer par « %s »</string>
<string name="nsu_iae_cannot_end_with">Le nom dhôte ne peut pas se terminer par « %s »</string>
<string name="nsu_iae_cannot_contain">Le nom dhôte ne peut pas contenir « %s »</string>
<string name="nsu_iae_requires_conversion">Le nom dhôte « %s » exige une conversion en ASCII, mais la bibliothèque de conversion nest pas proposée dans cette version dAndroid</string>
<string name="nsu_iae_illegal_char">Le nom dhôte « %1$s » contient le caractère illégal %2$s</string>
<string name="nsu_iae_cannot_start_with">Le nom dhôte ne peut pas commencer par « %s »</string>
<string name="nsu_iae_cannot_end_with">Le nom dhôte ne peut pas se terminer par « %s »</string>
<string name="nsu_iae_cannot_contain">Le nom dhôte ne peut pas contenir « %s »</string>
<string name="nsu_iae_requires_conversion">Le nom dhôte « %s » exige une conversion en ASCII, mais la bibliothèque de conversion nest pas proposée dans cette version dAndroid</string>
<string name="i2ptunnel_type_client">Client normal</string>
<string name="i2ptunnel_type_httpclient">Client HTTP</string>
<string name="i2ptunnel_type_ircclient">Client IRC</string>
@ -199,7 +201,7 @@
<string name="i2ptunnel_type_streamrserver">Serveur Streamr</string>
<string name="i2ptunnel_type_httpbidirserver">Bidir HTTP</string>
<string name="install_recommended_app">Installer lappli recommandée?</string>
<string name="app_needed_for_this_tunnel_type">Vous devez installer une appli pour utiliser ce tunnel. Souhaitez-vous installer lappli recommandée?</string>
<string name="app_needed_for_this_tunnel_type">Vous devez installer une appli pour utiliser ce tunnel. Voulez-vous installer lappli recommandée?</string>
<string name="i2ptunnel_not_initialized">Les tunnels ne sont pas encore initialisés, veuillez recharger dans deux minutes.</string>
<string name="no_configured_client_tunnels">Aucun tunnel client nest configuré.</string>
<string name="no_configured_server_tunnels">Aucun tunnel serveur nest configuré.</string>
@ -277,7 +279,7 @@
<string name="profile_interactive">Connexion interactive</string>
<string name="delay_connect">Retarder la connexion</string>
<string name="tunnel_summ_delay_connect">Activer les connexions pour requêtes et réponses</string>
<string name="access_control">Contrôle des accès</string>
<string name="access_control">Contrôle de laccès</string>
<string name="restricted_access">Accès restreint</string>
<string name="disabled">Désactivé</string>
<string name="whitelist">Liste blanche</string>

View File

@ -36,9 +36,13 @@
<string name="net_status_error_unresolved_tcp">Feloldhatatlan TCP cím</string>
<string name="net_status_error_private_tcp">Privát TCP cím</string>
<string name="net_status_warn_firewalled_inbound_tcp">Tűzfal mögött és bejövő TCP engedélyezve</string>
<string name="net_status_warn_firewalled_floodfill">Tűzfal mögött és floodfill</string>
<string name="net_status_info_disconnected">Szétkapcsolva - ellenőrizze a hálózati kapcsolatot</string>
<string name="net_status_error_udp_port">UDP port már használatban - változtassa meg a beállításokban és indítsa újra</string>
<string name="net_status_error_no_active_peers">Nincsenek aktív peerek - ellenőrizze a hálózati kapcsolatot és a tűzfalat</string>
<string name="net_status_error_udp_disabled_tcp_not_set">UDP letiltva és a bejövő TCP hoszt/port nincs beállítva</string>
<string name="net_status_warn_firewalled_udp_disabled">Tűzfal mögött letiltott UDP-vel</string>
<string name="shared_clients">Megosztott kliensek</string>
<string name="uptime">Indítás óta eltelt idő</string>
<string name="active_peers">Aktív peerek</string>
<string name="known_peers">Ismert peerek</string>
@ -53,6 +57,7 @@
<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="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>
<string name="first_start_faq">Kérjük, hogy miután már vannak kliens-alagútjai <b>tekintse meg</b> a GYIK-et is:</string>
<string name="first_start_faq_nonanon">Vagy használja ezt a nem-anonim hivatkozást ha nem akar várakozni az alagutakra:</string>
<string name="action_search">Keresés</string>
@ -66,7 +71,10 @@
<string name="action_i2ptunnel_restart_all">Összes alagút újraindítása</string>
<string name="action_reload">Újratöltés</string>
<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="router_shutting_down">A router bezárása folyamatban.</string>
<string name="statistics">Statisztikák</string>
<string name="routers">Routerek</string>
<string name="leasesets">LeaseSet-ek</string>
<string name="country">Ország</string>
@ -112,6 +120,7 @@
<string name="settings_desc_expl_backupQuantity">Mennyi tartalék alagút</string>
<string name="menu_about">Névjegy</string>
<string name="about_version">Verzió:</string>
<string name="about_project">A projekt honlapja:</string>
<string name="menu_help">Segítség</string>
<string name="general">Általános</string>
<string name="addressbook_add_wizard_k_name">Név</string>
@ -182,11 +191,14 @@
<string name="blacklist">Tiltott-Lista</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 minőség</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="username">Felhasználónév</string>
<string name="password">Jelszó</string>
<string name="other">Egyéb</string>
<string name="custom_options">Egyéni beállítások</string>
<string name="all">Összes</string>
<string name="no_messages">Nincs üzenet</string>
</resources>

View File

@ -55,6 +55,8 @@
<string name="upload">Wysyłanie</string>
<string name="configure_browser_title">Konfigurować przeglądarkę?</string>
<string name="configure_browser_for_i2p">Czy chciałbyś skonfigurować przeglądarkę, aby przeglądać strony I2P? (Możesz to zrobić później w wybierająć pomoc z menu.)</string>
<string name="configure_no_doze_title">Czy wyłączyć optymalizację baterii?</string>
<string name="configure_no_doze">Aplikacja I2P działa najlepiej gdy działa bez przerwy. Aby system Android nie usypiał aplikacji I2P w celu oszczędzania energii, należy dodać ją do listy wyjątków. Znacząco większy to niezawodność aplikacji.\n\nCzy pozwolić aplikacji I2P działać w tle? (zalecane)</string>
<string name="first_start_title">Gratulacje, zainstalowałeś I2P!</string>
<string name="first_start_welcome"><b>Witamy w I2P!</b> Proszę <b>bądz cierpliwy</b> bo I2P właśnie się uruchamia i szuka peerów.</string>
<string name="first_start_read">W międzyczasie, prosimy o zapoznanie się z notatkami tego wydania oraz stroną powitalną.</string>
@ -145,6 +147,7 @@
<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>

View File

@ -30,9 +30,17 @@
<string name="testing">Testare</string>
<string name="firewalled">Cu Firewall</string>
<string name="symmetric_nat">NAT simetric</string>
<string name="net_status_error_i2cp">Eroare manager I2CP client - verificare jurnalele</string>
<!--Parameter is a time, e.g. 32s or 2m-->
<string name="net_status_error_skew">Decalarea ceasului %s</string>
<string name="net_status_error_unresolved_tcp">Adresa TCP nerezolvată</string>
<string name="net_status_error_private_tcp">Adrese TCP private</string>
<string name="net_status_warn_firewalled_inbound_tcp">Firewalled cu TCP de intrare activat</string>
<string name="net_status_warn_firewalled_floodfill">Firewalled și inundare</string>
<string name="net_status_info_disconnected">Deconectat - verificați conexiunea la rețea</string>
<string name="net_status_error_udp_port">Port UDP în utilizare - schimbare în setări și repornire</string>
<string name="net_status_error_no_active_peers">Fără colegi activi - verificați conexiunea de rețea și firewallul</string>
<string name="net_status_error_udp_disabled_tcp_not_set">UDP dezactivat și gazdă / port TCP de intrare nu este setat</string>
<string name="net_status_warn_firewalled_udp_disabled">Cu Firewall și UDP dezactivat</string>
<string name="shared_clients">Clienți partajați</string>
<string name="uptime">Timpul de funcționare</string>
@ -47,9 +55,14 @@
<string name="upload">Încărcare</string>
<string name="configure_browser_title">Configurați navigatorul web?</string>
<string name="configure_browser_for_i2p">Doriți să configurați un navigator web să vizualizați site-uri I2P? (Puteți face acest lucru mai târziu din meniul ajutor.)</string>
<string name="configure_no_doze_title">Gestionarea optimizării bateriei?</string>
<string name="configure_no_doze">I2P funcționează cel mai bine dacă continuă să funcționeze. Pentru a împiedica Android să închidă I2P atunci când încercați să economisiți energie, îl puteți adăuga pe lista de excepții de la baterie. Acest lucru va îmbunătăți în mod substanțial fiabilitatea aplicației. \n\n I2P care rulează în fundal? (recomandat)</string>
<string name="first_start_title">Felicitari pentru instalarea I2P!</string>
<string name="first_start_welcome"><b>Bine ați venit la I2P!</b> Vă rugăm <b>să aveți răbdare</b> în timp ce I2P se lansează și găsește colegii.</string>
<string name="first_start_read">Cât timp așteptați, citiți notele de lansare și pagina de bun venit.</string>
<string name="first_start_faq">După ce aveți tuneluri pentru clienți, <b>consultați</b> întrebările noastre frecvente:</string>
<string name="first_start_faq_nonanon">Sau utilizați acest link ne-anonim dacă nu doriți să așteptați pentru tuneluri:</string>
<string name="first_start_irc">Indicați-vă clientul IRC către <b>localhost:6668</b> și spuneți-ne salut la:</string>
<string name="action_search">Cauta</string>
<string name="action_add">Adaugă</string>
<string name="action_edit">Editeaza</string>
@ -63,12 +76,17 @@
<string name="action_refresh">Reâmprospătează</string>
<string name="hint_search_addressbook">Caută agenda</string>
<string name="action_reload_subscriptions">Reâncarcă abonamentele</string>
<string name="news_last_updated">Știri actualizate ultima dată %s în urmă</string>
<string name="news_last_checked">Știri verificate ultima dată %s în urmă</string>
<string name="news_updated">Știri actualizate</string>
<string name="view_news">Atinge pentru a vizualiza ultimele știri I2P</string>
<string name="router_not_running">Ruterul nu rulează.</string>
<string name="router_shutting_down">Ruterul este închis.</string>
<string name="stats_not_ready">Managerul de statistici nu este încă pregătit. Încercați mai târziu.</string>
<string name="select_an_address">Selectați o adresă.</string>
<string name="no_graphs_configured">Nu au fost configurate grafice. Puteți alege statistici pentru a grafica în meniul de setări. Orice modificare va avea efect după 60 de secunde.</string>
<string name="configure_graphs">Configurează graficele</string>
<string name="graphs_not_ready">Graficele nu sunt încă pregătite. Încercați mai târziu.</string>
<string name="statistics">Statistici</string>
<string name="routers">Rutere</string>
<string name="leasesets">LeaseSets</string>
@ -80,17 +98,29 @@
<string name="count">Număr</string>
<string name="tname_0">Ascuns sau pentru pornire</string>
<string name="netdb_routers_empty">Nu sunt rutere în NetDB.</string>
<string name="netdb_leases_empty">Fără seturi de leasing în NetDB.</string>
<string name="notification_status_starting">I2P este pornit</string>
<string name="notification_status_restarting">I2P repornește</string>
<string name="notification_status_waiting">I2P așteaptă pentru o conexiune la rețea</string>
<string name="notification_status_starting_after_waiting">Conectat la rețea, I2P se porneste</string>
<string name="notification_status_running">I2P rulează</string>
<string name="notification_status_client_ready">Tunelurile clienților sunt gata</string>
<string name="notification_status_client_down">Tunelurile clienților nu lucreaza</string>
<string name="notification_status_graceful">Oprirea I2P în %s</string>
<string name="notification_status_stopping">Oprirea I2P</string>
<string name="notification_status_stopping_after_net">Rețea deconectată, oprind I2P</string>
<string name="notification_status_shutdown_cancelled">Oprirea anulată</string>
<string name="notification_status_shutting_down">I2P se oprește</string>
<string name="notification_status_bw">Lățime de bandă: %1$sBps desc / %2$sBps în</string>
<string name="notification_status_peers">Parteneri: %1$d activi, %2$d cunoscuți</string>
<string name="notification_status_expl">Tunele exploratorii: %1$d / %2$d</string>
<string name="notification_status_client">Tuneluri pentru clienți: %1$d/%2$d</string>
<string name="menu_settings">Configurări</string>
<string name="settings_enable">Activează</string>
<string name="settings_desc_subscriptions">URLs de abonare:</string>
<string name="settings_label_bandwidth_net">Lățime de bandă și rețea</string>
<string name="settings_label_startOnBoot">Porniți I2P la bootare </string>
<string name="settings_desc_startOnBoot">Conectați-vă automat la I2P la pornirea dispozitivului Android</string>
<string name="settings_label_bandwidth">Lățime de bandă</string>
<string name="settings_label_bw_inbound">viteza de intrare</string>
<string name="settings_desc_bw_inbound">Viteza maximă de încărcare:</string>
@ -113,14 +143,17 @@
<string name="settings_default">Implicit</string>
<string name="settings_label_advanced">Avansat</string>
<string name="settings_label_showStats">Statistici ruter</string>
<string name="settings_summ_showStats">Afișează statistici avansate în consola principală</string>
<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>
<string name="settings_label_expl_outbound">Tunele de iesire</string>
<string name="settings_label_expl_length">Lungime</string>
<string name="settings_summ_expl_length">%shamei</string>
<string name="settings_desc_expl_length">Cât de multe hamei să utilizeze</string>
<string name="settings_label_expl_lengthVariance">variație hamei</string>
<string name="settings_summ_expl_lengthVariance">%s</string>
@ -131,9 +164,11 @@
<string name="settings_label_expl_backupQuantity">Cantitatea de rezervă</string>
<string name="settings_summ_expl_backupQuantity">%s tuneluri</string>
<string name="settings_desc_expl_backupQuantity">Câți copii de rezervă tunel</string>
<string name="settings_need_transport_enabled">Trebuie să aveți cel puțin un transport activat</string>
<string name="settings_router_restart_required">Reporniți I2P pentru aplicarea modificărilor</string>
<string name="menu_about">Despre</string>
<string name="about_version">Versiune:</string>
<string name="about_project">Proiect Acasă:</string>
<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>
@ -147,6 +182,7 @@
<string name="addressbook_add_wizard_k_name">Nume</string>
<string name="addressbook_add_wizard_k_destination">Destinatie</string>
<string name="addressbook_add_wizard_desc_name">Numele</string>
<string name="addressbook_add_wizard_desc_destination">Lipiți B64 din destinație aici. Dacă aveți un Manager de fișiere instalat, puteți căuta un fișier text care conține B64.</string>
<string name="nsu_iae_illegal_char">Numele gazdă \"%1$s\" conține caractere ilegale %2$s</string>
<string name="nsu_iae_cannot_start_with">Numele gazdă nu poate începe cu \"%s\"</string>
<string name="nsu_iae_cannot_end_with">Numele gazdă nu se poate termina cu \"%s\"</string>
@ -165,7 +201,10 @@
<string name="i2ptunnel_type_streamrserver">Server streamr</string>
<string name="i2ptunnel_type_httpbidirserver">HTTP bidir</string>
<string name="install_recommended_app">Se instalează aplicația recomandată?</string>
<string name="app_needed_for_this_tunnel_type">Trebuie să instalați o aplicație pentru a utiliza acest tunel. Doriți să instalați aplicația recomandată?</string>
<string name="i2ptunnel_not_initialized">Tuneluri încă nu sunt inițializate , vă rugăm să reîncărcați în două minute.</string>
<string name="no_configured_client_tunnels">Nu există tuneluri de client configurate.</string>
<string name="no_configured_server_tunnels">Nu există tuneluri de server configurate.</string>
<string name="i2ptunnel_new_tunnel">Tunel nou</string>
<string name="i2ptunnel_msg_config_saved">Modificările configurării s-au salvat</string>
<string name="i2ptunnel_msg_config_save_failed">A eșuat salvarea configurării</string>
@ -173,7 +212,10 @@
<string name="i2ptunnel_msg_tunnel_stopping">Se oprește tunelul</string>
<string name="i2ptunnel_delete_confirm_message">Se șterge tunelul?</string>
<string name="i2ptunnel_delete_confirm_button">Șterge tunelul</string>
<string name="i2ptunnel_no_tunnel_details">Nu s-a putut încărca detaliile tunelului</string>
<string name="i2ptunnel_wizard_k_client_server">Client sau server</string>
<string name="i2ptunnel_wizard_v_client">Tunelul clientului</string>
<string name="i2ptunnel_wizard_v_server">Tunelul serverului</string>
<string name="i2ptunnel_wizard_k_type">Tip tunel</string>
<string name="i2ptunnel_wizard_k_name">Nume</string>
<string name="i2ptunnel_wizard_k_desc">Descriere</string>
@ -181,22 +223,29 @@
<string name="i2ptunnel_wizard_k_outproxies">Outproxy</string>
<string name="i2ptunnel_wizard_k_target_host">Gazda tinta</string>
<string name="i2ptunnel_wizard_k_target_port">Port tinta</string>
<string name="i2ptunnel_wizard_k_reachable_on">Accesibil pe</string>
<string name="i2ptunnel_wizard_k_binding_port">Port de legare</string>
<string name="i2ptunnel_wizard_k_auto_start">Auto pornire</string>
<string name="next">Urmatorul</string>
<string name="prev">Anteriorul</string>
<string name="finish">Trimite</string>
<string name="review">Revizuire</string>
<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>
<string name="i2ptunnel_wizard_desc_reachable_on">Aceasta limitează ce computere sau smartphone-uri pot accesa acest tunel.</string>
<string name="i2ptunnel_wizard_desc_binding_port">Acesta este portul la care tunelul client va fi accesat local. Acesta este și portul client pentru tunelul serverului bidir HTTP.</string>
<string name="i2ptunnel_wizard_desc_auto_start">Ar trebui ca tunelul să pornească automat când ruterul pornește?</string>
<string name="i2ptunnel_wizard_submit_confirm_message">Se creează tunelul?</string>
<string name="i2ptunnel_wizard_submit_confirm_button">Creare tunel</string>
<string name="i2ptunnel_view_target">Țintă</string>
<string name="i2ptunnel_view_access_point">Punct de acces</string>
<string name="i2ptunnel_view_autostart">Auto pornire</string>
<string name="address_copied_to_clipboard">Adresa copiată în clipboard</string>
<string name="edit_tunnel">Editare tunel</string>
<string name="name">Nume</string>
<string name="description">Descriere</string>
@ -204,54 +253,111 @@
<string name="tunnel_summ_auto_start">Pornește tunelul când pornește ruterul.</string>
<string name="tunnel_cat_ports">Porturi locale</string>
<string name="shared_client">Client partajat</string>
<string name="tunnel_summ_shared_client">Utilizați aceeași destinație și tuneluri ca și alți clienți partajați</string>
<string name="target_destination">Destinație țintă</string>
<string name="persistent_key">Cheie permanentă</string>
<string name="persistent_key_conflict_title">Dezactivați tastele noi la redeschidere?</string>
<string name="persistent_key_conflict_msg">Nu puteți activa cheile persistente în timp ce tunelul este configurat pentru a genera noi chei la redeschidere. Doriți să dezactivați tastele noi la redeschidere?</string>
<string name="tunnel_summ_persistent_key">Mențineți destinația acestui tunel atunci când repornește</string>
<string name="reachable_on">Accesibil pe</string>
<string name="listen_port">Asculta portul</string>
<string name="client_ssl">Client SSL</string>
<string name="tunnel_summ_client_ssl">Clienții trebuie să utilizeze SSL pentru conectare</string>
<string name="outproxies">Outproxy</string>
<string name="ssl_outproxies">Procesele SSL</string>
<string name="irc">IRC</string>
<string name="enable_dcc">Activează DCC</string>
<string name="tunnel_summ_enable_dcc">Permite clienților IRC să utilizeze DCC</string>
<string name="website_domain_name">Numele domeniului site-ului web</string>
<string name="target_host">Gazda tinta</string>
<string name="target_port">Port tinta</string>
<string name="use_ssl">Utilizează SSL</string>
<string name="tunnel_summ_use_ssl">Utilizează SSL pentru conectarea la țintă</string>
<string name="tunnel_parameters">Parametri tunel</string>
<string name="profile">Profil</string>
<string name="profile_bulk">Conexiune în masă (descărcări / site-uri web / BT)</string>
<string name="profile_interactive">Conexiune interactivă</string>
<string name="delay_connect">Întârziere conectare</string>
<string name="tunnel_summ_delay_connect">Activare pentru conexiuni cerere / răspuns</string>
<string name="access_control">Control acces</string>
<string name="restricted_access">Acces restricționat</string>
<string name="disabled">Dezactivat</string>
<string name="whitelist">Listă de excepții</string>
<string name="blacklist">Listă de blocare</string>
<string name="access_list">Listă de acces</string>
<string name="reject_inproxies">Respingeți inproxies</string>
<string name="tunnel_summ_reject_inproxies">Permiteți conectarea numai a utilizatorilor I2P</string>
<string name="unique_local">Local unic</string>
<string name="tunnel_summ_unique_local">Utilizați IP-urile localhost unice pentru fiecare client</string>
<string name="multihome">Multihome</string>
<string name="tunnel_summ_multihome">Activați optimizări multihoming</string>
<string name="client_connection_limits">Limitele de conectare la client</string>
<string name="connections_per_minute">Conexiuni pe minut</string>
<string name="connections_per_hour">Conexiuni pe oră</string>
<string name="connections_per_day">Conexiuni pe zi</string>
<string name="total_connection_limits">Limite totale de conexiune</string>
<string name="total_connections_per_minute">Total conexiuni pe minut</string>
<string name="total_connections_per_hour">Total conexiuni pe oră</string>
<string name="total_connections_per_day">Total conexiuni pe zi</string>
<string name="max_active_connections">Conexiuni active max</string>
<string name="num_per_minute">%s pe minut</string>
<string name="num_per_hour">%s pe oră</string>
<string name="num_per_day">%s pe zi</string>
<string name="unlimited">Nelimitat</string>
<string name="set_zero_for_unlimited">Configurați 0 pentru nelimitat</string>
<string name="post_limits">Limitele POSTULUI</string>
<string name="limit_period">Perioada de limitare</string>
<string name="client_posts_per_period">POST-urile clienților pe perioadă</string>
<string name="client_ban_length">Lungimea interzicerii clientului</string>
<string name="total_posts_per_period">POST-uri totale pe perioadă</string>
<string name="total_ban_length">Lungimea totală a interdicției</string>
<string name="power_saving">Economisire de energie</string>
<string name="delay_open">Întârziere deschiderii</string>
<string name="tunnel_summ_delay_open">Întârziere tunelului deschis până este necesar</string>
<string name="reduce_quantity">Reduceți cantitatea</string>
<string name="tunnel_summ_reduce_quantity">Reducerea cantitatii tunelilor atunci când este inactiva</string>
<string name="idle_time">Timp inactiv</string>
<string name="num_minutes">%s minute</string>
<string name="reduced_tunnel_quantity">Cantitate redusă de tunel</string>
<string name="close_tunnels">Inchiderea tunelurilor când e inactiv</string>
<string name="new_keys_on_reopen">Taste noi la redeschidere</string>
<string name="new_keys_on_reopen_conflict_title">Dezactivați cheile persistente?</string>
<string name="new_keys_on_reopen_conflict_msg">Nu puteți activa noi chei la redeschidere, în timp ce tunelul este configurat să aibă chei persistente. Doriți să dezactivați cheile persistente?</string>
<string name="http_client">Client HTTP</string>
<string name="tunnel_summ_user_agent">Treceți antetul „User-Agent”</string>
<string name="tunnel_summ_referer">Treceți antetul „Referer”</string>
<string name="tunnel_summ_accept">Treceți antetul „Accept- *”</string>
<string name="tunnel_summ_allow_ssl">Permiteți SSL adreselor I2P</string>
<string name="jump_url_list">Salt la lista URL</string>
<string name="proxy_auth">Autorizare proxy</string>
<string name="tunnel_summ_proxy_auth">Solicitați o autentificare pentru a utiliza acest proxy</string>
<string name="username">Nume utilizator</string>
<string name="password">Parolă</string>
<string name="outproxy_auth">Autorizație outproxy</string>
<string name="tunnel_summ_outproxy_auth">Datele de conectare necesare pentru outproxy</string>
<string name="other">Altceva</string>
<string name="signature_type">Tip semnătură</string>
<string name="custom_options">Opțiuni personalizate</string>
<string name="all">Tot</string>
<string name="no_messages">Fără mesaje</string>
<string name="no_error_messages">Fără mesaje de eroare</string>
<plurals name="log_error_messages">
<item quantity="one">Un mesaj de eroare</item>
<item quantity="few">%d mesaje de eroare, cele mai noi primele</item>
<item quantity="other">%d mesaje de eroare, cele mai noi primele</item>
</plurals>
<plurals name="log_messages">
<item quantity="one">un mesaj</item>
<item quantity="few">%d mesaje, cele mai noi mai întâi</item>
<item quantity="other">%d mesaje, cele mai noi mai întâi</item>
</plurals>
<string name="log_entry">Intrare jurnal</string>
<string name="copy_logs">Copiază jurnale</string>
<string name="i2p_android_error_logs">Jurnale eroare I2P Android</string>
<string name="i2p_android_logs">Jurnale I2P Android</string>
<string name="error_logs_copied_to_clipboard">Jurnalele de eroare sunt copiate în memoria temporară</string>
<string name="logs_copied_to_clipboard">Jurnalele sunt copiate în memoria temporară</string>
<string name="label_browser_configuration">Configurare navigator web</string>
<string name="no_market_app">Nu a fost găsită nicio aplicație de piață, vă rugăm să instalați manual</string>
<string name="unset">Nesetat</string>
</resources>

View File

@ -47,20 +47,22 @@
<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">K</string>
<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">С</string>
<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 работает лучше всего, когда постоянно запущен. Для предотвращения закрытия I2P системой вы можете добавить его в список исключений оптимизации. Это существенно увеличит надёжность приложения. Оставить 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>
<string name="first_start_faq">Как только у вас появятся клиентские туннели, пожалуйста, <b>посмотрите</b> раздел FAQ:</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>
@ -135,10 +137,10 @@
<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>
<string name="settings_default">По умолчанию</string>
<string name="settings_label_advanced">Расширенные</string>
<string name="settings_label_showStats">Статистика маршрутизатора</string>
<string name="settings_summ_showStats">Показать расширенную статистику в главной консоли</string>
@ -169,8 +171,8 @@
<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">Хотите пожертвовать деньги или bitcoins на покупку дополнительных Android устройств для разработчиков и тестировщиков? Зайдите:</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>
@ -185,7 +187,7 @@
<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="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>
@ -200,7 +202,7 @@
<string name="i2ptunnel_type_httpbidirserver">HTTP bidir</string>
<string name="install_recommended_app">Установить рекомендованное приложение?</string>
<string name="app_needed_for_this_tunnel_type">Требуется установить приложение для использования этого туннеля. Хотите установить рекомендованное приложение?</string>
<string name="i2ptunnel_not_initialized">Туннели еще не инициализированы, пожалуйста, обновите через пару минут</string>
<string name="i2ptunnel_not_initialized">Туннели еще не инициализированы, пожалуйста, обновите через пару минут.</string>
<string name="no_configured_client_tunnels">Нет настроенных клиентских туннелей.</string>
<string name="no_configured_server_tunnels">Нет настроенных серверных туннелей.</string>
<string name="i2ptunnel_new_tunnel">Создать туннель</string>
@ -242,7 +244,7 @@
<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="i2ptunnel_view_autostart">Автозапуск</string>
<string name="address_copied_to_clipboard">Адрес скопирован в буфер обмена</string>
<string name="edit_tunnel">Изменить туннель</string>
<string name="name">Имя</string>
@ -273,7 +275,7 @@
<string name="tunnel_summ_use_ssl">Использовать SSL для подключения к цели</string>
<string name="tunnel_parameters">Параметры туннеля</string>
<string name="profile">Профиль</string>
<string name="profile_bulk">Массовое соединение (для загрузок/вебсайтов/P2P)</string>
<string name="profile_bulk">Массовое соединение (для загрузок/веб-сайтов/P2P)</string>
<string name="profile_interactive">Интерактивное соединение</string>
<string name="delay_connect">Задержка подключения</string>
<string name="tunnel_summ_delay_connect">Включить для запроса/ответа соединений</string>

View File

@ -28,6 +28,8 @@
<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="download">Stiahnuť</string>
<string name="upload">Nahrať</string>
<string name="first_start_title">Gratulácia k nainštalovaniu I2P!</string>
<string name="first_start_welcome"><b>Vitajte v I2P!</b> Prosím <b>majte trpezlivosť</b>, kým sa I2P nabootuje a nájde peerov.</string>
<string name="first_start_read">Zatiaľ čo budete čakať, prosím prečítajte si poznámky k vydaniu a úvodnú stránku.</string>
@ -183,6 +185,7 @@
<string name="use_ssl">Použiť SSL</string>
<string name="tunnel_parameters">Parametre tunelov</string>
<string name="profile">Profil</string>
<string name="access_control">Riadenie prístupu</string>
<string name="disabled">Zrušené</string>
<string name="whitelist">Whitelist</string>
<string name="blacklist">Blacklist</string>

View File

@ -29,6 +29,7 @@
<!--Character to indicate a server tunnel. Usually first letter of the word "server".-->
<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_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>

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. Var god läs release kommentarerna. Version: </string>
<string name="welcome_new_version">Ny version installerad. Vänligen läs versionsanteckningarna. Version: </string>
<string name="label_tunnels">Tunnlar</string>
<string name="label_status">Status</string>
<string name="label_console">Konsoll</string>
@ -34,7 +34,7 @@ Läs utgåvenoteringar och licens-information.</string>
<string name="net_status_error_i2cp">Klienthanterare I2CP-fel - kontrollera loggar</string>
<!--Parameter is a time, e.g. 32s or 2m-->
<string name="net_status_error_skew">Klockförskjutning på %s</string>
<string name="net_status_error_unresolved_tcp">Ej upplöst TCP-adress</string>
<string name="net_status_error_unresolved_tcp">Olöst TCP-adress</string>
<string name="net_status_error_private_tcp">Privat TCP-adress</string>
<string name="net_status_warn_firewalled_inbound_tcp">Bakom brandvägg med inåtgående TCP aktiverad</string>
<string name="net_status_warn_firewalled_floodfill">Bakom brandvägg och \'floodfill\'</string>
@ -56,7 +56,9 @@ Läs utgåvenoteringar och licens-information.</string>
<string name="upload">Ladda upp</string>
<string name="configure_browser_title">Konfigurera webbläsaren?</string>
<string name="configure_browser_for_i2p">Vill du konfigurera en browser för att se på I2P-sidor? (Du kan också göra detta senare från hjälpmenyn.)</string>
<string name="first_start_title">Gratulerar till din I2P installation!</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>
@ -146,6 +148,7 @@ 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>
@ -173,7 +176,7 @@ Läs utgåvenoteringar och licens-information.</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">Offentliga adresser</string>
<string name="label_router">Publika adresser</string>
<string name="label_private">Privata adresser</string>
<string name="addressbook_is_empty">Adressboken är tom</string>
<string name="addressbook_search_header">%s hittade</string>
@ -210,6 +213,7 @@ Läs utgåvenoteringar och licens-information.</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_wizard_k_client_server">Klient eller Server</string>
<string name="i2ptunnel_wizard_v_client">Klienttunnel</string>
<string name="i2ptunnel_wizard_v_server">Servertunnel</string>
@ -231,7 +235,7 @@ Läs utgåvenoteringar och licens-information.</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 utproxies för den här typen av tunnel (antingen HTTP eller SOCKS), fyll i dem. Separera flera proxies med kommatecken.</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_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>
@ -242,6 +246,7 @@ Läs utgåvenoteringar och licens-information.</string>
<string name="i2ptunnel_view_target">Mål</string>
<string name="i2ptunnel_view_access_point">Accesspunkt</string>
<string name="i2ptunnel_view_autostart">Auto-start</string>
<string name="address_copied_to_clipboard">Adressen kopierades till urklipp</string>
<string name="edit_tunnel">Redigera tunnel</string>
<string name="name">Namn</string>
<string name="description">Beskrivning</string>
@ -260,7 +265,7 @@ Läs utgåvenoteringar och licens-information.</string>
<string name="client_ssl">Klient SSL</string>
<string name="tunnel_summ_client_ssl">Klienter måste använda SSL för att ansluta</string>
<string name="outproxies">Utproxies</string>
<string name="ssl_outproxies">SSL utproxies</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>
@ -352,5 +357,6 @@ Läs utgåvenoteringar och licens-information.</string>
<string name="error_logs_copied_to_clipboard">Error loggar kopierade till urklipp</string>
<string name="logs_copied_to_clipboard">Loggar kopierade till urklipp</string>
<string name="label_browser_configuration">Browser konfiguration</string>
<string name="no_market_app">Ingen marknadsapp hittades. Installera manuellt</string>
<string name="unset">Återställ</string>
</resources>

View File

@ -3,11 +3,11 @@
<string name="app_name">I2P</string>
<string name="desc_i2p_logo">I2P logosu</string>
<string name="choose_language">Dil seçin</string>
<string name="welcome_new_install">I2P dünyasına hoş geldiniz. Bu uygulama henüz ALPHA geliştirme düzeyindedir ve güçlü bir isimsiz kalma özelliği sağlamamaktadır. Lütfen yayım notlarını ve lisans bilgilerini okuyun.</string>
<string name="welcome_new_install">I2P dünyasına hoş geldiniz. Bu uygulama henüz ALPHA geliştirme düzeyindedir ve güçlü bir anonim kalma özelliği sağlamamaktadır. Lütfen yayım notlarını ve lisans bilgilerini okuyun.</string>
<string name="welcome_new_version">Yeni sürüm kuruldu. Lütfen yayım notlarını okuyun. Sürüm:</string>
<string name="label_tunnels">Tüneller</string>
<string name="label_status">Durum</string>
<string name="label_console">Konsol</string>
<string name="label_console">Pano</string>
<string name="label_addresses">Adresler</string>
<string name="label_addressbook">Adres Defteri</string>
<string name="label_i2ptunnel_client">İstemci tünelleri</string>
@ -18,7 +18,7 @@
<string name="label_peers_status">Eşler</string>
<string name="label_release_notes">Yayım Notları</string>
<string name="label_licenses">Lisanslar</string>
<string name="label_browse">Gözat</string>
<string name="label_browse">Göz at</string>
<string name="label_graphs">Çizelgeler</string>
<string name="button_router_off">I2P başlatmak için uzun basın</string>
<string name="button_router_on">I2P çalışıyor (durdurmak için uzun basın)</string>
@ -35,12 +35,12 @@
<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">Gelen TCP güvenlik duvarı etkinleştirilmiş </string>
<string name="net_status_warn_firewalled_inbound_tcp">Gel 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">UPD kapısı kullanılıyor - ayarları değiştirip yeniden başlatın</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_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 Gelen TCP sunucu/kapı ayarlanmamış</string>
<string name="net_status_error_udp_disabled_tcp_not_set">UDP devre dışı ve Gel TCP bağlantısı sunucu/kapı numarası 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>
@ -53,13 +53,15 @@
<string name="no_tunnels_running">Henüz çalışan bir tünel yok.</string>
<string name="download">İndirme</string>
<string name="upload">Yükleme</string>
<string name="configure_browser_title">Tarayıcı ayarlansın mı?</string>
<string name="configure_browser_title">Tarayıcı yapılandırılsın mı?</string>
<string name="configure_browser_for_i2p">I2P sitelerini görüntüleyecek bir tarayıcı ayarlamak ister misiniz? (bu işlemi daha sonra Yardım menüsünden yapabilirsiniz).</string>
<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_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_nonanon">Ya da tünelleri beklemek istemiyorsanız isimsiz olmayan şu bağlantıyı kullanın:</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>
<string name="action_add">Ekle</string>
@ -120,10 +122,10 @@
<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ş hızı</string>
<string name="settings_desc_bw_inbound">En yüksek geliş hızı</string>
<string name="settings_label_bw_outbound">Gidiş hızı</string>
<string name="settings_desc_bw_outbound">En yüksek gidiş hızı</string>
<string name="settings_label_bw_inbound">Geliş bağlantısı hızı</string>
<string name="settings_desc_bw_inbound">En yüksek geliş bağlantısı hızı</string>
<string name="settings_label_bw_outbound">Gidiş bağlantısı hızı</string>
<string name="settings_desc_bw_outbound">En yüksek gidiş bağlantısı hızı</string>
<string name="settings_label_network"></string>
<string name="settings_label_hiddenMode">Katılım</string>
<string name="settings_desc_hiddenMode">Gizli kipi kapat</string>
@ -133,7 +135,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ıları kendiliğinden açılsın</string>
<string name="settings_desc_upnp">Güvenlik duvarı kapı numaraları kendiliğinden açı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>
@ -141,7 +143,7 @@
<string name="settings_default">Varsayılan</string>
<string name="settings_label_advanced">Gelişmiş</string>
<string name="settings_label_showStats">Yöneltici istatistikleri</string>
<string name="settings_summ_showStats">Ana konsolda ayrıntılı istatistikler görüntülensin</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_maxConns">En fazla bağlantı</string>
<string name="settings_label_i2cp">I2CP Arabirimi</string>
@ -151,11 +153,11 @@
<string name="settings_label_expl_inbound">Geliş tünelleri</string>
<string name="settings_label_expl_outbound">Gidiş tünelleri</string>
<string name="settings_label_expl_length">Uzunluk</string>
<string name="settings_summ_expl_length">%s sıçrama</string>
<string name="settings_desc_expl_length">Kullanılacak sıçrama sayısı</string>
<string name="settings_label_expl_lengthVariance">Sıçrama çeşitliliği</string>
<string name="settings_summ_expl_length">%s durak</string>
<string name="settings_desc_expl_length">Kullanılacak durak sayısı</string>
<string name="settings_label_expl_lengthVariance">Durak çeşitliliği</string>
<string name="settings_summ_expl_lengthVariance">%s</string>
<string name="settings_desc_expl_lengthVariance">Rastgele eklenecek sıçrama sayısı</string>
<string name="settings_desc_expl_lengthVariance">Rastgele eklenecek durak sayısı</string>
<string name="settings_label_expl_quantity">Sayı</string>
<string name="settings_summ_expl_quantity">%s tünel</string>
<string name="settings_desc_expl_quantity">Tünel sayısı</string>
@ -220,9 +222,9 @@
<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ı</string>
<string name="i2ptunnel_wizard_k_target_port">Hedef kapı numarası</string>
<string name="i2ptunnel_wizard_k_reachable_on">Şuradan erişilebilir</string>
<string name="i2ptunnel_wizard_k_binding_port">Bağlanılacak kapı</string>
<string name="i2ptunnel_wizard_k_binding_port">Bağlanılacak kapı numarası</string>
<string name="i2ptunnel_wizard_k_auto_start">Otomatik başlat</string>
<string name="next">Sonraki</string>
<string name="prev">Önceki</string>
@ -236,7 +238,7 @@
<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_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ı zaman HTTP bidir sunucu tünelinin istemci kapı numarasıdır.</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_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>
@ -249,7 +251,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ılar</string>
<string name="tunnel_cat_ports">Yerel kapı numaraları</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>
@ -258,7 +260,7 @@
<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ı</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="outproxies">Çıkış vekil sunucuları</string>
@ -268,7 +270,7 @@
<string name="tunnel_summ_enable_dcc">IRC istemcileri DCC kullanabilsin</string>
<string name="website_domain_name">Web sitesinin etki alanı</string>
<string name="target_host">Hedef sunucu</string>
<string name="target_port">Hedef kapı</string>
<string name="target_port">Hedef kapı numarası</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>
@ -326,7 +328,7 @@
<string name="tunnel_summ_referer">\'Referer\' üstbilgisi geçirilsin</string>
<string name="tunnel_summ_accept">\'Accept-*\' üstbilgisi geçirilsin</string>
<string name="tunnel_summ_allow_ssl">I2P adreslerinde SSL kullanılabilsin</string>
<string name="jump_url_list">Adresi listesine sıçra</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>

View File

@ -55,6 +55,7 @@
<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="first_start_title">Вітаємо! I2P встановлено.</string>
<string name="first_start_welcome"><b>Ласкаво просимо до I2P!</b> Будь ласка, <b>зачекайте,</b> так як I2P запускається і шукає піри.</string>
<string name="first_start_read">Поки чекаєте, прочитайте, будь ласка, нотатки до релізу і вітальну сторінку.</string>

View File

@ -63,6 +63,7 @@
<string name="settings_label_expl_length">Độ dài</string>
<string name="settings_desc_expl_length">Số lượng hop được sử dụng</string>
<string name="settings_label_expl_lengthVariance">Khoảng chênh lệch hop</string>
<string name="settings_summ_expl_lengthVariance">%s</string>
<string name="settings_desc_expl_lengthVariance">Số lượng hop ngẫu nhiên được thêm vào</string>
<string name="settings_label_expl_quantity">Số lượng</string>
<string name="settings_desc_expl_quantity">Số lượng đường hầm</string>
@ -70,6 +71,7 @@
<string name="settings_desc_expl_backupQuantity">Số lượng đường hầm dự phòng</string>
<string name="menu_about">Giới thiệu</string>
<string name="about_version">Phiên bản:</string>
<string name="about_project">Trang chủ dự án:</string>
<string name="menu_help">Giúp đỡ</string>
<string name="general">Chung</string>
<string name="addressbook_add_wizard_k_name">Tên</string>
@ -99,6 +101,7 @@
<string name="next">Kế</string>
<string name="prev">Trước</string>
<string name="finish">Nạp</string>
<string name="review">Duyệt xem</string>
<string name="enabled">Được bật lên</string>
<string name="i2ptunnel_view_target">Điểm đến</string>
<string name="name">Tên</string>
@ -110,6 +113,7 @@
<string name="disabled">Tàn tật</string>
<string name="whitelist">Sổ trắng</string>
<string name="blacklist">Sổ đen</string>
<string name="unlimited">Không giới hạn</string>
<string name="tunnel_summ_delay_open">Đợi mở đường hầm cho đến khi yêu cầu</string>
<string name="tunnel_summ_reduce_quantity">Giảm số lượng hầm khi rổi</string>
<string name="close_tunnels">Đóng đường hầm khi rảnh rổi</string>
@ -117,4 +121,5 @@
<string name="username">Tên đăng nhập</string>
<string name="password">Mật khẩu</string>
<string name="custom_options">Tùy chọn tùy ý</string>
<string name="all">Tất cả</string>
</resources>

View File

@ -238,6 +238,7 @@
<string name="use_ssl">使用 SSL</string>
<string name="tunnel_parameters">隧道參數</string>
<string name="profile">個人資料</string>
<string name="access_control">存取控制</string>
<string name="disabled">關閉</string>
<string name="unlimited">無限制</string>
<string name="http_client">HTTP 客戶端</string>
@ -245,4 +246,5 @@
<string name="password">密碼</string>
<string name="other">其它</string>
<string name="all">全部</string>
<string name="no_messages">沒有訊息</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>在 I2P 启动和寻找同伴时,请<b>保持耐心</b></string>
<string name="first_start_read">在您等候时,请阅读发布说明和欢迎页面。</string>

View File

@ -109,9 +109,11 @@
</string-array>
<string-array name="recommended_browsers">
<item>acr.browser.lightning</item>
<item>io.github.forkmaintainers.iceraven</item>
</string-array>
<string-array name="recommended_browser_labels">
<item>Lightning</item>
<item>IceRaven(With Extension)</item>
</string-array>
<string-array name="supported_browsers">
<item>org.mozilla.firefox</item>

View File

@ -67,6 +67,8 @@
<string name="configure_browser_title">Configure browser?</string>
<string name="configure_browser_for_i2p">Would you like to configure a browser to view I2P sites? (You can also do this later from the help menu.)</string>
<string name="configure_no_doze_title">Manage Battery Optimizations?</string>
<string name="configure_no_doze">I2P works best if it keeps running. To prevent Android from closing I2P when trying to save power, you can add it to the battery exceptions list. This will substantially improve the reliability of the application.\n\nKeep I2P running in the background? (recommended)</string>
<string name="first_start_title">Congratulations on getting I2P installed!</string>
<string name="first_start_welcome"><b>Welcome to I2P!</b> Please <b>have patience</b> as I2P boots up and finds peers.</string>
<string name="first_start_read">While you are waiting, please read the release notes and welcome page.</string>
@ -148,6 +150,9 @@
<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="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>
@ -180,7 +185,9 @@
<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_label_exploratory_pool">Exploratory pool</string>
<string name="settings_desc_exploratory_pool">Tunnel parameters</string>
<string name="settings_label_expl_inbound">Inbound tunnels</string>
@ -413,4 +420,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>
</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

@ -1,3 +1,13 @@
apply plugin: 'signing'
version = "$I2P_VERSION"
ext.isReleaseVersion = !version.endsWith("SNAPSHOT")
signing {
required { isReleaseVersion && gradle.taskGraph.hasTask("uploadArchives") }
sign configurations.archives
}
buildscript {
repositories {
mavenLocal()
@ -10,6 +20,7 @@ buildscript {
}
}
allprojects {
group = GROUP

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 -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

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-----
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
=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

@ -10,10 +10,11 @@ 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=str4d
POM_DEVELOPER_NAME=str4d
POM_DEVELOPER_EMAIL=str4d@i2pmail.org
POM_DEVELOPER_ID=idk
POM_DEVELOPER_NAME=idk
POM_DEVELOPER_EMAIL=hankhill19580@gmail.com
I2P_VERSION=0.9.42
ANDROID_BUILD_TARGET_SDK_VERSION=26
ANDROID_BUILD_TARGET_SDK_VERSION=29
ANDROID_BUILD_SDK_VERSION=28
I2P_VERSION=1.5.0

View File

@ -2,8 +2,8 @@
<resources>
<string name="yes">Oui</string>
<string name="no">Non</string>
<string name="install_i2p_android">Installer I2P pour Android ?</string>
<string name="you_must_have_i2p_android">I2P pour Android doit être installé et en fonction. Souhaitez-vous linstaller ?</string>
<string name="start_i2p_android">Démarrer I2P pour Android ?</string>
<string name="would_you_like_to_start_i2p_android">Il semblerait quI2P pour Android ne soit pas en fonction. Souhaitez-vous le démarrer ?</string>
<string name="install_i2p_android">Installer I2P pour Android?</string>
<string name="you_must_have_i2p_android">I2P pour Android doit être installé et en fonction. Voulez-vous linstaller?</string>
<string name="start_i2p_android">Démarrer I2P pour Android?</string>
<string name="would_you_like_to_start_i2p_android">Il semblerait quI2P pour Android ne soit pas en fonction. Voulez-vous le démarrer?</string>
</resources>

View File

@ -0,0 +1,9 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="yes">Evet</string>
<string name="no">Hayır</string>
<string name="install_i2p_android">I2P Android guruň?</string>
<string name="you_must_have_i2p_android">I2P Android gurnalan we işleýän bolmaly. Gurmak isleýärsiňizmi?</string>
<string name="start_i2p_android">I2P Android başlaň?</string>
<string name="would_you_like_to_start_i2p_android">I2P Android işlemeýän ýaly. Başlamak isleýärsiňizmi?</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">