So lokalisieren Sie Ihre Android-App mit KI
Richten Sie values/-Ordner ein, übersetzen Sie die strings.xml mit KI, wechseln Sie die Sprachen in Kotlin und laden Sie anschließend Screenshots hoch, damit PTC (Private Translation Cloud) die laufende Android-App prüft. Am Ende dieses Leitfadens verfügen Sie über eine mehrsprachige Android-App, die bereit für die Veröffentlichung ist, wobei jede Zielsprache vor dem Release durch eine visuelle Prüfung verifiziert wurde.
Dieser Leitfaden setzt voraus, dass Sie ein bestehendes Android-Projekt in Android Studio haben. Wenn Sie neu beginnen, erstellen Sie zuerst ein neues Projekt mit der Vorlage „Empty Activity“.
Wie Android lokalisierte Ressourcen aus values-{locale}/ Ordnern auflöst
Android organisiert lokalisierte Ressourcen in res/values-{locale}/-Ordnern innerhalb von app/src/main/. Der Standardordner ist values/, der die Strings der Ausgangssprache enthält. Jede Zielsprache erhält ihren eigenen values-{locale}/-Ordner.
app/src/main/res/
values/strings.xml # source language (typically English) - REQUIRED
values-es/strings.xml # Spanish
values-fr/strings.xml # French
values-de/strings.xml # German
values-ja/strings.xml # Japanese
values-zh-rCN/strings.xml # Simplified Chinese (region-specific)
Geben Sie immer den Standardordner values/ ohne Sprachcode an. Dies ist Ihr Fallback. Android wählt zur Laufzeit den richtigen Ordner basierend auf dem Gebietsschema (Locale) des Benutzergeräts aus. Wenn die Sprache des Benutzers Spanisch ist, Sie aber keinen values-es/-Ordner haben, fällt Android auf values/ zurück. Dieser Fallback erfolgt geräuschlos. Eine teilweise übersetzte App zeigt dann Englisch gemischt mit Spanisch an, ohne dass ein Fehler ausgegeben wird.
Die Sprachcodes folgen BCP 47. es für Spanisch, pt-rBR für brasilianisches Portugiesisch (beachten Sie das Präfix r für die Region), zh-rCN für vereinfachtes Chinesisch.
Verschieben Sie jeden für den Benutzer sichtbaren String in die strings.xml
Verwenden Sie immer String-Ressourcen, die in der strings.xml gespeichert sind. Hardcodieren Sie Text niemals direkt im Kotlin/Java-Code oder in einem android:text= Layout-Attribut. Hardcodierter Text kann nicht übersetzt werden.
Verschieben Sie jeden für den Benutzer sichtbaren String in res/values/strings.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">My Notes</string>
<string name="welcome_message">Welcome, %1$s!</string>
<string name="notes_count_zero">No notes yet</string>
<plurals name="notes_count">
<item quantity="one">%d note</item>
<item quantity="other">%d notes</item>
</plurals>
<string-array name="categories">
<item>Personal</item>
<item>Work</item>
<item>Travel</item>
</string-array>
</resources>
Referenzieren Sie jeden String in Kotlin über die generierte R.string.*-ID:
val appName = stringResource(R.string.app_name)
val welcome = stringResource(R.string.welcome_message, userName)
val counts = pluralStringResource(R.plurals.notes_count, notes.size, notes.size)
Wichtige Konventionen, die PTC berücksichtigt:
- Positionsgebundene Platzhalter. Verwenden Sie
%1$s,%2$d,%3$fanstelle von%s,%d. Einige Sprachen müssen die Reihenfolge der Argumente ändern. Positionsgebundene Platzhalter machen das möglich. PTC erkennt und bewahrt diese automatisch. <plurals>für zählbare Substantive. Schreiben Sie im Code nichtif (count == 1) "1 note" else "$count notes". Verwenden Sie<plurals>mit den Mengenangabenone/other/few/many. PTC generiert die richtigen Pluralkategorien pro Zielsprache (1 Form für Japanisch, 2 für Englisch, 4 für Polnisch, 6 für Arabisch).<string-array>für statische Listen. PTC übersetzt jedes Element und behält dabei die Array-Struktur bei.- Maskieren Sie Apostrophe (
\') und Anführungszeichen (\"), um XML-Parsing-Fehler zu vermeiden.
Übersetzen Sie die strings.xml mit PTC in 5 Schritten
- Starten Sie ein PTC-Projekt in Ihrem Dashboard. Laden Sie Ihre
values/strings.xmlhoch, legen Sie Ihre Ausgabepfade fest und wählen Sie die Zielsprachen aus. PTC unterstützt über 40 Sprachen. Während der kostenlosen Testphase können Sie zwei beliebige auswählen. PTC nutzt die Ausgangssprache, um die richtige MT-Engine zu wählen und Strings zu überspringen, bei denen Ausgangs- und Zieltext identisch sind. - Überprüfen Sie die automatisch generierte App-Beschreibung. PTC erstellt aus der hochgeladenen Datei eine kurze Beschreibung Ihrer Android-App. Bearbeiten Sie diese, um Ihre App und Zielgruppe besser zu beschreiben. PTC nutzt diesen Kontext, um die richtige Tonalität und Form für jede Sprache zu treffen.
- Optional vorhandene Übersetzungen hochladen. Wenn Sie bereits übersetzte
values-*/strings.xml-Dateien haben, laden Sie diese hoch, damit PTC Ihren bestehenden Stil berücksichtigen kann. Andernfalls übersetzen Sie von Grund auf neu. - Übersetzen und prüfen. PTC respektiert jeden
name=-Key (Ihre Keys ändern sich nie), jeden positionsgebundenen Platzhalter und generiert die korrekten Pluralkategorien pro Zielsprache. Wenn eine Übersetzung Ihre Längenbeschränkungen überschreitet, hebt PTC dies hervor, damit nichts übersehen wird. Bearbeiten Sie jeden String direkt oder lassen Sie PTC unter Berücksichtigung der Einschränkung neu übersetzen. - Laden Sie die übersetzten
strings.xmlpro Sprache als ZIP-Datei herunter. Jede Datei ist strukturell identisch mit Ihrer Quelle. Dieselben Keys, dieselben Arrays, dieselben Plural-Tags. Übersetzte Werte.
Fügen Sie die übersetzten strings.xml-Dateien in values-{locale}/ ein
Kopieren Sie jede übersetzte Datei in den passenden values-{locale}/-Ordner:
app/src/main/res/values-es/strings.xml # from PTC
app/src/main/res/values-fr/strings.xml # from PTC
app/src/main/res/values-de/strings.xml # from PTC
Erstellen Sie das Projekt neu. Android erkennt die neuen Ressourcen automatisch. Um dies zu überprüfen, ändern Sie die Sprache Ihres Emulators oder Geräts und starten Sie die App neu. Die Benutzeroberfläche sollte in der neuen Sprache erscheinen.
Fügen Sie einen In-App-Sprachwechsler mit AppCompatDelegate.setApplicationLocales() hinzu
Viele Apps benötigen einen In-App-Sprachwechsler, damit Benutzer das Gebietsschema des Geräts überschreiben können. Seit Android 13 (API 33) ist der Standardansatz die Verwendung von AppCompatDelegate.setApplicationLocales():
import androidx.appcompat.app.AppCompatDelegate
import androidx.core.os.LocaleListCompat
fun setAppLanguage(languageTag: String) {
val locales = LocaleListCompat.forLanguageTags(languageTag)
AppCompatDelegate.setApplicationLocales(locales)
}
// Usage in a settings screen
binding.spanishButton.setOnClickListener {
setAppLanguage("es")
}
binding.frenchButton.setOnClickListener {
setAppLanguage("fr")
}
Um zu deklarieren, welche Sprachen Ihre App unterstützt (damit die Sprachauswahl des Systems diese anzeigt), fügen Sie eine locales_config.xml hinzu:
<!-- res/xml/locales_config.xml -->
<?xml version="1.0" encoding="utf-8"?>
<locale-config xmlns:android="http://schemas.android.com/apk/res/android">
<locale android:name="en"/>
<locale android:name="es"/>
<locale android:name="fr"/>
<locale android:name="de"/>
<locale android:name="ja"/>
</locale-config>
Und referenzieren Sie diese in der AndroidManifest.xml:
<application
android:localeConfig="@xml/locales_config"
... >
Für Apps, die auf Android 12 oder niedriger abzielen, besteht der ältere Ansatz darin, die Auswahl des Benutzers in den SharedPreferences zu speichern und bei jedem App-Start anzuwenden:
fun setLocale(context: Context, languageCode: String) {
// Save the user's choice
val prefs = context.getSharedPreferences("Settings", Context.MODE_PRIVATE)
prefs.edit().putString("app_language", languageCode).apply()
// Apply the new locale
val locale = Locale(languageCode)
Locale.setDefault(locale)
val config = Configuration()
config.setLocale(locale)
context.resources.updateConfiguration(config, context.resources.displayMetrics)
// Restart the activity so changes take effect
if (context is Activity) {
context.recreate()
}
}
Laden Sie dann die gespeicherte Sprache bei jedem App-Start:
override fun onCreate() {
super.onCreate()
val prefs = getSharedPreferences("Settings", Context.MODE_PRIVATE)
val languageCode = prefs.getString("app_language", "en") ?: "en"
val locale = Locale(languageCode)
Locale.setDefault(locale)
val config = Configuration()
config.setLocale(locale)
resources.updateConfiguration(config, resources.displayMetrics)
}
Dies bleibt über Sitzungen hinweg bestehen und funktioniert korrekt, nachdem Sie die App bei Google Play veröffentlicht haben.
Verwenden Sie start/end (nicht left/right) für Rechts-nach-links-Sprachen
Verwenden Sie für Arabisch, Hebräisch, Persisch und Urdu in Ihren Layouts start und end anstelle von left und right, damit Android das Layout automatisch spiegelt:
<!-- Instead of this -->
<TextView android:layout_marginLeft="16dp" />
<!-- Use this -->
<TextView android:layout_marginStart="16dp" />
Verwenden Sie in Jetpack Compose Arrangement.Start anstelle von Arrangement.Absolute.Left. Aktivieren Sie „RTL-Layoutrichtung erzwingen“ in den Entwickleroptionen, um die Spiegelung zu testen, ohne die Gerätesprache zu ändern.
Automatisieren Sie die Android-Übersetzung bei jedem Release mit Git oder der PTC API
Bei aktiven Projekten ist das manuelle erneute Ausführen der Übersetzung pro Release nicht skalierbar. PTC bietet Ihnen zwei Möglichkeiten zur Automatisierung.
Git-Integration (empfohlen). Gehen Sie im PTC-Dashboard zu Settings > Merge Requests und klicken Sie auf Add Git Integration, um Ihr GitHub-, GitLab- oder Bitbucket-Repository zu verbinden. Geben Sie ein API-Token mit Lese- und Schreibberechtigungen an und wählen Sie die Branches aus, die PTC überwachen soll. Von dort aus erkennt PTC Änderungen, übersetzt neue oder aktualisierte Strings und öffnet einen Merge Request für Ihre Überprüfung.
API-Integration. Gehen Sie zu Settings > Manage API Tokens und erstellen Sie ein API-Token. Verwenden Sie dann die PTC API innerhalb Ihrer bestehenden CI:
# .github/workflows/translate.yml
name: PTC translate
on:
push:
branches: [main]
paths:
- 'app/src/main/res/values/strings.xml'
jobs:
translate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Trigger PTC translation
run: |
curl -X POST https://api.ptc.wpml.org/v1/projects/${{ secrets.PTC_PROJECT_ID }}/sync \
-H "Authorization: Bearer ${{ secrets.PTC_API_KEY }}"
Sowohl die Git- als auch die API-Integration sind Pro-Funktionen, die verfügbar werden, wenn Sie Pay-As-You-Go aktivieren. In der PTC API-Referenz finden Sie Endpunkte, Webhooks und das vollständige Integrationsmodell.
Visuelle Übersetzungsprüfung Ihrer übersetzten Android-App – Release ohne manuelle QA pro Sprache
Nachdem PTC Ihre strings.xml übersetzt hat, ist die Arbeit noch nicht getan. Ein übersetztes Label könnte im Deutschen über eine Schaltfläche hinauslaufen (Überlauf). „Submit“ könnte im Französischen als Substantiv übersetzt worden sein, obwohl die Benutzeroberfläche ein Verb benötigte. Ein hardcodierter englischer String, den jemand vergessen hat in getString(R.string.welcome) einzuschließen, wird in der gerenderte Android-App unübersehbar unübersetzt bleiben. Diese Fehler abzufangen bedeutet traditionell einen manuellen QA-Durchgang in jeder Zielsprache. Das ist die langsamste und teuerste Phase der mobilen Lokalisierung.
Die AI Visual QA von PTC ersetzt diesen Durchgang. Für native Android-Apps (die nicht in einem Browser laufen, weshalb der Flow mit der Browser-Erweiterung nicht anwendbar ist), nutzen Sie den Screenshot-Upload. Erfassen Sie die kritischen Bildschirme der laufenden App in jeder Zielsprache (Einstellungen, Haupt-Flow, Randfälle) und laden Sie diese bei PTC hoch. Die Vision-KI von PTC inspiziert jeden Bildschirm und meldet zurück:
- Fehler, die PTC in der
strings.xmlbeheben kann. PTC übersetzt den String als Verb neu, wählt ein kürzeres Synonym, das in die Schaltflächenbreite passt, oder generiert einen Layout-bewussten Plural. PTC öffnet einen PR mit den Korrekturen. Es ist keine Arbeit Ihrerseits erforderlich. - Fehler, die in Ihrem Kotlin-Code liegen. Fehlende
getString()-Wrapper, hardcodierte Strings oder Satzverkettungen, dieString.format()mit Platzhaltern verwenden sollten. PTC generiert einen kopierfertigen Prompt für Cursor oder Claude Code. Ihr Entwicklerteam schließt die Strings in Sekundenschnelle in die entsprechenden Funktionen ein.
Das Ergebnis: Sie veröffentlichen mit jedem Release eine verifizierte, mehrsprachige Android-App. Sie erhalten nicht nur eine übersetzte strings.xml mit einem Rattenschwanz an manueller QA.
Übersetzen Sie Ihren Play Store-Eintrag, Release Notes und Push-Benachrichtigungen
Die Beschreibung Ihres Play Store-Eintrags, die „Was ist neu“-Release Notes und Texte für Push-Benachrichtigungen befinden sich außerhalb der strings.xml. Die Funktion Paste to Translate von PTC verarbeitet diese Texte im selben Projekt. Fügen Sie den Ausgangstext im PTC-Dashboard ein, wählen Sie die Zielsprachen und erhalten Sie Übersetzungen zurück, die dasselbe Glossar und dieselbe Markenstimme wie Ihre In-App-Strings verwenden. Gehen Sie dann in der Google Play Console zu Store-Präsenz > Haupteintrag im Store > Übersetzungen, fügen Sie die übersetzten Kurz- und Langbeschreibungen hinzu und speichern Sie.
Übersetzen Sie In-App-Benutzerinhalte mit der PTC API
In-App-Chats, Social-Media-Posts und benutzergenerierte Rezensionen müssen übersetzt werden, sobald der Inhalt eintrifft. Die PTC REST API übersetzt diese Inhalte bei Bedarf mit Bearer-Token-Authentifizierung unter Verwendung desselben Glossars und derselben Markenstimme wie Ihre strings.xml-Übersetzungen.
Testen Sie Ihre lokalisierte Android-App bei jedem Release
Ändern Sie Ihre Gerätesprache in den Einstellungen oder verwenden Sie die Sprachauswahl des Emulators von Android Studio. Prüfen Sie für jede Sprache auf Text, der zu lang für UI-Elemente ist, fehlende Übersetzungen (geräuschloser Fallback auf Standard), falsche Datums-, Zahlen- oder Währungsformate sowie Layoutprobleme bei längeren Texten. Aktivieren Sie für RTL-Sprachen „RTL-Layoutrichtung erzwingen“ in den Entwickleroptionen.
Preise für Android-Übersetzungen nach der kostenlosen Testphase
Pay-As-You-Go, kein Abonnement. Sie zahlen nur für das, was Sie übersetzen. Die ersten 500 Wörter pro Monat sind kostenlos, und der Tarif sinkt, je mehr Sie übersetzen. Nutzen Sie den Preisrechner für eine Schätzung.
Übersetzen Sie jetzt Ihre echte Android-App
Starten Sie Ihre kostenlose 30-Tage-Testphase – 20.000 Wörter in 2 Sprachen, keine Kreditkarte erforderlich. Laden Sie Ihre strings.xml hoch, lassen Sie sie in Minuten übersetzen, laden Sie dann Screenshots hoch und lassen Sie PTC die laufende App verifizieren.
Verwandte Themen:
- iOS- und Android-Apps mit KI übersetzen – Service-Übersicht für plattformübergreifende Teams.
- So lokalisieren Sie Ihre iOS-App – der entsprechende Leitfaden für Xcode und SwiftUI.
- PTC API-Referenz – REST-Endpunkte für die CI-Integration.