Merge branch 'master' into 'disapp-sr'

# Conflicts:
#   app/src/main/res/values-sr/strings.xml
This commit is contained in:
Massimiliano 2019-05-29 21:47:08 +02:00
commit 3cbb7bb4f0
19 changed files with 507 additions and 200 deletions

View File

@ -14,8 +14,8 @@
<option name="values">
<map>
<entry key="assetSourceType" value="FILE" />
<entry key="outputName" value="ic_notes" />
<entry key="sourceFile" value="$PROJECT_DIR$/../DisIcons/ic_notes.svg" />
<entry key="outputName" value="ic_battery" />
<entry key="sourceFile" value="$PROJECT_DIR$/../DisIcons/battery.svg" />
</map>
</option>
</PersistentState>

Binary file not shown.

View File

@ -1,29 +0,0 @@
<component name="ProjectCodeStyleConfiguration">
<code_scheme name="Project" version="173">
<Objective-C-extensions>
<file>
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Import" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Macro" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Typedef" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Enum" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Constant" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Global" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Struct" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="FunctionPredecl" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Function" />
</file>
<class>
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Property" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Synthesize" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="InitMethod" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="StaticMethod" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="InstanceMethod" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="DeallocMethod" />
</class>
<extensions>
<pair source="cpp" header="h" fileNamingConvention="NONE" />
<pair source="c" header="h" fileNamingConvention="NONE" />
</extensions>
</Objective-C-extensions>
</code_scheme>
</component>

View File

@ -6,8 +6,8 @@ android {
applicationId "org.disroot.disrootapp"
minSdkVersion 15
targetSdkVersion 28
versionCode 17
versionName "1.1.4"
versionCode 19
versionName "1.2.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {

View File

@ -6,6 +6,8 @@
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<application
android:allowBackup="true"
@ -15,6 +17,20 @@
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/DisTheme">
<receiver
android:name=".StatusBroadcastReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
<service
android:name=".StatusService"
android:enabled="true"
android:exported="true" />
<activity
android:name=".ui.SplashScreenActivity"
android:configChanges="orientation|screenSize"
@ -32,8 +48,10 @@
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="*.disroot.org"
android:scheme="https" />

View File

@ -0,0 +1,16 @@
package org.disroot.disrootapp;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class StatusBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent myIntent = new Intent(context, StatusService.class);
context.startService(myIntent);
}
}

View File

@ -0,0 +1,187 @@
package org.disroot.disrootapp;
import android.annotation.SuppressLint;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.media.RingtoneManager;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Build;
import android.os.IBinder;
import android.support.v4.app.NotificationCompat;
import android.util.Log;
import android.widget.Toast;
import org.disroot.disrootapp.ui.StateMessagesActivity;
import org.disroot.disrootapp.utils.HttpHandler;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Timer;
import java.util.TimerTask;
import static android.support.constraint.motion.MotionScene.TAG;
public class StatusService extends Service {
//status report
public SharedPreferences checkDate;
// URL to get data JSON
static String incidenturl0 ="https://state.disroot.org/api/v1/incidents?sort=id&order=desc";
ArrayList<HashMap<String, String>> messageList;
ArrayList<HashMap<String, String>> getDate;
public StatusService() {
}
@Override
public IBinder onBind(Intent intent) {
// TODO: Return the communication channel to the service.
throw new UnsupportedOperationException( "Not yet implemented" );
}
@Override
public void onCreate() {
super.onCreate();
//Status report
messageList = new ArrayList<>();
getDate = new ArrayList<>();
checkDate = getSharedPreferences("storeDate", Context.MODE_PRIVATE);
//Check json for updates
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
new StatusService.GetList().execute();
}
}, 100, 1800000);//100000=100sec
}
//status report
@SuppressLint("StaticFieldLeak")
class GetList extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... arg0) {
HttpHandler sh = new HttpHandler();
String jsonStrincidents0 = sh.makeServiceCall(incidenturl0);
Log.e(TAG, "Response from url(Service): " + incidenturl0);
if (jsonStrincidents0 != null) {//Incidaetnts page
try {
JSONObject jsonObj = new JSONObject(jsonStrincidents0);
JSONArray data = jsonObj.getJSONArray("data");
int a=0;
JSONObject o = data.getJSONObject(a);
String callid = o.getString("id");
String updated = o.getString("updated_at");
HashMap<String, String> date = new HashMap<>();
date.put("id", callid);
date.put("updated", updated);
getDate.add(date);
String stateDate = date.put( "updated", updated );
String dateStored= checkDate.getString( "storeDate","" );
assert dateStored != null;
if (dateStored.equals( "" ))
{
checkDate.edit().putString( "storeDate", stateDate).apply();
//return null;
}
else {
assert stateDate != null;
if (!stateDate.equals( dateStored )&& !stateDate.equals( "" ))//dateStored
{
checkDate.edit().putString( "storeDate", stateDate).apply();
Log.e(TAG, "date: " + dateStored);
Log.e(TAG, "date2: " + stateDate);
sendNotification();//Call notification
return null;
}
else
Log.e(TAG, "updated json(service)");
}
return null;
} catch (final JSONException e) {
Log.e(TAG, "Json parsing error: " + e.getMessage());
Toast.makeText(getApplicationContext(),
"Json parsing error: " + e.getMessage(),
Toast.LENGTH_LONG)
.show();
}
}else {
Log.e(TAG, "Couldn't get json from server.");
}
return null;
}
}
//Notification
private void sendNotification() throws JSONException {
String CHANNEL_ID = "3168654312";
String CHANNEL_NAME = "StateNotification";
HttpHandler sh = new HttpHandler();
String jsonStrincidents0 = sh.makeServiceCall(incidenturl0);
JSONObject jsonObj = new JSONObject(jsonStrincidents0);
JSONArray data = jsonObj.getJSONArray("data");
int a=0;
JSONObject o = data.getJSONObject(a);
String name = o.getString( "name" );
String message = o.getString( "message" );
HashMap<String, String> date = new HashMap<>();
date.put("name", name);
date.put("message", message);
getDate.add(date);
Log.e(TAG, "message: " + name);
Intent goState = new Intent( StatusService.this, StateMessagesActivity.class);
PendingIntent launchStateMessages = PendingIntent.getActivity(StatusService.this,0, goState, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationManager notificationManager = (NotificationManager) this.getSystemService( Context.NOTIFICATION_SERVICE);
NotificationCompat.InboxStyle inboxStyle = new NotificationCompat.InboxStyle();
inboxStyle.addLine(message);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
// I would suggest that you use IMPORTANCE_DEFAULT instead of IMPORTANCE_HIGH
NotificationChannel channel = new NotificationChannel(CHANNEL_ID, CHANNEL_NAME, NotificationManager.IMPORTANCE_HIGH);
channel.enableVibration(true);
channel.setLightColor( Color.rgb( 80,22,45 ));
channel.enableLights(true);
channel.setVibrationPattern(new long[]{50,500,100,300,50,300});
notificationManager.createNotificationChannel(channel);
}
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(getApplicationContext(), CHANNEL_ID)
.setAutoCancel( true )
.setOngoing(true)
.setSmallIcon(R.drawable.ic_state)
.setContentTitle( getString( R.string.NotificationTitle ) )
.setContentText(name)//get text Title from json :-)
.setContentInfo(message)//get text message from json :-)
.setContentIntent(launchStateMessages);
Uri alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
notificationBuilder.setSound(alarmSound)
.setVibrate(new long[]{50,500,100,300,50,300})
.setLights(Color.BLUE, 3000, 3000);
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){
notificationBuilder.setChannelId(CHANNEL_ID);
}
notificationManager.notify(CHANNEL_ID, 1, notificationBuilder.build());
}
}

