Merge branch 'afWarningQrCodeScan' into 'master'

* jif-afWarningQrCodeScan:
  do not include english string in translations
  Correct check style errors
  Add style for the poor QR code scanning autofocus capability warning
  Add 'poor QR code scanning capability' translations
  Call to the camera autofocus checker in the view
  Add camera characteristics checker

fdroid/fdroidclient!649
closes #260
This commit is contained in:
Hans-Christoph Steiner 2018-03-06 16:35:28 +01:00
commit 6ad3604a0e
55 changed files with 258 additions and 50 deletions

View File

@ -29,6 +29,7 @@ import org.fdroid.fdroid.R;
import org.fdroid.fdroid.Utils; import org.fdroid.fdroid.Utils;
import org.fdroid.fdroid.localrepo.SwapService; import org.fdroid.fdroid.localrepo.SwapService;
import org.fdroid.fdroid.net.WifiStateChangeService; import org.fdroid.fdroid.net.WifiStateChangeService;
import org.fdroid.fdroid.views.swap.device.camera.CameraCharacteristicsChecker;
import java.net.URI; import java.net.URI;
import java.util.List; import java.util.List;
@ -63,6 +64,7 @@ public class WifiQrView extends ScrollView implements SwapWorkflowActivity.Inner
protected void onFinishInflate() { protected void onFinishInflate() {
super.onFinishInflate(); super.onFinishInflate();
setUIFromWifi(); setUIFromWifi();
setUpWarningMessageQrScan();
ImageView qrImage = (ImageView) findViewById(R.id.wifi_qr_code); ImageView qrImage = (ImageView) findViewById(R.id.wifi_qr_code);
@ -81,6 +83,14 @@ public class WifiQrView extends ScrollView implements SwapWorkflowActivity.Inner
onWifiStateChanged, new IntentFilter(WifiStateChangeService.BROADCAST)); onWifiStateChanged, new IntentFilter(WifiStateChangeService.BROADCAST));
} }
private void setUpWarningMessageQrScan() {
final View qrWarnningMessage = findViewById(R.id.warning_qr_scanner);
final boolean hasAutofocus = CameraCharacteristicsChecker.getInstance(getContext()).hasAutofocus();
final int visiblity = hasAutofocus ? GONE : VISIBLE;
qrWarnningMessage.setVisibility(visiblity);
}
/** /**
* Remove relevant listeners/receivers/etc so that they do not receive and process events * Remove relevant listeners/receivers/etc so that they do not receive and process events
* when this view is not in use. * when this view is not in use.

View File

@ -0,0 +1,21 @@
package org.fdroid.fdroid.views.swap.device.camera;
import android.content.Context;
public abstract class CameraCharacteristicsChecker {
public static CameraCharacteristicsChecker getInstance(final Context context) {
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
return new CameraCharacteristicsMinApiLevel21(context);
} else {
return new CameraCharacteristicsMaxApiLevel20();
}
}
public abstract boolean hasAutofocus();
class FDroidDeviceException extends Exception {
FDroidDeviceException(final String message, final Throwable cause) {
super(message, cause);
}
}
}

View File

@ -0,0 +1,50 @@
package org.fdroid.fdroid.views.swap.device.camera;
import android.hardware.Camera;
import android.util.Log;
import java.util.List;
public class CameraCharacteristicsMaxApiLevel20 extends CameraCharacteristicsChecker {
private static final String TAG = "CameraCharMaxApiLevel20";
protected CameraCharacteristicsMaxApiLevel20() {
}
@Override
public boolean hasAutofocus() {
boolean hasAutofocus = false;
try {
hasAutofocus = hasDeviceAutofocusCapability();
} catch (FDroidDeviceException e) {
Log.e(TAG, e.getMessage(), e);
}
return hasAutofocus;
}
private boolean hasDeviceAutofocusCapability() throws FDroidDeviceException {
try {
final int numberOfCameras = Camera.getNumberOfCameras();
if (numberOfCameras == 0) {
Log.i(TAG, "No camera on device");
return false;
}
boolean hasAutofocus = false;
for (int cameraId = 0; cameraId < numberOfCameras; cameraId++) {
Camera camera = Camera.open(cameraId);
Camera.Parameters parameters = camera.getParameters();
List<String> availableAFModes = parameters.getSupportedFocusModes();
hasAutofocus = availableAFModes.contains(Camera.Parameters.FOCUS_MODE_AUTO);
}
return hasAutofocus;
} catch (Exception e) {
String msg = "Exception accessing device camera";
Log.e(TAG, msg, e);
throw new FDroidDeviceException(msg, e);
}
}
}

View File

@ -0,0 +1,111 @@
package org.fdroid.fdroid.views.swap.device.camera;
import android.annotation.TargetApi;
import android.content.Context;
import android.hardware.camera2.CameraAccessException;
import android.hardware.camera2.CameraCharacteristics;
import android.hardware.camera2.CameraManager;
import android.os.Build;
import android.support.annotation.NonNull;
import android.util.Log;
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public class CameraCharacteristicsMinApiLevel21 extends CameraCharacteristicsChecker {
private static final String TAG = "CameraCharMinApiLevel21";
private final CameraManager cameraManager;
protected CameraCharacteristicsMinApiLevel21(final Context context) {
this.cameraManager = (CameraManager) context.getSystemService(Context.CAMERA_SERVICE);
}
@Override
public boolean hasAutofocus() {
boolean hasAutofocus = false;
try {
hasAutofocus = hasDeviceAutofocus();
} catch (FDroidDeviceException e) {
Log.e(TAG, e.getMessage(), e);
}
return hasAutofocus;
}
private boolean hasDeviceAutofocus() throws FDroidDeviceException {
try {
boolean deviceHasAutofocus = false;
final String[] cameraIdList = getCameraIdList();
for (final String cameraId : cameraIdList) {
if (isLensFacingBack(cameraId)) {
deviceHasAutofocus = testAutofocusModeForCamera(cameraId);
break;
}
}
return deviceHasAutofocus;
} catch (Exception e) {
Log.e(TAG, e.getMessage(), e);
throw new FDroidDeviceException("Exception accessing the camera list", e);
}
}
@NonNull
private String[] getCameraIdList() throws FDroidDeviceException {
try {
return cameraManager.getCameraIdList();
} catch (CameraAccessException e) {
Log.e(TAG, e.getMessage(), e);
throw new FDroidDeviceException("Exception accessing the camera list", e);
}
}
private boolean isLensFacingBack(final String cameraId) throws FDroidDeviceException {
final Integer lensFacing = getCameraCharacteristics(cameraId).get(CameraCharacteristics.LENS_FACING);
return lensFacing != null && lensFacing == CameraCharacteristics.LENS_FACING_BACK;
}
@NonNull
private CameraCharacteristics getCameraCharacteristics(final String cameraId) throws FDroidDeviceException {
try {
return cameraManager.getCameraCharacteristics(cameraId);
} catch (CameraAccessException e) {
Log.e(TAG, e.getMessage(), e);
throw new FDroidDeviceException("Exception accessing the camera id = " + cameraId, e);
}
}
private boolean testAutofocusModeForCamera(final String cameraId) throws FDroidDeviceException {
try {
boolean hasAutofocusMode = false;
final int[] autoFocusModes = getAvailableAFModes(cameraId);
if (autoFocusModes != null) {
hasAutofocusMode = testAvailableMode(autoFocusModes);
}
return hasAutofocusMode;
} catch (FDroidDeviceException e) {
Log.e(TAG, e.getMessage(), e);
throw new FDroidDeviceException("Exception accessing the camera id = " + cameraId, e);
}
}
private int[] getAvailableAFModes(final String cameraId) throws FDroidDeviceException {
return getCameraCharacteristics(cameraId).get(CameraCharacteristics.CONTROL_AF_AVAILABLE_MODES);
}
private boolean testAvailableMode(final int[] autoFocusModes) {
boolean hasAutofocusMode = false;
for (final int mode : autoFocusModes) {
boolean afMode = isAutofocus(mode);
hasAutofocusMode |= afMode;
}
return hasAutofocusMode;
}
private boolean isAutofocus(final int mode) {
return mode != android.hardware.camera2.CameraMetadata.CONTROL_AF_MODE_OFF;
}
}

View File

@ -44,6 +44,14 @@
android:layout_gravity="center" android:layout_gravity="center"
android:id="@+id/btn_qr_scanner"/> android:id="@+id/btn_qr_scanner"/>
<TextView
android:id="@+id/warning_qr_scanner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/warning_scaning_qr_code"
android:visibility="gone"
style="@style/SwapTheme.Wizard.QRScanWarningText"/>
</LinearLayout> </LinearLayout>
</org.fdroid.fdroid.views.swap.WifiQrView> </org.fdroid.fdroid.views.swap.WifiQrView>

View File

@ -528,4 +528,4 @@
<string name="app_list_download_ready">Afgelaai, gereed om te installeer</string> <string name="app_list_download_ready">Afgelaai, gereed om te installeer</string>
<string name="status_inserting_x_apps">Stoor program besonderhede (%1$d/%2$d) vanaf %3$s</string> <string name="status_inserting_x_apps">Stoor program besonderhede (%1$d/%2$d) vanaf %3$s</string>
</resources> </resources>

View File

@ -519,4 +519,4 @@
<string name="panic_hide_title">إخفاء %s</string> <string name="panic_hide_title">إخفاء %s</string>
<string name="panic_hide_summary">التطبيق سوف يخفي نفسه</string> <string name="panic_hide_summary">التطبيق سوف يخفي نفسه</string>
</resources> </resources>

View File

@ -534,4 +534,4 @@
<string name="panic_hide_title">Tapecer %s</string> <string name="panic_hide_title">Tapecer %s</string>
<string name="panic_hide_summary">Tapeceráse la app</string> <string name="panic_hide_summary">Tapeceráse la app</string>
</resources> </resources>

View File

@ -575,4 +575,4 @@
<string name="panic_exit_title">Выйсці з праграмы</string> <string name="panic_exit_title">Выйсці з праграмы</string>
<string name="panic_hide_warning_title">Запомніць як аднаўляць</string> <string name="panic_hide_warning_title">Запомніць як аднаўляць</string>
</resources> </resources>

View File

@ -509,4 +509,4 @@
<string name="nearby_splash__both_parties_need_fdroid">За споделянето на приложения с други около вас, и двете устройства трябва да използват %1$s.</string> <string name="nearby_splash__both_parties_need_fdroid">За споделянето на приложения с други около вас, и двете устройства трябва да използват %1$s.</string>
</resources> </resources>

View File

@ -475,4 +475,4 @@
<string name="preventScreenshots_title">དྲྭ་ཤེལ་པར་ལེན་བཀག</string> <string name="preventScreenshots_title">དྲྭ་ཤེལ་པར་ལེན་བཀག</string>
<string name="preventScreenshots_summary">ཉེ་བའི་ཆར་གྱི་མཉེས་ཆས་དྲྭ་ཤེལ་ནས་དྲྭ་ཤེལ་པར་ལེན་བཀག་པ་དང་། དྲྭ་ཤེལ་པར་ལེན་ནསམཉེས་ཆས་ནང་དོན་སྦས་པ།</string> <string name="preventScreenshots_summary">ཉེ་བའི་ཆར་གྱི་མཉེས་ཆས་དྲྭ་ཤེལ་ནས་དྲྭ་ཤེལ་པར་ལེན་བཀག་པ་དང་། དྲྭ་ཤེལ་པར་ལེན་ནསམཉེས་ཆས་ནང་དོན་སྦས་པ།</string>
</resources> </resources>

View File

@ -516,4 +516,4 @@
<string name="panic_hide_title">Amagueu %s</string> <string name="panic_hide_title">Amagueu %s</string>
<string name="panic_hide_summary">L\'app s\'ocultarà</string> <string name="panic_hide_summary">L\'app s\'ocultarà</string>
</resources> </resources>

View File

@ -555,4 +555,4 @@
<string name="hide_on_long_search_press_title">Skrýt tlačítko vyhledávání</string> <string name="hide_on_long_search_press_title">Skrýt tlačítko vyhledávání</string>
<string name="hide_on_long_search_press_summary">Dlouhý stisk tlačítka hledání skryje aplikaci</string> <string name="hide_on_long_search_press_summary">Dlouhý stisk tlačítka hledání skryje aplikaci</string>
</resources> </resources>

View File

@ -503,4 +503,4 @@
<string name="updates__app_with_known_vulnerability__ignore">Ignorer</string> <string name="updates__app_with_known_vulnerability__ignore">Ignorer</string>
<string name="status_inserting_x_apps">Gemmer app detaljer (%1$d/%2$d) fra %3$s</string> <string name="status_inserting_x_apps">Gemmer app detaljer (%1$d/%2$d) fra %3$s</string>
</resources> </resources>

View File

@ -548,4 +548,4 @@
<string name="panic_hide_warning_message">In einem Krisenereignis werden %1$s aus dem Programmstarter entfernt. Nur die Eingabe von „%2$d” in der gefälschten %3$s-App kann sie wiederherstellen.</string> <string name="panic_hide_warning_message">In einem Krisenereignis werden %1$s aus dem Programmstarter entfernt. Nur die Eingabe von „%2$d” in der gefälschten %3$s-App kann sie wiederherstellen.</string>
<string name="hiding_dialog_warning">Warnhinweis. Alle Verknüpfungen auf dem Startbildschirm werden ebenfalls entfernt und müssen manuell hinzugefügt werden.</string> <string name="hiding_dialog_warning">Warnhinweis. Alle Verknüpfungen auf dem Startbildschirm werden ebenfalls entfernt und müssen manuell hinzugefügt werden.</string>
</resources> </resources>

View File

@ -533,4 +533,4 @@
<string name="hide_on_long_search_press_title">Kaŝi per serĉ-butono</string> <string name="hide_on_long_search_press_title">Kaŝi per serĉ-butono</string>
<string name="hide_on_long_search_press_summary">Longe premu la serĉ-butonon por kaŝi la aplikaĵon</string> <string name="hide_on_long_search_press_summary">Longe premu la serĉ-butonon por kaŝi la aplikaĵon</string>
</resources> </resources>

View File

@ -541,4 +541,4 @@
<string name="panic_hide_title">Ocultar %s</string> <string name="panic_hide_title">Ocultar %s</string>
<string name="panic_hide_summary">La aplicación se ocultará</string> <string name="panic_hide_summary">La aplicación se ocultará</string>
</resources> </resources>

View File

@ -543,4 +543,4 @@
<string name="hiding_dialog_message">Kas sa oled kindel, et soovid käivitajast eemaldada rakenduse %1$s? Ainult \"%2$d\" sisestamine võltsrakendusse %3$s taastab selle.</string> <string name="hiding_dialog_message">Kas sa oled kindel, et soovid käivitajast eemaldada rakenduse %1$s? Ainult \"%2$d\" sisestamine võltsrakendusse %3$s taastab selle.</string>
<string name="hiding_dialog_warning">Hoiatus: avakuvalt eemaldatakse ka kõigi rakenduste otseteed ja need on vaja käsitsi uuesti lisada.</string> <string name="hiding_dialog_warning">Hoiatus: avakuvalt eemaldatakse ka kõigi rakenduste otseteed ja need on vaja käsitsi uuesti lisada.</string>
<string name="hide_on_long_search_press_title">Peida otsingunupuga</string> <string name="hide_on_long_search_press_title">Peida otsingunupuga</string>
</resources> </resources>

View File

@ -572,4 +572,4 @@
<string name="hide_on_long_search_press_title">Ezkutatu bilaketa botoiarekin</string> <string name="hide_on_long_search_press_title">Ezkutatu bilaketa botoiarekin</string>
<string name="hide_on_long_search_press_summary">Bilaketa botoia luze zapaltzean aplikazioa ezkutatuko da</string> <string name="hide_on_long_search_press_summary">Bilaketa botoia luze zapaltzean aplikazioa ezkutatuko da</string>
</resources> </resources>

View File

@ -515,4 +515,4 @@
<string name="hide_on_long_search_press_title">پنهان کردن با دکمهٔ جست‌وجو</string> <string name="hide_on_long_search_press_title">پنهان کردن با دکمهٔ جست‌وجو</string>
<string name="hide_on_long_search_press_summary">لمس طولانی دکمهٔ جست‌وجو، کاره را پنهان می‌کند</string> <string name="hide_on_long_search_press_summary">لمس طولانی دکمهٔ جست‌وجو، کاره را پنهان می‌کند</string>
</resources> </resources>

View File

@ -551,4 +551,4 @@
<string name="hiding_dialog_title">Masquer %s maintenant</string> <string name="hiding_dialog_title">Masquer %s maintenant</string>
<string name="hiding_dialog_message">Êtes-vous sûr de vouloir supprimer %1$s du lanceur. Vous ne pouvez le restaurer qu\'en tapant « %2$d » dans la fausse application %3$s.</string> <string name="hiding_dialog_message">Êtes-vous sûr de vouloir supprimer %1$s du lanceur. Vous ne pouvez le restaurer qu\'en tapant « %2$d » dans la fausse application %3$s.</string>
<string name="hiding_dialog_warning">Attention : les raccourcis d\'applications sur l\'écran d\'accueil seront aussi supprimés et devront être rajoutés manuellement.</string> <string name="hiding_dialog_warning">Attention : les raccourcis d\'applications sur l\'écran d\'accueil seront aussi supprimés et devront être rajoutés manuellement.</string>
</resources> </resources>

View File

@ -515,4 +515,4 @@
<item quantity="other">Actualizado hai %1$d anos</item> <item quantity="other">Actualizado hai %1$d anos</item>
</plurals> </plurals>
<string name="status_inserting_apps">Gardando os detalles das apps</string> <string name="status_inserting_apps">Gardando os detalles das apps</string>
</resources> </resources>

View File

@ -541,4 +541,4 @@
<string name="hide_on_long_search_press_title">הסתרה עם כפתור החיפוש</string> <string name="hide_on_long_search_press_title">הסתרה עם כפתור החיפוש</string>
<string name="hide_on_long_search_press_summary">לחיצה ארוכה על כפתור החיפוש תסתיר את היישומון</string> <string name="hide_on_long_search_press_summary">לחיצה ארוכה על כפתור החיפוש תסתיר את היישומון</string>
</resources> </resources>

View File

@ -154,4 +154,4 @@
<string name="SignatureMismatch">नया व्हर्जन भिन्न की से साईन किया हुवा है।नया व्हर्जन इन्स्टॉल करनेकेलिए पुराना अनइंस्टाल करें।कृपया फिर से कोशिश करें। ( याद रहे कि अनइंस्टाल करनेके बाद ऐप डेटा डिलेट हो जायेगा।)</string> <string name="SignatureMismatch">नया व्हर्जन भिन्न की से साईन किया हुवा है।नया व्हर्जन इन्स्टॉल करनेकेलिए पुराना अनइंस्टाल करें।कृपया फिर से कोशिश करें। ( याद रहे कि अनइंस्टाल करनेके बाद ऐप डेटा डिलेट हो जायेगा।)</string>
<string name="keep_install_history">इनस्टॉल हिस्ट्री रखें</string> <string name="keep_install_history">इनस्टॉल हिस्ट्री रखें</string>
<string name="keep_install_history_summary">सभी इन्स्टॉल एवं अनइंस्टॉल लॉग को एफ-ड्रॉइड में रखें</string> <string name="keep_install_history_summary">सभी इन्स्टॉल एवं अनइंस्टॉल लॉग को एफ-ड्रॉइड में रखें</string>
</resources> </resources>

View File

@ -483,4 +483,4 @@
<string name="perms_description_app">A(z) %1$s által biztosítva.</string> <string name="perms_description_app">A(z) %1$s által biztosítva.</string>
<string name="tts_category_name">Kategória %1$s</string> <string name="tts_category_name">Kategória %1$s</string>
</resources> </resources>

View File

@ -529,4 +529,4 @@
<string name="panic_hide_title">Sembunyikan %s</string> <string name="panic_hide_title">Sembunyikan %s</string>
<string name="panic_hide_summary">Aplikasi akan sembunyi dengan sendirinya</string> <string name="panic_hide_summary">Aplikasi akan sembunyi dengan sendirinya</string>
</resources> </resources>

View File

@ -585,4 +585,4 @@
<string name="hide_on_long_search_press_title">Fela með leitarhnappi</string> <string name="hide_on_long_search_press_title">Fela með leitarhnappi</string>
<string name="hide_on_long_search_press_summary">Ef ýtt er lengi mun leitarhnappurinn fela forritið</string> <string name="hide_on_long_search_press_summary">Ef ýtt er lengi mun leitarhnappurinn fela forritið</string>
</resources> </resources>

View File

@ -555,4 +555,4 @@
<string name="panic_app_dialog_title">Conferma Applicazione Pulsante di Panico</string> <string name="panic_app_dialog_title">Conferma Applicazione Pulsante di Panico</string>
<string name="panic_app_dialog_message">Sei sicuro di voler permettere %1$s di eseguire azioni distruttive del pulsante di panico?</string> <string name="panic_app_dialog_message">Sei sicuro di voler permettere %1$s di eseguire azioni distruttive del pulsante di panico?</string>
<string name="panic_settings">Impostazioni Pulsante di Panico</string> <string name="panic_settings">Impostazioni Pulsante di Panico</string>
</resources> </resources>

View File

@ -495,4 +495,4 @@
<string name="hide_on_long_search_press_title">検索ボタンで非表示にする</string> <string name="hide_on_long_search_press_title">検索ボタンで非表示にする</string>
<string name="hide_on_long_search_press_summary">検索ボタンを長押しすることでアプリを非表示にすることができます</string> <string name="hide_on_long_search_press_summary">検索ボタンを長押しすることでアプリを非表示にすることができます</string>
</resources> </resources>

View File

@ -235,4 +235,4 @@
<string name="status_processing_xml_percent">Asesfer n %2$s / %3$s (%4$d%%) from %1$s</string> <string name="status_processing_xml_percent">Asesfer n %2$s / %3$s (%4$d%%) from %1$s</string>
<string name="notification_title_single_ready_to_install">Iwjed i usebded</string> <string name="notification_title_single_ready_to_install">Iwjed i usebded</string>
<string name="notification_title_single_ready_to_install_update">Alqem iwjed i usebded</string> <string name="notification_title_single_ready_to_install_update">Alqem iwjed i usebded</string>
</resources> </resources>

View File

@ -83,4 +83,4 @@
<string name="other">ಇತರೆ</string> <string name="other">ಇತರೆ</string>
<string name="delete">ಅಳಿಸು</string> <string name="delete">ಅಳಿಸು</string>
</resources> </resources>

View File

@ -477,4 +477,4 @@
<string name="panic_hide_title">%s 숨기기</string> <string name="panic_hide_title">%s 숨기기</string>
<string name="panic_hide_summary">앱 자체가 숨을 것입니다</string> <string name="panic_hide_summary">앱 자체가 숨을 것입니다</string>
</resources> </resources>

View File

@ -136,4 +136,4 @@
<string name="force_old_index">Priversti senąjį indeksavimo formatą</string> <string name="force_old_index">Priversti senąjį indeksavimo formatą</string>
<string name="update_interval_zero">Nėra automatinio programėlių sąrašo atnaujinimų</string> <string name="update_interval_zero">Nėra automatinio programėlių sąrašo atnaujinimų</string>
<string name="update_auto_download_summary">Atnaujinimai parsiunčiami automatiškai o Jūs perspėjami juos instaliuoti</string> <string name="update_auto_download_summary">Atnaujinimai parsiunčiami automatiškai o Jūs perspėjami juos instaliuoti</string>
</resources> </resources>

View File

@ -163,4 +163,4 @@
<string name="app__tts__cancel_download">Atcelt lejupielādi</string> <string name="app__tts__cancel_download">Atcelt lejupielādi</string>
<string name="app__install_downloaded_update">Atjaunināt</string> <string name="app__install_downloaded_update">Atjaunināt</string>
<string name="app_installed_media">Fails instalēts uz %s</string> <string name="app_installed_media">Fails instalēts uz %s</string>
</resources> </resources>

View File

@ -452,4 +452,4 @@
<string name="perms_description_app">%1$s നൽകിയത്.</string> <string name="perms_description_app">%1$s നൽകിയത്.</string>
<string name="enable_proxy_summary">എല്ലാ നെറ്റ്വർക്ക് അഭ്യർത്ഥനകൾക്കും പ്രോക്സി ക്രമീകരിക്കുക</string> <string name="enable_proxy_summary">എല്ലാ നെറ്റ്വർക്ക് അഭ്യർത്ഥനകൾക്കും പ്രോക്സി ക്രമീകരിക്കുക</string>
<string name="proxy_host">പ്രോക്സി ഹോസ്റ്റ്</string> <string name="proxy_host">പ്രോക്സി ഹോസ്റ്റ്</string>
</resources> </resources>

View File

@ -545,4 +545,4 @@
<string name="hide_on_long_search_press_title">Skjul med søke-knappen</string> <string name="hide_on_long_search_press_title">Skjul med søke-knappen</string>
<string name="hide_on_long_search_press_summary">Å trykke lenge på søkeknappen vil skjule programmet</string> <string name="hide_on_long_search_press_summary">Å trykke lenge på søkeknappen vil skjule programmet</string>
</resources> </resources>

View File

@ -532,4 +532,4 @@
<string name="hide_on_long_search_press_title">Verbergen met zoekknop</string> <string name="hide_on_long_search_press_title">Verbergen met zoekknop</string>
<string name="hide_on_long_search_press_summary">De zoekknop lang ingedrukt houden zal de app verbergen</string> <string name="hide_on_long_search_press_summary">De zoekknop lang ingedrukt houden zal de app verbergen</string>
</resources> </resources>

View File

@ -562,4 +562,4 @@
<string name="hide_on_long_search_press_title">Ukryj przyciskiem szukania</string> <string name="hide_on_long_search_press_title">Ukryj przyciskiem szukania</string>
<string name="hide_on_long_search_press_summary">Przytrzymanie przycisku szukania ukryje aplikację</string> <string name="hide_on_long_search_press_summary">Przytrzymanie przycisku szukania ukryje aplikację</string>
</resources> </resources>

View File

@ -561,4 +561,4 @@
<string name="hide_on_long_search_press_title">Esconder o botão de busca</string> <string name="hide_on_long_search_press_title">Esconder o botão de busca</string>
<string name="hide_on_long_search_press_summary">Pressionar o botão de busca por um tempo longo vai esconder o app</string> <string name="hide_on_long_search_press_summary">Pressionar o botão de busca por um tempo longo vai esconder o app</string>
</resources> </resources>

View File

@ -558,4 +558,4 @@
<string name="hide_on_long_search_press_title">Ocultar com o botão de pesquisa</string> <string name="hide_on_long_search_press_title">Ocultar com o botão de pesquisa</string>
<string name="hide_on_long_search_press_summary">Toque longo no botão de pesquisa oculta a aplicação</string> <string name="hide_on_long_search_press_summary">Toque longo no botão de pesquisa oculta a aplicação</string>
</resources> </resources>

View File

@ -504,4 +504,4 @@
<string name="hiding_calculator">Calculator</string> <string name="hiding_calculator">Calculator</string>
<string name="hiding_dialog_title">Ascunde %s acum</string> <string name="hiding_dialog_title">Ascunde %s acum</string>
<string name="hide_on_long_search_press_title">Ascunde cu butonul de căutare</string> <string name="hide_on_long_search_press_title">Ascunde cu butonul de căutare</string>
</resources> </resources>

View File

@ -545,4 +545,4 @@
<string name="preventScreenshots_title">Предотвратить Скриншоты</string> <string name="preventScreenshots_title">Предотвратить Скриншоты</string>
<string name="preventScreenshots_summary">Блокировать скриншоты от последних приложений</string> <string name="preventScreenshots_summary">Блокировать скриншоты от последних приложений</string>
</resources> </resources>

View File

@ -572,4 +572,4 @@
<string name="hide_on_long_search_press_title">Istichi cun su butone de chirca</string> <string name="hide_on_long_search_press_title">Istichi cun su butone de chirca</string>
<string name="hide_on_long_search_press_summary">Un\'incarcada longa in su butone de chirca at a istichire s\'aplicatzione</string> <string name="hide_on_long_search_press_summary">Un\'incarcada longa in su butone de chirca at a istichire s\'aplicatzione</string>
</resources> </resources>

View File

@ -536,4 +536,4 @@
<string name="updates__app_with_known_vulnerability__ignore">Ignorovať</string> <string name="updates__app_with_known_vulnerability__ignore">Ignorovať</string>
<string name="status_inserting_x_apps">Ukladanie podrobností aplikácie (%1$d/%2$d) z %3$s</string> <string name="status_inserting_x_apps">Ukladanie podrobností aplikácie (%1$d/%2$d) z %3$s</string>
</resources> </resources>

View File

@ -115,4 +115,4 @@
<string name="crash_dialog_text">Zaradi nepričakovane napake se je aplikacija prisilno ustavila. Nam želite v e-pošti posredovati podrobnosti in s tem pomagati odpraviti napako?</string> <string name="crash_dialog_text">Zaradi nepričakovane napake se je aplikacija prisilno ustavila. Nam želite v e-pošti posredovati podrobnosti in s tem pomagati odpraviti napako?</string>
<string name="notification_title_single_update_available">Posodobitev na voljo</string> <string name="notification_title_single_update_available">Posodobitev na voljo</string>
<string name="notification_title_summary_install_error">Namestitev neuspešna</string> <string name="notification_title_summary_install_error">Namestitev neuspešna</string>
</resources> </resources>

View File

@ -519,4 +519,4 @@
<string name="updates__app_with_known_vulnerability__prompt_upgrade">Пронашли смо безбедносну рањивост у %1$s. Препоручујемо да сместа надоградите апликацију.</string> <string name="updates__app_with_known_vulnerability__prompt_upgrade">Пронашли смо безбедносну рањивост у %1$s. Препоручујемо да сместа надоградите апликацију.</string>
<string name="updates__app_with_known_vulnerability__ignore">Занемари</string> <string name="updates__app_with_known_vulnerability__ignore">Занемари</string>
</resources> </resources>

View File

@ -517,4 +517,4 @@
<string name="preventScreenshots_summary">Förhindrar skärmdumpar och döljer appinnehåll från senaste skärmar</string> <string name="preventScreenshots_summary">Förhindrar skärmdumpar och döljer appinnehåll från senaste skärmar</string>
<string name="panic_app_setting_title">Panikknappsapp</string> <string name="panic_app_setting_title">Panikknappsapp</string>
</resources> </resources>

View File

@ -397,4 +397,4 @@
แต่ได้ทำการบันทึกข้อมูลกุณแจเข้ารหัสใหม่เพิ่มเข้าไป แต่ได้ทำการบันทึกข้อมูลกุณแจเข้ารหัสใหม่เพิ่มเข้าไป
</string> </string>
<string name="main_menu__latest_apps">ล่าสุด</string> <string name="main_menu__latest_apps">ล่าสุด</string>
</resources> </resources>

View File

@ -542,4 +542,4 @@
<string name="hide_on_long_search_press_title">Arama düğmesiyle gizle</string> <string name="hide_on_long_search_press_title">Arama düğmesiyle gizle</string>
<string name="hide_on_long_search_press_summary">Arama düğmesine uzun basmak uygulamayı gizler</string> <string name="hide_on_long_search_press_summary">Arama düğmesine uzun basmak uygulamayı gizler</string>
</resources> </resources>

View File

@ -529,4 +529,4 @@
<string name="panic_exit_title">Вийти з додатку</string> <string name="panic_exit_title">Вийти з додатку</string>
<string name="panic_hide_title">Приховати %s</string> <string name="panic_hide_title">Приховати %s</string>
</resources> </resources>

View File

@ -479,4 +479,4 @@
<string name="panic_app_setting_none"></string> <string name="panic_app_setting_none"></string>
<string name="panic_hide_title">隐藏 %s</string> <string name="panic_hide_title">隐藏 %s</string>
<string name="panic_hide_summary">应用程序将隐藏自己</string> <string name="panic_hide_summary">应用程序将隐藏自己</string>
</resources> </resources>

View File

@ -457,4 +457,4 @@
<string name="app_details__no_versions__explain_incompatible_signatures">已安裝的程式版本與可供安裝的版本並不相容。卸載現有的應用程式將讓您檢視及安裝相容的版本。此問題通常出現於透過 Google Play 或其他途徑安裝,並使用不同認證的應用程式。</string> <string name="app_details__no_versions__explain_incompatible_signatures">已安裝的程式版本與可供安裝的版本並不相容。卸載現有的應用程式將讓您檢視及安裝相容的版本。此問題通常出現於透過 Google Play 或其他途徑安裝,並使用不同認證的應用程式。</string>
<string name="installed_app__file_corrupt">F-Droid 偵測到一個 EIO 錯誤:%s 很可能已崩潰!</string> <string name="installed_app__file_corrupt">F-Droid 偵測到一個 EIO 錯誤:%s 很可能已崩潰!</string>
</resources> </resources>

View File

@ -508,4 +508,4 @@
<string name="hide_on_long_search_press_title">隱藏搜尋按鈕</string> <string name="hide_on_long_search_press_title">隱藏搜尋按鈕</string>
<string name="hide_on_long_search_press_summary">長按搜尋按鈕將會隱藏應用程式</string> <string name="hide_on_long_search_press_summary">長按搜尋按鈕將會隱藏應用程式</string>
</resources> </resources>

View File

@ -563,6 +563,7 @@ This often occurs with apps installed via Google Play or other sources, if they
</plurals> </plurals>
<string name="details_last_updated_today">Updated today</string> <string name="details_last_updated_today">Updated today</string>
<string name="warning_scaning_qr_code">Your camera doesn\'t seem to have an autofocus. It might be difficult to scan the code.</string>
<plurals name="details_last_update_days"> <plurals name="details_last_update_days">
<item quantity="one">Updated %1$d day ago</item> <item quantity="one">Updated %1$d day ago</item>
<item quantity="other">Updated %1$d days ago</item> <item quantity="other">Updated %1$d days ago</item>

View File

@ -228,12 +228,19 @@
<style name="SwapTheme.Wizard.MainTextBase" parent="@style/SwapTheme.Wizard.Text"> <style name="SwapTheme.Wizard.MainTextBase" parent="@style/SwapTheme.Wizard.Text">
<item name="android:paddingLeft">40dp</item> <item name="android:paddingLeft">40dp</item>
<item name="android:paddingRight">40dp</item> <item name="android:paddingRight">40dp</item>
<item name="android:paddingTop">20dp</item> <item name="android:paddingTop">10dp</item>
<item name="android:paddingBottom">15dp</item> <item name="android:paddingBottom">10dp</item>
</style> </style>
<style name="SwapTheme.Wizard.MainText" parent="SwapTheme.Wizard.MainTextBase" /> <style name="SwapTheme.Wizard.MainText" parent="SwapTheme.Wizard.MainTextBase" />
<style name="SwapTheme.Wizard.QRScanWarningText" parent="@style/SwapTheme.Wizard.MainTextBase" >
<item name="android:paddingLeft">40dp</item>
<item name="android:paddingRight">40dp</item>
<item name="android:paddingTop">0dp</item>
<item name="android:paddingBottom">5dp</item>
</style>
<style name="SwapTheme.Wizard.LocalIpAddress" parent="@style/SwapTheme.Wizard.Text"> <style name="SwapTheme.Wizard.LocalIpAddress" parent="@style/SwapTheme.Wizard.Text">
<item name="android:textSize">20sp</item> <item name="android:textSize">20sp</item>
<item name="android:paddingLeft">40dp</item> <item name="android:paddingLeft">40dp</item>