upload android base code part3

This commit is contained in:
August 2018-08-08 16:48:17 +08:00
parent 71b83c22f1
commit b9e30e05b1
15122 changed files with 2089659 additions and 0 deletions

View file

@ -0,0 +1 @@
include $(all-subdir-makefiles)

View file

@ -0,0 +1,22 @@
# Copyright (C) 2008 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := dumpkey
LOCAL_SRC_FILES := DumpPublicKey.java
LOCAL_JAR_MANIFEST := DumpPublicKey.mf
LOCAL_STATIC_JAVA_LIBRARIES := bouncycastle-host
include $(BUILD_HOST_JAVA_LIBRARY)

View file

@ -0,0 +1,270 @@
/*
* Copyright (C) 2008 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.dumpkey;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import java.io.FileInputStream;
import java.math.BigInteger;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import java.security.KeyStore;
import java.security.Key;
import java.security.PublicKey;
import java.security.Security;
import java.security.interfaces.ECPublicKey;
import java.security.interfaces.RSAPublicKey;
import java.security.spec.ECPoint;
/**
* Command line tool to extract RSA public keys from X.509 certificates
* and output source code with data initializers for the keys.
* @hide
*/
class DumpPublicKey {
/**
* @param key to perform sanity checks on
* @return version number of key. Supported versions are:
* 1: 2048-bit RSA key with e=3 and SHA-1 hash
* 2: 2048-bit RSA key with e=65537 and SHA-1 hash
* 3: 2048-bit RSA key with e=3 and SHA-256 hash
* 4: 2048-bit RSA key with e=65537 and SHA-256 hash
* @throws Exception if the key has the wrong size or public exponent
*/
static int checkRSA(RSAPublicKey key, boolean useSHA256) throws Exception {
BigInteger pubexp = key.getPublicExponent();
BigInteger modulus = key.getModulus();
int version;
if (pubexp.equals(BigInteger.valueOf(3))) {
version = useSHA256 ? 3 : 1;
} else if (pubexp.equals(BigInteger.valueOf(65537))) {
version = useSHA256 ? 4 : 2;
} else {
throw new Exception("Public exponent should be 3 or 65537 but is " +
pubexp.toString(10) + ".");
}
if (modulus.bitLength() != 2048) {
throw new Exception("Modulus should be 2048 bits long but is " +
modulus.bitLength() + " bits.");
}
return version;
}
/**
* @param key to perform sanity checks on
* @return version number of key. Supported versions are:
* 5: 256-bit EC key with curve NIST P-256
* @throws Exception if the key has the wrong size or public exponent
*/
static int checkEC(ECPublicKey key) throws Exception {
if (key.getParams().getCurve().getField().getFieldSize() != 256) {
throw new Exception("Curve must be NIST P-256");
}
return 5;
}
/**
* Perform sanity check on public key.
*/
static int check(PublicKey key, boolean useSHA256) throws Exception {
if (key instanceof RSAPublicKey) {
return checkRSA((RSAPublicKey) key, useSHA256);
} else if (key instanceof ECPublicKey) {
if (!useSHA256) {
throw new Exception("Must use SHA-256 with EC keys!");
}
return checkEC((ECPublicKey) key);
} else {
throw new Exception("Unsupported key class: " + key.getClass().getName());
}
}
/**
* @param key to output
* @return a String representing this public key. If the key is a
* version 1 key, the string will be a C initializer; this is
* not true for newer key versions.
*/
static String printRSA(RSAPublicKey key, boolean useSHA256) throws Exception {
int version = check(key, useSHA256);
BigInteger N = key.getModulus();
StringBuilder result = new StringBuilder();
int nwords = N.bitLength() / 32; // # of 32 bit integers in modulus
if (version > 1) {
result.append("v");
result.append(Integer.toString(version));
result.append(" ");
}
result.append("{");
result.append(nwords);
BigInteger B = BigInteger.valueOf(0x100000000L); // 2^32
BigInteger N0inv = B.subtract(N.modInverse(B)); // -1 / N[0] mod 2^32
result.append(",0x");
result.append(N0inv.toString(16));
BigInteger R = BigInteger.valueOf(2).pow(N.bitLength());
BigInteger RR = R.multiply(R).mod(N); // 2^4096 mod N
// Write out modulus as little endian array of integers.
result.append(",{");
for (int i = 0; i < nwords; ++i) {
long n = N.mod(B).longValue();
result.append(n);
if (i != nwords - 1) {
result.append(",");
}
N = N.divide(B);
}
result.append("}");
// Write R^2 as little endian array of integers.
result.append(",{");
for (int i = 0; i < nwords; ++i) {
long rr = RR.mod(B).longValue();
result.append(rr);
if (i != nwords - 1) {
result.append(",");
}
RR = RR.divide(B);
}
result.append("}");
result.append("}");
return result.toString();
}
/**
* @param key to output
* @return a String representing this public key. If the key is a
* version 1 key, the string will be a C initializer; this is
* not true for newer key versions.
*/
static String printEC(ECPublicKey key) throws Exception {
int version = checkEC(key);
StringBuilder result = new StringBuilder();
result.append("v");
result.append(Integer.toString(version));
result.append(" ");
BigInteger X = key.getW().getAffineX();
BigInteger Y = key.getW().getAffineY();
int nbytes = key.getParams().getCurve().getField().getFieldSize() / 8; // # of 32 bit integers in X coordinate
result.append("{");
result.append(nbytes);
BigInteger B = BigInteger.valueOf(0x100L); // 2^8
// Write out Y coordinate as array of characters.
result.append(",{");
for (int i = 0; i < nbytes; ++i) {
long n = X.mod(B).longValue();
result.append(n);
if (i != nbytes - 1) {
result.append(",");
}
X = X.divide(B);
}
result.append("}");
// Write out Y coordinate as array of characters.
result.append(",{");
for (int i = 0; i < nbytes; ++i) {
long n = Y.mod(B).longValue();
result.append(n);
if (i != nbytes - 1) {
result.append(",");
}
Y = Y.divide(B);
}
result.append("}");
result.append("}");
return result.toString();
}
static String print(PublicKey key, boolean useSHA256) throws Exception {
if (key instanceof RSAPublicKey) {
return printRSA((RSAPublicKey) key, useSHA256);
} else if (key instanceof ECPublicKey) {
return printEC((ECPublicKey) key);
} else {
throw new Exception("Unsupported key class: " + key.getClass().getName());
}
}
public static void main(String[] args) {
if (args.length < 1) {
System.err.println("Usage: DumpPublicKey certfile ... > source.c");
System.exit(1);
}
Security.addProvider(new BouncyCastleProvider());
try {
for (int i = 0; i < args.length; i++) {
FileInputStream input = new FileInputStream(args[i]);
CertificateFactory cf = CertificateFactory.getInstance("X.509");
X509Certificate cert = (X509Certificate) cf.generateCertificate(input);
boolean useSHA256 = false;
String sigAlg = cert.getSigAlgName();
if ("SHA1withRSA".equals(sigAlg) || "MD5withRSA".equals(sigAlg)) {
// SignApk has historically accepted "MD5withRSA"
// certificates, but treated them as "SHA1withRSA"
// anyway. Continue to do so for backwards
// compatibility.
useSHA256 = false;
} else if ("SHA256withRSA".equals(sigAlg) || "SHA256withECDSA".equals(sigAlg)) {
useSHA256 = true;
} else {
System.err.println(args[i] + ": unsupported signature algorithm \"" +
sigAlg + "\"");
System.exit(1);
}
PublicKey key = cert.getPublicKey();
check(key, useSHA256);
System.out.print(print(key, useSHA256));
System.out.println(i < args.length - 1 ? "," : "");
}
} catch (Exception e) {
e.printStackTrace();
System.exit(1);
}
System.exit(0);
}
}