View File

@ -1,35 +1,31 @@
package org.disroot.disrootapp.ui;
import android.Manifest;
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.app.AlertDialog;
import android.app.DownloadManager;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.media.RingtoneManager;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Parcelable;
import android.os.PowerManager;
import android.provider.MediaStore;
import android.provider.Settings;
import android.support.annotation.NonNull;
import android.support.annotation.RequiresApi;
import android.support.design.widget.Snackbar;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.NotificationCompat;
import android.support.v4.content.ContextCompat;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.app.AppCompatActivity;
@ -59,20 +55,15 @@ import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.FrameLayout;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.ScrollView;
import android.widget.Toast;
import org.disroot.disrootapp.R;
//import org.disroot.disrootapp.service.CachetService;
import org.disroot.disrootapp.StatusService;
import org.disroot.disrootapp.utils.Constants;
import org.disroot.disrootapp.utils.HttpHandler;
import org.disroot.disrootapp.webviews.DisWebChromeClient;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.File;
import java.io.IOException;
@ -83,9 +74,6 @@ import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Timer;
import java.util.TimerTask;
import de.cketti.library.changelog.ChangeLog;
@SuppressWarnings("ALL")
@ -120,15 +108,6 @@ public class MainActivity extends AppCompatActivity implements View.OnLongClickL
private CookieManager cookieManager;
//status report
private ProgressDialog pDialog;
private ListView lv;
public SharedPreferences checkDate;
// URL to get data JSON
static String incidenturl0 ="https://state.disroot.org/api/v1/incidents?sort=id&order=desc";
ArrayList<HashMap<String, String>> messageList;
ArrayList<HashMap<String, String>> getDate;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@ -667,37 +646,35 @@ public class MainActivity extends AppCompatActivity implements View.OnLongClickL
}
});
//Status report
messageList = new ArrayList<>();
getDate = new ArrayList<>();
//Status service
Intent intent = new Intent( MainActivity.this, StatusService.class);
startService(intent);
lv = findViewById(R.id.list);
checkDate = getSharedPreferences("storeDate", Context.MODE_PRIVATE);
//Check json for updates
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
//delete after version 1.1.6
PackageInfo info = null;
try {
info = getPackageManager().getPackageInfo(getPackageName(), 0);
} catch (PackageManager.NameNotFoundException e) {
// bad times
Log.e("MyApplication", "couldn't get package info!");
}
@Override
public void run() {
new MainActivity.GetList().execute();
}
});
}
}, 100, 100000);//100000=100sec
// start CachetService
//Intent intent = new Intent(this, CachetService.class);
// Put some data for use by the IntentService
//intent.putExtra("foo", "bar");
//startService(intent);
if (info == null) {
// can't do anything
return;
}
if (!firstStart.getBoolean("update", false)&&info.firstInstallTime != info.lastUpdateTime) {
showOptimzationInfo();
firstStart.edit().putBoolean("update", true).apply();
return;
}
}
//Dialog windows
private void showChoose() {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
@ -752,10 +729,41 @@ public class MainActivity extends AppCompatActivity implements View.OnLongClickL
builder.setCancelable(false);
builder.setTitle(R.string.FirstTitle);
builder.setMessage(getString(R.string.FirstInfo));
builder.setPositiveButton(R.string.global_ok, null);
builder.setPositiveButton(R.string.global_ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
showOptimzation();
}
});
builder.show();
}
private void showOptimzation() {
Intent intent = new Intent();
String packageName = getPackageName();
PowerManager pm = (PowerManager) getSystemService( Context.POWER_SERVICE);
if (pm.isIgnoringBatteryOptimizations(packageName))
intent.setAction(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS);
else {
intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
intent.setData(Uri.parse("package:" + packageName));
}
startActivity(intent);
}
private void showOptimzationInfo() {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setCancelable(false);
builder.setTitle(R.string.OptimizationTitle);
builder.setMessage(getString(R.string.OptimizationInfo));
builder.setPositiveButton(R.string.global_ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
showOptimzation();
}
});
builder.show();
}
@Override
public boolean onLongClick(View view) {
Toast.makeText(view.getContext(), R.string.activity_main_share_info, Toast.LENGTH_LONG).show();
@ -1440,6 +1448,9 @@ public class MainActivity extends AppCompatActivity implements View.OnLongClickL
webView.loadUrl(url);
return true;
}
case R.id.action_optimization:
showOptimzation();
return true;
case R.id.action_about:
Intent goAbout = new Intent(MainActivity.this, AboutActivity.class);
MainActivity.this.startActivity(goAbout);
@ -1871,7 +1882,6 @@ public class MainActivity extends AppCompatActivity implements View.OnLongClickL
}
}
//
public void shareCurrentPage() {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setAction(Intent.ACTION_SEND);
@ -1880,104 +1890,6 @@ public class MainActivity extends AppCompatActivity implements View.OnLongClickL
startActivity(intent);
}
//status report
@SuppressLint("StaticFieldLeak")
class GetList extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... arg0) {
HttpHandler sh = new HttpHandler();
String jsonStrincidents0 = sh.makeServiceCall(incidenturl0);
Log.e(TAG, "Response from url: " + incidenturl0);
if (jsonStrincidents0 != null) {//Incidaetnts page
try {
JSONObject jsonObj = new JSONObject(jsonStrincidents0);
JSONArray data = jsonObj.getJSONArray("data");
int a=0;
JSONObject o = data.getJSONObject(a);
String callid = o.getString("id");
String updated = o.getString("updated_at");
HashMap<String, String> date = new HashMap<>();
date.put("id", callid);
date.put("updated", updated);
getDate.add(date);
String stateDate = date.put( "updated", updated );
String dateStored= checkDate.getString( "storeDate","" );
if (dateStored.equals( "" ))
{
checkDate.edit().putString( "storeDate", stateDate).apply();
//return null;
}
else if (!stateDate.equals( dateStored )&& !stateDate.equals( "" ))//dateStored
{
checkDate.edit().putString( "storeDate", stateDate).apply();
Log.e(TAG, "date: " + dateStored);
Log.e(TAG, "date2: " + stateDate);
sendNotification();//Call notification
return null;
}
else
Log.e(TAG, "updated json");
return null;
} catch (final JSONException e) {
Log.e(TAG, "Json parsing error: " + e.getMessage());
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(),
"Json parsing error: " + e.getMessage(),
Toast.LENGTH_LONG)
.show();
}
});
}
}else {
Log.e(TAG, "Couldn't get json from server.");
}
return null;
}
}
//Notification
private void sendNotification() throws JSONException {
HttpHandler sh = new HttpHandler();
String jsonStrincidents0 = sh.makeServiceCall(incidenturl0);
JSONObject jsonObj = new JSONObject(jsonStrincidents0);
JSONArray data = jsonObj.getJSONArray("data");
int a=0;
JSONObject o = data.getJSONObject(a);
String name = o.getString( "name" );
String message = o.getString( "message" );
HashMap<String, String> date = new HashMap<>();
date.put("name", name);
date.put("message", message);
Log.e(TAG, "message: " + name);
Intent goState = new Intent(MainActivity.this, StateMessagesActivity.class);
PendingIntent launchStateMessages = PendingIntent.getActivity(MainActivity.this,0, goState, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(this)
.setAutoCancel( true )
.setOngoing(true)
.setSmallIcon(R.drawable.ic_state)
.setContentTitle( getString( R.string.NotificationTitle ) )
.setContentText(name)//get text Title from json :-)
.setContentInfo(message)//get text message from json :-)
.setContentIntent(launchStateMessages);
Uri alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
mBuilder.setSound(alarmSound)
.setVibrate(new long[]{50,500,100,300,50,300})
.setLights(Color.MAGENTA, 3000, 3000);
NotificationManager mNotificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(001, mBuilder.build());
}
//show snackbar to avoid exit on backpress
@Override
public void onBackPressed() {

View File

@ -0,0 +1,6 @@
<vector android:height="24dp" android:viewportHeight="48"
android:viewportWidth="48" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillAlpha="1" android:fillColor="#ffffff"
android:pathData="M19.8066,0C18.3843,0 17.2383,1.1599 17.2383,2.6016L17.2383,2.6758L13.7988,2.6758C11.9279,2.6758 10.4219,4.2053 10.4219,6.1016L10.4219,44.5781C10.4219,46.4744 11.9279,48 13.7988,48L33.7129,48C35.5838,48 37.0898,46.4744 37.0898,44.5781L37.0898,6.1016C37.0898,4.2053 35.5838,2.6758 33.7129,2.6758L30.3418,2.6758L30.3418,2.6016C30.3418,1.1599 29.1977,0 27.7754,0L19.8066,0zM20.3926,11.2773L26.252,11.2773C26.6985,11.2773 27.0566,11.6165 27.0566,12.0273C27.0566,12.1345 27.0204,12.2405 26.9668,12.3477L23.9121,20.6191L30.9863,18.8672C31.0578,18.8493 31.1297,18.832 31.2012,18.832C31.4334,18.832 31.6478,18.9388 31.8086,19.0996C32.0051,19.314 32.0586,19.6188 31.9336,19.8867L22.2871,40.5527C22.1442,40.8207 21.8586,41 21.5371,41C21.4657,41 21.3764,40.9828 21.2871,40.9648C20.8941,40.8398 20.6607,40.465 20.75,40.0898L24.2695,25.6563L17.0176,27.4609C16.9461,27.4788 16.8742,27.4785 16.8027,27.4785C16.6062,27.4785 16.3929,27.4063 16.25,27.2813C16.0357,27.1026 15.964,26.8341 16.0176,26.584L19.6074,11.8477C19.6967,11.5083 20.0175,11.2773 20.3926,11.2773z"
android:strokeAlpha="1" android:strokeColor="#00000000" android:strokeWidth="0.99062097"/>
</vector>

View File

@ -31,6 +31,10 @@
android:icon="@drawable/ic_clear_cookies"
android:id="@+id/action_clear_cookies"
android:title="@string/action_clear_cookies" />
<item
android:icon="@drawable/ic_battery"
android:id="@+id/action_optimization"
android:title="@string/action_optimization" />
<item
android:icon="@drawable/ic_about"
android:id="@+id/action_about"

View File

@ -0,0 +1,164 @@
<resources>
<string name="app_name">Disroot App</string>
<string name="action_home">Home</string>
<string name="action_mail">Mail</string>
<string name="action_cloud">Cloud</string>
<string name="action_diaspora">Diaspora*</string>
<string name="action_forum">Forum</string>
<string name="action_chat">Chat</string>
<string name="action_pad">Etherpad</string>
<string name="action_calc">EtherCalc</string>
<string name="action_bin">Private bin</string>
<string name="action_upload">Upload</string>
<string name="action_searx">Searx</string>
<string name="action_poll">Umfrage</string> //or should not be translated?
<string name="action_board">Board</string> // would name that KANBAN or TAIGA
<string name="action_user">Passwort</string>
<string name="action_state">Status</string>
<string name="action_howto">How to</string> //best trans will be tutorial, but inconsistent then
<string name="action_about">Über</string>
<string name="action_exit">Exit</string>
<string name="action_share">Teilen</string> //share with or via? or only share
<string name="action_reload">neu laden</string>
<string name="action_options">Actions</string> //? something like functions?
<string name="activity_main_share_info">Teile link informationen</string> //link info or link?
<string name="view_loading_description">lädt…</string>
<string name="global_ok">OK</string>
<string name="more_help">weitere Hilfe</string>
<string name="tell_more">weitere Infos</string>
<string name="title_activity_about">AboutActivity</string> //?
<string name="MailInfoTitle">E-Mail Einstellungen</string>
<string name="MailInfo">IMAP: disroot.org\nSSL Port 993\nAuthentifizierung: normales\nPasswort\n\nSMTP: disroot.org\nSTARTTLS Port 587\nAuthentifizierung: normales\nPasswort\n\nPOP: disroot.org\nSSL Port 995\nAuthentifizierung: normales\nPasswort</string>
<string name="CloudInfoTitle">Nextcloud Einstellungen</string>
<string name="CloudInfo">Sichere deine Daten und synchronisiere sie. Mit Nextcloud kannst du Dateien, Kalender, Kontakte und mehr mit anderen teilen.\n\nHost:\n https://cloud.disroot.org\n\nBenutzername:\n "dein Disroot Benutzername"\n\nPasswort:\n "dein Disroot Passwort".</string>
<string name="WelcomeTitle">Welcome</string>
<string name="WelcomeInfo">Disroot ist eine Plattform, auf der Online-Dienste angeboten werden, die auf den Prinzipien von Freiheit, Privatsphäre, Gemeinschaft und Dezentralisierung basieren.\nDiese App ist wie ein Schweizer Taschenmesser für die Disroot-Plattform, von der Community für die Community.\nWenn du kein Disroot-Account hast, kannst du diese App trotzdem nutzen, um auf alle Disroot-Dienste zuzugreifen, die kein Konto erfordern:\n \ \ \ &#8226; Etherpad\n \ \ \ &#8226; Ethercalc\n \ \ \ &#8226; Private bin\n \ \ \ &#8226; Upload\n \ \ \ &#8226; Poll\n \ \ \ &#8226; Searx\n \ \ \ &#8226; Diaspora* (separater Diaspora Account benötigt)\n\nDie App kann Sie danach fragen weitere Apps zu installieren. Wir empfehlen F-Droid zu installieren - einen kostenlosen und quelloffenen App-Katalog - da nicht alle verwendeten Apps im Google Play Store zu finden sind und F-Droid außerdem mehr auf Datenschutz ausgerichtet ist (kein Tracking, kein Account erforderlich). Sie können F-Droid herunterladen, indem Sie auf das F-Droid-Symbol klicken.\n</string>
<string name="help">Help</string>
<string name="license">License</string>
<string name="action_settings">Settings</string>
<string name="licenseTitle">License</string>
<string name="license_button">GNU LGPLv3.0 License</string>
<string name="maintainersTitle">Maintainers</string>
<string name="maintainersText">This app is currently being developed and maintained by\n\n</string>
<string name="disrootUrl">https://disroot.org</string>
<string name="disroot"> * Disroot Community (Disroot):</string>
<string name="contributorsTitle">Contributors</string>
<string name="contributors"><b> &#8226; muppeth:</b>\n Disroot admin\n\n<b> &#8226; antilopa:</b>\n Disroot admin\n\n<b> &#8226; Massimiliano:</b>\n Developer\n\n<b> &#8226; Fede:</b>\n Content contributor\n\n<b> &#8226; Meaz:</b>\n Content contributor\n\n<b> &#8226; maryjane:</b>\n Content contributor\n\n<b> &#8226; userdebug:</b>\n Content contributor\n\n<b> &#8226; jh:</b>\n Content contributor\n\n</string>
<string name="fDroid">F-Droid</string>
<string name="thirdparty">Third-Party Libraries</string>
<string name="thirdpartyText"><a href="https://github.com/cketti/ckChangeLog">ckChangelog: </a>Apache License 2.0\n\n<a href="https://github.com/wsdfhjxc/taponium/">Taponium: </a>GNU General Public License v3.0</string>
<string name="misc">Miscellaneous</string>
<string name="miscDio">We used Diolinux as our starting base to create this app. Go check it out, it\'s free software as well!</string>
<string name="miscDioBtn">Tell me more</string>
<string name="AppSection">Application</string>
<string name="AppVersion">App Version: %1$s</string>
<string name="Device">Device:</string>
<string name="Contribute">Contribute</string>
<string name="ContributeText">Disroot app is developed free as in Freedom and follows the ideas of the Disroot Foundation. If you want to contribute, go ahead! Currently we are a very small team, so we greatly appreciate any kind of help!</string>
<string name="ContributeBtn">Get the source</string>
<string name="Translate">Translate</string>
<string name="TranslateText">The app is not available in your language? You can change that! Why don\'t you help us by translating it?</string>
<string name="TranslateBtn">Let me translate</string>
<string name="Feedback">Give Feedback!</string>
<string name="FeedbackText">Disroot app is still in development, so if you have suggestions or any kind of feedback, please let us know!</string>
<string name="FeedbackBtn1">Report Bugs</string>
<string name="FeedbackBtn2">Chat with us</string>
<string name="SpreadTheWord">Spread the word!</string>
<string name="SpreadTheWordTxt">Tell your friends and family about Disroot! Why don\'t you blog about your experiences? We\'d love to hear from you!</string>
<string name="SpreadTheWordBtn">Share the app</string>
<string name="DisrootWeb">Disroot web</string>
<string name="FirstTitle">Last couple of things!</string>
<string name="FirstInfo">&#8226; By doing a long press on each icon you can get extra information… \n\n&#8226; The app can sync with the status page of Disroot. This means that you will receive realtime updates on issues, downtimes, scheduled maintenace and others published via https://state.disroot.org\nWe recommend to turn off battery optimization and allow Disroot app to run in the background. If you\'re not sure, you can always change the setting from the Disroot app menu later.</string>
<string name="DiasporaTitle">Diaspora* Settings</string>
<string name="DiasporaInfo">Distributed and decentralized social network. Post, share, like, create communities.\n\nUsername:\n your_diaspora_username@pod.disroot.org\n\nPassword:\n your_diaspora_password</string>
<string name="PadInfo">With Etherpad write articles, press releases, to-do lists, etc. together with friends, fellow students or colleagues, all working on the same document at the same time.\nNo registration is required.</string>
<string name="PadTitle">EtherPad Info</string>
<string name="ChatTitle">XMPP Settings\n</string>
<string name="ChatInfo">Conversations is a free, standard and open-source decentralized and federated instant messaging application for chatting with contacts or within groups.\n\nJabber ID :\n Your full Disroot email address\n\nPassword :\n Your Disroot password</string>
<string name="CalcInfo">With EtherCalc work together on inventories, survey forms, list management, brainstorming sessions and more!\nNo registration is required.</string>
<string name="CalcTitle">EtherCalc Info</string>
<string name="BinTitle">PrivateBin Help</string>
<string name="BinInfo">PrivateBin is an open-source online pastebin and discussion board. Data is encrypted/decrypted in the browser so that the server has zero knowledge of hosted data. Just paste a text, click “Send”, set expiration (and other features) and share the URL.\nNo registration is required.</string>
<string name="UploadTitle">Upload (powered by Lufi) Info</string>
<string name="UploadInfo">Upload is a file hosting software that temporarily stores encrypted files so you can share them with others using a link. All files are encrypted before they leave your computer meaning server has zero knowledge of hosted data.\nNo registration is required.</string>
<string name="SearxTitle">Searx Info</string>
<string name="SearxInfo">Searx is an anonymous multi search engine platform, aggregating the results of other search engines while not storing information about its users. No tracking, profiling, no data mining by big corporations. \nNo registration is required.</string>
<string name="PollsTitle">Polls Help</string>
<string name="PollsInfo">Framadate is an online service for planning an appointment or making a decision quickly and easily.\nNo registration is required.</string>
<string name="BoardTitle">Project Management Board Info</string>
<string name="BoardInfo">Taiga is a project management tool, developed for programmers, designers and startups working with agile methodology in mind. It can however be applied to virtually any project or group, even outside of IT realm.</string>
<string name="UserTitle">User Password Management Help</string>
<string name="UserInfo">Use our User Self Service Center to manage your user and password data</string>
<string name="StateTitle">State Info</string>
<string name="StateInfo">Page to see the current state of Disroot services. Here you can see if any service has a problem, if there are any performance issues, as well as get to know when we schedule maintenance in which time some services might be unavailable.\n\n<b>Alternative ways to get State updates:</b></string>
<string name="state_help">State on XMPP</string>
<string name="HowToTitle">How to Info</string>
<string name="HowToInfo">Our page with howtos and tutorials to help you find your way around the various Disroot services.</string>
<string name="AboutTitle">About Info</string>
<string name="AboutInfo">This is the about page of this app</string>
<string name="ForumTitle">Forum Help</string>
<string name="ForumInfo">Discourse is a fully open-source modern approach to discussion forums. It offers everything your community, group or collective needs to create their communication platform.</string>
<string name="LogoTitle">Did you really just try the long press on the logo?</string>
<string name="LogoInfo">Why? It\'s just a logo.\nDon\'t be too curious ;-)</string>
<string name="LogoBtn">Disroot rules \\o/</string>
<string name="logo">Logo</string>
<string name="xmppBtn"> \ \ &#8226; State on xmpp</string>
<string name="matrixBtn"> \ \ &#8226; State on Matrix</string>
<string name="SocialBtn"> \ \ &#8226; State on Hubzilla/diaspora/mastodon</string>
<string name="NewsBtn"> \ \ &#8226; State updates via email</string>
<string name="RssBtn"> \ \ &#8226; State RSS feed</string>
<string name="ChooseChatTitle">You have two XMPP clients installed!</string>
<string name="ChooseChat">Please choose the client you want to use for Disroot</string>
<string name="Remember">Remember my choice</string>
<string name="Conversations">Conversations</string>
<string name="PixArt">Pix-Art Messenger</string>
<string name="Forget">Forget my choice</string>
<string name="ForgetTitle">Forget chat client!</string>
<string name="title_activity_tap">TapActivity</string>
<string name="action_clear_cookies">Clear cookies</string>
<string name="DiaInstallTitle">Installation request</string>
<string name="DiasporaDialog">To continue you need to install Dandelion first.\nPlease select install to continue with the installation on F-Droid.</string>
<string name="global_cancel">Cancel</string>
<string name="global_install">Install</string>
<string name="MailDialog">To continue you need to install K9-Mail first.\nPlease select install to continue with the installation on F-Droid.</string>
<string name="CloudDialog">To continue you need to install the Nextcloud app first.\nPlease select install to continue with the installation on F-Droid.</string>
<string name="ChatDialog">To continue you need to install Conversations first.\nPlease select install to continue with the installation on F-Droid.</string>
<string name="title_activity_state" translatable="false">StateActivity</string>
<string name="app_state">Disroot state</string>
<string name="Operational">Operational</string>
<string name="MajorOutage">Major Outage</string>
<string name="EmailService">Email Service</string>
<string name="LastUpdated">"Last updated: \"</string>
<string name="WebmailService">WebMail Service</string>
<string name="Cloud">Cloud</string>
<string name="PerformanceIssues">Performance Issues</string>
<string name="Notification">No issues</string>
<string name="Notificationissues">Some systems are experiencing issues</string>
<string name="state_messages_btn">Show State messages</string>
<string name="state_btn">Show Service State</string>
<string name="ScheduledAt">Scheduled at: \</string>
<string name="NotificationTitle">Message from Disroot State!</string>
<string name="Scheduled">Scheduled</string>
<string name="Investigating">Investigating</string>
<string name="Identified">Identified</string>
<string name="NotesTitle">Nextcloud Notes Info</string>
<string name="NotesInfo">The notes app is a distraction free notes taking app for Nextcloud.\n\nServer Address:\n https://cloud.disroot.org\n\nUsername:\n your_disroot_username\n\nPassword:\n your_disroot_password</string>
<string name="NotesDialog">To continue you need to install Notes first.\nPlease select install to continue with the installation on F-Droid.</string>
<string name="action_notes">Notes</string>
<string name="PadDialog">To continue you need to install Padland first.\nPlease select install to continue with the installation on F-Droid.</string>
<string name="do_you_want_to_exit">Do you want to exit?</string>
<string name="action_optimization">Battery optimization</string>
<string name="OptimizationTitle">Battery optimization!</string>
<string name="OptimizationInfo">With this update the app can sync with the status page of Disroot. This means you will receive realtime updates on issues, downtimes, scheduled maintenace and others published via https://state.disroot.org\nWe recommend to turn off battery optimization and allow Disroot app to run in background. If you\'re not sure, you can always change the setting from the menu of the Disroot app later.</string>
</resources>

View File

@ -28,7 +28,7 @@
<string name="view_loading_description">Cargando…</string>
<string name="global_ok">OK</string>
<string name="more_help">¿Necesitas más ayuda?</string>
<string name="tell_more">Cuéntame más...</string>
<string name="tell_more">Cuéntame más</string>
<string name="title_activity_about">AboutActivity</string>
<string name="MailInfoTitle">Configuración de Correo:</string>
@ -79,8 +79,8 @@
<string name="SpreadTheWordTxt">Comenta a tus amigos y familia sobre Disroot. O por qué no escribir en un blog sobre tu experiencia. Nos encantaría conocerla.</string>
<string name="SpreadTheWordBtn">Compartir la aplicación</string>
<string name="DisrootWeb">Sitio de Disroot</string>
<string name="FirstTitle">Casi lo olvido…</string>
<string name="FirstInfo">Haciendo una presión larga sobre el ícono de cada aplicación, puedes ver información extra sobre ella.</string>
<string name="FirstTitle">Un par de cosas más… </string>
<string name="FirstInfo">&#8226; Haciendo una presión larga sobre cada ícono, puedes obtener información adicional… \n\n&#8226; La aplicación puede sincronizar con la página de estado de Disroot. Esto significa que recibirás actualizaciones en tiempo real sobre inconvenientes, caídas, mantenimientos programados y otros que fueran publicados a través de https://state.disroot.org\nRecomendamos apagar la optimización de batería y permitir a la aplicación de Disroot correr en segundo plano. Si no estás seguro, siempre puedes volver a cambiar la configuración desde el menu de la aplicación de Disroot.</string>
<string name="DiasporaTitle">Configuración de Diaspora*</string>
<string name="DiasporaInfo">Red social distribuida y descentralizada. Publica, comparte, crea comunidades.\nUsuario: tu_usuario_de_Diaspora@pod.disroot.org\nContraseña: tu_contraseña_de_diaspora</string>
<string name="PadInfo">EtherPad</string>
@ -118,7 +118,7 @@
<string name="matrixBtn"> \ \ &#8226; Estado de Matrix</string>
<string name="SocialBtn"> \ \ &#8226; Estado de Hubzilla/Diaspora*/Mastodon</string>
<string name="NewsBtn"> \ \ &#8226; Actualización de estados por email</string>
<string name="RssBtn"> \ \ &#8226; Feed RSS de los Estados</string>
<string name="RssBtn">We recommend to turn off battery optimization and allow Disroot app to run in background. If you\'re not sure, you can always change the setting from the menu of the Disroot app later.</string>
<string name="ChooseChatTitle">¡Tienes dos clientes XMPP instalados!</string>
<string name="ChooseChat">Por favor, elige el cliente que quieres usar para Disroot</string>
<string name="Remember">Recordar mi elección</string>
@ -158,4 +158,7 @@
<string name="NotesDialog">Para continuar, primero necesitas instalar Notas.\nPor favor, selecciona Instalar para continuar con la instalación desde F-Droid.</string>
<string name="PadDialog">Para continuar, primero necesitas instalar Padland.\nPor favor, selecciona Instalar para continuar desde F-Droid.</string>
<string name="do_you_want_to_exit">do you want to exit?</string>
<string name="action_optimization">Optimización de la batería</string>
<string name="OptimizationTitle">Optimización de la batería!</string>
<string name="OptimizationInfo">Con esta nueva versión la aplicación puede sincronizar con la página de estado de Disroot. Esto significa que recibirás actualizaciones en tiempo real sobre inconvenientes, caídas, mantenimientos programados y otros que fueran publicados a través de https://state.disroot.org\nRecomendamos apagar la optimización de batería y permitir a la aplicación de Disroot correr en segundo plano. Si no estás seguro, siempre puedes volver a cambiar la configuración desde el menu de la aplicación de Disroot.</string>
</resources>

View File

@ -101,8 +101,8 @@
<string name="SpreadTheWordTxt">Parlez de Disroot à vos amis et à votre famille ! Pourquoi ne bloguez-vous pas sur vos expériences \? Nous adorerions recevoir de vos nouvelles !</string>
<string name="SpreadTheWordBtn">Partager l\'application</string>
<string name="DisrootWeb">Disroot web</string>
<string name="FirstTitle">J\'allais presque oublier</string>
<string name="FirstInfo">Vous pouvez appuyer longuement sur chaque icône pour afficher des informations supplémentaires …</string>
<string name="FirstTitle">Dernière chose !</string>
<string name="FirstInfo"><![CDATA[• En appuyant longuement sur chaque icône, vous pouvez obtenir des informations supplémentaires… \n\n&#8226 ; L\'application peut se synchroniser avec la page de statut de Disroot. Cela signifie que vous recevrez des mises à jour en temps réel sur les problèmes, les temps d\'arrêt, la maintenance programmée et d\'autres problèmes publiés via https://state.disroot.org\nNous vous recommandons de désactiver l\'optimisation de la batterie et d\'autoriser l\'application Disroot à fonctionner en arrière-plan. Si vous n\'êtes pas sûr, vous pouvez toujours changer le réglage à partir du menu de l\'application Disroot plus tard.]]></string>
<string name="DiasporaTitle">Paramètres Diaspora*</string>
<string name="DiasporaInfo">Réseau social distribué et décentralisé. Postez, partagez, aimez, créez des communautés.
\n
@ -194,5 +194,8 @@
<string name="NotesDialog">Pour continuer, vous devez d\'abord installer Notes.\nVeuillez sélectionner Installer pour continuer l\'installation avec F-Droid.</string>
<string name="action_notes">Notes</string>
<string name="PadDialog">Pour continuer, vous devez d\'abord installer Padland.\nVeuillez sélectionner Installer pour continuer l\'installation avec F-Droid.</string>
<string name="do_you_want_to_exit">do you want to exit?</string>
<string name="do_you_want_to_exit">Voulez-vous quitter?</string>
<string name="action_optimization">Optimisation de la batterie</string>
<string name="OptimizationTitle">Optimisation de la batterie!</string>
<string name="OptimizationInfo">Avec cette mise à jour, l\'application peut se synchroniser avec la page de statut de Disroot. Cela signifie que vous recevrez des mises à jour en temps réel sur les problèmes, les temps d\'arrêt, la maintenance programmée et d\'autres informations publiées via https://state.disroot.org\nNous vous recommandons de désactiver l\'optimisation de la batterie et d\'autoriser l\'exécution de l\'application Disroot en arrière-plan. Si vous n\'êtes pas sûr, vous pouvez toujours changer le réglage à partir du menu de l\'application Disroot plus tard.</string>
</resources>

View File

@ -78,8 +78,8 @@
<string name="SpreadTheWordTxt">Racconta ai tuoi amici e familiari di Disroot! Perché non scrivi sul tuo blog le tue esperienze? Ci farebbe molto piacere sentirti!</string>
<string name="SpreadTheWordBtn">Condividi la app</string>
<string name="DisrootWeb">Disroot web</string>
<string name="FirstTitle">Quasi dimenticavo</string>
<string name="FirstInfo">È possibile premere a lungo su ogni icona per visualizzare informazioni aggiuntive.…</string>
<string name="FirstTitle">Le Ultime cose!</string>
<string name="FirstInfo">&#8226; È possibile premere a lungo su ogni icona per visualizzare informazioni aggiuntive… \n\n&#8226; L\'applicazione può sincronizzarsi con la pagina di stato di Disroot. Questo significa che riceverai in tempo reale aggiornamenti su problemi, tempi di inattività, manutenzione programmata e altri aggiornamenti pubblicati su https://state.disroot.org\nSi consiglia di disattivare l\'ottimizzazione della batteria e consentire all\'applicazione Disroot di funzionare in background. Se non si è sicuri, è sempre possibile modificare le impostazioni dal menu dell\'applicazione Disroot in un secondo momento.</string>
<string name="DiasporaTitle">Impostazioni Diaspora*</string>
<string name="DiasporaInfo">Rete sociale distribuita e decentralizzata. Pubblicare, condividere, tipo, creare comunità.\n\nNome utente:\n il_tuo_nome_utente_diaspora_@pod.disroot.org\n\nPassword:\n la_tua_password_diaspora</string>
<string name="PadInfo">Con Etherpad scrivere articoli, comunicati stampa, liste di cose da fare, ecc. insieme ad amici, compagni di studio o colleghi, tutti che lavorano sullo stesso documento allo stesso tempo.\nNon è richiesta alcuna registrazione.</string>
@ -157,4 +157,7 @@
<string name="action_notes">Note</string>
<string name="PadDialog">Per continuare è necessario installare Padland.\nSelezionate installa per continuare con l\'installazione su F-Droid.</string>
<string name="do_you_want_to_exit">Vuoi veramente uscire?</string>
<string name="action_optimization">Ottimizzazione batteria</string>
<string name="OptimizationTitle">Ottimizzazione batteria!</string>
<string name="OptimizationInfo">Con questo aggiornamento l\'applicazione può sincronizzarsi con la pagina di stato di Disroot. Questo significa che riceverai in tempo reale gli aggiornamenti sui problemi, i tempi di inattività, la manutenzione programmata e altri aggiornamenti pubblicati su https://state.disroot.org\nSi consiglia di disattivare l\'ottimizzazione della batteria e consentire all\'applicazione Disroot di funzionare in background. Se non si è sicuri, è sempre possibile modificare le impostazioni dal menu dell\'applicazione Disroot in un secondo momento.</string>
</resources>

View File

@ -79,8 +79,8 @@
<string name="SpreadTheWordTxt">Vertel je vrienden en familie over Disroot! Waarom blogt je niet over jou ervaringen? We horen graag van je!</string>
<string name="SpreadTheWordBtn">Deel de app</string>
<string name="DisrootWeb">Disroot web</string>
<string name="FirstTitle">Ik vergat bijna</string>
<string name="FirstInfo">Je kan op elk pictogram lang drukken om jou extra informatie te tonen…</string>
<string name="FirstTitle">De laatste paar dingen!</string>
<string name="FirstInfo">&#8226; Je kan op elk pictogram lang drukken om jou extra informatie te tonen…&#8226; De app kan synchroniseren met de statuspagina van Disroot. Dit betekent dat u realtime updates ontvangt over issues, downtimes, gepland onderhoud en andere zaken die gepubliceerd worden via https://state.disroot.org\nWe raden aan om de batterijoptimalisatie uit te schakelen en de Disroot app op de achtergrond te laten draaien. Als u niet zeker bent, kunt u de instelling later altijd nog wijzigen vanuit het Disroot app menu.</string>
<string name="DiasporaTitle">Diaspora* Instellingen</string>
<string name="DiasporaInfo">Gedistribueerd en gedecentraliseerd sociaal netwerk. Plaatsen, delen, liken, gemeenschappen creëren.\n\nGebruikersnaam:\n jou_diaspora_gebruikersnaam@pod.disroot.org\n\nWachtwoord:\n jou_diaspora_wachtwoord</string>
<string name="PadInfo">Met Etherpad schrijf artikelen, persberichten, to-do lijsten, etc. samen met vrienden, medestudenten of collega\'s, die allemaal op hetzelfde moment aan hetzelfde document werken.\nEr is geen registratie vereist.</string>
@ -159,4 +159,7 @@
<string name="action_notes">Notes</string>
<string name="PadDialog">Om verder te gaan moet u eerst Padland installeren.\nSelecteer Installeren om verder te gaan met de installatie op F-Droid.</string>
<string name="do_you_want_to_exit">Will je de app verlaten?</string>
<string name="action_optimization">Batterij optimalisatie</string>
<string name="OptimizationTitle">Batterij optimalisatie!</string>
<string name="OptimizationInfo">Met deze update kan de app synchroniseren met de statuspagina van Disroot. Dit betekent dat u realtime updates ontvangt over issues, downtime, gepland onderhoud en andere zaken die gepubliceerd worden via https://state.disroot.org\nWe raden aan om de batterijoptimalisatie uit te schakelen en de Disroot app op de achtergrond te laten draaien. Als u niet zeker bent, kunt u de instelling later altijd nog wijzigen vanuit het Disroot app menu.</string>
</resources>

View File

@ -36,11 +36,11 @@
<string name="CloudInfoTitle">Definições Nextcloud</string>
<string name="CloudInfo">Mantenha os seus dados sincronizados e seguros. Com o Nextcloud pode partilhar os seus ficheiros calendários, contactos e mais.\n\nHost:\n https://cloud.disroot.org\n\nNome de utilizador:\n O_seu_nome_de_utilizador_disroot\n\nPassword:\n a_sua_password_do_disroot.</string>
<string name="WelcomeTitle">Bem Vindo</string>
<string name="WelcomeInfo">O Disroot é uma plataforma baseada nos princípios de liberdade, privacidade, federação e descentralização que fornece serviços online.\nEsta aplicação é como um Canivete Suiço para a plataforma Disroot, feito pela comunidade para a comunidade.\nSe não tem uma conta Disroot pode utilizar esta aplicação para aceder a todos os serviços do Disroot que não precisam de uma conta de utilizador:\n \ \ \ &#8226; Etherpad\n \ \ \ &#8226; Ethercalc\n \ \ \ &#8226; Private bin\n \ \ \ &#8226; Upload\n \ \ \ &#8226; Poll\n \ \ \ &#8226; Searx\n \ \ \ &#8226; Diaspora* (requer uma conta apenas para o Diaspora)\n\nA aplicação pode pedir que instale outras aplicações adicionais. Nós recomendamos vivamente que instale o F-Droid - uma loja de aplicações livres e open source - porque nem todas as aplicações podem ser encontradas na Play Store Google e o F-Droid é mais focado na privacidade (sem tracking, sem preciso criar conta de utilizador) pode descarregar o F-droid carregando no ícone F-droid.\n</string>
<string name="WelcomeInfo">O Disroot é uma plataforma baseada nos princípios de liberdade, privacidade, federação e descentralização que fornece serviços online.\nEsta aplicação é como um Canivete Suíço para a plataforma Disroot, feito pela comunidade para a comunidade.\nSe não tem uma conta Disroot pode utilizar esta aplicação para aceder a todos os serviços do Disroot que não precisam de uma conta de utilizador:\n \ \ \ &#8226; Etherpad\n \ \ \ &#8226; Ethercalc\n \ \ \ &#8226; Private bin\n \ \ \ &#8226; Upload\n \ \ \ &#8226; Poll\n \ \ \ &#8226; Searx\n \ \ \ &#8226; Diaspora* (requer uma conta apenas para o Diaspora)\n\nA aplicação pode pedir que instale outras aplicações adicionais. Nós recomendamos vivamente que instale o F-Droid - uma loja de aplicações livres e open source - porque nem todas as aplicações podem ser encontradas na Play Store Google e o F-Droid é mais focado na privacidade (sem tracking, sem preciso criar conta de utilizador) pode descarregar o F-droid carregando no ícone F-droid.\n</string>
<string name="help">Ajuda</string>
<string name="license">Licença</string>
<string name="action_settings">Defenições</string>
<string name="action_settings">Definições</string>
<string name="licenseTitle">Licença</string>
<string name="license_button">GNU LGPLv3.0 License</string>
<!--Non translatable
@ -78,8 +78,8 @@
<string name="SpreadTheWordTxt">Conta aos teus amigos e famelga acerca do Disroot! Porque não escrever um post acerca da tua experiência com o Disroot? Adoraríamos ouvir da tua parte!</string>
<string name="SpreadTheWordBtn">Partilhar a app</string>
<string name="DisrootWeb">Disroot web</string>
<string name="FirstTitle">Quase que me esquecia</string>
<string name="FirstInfo">Podes carregar por alguns segundos em cada ícone para aparecer informação extra…</string>
<string name="FirstTitle">Quase que me esquecia</string><!-- need update -->
<string name="FirstInfo">Podes carregar por alguns segundos em cada ícone para aparecer informação extra…</string><!-- need update -->
<string name="DiasporaTitle">Definições do Diaspora*</string>
<string name="DiasporaInfo">Rede social Distribuída e Descentralizada. Postar, partilhar, criar comunidades.\n\nUsername:\n o_seu_nome_de_utilizador_no_diaspora@pod.disroot.org\n\nPassword:\n a_sua_password_diaspora</string>
<string name="PadInfo">Com o Etherpad pode escrever artigos, comunicados de imprensa, listas de tarefas, etc. em conjunto com outras pessoas, amigos, colegas, todos a trabalhar no mesmo documento ao mesmo tempo.\nNão é necessário ter uma conta de utilizador para usar.</string>
@ -157,4 +157,7 @@
<string name="action_notes">Notes</string>
<string name="PadDialog">To continue you need to install Padland first.\nPlease select install to continue with the installatin on F-Droid.</string>
<string name="do_you_want_to_exit">do you want to exit?</string>
<string name="action_optimization">Battery optimization</string>
<string name="OptimizationTitle">Battery optimization!</string>
<string name="OptimizationInfo">With this update the app can sync with the status page of Disroot. This means you will receive realtime updates on issues, downtimes, scheduled maintenace and others published via https://state.disroot.org\nWe recommend to turn off battery optimization and allow Disroot app to run in background. If you\'re not sure, you can always change the setting from the menu of the Disroot app later.</string>
</resources>

View File

@ -54,7 +54,7 @@
<string name="disrootUrl">https://disroot.org</string>
<string name="disroot"> * Disroot Community (Disroot):</string>
<string name="contributorsTitle">Contributors</string>
<string name="contributors"><b> &#8226; muppeth:</b>\n Disroot admin\n\n<b> &#8226; antilopa:</b>\n Disroot admin\n\n<b> &#8226; Massimiliano:</b>\n Developer\n\n<b> &#8226; Fede:</b>\n Content contributor\n\n<b> &#8226; Meaz:</b>\n Content contributor\n\n<b> &#8226; maryjane:</b>\n Content contributor\n\n<b> &#8226; userdebug:</b>\n Content contributor\n\n</string>
<string name="contributors"><b> &#8226; muppeth:</b>\n Disroot admin\n\n<b> &#8226; antilopa:</b>\n Disroot admin\n\n<b> &#8226; Massimiliano:</b>\n Developer\n\n<b> &#8226; Fede:</b>\n Content contributor\n\n<b> &#8226; Meaz:</b>\n Content contributor\n\n<b> &#8226; maryjane:</b>\n Content contributor\n\n<b> &#8226; userdebug:</b>\n Content contributor\n\n<b> &#8226; jh:</b>\n Content contributor\n\n</string>
<string name="fDroid">F-Droid</string>
<string name="thirdparty">Third-Party Libraries</string>
<string name="thirdpartyText"><a href="https://github.com/cketti/ckChangeLog">ckChangelog: </a>Apache License 2.0\n\n<a href="https://github.com/wsdfhjxc/taponium/">Taponium: </a>GNU General Public License v3.0</string>
@ -78,8 +78,8 @@
<string name="SpreadTheWordTxt">Tell your friends and family about Disroot! Why don\'t you blog about your experiences? We\'d love to hear from you!</string>
<string name="SpreadTheWordBtn">Share the app</string>
<string name="DisrootWeb">Disroot web</string>
<string name="FirstTitle">I almost forgot</string>
<string name="FirstInfo">You can do a long press on each icon to show you extra information…</string>
<string name="FirstTitle">Last couple of things!</string>
<string name="FirstInfo">&#8226; By doing a long press on each icon you can get extra information… \n\n&#8226; The app can sync with the status page of Disroot. This means that you will receive realtime updates on issues, downtimes, scheduled maintenace and others published via https://state.disroot.org\nWe recommend to turn off battery optimization and allow Disroot app to run in the background. If you\'re not sure, you can always change the setting from the Disroot app menu later.</string>
<string name="DiasporaTitle">Diaspora* Settings</string>
<string name="DiasporaInfo">Distributed and decentralized social network. Post, share, like, create communities.\n\nUsername:\n your_diaspora_username@pod.disroot.org\n\nPassword:\n your_diaspora_password</string>
<string name="PadInfo">With Etherpad write articles, press releases, to-do lists, etc. together with friends, fellow students or colleagues, all working on the same document at the same time.\nNo registration is required.</string>
@ -158,4 +158,7 @@
<string name="action_notes">Notes</string>
<string name="PadDialog">To continue you need to install Padland first.\nPlease select install to continue with the installation on F-Droid.</string>
<string name="do_you_want_to_exit">Do you want to exit?</string>
<string name="action_optimization">Battery optimization</string>
<string name="OptimizationTitle">Battery optimization!</string>
<string name="OptimizationInfo">With this update the app can sync with the status page of Disroot. This means you will receive realtime updates on issues, downtimes, scheduled maintenace and others published via https://state.disroot.org\nWe recommend to turn off battery optimization and allow Disroot app to run in background. If you\'re not sure, you can always change the setting from the menu of the Disroot app later.</string>
</resources>

View File

@ -1,5 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<changelog>
<release version="1.2.0" versioncode="19" >
<change>Notifications works as a service now</change>
<change>Added shortcut to battery optimizations in menu</change>
<change>Prompt for battery optimization to give user choice on first launch</change>
<change>Launch status service on boot time when battery optimization is turned off</change>
</release>
<release version="1.1.5" versioncode="18" >
<change>Notifications works on Android 8 and higher now</change>
<change>Added Disroot purple light notification</change>
<change>Updated Serbian translation</change>
</release>
<release version="1.1.4" versioncode="17" >
<change>Fixed App closing when pressing go back</change>
<change>Edited state error message</change>