Compare commits

...

49 Commits

Author SHA1 Message Date
c52bc45910 Client library 0.5.1
i2p.i2p tag: i2p-0.9.18
2015-03-02 21:16:57 +00:00
064ebc6857 Moved missing class into client library 2015-03-02 11:03:02 +00:00
6352cd9412 Client library 0.5
i2p.i2p tag: i2p-0.9.18
2015-03-02 00:51:30 +00:00
db6c74b4b8 Updated translations 2015-03-02 00:02:40 +00:00
a8d699bea2 (Hopefully) prevent NPE 2015-03-01 23:49:13 +00:00
5d9cb0029f Fixed style API bug 2015-03-01 23:28:11 +00:00
51f7fca1ea Updated translations 2015-03-01 11:08:55 +00:00
c61ccd32ba UDP and NTCP ports, part 2 2015-02-28 12:36:59 +00:00
1debd64bc3 Pull property definitions into one location 2015-02-28 10:19:42 +00:00
561bcfe3fa New translations 2015-02-28 04:59:15 +00:00
1c1f77f5c5 Updated translations 2015-02-28 04:58:27 +00:00
420526a7c4 Updated changelog 2015-02-28 04:57:10 +00:00
99496be412 Settings options for UDP and NTCP ports 2015-02-28 04:49:18 +00:00
b6f1cdc769 Enable Java 1.7 features 2015-02-28 00:46:49 +00:00
75e4153f4e Fix stringOptionsRequiringRestart handling; add NTCP and SSU port parsing 2015-02-27 23:28:01 +00:00
eefa5b8064 Prep work for supporting removal of router.config properties 2015-02-27 22:52:39 +00:00
9d32e44547 Logger: Configurable flush interval
From i2p.i2p rev 2f451e3579eb5df2d316c1b507950d119d59a8da
2015-02-27 11:04:03 +00:00
42a0d552c7 Fixed potential leak 2015-02-27 10:45:42 +00:00
65848dd22b Fix NPE in AddressEntryLoader 2015-02-27 10:20:00 +00:00
610de188a4 Downgrade to Gradle tools 1.0.1
1.1.* cause "Cannot resolve symbol" errors in Android Studio, even though Gradle
can build the app.
2015-02-27 09:50:34 +00:00
f1cd3032c5 Updated FAB library 2015-02-27 01:54:29 +00:00
1a922ba04a Updated build tools 2015-02-27 01:54:17 +00:00
bdd59734ec Updated Android support libraries 2015-02-26 23:34:49 +00:00
fe162e4f5c Updated Android Gradle build tools 2015-02-26 23:34:31 +00:00
69e30e97b8 Updated TODO 2015-02-26 23:33:53 +00:00
513fbe0c9f Updated translations 2015-01-15 10:34:13 +00:00
de23a76e6b Option to start I2P on boot 2015-01-15 10:31:25 +00:00
c9936894d8 Updated TODO 2015-01-15 05:47:01 +00:00
cb6efd9ed8 Updated translations 2015-01-01 23:18:19 +00:00
ad245003bf Updated browser config instructions for Firefox and Orfox 2014-12-29 11:40:04 +00:00
9f27aedc49 Added postman's tunnels to default i2ptunnel.config 2014-12-27 21:43:00 +00:00
d8f883dce8 Feedback from zzz 2014-12-25 09:48:26 +00:00
7db1fbac94 Updated translations 2014-12-23 23:39:13 +00:00
19464124d6 Fixed NPE on browser refresh 2014-12-23 22:30:04 +00:00
5ba616facc Updated TODO (thx for testing zzz) 2014-12-22 00:22:54 +00:00
590a8183aa Fix settings menu Intents in debug build 2014-12-17 02:42:13 +00:00
9a45bbd18c 0.9.17.1
i2p.i2p tag: i2p-0.9.17
2014-12-14 05:15:16 +00:00
c5eedc0a5e Updated translations 2014-12-14 04:28:50 +00:00
715302c813 Upgraded floatingactionbutton to 1.3.0, dropped unused cardview-v7 2014-12-14 04:26:38 +00:00
3327ed722a I2PTunnel: Ask to install app for tunnel, if none are installed when opening 2014-12-12 13:59:02 +00:00
40afd69a54 Enable debug versions to be installed alongside release versions 2014-12-12 13:55:31 +00:00
241381c7fa Fix copy tasks to run every time 2014-12-12 13:17:48 +00:00
7a7ba093db Added CHANGELOG 2014-12-12 06:03:41 +00:00
f0e6744760 Prevent NPE 2014-12-10 12:03:34 +00:00
99002c1c5c Updated translations 2014-12-10 11:51:41 +00:00
605a6c1cf4 Bumped support-v4 dependency in client library to 21.0.2 2014-12-09 21:43:26 +00:00
954a9cc46b Bumped gradle plugin to 1.0.0 2014-12-09 11:56:19 +00:00
1ef838b966 Fixed NPE 2014-12-04 06:56:52 +00:00
c672ca05f5 0.9.17
i2p.i2p tag: i2p-0.9.17
2014-12-02 00:40:17 +00:00
55 changed files with 1193 additions and 296 deletions

27
CHANGELOG Normal file
View File

@ -0,0 +1,27 @@
0.9.18
* I2P can start automatically when phone boots (configure in Setting)
* Updated browser configuration guides for Orfox and Firefox
* Tunnels for postman's mail server added to defaults (for new installs)
* Settings options for configuring UDP and TCP ports
* Bug fixes and translation updates
0.9.17.1 /2014-12-14 / cd8bb5e3ac4238efac12179c78c4fa517fcaabec
* Fixed crashes in addressbook and netDb status page
* Fixed crash when opening an IRC client tunnel
* Updated translations
0.9.17 / 2014-12-01 / bcf947f433876f643e0f6dff81aac88848b797d3
* Migrated to the new Material design from Android Lollipop
* Added a browser configuration guide
* Improved the help screen
* Upgraded the I2P router to 0.9.17
* Various bug fixes and translation updates
0.9.15.1 / 2014-10-16 / 9cc4e80134cf9becb3838ed3cc78e0bed1363165
* Fixed a configuration bug
0.9.15 / 2014-10-16 / 9b51f78b791c28a580d57f1a5019c94493de6231
* Upgraded the I2P router to 0.9.15
* Added a help screen with some basic information
* Logs can now be copied to the clipboard
* Various user interface improvements and fixes

23
TODO
View File

@ -3,11 +3,30 @@
- Better twopane column widths
<zzz> on the i2ptunnel and addressbook pages on the tablet, the columns are too skinny, they aren't as wide as the tab
<zzz> only a few addressbook entries wrap but on i2ptunnel everything is wrapped and most of the screen is empty
- Create tunnel wizard
<zzz> in the tunnel create wizard:
<zzz> 'this could be the full base 64 destination key, or an i2p url from your address book"
<zzz> 'host name' better than 'URL'. Technically speaking, a host name is not a URL
<zzz> hmm would be nice if they could be shared-client or have an option
<zzz> was setting up email tunnels
- I2PTunnel details
<zzz> on the i2ptunnel details, it lists both a 'target' and 'access point' for clients, with the same info
<zzz> generally we use 'target' for servers and 'access point' for clients, never both
- Browser
<zzzccc> Bug report: i2p browser treats 302 as an error
<zzzccc> Bug 2: rotate screen in i2p browser seems to go back one page
# Short-term
- Graceful shutdown option
<zzzccc> Request: graceful shutdown
- Disable uPnP when on cell networks
<zzz> spewing UPnP out into cell networks is a waste of time at best and a security risk at worst, but you really want it for wifi
- I2PTunnel
- Show all messages somewhere
- Improve detail page, expose advanced settings
- Add edit page
- Progress feedback for addressbook subscriptions reload
- Display release notes directly on new router version
- Fill out help pages
- Rewrite release notes to be release-specific
@ -31,10 +50,6 @@
- Show fixed x range, not only available data
- Think about pan/zoom
- How to persist data across restarts?
- I2PTunnel
- Show all messages somewhere
- Improve detail page, expose advanced settings
- Add edit page
# Long-term

View File

