localize.dev

الوثائق / Android

موارد سلاسل Android، آلية

انقل النص الثابت في تخطيطات Android، و Jetpack Compose، و View code (Kotlin أو Java) إلى موارد السلاسل: strings.xml لكل لغة، واستدعاءات stringResource()، وقائمة لغات التطبيق.

كيف يعمل

في التخطيطات والقوائم، تصبح android:text و hint و contentDescription و title هي @string/…. في Compose، تصبح Text("…") و contentDescription = "…" داخل دوال @Composable هي stringResource(R.string.…, args)؛ تستخدم الـ toasts الـ context.getString.

يعمل عرض الكود في Kotlin أو Java أيضًا: label.setText("…") و setHint و setTitle وأزرار الحوار، و label.text = "…" الخاص بـ Kotlin، تصبح setText(R.string.…). يتم الإبلاغ عن نص العرض المبني من القيم، نظرًا لأن setText لا يأخذ وسائط تنسيق.

تصبح العناصر النائبة %1$s و %2$s ... مرقمة حسب ترتيبها في النص المصدر، بحيث يمكن للترجمة إعادة ترتيبها.

يصبح العدد مع كلمته، "$n ${if (n == 1) "item" else "items"}"، مورد <plurals> يُقرأ باستخدام pluralStringResource(R.plurals.…, n, n) (أو getQuantityString في toast).

قبل وبعد

المخرجات الحقيقية للمحرك لهذا الملف. في تشغيل حقيقي، يقوم النموذج المستضاف بتسمية المفاتيح من السياق.

app/src/main/java/com/acme/shop/ui/Cart.kt · قبل
@Composable
fun Cart(name: String) {
    Column {
        Text("Welcome back, $name!")
        Text(text = "Checkout")
    }
}
app/src/main/java/com/acme/shop/ui/Cart.kt · بعد
import androidx.compose.ui.res.stringResource

@Composable
fun Cart(name: String) {
    Column {
        Text(stringResource(R.string.cart_welcome_back, name))
        Text(text = stringResource(R.string.cart_checkout))
    }
}
res/values/strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="cart_welcome_back">Welcome back, %1$s!</string>
    <string name="cart_checkout">Checkout</string>
</resources>

ما يضيفه الإعداد

الإعداد الأول يقوم بإعداد موارد السلاسل النصية لنظام Android إذا لم يكن المشروع يحتوي عليه بعد:

  • res/values/strings.xml و res/values-<lang>/strings.xml
  • res/xml/locales_config.xml و android:localeConfig، لذا يسرد Android 13+ اللغات في إعدادات التطبيق

قم بتشغيله

يتطلب CLI إصدار Node.js 22 أو أحدث، لا شيء آخر: npx يقوم بتشغيله دون إضافة package.json إلى المشروع. لا يوجد Node على جهازك؟ إجراء GitHub أدناه يقوم بتشغيله لك.

npx localize-dev login

# Preview, then write the changes
npx localize-dev run --dry-run -l es,fr,de
npx localize-dev run -l es,fr,de

# Or open a pull request instead
npx localize-dev pr -l es,fr,de

أو أضف إجراء GitHub واحصل على طلب سحب عند كل دفعة. جربه على الكود الخاص بك أولاً في ملعب.