Merge branch 'only-update-local-repos-without-internet' into 'master'
when no internet and local repos, only update local repos Closes #2146 See merge request fdroid/fdroidclient!997
This commit is contained in:
commit
c9fbb97018
@ -21,7 +21,7 @@ import androidx.test.uiautomator.UiObjectNotFoundException;
|
||||
import androidx.test.uiautomator.UiSelector;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import org.fdroid.fdroid.views.BannerUpdatingRepos;
|
||||
import org.fdroid.fdroid.views.StatusBanner;
|
||||
import org.fdroid.fdroid.views.main.MainActivity;
|
||||
import org.hamcrest.Matchers;
|
||||
import org.junit.After;
|
||||
@ -267,7 +267,7 @@ public class MainActivityEspressoTest {
|
||||
if (!BuildConfig.FLAVOR.startsWith("full")) {
|
||||
return;
|
||||
}
|
||||
onView(Matchers.<View>instanceOf(BannerUpdatingRepos.class)).check(matches(not(isDisplayed())));
|
||||
onView(Matchers.<View>instanceOf(StatusBanner.class)).check(matches(not(isDisplayed())));
|
||||
onView(allOf(withText(R.string.menu_settings), isDisplayed())).perform(click());
|
||||
onView(allOf(withText(R.string.main_menu__latest_apps), isDisplayed())).perform(click());
|
||||
onView(allOf(withId(R.id.swipe_to_refresh), isDisplayed()))
|
||||
|
@ -17,7 +17,7 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<org.fdroid.fdroid.views.BannerUpdatingRepos
|
||||
<org.fdroid.fdroid.views.StatusBanner
|
||||
android:id="@+id/banner_updating_repos"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
|
@ -267,7 +267,7 @@ public class FDroidApp extends Application implements androidx.work.Configuratio
|
||||
* @see #getTimeout()
|
||||
* @see Repo#getRandomMirror(String)
|
||||
*/
|
||||
public static String getNewMirrorOnError(@Nullable String urlString, Repo repo2) throws IOException {
|
||||
public static synchronized String getNewMirrorOnError(@Nullable String urlString, Repo repo2) throws IOException {
|
||||
if (repo2.hasMirrors()) {
|
||||
if (numTries <= 0) {
|
||||
if (timeout == Downloader.DEFAULT_TIMEOUT) {
|
||||
|
@ -253,6 +253,37 @@ public class UpdateService extends JobIntentService {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a {@link List} of all {@link Repo}s that have either a local
|
||||
* canonical URL or a local mirror URL. These are repos that can be
|
||||
* updated and used without using the Internet.
|
||||
*/
|
||||
public static List<Repo> getLocalRepos(Context context) {
|
||||
return getLocalRepos(RepoProvider.Helper.all(context));
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the repos in the {@code repos} {@link List} that have either a
|
||||
* local canonical URL or a local mirror URL. These are repos that can be
|
||||
* updated and used without using the Internet.
|
||||
*/
|
||||
public static List<Repo> getLocalRepos(List<Repo> repos) {
|
||||
ArrayList<Repo> localRepos = new ArrayList<>();
|
||||
for (Repo repo : repos) {
|
||||
if (isLocalRepoAddress(repo.address)) {
|
||||
localRepos.add(repo);
|
||||
} else {
|
||||
for (String mirrorAddress : repo.getMirrorList()) {
|
||||
if (isLocalRepoAddress(mirrorAddress)) {
|
||||
localRepos.add(repo);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return localRepos;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate() {
|
||||
super.onCreate();
|
||||
@ -264,7 +295,7 @@ public class UpdateService extends JobIntentService {
|
||||
.setSmallIcon(R.drawable.ic_refresh)
|
||||
.setOngoing(true)
|
||||
.setCategory(NotificationCompat.CATEGORY_SERVICE)
|
||||
.setContentTitle(getString(R.string.update_notification_title));
|
||||
.setContentTitle(getString(R.string.banner_updating_repositories));
|
||||
appUpdateStatusManager = AppUpdateStatusManager.getInstance(this);
|
||||
}
|
||||
|
||||
@ -404,22 +435,11 @@ public class UpdateService extends JobIntentService {
|
||||
if (isLocalRepoAddress(address)) {
|
||||
Utils.debugLog(TAG, "skipping internet check, this is local: " + address);
|
||||
} else if (netState == ConnectivityMonitorService.FLAG_NET_UNAVAILABLE) {
|
||||
boolean foundLocalRepo = false;
|
||||
for (Repo repo : repos) {
|
||||
if (isLocalRepoAddress(repo.address)) {
|
||||
foundLocalRepo = true;
|
||||
} else {
|
||||
for (String mirrorAddress : repo.getMirrorList()) {
|
||||
if (isLocalRepoAddress(mirrorAddress)) {
|
||||
foundLocalRepo = true;
|
||||
//localRepos.add(repo);
|
||||
//FDroidApp.setLastWorkingMirror(repo.getId(), mirrorAddress);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!foundLocalRepo) {
|
||||
// keep track of repos that have a local copy in case internet is not available
|
||||
List<Repo> localRepos = getLocalRepos(repos);
|
||||
if (localRepos.size() > 0) {
|
||||
repos = localRepos;
|
||||
} else {
|
||||
Utils.debugLog(TAG, "No internet, cannot update");
|
||||
if (manualUpdate) {
|
||||
Utils.showToastFromService(this, getString(R.string.warning_no_internet), Toast.LENGTH_SHORT);
|
||||
|
@ -1,83 +0,0 @@
|
||||
package org.fdroid.fdroid.views;
|
||||
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.Gravity;
|
||||
import android.view.View;
|
||||
|
||||
import org.fdroid.fdroid.R;
|
||||
import org.fdroid.fdroid.UpdateService;
|
||||
|
||||
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
|
||||
|
||||
/**
|
||||
* Widget which reflects whether or not a repo update is currently in progress or not. If so, shows
|
||||
* some sort of feedback to the user.
|
||||
*/
|
||||
public class BannerUpdatingRepos extends androidx.appcompat.widget.AppCompatTextView {
|
||||
|
||||
public BannerUpdatingRepos(Context context) {
|
||||
this(context, null);
|
||||
}
|
||||
|
||||
public BannerUpdatingRepos(Context context, AttributeSet attrs) {
|
||||
this(context, attrs, android.R.attr.textViewStyle);
|
||||
}
|
||||
|
||||
public BannerUpdatingRepos(Context context, AttributeSet attrs, int defStyleAttr) {
|
||||
super(context, attrs, defStyleAttr);
|
||||
int padding = (int) getResources().getDimension(R.dimen.banner__padding);
|
||||
setPadding(padding, padding, padding, padding);
|
||||
setBackgroundColor(0xFF4A4A4A);
|
||||
setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
|
||||
setText(R.string.update_notification_title);
|
||||
setTextColor(0xFFFFFFFF);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onAttachedToWindow() {
|
||||
super.onAttachedToWindow();
|
||||
monitorRepoUpdates();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDetachedFromWindow() {
|
||||
super.onDetachedFromWindow();
|
||||
stopMonitoringRepoUpdates();
|
||||
}
|
||||
|
||||
private void monitorRepoUpdates() {
|
||||
if (isInEditMode()) {
|
||||
return;
|
||||
}
|
||||
|
||||
LocalBroadcastManager.getInstance(getContext()).registerReceiver(onRepoFeedback,
|
||||
new IntentFilter(UpdateService.LOCAL_ACTION_STATUS));
|
||||
setBannerIsVisible(UpdateService.isUpdating());
|
||||
}
|
||||
|
||||
private void setBannerIsVisible(boolean isUpdating) {
|
||||
if (isUpdating) {
|
||||
setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
private void stopMonitoringRepoUpdates() {
|
||||
LocalBroadcastManager.getInstance(getContext()).unregisterReceiver(onRepoFeedback);
|
||||
}
|
||||
|
||||
private final BroadcastReceiver onRepoFeedback = new BroadcastReceiver() {
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
// Anything other than a STATUS_INFO broadcast signifies that it was complete (and out
|
||||
// banner should be removed).
|
||||
boolean isInfo = intent.getIntExtra(UpdateService.EXTRA_STATUS_CODE, 0) == UpdateService.STATUS_INFO;
|
||||
setBannerIsVisible(isInfo);
|
||||
}
|
||||
};
|
||||
}
|
178
app/src/main/java/org/fdroid/fdroid/views/StatusBanner.java
Normal file
178
app/src/main/java/org/fdroid/fdroid/views/StatusBanner.java
Normal file
@ -0,0 +1,178 @@
|
||||
package org.fdroid.fdroid.views;
|
||||
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.content.SharedPreferences;
|
||||
import android.net.ConnectivityManager;
|
||||
import android.net.Uri;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.Gravity;
|
||||
import android.view.View;
|
||||
|
||||
import org.fdroid.fdroid.Preferences;
|
||||
import org.fdroid.fdroid.R;
|
||||
import org.fdroid.fdroid.UpdateService;
|
||||
import org.fdroid.fdroid.data.Repo;
|
||||
import org.fdroid.fdroid.net.ConnectivityMonitorService;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
|
||||
import androidx.preference.PreferenceManager;
|
||||
|
||||
/**
|
||||
* Banner widget which reflects current status related to repository updates.
|
||||
* It will display whether repositories area actively being updated, or
|
||||
* whether there is no Internet connection, so repositories cannot be updated
|
||||
* from the Internet.
|
||||
* <p>
|
||||
* It shows a "No Internet" message when it identifies the device is not
|
||||
* connected. Will only monitor the wifi state when attached to the window.
|
||||
* Note that this does a pretty poor job of responding to network changes in
|
||||
* real time. It only knows how to respond to the <em>enabling</em> of WiFi
|
||||
* (not disabling of WiFi, nor enabling/disabling of mobile data). However it
|
||||
* will always query the network state when it is shown to the user. This way
|
||||
* if they change between tabs, hide and then open F-Droid, or do other things
|
||||
* which require the view to attach to the window again then it will update the
|
||||
* network state. In practice this works pretty well.
|
||||
*
|
||||
* @see <a href="https://gitlab.com/fdroid/fdroidclient/-/merge_requests/724">"No internet" banner on main, categories, and updates screen</a>
|
||||
*/
|
||||
public class StatusBanner extends androidx.appcompat.widget.AppCompatTextView {
|
||||
|
||||
private int updateServiceStatus = UpdateService.STATUS_COMPLETE_WITH_CHANGES;
|
||||
private int networkState = ConnectivityMonitorService.FLAG_NET_NO_LIMIT;
|
||||
private int overDataState;
|
||||
private int overWiFiState;
|
||||
private List<Repo> localRepos;
|
||||
|
||||
private final SharedPreferences preferences;
|
||||
|
||||
public StatusBanner(Context context) {
|
||||
this(context, null);
|
||||
}
|
||||
|
||||
public StatusBanner(Context context, AttributeSet attrs) {
|
||||
this(context, attrs, android.R.attr.textViewStyle);
|
||||
}
|
||||
|
||||
public StatusBanner(Context context, AttributeSet attrs, int defStyleAttr) {
|
||||
super(context, attrs, defStyleAttr);
|
||||
int padding = (int) getResources().getDimension(R.dimen.banner__padding);
|
||||
setPadding(padding, padding, padding, padding);
|
||||
setBackgroundColor(0xFF4A4A4A);
|
||||
setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
|
||||
setTextColor(0xFFFFFFFF);
|
||||
|
||||
preferences = PreferenceManager.getDefaultSharedPreferences(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onAttachedToWindow() {
|
||||
super.onAttachedToWindow();
|
||||
Context context = getContext();
|
||||
networkState = ConnectivityMonitorService.getNetworkState(context);
|
||||
context.registerReceiver(onNetworkStateChanged,
|
||||
new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
|
||||
|
||||
if (UpdateService.isUpdating()) {
|
||||
updateServiceStatus = UpdateService.STATUS_INFO;
|
||||
}
|
||||
LocalBroadcastManager.getInstance(context).registerReceiver(onRepoFeedback,
|
||||
new IntentFilter(UpdateService.LOCAL_ACTION_STATUS));
|
||||
|
||||
overDataState = Preferences.get().getOverData();
|
||||
overWiFiState = Preferences.get().getOverWifi();
|
||||
localRepos = UpdateService.getLocalRepos(context);
|
||||
preferences.registerOnSharedPreferenceChangeListener(dataWifiChangeListener);
|
||||
|
||||
setBannerTextAndVisibility();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDetachedFromWindow() {
|
||||
super.onDetachedFromWindow();
|
||||
Context context = getContext();
|
||||
LocalBroadcastManager.getInstance(context).unregisterReceiver(onRepoFeedback);
|
||||
context.unregisterReceiver(onNetworkStateChanged);
|
||||
preferences.unregisterOnSharedPreferenceChangeListener(dataWifiChangeListener);
|
||||
}
|
||||
|
||||
/**
|
||||
* Display banner with specific text depending on updating status, network
|
||||
* connectivity, and Data/WiFi Settings. This also takes into account
|
||||
* whether there are local repos/mirrors available, e.g. if there is a
|
||||
* mirror on a USB OTG thumb drive. Local repos on system partitions are
|
||||
* not treated as local mirrors here, they are shipped as part of the
|
||||
* device, and users are generally not aware of them.
|
||||
*
|
||||
* @see org.fdroid.fdroid.data.DBHelper#loadAdditionalRepos(String)
|
||||
*/
|
||||
private void setBannerTextAndVisibility() {
|
||||
if (updateServiceStatus == UpdateService.STATUS_INFO) {
|
||||
setText(R.string.banner_updating_repositories);
|
||||
setVisibility(View.VISIBLE);
|
||||
} else if (networkState == ConnectivityMonitorService.FLAG_NET_UNAVAILABLE
|
||||
|| networkState == ConnectivityMonitorService.FLAG_NET_DEVICE_AP_WITHOUT_INTERNET) {
|
||||
setText(R.string.banner_no_internet);
|
||||
setVisibility(View.VISIBLE);
|
||||
} else if (overDataState == Preferences.OVER_NETWORK_NEVER
|
||||
&& overWiFiState == Preferences.OVER_NETWORK_NEVER) {
|
||||
localRepos = UpdateService.getLocalRepos(getContext());
|
||||
boolean hasLocalNonSystemRepos = true;
|
||||
final List<String> systemPartitions = Arrays.asList("odm", "oem", "product", "system", "vendor");
|
||||
for (Repo repo : localRepos) {
|
||||
for (String segment : Uri.parse(repo.address).getPathSegments()) {
|
||||
if (systemPartitions.contains(segment)) {
|
||||
hasLocalNonSystemRepos = false;
|
||||
}
|
||||
break; // only check the first segment NOPMD
|
||||
}
|
||||
}
|
||||
if (localRepos.size() == 0 || !hasLocalNonSystemRepos) {
|
||||
setText(R.string.banner_no_data_or_wifi);
|
||||
setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
setVisibility(View.GONE);
|
||||
}
|
||||
} else {
|
||||
setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Anything other than a {@link UpdateService#STATUS_INFO} broadcast
|
||||
* signifies that it was complete (and out banner should be removed).
|
||||
*/
|
||||
private final BroadcastReceiver onRepoFeedback = new BroadcastReceiver() {
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
updateServiceStatus = intent.getIntExtra(UpdateService.EXTRA_STATUS_CODE,
|
||||
UpdateService.STATUS_COMPLETE_WITH_CHANGES);
|
||||
setBannerTextAndVisibility();
|
||||
}
|
||||
};
|
||||
|
||||
private final BroadcastReceiver onNetworkStateChanged = new BroadcastReceiver() {
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
networkState = ConnectivityMonitorService.getNetworkState(context);
|
||||
setBannerTextAndVisibility();
|
||||
}
|
||||
};
|
||||
|
||||
private final SharedPreferences.OnSharedPreferenceChangeListener dataWifiChangeListener =
|
||||
new SharedPreferences.OnSharedPreferenceChangeListener() {
|
||||
@Override
|
||||
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
|
||||
if (key == Preferences.PREF_OVER_DATA || key == Preferences.PREF_OVER_WIFI) {
|
||||
overDataState = Preferences.get().getOverData();
|
||||
overWiFiState = Preferences.get().getOverWifi();
|
||||
setBannerTextAndVisibility();
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
@ -16,7 +16,7 @@
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<org.fdroid.fdroid.views.BannerUpdatingRepos
|
||||
<org.fdroid.fdroid.views.StatusBanner
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
|
@ -18,7 +18,7 @@
|
||||
android:layout_height="match_parent"
|
||||
android:background="?attr/mainTabSwapBackground">
|
||||
|
||||
<org.fdroid.fdroid.views.BannerUpdatingRepos
|
||||
<org.fdroid.fdroid.views.StatusBanner
|
||||
android:id="@+id/banner_updating_repos"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
|
@ -115,7 +115,7 @@
|
||||
<string name="proxy_host_summary">Jou proxy se hostnaam (bv. 127.0.0.1)</string>
|
||||
<string name="proxy_port">Proxypoort</string>
|
||||
<string name="proxy_port_summary">Jou proxy se poortnommer (bv. 8118)</string>
|
||||
<string name="update_notification_title">Opdatering van argiewe</string>
|
||||
<string name="banner_updating_repositories">Opdatering van argiewe</string>
|
||||
<string name="status_processing_xml_percent">Besig met %2$s / %3$s (%4$d%%) van %1$s</string>
|
||||
<string name="status_connecting_to_repo">Koppel tans aan
|
||||
\n%1$s</string>
|
||||
|
@ -135,7 +135,7 @@
|
||||
<string name="proxy_port_summary">رقم منفذ البروكسي الخاص بك (مثلا 8118)</string>
|
||||
<string name="status_download">تحميل\n%2$s / %3$s (%4$d%%) من\n%1$s</string>
|
||||
<string name="status_download_unknown_size">تحميل\n%2$s من\n%1$s</string>
|
||||
<string name="update_notification_title">تحديث المستودعات</string>
|
||||
<string name="banner_updating_repositories">تحديث المستودعات</string>
|
||||
<string name="status_processing_xml_percent">تجهيز %2$s / %3$s (%4$d%%) مِن %1$s</string>
|
||||
<string name="status_connecting_to_repo">جارٍ الاتصال ب
|
||||
\n %1$s</string>
|
||||
|
@ -170,7 +170,7 @@
|
||||
<string name="bad_fingerprint">Buelga incorreuta</string>
|
||||
<string name="invalid_url">Esto nun ye una URL válida.</string>
|
||||
<string name="menu_changelog">Rexistru de cambeos</string>
|
||||
<string name="update_notification_title">Anovando depósitos</string>
|
||||
<string name="banner_updating_repositories">Anovando depósitos</string>
|
||||
<string name="pref_language">Llingua</string>
|
||||
<string name="pref_language_default">La del sistema</string>
|
||||
<string name="wifi">Wi-Fi</string>
|
||||
|
@ -128,7 +128,7 @@
|
||||
<string name="status_download_unknown_size">Спампоўванне
|
||||
\n%2$s з
|
||||
\n%1$s</string>
|
||||
<string name="update_notification_title">Абнаўленне рэпазіторыяў</string>
|
||||
<string name="banner_updating_repositories">Абнаўленне рэпазіторыяў</string>
|
||||
<string name="status_processing_xml_percent">Апрацоўка %2$s / %3$s (%4$d%%) з %1$s</string>
|
||||
<string name="status_connecting_to_repo">Злучэнне з
|
||||
\n%1$s</string>
|
||||
|
@ -156,7 +156,7 @@
|
||||
<string name="interval_2w">През 2 седмици</string>
|
||||
<string name="downloading">Сваляне…</string>
|
||||
<string name="about_source">Изходен код</string>
|
||||
<string name="update_notification_title">Обновяване на хранилищата</string>
|
||||
<string name="banner_updating_repositories">Обновяване на хранилищата</string>
|
||||
<string name="install_error_unknown">Инсталирането се провали поради неизвестна грешка</string>
|
||||
<string name="uninstall_error_unknown">Деинсталирането се провали поради неизвестна грешка</string>
|
||||
<string name="swap_choose_apps">Изберете приложения</string>
|
||||
|
@ -183,7 +183,7 @@
|
||||
\n%2$s ནས་
|
||||
\n%1$s</string>
|
||||
<string name="download_404">རེ་སྐུལ་ཞུས་པའི་ཡིག་ཆ་དེ་རྙེད་མ་སོང་།</string>
|
||||
<string name="update_notification_title">མཛོད་ཁང་རྣམས་གསར་བསྒྱུར་བྱེད་བཞིན་པ།</string>
|
||||
<string name="banner_updating_repositories">མཛོད་ཁང་རྣམས་གསར་བསྒྱུར་བྱེད་བཞིན་པ།</string>
|
||||
<string name="status_connecting_to_repo">%1$s འདིར་མཐུད་བཞིན་པ།</string>
|
||||
<string name="repos_unchanged">མཛོད་ཁང་ཚང་མ་དུས་ཐོག་ཏུ་ཡོད།</string>
|
||||
<string name="all_other_repos_fine">རེ་པོ་གཞན་དག་ཚང་མར་སྐྱོན་ཤོར་མིན་འདུག</string>
|
||||
|
@ -154,7 +154,7 @@
|
||||
<string name="menu_bitcoin">Bitcoin</string>
|
||||
<string name="menu_litecoin">Litecoin</string>
|
||||
<string name="menu_flattr">Flattr</string>
|
||||
<string name="update_notification_title">Actualitzant els dipòsits</string>
|
||||
<string name="banner_updating_repositories">Actualitzant els dipòsits</string>
|
||||
<string name="more">Més</string>
|
||||
<string name="less">Menys</string>
|
||||
<string name="permissions">Permisos</string>
|
||||
|
@ -145,7 +145,7 @@
|
||||
<string name="menu_litecoin">Litecoin</string>
|
||||
<string name="menu_flattr">Flattr</string>
|
||||
<string name="status_download_unknown_size">Stahování\n%2$s z\n%1$s</string>
|
||||
<string name="update_notification_title">Aktualizace repozitářů</string>
|
||||
<string name="banner_updating_repositories">Aktualizace repozitářů</string>
|
||||
<string name="status_processing_xml_percent">Zpracovávání %2$s / %3$s (%4$d%%) z %1$s</string>
|
||||
<string name="all_other_repos_fine">Žádné jiné repozitáře nenahlásily chyby.</string>
|
||||
<string name="permissions">Oprávnění</string>
|
||||
|
@ -237,7 +237,7 @@
|
||||
\n%2$s o
|
||||
\n%1$s</string>
|
||||
<string name="download_404">Ni chanfuwyd y ffeil honno.</string>
|
||||
<string name="update_notification_title">Yn diweddaru ystorfeydd</string>
|
||||
<string name="banner_updating_repositories">Yn diweddaru ystorfeydd</string>
|
||||
<string name="status_processing_xml_percent">Yn prosesu %2$s / %3$s (%4$d%%) o %1$s</string>
|
||||
<string name="status_connecting_to_repo">Yn cysylltu â
|
||||
\n%1$s</string>
|
||||
|
@ -108,7 +108,7 @@
|
||||
<string name="proxy_port_summary">Proxy portnummer (e.g. 8118)</string>
|
||||
<string name="status_download">Henter\n%2$s / %3$s (%4$d%%) fra\n%1$s</string>
|
||||
<string name="status_download_unknown_size">Henter\n%2$s fra\n%1$s</string>
|
||||
<string name="update_notification_title">Opdaterer depoter</string>
|
||||
<string name="banner_updating_repositories">Opdaterer depoter</string>
|
||||
<string name="status_processing_xml_percent">Behandler %2$s / %3$s (%4$d%%) fra %1$s</string>
|
||||
<string name="status_connecting_to_repo">Forbinder til\n%1$s</string>
|
||||
<string name="status_inserting_apps">Gemmer app-detaljer</string>
|
||||
|
@ -146,7 +146,7 @@
|
||||
<string name="back">Zurück</string>
|
||||
<string name="bad_fingerprint">Falscher Fingerabdruck</string>
|
||||
<string name="invalid_url">Das ist keine gültige Adresse.</string>
|
||||
<string name="update_notification_title">Paketquellenaktualisierung</string>
|
||||
<string name="banner_updating_repositories">Paketquellenaktualisierung</string>
|
||||
<string name="pref_language">Sprache</string>
|
||||
<string name="pref_language_default">Systemstandard</string>
|
||||
<string name="wifi">WLAN</string>
|
||||
|
@ -134,7 +134,7 @@
|
||||
<string name="status_download_unknown_size">Λήψη
|
||||
\n%2$s από
|
||||
\n%1$s</string>
|
||||
<string name="update_notification_title">Ενημέρωση αποθετηρίων</string>
|
||||
<string name="banner_updating_repositories">Ενημέρωση αποθετηρίων</string>
|
||||
<string name="status_processing_xml_percent">Επεξεργασία %2$s / %3$s (%4$d%%) από %1$s</string>
|
||||
<string name="repos_unchanged">Όλα τα αποθετήρια είναι ενημερωμένα</string>
|
||||
<string name="all_other_repos_fine">Τα υπόλοιπα αποθετήρια δεν δημιούργησαν σφάλματα.</string>
|
||||
|
@ -206,7 +206,7 @@
|
||||
<string name="status_inserting_x_apps">Saving app details (%1$d/%2$d) from %3$s</string>
|
||||
<string name="status_connecting_to_repo">Connecting to
|
||||
\n%1$s</string>
|
||||
<string name="update_notification_title">Updating repositories</string>
|
||||
<string name="banner_updating_repositories">Updating repositories</string>
|
||||
<string name="download_404">The requested file was not found.</string>
|
||||
<string name="status_download_unknown_size">Downloading
|
||||
\n%2$s from
|
||||
|
@ -141,7 +141,7 @@
|
||||
<string name="status_download_unknown_size">Elŝutado
|
||||
\n%2$s el
|
||||
\n%1$s</string>
|
||||
<string name="update_notification_title">Ĝisdatigado de deponejoj</string>
|
||||
<string name="banner_updating_repositories">Ĝisdatigado de deponejoj</string>
|
||||
<string name="status_processing_xml_percent">Prilaborado de %2$s / %3$s (%4$d%%) el %1$s</string>
|
||||
<string name="status_connecting_to_repo">Konektado al
|
||||
\n%1$s</string>
|
||||
|
@ -287,7 +287,7 @@
|
||||
\n%2$s desde
|
||||
\n%1$s</string>
|
||||
<string name="download_404">El archivo pedido no fue encontrado.</string>
|
||||
<string name="update_notification_title">Actualizando repositorios</string>
|
||||
<string name="banner_updating_repositories">Actualizando repositorios</string>
|
||||
<string name="status_processing_xml_percent">Procesando %2$s / %3$s (%4$d%%) de %1$s</string>
|
||||
<string name="status_connecting_to_repo">Conectando a
|
||||
\n%1$s</string>
|
||||
|
@ -147,7 +147,7 @@
|
||||
<string name="bad_fingerprint">Huella digital incorrecta</string>
|
||||
<string name="invalid_url">No es una URL válida.</string>
|
||||
<string name="menu_changelog">Historial de cambios</string>
|
||||
<string name="update_notification_title">Actualizando repositorios</string>
|
||||
<string name="banner_updating_repositories">Actualizando repositorios</string>
|
||||
<string name="status_processing_xml_percent">Procesando %2$s / %3$s (%4$d%%) desde %1$s</string>
|
||||
<string name="pref_language">Idioma</string>
|
||||
<string name="pref_language_default">Predeterminado del sistema</string>
|
||||
|
@ -70,7 +70,7 @@
|
||||
<string name="adding_apks_format">%s lisatakse hoidlasse…</string>
|
||||
<string name="linking_apks">APK faile lingitakse hoidlasse…</string>
|
||||
<string name="copying_icons">Rakenduste ikoone kopeeritakse hoidlasse…</string>
|
||||
<string name="update_notification_title">Hoidlaid värskendatakse</string>
|
||||
<string name="banner_updating_repositories">Hoidlaid värskendatakse</string>
|
||||
<string name="repos_unchanged">Kõik hoidlad on kaasajastaud</string>
|
||||
<string name="all_other_repos_fine">Kõik ülejäänud hoidlad vigu ei põhjustanud.</string>
|
||||
<string name="repo_details">Hoidla</string>
|
||||
|
@ -121,7 +121,7 @@
|
||||
<string name="copying_icons">Aplikazioen ikonoak biltegira kopiatzen…</string>
|
||||
<string name="proxy_host">Proxy ostalaria</string>
|
||||
<string name="enable_proxy_summary">Konfiguratu HTTP Proxya sare eskari guztientzat</string>
|
||||
<string name="update_notification_title">Biltegiak eguneratzen</string>
|
||||
<string name="banner_updating_repositories">Biltegiak eguneratzen</string>
|
||||
<string name="repos_unchanged">Biltegi guztiak egunean daude</string>
|
||||
<string name="all_other_repos_fine">Beste biltegiek ez dute errorerik sortu.</string>
|
||||
<string name="global_error_updating_repos">Errorea eguneratzean: %s</string>
|
||||
|
@ -118,7 +118,7 @@
|
||||
<string name="proxy_port">درگاه پروکسی</string>
|
||||
<string name="proxy_port_summary">شمارهٔ درگاه پروکسی (مثلاً 8118)</string>
|
||||
<string name="status_download_unknown_size">در حال بارگیری\n%2$s از\n%1$s</string>
|
||||
<string name="update_notification_title">در حال بهروز رسانی مخزنها</string>
|
||||
<string name="banner_updating_repositories">در حال بهروز رسانی مخزنها</string>
|
||||
<string name="status_processing_xml_percent">در حال پردازش %2$s / %3$s (%4$d%%) از %1$s</string>
|
||||
<string name="status_inserting_apps">در حال ذخیرهٔ جزئیات برنامه</string>
|
||||
<string name="repos_unchanged">تمام مخزنها بهروز هستند</string>
|
||||
|
@ -163,7 +163,7 @@
|
||||
<string name="show_incompat_versions_on">Näytä sovellusversiot, jotka eivät ole yhteensopivia laitteesi kanssa</string>
|
||||
<string name="useTor">Käytä Tor-verkkoa</string>
|
||||
<string name="useTorSummary">Pakota latausliikenne Tor-verkon kautta yksityisyyden lisäämiseksi. Vaatii Orbotin</string>
|
||||
<string name="update_notification_title">Päivitetään sovelluslähteitä</string>
|
||||
<string name="banner_updating_repositories">Päivitetään sovelluslähteitä</string>
|
||||
<string name="status_inserting_apps">Tallennetaan sovelluksen tietoja</string>
|
||||
<string name="no_permissions">Ei käyttöoikeuksia</string>
|
||||
<string name="permissions">Käyttöluvat</string>
|
||||
|
@ -148,7 +148,7 @@
|
||||
<string name="bad_fingerprint">Mauvaise empreinte</string>
|
||||
<string name="invalid_url">Ceci n\'est pas une URL valide.</string>
|
||||
<string name="menu_changelog">Journal des changements</string>
|
||||
<string name="update_notification_title">Mise à jour des dépôts</string>
|
||||
<string name="banner_updating_repositories">Mise à jour des dépôts</string>
|
||||
<string name="pref_language">Langue</string>
|
||||
<string name="pref_language_default">Langue du système</string>
|
||||
<string name="wifi">Wi-Fi</string>
|
||||
|
@ -104,7 +104,7 @@
|
||||
<string name="status_download_unknown_size">Estase a baixar
|
||||
\n%2$s dende
|
||||
\n%1$s</string>
|
||||
<string name="update_notification_title">Estanse a actualizar os repositorios</string>
|
||||
<string name="banner_updating_repositories">Estanse a actualizar os repositorios</string>
|
||||
<string name="status_processing_xml_percent">Estase a procesar %2$s / %3$s (%4$d%%) dende %1$s</string>
|
||||
<string name="repos_unchanged">Tódolos repositorios están actualizados</string>
|
||||
<string name="all_other_repos_fine">Os demais repositorios non xeraron erros.</string>
|
||||
|
@ -92,7 +92,7 @@
|
||||
<string name="status_download">מתבצעת הורדה
|
||||
\n%2$s / %3$s (%4$d%%) מתוך
|
||||
\n%1$s</string>
|
||||
<string name="update_notification_title">המאגרים מתעדכנים</string>
|
||||
<string name="banner_updating_repositories">המאגרים מתעדכנים</string>
|
||||
<string name="status_processing_xml_percent">%2$s בהליכי עיבוד / %3$s (%4$d%%) מתוך %1$s</string>
|
||||
<string name="status_connecting_to_repo">מתבצעת התחברות אל
|
||||
\n%1$s</string>
|
||||
|
@ -239,7 +239,7 @@
|
||||
<string name="status_download_unknown_size">डाउनलोड कर रहा है
|
||||
\n%2$s से
|
||||
\n%1$s</string>
|
||||
<string name="update_notification_title">रिपोजिटरी को अपडेट करना</string>
|
||||
<string name="banner_updating_repositories">रिपोजिटरी को अपडेट करना</string>
|
||||
<string name="no_permissions">कोई अनुमति नहीं</string>
|
||||
<string name="permissions">अनुमतियां</string>
|
||||
<string name="no_handler_app">आपके पास कोई भी उपलब्ध ऐप नहीं है जो %s को संभाल सके।</string>
|
||||
|
@ -118,7 +118,7 @@
|
||||
<string name="proxy_port_summary">Broj priključka Vašeg proxyja (npr. 8118)</string>
|
||||
<string name="status_download">Preuzimam\n%2$s / %3$s (%4$d%%) sa\n%1$s</string>
|
||||
<string name="status_download_unknown_size">Preuzimam\n%2$s sa\n%1$s</string>
|
||||
<string name="update_notification_title">Ažuriram repozitorije</string>
|
||||
<string name="banner_updating_repositories">Ažuriram repozitorije</string>
|
||||
<string name="status_processing_xml_percent">Obrađujem %2$s / %3$s (%4$d%%) od %1$s</string>
|
||||
<string name="status_connecting_to_repo">Spajam se na\n%1$s</string>
|
||||
<string name="status_inserting_apps">Spremanje detalja aplikacije</string>
|
||||
|
@ -116,7 +116,7 @@
|
||||
<string name="unsigned">Aláíratlan</string>
|
||||
<string name="unverified">Megerősítetlen</string>
|
||||
<string name="repo_details">Tároló</string>
|
||||
<string name="update_notification_title">Tárolók frissítése</string>
|
||||
<string name="banner_updating_repositories">Tárolók frissítése</string>
|
||||
<string name="repos_unchanged">Minden tároló naprakész</string>
|
||||
<string name="repo_url">Cím</string>
|
||||
<string name="repo_num_apps">Alkalmazások száma</string>
|
||||
|
@ -188,7 +188,7 @@
|
||||
<string name="menu_upgrade">Թարմացնել</string>
|
||||
<string name="main_menu__latest_apps">Ամենանորը</string>
|
||||
<string name="adding_apks_format">Ավելացնում եմ %s շտեմարանին…</string>
|
||||
<string name="update_notification_title">Թարմացնում եմ շտեմարանները</string>
|
||||
<string name="banner_updating_repositories">Թարմացնում եմ շտեմարանները</string>
|
||||
<string name="repos_unchanged">Բոլոր շտեմարանները արդի են</string>
|
||||
<string name="repo_details">Շտեմարան</string>
|
||||
<string name="repo_not_yet_updated">Այս շտեմարանը դեռևս չի օգտագործվել։
|
||||
|
@ -102,7 +102,7 @@
|
||||
<string name="status_download_unknown_size">Mengunduh
|
||||
\n%2$s dari
|
||||
\n%1$s</string>
|
||||
<string name="update_notification_title">Memperbarui repositori</string>
|
||||
<string name="banner_updating_repositories">Memperbarui repositori</string>
|
||||
<string name="status_processing_xml_percent">Memproses %2$s / %3$s (%4$d%%) dari %1$s</string>
|
||||
<string name="status_connecting_to_repo">Menghubungkan ke
|
||||
\n%1$s</string>
|
||||
|
@ -99,7 +99,7 @@
|
||||
<string name="status_download_unknown_size">Sæki
|
||||
\n%2$s frá
|
||||
\n%1$s</string>
|
||||
<string name="update_notification_title">Uppfæri hugbúnaðarsöfn</string>
|
||||
<string name="banner_updating_repositories">Uppfæri hugbúnaðarsöfn</string>
|
||||
<string name="status_processing_xml_percent">Meðhöndla %2$s / %3$s (%4$d%%) frá %1$s</string>
|
||||
<string name="status_connecting_to_repo">Tengist við
|
||||
\n%1$s</string>
|
||||
|
@ -208,7 +208,7 @@
|
||||
<string name="menu_changelog">Cronologia</string>
|
||||
<string name="menu_litecoin">Litecoin</string>
|
||||
<string name="menu_flattr">Flattr</string>
|
||||
<string name="update_notification_title">Aggiornamento dei repository</string>
|
||||
<string name="banner_updating_repositories">Aggiornamento dei repository</string>
|
||||
<string name="status_processing_xml_percent">Elaborazione %2$s/%3$s (%4$d%%) di %1$s</string>
|
||||
<string name="status_inserting_apps">Salvataggio dettagli applicazione</string>
|
||||
<string name="repo_details">Repository</string>
|
||||
|
@ -141,7 +141,7 @@
|
||||
<string name="bad_fingerprint">フィンガープリントが間違っています</string>
|
||||
<string name="invalid_url">有効なURLではありません。</string>
|
||||
<string name="menu_changelog">変更履歴</string>
|
||||
<string name="update_notification_title">リポジトリを更新中</string>
|
||||
<string name="banner_updating_repositories">リポジトリを更新中</string>
|
||||
<string name="status_processing_xml_percent">%1$sから%2$s/%3$s(%4$d%%)処理中</string>
|
||||
<string name="pref_language">言語</string>
|
||||
<string name="pref_language_default">システムの既定</string>
|
||||
|
@ -210,7 +210,7 @@
|
||||
\n%2$s si
|
||||
\n%1$s</string>
|
||||
<string name="download_404">Afaylu i tettnadiḍ ulac-it.</string>
|
||||
<string name="update_notification_title">Aleqqem n ikufiyen</string>
|
||||
<string name="banner_updating_repositories">Aleqqem n ikufiyen</string>
|
||||
<string name="status_connecting_to_repo">Tuqna γer
|
||||
\n%1$s</string>
|
||||
<string name="global_error_updating_repos">Tuccḍa di uleqqem: %s</string>
|
||||
|
@ -459,7 +459,7 @@
|
||||
<string name="status_inserting_x_apps">ಅಪ್ಲಿಕೇಶನ್ ವಿವರಗಳನ್ನು (%1$d /%2$d) %3$s ನಿಂದ ಉಳಿಸಲಾಗುತ್ತಿದೆ</string>
|
||||
<string name="status_connecting_to_repo">ಗೆ ಸಂಪರ್ಕಿಸಲಾಗುತ್ತಿದೆ
|
||||
\n%1$s</string>
|
||||
<string name="update_notification_title">ರೆಪೊಸಿಟರಿಗಳನ್ನು ನವೀಕರಿಸಲಾಗುತ್ತಿದೆ</string>
|
||||
<string name="banner_updating_repositories">ರೆಪೊಸಿಟರಿಗಳನ್ನು ನವೀಕರಿಸಲಾಗುತ್ತಿದೆ</string>
|
||||
<string name="download_404">ವಿನಂತಿಸಿದ ಫೈಲ್ ಕಂಡುಬಂದಿಲ್ಲ.</string>
|
||||
<string name="status_download_unknown_size">ಡೌನ್ಲೋಡ್ ಮಾಡಲಾಗುತ್ತಿದೆ
|
||||
\n%2$s ನಿಂದ
|
||||
|
@ -161,7 +161,7 @@
|
||||
<string name="status_download_unknown_size">%1$s에서
|
||||
\n%2$s
|
||||
\n다운로드 중</string>
|
||||
<string name="update_notification_title">저장소 업데이트 중</string>
|
||||
<string name="banner_updating_repositories">저장소 업데이트 중</string>
|
||||
<string name="status_processing_xml_percent">%1$s에서 %2$s / %3$s (%4$d%%) 처리 중</string>
|
||||
<string name="status_inserting_apps">앱 자세한 사항 저장 중</string>
|
||||
<string name="permissions">권한</string>
|
||||
|
@ -157,7 +157,7 @@
|
||||
<string name="hide_on_long_search_press_title">Paslėpti su paieškos mygtuku</string>
|
||||
<string name="hide_on_long_search_press_summary">Ilgai palaikus paieškos mygtuka programa bus paslėpta</string>
|
||||
<string name="download_404">Užklaustas failas nebuvo rastas.</string>
|
||||
<string name="update_notification_title">Atnaujinamos saugyklos</string>
|
||||
<string name="banner_updating_repositories">Atnaujinamos saugyklos</string>
|
||||
<string name="status_inserting_x_apps">Saugojama programos informacija (%1$d/%2$d) nuo %3$s</string>
|
||||
<string name="all_other_repos_fine">Visos kitos saugyklos nesukūrė klaidų.</string>
|
||||
<string name="no_permissions">Nėra leidimų</string>
|
||||
|
@ -46,7 +46,7 @@
|
||||
<string name="status_inserting_x_apps">Зачувување детали за апликацијата (%1$d/%2$d) од %3$s</string>
|
||||
<string name="status_connecting_to_repo">Поврзување со
|
||||
\n%1$s</string>
|
||||
<string name="update_notification_title">Ажурирање на складиштата</string>
|
||||
<string name="banner_updating_repositories">Ажурирање на складиштата</string>
|
||||
<string name="download_404">Бараната датотека не е пронајдена.</string>
|
||||
<string name="hide_on_long_search_press_summary">Долго притискање на копчето за пребарување ќе ја скрие апликацијата</string>
|
||||
<string name="hide_on_long_search_press_title">Сокриј со копчето за пребарување</string>
|
||||
|
@ -195,7 +195,7 @@
|
||||
\n %2$s നെ
|
||||
\n %1$s ല് നിന്ന്</string>
|
||||
<string name="download_404">അഭ്യർത്ഥിച്ച ഫയൽ കണ്ടെത്തിയില്ല.</string>
|
||||
<string name="update_notification_title">ആപ്പ് ശേഖരണം പുതുക്കുന്നു</string>
|
||||
<string name="banner_updating_repositories">ആപ്പ് ശേഖരണം പുതുക്കുന്നു</string>
|
||||
<string name="status_connecting_to_repo">ബന്ധിപ്പിക്കുന്നു
|
||||
\n %1$s ലേക്ക്</string>
|
||||
<string name="repos_unchanged">എല്ലാ സംഭരണികളും കാലികമാണ്</string>
|
||||
|
@ -220,7 +220,7 @@
|
||||
<string name="status_inserting_x_apps">Аппын дэлгэрэнгүйг (%1$d /%2$d) %3$s-с хадгалах</string>
|
||||
<string name="status_connecting_to_repo">Холбогдож байна
|
||||
\n%1$s</string>
|
||||
<string name="update_notification_title">Агуулахуудыг шинэчилж байна</string>
|
||||
<string name="banner_updating_repositories">Агуулахуудыг шинэчилж байна</string>
|
||||
<string name="download_404">Хүссэн файл олдсонгүй.</string>
|
||||
<string name="status_download_unknown_size">Татаж байна
|
||||
\n%2$s-аас
|
||||
|
@ -305,7 +305,7 @@
|
||||
<string name="status_inserting_x_apps">%3$s मधून
|
||||
\n (%1$d/%2$d) अँप विवरण नोंद करून घेतले जात आहे</string>
|
||||
<string name="status_connecting_to_repo">%1$s शी जोडले जात</string>
|
||||
<string name="update_notification_title">भांडाराला अद्ययावत केले जात</string>
|
||||
<string name="banner_updating_repositories">भांडाराला अद्ययावत केले जात</string>
|
||||
<string name="download_404">अपेक्षित फाईल मिळाली नाही.</string>
|
||||
<string name="status_download_unknown_size">%1$s मधून %2$s डाऊनलोड केले जात आहे</string>
|
||||
<string name="status_download">%1$s मधून %2$s / %3$s (%4$d%%)
|
||||
|
@ -112,7 +112,7 @@
|
||||
%2$s ကို
|
||||
ေဒါင္းလုတ္ဆြဲေနပါသည္
|
||||
</string>
|
||||
<string name="update_notification_title">repositories ကိုအသစ္မြမ္းမံေနသည္</string>
|
||||
<string name="banner_updating_repositories">repositories ကိုအသစ္မြမ္းမံေနသည္</string>
|
||||
<string name="status_processing_xml_percent">%1$s မွ %2$s / %3$s (%4$d%%) ကိုရယူေနသည္</string>
|
||||
<string name="status_connecting_to_repo">%1$s
|
||||
သို႔ခ်ိတ္ဆက္ေနသည္
|
||||
|
@ -152,7 +152,7 @@
|
||||
<string name="menu_bitcoin">Bitcoin</string>
|
||||
<string name="menu_litecoin">Litecoin</string>
|
||||
<string name="menu_flattr">Flattr</string>
|
||||
<string name="update_notification_title">Oppdaterer pakkebrønner</string>
|
||||
<string name="banner_updating_repositories">Oppdaterer pakkebrønner</string>
|
||||
<string name="status_processing_xml_percent">Behandler %2$s / %3$s (%4$d%%) fra %1$s</string>
|
||||
<string name="repo_details">Pakkebrønn</string>
|
||||
<string name="repo_url">Adresse</string>
|
||||
|
@ -245,7 +245,7 @@
|
||||
\nvan %1$s gedownload</string>
|
||||
<string name="status_download_unknown_size">%2$s wordt gedownload van %1$s</string>
|
||||
<string name="download_404">Het gevraagde bestand is niet gevonden.</string>
|
||||
<string name="update_notification_title">Applicatiebronnen worden bijgewerkt</string>
|
||||
<string name="banner_updating_repositories">Applicatiebronnen worden bijgewerkt</string>
|
||||
<string name="status_connecting_to_repo">Verbinding met
|
||||
\n%1$s aan het maken</string>
|
||||
<string name="status_inserting_x_apps">Appgegevens van %3$s worden opgeslagen (%1$d/%2$d)</string>
|
||||
|
@ -142,7 +142,7 @@
|
||||
<string name="bad_fingerprint">Slechte vingerafdruk</string>
|
||||
<string name="invalid_url">Dit is geen geldige URL.</string>
|
||||
<string name="menu_changelog">Lijst van veranderingen</string>
|
||||
<string name="update_notification_title">Applicatiebronnen worden bijgewerkt</string>
|
||||
<string name="banner_updating_repositories">Applicatiebronnen worden bijgewerkt</string>
|
||||
<string name="status_processing_xml_percent">%2$s / %3$s (%4$d%%) van %1$s worden verwerkt</string>
|
||||
<string name="pref_language">Taal</string>
|
||||
<string name="pref_language_default">Systeemstandaard</string>
|
||||
|
@ -282,7 +282,7 @@
|
||||
\n%2$s frå
|
||||
\n%1$s</string>
|
||||
<string name="download_404">Fann ikkje førespurd fil.</string>
|
||||
<string name="update_notification_title">Oppdaterer pakkebrønnar</string>
|
||||
<string name="banner_updating_repositories">Oppdaterer pakkebrønnar</string>
|
||||
<string name="status_connecting_to_repo">Koplar til
|
||||
\n%1$s</string>
|
||||
<string name="status_inserting_x_apps">Lagrar appdetaljar (%1$d/%2$d) frå %3$s</string>
|
||||
|
@ -132,7 +132,7 @@
|
||||
<string name="antitracklist">Ta aplikacja śledzi i raportuje Twoją aktywność</string>
|
||||
<string name="show_incompat_versions_on">Pokazuj aplikacje, które są niekompatybilne z tym urządzeniem</string>
|
||||
<string name="status_download">Pobieranie\n%2$s / %3$s (%4$d%%) z\n%1$s</string>
|
||||
<string name="update_notification_title">Aktualizowanie repozytoriów</string>
|
||||
<string name="banner_updating_repositories">Aktualizowanie repozytoriów</string>
|
||||
<string name="status_processing_xml_percent">Przetwarzanie %2$s / %3$s (%4$d%%) z %1$s</string>
|
||||
<string name="no_permissions">Brak uprawnień</string>
|
||||
<string name="unsigned">Brak podpisu</string>
|
||||
|
@ -152,7 +152,7 @@
|
||||
<string name="bad_fingerprint">Falha na fingerprint</string>
|
||||
<string name="invalid_url">Esta não é uma URL válida.</string>
|
||||
<string name="menu_changelog">Changelog</string>
|
||||
<string name="update_notification_title">Atualizando repositórios</string>
|
||||
<string name="banner_updating_repositories">Atualizando repositórios</string>
|
||||
<string name="status_processing_xml_percent">Processando %2$s / %3$s (%4$d%%) de %1$s</string>
|
||||
<string name="pref_language">Idioma</string>
|
||||
<string name="pref_language_default">Padrão do sistema</string>
|
||||
|
@ -104,7 +104,7 @@
|
||||
<string name="status_download_unknown_size">A descarregar
|
||||
\n%2$s de
|
||||
\n%1$s</string>
|
||||
<string name="update_notification_title">A atualizar repositórios</string>
|
||||
<string name="banner_updating_repositories">A atualizar repositórios</string>
|
||||
<string name="status_processing_xml_percent">A processar %2$s/%3$s (%4$d%%) de %1$s</string>
|
||||
<string name="status_connecting_to_repo">Estabelecendo ligação
|
||||
\na %1$s</string>
|
||||
|
@ -282,7 +282,7 @@
|
||||
\n%2$s de
|
||||
\n%1$s</string>
|
||||
<string name="download_404">O ficheiro solicitado não foi encontrado.</string>
|
||||
<string name="update_notification_title">A atualizar repositórios</string>
|
||||
<string name="banner_updating_repositories">A atualizar repositórios</string>
|
||||
<string name="status_connecting_to_repo">Estabelecendo ligação
|
||||
\na %1$s</string>
|
||||
<string name="status_inserting_x_apps">A guardar detalhes da aplicação (%1$d/%2$d) de %3$s</string>
|
||||
|
@ -148,7 +148,7 @@
|
||||
<string name="status_download">Descărcare
|
||||
\n%2$s / %3$s (%4$d%%) din
|
||||
\n%1$s</string>
|
||||
<string name="update_notification_title">Actualizare depozit</string>
|
||||
<string name="banner_updating_repositories">Actualizare depozit</string>
|
||||
<string name="status_connecting_to_repo">Conectare la\n%1$s</string>
|
||||
<string name="global_error_updating_repos">Eroare la actualizare: %s</string>
|
||||
<string name="permissions">Permisiuni</string>
|
||||
|
@ -151,7 +151,7 @@
|
||||
<string name="category_Sports_Health">Спорт и здоровье</string>
|
||||
<string name="category_Time">Время</string>
|
||||
<string name="app_name">F-Droid</string>
|
||||
<string name="update_notification_title">Обновление репозиториев</string>
|
||||
<string name="banner_updating_repositories">Обновление репозиториев</string>
|
||||
<string name="status_processing_xml_percent">Обработка %2$s / %3$s (%4$d%%) из %1$s</string>
|
||||
<string name="install_error_unknown">Не удалось установить из-за неизвестной ошибки</string>
|
||||
<string name="uninstall_error_unknown">Не удалось удалить из-за неизвестной ошибки</string>
|
||||
|
@ -153,7 +153,7 @@
|
||||
<string name="back">In dae segus</string>
|
||||
<string name="invalid_url">Custu no est unu ligàmene vàlidu.</string>
|
||||
<string name="menu_changelog">Lista modìficas</string>
|
||||
<string name="update_notification_title">Agiornende sos depòsitos</string>
|
||||
<string name="banner_updating_repositories">Agiornende sos depòsitos</string>
|
||||
<string name="status_processing_xml_percent">Protzessende %2$s / %3$s (%4$d%%) dae %1$s</string>
|
||||
<string name="pref_language">Limba</string>
|
||||
<string name="pref_language_default">Predefinida de sistema</string>
|
||||
|
@ -159,7 +159,7 @@
|
||||
<string name="bad_fingerprint">Zlý otlačok</string>
|
||||
<string name="invalid_url">Nie je validná URL.</string>
|
||||
<string name="menu_changelog">Changelog</string>
|
||||
<string name="update_notification_title">Aktualizujem repozitáre</string>
|
||||
<string name="banner_updating_repositories">Aktualizujem repozitáre</string>
|
||||
<string name="status_processing_xml_percent">Spracúvam %2$s / %3$s (%4$d%%) z %1$s</string>
|
||||
<string name="pref_language">Jazyk</string>
|
||||
<string name="pref_language_default">Prednastavené systémom</string>
|
||||
|
@ -229,7 +229,7 @@
|
||||
<string name="hide_on_long_search_press_title">Skrij iskalni gumb</string>
|
||||
<string name="hide_on_long_search_press_summary">Dolg pritisk na gumb iskanje bo skril aplikacije</string>
|
||||
<string name="download_404">Zahtevana datoteka ni bila najdena.</string>
|
||||
<string name="update_notification_title">Posodabljanje skladišča aplikacij</string>
|
||||
<string name="banner_updating_repositories">Posodabljanje skladišča aplikacij</string>
|
||||
<string name="repos_unchanged">Vsa skladišča aplikacij so posodobljena</string>
|
||||
<string name="global_error_updating_repos">Med posodobitvijo aplikacije %s je prišlo do napake</string>
|
||||
<string name="no_permissions">Ni dovoljenj</string>
|
||||
|
@ -153,7 +153,7 @@
|
||||
%2$s kubva
|
||||
%1$s
|
||||
</string>
|
||||
<string name="update_notification_title">Kunatsa pfimbi</string>
|
||||
<string name="banner_updating_repositories">Kunatsa pfimbi</string>
|
||||
<string name="status_processing_xml_percent">Kushisha %2$s / %3$s (%4$d%%) kubva %1$s</string>
|
||||
<string name="status_connecting_to_repo">Kuhakira ku
|
||||
%1$s
|
||||
|
@ -237,7 +237,7 @@
|
||||
<string name="hide_on_long_search_press_title">Fshihe me butonin e kërkimit</string>
|
||||
<string name="hide_on_long_search_press_summary">Prekja e zgjatur e butonit të kërkimit do të fshehë aplikacionin</string>
|
||||
<string name="download_404">Kartela e domosdoshme s’u gjet.</string>
|
||||
<string name="update_notification_title">Përditësim deposh</string>
|
||||
<string name="banner_updating_repositories">Përditësim deposh</string>
|
||||
<string name="repo_num_apps">Numër aplikacionesh</string>
|
||||
<string name="repo_official_mirrors">Pasqyra zyrtare</string>
|
||||
<string name="repo_user_mirrors">Pasqyra përdoruesi</string>
|
||||
|
@ -143,7 +143,7 @@
|
||||
<string name="bad_fingerprint">Лош отисак</string>
|
||||
<string name="invalid_url">Ово није исправна адреса.</string>
|
||||
<string name="menu_changelog">Дневник измена</string>
|
||||
<string name="update_notification_title">Освежавам ризнице</string>
|
||||
<string name="banner_updating_repositories">Освежавам ризнице</string>
|
||||
<string name="status_processing_xml_percent">Обрађујем %2$s / %3$s (%4$d%%) од %1$s</string>
|
||||
<string name="pref_language">Језик</string>
|
||||
<string name="pref_language_default">Системски подразумеван</string>
|
||||
|
@ -154,7 +154,7 @@
|
||||
<string name="status_download_unknown_size">Hämtar
|
||||
\n%2$s från
|
||||
\n%1$s</string>
|
||||
<string name="update_notification_title">Uppdaterar filförråd</string>
|
||||
<string name="banner_updating_repositories">Uppdaterar filförråd</string>
|
||||
<string name="permissions">Behörigheter</string>
|
||||
<string name="repo_details">Förråd</string>
|
||||
<string name="repo_url">Adress</string>
|
||||
|
@ -192,7 +192,7 @@
|
||||
<string name="hide_on_long_search_press_title">శోధన బటన్తో దాచు</string>
|
||||
<string name="hide_on_long_search_press_summary">చాలాసేపు శోధన బటన్ను నొక్కినప్పుడు అనువర్తనం దాచబడుతుంది</string>
|
||||
<string name="download_404">అభ్యర్థించిన ఫైల్ కనుగొనబడలేదు.</string>
|
||||
<string name="update_notification_title">రిపోజిటరీలను నవీకరిస్తోంది</string>
|
||||
<string name="banner_updating_repositories">రిపోజిటరీలను నవీకరిస్తోంది</string>
|
||||
<string name="repos_unchanged">అన్ని రిపోజిటరీలు తాజావి</string>
|
||||
<string name="all_other_repos_fine">అన్ని ఇతర రేపోలు లోపాలు సృష్టించలేదు.</string>
|
||||
<string name="global_error_updating_repos">నవీకరణ సమయంలో లోపం: %s</string>
|
||||
|
@ -208,7 +208,7 @@
|
||||
<string name="proxy_port_summary">หมายเลขพอร์ตพร็อกซีของคุณ (เช่น 8118)</string>
|
||||
<string name="status_download">กำลังดาวน์โหลด\n%2$s / %3$s (%4$d%%) จาก\n%1$s</string>
|
||||
<string name="status_download_unknown_size">กำลังดาวน์โหลด\n%2$s จาก\n%1$s</string>
|
||||
<string name="update_notification_title">กำลังอัพเดตข้อมูลจากแหล่งโปรแกรม</string>
|
||||
<string name="banner_updating_repositories">กำลังอัพเดตข้อมูลจากแหล่งโปรแกรม</string>
|
||||
<string name="status_processing_xml_percent">กำลังประมวลผลข้อมูล %2$s / %3$s (%4$d%%) จาก %1$s</string>
|
||||
<string name="requires_features">ต้องใช้: %1$s</string>
|
||||
<string name="wifi">Wi-Fi</string>
|
||||
|
@ -162,7 +162,7 @@
|
||||
<string name="status_download_unknown_size">%1$s konumundan
|
||||
\n%2$s
|
||||
\nindiriliyor</string>
|
||||
<string name="update_notification_title">Depolar güncelleniyor</string>
|
||||
<string name="banner_updating_repositories">Depolar güncelleniyor</string>
|
||||
<string name="status_processing_xml_percent">İşleniyor %2$s / %3$s (%%%4$d) kaynak: %1$s</string>
|
||||
<string name="status_inserting_apps">Uygulama ayrıntıları kaydediliyor</string>
|
||||
<string name="permissions">İzinler</string>
|
||||
|
@ -90,7 +90,7 @@
|
||||
<string name="proxy_port">Проксі порт</string>
|
||||
<string name="proxy_port_summary">Номер порту вашого проксі (наприклад 8118)</string>
|
||||
<string name="status_download">Завантаження\n%2$s / %3$s (%4$d%%) з\n%1$s</string>
|
||||
<string name="update_notification_title">Оновлення репозиторіїв</string>
|
||||
<string name="banner_updating_repositories">Оновлення репозиторіїв</string>
|
||||
<string name="status_processing_xml_percent">Обробка %2$s / %3$s (%4$d%%) з %1$s</string>
|
||||
<string name="status_connecting_to_repo">З\'єднання з
|
||||
\n%1$s</string>
|
||||
|
@ -152,7 +152,7 @@
|
||||
<string name="enable_proxy_summary">Thiết lập proxy HTTP cho tất cả các yêu cầu nối mạng</string>
|
||||
<string name="proxy_host">Máy chủ Proxy</string>
|
||||
<string name="proxy_host_summary">Tên máy chủ proxy của bạn (ví dụ 127.0.0.1)</string>
|
||||
<string name="update_notification_title">Đang cập nhật các kho ứng dụng</string>
|
||||
<string name="banner_updating_repositories">Đang cập nhật các kho ứng dụng</string>
|
||||
<string name="status_processing_xml_percent">Đang xử lí %2$s / %3$s (%4$d%%) từ %1$s</string>
|
||||
<string name="unsigned">Chưa được kí</string>
|
||||
<string name="unsigned_description">Điều này nghĩa là danh sách ứng dụng không được kiểm duyệt. Bạn hãy cẩn thận khi
|
||||
|
@ -142,7 +142,7 @@
|
||||
<string name="next">下一步</string>
|
||||
<string name="skip">跳过</string>
|
||||
<string name="status_download_unknown_size">下载中\n%2$s 来自\n%1$s</string>
|
||||
<string name="update_notification_title">正在更新库</string>
|
||||
<string name="banner_updating_repositories">正在更新库</string>
|
||||
<string name="status_processing_xml_percent">处理中 %2$s / %3$s (%4$d%%) 来自 %1$s</string>
|
||||
<string name="repos_unchanged">所有的存储库已是最新的</string>
|
||||
<string name="all_other_repos_fine">所有其他的存储库并没有产生错误。</string>
|
||||
|
@ -119,7 +119,7 @@
|
||||
<string name="back">返回</string>
|
||||
<string name="invalid_url">這不是有效的網址。</string>
|
||||
<string name="menu_changelog">更新日誌</string>
|
||||
<string name="update_notification_title">正在更新軟件庫</string>
|
||||
<string name="banner_updating_repositories">正在更新軟件庫</string>
|
||||
<string name="no_handler_app">您沒有任何應用程式可以開啟 %s。</string>
|
||||
<string name="repo_confirm_delete_body">刪除軟件庫後,庫中的應用程式將不會在 F-Droid 中出現。
|
||||
\n
|
||||
|
@ -116,7 +116,7 @@
|
||||
<string name="deleting_repo">正在刪除目前的軟體庫…</string>
|
||||
<string name="adding_apks_format">正在加入 %s 到軟體庫…</string>
|
||||
<string name="copying_icons">正在複製應用程式圖示至軟體庫…</string>
|
||||
<string name="update_notification_title">正在更新軟體庫</string>
|
||||
<string name="banner_updating_repositories">正在更新軟體庫</string>
|
||||
<string name="repos_unchanged">所有軟體庫已更新至最新的版本</string>
|
||||
<string name="all_other_repos_fine">所有其它軟體庫都沒有出現錯誤。</string>
|
||||
<string name="global_error_updating_repos">更新時發生錯誤:%s</string>
|
||||
|
@ -378,7 +378,12 @@ This often occurs with apps installed via Google Play or other sources, if they
|
||||
-->
|
||||
<string name="status_download_unknown_size">Downloading\n%2$s from\n%1$s</string>
|
||||
<string name="download_404">The requested file was not found.</string>
|
||||
<string name="update_notification_title">Updating repositories</string>
|
||||
<!-- This is a banner title, it should be maximum 30 characters -->
|
||||
<string name="banner_updating_repositories">Updating repositories</string>
|
||||
<!-- This is a banner title, it should be maximum 30 characters -->
|
||||
<string name="banner_no_internet">No Internet</string>
|
||||
<!-- This is a banner title, it should be maximum 30 characters -->
|
||||
<string name="banner_no_data_or_wifi">No Data or WiFi enabled</string>
|
||||
<string name="status_processing_xml_percent">Processing %2$s / %3$s (%4$d%%) from %1$s</string>
|
||||
<string name="status_connecting_to_repo">Connecting to\n%1$s</string>
|
||||
<string name="status_inserting_apps">Saving app details</string>
|
||||
|
@ -8,21 +8,24 @@ import sys
|
||||
from xml.etree import ElementTree
|
||||
|
||||
maxlengths = {
|
||||
"banner_no_data_or_wifi": 30,
|
||||
"banner_no_internet": 30,
|
||||
"banner_updating_repositories": 30,
|
||||
"installing": 50,
|
||||
"menu_install": 15,
|
||||
"menu_uninstall": 15,
|
||||
"installing": 50,
|
||||
"uninstalling": 50,
|
||||
"nearby_splash__find_people_button": 30,
|
||||
"nearby_splash__request_permission": 30,
|
||||
"swap": 25,
|
||||
"swap_nfc_title": 25,
|
||||
"swap_choose_apps": 25,
|
||||
"swap_confirm": 25,
|
||||
"swap_connecting": 25,
|
||||
"swap_nearby": 25,
|
||||
"swap_nfc_title": 25,
|
||||
"swap_scan_qr": 18,
|
||||
"swap_send_fdroid": 18,
|
||||
"swap_success": 25,
|
||||
"uninstalling": 50,
|
||||
"update_all": 20,
|
||||
"updates__hide_updateable_apps": 35,
|
||||
"updates__show_updateable_apps": 35,
|
||||
|
Loading…
x
Reference in New Issue
Block a user