Compare commits

..

38 Commits

Author SHA1 Message Date
ab6f4799c9 0.9.22 2015-10-10 22:10:41 +00:00
f4beecead3 Added new client library translations 2015-10-10 11:43:12 +00:00
17e6d56bb7 Add false.i2p as SSL outproxy to default httpclient tunnel 2015-10-10 11:25:16 +00:00
29881b73f9 Fixed elevation of tabs 2015-10-10 11:16:50 +00:00
8c30582b9a Updated dependencies 2015-10-10 11:07:48 +00:00
06de8abb44 Re-add fixed translations for big text notification 2015-10-10 08:43:55 +00:00
a65ee65606 Updated translations 2015-10-09 22:56:07 +00:00
a6f49168b7 Add color to notification icon 2015-10-09 11:06:40 +00:00
1d1e6121fa Show addressbook tab when selecting address 2015-10-09 02:42:49 +00:00
30b86499cd Fix tab changing on rotate 2015-10-09 01:38:10 +00:00
bb8daa81d2 Translation bugfix 2015-10-09 00:12:13 +00:00
763ce08902 Updated CHANGELOG 2015-10-08 23:43:39 +00:00
a4e1055d86 Fixed bandwidth units in notification 2015-10-08 23:43:29 +00:00
ed89afd1bd Updated translations 2015-10-08 23:38:26 +00:00
13e26b4a1c Fix Activity transitions on Lollipop 2015-10-08 23:04:26 +00:00
3be56767a1 Move Lightning to recommended, Orweb to supported 2015-10-04 05:36:45 +00:00
d184019a8e Fix CalledFromWrongThreadException 2015-06-21 00:42:58 +00:00
6df542a162 Only linkify "irc://" in first start dialog if user can open them 2015-06-20 22:36:44 +00:00
96ca1d1a37 Updated CHANGELOG 2015-06-18 05:27:54 +00:00
6b585822f1 0.9.20
i2p.i2p revision: 747e9d409223a108623b0b38d084097335d6c195
2015-06-18 05:26:44 +00:00
c81c57daa0 Updated translations 2015-06-16 11:39:36 +00:00
f28be9cb02 Updated CHANGELOG 2015-06-16 11:35:28 +00:00
6582f67ed5 Fix tunnel backup quantity fetching in advanced tunnel prefs 2015-06-16 11:35:10 +00:00
d138c482d9 Change to bar plot, update range step when plot updates 2015-06-16 09:12:28 +00:00
fc2d962cad Hide stats in final shutdown 2015-06-16 07:32:48 +00:00
c541ae0347 Remove HTML entities from clock skew error, code style 2015-06-15 11:32:19 +00:00
d6e79ed0a7 Improved graph axes 2015-06-15 11:30:54 +00:00
7ec20fe60c Updated TODO 2015-06-15 11:30:13 +00:00
f3464c5095 SU3 news 2015-06-06 10:36:12 +00:00
32512fecbc Code style 2015-06-06 07:36:16 +00:00
1d7fcd47ef Filter proxy error page resources to remove routerconsole links 2015-06-06 03:56:44 +00:00
f156c591ad Disable countries table in netDB page (because no GeoIP data) 2015-06-06 00:07:18 +00:00
fb6ca0d61e Fixed NPE (linked to previous commit) 2015-06-05 23:50:33 +00:00
a4662984a7 Added missing setContentView() 2015-06-05 23:38:49 +00:00
6cccf1fb23 Don't change lights for graceful shutdown 2015-06-05 23:13:09 +00:00
39f32acd5b Update release notes 2015-06-04 10:45:21 +00:00
3d60d10f8e Make tunnel length default 2 in tunnel prefs, to match default i2ptunnel.config 2015-06-04 10:43:23 +00:00
8cbc11dff0 Updated translations 2015-06-03 00:03:14 +00:00
68 changed files with 1663 additions and 910 deletions

View File

@ -1,9 +1,14 @@
0.9.20
0.9.22
* Updated browser config guide
* Bug fixes and translation updates
0.9.20 / 2015-06-18 / 5fdaabeb5fa955caac90f1390adbdeaeae42fdf1
* Simplified the main interface
* Language can be configured
* Tunnels can now be edited
* Material design improvements
* Better support for tablets
* Improved graph rendering
* Bug fixes and translation updates
0.9.19.1 / 2015-04-15 / ed86e7e85161dbe3f15932fd4d195c551f8e2c71

8
TODO
View File

@ -6,12 +6,19 @@
- 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
- Console text change
<zzz> "download" and "upload" at the bottom of the status is a little misleading..
<zzz> maybe 'downstream bandwidth' or 'inbound usage' ?
- Fix visibility of advanced tunnel parameter changes
<zzz> when I change an advanced tunnel param e.g. length or variance, the change isn't displayed, I have to go back and forward again to see the change
# New UI fixes
- Addressbook action items are in tunnel overflow menu after moving from console to tunnels
- Material design:
- Style for addressbook headers
- Change console FAM icon when possible
<zzz> on the bottom right, the + and x icons might be better as a double-up arrow and double-down arrow?
# Short-term
@ -41,7 +48,6 @@
- Also look at connection type: Connectivity.isConnectionFast()
- Expose log level overrides
- Improve graphs
- Show time on bottom axis
- Show fixed x range, not only available data
- Think about pan/zoom
- How to persist data across restarts?

View File