View file

@ -0,0 +1 @@
Main-Class: com.android.dumpkey.DumpPublicKey

View file

@ -0,0 +1,12 @@
# Copyright 2012 Google Inc. All Rights Reserved.
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_PACKAGE_NAME := RecoveryLocalizer
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(call all-java-files-under, src)
include $(BUILD_PACKAGE)

View file

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.recovery_l10n">
<application android:label="Recovery Localizer">
<activity android:name="Main"
android:label="Recovery Localizer">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>

View file

@ -0,0 +1,36 @@
# Steps to regenerate background text images under res-*dpi/images/
1. Build the recovery_l10n app:
cd bootable/recovery && mma -j32
2. Install the app on the device (or emulator) with the intended dpi.
* For example, we can use Nexus 5 to generate the text images under
res-xxhdpi.
* We can set up the maximum width of the final png image in res/layout/main.xml
Currently, the image width is 1200px for xxxhdpi, 900px for xxhdpi and
480px for xhdpi/hdpi/mdpi.
* When using the emulator, make sure the NDK version matches the current
repository. Otherwise, the app may not work properly.
adb install $PATH_TO_APP
3. Run the app, select the string to translate and press the 'go' button.
4. After the app goes through the strings for all locales, pull the output png
file from the device.
adb root && adb pull /data/data/com.android.recovery_l10n/files/text-out.png
5. Compress the output file put it under the corresponding directory.
* "pngcrush -c 0 ..." converts "text-out.png" into a 1-channel image,
which is accepted by Recovery. This also compresses the image file by
~60%.
* zopflipng could further compress the png files by ~10%, more details
in https://github.com/google/zopfli/blob/master/README.zopflipng
* If you're using other png compression tools, make sure the final text
image works by running graphic tests under the recovery mode.
pngcrush -c 0 text-out.png $OUTPUT_PNG

