Compare commits

...

30 Commits

Author SHA1 Message Date
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
20 changed files with 216 additions and 99 deletions

View File

@ -1,3 +1,16 @@
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

View File

@ -1,59 +1,109 @@
# 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.
## 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`.
5. Ensure to have updated the changelog with the changes done.
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`.
5. Ensure to have updated the changelog with the changes done.
6. Ensure that you are configured to build i2p.i2p with Java 8. On Debian it is easiest to set with
`update-java-alternatives --set java-8-openjdk-amd64` and picking Java 8. **TODO:** add instructions for non-Debian-based
systems.
7. Ensure that you have a Java 1.7 bootclasspath available. (See **Maven Central** step 2A.)
## Maven Central
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.
## Get all the dependencies ready
## Android Common Build
### Maven Central
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`
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`
- upload everything *except* servlet.jar
- Unset bootclasspath in override.properties
- Build with `ant mavenCentral`
- upload servlet.jar
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
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.
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 4745253
versionCode 4745258
versionName "$I2P_VERSION"
minSdkVersion 14
targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION as String)

View File

@ -16,6 +16,7 @@ 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;
@ -27,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;
@ -646,32 +648,36 @@ public class MainFragment extends I2PFragmentBase {
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)
.setMessage(R.string.configure_no_doze)
.setCancelable(false)
.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int i) {
String packageName = mContext.getPackageName();
dialog.dismiss();
ab.setPref(PREF_CONFIGURE_BATTERY, true);
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, true);
}
}
})
.setNegativeButton(R.string.no, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int i) {
dialog.cancel();
ab.setPref(PREF_CONFIGURE_BATTERY, false);
}
})
.show();
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);

View File

@ -1,16 +1,23 @@
package net.i2p.android.router.service;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.os.Build;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
import android.os.RemoteCallbackList;
import android.os.RemoteException;
import android.support.annotation.RequiresApi;
import android.support.v4.app.NotificationCompat;
import android.support.v4.content.LocalBroadcastManager;
import net.i2p.android.router.R;
@ -169,13 +176,41 @@ public class RouterService extends Service {
_handler.removeCallbacks(_updater);
_handler.postDelayed(_updater, 50);
if(!restart) {
startForeground(1337, _statusBar.getNote());
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
startOwnForeground();
else
startForeground(1337, _statusBar.getNote());
}
//return START_STICKY;
return START_NOT_STICKY;
}
/**
* Android 8.1, 9.0, 10 handle foreground applications differently and as such require us to
* start our foreground service differently.
* */
@RequiresApi(api = Build.VERSION_CODES.O)
private void startOwnForeground(){
String NOTIFICATION_CHANNEL_ID = "com.example.simpleapp";
String channelName = "My Background Service";
NotificationChannel chan = new NotificationChannel(NOTIFICATION_CHANNEL_ID, channelName, NotificationManager.IMPORTANCE_NONE);
chan.setLightColor(Color.BLUE);
chan.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE);
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
assert manager != null;
manager.createNotificationChannel(chan);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this, NOTIFICATION_CHANNEL_ID);
Notification notification = notificationBuilder.setOngoing(true)
.setSmallIcon(R.drawable.i2plogo)
.setContentTitle(getString(R.string.running_background))
.setPriority(NotificationManager.IMPORTANCE_MIN)
.setCategory(Notification.CATEGORY_SERVICE)
.build();
startForeground(1337, notification);
}
/**
* maybe this goes away when the receiver can bind to us
*/

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

View File

@ -50,9 +50,13 @@ i2np.bandwidth.outboundKBytesPerSecond=50
#
# NTCP
#
i2np.ntcp.enable=true
i2np.ntcp.enable=false
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

@ -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".-->

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

@ -191,7 +191,7 @@
<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>

View File

@ -55,6 +55,8 @@
<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>

View File

@ -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,7 +53,7 @@
<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>
@ -122,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>
@ -135,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>
@ -222,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>
@ -238,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>
@ -251,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>
@ -260,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>
@ -270,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>

View File

@ -56,7 +56,7 @@
<string name="configure_browser_title">配置浏览器?</string>
<string name="configure_browser_for_i2p">您想配置一个浏览器来查看 I2P 站点吗?(您也可以以后再从帮助菜单设置这个)</string>
<string name="configure_no_doze_title">管理电池优化?</string>
<string name="configure_no_doze">I2P 工作得最好如果它持续运行。为阻止 Android 尝试省电时关闭 I2P您可以将它添加到电池例外名单中。这将大幅提高应用稳定性。\n\n保持 I2P 在后台运行?(推荐)</string>
<string name="configure_no_doze">I2P 在持续工作时能达到最佳效果。为阻止 Android 尝试省电时关闭 I2P您可以将它添加到电池例外名单中。这将大幅提高应用稳定性。\n\n保持 I2P 在后台运行?(推荐)</string>
<string name="first_start_title">恭喜I2P 已安装!</string>
<string name="first_start_welcome"><b>欢迎使用 I2P</b>在 I2P 启动和寻找同伴时,请<b>保持耐心</b></string>
<string name="first_start_read">在您等候时,请阅读发布说明和欢迎页面。</string>

View File

@ -415,4 +415,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

@ -14,6 +14,7 @@ POM_DEVELOPER_ID=meeh
POM_DEVELOPER_NAME=meeh
POM_DEVELOPER_EMAIL=meeh@i2pmail.org
I2P_VERSION=0.9.44
I2P_VERSION=0.9.47
ANDROID_BUILD_TARGET_SDK_VERSION=28
ANDROID_BUILD_SDK_VERSION=28

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. 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>
</resources>