Compare commits

..

36 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
48 changed files with 1022 additions and 229 deletions

View File

@ -1,4 +1,11 @@
0.9.17.1
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

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

@ -24,6 +24,10 @@ android {
versionNameSuffix '-DEBUG'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
lintOptions {
abortOnError false
}
@ -43,19 +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 'net.i2p.android.ext:floatingactionbutton:1.3.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',
'net.i2p.android.ext:floatingactionbutton:b4185725209ad59222a3b7baf376dbeac6ffdbac033c8243f7f17cd9da85ca9a',
'com.android.support:support-v4:703572d3015a088cc5604b7e38885af3d307c829d0c5ceaf8654ff41c71cd160',
'com.android.support:appcompat-v7:5dbeb5316d0a6027d646ae552804c3baa5e3bd53f7f33db50904d51505c8a0e5',
'com.android.support:recyclerview-v7:e525ad3f33c84bb12b73d2dc975b55364a53f0f2d0697e043efba59ba73e22d2',
'net.i2p.android.ext:floatingactionbutton:a20d1f0cae15f8965b81486ba31245937968ae6ee5fa6e8a3ea21d7f6c6243ab',
]
}

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"
@ -21,6 +22,11 @@
<provider
android:name=".provider.CacheProvider"
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

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

@ -249,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

@ -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.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,9 @@
<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>
@ -54,6 +56,7 @@
<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>
@ -115,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>
@ -137,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>

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,8 +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>
@ -51,15 +56,21 @@
<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>
@ -115,6 +126,11 @@
<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>
@ -127,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>
@ -143,7 +161,10 @@
<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>
@ -152,20 +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>
@ -225,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:1.0.0'
classpath 'com.android.tools.build:gradle:1.0.1'
classpath files('gradle/libs/gradle-witness.jar')
}
}

View File

@ -15,6 +15,10 @@ android {
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.2'
compile 'com.android.support:support-v4:21.0.3'
}
dependencyVerification {
verify = [
'com.android.support:support-v4:126a4c291f41f75f3fff4968e9d397bc8454cdff4d8f994cbe0524e3bad76e72',
'com.android.support:support-v4:703572d3015a088cc5604b7e38885af3d307c829d0c5ceaf8654ff41c71cd160',
]
}

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,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_TOOLS_VERSION=21.1.2
ANDROID_BUILD_SDK_VERSION=21