View file

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<Spinner android:id="@+id/which"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<Button android:id="@+id/go"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/go"
/>
<TextView android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="sans-serif-medium"
android:textColor="#fff5f5f5"
android:textSize="14sp"
android:background="#ff000000"
android:maxWidth="480px"
android:gravity="center"
/>
</LinearLayout>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Installeer tans stelselopdatering"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Vee tans uit"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"Geen opdrag nie"</string>
<string name="recovery_error" msgid="5748178989622716736">"Fout!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Installeer tans sekuriteitopdatering"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"የሥርዓት ዝማኔን በመጫን ላይ…"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"በመደምሰስ ላይ"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"ምንም ትዕዛዝ የለም"</string>
<string name="recovery_error" msgid="5748178989622716736">"ስህተት!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"የደህንነት ዝማኔ በመጫን ላይ"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"جارٍ تثبيت تحديث النظام"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"جارٍ محو البيانات"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"ليس هناك أي أمر"</string>
<string name="recovery_error" msgid="5748178989622716736">"خطأ!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"جارٍ تثبيت تحديث الأمان"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Sistem güncəlləməsi quraşdırılır..."</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Silinir"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"Əmr yoxdur"</string>
<string name="recovery_error" msgid="5748178989622716736">"Xəta!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Təhlükəsizlik güncəlləməsi yüklənir"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Ažuriranje sistema se instalira"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Briše se"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"Nema komande"</string>
<string name="recovery_error" msgid="5748178989622716736">"Greška!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Instalira se bezbednosno ažuriranje"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Усталёўка абнаўлення сістэмы"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Сціранне"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"Няма каманды"</string>
<string name="recovery_error" msgid="5748178989622716736">"Памылка"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Усталёўка абнаўлення сістэмы бяспекі"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Системната актуализация се инсталира"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Изтрива се"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"Без команда"</string>
<string name="recovery_error" msgid="5748178989622716736">"Грешка!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Актуализацията на сигурносттa се инсталира"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"সিস্টেম আপডেট ইনস্টল করা হচ্ছে"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"মোছা হচ্ছে"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"কোনো আদেশ নেই"</string>
<string name="recovery_error" msgid="5748178989622716736">"ত্রুটি!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"নিরাপত্তার আপডেট ইনস্টল করা হচ্ছে"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Ažuriranje sistema…"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Brisanje u toku"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"Nema komande"</string>
<string name="recovery_error" msgid="5748178989622716736">"Greška!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Instaliranje sigurnosnog ažuriranja…"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"S\'està instal·lant una actualització del sistema"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"S\'està esborrant"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"No hi ha cap ordre"</string>
<string name="recovery_error" msgid="5748178989622716736">"S\'ha produït un error"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"S\'està instal·lant una actualització de seguretat"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Instalace aktualizace systému"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Mazání"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"Žádný příkaz"</string>
<string name="recovery_error" msgid="5748178989622716736">"Chyba!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Instalace aktualizace zabezpečení"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Installerer systemopdateringen"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Sletter"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"Ingen kommando"</string>
<string name="recovery_error" msgid="5748178989622716736">"Fejl!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Installerer sikkerhedsopdateringen"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Systemupdate wird installiert"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Wird gelöscht"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"Kein Befehl"</string>
<string name="recovery_error" msgid="5748178989622716736">"Fehler"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Sicherheitsupdate wird installiert"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Εγκατάσταση ενημέρωσης συστήματος"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Διαγραφή"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"Καμία εντολή"</string>
<string name="recovery_error" msgid="5748178989622716736">"Σφάλμα!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Εγκατάσταση ενημέρωσης ασφαλείας"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Installing system update"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Erasing"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"No command"</string>
<string name="recovery_error" msgid="5748178989622716736">"Error!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Installing security update"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Installing system update"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Erasing"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"No command"</string>
<string name="recovery_error" msgid="5748178989622716736">"Error!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Installing security update"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Installing system update"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Erasing"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"No command"</string>
<string name="recovery_error" msgid="5748178989622716736">"Error!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Installing security update"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Installing system update"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Erasing"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"No command"</string>
<string name="recovery_error" msgid="5748178989622716736">"Error!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Installing security update"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Installing system update"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Erasing"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"No command"</string>
<string name="recovery_error" msgid="5748178989622716736">"Error!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Installing security update"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Instalando actualización del sistema"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Borrando"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"Ningún comando"</string>
<string name="recovery_error" msgid="5748178989622716736">"Error"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Instalando actualización de seguridad"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Instalando actualización del sistema"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Borrando"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"Sin comandos"</string>
<string name="recovery_error" msgid="5748178989622716736">"Error"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Instalando actualización de seguridad"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Süsteemivärskenduse installimine"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Kustutamine"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"Käsk puudub"</string>
<string name="recovery_error" msgid="5748178989622716736">"Viga!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Turvavärskenduse installimine"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Sistemaren eguneratzea instalatzen"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Eduki guztia ezabatzen"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"Ez dago agindurik"</string>
<string name="recovery_error" msgid="5748178989622716736">"Errorea"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Segurtasun-eguneratzea instalatzen"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"در حال نصب به‌روزرسانی سیستم"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"در حال پاک کردن"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"فرمانی وجود ندارد"</string>
<string name="recovery_error" msgid="5748178989622716736">"خطا!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"در حال نصب به‌روزرسانی امنیتی"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Asennetaan järjestelmäpäivitystä"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Tyhjennetään"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"Ei komentoa"</string>
<string name="recovery_error" msgid="5748178989622716736">"Virhe!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Asennetaan tietoturvapäivitystä"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Installation de la mise à jour du système en cours…"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Suppression en cours..."</string>
<string name="recovery_no_command" msgid="4465476568623024327">"Aucune commande"</string>
<string name="recovery_error" msgid="5748178989622716736">"Erreur!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Installation de la mise à jour de sécurité en cours..."</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Installation de la mise à jour du système…"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Suppression…"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"Aucune commande"</string>
<string name="recovery_error" msgid="5748178989622716736">"Erreur !"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Installation de la mise à jour de sécurité…"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Instalando actualización do sistema"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Borrando"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"Non hai ningún comando"</string>
<string name="recovery_error" msgid="5748178989622716736">"Erro"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Instalando actualización de seguranza"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"સિસ્ટમ અપડેટ ઇન્સ્ટૉલ કરી રહ્યાં છે"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"કાઢી નાખી રહ્યું છે"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"કોઈ આદેશ નથી"</string>
<string name="recovery_error" msgid="5748178989622716736">"ભૂલ!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"સુરક્ષા અપડેટ ઇન્સ્ટૉલ કરી રહ્યાં છે"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"सिस्टम अपडेट इंस्टॉल किया जा रहा है"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"मिटाया जा रहा है"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"कोई निर्देश नहीं मिला"</string>
<string name="recovery_error" msgid="5748178989622716736">"गड़बड़ी!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"सुरक्षा अपडेट इंस्टॉल किया जा रहा है"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Instaliranje ažuriranja sustava"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Brisanje"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"Nema naredbe"</string>
<string name="recovery_error" msgid="5748178989622716736">"Pogreška!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Instaliranje sigurnosnog ažuriranja"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Rendszerfrissítés telepítése"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Törlés"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"Nincs parancs"</string>
<string name="recovery_error" msgid="5748178989622716736">"Hiba!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Biztonsági frissítés telepítése"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Համակարգի թարմացման տեղադրում"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Ջնջում"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"Հրամանը տրված չէ"</string>
<string name="recovery_error" msgid="5748178989622716736">"Սխալ"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Անվտանգության թարմացման տեղադրում"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Memasang pembaruan sistem"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Menghapus"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"Tidak ada perintah"</string>
<string name="recovery_error" msgid="5748178989622716736">"Error!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Memasang pembaruan keamanan"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Setur upp kerfisuppfærslu"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Eyðir"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"Engin skipun"</string>
<string name="recovery_error" msgid="5748178989622716736">"Villa!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Setur upp öryggisuppfærslu"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Installazione aggiornamento di sistema…"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Cancellazione…"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"Nessun comando"</string>
<string name="recovery_error" msgid="5748178989622716736">"Errore!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Installazione aggiornamento sicurezza…"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"מתקין עדכון מערכת"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"מוחק"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"אין פקודה"</string>
<string name="recovery_error" msgid="5748178989622716736">"שגיאה!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"מתקין עדכון אבטחה"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"システム アップデートをインストールしています"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"消去しています"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"コマンドが指定されていません"</string>
<string name="recovery_error" msgid="5748178989622716736">"エラーが発生しました。"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"セキュリティ アップデートをインストールしています"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"მიმდინარეობს სისტემის განახლების ინსტალაცია"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"მიმდინარეობს ამოშლა"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"ბრძანება არ არის"</string>
<string name="recovery_error" msgid="5748178989622716736">"წარმოიქმნა შეცდომა!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"მიმდინარეობს უსაფრთხოების განახლების ინსტალაცია"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Жүйе жаңартуы орнатылуда"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Өшірілуде"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"Пәрмен жоқ"</string>
<string name="recovery_error" msgid="5748178989622716736">"Қате!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Қауіпсіздік жаңартуы орнатылуда"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"កំពុងអាប់ដេតប្រព័ន្ធ"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"លុប"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"គ្មានពាក្យបញ្ជាទេ"</string>
<string name="recovery_error" msgid="5748178989622716736">"កំហុស!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"កំពុងដំឡើងការអាប់ដេតសុវត្ថិភាព"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"ಸಿಸ್ಟಂ ಅಪ್‌ಡೇಟ್‌ ಸ್ಥಾಪಿಸಲಾಗುತ್ತಿದೆ"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"ಅಳಿಸಲಾಗುತ್ತಿದೆ"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"ಯಾವುದೇ ಆದೇಶವಿಲ್ಲ"</string>
<string name="recovery_error" msgid="5748178989622716736">"ದೋಷ!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"ಭದ್ರತೆಯ ಅಪ್‌ಡೇಟ್‌ ಸ್ಥಾಪಿಸಲಾಗುತ್ತಿದೆ"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"시스템 업데이트 설치"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"지우는 중"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"명령어 없음"</string>
<string name="recovery_error" msgid="5748178989622716736">"오류!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"보안 업데이트 설치 중"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Тутум жаңыртуусу орнотулууда"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Тазаланууда"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"Буйрук берилген жок"</string>
<string name="recovery_error" msgid="5748178989622716736">"Ката!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Коопсуздук жаңыртуусу орнотулууда"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"ກຳລັງຕິດຕັ້ງການອັບເດດລະບົບ"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"ກຳລັງລຶບ"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"ບໍ່ມີຄຳສັ່ງ"</string>
<string name="recovery_error" msgid="5748178989622716736">"ຜິດພາດ!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"ກຳລັງຕິດຕັ້ງອັບເດດຄວາມປອດໄພ"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Diegiamas sistemos naujinys"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Ištrinama"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"Nėra jokių komandų"</string>
<string name="recovery_error" msgid="5748178989622716736">"Klaida!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Diegiamas saugos naujinys"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Notiek sistēmas atjauninājuma instalēšana"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Notiek dzēšana"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"Nav nevienas komandas"</string>
<string name="recovery_error" msgid="5748178989622716736">"Kļūda!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Notiek drošības atjauninājuma instalēšana"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Се инсталира ажурирање на системот"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Се брише"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"Нема наредба"</string>
<string name="recovery_error" msgid="5748178989622716736">"Грешка!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Се инсталира безбедносно ажурирање"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"സിസ്റ്റം അപ്‌ഡേറ്റ് ഇൻസ്റ്റാൾ ചെയ്യുന്നു"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"മായ്‌ക്കുന്നു"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"കമാൻഡ് ഒന്നുമില്ല"</string>
<string name="recovery_error" msgid="5748178989622716736">"പിശക്!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"സുരക്ഷാ അപ്ഡേറ്റ് ഇൻസ്റ്റാൾ ചെയ്യുന്നു"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Системийн шинэчлэлтийг суулгаж байна"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Устгаж байна"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"Тушаал байхгүй"</string>
<string name="recovery_error" msgid="5748178989622716736">"Алдаа!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Аюулгүй байдлын шинэчлэлтийг суулгаж байна"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"सिस्टम अपडेट इंस्टॉल करत आहे"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"मिटवत आहे"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"कोणतीही कमांड नाही"</string>
<string name="recovery_error" msgid="5748178989622716736">"एरर!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"सुरक्षा अपडेट इंस्टॉल करत आहे"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Memasang kemas kini sistem"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Memadam"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"Tiada perintah"</string>
<string name="recovery_error" msgid="5748178989622716736">"Ralat!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Memasang kemas kini keselamatan"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"စနစ်အပ်ဒိတ်ကို ထည့်သွင်းနေသည်"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"ဖျက်နေသည်"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"ညွှန်ကြားချက်မပေးထားပါ"</string>
<string name="recovery_error" msgid="5748178989622716736">"မှားနေပါသည်!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"လုံခြုံရေး အပ်ဒိတ်ကို ထည့်သွင်းနေသည်"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Installerer systemoppdateringen"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Tømmer"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"Ingen kommandoer"</string>
<string name="recovery_error" msgid="5748178989622716736">"Feil!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Installerer sikkerhetsoppdateringen"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"प्रणालीको अद्यावधिकलाई स्थापना गर्दै"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"मेटाउँदै"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"कुनै आदेश छैन"</string>
<string name="recovery_error" msgid="5748178989622716736">"त्रुटि!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"सुरक्षा सम्बन्धी अद्यावधिकलाई स्थापना गर्दै"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Systeemupdate installeren"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Wissen"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"Geen opdracht"</string>
<string name="recovery_error" msgid="5748178989622716736">"Fout!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Beveiligingsupdate installeren"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"ਸਿਸਟਮ ਅੱਪਡੇਟ ਸਥਾਪਤ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"ਮਿਟਾਈ ਜਾ ਰਹੀ ਹੈ"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"ਕੋਈ ਆਦੇਸ਼ ਨਹੀਂ"</string>
<string name="recovery_error" msgid="5748178989622716736">"ਅਸ਼ੁੱਧੀ!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"ਸੁਰੱਖਿਆ ਅੱਪਡੇਟ ਸਥਾਪਤ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Instaluję aktualizację systemu"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Kasuję"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"Brak polecenia"</string>
<string name="recovery_error" msgid="5748178989622716736">"Błąd"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Instaluję aktualizację zabezpieczeń"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Instalando atualização do sistema"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Apagando"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"Nenhum comando"</string>
<string name="recovery_error" msgid="5748178989622716736">"Erro!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Instalando atualização de segurança"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"A instalar atualização do sistema"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"A apagar"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"Nenhum comando"</string>
<string name="recovery_error" msgid="5748178989622716736">"Erro!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"A instalar atualização de segurança"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Instalando atualização do sistema"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Apagando"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"Nenhum comando"</string>
<string name="recovery_error" msgid="5748178989622716736">"Erro!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Instalando atualização de segurança"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Se instalează actualizarea de sistem"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Se șterge"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"Nicio comandă"</string>
<string name="recovery_error" msgid="5748178989622716736">"Eroare!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Se instalează actualizarea de securitate"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Установка обновления системы…"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Удаление…"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"Команды нет"</string>
<string name="recovery_error" msgid="5748178989622716736">"Ошибка"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Установка обновления системы безопасности…"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"පද්ධති යාවත්කාලීනය ස්ථාපනය කරමින්"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"මකමින්"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"විධානයක් නොමැත"</string>
<string name="recovery_error" msgid="5748178989622716736">"දෝෂය!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"ආරක්ෂක යාවත්කාලීනය ස්ථාපනය කරමින්"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Inštaluje sa aktualizácia systému"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Prebieha vymazávanie"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"Žiadny príkaz"</string>
<string name="recovery_error" msgid="5748178989622716736">"Chyba!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Inštaluje sa bezpečnostná aktualizácia"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Nameščanje posodobitve sistema"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Brisanje"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"Ni ukaza"</string>
<string name="recovery_error" msgid="5748178989622716736">"Napaka"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Nameščanje varnostne posodobitve"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Po instalon përditësimin e sistemit"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Po spastron"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"Nuk ka komanda"</string>
<string name="recovery_error" msgid="5748178989622716736">"Gabim!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Po instalon përditësimin e sigurisë"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Ажурирање система се инсталира"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Брише се"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"Нема команде"</string>
<string name="recovery_error" msgid="5748178989622716736">"Грешка!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Инсталира се безбедносно ажурирање"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Systemuppdatering installeras"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Rensar"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"Inget kommando"</string>
<string name="recovery_error" msgid="5748178989622716736">"Fel!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Säkerhetsuppdatering installeras"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Inasakinisha sasisho la mfumo"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Inafuta"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"Hakuna amri"</string>
<string name="recovery_error" msgid="5748178989622716736">"Hitilafu fulani imetokea!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Inasakinisha sasisho la usalama"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"முறைமைப் புதுப்பிப்பை நிறுவுகிறது"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"அழிக்கிறது"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"கட்டளை இல்லை"</string>
<string name="recovery_error" msgid="5748178989622716736">"பிழை!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"பாதுகாப்புப் புதுப்பிப்பை நிறுவுகிறது"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"సిస్టమ్ నవీకరణను ఇన్‍స్టాల్ చేస్తోంది"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"డేటాను తొలగిస్తోంది"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"ఆదేశం లేదు"</string>
<string name="recovery_error" msgid="5748178989622716736">"ఎర్రర్ సంభవించింది!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"భద్రతా నవీకరణను ఇన్‌స్టాల్ చేస్తోంది"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"กำลังติดตั้งการอัปเดตระบบ"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"กำลังลบ"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"ไม่มีคำสั่ง"</string>
<string name="recovery_error" msgid="5748178989622716736">"ข้อผิดพลาด!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"กำลังติดตั้งการอัปเดตความปลอดภัย"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Nag-i-install ng pag-update ng system"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Binubura"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"Walang command"</string>
<string name="recovery_error" msgid="5748178989622716736">"Error!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Nag-i-install ng update sa seguridad"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Sistem güncellemesi yükleniyor"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Siliniyor"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"Komut yok"</string>
<string name="recovery_error" msgid="5748178989622716736">"Hata!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Güvenlik güncellemesi yükleniyor"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Установлюється оновлення системи"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Стирання"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"Немає команди"</string>
<string name="recovery_error" msgid="5748178989622716736">"Помилка!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Установлюється оновлення системи безпеки"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"سسٹم اپ ڈیٹ انسٹال ہو رہی ہے"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"صاف ہو رہا ہے"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"کوئی کمانڈ نہیں ہے"</string>
<string name="recovery_error" msgid="5748178989622716736">"خرابی!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"سیکیورٹی اپ ڈیٹ انسٹال ہو رہی ہے"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Tizim yangilanishi ornatilmoqda"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Tozalanmoqda…"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"Buyruq yoq"</string>
<string name="recovery_error" msgid="5748178989622716736">"Xato!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Xavfsizlik yangilanishi ornatilmoqda"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Đang cài đặt bản cập nhật hệ thống"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Đang xóa"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"Không có lệnh nào"</string>
<string name="recovery_error" msgid="5748178989622716736">"Lỗi!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Đang cài đặt bản cập nhật bảo mật"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"正在安装系统更新"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"正在清空"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"无命令"</string>
<string name="recovery_error" msgid="5748178989622716736">"出错了!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"正在安装安全更新"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"正在安裝系統更新"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"正在清除"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"沒有指令"</string>
<string name="recovery_error" msgid="5748178989622716736">"錯誤!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"正在安裝安全性更新"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"正在安裝系統更新"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"清除中"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"沒有指令"</string>
<string name="recovery_error" msgid="5748178989622716736">"錯誤!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"正在安裝安全性更新"</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="recovery_installing" msgid="2013591905463558223">"Ifaka isibuyekezo sesistimu"</string>
<string name="recovery_erasing" msgid="7334826894904037088">"Iyasula"</string>
<string name="recovery_no_command" msgid="4465476568623024327">"Awukho umyalo"</string>
<string name="recovery_error" msgid="5748178989622716736">"Iphutha!"</string>
<string name="recovery_installing_security" msgid="9184031299717114342">"Ifaka isibuyekezo sokuphepha"</string>
</resources>