@ -5,8 +5,8 @@ android {
compileSdkVersion Integer.parseInt(project.ANDROID_BUILD_SDK_VERSION)
buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION
defaultConfig {
versionCode 4745223
versionName '0.9.16-rc1'
versionCode 4745225
versionName '0.9.17.1'
minSdkVersion 9
targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION)
}
@ -16,9 +16,17 @@ android {
buildTypes {
release {
signingConfig signingConfigs.release
runProguard false
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
debug {
applicationIdSuffix '.debug'
versionNameSuffix '-DEBUG'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
lintOptions {
abortOnError false
@ -39,21 +47,19 @@ android {
dependencies {
compile project(':routerjars')
compile project(':client')
compile 'com.android.support:support-v4:21.0.2'
compile 'com.android.support:appcompat-v7:21.0.2'
compile 'com.android.support:recyclerview-v7:21.0.2'
compile 'com.android.support:cardview-v7:21.0.2'
compile 'net.i2p.android.ext:floatingactionbutton:1.1.0'
compile 'com.android.support:support-v4:21.0.3'
compile 'com.android.support:appcompat-v7:21.0.3'
compile 'com.android.support:recyclerview-v7:21.0.3'
compile 'net.i2p.android.ext:floatingactionbutton:1.8.0'
compile files('libs/androidplot-core-0.6.1.jar')
}
dependencyVerification {
verify = [
'com.android.support:support-v4:126a4c291f41f75f3fff4968e9d397bc8454cdff4d8f994cbe0524e3bad76e72',
'com.android.support:appcompat-v7:b760fd3d0b0b0547a1bcef9031b40939f31049ba955f04c8fdc5aa09a25d19e9',
'com.android.support:recyclerview-v7:71ef0f5659b3019dc33c5ffb346ea01df1f66735506f38d43fd783fbcb0370ce',
'com.android.support:cardview-v7:cb4d7ee9ebb6edffa7203eff0d207b4e88425599a8ed37d94b650bc84390c4eb',
'net.i2p.android.ext:floatingactionbutton:84cf5b67a66337bef59b46f57468c730387ca766b5a5f06ca852ba46cabbc0fb',
'com.android.support:support-v4:703572d3015a088cc5604b7e38885af3d307c829d0c5ceaf8654ff41c71cd160',
'com.android.support:appcompat-v7:5dbeb5316d0a6027d646ae552804c3baa5e3bd53f7f33db50904d51505c8a0e5',
'com.android.support:recyclerview-v7:e525ad3f33c84bb12b73d2dc975b55364a53f0f2d0697e043efba59ba73e22d2',
'net.i2p.android.ext:floatingactionbutton:a20d1f0cae15f8965b81486ba31245937968ae6ee5fa6e8a3ea21d7f6c6243ab',
]
}
@ -74,68 +80,65 @@ if (propFile.canRead()) {
println 'local.properties not found'
}
task copyDrawableResources(type: Copy) {
from file(i2pbase + '/installer/resources/themes/console/images/i2plogo.png')
into 'src/main/res/drawable'
}
task certificatesZip(type: Zip) {
archiveName = 'certificates_zip'
from files('' + i2pbase + '/installer/resources/certificates')
}
task copyRawResources(type:Copy) {
from(i2pbase + '/installer/resources/blocklist.txt') { rename { 'blocklist_txt' } }
from(i2pbase + '/installer/resources/hosts.txt') { rename { 'hosts_txt' } }
from('../LICENSE.txt') { rename { 'license_app_txt' } }
from('../licenses/LICENSE-Apache2.0.txt') { rename { 'license_apache20_txt' } }
from(i2pbase + '/licenses') {
include { elem ->
elem.name in [
'LICENSE-ElGamalDSA.txt',
'LICENSE-SHA256.txt',
'LICENSE-BSD.txt',
'LICENSE-SNTP.txt',
'LICENSE-LGPLv2.1.txt',
'LICENSE-InstallCert.txt',
'LICENSE-BlockFile.txt',
'LICENSE-GPLv2.txt',
'LICENSE-GPLv3.txt',
'LICENSE-LGPLv3.txt',
'LICENSE-FatCowIcons.txt',
'LICENSE-Addressbook.txt',
]
}
rename { String name ->
String part = name.substring(8, name.lastIndexOf('.txt'))
String.format('license_%s_txt',
part.toLowerCase(Locale.US).replace('.', '_'))
}
task copyI2PResources(type: Copy) {
// Force this to always run: Copy only detects source changes, not if missing in destination
outputs.upToDateWhen { false }
into 'src/main/res'
into('drawable') {
from file(i2pbase + '/installer/resources/themes/console/images/i2plogo.png')
}
into('raw') {
from(i2pbase + '/installer/resources/blocklist.txt') { rename { 'blocklist_txt' } }
from(i2pbase + '/installer/resources/hosts.txt') { rename { 'hosts_txt' } }
from('../LICENSE.txt') { rename { 'license_app_txt' } }
from('../licenses/LICENSE-Apache2.0.txt') { rename { 'license_apache20_txt' } }
from(i2pbase + '/licenses') {
include { elem ->
elem.name in [
'LICENSE-ElGamalDSA.txt',
'LICENSE-SHA256.txt',
'LICENSE-BSD.txt',
'LICENSE-SNTP.txt',
'LICENSE-LGPLv2.1.txt',
'LICENSE-InstallCert.txt',
'LICENSE-BlockFile.txt',
'LICENSE-GPLv2.txt',
'LICENSE-GPLv3.txt',
'LICENSE-LGPLv3.txt',
'LICENSE-FatCowIcons.txt',
'LICENSE-Addressbook.txt',
]
}
rename { String name ->
String part = name.substring(8, name.lastIndexOf('.txt'))
String.format('license_%s_txt',
part.toLowerCase(Locale.US).replace('.', '_'))
}
}
from certificatesZip
}
from certificatesZip
into 'src/main/res/raw'
}
task copyI2PResources
copyI2PResources.dependsOn copyDrawableResources
copyI2PResources.dependsOn copyRawResources
// For peers WebView
task copyConsoleImagesAssets(type: Copy) {
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')
into 'src/main/assets/themes/console/images'
task copyI2PAssets(type: Copy) {
// Force this to always run: Copy only detects source changes, not if missing in destination
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')
}
into('light') {
from file(i2pbase + '/installer/resources/themes/console/light/console.css')
}
into('light/images') {
from file(i2pbase + '/installer/resources/themes/console/light/images/header.png')
}
}
task copyConsoleLightAssets(type: Copy) {
from file(i2pbase + '/installer/resources/themes/console/light/console.css')
into 'src/main/assets/themes/console/light'
}
task copyConsoleLightImagesAssets(type: Copy) {
from file(i2pbase + '/installer/resources/themes/console/light/images/header.png')
into 'src/main/assets/themes/console/light/images'
}
task copyI2PAssets
copyI2PAssets.dependsOn copyConsoleImagesAssets
copyI2PAssets.dependsOn copyConsoleLightAssets
copyI2PAssets.dependsOn copyConsoleLightImagesAssets
preBuild.dependsOn copyI2PResources
preBuild.dependsOn copyI2PAssets

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name" translatable="false">I2P DEBUG</string>
</resources>

View File

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="utf-8"?>
<preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
<header
android:fragment="net.i2p.android.router.SettingsActivity$SettingsFragment"
android:title="@string/settings_label_bandwidth_net">
<extra
android:name="settings"
android:value="net" />
</header>
<header
android:fragment="net.i2p.android.router.SettingsActivity$SettingsFragment"
android:title="@string/label_graphs">
<extra
android:name="settings"
android:value="graphs" />
</header>
<header
android:fragment="net.i2p.android.router.SettingsActivity$SettingsFragment"
android:title="@string/settings_label_logging">
<extra
android:name="settings"
android:value="logging" />
</header>
<header
android:title="@string/label_addressbook">
<intent
android:targetPackage="net.i2p.android.debug"
android:targetClass="net.i2p.android.router.addressbook.AddressbookSettingsActivity" />
</header>
<header
android:fragment="net.i2p.android.router.SettingsActivity$SettingsFragment"
android:title="@string/settings_label_advanced">
<extra
android:name="settings"
android:value="advanced" />
</header>
</preference-headers>

View File

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<Preference android:title="@string/settings_label_bandwidth_net">
<intent
android:targetPackage="net.i2p.android.debug"
android:targetClass="net.i2p.android.router.SettingsActivity"
android:action="net.i2p.android.router.PREFS_NET" />
</Preference>
<Preference android:title="@string/label_graphs">
<intent
android:targetPackage="net.i2p.android.debug"
android:targetClass="net.i2p.android.router.SettingsActivity"
android:action="net.i2p.android.router.PREFS_GRAPHS" />
</Preference>
<Preference android:title="@string/settings_label_logging">
<intent
android:targetPackage="net.i2p.android.debug"
android:targetClass="net.i2p.android.router.SettingsActivity"
android:action="net.i2p.android.router.PREFS_LOGGING" />
</Preference>
<Preference android:title="@string/label_addressbook">
<intent
android:targetPackage="net.i2p.android.debug"
android:targetClass="net.i2p.android.router.addressbook.AddressbookSettingsActivity" />
</Preference>
<Preference android:title="@string/settings_label_advanced">
<intent
android:targetPackage="net.i2p.android.debug"
android:targetClass="net.i2p.android.router.SettingsActivity"
android:action="net.i2p.android.router.PREFS_ADVANCED" />
</Preference>
</PreferenceScreen>

View File

@ -5,6 +5,7 @@
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<application
android:icon="@drawable/ic_launcher_itoopie"
@ -20,7 +21,12 @@
</service>
<provider
android:name=".provider.CacheProvider"
android:authorities="net.i2p.android" />
android:authorities="${applicationId}.provider" />
<receiver android:name=".receiver.OnBootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
<activity
android:name=".MainActivity"

View File

@ -4,6 +4,7 @@ import java.util.List;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.widget.Toast;
import net.i2p.android.i2ptunnel.util.TunnelConfig;
import net.i2p.android.i2ptunnel.util.TunnelUtil;
@ -233,6 +234,17 @@ public class TunnelEntry {
else return getServerLink(linkify);
}
public Uri getRecommendedAppForTunnel() {
int resId = 0;
if ("ircclient".equals(mController.getType()))
resId = R.string.market_irc;
if (resId > 0)
return Uri.parse(mContext.getString(resId));
else
return null;
}
public String getDetails() {
String details;
if (isClient())

View File

@ -1,6 +1,9 @@
package net.i2p.android.i2ptunnel;
import android.app.AlertDialog;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
@ -61,7 +64,27 @@ public class TunnelEntryAdapter extends ArrayAdapter<TunnelEntry> {
public void onClick(View view) {
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(tunnel.getTunnelLink(true)));
getContext().startActivity(i);
try {
getContext().startActivity(i);
} catch (ActivityNotFoundException e) {
AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
builder.setTitle(R.string.install_recommended_app)
.setMessage(R.string.app_needed_for_this_tunnel_type)
.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialogInterface, int i) {
Uri uri = tunnel.getRecommendedAppForTunnel();
if (uri != null) {
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
getContext().startActivity(intent);
}
}
})
.setNegativeButton(net.i2p.android.lib.client.R.string.no, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialogInterface, int i) {
}
});
builder.show();
}
}
});
}

View File

@ -52,7 +52,6 @@ public abstract class I2PActivityBase extends ActionBarActivity implements
/**
* Router variables
*/
protected String _myDir;
protected boolean _isBound;
protected boolean _triedBind;
protected ServiceConnection _connection;
@ -95,7 +94,6 @@ public abstract class I2PActivityBase extends ActionBarActivity implements
Util.d(this + " onCreate called");
super.onCreate(savedInstanceState);
_sharedPrefs = getSharedPreferences(SHARED_PREFS, 0);
_myDir = getFilesDir().getAbsolutePath();
// If the Activity wants to use a ViewPager, provide it.
// If the Activity can make use of two panes (if available),

View File

@ -0,0 +1,5 @@
package net.i2p.android.router;
public interface I2PConstants {
public static final String ANDROID_PREF_PREFIX = "i2pandroid.";
}

View File

@ -233,7 +233,7 @@ class InitActivities {
* @param overrides local overrides or null
*/
private void mergeResourceToFile(int resID, String f, Properties overrides) {
Util.mergeResourceToFile(ctx, myDir, f, resID, overrides);
Util.mergeResourceToFile(ctx, myDir, f, resID, overrides, null);
}
/**

View File

@ -1,23 +1,13 @@
package net.i2p.android.router;
import java.io.File;
import java.util.List;
import java.util.Properties;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.ComponentName;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.ServiceConnection;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
import android.os.RemoteException;
import android.preference.PreferenceManager;
import android.support.v4.app.DialogFragment;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
@ -31,8 +21,9 @@ import net.i2p.android.router.service.RouterService;
import net.i2p.android.router.service.State;
import net.i2p.android.router.util.Connectivity;
import net.i2p.android.router.util.Util;
import net.i2p.router.RouterContext;
import net.i2p.util.OrderedProperties;
import java.io.File;
import java.lang.ref.WeakReference;
public class MainActivity extends I2PActivityBase implements
MainFragment.RouterControlListener {
@ -244,24 +235,35 @@ public class MainActivity extends I2PActivityBase implements
private static final int STATE_MSG = 1;
private static final String MSG_DATA = "state";
private Handler mHandler = new Handler() {
private Handler mHandler = new StateHandler(new WeakReference<>(this));
private static class StateHandler extends Handler {
WeakReference<MainActivity> mReference;
public StateHandler(WeakReference<MainActivity> reference) {
mReference = reference;
}
private State lastRouterState = null;
@Override
public void handleMessage(Message msg) {
MainActivity parent = mReference.get();
if (parent == null)
return;
switch (msg.what) {
case STATE_MSG:
State state = msg.getData().getParcelable(MSG_DATA);
if (lastRouterState == null || lastRouterState != state) {
if (mMainFragment == null)
mMainFragment = (MainFragment) getSupportFragmentManager().findFragmentById(R.id.main_fragment);
if (mMainFragment != null) {
mMainFragment.updateState(state);
if (parent.mMainFragment == null)
parent.mMainFragment = (MainFragment) parent.getSupportFragmentManager().findFragmentById(R.id.main_fragment);
if (parent.mMainFragment != null) {
parent.mMainFragment.updateState(state);
lastRouterState = state;
}
if (state == State.RUNNING && mAutoStartFromIntent) {
setResult(RESULT_OK);
finish();
if (state == State.RUNNING && parent.mAutoStartFromIntent) {
parent.setResult(RESULT_OK);
parent.finish();
}
}
break;
@ -269,7 +271,7 @@ public class MainActivity extends I2PActivityBase implements
super.handleMessage(msg);
}
}
};
}
private boolean canStart() {
RouterService svc = _routerService;
@ -299,7 +301,7 @@ public class MainActivity extends I2PActivityBase implements
setPref(PREF_AUTO_START, true);
svc.manualStart();
} else {
(new File(_myDir, "wrapper.log")).delete();
(new File(Util.getFileDir(this), "wrapper.log")).delete();
startRouter();
}
}

View File

@ -17,6 +17,7 @@ import android.widget.Toast;
import net.i2p.I2PAppContext;
import net.i2p.android.router.service.StatSummarizer;
import net.i2p.android.router.util.IntEditTextPreference;
import net.i2p.android.router.util.Util;
import net.i2p.router.RouterContext;
import net.i2p.stat.FrequencyStat;
@ -28,6 +29,7 @@ import net.i2p.util.LogManager;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import java.util.SortedSet;
public class SettingsActivity extends PreferenceActivity {
@ -56,6 +58,7 @@ public class SettingsActivity extends PreferenceActivity {
setupLoggingSettings(this, getPreferenceScreen(), Util.getRouterContext());
} else if (ACTION_PREFS_ADVANCED.equals(action)) {
addPreferencesFromResource(R.xml.settings_advanced);
setupAdvancedSettings(this, getPreferenceScreen(), Util.getRouterContext());
}
} else if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
// Load the legacy preferences headers
@ -153,6 +156,24 @@ public class SettingsActivity extends PreferenceActivity {
}
}
protected static void setupAdvancedSettings(Context context, PreferenceScreen ps, RouterContext ctx) {
if (ctx != null) {
final String udpPortKey = context.getString(R.string.PROP_UDP_INTERNAL_PORT);
final String ntcpPortKey = context.getString(R.string.PROP_I2NP_NTCP_PORT);
IntEditTextPreference udpPort = (IntEditTextPreference) ps.findPreference(udpPortKey);
IntEditTextPreference ntcpPort = (IntEditTextPreference) ps.findPreference(ntcpPortKey);
String udpCurrentPort = ctx.getProperty(udpPortKey, "0");
udpPort.setText(udpCurrentPort);
String ntcpCurrentPort = ctx.getProperty(ntcpPortKey);
if (ntcpCurrentPort != null && ntcpCurrentPort.length() > 0)
ntcpPort.setText(ntcpCurrentPort);
else
ntcpPort.setText(udpCurrentPort);
}
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
@Override
public void onBuildHeaders(List<Header> target) {
@ -188,20 +209,23 @@ public class SettingsActivity extends PreferenceActivity {
protected void onPause() {
List<Properties> lProps = Util.getPropertiesFromPreferences(this);
Properties props = lProps.get(0);
Properties logSettings = lProps.get(1);
Properties propsToRemove = lProps.get(1);
Properties logSettings = lProps.get(2);
boolean restartRequired = Util.checkAndCorrectRouterConfig(this, props);
Set toRemove = propsToRemove.keySet();
boolean restartRequired = Util.checkAndCorrectRouterConfig(this, props, toRemove);
// Apply new config if we are running.
RouterContext rCtx = Util.getRouterContext();
if (rCtx != null) {
rCtx.router().saveConfig(props, null);
rCtx.router().saveConfig(props, toRemove);
// Merge in new log settings
saveLoggingChanges(rCtx, logSettings);
} else {
// Merge in new config settings, write the file.
Util.mergeResourceToFile(this, Util.getFileDir(this), "router.config", R.raw.router_config, props);
Util.mergeResourceToFile(this, Util.getFileDir(this), "router.config", R.raw.router_config, props, toRemove);
// Merge in new log settings
saveLoggingChanges(I2PAppContext.getGlobalContext(), logSettings);
@ -250,6 +274,7 @@ public class SettingsActivity extends PreferenceActivity {
setupLoggingSettings(getActivity(), getPreferenceScreen(), Util.getRouterContext());
} else if ("advanced".equals(settings)) {
addPreferencesFromResource(R.xml.settings_advanced);
setupAdvancedSettings(getActivity(), getPreferenceScreen(), Util.getRouterContext());
}
}
}

View File

@ -1,38 +1,43 @@
package net.i2p.android.router.addressbook;
import android.content.Context;
import android.support.v4.content.AsyncTaskLoader;
import net.i2p.android.router.I2PFragmentBase;
import net.i2p.android.router.util.NamingServiceUtil;
import net.i2p.android.router.util.Util;
import net.i2p.client.naming.NamingService;
import net.i2p.data.Destination;
import net.i2p.router.RouterContext;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.TreeMap;
import net.i2p.android.router.util.NamingServiceUtil;
import net.i2p.android.router.util.Util;
import net.i2p.client.naming.NamingService;
import net.i2p.data.Destination;
import net.i2p.router.RouterContext;
import android.content.Context;
import android.support.v4.content.AsyncTaskLoader;
public class AddressEntryLoader extends AsyncTaskLoader<List<AddressEntry>> {
private RouterContext mRContext;
private I2PFragmentBase.RouterContextProvider mRContextProvider;
private String mBook;
private String mFilter;
private List<AddressEntry> mData;
public AddressEntryLoader(Context context, RouterContext rContext,
public AddressEntryLoader(Context context, I2PFragmentBase.RouterContextProvider rContextProvider,
String book, String filter) {
super(context);
mRContext = rContext;
mRContextProvider = rContextProvider;
mBook = book;
mFilter = filter;
}
@Override
public List<AddressEntry> loadInBackground() {
RouterContext routerContext = mRContextProvider.getRouterContext();
if (routerContext == null)
return null;
// get the names
NamingService ns = NamingServiceUtil.getNamingService(mRContext, mBook);
NamingService ns = NamingServiceUtil.getNamingService(routerContext, mBook);
Util.d("NamingService: " + ns.getName());
// After router shutdown we get nothing... why?
List<AddressEntry> ret = new ArrayList<AddressEntry>();

View File

@ -173,15 +173,19 @@ public class AddressbookFragment extends ListFragment implements
inflater.inflate(R.menu.fragment_addressbook_actions, menu);
mSearchAddressbook = menu.findItem(R.id.action_search_addressbook);
}
@Override
public void onPrepareOptionsMenu(Menu menu) {
// Hide until needed
if (getRouterContext() == null) {
mSearchAddressbook.setVisible(false);
mAddToAddressbook.setVisibility(View.GONE);
if (mAddToAddressbook != null)
mAddToAddressbook.setVisibility(View.GONE);
}
// Only allow adding to private book
if (!PRIVATE_BOOK.equals(mBook)) {
if (!PRIVATE_BOOK.equals(mBook) && mAddToAddressbook != null) {
mAddToAddressbook.setVisibility(View.GONE);
mAddToAddressbook = null;
}
@ -245,27 +249,32 @@ public class AddressbookFragment extends ListFragment implements
public Loader<List<AddressEntry>> onCreateLoader(int id, Bundle args) {
return new AddressEntryLoader(getActivity(),
getRouterContext(), mBook, mCurFilter);
mRouterContextProvider, mBook, mCurFilter);
}
public void onLoadFinished(Loader<List<AddressEntry>> loader,
List<AddressEntry> data) {
if (loader.getId() == (PRIVATE_BOOK.equals(mBook) ?
PRIVATE_LOADER_ID : ROUTER_LOADER_ID)) {
mAdapter.setData(data);
if (data == null)
setEmptyText(getResources().getString(
R.string.router_not_running));
else {
mAdapter.setData(data);
TextView v = (TextView) getListView().findViewWithTag("addressbook_header");
if (mCurFilter != null)
v.setText(getActivity().getResources().getString(
R.string.addressbook_search_header,
data.size()));
else
v.setText("");
TextView v = (TextView) getListView().findViewWithTag("addressbook_header");
if (mCurFilter != null)
v.setText(getActivity().getResources().getString(
R.string.addressbook_search_header,
data.size()));
else
v.setText("");
if (isResumed()) {
setListShown(true);
} else {
setListShownNoAnimation(true);
if (isResumed()) {
setListShown(true);
} else {
setListShownNoAnimation(true);
}
}
}
}

View File

@ -37,7 +37,7 @@ public class NetDbStatsLoader extends AsyncTaskLoader<List<ObjectCounter<String>
ObjectCounter<String> countries = new ObjectCounter<String>();
ObjectCounter<String> transports = new ObjectCounter<String>();
if (mRContext.netDb().isInitialized()) {
if (mRContext != null && mRContext.netDb() != null && mRContext.netDb().isInitialized()) {
Hash us = mRContext.routerHash();
Set<RouterInfo> routers = new TreeSet<RouterInfo>(new RouterInfoComparator());

View File

@ -14,6 +14,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import net.i2p.android.apps.EepGetFetcher;
import net.i2p.android.router.BuildConfig;
import net.i2p.android.router.util.AppCache;
import net.i2p.android.router.util.Util;
@ -45,7 +46,7 @@ public class CacheProvider extends ContentProvider {
//private static final String NONCE = Integer.toString(Math.abs((new java.util.Random()).nextInt()));
private static final String NONCE = "0";
private static final String SCHEME = "content";
public static final String AUTHORITY = "net.i2p.android";
public static final String AUTHORITY = BuildConfig.APPLICATION_ID + ".provider";
/** includes the nonce */
public static final Uri CONTENT_URI = Uri.parse(SCHEME + "://" + AUTHORITY + '/' + NONCE);

View File

@ -0,0 +1,25 @@
package net.i2p.android.router.receiver;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import net.i2p.android.router.I2PConstants;
import net.i2p.android.router.service.RouterService;
public class OnBootReceiver extends BroadcastReceiver implements I2PConstants {
public static final String PREF_START_ON_BOOT = ANDROID_PREF_PREFIX + "startOnBoot";
@Override
public void onReceive(Context context, Intent intent) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
boolean startOnBoot = prefs.getBoolean(PREF_START_ON_BOOT, false);
if (startOnBoot) {
Intent routerService = new Intent(context, RouterService.class);
context.startService(routerService);
}
}
}

View File

@ -0,0 +1,39 @@
package net.i2p.android.router.util;
import android.content.Context;
import android.preference.EditTextPreference;
import android.text.InputType;
import android.util.AttributeSet;
public class IntEditTextPreference extends EditTextPreference {
public IntEditTextPreference(Context context) {
super(context);
getEditText().setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_SIGNED);
}
public IntEditTextPreference(Context context, AttributeSet attrs) {
super(context, attrs);
getEditText().setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_SIGNED);
}
public IntEditTextPreference(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
getEditText().setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_SIGNED);
}
@Override
public CharSequence getSummary() {
return String.format((String) super.getSummary(), getText());
}
@Override
protected String getPersistedString(String defaultReturnValue) {
return String.valueOf(getPersistedInt(-1));
}
@Override
protected boolean persistString(String value) {
return persistInt(Integer.valueOf(value));
}
}

View File