@ -5,8 +5,8 @@ android {
compileSdkVersion Integer.parseInt(project.ANDROID_BUILD_SDK_VERSION as String)
buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION as String
defaultConfig {
versionCode 4745229
versionName '0.9.19.1'
versionCode 4745231
versionName '0.9.22'
minSdkVersion 9
targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION as String)
@ -56,21 +56,22 @@ dependencies {
compile project(':client')
// Android Support Repository dependencies
compile 'com.android.support:support-v4:22.2.0'
compile 'com.android.support:appcompat-v7:22.2.0'
compile 'com.android.support:recyclerview-v7:22.2.0'
compile 'com.android.support:support-v4:23.0.1'
compile 'com.android.support:appcompat-v7:23.0.1'
compile 'com.android.support:recyclerview-v7:23.0.1'
// Remote dependencies
compile 'net.i2p.android.ext:floatingactionbutton:1.9.0'
compile 'net.i2p.android.ext:floatingactionbutton:1.10.0'
compile files('libs/androidplot-core-0.6.1.jar')
compile ('com.android.support:support-v4-preferencefragment:1.0.0@aar'){
exclude module: 'support-v4'
}
compile 'com.pnikosis:materialish-progress:1.5'
compile 'com.pnikosis:materialish-progress:1.7'
compile 'com.eowise:recyclerview-stickyheaders:0.5.2@aar'
compile ('com.mcxiaoke.viewpagerindicator:library:2.4.1') {
exclude group: 'com.android.support', module: 'support-v4'
}
compile 'org.sufficientlysecure:html-textview:1.2'
// Testing-only dependencies
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.0'
@ -79,14 +80,15 @@ dependencies {
dependencyVerification {
verify = [
'com.android.support:support-v4:7bb6e40a18774aa2595e4d8f9fe0ae14e61670f71a1279272fb0b79b8be71180',
'com.android.support:appcompat-v7:2d5867698410b41f75140c91d6c1e58da74ae0f97baf6e0bdd1f7cc1017ceb2c',
'com.android.support:recyclerview-v7:3a8da14585fa1c81f06e7cef4d93a7641f0323d8f984ff9a7bd7a6e416b46888',
'net.i2p.android.ext:floatingactionbutton:b41eae5fe6be599e3fade00273521b0914f2e199d5f04c50fa34cfe935347f76',
'com.android.support:support-v4:5ddf1feda096c164d0dd299cc6786fde18a845ce47dbfe484ff27cce27e19638',
'com.android.support:appcompat-v7:db48e76616882b00e407b19027aae4e92d129456a65b9bb4e4bc5262e3ad9b76',
'com.android.support:recyclerview-v7:9621f5790e47010e14196c3ecee168cc68659316d19b2ef6b5a843f35a81c3db',
'net.i2p.android.ext:floatingactionbutton:32bd3a15680aee3fcd28a7be226ff986b3b025ae8d8977487c1df3e3bb029044',
'com.android.support:support-v4-preferencefragment:5470f5872514a6226fa1fc6f4e000991f38805691c534cf0bd2778911fc773ad',
'com.pnikosis:materialish-progress:d71d80e00717a096784482aee21001a9d299fec3833e4ebd87739ed36cf77c54',
'com.pnikosis:materialish-progress:da089a90d1dab61e9b50038c09081019398f81190d12b0b567ce94b83ef8cf93',
'com.eowise:recyclerview-stickyheaders:7b236da49b33b840e9ba6e7e4182218d1a2d9047236fdbc3ca947352f9b0883b',
'com.mcxiaoke.viewpagerindicator:library:1e8aad664137f68abdfee94889f6da3dc98be652a235176a403965a07a25de62',
'org.sufficientlysecure:html-textview:1d3bed31ef837437154de8d2362a0e6b0e59b6c3535d87ee48c2fab12c84f9bb',
]
}
@ -128,6 +130,24 @@ task copyI2PResources(type: Copy) {
rename { String name ->
name.toLowerCase(Locale.US).replace('-', '_').replace('.', '_')
}
filter { String line ->
// Remove links to routerconsole
def m = line =~ /127.0.0.1:7657/
if (m.getCount()) {
// Links around content
line = line.replaceAll(/<a href="http:\/\/127.0.0.1:7657[^>]*>(.+?)<\/a>/) { fullmatch, content ->
content
}
// Links in translation substitutions
line = line.replaceAll(/"<a href=\\"http:\/\/127.0.0.1:7657[^>]*>", "<\/a>"/, '"", ""')
}
// Remove "Configuration - Help - Addressbook" heading
def n = line =~ /Configuration.+Help.+Addressbook/
if (n.getCount())
""
else
line
}
}
from('../LICENSE.txt') { rename { 'license_app_txt' } }
from('../licenses/LICENSE-Apache2.0.txt') { rename { 'license_apache20_txt' } }

View File

@ -147,10 +147,16 @@ public class I2PActivity extends I2PActivityBase implements
if (action == null)
return;
if (action.equals("net.i2p.android.router.START_I2P")) {
switch (action) {
case "net.i2p.android.router.START_I2P":
if (mViewPager.getCurrentItem() != 0)
mViewPager.setCurrentItem(0, false);
autoStart();
break;
case Intent.ACTION_PICK:
mViewPager.setFixedPage(2, R.string.select_an_address);
break;
}
}

View File

@ -5,14 +5,29 @@ import android.content.Context;
import net.i2p.android.router.NewsActivity;
import net.i2p.android.router.R;
import net.i2p.android.router.util.Notifications;
import net.i2p.crypto.SU3File;
import net.i2p.data.DataHelper;
import net.i2p.router.RouterContext;
import net.i2p.router.news.NewsEntry;
import net.i2p.router.news.NewsMetadata;
import net.i2p.router.news.NewsXMLParser;
import net.i2p.router.util.RFC822Date;
import net.i2p.util.EepGet;
import net.i2p.util.FileUtil;
import net.i2p.util.Log;
import net.i2p.util.ReusableGZIPInputStream;
import net.i2p.util.SecureFileOutputStream;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.Date;
import java.util.List;
/**
* From router console, simplified since we don't deal with router versions
@ -56,12 +71,12 @@ public class NewsFetcher implements Runnable, EepGet.StatusListener {
*
* @since 0.7.14 not configurable
*/
private static final String BACKUP_NEWS_URL = "http://avviiexdngd32ccoy4kuckvc3mkf53ycvzbz6vz75vzhv4tbpk5a.b32.i2p/news.xml";
private static final String BACKUP_NEWS_URL_SU3 = "http://avviiexdngd32ccoy4kuckvc3mkf53ycvzbz6vz75vzhv4tbpk5a.b32.i2p/news.su3";
private static final String PROP_LAST_CHECKED = "router.newsLastChecked";
private static final String PROP_REFRESH_FREQUENCY = "router.newsRefreshFrequency";
private static final String DEFAULT_REFRESH_FREQUENCY = 24*60*60*1000 + "";
private static final String DEFAULT_REFRESH_FREQUENCY = 24 * 60 * 60 * 1000 + "";
private static final String PROP_NEWS_URL = "router.newsURL";
private static final String DEFAULT_NEWS_URL = "http://echelon.i2p/i2p/news.xml";
public static final String DEFAULT_NEWS_URL_SU3 = "http://echelon.i2p/news/news.su3";
private NewsFetcher(Context context, RouterContext ctx, Notifications notif) {
mCtx = context;
@ -73,7 +88,8 @@ public class NewsFetcher implements Runnable, EepGet.StatusListener {
String last = ctx.getProperty(PROP_LAST_CHECKED);
if (last != null)
_lastFetch = Long.parseLong(last);
} catch (NumberFormatException nfe) {}
} catch (NumberFormatException nfe) {
}
File newsDir = new File(_context.getRouterDir(), NEWS_DIR);
// isn't already there on android
newsDir.mkdir();
@ -112,8 +128,10 @@ public class NewsFetcher implements Runnable, EepGet.StatusListener {
return buf.toString();
}
private static final long INITIAL_DELAY = 5*60*1000;
private static final long RUN_DELAY = 30*60*1000;
// Runnable
private static final long INITIAL_DELAY = 5 * 60 * 1000;
private static final long RUN_DELAY = 30 * 60 * 1000;
public void run() {
_thread = Thread.currentThread();
@ -161,6 +179,7 @@ public class NewsFetcher implements Runnable, EepGet.StatusListener {
/**
* Call this when changing news URLs to force an update next time the timer fires.
*
* @since 0.8.7
*/
void invalidateNews() {
@ -169,7 +188,7 @@ public class NewsFetcher implements Runnable, EepGet.StatusListener {
}
public void fetchNews() {
String newsURL = _context.getProperty(PROP_NEWS_URL, DEFAULT_NEWS_URL);
String newsURL = _context.getProperty(PROP_NEWS_URL, DEFAULT_NEWS_URL_SU3);
String proxyHost = "127.0.0.1";
int proxyPort = 4444;
if (_tempFile.exists())
@ -185,7 +204,7 @@ public class NewsFetcher implements Runnable, EepGet.StatusListener {
} else {
// backup news location - always proxied
_tempFile.delete();
get = new EepGet(_context, true, proxyHost, proxyPort, 0, _tempFile.getAbsolutePath(), BACKUP_NEWS_URL, true, null, _lastModified);
get = new EepGet(_context, true, proxyHost, proxyPort, 0, _tempFile.getAbsolutePath(), BACKUP_NEWS_URL_SU3, true, null, _lastModified);
get.addStatusListener(this);
if (get.fetch())
_lastModified = get.getLastModified();
@ -195,22 +214,34 @@ public class NewsFetcher implements Runnable, EepGet.StatusListener {
}
}
public void attemptFailed(String url, long bytesTransferred, long bytesRemaining, int currentAttempt, int numRetries, Exception cause) {
// ignore
}
// EepGet.StatusListener
public void bytesTransferred(long alreadyTransferred, int currentWrite, long bytesTransferred, long bytesRemaining, String url) {
// ignore
}
public void transferComplete(long alreadyTransferred, long bytesTransferred, long bytesRemaining, String url, String outputFile, boolean notModified) {
if (_log.shouldLog(Log.INFO))
_log.info("News fetched from " + url + " with " + (alreadyTransferred+bytesTransferred));
_log.info("News fetched from " + url + " with " + (alreadyTransferred + bytesTransferred));
long now = _context.clock().now();
if (_tempFile.exists()) {
boolean copied = FileUtil.copy(_tempFile.getAbsolutePath(), _newsFile.getAbsolutePath(), true);
if (_tempFile.exists() && _tempFile.length() > 0) {
File from;
if (url.endsWith(".su3")) {
try {
from = processSU3();
} catch (IOException ioe) {
_log.error("Failed to extract the news file", ioe);
_tempFile.delete();
return;
}
} else {
from = _tempFile;
}
boolean copied = FileUtil.rename(from, _newsFile);
_tempFile.delete();
if (copied) {
_lastUpdated = now;
_tempFile.delete();
// Notify user
_notif.notify(mCtx.getString(R.string.news_updated),
@ -229,13 +260,21 @@ public class NewsFetcher implements Runnable, EepGet.StatusListener {
_context.router().saveConfig();
}
public void attemptFailed(String url, long bytesTransferred, long bytesRemaining, int currentAttempt, int numRetries, Exception cause) {
// ignore
}
public void transferFailed(String url, long bytesTransferred, long bytesRemaining, int currentAttempt) {
if (_log.shouldLog(Log.WARN))
_log.warn("Failed to fetch the news from " + url);
_tempFile.delete();
}
public void headerReceived(String url, int attemptNum, String key, String val) {}
public void attempting(String url) {}
public void headerReceived(String url, int attemptNum, String key, String val) {
}
public void attempting(String url) {
}
private class Shutdown implements Runnable {
public void run() {
@ -244,4 +283,138 @@ public class NewsFetcher implements Runnable, EepGet.StatusListener {
_thread.interrupt();
}
}
//
// SU3 handlers
//
/**
* Process the fetched su3 news file _tempFile.
* Handles 3 types of contained files: xml.gz (preferred), xml, and html (old format fake xml)
*
* @return the temp file contining the HTML-format news.xml
* @since 0.9.20
*/
private File processSU3() throws IOException {
SU3File su3 = new SU3File(_context, _tempFile);
// real xml, maybe gz, maybe not
File to1 = new File(_context.getTempDir(), "tmp-" + _context.random().nextInt() + ".xml");
// real xml
File to2 = new File(_context.getTempDir(), "tmp2-" + _context.random().nextInt() + ".xml");
try {
su3.verifyAndMigrate(to1);
int type = su3.getFileType();
if (su3.getContentType() != SU3File.CONTENT_NEWS)
throw new IOException("bad content type: " + su3.getContentType());
if (type == SU3File.TYPE_HTML)
return to1;
if (type != SU3File.TYPE_XML && type != SU3File.TYPE_XML_GZ)
throw new IOException("bad file type: " + type);
File xml;
if (type == SU3File.TYPE_XML_GZ) {
gunzip(to1, to2);
xml = to2;
to1.delete();
} else {
xml = to1;
}
NewsXMLParser parser = new NewsXMLParser(_context);
parser.parse(xml);
xml.delete();
NewsMetadata data = parser.getMetadata();
List<NewsEntry> entries = parser.getEntries();
String sudVersion = su3.getVersionString();
String signingKeyName = su3.getSignerString();
File to3 = new File(_context.getTempDir(), "tmp3-" + _context.random().nextInt() + ".xml");
outputOldNewsXML(data, entries, sudVersion, signingKeyName, to3);
return to3;
} finally {
to2.delete();
}
}
/**
* Gunzip the file
*
* @since 0.9.20
*/
private static void gunzip(File from, File to) throws IOException {
ReusableGZIPInputStream in = ReusableGZIPInputStream.acquire();
OutputStream out = null;
try {
in.initialize(new FileInputStream(from));
out = new SecureFileOutputStream(to);
byte buf[] = new byte[4096];
int read;
while ((read = in.read(buf)) != -1) {
out.write(buf, 0, read);
}
} finally {
if (out != null) try {
out.close();
} catch (IOException ioe) {}
ReusableGZIPInputStream.release(in);
}
}
/**
* Output in the old format.
*
* @since 0.9.20
*/
private void outputOldNewsXML(NewsMetadata data, List<NewsEntry> entries,
String sudVersion, String signingKeyName, File to) throws IOException {
NewsMetadata.Release latestRelease = data.releases.get(0);
Writer out = null;
try {
out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(to), "UTF-8"));
out.write("<!--\n");
// update metadata in old format
out.write("<i2p.release ");
if (latestRelease.i2pVersion != null)
out.write(" version=\"" + latestRelease.i2pVersion + '"');
if (latestRelease.minVersion != null)
out.write(" minVersion=\"" + latestRelease.minVersion + '"');
if (latestRelease.minJavaVersion != null)
out.write(" minJavaVersion=\"" + latestRelease.minJavaVersion + '"');
String su3Torrent = "";
String su2Torrent = "";
for (NewsMetadata.Update update : latestRelease.updates) {
if (update.torrent != null) {
if ("su3".equals(update.type))
su3Torrent = update.torrent;
else if ("su2".equals(update.type))
su2Torrent = update.torrent;
}
}
if (!su2Torrent.isEmpty())
out.write(" su2Torrent=\"" + su2Torrent + '"');
if (!su3Torrent.isEmpty())
out.write(" su3Torrent=\"" + su3Torrent + '"');
out.write("/>\n");
// su3 and feed metadata for debugging
out.write("** News version:\t" + DataHelper.stripHTML(sudVersion) + '\n');
out.write("** Signed by:\t" + signingKeyName + '\n');
out.write("** Feed:\t" + DataHelper.stripHTML(data.feedTitle) + '\n');
out.write("** Feed ID:\t" + DataHelper.stripHTML(data.feedID) + '\n');
out.write("** Feed Date:\t" + (new Date(data.feedUpdated)) + '\n');
out.write("-->\n");
if (entries == null)
return;
for (NewsEntry e : entries) {
if (e.title == null || e.content == null)
continue;
out.write("<!-- Entry Date: " + (new Date(e.updated)) + " -->\n");
out.write("<h3>");
out.write(e.title);
out.write("</h3>\n");
out.write(e.content);
out.write("\n\n");
}
} finally {
if (out != null) try {
out.close();
} catch (IOException ioe) {}
}
}
}

View File

@ -10,6 +10,7 @@ import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewCompat;
import android.support.v7.app.AlertDialog;
import android.support.v7.widget.Toolbar;
import android.view.LayoutInflater;
@ -105,12 +106,16 @@ public class TunnelDetailFragment extends Fragment {
if (mTunnel != null) {
TextView name = (TextView) v.findViewById(R.id.tunnel_name);
name.setText(mTunnel.getName());
ViewCompat.setTransitionName(name,
getActivity().getString(R.string.TUNNEL_NAME) + mTunnel.getId());
TextView type = (TextView) v.findViewById(R.id.tunnel_type);
type.setText(mTunnel.getType());
TextView description = (TextView) v.findViewById(R.id.tunnel_description);
description.setText(mTunnel.getDescription());
ViewCompat.setTransitionName(description,
getActivity().getString(R.string.TUNNEL_DESCRIPTION) + mTunnel.getId());
TextView details = (TextView) v.findViewById(R.id.tunnel_details);
details.setText(mTunnel.getDetails());

View File

@ -3,6 +3,7 @@ package net.i2p.android.i2ptunnel;
import android.content.Context;
import android.os.Build;
import android.support.v4.util.Pair;
import android.support.v4.view.ViewCompat;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
@ -143,6 +144,11 @@ public class TunnelEntryAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
tvh.description.setText(tunnel.getDescription());
tvh.interfacePort.setText(tunnel.getTunnelLink(false));
ViewCompat.setTransitionName(tvh.name,
mCtx.getString(R.string.TUNNEL_NAME) + tunnel.getId());
ViewCompat.setTransitionName(tvh.description,
mCtx.getString(R.string.TUNNEL_DESCRIPTION) + tunnel.getId());
tvh.itemView.setSelected(mTwoPane.isTwoPane() && position == mActivatedPosition);
tvh.itemView.setOnClickListener(new View.OnClickListener() {
@Override
@ -151,9 +157,14 @@ public class TunnelEntryAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
mActivatedPosition = position;
notifyItemChanged(oldPosition);
notifyItemChanged(position);
mListener.onTunnelSelected(tunnel.getId(),
Pair.create((View)tvh.name, mCtx.getString(R.string.TUNNEL_NAME)),
Pair.create((View)tvh.description, mCtx.getString(R.string.TUNNEL_DESCRIPTION)));
Pair<View, String> namePair = Pair.create(
(View)tvh.name,
ViewCompat.getTransitionName(tvh.name));
Pair<View, String> descPair = Pair.create(
(View)tvh.description,
ViewCompat.getTransitionName(tvh.description));
Pair<View, String>[] pairs = new Pair[]{ namePair, descPair};
mListener.onTunnelSelected(tunnel.getId(), pairs);
}
});
break;

View File

@ -53,8 +53,7 @@ public class TunnelListFragment extends Fragment implements
// Container Activity must implement this interface
public interface OnTunnelSelectedListener {
void onTunnelSelected(int tunnelId, Pair<View, String> tunnelName,
Pair<View, String> tunnelDescription);
void onTunnelSelected(int tunnelId, Pair<View, String>[] pairs);
}
public static TunnelListFragment newInstance(boolean showClientTunnels) {

View File

@ -239,8 +239,7 @@ public class TunnelsContainer extends Fragment implements
// TunnelListFragment.OnTunnelSelectedListener
public final void onTunnelSelected(int tunnelId, Pair<View, String> tunnelName,
Pair<View, String> tunnelDescription) {
public final void onTunnelSelected(int tunnelId, Pair<View, String>[] pairs) {
if (mTwoPane) {
// In two-pane mode, show the detail view in this activity by
// adding or replacing the detail fragment using a
@ -255,7 +254,7 @@ public class TunnelsContainer extends Fragment implements
detailIntent.putExtra(TunnelDetailFragment.TUNNEL_ID, tunnelId);
ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(
getActivity(), tunnelName, tunnelDescription);
getActivity(), pairs);
ActivityCompat.startActivity(getActivity(), detailIntent, options.toBundle());
}
}

View File

@ -134,10 +134,15 @@ public class GeneralTunnelPreferenceFragment extends BaseTunnelPreferenceFragmen
@Override
protected Void doInBackground(Void... voids) {
Set<String> interfaceSet = Addresses.getAllAddresses();
String[] interfaces = interfaceSet.toArray(new String[interfaceSet.size()]);
final String[] interfaces = interfaceSet.toArray(new String[interfaceSet.size()]);
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
reachableBy.setEntries(interfaces);
reachableBy.setEntryValues(interfaces);
reachableBy.setEnabled(true);
}
});
return null;
}
}.execute();

View File

@ -225,7 +225,7 @@ public class TunnelUtil extends GeneralHelper {
ed.putInt(res.getString(R.string.TUNNEL_OPT_QUANTITY),
getTunnelQuantity(tunnel, res.getInteger(R.integer.DEFAULT_TUNNEL_QUANTITY)));
ed.putInt(res.getString(R.string.TUNNEL_OPT_BACKUP_QUANTITY),
getTunnelQuantity(tunnel, res.getInteger(R.integer.DEFAULT_TUNNEL_BACKUP_QUANTITY)));
getTunnelBackupQuantity(tunnel, res.getInteger(R.integer.DEFAULT_TUNNEL_BACKUP_QUANTITY)));
}
@Override

View File

@ -328,7 +328,7 @@ public class MainFragment extends I2PFragmentBase {
newState == State.NETWORK_STOPPED) {
mConsoleLights.setImageResource(R.drawable.routerlogo_0);
} else if (newState == State.STARTING ||
newState == State.GRACEFUL_SHUTDOWN ||
//newState == State.GRACEFUL_SHUTDOWN || // Don't change lights for graceful
newState == State.STOPPING ||
newState == State.MANUAL_STOPPING ||
newState == State.MANUAL_QUITTING ||
@ -352,7 +352,10 @@ public class MainFragment extends I2PFragmentBase {
vNetStatusText.setText(R.string.no_internet);
vStatusContainer.setVisibility(View.VISIBLE);
vNonNetStatus.setVisibility(View.GONE);
} else if (ctx != null) {
} else if (lastRouterState != null &&
!Util.isStopping(lastRouterState) &&
!Util.isStopped(lastRouterState) &&
ctx != null) {
Util.NetStatus netStatus = Util.getNetStatus(getActivity(), ctx);
switch (netStatus.level) {
case ERROR:

View File

@ -2,6 +2,10 @@ package net.i2p.android.router.dialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.DialogFragment;
@ -14,6 +18,8 @@ import android.widget.TextView;
import net.i2p.android.router.R;
import net.i2p.android.router.util.I2Patterns;
import java.util.List;
public class FirstStartDialog extends DialogFragment {
@NonNull
@Override
@ -23,8 +29,20 @@ public class FirstStartDialog extends DialogFragment {
TextView tv = (TextView)view.findViewById(R.id.url_faq);
Linkify.addLinks(tv, I2Patterns.I2P_WEB_URL, "http://");
tv = (TextView)view.findViewById(R.id.url_irc_i2p);
// Find all installed browsers that listen for "irc://"
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("irc://127.0.0.1:6668/i2p"));
final PackageManager pm = getActivity().getPackageManager();
List<ResolveInfo> installedIrcClients = pm.queryIntentActivities(intent, 0);
// Only linkify "irc://" if we have an app that can handle them.
// Otherwise, the app crashes with an un-catchable ActivityNotFoundException
// if the user clicks one of them.
if (installedIrcClients.size() > 0) {
tv = (TextView) view.findViewById(R.id.url_irc_i2p);
Linkify.addLinks(tv, I2Patterns.IRC_URL, "irc://");
}
AlertDialog.Builder b = new AlertDialog.Builder(getActivity());
b.setTitle(R.string.first_start_title)

View File

@ -60,7 +60,7 @@ public class NetDbStatsLoader extends AsyncTaskLoader<List<ObjectCounter<String>
}
ret.add(versions);
ret.add(countries);
//ret.add(countries);
ret.add(transports);
return ret;

View File

@ -113,15 +113,15 @@ public class NetDbSummaryPagerFragment extends I2PFragmentBase implements
if (mData == null)
return 0;
else
return 3;
return 2;
}
@Override
public CharSequence getPageTitle(int i) {
switch (i) {
case 1:
return getString(R.string.countries);
case 2:
// return getString(R.string.countries);
//case 2:
return getString(R.string.settings_label_transports);
default:
return getString(R.string.versions);

View File

@ -51,7 +51,7 @@ public class NetDbSummaryTableFragment extends Fragment {
switch (mCategory) {
case 1:
case 2:
//case 2:
Collections.sort(objects);
break;
default:
@ -83,9 +83,9 @@ public class NetDbSummaryTableFragment extends Fragment {
switch (mCategory) {
case 1:
tl1.setText(R.string.country);
break;
case 2:
// tl1.setText(R.string.country);
// break;
//case 2:
tl1.setText(R.string.transport);
break;
default:

View File

@ -26,7 +26,6 @@ import net.i2p.router.RouterContext;
import net.i2p.router.RouterLaunch;
import java.lang.ref.WeakReference;
import java.text.DecimalFormat;
/**
* Runs the router
@ -260,26 +259,16 @@ public class RouterService extends Service {
int inCl = ctx.tunnelManager().getInboundClientTunnelCount();
int outCl = ctx.tunnelManager().getOutboundClientTunnelCount();
String uptime = DataHelper.formatDuration(ctx.router().getUptime());
double inBW = ctx.bandwidthLimiter().getReceiveBps() / 1024;
double outBW = ctx.bandwidthLimiter().getSendBps() / 1024;
// control total width
DecimalFormat fmt;
if(inBW >= 1000 || outBW >= 1000) {
fmt = new DecimalFormat("#0");
} else if(inBW >= 100 || outBW >= 100) {
fmt = new DecimalFormat("#0.0");
} else {
fmt = new DecimalFormat("#0.00");
}
double inBW = ctx.bandwidthLimiter().getReceiveBps();
double outBW = ctx.bandwidthLimiter().getSendBps();
String text =
getResources().getString(R.string.notification_status_text,
Util.formatSize(inBW), Util.formatSize(outBW));
// TODO change string resource after 0.9.20 to use Util.formatSize()
String bigText =
getResources().getString(R.string.notification_status_bw,
fmt.format(inBW), fmt.format(outBW)) + '\n'
Util.formatSize(inBW), Util.formatSize(outBW)) + '\n'
+ getResources().getString(R.string.notification_status_peers,
active, known) + '\n'
+ getResources().getString(R.string.notification_status_expl,

View File

@ -40,6 +40,7 @@ class StatusBar {
mNotifyBuilder = new NotificationCompat.Builder(ctx)
.setContentText(text)
.setSmallIcon(icon)
.setColor(mCtx.getResources().getColor(R.color.primary_light))
.setOngoing(true)
.setOnlyAlertOnce(true);

View File

@ -1,8 +1,5 @@
package net.i2p.android.router.service;
import java.util.Observable;
import java.util.Observer;
import com.androidplot.xy.SimpleXYSeries;
import com.androidplot.xy.XYSeries;
@ -11,6 +8,9 @@ import net.i2p.stat.Rate;
import net.i2p.stat.RateStat;
import net.i2p.stat.RateSummaryListener;
import java.util.Observable;
import java.util.Observer;
public class SummaryListener implements RateSummaryListener {
public static final int HISTORY_SIZE = 30;
@ -45,8 +45,7 @@ public class SummaryListener implements RateSummaryListener {
public void add(double totalValue, long eventCount, double totalEventTime,
long period) {
long now = now();
long when = now / 1000;
long when = now();
double val = eventCount > 0 ? (totalValue / eventCount) : 0d;
if (_series.size() > HISTORY_SIZE)
@ -70,7 +69,6 @@ public class SummaryListener implements RateSummaryListener {
long period = _rate.getPeriod();
_name = rs.getName() + "." + period;
_series = new SimpleXYSeries(_name);
_series.useImplicitXVals();
_rate.setSummaryListener(this);
}

View File

@ -8,9 +8,9 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.androidplot.Plot;
import com.androidplot.xy.BarFormatter;
import com.androidplot.xy.BarRenderer;
import com.androidplot.xy.BoundaryMode;
import com.androidplot.xy.LineAndPointFormatter;
import com.androidplot.xy.XYPlot;
import com.androidplot.xy.XYSeries;
import com.androidplot.xy.XYStepMode;
@ -21,25 +21,22 @@ import net.i2p.android.router.service.StatSummarizer;
import net.i2p.android.router.service.SummaryListener;
import net.i2p.android.router.util.Util;
import java.text.DateFormat;
import java.text.DecimalFormat;
import java.text.FieldPosition;
import java.text.Format;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Observable;
import java.util.Observer;
public class RateGraphFragment extends I2PFragmentBase {
// redraws a plot whenever an update is received:
private class MyPlotUpdater implements Observer {
Plot plot;
public MyPlotUpdater(Plot plot) {
this.plot = plot;
}
public void update(Observable o, Object arg) {
Util.d("Redrawing plot");
plot.redraw();
updatePlot();
}
}
@ -51,6 +48,7 @@ public class RateGraphFragment extends I2PFragmentBase {
private SummaryListener _listener;
private XYPlot _ratePlot;
private MyPlotUpdater _plotUpdater;
private int _k;
public static RateGraphFragment newInstance(String name, long period) {
RateGraphFragment f = new RateGraphFragment();
@ -99,6 +97,9 @@ public class RateGraphFragment extends I2PFragmentBase {
public void run() {
String rateName = getArguments().getString(RATE_NAME);
long period = getArguments().getLong(RATE_PERIOD);
_k = 1000;
if (rateName.startsWith("bw.") || rateName.contains("Size") || rateName.contains("Bps") || rateName.contains("memory"))
_k = 1024;
Util.d("Setting up " + rateName + "." + period);
if (StatSummarizer.instance() == null) {
@ -115,9 +116,11 @@ public class RateGraphFragment extends I2PFragmentBase {
XYSeries rateSeries = _listener.getSeries();
_plotUpdater = new MyPlotUpdater(_ratePlot);
_plotUpdater = new MyPlotUpdater();
_ratePlot.addSeries(rateSeries, new LineAndPointFormatter(Color.rgb(0, 0, 0), null, Color.rgb(0, 80, 0), null));
_ratePlot.addSeries(rateSeries, new BarFormatter(Color.argb(200, 0, 80, 0), Color.argb(200, 0, 80, 0)));
_ratePlot.calculateMinMaxVals();
long maxX = _ratePlot.getCalculatedMaxX().longValue();
Util.d("Adding plot updater to listener");
_listener.addObserver(_plotUpdater);
@ -125,31 +128,56 @@ public class RateGraphFragment extends I2PFragmentBase {
// Only one line, so hide the legend
_ratePlot.getLegendWidget().setVisible(false);
_ratePlot.setDomainStepMode(XYStepMode.SUBDIVIDE);
_ratePlot.setDomainStepValue(SummaryListener.HISTORY_SIZE);
BarRenderer renderer = (BarRenderer) _ratePlot.getRenderer(BarRenderer.class);
renderer.setBarWidthStyle(BarRenderer.BarWidthStyle.VARIABLE_WIDTH);
renderer.setBarGap(0);
// thin out domain/range tick labels so they dont overlap each other:
_ratePlot.setTicksPerDomainLabel(5);
_ratePlot.setTicksPerRangeLabel(3);
_ratePlot.setDomainUpperBoundary(maxX, BoundaryMode.GROW);
_ratePlot.setDomainStep(XYStepMode.INCREMENT_BY_VAL, 15 * 60 * 1000);
_ratePlot.setTicksPerDomainLabel(4);
_ratePlot.setRangeLowerBoundary(0, BoundaryMode.FIXED);
_ratePlot.setTicksPerRangeLabel(5);
_ratePlot.setDomainValueFormat(new Format() {
private DateFormat dateFormat = SimpleDateFormat.getTimeInstance(DateFormat.SHORT);
@Override
public StringBuffer format(Object obj, @NonNull StringBuffer toAppendTo,
@NonNull FieldPosition pos) {
long when = ((Number) obj).longValue();
Date date = new Date(when);
return dateFormat.format(date, toAppendTo, pos);
}
@Override
public Object parseObject(String s, @NonNull ParsePosition parsePosition) {
return null;
}
});
final int finalK = _k;
_ratePlot.setRangeValueFormat(new Format() {
@Override
public StringBuffer format(Object obj, @NonNull StringBuffer toAppendTo,
@NonNull FieldPosition pos) {
double val = ((Number) obj).doubleValue();
if (val >= 10 * 1000 * 1000)
return new DecimalFormat("0 M").format(val / (1000 * 1000), toAppendTo, pos);
else if (val >= 8 * 100 * 1000)
return new DecimalFormat("0.0 M").format(val / (1000 * 1000), toAppendTo, pos);
else if (val >= 10 * 1000)
return new DecimalFormat("0 k").format(val / (1000), toAppendTo, pos);
else if (val >= 8 * 100)
double maxY = _ratePlot.getCalculatedMaxY().doubleValue();
if (val == 0 || maxY < finalK) {
return new DecimalFormat("0").format(val, toAppendTo, pos);
} else if (maxY < finalK * finalK) {
if (val < 10 * finalK)
return new DecimalFormat("0.0 k").format(val / (1000), toAppendTo, pos);
else
return new DecimalFormat("0").format(val, toAppendTo, pos);
return new DecimalFormat("0 k").format(val / (1000), toAppendTo, pos);
} else {
if (val < 10 * finalK * finalK)
return new DecimalFormat("0.0 M").format(val / (finalK * finalK), toAppendTo, pos);
else
return new DecimalFormat("0 M").format(val / (finalK * finalK), toAppendTo, pos);
}
}
@Override
@ -160,7 +188,45 @@ public class RateGraphFragment extends I2PFragmentBase {
});
Util.d("Redrawing plot");
updatePlot();
}
}
private void updatePlot() {
_ratePlot.calculateMinMaxVals();
double maxY = _ratePlot.getCalculatedMaxY().doubleValue();
_ratePlot.setRangeStep(XYStepMode.INCREMENT_BY_VAL, getRangeStep(maxY, _k));
_ratePlot.redraw();
}
private double getRangeStep(double maxY, int k) {
if (maxY >= k * k)
return getRangeStepForScale(maxY, k * k);
else if (maxY >= k)
return getRangeStepForScale(maxY, k);
else
return getRangeStepForScale(maxY, 1);
}
private double getRangeStepForScale(double maxY, int scale) {
if (maxY >= 400 * scale)
return 40 * scale;
else if (maxY >= 200 * scale)
return 20 * scale;
else if (maxY >= 100 * scale)
return 10 * scale;
else if (maxY >= 40 * scale)
return 4 * scale;
else if (maxY >= 20 * scale)
return 2 * scale;
else if (maxY >= 10 * scale)
return scale;
else if (maxY >= 4 * scale)
return 0.4 * scale;
else if (maxY >= 2 * scale)
return 0.2 * scale;
else
return 0.1 * scale;
}
}

View File

@ -49,7 +49,8 @@ public abstract class Util implements I2PConstants {
//System.err.println("APK Path" + ": " + _apkPath);
if (pi.versionName != null)
return pi.versionName;
} catch (Exception e) {}
} catch (Exception e) {
}
return "??";
}
@ -60,7 +61,7 @@ public abstract class Util implements I2PConstants {
*/
public static RouterContext getRouterContext() {
List<RouterContext> contexts = RouterContext.listContexts();
if ( !((contexts == null) || (contexts.isEmpty())) ) {
if (!((contexts == null) || (contexts.isEmpty()))) {
return contexts.get(0);
}
return null;
@ -119,6 +120,7 @@ public abstract class Util implements I2PConstants {
android.util.Log.i(ANDROID_TAG, m);
}
}
public static void d(String m) {
d(m, null);
}
@ -135,7 +137,9 @@ public abstract class Util implements I2PConstants {
}
}
/** copied from various private components */
/**
* 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";
@ -229,6 +233,7 @@ public abstract class Util implements I2PConstants {
// propName -> defaultValue
private static HashMap<String, Boolean> booleanOptionsRequiringRestart = new HashMap<>();
private static HashMap<String, String> stringOptionsRequiringRestart = new HashMap<>();
static {
HashMap<String, Boolean> boolToAdd = new HashMap<>();
HashMap<String, String> strToAdd = new HashMap<>();
@ -245,6 +250,7 @@ public abstract class Util implements I2PConstants {
booleanOptionsRequiringRestart.putAll(boolToAdd);
stringOptionsRequiringRestart.putAll(strToAdd);
}
/**
* This function performs two tasks:
* <ul><li>
@ -356,12 +362,18 @@ public abstract class Util implements I2PConstants {
File path = new File(dir, file);
DataHelper.storeProps(props, path);
Util.d("Saved " + props.size() +" properties in " + file);
Util.d("Saved " + props.size() + " properties in " + file);
} catch (IOException ioe) {
} catch (Resources.NotFoundException nfe) {
} finally {
if (in != null) try { in.close(); } catch (IOException ioe) {}
if (fin != null) try { fin.close(); } catch (IOException ioe) {}
if (in != null) try {
in.close();
} catch (IOException ioe) {
}
if (fin != null) try {
fin.close();
} catch (IOException ioe) {
}
}
}
@ -393,10 +405,11 @@ public abstract class Util implements I2PConstants {
this.status = status;
}
}
public static NetStatus getNetStatus(Context ctx, RouterContext rCtx) {
if (rCtx.commSystem().isDummy())
return new NetStatus(NetStatus.Level.INFO, ctx.getString(R.string.vm_comm_system));
if (rCtx.router().getUptime() > 60*1000 && (!rCtx.router().gracefulShutdownInProgress()) &&
if (rCtx.router().getUptime() > 60 * 1000 && (!rCtx.router().gracefulShutdownInProgress()) &&
!rCtx.clientManager().isAlive()) // not a router problem but the user should know
return new NetStatus(NetStatus.Level.ERROR, ctx.getString(R.string.net_status_error_i2cp));
// Warn based on actual skew from peers, not update status, so if we successfully offset
@ -404,9 +417,12 @@ public abstract class Util implements I2PConstants {
//if (!rCtx.clock().getUpdatedSuccessfully())
long skew = rCtx.commSystem().getFramedAveragePeerClockSkew(33);
// Display the actual skew, not the offset
if (Math.abs(skew) > 30*1000)
if (Math.abs(skew) > 30 * 1000)
return new NetStatus(NetStatus.Level.ERROR,
ctx.getString(R.string.net_status_error_skew, DataHelper.formatDuration2(Math.abs(skew))));
ctx.getString(R.string.net_status_error_skew,
DataHelper.formatDuration2(Math.abs(skew))
.replace("&minus;", "-")
.replace("&nbsp;", " ")));
if (rCtx.router().isHidden())
return new NetStatus(NetStatus.Level.INFO, ctx.getString(R.string.hidden));
RouterInfo routerInfo = rCtx.router().getRouterInfo();
@ -460,7 +476,7 @@ public abstract class Util implements I2PConstants {
case IPV4_DISABLED_IPV6_UNKNOWN:
default:
ra = routerInfo.getTargetAddress("SSU");
if (ra == null && rCtx.router().getUptime() > 5*60*1000) {
if (ra == null && rCtx.router().getUptime() > 5 * 60 * 1000) {
if (rCtx.commSystem().countActivePeers() <= 0)
return new NetStatus(NetStatus.Level.ERROR, ctx.getString(R.string.net_status_error_no_active_peers));
else if (rCtx.getProperty(ctx.getString(R.string.PROP_I2NP_NTCP_HOSTNAME)) == null ||

View File

@ -1,13 +1,15 @@
package net.i2p.android.router.web;
import android.os.Bundle;
import net.i2p.android.I2PActivityBase;
import net.i2p.android.router.R;
import android.os.Bundle;
public class WebActivity extends I2PActivityBase {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_single_fragment);
// Start with the base view
if (savedInstanceState == null) {
WebFragment f = new WebFragment();
@ -18,13 +20,13 @@ public class WebActivity extends I2PActivityBase {
} else
f.setArguments(getIntent().getExtras());
getSupportFragmentManager().beginTransaction()
.add(R.id.main_fragment, f).commit();
.add(R.id.fragment, f).commit();
}
}
@Override
public void onBackPressed() {
WebFragment f = (WebFragment) getSupportFragmentManager().findFragmentById(R.id.main_fragment);
WebFragment f = (WebFragment) getSupportFragmentManager().findFragmentById(R.id.fragment);
if (!f.onBackPressed())
super.onBackPressed();
}

View File

@ -1,6 +1,10 @@
package net.i2p.android.widget;
import android.content.Context;
import android.os.Parcel;
import android.os.Parcelable;
import android.support.v4.os.ParcelableCompat;
import android.support.v4.os.ParcelableCompatCreatorCallbacks;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.MotionEvent;
@ -11,30 +15,38 @@ import net.i2p.android.router.util.Util;
public class CustomViewPager extends ViewPager {
private boolean mEnabled;
private int mFixedPage;
private int mFixedPageString;
public CustomViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
mEnabled = false;
mFixedPage = -1;
mFixedPageString = 0;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return mEnabled && super.onTouchEvent(event);
return mEnabled && mFixedPage < 0 && super.onTouchEvent(event);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
return mEnabled && super.onInterceptTouchEvent(event);
return mEnabled && mFixedPage < 0 && super.onInterceptTouchEvent(event);
}
@Override
public void setCurrentItem(int item) {
if (mEnabled || item == 0)
if ((mEnabled && (mFixedPage < 0 || item == mFixedPage))
|| (!mEnabled && item == 0))
super.setCurrentItem(item);
else
else if (!mEnabled)
Toast.makeText(getContext(), Util.getRouterContext() == null ?
R.string.router_not_running : R.string.router_shutting_down,
Toast.LENGTH_SHORT).show();
else if (mFixedPageString > 0)
Toast.makeText(getContext(), getContext().getString(mFixedPageString),
Toast.LENGTH_SHORT).show();
}
public void setPagingEnabled(boolean enabled) {
@ -42,8 +54,91 @@ public class CustomViewPager extends ViewPager {
updatePagingState();
}
public void setFixedPage(int page, int res) {
mFixedPage = page;
mFixedPageString = res;
updatePagingState();
}
public void updatePagingState() {
if (!mEnabled && getCurrentItem() != 0)
if (mEnabled) {
if (mFixedPage >= 0 && getCurrentItem() != mFixedPage)
setCurrentItem(mFixedPage);
} else if (getCurrentItem() != 0)
setCurrentItem(0);
}
public static class SavedState extends BaseSavedState {
boolean enabled;
int fixedPage;
int fixedPageString;
public SavedState(Parcelable superState) {
super(superState);
}
@Override
public void writeToParcel(Parcel out, int flags) {
super.writeToParcel(out, flags);
out.writeInt(enabled ? 1 : 0);
out.writeInt(fixedPage);
out.writeInt(fixedPageString);
}
@Override
public String toString() {
return "CustomViewPager.SavedState{"
+ Integer.toHexString(System.identityHashCode(this))
+ " enabled=" + enabled + " fixedPage=" + fixedPage + "}";
}
public static final Parcelable.Creator<SavedState> CREATOR
= ParcelableCompat.newCreator(new ParcelableCompatCreatorCallbacks<SavedState>() {
@Override
public SavedState createFromParcel(Parcel in, ClassLoader loader) {
return new SavedState(in, loader);
}
@Override
public SavedState[] newArray(int size) {
return new SavedState[size];
}
});
SavedState(Parcel in, ClassLoader loader) {
super(in);
if (loader == null) {
loader = getClass().getClassLoader();
}
enabled = in.readInt() != 0;
fixedPage = in.readInt();
fixedPageString = in.readInt();
}
}
@Override
public Parcelable onSaveInstanceState() {
Parcelable superState = super.onSaveInstanceState();
SavedState ss = new SavedState(superState);
ss.enabled = mEnabled;
ss.fixedPage = mFixedPage;
ss.fixedPageString = mFixedPageString;
return ss;
}
@Override
public void onRestoreInstanceState(Parcelable state) {
if (!(state instanceof SavedState)) {
super.onRestoreInstanceState(state);
return;
}
SavedState ss = (SavedState)state;
super.onRestoreInstanceState(ss.getSuperState());
mEnabled = ss.enabled;
mFixedPage = ss.fixedPage;
mFixedPageString = ss.fixedPageString;
}
}

View File

@ -1,162 +0,0 @@
/*
* Copyright (C) 2013-2014 Dominik Schürmann <dominik@dominikschuermann.de>
* Copyright (C) 2013 Mohammed Lakkadshaw
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.sufficientlysecure.htmltextview;
import java.util.Vector;
import org.xml.sax.XMLReader;
import android.text.Editable;
import android.text.Html;
import android.text.Layout;
import android.text.Spannable;
import android.text.style.AlignmentSpan;
import android.text.style.BulletSpan;
import android.text.style.LeadingMarginSpan;
import android.text.style.TypefaceSpan;
import android.util.Log;
/**
* Some parts of this code are based on android.text.Html
*/
public class HtmlTagHandler implements Html.TagHandler {
private int mListItemCount = 0;
private Vector<String> mListParents = new Vector<String>();
private static class Code {
}
private static class Center {
}
@Override
public void handleTag(final boolean opening, final String tag, Editable output, final XMLReader xmlReader) {
if (opening) {
// opening tag
if (HtmlTextView.DEBUG) {
Log.d(HtmlTextView.TAG, "opening, output: " + output.toString());
}
if (tag.equalsIgnoreCase("ul") || tag.equalsIgnoreCase("ol") || tag.equalsIgnoreCase("dd")) {
mListParents.add(tag);
mListItemCount = 0;
} else if (tag.equalsIgnoreCase("code")) {
start(output, new Code());
} else if (tag.equalsIgnoreCase("center")) {
start(output, new Center());
}
} else {
// closing tag
if (HtmlTextView.DEBUG) {
Log.d(HtmlTextView.TAG, "closing, output: " + output.toString());
}
if (tag.equalsIgnoreCase("ul") || tag.equalsIgnoreCase("ol") || tag.equalsIgnoreCase("dd")) {
mListParents.remove(tag);
mListItemCount = 0;
} else if (tag.equalsIgnoreCase("li")) {
handleListTag(output);
} else if (tag.equalsIgnoreCase("code")) {
end(output, Code.class, new TypefaceSpan("monospace"), false);
} else if (tag.equalsIgnoreCase("center")) {
end(output, Center.class, new AlignmentSpan.Standard(Layout.Alignment.ALIGN_CENTER), true);
}
}
}
/**
* Mark the opening tag by using private classes
*
* @param output
* @param mark
*/
private void start(Editable output, Object mark) {
int len = output.length();
output.setSpan(mark, len, len, Spannable.SPAN_MARK_MARK);
if (HtmlTextView.DEBUG) {
Log.d(HtmlTextView.TAG, "len: " + len);
}
}
private void end(Editable output, Class kind, Object repl, boolean paragraphStyle) {
Object obj = getLast(output, kind);
// start of the tag
int where = output.getSpanStart(obj);
// end of the tag
int len = output.length();
output.removeSpan(obj);
if (where != len) {
// paragraph styles like AlignmentSpan need to end with a new line!
if (paragraphStyle) {
output.append("\n");
len++;
}
output.setSpan(repl, where, len, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
if (HtmlTextView.DEBUG) {
Log.d(HtmlTextView.TAG, "where: " + where);
Log.d(HtmlTextView.TAG, "len: " + len);
}
}
/**
* Get last marked position of a specific tag kind (private class)
*
* @param text
* @param kind
* @return
*/
private Object getLast(Editable text, Class kind) {
Object[] objs = text.getSpans(0, text.length(), kind);
if (objs.length == 0) {
return null;
} else {
for (int i = objs.length; i > 0; i--) {
if (text.getSpanFlags(objs[i - 1]) == Spannable.SPAN_MARK_MARK) {
return objs[i - 1];
}
}
return null;
}
}
private void handleListTag(Editable output) {
if (mListParents.lastElement().equals("ul")) {
output.append("\n");
String[] split = output.toString().split("\n");
int lastIndex = split.length - 1;
int start = output.length() - split[lastIndex].length() - 1;
output.setSpan(new BulletSpan(15 * mListParents.size()), start, output.length(), 0);
} else if (mListParents.lastElement().equals("ol")) {
mListItemCount++;
output.append("\n");
String[] split = output.toString().split("\n");
int lastIndex = split.length - 1;
int start = output.length() - split[lastIndex].length() - 1;
output.insert(start, mListItemCount + ". ");
output.setSpan(new LeadingMarginSpan.Standard(15 * mListParents.size()), start, output.length(), 0);
}
}
}

View File

@ -1,90 +0,0 @@
/*
* Copyright (C) 2013-2014 Dominik Schürmann <dominik@dominikschuermann.de>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.sufficientlysecure.htmltextview;
import android.content.Context;
import android.text.Html;
import android.text.method.LinkMovementMethod;
import android.util.AttributeSet;
import java.io.InputStream;
public class HtmlTextView extends JellyBeanSpanFixTextView {
public static final String TAG = "HtmlTextView";
public static final boolean DEBUG = false;
public HtmlTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public HtmlTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public HtmlTextView(Context context) {
super(context);
}
/**
* http://stackoverflow.com/questions/309424/read-convert-an-inputstream-to-a-string
*
* @param is
* @return
*/
static private String convertStreamToString(java.io.InputStream is) {
java.util.Scanner s = new java.util.Scanner(is).useDelimiter("\\A");
return s.hasNext() ? s.next() : "";
}
/**
* Loads HTML from a raw resource, i.e., a HTML file in res/raw/.
* This allows translatable resource (e.g., res/raw-de/ for german).
* The containing HTML is parsed to Android's Spannable format and then displayed.
*
* @param context
* @param id for example: R.raw.help
*/
public void setHtmlFromRawResource(Context context, int id, boolean useLocalDrawables) {
// load html from html file from /res/raw
InputStream inputStreamText = context.getResources().openRawResource(id);
setHtmlFromString(convertStreamToString(inputStreamText), useLocalDrawables);
}
/**
* Parses String containing HTML to Android's Spannable format and displays it in this TextView.
*
* @param html String containing HTML, for example: "<b>Hello world!</b>"
*/
public void setHtmlFromString(String html, boolean useLocalDrawables) {
Html.ImageGetter imgGetter;
if (useLocalDrawables) {
imgGetter = new LocalImageGetter(getContext());
} else {
imgGetter = new UrlImageGetter(this, getContext());
}
// this uses Android's Html class for basic parsing, and HtmlTagHandler
setText(Html.fromHtml(html, imgGetter, new HtmlTagHandler()));
// make links work
setMovementMethod(LinkMovementMethod.getInstance());
// no flickering when clicking textview for Android < 4, but overriders color...
// text.setTextColor(getResources().getColor(android.R.color.secondary_text_dark_nodisable));
}
}

View File

@ -1,209 +0,0 @@
/*
* Copyright (C) 2013 Dominik Schürmann <dominik@dominikschuermann.de>
* Copyright (C) 2012 Pierre-Yves Ricau <py.ricau@gmail.com>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.sufficientlysecure.htmltextview;
import android.content.Context;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
import android.util.AttributeSet;
import android.util.Log;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
/**
* <p/>
* A {@link android.widget.TextView} that insert spaces around its text spans where needed to prevent
* {@link IndexOutOfBoundsException} in {@link #onMeasure(int, int)} on Jelly Bean.
* <p/>
* When {@link #onMeasure(int, int)} throws an exception, we try to fix the text by adding spaces
* around spans, until it works again. We then try removing some of the added spans, to minimize the
* insertions.
* <p/>
* The fix is time consuming (a few ms, it depends on the size of your text), but it should only
* happen once per text change.
* <p/>
* See http://code.google.com/p/android/issues/detail?id=35466
*/
public class JellyBeanSpanFixTextView extends TextView {
private static class FixingResult {
public final boolean fixed;
public final List<Object> spansWithSpacesBefore;
public final List<Object> spansWithSpacesAfter;
public static FixingResult fixed(List<Object> spansWithSpacesBefore,
List<Object> spansWithSpacesAfter) {
return new FixingResult(true, spansWithSpacesBefore, spansWithSpacesAfter);
}
public static FixingResult notFixed() {
return new FixingResult(false, null, null);
}
private FixingResult(boolean fixed, List<Object> spansWithSpacesBefore,
List<Object> spansWithSpacesAfter) {
this.fixed = fixed;
this.spansWithSpacesBefore = spansWithSpacesBefore;
this.spansWithSpacesAfter = spansWithSpacesAfter;
}
}
public JellyBeanSpanFixTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public JellyBeanSpanFixTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public JellyBeanSpanFixTextView(Context context) {
super(context);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
try {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
} catch (IndexOutOfBoundsException e) {
fixOnMeasure(widthMeasureSpec, heightMeasureSpec);
}
}
/**
* If possible, fixes the Spanned text by adding spaces around spans when needed.
*/
private void fixOnMeasure(int widthMeasureSpec, int heightMeasureSpec) {
CharSequence text = getText();
if (text instanceof Spanned) {
SpannableStringBuilder builder = new SpannableStringBuilder(text);
fixSpannedWithSpaces(builder, widthMeasureSpec, heightMeasureSpec);
} else {
if (HtmlTextView.DEBUG) {
Log.d(HtmlTextView.TAG, "The text isn't a Spanned");
}
fallbackToString(widthMeasureSpec, heightMeasureSpec);
}
}
/**
* Add spaces around spans until the text is fixed, and then removes the unneeded spaces
*/
private void fixSpannedWithSpaces(SpannableStringBuilder builder, int widthMeasureSpec,
int heightMeasureSpec) {
long startFix = System.currentTimeMillis();
FixingResult result = addSpacesAroundSpansUntilFixed(builder, widthMeasureSpec,
heightMeasureSpec);
if (result.fixed) {
removeUnneededSpaces(widthMeasureSpec, heightMeasureSpec, builder, result);
} else {
fallbackToString(widthMeasureSpec, heightMeasureSpec);
}
if (HtmlTextView.DEBUG) {
long fixDuration = System.currentTimeMillis() - startFix;
Log.d(HtmlTextView.TAG, "fixSpannedWithSpaces() duration in ms: " + fixDuration);
}
}
private FixingResult addSpacesAroundSpansUntilFixed(SpannableStringBuilder builder,
int widthMeasureSpec, int heightMeasureSpec) {
Object[] spans = builder.getSpans(0, builder.length(), Object.class);
List<Object> spansWithSpacesBefore = new ArrayList<Object>(spans.length);
List<Object> spansWithSpacesAfter = new ArrayList<Object>(spans.length);
for (Object span : spans) {
int spanStart = builder.getSpanStart(span);
if (isNotSpace(builder, spanStart - 1)) {
builder.insert(spanStart, " ");
spansWithSpacesBefore.add(span);
}
int spanEnd = builder.getSpanEnd(span);
if (isNotSpace(builder, spanEnd)) {
builder.insert(spanEnd, " ");
spansWithSpacesAfter.add(span);
}
try {
setTextAndMeasure(builder, widthMeasureSpec, heightMeasureSpec);
return FixingResult.fixed(spansWithSpacesBefore, spansWithSpacesAfter);
} catch (IndexOutOfBoundsException notFixed) {
}
}
if (HtmlTextView.DEBUG) {
Log.d(HtmlTextView.TAG, "Could not fix the Spanned by adding spaces around spans");
}
return FixingResult.notFixed();
}
private boolean isNotSpace(CharSequence text, int where) {
return where < 0 || text.charAt(where) != ' ';
}
private void setTextAndMeasure(CharSequence text, int widthMeasureSpec, int heightMeasureSpec) {
setText(text);
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
private void removeUnneededSpaces(int widthMeasureSpec, int heightMeasureSpec,
SpannableStringBuilder builder, FixingResult result) {
for (Object span : result.spansWithSpacesAfter) {
int spanEnd = builder.getSpanEnd(span);
builder.delete(spanEnd, spanEnd + 1);
try {
setTextAndMeasure(builder, widthMeasureSpec, heightMeasureSpec);
} catch (IndexOutOfBoundsException ignored) {
builder.insert(spanEnd, " ");
}
}
boolean needReset = true;
for (Object span : result.spansWithSpacesBefore) {
int spanStart = builder.getSpanStart(span);
builder.delete(spanStart - 1, spanStart);
try {
setTextAndMeasure(builder, widthMeasureSpec, heightMeasureSpec);
needReset = false;
} catch (IndexOutOfBoundsException ignored) {
needReset = true;
int newSpanStart = spanStart - 1;
builder.insert(newSpanStart, " ");
}
}
if (needReset) {
setText(builder);
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}
private void fallbackToString(int widthMeasureSpec, int heightMeasureSpec) {
if (HtmlTextView.DEBUG) {
Log.d(HtmlTextView.TAG, "Fallback to unspanned text");
}
String fallbackText = getText().toString();
setTextAndMeasure(fallbackText, widthMeasureSpec, heightMeasureSpec);
}
}

View File

@ -1,54 +0,0 @@
/*
* Copyright (C) 2014 Dominik Schürmann <dominik@dominikschuermann.de>
* Copyright (C) 2014 drawk
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.sufficientlysecure.htmltextview;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.text.Html;
import android.util.Log;
/**
* Copied from http://stackoverflow.com/a/22298833
*/
public class LocalImageGetter implements Html.ImageGetter {
Context c;
public LocalImageGetter(Context c) {
this.c = c;
}
public Drawable getDrawable(String source) {
int id = c.getResources().getIdentifier(source, "drawable", c.getPackageName());
if (id == 0) {
// the drawable resource wasn't found in our package, maybe it is a stock android drawable?
id = c.getResources().getIdentifier(source, "drawable", "android");
}
if (id == 0) {
// prevent a crash if the resource still can't be found
Log.e(HtmlTextView.TAG, "source could not be found: " + source);
return null;
} else {
Drawable d = c.getResources().getDrawable(id);
d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
return d;
}
}
}

View File

@ -1,124 +0,0 @@
/*
* Copyright (C) 2013 Antarix Tandon
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.sufficientlysecure.htmltextview;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.AsyncTask;
import android.text.Html.ImageGetter;
import android.view.View;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
public class UrlImageGetter implements ImageGetter {
Context c;
View container;
/**
* Construct the URLImageParser which will execute AsyncTask and refresh the container
*
* @param t
* @param c
*/
public UrlImageGetter(View t, Context c) {
this.c = c;
this.container = t;
}
public Drawable getDrawable(String source) {
UrlDrawable urlDrawable = new UrlDrawable();
// get the actual source
ImageGetterAsyncTask asyncTask = new ImageGetterAsyncTask(urlDrawable);
asyncTask.execute(source);
// return reference to URLDrawable which will asynchronously load the image specified in the src tag
return urlDrawable;
}
public class ImageGetterAsyncTask extends AsyncTask<String, Void, Drawable> {
UrlDrawable urlDrawable;
public ImageGetterAsyncTask(UrlDrawable d) {
this.urlDrawable = d;
}
@Override
protected Drawable doInBackground(String... params) {
String source = params[0];
return fetchDrawable(source);
}
@Override
protected void onPostExecute(Drawable result) {
// set the correct bound according to the result from HTTP call
urlDrawable.setBounds(0, 0, result.getIntrinsicWidth(), result.getIntrinsicHeight());
// change the reference of the current drawable to the result from the HTTP call
urlDrawable.drawable = result;
// redraw the image by invalidating the container
UrlImageGetter.this.container.invalidate();
}
/**
* Get the Drawable from URL
*
* @param urlString
* @return
*/
public Drawable fetchDrawable(String urlString) {
try {
InputStream is = fetch(urlString);
Drawable drawable = Drawable.createFromStream(is, "src");
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
return drawable;
} catch (Exception e) {
return null;
}
}
private InputStream fetch(String urlString) throws MalformedURLException, IOException {
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpGet request = new HttpGet(urlString);
HttpResponse response = httpClient.execute(request);
return response.getEntity().getContent();
}
}
@SuppressWarnings("deprecation")
public class UrlDrawable extends BitmapDrawable {
protected Drawable drawable;
@Override
public void draw(Canvas canvas) {
// override the draw to facilitate refresh function later
if (drawable != null) {
drawable.draw(canvas);
}
}
}
}

View File

@ -19,6 +19,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:elevation="2dp"
android:theme="@style/ThemeOverlay.AppCompat.ActionBar" />
<net.i2p.android.widget.DrawShadowFrameLayout

View File

@ -23,8 +23,7 @@
style="@style/ListItemContent.Text.Main.TwoLines"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:text="Tunnel name"
android:transitionName="@string/TUNNEL_NAME" />
android:text="Tunnel name" />
<!-- Interface:port the tunnel listens on or points to -->
<TextView
@ -49,8 +48,7 @@
android:layout_alignParentBottom="true"
android:ellipsize="end"
android:maxLines="1"
android:text="Tunnel description"
android:transitionName="@string/TUNNEL_DESCRIPTION" />
android:text="Tunnel description" />
</RelativeLayout>

View File

@ -0,0 +1,16 @@
<html>
<head></head>
<body>
<h2>Lightning has native I2P support!</h2>
<p>If you install Lightning after installing I2P, simply open the app. It will detect that you have I2P installed, and show a pop-up window allowing you to enable it.</p>
<p>If you installed Lightning before installing I2P, follow the steps in the next section.</p>
<p>Lightning supports both I2P and Orbot (Tor), but not at the same time. If you already use Lightning with Orbot, you will need to change it to I2P when you want to browse I2P sites.</p>
<h2>How to configure Lightning:</h2>
<ol>
<li>Open Lightning's settings menu.</li>
<li>Click on "General Settings".</li>
<li>Change the "HTTP Proxy" to I2P.</li>
<li>Exit the settings menu.</li>
</ol>
</body>
</html>

View File

@ -10,6 +10,7 @@
<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>Change the value of "HTTPS Proxy Port" to <code>4444</code>.</li>
<li>You can now browse I2P eepsites!</li>
</ol>
</body>

View File

@ -10,6 +10,7 @@
<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>Change the value of "HTTPS Proxy Port" to <code>4444</code>.</li>
<li>You can now browse I2P eepsites!</li>
</ol>
</body>

View File

@ -4,6 +4,6 @@
<h2>This browser is unknown</h2>
<p>We have not tested this browser with I2P, so we don't know anything about it.</p>
<p>But if this browser supports proxies, it will work with I2P.</p>
<p>Configure this browser's HTTP proxy setting to use <code>localhost:4444</code>.</p>
<p>Configure this browser's HTTP and HTTPS proxy settings to use <code>localhost:4444</code>.</p>
</body>
</html>

View File

@ -2,8 +2,8 @@
#
# eepproxy
tunnel.0.name=I2P HTTP Proxy
tunnel.0.description=HTTP proxy for browsing eepsites and the web
tunnel.0.name=I2P HTTP/HTTPS Proxy
tunnel.0.description=HTTP/HTTPS proxy for browsing eepsites and the web
tunnel.0.type=httpclient
tunnel.0.sharedClient=false
tunnel.0.interface=127.0.0.1
@ -18,6 +18,7 @@ tunnel.0.option.i2cp.reduceIdleTime=600000
tunnel.0.option.i2cp.reduceOnIdle=true
tunnel.0.option.i2cp.reduceQuantity=1
tunnel.0.option.i2p.streaming.connectDelay=1000
tunnel.0.option.i2ptunnel.httpclient.SSLOutproxies=false.i2p
tunnel.0.option.inbound.length=2
tunnel.0.option.inbound.lengthVariance=0
tunnel.0.option.outbound.length=2

View File

@ -1,12 +1,9 @@
******* Please read all of the following *******
WARNING - This is BETA SOFTWARE.
* It may crash your phone.
* Do not rely upon it for strong anonymity.
* Tunnels may be as short as one hop.
* There may be serious security holes in the app.
General notes
-------------
Minimum Android OS is 2.3 (API 9). It uses a lot of RAM. You need at least 256 MB of RAM. 512 should be much better.
The app uses a lot of RAM. Your device needs at least 256 MB of RAM. 512 should be much better.
The app may use a lot of RAM even after the router has stopped and there is no icon in the notification bar. Go to Settings -> Applications -> Running Services and stop the I2P service if necessary. Or Settings -> Applications -> Manage Applications -> Running -> I2P and force stop.
@ -14,17 +11,21 @@ The app may be moved to the SD card. The app does not store any files on the SD
The app runs on either wifi or mobile networks. For now, the app is relatively low bandwidth. It allows a max of 20 participating tunnels.
The app uses both UDP and TCP for router-router connections, with a maximum of 36 connections on each transport. UPnP is enabled.
The app will work best when you are not changing IPs. If you are moving around, changing wifi networks, or switching between mobile and wifi networks, it won't work well.
Advanced notes
--------------
The app uses both UDP and TCP for router-router connections, with a maximum of 32 connections on each transport by default. UPnP is enabled.
I2P's NTP is disabled for API 11 (Honeycomb) and above, as those versions include NTP support. If you have cell service, your phone or tablet should have the correct time. If you do not have cell service, ensure your device has accurate time.
The app will work best when you are not changing IPs. If you are moving around, changing wifi networks, or switching between mobile and wifi networks, it won't work well.
Further anonymity warnings
--------------------------
* Exploratory and Client Tunnels are 2 hops
* Exploratory and Client Tunnels are 2 hops by default
* Sharing IRC clients on same tunnels allows for linking
* There are .i2p DNS leaks
* Cell phones aren't exactly secure environments

View File

@ -1,34 +1,129 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="app_name">I2P</string>
<string name="label_home">Inici I2P</string>
<string name="desc_i2p_logo">Logotip de I2P</string>
<string name="choose_language">Triar idioma</string>
<string name="welcome_new_install">Benvinguts a I2P! Aquesta aplicació és una versió alfa i no proporciona una anonimització forta. Llegiu les notes de versió i la informació de llicència.</string>
<string name="welcome_new_version">Nova versió instal·lada. Si us plau, llegeixi les notes de les versions. Versió:</string>
<string name="label_tunnels">Túnels</string>
<string name="label_status">Estat</string>
<string name="label_console">Consola</string>
<string name="label_addresses">Adreces</string>
<string name="label_addressbook">Agenda d\'adreces</string>
<string name="label_i2ptunnel_client">Túnels de client</string>
<string name="label_i2ptunnel_server">Servidor de túnels</string>
<string name="label_logs">Registres</string>
<string name="label_error_logs">Registres d\'errors</string>
<string name="label_info_and_pages">Informació i pàgines</string>
<string name="label_welcome_page">Pàgina de benvinguda</string>
<string name="label_news">Notícies</string>
<string name="label_peers_status">Nodes</string>
<string name="label_release_notes">Notes de la versió</string>
<string name="label_licenses">Llicències</string>
<string name="label_nonanon_info">Informació no anònima</string>
<string name="label_browse">Navegar</string>
<string name="label_graphs">Gràfics</string>
<string name="button_router_off">Prem i no deixis per iniciar I2P</string>
<string name="button_router_on">I2P s\'està executant (prem per aturar)</string>
<string name="button_router_graceful">I2P s\'apagarà en %s</string>
<string name="button_shutdown_now">Prem per aturar ara</string>
<string name="button_cancel_graceful">Prem per cancel·lar l\'apagada</string>
<string name="no_internet">No hi ha cap connexió a Internet disponible</string>
<string name="hidden">Amagat</string>
<string name="testing">Provant</string>
<string name="firewalled">Sota tallafocs</string>
<!--Parameter is a time, e.g. 32s or 2m-->
<string name="net_status_error_unresolved_tcp">Adreça TCP no resolta</string>
<string name="net_status_error_private_tcp">Adreça TCP privada</string>
<string name="net_status_info_disconnected">Desconnectat - comprova connexió de xarxa</string>
<string name="shared_clients">Clients compartits</string>
<string name="uptime">Temps funcionant</string>
<string name="active_peers">Nodes actius</string>
<string name="known_peers">Nodes coneguts</string>
<!--Character to indicate a client tunnel. Usually first letter of the word "client".-->
<string name="char_client_tunnel">C</string>
<!--Character to indicate a server tunnel. Usually first letter of the word "server".-->
<string name="char_server_tunnel">S</string>
<string name="no_tunnels_running">No hi han túnels executant-se actualment</string>
<string name="download">Baixar</string>
<string name="upload">Pujar</string>
<string name="configure_browser_title">Configurar navegador?</string>
<string name="configure_browser_for_i2p">Vols configurar un navegador per veure els llocs web de I2P? (També podràs fer-ho posteriorment des del menú d\'ajuda)</string>
<string name="first_start_title">Felicitats I2P ja s\'ha instal·lat!</string>
<string name="first_start_welcome">&lt;b&gt;Benvingut a I2P!&lt;/b&gt; Tingues paciència&lt;/b&gt; I2P s\'està arrencant i buscant iguals.</string>
<string name="first_start_read">Durant la espera, llegeix les notes de versió i la pàgina d\'inici.</string>
<string name="first_start_faq">Un cop tingui túnels de client, <b>consulta</b> les preguntes més freqüents:</string>
<string name="first_start_faq_nonanon">O utilitza aquest enllaç sense ser anònim si no vols esperar als túnels.</string>
<string name="first_start_irc">Apunta el client IRC a <b>localhost:6668</b> i saluda\'ns personalment: </string>
<string name="action_search">Cercar</string>
<string name="action_add">Afegir</string>
<string name="action_router_start">Iniciar rúter</string>
<string name="action_router_stop">Aturar rúter</string>
<string name="action_edit">Editar</string>
<string name="action_delete">Suprimir</string>
<string name="action_i2ptunnel_start">Començar el túnel</string>
<string name="action_i2ptunnel_stop">Aturar el túnel</string>
<string name="action_i2ptunnel_start_all">Iniciar tots els túnels</string>
<string name="action_i2ptunnel_stop_all">Aturar tots els túnels</string>
<string name="action_i2ptunnel_restart_all">Reiniciar tots els túnels</string>
<string name="action_reload">Recarregar</string>
<string name="action_refresh">Actualitzar</string>
<string name="hint_search_addressbook">Cercar a la llibreta d\'adreces</string>
<string name="action_reload_subscriptions">Recarregar subscripcions</string>
<string name="news_last_updated">Darrera actualització de novetats fa %s</string>
<string name="news_last_checked">Darrera comprovació de novetats fa %s</string>
<string name="news_updated">S\'han actualitzat les novetats</string>
<string name="view_news">Prem per veure les últimes notícies d\'I2P</string>
<string name="router_not_running">No s\'està executant l\'encaminador.</string>
<string name="router_shutting_down">S\'està apagant l\'encaminador.</string>
<string name="stats_not_ready">L\'administrador d\'estadístiques no està preparat. Prova-ho més tard.</string>
<string name="no_graphs_configured">No s\'ha configurat cap gràfic. Pots seleccionar els gràfics d\'estadística en el menú de configuració. Qualsevol canvi s\'establirà al cap de 60 segons.</string>
<string name="configure_graphs">Configuració de gràfics</string>
<string name="graphs_not_ready">Els gràfics no estan disponibles. Provi-ho més tard.</string>
<string name="statistics">Estadístiques</string>
<string name="routers">Encaminadors</string>
<string name="leasesets">LeaseSets</string>
<string name="countries">Països</string>
<string name="country">País</string>
<string name="transport">Transport</string>
<string name="versions">Versions</string>
<string name="version">Versió</string>
<string name="count">Comptador</string>
<string name="tname_0">Ocultar o inici</string>
<string name="netdb_routers_empty">No hi han encaminadors al NetDB</string>
<string name="netdb_leases_empty">Cap LeaseSets en el seu NetDB.</string>
<string name="notification_status_starting">S\'està iniciant I2P</string>
<string name="notification_status_restarting">S\'està reiniciant I2P</string>
<string name="notification_status_waiting">I2P està esperant una connexió de xarxa</string>
<string name="notification_status_starting_after_waiting">Connexió correcta, s\'està iniciant l\'I2P</string>
<string name="notification_status_running">S\'està executant l\'I2P</string>
<string name="notification_status_client_ready">Els túnels de client estan preparats</string>
<string name="notification_status_client_down">Els túnels de client han caigut</string>
<string name="notification_status_graceful">Aturant I2P en %s</string>
<string name="notification_status_stopping">Aturant I2P</string>
<string name="notification_status_stopping_after_net">Xarxa desconnectada, aturant I2P</string>
<string name="notification_status_shutdown_cancelled">Aturada cancel·lada</string>
<string name="notification_status_shutting_down">S\'està aturant I2P</string>
<string name="notification_status_bw">Ample de banda: %1$sBps baixada / %2$sBps pujada</string>
<string name="notification_status_peers">Iguals: %1$d actius, %2$d coneguts</string>
<string name="notification_status_expl">Túnels d\'exploració: %1$d/%2$d</string>
<string name="notification_status_client">Túnels de clients: %1$d/%2$d</string>
<string name="menu_settings">Configuració</string>
<string name="settings_enable">Habilitar</string>
<string name="settings_desc_subscriptions">URL subscripció</string>
<string name="settings_label_bandwidth">Ample de banda i xarxa</string>
<string name="settings_desc_subscriptions">URLs de subscripció</string>
<string name="settings_label_bandwidth_net">Ampla de banda i xarxa</string>
<string name="settings_label_startOnBoot">Iniciar I2P en arrencada</string>
<string name="settings_label_bandwidth">Ample de banda</string>
<string name="settings_label_bw_inbound">Velocitat d\'entrada</string>
<string name="settings_desc_bw_inbound">Velocitat màxima d\'entrada</string>
<string name="settings_label_bw_outbound">Velocitat de sortida</string>
<string name="settings_desc_bw_outbound">Màxima velocitat de sortida</string>
<string name="settings_label_network">Xarxa</string>
<string name="settings_label_hiddenMode">Participació</string>
<string name="settings_desc_hiddenMode">Desactivar el mode ocult</string>
<string name="settings_label_maxPartTunnels">Màx. túnels participats</string>
<string name="settings_label_sharePercent">Percentatge de participació</string>
<string name="settings_label_logging">Entrant</string>
<string name="settings_label_appearance">Aparença</string>
<string name="settings_label_language">Idioma</string>
<string name="settings_default">Per defecte</string>
<string name="settings_label_advanced">Avançat</string>
<string name="settings_label_showStats">Estadístiques del router</string>
<string name="settings_label_transports">Transports</string>
<string name="settings_label_maxConns">Màx. connexions</string>
<string name="settings_label_i2cp">Interfície I2CP</string>
@ -38,8 +133,79 @@
<string name="settings_label_expl_inbound">Túnels d\'entrada</string>
<string name="settings_label_expl_outbound">Túnels de sortida</string>
<string name="settings_label_expl_length">Longitud</string>
<string name="settings_summ_expl_length">%s salts</string>
<string name="settings_summ_expl_lengthVariance">%s</string>
<string name="settings_label_expl_quantity">Quantitat</string>
<string name="settings_summ_expl_quantity">%s túnels</string>
<string name="settings_desc_expl_quantity">Quantitat dels túnels</string>
<string name="settings_label_expl_backupQuantity">Quantitat de còpies de seguretat</string>
<string name="settings_summ_expl_backupQuantity">%s túnels</string>
<string name="settings_desc_expl_backupQuantity">Quantitat de còpies de seguretat del túnel</string>
<string name="about_version">Versió:</string>
<string name="about_helpwanted">Es necessita ajuda!</string>
<string name="about_volunteer">Voleu ajudar a millorar l\'aplicació? Oferiu-vos voluntaris al fòrum Android:</string>
<string name="menu_help">Ajuda</string>
<string name="label_router">Adreces públiques</string>
<string name="label_private">Adreces privades</string>
<string name="addressbook_add_wizard_k_name">Nom</string>
<string name="addressbook_add_wizard_k_destination">Destinació</string>
<string name="addressbook_add_wizard_desc_name">El nom</string>
<string name="i2ptunnel_type_client">Client estàndard</string>
<string name="i2ptunnel_type_httpclient">Client HTTP</string>
<string name="i2ptunnel_type_ircclient">Client IRC</string>
<string name="i2ptunnel_type_server">Servidor estàndard</string>
<string name="i2ptunnel_type_httpserver">Servidor HTTP</string>
<string name="i2ptunnel_type_ircserver">Servidor IRC</string>
<string name="i2ptunnel_new_tunnel">Nou túnel</string>
<string name="i2ptunnel_wizard_k_name">Nom</string>
<string name="i2ptunnel_wizard_k_desc">Descripció</string>
<string name="i2ptunnel_wizard_k_dest">Destinació</string>
<string name="next">Següent</string>
<string name="prev">Anterior</string>
<string name="finish">Envia</string>
<string name="review">Revisa</string>
<string name="enabled">Activat</string>
<string name="i2ptunnel_wizard_desc_desc">Una descripció del túnel. És opcional i purament informativa.</string>
<string name="i2ptunnel_wizard_submit_confirm_message">Voleu crear el túnel?</string>
<string name="i2ptunnel_wizard_submit_confirm_button">Crea el túnel</string>
<string name="i2ptunnel_view_access_point">Punt d\'accés</string>
<string name="edit_tunnel">Edita el túnel</string>
<string name="name">Nom</string>
<string name="description">Descripció</string>
<string name="tunnel_cat_ports">Ports locals</string>
<string name="shared_client">Client compartit</string>
<string name="client_ssl">Client SSL</string>
<string name="tunnel_summ_client_ssl">Els clients han d\'usar SSL per a connectar-se</string>
<string name="irc">IRC</string>
<string name="use_ssl">Usa SSL</string>
<string name="profile">Perfil</string>
<string name="profile_interactive">Connexió interactiva</string>
<string name="access_control">Control d\'accés</string>
<string name="access_list">Llista d\'accés</string>
<string name="client_connection_limits">Límit de connexions del client</string>
<string name="connections_per_minute">Connexions per minut</string>
<string name="connections_per_hour">Connexions per hora</string>
<string name="connections_per_day">Connexions per dia</string>
<string name="total_connection_limits">Límits totals de connexió</string>
<string name="total_connections_per_minute">Connexions totals per minut</string>
<string name="total_connections_per_hour">Connexions totals per hora</string>
<string name="total_connections_per_day">Connexions totals per dia</string>
<string name="max_active_connections">Connexions actives màximes</string>
<string name="num_per_minute">%s per minut</string>
<string name="num_per_hour">%s per hora</string>
<string name="num_per_day">%s per dia</string>
<string name="unlimited">Il·limitat</string>
<string name="set_zero_for_unlimited">Definiu 0 per a il·limitades</string>
<string name="post_limits">Límits POST</string>
<string name="num_minutes">%s hores</string>
<string name="username">Nom d\'usuari</string>
<string name="password">Contrasenya</string>
<string name="signature_type">Tipus de signatura</string>
<string name="custom_options">Opcions personalitzades</string>
<string name="no_messages">Sense missatges</string>
<string name="copy_logs">Copia registres</string>
<string name="i2p_android_error_logs">Registres d\'error d\'I2P Android</string>
<string name="i2p_android_logs">Registres I2P Android</string>
<string name="error_logs_copied_to_clipboard">S\'han copiat els registres d\'error al porta-retalls</string>
<string name="label_browser_configuration">Configuració del navegador</string>
</resources>

View File

@ -30,16 +30,22 @@
<string name="testing">Erprobung</string>
<string name="firewalled">Mit Firewall</string>
<string name="symmetric_nat">Symmetrisches NAT</string>
<string name="net_status_error_i2cp">Klientenmanager I2CP Fehler - bitte Fehlerberichte überprüfen</string>
<!--Parameter is a time, e.g. 32s or 2m-->
<string name="net_status_error_skew">Zeitabweichung von %s</string>
<string name="net_status_error_unresolved_tcp">Nicht aufgelöste TCP-Adresse</string>
<string name="net_status_error_private_tcp">Private TCP-Adresse</string>
<string name="net_status_warn_firewalled_inbound_tcp">Mit Firewall und aktiviertem eingehendem TCP</string>
<string name="net_status_warn_firewalled_floodfill">Mit Firewall und Floodfill</string>
<string name="net_status_info_disconnected">Getrennt - überprüfen Sie die Netzwerkverbindung</string>
<string name="net_status_error_udp_port">UDP-Port in Gebrauch - in Einstellungen ändern und neu starten</string>
<string name="net_status_error_no_active_peers">Keine aktiven Teilnehmer - überprüfen Sie die Netzwerkverbindung und Firewall</string>
<string name="net_status_error_udp_disabled_tcp_not_set">UDP deaktiviert und eingehender TCP-Host/Port nicht festgelegt</string>
<string name="net_status_warn_firewalled_udp_disabled">Mit Firewall und deaktiviertem UDP</string>
<string name="shared_clients">Mehrere Klienten</string>
<string name="uptime">Betriebszeit</string>
<string name="active_peers">Aktive Teilnehmer</string>
<string name="known_peers">Bekannte Teilnehmer</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".-->
@ -80,6 +86,7 @@
<string name="graphs_not_ready">Graphen sind noch nicht bereit. Versuchen Sie es später erneut.</string>
<string name="statistics">Statistiken</string>
<string name="routers">Router</string>
<string name="leasesets">LeaseSet</string>
<string name="countries">Länder</string>
<string name="country">Land</string>
<string name="transport">Übertragungen</string>
@ -101,7 +108,7 @@
<string name="notification_status_stopping_after_net">Netzwerk getrennt, I2P wird gestoppt</string>
<string name="notification_status_shutdown_cancelled">Herunterfahren abgebrochen</string>
<string name="notification_status_shutting_down">I2P fährt herunter</string>
<string name="notification_status_bw">Bandbreite: %1$s KB/s eingehend / %2$s KB/s ausgehend</string>
<string name="notification_status_bw">Bandbreite: %1$sB/s eingehend / %2$sB/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>
<string name="notification_status_client">Kliententunnel: %1$d/%2$d</string>

View File

@ -14,7 +14,7 @@
<string name="label_i2ptunnel_server">Túneles de servidor</string>
<string name="label_logs">Registros (logs)</string>
<string name="label_error_logs">Registros (logs) de errores</string>
<string name="label_news">Novedades</string>
<string name="label_news">Noticias de la consola</string>
<string name="label_peers_status">Pares (peers)</string>
<string name="label_release_notes">Notas de versiones</string>
<string name="label_licenses">Licencias</string>
@ -38,12 +38,12 @@
<string name="net_status_warn_firewalled_inbound_tcp">Bloqueado por cortafuegos (firewall) con TCP entrante habilitado</string>
<string name="net_status_warn_firewalled_floodfill">Bloqueado por cortafuegos (firewall) y es router I2P de inundación (floodfill)</string>
<string name="net_status_info_disconnected">Desconectado - compruebe la conexión a la red</string>
<string name="net_status_error_udp_port">Puerto UDP en uso - cámbielo en la configuracion y reinicie</string>
<string name="net_status_error_udp_port">Puerto UDP en uso - cámbielo en la configuración y reinicie</string>
<string name="net_status_error_no_active_peers">No hay pares (peers) activos - compruebe la conexión a la red y el cortafuegos (firewall)</string>
<string name="net_status_error_udp_disabled_tcp_not_set">UDP deshabilitado y nodo/puerto TCP de entrante no establecido</string>
<string name="net_status_error_udp_disabled_tcp_not_set">UDP deshabilitado y nodo/puerto-TCP de entrada no establecido</string>
<string name="net_status_warn_firewalled_udp_disabled">Bloqueado por cortafuegos (firewall) con UDP deshabilitado</string>
<string name="shared_clients">Clientes compartidos</string>
<string name="uptime">Tiempo de funcionamiento</string>
<string name="uptime">Tiempo en funcionamiento</string>
<string name="active_peers">Pares activos</string>
<string name="known_peers">Pares conocidos</string>
<!--Character to indicate a client tunnel. Usually first letter of the word "client".-->
@ -54,17 +54,17 @@
<string name="download">Descarga</string>
<string name="upload">Subida</string>
<string name="configure_browser_title">¿Configurar navegador?</string>
<string name="configure_browser_for_i2p">¿Le gustaría configurar un navegador para ver sitios I2P? (también puede hacer esto más tarde desde el menú de ayuda).</string>
<string name="configure_browser_for_i2p">¿Desea configurar un navegador para ver sitios I2P? (también puede hacer esto más tarde desde el menú de ayuda).</string>
<string name="first_start_title">¡Felicidades por conseguir instalar I2P!</string>
<string name="first_start_welcome"><b>¡Bienvenido a I2P!</b> Por favor <b>tenga paciencia</b> mientras I2P se inicia y busca pares (peers).</string>
<string name="first_start_read">Mientras esté esperando, por favor, lea las notas de la versión y la página de bienvenida.</string>
<string name="first_start_faq">Una vez tenga túneles de cliente, por favor, <b>revise</b> nuestras preguntas frecuentes (FAQ):</string>
<string name="first_start_faq_nonanon">O use este enlace no-anónimo si no quiere esperar a los túneles:</string>
<string name="first_start_irc">Dirija su cliente IRC a <b>localhost:6668</b> y salúdenos en:</string>
<string name="first_start_welcome"><b>¡Bienvenido a I2P!</b> Por favor, <b>tenga paciencia</b> mientras I2P se inicia y busca pares (peers).</string>
<string name="first_start_read">Mientras espera, por favor, lea las notas de la versión y la página de bienvenida.</string>
<string name="first_start_faq">Una vez tenga túneles de cliente, por favor, <b>eche un vistazo</b> a nuestras preguntas frecuentes (FAQ):</string>
<string name="first_start_faq_nonanon">O utilice este enlace no-anónimo si no quiere esperar a los túneles:</string>
<string name="first_start_irc">Dirija su cliente IRC hacia <b>localhost:6668</b> y pase a saludarnos en:</string>
<string name="action_search">Buscar</string>
<string name="action_add">Añadir</string>
<string name="action_edit">Editar</string>
<string name="action_delete">Borrar</string>
<string name="action_delete">Eliminar</string>
<string name="action_i2ptunnel_start">Iniciar túnel</string>
<string name="action_i2ptunnel_stop">Detener túnel</string>
<string name="action_i2ptunnel_start_all">Iniciar todos los túneles</string>
@ -74,14 +74,14 @@
<string name="action_refresh">Refrescar</string>
<string name="hint_search_addressbook">Buscar en la libreta de direcciones</string>
<string name="action_reload_subscriptions">Volver a cargar suscripciones</string>
<string name="news_last_updated">Última actualización de novedades hace %s</string>
<string name="news_last_checked">Última comprobación de novedades hace %s</string>
<string name="news_updated">Novedades actualizadas</string>
<string name="view_news">Pulse para ver las últimas novedades de I2P</string>
<string name="news_last_updated">Última actualización de las noticias hace %s</string>
<string name="news_last_checked">Última comprobación de las noticias hace %s</string>
<string name="news_updated">Noticias actualizadas</string>
<string name="view_news">Pulse para ver las últimas noticias de I2P</string>
<string name="router_not_running">El router I2P no está en marcha.</string>
<string name="router_shutting_down">El router I2P se está cerrando.</string>
<string name="stats_not_ready">El administrador de estadísticas aún no está listo. Inténtelo de nuevo más tarde.</string>
<string name="no_graphs_configured">No se ha configurado ninguna gráfica. Puede escoger estadísticas a graficar en el menú de configuración. Cualquier cambio tendrá efecto después de 60 segundos.</string>
<string name="no_graphs_configured">No se ha configurado ninguna gráfica. Puede escoger las estadísticas a graficar en el menú de configuración. Cualquier cambio tendrá efecto después de 60 segundos.</string>
<string name="configure_graphs">Configurar gráficas</string>
<string name="graphs_not_ready">Las gráficas aún no están listas. Inténtelo de nuevo más tarde.</string>
<string name="statistics">Estadísticas</string>
@ -108,7 +108,7 @@
<string name="notification_status_stopping_after_net">Red desconectada, deteniendo I2P</string>
<string name="notification_status_shutdown_cancelled">Cierre cancelado</string>
<string name="notification_status_shutting_down">I2P se está cerrando</string>
<string name="notification_status_bw">Ancho de banda: %1$s KBps bajada / %2$s KBps subida</string>
<string name="notification_status_bw">Ancho de banda: %1$sBps bajada / %2$sBps subida</string>
<string name="notification_status_peers">Pares: %1$d activos, %2$d conocidos</string>
<string name="notification_status_expl">Túneles exploratorios: %1$d/%2$d</string>
<string name="notification_status_client">Túneles de cliente: %1$d/%2$d</string>
@ -283,7 +283,7 @@
<string name="reject_inproxies">Rechazar proxys de entrada desde Internet</string>
<string name="tunnel_summ_reject_inproxies">Permite conectar sólo a usuarios de I2P</string>
<string name="unique_local">Direcciones locales únicas</string>
<string name="tunnel_summ_unique_local">Usa IPs únicas de equipo local (localhost) para cada cliente</string>
<string name="tunnel_summ_unique_local">Usa IPs únicas de nodo local (localhost) para cada cliente</string>
<string name="multihome">Alojamiento redundante</string>
<string name="tunnel_summ_multihome">Habilita optimizaciones de alojamiento redundante (multihoming)</string>
<string name="client_connection_limits">Límites de conexiones de los clientes</string>

View File

@ -82,7 +82,6 @@
<string name="notification_status_stopping_after_net">Verkkoyhteys katkesi, pysäytetään I2P</string>
<string name="notification_status_shutdown_cancelled">Sulkeminen peruttu</string>
<string name="notification_status_shutting_down">I2P on sulkeutumassa</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>
@ -173,6 +172,8 @@
<string name="connections_per_minute">Yhteyksiä minuutissa</string>
<string name="connections_per_hour">Yhteyksiä tunnissa</string>
<string name="connections_per_day">Yhteyksiä päivässä</string>
<string name="num_per_hour">%s per tunti</string>
<string name="num_per_day">%s per päivä</string>
<string name="unlimited">Rajoittamaton</string>
<string name="num_minutes">%s minuuttia</string>
<string name="http_client">HTTP-asiakas</string>

View File

@ -108,7 +108,7 @@
<string name="notification_status_stopping_after_net">Réseau déconnecté, arrêt d\'I2P</string>
<string name="notification_status_shutdown_cancelled">Arrêt annulé</string>
<string name="notification_status_shutting_down">I2P est en cours d\'arrêt</string>
<string name="notification_status_bw">Bande passante : %1$s KBps down / %2$s KBps up</string>
<string name="notification_status_bw">Bande passante : %1$sBps down / %2$sBps up</string>
<string name="notification_status_peers">Pairs : %1$d actifs, %2$d connus</string>
<string name="notification_status_expl">Tunnels exploratoires : %1$d/%2$d</string>
<string name="notification_status_client">Tunnels client : %1$d/%2$d</string>

View File

@ -2,10 +2,13 @@
<resources>
<string name="app_name">I2P</string>
<string name="desc_i2p_logo">Logo I2P</string>
<string name="choose_language">Scegli lingua</string>
<string name="welcome_new_install">Benvenuto su I2P! Questa app è ancora in versione preliminare e non fornisce un anonimato robusto. Leggi le note di rilascio e le informazioni sulla licenza.</string>
<string name="welcome_new_version">Nuova versione installata. Leggi le note di rilascio. Versione:</string>
<string name="label_tunnels">Tunnel</string>
<string name="label_status">Stato</string>
<string name="label_console">Console</string>
<string name="label_addresses">Indirizzi</string>
<string name="label_addressbook">Rubrica</string>
<string name="label_i2ptunnel_client">I tunnel del client</string>
<string name="label_i2ptunnel_server">I tunnel del server</string>
@ -19,10 +22,37 @@
<string name="label_graphs">Grafici</string>
<string name="button_router_off">Tieni premuto per avviare I2P</string>
<string name="button_router_on">I2P è in funzione (tieni premuto per fermare)</string>
<string name="button_router_graceful">I2P si chiuderà tra %s</string>
<string name="button_shutdown_now">Tieni premuto per avviare I2P</string>
<string name="button_cancel_graceful">Tieni premuto per annullare lo spegnimento</string>
<string name="no_internet">Nessuna connessione Internet disponibile</string>
<string name="hidden">Nascosto</string>
<string name="testing">Test</string>
<string name="firewalled">Bloccato dal Firewall</string>
<string name="symmetric_nat">NAT simmetrico</string>
<string name="net_status_error_i2cp">Errore del Gestore di Client I2CP - controllare i log </string>
<!--Parameter is a time, e.g. 32s or 2m-->
<string name="net_status_error_skew">Disallineamento del Clock di %s</string>
<string name="net_status_error_unresolved_tcp">Indirizzo TCP non risolto</string>
<string name="net_status_error_private_tcp">Indirizzo TCP Privato</string>
<string name="net_status_warn_firewalled_inbound_tcp">Bloccato da firewall con TCP in entrata abilitato</string>
<string name="net_status_warn_firewalled_floodfill">Bloccato dal Firewall e Riempimento</string>
<string name="net_status_info_disconnected">Disconesso - controlla la connessione a internet</string>
<string name="net_status_error_udp_port">Porta UDP già utilizzata - cambia le impostazioni e riavvia</string>
<string name="net_status_error_no_active_peers">Nessun peer attivo - controlla connessione a internet e firewall</string>
<string name="net_status_error_udp_disabled_tcp_not_set">UDP disabilitato e porta/host TCP in entrata non configurato</string>
<string name="net_status_warn_firewalled_udp_disabled">Bloccato dal firewall con UDP disabilitato</string>
<string name="shared_clients">Client condivisi</string>
<string name="uptime">Intervallo di attività</string>
<string name="active_peers">Peer attivi</string>
<string name="known_peers">Peer conosciuti</string>
<!--Character to indicate a client tunnel. Usually first letter of the word "client".-->
<string name="char_client_tunnel">C</string>
<!--Character to indicate a server tunnel. Usually first letter of the word "server".-->
<string name="char_server_tunnel">S</string>
<string name="no_tunnels_running">Ancora nessun tunnel in funzione.</string>
<string name="download">Download</string>
<string name="upload">Upload</string>
<string name="configure_browser_title">Configurare il browser?</string>
<string name="configure_browser_for_i2p">Vuoi configurare il tuo browser per visualizzare siti I2P? (Puoi anche farlo in seguito dal menù di aiuto)</string>
<string name="first_start_title">Congratulazioni per aver installato I2P!</string>
@ -44,13 +74,41 @@
<string name="action_refresh">Aggiorna </string>
<string name="hint_search_addressbook">Cerca nella rubrica</string>
<string name="action_reload_subscriptions">Ricarica sottoscrizioni</string>
<string name="news_last_updated">News aggiornate %s fa.</string>
<string name="news_last_checked">News controllate %s fa.</string>
<string name="news_updated">News aggiornate</string>
<string name="view_news">Tocca per vedere le ultime news di I2P</string>
<string name="router_not_running">Il router non sta funzionando.</string>
<string name="router_shutting_down">Il router si sta spegnendo.</string>
<string name="stats_not_ready">Il gestore delle statistiche non è ancora pronto. Riprova più tardi.</string>
<string name="no_graphs_configured">Nessun grafico configurato. Puoi scegliere le statistiche da graficare nel menu impostazioni. Ogni cambiamento entrerà in azione dopo 60 secondi.</string>
<string name="configure_graphs">Configura grafici</string>
<string name="graphs_not_ready">I grafici non sono ancora pronti. Riprova più tardi.</string>
<string name="statistics">Statistiche</string>
<string name="routers">Router</string>
<string name="leasesets">LeaseSets</string>
<string name="countries">Paesi</string>
<string name="country">Paese</string>
<string name="transport">Trasporto</string>
<string name="versions">Versioni</string>
<string name="version">Versione</string>
<string name="count">Conteggio</string>
<string name="tname_0">Nascosto o in avvio</string>
<string name="netdb_routers_empty">Nessun router nel tuo NetDB.</string>
<string name="netdb_leases_empty">Nessun LeaseSet nel tuo NetDB.</string>
<string name="notification_status_bw">Banda: %1$s KBps ricezione / %2$s KBps invio</string>
<string name="notification_status_starting">I2P si sta avviando</string>
<string name="notification_status_restarting">I2P si sta riavviando</string>
<string name="notification_status_waiting">I2P è in attesa di una connessione a internet</string>
<string name="notification_status_starting_after_waiting">Connesso a internet, I2P si sta avviando</string>
<string name="notification_status_running">I2P è in funzione</string>
<string name="notification_status_client_ready">I tunnel di client sono pronti</string>
<string name="notification_status_client_down">I tunnel di client sono spenti</string>
<string name="notification_status_graceful">Chiusura I2P in %s</string>
<string name="notification_status_stopping">I2P in chiusura</string>
<string name="notification_status_stopping_after_net">Disconnesso da internet, I2P in spegnimento</string>
<string name="notification_status_shutdown_cancelled">Spegnimento cancellato</string>
<string name="notification_status_shutting_down">I2P si sta spegnendo</string>
<string name="notification_status_bw">Banda: %1$sBps ricezione / %2$sBps invio</string>
<string name="notification_status_peers">Peer: %1$d attivo, %2$d conosciuto</string>
<string name="notification_status_expl">Tunnel d\'esplorazione: %1$d/%2$d</string>
<string name="notification_status_client">Tunnel del client : %1$d/%2$d</string>
@ -77,6 +135,9 @@
<string name="settings_desc_upnp">Apri automaticamente le porte sul firewall</string>
<string name="settings_label_logging">Registrazione eventi</string>
<string name="settings_label_default_log_level">Livello di registrazione eventi predefinito</string>
<string name="settings_label_appearance">Aspetto</string>
<string name="settings_label_language">Lingua</string>
<string name="settings_default">Predefinito</string>
<string name="settings_label_advanced">Avanzato</string>
<string name="settings_label_showStats">Statistiche del router</string>
<string name="settings_summ_showStats">Mostra le statistiche avanzate nel pannello principale</string>
@ -100,6 +161,7 @@
<string name="settings_label_expl_backupQuantity">Quantità di backup</string>
<string name="settings_summ_expl_backupQuantity">%s tunnel</string>
<string name="settings_desc_expl_backupQuantity">Quantità di backup di tunnel</string>
<string name="settings_need_transport_enabled">Devi avere almento un trasporto attivato</string>
<string name="settings_router_restart_required">Per favore, riavvia I2P per applicare le modifiche</string>
<string name="menu_about">Informazioni su</string>
<string name="about_version">Versione:</string>
@ -109,6 +171,10 @@
<string name="about_volunteer">Vuoi aiutarci a creare un\'app migliore? Offriti volontario sul forum di Android:</string>
<string name="about_donate">Vuoi donare al progetto denaro o bitcoin per comprare dispositivi Android, su cui effettuare sviluppo e test dell\'app? Vai qui:</string>
<string name="menu_help">Aiuto</string>
<string name="general">Generale</string>
<string name="label_router">Indirizzi pubblici</string>
<string name="label_private">Indirizzi privati</string>
<string name="addressbook_is_empty">La rubrica è vuota</string>
<string name="addressbook_search_header">%s trovato</string>
<string name="addressbook_add_wizard_k_name">Nome</string>
<string name="addressbook_add_wizard_k_destination">Destinazione</string>
@ -134,6 +200,8 @@
<string name="install_recommended_app">Vuoi installare l\'applicazione raccomandata?</string>
<string name="app_needed_for_this_tunnel_type">Hai bisogno di installare una applicazione per utilizzare questo tunnel. Vuoi installare l\'applicazione raccomandata?</string>
<string name="i2ptunnel_not_initialized">I tunnel non sono ancora stati inizializzati, prova a ricaricare tra un paio di minuti.</string>
<string name="no_configured_client_tunnels">Nessun tunnel di client configurato</string>
<string name="no_configured_server_tunnels">Nessun tunnel di server configurato</string>
<string name="i2ptunnel_new_tunnel">Nuovo tunnel</string>
<string name="i2ptunnel_msg_config_saved">Modifiche alla configurazione salvate.</string>
<string name="i2ptunnel_msg_config_save_failed">Errore nel salvataggio della configurazione</string>
@ -161,6 +229,7 @@
<string name="enabled">Abilita</string>
<string name="i2ptunnel_wizard_desc_name">Il nome del tunnel, per identificarlo nell\'elenco dei tunnel.</string>
<string name="i2ptunnel_wizard_desc_desc">Una descrizione del tunnel. È un attributo opzionale a puro titolo informativo.</string>
<string name="i2ptunnel_wizard_desc_dest">Scrivi la destinazione I2P del servizio a cui questo client tunnel dovrebbe connettersi. Questa potrebbe essere la chiave base 64 di destinazione, o un hostname I2P della tua rubrica.</string>
<string name="i2ptunnel_wizard_desc_outproxies">Se conosci qualche proxy di uscita per questo tipo di tunnel (HTTP oppure SOCKS), inseriscilo. Per inserire più proxy, separa i valori usando le virgole.</string>
<string name="i2ptunnel_wizard_desc_target_host">Questo è l\'indirizzo IP sul quale è in funzione il servizio, che generalmente risiede sulla stessa macchina: pertanto si assume il valore 127.0.0.1.</string>
<string name="i2ptunnel_wizard_desc_target_port">Questa è la porta per la quale il servizio accetta connessioni.</string>
@ -169,6 +238,118 @@
<string name="i2ptunnel_wizard_desc_auto_start">Vuoi che il tunnel si avvii automaticamente insieme al router?</string>
<string name="i2ptunnel_wizard_submit_confirm_message">Creare il tunnel?</string>
<string name="i2ptunnel_wizard_submit_confirm_button">Crea tunnel</string>
<string name="i2ptunnel_view_target">Destinazione</string>
<string name="i2ptunnel_view_access_point">Punto di Accesso</string>
<string name="i2ptunnel_view_autostart">Avvio automatico</string>
<string name="edit_tunnel">Modifica tunnel</string>
<string name="name">Nome</string>
<string name="description">Descrizione</string>
<string name="auto_start">Avvio automatico</string>
<string name="tunnel_summ_auto_start">Avvia il tunnel insieme al router</string>
<string name="tunnel_cat_ports">Porte locali</string>
<string name="shared_client">Client Condiviso</string>
<string name="tunnel_summ_shared_client">Usa la stessa Destinazione e tunnel degli altri client condivisi</string>
<string name="target_destination">Destinazione target</string>
<string name="persistent_key">Chiave persistente</string>
<string name="persistent_key_conflict_title">Disabilita nuova chiavi alla riapertura?</string>
<string name="persistent_key_conflict_msg">Non puoi attivare chiavi persistenti quando il tunnel è settato per generare nuovi chiavi alla riapertura. Vuoi disabilitare le chiavi nuove alla riapertura?</string>
<string name="tunnel_summ_persistent_key">Conserva questa destinazione di tunnel quando si riavvia</string>
<string name="reachable_on">Raggiungibile su</string>
<string name="listen_port">Porta di ascolto</string>
<string name="client_ssl">Client SSL</string>
<string name="tunnel_summ_client_ssl">I client devono usare SSL per connettersi</string>
<string name="outproxies">Proxy in uscita</string>
<string name="ssl_outproxies">Proxy di uscita SSL</string>
<string name="irc">IRC</string>
<string name="enable_dcc">Abilita DCC</string>
<string name="tunnel_summ_enable_dcc">Permetti ai client IRC di usare DCC</string>
<string name="website_domain_name">Nome a dominio del sito</string>
<string name="target_host">Host di destinazione</string>
<string name="target_port">Porta di destinazione</string>
<string name="use_ssl">Usa SSL</string>
<string name="tunnel_summ_use_ssl">Usa SSL per connetterti alla destinazione</string>
<string name="tunnel_parameters">Parametri tunnel</string>
<string name="profile">Profilo</string>
<string name="profile_bulk">Connessione di massa (download/siti web/BT)</string>
<string name="profile_interactive">Connessione interattiva</string>
<string name="delay_connect">Ritarda connessione</string>
<string name="tunnel_summ_delay_connect">Attiva per connessioni request/response</string>
<string name="access_control">Controllo di accesso</string>
<string name="restricted_access">Accesso ristretto</string>
<string name="disabled">Disabilitato</string>
<string name="whitelist">Eccezioni</string>
<string name="blacklist">Lista nera</string>
<string name="access_list">Lista di accesso</string>
<string name="reject_inproxies">Rifiuta proxy in entrata</string>
<string name="tunnel_summ_reject_inproxies">Permetti la connessione solo a utenti I2P</string>
<string name="unique_local">Unique locale</string>
<string name="tunnel_summ_unique_local">Usa IP localhost unici per ogni client</string>
<string name="multihome">Multihome</string>
<string name="tunnel_summ_multihome">Attiva ottimizzazioni multihoming</string>
<string name="client_connection_limits">Limiti di connessioni del client</string>
<string name="connections_per_minute">Connessioni al minuto</string>
<string name="connections_per_hour">Connessioni all\'ora</string>
<string name="connections_per_day">Connessioni al giorn</string>
<string name="total_connection_limits">Limiti di connessione totali</string>
<string name="total_connections_per_minute">Connessioni totali al minuto</string>
<string name="total_connections_per_hour">Connessioni totali all\'ora</string>
<string name="total_connections_per_day">Connessioni totali al giorno</string>
<string name="max_active_connections">Massime connessioni attive</string>
<string name="num_per_minute">%s al minuto</string>
<string name="num_per_hour">%s all\'ora</string>
<string name="num_per_day">%s al giorno</string>
<string name="unlimited">Illimitato</string>
<string name="set_zero_for_unlimited">Imposta 0 per illimitato</string>
<string name="post_limits">Limiti POST</string>
<string name="limit_period">Periodo del limite</string>
<string name="client_posts_per_period">POST del client nel periodo</string>
<string name="client_ban_length">Lunghezza di esclusione del client</string>
<string name="total_posts_per_period">POST totali nel periodo</string>
<string name="total_ban_length">Lunghezza totale di esclusione</string>
<string name="power_saving">Risparmio di energia</string>
<string name="delay_open">Ritarda apertura</string>
<string name="tunnel_summ_delay_open">Ritarda apertura del tunnel finchè non è richiesto</string>
<string name="reduce_quantity">Riduci quantità</string>
<string name="tunnel_summ_reduce_quantity">Riduci la quantità di tunnel quando inattivo</string>
<string name="idle_time">Tempo di inattività</string>
<string name="num_minutes">%s minuti</string>
<string name="reduced_tunnel_quantity">Riduci la quantità di tunnel</string>
<string name="close_tunnels">Chiudi i tunnel quando inattivo</string>
<string name="new_keys_on_reopen">Nuove chiavi alla riapertura</string>
<string name="new_keys_on_reopen_conflict_title">Disabilita chiavi persistenti?</string>
<string name="new_keys_on_reopen_conflict_msg">Non puoi attivare nuove chiavi alla riapertura quando il tunnel è settato per usare chiavi permanenti. Vuoi disabilitare le chiavi persistenti?</string>
<string name="http_client">Client HTTP</string>
<string name="tunnel_summ_user_agent">Trasmetti header \'User-Agent\'</string>
<string name="tunnel_summ_referer">Trasmetti header \'Referer\'</string>
<string name="tunnel_summ_accept">Trasmetti header \'Accept-*\'</string>
<string name="tunnel_summ_allow_ssl">Permetti SSL per gli indirizzi I2P</string>
<string name="jump_url_list">Salta lista URL</string>
<string name="proxy_auth">Autorizzazione proxy</string>
<string name="tunnel_summ_proxy_auth">Richiedi login per utilizzare questo proxy</string>
<string name="username">Nome utente</string>
<string name="password">Password</string>
<string name="outproxy_auth">Autorizzazione proxy in uscita</string>
<string name="tunnel_summ_outproxy_auth">Il login richiesto per il proxy in uscita</string>
<string name="other">Altro</string>
<string name="signature_type">Tipo firma</string>
<string name="custom_options">Opzioni personalizzate</string>
<string name="all">Tutto</string>
<string name="no_messages">Nessun messaggio</string>
<string name="no_error_messages">Nessun messaggio di errore</string>
<plurals name="log_error_messages">
<item quantity="one">Un messaggio di errore</item>
<item quantity="other">%d messaggi di errore, più recenti per primi</item>
</plurals>
<plurals name="log_messages">
<item quantity="one">Un messaggio</item>
<item quantity="other">%d messaggi, più recenti per primi</item>
</plurals>
<string name="log_entry">Record di log</string>
<string name="copy_logs">Copia log</string>
<string name="i2p_android_error_logs">Log di errori di I2P Android</string>
<string name="i2p_android_logs">Log di I2P Android</string>
<string name="error_logs_copied_to_clipboard">Log degli errori copiati negli appunti</string>
<string name="logs_copied_to_clipboard">Log copiati negli appunti</string>
<string name="label_browser_configuration">Configurazione del browser</string>
<string name="unset">Annulla configurazione</string>
</resources>

View File

@ -51,7 +51,7 @@
<string name="configure_graphs">グラフ設定</string>
<string name="netdb_routers_empty">NetDB にルーターがありません。</string>
<string name="netdb_leases_empty">NetDB にリースセットがありません。</string>
<string name="notification_status_bw">帯域幅: %1$s KBps 下方向 / %2$s KBps 上方向</string>
<string name="notification_status_bw">帯域幅: %1$sBps 下方向 / %2$sBps 上方向</string>
<string name="notification_status_peers">ピア: %1$d アクティブ、 %2$d 既知</string>
<string name="notification_status_expl">予備トンネル: %1$d/%2$d</string>
<string name="notification_status_client">クライアントトンネル: %1$d/%2$d</string>

View File

@ -108,7 +108,7 @@
<string name="notification_status_stopping_after_net">네트워크 끊김, I2P 멈추는 중</string>
<string name="notification_status_shutdown_cancelled">종료 취소됨</string>
<string name="notification_status_shutting_down">I2P 종료 중</string>
<string name="notification_status_bw">대역폭: %1$s KBps 다운 / %2$s KBps 업로드</string>
<string name="notification_status_bw">대역폭: %1$sBps 다운 / %2$sBps 업로드</string>
<string name="notification_status_peers">피어들: %1$d 활성, %2$d 알려짐</string>
<string name="notification_status_expl">예비 터널들: %1$d/%2$d</string>
<string name="notification_status_client">클라이언트 터널들: %1$d/%2$d</string>

View File

@ -51,7 +51,7 @@
<string name="configure_graphs">Konfigurer grafer</string>
<string name="netdb_routers_empty">Ingen rutere i din NetDB</string>
<string name="netdb_leases_empty">Ingen LeaseSets i din NetDB.</string>
<string name="notification_status_bw">Båndbredde: %1$s KBps ned / %2$s KBps opp</string>
<string name="notification_status_bw">Båndbredde: %1$sBps ned / %2$sBps opp</string>
<string name="notification_status_peers">Likemenn: %1$d aktive, %2$d kjente</string>
<string name="notification_status_expl">Utforsknings-tunneler: %1$d/%2$d</string>
<string name="notification_status_client">Klient-tunneler: %1$d/%2$d</string>

View File

@ -106,7 +106,7 @@
<string name="notification_status_stopping_after_net">Netwerk verbroken, I2P wordt gestopt</string>
<string name="notification_status_shutdown_cancelled">Afsluiten geannuleerd</string>
<string name="notification_status_shutting_down">I2P is aan het afsluiten</string>
<string name="notification_status_bw">Bandbreedte: %1$s KBps down / %2$s KBps up</string>
<string name="notification_status_bw">Bandbreedte: %1$sBps down / %2$sBps 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ënttunnels: %1$d/%2$d</string>

View File

@ -2,10 +2,13 @@
<resources>
<string name="app_name">I2P</string>
<string name="desc_i2p_logo">Logo I2P</string>
<string name="choose_language">Wybierz język</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_tunnels">Tunele</string>
<string name="label_status">Status</string>
<string name="label_console">Konsola</string>
<string name="label_addresses">Adresy</string>
<string name="label_addressbook">Książka adresowa</string>
<string name="label_i2ptunnel_client">Tunele klienta</string>
<string name="label_i2ptunnel_server">Tunele serwerów</string>
@ -19,11 +22,34 @@
<string name="label_graphs">Wykresy</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>
<string name="button_router_graceful">I2P zostanie wyłączone za %s</string>
<string name="button_shutdown_now">Przytrzymaj dłużej, aby zatrzymać natychmiast</string>
<string name="button_cancel_graceful">Przytrzymaj dłużej, aby anulować zamknięcie</string>
<string name="no_internet">Brak połączenia z internetem</string>
<string name="hidden">Ukryty</string>
<string name="testing">Testuję</string>
<string name="firewalled">Za zaporą sieciową</string>
<string name="symmetric_nat">Symetryczny NAT</string>
<string name="net_status_error_i2cp">Błąd Menedżera Klienta I2CP - sprawdź logi</string>
<!--Parameter is a time, e.g. 32s or 2m-->
<string name="net_status_error_skew">Odchylenie zegara o %s</string>
<string name="net_status_error_private_tcp">Prywatny adres TCP</string>
<string name="net_status_warn_firewalled_inbound_tcp">Włączona zapora akceptująca przychodzące pakiety TCP</string>
<string name="net_status_info_disconnected">Rozłączony - sprawdź połączenie z internetem.</string>
<string name="net_status_error_udp_port">Port UDP w użyciu. Zmień ustawienia i zrestartuj.</string>
<string name="net_status_error_no_active_peers">Brak aktywnych uczestników, sprawdź połączenie sieciowe i firewall</string>
<string name="net_status_warn_firewalled_udp_disabled">Włączona zapora z zablokowanym UDP</string>
<string name="shared_clients">Współdzielone klienty</string>
<string name="uptime">Czas działania</string>
<string name="active_peers">Aktywni uczestnicy</string>
<string name="known_peers">Znani uczestnicy</string>
<!--Character to indicate a client tunnel. Usually first letter of the word "client".-->
<string name="char_client_tunnel">C</string>
<!--Character to indicate a server tunnel. Usually first letter of the word "server".-->
<string name="char_server_tunnel">S</string>
<string name="no_tunnels_running">Brak aktywnych tuneli</string>
<string name="download">Pobieranie</string>
<string name="upload">Wysyłanie</string>
<string name="configure_browser_title">Konfigurować przeglądarkę?</string>
<string name="configure_browser_for_i2p">Czy chciałbyś skonfigurować przeglądarkę, aby przeglądać strony I2P? (Możesz to zrobić później w wybierająć pomoc z menu.)</string>
<string name="first_start_title">Gratulacje, zainstalowałeś I2P!</string>
@ -45,13 +71,39 @@
<string name="action_refresh">Odśwież</string>
<string name="hint_search_addressbook">Szukaj w książce adresowej</string>
<string name="action_reload_subscriptions">Odśwież subskrypcje</string>
<string name="news_last_updated">Wiadomości uaktualnione %s temu.</string>
<string name="news_last_checked">Wiadomości ostatnio sprawdzono %s temu.</string>
<string name="news_updated">Wiadomości uaktualnione</string>
<string name="view_news">Dotknij by zobaczyć najnowsze wiadomości z I2P</string>
<string name="router_not_running">Router nie jest włączony.</string>
<string name="router_shutting_down">Trwa wyłączanie routera</string>
<string name="stats_not_ready">Menadżer statystyk nie jest jeszcze gotowy. Spróbuj później.</string>
<string name="no_graphs_configured">Żadne wykresy nie zostały skonfigurowane. Możesz wybrać statystyki graficzne w menu ustawień. Wszelkie zmiany wejdą w życie po upływie 60 sekund.</string>
<string name="configure_graphs">Konfiguruj wykresy</string>
<string name="graphs_not_ready">Wykresy nie są jeszcze gotowe. Spróbuj później.</string>
<string name="statistics">Statystyki</string>
<string name="routers">Rutery</string>
<string name="countries">Kraje</string>
<string name="country">Kraj</string>
<string name="transport">Transport</string>
<string name="versions">Wersje</string>
<string name="version">Wersja</string>
<string name="count">Licznik</string>
<string name="netdb_routers_empty">Brak routerów w Twoim NetDB.</string>
<string name="netdb_leases_empty">Brak LeaseSets w Twoim NetDB.</string>
<string name="notification_status_bw">Przepustowość: %1$s KBps pobieranie / %2$s KBps wysyłanie</string>
<string name="notification_status_starting">Uruchamianie I2P!</string>
<string name="notification_status_restarting">Ponowne uruchamianie I2P</string>
<string name="notification_status_waiting">I2P oczekuje na połączenie z siecią</string>
<string name="notification_status_starting_after_waiting">Sieć połączona, uruchamianie I2P</string>
<string name="notification_status_running">I2P jest aktywne</string>
<string name="notification_status_client_ready">Tunele klienta są gotowe</string>
<string name="notification_status_client_down">Tunele klienta są nieaktywne</string>
<string name="notification_status_graceful">Zatrzymanie I2P za %s</string>
<string name="notification_status_stopping">Trwa zatrzymywanie I2P</string>
<string name="notification_status_stopping_after_net">Sieć rozłączona, zatrzymywanie I2P</string>
<string name="notification_status_shutdown_cancelled">Anulowano zamknięcie</string>
<string name="notification_status_shutting_down">Trwa wyłączanie I2P</string>
<string name="notification_status_bw">Przepustowość: %1$sBps pobieranie / %2$sBps wysyłanie</string>
<string name="notification_status_peers">Peery: %1$d aktywnych, %2$d znanych</string>
<string name="notification_status_expl">Tunelów rozpoznawczych: %1$d/%2$d</string>
<string name="notification_status_client">Tunele klienta: %1$d/%2$d</string>
@ -78,6 +130,9 @@
<string name="settings_desc_upnp">Otwórz porty firewall\'a automatycznie</string>
<string name="settings_label_logging">Logowanie</string>
<string name="settings_label_default_log_level">Domyślny level logowania</string>
<string name="settings_label_appearance">Wygląd</string>
<string name="settings_label_language">Język</string>
<string name="settings_default">Domyślny</string>
<string name="settings_label_advanced">Zaawansowane</string>
<string name="settings_label_showStats">Statystyki Routera</string>
<string name="settings_summ_showStats">Wyświetl zaawanowane statystyki w głównej konsoli</string>
@ -112,6 +167,9 @@
<string name="about_donate">Chcesz przesłać pieniądze lub bitcoiny, aby zakupić więcej Androidów dla rozwoju i testowania? Idź do:</string>
<string name="menu_help">Pomoc</string>
<string name="general">Ogólne</string>
<string name="label_router">Adres publiczny</string>
<string name="label_private">Adres prywatny</string>
<string name="addressbook_is_empty">Książka adresowa jest pusta</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">Przeznaczenie</string>
@ -137,6 +195,8 @@
<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="no_configured_client_tunnels">Brak skonfigurowanych tuneli klientów</string>
<string name="no_configured_server_tunnels">Brak skonfigurowanych tuneli serwerów</string>
<string name="i2ptunnel_new_tunnel">Nowy tunel</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>
@ -172,7 +232,88 @@
<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_target">Cel</string>
<string name="i2ptunnel_view_access_point">Punkt Dostępu</string>
<string name="i2ptunnel_view_autostart">Auto-start</string>
<string name="edit_tunnel">Edytuj tunel</string>
<string name="name">Nazwa</string>
<string name="description">Opis</string>
<string name="auto_start">Auto-start</string>
<string name="tunnel_cat_ports">Porty lokalne</string>
<string name="shared_client">Klient współdzielony</string>
<string name="persistent_key">Trwały klucz</string>
<string name="persistent_key_conflict_title">Zablokować nowe klucze przy ponownym otwarciu?</string>
<string name="persistent_key_conflict_msg">Nie możesz aktywować trwałych kluczy gdy tunel jest skonfigurowany by generować klucze przy ponownym otwarciu. Czy chcesz zablokować generowanie nowych kluczy przy ponownym otwarciu?</string>
<string name="reachable_on">Dostępny na</string>
<string name="listen_port">Port nasłuchu</string>
<string name="client_ssl">Klient SSL</string>
<string name="tunnel_summ_client_ssl">Aby połączyć się klient musi użyć SSL</string>
<string name="outproxies">Proxy wychodzące</string>
<string name="ssl_outproxies">Proxy wyjściowe SSL</string>
<string name="irc">IRC</string>
<string name="enable_dcc">Włącz DCC</string>
<string name="tunnel_summ_enable_dcc">Pozwól klientom IRC na używanie DCC</string>
<string name="website_domain_name">Domena strony</string>
<string name="target_host">Host docelowy</string>
<string name="target_port">Port docelowy</string>
<string name="use_ssl">Użyj SSL</string>
<string name="tunnel_parameters">Parametry tuneli</string>
<string name="profile">Profil</string>
<string name="profile_interactive">Połączenie interaktywne</string>
<string name="delay_connect">Opóźnij połączenie</string>
<string name="access_control">Kontrola dostępu</string>
<string name="restricted_access">Zastrzeżony dostęp</string>
<string name="disabled">Wyłączony</string>
<string name="whitelist">Biała Lista</string>
<string name="blacklist">Czarna Lista</string>
<string name="access_list">Lista Dostępu</string>
<string name="reject_inproxies">Odrzucaj wejściowe proxy</string>
<string name="tunnel_summ_reject_inproxies">Pozwól na połączenia wyłącznie od użytkowników I2P</string>
<string name="client_connection_limits">Limit połączeń klienta</string>
<string name="connections_per_minute">Połączenia na minutę</string>
<string name="connections_per_hour">Połączenia na godzinę</string>
<string name="connections_per_day">Połączenia na dzień</string>
<string name="total_connection_limits">Całkowity limit połączeń</string>
<string name="total_connections_per_minute">Całkowita ilość połączeń na minutę</string>
<string name="total_connections_per_hour">Całkowita ilość połączeń na godzinę</string>
<string name="total_connections_per_day">Całkowita ilość połączeń na dzień</string>
<string name="max_active_connections">Maksymalna liczba aktywnych połączeń</string>
<string name="num_per_minute">%s na minutę</string>
<string name="num_per_hour">%s na godzinę</string>
<string name="num_per_day">%s dziennie</string>
<string name="unlimited">Nielimitowane</string>
<string name="set_zero_for_unlimited">Wpisz 0 dla nielimitowanych</string>
<string name="post_limits">Limity zapytań POST</string>
<string name="limit_period">Czas ograniczenia</string>
<string name="client_ban_length">Długość bana klienta</string>
<string name="total_ban_length">Całkowita długość bana</string>
<string name="power_saving">Oszczędzanie energii</string>
<string name="delay_open">Opóźnij otwarcie</string>
<string name="tunnel_summ_delay_open">Otwórz tunel dopiero wtedy, gdy jest potrzebny</string>
<string name="reduce_quantity">Zredukuj ilość</string>
<string name="tunnel_summ_reduce_quantity">Zredukuj ilość tuneli podczas bezczynności</string>
<string name="idle_time">Czas bezczynności</string>
<string name="num_minutes">%s minut</string>
<string name="reduced_tunnel_quantity">Zmniejszona ilość tuneli</string>
<string name="close_tunnels">Zamknij tunele podczas bezczynności</string>
<string name="new_keys_on_reopen">Nowe klucze przy ponownym otwarciu</string>
<string name="new_keys_on_reopen_conflict_title">Zablokować trwałe klucze?</string>
<string name="http_client">Klient HTTP</string>
<string name="tunnel_summ_accept">Przekazuj nagłówek Accept</string>
<string name="tunnel_summ_allow_ssl">Zezwalaj na SSL do adresów I2P</string>
<string name="jump_url_list">Lista adresów usług Jump</string>
<string name="proxy_auth">Autoryzacja proxy</string>
<string name="tunnel_summ_proxy_auth">Wymagaj zalogowania by użyć tego proxy</string>
<string name="username">Użytkownik</string>
<string name="password">Hasło</string>
<string name="outproxy_auth">Autoryzacja Proxy Wyjściowego</string>
<string name="other">Inne</string>
<string name="signature_type">Rodzaj podpisu</string>
<string name="custom_options">Dodatkowe opcje</string>
<string name="all">Wszystkie</string>
<string name="no_messages">Brak wiadomości</string>
<string name="no_error_messages">Brak wiadomości o błędach</string>
<string name="log_entry">Wpis w logu</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>

View File

@ -2,30 +2,48 @@
<resources>
<string name="app_name">I2P</string>
<string name="desc_i2p_logo">Logo I2P</string>
<string name="choose_language">Escolha um idioma</string>
<string name="welcome_new_install">Bem vindo ao I2P! Este aplicativo está em estágio ALPHA e não provê anonimidade forte. Por favor leia as notas e informações de licença.</string>
<string name="welcome_new_version">Nova versão instalada. Por favor leia as notas de revisão. Versão:</string>
<string name="label_home">Controle e status</string>
<string name="label_tunnels">Tuneis</string>
<string name="welcome_new_version">Nova versão instalada. Por favor, leia as notas de lançamento. Versão:</string>
<string name="label_tunnels">Túneis</string>
<string name="label_status">Estado</string>
<string name="label_console">Painel</string>
<string name="label_addresses">Endereços</string>
<string name="label_addressbook">Livro de endereços</string>
<string name="label_i2ptunnel_client">Túneis clientes</string>
<string name="label_i2ptunnel_server">Túneis servidor</string>
<string name="label_logs">Registros</string>
<string name="label_error_logs">Registros de erros</string>
<string name="label_info_and_pages">Informações e paginas</string>
<string name="label_welcome_page">Página de boas-vindas</string>
<string name="label_news">Novidades</string>
<string name="label_peers_status">Pares</string>
<string name="label_release_notes">Comunicados de lançamento</string>
<string name="label_licenses">Licenças</string>
<string name="label_nonanon_info">Informação não-anônima</string>
<string name="label_browse">Navegador</string>
<string name="label_graphs">Gráficos</string>
<string name="button_router_graceful">O software I2P será encerrado em %s</string>
<string name="no_internet">Não há conexões de internet disponíveis</string>
<string name="hidden">Oculto</string>
<string name="testing">Testando</string>
<string name="firewalled">Sob firewall</string>
<string name="symmetric_nat">NAT simétrico</string>
<!--Parameter is a time, e.g. 32s or 2m-->
<string name="net_status_error_unresolved_tcp">Endereço TCP não resolvido</string>
<string name="net_status_error_private_tcp">Endereço TCP privado</string>
<string name="net_status_warn_firewalled_inbound_tcp">Sob firewall com entrada via TCP ativada</string>
<string name="net_status_info_disconnected">Desconectado - verifique a conexão de rede</string>
<string name="net_status_error_udp_port">Porta UDP em uso - altere as configurações e reinicie</string>
<string name="net_status_error_no_active_peers">Sem pares ativos - verifique a conexão de rede e o firewall</string>
<string name="net_status_warn_firewalled_udp_disabled">Sob firewall com UDP desativado</string>
<string name="shared_clients">Clientes compartilhados</string>
<string name="active_peers">Pares ativos</string>
<string name="known_peers">Pares conhecidos</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">Por enquanto, nenhum túnel de cliente em execução.</string>
<string name="no_tunnels_running">Nenhum túnel em funcionamento ainda.</string>
<string name="download">Baixar</string>
<string name="upload">Carregar</string>
<string name="configure_browser_title">Configurar o navegador?</string>
<string name="configure_browser_for_i2p">Gostaria de configurar um navegador para visualizar sites da I2P? (Você pode também fazer isso depois a partir do menu ajuda.)</string>
<string name="first_start_title">Parabéns em instalar o I2P!</string>
@ -33,13 +51,11 @@
<string name="first_start_read">Enquanto você está esperando, por favor leia as notas de lançamento e a página de boas vindas.</string>
<string name="first_start_faq">Uma vez que você tenha túneis clientes, por favor <b>verifique</b> nosso FAQ:</string>
<string name="first_start_faq_nonanon">Ou use esse link não-anonimo se você não deseja esperar por túneis:</string>
<string name="first_start_irc">Configure seu cliente IRC para <b>localhost:6668</b> e diga oi para nós:</string>
<string name="first_start_irc">Configure seu cliente IRC para <b>localhost:6668</b> e dê um oi para nós:</string>
<string name="action_search">Procurar</string>
<string name="action_add">Adicionar</string>
<string name="action_edit">Editar</string>
<string name="action_delete">Apagar</string>
<string name="action_router_start">Iniciar roteamento</string>
<string name="action_router_stop">Interrompear roteamento</string>
<string name="action_i2ptunnel_start">Iniciar túnel</string>
<string name="action_i2ptunnel_stop">Parar túnel</string>
<string name="action_i2ptunnel_start_all">Iniciar todos os túneis</string>
@ -49,10 +65,32 @@
<string name="action_refresh">Atualizar</string>
<string name="hint_search_addressbook">Procurar por livro de endereços</string>
<string name="action_reload_subscriptions">Recarregar inscriçoes</string>
<string name="news_updated">Novidades atualizadas</string>
<string name="router_not_running">O roteador não está funcionando</string>
<string name="router_shutting_down">O roteador está sendo desligado.</string>
<string name="stats_not_ready">O configurador de estatística não está pronto. Tente de novo mais tarde.</string>
<string name="statistics">Estatísticas</string>
<string name="routers">Roteadores</string>
<string name="countries">Países</string>
<string name="country">País</string>
<string name="transport">Transporte</string>
<string name="versions">Versões</string>
<string name="version">Versão</string>
<string name="tname_0">Oculto ou inicializando</string>
<string name="netdb_routers_empty">Sem roteadores em seu NetDB.</string>
<string name="notification_status_bw">Largura de banda: %1$s KBps Down/ %2$s KBps up</string>
<string name="notification_status_starting">O roteador I2P está inicializando</string>
<string name="notification_status_restarting">O roteador I2P está reiniciando</string>
<string name="notification_status_waiting">O roteador I2P está esperando por uma conexão de rede</string>
<string name="notification_status_starting_after_waiting">Conectado a rede, inicializando o roteador I2P</string>
<string name="notification_status_running">Software I2P em execução</string>
<string name="notification_status_client_ready">Os túneis de cliente estão prontos</string>
<string name="notification_status_client_down">Os túneis de cliente estão fora de serviço</string>
<string name="notification_status_graceful">Interrompendo o roteador I2P em %s</string>
<string name="notification_status_stopping">Interrompendo o roteador I2P</string>
<string name="notification_status_stopping_after_net">Rede desconectada, interrompendo I2P</string>
<string name="notification_status_shutdown_cancelled">Desligamento cancelado</string>
<string name="notification_status_shutting_down">O roteador I2P está sendo desligado</string>
<string name="notification_status_bw">Largura de banda: %1$sBps Down/ %2$sBps up</string>
<string name="notification_status_peers">Pares: %1$d ativos, %2$d conhecidos</string>
<string name="notification_status_expl">Túneis exploratórios: %1$d/%2$d</string>
<string name="notification_status_client">Túneis cliente: %1$d/%2$d</string>
@ -60,6 +98,8 @@
<string name="settings_enable">Ativar</string>
<string name="settings_desc_subscriptions">URLs para inscrição</string>
<string name="settings_label_bandwidth_net">Largura de banda e rede</string>
<string name="settings_label_startOnBoot">Iniciar I2P na inicialização</string>
<string name="settings_desc_startOnBoot">Conectar-se automaticamente a I2P quando o seu dispositivo Android for inicializado.</string>
<string name="settings_label_bandwidth">Largura de banda</string>
<string name="settings_label_bw_inbound">Velocidade de entrada</string>
<string name="settings_desc_bw_inbound">Velocidade máxima de entrada</string>
@ -76,6 +116,9 @@
<string name="settings_dialog_sharePercent">Porcentagem de banda para comprtilhar</string>
<string name="settings_desc_upnp">Abrir portas do firewall automaticamente</string>
<string name="settings_label_default_log_level">Nível padrão do log</string>
<string name="settings_label_appearance">Aparência</string>
<string name="settings_label_language">Idioma</string>
<string name="settings_default">Padrão</string>
<string name="settings_label_advanced">Avançado</string>
<string name="settings_label_showStats">Estatisticas do roteador</string>
<string name="settings_summ_showStats">Mostrar estatísticas avançadas no console principal</string>
@ -90,11 +133,14 @@
<string name="settings_summ_expl_length">%s saltos</string>
<string name="settings_desc_expl_length">Quantos saltos usar</string>
<string name="settings_summ_expl_lengthVariance">%s</string>
<string name="settings_desc_expl_lengthVariance">Quantos saltos aleatórios a adicionar</string>
<string name="settings_label_expl_quantity">Quantidade</string>
<string name="settings_summ_expl_quantity">%s tunéis</string>
<string name="settings_desc_expl_quantity">Quantos túneis</string>
<string name="settings_summ_expl_backupQuantity">%s tuneis</string>
<string name="settings_label_expl_backupQuantity">Quantidade de backup</string>
<string name="settings_summ_expl_backupQuantity">%s túneis</string>
<string name="settings_desc_expl_backupQuantity">Quantos backups de túneis</string>
<string name="settings_need_transport_enabled">Você deve ter pelo menos um transporte ativado</string>
<string name="settings_router_restart_required">Por favor, reinicialize o software I2P para aplicar as alterações</string>
<string name="menu_about">Sobre</string>
<string name="about_version">Versão:</string>
@ -104,11 +150,20 @@
<string name="about_volunteer">Quer ajudar a tornar o aplicativo melhor? Seja voluntário no fórum Android:</string>
<string name="about_donate">Quer doar dinheiro ou bitcoins para comprar mais dispositivos Android para desenvolvimento e testes? Vá para:</string>
<string name="menu_help">Ajuda</string>
<string name="general">Geral</string>
<string name="label_router">Endereços públicos</string>
<string name="label_private">Endereços privados</string>
<string name="addressbook_is_empty">O livro de endereços está vazio</string>
<string name="addressbook_search_header">%s achado</string>
<string name="addressbook_add_wizard_k_name">Nome</string>
<string name="addressbook_add_wizard_k_destination">Destino</string>
<string name="addressbook_add_wizard_desc_name">O nome</string>
<string name="addressbook_add_wizard_desc_destination">Cole o B64 do Destino aqui. Se você tem um Gerenciador de Arquivos instalado, você pode navegar para um arquivo de texto contendo o B64.</string>
<string name="nsu_iae_illegal_char">O nome do host \"%1$s\" contém o caractere ilegal %2$s</string>
<string name="nsu_iae_cannot_start_with">O nome do host não pode começar com \"%s\"</string>
<string name="nsu_iae_cannot_end_with">O nome do host não pode terminar com \"%s\"</string>
<string name="nsu_iae_cannot_contain">O nome do host não pode conter \"%s\"</string>
<string name="nsu_iae_requires_conversion">O nome de host \"%s\" requer conversão para ASCII mas a biblioteca de conversão não está disponível nessa versão do Android</string>
<string name="i2ptunnel_type_client">Cliente padrão</string>
<string name="i2ptunnel_type_httpclient">Cliente HTTP</string>
<string name="i2ptunnel_type_ircclient">Cliente IRC</string>
@ -118,6 +173,7 @@
<string name="i2ptunnel_type_ircserver">Servidor IRC</string>
<string name="i2ptunnel_type_streamrclient">Cliente Streamr</string>
<string name="i2ptunnel_type_streamrserver">Servidor Streamr</string>
<string name="install_recommended_app">Instalar aplicativo recomendado?</string>
<string name="i2ptunnel_not_initialized">Os túneis não foram iniciados ainda, por favor recarregue em dois minutos.</string>
<string name="i2ptunnel_new_tunnel">Novo túnel</string>
<string name="i2ptunnel_msg_config_saved">Mudanças nas configurações salvas</string>
@ -134,6 +190,9 @@
<string name="i2ptunnel_wizard_k_desc">Descrição</string>
<string name="i2ptunnel_wizard_k_dest">Destino</string>
<string name="i2ptunnel_wizard_k_outproxies">Proxys de saída</string>
<string name="i2ptunnel_wizard_k_target_host">Host alvo</string>
<string name="i2ptunnel_wizard_k_target_port">Porta alvo</string>
<string name="i2ptunnel_wizard_k_reachable_on">Ao alcance em</string>
<string name="i2ptunnel_wizard_k_auto_start">Auto-início</string>
<string name="next">Próximo</string>
<string name="prev">Anterior</string>
@ -148,5 +207,85 @@
<string name="i2ptunnel_wizard_desc_auto_start">O túnel deve iniciar automaticamente quando o roteador iniciar?</string>
<string name="i2ptunnel_wizard_submit_confirm_message">Criar túnel?</string>
<string name="i2ptunnel_wizard_submit_confirm_button">Criar túnel</string>
<string name="i2ptunnel_view_autostart">Auto-início</string>
<string name="i2ptunnel_view_target">Alvo</string>
<string name="i2ptunnel_view_access_point">Ponto de acesso</string>
<string name="i2ptunnel_view_autostart">Auto-inicialização</string>
<string name="edit_tunnel">Editar túnel</string>
<string name="name">Nome</string>
<string name="description">Descrição</string>
<string name="auto_start">Auto-inicialização</string>
<string name="tunnel_summ_auto_start">Iniciar o túnel na inicialização do roteador.</string>
<string name="tunnel_cat_ports">Portas locais</string>
<string name="shared_client">Cliente compartilhado</string>
<string name="target_destination">Destino alvo</string>
<string name="persistent_key">Chave persistente</string>
<string name="persistent_key_conflict_title">Desativar novas chaves na reabertura?</string>
<string name="persistent_key_conflict_msg">Você não pode ativar chaves persistentes enquanto o túnel estiver configurado para gerar novas chaves na reabertura. Quer desativar novas chaves na reabertura?</string>
<string name="tunnel_summ_persistent_key">Manter o destino desse túnel quando ele reiniciar</string>
<string name="reachable_on">Ao alcance em</string>
<string name="listen_port">Porta de escuta</string>
<string name="tunnel_summ_client_ssl">Os clientes devem usar SSL para se conectar</string>
<string name="outproxies">Proxies de saída</string>
<string name="ssl_outproxies">Proxies de saida com SSL</string>
<string name="irc">IRC</string>
<string name="enable_dcc">Ativar DCC</string>
<string name="tunnel_summ_enable_dcc">Permitir que os clientes IRC usem DCC</string>
<string name="website_domain_name">Nome do domínio do site web</string>
<string name="target_host">Host alvo</string>
<string name="target_port">Porta alvo</string>
<string name="use_ssl">Usar SSL</string>
<string name="tunnel_summ_use_ssl">Usar SSL para conectar-se ao alvo</string>
<string name="tunnel_parameters">Parâmetros de túnel</string>
<string name="profile">Perfil</string>
<string name="profile_bulk">Conexão em massa (downloads/websites/BT)</string>
<string name="profile_interactive">Conexão interativa</string>
<string name="tunnel_summ_delay_connect">Ativar para conexões de pedidos/respostas</string>
<string name="access_control">Controle de acesso</string>
<string name="restricted_access">Acesso restrito</string>
<string name="disabled">Desativado</string>
<string name="whitelist">Lista de previlégios</string>
<string name="blacklist">Lista de proibições</string>
<string name="access_list">Lista de acessos</string>
<string name="reject_inproxies">Rejeitar proxies de entrada</string>
<string name="tunnel_summ_reject_inproxies">Permitir que apenas usuários da I2P se conectem</string>
<string name="unique_local">Local único</string>
<string name="tunnel_summ_unique_local">Usar IPs de host locais únicos para cada cliente</string>
<string name="multihome">Multihome</string>
<string name="tunnel_summ_multihome">Ativar otimizações de multihoming</string>
<string name="connections_per_minute">Conexões por minuto</string>
<string name="connections_per_hour">Conexões por hora</string>
<string name="connections_per_day">Conexões por dia</string>
<string name="total_connections_per_minute">Total de conexões por minuto</string>
<string name="total_connections_per_hour">Total de conexões por hora</string>
<string name="total_connections_per_day">Total de conexões por dia</string>
<string name="max_active_connections">Número máximo de conexões ativas</string>
<string name="num_per_minute">%s por minuto</string>
<string name="num_per_hour">%s por hora</string>
<string name="num_per_day">%s por dia</string>
<string name="unlimited">Ilimitado</string>
<string name="set_zero_for_unlimited">Especifique 0 para ilimitado</string>
<string name="reduce_quantity">Reduzir quantidade</string>
<string name="tunnel_summ_reduce_quantity">Reduzir quantidade de túneis quando ocioso</string>
<string name="idle_time">Tempo ocioso</string>
<string name="num_minutes">%s minutos</string>
<string name="reduced_tunnel_quantity">Quantidade de túneis reduzida</string>
<string name="close_tunnels">Fechar túneis quando ociosos</string>
<string name="new_keys_on_reopen">Novas chaves na reabertura</string>
<string name="new_keys_on_reopen_conflict_title">Desativar chaves persistentes?</string>
<string name="tunnel_summ_allow_ssl">Permitir SSL para endereços I2P</string>
<string name="jump_url_list">Pular lista de URLs</string>
<string name="proxy_auth">Autorização de proxy</string>
<string name="tunnel_summ_proxy_auth">É necessário um login para usar esse proxy</string>
<string name="username">Nome de usuário</string>
<string name="password">Senha</string>
<string name="outproxy_auth">Autorização de proxy de saída</string>
<string name="signature_type">Tipo de assinatura</string>
<string name="custom_options">Opções personalizadas</string>
<string name="no_messages">Sem mensagens</string>
<string name="no_error_messages">Nenhuma mensagem de erro</string>
<string name="log_entry">Entrada no log</string>
<string name="copy_logs">Copiar logs</string>
<string name="error_logs_copied_to_clipboard">Logs de erro copiados para a área de transferência</string>
<string name="logs_copied_to_clipboard">Logs copiados para a área de transferência</string>
<string name="label_browser_configuration">Configuração do navegador</string>
</resources>

View File

@ -108,7 +108,7 @@
<string name="notification_status_stopping_after_net">Sem ligação à rede, a parar o I2P</string>
<string name="notification_status_shutdown_cancelled">Cancelada a ordem para desligar</string>
<string name="notification_status_shutting_down">O I2P está a desligar</string>
<string name="notification_status_bw">Largura de banda: %1$s KBps down / %2$s KBps up</string>
<string name="notification_status_bw">Largura de banda: %1$sBps down / %2$sBps up</string>
<string name="notification_status_peers">Nós: %1$d ativos, %2$d conhecidos</string>
<string name="notification_status_expl">Túneis exploratórios: %1$d/%2$d</string>
<string name="notification_status_client">Túneis cliente: %1$d/%2$d</string>

View File

@ -2,44 +2,56 @@
<resources>
<string name="app_name">I2P</string>
<string name="desc_i2p_logo">Emblema I2P</string>
<string name="choose_language">Alegeți limba</string>
<string name="welcome_new_install">Bine ati venit la I2P! Aceasta aplicatie este un software ALPHA și nu oferă anonimatul puternic. Vă rugăm să citiți notele de lansare și licență.</string>
<string name="welcome_new_version">Noua versiune instalată. Vă rugăm să citiți notele de lansare. versiune:</string>
<string name="label_home">Controale și stare</string>
<string name="label_tunnels">Tuneluri</string>
<string name="label_status">Stare</string>
<string name="label_console">Consolă</string>
<string name="label_addresses">Adrese</string>
<string name="label_addressbook">Agendă</string>
<string name="label_i2ptunnel_client">Tuneluri clienti</string>
<string name="label_i2ptunnel_server">Tuneluri server</string>
<string name="label_logs">Jurnale</string>
<string name="label_error_logs">jurnalele de erori</string>
<string name="label_info_and_pages">Informații și pagini</string>
<string name="label_welcome_page">Pagina de start</string>
<string name="label_news">Noutăți</string>
<string name="label_peers_status">Parteneri</string>
<string name="label_release_notes">Note de publicare</string>
<string name="label_licenses">Licențe</string>
<string name="label_nonanon_info">Informații non-anonim</string>
<string name="label_browse">Navighează</string>
<string name="label_graphs">Grafice</string>
<string name="button_router_off">Apasari lung pentru a porni I2P</string>
<string name="button_router_on">I2P ruleaza (tineti apasat pentru a oprii)</string>
<string name="button_router_graceful">I2P se va închide în %s</string>
<string name="button_shutdown_now">Apăsat lung pentru a se opri acum</string>
<string name="button_cancel_graceful">Apăsare lungă pentru anularea închiderii</string>
<string name="no_internet">Nu este disponibilă nici o conexiune la internet</string>
<string name="hidden">Ascuns</string>
<string name="testing">Testare</string>
<string name="firewalled">Cu Firewall</string>
<string name="symmetric_nat">NAT simetric</string>
<!--Parameter is a time, e.g. 32s or 2m-->
<string name="net_status_error_private_tcp">Adrese TCP private</string>
<string name="net_status_warn_firewalled_udp_disabled">Cu Firewall și UDP dezactivat</string>
<string name="shared_clients">Clienți partajați</string>
<string name="active_peers">Parteneri activi</string>
<string name="known_peers">Parteneri cunoscuți</string>
<!--Character to indicate a client tunnel. Usually first letter of the word "client".-->
<string name="char_client_tunnel">C</string>
<!--Character to indicate a server tunnel. Usually first letter of the word "server".-->
<string name="char_server_tunnel">S</string>
<string name="no_tunnels_running">Nu rulează încă nici un tunul.</string>
<string name="download">Descărcare</string>
<string name="upload">Încărcare</string>
<string name="configure_browser_title">Configurați navigatorul web?</string>
<string name="configure_browser_for_i2p">Doriți să configurați un navigator web să vizualizați site-uri I2P? (Puteți face acest lucru mai târziu din meniul ajutor.)</string>
<string name="first_start_title">Felicitari pentru instalarea I2P!</string>
<string name="first_start_read">Cât timp așteptați, citiți notele de lansare și pagina de bun venit.</string>
<string name="first_start_faq_nonanon">Sau utilizați acest link ne-anonim dacă nu doriți să așteptați pentru tuneluri:</string>
<string name="drawer_open">Deschide nav</string>
<string name="drawer_close">Închide nav</string>
<string name="action_search">Cauta</string>
<string name="action_add">Adaugă</string>
<string name="action_edit">Editeaza</string>
<string name="action_delete">Sterge</string>
<string name="action_router_start">Porneste Router</string>
<string name="action_router_stop">Opreste Router</string>
<string name="action_i2ptunnel_start">Pornește tunelul</string>
<string name="action_i2ptunnel_stop">Oprește tunelul</string>
<string name="action_i2ptunnel_start_all">Pornește toate tunelurile</string>
@ -50,10 +62,21 @@
<string name="hint_search_addressbook">Caută agenda</string>
<string name="action_reload_subscriptions">Reâncarcă abonamentele</string>
<string name="router_not_running">Ruterul nu rulează.</string>
<string name="router_shutting_down">Ruterul este închis.</string>
<string name="configure_graphs">Configurează graficele</string>
<string name="graphs_not_ready">Graficele nu sunt gata, sau ruterul nu rulează. Încercați mai târziu.</string>
<string name="statistics">Statistici</string>
<string name="routers">Rutere</string>
<string name="countries">Regiuni</string>
<string name="country">Regiune</string>
<string name="transport">Transport</string>
<string name="versions">Versiuni</string>
<string name="version">Versiune</string>
<string name="netdb_routers_empty">Nu sunt rutere în NetDB.</string>
<string name="notification_status_bw">Lățime de bandă: %1$s KBps desc / %2$s KBps în</string>
<string name="notification_status_starting">I2P este pornit</string>
<string name="notification_status_restarting">I2P repornește</string>
<string name="notification_status_waiting">I2P așteaptă pentru o conexiune la rețea</string>
<string name="notification_status_running">I2P rulează</string>
<string name="notification_status_bw">Lățime de bandă: %1$sBps desc / %2$sBps în</string>
<string name="notification_status_peers">Parteneri: %1$d activi, %2$d cunoscuți</string>
<string name="menu_settings">Configurări</string>
<string name="settings_enable">Activează</string>
@ -74,7 +97,11 @@
<string name="settings_desc_sharePercent">Procentul de lățime de bandă pentru partajare (implicit = 80)</string>
<string name="settings_dialog_sharePercent">Procentul de lățime de bandă pentru partajare </string>
<string name="settings_desc_upnp">Deschide automat porturile firewall</string>
<string name="settings_label_logging">Autentificare</string>
<string name="settings_label_default_log_level">Nivel implicit jurnal</string>
<string name="settings_label_appearance">Aspect</string>
<string name="settings_label_language">Limbă</string>
<string name="settings_default">Implicit</string>
<string name="settings_label_advanced">Avansat</string>
<string name="settings_label_showStats">Statistici ruter</string>
<string name="settings_label_transports">Transporturi</string>
@ -147,7 +174,29 @@
<string name="i2ptunnel_wizard_desc_auto_start">Ar trebui ca tunelul să pornească automat când ruterul pornește?</string>
<string name="i2ptunnel_wizard_submit_confirm_message">Se creează tunelul?</string>
<string name="i2ptunnel_wizard_submit_confirm_button">Creare tunel</string>
<string name="i2ptunnel_view_target">Țintă</string>
<string name="i2ptunnel_view_autostart">Auto pornire</string>
<string name="name">Nume</string>
<string name="description">Descriere</string>
<string name="auto_start">Pornire automată</string>
<string name="tunnel_cat_ports">Porturi locale</string>
<string name="shared_client">Client partajat</string>
<string name="target_destination">Destinație țintă</string>
<string name="persistent_key">Cheie permanentă</string>
<string name="client_ssl">Client SSL</string>
<string name="irc">IRC</string>
<string name="enable_dcc">Activează DCC</string>
<string name="tunnel_summ_enable_dcc">Permite clienților IRC să utilizeze DCC</string>
<string name="profile">Profil</string>
<string name="restricted_access">Acces restricționat</string>
<string name="disabled">Dezactivat</string>
<string name="whitelist">Listă de excepții</string>
<string name="blacklist">Listă de blocare</string>
<string name="access_list">Listă de acces</string>
<string name="unlimited">Nelimitat</string>
<string name="username">Nume utilizator</string>
<string name="password">Parolă</string>
<string name="all">Tot</string>
<string name="copy_logs">Copiază jurnale</string>
<string name="i2p_android_error_logs">Jurnale eroare I2P Android</string>
<string name="i2p_android_logs">Jurnale I2P Android</string>

View File

@ -108,7 +108,7 @@
<string name="notification_status_stopping_after_net">Сеть отключена, остановка I2P</string>
<string name="notification_status_shutdown_cancelled">Выключение отменено</string>
<string name="notification_status_shutting_down">I2P выключается</string>
<string name="notification_status_bw">Пропускная способность: %1$s KBps прием / %2$s KBps отправка</string>
<string name="notification_status_bw">Пропускная способность: %1$sBps прием / %2$sBps отправка</string>
<string name="notification_status_peers">Узлы: %1$d активны, %2$d известны</string>
<string name="notification_status_expl">Исследовательские туннели: %1$d/%2$d</string>
<string name="notification_status_client">Туннели клиента: %1$d/%2$d</string>

View File

@ -109,7 +109,7 @@ Var god läs release kommentarerna och licens-information.</string>
<string name="notification_status_stopping_after_net">Nätverk nedkopplat, stannar I2P</string>
<string name="notification_status_shutdown_cancelled">Avstängning avbruten</string>
<string name="notification_status_shutting_down">I2P stänger ner</string>
<string name="notification_status_bw">Bandbredd:%1$s KBps ner / %2$s KBps upp</string>
<string name="notification_status_bw">Bandbredd:%1$sBps ner / %2$sBps upp</string>
<string name="notification_status_peers">Peers: %1$d aktiva, %2$d kända</string>
<string name="notification_status_expl">Utforskande tunnlar: %1$d/%2$d</string>
<string name="notification_status_client">Klienttunnlar:%1$d/%2$d</string>

View File

@ -1,55 +1,256 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="app_name">I2P</string>
<string name="desc_i2p_logo">I2P logosu</string>
<string name="choose_language">Dil seçin</string>
<string name="welcome_new_install">I2P dünyasına hoş geldiniz. Bu uygulama henüz ALPHA geliştirme düzeyindedir ve yaygın olarak herkese açılmamıştır. Lütfen notları ve lisans bilgilerini okuyun.</string>
<string name="welcome_new_version">Yeni sürüm yüklendi. Lütfen yayım notlarını okuyun. Sürüm:</string>
<string name="label_home">I2P Anasayfası</string>
<string name="label_tunnels">Tüneller</string>
<string name="label_status">Durum</string>
<string name="label_console">Konsol</string>
<string name="label_addresses">Adresler</string>
<string name="label_addressbook">Adres defteri</string>
<string name="label_i2ptunnel_client">İstemci tünelleri</string>
<string name="label_i2ptunnel_server">Sunucu tünelleri</string>
<string name="label_logs">Günlükler</string>
<string name="label_error_logs">Hata Günlükleri</string>
<string name="label_info_and_pages">Bilgiler ve sayfalar</string>
<string name="label_welcome_page">Karşılama Sayfası</string>
<string name="label_news">Haberler</string>
<string name="label_peers_status">Eşler</string>
<string name="label_release_notes">Yayım Notları</string>
<string name="label_licenses">Lisanslar</string>
<string name="label_nonanon_info">Herkese Açık Olmayan Bilgiler</string>
<string name="action_add">Ekleyin</string>
<string name="action_router_start">Yönelticiyi Başlatın</string>
<string name="action_router_stop">Yönelticiyi Durdurun</string>
<string name="action_reload">Yeniden Yükleyin</string>
<string name="label_browse">Gözat</string>
<string name="label_graphs">Çizelgeler</string>
<string name="button_router_off">I2P başlatmak için uzun basın</string>
<string name="button_router_on">I2P çalışıyor (durdurmak için uzun basın)</string>
<string name="button_router_graceful">I2P %s içinde kapatılacak</string>
<string name="button_shutdown_now">Şimdi durdurmak için uzun basın</string>
<string name="button_cancel_graceful">Kapatmayı engellemek için uzun basın</string>
<string name="no_internet">Kullanılabilecek bir İnternet bağlantısı yok</string>
<string name="hidden">Gizli</string>
<string name="testing">Sınanıyor</string>
<string name="firewalled">Güvenlik duvarlı</string>
<string name="symmetric_nat">Simetrik NAT</string>
<string name="net_status_error_i2cp">İstemci yöneticisi I2CP hatası - günlüklere bakın</string>
<!--Parameter is a time, e.g. 32s or 2m-->
<string name="net_status_error_skew">%s saat sapması</string>
<string name="net_status_error_unresolved_tcp">Çözümlenmemiş TCP adresi</string>
<string name="net_status_error_private_tcp">Özel TCP adresi</string>
<string name="net_status_warn_firewalled_inbound_tcp">Gelen TCP güvenlik duvarı etkinleştirilmiş </string>
<string name="net_status_warn_firewalled_floodfill">Güvenlik duvarlı ve akış korumalı</string>
<string name="net_status_info_disconnected">Bağlantı kesildi - ağ bağlantısını denetleyin</string>
<string name="net_status_error_udp_port">UPD kapısı kullanılıyor - ayarları değiştirip yeniden başlatın</string>
<string name="net_status_error_no_active_peers">Etkin eş yok, ağ bağlantısını ve güvenlik duvarını denetleyin</string>
<string name="net_status_error_udp_disabled_tcp_not_set">UDP devre dışı ve Gelen TCP sunucu/kapı ayarlanmamış</string>
<string name="net_status_warn_firewalled_udp_disabled">Güvenlik duvarı ve UDP devre dışı</string>
<string name="shared_clients">Paylaşılmış istemciler</string>
<string name="uptime">Çalışma süresi</string>
<string name="active_peers">Etkin eşler</string>
<string name="known_peers">Bilinen eşler</string>
<!--Character to indicate a client tunnel. Usually first letter of the word "client".-->
<string name="char_client_tunnel">İ</string>
<!--Character to indicate a server tunnel. Usually first letter of the word "server".-->
<string name="char_server_tunnel">S</string>
<string name="no_tunnels_running">Henüz çalışan bir tünel yok.</string>
<string name="download">İndirme</string>
<string name="upload">Yükleme</string>
<string name="configure_browser_title">Tarayıcı yapılandırılsın mı?</string>
<string name="configure_browser_for_i2p">I2P sitelerini görüntüleyecek bir tarayıcı ayarlamak ister misiniz? (bu işlemi daha sonra Yardım menüsünden yapabilirsiniz).</string>
<string name="first_start_title">Tebrikler, I2P yüklendi!</string>
<string name="first_start_welcome"><b>I2P Yazılımına Hoşgeldiniz</b> Lütfen I2P yüklenip eşleri bulana kadar <b>sabırlı olun</b>.</string>
<string name="first_start_read">Beklerken, lütfen sürüm notları ve hoş geldiniz sayfalarını okuyun.</string>
<string name="first_start_faq">İstemci tünelleri bulunduğunda, lütfen Sık Sorulan Sorular bölümüne <b>bakın</b>:</string>
<string name="first_start_faq_nonanon">Ya da tünelleri beklemek istemiyorsanız anonim olmayan şu bağlantıyı kullanın:</string>
<string name="first_start_irc">IRC istemcinizi <b>localhost:6668</b> adresine yönlendirip şuradan bize merhaba deyin:</string>
<string name="action_search">Arama</string>
<string name="action_add">Ekle</string>
<string name="action_edit">Düzenle</string>
<string name="action_delete">Sil</string>
<string name="action_i2ptunnel_start">Tüneli aç</string>
<string name="action_i2ptunnel_stop">Tüneli kapat</string>
<string name="action_i2ptunnel_start_all">Tüm tünelleri aç</string>
<string name="action_i2ptunnel_stop_all">Tüm tünelleri kapat</string>
<string name="action_i2ptunnel_restart_all">Tüm tünelleri yeniden aç</string>
<string name="action_reload">Yeniden Yükle</string>
<string name="action_refresh">Yenile</string>
<string name="hint_search_addressbook">Adres defterinde arama</string>
<string name="action_reload_subscriptions">Abonelikleri yeniden yükle</string>
<string name="news_last_updated">Haberler en son %s önce güncellendi</string>
<string name="news_last_checked">Haberler en son %s önce denetlendi</string>
<string name="news_updated">Haberler Güncellendi</string>
<string name="view_news">I2P yeniliklerini görmek için dokunun</string>
<string name="router_not_running">Yöneltici çalışmıyor.</string>
<string name="router_shutting_down">Yöneltici kapatılıyor.</string>
<string name="stats_not_ready">İstatistik yönetimi henüz hazır değil. Daha sonra yeniden deneyin.</string>
<string name="select_an_address">Bir adres seçin.</string>
<string name="no_graphs_configured">Henüz bir çizelge ayarlanmamış. Ayarlar menüsünden çizelgesi oluşturulacak istatistikleri seçebilirsiniz. Yapılacak değişiklikler 60 saniye sonra geçerli olur.</string>
<string name="configure_graphs">Çizelge ayarları</string>
<string name="graphs_not_ready">Çizelgeler henüz hazır değil. Daha sonra yeniden deneyin.</string>
<string name="statistics">İstatistikler</string>
<string name="routers">Yönelticiler</string>
<string name="leasesets">Kiralama Kümeleri</string>
<string name="countries">Ülkeler</string>
<string name="country">Ülke</string>
<string name="transport">Aktarım</string>
<string name="versions">Sürümler</string>
<string name="version">Sürüm</string>
<string name="count">Sayı</string>
<string name="tname_0">Gizli ya da başlatılıyor</string>
<string name="netdb_routers_empty">Ağ Veritabanınızda bir yöneltici bulunamadı.</string>
<string name="netdb_leases_empty">Ağ Veritabanınızda bir LeaseSets bulunamadı.</string>
<string name="notification_status_starting">I2P başlatılıyor</string>
<string name="notification_status_restarting">I2P yeniden başlatılıyor</string>
<string name="notification_status_waiting">I2P bir ağ bağlantısının kurulmasını bekliyor</string>
<string name="notification_status_starting_after_waiting">Ağ bağlantısı kuruldu, I2P başlatılıyor</string>
<string name="notification_status_running">I2P çalışıyor</string>
<string name="notification_status_client_ready">İstemci tünelleri hazır</string>
<string name="notification_status_client_down">İstemci tünelleri kapalı</string>
<string name="notification_status_graceful">I2P %s içinde durdurulacak</string>
<string name="notification_status_stopping">I2P durduruluyor</string>
<string name="notification_status_stopping_after_net">Ağ devre dışı bırakıldı, I2P durduruluyor</string>
<string name="notification_status_shutdown_cancelled">Kapatma iptal edildi</string>
<string name="notification_status_shutting_down">I2P kapatılıyor</string>
<string name="notification_status_bw">Bant genişliği: %1$sBps indirme / %2$sBps yükleme</string>
<string name="notification_status_peers">Eşler: %1$d etkin, %2$d bilinmeyen</string>
<string name="notification_status_expl">Keşif tünelleri: %1$d/%2$d</string>
<string name="notification_status_client">İstemci tünelleri: %1$d/%2$d</string>
<string name="menu_settings">Ayarlar</string>
<string name="settings_enable">Etkinleştirin</string>
<string name="settings_enable">Etkinleştir</string>
<string name="settings_desc_subscriptions">Abonelik İnternet Adresleri</string>
<string name="settings_label_bandwidth">Bant genişliği ve ağ</string>
<string name="settings_label_bandwidth_net">Bant genişliği ve ağ</string>
<string name="settings_label_startOnBoot">I2P Açılışta Başlatılsın</string>
<string name="settings_desc_startOnBoot">Android aygıtınız başlatıldığında I2P kendiliğinden bağlanır</string>
<string name="settings_label_bandwidth">Bant genişliği</string>
<string name="settings_label_bw_inbound">Geliş hızı</string>
<string name="settings_desc_bw_inbound">En fazla geliş hızı</string>
<string name="settings_desc_bw_inbound">En yüksek geliş hızı</string>
<string name="settings_label_bw_outbound">Gidiş hızı</string>
<string name="settings_desc_bw_outbound">En fazla gidiş hızı</string>
<string name="settings_desc_bw_outbound">En yüksek gidiş hızı</string>
<string name="settings_label_network"></string>
<string name="settings_label_hiddenMode">Katılım</string>
<string name="settings_desc_hiddenMode">Gizli kipi kapatın</string>
<string name="settings_desc_hiddenMode">Gizli kipi kapat</string>
<string name="settings_label_maxPartTunnels">Katılınacak en fazla tünel sayısı </string>
<string name="settings_desc_maxPartTunnels">Katılınacak en fazla tünel sayısı (varsayılan=20)</string>
<string name="settings_dialog_maxPartTunnels">Katılınacak en fazla tünel sayısı </string>
<string name="settings_label_sharePercent">Paylaşım yüzdei</string>
<string name="settings_desc_sharePercent">Paylaşılan bant genişliği yüzdesi (varsayılan=80)</string>
<string name="settings_label_sharePercent">Paylaşım yüzdesi</string>
<string name="settings_desc_sharePercent">Paylaşılacak bant genişliği yüzdesi (varsayılan=80)</string>
<string name="settings_dialog_sharePercent">Paylaşılacak bant genişliği yüzdesi</string>
<string name="settings_desc_upnp">Güvenlik duvarı kapıları kendiliğinden açılsın</string>
<string name="settings_label_logging">Günlükleme</string>
<string name="settings_label_default_log_level">Varsayılan günlük düzeyi</string>
<string name="settings_label_appearance">Görünüm</string>
<string name="settings_label_language">Dil</string>
<string name="settings_default">Varsayılan</string>
<string name="settings_label_advanced">Gelişmiş</string>
<string name="settings_label_showStats">Yöneltici istatistikleri</string>
<string name="settings_summ_showStats">Ana konsolda ayrıntılı istatistikler görüntülensin</string>
<string name="settings_label_transports">Aktarımlar</string>
<string name="settings_label_maxConns">En fazla bağlantı</string>
<string name="settings_label_i2cp">I2CP Arayüzü</string>
<string name="settings_desc_i2cp">7654. kapı dinlensin</string>
<string name="settings_label_exploratory_pool">Keşif havuzu</string>
<string name="settings_desc_exploratory_pool">Tunel ayarları</string>
<string name="settings_label_expl_inbound">Gelen tüneller</string>
<string name="settings_label_expl_outbound">Giden tüneller</string>
<string name="settings_label_expl_inbound">Gel tünelleri</string>
<string name="settings_label_expl_outbound">Gid tünelleri</string>
<string name="settings_label_expl_length">Uzunluk</string>
<string name="settings_summ_expl_length">%s sıçrama</string>
<string name="settings_desc_expl_length">Kullanılacak sıçrama sayısı</string>
<string name="settings_label_expl_lengthVariance">Sıçrama çeşitliliği</string>
<string name="settings_summ_expl_lengthVariance">%s</string>
<string name="settings_desc_expl_lengthVariance">Rastgele eklenecek sıçrama sayısı</string>
<string name="settings_label_expl_quantity">Nicelik</string>
<string name="settings_label_expl_quantity">Sayı</string>
<string name="settings_summ_expl_quantity">%s tünel</string>
<string name="settings_desc_expl_quantity">Tünel sayısı</string>
<string name="settings_label_expl_backupQuantity">Yedek niceliği</string>
<string name="settings_label_expl_backupQuantity">Yedek sayısı</string>
<string name="settings_summ_expl_backupQuantity">%s tünel</string>
<string name="settings_desc_expl_backupQuantity">Tünel yedeği sayısı</string>
<string name="settings_need_transport_enabled">En az bir aktarım etkinleştirilmiş olmalıdır</string>
<string name="settings_router_restart_required">Değişikliklerin etkili olması için I2P yeniden başlatılmalı</string>
<string name="menu_about">Hakkında</string>
<string name="about_version">Sürüm:</string>
<string name="about_project">Proje Web Sitesi:</string>
<string name="about_bugs">Hatalar ve Destek</string>
<string name="about_helpwanted">Yardımınız Gerekli!</string>
<string name="about_volunteer">Uygulamayı daha iyi duruma getirmek için yardımcı olmak ister misiniz? Android forumunda gönüllü olun:</string>
<string name="about_donate">Geliştirme ve denemeler için çeşitli Android aygıtları alabilmemiz için para ya da bitcoin bağışlamak ister misiniz:</string>
<string name="menu_help">Yardım</string>
<string name="general">Genel</string>
<string name="label_router">Herkese açık adresler</string>
<string name="label_private">Özel adresler</string>
<string name="addressbook_is_empty">Adres defteri boş</string>
<string name="addressbook_search_header">%s bulundu</string>
<string name="addressbook_add_wizard_k_name">Ad</string>
<string name="addressbook_add_wizard_k_destination">Hedef</string>
<string name="addressbook_add_wizard_desc_name">Ad</string>
<string name="addressbook_add_wizard_desc_destination">Hedefin B64 değerini buraya yapıştırın. Yüklü bir dosya yöneticiniz varsa, içinde B64 geçen bir metin dosyasını aratabilirsiniz.</string>
<string name="nsu_iae_illegal_char">\"%1$s\" sunucu adında %2$s geçersiz karakteri bulunuyor</string>
<string name="nsu_iae_cannot_start_with">Sunucu adı \"%s\" ile başlayamaz</string>
<string name="nsu_iae_cannot_end_with">Sunucu adı \"%s\" ile bitemez</string>
<string name="nsu_iae_cannot_contain">Sunucu adında \"%s\" bulunamaz</string>
<string name="nsu_iae_requires_conversion">\"%s\" sunucu adının ASCII karakterlerine dönüştürülmesi gerekiyor ancak bu Android sürümü için dönüştürme kitaplığı kullanılamıyor</string>
<string name="i2ptunnel_type_client">Standart istemci</string>
<string name="i2ptunnel_type_httpclient">HTTP istemcisi</string>
<string name="i2ptunnel_type_ircclient">IRC istemcisi</string>
<string name="i2ptunnel_type_server">Standart sunucusu</string>
<string name="i2ptunnel_type_httpserver">HTTP sunucusu</string>
<string name="i2ptunnel_type_sockstunnel">SOCKS 4/4a/5 vekil sunucusu</string>
<string name="i2ptunnel_type_socksirctunnel">SOCKS IRC vekil sunucusu</string>
<string name="i2ptunnel_type_connectclient">CONNECT/SSL/HTTPS vekil sunucusu</string>
<string name="i2ptunnel_type_ircserver">IRC sunucusu</string>
<string name="i2ptunnel_type_streamrclient">Streamr istemcisi</string>
<string name="i2ptunnel_type_streamrserver">Streamr sunucusu</string>
<string name="i2ptunnel_type_httpbidirserver">HTTP bidir</string>
<string name="install_recommended_app">Önerilen uygulama yüklensin</string>
<string name="app_needed_for_this_tunnel_type">Bu tüneli kullanmak için bir uygulama yüklemelisiniz. Önerilen uygulamayı yüklemek ister misiniz?</string>
<string name="i2ptunnel_not_initialized">Tüneller henüz hazır değil, lütfen iki dakika sonra yeniden yükleyin.</string>
<string name="no_configured_client_tunnels">Henüz ayarlanmış bir istemci tüneli yok.</string>
<string name="no_configured_server_tunnels">Henüz ayarlanmış bir sunucu tüneli yok.</string>
<string name="i2ptunnel_new_tunnel">Yeni Tünel</string>
<string name="i2ptunnel_msg_config_saved">Ayar değişiklikleri kaydedildi</string>
<string name="i2ptunnel_msg_config_save_failed">Ayarlar kaydedilemedi</string>
<string name="i2ptunnel_msg_tunnel_starting">Tünel açılıyor</string>
<string name="i2ptunnel_msg_tunnel_stopping">Tünel kapatılıyor</string>
<string name="i2ptunnel_delete_confirm_message">Tüneli sil</string>
<string name="i2ptunnel_delete_confirm_button">Tüneli sil</string>
<string name="i2ptunnel_wizard_k_client_server">İstemci ya da Sunucu</string>
<string name="i2ptunnel_wizard_v_client">İstemci tüneli</string>
<string name="i2ptunnel_wizard_v_server">Sunucu tüneli</string>
<string name="i2ptunnel_wizard_k_type">Tünel tipi</string>
<string name="i2ptunnel_wizard_k_name">Ad</string>
<string name="i2ptunnel_wizard_k_desc">ıklama</string>
<string name="i2ptunnel_wizard_k_dest">Hedef</string>
<string name="i2ptunnel_wizard_k_outproxies">Çıkış vekil sunucuları</string>
<string name="i2ptunnel_wizard_k_target_host">Hedef sunucu</string>
<string name="i2ptunnel_wizard_k_target_port">Hedef kapı</string>
<string name="i2ptunnel_wizard_k_reachable_on">Şuradan erişilebilir</string>
<string name="i2ptunnel_wizard_k_binding_port">Bağlanılacak kapı</string>
<string name="i2ptunnel_wizard_k_auto_start">Otomatik başlat</string>
<string name="next">Sonraki</string>
<string name="prev">Önceki</string>
<string name="finish">Gönder</string>
<string name="review">Gözden Geçir</string>
<string name="enabled">Etkin</string>
<string name="i2ptunnel_wizard_desc_name">Tünel listesinde görüntülenecek tünel adı.</string>
<string name="i2ptunnel_wizard_desc_desc">İsteğe bağlı olarak yazılabilecek tünel açıklaması.</string>
<string name="i2ptunnel_wizard_desc_dest">Bu istemci tünelinin bağlanacağı hizmetin I2P hedefini yazın. Tam Base 64 hedef anahtarı ya da adres defterinizden bir sunucu adı olabilir.</string>
<string name="i2ptunnel_wizard_desc_outproxies">Bu tünel tipi için bildiğiniz çıkış sunucuları varsa (HTTP ya da SOCKS) buraya virgül ile ayırarak yazın. </string>
<string name="i2ptunnel_wizard_desc_target_host">Çalıştırdığınız hizmetin IP adresi. Genellikle aynı bilgisayarda olduğundan otomatik olarak 127.0.0.1 yazılır.</string>
<string name="i2ptunnel_wizard_desc_target_port">Hizmetin bağlantıları kabul edeceği kapı numarası.</string>
<string name="i2ptunnel_wizard_desc_reachable_on">Bu seçenek bu tünele erişebilecek bilgisayar ve akıllı telefonları sınırlar.</string>
<string name="i2ptunnel_wizard_desc_binding_port">İstemci tüneline yerel olarak erişilebilecek kapı numarası. Aynı zaman HTTP bidir sunucu tünelinin istemci kapı numarasıdır.</string>
<string name="i2ptunnel_wizard_desc_auto_start">Yöneltici başlatıldığında tünel de başlatılsın mı?</string>
<string name="i2ptunnel_wizard_submit_confirm_message">Tünel oluşturulsun</string>
<string name="i2ptunnel_wizard_submit_confirm_button">Tüneli oluştur</string>
<string name="i2ptunnel_view_target">Hedef</string>
<string name="i2ptunnel_view_access_point">Erişim noktası</string>
<string name="i2ptunnel_view_autostart">Otomatik başlat</string>
<string name="edit_tunnel">Tüneli düzenle</string>
<string name="name">Ad</string>
<string name="description">ıklama</string>
<string name="auto_start">Otomatik başlat</string>
<string name="tunnel_summ_auto_start">Yöneltici başlatıldığında tünel de başlatılsın.</string>
<string name="tunnel_cat_ports">Yerel kapılar</string>
<string name="shared_client">Paylaşılmış istemci</string>
<string name="reachable_on">Şuradan erişilebilir</string>
<string name="outproxies">Çıkış vekil sunucuları</string>
<string name="target_host">Hedef sunucu</string>
<string name="target_port">Hedef kapı</string>
</resources>

View File

@ -25,11 +25,31 @@
<string name="button_router_graceful">I2P буде зупинено протягом %s</string>
<string name="button_shutdown_now">Утримуйте, щоб зупинити</string>
<string name="button_cancel_graceful">Утримуйте, щоб скасувати зупинку</string>
<string name="no_internet">Немає підключення до Інтернету</string>
<string name="hidden">Приховано</string>
<string name="testing">Тестування</string>
<string name="firewalled">Зафаерволено</string>
<string name="symmetric_nat">Симетричний NAT</string>
<string name="net_status_error_i2cp">Помилка клієнт менеджера i2cp - перевірити журнали</string>
<!--Parameter is a time, e.g. 32s or 2m-->
<string name="net_status_error_unresolved_tcp">Невирішена адреса TCP</string>
<string name="net_status_error_private_tcp">Приватна TCP адреса</string>
<string name="net_status_warn_firewalled_inbound_tcp">Зафаерволено з включеними вхідними TCP</string>
<string name="net_status_warn_firewalled_floodfill">перевірено фаєрволом та застосовано алгоритм \"заливки\" </string>
<string name="net_status_info_disconnected">Від’єднано, перевірте мережевий кабель</string>
<string name="net_status_error_udp_port">Використовується UDP порт - змініть в налаштуваннях та перезавантажте</string>
<string name="net_status_error_no_active_peers">Немає активних пірів - перевірте мережеве з\'єднання і файрвол</string>
<string name="net_status_error_udp_disabled_tcp_not_set">UDP вимкнено і вхідний TCP хост/порт не встановлено</string>
<string name="net_status_warn_firewalled_udp_disabled">перевірено фаєрволом з виключеним UDP </string>
<string name="shared_clients">Колективні клієнти</string>
<string name="uptime">Аптайм</string>
<string name="active_peers">Активні піри</string>
<string name="known_peers">Відомі піри</string>
<!--Character to indicate a client tunnel. Usually first letter of the word "client".-->
<!--Character to indicate a server tunnel. Usually first letter of the word "server".-->
<string name="no_tunnels_running">Нема жодного працюючого клієнта</string>
<string name="download">Завантажено</string>
<string name="upload">Вивантажено</string>
<string name="configure_browser_title">Налаштувати браузер?</string>
<string name="configure_browser_for_i2p">Бажаєте налаштувати браузер для перегляду I2P-сайтів? (Ви також можете зробити це пізніше через меню).</string>
<string name="first_start_title">Вітаємо! I2P встановлено.</string>
@ -84,7 +104,7 @@
<string name="notification_status_stopping_after_net">Немає з\'єднання з мережею, вимикаємо I2P</string>
<string name="notification_status_shutdown_cancelled">Вимикання було відмінено</string>
<string name="notification_status_shutting_down">Вимикаємо I2P</string>
<string name="notification_status_bw">Пропускна здатність: %1$s КБ/с прийом / %2$s КБ/с передача</string>
<string name="notification_status_bw">Пропускна здатність: %1$sБ/с прийом / %2$sБ/с передача</string>
<string name="notification_status_peers">Піри: %1$d активно, %2$d відомо</string>
<string name="notification_status_expl">Пошукові тунелі: %1$d/%2$d</string>
<string name="notification_status_client">Клієнтські тунелі: %1$d/%2$d</string>
@ -174,6 +194,7 @@
<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="no_configured_client_tunnels">Нема жодного налаштованого клієнтського тунеля.</string>
<string name="no_configured_server_tunnels">Нема жодного налаштованого серверного тунеля.</string>
@ -219,7 +240,12 @@
<string name="tunnel_summ_auto_start">Запускати тунель, коли запускається маршрутизатор.</string>
<string name="tunnel_cat_ports">Локальні порти</string>
<string name="shared_client">Колективний клієнт</string>
<string name="tunnel_summ_shared_client">Використовувати такі ж самі Призначення і тунелі як інші спільні клієнти</string>
<string name="target_destination">Ціль призначення</string>
<string name="persistent_key">Постійні ключі</string>
<string name="persistent_key_conflict_title">Виключити нові ключі при перевідкритті?</string>
<string name="persistent_key_conflict_msg">Ви не можете включити постійні ключі доки тунель налаштовується щоб згенерувати нові ключі після перезапуску. Чи хочете ви відключити нові ключі після перезапуску?</string>
<string name="tunnel_summ_persistent_key">Залишити це Призначення тунелю після перезапуску</string>
<string name="reachable_on">Доступний на</string>
<string name="outproxies">Вихідні проксі</string>
<string name="ssl_outproxies">Вихідні проксі SSL</string>

View File

@ -108,7 +108,7 @@
<string name="notification_status_stopping_after_net">网络已中断,正在停止 I2P</string>
<string name="notification_status_shutdown_cancelled">关闭已取消</string>
<string name="notification_status_shutting_down">I2P 正在关闭</string>
<string name="notification_status_bw">带宽:下行 %1$s KBps / 上行 %2$s KBps </string>
<string name="notification_status_bw">带宽:下行 %1$sBps / 上行 %2$sBps</string>
<string name="notification_status_peers">节点:%1$d 活动,%2$d 已知</string>
<string name="notification_status_expl">探索隧道:%1$d/%2$d</string>
<string name="notification_status_client">客户隧道:%1$d/%2$d</string>

View File

@ -90,22 +90,23 @@
<item>@string/label_i2ptunnel</item>
</string-array>
<string-array name="recommended_browsers">
<item>info.guardianproject.browser</item>
<item>acr.browser.lightning</item>
</string-array>
<string-array name="recommended_browser_labels">
<item>Orweb</item>
<item>Lightning</item>
</string-array>
<string-array name="supported_browsers">
<item>info.guardianproject.browser</item>
<item>org.mozilla.firefox</item>
</string-array>
<string-array name="supported_browser_labels">
<item>Orweb</item>
<item>Firefox</item>
</string-array>
<string-array name="unsupported_browsers">
<item>com.android.chrome</item>
<item>com.android.browser</item>
<item>com.sec.android.app.sbrowser</item>
<item>acr.browser.lightning</item>
<item>mobi.mgeek.TunnyBrowser</item>
<item>com.lastpass.lpandroid</item>
</string-array>

View File

@ -1,6 +1,7 @@
<resources>
<color name="primary">#673ab7</color><!-- Deep Purple 500 -->
<color name="primary_dark">#512da8</color><!-- Deep Purple 700 -->
<color name="primary_light">#9575cd</color><!-- Deep Purple 300 -->
<color name="accent">#ff6e40</color><!-- Deep Orange A200 -->
<color name="accent_dark">#ff3d00</color><!-- Deep Orange A400 -->

View File

@ -8,7 +8,7 @@
<bool name="DEFAULT_PERSISTENT_KEY">false</bool>
<!-- General advanced -->
<integer name="DEFAULT_TUNNEL_LENGTH">3</integer>
<integer name="DEFAULT_TUNNEL_LENGTH">2</integer>
<integer name="DEFAULT_TUNNEL_VARIANCE">0</integer>
<integer name="DEFAULT_TUNNEL_QUANTITY">2</integer>
<integer name="DEFAULT_TUNNEL_BACKUP_QUANTITY">0</integer>

View File

@ -99,6 +99,7 @@
<string name="router_not_running">The router is not running.</string>
<string name="router_shutting_down">The router is shutting down.</string>
<string name="stats_not_ready">The statistics manager is not ready yet. Try again later.</string>
<string name="select_an_address">Select an address.</string>
<string name="no_graphs_configured">No graphs have been configured. You can choose statistics to graph in the settings menu. Any changes will take effect after 60 seconds.</string>
<string name="configure_graphs">Configure graphs</string>
@ -142,7 +143,7 @@
<string name="notification_status_shutdown_cancelled">Shutdown cancelled</string>
<string name="notification_status_shutting_down">I2P is shutting down</string>
<string name="notification_status_text" translatable="false">%1$sBps ↓ / %2$sBps ↑</string>
<string name="notification_status_bw">Bandwidth: %1$s KBps down / %2$s KBps up</string>
<string name="notification_status_bw">Bandwidth: %1$sBps down / %2$sBps up</string>
<string name="notification_status_peers">Peers: %1$d active, %2$d known</string>
<string name="notification_status_expl">Exploratory tunnels: %1$d/%2$d</string>
<string name="notification_status_client">Client tunnels: %1$d/%2$d</string>

View File

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

View File

@ -26,7 +26,7 @@ android {
dependencies {
compile project(path: ':routerjars', configuration: 'client')
compile 'com.android.support:support-v4:22.2.0'
compile 'com.android.support:support-v4:23.0.1'
testCompile 'junit:junit:4.12'
testCompile 'org.mockito:mockito-core:1.9.5'
@ -34,7 +34,7 @@ dependencies {
dependencyVerification {
verify = [
'com.android.support:support-v4:7bb6e40a18774aa2595e4d8f9fe0ae14e61670f71a1279272fb0b79b8be71180',
'com.android.support:support-v4:5ddf1feda096c164d0dd299cc6786fde18a845ce47dbfe484ff27cce27e19638',
]
}

View File

@ -0,0 +1,7 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="yes">Igen</string>
<string name="no">Nem</string>
<string name="install_i2p_android">I2P Android telepítése?</string>
<string name="start_i2p_android">I2P Android indítása?</string>
</resources>

View File

@ -0,0 +1,9 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="yes">Tak</string>
<string name="no">Nie</string>
<string name="install_i2p_android">Zainstalować I2P Android?</string>
<string name="you_must_have_i2p_android">Musisz mieć zainstalowane oraz uruchomione I2P Android. Czy chiałbyś zaintalować je teraz?</string>
<string name="start_i2p_android">Uruchomić I2P Android?</string>
<string name="would_you_like_to_start_i2p_android">Wygląda na to, że I2P Android nie jest uruchomiony. Czy chcesz go włączyć?</string>
</resources>

View File

@ -0,0 +1,9 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="yes">Ja</string>
<string name="no">Nej</string>
<string name="install_i2p_android">Installera I2P Android?</string>
<string name="you_must_have_i2p_android">Du måste ha I2P Android istallerat och igång. Vill du installera I2P Android?</string>
<string name="start_i2p_android">Starta I2P Android?</string>
<string name="would_you_like_to_start_i2p_android">Det verkar som om I2P Android inte körs. Vill du starta I2P Android?</string>
</resources>

View File

@ -0,0 +1,9 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="yes">Evet</string>
<string name="no">Hayır</string>
<string name="install_i2p_android">I2P Android Yüklensin</string>
<string name="you_must_have_i2p_android">I2P Android yazılımı yüklenmiş ve çalışıyor olmalıdır. Yüklemek ister misiniz?</string>
<string name="start_i2p_android">I2P Android Başlatılsın</string>
<string name="would_you_like_to_start_i2p_android">I2P Android yazılımı çalışmıyor gibi görünüyor. Başlatmak ister misiniz?</string>
</resources>

View File

@ -13,5 +13,5 @@ POM_DEVELOPER_NAME=str4d
POM_DEVELOPER_EMAIL=str4d@i2pmail.org
ANDROID_BUILD_TARGET_SDK_VERSION=22
ANDROID_BUILD_TOOLS_VERSION=22.0.1
ANDROID_BUILD_SDK_VERSION=22
ANDROID_BUILD_TOOLS_VERSION=23.0.1
ANDROID_BUILD_SDK_VERSION=23

View File

@ -23,6 +23,7 @@ artifacts {
client file: file('libs/streaming.jar'), builtBy: buildClient
'default' file: file('libs/router.jar'), builtBy: buildRouter
'default' file: file('libs/newsxml.jar'), builtBy: buildRouter
'default' file: file('libs/i2ptunnel.jar'), builtBy: buildRouter
'default' file: file('libs/i2ptunnel-ui.jar'), builtBy: buildRouter
'default' file: file('libs/addressbook.jar'), builtBy: buildRouter

View File

@ -20,6 +20,7 @@
<available property="have.streaming" file="${i2plib}/streaming.jar" />
<available property="have.router" file="${i2plib}/router.jar" />
<available property="have.bob" file="${i2plib}/BOB.jar" />
<available property="have.newsxml" file="${i2pbase}/apps/routerconsole/java/build/newsxml.jar" />
<available property="have.i2ptunnel" file="${i2plib}/i2ptunnel-ui.jar" />
<available property="have.addressbook" file="${i2plib}/addressbook.jar" />
@ -32,6 +33,9 @@
<ant dir="${i2pbase}" inheritall="false" useNativeBasedir="true" target="buildRouter" />
</target>
<target name="buildNewsXMLJar" unless="have.newsxml">
<ant dir="${i2pbase}" inheritall="false" useNativeBasedir="true" target="buildNewsXMLJar" />
</target>
<target name="buildI2PTunnelJar" unless="have.i2ptunnel">
<ant dir="${i2pbase}" inheritall="false" useNativeBasedir="true" target="buildI2PTunnelJars" />
</target>
@ -61,12 +65,15 @@
</target>
<target name="buildrouter" depends="buildRouter, buildI2PTunnelJar, buildAddressbook, buildBOB">
<target name="buildrouter" depends="buildRouter, buildNewsXMLJar, buildI2PTunnelJar, buildAddressbook, buildBOB">
<mkdir dir="${jar.libs.dir}" />
<!-- router -->
<copy file="${i2plib}/router.jar" todir="${jar.libs.dir}" />
<!-- newsxml -->
<copy file="${i2pbase}/apps/routerconsole/java/build/newsxml.jar" todir="${jar.libs.dir}" />
<!-- i2ptunnel -->
<copy file="${i2plib}/i2ptunnel.jar" todir="${jar.libs.dir}" />
<copy file="${i2plib}/i2ptunnel-ui.jar" todir="${jar.libs.dir}" />