mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-12 02:39:05 +01:00
Compare commits
27 Commits
release-1.
...
release-1.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
841c31ebce | ||
|
|
d6810cf87f | ||
|
|
a8a02b9e45 | ||
|
|
6703be1c32 | ||
|
|
a44a68f231 | ||
|
|
4ac6baa23d | ||
|
|
4cde50b7f5 | ||
|
|
da40eca80b | ||
|
|
fa267d38af | ||
|
|
ba20fbeb47 | ||
|
|
196df05df9 | ||
|
|
44f07c8d76 | ||
|
|
d7f39af6d1 | ||
|
|
4f732c3997 | ||
|
|
74cfd313ab | ||
|
|
c089a099f0 | ||
|
|
98a0d09899 | ||
|
|
18c4195115 | ||
|
|
d4a9c41cf5 | ||
|
|
8bc28f99c1 | ||
|
|
1834146ad0 | ||
|
|
624e03a2c9 | ||
|
|
a24e0482c9 | ||
|
|
695b543ba9 | ||
|
|
75e910e1d9 | ||
|
|
8fc8333451 | ||
|
|
c2154c81f4 |
@@ -8,8 +8,8 @@ android {
|
||||
defaultConfig {
|
||||
minSdkVersion 14
|
||||
targetSdkVersion 26
|
||||
versionCode 10006
|
||||
versionName "1.0.6"
|
||||
versionCode 10009
|
||||
versionName "1.0.9"
|
||||
consumerProguardFiles 'proguard-rules.txt'
|
||||
}
|
||||
|
||||
|
||||
@@ -10,7 +10,6 @@ import android.content.pm.PackageManager.NameNotFoundException;
|
||||
import android.content.res.Resources;
|
||||
import android.net.ConnectivityManager;
|
||||
import android.net.NetworkInfo;
|
||||
import android.os.FileObserver;
|
||||
import android.os.PowerManager;
|
||||
|
||||
import net.freehaven.tor.control.EventHandler;
|
||||
@@ -34,8 +33,10 @@ import org.briarproject.bramble.api.plugin.duplex.DuplexTransportConnection;
|
||||
import org.briarproject.bramble.api.properties.TransportProperties;
|
||||
import org.briarproject.bramble.api.settings.Settings;
|
||||
import org.briarproject.bramble.api.settings.event.SettingsUpdatedEvent;
|
||||
import org.briarproject.bramble.api.system.Clock;
|
||||
import org.briarproject.bramble.api.system.LocationUtils;
|
||||
import org.briarproject.bramble.util.IoUtils;
|
||||
import org.briarproject.bramble.util.RenewableWakeLock;
|
||||
import org.briarproject.bramble.util.StringUtils;
|
||||
|
||||
import java.io.Closeable;
|
||||
@@ -55,7 +56,6 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Scanner;
|
||||
import java.util.concurrent.CountDownLatch;
|
||||
import java.util.concurrent.Executor;
|
||||
import java.util.concurrent.Future;
|
||||
import java.util.concurrent.ScheduledExecutorService;
|
||||
@@ -78,7 +78,6 @@ import static android.net.ConnectivityManager.TYPE_WIFI;
|
||||
import static android.os.Build.VERSION.SDK_INT;
|
||||
import static android.os.PowerManager.ACTION_DEVICE_IDLE_MODE_CHANGED;
|
||||
import static android.os.PowerManager.PARTIAL_WAKE_LOCK;
|
||||
import static java.util.concurrent.TimeUnit.MILLISECONDS;
|
||||
import static java.util.concurrent.TimeUnit.MINUTES;
|
||||
import static java.util.logging.Level.INFO;
|
||||
import static java.util.logging.Level.WARNING;
|
||||
@@ -102,8 +101,11 @@ class TorPlugin implements DuplexPlugin, EventHandler, EventListener {
|
||||
"CIRC", "ORCONN", "HS_DESC", "NOTICE", "WARN", "ERR"
|
||||
};
|
||||
private static final String OWNER = "__OwningControllerProcess";
|
||||
private static final int COOKIE_TIMEOUT = 3000; // Milliseconds
|
||||
private static final int COOKIE_TIMEOUT_MS = 3000;
|
||||
private static final int COOKIE_POLLING_INTERVAL_MS = 200;
|
||||
private static final Pattern ONION = Pattern.compile("[a-z2-7]{16}");
|
||||
// This tag may prevent Huawei's power manager from killing us
|
||||
private static final String WAKE_LOCK_TAG = "LocationManagerService";
|
||||
private static final Logger LOG =
|
||||
Logger.getLogger(TorPlugin.class.getName());
|
||||
|
||||
@@ -112,6 +114,7 @@ class TorPlugin implements DuplexPlugin, EventHandler, EventListener {
|
||||
private final Context appContext;
|
||||
private final LocationUtils locationUtils;
|
||||
private final SocketFactory torSocketFactory;
|
||||
private final Clock clock;
|
||||
private final Backoff backoff;
|
||||
private final DuplexPluginCallback callback;
|
||||
private final String architecture;
|
||||
@@ -119,7 +122,7 @@ class TorPlugin implements DuplexPlugin, EventHandler, EventListener {
|
||||
private final ConnectionStatus connectionStatus;
|
||||
private final File torDirectory, torFile, geoIpFile, configFile;
|
||||
private final File doneFile, cookieFile;
|
||||
private final PowerManager.WakeLock wakeLock;
|
||||
private final RenewableWakeLock wakeLock;
|
||||
private final AtomicReference<Future<?>> connectivityCheck =
|
||||
new AtomicReference<>();
|
||||
private final AtomicBoolean used = new AtomicBoolean(false);
|
||||
@@ -132,7 +135,7 @@ class TorPlugin implements DuplexPlugin, EventHandler, EventListener {
|
||||
|
||||
TorPlugin(Executor ioExecutor, ScheduledExecutorService scheduler,
|
||||
Context appContext, LocationUtils locationUtils,
|
||||
SocketFactory torSocketFactory, Backoff backoff,
|
||||
SocketFactory torSocketFactory, Clock clock, Backoff backoff,
|
||||
DuplexPluginCallback callback, String architecture,
|
||||
int maxLatency, int maxIdleTime) {
|
||||
this.ioExecutor = ioExecutor;
|
||||
@@ -140,6 +143,7 @@ class TorPlugin implements DuplexPlugin, EventHandler, EventListener {
|
||||
this.appContext = appContext;
|
||||
this.locationUtils = locationUtils;
|
||||
this.torSocketFactory = torSocketFactory;
|
||||
this.clock = clock;
|
||||
this.backoff = backoff;
|
||||
this.callback = callback;
|
||||
this.architecture = architecture;
|
||||
@@ -155,14 +159,13 @@ class TorPlugin implements DuplexPlugin, EventHandler, EventListener {
|
||||
configFile = new File(torDirectory, "torrc");
|
||||
doneFile = new File(torDirectory, "done");
|
||||
cookieFile = new File(torDirectory, ".tor/control_auth_cookie");
|
||||
Object o = appContext.getSystemService(POWER_SERVICE);
|
||||
PowerManager pm = (PowerManager) o;
|
||||
// This tag will prevent Huawei's powermanager from killing us.
|
||||
wakeLock = pm.newWakeLock(PARTIAL_WAKE_LOCK, "LocationManagerService");
|
||||
wakeLock.setReferenceCounted(false);
|
||||
// Don't execute more than one connection status check at a time
|
||||
connectionStatusExecutor = new PoliteExecutor("TorPlugin",
|
||||
ioExecutor, 1);
|
||||
PowerManager pm = (PowerManager)
|
||||
appContext.getSystemService(POWER_SERVICE);
|
||||
wakeLock = new RenewableWakeLock(pm, scheduler, PARTIAL_WAKE_LOCK,
|
||||
WAKE_LOCK_TAG, 1, MINUTES);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -185,18 +188,8 @@ class TorPlugin implements DuplexPlugin, EventHandler, EventListener {
|
||||
if (used.getAndSet(true)) throw new IllegalStateException();
|
||||
// Install or update the assets if necessary
|
||||
if (!assetsAreUpToDate()) installAssets();
|
||||
LOG.info("Starting Tor");
|
||||
// Watch for the auth cookie file being updated
|
||||
try {
|
||||
cookieFile.getParentFile().mkdirs();
|
||||
cookieFile.createNewFile();
|
||||
} catch (IOException e) {
|
||||
throw new PluginException(e);
|
||||
}
|
||||
CountDownLatch latch = new CountDownLatch(1);
|
||||
FileObserver obs = new WriteObserver(cookieFile, latch);
|
||||
obs.startWatching();
|
||||
// Start a new Tor process
|
||||
LOG.info("Starting Tor");
|
||||
String torPath = torFile.getAbsolutePath();
|
||||
String configPath = configFile.getAbsolutePath();
|
||||
String pid = String.valueOf(android.os.Process.myPid());
|
||||
@@ -235,11 +228,16 @@ class TorPlugin implements DuplexPlugin, EventHandler, EventListener {
|
||||
throw new PluginException();
|
||||
}
|
||||
// Wait for the auth cookie file to be created/updated
|
||||
if (!latch.await(COOKIE_TIMEOUT, MILLISECONDS)) {
|
||||
LOG.warning("Auth cookie not created");
|
||||
if (LOG.isLoggable(INFO)) listFiles(torDirectory);
|
||||
throw new PluginException();
|
||||
long start = clock.currentTimeMillis();
|
||||
while (cookieFile.length() < 32) {
|
||||
if (clock.currentTimeMillis() - start > COOKIE_TIMEOUT_MS) {
|
||||
LOG.warning("Auth cookie not created");
|
||||
if (LOG.isLoggable(INFO)) listFiles(torDirectory);
|
||||
throw new PluginException();
|
||||
}
|
||||
Thread.sleep(COOKIE_POLLING_INTERVAL_MS);
|
||||
}
|
||||
LOG.info("Auth cookie created");
|
||||
} catch (InterruptedException e) {
|
||||
LOG.warning("Interrupted while starting Tor");
|
||||
Thread.currentThread().interrupt();
|
||||
@@ -364,7 +362,7 @@ class TorPlugin implements DuplexPlugin, EventHandler, EventListener {
|
||||
File[] children = f.listFiles();
|
||||
if (children != null) for (File child : children) listFiles(child);
|
||||
} else {
|
||||
LOG.info(f.getAbsolutePath());
|
||||
LOG.info(f.getAbsolutePath() + " " + f.length());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -641,22 +639,6 @@ class TorPlugin implements DuplexPlugin, EventHandler, EventListener {
|
||||
LOG.info("Descriptor uploaded");
|
||||
}
|
||||
|
||||
private static class WriteObserver extends FileObserver {
|
||||
|
||||
private final CountDownLatch latch;
|
||||
|
||||
private WriteObserver(File file, CountDownLatch latch) {
|
||||
super(file.getAbsolutePath(), CLOSE_WRITE);
|
||||
this.latch = latch;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEvent(int event, @Nullable String path) {
|
||||
stopWatching();
|
||||
latch.countDown();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void eventOccurred(Event e) {
|
||||
if (e instanceof SettingsUpdatedEvent) {
|
||||
|
||||
@@ -12,6 +12,7 @@ import org.briarproject.bramble.api.plugin.TransportId;
|
||||
import org.briarproject.bramble.api.plugin.duplex.DuplexPlugin;
|
||||
import org.briarproject.bramble.api.plugin.duplex.DuplexPluginCallback;
|
||||
import org.briarproject.bramble.api.plugin.duplex.DuplexPluginFactory;
|
||||
import org.briarproject.bramble.api.system.Clock;
|
||||
import org.briarproject.bramble.api.system.LocationUtils;
|
||||
import org.briarproject.bramble.util.AndroidUtils;
|
||||
|
||||
@@ -42,11 +43,13 @@ public class TorPluginFactory implements DuplexPluginFactory {
|
||||
private final EventBus eventBus;
|
||||
private final SocketFactory torSocketFactory;
|
||||
private final BackoffFactory backoffFactory;
|
||||
private final Clock clock;
|
||||
|
||||
public TorPluginFactory(Executor ioExecutor,
|
||||
ScheduledExecutorService scheduler, Context appContext,
|
||||
LocationUtils locationUtils, EventBus eventBus,
|
||||
SocketFactory torSocketFactory, BackoffFactory backoffFactory) {
|
||||
SocketFactory torSocketFactory, BackoffFactory backoffFactory,
|
||||
Clock clock) {
|
||||
this.ioExecutor = ioExecutor;
|
||||
this.scheduler = scheduler;
|
||||
this.appContext = appContext;
|
||||
@@ -54,6 +57,7 @@ public class TorPluginFactory implements DuplexPluginFactory {
|
||||
this.eventBus = eventBus;
|
||||
this.torSocketFactory = torSocketFactory;
|
||||
this.backoffFactory = backoffFactory;
|
||||
this.clock = clock;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -90,7 +94,7 @@ public class TorPluginFactory implements DuplexPluginFactory {
|
||||
Backoff backoff = backoffFactory.createBackoff(MIN_POLLING_INTERVAL,
|
||||
MAX_POLLING_INTERVAL, BACKOFF_BASE);
|
||||
TorPlugin plugin = new TorPlugin(ioExecutor, scheduler, appContext,
|
||||
locationUtils, torSocketFactory, backoff, callback,
|
||||
locationUtils, torSocketFactory, clock, backoff, callback,
|
||||
architecture, MAX_LATENCY, MAX_IDLE_TIME);
|
||||
eventBus.addListener(plugin);
|
||||
return plugin;
|
||||
|
||||
@@ -0,0 +1,100 @@
|
||||
package org.briarproject.bramble.util;
|
||||
|
||||
import android.os.PowerManager;
|
||||
|
||||
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
||||
|
||||
import java.util.concurrent.ScheduledExecutorService;
|
||||
import java.util.concurrent.ScheduledFuture;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import javax.annotation.concurrent.ThreadSafe;
|
||||
|
||||
import static java.util.concurrent.TimeUnit.MILLISECONDS;
|
||||
import static java.util.logging.Level.INFO;
|
||||
|
||||
@ThreadSafe
|
||||
@NotNullByDefault
|
||||
public class RenewableWakeLock {
|
||||
|
||||
private static final Logger LOG =
|
||||
Logger.getLogger(RenewableWakeLock.class.getName());
|
||||
|
||||
/**
|
||||
* Automatically release the lock this many milliseconds after it's due
|
||||
* to have been replaced and released.
|
||||
*/
|
||||
private static final int SAFETY_MARGIN_MS = 10_000;
|
||||
|
||||
private final PowerManager powerManager;
|
||||
private final ScheduledExecutorService scheduler;
|
||||
private final int levelAndFlags;
|
||||
private final String tag;
|
||||
private final long durationMs;
|
||||
private final Runnable renewTask;
|
||||
|
||||
private final Object lock = new Object();
|
||||
@Nullable
|
||||
private PowerManager.WakeLock wakeLock; // Locking: lock
|
||||
@Nullable
|
||||
private ScheduledFuture future; // Locking: lock
|
||||
|
||||
public RenewableWakeLock(PowerManager powerManager,
|
||||
ScheduledExecutorService scheduler, int levelAndFlags, String tag,
|
||||
long duration, TimeUnit timeUnit) {
|
||||
this.powerManager = powerManager;
|
||||
this.scheduler = scheduler;
|
||||
this.levelAndFlags = levelAndFlags;
|
||||
this.tag = tag;
|
||||
durationMs = MILLISECONDS.convert(duration, timeUnit);
|
||||
renewTask = this::renew;
|
||||
}
|
||||
|
||||
public void acquire() {
|
||||
if (LOG.isLoggable(INFO)) LOG.info("Acquiring wake lock " + tag);
|
||||
synchronized (lock) {
|
||||
if (wakeLock != null) {
|
||||
LOG.info("Already acquired");
|
||||
return;
|
||||
}
|
||||
wakeLock = powerManager.newWakeLock(levelAndFlags, tag);
|
||||
wakeLock.setReferenceCounted(false);
|
||||
wakeLock.acquire(durationMs + SAFETY_MARGIN_MS);
|
||||
future = scheduler.schedule(renewTask, durationMs, MILLISECONDS);
|
||||
}
|
||||
}
|
||||
|
||||
private void renew() {
|
||||
if (LOG.isLoggable(INFO)) LOG.info("Renewing wake lock " + tag);
|
||||
synchronized (lock) {
|
||||
if (wakeLock == null) {
|
||||
LOG.info("Already released");
|
||||
return;
|
||||
}
|
||||
PowerManager.WakeLock oldWakeLock = wakeLock;
|
||||
wakeLock = powerManager.newWakeLock(levelAndFlags, tag);
|
||||
wakeLock.setReferenceCounted(false);
|
||||
wakeLock.acquire(durationMs + SAFETY_MARGIN_MS);
|
||||
oldWakeLock.release();
|
||||
future = scheduler.schedule(renewTask, durationMs, MILLISECONDS);
|
||||
}
|
||||
}
|
||||
|
||||
public void release() {
|
||||
if (LOG.isLoggable(INFO)) LOG.info("Releasing wake lock " + tag);
|
||||
synchronized (lock) {
|
||||
if (wakeLock == null) {
|
||||
LOG.info("Already released");
|
||||
return;
|
||||
}
|
||||
if (future == null) throw new AssertionError();
|
||||
future.cancel(false);
|
||||
future = null;
|
||||
wakeLock.release();
|
||||
wakeLock = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
1
briar-android/.gitignore
vendored
1
briar-android/.gitignore
vendored
@@ -4,3 +4,4 @@ build
|
||||
local.properties
|
||||
.settings
|
||||
src/main/assets/*.zip
|
||||
src/main/res/values-iw
|
||||
|
||||
@@ -238,15 +238,16 @@ android {
|
||||
defaultConfig {
|
||||
minSdkVersion 14
|
||||
targetSdkVersion 26
|
||||
versionCode 10006
|
||||
versionName "1.0.6"
|
||||
versionCode 10009
|
||||
versionName "1.0.9"
|
||||
applicationId "org.briarproject.briar.android"
|
||||
resValue "string", "app_package", "org.briarproject.briar.android"
|
||||
resValue "string", "app_name", "Briar"
|
||||
buildConfigField "String", "GitHash",
|
||||
"\"${getStdout(['git', 'rev-parse', '--short=7', 'HEAD'], 'No commit hash')}\""
|
||||
def now = (long) (System.currentTimeMillis() / 1000)
|
||||
buildConfigField "Long", "BuildTimestamp",
|
||||
"${getStdout(['git', 'log', '-n', '1', '--format=%ct'], 0)}000L"
|
||||
"${getStdout(['git', 'log', '-n', '1', '--format=%ct'], now)}000L"
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
@@ -284,3 +285,46 @@ android {
|
||||
warning 'ExtraTranslation'
|
||||
}
|
||||
}
|
||||
|
||||
task verifyTranslations {
|
||||
doLast {
|
||||
def file = "briar-android/src/main/res/values/arrays.xml"
|
||||
def arrays = new XmlParser().parse(file)
|
||||
def lc = arrays.children().find { it.@name == "pref_language_values" }
|
||||
def translations = []
|
||||
lc.children().each { value -> translations.add(value.text()) }
|
||||
|
||||
def folders = ["default", "en-US"]
|
||||
new File("briar-android/src/main/res").eachDir { dir ->
|
||||
if (dir.name.startsWith("values-") && !dir.name.endsWith("night")) {
|
||||
folders.add(dir.name.substring(7).replace("-r", "-"))
|
||||
}
|
||||
}
|
||||
folders.each { n ->
|
||||
if (!translations.remove(n) && n != 'iw') {
|
||||
throw new GradleException("Translation " + n + " is missing in $file")
|
||||
}
|
||||
}
|
||||
if (translations.size() != 0)
|
||||
throw new GradleException("Translations\n" + translations.join("\n")
|
||||
+ "\nhave no matching value folder")
|
||||
|
||||
// Some devices use iw instead of he for hebrew
|
||||
def hebrew_legacy = new File("briar-android/src/main/res/values-iw")
|
||||
def hebrew = new File("briar-android/src/main/res/values-he")
|
||||
// Copy values-he to values-iw
|
||||
if (hebrew.exists()) {
|
||||
hebrew_legacy.mkdir()
|
||||
copy {
|
||||
from 'src/main/res/values-he'
|
||||
into 'src/main/res/values-iw'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
project.afterEvaluate {
|
||||
preBuild.dependsOn.add(verifyTranslations)
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@ import org.briarproject.bramble.api.plugin.duplex.DuplexPluginFactory;
|
||||
import org.briarproject.bramble.api.plugin.simplex.SimplexPluginFactory;
|
||||
import org.briarproject.bramble.api.reporting.DevConfig;
|
||||
import org.briarproject.bramble.api.system.AndroidExecutor;
|
||||
import org.briarproject.bramble.api.system.Clock;
|
||||
import org.briarproject.bramble.api.system.LocationUtils;
|
||||
import org.briarproject.bramble.api.system.Scheduler;
|
||||
import org.briarproject.bramble.plugin.bluetooth.AndroidBluetoothPluginFactory;
|
||||
@@ -97,14 +98,15 @@ public class AppModule {
|
||||
@Scheduler ScheduledExecutorService scheduler,
|
||||
AndroidExecutor androidExecutor, SecureRandom random,
|
||||
SocketFactory torSocketFactory, BackoffFactory backoffFactory,
|
||||
Application app, LocationUtils locationUtils, EventBus eventBus) {
|
||||
Application app, LocationUtils locationUtils, EventBus eventBus,
|
||||
Clock clock) {
|
||||
Context appContext = app.getApplicationContext();
|
||||
DuplexPluginFactory bluetooth =
|
||||
new AndroidBluetoothPluginFactory(ioExecutor, androidExecutor,
|
||||
appContext, random, eventBus, backoffFactory);
|
||||
DuplexPluginFactory tor = new TorPluginFactory(ioExecutor, scheduler,
|
||||
appContext, locationUtils, eventBus,
|
||||
torSocketFactory, backoffFactory);
|
||||
appContext, locationUtils, eventBus, torSocketFactory,
|
||||
backoffFactory, clock);
|
||||
DuplexPluginFactory lan = new AndroidLanTcpPluginFactory(ioExecutor,
|
||||
scheduler, backoffFactory, appContext);
|
||||
Collection<DuplexPluginFactory> duplex = asList(bluetooth, tor, lan);
|
||||
|
||||
@@ -2,9 +2,12 @@ package org.briarproject.briar.android;
|
||||
|
||||
import android.app.Application;
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.res.Configuration;
|
||||
import android.os.StrictMode;
|
||||
import android.os.StrictMode.ThreadPolicy;
|
||||
import android.os.StrictMode.VmPolicy;
|
||||
import android.preference.PreferenceManager;
|
||||
|
||||
import org.acra.ACRA;
|
||||
import org.acra.ReportingInteractionMode;
|
||||
@@ -75,7 +78,12 @@ public class BriarApplicationImpl extends Application
|
||||
|
||||
@Override
|
||||
protected void attachBaseContext(Context base) {
|
||||
super.attachBaseContext(base);
|
||||
SharedPreferences prefs =
|
||||
PreferenceManager.getDefaultSharedPreferences(base);
|
||||
// Loading the language needs to be done here.
|
||||
Localizer.initialize(prefs);
|
||||
super.attachBaseContext(
|
||||
Localizer.getInstance().setLocale(base));
|
||||
ACRA.init(this);
|
||||
}
|
||||
|
||||
@@ -108,6 +116,12 @@ public class BriarApplicationImpl extends Application
|
||||
AndroidEagerSingletons.initEagerSingletons(applicationComponent);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConfigurationChanged(Configuration newConfig) {
|
||||
super.onConfigurationChanged(newConfig);
|
||||
Localizer.getInstance().setLocale(this);
|
||||
}
|
||||
|
||||
private void enableStrictMode() {
|
||||
ThreadPolicy.Builder threadPolicy = new ThreadPolicy.Builder();
|
||||
threadPolicy.detectAll();
|
||||
|
||||
@@ -168,6 +168,11 @@ public class BriarService extends Service {
|
||||
registerReceiver(receiver, filter);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void attachBaseContext(Context base) {
|
||||
super.attachBaseContext(Localizer.getInstance().setLocale(base));
|
||||
}
|
||||
|
||||
private void showStartupFailureNotification(StartResult result) {
|
||||
androidExecutor.runOnUiThread(() -> {
|
||||
NotificationCompat.Builder b = new NotificationCompat.Builder(
|
||||
|
||||
@@ -0,0 +1,79 @@
|
||||
package org.briarproject.briar.android;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.res.Configuration;
|
||||
import android.content.res.Resources;
|
||||
|
||||
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import static android.os.Build.VERSION.SDK_INT;
|
||||
import static org.briarproject.briar.android.settings.SettingsFragment.LANGUAGE;
|
||||
|
||||
@NotNullByDefault
|
||||
public class Localizer {
|
||||
|
||||
// Locking: class
|
||||
@Nullable
|
||||
private static Localizer INSTANCE;
|
||||
@Nullable
|
||||
private final Locale locale;
|
||||
|
||||
private Localizer(SharedPreferences sharedPreferences) {
|
||||
locale = getLocaleFromTag(
|
||||
sharedPreferences.getString(LANGUAGE, "default"));
|
||||
}
|
||||
|
||||
public static synchronized void initialize(SharedPreferences prefs) {
|
||||
if (INSTANCE == null)
|
||||
INSTANCE = new Localizer(prefs);
|
||||
}
|
||||
|
||||
public static synchronized Localizer getInstance() {
|
||||
if (INSTANCE == null)
|
||||
throw new IllegalStateException("Localizer not initialized");
|
||||
return INSTANCE;
|
||||
}
|
||||
|
||||
// Get Locale from BCP-47 tag
|
||||
@Nullable
|
||||
public static Locale getLocaleFromTag(String tag) {
|
||||
if (tag.equals("default"))
|
||||
return null;
|
||||
if (SDK_INT >= 21) {
|
||||
return Locale.forLanguageTag(tag);
|
||||
}
|
||||
if (tag.contains("-")) {
|
||||
String[] langArray = tag.split("-");
|
||||
return new Locale(langArray[0], langArray[1]);
|
||||
} else
|
||||
return new Locale(tag);
|
||||
}
|
||||
|
||||
public Context setLocale(Context context) {
|
||||
if (locale == null)
|
||||
return context;
|
||||
Resources res = context.getResources();
|
||||
Configuration conf = res.getConfiguration();
|
||||
Locale currentLocale;
|
||||
if (SDK_INT >= 24) {
|
||||
currentLocale = conf.getLocales().get(0);
|
||||
} else
|
||||
currentLocale = conf.locale;
|
||||
if (locale.equals(currentLocale))
|
||||
return context;
|
||||
Locale.setDefault(locale);
|
||||
if (SDK_INT >= 17) {
|
||||
conf.setLocale(locale);
|
||||
context.createConfigurationContext(conf);
|
||||
} else
|
||||
conf.locale = locale;
|
||||
//noinspection deprecation
|
||||
res.updateConfiguration(conf, res.getDisplayMetrics());
|
||||
return context;
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package org.briarproject.briar.android.activity;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.os.IBinder;
|
||||
import android.support.annotation.LayoutRes;
|
||||
@@ -18,6 +19,7 @@ import org.briarproject.briar.R;
|
||||
import org.briarproject.briar.android.AndroidComponent;
|
||||
import org.briarproject.briar.android.BriarApplication;
|
||||
import org.briarproject.briar.android.DestroyableContext;
|
||||
import org.briarproject.briar.android.Localizer;
|
||||
import org.briarproject.briar.android.controller.ActivityLifecycleController;
|
||||
import org.briarproject.briar.android.forum.ForumModule;
|
||||
import org.briarproject.briar.android.fragment.BaseFragment;
|
||||
@@ -84,6 +86,12 @@ public abstract class BaseActivity extends AppCompatActivity
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void attachBaseContext(Context base) {
|
||||
super.attachBaseContext(
|
||||
Localizer.getInstance().setLocale(base));
|
||||
}
|
||||
|
||||
public ActivityComponent getActivityComponent() {
|
||||
return activityComponent;
|
||||
}
|
||||
|
||||
@@ -42,6 +42,22 @@ public class BriefLogFormatter extends Formatter {
|
||||
tag = tag.substring(tag.lastIndexOf('.') + 1);
|
||||
sb.append(tag).append(": ");
|
||||
sb.append(record.getMessage());
|
||||
Throwable t = record.getThrown();
|
||||
if (t != null) {
|
||||
sb.append('\n');
|
||||
appendThrowable(sb, t);
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
private void appendThrowable(StringBuilder sb, Throwable t) {
|
||||
sb.append(t);
|
||||
for (StackTraceElement e : t.getStackTrace())
|
||||
sb.append("\n at ").append(e);
|
||||
Throwable cause = t.getCause();
|
||||
if (cause != null) {
|
||||
sb.append("\n Caused by: ");
|
||||
appendThrowable(sb, cause);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -68,6 +68,7 @@ public class NavDrawerActivity extends BriarActivity implements
|
||||
public static final String INTENT_GROUPS = "intent_groups";
|
||||
public static final String INTENT_FORUMS = "intent_forums";
|
||||
public static final String INTENT_BLOGS = "intent_blogs";
|
||||
public static final String INTENT_SIGN_OUT = "intent_sign_out";
|
||||
|
||||
private static final Logger LOG =
|
||||
Logger.getLogger(NavDrawerActivity.class.getName());
|
||||
@@ -99,6 +100,8 @@ public class NavDrawerActivity extends BriarActivity implements
|
||||
R.id.nav_btn_contacts);
|
||||
} else if (intent.getBooleanExtra(INTENT_BLOGS, false)) {
|
||||
startFragment(FeedFragment.newInstance(), R.id.nav_btn_blogs);
|
||||
} else if (intent.getBooleanExtra(INTENT_SIGN_OUT, false)) {
|
||||
signOut(false);
|
||||
}
|
||||
setIntent(null);
|
||||
}
|
||||
@@ -225,12 +228,12 @@ public class NavDrawerActivity extends BriarActivity implements
|
||||
finish();
|
||||
} else if (fm.getBackStackEntryCount() == 0
|
||||
&& fm.findFragmentByTag(ContactListFragment.TAG) == null) {
|
||||
/*
|
||||
* This makes sure that the first fragment (ContactListFragment) the
|
||||
* user sees is the same as the last fragment the user sees before
|
||||
* exiting. This models the typical Google navigation behaviour such
|
||||
* as in Gmail/Inbox.
|
||||
*/
|
||||
/*
|
||||
* This makes sure that the first fragment (ContactListFragment) the
|
||||
* user sees is the same as the last fragment the user sees before
|
||||
* exiting. This models the typical Google navigation behaviour such
|
||||
* as in Gmail/Inbox.
|
||||
*/
|
||||
startFragment(ContactListFragment.newInstance(),
|
||||
R.id.nav_btn_contacts);
|
||||
} else {
|
||||
|
||||
@@ -36,5 +36,4 @@ public class SettingsActivity extends BriarActivity {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package org.briarproject.briar.android.settings;
|
||||
|
||||
import android.annotation.TargetApi;
|
||||
import android.app.AlertDialog;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.media.Ringtone;
|
||||
@@ -8,6 +9,7 @@ import android.media.RingtoneManager;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.StringRes;
|
||||
import android.support.v4.text.TextUtilsCompat;
|
||||
import android.support.v7.preference.CheckBoxPreference;
|
||||
import android.support.v7.preference.ListPreference;
|
||||
import android.support.v7.preference.Preference;
|
||||
@@ -30,8 +32,13 @@ import org.briarproject.bramble.api.settings.event.SettingsUpdatedEvent;
|
||||
import org.briarproject.bramble.api.system.AndroidExecutor;
|
||||
import org.briarproject.bramble.util.StringUtils;
|
||||
import org.briarproject.briar.R;
|
||||
import org.briarproject.briar.android.Localizer;
|
||||
import org.briarproject.briar.android.navdrawer.NavDrawerActivity;
|
||||
import org.briarproject.briar.android.util.UserFeedback;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import javax.inject.Inject;
|
||||
@@ -50,6 +57,7 @@ import static android.provider.Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS;
|
||||
import static android.provider.Settings.EXTRA_APP_PACKAGE;
|
||||
import static android.provider.Settings.EXTRA_CHANNEL_ID;
|
||||
import static android.provider.Settings.System.DEFAULT_NOTIFICATION_URI;
|
||||
import static android.support.v4.view.ViewCompat.LAYOUT_DIRECTION_LTR;
|
||||
import static android.widget.Toast.LENGTH_SHORT;
|
||||
import static java.util.logging.Level.INFO;
|
||||
import static java.util.logging.Level.WARNING;
|
||||
@@ -58,6 +66,7 @@ import static org.briarproject.bramble.api.plugin.TorConstants.PREF_TOR_NETWORK;
|
||||
import static org.briarproject.bramble.api.plugin.TorConstants.PREF_TOR_NETWORK_ALWAYS;
|
||||
import static org.briarproject.briar.android.TestingConstants.IS_DEBUG_BUILD;
|
||||
import static org.briarproject.briar.android.activity.RequestCodes.REQUEST_RINGTONE;
|
||||
import static org.briarproject.briar.android.navdrawer.NavDrawerActivity.INTENT_SIGN_OUT;
|
||||
import static org.briarproject.briar.api.android.AndroidNotificationManager.BLOG_CHANNEL_ID;
|
||||
import static org.briarproject.briar.api.android.AndroidNotificationManager.CONTACT_CHANNEL_ID;
|
||||
import static org.briarproject.briar.api.android.AndroidNotificationManager.FORUM_CHANNEL_ID;
|
||||
@@ -80,11 +89,13 @@ public class SettingsFragment extends PreferenceFragmentCompat
|
||||
public static final String SETTINGS_NAMESPACE = "android-ui";
|
||||
public static final String BT_NAMESPACE = BluetoothConstants.ID.getString();
|
||||
public static final String TOR_NAMESPACE = TorConstants.ID.getString();
|
||||
public static final String LANGUAGE = "pref_key_language";
|
||||
|
||||
private static final Logger LOG =
|
||||
Logger.getLogger(SettingsFragment.class.getName());
|
||||
|
||||
private SettingsActivity listener;
|
||||
private ListPreference language;
|
||||
private ListPreference enableBluetooth;
|
||||
private ListPreference torNetwork;
|
||||
private CheckBoxPreference notifyPrivateMessages;
|
||||
@@ -119,6 +130,8 @@ public class SettingsFragment extends PreferenceFragmentCompat
|
||||
public void onCreatePreferences(Bundle bundle, String s) {
|
||||
addPreferencesFromResource(R.xml.settings);
|
||||
|
||||
language = (ListPreference) findPreference(LANGUAGE);
|
||||
setLanguageEntries();
|
||||
enableBluetooth = (ListPreference) findPreference("pref_key_bluetooth");
|
||||
torNetwork = (ListPreference) findPreference("pref_key_tor_network");
|
||||
notifyPrivateMessages = (CheckBoxPreference) findPreference(
|
||||
@@ -137,6 +150,7 @@ public class SettingsFragment extends PreferenceFragmentCompat
|
||||
|
||||
setSettingsEnabled(false);
|
||||
|
||||
language.setOnPreferenceChangeListener(this);
|
||||
enableBluetooth.setOnPreferenceChangeListener(this);
|
||||
torNetwork.setOnPreferenceChangeListener(this);
|
||||
if (SDK_INT >= 21) {
|
||||
@@ -180,6 +194,51 @@ public class SettingsFragment extends PreferenceFragmentCompat
|
||||
eventBus.removeListener(this);
|
||||
}
|
||||
|
||||
private void setLanguageEntries() {
|
||||
CharSequence[] tags = language.getEntryValues();
|
||||
List<CharSequence> entries = new ArrayList<>(tags.length);
|
||||
List<CharSequence> entryValues = new ArrayList<>(tags.length);
|
||||
for (CharSequence cs : tags) {
|
||||
String tag = cs.toString();
|
||||
if (tag.equals("default")) {
|
||||
entries.add(getString(R.string.pref_language_default));
|
||||
entryValues.add(tag);
|
||||
continue;
|
||||
}
|
||||
Locale locale = Localizer.getLocaleFromTag(tag);
|
||||
if (locale == null)
|
||||
throw new IllegalStateException();
|
||||
// Exclude RTL locales on API < 17, they won't be laid out correctly
|
||||
if (SDK_INT < 17 && !isLeftToRight(locale)) {
|
||||
if (LOG.isLoggable(INFO))
|
||||
LOG.info("Skipping RTL locale " + tag);
|
||||
continue;
|
||||
}
|
||||
String nativeName = locale.getDisplayName(locale);
|
||||
// Fallback to English if the name is unknown in both native and
|
||||
// current locale.
|
||||
if (nativeName.equals(tag)) {
|
||||
String tmp = locale.getDisplayLanguage(Locale.ENGLISH);
|
||||
if (!tmp.isEmpty() && !tmp.equals(nativeName))
|
||||
nativeName = tmp;
|
||||
}
|
||||
// Prefix with LRM marker to prevent any RTL direction
|
||||
entries.add("\u200E" + nativeName.substring(0, 1).toUpperCase()
|
||||
+ nativeName.substring(1));
|
||||
entryValues.add(tag);
|
||||
}
|
||||
language.setEntries(entries.toArray(new CharSequence[0]));
|
||||
language.setEntryValues(entryValues.toArray(new CharSequence[0]));
|
||||
}
|
||||
|
||||
private boolean isLeftToRight(Locale locale) {
|
||||
// TextUtilsCompat returns the wrong direction for Hebrew on some phones
|
||||
String language = locale.getLanguage();
|
||||
if (language.equals("iw") || language.equals("he")) return false;
|
||||
int direction = TextUtilsCompat.getLayoutDirectionFromLocale(locale);
|
||||
return direction == LAYOUT_DIRECTION_LTR;
|
||||
}
|
||||
|
||||
private void loadSettings() {
|
||||
listener.runOnDbThread(() -> {
|
||||
try {
|
||||
@@ -312,41 +371,65 @@ public class SettingsFragment extends PreferenceFragmentCompat
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onPreferenceChange(Preference preference, Object o) {
|
||||
if (preference == enableBluetooth) {
|
||||
boolean btSetting = Boolean.valueOf((String) o);
|
||||
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||
if (preference == language) {
|
||||
if (!language.getValue().equals(newValue))
|
||||
languageChanged((String) newValue);
|
||||
return false;
|
||||
} else if (preference == enableBluetooth) {
|
||||
boolean btSetting = Boolean.valueOf((String) newValue);
|
||||
storeBluetoothSettings(btSetting);
|
||||
} else if (preference == torNetwork) {
|
||||
int torSetting = Integer.valueOf((String) o);
|
||||
int torSetting = Integer.valueOf((String) newValue);
|
||||
storeTorSettings(torSetting);
|
||||
} else if (preference == notifyPrivateMessages) {
|
||||
Settings s = new Settings();
|
||||
s.putBoolean(PREF_NOTIFY_PRIVATE, (Boolean) o);
|
||||
s.putBoolean(PREF_NOTIFY_PRIVATE, (Boolean) newValue);
|
||||
storeSettings(s);
|
||||
} else if (preference == notifyGroupMessages) {
|
||||
Settings s = new Settings();
|
||||
s.putBoolean(PREF_NOTIFY_GROUP, (Boolean) o);
|
||||
s.putBoolean(PREF_NOTIFY_GROUP, (Boolean) newValue);
|
||||
storeSettings(s);
|
||||
} else if (preference == notifyForumPosts) {
|
||||
Settings s = new Settings();
|
||||
s.putBoolean(PREF_NOTIFY_FORUM, (Boolean) o);
|
||||
s.putBoolean(PREF_NOTIFY_FORUM, (Boolean) newValue);
|
||||
storeSettings(s);
|
||||
} else if (preference == notifyBlogPosts) {
|
||||
Settings s = new Settings();
|
||||
s.putBoolean(PREF_NOTIFY_BLOG, (Boolean) o);
|
||||
s.putBoolean(PREF_NOTIFY_BLOG, (Boolean) newValue);
|
||||
storeSettings(s);
|
||||
} else if (preference == notifyVibration) {
|
||||
Settings s = new Settings();
|
||||
s.putBoolean(PREF_NOTIFY_VIBRATION, (Boolean) o);
|
||||
s.putBoolean(PREF_NOTIFY_VIBRATION, (Boolean) newValue);
|
||||
storeSettings(s);
|
||||
} else if (preference == notifyLockscreen) {
|
||||
Settings s = new Settings();
|
||||
s.putBoolean(PREF_NOTIFY_LOCK_SCREEN, (Boolean) o);
|
||||
s.putBoolean(PREF_NOTIFY_LOCK_SCREEN, (Boolean) newValue);
|
||||
storeSettings(s);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private void languageChanged(String newValue) {
|
||||
AlertDialog.Builder builder =
|
||||
new AlertDialog.Builder(getActivity());
|
||||
builder.setTitle(R.string.pref_language_title);
|
||||
builder.setMessage(R.string.pref_language_changed);
|
||||
builder.setPositiveButton(R.string.sign_out_button,
|
||||
(dialogInterface, i) -> {
|
||||
language.setValue(newValue);
|
||||
Intent intent = new Intent(getContext(),
|
||||
NavDrawerActivity.class);
|
||||
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||
intent.putExtra(INTENT_SIGN_OUT, true);
|
||||
getActivity().startActivity(intent);
|
||||
getActivity().finish();
|
||||
});
|
||||
builder.setNegativeButton(R.string.cancel, null);
|
||||
builder.setCancelable(false);
|
||||
builder.show();
|
||||
}
|
||||
|
||||
private void storeTorSettings(int torSetting) {
|
||||
listener.runOnDbThread(() -> {
|
||||
try {
|
||||
|
||||
@@ -124,6 +124,7 @@
|
||||
<string name="blogs_rss_feeds_import_button">Importar</string>
|
||||
<string name="blogs_rss_feeds_manage_author">Autor:</string>
|
||||
<string name="blogs_rss_remove_feed_ok">Desaniciar</string>
|
||||
<!--Settings Display-->
|
||||
<!--Settings Network-->
|
||||
<string name="network_settings_title">Redes</string>
|
||||
<string name="tor_network_setting">Coneutar vía Tor</string>
|
||||
|
||||
@@ -249,6 +249,7 @@
|
||||
<string name="blogs_rss_remove_feed_ok">Премахване</string>
|
||||
<string name="blogs_rss_feeds_manage_delete_error">Емисията не можа да бъде изтрита!</string>
|
||||
<string name="blogs_rss_feeds_manage_error">Възникна проблем при зареждането на емисиите ви. Моля, опитайте пак по-късно.</string>
|
||||
<!--Settings Display-->
|
||||
<!--Settings Network-->
|
||||
<string name="network_settings_title">Мрежа</string>
|
||||
<string name="bluetooth_setting">Свързване чрез Bluetooth</string>
|
||||
|
||||
@@ -156,12 +156,15 @@
|
||||
<!--Blog Sharing-->
|
||||
<!--RSS Feeds-->
|
||||
<string name="blogs_rss_remove_feed_ok">Dilemel</string>
|
||||
<!--Settings Display-->
|
||||
<!--Settings Network-->
|
||||
<!--Settings Security and Panic-->
|
||||
<string name="security_settings_title">Surentezh</string>
|
||||
<string name="change_password">Cheñch ar ger-tremen</string>
|
||||
<string name="panic_app_setting_none">Hini ebet</string>
|
||||
<string name="lock_setting_title">Digevreañ</string>
|
||||
<!--Settings Notifications-->
|
||||
<string name="notify_sound_setting_disabled">Hini ebet</string>
|
||||
<!--Settings Feedback-->
|
||||
<!--Link Warning-->
|
||||
<!--Crash Reporter-->
|
||||
|
||||
@@ -19,13 +19,13 @@
|
||||
<string name="create_account_button">Crea el compte</string>
|
||||
<string name="more_info">Més informació</string>
|
||||
<string name="don_t_ask_again">No tornis a preguntar-ho</string>
|
||||
<string name="setup_huawei_text">Feu clic al botó següent i assegureu-vos de que Briar està protegit a la pantalla «Aplicacions protegides».</string>
|
||||
<string name="setup_huawei_text">Feu un toc sobre el botó següent i assegureu-vos de que Briar consta com a protegit a la pantalla «Aplicacions protegides».</string>
|
||||
<string name="setup_huawei_button">Protegeix Briar</string>
|
||||
<string name="setup_huawei_help">Si no afegiu Briar a la llista d\'aplicacions protegides, s\'evitarà que Briar s\'executi en segon pla.</string>
|
||||
<string name="warning_dozed">%s no s\'ha pogut executar en segon pla</string>
|
||||
<!--Login-->
|
||||
<string name="enter_password">Escriviu la vostra contrasenya:</string>
|
||||
<string name="try_again">La contrasenya és incorrecta, torni a escriure-la</string>
|
||||
<string name="try_again">La contrasenya és incorrecta, torneu a escriure-la</string>
|
||||
<string name="sign_in_button">Inicia la sessió</string>
|
||||
<string name="forgotten_password">No recordo la contrasenya</string>
|
||||
<string name="dialog_title_lost_password">Contrasenya perduda</string>
|
||||
@@ -33,16 +33,16 @@
|
||||
<string name="startup_failed_notification_title">Briar no s\'ha pogut iniciar</string>
|
||||
<string name="startup_failed_notification_text">Feu un toc per obtenir més informació.</string>
|
||||
<string name="startup_failed_activity_title">Error iniciant Briar</string>
|
||||
<string name="startup_failed_db_error">Per alguna raó, la base de dades de Briar s\'ha corromput i no es pot adobar. El vostre compte, les dades i els contactes s\'han perdut. Malauradament, heu de reinstal·lar Briar o bé crear un nou compte triant l\'opció \"No recordo la contrasenya\" quan se us demani la contrasenya.</string>
|
||||
<string name="startup_failed_data_too_old_error">El vostre compte va ser creat amb una versió antiga de Briar i no es pot obrir amb la versió actual. O bé reinstal·leu la versió antiga o bé creeu un nou compte triant l\'opció \"No recordo la contrasenya\" quan se us demana la contrasenya.</string>
|
||||
<string name="startup_failed_db_error">Per alguna raó, la base de dades de Briar s\'ha corromput i no es pot adobar. El vostre compte, les dades i els contactes s\'han perdut. Malauradament, heu de reinstal·lar Briar o bé crear un nou compte triant l\'opció «No recordo la contrasenya» quan se us demani la contrasenya.</string>
|
||||
<string name="startup_failed_data_too_old_error">El vostre compte fou creat amb una versió antiga de Briar i no es pot obrir amb la versió actual. O bé reinstal·leu la versió antiga o bé creeu un nou compte triant l\'opció «No recordo la contrasenya» quan se us demani la contrasenya.</string>
|
||||
<string name="startup_failed_data_too_new_error">Aquesta versió de Briar és massa antiga. Actualitzeu Briar a la darrera versió i torneu a provar-ho.</string>
|
||||
<string name="startup_failed_service_error">Briar no ha pogut engegar un connector imprescindible. La reinstal·lació de Briar acostuma a resoldre aquest problema. Tingueu en compte que si reinstal·leu, perdreu el vostre compte i les dades associades doncs Briar no usa servidors centrals per desar-les.</string>
|
||||
<plurals name="expiry_warning">
|
||||
<item quantity="one">Aquesta és una versió de prova de Briar. El vostre compte expira en %d dia i no es pot renovar.</item>
|
||||
<item quantity="other">Aquesta és una versió de prova de Briar. El vostre compte expirarà en %d dies i no es pot renovar.</item>
|
||||
<item quantity="other">Aquesta és una versió de prova de Briar. El vostre compte caducarà en %d dies i no es podrà renovar.</item>
|
||||
</plurals>
|
||||
<string name="expiry_update">S\'ha ampliat la data de venciment de la prova. El vostre compte caducarà ara en %d dies.</string>
|
||||
<string name="expiry_date_reached">Aquest programa ha caducat.\nGràcies per haver-lo provat!</string>
|
||||
<string name="expiry_update">S\'ha allargat la data de caducitat d\'aquesta versió de test de Briar. Ara el vostre compte caducarà d\'aquí a %d dies.</string>
|
||||
<string name="expiry_date_reached">Aquesta versió de Briar ha caducat.\nGràcies per haver-lo provat!</string>
|
||||
<string name="download_briar">Per continuar fent servir Briar, descarregueu-vos la versió 1.0.</string>
|
||||
<string name="create_new_account">Haureu de crear un compte nou, però podeu utilitzar el mateix sobrenom.</string>
|
||||
<string name="download_briar_button">Descarrega Briar 1.0</string>
|
||||
@@ -74,11 +74,11 @@
|
||||
</plurals>
|
||||
<plurals name="forum_post_notification_text">
|
||||
<item quantity="one"> Un nou missatge del fòrum.</item>
|
||||
<item quantity="other">%d missatges nous al fòrum.</item>
|
||||
<item quantity="other">%d apunts nous al fòrum.</item>
|
||||
</plurals>
|
||||
<plurals name="blog_post_notification_text">
|
||||
<item quantity="one">Una nova publicacions al bloc.</item>
|
||||
<item quantity="other">%d publicacions noves al blog.</item>
|
||||
<item quantity="other">%d apunts nous al blog.</item>
|
||||
</plurals>
|
||||
<!--Misc-->
|
||||
<string name="now">Ara</string>
|
||||
@@ -89,7 +89,7 @@
|
||||
<string name="got_it">D\'acord</string>
|
||||
<string name="delete">Suprimeix</string>
|
||||
<string name="accept">Accepta</string>
|
||||
<string name="decline">Rebutja</string>
|
||||
<string name="decline">Refusa</string>
|
||||
<string name="options">Opcions</string>
|
||||
<string name="online">En línia</string>
|
||||
<string name="offline">Fora de línia</string>
|
||||
@@ -104,23 +104,23 @@
|
||||
<string name="help">Ajuda</string>
|
||||
<string name="sorry">Ens sap greu</string>
|
||||
<!--Contacts and Private Conversations-->
|
||||
<string name="no_contacts">No hi ha cap contacte\n\nPulseu l\'icona + per afegir un contacte</string>
|
||||
<string name="no_contacts">No hi ha cap contacte\n\nFeu un toc sobre la icona + per afegir un nou contacte</string>
|
||||
<string name="date_no_private_messages">Sense missatges.</string>
|
||||
<string name="no_private_messages">No hi ha cap missatge</string>
|
||||
<string name="message_hint">Escriviu un missatge</string>
|
||||
<string name="delete_contact">Suprimeix el contacte</string>
|
||||
<string name="delete_contact">Suprimeix aquest contacte</string>
|
||||
<string name="dialog_title_delete_contact">Confirmeu la supressió del contacte</string>
|
||||
<string name="dialog_message_delete_contact">Esteu convençut de suprimir aquest contacte i tots els missatges que us heu intercanviat?</string>
|
||||
<string name="dialog_message_delete_contact">Segur que voleu suprimir aquest contacte i tots els missatges que us heu intercanviat?</string>
|
||||
<string name="contact_deleted_toast">S\'ha suprimit el contacte</string>
|
||||
<!--Adding Contacts-->
|
||||
<string name="add_contact_title">Afegeix un contacte</string>
|
||||
<string name="add_contact_title">Afegiu un contacte</string>
|
||||
<string name="face_to_face">Heu de coincidir en el mateix lloc amb la persona que voleu afegir com a contacte.\n\nD\'aquesta manera evitareu que algú suplanti les vostres identitats o pugui llegir els vostres missatges en el futur.</string>
|
||||
<string name="continue_button">Continua</string>
|
||||
<string name="connection_failed">La connexió ha fallat</string>
|
||||
<string name="try_again_button">Torna-ho a provar</string>
|
||||
<string name="waiting_for_contact_to_scan">Esperant que el vostre contacte escanegi i es connecti\u2026</string>
|
||||
<string name="exchanging_contact_details">Intercanviant els detalls del contacte\u2026</string>
|
||||
<string name="contact_added_toast">Contacte afegit: %s</string>
|
||||
<string name="contact_added_toast">S\'ha afegit el contacte %s</string>
|
||||
<string name="contact_already_exists">El contacte %s ja existia</string>
|
||||
<string name="contact_exchange_failed">L\'intercanvi de contactes ha fallat</string>
|
||||
<string name="qr_code_invalid">El codi QR és invàlid</string>
|
||||
@@ -128,129 +128,129 @@
|
||||
<string name="camera_error">Error de la càmera</string>
|
||||
<string name="connecting_to_device">Connectant-se al dispositiu\u2026</string>
|
||||
<string name="authenticating_with_device">Autenticant-se amb el dispositiu\u2026</string>
|
||||
<string name="connection_aborted_local">S\'ha avortat la connexió! Això podria significar que algú intenta interferir amb la vostra connexió</string>
|
||||
<string name="connection_aborted_remote">El vostre contacte ha avortat la connexió! Això podria significar que algú està provant d\'interferir la vostra connexió</string>
|
||||
<string name="connection_aborted_local">S\'ha avortat la connexió! Podria ser que algú estigués provant d\'interferir la vostra connexió</string>
|
||||
<string name="connection_aborted_remote">El vostre contacte ha avortat la connexió! Podria ser que algú estigués provant d\'interferir la vostra connexió</string>
|
||||
<!--Introductions-->
|
||||
<string name="introduction_onboarding_title">Introdueix els teus contactes</string>
|
||||
<string name="introduction_onboarding_text">Pots presentar els teus contactes entre si, de manera que no necessiten trobar-se en persona per a donar-se d\'alta com a contactes a Briar.</string>
|
||||
<string name="introduction_activity_title">Seleccionar contacte</string>
|
||||
<string name="introduction_not_possible">Ja teniu una introducció en progrés amb aquests contactes. Permeteu que això finalitzi primer. Si vostè o els vostres contactes poques vegades són en línia, això pot trigar un temps.</string>
|
||||
<string name="introduction_message_title">Introduir contacte</string>
|
||||
<string name="introduction_message_hint">Afegir un missatge (opcional)</string>
|
||||
<string name="introduction_button">Presentar contactes entre si</string>
|
||||
<string name="introduction_sent">S\'ha enviat la teva presentació.</string>
|
||||
<string name="introduction_error">Hi ha hagut un error en fer la presentació de contactes.</string>
|
||||
<string name="introduction_onboarding_title">Presenteu als vostres contactes</string>
|
||||
<string name="introduction_onboarding_text">Podeu presentar als vostres contactes entre si, de manera que no necessitin trobar-se en persona per a relacionar-se a través de Briar.</string>
|
||||
<string name="introduction_activity_title">Trieu un contacte</string>
|
||||
<string name="introduction_not_possible">Ja teniu una presentació en marxa entre aquests contactes. Si us plau, primer deixeu que aquesta presentació acabi. Si vós o els contactes presentats sovint esteu desconnectats, la presentació pot trigar temps.</string>
|
||||
<string name="introduction_message_title">Presentació de contactes</string>
|
||||
<string name="introduction_message_hint">Afegiu una nota (opcional)</string>
|
||||
<string name="introduction_button">Presenta els contactes</string>
|
||||
<string name="introduction_sent">S\'ha enviat la vostra presentació.</string>
|
||||
<string name="introduction_error">Hi ha hagut un error en presentar els contactes.</string>
|
||||
<string name="introduction_response_error">Error en respondre a la presentació</string>
|
||||
<string name="introduction_request_sent">Heu demanat que introduïu %1$s a %2$s.</string>
|
||||
<string name="introduction_request_received">%1$s ha demanat que us presenteu a %2$s. Voleu afegir a%2$s a la vostra llista de contactes?</string>
|
||||
<string name="introduction_request_exists_received">%1$s ha demanat que us presenteu a %2$s, però %2$s ja està a la vostra llista de contactes. Com que %1$s no sap això, encara podeu respondre:</string>
|
||||
<string name="introduction_request_answered_received">%1$s ha demanat que us presenteu a %2$s.</string>
|
||||
<string name="introduction_response_accepted_sent">Has acceptat la presentació amb el contacte %1$s.</string>
|
||||
<string name="introduction_response_accepted_sent_info">Abans que %1$s s\'afegeixi als vostres contactes, també heu d\'acceptar la introducció. Això pot trigar un temps.</string>
|
||||
<string name="introduction_response_declined_sent">Heu rebutjat la presentació a %1$s.</string>
|
||||
<string name="introduction_response_accepted_received">%1$s va acceptar la presentació de %2$s.</string>
|
||||
<string name="introduction_response_declined_received">%1$s va rebutjar la presentació a %2$s.</string>
|
||||
<string name="introduction_response_declined_received_by_introducee">%1$s diu que %2$s va rebutjar la presentació.</string>
|
||||
<string name="introduction_request_sent">Heu demanat fer les presentacions per a que %1$s i %2$s es coneguin.</string>
|
||||
<string name="introduction_request_received">%1$s us vol presentar a %2$s. Voleu afegir a%2$s a la vostra llista de contactes?</string>
|
||||
<string name="introduction_request_exists_received">%1$s us vol presentar a %2$s, però ja teniu a %2$s a la llista de contactes. Atès que segurament %1$s no ho sabia, encara el podeu contestar:</string>
|
||||
<string name="introduction_request_answered_received">%1$s us vol presentar a %2$s.</string>
|
||||
<string name="introduction_response_accepted_sent">Heu acceptat conèixer a %1$s.</string>
|
||||
<string name="introduction_response_accepted_sent_info">Quan %1$s també hagi acceptat la presentació, s\'afegirà als vostres contactes. Això pot trigar un temps.</string>
|
||||
<string name="introduction_response_declined_sent">Heu refusat conèixer a %1$s.</string>
|
||||
<string name="introduction_response_accepted_received">%1$s ha acceptat conèixer a %2$s.</string>
|
||||
<string name="introduction_response_declined_received">%1$s ha refusat conèixer a %2$s.</string>
|
||||
<string name="introduction_response_declined_received_by_introducee">%1$s diu que %2$s ha refusat conèixer-lo.</string>
|
||||
<plurals name="introduction_notification_text">
|
||||
<item quantity="one">S\'ha afegit un nou contacte.</item>
|
||||
<item quantity="other">S\'ha afegit %d nous contactes.</item>
|
||||
<item quantity="other">S\'han afegit %d nous contactes.</item>
|
||||
</plurals>
|
||||
<!--Private Groups-->
|
||||
<string name="groups_list_empty">No hi ha grups\n\nApreta l\'icona de + per crear un grup, o demana als teus contactes de compartir els seus grups amb tu</string>
|
||||
<string name="groups_created_by">Creat per 1%s</string>
|
||||
<string name="groups_list_empty">No hi ha cap grup\n\nFeu un toc sobre la icona + per crear un nou grup, o demaneu als vostres contactes que comparteixin els seus grups amb vós.</string>
|
||||
<string name="groups_created_by">Creat per %s</string>
|
||||
<plurals name="messages">
|
||||
<item quantity="one">1%d missatge</item>
|
||||
<item quantity="other">1%d missatges</item>
|
||||
<item quantity="other">%d missatges</item>
|
||||
</plurals>
|
||||
<string name="groups_group_is_empty">Aquest grup està buit.</string>
|
||||
<string name="groups_group_is_dissolved">Aquest grup s\'ha dissolt.</string>
|
||||
<string name="groups_remove">Suprimeix</string>
|
||||
<string name="groups_create_group_title">Crea un Grup Privat</string>
|
||||
<string name="groups_create_group_button">Crea un Grup</string>
|
||||
<string name="groups_create_group_title">Creeu un grup privat</string>
|
||||
<string name="groups_create_group_button">Crea el grup</string>
|
||||
<string name="groups_create_group_invitation_button">Envia una invitació</string>
|
||||
<string name="groups_create_group_hint">Tria un nom per al teu grup privat</string>
|
||||
<string name="groups_create_group_hint">Trieu un nom per al vostre grup privat</string>
|
||||
<string name="groups_invitation_sent">S\'ha enviat la invitació del grup</string>
|
||||
<string name="groups_message_sent">Missatge enviat</string>
|
||||
<string name="groups_member_list">Llistat de membres</string>
|
||||
<string name="groups_invite_members">Convida membres</string>
|
||||
<string name="groups_member_created_you">Has creat el grup</string>
|
||||
<string name="groups_member_list">Llista de membres</string>
|
||||
<string name="groups_invite_members">Convida a nous membres</string>
|
||||
<string name="groups_member_created_you">Heu creat el grup</string>
|
||||
<string name="groups_member_created">%s ha creat el grup</string>
|
||||
<string name="groups_member_joined_you">T\'has unit al grup</string>
|
||||
<string name="groups_member_joined">%s s\'ha unit al grup</string>
|
||||
<string name="groups_leave">Deixar el Grup</string>
|
||||
<string name="groups_leave_dialog_title">Confirma que deixes el Grup</string>
|
||||
<string name="groups_leave_dialog_message">Estàs segur que vols deixar aquest grup?</string>
|
||||
<string name="groups_dissolve">Dissoldre el grup</string>
|
||||
<string name="groups_dissolve_dialog_title">Confirma la dissolució del grup</string>
|
||||
<string name="groups_dissolve_dialog_message">Esteu segur que voleu dissoldre aquest grup?\n\nCap altre membre podrà continuar la conversa i podrien no rebre els darrers missatges.</string>
|
||||
<string name="groups_dissolve_button">Dissoldre</string>
|
||||
<string name="groups_dissolved_dialog_title">S\'ha dissolt el Grup</string>
|
||||
<string name="groups_dissolved_dialog_message">El creador del grup l\'ha dissolt.\n\nJa no hi podeu escriure missatges i podríeu no rebre tots els missatges que s\'hi havien escrit.</string>
|
||||
<string name="groups_member_joined_you">Us heu afegit al grup</string>
|
||||
<string name="groups_member_joined">%s s\'ha afegit al grup</string>
|
||||
<string name="groups_leave">Abandona el grup</string>
|
||||
<string name="groups_leave_dialog_title">Confirmeu que abandoneu el grup</string>
|
||||
<string name="groups_leave_dialog_message">Segur que voleu abandonar aquest grup?</string>
|
||||
<string name="groups_dissolve">Dissol el grup</string>
|
||||
<string name="groups_dissolve_dialog_title">Confirmeu la dissolució del grup</string>
|
||||
<string name="groups_dissolve_dialog_message">Esteu segur que voleu dissoldre aquest grup?\n\nSi el dissoleu cap altre membre podrà continuar la conversa i alguns membres pot ser que no rebin els darrers missatges.</string>
|
||||
<string name="groups_dissolve_button">Dissol</string>
|
||||
<string name="groups_dissolved_dialog_title">S\'ha dissolt el grup</string>
|
||||
<string name="groups_dissolved_dialog_message">El creador del grup l\'ha dissolt.\n\nJa no hi podeu escriure més. És possible que no hagueu rebut algun dels darrers missatges que s\'hi havien escrit.</string>
|
||||
<!--Private Group Invitations-->
|
||||
<string name="groups_invitations_title">Invitacions al grup</string>
|
||||
<string name="groups_invitations_invitation_sent">Heu convidat a 1%1$s al grup \"%2$s \".</string>
|
||||
<string name="groups_invitations_invitation_received">1%1$s us ha convidat a unir-vos al grup \" 2%2$s \".</string>
|
||||
<string name="groups_invitations_joined">Us heu unit al grup</string>
|
||||
<string name="groups_invitations_declined">S\'ha rebutjat la invitació al grup</string>
|
||||
<string name="groups_invitations_title">Convideu a formar part del grup</string>
|
||||
<string name="groups_invitations_invitation_sent">Heu convidat a %1$s a afegir-se al grup «%2$s».</string>
|
||||
<string name="groups_invitations_invitation_received">%1$s us ha convidat a afegir-vos al grup «%2$s».</string>
|
||||
<string name="groups_invitations_joined">Us heu afegit al grup</string>
|
||||
<string name="groups_invitations_declined">Ha refusat afegir-se al grup</string>
|
||||
<plurals name="groups_invitations_open">
|
||||
<item quantity="one">%d invitació a un grup obert</item>
|
||||
<item quantity="other">%d invitacions a grups oberts</item>
|
||||
</plurals>
|
||||
<string name="groups_invitations_response_accepted_sent">Heu acceptat la invitació del grup de %s.</string>
|
||||
<string name="groups_invitations_response_declined_sent">Heu rebutjat la invitació del grup de %s.</string>
|
||||
<string name="groups_invitations_response_accepted_received">%s va acceptar la invitació del grup.</string>
|
||||
<string name="groups_invitations_response_declined_received">%s va rebutjar la invitació del grup.</string>
|
||||
<string name="groups_invitations_response_accepted_sent">Heu acceptat afegir-vos al grup per invitació de %s.</string>
|
||||
<string name="groups_invitations_response_declined_sent">Heu refusat afegir-vos al grup per invitació de %s.</string>
|
||||
<string name="groups_invitations_response_accepted_received">%s ha acceptat afegir-se al grup.</string>
|
||||
<string name="groups_invitations_response_declined_received">%s ha refusat afegir-se al grup.</string>
|
||||
<string name="sharing_status_groups">Només el creador del grup pot convidar a nous membres. Tot seguit hi ha la llista dels membres del grup.</string>
|
||||
<!--Private Groups Revealing Contacts-->
|
||||
<string name="groups_reveal_contacts">Revela els contactes</string>
|
||||
<string name="groups_reveal_dialog_message">Podeu triar si voleu que es mostrin contactes a tots els membres actuals i futurs d\'aquest grup.\n\nLa revelació dels contactes fa que la vostra connexió al grup sigui més ràpida i més fiable, ja que podeu comunicar-vos amb els contactes revelats, fins i tot quan el creador del grup està fora de línia.</string>
|
||||
<string name="groups_reveal_visible">La relació del contacte és visible per al grup</string>
|
||||
<string name="groups_reveal_visible_revealed_by_us">La relació del contacte és visible per al grup (revelat per vós)</string>
|
||||
<string name="groups_reveal_visible_revealed_by_contact">La relació del contacte és visible per al grup (revelat per %s)</string>
|
||||
<string name="groups_reveal_invisible">La relació del contacte no és visible per al grup</string>
|
||||
<string name="groups_reveal_dialog_message">Podeu triar si voleu que es mostrin els contactes a tots els membres actuals i futurs d\'aquest grup.\n\nLa revelació dels contactes fa que la vostra connexió al grup sigui més ràpida i més fiable, ja que podeu comunicar-vos amb els contactes revelats, fins i tot quan el creador del grup està fora de línia.</string>
|
||||
<string name="groups_reveal_visible">La relació de contactes és visible pel grup</string>
|
||||
<string name="groups_reveal_visible_revealed_by_us">La relació de contactes és visible pel grup (revelada per vós)</string>
|
||||
<string name="groups_reveal_visible_revealed_by_contact">La relació de contactes és visible pel grup (revelada per %s)</string>
|
||||
<string name="groups_reveal_invisible">La relació de contactes no és visible pel grup</string>
|
||||
<!--Forums-->
|
||||
<string name="no_forums">No hi ha fòrums\n\nApreta l\'icona + per crear un fòrum, o demana els teus contactes que comparteixin els seus fòrums amb tu</string>
|
||||
<string name="create_forum_title">Crea un fòrum</string>
|
||||
<string name="no_forums">No hi ha cap fòrum\n\nFeu un toc sobre la icona + per crear un nou fòrum, o demaneu als vostres contactes que comparteixin els seus fòrums amb vós.</string>
|
||||
<string name="create_forum_title">Creeu un fòrum</string>
|
||||
<string name="choose_forum_hint">Trieu un nom per al fòrum</string>
|
||||
<string name="create_forum_button">Crea el fòrum</string>
|
||||
<string name="forum_created_toast">S\'ha creat el fòrum</string>
|
||||
<string name="no_forum_posts">No hi ha publicacions per mostrar</string>
|
||||
<string name="no_posts">No hi ha publicacions</string>
|
||||
<string name="no_forum_posts">No hi ha cap apunt per mostrar</string>
|
||||
<string name="no_posts">No hi ha cap apunt</string>
|
||||
<plurals name="posts">
|
||||
<item quantity="one">%d publicacio</item>
|
||||
<item quantity="other">%d publicacions</item>
|
||||
<item quantity="other">%d apunts</item>
|
||||
</plurals>
|
||||
<string name="forum_new_entry_posted">Entrada publicada al fòrum</string>
|
||||
<string name="forum_new_message_hint">Entrada nova</string>
|
||||
<string name="forum_new_entry_posted">S\'ha publicat un nou apunt al fòrum</string>
|
||||
<string name="forum_new_message_hint">Apunt nou</string>
|
||||
<string name="forum_message_reply_hint">Resposta nova</string>
|
||||
<string name="btn_reply">Respon</string>
|
||||
<string name="forum_leave">Abandona el fòrum</string>
|
||||
<string name="dialog_title_leave_forum">Confirmeu la sortida del Forum</string>
|
||||
<string name="dialog_message_leave_forum">Estàs segur/a que vols marxar d\'aquest fòrum?\n\nTots els contactes que tinguis compartits en aquest fòrum poden deixar de rebre actualitzacions</string>
|
||||
<string name="dialog_title_leave_forum">Confirmeu l\'abandonament del Forum</string>
|
||||
<string name="dialog_message_leave_forum">Segur que voleu abandonar aquest fòrum?\n\nEls contactes amb els que heu compartit aquest fòrum poden deixar de rebre les actualitzacions</string>
|
||||
<string name="dialog_button_leave">Abandona</string>
|
||||
<string name="forum_left_toast">Has deixat el fòrum</string>
|
||||
<string name="forum_left_toast">Heu abandonat el fòrum</string>
|
||||
<!--Forum Sharing-->
|
||||
<string name="forum_share_button">Comparteix el fòrum</string>
|
||||
<string name="contacts_selected">Contactes seleccionats</string>
|
||||
<string name="activity_share_toolbar_header">Tria contactes</string>
|
||||
<string name="no_contacts_selector">No hi ha contactes\n\nSi us plau torna quan hagis afegit algun contacte</string>
|
||||
<string name="activity_share_toolbar_header">Trieu els contactes</string>
|
||||
<string name="no_contacts_selector">No hi ha cap contacte\n\nSi us plau, reintenteu-ho després d\'haver afegit algun contacte</string>
|
||||
<string name="forum_shared_snackbar">Fòrum compartit amb els contactes seleccionats</string>
|
||||
<string name="forum_share_message">Afegiu un missatge (opcional)</string>
|
||||
<string name="forum_share_message">Afegiu una nota (opcional)</string>
|
||||
<string name="forum_share_error">S\'ha produït un error en compartir aquest fòrum.</string>
|
||||
<string name="forum_invitation_received">%1$s ha compartit el fòrum «%2$s» amb vós.</string>
|
||||
<string name="forum_invitation_sent">Heu compartit el fòrum «%1$s» amb %2$s.</string>
|
||||
<string name="forum_invitations_title">Invitacions al fòrum</string>
|
||||
<string name="forum_invitation_exists">Ja has acceptat una invitació a aquest fòrum.\n\nAcceptant més invitacions farà que la teva connexió amb el fòrum sigui més ràpida i fiable</string>
|
||||
<string name="forum_joined_toast">T\'has unit al fòrum</string>
|
||||
<string name="forum_declined_toast">Has declinat la invitació</string>
|
||||
<string name="shared_by_format">Compartit per 1%s</string>
|
||||
<string name="forum_invitation_already_sharing">Ja esteu compartint</string>
|
||||
<string name="forum_invitation_response_accepted_sent">Heu acceptat la invitació del fòrum de %s.</string>
|
||||
<string name="forum_invitation_response_declined_sent">Heu rebutjat la invitació del fòrum de %s.</string>
|
||||
<string name="forum_invitation_response_accepted_received">%s va acceptar la invitació del fòrum.</string>
|
||||
<string name="forum_invitation_response_declined_received">%s va rebutjar la invitació del fòrum.</string>
|
||||
<string name="forum_invitation_received">%1$s vol compartir el fòrum «%2$s» amb vós.</string>
|
||||
<string name="forum_invitation_sent">Heu convidat a%2$s a compartit el fòrum «%1$s».</string>
|
||||
<string name="forum_invitations_title">Convideu a participar al fòrum</string>
|
||||
<string name="forum_invitation_exists">Ja heu acceptat una invitació a aquest fòrum.\n\nAcceptar més invitacions farà que la vostra connexió amb el fòrum sigui més ràpida i fiable.</string>
|
||||
<string name="forum_joined_toast">Us heu afegit al fòrum</string>
|
||||
<string name="forum_declined_toast">Heu refusat la invitació</string>
|
||||
<string name="shared_by_format">Compartit per %s</string>
|
||||
<string name="forum_invitation_already_sharing">Ja l\'esteu compartint</string>
|
||||
<string name="forum_invitation_response_accepted_sent">Heu acceptat la invitació al fòrum enviada per %s.</string>
|
||||
<string name="forum_invitation_response_declined_sent">Heu refusat la invitació al fòrum enviada per %s.</string>
|
||||
<string name="forum_invitation_response_accepted_received">%s ha acceptat la invitació al fòrum.</string>
|
||||
<string name="forum_invitation_response_declined_received">%s ha rebutjat la invitació al fòrum.</string>
|
||||
<string name="sharing_status">Estat de la compartició</string>
|
||||
<string name="sharing_status_forum">Qualsevol membre d\'un fòrum pot compartir-lo amb els seus contactes. Esteu compartint aquest fòrum amb els següents contactes. També hi pot haver altres membres que no pugueu veure.</string>
|
||||
<string name="sharing_status_forum">Qualsevol membre d\'un fòrum pot compartir-lo amb els seus contactes. Esteu compartint aquest fòrum amb els següents contactes. Poden haver-hi membres del fòrum que no pugueu veure.</string>
|
||||
<string name="shared_with">Compartit amb %1$d (%2$d en línia)</string>
|
||||
<plurals name="forums_shared">
|
||||
<item quantity="one">%d fòrum compartit per contactes</item>
|
||||
@@ -258,20 +258,20 @@
|
||||
</plurals>
|
||||
<string name="nobody">Ningú</string>
|
||||
<!--Blogs-->
|
||||
<string name="blogs_other_blog_empty_state">No hi ha publicacions per mostrar</string>
|
||||
<string name="read_more">llegir més</string>
|
||||
<string name="blogs_write_blog_post">Escriviu una publicació de blog</string>
|
||||
<string name="blogs_write_blog_post_body_hint">Escriu el que vulguis publicar</string>
|
||||
<string name="blogs_other_blog_empty_state">No hi ha cap apunt per mostrar</string>
|
||||
<string name="read_more">llegeix-ne més</string>
|
||||
<string name="blogs_write_blog_post">Escriviu un apunt al blog</string>
|
||||
<string name="blogs_write_blog_post_body_hint">Escriviu el vostre apunt al blog</string>
|
||||
<string name="blogs_publish_blog_post">Publica</string>
|
||||
<string name="blogs_blog_post_created">S\'ha creat la publicació al blog</string>
|
||||
<string name="blogs_blog_post_received">S\'ha rebut una nova publicació al blog</string>
|
||||
<string name="blogs_blog_post_created">S\'ha publicat l\'apunt al blog</string>
|
||||
<string name="blogs_blog_post_received">S\'ha rebut un nou apunt al blog</string>
|
||||
<string name="blogs_blog_post_scroll_to">Desplaça</string>
|
||||
<string name="blogs_feed_empty_state">No hi ha publicacions\n\nPublicacions dels teus contactes i blogs als quals et subscriguis apareixeran aquí\n\nPulsa la icona del bolígraf per escriure un post</string>
|
||||
<string name="blogs_remove_blog">Elimina el blog</string>
|
||||
<string name="blogs_remove_blog_dialog_message">Estàs segur/a que vols eliminar aquest blog?\n\nLes publicacions seran eliminades del teu dispositiu però no del d\'altres persones.\n\nEls contactes amb els quals hagis compartit aquest blog poden deixar de rebre actualitzacions.</string>
|
||||
<string name="blogs_remove_blog_ok">Eliminar</string>
|
||||
<string name="blogs_blog_removed">Blog eliminat</string>
|
||||
<string name="blogs_reblog_comment_hint">Afegiu un comentari (opcional)</string>
|
||||
<string name="blogs_feed_empty_state">No hi ha cap apunt\n\nEls apunts dels vostres contactes i dels blogs als que esteu subscrit es mostraran aquí\n\nFeu un toc sobre la icona del bolígraf per escriure un nou apunt</string>
|
||||
<string name="blogs_remove_blog">Suprimeix el blog</string>
|
||||
<string name="blogs_remove_blog_dialog_message">Segur que voleu suprimir aquest blog?\n\nEls apunts publicats s\'esborraran del vostre dispositiu però no del d\'altres persones.\n\nEls contactes amb els que hagueu compartit aquest blog poden deixar de rebre les actualitzacions.</string>
|
||||
<string name="blogs_remove_blog_ok">Suprimeix</string>
|
||||
<string name="blogs_blog_removed">S\'ha suprimit el blog</string>
|
||||
<string name="blogs_reblog_comment_hint">Afegiu una nota (opcional)</string>
|
||||
<string name="blogs_reblog_button">Rebloga</string>
|
||||
<!--Blog Sharing-->
|
||||
<string name="blogs_sharing_share">Compartiu el blog</string>
|
||||
@@ -282,27 +282,32 @@
|
||||
<string name="blogs_sharing_response_declined_sent">Heu refusat la invitació al blog de %s.</string>
|
||||
<string name="blogs_sharing_response_accepted_received">%s ha acceptat la invitació al blog.</string>
|
||||
<string name="blogs_sharing_response_declined_received">%s ha refusat la invitació al blog.</string>
|
||||
<string name="blogs_sharing_invitation_received">%1$s us ha compartit el blog \"%2$s\".</string>
|
||||
<string name="blogs_sharing_invitation_sent">Heu compartit el blog \"%1$s\" amb %2$s.</string>
|
||||
<string name="blogs_sharing_invitations_title">Invitacions al blog</string>
|
||||
<string name="blogs_sharing_joined_toast">T\'has subscrit al blog</string>
|
||||
<string name="blogs_sharing_declined_toast">Has declinat la invitació</string>
|
||||
<string name="sharing_status_blog">Qualsevol subscrit a un blog el pot compartir amb els seus contactes. Esteu compartint aquest blog amb els següents contactes. També hi pot haver altres subscrits que no veieu.</string>
|
||||
<string name="blogs_sharing_invitation_received">%1$s ha compartit el blog «%2$s» amb vós.</string>
|
||||
<string name="blogs_sharing_invitation_sent">Heu compartit el blog «%1$s» amb %2$s.</string>
|
||||
<string name="blogs_sharing_invitations_title">Convideu veure el blog</string>
|
||||
<string name="blogs_sharing_joined_toast">Us heu subscrit al blog</string>
|
||||
<string name="blogs_sharing_declined_toast">Heu refusat la invitació</string>
|
||||
<string name="sharing_status_blog">Qualsevol membre subscrit a un blog el pot compartir amb els seus contactes. Esteu compartint aquest blog amb els següents contactes. Poden haver-hi altres membres subscrits que no veieu.</string>
|
||||
<!--RSS Feeds-->
|
||||
<string name="blogs_rss_feeds_import">Importa canal RSS</string>
|
||||
<string name="blogs_rss_feeds_import_button">Importa</string>
|
||||
<string name="blogs_rss_feeds_import_hint">Introduïu l\'URL del canal RSS</string>
|
||||
<string name="blogs_rss_feeds_import_error">Ens sap greu! S\'ha produït un error en importar el vostre canal.</string>
|
||||
<string name="blogs_rss_feeds_manage">Gestiona els canals RSS</string>
|
||||
<string name="blogs_rss_feeds_import">Subscriure\'s al canal de notícies RSS</string>
|
||||
<string name="blogs_rss_feeds_import_button">Subscriu-me</string>
|
||||
<string name="blogs_rss_feeds_import_hint">Escriviu l\'URL del canal de notícies RSS</string>
|
||||
<string name="blogs_rss_feeds_import_error">Ens sap greu! S\'ha produït un error en subscriure-us al vostre canal de notícies.</string>
|
||||
<string name="blogs_rss_feeds_manage">Gestiona els canals de notícies RSS</string>
|
||||
<string name="blogs_rss_feeds_manage_imported">Importat:</string>
|
||||
<string name="blogs_rss_feeds_manage_author">Autor:</string>
|
||||
<string name="blogs_rss_feeds_manage_updated">Darrera actualització:</string>
|
||||
<string name="blogs_rss_remove_feed">Elimina el canal</string>
|
||||
<string name="blogs_rss_remove_feed_dialog_message">Estàs segur/a que vols eliminar aquest noticiari?\n\nLes publicacions seran eliminades del teu dispositiu però no del d\'altres persones.\n\nEls contactes amb els que hagis compartit aquest noticiari poden deixar de rebre actualitzacions.</string>
|
||||
<string name="blogs_rss_remove_feed_ok">Eliminar</string>
|
||||
<string name="blogs_rss_feeds_manage_delete_error">El canal no s\'ha pogut esborrar.</string>
|
||||
<string name="blogs_rss_feeds_manage_empty_state">No hi ha notícies a mostrar\n\nPulsa l\'icona + per importar un noticiari</string>
|
||||
<string name="blogs_rss_feeds_manage_error">S\'ha produït un problema en carregar els vostres canals. Torneu-ho a provar més tard.</string>
|
||||
<string name="blogs_rss_remove_feed">Suprimeix la subscripció al canal de notícies</string>
|
||||
<string name="blogs_rss_remove_feed_dialog_message">Segur que voleu suprimir la subscripció a aquest canal de notícies?\n\nLes notícies d\'aquest canal s\'eliminaran del vostre dispositiu però no del d\'altres persones.\n\nEls contactes amb els que hagueu compartit aquest canal poden deixar de rebre les actualitzacions.</string>
|
||||
<string name="blogs_rss_remove_feed_ok">Suprimeix la subscripció</string>
|
||||
<string name="blogs_rss_feeds_manage_delete_error">La subscripció al canal de notícies no s\'ha pogut suprimir.</string>
|
||||
<string name="blogs_rss_feeds_manage_empty_state">No hi ha cap notícia per mostrar\n\nFeu un toc sobre la icona + per subscriure-us a un canal de notícies</string>
|
||||
<string name="blogs_rss_feeds_manage_error">S\'ha produït un problema en actualitzar els vostres canals de notícies. Torneu-ho a provar més endavant.</string>
|
||||
<!--Settings Display-->
|
||||
<string name="pref_language_title">Llengua i regió</string>
|
||||
<string name="pref_language_changed">L\'efecte d\'aquest canvi només l\'apreciareu després de reiniciar Briar. Si us plau, tanqueu la sessió i reinicieu Briar.</string>
|
||||
<string name="pref_language_default">Valor per defecte del sistema</string>
|
||||
<string name="display_settings_title">Visualització</string>
|
||||
<!--Settings Network-->
|
||||
<string name="network_settings_title">Xarxes</string>
|
||||
<string name="bluetooth_setting">Connecta via bluetooth</string>
|
||||
@@ -310,87 +315,87 @@
|
||||
<string name="bluetooth_setting_disabled">Només quan s\'afegeixen contactes</string>
|
||||
<string name="tor_network_setting">Connecta via Tor</string>
|
||||
<string name="tor_network_setting_never">Mai</string>
|
||||
<string name="tor_network_setting_wifi">Només amb WiFi</string>
|
||||
<string name="tor_network_setting_always">Quan s\'utilitzi la WiFi o les dades mòbils</string>
|
||||
<string name="tor_network_setting_wifi">Només quan s\'utilitzi WiFi</string>
|
||||
<string name="tor_network_setting_always">Quan s\'utilitzi WiFi o les dades mòbils</string>
|
||||
<!--Settings Security and Panic-->
|
||||
<string name="security_settings_title">Seguretat</string>
|
||||
<string name="change_password">Canvia la contrasenya</string>
|
||||
<string name="current_password">Introduïu la contrasenya actual:</string>
|
||||
<string name="current_password">Escriviu la contrasenya actual:</string>
|
||||
<string name="choose_new_password">Escriviu la contrasenya nova:</string>
|
||||
<string name="confirm_new_password">Confirmeu la contrasenya nova:</string>
|
||||
<string name="password_changed">Heu canviat la contrasenya.</string>
|
||||
<string name="panic_setting">Configuració del botó del pànic</string>
|
||||
<string name="panic_setting_title">Botó de pànic</string>
|
||||
<string name="panic_setting_hint">Configureu com reaccionarà Briar quan feu servir una aplicació del pànic</string>
|
||||
<string name="panic_setting_hint">Configureu com reaccionarà Briar quan feu servir el botó de pànic</string>
|
||||
<string name="panic_app_setting_title">Aplicació de botó de pànic</string>
|
||||
<string name="unknown_app">una aplicació desconeguda</string>
|
||||
<string name="panic_app_setting_summary">No s\'ha definit cap aplicació</string>
|
||||
<string name="panic_app_setting_none">Cap</string>
|
||||
<string name="dialog_title_connect_panic_app">Confirmeu l\'aplicació del pànic</string>
|
||||
<string name="dialog_message_connect_panic_app">Esteu segurs que voleu permetre que %1$s activi accions destructives del botó del pànic?</string>
|
||||
<string name="dialog_title_connect_panic_app">Confirmeu l\'aplicació de pànic</string>
|
||||
<string name="dialog_message_connect_panic_app">Segur que voleu permetre que %1$s desencadeni accions destructives a conseqüència del botó de pànic?</string>
|
||||
<string name="lock_setting_title">Tanca la sessió</string>
|
||||
<string name="lock_setting_summary">Tanca la sessió de Briar si es prem un botó del pànic</string>
|
||||
<string name="purge_setting_title">Esborra el compte</string>
|
||||
<string name="purge_setting_summary">Suprimeix el compte de Briar si es prem un botó del pànic. Precaució: s\'eliminarà permanentment les vostres identitats, contactes i missatges</string>
|
||||
<string name="uninstall_setting_title">Desinstal·la Briar</string>
|
||||
<string name="uninstall_setting_summary">Això requereix confirmació manual en una situació de pànic</string>
|
||||
<string name="lock_setting_summary">Tanca la sessió de Briar si es prem un botó de pànic</string>
|
||||
<string name="purge_setting_title">Esborreu el compte</string>
|
||||
<string name="purge_setting_summary">Suprimeix el compte de Briar si es prem el botó de pànic. Atenció: En aquest cas, s\'eliminarien permanentment les vostres identitats, contactes i missatges</string>
|
||||
<string name="uninstall_setting_title">Desinstal·leu Briar</string>
|
||||
<string name="uninstall_setting_summary">Això requeria la confirmació manual malgrat ser en una situació de pànic</string>
|
||||
<!--Settings Notifications-->
|
||||
<string name="notification_settings_title">Notificacions</string>
|
||||
<string name="notify_private_messages_setting_title">Missatges privats</string>
|
||||
<string name="notify_private_messages_setting_summary">Mostra els avisos per als missatges privats</string>
|
||||
<string name="notify_private_messages_setting_summary_26">Configura les alertes per missatges privats</string>
|
||||
<string name="notify_group_messages_setting_title">Missatges grupals</string>
|
||||
<string name="notify_group_messages_setting_summary">Mostra alertes per als missatges grupals</string>
|
||||
<string name="notify_group_messages_setting_summary_26">Configura les alertes per missatges de grup</string>
|
||||
<string name="notify_forum_posts_setting_title">Publicacions del fòrum</string>
|
||||
<string name="notify_forum_posts_setting_summary">Mostra alertes per a les publicacions del fòrum</string>
|
||||
<string name="notify_forum_posts_setting_summary_26">Configura les alertes per publicacions als fòrums</string>
|
||||
<string name="notify_blog_posts_setting_title">Publicacions al blog</string>
|
||||
<string name="notify_blog_posts_setting_summary">Mostra alertes per les publicacions al blog</string>
|
||||
<string name="notify_blog_posts_setting_summary_26">Configura les alertes per publicacions als blogs</string>
|
||||
<string name="notify_private_messages_setting_summary">Mostra avisos pels missatges privats</string>
|
||||
<string name="notify_private_messages_setting_summary_26">Configura els avisos pels missatges privats</string>
|
||||
<string name="notify_group_messages_setting_title">Missatges dels grups</string>
|
||||
<string name="notify_group_messages_setting_summary">Mostra avisos pels missatges dels grups</string>
|
||||
<string name="notify_group_messages_setting_summary_26">Configura els avisos pels missatges dels grups</string>
|
||||
<string name="notify_forum_posts_setting_title">Apunts del fòrum</string>
|
||||
<string name="notify_forum_posts_setting_summary">Mostra avisos pels apunts del fòrum</string>
|
||||
<string name="notify_forum_posts_setting_summary_26">Configura els avisos pels apunts dels fòrums</string>
|
||||
<string name="notify_blog_posts_setting_title">Apunts als blogs</string>
|
||||
<string name="notify_blog_posts_setting_summary">Mostra avisos pels apunts als blogs</string>
|
||||
<string name="notify_blog_posts_setting_summary_26">Configura els avisos pels apunts als blogs</string>
|
||||
<string name="notify_vibration_setting">Vibra</string>
|
||||
<string name="notify_lock_screen_setting_title">Bloca la pantalla</string>
|
||||
<string name="notify_lock_screen_setting_summary">Mostra notificacions a la pantalla de bloqueig</string>
|
||||
<string name="notify_lock_screen_setting_summary">Mostra les notificacions a la pantalla de bloqueig</string>
|
||||
<string name="notify_sound_setting">So</string>
|
||||
<string name="notify_sound_setting_default">To de trucada predeterminat</string>
|
||||
<string name="notify_sound_setting_default">So d\'avís predeterminat</string>
|
||||
<string name="notify_sound_setting_disabled">Cap</string>
|
||||
<string name="choose_ringtone_title">Trieu el to de trucada</string>
|
||||
<string name="cannot_load_ringtone">No s\'ha pogut carregar el to de trucada</string>
|
||||
<string name="choose_ringtone_title">Trieu el so d\'avís</string>
|
||||
<string name="cannot_load_ringtone">No s\'ha pogut carregar el so d\'avís</string>
|
||||
<!--Settings Feedback-->
|
||||
<string name="feedback_settings_title">Comentaris</string>
|
||||
<string name="send_feedback">Envieu comentaris</string>
|
||||
<!--Link Warning-->
|
||||
<string name="link_warning_title">Avís d\'enllaç</string>
|
||||
<string name="link_warning_intro">L\'enllaç s\'obrirà amb una aplicació externa.</string>
|
||||
<string name="link_warning_text">Açò podria usar-se per a identificar-vos. Penseu si confieu prou en la persona que us ha enviat l\'enllaç i si convindria obrir-lo amb Orfox.</string>
|
||||
<string name="link_warning_open_link">Obri l\'enllaç</string>
|
||||
<string name="link_warning_text">Això podria usar-se per a identificar-vos. Penseu si us en refieu prou de la persona que us ha enviat l\'enllaç. Avalueu si us convindria obrir-lo amb un navegador que faciliti l\'anonimat com Orfox.</string>
|
||||
<string name="link_warning_open_link">Obre l\'enllaç</string>
|
||||
<!--Crash Reporter-->
|
||||
<string name="crash_report_title">Informe de bloqueig de Briar</string>
|
||||
<string name="briar_crashed">Ens sap greu, el Briar s\'ha tancat inesperadament.</string>
|
||||
<string name="crash_report_title">Informe de fallida de Briar</string>
|
||||
<string name="briar_crashed">Ens sap greu, Briar s\'ha tancat inesperadament.</string>
|
||||
<string name="not_your_fault">Això no és culpa vostra.</string>
|
||||
<string name="please_send_report">Ajuda\'ns a construir un Briar millor enviant-nos un informe de fallida.</string>
|
||||
<string name="report_is_encrypted">Ens comprometem a què l\'informe es xifra i s\'envia de manera segura.</string>
|
||||
<string name="please_send_report">Ajudi\'ns a construir un Briar millor enviant-nos un informe de fallida.</string>
|
||||
<string name="report_is_encrypted">Us garantim que l\'informe es xifra i s\'envia de manera segura.</string>
|
||||
<string name="feedback_title">Comentaris</string>
|
||||
<string name="describe_crash">Descriu el que hi ha succeït (opcional)</string>
|
||||
<string name="enter_feedback">Introduïu els vostres comentaris</string>
|
||||
<string name="describe_crash">Descriviu el que hi ha succeït (opcional)</string>
|
||||
<string name="enter_feedback">Escriviu els vostres comentaris</string>
|
||||
<string name="optional_contact_email">La vostra adreça de correu (opcional)</string>
|
||||
<string name="include_debug_report_crash">Inclou dades anònimes sobre el bloqueig</string>
|
||||
<string name="include_debug_report_crash">Inclou dades anònimes sobre la fallida</string>
|
||||
<string name="include_debug_report_feedback">Inclou dades anònimes sobre el dispositiu</string>
|
||||
<string name="could_not_load_report_data">No s\'han pogut carregar les dades de l\'informe.</string>
|
||||
<string name="send_report">Envia l\'informe</string>
|
||||
<string name="close">Tanca</string>
|
||||
<string name="dev_report_saved">S\'ha desat l\'informe. Se us enviarà la propera vegada que inicieu sessió a Briar.</string>
|
||||
<!--Sign Out-->
|
||||
<string name="progress_title_logout">S\'està sortint del Briar...</string>
|
||||
<string name="progress_title_logout">S\'està tancant la sessió de Briar...</string>
|
||||
<!--Screen Filters & Tapjacking-->
|
||||
<string name="screen_filter_title">S\'ha detectat superposició de la pantalla</string>
|
||||
<string name="screen_filter_body">Una altra aplicació es troba damunt de Briar. Per protegir la vostra seguretat, Briar no respondrà als tocs quan s\'aprovi una altra aplicació.\n\nLes següents aplicacions poden estar dibuixant a la part superior:\n\n%1$s</string>
|
||||
<string name="screen_filter_allow">Permet que aquestes aplicacions dibuixin a la part superior</string>
|
||||
<string name="screen_filter_body">Una altra aplicació es troba damunt de Briar. Per protegir la vostra seguretat, Briar no respondrà a les pulsacions quan una altra aplicació s\'hi hagi sobreposat.\n\nLes següents aplicacions poden estar sobreposades a Briar:\n\n%1$s</string>
|
||||
<string name="screen_filter_allow">Permet que aquestes aplicacions se sobreposin a Briar</string>
|
||||
<!--Permission Requests-->
|
||||
<string name="permission_camera_title">Permís de la càmera</string>
|
||||
<string name="permission_camera_request_body">Per escanejar el codi QR, Briar necessita accés a la càmera.</string>
|
||||
<string name="permission_camera_denied_body">Heu denegat l\'accés a la càmera, però l\'addició de contactes requereix utilitzar la càmera.\n\nTingueu en compte permetre l\'accés.</string>
|
||||
<string name="permission_camera_denied_toast">No s\'ha concedit el permís de la càmera</string>
|
||||
<string name="permission_camera_request_body">Per escanejar el codi QR, Briar necessita accedir a la càmera.</string>
|
||||
<string name="permission_camera_denied_body">Heu denegat l\'accés a la càmera però per afegir contactes cal utilitzar la càmera.\n\nRecomanem que permeteu l\'accés a la càmera.</string>
|
||||
<string name="permission_camera_denied_toast">No s\'ha concedit el permís per accedir a la càmera</string>
|
||||
<string name="qr_code">Codi QR</string>
|
||||
<string name="show_qr_code_fullscreen">Mostra el codi QR a pantalla completa</string>
|
||||
</resources>
|
||||
|
||||
@@ -31,7 +31,11 @@
|
||||
<string name="dialog_title_lost_password">Ztracené heslo</string>
|
||||
<string name="dialog_message_lost_password">Váš Briar účet je šifrován a uložen ve vašem zařízení, nikoli v cloudu, z tohoto důvodu není možné obnovit Vaše heslo. Chcete odstranit svůj účet a začít znovu?\n\nUpozornění: Vaše identita, kontakty a zprávy budou permanentně ztraceny.</string>
|
||||
<string name="startup_failed_notification_title">Briar nemohl být spuštěn</string>
|
||||
<string name="startup_failed_notification_text">Klikněte pro více informací</string>
|
||||
<string name="startup_failed_activity_title">Spuštění Briar selhalo.</string>
|
||||
<string name="startup_failed_db_error">Z nějakého důvodu je vaše databáze Briar poškozena. Váš účet, vaše data a všechny vaše kontakty budou ztraceny. Bohužel musíte přeinstalovat Briar nebo nastavit nový účet výběrem položky \'Zapomněl jsem heslo\' v řádku zadat heslo.</string>
|
||||
<string name="startup_failed_data_too_old_error">Váš účet byl vytvořen se starou verzí aplikace a nemůže být otevřen v této verzi. Musíte přeinstalovat starou verzi nebo nastavit nový účet vybráním \'Zapomněl jsem své heslo v nabídce hesla.</string>
|
||||
<string name="startup_failed_data_too_new_error">Tato verze aplikace je zastaralá. Prosím aktualizujte na nejvyšší verzi a zkuste to znovu.</string>
|
||||
<string name="startup_failed_service_error">Briar nemohl spustit vyžadovaný plugin. Tento problém vyřeší přeinstalování Briar. Mějte prosím na vědomí, že přeinstalováním ztratíte veškerá data pro váš účet, protože Briar nepoužívá centralizované ukládání vašich dat na serverech.</string>
|
||||
<plurals name="expiry_warning">
|
||||
<item quantity="one">Toto je testovací verze Briar. Váš účet a jeho platnost vyprší po %d dnech a není možné ho obnovit.</item>
|
||||
@@ -41,6 +45,11 @@
|
||||
</plurals>
|
||||
<string name="expiry_update">Datum expirace pro testování bylo prodlouženo. Váš účet nyní bude expirovat po %d dnech.</string>
|
||||
<string name="expiry_date_reached">Platnost tohoto software vypršela.\nDěkujeme za jeho otestování!</string>
|
||||
<string name="download_briar">Pro pokračování používání Briar, stáhněte si prosím verzi 1.0.</string>
|
||||
<string name="create_new_account">Budete potřebovat vytvořit nový účet, ale můžete použít stejné uživatelské jméno.</string>
|
||||
<string name="download_briar_button">Stáhnout Briar 1.0</string>
|
||||
<string name="startup_open_database">Dešifrování databáze...</string>
|
||||
<string name="startup_migrate_database">Aktualizování databáze...</string>
|
||||
<!--Navigation Drawer-->
|
||||
<string name="nav_drawer_open_description">Otevřít navigační lištu</string>
|
||||
<string name="nav_drawer_close_description">Zavřít navigační lištu</string>
|
||||
@@ -103,8 +112,11 @@
|
||||
<string name="show_onboarding">Zobrazit dialog pro pomoc</string>
|
||||
<string name="fix">Opravit</string>
|
||||
<string name="help">Pomoc</string>
|
||||
<string name="sorry">Promiňte</string>
|
||||
<!--Contacts and Private Conversations-->
|
||||
<string name="no_contacts">Žádné kontakty k zobrazení\n\nKlikněte na ikonu + kde můžete přidat kontakt</string>
|
||||
<string name="date_no_private_messages">Žádné zprávy</string>
|
||||
<string name="no_private_messages">Žádné zprávy k zobrazení</string>
|
||||
<string name="message_hint">Psát zprávu</string>
|
||||
<string name="delete_contact">Odstranit kontakt</string>
|
||||
<string name="dialog_title_delete_contact">Potvrdit odstranění kontaktu</string>
|
||||
@@ -122,6 +134,7 @@
|
||||
<string name="contact_already_exists">Kontakt %s již existuje</string>
|
||||
<string name="contact_exchange_failed">Chyba výměny kontaktu</string>
|
||||
<string name="qr_code_invalid">QR kód je neplatný</string>
|
||||
<string name="qr_code_unsupported">QR kód, který se pokoušíte skenovat, patří k starší verzi %s, která již není podporována.\n\nJe potřebné, aby oba kontakty používali nejnovější verzi a následně to zkuste znovu.</string>
|
||||
<string name="camera_error">Vyskytla se chyba fotoaparátu</string>
|
||||
<string name="connecting_to_device">Připojování k zařízení\u2026</string>
|
||||
<string name="authenticating_with_device">Ověřování se zařízením\u2026</string>
|
||||
@@ -153,6 +166,7 @@
|
||||
<item quantity="other">%d nových kontaktů bylo přidáno.</item>
|
||||
</plurals>
|
||||
<!--Private Groups-->
|
||||
<string name="groups_list_empty">Žádné skupiny k zobrazení\n\nKlikněte na ikonu + kde můžete vytvořit skupinu, nebo požádejte své kontakty o sdílení skupin s vámi</string>
|
||||
<string name="groups_created_by">Vytvořeno %s</string>
|
||||
<plurals name="messages">
|
||||
<item quantity="one">%d zpráva</item>
|
||||
@@ -209,10 +223,12 @@
|
||||
<string name="groups_reveal_visible_revealed_by_contact">Vztah s kontaktem je viditelný ve skupině (byl odkrytý %s)</string>
|
||||
<string name="groups_reveal_invisible">Vztah s kontaktem není viditelný ve skupině</string>
|
||||
<!--Forums-->
|
||||
<string name="no_forums">Žádná fóra k zobrazení\n\nKlikněte na ikonu + pro vytvoření fóra, nebo požádejte své kontakty pro sdílení fóra s vámi</string>
|
||||
<string name="create_forum_title">Vytvořit fórum</string>
|
||||
<string name="choose_forum_hint">Vybrat jméno pro vaše fórum</string>
|
||||
<string name="create_forum_button">Vytvořit fórum</string>
|
||||
<string name="forum_created_toast">Fórum vytvořeno</string>
|
||||
<string name="no_forum_posts">Žádné příspěvky k zobrazení</string>
|
||||
<string name="no_posts">Žádné příspěvky</string>
|
||||
<plurals name="posts">
|
||||
<item quantity="one">%d příspěvek</item>
|
||||
@@ -226,17 +242,22 @@
|
||||
<string name="btn_reply">Odpověď</string>
|
||||
<string name="forum_leave">Opustit fórum</string>
|
||||
<string name="dialog_title_leave_forum">Potvrdit opuštění fóra</string>
|
||||
<string name="dialog_message_leave_forum">Opravdu chcete opustit toto fórum?\n\nKaždý kontakt, se kterým jste sdíleli toto fórum, může přestat přijímat aktualizace.</string>
|
||||
<string name="dialog_button_leave">Opustit</string>
|
||||
<string name="forum_left_toast">Opustit fórum</string>
|
||||
<!--Forum Sharing-->
|
||||
<string name="forum_share_button">Sdílet fórum</string>
|
||||
<string name="contacts_selected">Zvolené kontakty</string>
|
||||
<string name="activity_share_toolbar_header">Zvolit kontakty</string>
|
||||
<string name="no_contacts_selector">Žádné kontakty k zobrazení \n\nProsím, vraťte se zpět po přidání kontaktu</string>
|
||||
<string name="forum_shared_snackbar">Fórum sdíleno s vybranými kontakty</string>
|
||||
<string name="forum_share_message">Přidat zprávu (volitelné)</string>
|
||||
<string name="forum_share_error">Při sdílení tohoto fóra nastala chyba.</string>
|
||||
<string name="forum_invitation_received">%1$s sdílel fórum \"%2$s\" s vámi.</string>
|
||||
<string name="forum_invitation_sent">Sdíleli jste fórum \"%1$s\" s %2$s.</string>
|
||||
<string name="forum_invitations_title">Pozvání do fóra</string>
|
||||
<string name="forum_joined_toast">Vstup do fóra</string>
|
||||
<string name="forum_declined_toast">Pozvání zamítnuto</string>
|
||||
<string name="shared_by_format">Sdíleno %s</string>
|
||||
<string name="forum_invitation_already_sharing">Již sdílené</string>
|
||||
<string name="forum_invitation_response_accepted_sent">Přijali jste pozvání do fóra od %s.</string>
|
||||
@@ -254,14 +275,17 @@
|
||||
</plurals>
|
||||
<string name="nobody">Nikdo</string>
|
||||
<!--Blogs-->
|
||||
<string name="blogs_other_blog_empty_state">Žádné příspěvky k zobrazení</string>
|
||||
<string name="read_more">Číst dál</string>
|
||||
<string name="blogs_write_blog_post">Napsat příspěvek do Blogu</string>
|
||||
<string name="blogs_write_blog_post_body_hint">Napište svůj blog příspěvek</string>
|
||||
<string name="blogs_publish_blog_post">Publikovat</string>
|
||||
<string name="blogs_blog_post_created">Příspěvek do blogu byl vytvořen</string>
|
||||
<string name="blogs_blog_post_received">Přijatý nový příspěvek v blogu.</string>
|
||||
<string name="blogs_blog_post_scroll_to">Přejít na</string>
|
||||
<string name="blogs_remove_blog">Odstranit blog</string>
|
||||
<string name="blogs_remove_blog_ok">Odstranit</string>
|
||||
<string name="blogs_blog_removed">Blog odstraněn</string>
|
||||
<string name="blogs_reblog_comment_hint">Přidat komentář (volitelné)</string>
|
||||
<string name="blogs_reblog_button">Reblog</string>
|
||||
<!--Blog Sharing-->
|
||||
@@ -276,6 +300,8 @@
|
||||
<string name="blogs_sharing_invitation_received">%1$s sdílel blog \"%2$s\" s vámi.</string>
|
||||
<string name="blogs_sharing_invitation_sent">Sdíleli jste blog \"%1$s\" s %2$s.</string>
|
||||
<string name="blogs_sharing_invitations_title">Pozvánky do blogu</string>
|
||||
<string name="blogs_sharing_joined_toast">Přihlásit se k blogu</string>
|
||||
<string name="blogs_sharing_declined_toast">Pozvání zamítnuto</string>
|
||||
<string name="sharing_status_blog">Kdokoli, kdo odebírá blog ho může sdílet se svými kontakty. Sdílíte tento blog s následujícími kontakty. Mohou existovat i jiní účastníci, které nevidíte.</string>
|
||||
<!--RSS Feeds-->
|
||||
<string name="blogs_rss_feeds_import">Import RSS kanálu</string>
|
||||
@@ -289,7 +315,13 @@
|
||||
<string name="blogs_rss_remove_feed">Odstranit kanál</string>
|
||||
<string name="blogs_rss_remove_feed_ok">Odstranit</string>
|
||||
<string name="blogs_rss_feeds_manage_delete_error">Kanál nemohl být odstraněn !</string>
|
||||
<string name="blogs_rss_feeds_manage_empty_state">Žádné RSS kanály k zobrazení\n\nKlikněte na ikonu + pro nahrání příspěvků</string>
|
||||
<string name="blogs_rss_feeds_manage_error">Vyskytl se problém s načtením vašeho kanálu příspěvků. Zkuste to prosím později.</string>
|
||||
<!--Settings Display-->
|
||||
<string name="pref_language_title">Jazyk & region</string>
|
||||
<string name="pref_language_changed">Toto nastavení bude mít efekt když vykonáre restart svého Briar. Prosím odhlaste se a restartujte Briar.</string>
|
||||
<string name="pref_language_default">Výchozí systému</string>
|
||||
<string name="display_settings_title">Zobrazit</string>
|
||||
<!--Settings Network-->
|
||||
<string name="network_settings_title">Sítě</string>
|
||||
<string name="bluetooth_setting">Spojení přes Bluetooth</string>
|
||||
@@ -325,12 +357,16 @@
|
||||
<string name="notification_settings_title">Oznámení</string>
|
||||
<string name="notify_private_messages_setting_title">Soukromé zprávy</string>
|
||||
<string name="notify_private_messages_setting_summary">Zobrazit upozornění pro soukromé zprávy</string>
|
||||
<string name="notify_private_messages_setting_summary_26">Nastavení upozornění pro soukromé zprávy</string>
|
||||
<string name="notify_group_messages_setting_title">Skupinové zprávy</string>
|
||||
<string name="notify_group_messages_setting_summary">Zobrazit upozornění pro skupinové zprávy</string>
|
||||
<string name="notify_group_messages_setting_summary_26">Nastavení upozornění pro skupinové zprávy</string>
|
||||
<string name="notify_forum_posts_setting_title">Příspěvky fóra</string>
|
||||
<string name="notify_forum_posts_setting_summary">Zobrazit upozornění pro příspěvky fóra</string>
|
||||
<string name="notify_forum_posts_setting_summary_26">Nastavení upozornění pro příspěvky fóra</string>
|
||||
<string name="notify_blog_posts_setting_title">Příspěvky v blogu</string>
|
||||
<string name="notify_blog_posts_setting_summary">Zobrazit upozornění pro příspěvky v blogu</string>
|
||||
<string name="notify_blog_posts_setting_summary_26">Nastavení upozornění pro příspěvky blogu</string>
|
||||
<string name="notify_vibration_setting">Vibrovat</string>
|
||||
<string name="notify_lock_screen_setting_title">Zamčená obrazovka</string>
|
||||
<string name="notify_lock_screen_setting_summary">Zobrazit oznámení na zamčené obrazovce</string>
|
||||
@@ -367,9 +403,12 @@
|
||||
<string name="progress_title_logout">Odhlásit se z Briar...</string>
|
||||
<!--Screen Filters & Tapjacking-->
|
||||
<string name="screen_filter_title">Bylo zjištěno překrytí obrazovky</string>
|
||||
<string name="screen_filter_allow">Povolit těmto aplikacím zůstat navrchu</string>
|
||||
<!--Permission Requests-->
|
||||
<string name="permission_camera_title">Oprávnění pro přístup k fotoaparátu</string>
|
||||
<string name="permission_camera_request_body">Pro scan QR kódu, Briar vyžaduje přístup k fotoaparátu.</string>
|
||||
<string name="permission_camera_denied_body">Odmítli jste udělit oprávnění přístupu k fotoaparátu, avšak pro přidání kontaktů je nutné použití fotoaparátu.\n\nZvažte prosím, opětovné udělení přístupu.</string>
|
||||
<string name="permission_camera_denied_toast">Oprávnění pro přístup k fotoaparátu nebylo uděleno</string>
|
||||
<string name="qr_code">QR kód</string>
|
||||
<string name="show_qr_code_fullscreen">Zobrazit QR kód na celou obrazovku</string>
|
||||
</resources>
|
||||
|
||||
@@ -134,6 +134,7 @@
|
||||
<string name="introduction_onboarding_title">Mache deine Kontakte untereinander bekannt</string>
|
||||
<string name="introduction_onboarding_text">Du kannst deine Kontakte untereinander bekannt machen. So können sie sich über Briar verbinden, ohne sich persönlich treffen zu müssen.</string>
|
||||
<string name="introduction_activity_title">Kontakt auswählen</string>
|
||||
<string name="introduction_not_possible">Es wird bereits eine Kontaktempfehlung mit diesen Kontakten verarbeitet. Bitte warte, bis die Verarbeitung abgeschlossen ist. Falls du oder deine Kontakte selten online sind, kann es etwas dauern.</string>
|
||||
<string name="introduction_message_title">Kontakte untereinander bekannt machen</string>
|
||||
<string name="introduction_message_hint">Nachricht hinzufügen (optional)</string>
|
||||
<string name="introduction_button">Kontaktempfehlung abgeben</string>
|
||||
@@ -145,6 +146,7 @@
|
||||
<string name="introduction_request_exists_received">%1$s schlägt vor, dich als Kontakt an %2$s zu empfehlen. %2$s ist allerdings bereits in deiner Kontaktliste. Da %1$s das vielleicht nicht weiss, kannst du trotzdem antworten:</string>
|
||||
<string name="introduction_request_answered_received">%1$s schlägt vor, dich als Kontakt an %2$s zu empfehlen. </string>
|
||||
<string name="introduction_response_accepted_sent">Du hast die Kontaktempfehlung für %1$s angenommen.</string>
|
||||
<string name="introduction_response_accepted_sent_info">Bevor %1$s zu deinen Kontakten hinzugefügt werden, müssen sie die Kontaktempfehlung ebenfalls akzeptieren. Dies kann eine Weile dauern.</string>
|
||||
<string name="introduction_response_declined_sent">Du hast die Kontaktempfehlung von %1$s abgelehnt.</string>
|
||||
<string name="introduction_response_accepted_received">%1$s hat die Kontaktempfehlung für %2$s angenommen.</string>
|
||||
<string name="introduction_response_declined_received">%1$s hat deine Kontaktempfehlung von %2$s abgelehnt.</string>
|
||||
@@ -154,6 +156,7 @@
|
||||
<item quantity="other">%d neue Kontakte hinzugefügt.</item>
|
||||
</plurals>
|
||||
<!--Private Groups-->
|
||||
<string name="groups_list_empty">No groups to show\n\nTap the + icon to create a group, or ask your contacts to share groups with you</string>
|
||||
<string name="groups_created_by">Erstellt durch %s</string>
|
||||
<plurals name="messages">
|
||||
<item quantity="one">%d Nachrichten</item>
|
||||
@@ -206,6 +209,7 @@
|
||||
<string name="groups_reveal_visible_revealed_by_contact">Verbindung zum Kontakt ist für diese Gruppe sichtbar (offengelegt durch %s)</string>
|
||||
<string name="groups_reveal_invisible">Verbindung zum Kontakt ist für diese Gruppe nicht sichtbar</string>
|
||||
<!--Forums-->
|
||||
<string name="no_forums">Du bist in keinem Forum Mitglied.\n\nVerwende das + Symbol am oberen Rand um ein Forum zu erstellen oder frage bitte Deine Kontakte danach, Foren mit dir zu teilen</string>
|
||||
<string name="create_forum_title">Forum erstellen</string>
|
||||
<string name="choose_forum_hint">Wähle einen Namen für dein Forum</string>
|
||||
<string name="create_forum_button">Forum erstellen</string>
|
||||
@@ -291,9 +295,14 @@
|
||||
<string name="blogs_rss_feeds_manage_author">Autor:</string>
|
||||
<string name="blogs_rss_feeds_manage_updated">Letzte Aktualisierung:</string>
|
||||
<string name="blogs_rss_remove_feed">Feed entfernen</string>
|
||||
<string name="blogs_rss_remove_feed_dialog_message">Bist du sicher, dass Du diesen Feed löschen willst?\n\nDie Beiträge werden von Deinem Gerät gelöscht, jedoch nicht von Geräten anderer Leute.\n\nKontakte, mit denen Du diesen Feed geteilt hast, werden keine Updates mehr davon bekommen.</string>
|
||||
<string name="blogs_rss_remove_feed_ok">Aufheben</string>
|
||||
<string name="blogs_rss_feeds_manage_delete_error">Der Feed konnte nicht gelöscht werden!</string>
|
||||
<string name="blogs_rss_feeds_manage_empty_state">Du hast noch keine RSS-Feeds\n\nTippe auf das +-Symbol um einen Feed zu importieren</string>
|
||||
<string name="blogs_rss_feeds_manage_error">Es gab ein Problem beim Laden deiner Feeds. Bitte versuche es später erneut.</string>
|
||||
<!--Settings Display-->
|
||||
<string name="pref_language_changed">Diese Einstellung wird aktiv sobald Du Briar neu startest. Bitte melde dich ab und starte Briar neu.</string>
|
||||
<string name="display_settings_title">Anzeigen</string>
|
||||
<!--Settings Network-->
|
||||
<string name="network_settings_title">Netzwerke</string>
|
||||
<string name="bluetooth_setting">Über Bluetooth verbinden</string>
|
||||
|
||||
@@ -296,6 +296,8 @@
|
||||
<string name="blogs_rss_feeds_manage_delete_error">¡El canal no pudo ser eliminado!</string>
|
||||
<string name="blogs_rss_feeds_manage_empty_state">No hay canales RSS que mostrar\n\nToque el icono + para importar un feed</string>
|
||||
<string name="blogs_rss_feeds_manage_error">Hubo un problema cargando tus canales RSS. Por favor, prueba más tarde.</string>
|
||||
<!--Settings Display-->
|
||||
<string name="display_settings_title">Mostrar</string>
|
||||
<!--Settings Network-->
|
||||
<string name="network_settings_title">Redes</string>
|
||||
<string name="bluetooth_setting">Conectar mediante Bluetooth</string>
|
||||
|
||||
@@ -303,6 +303,11 @@
|
||||
<string name="blogs_rss_feeds_manage_delete_error">Ezin izan da jarioa ezabatu!</string>
|
||||
<string name="blogs_rss_feeds_manage_empty_state">RSS jariorik ez erakusteko\n\nSakatu + ikonoa jario bat inportatzeko</string>
|
||||
<string name="blogs_rss_feeds_manage_error">Arazo bat egon da zure jarioak kargatzean. Saiatu berriro geroago.</string>
|
||||
<!--Settings Display-->
|
||||
<string name="pref_language_title">Hizkuntza eta eskualdea</string>
|
||||
<string name="pref_language_changed">Ezarpen hauek Brfiar berrabiaraztean jarriko dira indarrean. Amaitu saioa eta berrabiarazi Briar.</string>
|
||||
<string name="pref_language_default">Sisteman lehenetsia</string>
|
||||
<string name="display_settings_title">Erakutsi</string>
|
||||
<!--Settings Network-->
|
||||
<string name="network_settings_title">Sareak</string>
|
||||
<string name="bluetooth_setting">Konektatu Bluetooth bidez</string>
|
||||
|
||||
@@ -344,6 +344,7 @@
|
||||
|
||||
برای وارد کردن خوراک روی آیکون + کلیک کنید</string>
|
||||
<string name="blogs_rss_feeds_manage_error">مشکلی با بارگذاری فیدهای شما وجود داشت. لطفا بعدا امتحان کنید.</string>
|
||||
<!--Settings Display-->
|
||||
<!--Settings Network-->
|
||||
<string name="network_settings_title">شبکه ها</string>
|
||||
<string name="bluetooth_setting">اتصال از طریق بلوتوث</string>
|
||||
|
||||
@@ -134,6 +134,7 @@
|
||||
<string name="introduction_onboarding_title">Esittele yhteyshenkilösi</string>
|
||||
<string name="introduction_onboarding_text">Voit esitellä muita käyttäjiä toisilleen, niin että heidän ei tarvitse tavata kasvokkain ollakseen yhteydessä Briarin kautta.</string>
|
||||
<string name="introduction_activity_title">Valitse yhteystieto</string>
|
||||
<string name="introduction_not_possible">Sinulla on jo yksi esittely käynnissä näillä yhteystiedoilla. Odota kunnes se tulee valmiiksi. Tämä voi kestää jonkin aikaa jos sinä tai yhteyshenkilösi ovat harvoin netissä.</string>
|
||||
<string name="introduction_message_title">Esittele yhteyshenkilö</string>
|
||||
<string name="introduction_message_hint">Lisää viesti (valinnainen)</string>
|
||||
<string name="introduction_button">Tee esittely</string>
|
||||
@@ -302,6 +303,11 @@
|
||||
<string name="blogs_rss_feeds_manage_delete_error">Syötteen poistaminen epäonnistui!</string>
|
||||
<string name="blogs_rss_feeds_manage_empty_state">Ei RSS syötteitä\n\nNapauta + nappia lisätäksesi syötteen</string>
|
||||
<string name="blogs_rss_feeds_manage_error">Syötteiden lataamisessa tapahtui virhe. Yritä myöhemmin uudelleen.</string>
|
||||
<!--Settings Display-->
|
||||
<string name="pref_language_title">Kieli & alue</string>
|
||||
<string name="pref_language_changed">Tämä asetus otetaan käyttöön kun uudelleenkäynnistät Briarin. Kirjaudu ulos ja käynnistä Briar uudelleen.</string>
|
||||
<string name="pref_language_default">Järjestelmäoletus</string>
|
||||
<string name="display_settings_title">Näytä</string>
|
||||
<!--Settings Network-->
|
||||
<string name="network_settings_title">Verkot</string>
|
||||
<string name="bluetooth_setting">Yhdistä Bluetoothin kautta</string>
|
||||
@@ -337,12 +343,16 @@
|
||||
<string name="notification_settings_title">Ilmoitukset</string>
|
||||
<string name="notify_private_messages_setting_title">Yksityisviestit</string>
|
||||
<string name="notify_private_messages_setting_summary">Näytä ilmoitukset yksityisviesteistä</string>
|
||||
<string name="notify_private_messages_setting_summary_26">Aseta ilmoitukset yksityisviesteille</string>
|
||||
<string name="notify_group_messages_setting_title">Ryhmäviestit</string>
|
||||
<string name="notify_group_messages_setting_summary">Näytä ilmoitukset ryhmäviesteistä</string>
|
||||
<string name="notify_group_messages_setting_summary_26">Aseta ilmoitukset ryhmäviesteille</string>
|
||||
<string name="notify_forum_posts_setting_title">Foorumikirjoitukset</string>
|
||||
<string name="notify_forum_posts_setting_summary">Näytä ilmoitukset foorumikirjoituksista</string>
|
||||
<string name="notify_forum_posts_setting_summary_26">Aseta ilmoitukset foorumikirjoituksille</string>
|
||||
<string name="notify_blog_posts_setting_title">Blogikirjoitukset</string>
|
||||
<string name="notify_blog_posts_setting_summary">Näytä ilmoitukset blogikirjoituksista</string>
|
||||
<string name="notify_blog_posts_setting_summary_26">Aseta ilmoitukset blogikirjoituksille</string>
|
||||
<string name="notify_vibration_setting">Värinä</string>
|
||||
<string name="notify_lock_screen_setting_title">Lukitusnäyttö</string>
|
||||
<string name="notify_lock_screen_setting_summary">Näytä ilmoitukset lukitusnäytöllä</string>
|
||||
|
||||
@@ -303,6 +303,11 @@
|
||||
<string name="blogs_rss_feeds_manage_delete_error">Impossible de supprimer le fil !</string>
|
||||
<string name="blogs_rss_feeds_manage_empty_state">Aucun fil RSS à afficher\n\nTouchez l’icône + pour importer un fil</string>
|
||||
<string name="blogs_rss_feeds_manage_error">Un problème est survenu lors du chargement de vos fils. Veuillez ressayer ultérieurement.</string>
|
||||
<!--Settings Display-->
|
||||
<string name="pref_language_title">Langue et région</string>
|
||||
<string name="pref_language_changed">Ce paramètre prendra effet une fois que vous aurez redémarré Briar. Veuillez vous déconnecter et redémarrer Briar.</string>
|
||||
<string name="pref_language_default">Valeur par défaut du système</string>
|
||||
<string name="display_settings_title">Affichage</string>
|
||||
<!--Settings Network-->
|
||||
<string name="network_settings_title">Réseaux</string>
|
||||
<string name="bluetooth_setting">Se connecter par Bluetooth</string>
|
||||
|
||||
@@ -303,6 +303,7 @@
|
||||
<string name="blogs_rss_feeds_manage_delete_error">Non se puido eliminar a fonte!</string>
|
||||
<string name="blogs_rss_feeds_manage_empty_state">Sen fontes RSS que mostrar\n\nToque na icona + para importar unha fonte</string>
|
||||
<string name="blogs_rss_feeds_manage_error">Aconteceu un problema ao cargar as súas fontes. Por favor, inténteo máis tarde.</string>
|
||||
<!--Settings Display-->
|
||||
<!--Settings Network-->
|
||||
<string name="network_settings_title">Redes</string>
|
||||
<string name="bluetooth_setting">Conectar vía Bluetooth</string>
|
||||
|
||||
@@ -233,6 +233,8 @@
|
||||
<string name="blogs_rss_feeds_manage_author">מחבר:</string>
|
||||
<string name="blogs_rss_feeds_manage_updated">עודכן לאחרונה:</string>
|
||||
<string name="blogs_rss_remove_feed_ok">להסיר</string>
|
||||
<!--Settings Display-->
|
||||
<string name="display_settings_title">מציג</string>
|
||||
<!--Settings Network-->
|
||||
<!--Settings Security and Panic-->
|
||||
<string name="security_settings_title">אבטחה</string>
|
||||
|
||||
@@ -303,6 +303,7 @@
|
||||
<string name="blogs_rss_feeds_manage_delete_error">फीड हटाया नहीं जा सका!</string>
|
||||
<string name="blogs_rss_feeds_manage_empty_state">कोई आरएसएस फ़ीड दिखाने के लिए फ़ीड नहीं करता \ n \ n फ़ीड आयात करने के लिए + आइकन टैप करें</string>
|
||||
<string name="blogs_rss_feeds_manage_error">आपकी फ़ीड लोड करने में एक समस्या थी बाद में पुन: प्रयास करें।</string>
|
||||
<!--Settings Display-->
|
||||
<!--Settings Network-->
|
||||
<string name="network_settings_title">नेटवर्क</string>
|
||||
<string name="bluetooth_setting">ब्लूटूथ के माध्यम से कनेक्ट करें</string>
|
||||
|
||||
@@ -303,6 +303,11 @@
|
||||
<string name="blogs_rss_feeds_manage_delete_error">Non è stato possibile cancellare il feed!</string>
|
||||
<string name="blogs_rss_feeds_manage_empty_state">Nessun feed RSS da mostrare\n\nClicca l\'icona + per importare un feed</string>
|
||||
<string name="blogs_rss_feeds_manage_error">C\'è stato un problema nel caricare i tuoi feeds. Per favore riprova fra poco.</string>
|
||||
<!--Settings Display-->
|
||||
<string name="pref_language_title">Lingua & regione</string>
|
||||
<string name="pref_language_changed">Questa impostazione avrà effetto quando riavvierai Briar. Per favore, esci e riavvia Briar.</string>
|
||||
<string name="pref_language_default">Default del sistema</string>
|
||||
<string name="display_settings_title">Visualizza</string>
|
||||
<!--Settings Network-->
|
||||
<string name="network_settings_title">Reti</string>
|
||||
<string name="bluetooth_setting">Connessione attraverso Bluetooth</string>
|
||||
|
||||
@@ -101,6 +101,8 @@
|
||||
<string name="blogs_rss_feeds_manage_author">著者:</string>
|
||||
<string name="blogs_rss_feeds_manage_updated">最終更新:</string>
|
||||
<string name="blogs_rss_remove_feed_ok">解除</string>
|
||||
<!--Settings Display-->
|
||||
<string name="display_settings_title">表示</string>
|
||||
<!--Settings Network-->
|
||||
<string name="tor_network_setting_never">二度としない</string>
|
||||
<!--Settings Security and Panic-->
|
||||
|
||||
@@ -270,6 +270,8 @@
|
||||
<string name="blogs_rss_remove_feed_ok">Fjern</string>
|
||||
<string name="blogs_rss_feeds_manage_delete_error">Strømmen kunne ikke fjernes!</string>
|
||||
<string name="blogs_rss_feeds_manage_error">Feil ved lasting av dine strømmer. Prøv igjen senere.</string>
|
||||
<!--Settings Display-->
|
||||
<string name="display_settings_title">Vis</string>
|
||||
<!--Settings Network-->
|
||||
<string name="network_settings_title">Nettverk</string>
|
||||
<string name="bluetooth_setting">Koble til via Blåtann</string>
|
||||
|
||||
@@ -303,6 +303,8 @@
|
||||
<string name="blogs_rss_feeds_manage_delete_error">De feed kon niet worden verwijderd.</string>
|
||||
<string name="blogs_rss_feeds_manage_empty_state">Geen RSS-feeds om te tonen\n\nTap op het +-icoon om een feed te importeren</string>
|
||||
<string name="blogs_rss_feeds_manage_error">Er was een probleem met het laden van je feeds. Probeer het later nog een keer.</string>
|
||||
<!--Settings Display-->
|
||||
<string name="display_settings_title">Weergeven</string>
|
||||
<!--Settings Network-->
|
||||
<string name="network_settings_title">Netwerken</string>
|
||||
<string name="bluetooth_setting">Verbind via Bluetooth</string>
|
||||
|
||||
@@ -263,6 +263,7 @@ Volètz suprimir vòstre compte e ne crear un nòu ?\n
|
||||
<string name="blogs_rss_remove_feed_ok">Suprimir</string>
|
||||
<string name="blogs_rss_feeds_manage_delete_error">Impossible de suprimir lo flux !</string>
|
||||
<string name="blogs_rss_feeds_manage_error">Error en cargar vòstres fluxes. Ensajatz mai tard.</string>
|
||||
<!--Settings Display-->
|
||||
<!--Settings Network-->
|
||||
<string name="network_settings_title">Ret</string>
|
||||
<string name="bluetooth_setting">Se connectar per Bluetooth</string>
|
||||
|
||||
@@ -29,9 +29,21 @@
|
||||
<string name="sign_in_button">Zaloguj Się</string>
|
||||
<string name="forgotten_password">Przypomnij hasło</string>
|
||||
<string name="dialog_title_lost_password">Nie pamiętam hasła</string>
|
||||
<string name="dialog_message_lost_password">Twoje konto Briar jest zaszyfrowane na Twoim urządzeniu nie w chmurze, więc nie będzie można zresetować Twojego hasła. Czy chcesz usunąć swoje konto i stworzyć nowe?\n\nUwaga: Twoje hasła, kontakty i wiadomości będą utracone.</string>
|
||||
<string name="startup_failed_notification_title">Briar nie mógł się uruchomić</string>
|
||||
<string name="startup_failed_notification_text">Więcej informacji</string>
|
||||
<string name="startup_failed_activity_title">Briar nie mógł się uruchomić</string>
|
||||
<string name="startup_failed_db_error">Niestety baza danych Briar została uszkodzona i nie można jej naprawić. Twoje konto, dane i kontakty zostały utracone. Niestety musisz przeinstalować Briar lub utworzyć nowe konto wybierając opcje \"Zapomniałem hasła\".</string>
|
||||
<string name="startup_failed_data_too_old_error">Twoje konto zostało stworzone przez starszą wersję aplikacji i nie może zostać otwarte w tej wersji. Musisz zainstalować starszą wersję aplikacji lub utworzyć nowe konto klikając \"Zapomniałem hasła\".</string>
|
||||
<string name="startup_failed_data_too_new_error">Ta wersja aplikacji jest zbyt stara. Proszę zaktualizować program do najnowszej wersji i spróbować ponownie.</string>
|
||||
<string name="startup_failed_service_error">Briar nie był w stanie uruchomić wybranego rozszerzenia. Przeinstalowanie Briar zwykle rozwiązuje ten problem. Pamiętaj jednak, że stracisz wtedy swoje konto i wszystkie powiązanie z nim dane, gdyż Briar nie używa centralnych serwerów by przechowywać dane.</string>
|
||||
<plurals name="expiry_warning">
|
||||
<item quantity="one">To jest testowa wersja Briar. Twoje konto wygaśnie za %d dzień i nie będzie odnowione.</item>
|
||||
<item quantity="few">To jest testowa wersja Briar. Twoje konto wygaśnie za %d dni i nie będzie odnowione.</item>
|
||||
<item quantity="many">To jest testowa wersja Briar. Twoje konto wygaśnie za %d dni i nie będzie odnowione.</item>
|
||||
<item quantity="other">To jest testowa wersja Briar. Twoje konto wygaśnie za %d dni i nie będzie odnowione.</item>
|
||||
</plurals>
|
||||
<string name="expiry_update">Okres testowania został wydłużony. Twoje konto wygaśnie za %d dni.</string>
|
||||
<string name="expiry_date_reached">Ten program wygasł.\nDziękujemy za testy!</string>
|
||||
<string name="download_briar">Aby dalej korzystać z Briar, proszę pobrać wersję 1.0.</string>
|
||||
<string name="create_new_account">Będzie potrzeba stworzenia nowego konta, ale możesz użyć takiej samej nazwy użytkownika.</string>
|
||||
@@ -122,12 +134,33 @@
|
||||
<string name="contact_already_exists">Kontakt %s już istnieje</string>
|
||||
<string name="contact_exchange_failed">Wymiana kontaktów nie powiodła się</string>
|
||||
<string name="qr_code_invalid">Kod QR jest nie prawidłowy</string>
|
||||
<string name="qr_code_unsupported">Kod QR który chcecsz zeskanować jest z wersji %s która nie jest już wspierana.\n\nProszę upewnić się czy oboje używacie najnowszej wersji i spróbować ponownie.</string>
|
||||
<string name="camera_error">Błąd aparatu</string>
|
||||
<string name="connecting_to_device">Łączenie z urządzeniem\u2026</string>
|
||||
<string name="authenticating_with_device">Autoryzowanie z urządzeniem\u2026</string>
|
||||
<string name="connection_aborted_local">Połączenie przerwane! To może oznaczać że ktoś próbuje podszyć się pod Ciebie</string>
|
||||
<string name="connection_aborted_remote">Połączenie przerwane przez kontakt! To może oznaczać, że ktoś próbuje zagłuszyć wasze połączenie</string>
|
||||
<!--Introductions-->
|
||||
<string name="introduction_onboarding_title">Udostępnij swoje kontakty.</string>
|
||||
<string name="introduction_onboarding_text">Możesz udostępniać kontakty, tak aby osoby nie musiały spotykać się osobiście.</string>
|
||||
<string name="introduction_activity_title">Wybierz kontakt</string>
|
||||
<string name="introduction_not_possible">Masz już jedno udostępnianie w toku. Proszę pozwolić aby proces zakończył się. Jeśli kontakty są rzadko online, może to zabrać trochę czasu.</string>
|
||||
<string name="introduction_message_title">Udostępnij kontakty</string>
|
||||
<string name="introduction_message_hint">Dodaj wiadomość (opcjonalne)</string>
|
||||
<string name="introduction_button">Udostępnij</string>
|
||||
<string name="introduction_sent">Udostępnianie zostało wysłane.</string>
|
||||
<string name="introduction_error">Wystąpił błąd podczas udostępniania.</string>
|
||||
<string name="introduction_response_error">Wystąpił błąd podczas odpowiedzi na udostępnienie</string>
|
||||
<string name="introduction_request_sent">Udostępniłeś %1$s kontaktowi %2$s.</string>
|
||||
<string name="introduction_request_received">%1$s poprosił o udostępnienie Twojego kontaktu dla %2$s. Czy chcesz dodać %2$s do listy kontaktów?</string>
|
||||
<string name="introduction_request_exists_received">%1$s poprosił o udostępnienie Twojego kontaktu dla %2$s, ale %2$s jest już na liście Twoich kontaktów. Jednak %1$s o tym nie wie i możesz odpowiedzieć:</string>
|
||||
<string name="introduction_request_answered_received">%1$s poprosił aby udostępnić Twój kontakt dla %2$s.</string>
|
||||
<string name="introduction_response_accepted_sent">Zaakceptowałeś kontakt %1$s.</string>
|
||||
<string name="introduction_response_accepted_sent_info">Zanim %1$s zostanie dodany jako Twój kontakt, musi także zaakceptować udostępnienie. To może trochę potrwać.</string>
|
||||
<string name="introduction_response_declined_sent">Odrzuciłeś udostępnienie kontaktu do %1$s.</string>
|
||||
<string name="introduction_response_accepted_received">%1$s zaakceptował udostępnienie kontaktu %2$s</string>
|
||||
<string name="introduction_response_declined_received">%1$s odrzucił udostępnienie kontaktu %2$s</string>
|
||||
<string name="introduction_response_declined_received_by_introducee">%1$s mówi, że %2$s odrzucił udostępnienie kontaktu.</string>
|
||||
<plurals name="introduction_notification_text">
|
||||
<item quantity="one">Nowy kontakt został dodany.</item>
|
||||
<item quantity="few">%d nowych kontaktów zostało dodanych.</item>
|
||||
@@ -135,6 +168,7 @@
|
||||
<item quantity="other">%d nowych kontaktów zostało dodanych.</item>
|
||||
</plurals>
|
||||
<!--Private Groups-->
|
||||
<string name="groups_list_empty">Brak grup do wyświetlenia\n\nDotknij ikonki + aby stworzyć grupę bądź poprosić kontakty o udostępnienie grup</string>
|
||||
<string name="groups_created_by">Stworzone przez %s</string>
|
||||
<plurals name="messages">
|
||||
<item quantity="one">%d wiadomość</item>
|
||||
@@ -162,8 +196,10 @@
|
||||
<string name="groups_leave_dialog_message">Jesteś pewny, że chcesz opuścić tą grupę?</string>
|
||||
<string name="groups_dissolve">Rozwiąż Grupę</string>
|
||||
<string name="groups_dissolve_dialog_title">Potwierdź Rozwiązanie Grupy</string>
|
||||
<string name="groups_dissolve_dialog_message">Czy chcesz rozwiązać tą grupę?\n\nWszyscy członkowie nie będą mogli kontynuować swoich konwersacji ani otrzymywać wiadomości.</string>
|
||||
<string name="groups_dissolve_button">Rozwiąż</string>
|
||||
<string name="groups_dissolved_dialog_title">Grupa Została Rozwiązana</string>
|
||||
<string name="groups_dissolved_dialog_message">Twórca tej grupy rozwiązał ją.\n\nNie możesz już więcej pisać z członkami grupy ani czytać postów które zostały już napisane.</string>
|
||||
<!--Private Group Invitations-->
|
||||
<string name="groups_invitations_title">Zaproszenia do Grup</string>
|
||||
<string name="groups_invitations_invitation_sent">Zaprosiłeś %1$s aby dołączył do grupy \"%2$s\".</string>
|
||||
@@ -182,7 +218,14 @@
|
||||
<string name="groups_invitations_response_declined_received">%s odrzucił zaproszenie do grupy.</string>
|
||||
<string name="sharing_status_groups">Tylko osoba która utworzyła grupę może zapraszać nowych użytkowników do grupy. Poniżej są osoby, które dołączyły do grupy.</string>
|
||||
<!--Private Groups Revealing Contacts-->
|
||||
<string name="groups_reveal_contacts">Ujawnij kontakty</string>
|
||||
<string name="groups_reveal_dialog_message">Możesz wybrać czy chcesz ujawnić kontakty dla wszystkich aktualnych i przyszłych członków tej grupy.\n\nUjawnienie kontaktów sprawia że połączenie do grupy jest szybsze i bardziej stabilne, ponieważ możesz komunikować się z ujawnionymi kontaktami nawet wtedy kiedy twórca grupy jest offline.</string>
|
||||
<string name="groups_reveal_visible">Powiązanie kontaktów jest widoczne dla grupy</string>
|
||||
<string name="groups_reveal_visible_revealed_by_us">Relacje kontaktów są widoczne dla grupy (ujawnione przez Ciebie)</string>
|
||||
<string name="groups_reveal_visible_revealed_by_contact">Relacje kontaktów są widoczne dla grupy (ujawnione przez %s)</string>
|
||||
<string name="groups_reveal_invisible">Relacje kontaktów są nie widoczne dla grupy</string>
|
||||
<!--Forums-->
|
||||
<string name="no_forums">Brak for do wyświetlenia\n\nDotknij ikonę + aby stworzyć forum, lub poproś swoje kontakty o udostępnienie Ci for.</string>
|
||||
<string name="create_forum_title">Stwórz Forum</string>
|
||||
<string name="choose_forum_hint">Wybierz nazwę dla swojego forum</string>
|
||||
<string name="create_forum_button">Stwórz Forum</string>
|
||||
@@ -195,19 +238,27 @@
|
||||
<item quantity="many">%d postów</item>
|
||||
<item quantity="other">%d postów</item>
|
||||
</plurals>
|
||||
<string name="forum_new_entry_posted">Wejście na forum zapisane</string>
|
||||
<string name="forum_new_message_hint">Nowy Wpis</string>
|
||||
<string name="forum_message_reply_hint">Nowa Odpowiedź</string>
|
||||
<string name="btn_reply">Odpowiedz</string>
|
||||
<string name="forum_leave">Opuść Forum</string>
|
||||
<string name="dialog_title_leave_forum">Potwierdź Opuszczenie Forum</string>
|
||||
<string name="dialog_message_leave_forum">Jesteś pewny, że chcesz opuścić to forum?\n\nWszystkie kontakty którym udostępniłeś to forum mogą przestać otrzymywać powiadomienia.</string>
|
||||
<string name="dialog_button_leave">Opuść</string>
|
||||
<string name="forum_left_toast">Opuścił/a Forum</string>
|
||||
<!--Forum Sharing-->
|
||||
<string name="forum_share_button">Udostępnij Forum</string>
|
||||
<string name="contacts_selected">Zaznaczone kontakty</string>
|
||||
<string name="activity_share_toolbar_header">Wybierz Kontakty</string>
|
||||
<string name="no_contacts_selector">Brak kontaktów do wyświetlenia\n\nWróć tu kiedy dodasz kontakt</string>
|
||||
<string name="forum_shared_snackbar">Forum udostępnione wybranym kontaktom</string>
|
||||
<string name="forum_share_message">Dodaj wiadomość (opcjonalne)</string>
|
||||
<string name="forum_share_error">Wystąpił problem podczas udostępniania tego forum.</string>
|
||||
<string name="forum_invitation_received">%1$s udostępnił Ci forum \"%2$s\"</string>
|
||||
<string name="forum_invitation_sent">Udostępniłeś forum \"%1$s\" użytkownikowi %2$s.</string>
|
||||
<string name="forum_invitations_title">Zaproszenia do for</string>
|
||||
<string name="forum_invitation_exists">Już zaakceptowałeś zaproszenie do tego forum.\n\nAkceptowanie większej ilości zaproszeń sprawi, że Twoje połączenie będzie szybsze i bardziej stabilne.</string>
|
||||
<string name="forum_joined_toast">Dołączył do forum</string>
|
||||
<string name="forum_declined_toast">Zaproszenie odrzucone</string>
|
||||
<string name="shared_by_format">Udostępnione przez %s</string>
|
||||
@@ -217,6 +268,8 @@
|
||||
<string name="forum_invitation_response_accepted_received">%s przyjął zaproszenie do forum.</string>
|
||||
<string name="forum_invitation_response_declined_received">%s odrzucił zaproszenie do forum.</string>
|
||||
<string name="sharing_status">Status Udostępniania</string>
|
||||
<string name="sharing_status_forum">Każdy członek tego forum może udostępnić je swoim kontaktom. Udostępniasz to forum następującym kontaktom. Mogą tu także być członkowie których nie możesz zobaczyć.</string>
|
||||
<string name="shared_with">Udostępniono %1$d (%2$d online)</string>
|
||||
<plurals name="forums_shared">
|
||||
<item quantity="one">%d forum udostępnione przez kontakty </item>
|
||||
<item quantity="few">%d for udostępnionych przez kontakty </item>
|
||||
@@ -233,7 +286,9 @@
|
||||
<string name="blogs_blog_post_created">Wpis na Bloga Utworzony</string>
|
||||
<string name="blogs_blog_post_received">Otrzymano Nowy Wpis z Bloga</string>
|
||||
<string name="blogs_blog_post_scroll_to">Przewiń Do</string>
|
||||
<string name="blogs_feed_empty_state">Brak postów do wyświetlenia\n\nPosty od Twoich kontaktów i blogów które subskrybujesz pojawią się tutaj\n\nDotknij ikonki długopisu aby napisać post</string>
|
||||
<string name="blogs_remove_blog">Usuń Blog</string>
|
||||
<string name="blogs_remove_blog_dialog_message">Jesteś pewny, że chcesz usunąć ten blog?\n\nPosty będą usunięte z Twojego urządzenia ale nie z urządzeń innych osób.\n\nWszystkie kontakty którym udostępniłeś ten blog mogą przestać otrzymywać powiadomienia.</string>
|
||||
<string name="blogs_remove_blog_ok">Usuń</string>
|
||||
<string name="blogs_blog_removed">Blog usunięty</string>
|
||||
<string name="blogs_reblog_comment_hint">Dodaj komentarz (opcjonalne)</string>
|
||||
@@ -252,6 +307,7 @@
|
||||
<string name="blogs_sharing_invitations_title">Zaproszenia do Blogów</string>
|
||||
<string name="blogs_sharing_joined_toast">Zasubskrybowano blog</string>
|
||||
<string name="blogs_sharing_declined_toast">Zaproszenie odrzucone</string>
|
||||
<string name="sharing_status_blog">Każdy kto subskrybuje blog może go udostępnić swoim kontaktom. Udostępniasz ten blog następującym kontaktom. Mogą być tu także subskrybenci których nie możesz zobaczyć.</string>
|
||||
<!--RSS Feeds-->
|
||||
<string name="blogs_rss_feeds_import">Zaimportuj RSS</string>
|
||||
<string name="blogs_rss_feeds_import_button">Zaimportuj</string>
|
||||
@@ -262,8 +318,16 @@
|
||||
<string name="blogs_rss_feeds_manage_author">Autor:</string>
|
||||
<string name="blogs_rss_feeds_manage_updated">Ostatnio Zaktualizowane:</string>
|
||||
<string name="blogs_rss_remove_feed">Usuń RSS</string>
|
||||
<string name="blogs_rss_remove_feed_dialog_message">Jesteś pewny, że chcesz usunąć tą tablicę?\n\nPosty będą usunięte z Twojego urządzenia ale nie z urządzeń innych ludzi.\n\nWszystkie kontakty którym udostępniłeś ten blog mogą przestać otrzymywać powiadomienia.</string>
|
||||
<string name="blogs_rss_remove_feed_ok">Usuń</string>
|
||||
<string name="blogs_rss_feeds_manage_delete_error">Kanał nie mógł zostać usunięty!</string>
|
||||
<string name="blogs_rss_feeds_manage_empty_state">Brak RSS do wyświetlenia\n\nDotknij ikonki + aby zaimportować</string>
|
||||
<string name="blogs_rss_feeds_manage_error">Wystąpił problem podczas ładowania twoich RSS. Proszę spróbować ponownie.</string>
|
||||
<!--Settings Display-->
|
||||
<string name="pref_language_title">Język & region</string>
|
||||
<string name="pref_language_changed">Aby zastosować ustawienia musisz zrestartować Briar. Proszę się wylogować i zrestartować Briar.</string>
|
||||
<string name="pref_language_default">Domyślny systemu</string>
|
||||
<string name="display_settings_title">Wyświetl</string>
|
||||
<!--Settings Network-->
|
||||
<string name="network_settings_title">Sieci</string>
|
||||
<string name="bluetooth_setting">Połącz przez Bluetooth</string>
|
||||
@@ -319,7 +383,11 @@
|
||||
<string name="cannot_load_ringtone">Nie mogę załadować dzwonka</string>
|
||||
<!--Settings Feedback-->
|
||||
<string name="feedback_settings_title">Wsparcie</string>
|
||||
<string name="send_feedback">Wyślij wsparcie</string>
|
||||
<!--Link Warning-->
|
||||
<string name="link_warning_title">Uważaj na link</string>
|
||||
<string name="link_warning_intro">Otwierasz link w zewnętrznej aplikacji.</string>
|
||||
<string name="link_warning_text">Może to posłużyć aby Cię zidentyfikować. Zastanów się czy ufasz osobie która wysłała Ci ten link i rozważ otwarcie go za pomocą przeglądarki Orfox.</string>
|
||||
<string name="link_warning_open_link">Otwórz Link</string>
|
||||
<!--Crash Reporter-->
|
||||
<string name="crash_report_title">Zgłoś błąd w Briar</string>
|
||||
@@ -341,10 +409,12 @@
|
||||
<string name="progress_title_logout">Wylogowywanie z Briar...</string>
|
||||
<!--Screen Filters & Tapjacking-->
|
||||
<string name="screen_filter_title">Wykryto nakładkę na ekran</string>
|
||||
<string name="screen_filter_body">Inna aplikacja jest rysowana nad Briar. Aby bronić Twoje bezpieczeństwo, Briar nie będzie odpowiadał na dotyk gdy inna aplikacja jest rysowana nad nim.\n\nNastępujące aplikacje mogą być przyczyną:\n\n%1$s</string>
|
||||
<string name="screen_filter_allow">Pozwól tym aplikacjom na pozostanie na pierwszym planie</string>
|
||||
<!--Permission Requests-->
|
||||
<string name="permission_camera_title">Dostęp do aparatu</string>
|
||||
<string name="permission_camera_request_body">Aby zeskanować kod QR, Briar potrzebuje mieć dostęp do aparatu.</string>
|
||||
<string name="permission_camera_denied_body">Odmówiłeś dostępu do kamery, lecz dodawanie kontaktów tego wymaga.\n\nProszę udzielić dostępu.</string>
|
||||
<string name="permission_camera_denied_toast">Dostęp do aparatu nie został przyznany</string>
|
||||
<string name="qr_code">Kod QR</string>
|
||||
<string name="show_qr_code_fullscreen">Pokaż QR na pełnym ekranie</string>
|
||||
|
||||
@@ -301,6 +301,8 @@
|
||||
<string name="blogs_rss_feeds_manage_delete_error">O Feed não pode ser deletado!</string>
|
||||
<string name="blogs_rss_feeds_manage_empty_state">Nenhum feed RSS para ser exibido\n\nPressione o ícone + para importar um feed</string>
|
||||
<string name="blogs_rss_feeds_manage_error">Houve um problema ao carregar seus Feeds. Por favor tente novamente.</string>
|
||||
<!--Settings Display-->
|
||||
<string name="display_settings_title">Visualização</string>
|
||||
<!--Settings Network-->
|
||||
<string name="network_settings_title">Redes</string>
|
||||
<string name="bluetooth_setting">Conectar via Bluetooth</string>
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
<string name="setup_name_explanation">Numele dumneavoastră va fi afișat lângă orice conținut trimiteți. Nu îl veți putea schimba după crearea contului.</string>
|
||||
<string name="setup_next">Următorul</string>
|
||||
<string name="setup_password_intro">Alegeți o parolă</string>
|
||||
<string name="setup_password_explanation">Contul dvs. Briar este stocat criptat pe dispozitiv, nu în cloud. Dacă vă uitați parola sau ștergeți Briar, nu veți putea să vă recuperați contul.\n\nAlegeți o parolă lungă greu de ghicit, de exemplu, patru cuvinte aleatorii sau zece litere, numere și simboluri aleatoare.</string>
|
||||
<string name="setup_doze_title">Conexiuni în fundal</string>
|
||||
<string name="setup_doze_intro">Pentru a primi mesaje, Briar are nevoie să stea conectat în fundal.</string>
|
||||
<string name="setup_doze_explanation">Pentru a primi mesaje, Briar are nevoie să stea conectat în fundal. Vă rugăm să dezactivați optimizarea bateriei ca Briar să rămână conectat.</string>
|
||||
@@ -28,10 +29,14 @@
|
||||
<string name="sign_in_button">Autentificare</string>
|
||||
<string name="forgotten_password">Am uitat parola</string>
|
||||
<string name="dialog_title_lost_password">Parolă uitată</string>
|
||||
<string name="dialog_message_lost_password">Contul dvs. Briar este stocat criptat pe dispozitiv, nu în cloud. Dacă vă uitați parola sau ștergeți Briar, nu veți putea să vă recuperați contul. Doriți să vă ștergeți contul și să începeți din nou?\n\nAtenție: identitățile, contactele și mesajele dvs. vor fi pierdute definitiv.</string>
|
||||
<string name="startup_failed_notification_title">Briar nu a putut pornii</string>
|
||||
<string name="startup_failed_notification_text">Atingeți pentru informații suplimentare</string>
|
||||
<string name="startup_failed_activity_title">Eroare de pornire Briar</string>
|
||||
<string name="startup_failed_db_error">Din anumite motive, baza dvs. de date Briar este deteriorată fără vreo posibilitate de a o recupera. Contul dvs., datele dvs. și toate persoanele de contact sunt pierdute. Din nefericire, trebuie să reinstalați Briar sau să creați un nou cont, selectând \"Am uitat parola\" la promptul de parolă.</string>
|
||||
<string name="startup_failed_data_too_old_error">Contul dvs. a fost creat cu o versiune veche a acestei aplicații și nu poate fi deschis cu această versiune. Trebuie fie să reinstalați versiunea veche, fie să configurați un nou cont, selectând \"Am uitat parola\" la solicitarea de a introduce parola.</string>
|
||||
<string name="startup_failed_data_too_new_error">Această versiune a aplicației este prea veche. Vă rugăm să actualizați la cea mai nouă versiune și să încercați din nou.</string>
|
||||
<string name="startup_failed_service_error">Briar nu a reușit să pornească un plugin necesar. Reinstalarea lui Briar rezolvă de obicei această problemă. Cu toate acestea, rețineți că după aceasta veți pierde contul și toate datele asociate, deoarece Briar nu utilizează serverele centrale pentru a stoca date.</string>
|
||||
<plurals name="expiry_warning">
|
||||
<item quantity="one">Aceasta este o versiune de test pentru Briar. Contul dumneavoastră va expira în %d zi și nu se poate reînnoi</item>
|
||||
<item quantity="few">Aceasta este o versiune de test pentru Briar. Contul dumneavoastră va expira în %d zile și nu se poate reînnoi.</item>
|
||||
@@ -124,6 +129,7 @@
|
||||
<string name="contact_already_exists">Contactul %s există deja</string>
|
||||
<string name="contact_exchange_failed">Schimbul de date de contactului a eșuat</string>
|
||||
<string name="qr_code_invalid">Codul QR este invalid!</string>
|
||||
<string name="qr_code_unsupported">Codul QR pe care încercați să îl scanați aparține unei versiuni vechi %s care nu mai este acceptată.\n\nVă rugăm să vă asigurați că amândoi executați cea mai recentă versiune și încercați din nou.</string>
|
||||
<string name="camera_error">Eroare la camera foto</string>
|
||||
<string name="connecting_to_device">Conectare la dispozitiv\u2026</string>
|
||||
<string name="authenticating_with_device">Autentificare cu dispozitivul\u2026</string>
|
||||
@@ -133,6 +139,7 @@
|
||||
<string name="introduction_onboarding_title">Recomandați-vă contactele</string>
|
||||
<string name="introduction_onboarding_text">Puteți să vă recomandați contactele unele altora, încât sa nu fie nevoie ca să se vadă față în față pentru a se putea conecta la Briar.</string>
|
||||
<string name="introduction_activity_title">Alege un contact</string>
|
||||
<string name="introduction_not_possible">Ați trimis deja o solicitare la contacte. Așteptați să răspundă. Dacă dvs. sau persoanele persoanele de contact sunteți rareori online, este posibil să dureze ceva timp.</string>
|
||||
<string name="introduction_message_title">Recomandă contacte</string>
|
||||
<string name="introduction_message_hint">Adaugă un mesaj (opțional)</string>
|
||||
<string name="introduction_button">Fă o recomandare</string>
|
||||
@@ -144,6 +151,7 @@
|
||||
<string name="introduction_request_exists_received">%1$s a cerut să vă recomande către %2$s, dar %2$s este deja în lista dumneavoastră de contacte. Cum %1$s s-ar putea să nu știe asta, puteți totuși răspunde:</string>
|
||||
<string name="introduction_request_answered_received">%1$s vă recomandă pe %2$s.</string>
|
||||
<string name="introduction_response_accepted_sent">Ați acceptat recomandarea pentru %1$s.</string>
|
||||
<string name="introduction_response_accepted_sent_info">Înainte de a adăuga %1$s ca persoane de contact, este necesar ca ei tot să accepte solicitarea. Aceasta poate dura ceva timp.</string>
|
||||
<string name="introduction_response_declined_sent">Ați refuzat recomandarea pentru %1$s.</string>
|
||||
<string name="introduction_response_accepted_received">%1$s a acceptat recomandarea pentru %2$s.</string>
|
||||
<string name="introduction_response_declined_received">%1$s a refuzat recomandarea pentru %2$s.</string>
|
||||
@@ -181,8 +189,10 @@
|
||||
<string name="groups_leave_dialog_message">Sigur doriți să părăsiți acest grup?</string>
|
||||
<string name="groups_dissolve">Dizolvă grupul</string>
|
||||
<string name="groups_dissolve_dialog_title">Confirmă dizolvarea grupului</string>
|
||||
<string name="groups_dissolve_dialog_message">Sunteți sigur că doriți să dizolvați acest grup?\n\nToți ceilalți membri nu vor putea continua conversația lor și s-ar putea să nu primească cele mai recente mesaje.</string>
|
||||
<string name="groups_dissolve_button">Dizolvă</string>
|
||||
<string name="groups_dissolved_dialog_title">Grupul a fost dizolvat</string>
|
||||
<string name="groups_dissolved_dialog_message">Creatorul acestui grup a dizolvat-o.\n\nNu mai puteți scrie mesaje către grup și nu mai puteți primi postările scrise.</string>
|
||||
<!--Private Group Invitations-->
|
||||
<string name="groups_invitations_title">Invitații în grup</string>
|
||||
<string name="groups_invitations_invitation_sent">Ați invitat pe %1$s să se alăture grupului \"%2$s\".</string>
|
||||
@@ -201,6 +211,7 @@
|
||||
<string name="sharing_status_groups">Doar persoana care a creat grupul poate invita noi membrii. Mai jos vedeți membrii actuali ai grupului.</string>
|
||||
<!--Private Groups Revealing Contacts-->
|
||||
<string name="groups_reveal_contacts">Arată contactele</string>
|
||||
<string name="groups_reveal_dialog_message">Puteți alege să dezvăluiți contacte tuturor membrilor actuali și viitori acestui grup.\n\nDeschiderea contactelor face conexiunea dvs. cu grupul mai rapidă și mai sigură, deoarece puteți comunica cu persoanele de contact dezvăluite chiar și atunci când creatorul grupului este offline.</string>
|
||||
<string name="groups_reveal_visible">Lista de contacte este vizibilă grupului</string>
|
||||
<string name="groups_reveal_visible_revealed_by_us">Lista de contacte este vizibilă grupului (dezvăluită de dumneavoastră)</string>
|
||||
<string name="groups_reveal_visible_revealed_by_contact">Lista de contacte este vizibilă grupului (dezvăluită de %s)</string>
|
||||
@@ -225,6 +236,7 @@
|
||||
<string name="btn_reply">Răspunde</string>
|
||||
<string name="forum_leave">Părăsește forum</string>
|
||||
<string name="dialog_title_leave_forum">Confirmare părăsire forum</string>
|
||||
<string name="dialog_message_leave_forum">Sunteți sigur că doriți să părăsiți acest forum?\n\nOrice persoane de contact cu care ați împărtășit acest forum s-ar putea să nu mai primească actualizări.</string>
|
||||
<string name="dialog_button_leave">Părăsește</string>
|
||||
<string name="forum_left_toast">Forum părăsit</string>
|
||||
<!--Forum Sharing-->
|
||||
@@ -238,6 +250,7 @@
|
||||
<string name="forum_invitation_received">%1$s a partajat forumul \"%2$s\" cu dumneavoastră.</string>
|
||||
<string name="forum_invitation_sent">Ați partajat forumul \"%1$s\" cu %2$s.</string>
|
||||
<string name="forum_invitations_title">Invitații la forum</string>
|
||||
<string name="forum_invitation_exists">Ați acceptat deja o invitație la acest forum.\n\nAcceptarea mai multor invitații va face conexiunea dvs. la forum mai rapidă și mai sigură.</string>
|
||||
<string name="forum_joined_toast">Alăturare forum</string>
|
||||
<string name="forum_declined_toast">Invitația a fost refuzată</string>
|
||||
<string name="shared_by_format">Partajat de %s</string>
|
||||
@@ -247,6 +260,7 @@
|
||||
<string name="forum_invitation_response_accepted_received">%s a acceptat invitația la forum.</string>
|
||||
<string name="forum_invitation_response_declined_received">%s a refuzat invitația la forum.</string>
|
||||
<string name="sharing_status">Partajare stare</string>
|
||||
<string name="sharing_status_forum">Orice membru al unui forum poate să-l împărtășească cu contactele lor. Îți partajați acest forum cu următoarele persoane de contact. Pot exista și alți membri pe care nu îi puteți vedea.</string>
|
||||
<string name="shared_with">Partajat cu %1$d (%2$d conectați)</string>
|
||||
<plurals name="forums_shared">
|
||||
<item quantity="one">%d forum partajat de contacte</item>
|
||||
@@ -265,6 +279,7 @@
|
||||
<string name="blogs_blog_post_scroll_to">Derulează la</string>
|
||||
<string name="blogs_feed_empty_state">Nici un mesaj de arătat\n\nMesajele de la contactele dumneavoastră și de pe blog-urile la care sunteți abonați vor apărea aici\n\nAtingeți iconița cu creion pentru a scrie un mesaj</string>
|
||||
<string name="blogs_remove_blog">Elimină blog</string>
|
||||
<string name="blogs_remove_blog_dialog_message">Sunteți sigur că doriți să eliminați acest blog?\n\nPosturile vor fi eliminate de pe dispozitiv, dar nu și de dispozitivele altor persoane.\n\nOrice persoane de contact cu care ați partajat acest blog ar putea să nu mai primească actualizări.</string>
|
||||
<string name="blogs_remove_blog_ok">Eliminare</string>
|
||||
<string name="blogs_blog_removed">Blog eliminat</string>
|
||||
<string name="blogs_reblog_comment_hint">Adaugă un comentariu (opțional)</string>
|
||||
@@ -283,6 +298,7 @@
|
||||
<string name="blogs_sharing_invitations_title">Invitații la blog-uri</string>
|
||||
<string name="blogs_sharing_joined_toast">Abonare la blog</string>
|
||||
<string name="blogs_sharing_declined_toast">Invitația a fost refuzată</string>
|
||||
<string name="sharing_status_blog">Oricine abonat la un blog poate să-l împărtășească cu persoanele de contact. Partajați acest blog cu următoarele persoane de contact. Pot exista și alți abonați pe care nu îi puteți vedea.</string>
|
||||
<!--RSS Feeds-->
|
||||
<string name="blogs_rss_feeds_import">Importă flux RSS</string>
|
||||
<string name="blogs_rss_feeds_import_button">Importă</string>
|
||||
@@ -293,10 +309,16 @@
|
||||
<string name="blogs_rss_feeds_manage_author">Autor:</string>
|
||||
<string name="blogs_rss_feeds_manage_updated">Actualizat ultima dată:</string>
|
||||
<string name="blogs_rss_remove_feed">Șterge flux</string>
|
||||
<string name="blogs_rss_remove_feed_dialog_message">Sunteți sigur că doriți să eliminați acest feed?\n\nPosturile vor fi eliminate de pe dispozitiv, dar nu și de dispozitivele altor persoane.\n\nOrice persoane de contact cu care ați distribuit acest feed nu vor mai primi actualizări.</string>
|
||||
<string name="blogs_rss_remove_feed_ok">Eliminare</string>
|
||||
<string name="blogs_rss_feeds_manage_delete_error">Fluxul nu a putut fi șters!</string>
|
||||
<string name="blogs_rss_feeds_manage_empty_state">Nici un flux RSS de arătat\n\nAtingeți iconița + pentru a adăuga un flux</string>
|
||||
<string name="blogs_rss_feeds_manage_error">A apărut o eroare la încărcarea fluxurilor dumneavoastră. Vă rugăm să încercați din nou mai târziu.</string>
|
||||
<!--Settings Display-->
|
||||
<string name="pref_language_title">Limbă & Regiune</string>
|
||||
<string name="pref_language_changed">Această setare va avea efect după repornirea Briar. Vă rugăm să ieșiți din Briar și să reporniți aplicația.</string>
|
||||
<string name="pref_language_default">Implicit sistem</string>
|
||||
<string name="display_settings_title">Ecran</string>
|
||||
<!--Settings Network-->
|
||||
<string name="network_settings_title">Rețele</string>
|
||||
<string name="bluetooth_setting">Conectare prin Bluetooth</string>
|
||||
@@ -325,6 +347,7 @@
|
||||
<string name="lock_setting_title">Ieșire</string>
|
||||
<string name="lock_setting_summary">Ieși din Briar dacă un buton de panică este apăsat</string>
|
||||
<string name="purge_setting_title">Șterge cont</string>
|
||||
<string name="purge_setting_summary">Ștergeți contul Briar dacă este apăsat buton de panică. Atenție: aceasta va șterge definitiv identitatea, contactele și mesajele dvs.</string>
|
||||
<string name="uninstall_setting_title">Dezinstalare Briar</string>
|
||||
<string name="uninstall_setting_summary">Aceasta necesită o confirmare manuală în timpul unui eveniment de panică</string>
|
||||
<!--Settings Notifications-->
|
||||
@@ -355,6 +378,7 @@
|
||||
<!--Link Warning-->
|
||||
<string name="link_warning_title">Avertizare adresă</string>
|
||||
<string name="link_warning_intro">Urmează să deschideți adresa următoare cu o aplicație externă</string>
|
||||
<string name="link_warning_text">Acest lucru poate fi folosit pentru a vă identifica. Gândiți-vă dacă aveți încredere în persoana care v-a trimis acest link și luați în considerare deschiderea acestuia cu Orfox.</string>
|
||||
<string name="link_warning_open_link">Deschide adresă</string>
|
||||
<!--Crash Reporter-->
|
||||
<string name="crash_report_title">Raport de erori Briar</string>
|
||||
@@ -376,6 +400,7 @@
|
||||
<string name="progress_title_logout">Ieșire din Briar...</string>
|
||||
<!--Screen Filters & Tapjacking-->
|
||||
<string name="screen_filter_title">S-a detectat ceva suprapus pe ecran</string>
|
||||
<string name="screen_filter_body">O altă aplicație este suprapusă pe Briar. Pentru a vă proteja securitatea, Briar nu va reacționa la atingere în timp ce există o suprapunere.\n\nAplicațiile următoare pot fi suprapuse:\n\n%1$s</string>
|
||||
<string name="screen_filter_allow">Permite acestor aplicații să deseneze deasupra</string>
|
||||
<!--Permission Requests-->
|
||||
<string name="permission_camera_title">Permisiune de acces la camera foto</string>
|
||||
|
||||
@@ -323,6 +323,11 @@
|
||||
<string name="blogs_rss_feeds_manage_delete_error">Не удалось удалить RSS-канал!</string>
|
||||
<string name="blogs_rss_feeds_manage_empty_state">Нет RSS-лент для отображения\n\nКоснитесь значка + для импорта ленты</string>
|
||||
<string name="blogs_rss_feeds_manage_error">Ошибка при загрузке каналов. Повторите попытку позже.</string>
|
||||
<!--Settings Display-->
|
||||
<string name="pref_language_title">Язык & регион</string>
|
||||
<string name="pref_language_changed">Этот параметр вступит в силу после перезапуска Briar. Пожалуйста, выйдите и перезапустите Briar.</string>
|
||||
<string name="pref_language_default">По умолчанию</string>
|
||||
<string name="display_settings_title">Отображение</string>
|
||||
<!--Settings Network-->
|
||||
<string name="network_settings_title">Сети</string>
|
||||
<string name="bluetooth_setting">Подключение через Bluetooth</string>
|
||||
|
||||
@@ -303,6 +303,11 @@
|
||||
<string name="blogs_rss_feeds_manage_delete_error">S\’u fshi dot prurja!</string>
|
||||
<string name="blogs_rss_feeds_manage_empty_state">S’ka prurje RSS për shfaqje\n\nPrekni ikonën + që të importohet një prurje</string>
|
||||
<string name="blogs_rss_feeds_manage_error">Pati një problem me ngarkimin e prurjeve tuaja. Ju lutemi, riprovoni më vonë.</string>
|
||||
<!--Settings Display-->
|
||||
<string name="pref_language_title">Gjuhë & rajon</string>
|
||||
<string name="pref_language_changed">Ky rregullim do të hyjë në fuqi kur të rinisni Briar-in. Ju lutemi, bëni daljen nga llogaria dhe rinisni Briar-in.</string>
|
||||
<string name="pref_language_default">Parazgjedhje sistemi</string>
|
||||
<string name="display_settings_title">Shfaqje</string>
|
||||
<!--Settings Network-->
|
||||
<string name="network_settings_title">Rrjete</string>
|
||||
<string name="bluetooth_setting">Lidhu përmes Bluetooth-i</string>
|
||||
|
||||
@@ -212,6 +212,7 @@
|
||||
<string name="blogs_rss_remove_feed_ok">Ukloni</string>
|
||||
<string name="blogs_rss_feeds_manage_delete_error">Kanal nije bilo moguće ukloniti!</string>
|
||||
<string name="blogs_rss_feeds_manage_error">Došlo je do problema pri učitavanju vaših kanala. Probajte opet kasnije.</string>
|
||||
<!--Settings Display-->
|
||||
<!--Settings Network-->
|
||||
<string name="network_settings_title">Mreže</string>
|
||||
<string name="bluetooth_setting">Povežite se preko Bluetooth-a</string>
|
||||
|
||||
@@ -113,6 +113,8 @@
|
||||
<string name="blogs_rss_feeds_manage_author">Författare:</string>
|
||||
<string name="blogs_rss_feeds_manage_updated">Senast uppdaterad:</string>
|
||||
<string name="blogs_rss_remove_feed_ok">&Ta bort</string>
|
||||
<!--Settings Display-->
|
||||
<string name="display_settings_title">Visa</string>
|
||||
<!--Settings Network-->
|
||||
<string name="network_settings_title">Nätverk</string>
|
||||
<string name="bluetooth_setting">Anslut via Bluetooth</string>
|
||||
|
||||
@@ -240,6 +240,8 @@
|
||||
<string name="blogs_rss_remove_feed_ok">Tuşu Sil</string>
|
||||
<string name="blogs_rss_feeds_manage_delete_error">Besleme silinemedi!</string>
|
||||
<string name="blogs_rss_feeds_manage_error">Beslemeleriniz yüklenirken bir hata meydana geldi. Lütfen daha sonra tekrar deneyin.</string>
|
||||
<!--Settings Display-->
|
||||
<string name="display_settings_title">Görüntüle</string>
|
||||
<!--Settings Network-->
|
||||
<string name="network_settings_title">Ağlar</string>
|
||||
<string name="bluetooth_setting">Bluetooth ile Bağlan</string>
|
||||
|
||||
@@ -293,6 +293,7 @@
|
||||
<string name="blogs_rss_feeds_manage_delete_error">该订阅无法被删除!</string>
|
||||
<string name="blogs_rss_feeds_manage_empty_state">没有订阅内容\n\n点击 + 号导入一个 RSS 信息流</string>
|
||||
<string name="blogs_rss_feeds_manage_error">加载订阅时出错。请稍候再试。</string>
|
||||
<!--Settings Display-->
|
||||
<!--Settings Network-->
|
||||
<string name="network_settings_title">网络</string>
|
||||
<string name="bluetooth_setting">通过蓝牙连接</string>
|
||||
|
||||
@@ -18,4 +18,37 @@
|
||||
<item>1</item>
|
||||
<item>2</item>
|
||||
</string-array>
|
||||
</resources>
|
||||
<string-array name="pref_language_values">
|
||||
<item>default</item>
|
||||
<item>en-US</item>
|
||||
<item>ast</item>
|
||||
<item>bg</item>
|
||||
<item>br</item>
|
||||
<item>ca</item>
|
||||
<item>cs</item>
|
||||
<item>de</item>
|
||||
<item>es</item>
|
||||
<item>eu</item>
|
||||
<item>fa</item>
|
||||
<item>fi</item>
|
||||
<item>fr</item>
|
||||
<item>gl</item>
|
||||
<item>he</item>
|
||||
<item>hi</item>
|
||||
<item>it</item>
|
||||
<item>ja</item>
|
||||
<item>ms</item>
|
||||
<item>nb</item>
|
||||
<item>nl</item>
|
||||
<item>oc</item>
|
||||
<item>pl</item>
|
||||
<item>pt-BR</item>
|
||||
<item>ro</item>
|
||||
<item>ru</item>
|
||||
<item>sq</item>
|
||||
<item>sr</item>
|
||||
<item>sv</item>
|
||||
<item>tr</item>
|
||||
<item>zh-CN</item>
|
||||
</string-array>
|
||||
</resources>
|
||||
|
||||
@@ -323,6 +323,12 @@
|
||||
<string name="blogs_rss_feeds_manage_empty_state">No RSS feeds to show\n\nTap the + icon to import a feed</string>
|
||||
<string name="blogs_rss_feeds_manage_error">There was a problem loading your feeds. Please try again later.</string>
|
||||
|
||||
<!-- Settings Display -->
|
||||
<string name="pref_language_title">Language & region</string>
|
||||
<string name="pref_language_changed">This setting will take effect when you restart Briar. Please sign out and restart Briar.</string>
|
||||
<string name="pref_language_default">System default</string>
|
||||
<string name="display_settings_title">Display</string>
|
||||
|
||||
<!-- Settings Network -->
|
||||
<string name="network_settings_title">Networks</string>
|
||||
<string name="bluetooth_setting">Connect via Bluetooth</string>
|
||||
|
||||
@@ -1,6 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<PreferenceScreen
|
||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<PreferenceCategory
|
||||
android:layout="@layout/preferences_category"
|
||||
android:title="@string/display_settings_title">
|
||||
|
||||
<ListPreference
|
||||
android:defaultValue="default"
|
||||
android:entryValues="@array/pref_language_values"
|
||||
android:key="pref_key_language"
|
||||
android:summary="%s"
|
||||
android:title="@string/pref_language_title"/>
|
||||
</PreferenceCategory>
|
||||
|
||||
<PreferenceCategory
|
||||
android:layout="@layout/preferences_category"
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package org.briarproject.briar.android;
|
||||
|
||||
import android.app.Application;
|
||||
import android.content.SharedPreferences;
|
||||
import android.preference.PreferenceManager;
|
||||
|
||||
import org.briarproject.bramble.BrambleCoreModule;
|
||||
import org.briarproject.briar.BriarCoreModule;
|
||||
@@ -27,6 +29,8 @@ public class TestBriarApplication extends Application
|
||||
super.onCreate();
|
||||
LOG.info("Created");
|
||||
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
|
||||
Localizer.initialize(prefs);
|
||||
applicationComponent = DaggerAndroidComponent.builder()
|
||||
.appModule(new AppModule(this))
|
||||
.build();
|
||||
|
||||
Reference in New Issue
Block a user