@ -0,0 +1,60 @@
package net.i2p.android.router.util;
import android.content.Context;
import android.preference.EditTextPreference;
import android.text.InputType;
import android.util.AttributeSet;
import net.i2p.android.router.R;
public class PortPreference extends EditTextPreference {
public PortPreference(Context context) {
super(context);
getEditText().setInputType(InputType.TYPE_CLASS_NUMBER);
}
public PortPreference(Context context, AttributeSet attrs) {
super(context, attrs);
getEditText().setInputType(InputType.TYPE_CLASS_NUMBER);
}
public PortPreference(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
getEditText().setInputType(InputType.TYPE_CLASS_NUMBER);
}
@Override
public CharSequence getSummary() {
int port = getPersistedInt(-1);
if (port < 0)
return getContext().getResources().getString(R.string.unset);
else
return String.valueOf(port);
}
@Override
protected String getPersistedString(String defaultReturnValue) {
int port = getPersistedInt(-1);
if (port < 0)
return defaultReturnValue;
else
return String.valueOf(port);
}
@Override
protected boolean persistString(String value) {
if (value == null || value.isEmpty())
return persistInt(-1);
int port;
try {
port = Integer.valueOf(value);
if (port < 0)
port = -1;
} catch (NumberFormatException e) {
port = -1;
}
return persistInt(port);
}
}

View File