View file

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Do not translate. -->
<string translatable="false" name="go">Go</string>
<!-- Do not translate. -->
<string-array translatable="false" name="string_options">
<item>installing</item>
<item>erasing</item>
<item>no_command</item>
<item>error</item>
<item>installing_security</item>
</string-array>
<!-- Displayed on the screen beneath the animated android while the
system is installing an update. [CHAR LIMIT=60] -->
<string name="recovery_installing">Installing system update</string>
<!-- Displayed on the screen beneath the animated android while the
system is erasing a partition (either a data wipe aka "factory
reset", or a cache wipe). [CHAR LIMIT=60] -->
<string name="recovery_erasing">Erasing</string>
<!-- Displayed on the screen when the user has gotten into recovery
mode without a command to run. Will not normally happen, but
users (especially developers) may boot into recovery mode
manually via special key combinations. [CHAR LIMIT=60] -->
<string name="recovery_no_command">No command</string>
<!-- Displayed on the triangle-! screen when a system update
installation or data wipe procedure encounters an error. [CHAR
LIMIT=60] -->
<string name="recovery_error">Error!</string>
<!-- Displayed on the screen beneath the animation while the
system is installing a security update. [CHAR LIMIT=60] -->
<string name="recovery_installing_security">Installing security update</string>
</resources>

View file

@ -0,0 +1,335 @@
/*
* Copyright (C) 2012 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.recovery_l10n;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.res.AssetManager;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.os.RemoteException;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Spinner;
import android.widget.ArrayAdapter;
import android.widget.AdapterView;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Locale;
/**
* This activity assists in generating the specially-formatted bitmaps
* of text needed for recovery's localized text display. Each image
* contains all the translations of a single string; above each
* translation is a "header row" that encodes that subimage's width,
* height, and locale using pixel values.
*
* To use this app to generate new translations:
*
* - Update the string resources in res/values-*
*
* - Build and run the app. Select the string you want to
* translate, and press the "Go" button.
*
* - Wait for it to finish cycling through all the strings, then
* pull /data/data/com.android.recovery_l10n/files/text-out.png
* from the device.
*
* - "pngcrush -c 0 text-out.png output.png"
*
* - Put output.png in bootable/recovery/res/images/ (renamed
* appropriately).
*
* Recovery expects 8-bit 1-channel images (white text on black
* background). pngcrush -c 0 will convert the output of this program
* to such an image. If you use any other image handling tools,
* remember that they must be lossless to preserve the exact values of
* pixels in the header rows; don't convert them to jpeg or anything.
*/
public class Main extends Activity {
private static final String TAG = "RecoveryL10N";
HashMap<Locale, Bitmap> savedBitmaps;
TextView mText;
int mStringId = R.string.recovery_installing;
public class TextCapture implements Runnable {
private Locale nextLocale;
private Locale thisLocale;
private Runnable next;
TextCapture(Locale thisLocale, Locale nextLocale, Runnable next) {
this.nextLocale = nextLocale;
this.thisLocale = thisLocale;
this.next = next;
}
public void run() {
Bitmap b = mText.getDrawingCache();
savedBitmaps.put(thisLocale, b.copy(Bitmap.Config.ARGB_8888, false));
if (nextLocale != null) {
switchTo(nextLocale);
}
if (next != null) {
mText.postDelayed(next, 200);
}
}
}
private void switchTo(Locale locale) {
Resources standardResources = getResources();
AssetManager assets = standardResources.getAssets();
DisplayMetrics metrics = standardResources.getDisplayMetrics();
Configuration config = new Configuration(standardResources.getConfiguration());
config.locale = locale;
Resources defaultResources = new Resources(assets, metrics, config);
mText.setText(mStringId);
mText.setDrawingCacheEnabled(false);
mText.setDrawingCacheEnabled(true);
mText.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH);
}
@Override
public void onCreate(Bundle savedInstance) {
super.onCreate(savedInstance);
setContentView(R.layout.main);
savedBitmaps = new HashMap<Locale, Bitmap>();
Spinner spinner = (Spinner) findViewById(R.id.which);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
this, R.array.string_options, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView parent, View view,
int pos, long id) {
switch (pos) {
case 0: mStringId = R.string.recovery_installing; break;
case 1: mStringId = R.string.recovery_erasing; break;
case 2: mStringId = R.string.recovery_no_command; break;
case 3: mStringId = R.string.recovery_error; break;
case 4: mStringId = R.string.recovery_installing_security; break;
}
}
@Override public void onNothingSelected(AdapterView parent) { }
});
mText = (TextView) findViewById(R.id.text);
String[] localeNames = getAssets().getLocales();
Arrays.sort(localeNames, new Comparator<String>() {
// Override the string comparator so that en is sorted behind en_US.
// As a result, en_US will be matched first in recovery.
@Override
public int compare(String s1, String s2) {
if (s1.equals(s2)) {
return 0;
} else if (s1.startsWith(s2)) {
return -1;
} else if (s2.startsWith(s1)) {
return 1;
}
return s1.compareTo(s2);
}
});
ArrayList<Locale> locales = new ArrayList<Locale>();
for (String localeName : localeNames) {
Log.i(TAG, "locale = " + localeName);
if (!localeName.isEmpty()) {
locales.add(Locale.forLanguageTag(localeName));
}
}
final Runnable seq = buildSequence(locales.toArray(new Locale[0]));
Button b = (Button) findViewById(R.id.go);
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View ignore) {
mText.post(seq);
}
});
}
private Runnable buildSequence(final Locale[] locales) {
Runnable head = new Runnable() { public void run() { mergeBitmaps(locales); } };
Locale prev = null;
for (Locale loc : locales) {
head = new TextCapture(loc, prev, head);
prev = loc;
}
final Runnable fhead = head;
final Locale floc = prev;
return new Runnable() { public void run() { startSequence(fhead, floc); } };
}
private void startSequence(Runnable firstRun, Locale firstLocale) {
savedBitmaps.clear();
switchTo(firstLocale);
mText.postDelayed(firstRun, 200);
}
private void saveBitmap(Bitmap b, String filename) {
try {
FileOutputStream fos = openFileOutput(filename, 0);
b.compress(Bitmap.CompressFormat.PNG, 100, fos);
fos.close();
} catch (IOException e) {
Log.i(TAG, "failed to write PNG", e);
}
}
private int colorFor(byte b) {
return 0xff000000 | (b<<16) | (b<<8) | b;
}
private int colorFor(int b) {
return 0xff000000 | (b<<16) | (b<<8) | b;
}
private void mergeBitmaps(final Locale[] locales) {
HashMap<String, Integer> countByLanguage = new HashMap<String, Integer>();
int height = 2;
int width = 10;
int maxHeight = 0;
for (Locale loc : locales) {
Bitmap b = savedBitmaps.get(loc);
int h = b.getHeight();
int w = b.getWidth();
height += h+1;
if (h > maxHeight) maxHeight = h;
if (w > width) width = w;
String lang = loc.getLanguage();
if (countByLanguage.containsKey(lang)) {
countByLanguage.put(lang, countByLanguage.get(lang)+1);
} else {
countByLanguage.put(lang, 1);
}
}
Log.i(TAG, "output bitmap is " + width + " x " + height);
Bitmap out = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
out.eraseColor(0xff000000);
int[] pixels = new int[maxHeight * width];
int p = 0;
for (Locale loc : locales) {
Bitmap bm = savedBitmaps.get(loc);
int h = bm.getHeight();
int w = bm.getWidth();
bm.getPixels(pixels, 0, w, 0, 0, w, h);
// Find the rightmost and leftmost columns with any
// nonblack pixels; we'll copy just that region to the
// output image.
int right = w;
while (right > 1) {
boolean all_black = true;
for (int j = 0; j < h; ++j) {
if (pixels[j*w+right-1] != 0xff000000) {
all_black = false;
break;
}
}
if (all_black) {
--right;
} else {
break;
}
}
int left = 0;
while (left < right-1) {
boolean all_black = true;
for (int j = 0; j < h; ++j) {
if (pixels[j*w+left] != 0xff000000) {
all_black = false;
break;
}
}
if (all_black) {
++left;
} else {
break;
}
}
// Make the last country variant for a given language be
// the catch-all for that language (because recovery will
// take the first one that matches).
String lang = loc.getLanguage();
if (countByLanguage.get(lang) > 1) {
countByLanguage.put(lang, countByLanguage.get(lang)-1);
lang = loc.toString();
}
int tw = right - left;
Log.i(TAG, "encoding \"" + loc + "\" as \"" + lang + "\": " + tw + " x " + h);
byte[] langBytes = lang.getBytes();
out.setPixel(0, p, colorFor(tw & 0xff));
out.setPixel(1, p, colorFor(tw >>> 8));
out.setPixel(2, p, colorFor(h & 0xff));
out.setPixel(3, p, colorFor(h >>> 8));
out.setPixel(4, p, colorFor(langBytes.length));
int x = 5;
for (byte b : langBytes) {
out.setPixel(x, p, colorFor(b));
x++;
}
out.setPixel(x, p, colorFor(0));
p++;
out.setPixels(pixels, left, w, 0, p, tw, h);
p += h;
}
// if no languages match, suppress text display by using a
// single black pixel as the image.
out.setPixel(0, p, colorFor(1));
out.setPixel(1, p, colorFor(0));
out.setPixel(2, p, colorFor(1));
out.setPixel(3, p, colorFor(0));
out.setPixel(4, p, colorFor(0));
p++;
saveBitmap(out, "text-out.png");
Log.i(TAG, "wrote text-out.png");
}
}