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