@ -8,10 +8,12 @@ import android.content.res.Resources;
import android.preference.PreferenceManager;
import net.i2p.I2PAppContext;
import net.i2p.android.router.I2PConstants;
import net.i2p.data.DataHelper;
import net.i2p.router.Router;
import net.i2p.router.RouterContext;
import net.i2p.router.transport.TransportManager;
import net.i2p.router.transport.udp.UDPTransport;
import net.i2p.util.OrderedProperties;
import java.io.File;
@ -19,13 +21,14 @@ import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Properties;
public abstract class Util {
public abstract class Util implements I2PConstants {
public static String getOurVersion(Context ctx) {
PackageManager pm = ctx.getPackageManager();
String us = ctx.getPackageName();
@ -123,29 +126,33 @@ public abstract class Util {
}
}
/** copied from various private components */
final static String PROP_I2NP_NTCP_PORT = "i2np.ntcp.port";
final static String PROP_I2NP_NTCP_AUTO_PORT = "i2np.ntcp.autoport";
public static List<Properties> getPropertiesFromPreferences(Context context) {
List<Properties> pList = new ArrayList<Properties>();
// Copy prefs
Properties routerProps = new OrderedProperties();
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
// List to store stats for graphing
List<String> statSummaries = new ArrayList<String>();
// Properties to remove
Properties toRemove = new OrderedProperties();
// List to store Log settings
Properties logSettings = new OrderedProperties();
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
Map<String, ?> all = preferences.getAll();
Iterator<String> iterator = all.keySet().iterator();
// get values from the Map and make them strings.
// This loop avoids needing to convert each one, or even know it's type, or if it exists yet.
while (iterator.hasNext()) {
String x = iterator.next();
if ( x.startsWith("i2pandroid.")) // Skip over UI-related I2P Android settings
continue;
else if ( x.startsWith("stat.summaries.")) {
if ( x.startsWith("stat.summaries.")) {
String stat = x.substring("stat.summaries.".length());
String checked = all.get(x).toString();
if (checked.equals("true")) {
@ -160,7 +167,7 @@ public abstract class Util {
String string = all.get(x).toString();
String inverted = Boolean.toString(!Boolean.parseBoolean(string));
routerProps.setProperty(x, inverted);
} else {
} else if ( !x.startsWith(ANDROID_PREF_PREFIX)) { // Skip over UI-related I2P Android settings
String string = all.get(x).toString();
routerProps.setProperty(x, string);
}
@ -176,7 +183,22 @@ public abstract class Util {
routerProps.setProperty("stat.summaries", buf.toString());
}
// See net.i2p.router.web.ConfigNetHandler.saveChanges()
int udpPort = Integer.parseInt(routerProps.getProperty(UDPTransport.PROP_INTERNAL_PORT, "-1"));
System.out.println("UDP port: " + udpPort);
if (udpPort <= 0)
routerProps.remove(UDPTransport.PROP_INTERNAL_PORT);
int ntcpPort = Integer.parseInt(routerProps.getProperty(PROP_I2NP_NTCP_PORT, "-1"));
System.out.println("NTCP port: " + ntcpPort);
boolean ntcpAutoPort = Boolean.parseBoolean(
routerProps.getProperty(PROP_I2NP_NTCP_AUTO_PORT, "true"));
if (ntcpPort <= 0 || ntcpAutoPort) {
routerProps.remove(PROP_I2NP_NTCP_PORT);
toRemove.setProperty(PROP_I2NP_NTCP_PORT, "");
}
pList.add(routerProps);
pList.add(toRemove);
pList.add(logSettings);
return pList;
@ -192,8 +214,12 @@ public abstract class Util {
boolToAdd.put(TransportManager.PROP_ENABLE_UPNP, true);
boolToAdd.put(TransportManager.PROP_ENABLE_NTCP, true);
boolToAdd.put(TransportManager.PROP_ENABLE_UDP, true);
boolToAdd.put(PROP_I2NP_NTCP_AUTO_PORT, true);
boolToAdd.put(Router.PROP_HIDDEN, false);
strToAdd.put(UDPTransport.PROP_INTERNAL_PORT, "-1");
strToAdd.put(PROP_I2NP_NTCP_PORT, "-1");
booleanOptionsRequiringRestart.putAll(boolToAdd);
stringOptionsRequiringRestart.putAll(strToAdd);
}
@ -209,9 +235,10 @@ public abstract class Util {
* </li></ul>
*
* @param props a Properties object containing the router.config
* @param toRemove a Collection of properties that will be removed
* @return true if the router needs to be restarted.
*/
public static boolean checkAndCorrectRouterConfig(Context context, Properties props) {
public static boolean checkAndCorrectRouterConfig(Context context, Properties props, Collection<String> toRemove) {
// Disable UPnP on mobile networks, ignoring user's configuration
// TODO disabled until changes elsewhere are finished
//if (Connectivity.isConnectedMobile(context)) {
@ -225,17 +252,17 @@ public abstract class Util {
for (Map.Entry<String, Boolean> option : booleanOptionsRequiringRestart.entrySet()) {
String propName = option.getKey();
boolean defaultValue = option.getValue();
restartRequired |= (
Boolean.parseBoolean(props.getProperty(propName, Boolean.toString(defaultValue))) !=
(defaultValue ? rCtx.getBooleanPropertyDefaultTrue(propName) : rCtx.getBooleanProperty(propName))
);
boolean currentValue = defaultValue ? rCtx.getBooleanPropertyDefaultTrue(propName) : rCtx.getBooleanProperty(propName);
boolean newValue = Boolean.parseBoolean(props.getProperty(propName, Boolean.toString(defaultValue)));
restartRequired |= (currentValue != newValue);
}
if (!restartRequired) { // Cut out now if we already know the answer
for (Map.Entry<String, String> option : stringOptionsRequiringRestart.entrySet()) {
String propName = option.getKey();
String defaultValue = option.getValue();
restartRequired |= props.getProperty(propName, defaultValue).equals(
rCtx.getProperty(propName, defaultValue));
String currentValue = rCtx.getProperty(propName, defaultValue);
String newValue = props.getProperty(propName, defaultValue);
restartRequired |= !currentValue.equals(newValue);
}
}
}
@ -256,7 +283,7 @@ public abstract class Util {
* @param props properties to set
*/
public static void writePropertiesToFile(Context ctx, String dir, String file, Properties props) {
mergeResourceToFile(ctx, dir, file, 0, props);
mergeResourceToFile(ctx, dir, file, 0, props, null);
}
/**
@ -267,8 +294,10 @@ public abstract class Util {
* @param file relative to dir
* @param resID the ID of the default resource, or 0
* @param userProps local properties or null
* @param toRemove properties to remove, or null
*/
public static void mergeResourceToFile(Context ctx, String dir, String file, int resID, Properties userProps) {
public static void mergeResourceToFile(Context ctx, String dir, String file, int resID,
Properties userProps, Collection<String> toRemove) {
InputStream fin = null;
InputStream in = null;
@ -297,6 +326,11 @@ public abstract class Util {
// override with user settings
if (userProps != null)
props.putAll(userProps);
if (toRemove != null) {
for (String key : toRemove) {
props.remove(key);
}
}
File path = new File(dir, file);
DataHelper.storeProps(props, path);

View File

@ -194,8 +194,7 @@ public class I2PWebViewClient extends WebViewClient {
/**
* This should always be a content url
*/
void deleteCurrentPageCache(WebView view) {
String url = view.getUrl();
void deleteCurrentPageCache(WebView view, String url) {
Uri uri = Uri.parse(url);
if (CONTENT.equals(uri.getScheme())) {
try {

View File

@ -22,6 +22,7 @@ import net.i2p.android.router.R;
public class WebFragment extends I2PFragmentBase {
private I2PWebViewClient _wvClient;
private String _uriStr;
public final static String HTML_URI = "html_url";
public final static String HTML_RESOURCE_ID = "html_resource_id";
@ -48,9 +49,9 @@ public class WebFragment extends I2PFragmentBase {
wv.getSettings().setBuiltInZoomControls(true);
// http://stackoverflow.com/questions/2369310/webview-double-tap-zoom-not-working-on-a-motorola-droid-a855
wv.getSettings().setUseWideViewPort(true);
String uriStr = getArguments().getString(HTML_URI);
if (uriStr != null) {
Uri uri = Uri.parse(uriStr);
_uriStr = getArguments().getString(HTML_URI);
if (_uriStr != null) {
Uri uri = Uri.parse(_uriStr);
//wv.getSettings().setLoadsImagesAutomatically(true);
//wv.loadUrl(uri.toString());
// go thru the client so .i2p will work too
@ -115,14 +116,18 @@ public class WebFragment extends I2PFragmentBase {
_wvClient.cancelAll();
wv.stopLoading();
String url = wv.getUrl();
Uri uri = Uri.parse(url);
// If a resource, _uriStr == null but url != null (resource loads don't fail)
// If a URL, _uriStr != null and url might be null (if pageload failed)
if (url != null && (!url.equals(_uriStr)))
_uriStr = url;
Uri uri = Uri.parse(_uriStr);
if ("data".equals(uri.getScheme())) {
// welcome page... or just do nothing ?
wv.reload();
} else {
// wv.reload() doesn't call shouldOverrideUrlLoading(), so do it this way
_wvClient.deleteCurrentPageCache(wv);
_wvClient.shouldOverrideUrlLoading(wv, url);
_wvClient.deleteCurrentPageCache(wv, _uriStr);
_wvClient.shouldOverrideUrlLoading(wv, _uriStr);
}
return true;

View File

@ -3,9 +3,14 @@
<body>
<h2>How to configure Orfox:</h2>
<ol>
<li>Type <code>about:config</code> into the URL bar.</li>
<li>Search for <code>network.proxy.http</code>.</li>
<li>Change the value of <code>network.proxy.http_port</code> to <code>4444</code>.</li>
<li>Install the ProxyMob add-on. Click <a
href="https://guardianproject.info/downloads/proxymob.xpi">HERE</a>, and choose to open
the URL in Firefox.
</li>
<li>In the main Firefox menu, click "Tools", then "Add-ons".</li>
<li>Click on "Proxy Mobile".</li>
<li>Change the value of "HTTP Proxy Port" to <code>4444</code>.</li>
<li>You can now browse I2P eepsites!</li>
</ol>
</body>
</html>

View File

@ -3,10 +3,14 @@
<body>
<h2>How to configure Firefox:</h2>
<ol>
<li>Type <code>about:config</code> into the URL bar.</li>
<li>Search for <code>network.proxy.http</code>.</li>
<li>Change the value of <code>network.proxy.http</code> to <code>localhost</code>.</li>
<li>Change the value of <code>network.proxy.http_port</code> to <code>4444</code>.</li>
<li>Install the ProxyMob add-on. Click <a
href="https://guardianproject.info/downloads/proxymob.xpi">HERE</a>, and choose to open
the URL in Firefox.
</li>
<li>In the main Firefox menu, click "Tools", then "Add-ons".</li>
<li>Click on "Proxy Mobile".</li>
<li>Change the value of "HTTP Proxy Port" to <code>4444</code>.</li>
<li>You can now browse I2P eepsites!</li>
</ol>
</body>
</html>

View File

@ -50,14 +50,14 @@ tunnel.1.option.outbound.lengthVariance=0
tunnel.1.option.outbound.priority=15
tunnel.1.startOnLoad=true
# irc
tunnel.2.name=IRC welterde
tunnel.2.description=IRC tunnel to welterde's network
tunnel.2.type=ircclient
# postman's SMTP server - see hq.postman.i2p
tunnel.2.name=smtp.postman.i2p
tunnel.2.description=smtp server
tunnel.2.type=client
tunnel.2.sharedClient=true
tunnel.2.interface=127.0.0.1
tunnel.2.listenPort=6669
tunnel.2.targetDestination=irc.welterde.i2p
tunnel.2.listenPort=7659
tunnel.2.targetDestination=smtp.postman.i2p:25
tunnel.2.i2cpHost=127.0.0.1
tunnel.2.i2cpPort=7654
tunnel.2.option.inbound.nickname=shared clients
@ -67,20 +67,22 @@ tunnel.2.option.i2cp.reduceIdleTime=600000
tunnel.2.option.i2cp.reduceOnIdle=true
tunnel.2.option.i2cp.reduceQuantity=1
tunnel.2.option.i2p.streaming.connectDelay=1000
tunnel.2.option.i2p.streaming.maxWindowSize=16
tunnel.2.option.inbound.length=2
tunnel.2.option.inbound.lengthVariance=0
tunnel.2.option.outbound.length=2
tunnel.2.option.outbound.lengthVariance=0
tunnel.2.option.outbound.priority=15
tunnel.2.startOnLoad=true
# irc irc.killyourtv.i2p
tunnel.3.name=KYTV IRC
tunnel.3.description=IRC tunnel to KillYourTV's network
tunnel.3.type=ircclient
# postman's POP3 server - see hq.postman.i2p
tunnel.3.name=pop3.postman.i2p
tunnel.3.description=pop3 server
tunnel.3.type=client
tunnel.3.sharedClient=true
tunnel.3.interface=127.0.0.1
tunnel.3.listenPort=6670
tunnel.3.targetDestination=irc.killyourtv.i2p
tunnel.3.listenPort=7660
tunnel.3.targetDestination=pop.postman.i2p:110
tunnel.3.i2cpHost=127.0.0.1
tunnel.3.i2cpPort=7654
tunnel.3.option.inbound.nickname=shared clients
@ -90,8 +92,60 @@ tunnel.3.option.i2cp.reduceIdleTime=600000
tunnel.3.option.i2cp.reduceOnIdle=true
tunnel.3.option.i2cp.reduceQuantity=1
tunnel.3.option.i2p.streaming.connectDelay=1000
tunnel.3.option.i2p.streaming.maxWindowSize=16
tunnel.3.option.inbound.length=2
tunnel.3.option.inbound.lengthVariance=0
tunnel.3.option.outbound.length=2
tunnel.3.option.outbound.lengthVariance=0
tunnel.3.startOnLoad=true
tunnel.3.option.outbound.priority=15
tunnel.3.startOnLoad=true
# irc
tunnel.4.name=IRC welterde
tunnel.4.description=IRC tunnel to welterde's network
tunnel.4.type=ircclient
tunnel.4.sharedClient=true
tunnel.4.interface=127.0.0.1
tunnel.4.listenPort=6669
tunnel.4.targetDestination=irc.welterde.i2p
tunnel.4.i2cpHost=127.0.0.1
tunnel.4.i2cpPort=7654
tunnel.4.option.inbound.nickname=shared clients
tunnel.4.option.outbound.nickname=shared clients
tunnel.4.option.i2cp.delayOpen=true
tunnel.4.option.i2cp.reduceIdleTime=600000
tunnel.4.option.i2cp.reduceOnIdle=true
tunnel.4.option.i2cp.reduceQuantity=1
tunnel.4.option.i2p.streaming.connectDelay=1000
tunnel.4.option.i2p.streaming.maxWindowSize=16
tunnel.4.option.inbound.length=2
tunnel.4.option.inbound.lengthVariance=0
tunnel.4.option.outbound.length=2
tunnel.4.option.outbound.lengthVariance=0
tunnel.4.option.outbound.priority=15
tunnel.4.startOnLoad=true
# irc irc.killyourtv.i2p
tunnel.5.name=KYTV IRC
tunnel.5.description=IRC tunnel to KillYourTV's network
tunnel.5.type=ircclient
tunnel.5.sharedClient=true
tunnel.5.interface=127.0.0.1
tunnel.5.listenPort=6670
tunnel.5.targetDestination=irc.killyourtv.i2p
tunnel.5.i2cpHost=127.0.0.1
tunnel.5.i2cpPort=7654
tunnel.5.option.inbound.nickname=shared clients
tunnel.5.option.outbound.nickname=shared clients
tunnel.5.option.i2cp.delayOpen=true
tunnel.5.option.i2cp.reduceIdleTime=600000
tunnel.5.option.i2cp.reduceOnIdle=true
tunnel.5.option.i2cp.reduceQuantity=1
tunnel.5.option.i2p.streaming.connectDelay=1000
tunnel.5.option.i2p.streaming.maxWindowSize=16
tunnel.5.option.inbound.length=2
tunnel.5.option.inbound.lengthVariance=0
tunnel.5.option.outbound.length=2
tunnel.5.option.outbound.lengthVariance=0
tunnel.5.option.outbound.priority=15
tunnel.5.startOnLoad=true

View File

@ -2,8 +2,8 @@
<resources>
<string name="app_name">I2P</string>
<string name="desc_i2p_logo">I2P-Logo</string>
<string name="welcome_new_install">Willkommen bei I2P! Diese App ist Alpha-Software und bietet keine starke Anonymität. Bitte lies die Veröffentlichungshinweise und die Lizenzeninformationen.</string>
<string name="welcome_new_version">Eine neue Version wurde installiert. Bitte lies die Veröffentlichungshinweise. Version:</string>
<string name="welcome_new_install">Willkommen bei I2P! Diese App ist Alpha-Software und bietet keine starke Anonymität. Bitte lesen Sie die Veröffentlichungshinweise und die Lizenzinformationen.</string>
<string name="welcome_new_version">Eine neue Version wurde installiert. Bitte lesen Sie die Veröffentlichungshinweise. Version:</string>
<string name="label_home">Einstellungen und Status</string>
<string name="label_tunnels">Tunnel</string>
<string name="label_status">Status</string>
@ -12,14 +12,14 @@
<string name="label_i2ptunnel_client">Kliententunnel</string>
<string name="label_i2ptunnel_server">Servertunnel</string>
<string name="label_logs">Statusberichte</string>
<string name="label_error_logs">Fehler-Protokolle</string>
<string name="label_error_logs">Fehlerprotokolle</string>
<string name="label_info_and_pages">Informationen und Seiten</string>
<string name="label_welcome_page">Begrüßungsseite</string>
<string name="label_news">Neuigkeiten</string>
<string name="label_peers_status">Teilnehmer</string>
<string name="label_release_notes">Veröffentlichungshinweise</string>
<string name="label_licenses">Lizenzen</string>
<string name="label_nonanon_info">Nichtanonyme Informationen</string>
<string name="label_nonanon_info">Nicht-anonyme Informationen</string>
<string name="label_browse">Surfen</string>
<string name="label_graphs">Graphen</string>
<string name="button_router_off">Lange drücken, um I2P zu starten</string>
@ -30,13 +30,13 @@
<string name="char_server_tunnel">S</string>
<string name="no_client_tunnels_running">Keine Kliententunnel laufen noch.</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 Menu erledigen).</string>
<string name="first_start_title">Herzlichen Glückwunsch, du hast I2P installiert!</string>
<string name="first_start_welcome"><b>Willkommen im I2P</b> Bitte <b>hab Geduld</b>, während I2P startet und Teilnehmer findet.</string>
<string name="first_start_read">Während du wartest, lies bitte die Veröffentlichungshinweise und die Startseite.</string>
<string name="first_start_faq">Sobald du Kliententunnels hast, <b>lies</b> bitte unsere FAQs:</string>
<string name="first_start_faq_nonanon">Oder benutze unsere nicht-anonymen Links, wenn du nicht auf die Tunnel warten willst.</string>
<string name="first_start_irc">Verbinde dich mit deinem IRC-Klienten zu <b>localhost:6668</b> und schau bei uns vorbei:</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="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>
<string name="first_start_faq">Sobald Sie Kliententunnels haben, <b>lesen</b> Sie bitte unsere FAQ:</string>
<string name="first_start_faq_nonanon">Oder verwenden Sie unsere nicht-anonymen Links, wenn Sie nicht auf die Tunnel warten wollen.</string>
<string name="first_start_irc">Verbinden Sie Ihren IRC-Klienten mit <b>localhost:6668</b> und schauen Sie bei uns vorbei:</string>
<string name="drawer_open">Navigation öffnen</string>
<string name="drawer_close">Navigation schließen</string>
<string name="action_search">Suche</string>
@ -45,22 +45,22 @@
<string name="action_delete">Löschen</string>
<string name="action_router_start">Router starten</string>
<string name="action_router_stop">Router stoppen</string>
<string name="action_i2ptunnel_start">Starte den Tunnel</string>
<string name="action_i2ptunnel_stop">Stoppe den Tunnel</string>
<string name="action_i2ptunnel_start">Tunnel starten</string>
<string name="action_i2ptunnel_stop">Tunnel stoppen</string>
<string name="action_i2ptunnel_start_all">Alle Tunnel starten</string>
<string name="action_i2ptunnel_stop_all">Alle Tunnel anhalten</string>
<string name="action_i2ptunnel_restart_all">Alle Tunnel neu starten</string>
<string name="action_reload">Neu laden</string>
<string name="action_refresh">Auffrischen</string>
<string name="hint_search_addressbook">Durchsuche das Adressbuch</string>
<string name="hint_search_addressbook">Adressbuch durchsuchen</string>
<string name="action_reload_subscriptions">Abonnements neu laden</string>
<string name="router_not_running">Der Router läuft nicht.</string>
<string name="stats_not_ready">Der Statistikmanager ist noch nicht bereit. Versuch es später erneut.</string>
<string name="stats_not_ready">Der Statistikmanager ist noch nicht bereit. Versuchen Sie es später noch einmal.</string>
<string name="no_graphs_configured">Keine Graphen konfiguriert. Sie können die Statistiken zum Erstellen der Graphen im Einstellungsmenu auswählen. Jede Änderung wird nach 60 Sekunden aktiv gesetzt.</string>
<string name="configure_graphs">Graphen konfigurieren</string>
<string name="graphs_not_ready">Die Graphen sind noch nicht bereit oder der Router läuft nicht. Probiere es später nochmal.</string>
<string name="netdb_routers_empty">Keine Router in deiner NetDB.</string>
<string name="netdb_leases_empty">Keine LeaseSets in deiner NetDB</string>
<string name="graphs_not_ready">Die Graphen sind noch nicht bereit oder der Router läuft nicht. Versuchen Sie es später noch einmal.</string>
<string name="netdb_routers_empty">Keine Router in Ihrer NetDB.</string>
<string name="netdb_leases_empty">Keine LeaseSets in Ihrer NetDB.</string>
<string name="notification_status_bw">Bandbreite: %1$s KB/s eingehend / %2$s KB/s ausgehend</string>
<string name="notification_status_peers">Teilnehmer: %1$d aktiv, %2$d bekannt</string>
<string name="notification_status_expl">Erkundungstunnel: %1$d/%2$d</string>
@ -70,10 +70,10 @@
<string name="settings_desc_subscriptions">Abonnements-URLs</string>
<string name="settings_label_bandwidth_net">Bandbreite und Netzwerk</string>
<string name="settings_label_bandwidth">Bandbreite</string>
<string name="settings_label_bw_inbound">maximal eingehend</string>
<string name="settings_desc_bw_inbound">maximal ausgehend</string>
<string name="settings_label_bw_outbound">ausgehende Übertragungsgeschwindigkeit</string>
<string name="settings_desc_bw_outbound">maximale ausgehende Übertragungsgeschwindigkeit</string>
<string name="settings_label_bw_inbound">Eingehende Übertragungsgeschwindigkeit</string>
<string name="settings_desc_bw_inbound">Maximale eingehende Übertragungsgeschwindigkeit</string>
<string name="settings_label_bw_outbound">Ausgehende Übertragungsgeschwindigkeit</string>
<string name="settings_desc_bw_outbound">Maximale ausgehende Übertragungsgeschwindigkeit</string>
<string name="settings_label_network">Netzwerk</string>
<string name="settings_label_hiddenMode">Beteiligung</string>
<string name="settings_desc_hiddenMode">Tarnmodus ausschalten</string>
@ -88,11 +88,11 @@
<string name="settings_label_default_log_level">Standard-Detailtiefe der Statusberichte</string>
<string name="settings_label_advanced">Erweitert</string>
<string name="settings_label_showStats">Routerstatistiken</string>
<string name="settings_summ_showStats">Zeige ausführliche Statistiken in der Hauptkonsole.</string>
<string name="settings_summ_showStats">Ausführliche Statistiken in der Hauptkonsole anzeigen.</string>
<string name="settings_label_transports">Transporte</string>
<string name="settings_label_maxConns">max. Verbindungen</string>
<string name="settings_label_maxConns">Max. Verbindungen</string>
<string name="settings_label_i2cp">I2CP-Benutzeroberfläche</string>
<string name="settings_desc_i2cp">lausche auf Port 7654</string>
<string name="settings_desc_i2cp">Auf Port 7654 lauschen</string>
<string name="settings_label_exploratory_pool">Satz an Erkundungstunneln</string>
<string name="settings_desc_exploratory_pool">Tunnelparameter</string>
<string name="settings_label_expl_inbound">Eingehende Tunnel</string>
@ -115,15 +115,15 @@
<string name="about_project">Projektseite:</string>
<string name="about_bugs">Fehlermeldungen und Unterstützung:</string>
<string name="about_helpwanted">Unterstützer gesucht!!</string>
<string name="about_volunteer">Du willst mithelfen, die App besser zu machen? Dann schau in das Android forum:</string>
<string name="about_donate">Wenn du Geld oder Bitcoins spenden wilst, damit wir mehr Android-Geräte zum Testen kaufen können, dann schau auf:</string>
<string name="about_volunteer">Sie wollen mithelfen, die App besser zu machen? Dann schauen Sie in das Android-Forum:</string>
<string name="about_donate">Sie wollen Geld oder Bitcoins spenden, damit wir mehr Android-Geräte zum Entwickeln und Testen kaufen können? Gehen Sie auf:</string>
<string name="menu_help">Hilfe</string>
<string name="general">Allgemein</string>
<string name="addressbook_search_header">%s gefunden</string>
<string name="addressbook_add_wizard_k_name">Name</string>
<string name="addressbook_add_wizard_k_destination">Ziel</string>
<string name="addressbook_add_wizard_desc_name">Der Name</string>
<string name="addressbook_add_wizard_desc_destination">Kopiere den B64-Code des Ziels hier her. Falls du einen Dateimanager installiert hast, kannst du die Textdatei auswählen, welche den B64-Code enthält.</string>
<string name="addressbook_add_wizard_desc_destination">Kopieren Sie den B64-Code des Ziels hier her. Falls Sie einen Dateimanager installiert haben, können Sie die Textdatei auswählen, welche den B64-Code enthält.</string>
<string name="nsu_iae_illegal_char">Hostname \"%1$s\" beinhaltet ein unzulässiges Zeichen %2$s</string>
<string name="nsu_iae_cannot_start_with">Hostnamen dürfen nicht mit \"%s\" beginnen</string>
<string name="nsu_iae_cannot_end_with">Hostnamen dürfen nicht auf \"%s\" enden</string>
@ -141,12 +141,14 @@
<string name="i2ptunnel_type_streamrclient">Streamr-Klient</string>
<string name="i2ptunnel_type_streamrserver">Streamr-Server</string>
<string name="i2ptunnel_type_httpbidirserver">HTTP bidirektional</string>
<string name="i2ptunnel_not_initialized">Tunnel sind noch nicht initialisiert. Bitte lade die Seite in zwei Minuten erneut.</string>
<string name="install_recommended_app">Empfohlene App installieren?</string>
<string name="app_needed_for_this_tunnel_type">Sie müssen eine App installieren, um diesen Tunnel nutzen zu können. Möchten Sie die empfohlene App installieren?</string>
<string name="i2ptunnel_not_initialized">Tunnel sind noch nicht initialisiert. Bitte laden Sie die Seite in zwei Minuten erneut.</string>
<string name="i2ptunnel_new_tunnel">Neuer Tunnel</string>
<string name="i2ptunnel_msg_config_saved">Änderungen gespeichert</string>
<string name="i2ptunnel_msg_config_save_failed">Speichern der Änderungen fehlgeschlagen</string>
<string name="i2ptunnel_msg_tunnel_starting">Starte den Tunnel</string>
<string name="i2ptunnel_msg_tunnel_stopping">Stoppe den Tunnel</string>
<string name="i2ptunnel_msg_tunnel_starting">Tunnel wird gestartet</string>
<string name="i2ptunnel_msg_tunnel_stopping">Tunnel wird gestoppt</string>
<string name="i2ptunnel_delete_confirm_message">Tunnel löschen?</string>
<string name="i2ptunnel_delete_confirm_button">Tunnel löschen</string>
<string name="i2ptunnel_wizard_k_client_server">Klient oder Server</string>
@ -159,19 +161,19 @@
<string name="i2ptunnel_wizard_k_outproxies">Outproxys</string>
<string name="i2ptunnel_wizard_k_target_host">Zielhost</string>
<string name="i2ptunnel_wizard_k_target_port">Zielport</string>
<string name="i2ptunnel_wizard_k_reachable_on">erreichbar unter</string>
<string name="i2ptunnel_wizard_k_binding_port">zu benutzender Port</string>
<string name="i2ptunnel_wizard_k_reachable_on">Erreichbar unter</string>
<string name="i2ptunnel_wizard_k_binding_port">Zu benutzender Port</string>
<string name="i2ptunnel_wizard_k_auto_start">Autostart</string>
<string name="next">Nächste</string>
<string name="prev">Vorherige</string>
<string name="finish">Absenden</string>
<string name="review">Überprüfen</string>
<string name="enabled">Aktiviert</string>
<string name="i2ptunnel_wizard_desc_name">Der Name des Tunnels - zur Unterscheidung in der Tunnelliste.</string>
<string name="i2ptunnel_wizard_desc_desc">Eine optionale aber für dich aussagekräftige Beschreibung des Tunnels.</string>
<string name="i2ptunnel_wizard_desc_dest">Bitte gib hier das I2P-Ziel des Dienstes ein, zu dem dieser Tunnel führen soll. Dies kann im Basis64-Format (langer Schlüssel) geschehen, oder eine I2P URL aus dem Adressbuch sein.</string>
<string name="i2ptunnel_wizard_desc_outproxies">Falls du Outproxys für diese Tunnel-Art kennst (HTTP oder SOCKS), gib sie hier kommagetrennt ein.</string>
<string name="i2ptunnel_wizard_desc_target_host">Das ist die IP unter der der Dienst erreichbar ist - meistens die 127.0.0.1</string>
<string name="i2ptunnel_wizard_desc_name">Der Name des Tunnels zur Erkennung in der Tunnelliste.</string>
<string name="i2ptunnel_wizard_desc_desc">Eine optionale, aber für Sie aussagekräftige Beschreibung des Tunnels.</string>
<string name="i2ptunnel_wizard_desc_dest">Bitte geben Sie hier das I2P-Ziel des Dienstes ein, zu dem dieser Tunnel führen soll. Dies kann ein voller Basis64-Zielschlüssel oder eine I2P URL aus dem Adressbuch sein.</string>
<string name="i2ptunnel_wizard_desc_outproxies">Falls Sie Outproxys für diese Tunnelart kennen (entweder HTTP oder SOCKS), geben Sie sie hier ein. Trennen Sie mehrere Proxies mit Kommas.</string>
<string name="i2ptunnel_wizard_desc_target_host">Das ist die IP, unter der der Dienst erreichbar ist. Normalerweise ist er auf der gleichen Maschine, also wird 127.0.0.1 automatisch ausgefüllt.</string>
<string name="i2ptunnel_wizard_desc_target_port">Dies ist der Port, unter dem der Dienst erreichbar ist.</string>
<string name="i2ptunnel_wizard_desc_reachable_on">Dies legt fest, welche Computer oder Smartphones den Tunnel erreichen können.</string>
<string name="i2ptunnel_wizard_desc_binding_port">Dies ist der Port, über den der Klient den Tunnel lokal erreichen kann. Das ist auch der Klient-Port des bidirektionalen HTTP-Server-Tunnels.</string>

View File

@ -69,6 +69,8 @@
<string name="settings_enable">Activar</string>
<string name="settings_desc_subscriptions">URLs de subscripción</string>
<string name="settings_label_bandwidth_net">Ancho de banda y red</string>
<string name="settings_label_startOnBoot">Iniciar I2P al arrancar</string>
<string name="settings_desc_startOnBoot">Conectar automáticamente a I2P cuando arranque su dispositivo Android</string>
<string name="settings_label_bandwidth">Ancho de banda</string>
<string name="settings_label_bw_inbound">Velocidad de descarga</string>
<string name="settings_desc_bw_inbound">Velocidad máxima de descarga</string>
@ -141,6 +143,8 @@
<string name="i2ptunnel_type_streamrclient">Cliente Streamr</string>
<string name="i2ptunnel_type_streamrserver">Servidor Streamr</string>
<string name="i2ptunnel_type_httpbidirserver">HTTP bidireccional</string>
<string name="install_recommended_app">¿Instalar aplicación recomendada?</string>
<string name="app_needed_for_this_tunnel_type">Tiene que instalar una aplicación para usar este túnel. ¿Desea instalar la aplicación recomendada?</string>
<string name="i2ptunnel_not_initialized">Los túneles no están inicializados aún, por favor vuelva a cargar en dos minutos.</string>
<string name="i2ptunnel_new_tunnel">Nuevo túnel</string>
<string name="i2ptunnel_msg_config_saved">Se guardaron los cambios en la configuración </string>
@ -189,4 +193,5 @@
<string name="error_logs_copied_to_clipboard">Los registros (logs) de errores se copiaron al portapapeles</string>
<string name="logs_copied_to_clipboard">Los registros (logs) se copiaron al portapapeles</string>
<string name="label_browser_configuration">Configuración del navegador</string>
<string name="unset">No configurado</string>
</resources>

View File

@ -0,0 +1,121 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="app_name">I2P</string>
<string name="desc_i2p_logo">I2P-logo</string>
<string name="welcome_new_install">Tervetuloa I2P-sovellukseen! Täsmä sovellus on ALFA-ohjelmisto ja se ei tarjoa vahvaa nimettömyyttä. Lue julkaisutiedot ja linsessitiedot.</string>
<string name="welcome_new_version">Uusi versio asennettu. Lue julkaisutiedot. Versio:</string>
<string name="label_tunnels">Tunnelit</string>
<string name="label_status">Tila</string>
<string name="label_addressbook">Osoitekirja</string>
<string name="label_i2ptunnel">I2PTunnel</string>
<string name="label_i2ptunnel_client">Asiakastunnelit</string>
<string name="label_i2ptunnel_server">Palvelintunnelit</string>
<string name="label_logs">Lokitiedostot</string>
<string name="label_error_logs">Virhelokitiedostot</string>
<string name="label_info_and_pages">Tietoja ja sivut</string>
<string name="label_welcome_page">Tervetuloa-sivu</string>
<string name="label_news">Uutiset</string>
<string name="label_release_notes">Julkaisutiedot</string>
<string name="label_licenses">Lisenssit</string>
<string name="label_nonanon_info">Ei-anonyymit tiedot</string>
<string name="label_browse">Selaa</string>
<string name="label_graphs">Kuvaajat</string>
<string name="button_router_off">Pitkä painallus käynnistää I2P-sovelluksen</string>
<string name="button_router_on">I2P on käynnissä (paina pitkään pysäyttääksesi)</string>
<!--Character to indicate a client tunnel. Usually first letter of the word "client".-->
<string name="char_client_tunnel">A</string>
<!--Character to indicate a server tunnel. Usually first letter of the word "server".-->
<string name="char_server_tunnel">P</string>
<string name="no_client_tunnels_running">Yhtään asiakastunneli ei ole vielä käynnissä.</string>
<string name="configure_browser_title">Asetetaanko selain?</string>
<string name="configure_browser_for_i2p">Haluaisitko asettaa selaimesi katsomaan I2P-sivustoja? (Voit myös tehdä tämän myöhemmin opaste-valikosta).</string>
<string name="first_start_title">Onnittelut I2P:n asentamisesta!</string>
<string name="first_start_welcome"><b>Tervetuloa I2P-sovellukseen!</b> <b>Ole kärsivällinen</b> kun I2P käynnistyy ja löytää vertaisverkkovastaanottajia.</string>
<string name="first_start_read">Odottaessa lue julkaisutiedot ja tervetuloa-sivu.</string>
<string name="first_start_faq">Kun asiakastunnelit ovat valmiit, <b>tarkista</b> UKK-kysymykset:</string>
<string name="first_start_faq_nonanon">Tai käytä ei-anonyymeja linkkejä, jos et halua odottaa tunneleita:</string>
<string name="action_search">Haku</string>
<string name="action_add">Lisää</string>
<string name="action_edit">Muokkaa</string>
<string name="action_delete">Poista</string>
<string name="action_router_start">Käynnistä reititin</string>
<string name="action_router_stop">Pysäytä reititin</string>
<string name="action_i2ptunnel_start">Käynnistä tunneli</string>
<string name="action_i2ptunnel_stop">Pysäytä tunneli</string>
<string name="action_i2ptunnel_start_all">Käynnistä kaikki tunnelit</string>
<string name="action_i2ptunnel_stop_all">Pysäytä kaikki tunnelit</string>
<string name="action_i2ptunnel_restart_all">Käynnistä kaikki tunnelit uudelleen</string>
<string name="action_reload">Lataa uudelleen</string>
<string name="action_refresh">Virkistä</string>
<string name="hint_search_addressbook">Etsi osoitekirja</string>
<string name="router_not_running">Reititin ei ole käynnissä.</string>
<string name="notification_status_bw">Kaistanleveys: %1$s kilotavua/s alaspäin / %2$s kilotavua/s ylöspäin</string>
<string name="notification_status_peers">Vertaisverkkovastaanottajaa: %1$d aktiivista, %2$d tunnettua</string>
<string name="notification_status_client">Asiakastunnelit: %1$d/%2$d</string>
<string name="menu_settings">Asetukset</string>
<string name="settings_enable">Ota käyttöön</string>
<string name="settings_label_bandwidth_net">Kaistanleveys ja verkko</string>
<string name="settings_label_bandwidth">Kaistanleveys</string>
<string name="settings_label_bw_inbound">Tulonopeus</string>
<string name="settings_desc_bw_inbound">Enimmäistulonopeus</string>
<string name="settings_label_bw_outbound">Lähtönopeus</string>
<string name="settings_desc_bw_outbound">Enimmäislähtönopeus</string>
<string name="settings_label_network">Verkko</string>
<string name="settings_desc_hiddenMode">Käännä piilotila pois päältä</string>
<string name="settings_label_showStats">Reititintilastot</string>
<string name="settings_label_maxConns">Yhteyksien enimmäismäärä</string>
<string name="settings_label_i2cp">I2CP-käyttöliittymä</string>
<string name="settings_desc_i2cp">Kuuntele portissa 7654</string>
<string name="settings_desc_exploratory_pool">Tunneliparametrit</string>
<string name="settings_label_expl_inbound">Tulotunnelit</string>
<string name="settings_label_expl_outbound">Lähtötunnelit</string>
<string name="settings_label_expl_length">Pituus</string>
<string name="settings_summ_expl_lengthVariance">%s</string>
<string name="settings_summ_expl_quantity">%s tunnelia</string>
<string name="settings_desc_expl_quantity">Kuinka monta tunnelia</string>
<string name="settings_summ_expl_backupQuantity">%s tunnelia</string>
<string name="menu_about">Ohjelmasta</string>
<string name="about_version">Versio:</string>
<string name="about_project">Hankekoti:</string>
<string name="about_helpwanted">Etsitään apua!</string>
<string name="menu_help">Opaste</string>
<string name="general">Yleistä</string>
<string name="addressbook_add_wizard_k_name">Nimi</string>
<string name="addressbook_add_wizard_k_destination">Kohde</string>
<string name="addressbook_add_wizard_desc_name">Nimi</string>
<string name="i2ptunnel_type_httpclient">HTTP-asiakas</string>
<string name="i2ptunnel_type_ircclient">IRC-asiakas</string>
<string name="i2ptunnel_type_server">Vakiopalvelin</string>
<string name="i2ptunnel_type_httpserver">HTTP-palvelin</string>
<string name="i2ptunnel_type_ircserver">IRC-palvelin</string>
<string name="i2ptunnel_new_tunnel">Uusi tunneli</string>
<string name="i2ptunnel_msg_tunnel_starting">Käynnistetään tunneli</string>
<string name="i2ptunnel_msg_tunnel_stopping">Pysäytetään tunneli</string>
<string name="i2ptunnel_delete_confirm_message">Poistetaanko tunneli?</string>
<string name="i2ptunnel_delete_confirm_button">Poista tunneli</string>
<string name="i2ptunnel_wizard_k_client_server">Asiakas tai palvelin</string>
<string name="i2ptunnel_wizard_v_client">Asiakastunneli</string>
<string name="i2ptunnel_wizard_v_server">Palvelintunneli</string>
<string name="i2ptunnel_wizard_k_type">Tunnelityyppi</string>
<string name="i2ptunnel_wizard_k_name">Nimi</string>
<string name="i2ptunnel_wizard_k_desc">Kuvaus</string>
<string name="i2ptunnel_wizard_k_dest">Kohde</string>
<string name="i2ptunnel_wizard_k_target_host">Kohdetietokone</string>
<string name="i2ptunnel_wizard_k_target_port">Kohdeportti</string>
<string name="next">Seuraava</string>
<string name="prev">Edellinen</string>
<string name="finish">Lähetä</string>
<string name="review">Katselmoi</string>
<string name="enabled">Otettu käyttöön</string>
<string name="i2ptunnel_wizard_submit_confirm_message">Luodaanko tunneli?</string>
<string name="i2ptunnel_wizard_submit_confirm_button">Luo tunneli</string>
<string name="i2ptunnel_view_type">Tyyppi:</string>
<string name="i2ptunnel_view_desc">Kuvaus:</string>
<string name="i2ptunnel_view_target">Kohde:</string>
<string name="copy_logs">Kopioi lokitiedostot</string>
<string name="i2p_android_error_logs">I2P Android-virhelokitiedostot</string>
<string name="i2p_android_logs">I2P Android-lokitiedostot</string>
<string name="error_logs_copied_to_clipboard">Virhelokitiedostot kopoitu leikepöydälle</string>
<string name="logs_copied_to_clipboard">Lokitiedostot kopioitu leikepöydälle</string>
<string name="label_browser_configuration">Selainasetukset</string>
</resources>

View File

@ -141,6 +141,8 @@
<string name="i2ptunnel_type_streamrclient">Client Streamr</string>
<string name="i2ptunnel_type_streamrserver">Serveur Streamr</string>
<string name="i2ptunnel_type_httpbidirserver">Bidir HTTP</string>
<string name="install_recommended_app">Installer l\'app recommandée ?</string>
<string name="app_needed_for_this_tunnel_type">Vous devez installer une app pour utiliser ce tunnel. Voudriez-vous installer l\'app recommandée ?</string>
<string name="i2ptunnel_not_initialized">Les tunnels ne sont pas encore initialisés, veuillez recharger dans deux minutes.</string>
<string name="i2ptunnel_new_tunnel">Nouveau tunnel</string>
<string name="i2ptunnel_msg_config_saved">Changements de configuration sauvegardés</string>

View File

@ -25,7 +25,12 @@
<string name="button_router_off">長押しして I2P を起動</string>
<string name="button_router_on">I2P を起動中 (長押しで中止)</string>
<!--Character to indicate a client tunnel. Usually first letter of the word "client".-->
<string name="char_client_tunnel">C</string>
<!--Character to indicate a server tunnel. Usually first letter of the word "server".-->
<string name="char_server_tunnel">S</string>
<string name="no_client_tunnels_running">まだクライアントトンネルは起動していません。</string>
<string name="configure_browser_title">ブラウザの設定をしますか?</string>
<string name="configure_browser_for_i2p">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>
@ -51,6 +56,8 @@
<string name="action_reload_subscriptions">購読を再読込</string>
<string name="router_not_running">ルーターが起動していません。</string>
<string name="stats_not_ready">統計マネージャーはまだ準備出来ていません。後でやり直してください。</string>
<string name="no_graphs_configured">グラフは設定されていません。設定でどの統計をグラフにするか選択できます。すべての変更は60秒後に有効になります</string>
<string name="configure_graphs">グラフ設定</string>
<string name="graphs_not_ready">グラフが準備出来ていない、あるいはルーターが起動していません。後でもう一度やり直してください。</string>
<string name="netdb_routers_empty">NetDB にルーターがありません。</string>
<string name="netdb_leases_empty">NetDB にリースセットがありません。</string>
@ -102,6 +109,7 @@
<string name="settings_label_expl_backupQuantity">バックアップの数量</string>
<string name="settings_summ_expl_backupQuantity">%s トンネル</string>
<string name="settings_desc_expl_backupQuantity">トンネルバックアップの数</string>
<string name="settings_router_restart_required">設定を適用するためにI2Pを再起動してください</string>
<string name="menu_about">アバウト</string>
<string name="about_version">バージョン:</string>
<string name="about_project">プロジェクトホーム:</string>
@ -110,6 +118,7 @@
<string name="about_volunteer">アプリの改善を手伝いたいですか? Android フォーラム上でボランティア:</string>
<string name="about_donate">開発や試験用にさらに Android デバイスを購入するために、お金や Bitcoin を寄付していただけますか? こちらです:</string>
<string name="menu_help">ヘルプ</string>
<string name="general">一般</string>
<string name="addressbook_search_header">%s 検出</string>
<string name="addressbook_add_wizard_k_name">名前</string>
<string name="addressbook_add_wizard_k_destination">宛先</string>
@ -132,6 +141,8 @@
<string name="i2ptunnel_type_streamrclient">Streamr クライアント</string>
<string name="i2ptunnel_type_streamrserver">Streamr サーバー</string>
<string name="i2ptunnel_type_httpbidirserver">HTTP 双方向</string>
<string name="install_recommended_app">推奨アプリをインストールしますか?</string>
<string name="app_needed_for_this_tunnel_type">このトンネルを使用するには推奨アプリをインストールする必要があります。インストールしますか?</string>
<string name="i2ptunnel_not_initialized">トンネルはまだ初期化されていません、2分後に再読み込みしてください。</string>
<string name="i2ptunnel_new_tunnel">新規トンネル</string>
<string name="i2ptunnel_msg_config_saved">構成の変更が保存されました</string>
@ -174,4 +185,10 @@
<string name="i2ptunnel_view_target">ターゲット:</string>
<string name="i2ptunnel_view_access_point">アクセスポイント:</string>
<string name="i2ptunnel_view_autostart">自動開始</string>
<string name="copy_logs">ログをコピー</string>
<string name="i2p_android_error_logs">I2PAndroidエラーログ</string>
<string name="i2p_android_logs">I2PAndroidログ</string>
<string name="error_logs_copied_to_clipboard">エラーログはクリップボードにコピーされました</string>
<string name="logs_copied_to_clipboard">ログはクリップボードにコピーされました</string>
<string name="label_browser_configuration">ブラウザ設定</string>
</resources>

View File

@ -141,6 +141,8 @@
<string name="i2ptunnel_type_streamrclient">Streamr-klient</string>
<string name="i2ptunnel_type_streamrserver">Streamr-tjener</string>
<string name="i2ptunnel_type_httpbidirserver">HTTP bidir</string>
<string name="install_recommended_app">Installere anbefalt app?</string>
<string name="app_needed_for_this_tunnel_type">Du trenger å installere en app for å bruke denne tunnelen. Vil du installere den anbefalte appen?</string>
<string name="i2ptunnel_not_initialized">Tunneler er ikke klargjort enda, vennligst last inn på nytt om to minutter.</string>
<string name="i2ptunnel_new_tunnel">Ny Tunnel</string>
<string name="i2ptunnel_msg_config_saved">Konfigurasjonsendringer lagret</string>

View File

@ -4,6 +4,7 @@
<string name="desc_i2p_logo">I2P logo</string>
<string name="welcome_new_install">Welkom op I2P! Deze app heeft de ALPHA status en het biedt geen sterke anonimiteit. Lees de releaseopmerkingen en licentie-informatie.</string>
<string name="welcome_new_version">Nieuwe versie geïnstalleerd. Lees de releaseopmerkingen. Versie:</string>
<string name="label_home">Instellingen en Status</string>
<string name="label_tunnels">Tunnels</string>
<string name="label_status">Status</string>
<string name="label_addressbook">Adresboek</string>
@ -24,7 +25,12 @@
<string name="button_router_off">Lang drukken om I2P te starten</string>
<string name="button_router_on">I2P is actief (lang drukken om te stoppen)</string>
<!--Character to indicate a client tunnel. Usually first letter of the word "client".-->
<string name="char_client_tunnel">C</string>
<!--Character to indicate a server tunnel. Usually first letter of the word "server".-->
<string name="char_server_tunnel">S</string>
<string name="no_client_tunnels_running">Er draaien nog geen client tunnels.</string>
<string name="configure_browser_title">Browser instellen?</string>
<string name="configure_browser_for_i2p">Wil je een browser instellen om I2P-sites te kunnen bekijken? (Je kan dit ook later doen vanuit het help-menu.)</string>
<string name="first_start_title">Gefeliciteerd met de installatie van I2P!</string>
<string name="first_start_welcome"><b>Welkom bij I2P! Heb geduld alstublieft</b> terwijl I2P opstart en peers zoekt.</string>
<string name="first_start_read">Terwijl je wacht, lees alstublieft de release aantekeningen en welkom pagina.</string>
@ -49,15 +55,22 @@
<string name="hint_search_addressbook">Zoeken in adresboek</string>
<string name="action_reload_subscriptions">Vernieuw abonnementen</string>
<string name="router_not_running">De router is uit.</string>
<string name="stats_not_ready">De statistiekenbeheerder is nog niet klaar. Probeer het later opnieuw.</string>
<string name="no_graphs_configured">Geen grafieken ingesteld. Je kan de statistieken om in grafieken weer te geven instellen in het instellingenmenu. Alle wijzigingen vinden plaats na 60 seconden.</string>
<string name="configure_graphs">Grafieken instellen</string>
<string name="graphs_not_ready">Grafieken zijn niet klaar, of de router staat uit. Probeer het later opnieuw.</string>
<string name="netdb_routers_empty">Geen routers in je NetDB.</string>
<string name="netdb_leases_empty">Geen LeaseSets in je NetDB.</string>
<string name="notification_status_bw">Bandbreedte: %1$s KBps down / %2$s KBps up</string>
<string name="notification_status_peers">Peers: %1$d actief, %2$d bekend</string>
<string name="notification_status_expl">Verkennende tunnels: %1$d/%2$d</string>
<string name="notification_status_client">Cliënt tunnels: %1$d/%2$d</string>
<string name="menu_settings">Instellingen</string>
<string name="settings_enable">Inschakelen</string>
<string name="settings_desc_subscriptions">URL\'s van abbonementen</string>
<string name="settings_label_bandwidth_net">Bandbreedte en netwerk</string>
<string name="settings_label_startOnBoot">I2P starten bij opstarten van toestel</string>
<string name="settings_desc_startOnBoot">Automatisch verbinden met I2P wanneer je Android-toestel opstart</string>
<string name="settings_label_bandwidth">Bandbreedte</string>
<string name="settings_label_bw_inbound">Binnenkomende snelheid</string>
<string name="settings_desc_bw_inbound">Maximale binnenkomende snelheid</string>
@ -87,8 +100,10 @@
<string name="settings_label_expl_inbound">Inkomende tunnels</string>
<string name="settings_label_expl_outbound">Uitgaande tunnels</string>
<string name="settings_label_expl_length">Lengte</string>
<string name="settings_summ_expl_length">%s hops</string>
<string name="settings_desc_expl_length">Hoeveel \'hops\' te gebruiken</string>
<string name="settings_label_expl_lengthVariance">\'Hop\'-variantie</string>
<string name="settings_summ_expl_lengthVariance">%s</string>
<string name="settings_desc_expl_lengthVariance">Hoeveel willekeurig toe te voegen \'hops\'</string>
<string name="settings_label_expl_quantity">Hoeveelheid</string>
<string name="settings_summ_expl_quantity">%s tunnels</string>
@ -96,17 +111,26 @@
<string name="settings_label_expl_backupQuantity">Back-up hoeveelheid</string>
<string name="settings_summ_expl_backupQuantity">%s tunnels</string>
<string name="settings_desc_expl_backupQuantity">Hoeveel tunnel back-ups</string>
<string name="settings_router_restart_required">Herstart I2P om de instellingen toe te passen</string>
<string name="menu_about">Over</string>
<string name="about_version">Versie:</string>
<string name="about_project">Project Home:</string>
<string name="about_bugs">Bugs en Ondersteuning:</string>
<string name="about_helpwanted">Hulp Gezocht!</string>
<string name="about_volunteer">Wil je vrijwillig helpen de app beter te maken? Kijk op het Android forum:</string>
<string name="about_donate">Wil je geld of bitcoins doneren zodat we op meer Android telefoons kunnen ontwikkelen en testen? Ga naar:</string>
<string name="menu_help">Help</string>
<string name="general">Algemeen</string>
<string name="addressbook_search_header">%s gevonden</string>
<string name="addressbook_add_wizard_k_name">Naam</string>
<string name="addressbook_add_wizard_k_destination">Bestemming</string>
<string name="addressbook_add_wizard_desc_name">De naam</string>
<string name="addressbook_add_wizard_desc_destination">Plak de B64 van de bestemming hier. Als je een bestand manager geïnstalleerd hebt, kan je het tekst bestand met de B64 zoeken.</string>
<string name="nsu_iae_illegal_char">Hostnaam \"%1$s\" bevat een illegaal karakter %2$s</string>
<string name="nsu_iae_cannot_start_with">Hostnaam kan niet beginnen met \"%s\"</string>
<string name="nsu_iae_cannot_end_with">Hostnaam kan niet eindigen met \"%s\"</string>
<string name="nsu_iae_cannot_contain">Hostnaam kan \"%s\" niet bevatten</string>
<string name="nsu_iae_requires_conversion">Hostnaam \"%s\" vereist conversie naar ASCII, maar de conversie-bibliotheek is niet beschikbaar in deze Android-versie</string>
<string name="i2ptunnel_type_client">Standaard cliënt</string>
<string name="i2ptunnel_type_httpclient">HTTP cliënt</string>
<string name="i2ptunnel_type_ircclient">IRC cliënt</string>
@ -119,6 +143,8 @@
<string name="i2ptunnel_type_streamrclient">Streamr cliënt</string>
<string name="i2ptunnel_type_streamrserver">Streamr server</string>
<string name="i2ptunnel_type_httpbidirserver">HTTP bidir</string>
<string name="install_recommended_app">Aanbevolen applicatie installeren?</string>
<string name="app_needed_for_this_tunnel_type">Je moet een applicatie installeren om deze tunnel te gebruiken. Wil je de aanbevolen applicatie installeren?</string>
<string name="i2ptunnel_not_initialized">Tunnels zijn nog niet klaar, ververs in twee minuten aub.</string>
<string name="i2ptunnel_new_tunnel">Nieuwe tunnel</string>
<string name="i2ptunnel_msg_config_saved">Cofiguratie veranderingen opgeslagen</string>
@ -135,7 +161,11 @@
<string name="i2ptunnel_wizard_k_desc">Beschrijving</string>
<string name="i2ptunnel_wizard_k_dest">Bestemming</string>
<string name="i2ptunnel_wizard_k_outproxies">Outproxies</string>
<string name="i2ptunnel_wizard_k_target_host">Doelhost</string>
<string name="i2ptunnel_wizard_k_target_port">Doelpoort</string>
<string name="i2ptunnel_wizard_k_reachable_on">Bereikbaar op</string>
<string name="i2ptunnel_wizard_k_binding_port">Bindende poort</string>
<string name="i2ptunnel_wizard_k_auto_start">Automatisch starten</string>
<string name="next">Volgende</string>
<string name="prev">Vorige</string>
<string name="finish">Indienen</string>
@ -143,12 +173,25 @@
<string name="enabled">Staat aan</string>
<string name="i2ptunnel_wizard_desc_name">De naam van de tunnel, voor het identificeren in de tunnel lijst.</string>
<string name="i2ptunnel_wizard_desc_desc">Een beschrijving van de tunnel. Dit is niet verplicht maar wel informatief.</string>
<string name="i2ptunnel_wizard_desc_dest">Typ de I2P-bestemming van de dienst in waar deze cliënt-tunnel mee moet verbinden. Dit kan de volledige base-64 bestemmingssleutel zijn, of een I2P-URL van je adresboek.</string>
<string name="i2ptunnel_wizard_desc_outproxies">Als u outproxies kent voor dit type tunnel (HTTP of SOCKS), vul ze dan in. Scheid meerdere proxies door middel van komma\'s.</string>
<string name="i2ptunnel_wizard_desc_target_host">Dit is het IP adres waarop je service runt, dit is meestal op dezelfde machine, dus 127.0.0.1 is standaard ingevuld.</string>
<string name="i2ptunnel_wizard_desc_target_port">Dit is de poort waar de service verbindingen op ontvangt.</string>
<string name="i2ptunnel_wizard_desc_reachable_on">Dit limiteert welke computers of smartphones de tunnel kunnen bereiken.</string>
<string name="i2ptunnel_wizard_desc_binding_port">Dit is de poort vanwaar de cliënt-tunnel lokaal zal bereikt worden. Dit is ook de cliënt-poort voor de HTTP bidir server tunnel.</string>
<string name="i2ptunnel_wizard_desc_auto_start">Moet de tunnel automatisch gestart worden als de router start?</string>
<string name="i2ptunnel_wizard_submit_confirm_message">Tunnel aanmaken?</string>
<string name="i2ptunnel_wizard_submit_confirm_button">Tunnel aanmaken</string>
<string name="i2ptunnel_view_type">Type:</string>
<string name="i2ptunnel_view_desc">Beschrijving:</string>
<string name="i2ptunnel_view_target">Doel:</string>
<string name="i2ptunnel_view_access_point">Toegangspunt:</string>
<string name="i2ptunnel_view_autostart">Automatisch starten</string>
<string name="copy_logs">Kopieer logs</string>
<string name="i2p_android_error_logs">I2P Android Error Logs</string>
<string name="i2p_android_logs">I2P Android Logs</string>
<string name="error_logs_copied_to_clipboard">Error logs naar het klembord gekopieerd</string>
<string name="logs_copied_to_clipboard">Logs naar het klembord gekopieerd</string>
<string name="label_browser_configuration">Browserconfiguratie</string>
<string name="unset">Niet ingesteld</string>
</resources>

View File

@ -2,7 +2,7 @@
<resources>
<string name="app_name">I2P</string>
<string name="desc_i2p_logo">Logo I2P</string>
<string name="welcome_new_install">Witamy w I2P! Ta aplikacja jest w fazie ALPHA i nie zapewnia mocnej anonimowości. Zalecamy zapoznanie się z listą zmian i licencją. </string>
<string name="welcome_new_install">Witamy w I2P! Aplikacja jest w fazie ALPHA i nie zapewnia mocnej anonimowości. Zalecamy zapoznanie się z listą zmian i licencją. </string>
<string name="welcome_new_version">Nowa wersja zainstalowana. Przeczytaj listę zmian. Wersja:</string>
<string name="label_home">Kontrola i Status</string>
<string name="label_tunnels">Tunele</string>
@ -12,7 +12,7 @@
<string name="label_i2ptunnel_client">Tunele klienta</string>
<string name="label_i2ptunnel_server">Tunele serwerów</string>
<string name="label_logs">Logi</string>
<string name="label_error_logs">Rejestr błędów</string>
<string name="label_error_logs">Logi błędów</string>
<string name="label_info_and_pages">Informacje i strony</string>
<string name="label_welcome_page">Strona Powitalna</string>
<string name="label_news">Wiadomości</string>
@ -22,15 +22,20 @@
<string name="label_nonanon_info">Nie Anonimowe Informacje</string>
<string name="label_browse">Przeglądaj</string>
<string name="label_graphs">Wykresy</string>
<string name="button_router_off">Dotknij na dłużej aby uruchomić I2P</string>
<string name="button_router_off">Przytrzymaj dłużej, aby uruchomić I2P</string>
<string name="button_router_on">I2P jest włączone (dotknij na dłużej aby zatrzymać)</string>
<!--Character to indicate a client tunnel. Usually first letter of the word "client".-->
<string name="char_client_tunnel">C</string>
<!--Character to indicate a server tunnel. Usually first letter of the word "server".-->
<string name="first_start_title">Gratulacje w zainstalowaniu I2P!</string>
<string name="char_server_tunnel">S</string>
<string name="no_client_tunnels_running">Jeszcze żadne tunele klienta nie są uruchomione.</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="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>
<string name="first_start_faq">Kiedy będziesz miał tunele klienta proszę <b>sprawdź</b> nasze FAQ:</string>
<string name="first_start_faq_nonanon">Also użyj tych nie-anonimowych linków jeśli nie chcesz czekać na tunele:</string>
<string name="first_start_faq">Kiedy już będziesz miał tunele klienta proszę <b>sprawdź</b> nasze FAQ:</string>
<string name="first_start_faq_nonanon">Also użyj tego nie-anonimowego linka jeśli nie chcesz czekać na tunele:</string>
<string name="first_start_irc">Skieruj swojego klienta IRC do <b>localhost:6668</b> i przywitaj się z nami na.</string>
<string name="drawer_open">Otwórz nawigację</string>
<string name="drawer_close">Zamknij nawigację</string>
@ -40,8 +45,8 @@
<string name="action_delete">Usuń</string>
<string name="action_router_start">Uruchom Router</string>
<string name="action_router_stop">Zatrzymaj Router</string>
<string name="action_i2ptunnel_start">Włącz tunel</string>
<string name="action_i2ptunnel_stop">Wyłącz tunel</string>
<string name="action_i2ptunnel_start">Uruchom tunel</string>
<string name="action_i2ptunnel_stop">Zatrzymaj tunel</string>
<string name="action_i2ptunnel_start_all">Uruchom wszystkie tunele</string>
<string name="action_i2ptunnel_stop_all">Zatrzymaj wszystkie tunele</string>
<string name="action_i2ptunnel_restart_all">Zrestartuj wszystkie tunele</string>
@ -73,10 +78,10 @@
<string name="settings_label_hiddenMode">Uczestnictwo</string>
<string name="settings_desc_hiddenMode">Wyłącz tryp ukryty</string>
<string name="settings_label_maxPartTunnels">Maksymalna liczba uczestniczących tuneli</string>
<string name="settings_desc_maxPartTunnels">Maksaymalna liczba tuneli uczestniczących w (domyślne=20)</string>
<string name="settings_dialog_maxPartTunnels">Maksymalna liczba tuneli uczestniczących w</string>
<string name="settings_label_sharePercent">Udział procentowy</string>
<string name="settings_desc_sharePercent">Udział procentowy przepustowości do podziału (domyślne=80)</string>
<string name="settings_desc_maxPartTunnels">Maksaymalna liczba tuneli uczestniczących (domyślnie=20)</string>
<string name="settings_dialog_maxPartTunnels">Maksymalna liczba tuneli uczestniczących</string>
<string name="settings_label_sharePercent">Procent podziału</string>
<string name="settings_desc_sharePercent">Procent przepustowości do podziału (domyślnie=80)</string>
<string name="settings_dialog_sharePercent">Procent przepustowości do podziału</string>
<string name="settings_desc_upnp">Otwórz porty firewall\'a automatycznie</string>
<string name="settings_label_logging">Logowanie</string>
@ -97,29 +102,31 @@
<string name="settings_desc_expl_length">Ile użyć skoków</string>
<string name="settings_label_expl_lengthVariance">Wariancje skoków</string>
<string name="settings_summ_expl_lengthVariance">%s</string>
<string name="settings_desc_expl_lengthVariance">Ile skoków losowych dodać</string>
<string name="settings_desc_expl_lengthVariance">Ile dodać losowych skoków</string>
<string name="settings_label_expl_quantity">Ilość</string>
<string name="settings_summ_expl_quantity">%s tunelów</string>
<string name="settings_desc_expl_quantity">Ile tunelów</string>
<string name="settings_label_expl_backupQuantity">Ilość kopii zapasowych</string>
<string name="settings_summ_expl_backupQuantity">%s tunelów</string>
<string name="settings_desc_expl_backupQuantity">Ilość kopii zapasowych tuneli</string>
<string name="settings_router_restart_required">Proszę zrestartuj I2P, aby zmiany weszły w życie.</string>
<string name="menu_about">O programie</string>
<string name="about_version">Wersja:</string>
<string name="about_project">Strona Projektu:</string>
<string name="about_bugs">Błędy i wsparcie:</string>
<string name="about_helpwanted">Potrzebna pomoc!</string>
<string name="about_volunteer">Chcesz pomóc w ulepszeniu tej aplikacji? Zgłoś się na ochotnika na forum Android:</string>
<string name="about_donate">Chcesz przesłać pieniądze lub bitcoiny aby zakupić więcej Androidów dla rozwoju i testowania? Idź do:</string>
<string name="about_donate">Chcesz przesłać pieniądze lub bitcoiny, aby zakupić więcej Androidów dla rozwoju i testowania? Idź do:</string>
<string name="menu_help">Pomoc</string>
<string name="general">Ogólne</string>
<string name="addressbook_search_header">%s znaleziono</string>
<string name="addressbook_add_wizard_k_name">Nazwa</string>
<string name="addressbook_add_wizard_k_destination">Miejsce przeznaczenia</string>
<string name="addressbook_add_wizard_k_destination">Przeznaczenie</string>
<string name="addressbook_add_wizard_desc_name">Nazwa</string>
<string name="addressbook_add_wizard_desc_destination">Wklej B64 miejsca przeznaczenia tutaj. Jeśli masz menadżer plików zainstalowany, to możesz przegladać pliki tekstowe zawierające B64.</string>
<string name="addressbook_add_wizard_desc_destination">Wklej B64 przeznaczenia tutaj. Jeśli masz zainstalowany menadżer plików to możesz przegladać pliki tekstowe zawierające B64.</string>
<string name="nsu_iae_illegal_char">Nazwa hosta \"%1$s\" zawiera niedozwolony znak %2$s</string>
<string name="nsu_iae_cannot_start_with">Nazwa hosta nie może zaczynać się od \"%s\"</string>
<string name="nsu_iae_cannot_end_with">Nazwa hosta nie może kończyć się \"%s\"</string>
<string name="nsu_iae_cannot_end_with">Nazwa hosta nie może kończyć się na \"%s\"</string>
<string name="nsu_iae_cannot_contain">Nazwa hosta nie może zawierać \"%s\"</string>
<string name="nsu_iae_requires_conversion">Nazwa hosta \"%s\" wymaga konwersji do ASCII, ale biblioteka konwersji jest niedostępna w tej wersji Android. </string>
<string name="i2ptunnel_type_client">Standardowy klient</string>
@ -134,9 +141,11 @@
<string name="i2ptunnel_type_streamrclient">Klient Streamr</string>
<string name="i2ptunnel_type_streamrserver">Serwer Streamr</string>
<string name="i2ptunnel_type_httpbidirserver">HTTP bidir</string>
<string name="install_recommended_app">Zainstalować polecone aplikacje?</string>
<string name="app_needed_for_this_tunnel_type">Musisz zainstalować aplikację, aby użyć tego tunelu. Czy chcesz zainstalować tą aplikację?</string>
<string name="i2ptunnel_not_initialized">Tunele nie są jeszcze zainicjowane, proszę odświeżyć za dwie minuty.</string>
<string name="i2ptunnel_new_tunnel">Nowy tunel</string>
<string name="i2ptunnel_msg_config_saved">Zapisano zmiany konfiguracji</string>
<string name="i2ptunnel_msg_config_saved">Zmiany konfiguracji zostały zapisane</string>
<string name="i2ptunnel_msg_config_save_failed">Nie udało zapisać się konfiguracji</string>
<string name="i2ptunnel_msg_tunnel_starting">Uruchamianie tunelu</string>
<string name="i2ptunnel_msg_tunnel_stopping">Zatrzymanie tunelu</string>
@ -161,14 +170,14 @@
<string name="review">Przegląd</string>
<string name="enabled">Włączony</string>
<string name="i2ptunnel_wizard_desc_name">Nazwa tunelu dla identyfikacji w liście tuneli.</string>
<string name="i2ptunnel_wizard_desc_desc">Opis tunelu. Ta opcja jest nieobowiązkowa i wyłącznie służąca do celów informacyjnych.</string>
<string name="i2ptunnel_wizard_desc_dest">Wpisz przeznaczenie serwisu I2P z którym klient tunelu ma się połączyć. To może być pełna baza 64 przeznaczenia klucza, lub URL I2P z Twojej książki adresowej.</string>
<string name="i2ptunnel_wizard_desc_outproxies">Jeśli znasz jakieś wychodzące proxy dla tego typu tunelów (HTTP lub SOCKS), to wpisz je. Oddziel proxy przecinkami.</string>
<string name="i2ptunnel_wizard_desc_target_host">To jest IP z którego Twój serwis jest uruchomiony, zazwyczaj jest to te same urządzenie więc 127.0.0.1 jest wpisane automatycznie.</string>
<string name="i2ptunnel_wizard_desc_desc">Opis tunelu. Ta opcja jest nieobowiązkowa i służąca wyłącznie do celów informacyjnych.</string>
<string name="i2ptunnel_wizard_desc_dest">Wpisz przeznaczenie serwisu I2P z którym klient tunelu ma się połączyć. To może być pełny klucz base 64 przeznaczenia, lub URL I2P z Twojej książki adresowej.</string>
<string name="i2ptunnel_wizard_desc_outproxies">Jeśli znasz jakieś wychodzące proxy dla tego typu tunelów (HTTP lub SOCKS), to je wpisz. Serwery proxy oddziel przecinkami.</string>
<string name="i2ptunnel_wizard_desc_target_host">To jest IP na którym Twój serwis jest uruchomiony, zazwyczaj jest to te same urządzenie więc 127.0.0.1 jest wpisane automatycznie.</string>
<string name="i2ptunnel_wizard_desc_target_port">To jest port na którym Twój serwis akceptuje połączenia.</string>
<string name="i2ptunnel_wizard_desc_reachable_on">To limituje do czego komputery lub telefony mogą mięć dostęp w tunelu.</string>
<string name="i2ptunnel_wizard_desc_binding_port">To jest port z którego klient tunelu będzie miał dostęp lokalny. To jest także port klienta dla HTTP bidir serwera tunelu.</string>
<string name="i2ptunnel_wizard_desc_auto_start">Czy tunel powinien włączyć się automatycznie kiedy włączy się router?</string>
<string name="i2ptunnel_wizard_desc_reachable_on">To limituje do czego komputery lub telefony mogą mięć dostęp w tym tunelu.</string>
<string name="i2ptunnel_wizard_desc_binding_port">To jest port z którego klient tunelu będzie miał dostęp lokalnie. To jest także port klienta dla HTTP bidir serwera tunelu.</string>
<string name="i2ptunnel_wizard_desc_auto_start">Czy chcesz, aby tunel włączył się automatycznie kiedy uruchomi się router?</string>
<string name="i2ptunnel_wizard_submit_confirm_message">Utworzyć tunel?</string>
<string name="i2ptunnel_wizard_submit_confirm_button">Utwórz tunel</string>
<string name="i2ptunnel_view_type">Typ:</string>
@ -176,4 +185,10 @@
<string name="i2ptunnel_view_target">Cel:</string>
<string name="i2ptunnel_view_access_point">Punkt dostępu:</string>
<string name="i2ptunnel_view_autostart">Auto-start</string>
<string name="copy_logs">Kopiuj logi</string>
<string name="i2p_android_error_logs">Logi Błędów I2P Android</string>
<string name="i2p_android_logs">Logi Błędów I2P Android</string>
<string name="error_logs_copied_to_clipboard">Logi błędów zostały skopiowane do schowka</string>
<string name="logs_copied_to_clipboard">Logi zostały skopiowane do schowka</string>
<string name="label_browser_configuration">Konfiguracja przeglądarki</string>
</resources>

View File

@ -141,6 +141,8 @@
<string name="i2ptunnel_type_streamrclient">Streamr клиент</string>
<string name="i2ptunnel_type_streamrserver">Streamr сервер</string>
<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_new_tunnel">Создать туннель</string>
<string name="i2ptunnel_msg_config_saved">Изменения конфигурации сохранены</string>

View File

@ -0,0 +1,125 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="app_name">I2P</string>
<string name="welcome_new_install">Ласкаво просимо до I2P! Ця програма є альфа версією і вона не забезпечує анонімність. Будь ласка, прочитайте примітки до випуску та інформацію про ліцензії.</string>
<string name="welcome_new_version">Встановлено нову версія. Будь ласка, прочитайте примітки до випуску. Версія:</string>
<string name="label_home">Управління і Статус</string>
<string name="label_tunnels">Тунелі</string>
<string name="label_status">Статус</string>
<string name="label_addressbook">Адресна книга</string>
<string name="label_i2ptunnel">I2PTunnel</string>
<string name="label_i2ptunnel_client">Клієнтські тунелі</string>
<string name="label_i2ptunnel_server">Серверні тунелі</string>
<string name="label_logs">Журнали</string>
<string name="label_error_logs">Журнали помилок</string>
<string name="label_info_and_pages">Інформація і сторінки</string>
<string name="label_welcome_page">Початкова сторінка</string>
<string name="label_news">Новини</string>
<string name="label_peers_status">Піри</string>
<string name="label_release_notes">Примітки до випуску</string>
<string name="label_licenses">Ліцензії</string>
<string name="label_nonanon_info">Не анонімна інформація</string>
<string name="label_graphs">Графіки</string>
<string name="button_router_off">Утримуйте щоб запустити I2P</string>
<string name="button_router_on">I2P працює (утримуйте, щоб зупинити)</string>
<!--Character to indicate a client tunnel. Usually first letter of the word "client".-->
<!--Character to indicate a server tunnel. Usually first letter of the word "server".-->
<string name="no_client_tunnels_running">Клієнтських тунелів ще немає.</string>
<string name="configure_browser_title">Налаштувати браузер?</string>
<string name="first_start_irc">Налаштуйте ваш IRC клієнт на <b>localhost:6668</b> і скажіть нам \"hello world\":</string>
<string name="action_search">Пошук</string>
<string name="action_add">Додати</string>
<string name="action_edit">Правка</string>
<string name="action_delete">Видалити</string>
<string name="action_router_start">Запустити роутер</string>
<string name="action_router_stop">Зупинити роутер</string>
<string name="action_i2ptunnel_start">Запустити тунель</string>
<string name="action_i2ptunnel_stop">Зупинити тунель</string>
<string name="action_i2ptunnel_start_all">Запустити всі тунелі</string>
<string name="action_i2ptunnel_stop_all">Зупинити всі тунелі</string>
<string name="action_i2ptunnel_restart_all">Перезапустити всі тунелі</string>
<string name="action_reload">Перезавантажити</string>
<string name="action_refresh">Оновити</string>
<string name="hint_search_addressbook">Пошук по адресній книзі</string>
<string name="netdb_routers_empty">Немає роутерів у вашій NetDB.</string>
<string name="notification_status_client">Клієнтські тунелі: %1$d/%2$d</string>
<string name="menu_settings">Налаштування</string>
<string name="settings_enable">Увімкнути</string>
<string name="settings_desc_subscriptions">Підписка на URL-и</string>
<string name="settings_label_bandwidth">Ширина смуги пропускання</string>
<string name="settings_label_bw_inbound">Вхідна швидкість</string>
<string name="settings_label_bw_outbound">Вихідна швидкість</string>
<string name="settings_desc_bw_outbound">Максимальна вихідна швидкість</string>
<string name="settings_label_network">Мережа</string>
<string name="settings_label_maxConns">Максимально з’єднань</string>
<string name="settings_label_i2cp">Інтерфейс I2CP</string>
<string name="settings_desc_exploratory_pool">Параметри тунелів</string>
<string name="settings_label_expl_inbound">Вхідні тунелі</string>
<string name="settings_label_expl_outbound">Вихідні тунелі</string>
<string name="settings_label_expl_length">Довжина</string>
<string name="settings_summ_expl_length">%s хопів</string>
<string name="settings_desc_expl_length">Скільки хопів використовувати</string>
<string name="settings_summ_expl_lengthVariance">%s</string>
<string name="settings_desc_expl_lengthVariance">Скільки хопів випадково додавати</string>
<string name="settings_summ_expl_quantity">%s тунелів</string>
<string name="settings_desc_expl_quantity">Скільки тунелів</string>
<string name="settings_summ_expl_backupQuantity">%s тунелів</string>
<string name="menu_about">Про</string>
<string name="about_version">Версія:</string>
<string name="about_bugs">Неполадки і підтримка:</string>
<string name="menu_help">Допомога</string>
<string name="addressbook_search_header">%s знайдено</string>
<string name="addressbook_add_wizard_k_name">Назва</string>
<string name="addressbook_add_wizard_k_destination">Призначення</string>
<string name="addressbook_add_wizard_desc_name">Назва</string>
<string name="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="i2ptunnel_type_client">Стандартний клієнт</string>
<string name="i2ptunnel_type_httpclient">Клієнт HTTP</string>
<string name="i2ptunnel_type_ircclient">Клієнт IRC</string>
<string name="i2ptunnel_type_server">Стандартний серер</string>
<string name="i2ptunnel_type_httpserver">HTTP сервер</string>
<string name="i2ptunnel_type_sockstunnel">SOCKS 4/4a/5 проксі</string>
<string name="i2ptunnel_type_socksirctunnel">SOCKS IRC проксі</string>
<string name="i2ptunnel_type_connectclient">CONNECT/SSL/HTTPS проксі</string>
<string name="i2ptunnel_type_ircserver">IRC сервер</string>
<string name="i2ptunnel_type_streamrclient">Streamr клієнт</string>
<string name="i2ptunnel_type_streamrserver">Streamr сервер</string>
<string name="i2ptunnel_type_httpbidirserver">HTTP bidir</string>
<string name="i2ptunnel_not_initialized">Тунелі ще неініціалізовані, будь ласка, перезавантажте через дві хвилини.</string>
<string name="i2ptunnel_new_tunnel">Новий тунель</string>
<string name="i2ptunnel_msg_config_saved">Зміни конфігурації збережені</string>
<string name="i2ptunnel_msg_config_save_failed">Не вдалося зберегти конфігурацію</string>
<string name="i2ptunnel_msg_tunnel_starting">Запуск тунелю</string>
<string name="i2ptunnel_msg_tunnel_stopping">Зупинка тунель</string>
<string name="i2ptunnel_delete_confirm_message">Видалити тунель?</string>
<string name="i2ptunnel_delete_confirm_button">Видалити тунель</string>
<string name="i2ptunnel_wizard_k_client_server">Клієнт або Сервер</string>
<string name="i2ptunnel_wizard_v_client">Клієнтський тунель</string>
<string name="i2ptunnel_wizard_v_server">Серверний тунель</string>
<string name="i2ptunnel_wizard_k_type">Тип тунель</string>
<string name="i2ptunnel_wizard_k_name">Назва</string>
<string name="i2ptunnel_wizard_k_desc">Опис</string>
<string name="i2ptunnel_wizard_k_dest">Призначення</string>
<string name="i2ptunnel_wizard_k_outproxies">Вихідні проксі</string>
<string name="i2ptunnel_wizard_k_target_host">Цільовий хост</string>
<string name="i2ptunnel_wizard_k_target_port">Цільовий порт</string>
<string name="i2ptunnel_wizard_k_auto_start">Запускати автоматично</string>
<string name="next">Наступний</string>
<string name="prev">Попередній</string>
<string name="enabled">Увімкнено</string>
<string name="i2ptunnel_wizard_desc_target_host">Це IP-адреса, на якій сервіс працює. Зазвичай така сама, як у машини, тому 127.0.0.1 введено автоматично.</string>
<string name="i2ptunnel_wizard_desc_target_port">Це порт, на який сервіс приймає з’єднання.</string>
<string name="i2ptunnel_wizard_submit_confirm_message">Створити тунель?</string>
<string name="i2ptunnel_wizard_submit_confirm_button">Створити тунель</string>
<string name="i2ptunnel_view_type">Тип:</string>
<string name="i2ptunnel_view_desc">Опис:</string>
<string name="i2ptunnel_view_access_point">Точка доступу:</string>
<string name="i2ptunnel_view_autostart">Автозапуск</string>
<string name="copy_logs">Скопіювати логи</string>
<string name="i2p_android_logs">Логи Android I2P</string>
<string name="error_logs_copied_to_clipboard">Логи з помилками скопійовані у буфер обміну</string>
<string name="logs_copied_to_clipboard">Логи скопійовані у буфер обміну</string>
<string name="label_browser_configuration">Налаштування браузера</string>
</resources>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="WizardPageTitle" parent="WizardPageTitleBase">
<item name="android:paddingLeft">?android:attr/listPreferredItemPaddingLeft</item>
</style>
</resources>

View File

@ -69,6 +69,8 @@
<string name="settings_enable">启用</string>
<string name="settings_desc_subscriptions">订阅链接</string>
<string name="settings_label_bandwidth_net">带宽和网络</string>
<string name="settings_label_startOnBoot">启动时启动 I2P</string>
<string name="settings_desc_startOnBoot">在您的 Android 设备启动时自动连接到 I2P</string>
<string name="settings_label_bandwidth">带宽</string>
<string name="settings_label_bw_inbound">入站速度</string>
<string name="settings_desc_bw_inbound">最大入站速度</string>
@ -141,6 +143,8 @@
<string name="i2ptunnel_type_streamrclient">Streamr 客戶端</string>
<string name="i2ptunnel_type_streamrserver">Streamr 服务器</string>
<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_new_tunnel">新隧道</string>
<string name="i2ptunnel_msg_config_saved">配置更改已保存</string>
@ -189,4 +193,5 @@
<string name="error_logs_copied_to_clipboard">错误日志已复制到剪贴板</string>
<string name="logs_copied_to_clipboard">日志已复制到剪贴板</string>
<string name="label_browser_configuration">浏览器配置</string>
<string name="unset">未设置</string>
</resources>

View File

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- net.i2p.router.transport.FIFOBandwidthRefiller -->
<string name="PROP_INBOUND_BANDWIDTH">i2np.bandwidth.inboundKBytesPerSecond</string>
<string name="PROP_OUTBOUND_BANDWIDTH">i2np.bandwidth.outboundKBytesPerSecond</string>
<!-- net.i2p.router.transport.TransportManager -->
<string name="PROP_ENABLE_UPNP">i2np.upnp.enable</string>
<string name="PROP_ENABLE_UDP">i2np.udp.enable</string>
<string name="PROP_ENABLE_NTCP">i2np.ntcp.enable</string>
<!-- net.i2p.router.transport.udp.UDPTransport -->
<string name="PROP_UDP_INTERNAL_PORT">i2np.udp.internalPort</string>
<!-- net.i2p.router.transport.ntcp.NTCPTransport -->
<string name="PROP_I2NP_NTCP_AUTO_PORT">i2np.ntcp.autoport</string>
<string name="PROP_I2NP_NTCP_PORT">i2np.ntcp.port</string>
<!-- net.i2p.router.transport.TransportImpl.getMaxConnections() -->
<string name="PROP_UDP_MAX_CONNECTIONS">i2np.udp.maxConnections</string>
<string name="PROP_NTCP_MAX_CONNECTIONS">i2np.ntcp.maxConnections</string>
<!-- net.i2p.router.TunnelPoolSettings -->
<!-- Inbound exploratory tunnels -->
<string name="PROP_INBOUND_EXPLORATORY_LENGTH">router.inboundPool.length</string>
<string name="PROP_INBOUND_EXPLORATORY_LENGTH_VARIANCE">router.inboundPool.lengthVariance</string>
<string name="PROP_INBOUND_EXPLORATORY_QUANTITY">router.inboundPool.quantity</string>
<string name="PROP_INBOUND_EXPLORATORY_BACKUP_QUANTITY">router.inboundPool.backupQuantity</string>
<!-- Outbound exploratory tunnels -->
<string name="PROP_OUTBOUND_EXPLORATORY_LENGTH">router.outboundPool.length</string>
<string name="PROP_OUTBOUND_EXPLORATORY_LENGTH_VARIANCE">router.outboundPool.lengthVariance</string>
<string name="PROP_OUTBOUND_EXPLORATORY_QUANTITY">router.outboundPool.quantity</string>
<string name="PROP_OUTBOUND_EXPLORATORY_BACKUP_QUANTITY">router.outboundPool.backupQuantity</string>
<!-- net.i2p.util.LogManager -->
<string name="PROP_DEFAULTLEVEL">logger.defaultLevel</string>
</resources>

View File

@ -83,6 +83,8 @@
<string name="settings_enable">Enable</string>
<string name="settings_desc_subscriptions">Subscription URLs</string>
<string name="settings_label_bandwidth_net">Bandwidth and network</string>
<string name="settings_label_startOnBoot">Start I2P on Boot</string>
<string name="settings_desc_startOnBoot">Automatically connect to I2P when your Android device starts up</string>
<string name="settings_label_bandwidth">Bandwidth</string>
<string name="settings_label_bw_inbound">Inbound speed</string>
<string name="settings_desc_bw_inbound">Maximum inbound speed</string>
@ -167,6 +169,10 @@
<string name="i2ptunnel_type_streamrserver">Streamr server</string>
<string name="i2ptunnel_type_httpbidirserver">HTTP bidir</string>
<string name="market_irc" translatable="false">market://search?q=pname:com.androirc</string>
<string name="install_recommended_app">Install recommended app?</string>
<string name="app_needed_for_this_tunnel_type">You need to install an app to use this tunnel. Would you like to install the recommended app?</string>
<string name="i2ptunnel_not_initialized">Tunnels are not initialized yet, please reload in two minutes.</string>
<string name="i2ptunnel_new_tunnel">New Tunnel</string>
<string name="i2ptunnel_msg_config_saved">Configuration changes saved</string>
@ -221,4 +227,6 @@
<string name="logs_copied_to_clipboard">Logs copied to clipboard</string>
<string name="label_browser_configuration">Browser configuration</string>
<string name="unset">Unset</string>
</resources>

View File

@ -35,18 +35,19 @@
<item name="android:orientation">vertical</item>
</style>
<style name="WizardPageTitle">
<style name="WizardPageTitleBase">
<item name="android:id">@android:id/title</item>
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_marginBottom">8dp</item>
<item name="android:layout_marginLeft">16dp</item>
<item name="android:layout_marginRight">16dp</item>
<item name="android:paddingLeft">?android:attr/listPreferredItemPaddingLeft</item>
<item name="android:textSize">36sp</item>
<item name="android:textColor">#ff0099cc</item>
</style>
<style name="WizardPageTitle" parent="WizardPageTitleBase"/>
<style name="WizardFormLabel">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>

View File

@ -10,19 +10,68 @@
android:key="settings_transports"
android:title="@string/settings_label_transports">
<PreferenceCategory
android:key="settings_udp"
android:title="UDP">
<!--
i2np.udp.enable=false
I might hide this one...
-->
<CheckBoxPreference
android:key="@string/PROP_ENABLE_UDP"
android:defaultValue="true"
android:title="@string/settings_enable"
android:summary="DO NOT DISABLE THIS"
/>
<net.i2p.android.router.util.PortPreference
android:dependency="@string/PROP_ENABLE_UDP"
android:key="@string/PROP_UDP_INTERNAL_PORT"
android:title="UDP port"/>
<!--
i2np.udp.maxConnections=12
-->
<com.hlidskialf.android.preference.SeekBarPreference
android:key="@string/PROP_UDP_MAX_CONNECTIONS"
android:defaultValue="32"
android:max="500"
android:title="@string/settings_label_maxConns"
android:summary="Maximum UDP connections allowed"
android:dialogMessage="Maximum UDP connections"
android:text=" connections"
android:dependency="@string/PROP_ENABLE_UDP"
android:shouldDisableView="true"
/>
</PreferenceCategory>
<PreferenceCategory
android:key="settings_ntcp"
android:title="NTCP">
<CheckBoxPreference
android:key="i2np.ntcp.enable"
android:key="@string/PROP_ENABLE_NTCP"
android:defaultValue="true"
android:title="@string/settings_enable"
/>
<CheckBoxPreference
android:defaultValue="true"
android:dependency="@string/PROP_ENABLE_NTCP"
android:disableDependentsState="true"
android:key="@string/PROP_I2NP_NTCP_AUTO_PORT"
android:summary="Use same port as UDP"
android:title="Auto-set port"
/>
<net.i2p.android.router.util.PortPreference
android:dependency="@string/PROP_I2NP_NTCP_AUTO_PORT"
android:key="@string/PROP_I2NP_NTCP_PORT"
android:title="NTCP port"/>
<!--
i2np.ntcp.maxConnections=24
-->
<com.hlidskialf.android.preference.SeekBarPreference
android:key="i2np.ntcp.maxConnections"
android:key="@string/PROP_NTCP_MAX_CONNECTIONS"
android:defaultValue="32"
android:max="250"
android:title="@string/settings_label_maxConns"
@ -33,36 +82,6 @@
android:shouldDisableView="true"
/>
</PreferenceCategory>
<PreferenceCategory
android:key="settings_udp"
android:title="UDP">
<!--
i2np.udp.enable=false
I might hide this one...
-->
<CheckBoxPreference
android:key="i2np.udp.enable"
android:defaultValue="true"
android:title="@string/settings_enable"
android:summary="DO NOT DISABLE THIS"
/>
<!--
i2np.udp.maxConnections=12
-->
<com.hlidskialf.android.preference.SeekBarPreference
android:key="i2np.udp.maxConnections"
android:defaultValue="32"
android:max="500"
android:title="@string/settings_label_maxConns"
android:summary="Maximum UDP connections allowed"
android:dialogMessage="Maximum UDP connections"
android:text=" connections"
android:dependency="i2np.udp.enable"
android:shouldDisableView="true"
/>
</PreferenceCategory>
</PreferenceScreen>
<!--
@ -89,7 +108,7 @@
router.inboundPool.length=1
-->
<ListPreference
android:key="router.inboundPool.length"
android:key="@string/PROP_INBOUND_EXPLORATORY_LENGTH"
android:entries="@array/setting0to3"
android:entryValues="@array/setting0to3"
android:title="@string/settings_label_expl_length"
@ -102,7 +121,7 @@
router.inboundPool.lengthVariance=1
-->
<ListPreference
android:key="router.inboundPool.lengthVariance"
android:key="@string/PROP_INBOUND_EXPLORATORY_LENGTH_VARIANCE"
android:entries="@array/setting2to2"
android:entryValues="@array/setting2to2"
android:title="@string/settings_label_expl_lengthVariance"
@ -116,7 +135,7 @@
router.inboundPool.quantity=2
-->
<ListPreference
android:key="router.inboundPool.quantity"
android:key="@string/PROP_INBOUND_EXPLORATORY_QUANTITY"
android:entries="@array/setting0to3"
android:entryValues="@array/setting0to3"
android:title="@string/settings_label_expl_quantity"
@ -129,7 +148,7 @@
router.inboundPool.backupQuantity=0
-->
<ListPreference
android:key="router.inboundPool.backupQuantity"
android:key="@string/PROP_INBOUND_EXPLORATORY_BACKUP_QUANTITY"
android:entries="@array/setting0to3"
android:entryValues="@array/setting0to3"
android:title="@string/settings_label_expl_backupQuantity"
@ -146,7 +165,7 @@
router.outboundPool.length=1
-->
<ListPreference
android:key="router.outboundPool.length"
android:key="@string/PROP_OUTBOUND_EXPLORATORY_LENGTH"
android:entries="@array/setting0to3"
android:entryValues="@array/setting0to3"
android:title="@string/settings_label_expl_length"
@ -159,7 +178,7 @@
router.outboundPool.lengthVariance=1
-->
<ListPreference
android:key="router.outboundPool.lengthVariance"
android:key="@string/PROP_OUTBOUND_EXPLORATORY_LENGTH_VARIANCE"
android:entries="@array/setting2to2"
android:entryValues="@array/setting2to2"
android:title="@string/settings_label_expl_lengthVariance"
@ -172,7 +191,7 @@
router.outboundPool.quantity=2
-->
<ListPreference
android:key="router.outboundPool.quantity"
android:key="@string/PROP_OUTBOUND_EXPLORATORY_QUANTITY"
android:entries="@array/setting0to3"
android:entryValues="@array/setting0to3"
android:title="@string/settings_label_expl_quantity"
@ -185,7 +204,7 @@
router.outboundPool.backupQuantity=0
-->
<ListPreference
android:key="router.outboundPool.backupQuantity"
android:key="@string/PROP_OUTBOUND_EXPLORATORY_BACKUP_QUANTITY"
android:entries="@array/setting0to3"
android:entryValues="@array/setting0to3"
android:title="@string/settings_label_expl_backupQuantity"

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<ListPreference
android:key="logger.defaultLevel"
android:key="@string/PROP_DEFAULTLEVEL"
android:entries="@array/log_levels"
android:entryValues="@array/log_levels"
android:title="@string/settings_label_default_log_level"

View File

@ -3,6 +3,12 @@
<!--
Keys and the default values from current installation:
-->
<CheckBoxPreference
android:key="i2pandroid.startOnBoot"
android:defaultValue="false"
android:title="@string/settings_label_startOnBoot"
android:summary="@string/settings_desc_startOnBoot"
/>
<PreferenceCategory
android:key="settings_bandwidth"
@ -11,7 +17,7 @@
i2np.bandwidth.inboundKBytesPerSecond=100
-->
<com.hlidskialf.android.preference.SeekBarPreference
android:key="i2np.bandwidth.inboundKBytesPerSecond"
android:key="@string/PROP_INBOUND_BANDWIDTH"
android:defaultValue="100"
android:max="1000"
android:title="@string/settings_label_bw_inbound"
@ -23,7 +29,7 @@
i2np.bandwidth.outboundKBytesPerSecond=30
-->
<com.hlidskialf.android.preference.SeekBarPreference
android:key="i2np.bandwidth.outboundKBytesPerSecond"
android:key="@string/PROP_OUTBOUND_BANDWIDTH"
android:defaultValue="100"
android:max="1000"
android:title="@string/settings_label_bw_outbound"
@ -84,7 +90,7 @@
i2np.upnp.enable=false
-->
<CheckBoxPreference
android:key="i2np.upnp.enable"
android:key="@string/PROP_ENABLE_UPNP"
android:defaultValue="true"
android:title="UPnP"
android:summary="@string/settings_desc_upnp"

View File

@ -3,7 +3,7 @@ buildscript {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.13.3'
classpath 'com.android.tools.build:gradle:1.0.1'
classpath files('gradle/libs/gradle-witness.jar')
}
}

View File

@ -11,10 +11,14 @@ android {
}
buildTypes {
release {
runProguard false
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
lintOptions {
abortOnError false
}
@ -22,12 +26,12 @@ android {
dependencies {
compile project(path: ':routerjars', configuration: 'client')
compile 'com.android.support:support-v4:21.0.0'
compile 'com.android.support:support-v4:21.0.3'
}
dependencyVerification {
verify = [
'com.android.support:support-v4:199ef7bb169386c80b4836354df6747ce2ae3d24434db923c22439e47106a1e2',
'com.android.support:support-v4:703572d3015a088cc5604b7e38885af3d307c829d0c5ceaf8654ff41c71cd160',
]
}
@ -41,7 +45,7 @@ android.libraryVariants.all { variant ->
}
// Hook the copy task into the build
variant.packageLibrary.dependsOn copyClientLibsTask
variant.processJavaResources.dependsOn copyClientLibsTask
copyClientLibsTask.mustRunAfter ':routerjars:buildClient'
}

View File

@ -16,7 +16,11 @@ import java.util.Queue;
* @author zzz
*/
class LogWriter implements Runnable {
/** every 10 seconds? why? Just have the gui force a reread after a change?? */
private final static long CONFIG_READ_ITERVAL = 10 * 1000;
final static long FLUSH_INTERVAL = 29 * 1000;
private final static long MIN_FLUSH_INTERVAL = 2*1000;
private final static long MAX_FLUSH_INTERVAL = 5*60*1000;
private long _lastReadConfig = 0;
private long _numBytesInCurrentFile = 0;
private OutputStream _currentOut; // = System.out
@ -26,6 +30,8 @@ class LogWriter implements Runnable {
private LogManager _manager;
private boolean _write;
// ms
private volatile long _flushInterval = FLUSH_INTERVAL;
private LogWriter() { // nop
}
@ -38,6 +44,14 @@ class LogWriter implements Runnable {
_write = false;
}
/**
* @param interval in ms
* @since 0.9.18
*/
public void setFlushInterval(long interval) {
_flushInterval = Math.min(MAX_FLUSH_INTERVAL, Math.max(MIN_FLUSH_INTERVAL, interval));
}
public void run() {
_write = true;
try {
@ -77,7 +91,7 @@ class LogWriter implements Runnable {
if (shouldWait) {
try {
synchronized (this) {
this.wait(10*1000);
this.wait(_flushInterval);
}
} catch (InterruptedException ie) { // nop
}

View File

@ -0,0 +1,9 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="yes">Kyllä</string>
<string name="no">Ei</string>
<string name="install_i2p_android">Asennetaanko I2P Android?</string>
<string name="you_must_have_i2p_android">Sinulla on oltava I2P Android asennettuna ja käynnissä. Haluaisitko asentaa sen?</string>
<string name="start_i2p_android">Käynnistetäänkö I2P Android?</string>
<string name="would_you_like_to_start_i2p_android">Näyttää siltä, että I2P Android ei ole käynnissä. Haluaisitko käynnistää sen?</string>
</resources>

View File

@ -0,0 +1,9 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="yes">Ya</string>
<string name="no">Tidak</string>
<string name="install_i2p_android">Pasang I2P Android?</string>
<string name="you_must_have_i2p_android">Anda harus memasang dan menjalankan I2P Android. Apakah anda ingin memasangnya?</string>
<string name="start_i2p_android">Memulai I2P Android?</string>
<string name="would_you_like_to_start_i2p_android">Sepertinya I2P Android belum dijalankan. Apakah anda ingin memulainya?</string>
</resources>

View File

@ -0,0 +1,10 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="yes">はい</string>
<string name="no">いいえ</string>
<string name="install_i2p_android">I2PをAndroidにインストールしますか</string>
<string name="you_must_have_i2p_android">I2Pがインストールされ起動している必要があります。
インストールしますか?</string>
<string name="start_i2p_android">I2Pを起動しますか</string>
<string name="would_you_like_to_start_i2p_android">I2Pが動作していないようです。I2Pを起動しますか</string>
</resources>

View File

@ -0,0 +1,9 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="yes">Ja</string>
<string name="no">Nee</string>
<string name="install_i2p_android">I2P Android installeren?</string>
<string name="you_must_have_i2p_android">Je moet I2P Android geïnstalleerd en draaiende hebben. Wil je het installeren?</string>
<string name="start_i2p_android">I2P Android starten?</string>
<string name="would_you_like_to_start_i2p_android">Het lijkt erop dat I2P Android niet draait. Wil je het starten?</string>
</resources>

View File

@ -5,5 +5,5 @@
<string name="install_i2p_android">Установить I2P Android?</string>
<string name="you_must_have_i2p_android">Вам необходимо установить и запустить I2P Android. Установить сейчас?</string>
<string name="start_i2p_android">Запустить I2P Android?</string>
<string name="would_you_like_to_start_i2p_android">Похоже I2P Android не запущен. Хотите его запустить?</string>
<string name="would_you_like_to_start_i2p_android">Похоже, I2P Android не запущен. Хотите его запустить?</string>
</resources>

View File

@ -1,4 +1,4 @@
VERSION_NAME=0.4
VERSION_NAME=0.5.1
GROUP=net.i2p.android
POM_URL=https://github.com/i2p/i2p.android.base
@ -13,5 +13,5 @@ POM_DEVELOPER_NAME=str4d
POM_DEVELOPER_EMAIL=str4d@i2pmail.org
ANDROID_BUILD_TARGET_SDK_VERSION=21
ANDROID_BUILD_TOOLS_VERSION=21.0.2
ANDROID_BUILD_SDK_VERSION=21
ANDROID_BUILD_TOOLS_VERSION=21.1.2
ANDROID_BUILD_SDK_VERSION=21

View File

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