ویرایشگر ترجمهها، نمایی یکپارچه و قابل ویرایش از تمام منابع رشتهای پیشفرض و ترجمهشده شما ارائه میدهد.
برای آشنایی با ترجمه برنامه خود برای زبانهای مختلف، بخش «پشتیبانی از زبانها و فرهنگهای مختلف» را مطالعه کنید.

شکل ۱. ویرایشگر ترجمهها که متن برنامه را قبل از ترجمه نشان میدهد
منابع رشتهای
منابع رشتهای برای یک پروژه در فایلهای strings.xml قرار دارند. پروژه شما یک فایل پیشفرض strings.xml دارد که شامل منابع رشتهای به زبان پیشفرض برنامه شما است، زبانی که انتظار دارید اکثر کاربران برنامه شما به آن صحبت کنند. همچنین میتوانید فایلهای strings.xml ترجمه شدهای داشته باشید که حاوی منابع رشتهای برای زبانهای دیگری باشند که میخواهید برنامه شما با آنها سازگار باشد.
پس از تکمیل فایل پیشفرض strings.xml ، میتوانید خودتان ترجمهها را اضافه کنید یا برای انجام ترجمهها به یک سرویس حرفهای پول بدهید. در هر صورت، باید از ویژگیهای اندروید استودیو برای کمک به مدیریت و آزمایش متنهای قابل ترجمه استفاده کنید. برای اطلاعات بیشتر در مورد خدمات ترجمه حرفهای، به خدمات ترجمه مراجعه کنید.
ویرایشگر ترجمهها را باز کنید
شما میتوانید از مکانهای زیر در اندروید استودیو به ویرایشگر ترجمهها دسترسی داشته باشید.
از نمای اندروید باز کنید
- در پنل Project > Android در سمت چپ، ModuleName > res > values را انتخاب کنید.
- روی فایل strings.xml کلیک راست کرده و Open Translations Editor را انتخاب کنید.
ویرایشگر ترجمهها جفتهای کلید و مقدار را از فایل
strings.xmlنمایش میدهد.نکته: وقتی فایلهای
strings.xmlرا ترجمه کردهاید، پروژه شما چندین پوشه values متناظر با پسوندهایی دارد که زبان را نشان میدهند، مانند values-es برای زبان اسپانیایی. فایلstrings.xmlپیشفرض شما همیشه در پوشه values (بدون پسوند) قرار دارد.
شکل ۱ متن پیشفرض برنامه (در این مورد، انگلیسی) را در ویرایشگر ترجمه برای یک برنامه ساده قبل از انجام کار ترجمه نشان میدهد. محتویات فایلهای strings.xml ترجمه شده در سمت راست ستون غیرقابل ترجمه با یک ستون برای هر زبان، همانطور که در شکل ۲ نشان داده شده است، ظاهر میشوند.
باز کردن از درون strings.xml
شما میتوانید از درون هر یک از فایلهای strings.xml خود به ویرایشگر ترجمهها دسترسی داشته باشید.
- در پنل Project > Android در سمت چپ، ModuleName > res > values را انتخاب کنید.
- برای ویرایش، روی فایل strings.xml دوبار کلیک کنید.
- در فایل strings.xml ، روی لینک Open editor در گوشه بالا سمت راست کلیک کنید.
پیکربندی ردیفهای غیرقابل ترجمه
در ویرایشگر ترجمهها ، میتوانید گزینه «غیرقابل ترجمه» را انتخاب کنید تا مشخص شود که نمیخواهید متن موجود در این ردیف ترجمه شود. متنی که نمیخواهید ترجمه شود، ممکن است متن مخصوص محصول مانند نامهای تجاری و علائم تجاری یا اصطلاحات فنی باشد که ترجمهای ندارند.
وقتی گزینه Untranslatable را انتخاب میکنید، خط مربوطه در فایل پیشفرض strings.xml translatable="false" را اضافه میکند. در مثال زیر، EasyApp در خط بالا ترجمه نمیشود زیرا نام محصول است.
<resources>
<string name="app_name" translatable="false">EasyApp</string>
<string name="action_settings">Settings</string>
<string name="easy_app">I am a Simple App!</string>
<string name="next_page">Next Page</string>
<string name="second_page_message">I am the Second Page!</string>
<string name="title_activity_second">SecondActivity</string>
</resources>
اضافه کردن و حذف زبانها
ویرایشگر ترجمهها از BCP 47 پشتیبانی میکند و کدهای محلی و منطقهای (کشوری) را برای محلیسازیهای هدفمند در یک انتخاب واحد ترکیب میکند. یک منطقه زبانی چیزی بیش از زبان را تعریف میکند. یک منطقه زبانی شامل قالببندی وابسته به کشور برای مواردی مانند تاریخ و زمان، واحد پول و اعداد اعشاری است.
برای اضافه کردن زبان، مراحل زیر را انجام دهید:
- در ویرایشگر ترجمهها ، روی نماد کره زمین کلیک کنید
. - از لیست کشویی، زبانی را که میخواهید اضافه کنید انتخاب کنید. زبان جدید در ویرایشگر ترجمهها ظاهر میشود و یک پوشه values-* با فایل `strings.xml` به پروژه اضافه میشود. به عنوان مثال، values-es برای زبان اسپانیایی.
برای حذف یک زبان، مراحل زیر را انجام دهید:
شما میتوانید با حذف هر مقدار در ستون (به بخش ویرایش، اضافه کردن و حذف متن مراجعه کنید)، یک زبان را در ویرایشگر ترجمهها حذف کنید، یا میتوانید پوشه پروژه مربوط به آن زبان را به شرح زیر حذف کنید:
- در پنل Project > Android در سمت چپ، گزینه ModuleName > res را انتخاب کنید.
- روی پوشه values-* مربوط به زبانی که میخواهید حذف کنید، کلیک راست کنید. برای مثال، values-hi برای زبان هندی.
- از لیست، گزینه Delete را انتخاب کنید تا پوشه و فایل strings.xml آن حذف شوند.
ویرایش، اضافه کردن و حذف متن
شما میتوانید تنظیمات متن را مستقیماً در فایل strings.xml یا از طریق ویرایشگر ترجمهها (Translations Editor ) انجام دهید. این بخش رویکرد ویرایشگر ترجمهها را شرح میدهد. در ویرایشگر ترجمهها ، میتوانید متن را از طریق نمای لیست یا از طریق فیلد ترجمه در پایین ویرایشگر ترجمهها ویرایش، اضافه یا حذف کنید.

شکل ۲. نمای فهرست در بالا و فیلد ترجمه در پایین
نمای فهرست
برای ویرایش یا اضافه کردن متن، مراحل زیر را انجام دهید:
- روی سلولی که میخواهید متن را در آن ویرایش یا اضافه کنید، دوبار کلیک کنید.
- از طریق کپی/پیست کیبورد، یا اگر کیبوردی دارید که از علائم تفکیککننده پشتیبانی میکند، مستقیماً در نمای لیست تایپ کنید.
- با کلید Tab یا ماوس، مکاننما را از فیلد خارج کنید.
برای حذف متن، موارد زیر را انجام دهید:
- روی سلولی که میخواهید حذف کنید، دوبار کلیک کنید.
- در نمای فهرست، متن را انتخاب کرده و دکمهی حذف را فشار دهید.
- با کلید Tab یا ماوس، مکاننما را از فیلد خارج کنید.
فیلد ترجمه
برای ویرایش یا اضافه کردن متن، مراحل زیر را انجام دهید:
- در نمای لیست، روی سلولی که میخواهید متن را در آن ویرایش یا اضافه کنید، تکتک کلیک کنید.
- در فیلد ترجمه ، متن را کپی و پیست کنید، یا اگر کیبوردی دارید که از علائم تفکیککننده پشتیبانی میکند، مستقیماً در فیلد ترجمه تایپ کنید.
- با کلید Tab یا ماوس، مکاننما را از فیلد خارج کنید.
برای حذف متن، موارد زیر را انجام دهید:
- روی سلولی که میخواهید حذف کنید، یک بار کلیک کنید.
- در فیلد ترجمه ، متن را انتخاب کرده و دکمه حذف را فشار دهید.
اضافه کردن و حذف کردن کلیدها
در ویرایشگر ترجمهها، ستون کلید ، شناسههای منحصر به فرد هر آیتم داده در فایلهای strings.xml شما را فهرست میکند. میتوانید از طریق ویرایشگر ترجمهها، کلیدها را اضافه و حذف کنید. وقتی یک کلید را حذف میکنید، ویرایشگر ترجمهها آن و تمام ترجمههای مرتبط با آن را حذف میکند. ویرایشگر ترجمهها از بازسازی حذف ایمن (Safe Delete refactoring) برای حذف یک کلید استفاده میکند، بنابراین شما میدانید که آیا متن کلید در جای دیگری استفاده شده است یا خیر و فرصتی برای انجام تنظیمات لازم قبل از حذف کلید خواهید داشت. بازسازی حذف ایمن تضمین میکند که کد شما پس از حذف کلید، همچنان کامپایل میشود.
برای اضافه کردن کلید، مراحل زیر را انجام دهید:
- در ویرایشگر ترجمهها ، روی افزودن کلید کلیک کنید
. - در کادر محاورهای، نام کلید، مقدار پیشفرض و محل فایل پیشفرض strings.xml را وارد کنید.

شکل ۳. اضافه کردن کلید
برای حذف یک کلید، مراحل زیر را انجام دهید:
- در ویرایشگر ترجمهها، کلیدی را که میخواهید حذف کنید انتخاب کنید.
- روی حذف کلیدها کلیک کنید
. - در پنجرهی حذف ، تصمیم بگیرید که آیا میخواهید حذف ایمن انجام شود و آیا میخواهید در نظرات و رشتهها جستجو انجام شود یا خیر، و روی تأیید کلیک کنید.

شکل ۴. پنجرهی حذف
اگر هیچ ارجاعی (کاربردی) به کلید حذف شده وجود نداشته باشد، یا اگر همه ارجاعات به طور ایمن قابل جمع شدن باشند، کلید حذف میشود. در غیر این صورت، ویرایشگر ترجمهها، کادر محاورهای « کاربردهای شناسایی شده» را به همراه اطلاعاتی در مورد مشکلات شناسایی شده نمایش میدهد.
شکل ۵. پنجرهی حذف
- برای بررسی مواردی که حذف خواهند شد، گزینه «مشاهده موارد استفاده» را انتخاب کنید. کادر محاورهای «یافتن تداخلهای حذف ایمن» تمام موارد استفادهای را که حذف آنها ایمن نیست، نشان میدهد تا بتوانید کد مربوطه را ویرایش کنید.

شکل ۶. کاربردهای ناامن
- برای نمایش منوی زمینه، روی یک مورد کلیک راست کنید و گزینه Jump to Source را انتخاب کنید تا بتوانید تغییرات لازم را اعمال کنید.
- در پنل «یافتن تداخلهای حذف ایمن» ، گزینه «اجرای مجدد حذف ایمن» را انتخاب کنید تا مطمئن شوید هیچ کاربرد دیگری وجود ندارد که نیاز به توجه داشته باشد.
- وقتی موارد استفاده پاک شدند، روی Do Refactor کلیک کنید تا کلید حذف شود.
اشتباهات را اصلاح کنید
شکل ۷ ویرایشگر ترجمهها را نشان میدهد که محتوای فایلهای strings.xml انگلیسی، فرانسوی و اسپانیایی را نمایش میدهد. متن قرمز نشاندهنده خطوطی است که دارای خطا هستند.

شکل ۷. متن قرمز نشان دهنده یک وضعیت خطا است که باید آن را برطرف کنید
برای اصلاح خطا، نشانگر ماوس را روی متن قرمز نگه دارید تا توضیحی در مورد مشکل و راه حل آن نمایش داده شود.
وقتی در ویرایشگر ترجمهها تغییراتی ایجاد میکنید، فایلهای strings.xml زیرین با تغییرات شما بهروزرسانی میشوند. وقتی در یک فایل strings.xml تغییراتی ایجاد میکنید، ستون مربوطه در ویرایشگر ترجمهها با تغییرات شما بهروزرسانی میشود.
اصلاحات ویرایشگر ترجمههای نمونه:
- شکل ۷ نشان میدهد که ردیف app_name گزینهی «غیرقابل ترجمه» (Untranslatable) تیک خورده است، اما ترجمهی اسپانیایی ارائه شده است. برای اصلاح خطا، ترجمهی اسپانیایی را حذف کنید.
- شکل ۷ نشان میدهد که ردیف next_page فاقد ترجمه فرانسوی است. برای اصلاح خطا، از صفحه کلید خود برای کپی کردن Page Suivante در سلول استفاده کنید. عملیات کپی-پیست صفحه کلید، متن را با هرگونه علامت تفکیک کننده در سلول کپی میکند.
مدیریت و آزمایش متنهای قابل ترجمه
پلتفرم اندروید و اندروید استودیو چندین ویژگی را برای کمک به شما در مدیریت و آزمایش متن برنامه قابل ترجمه شما ارائه میدهند. این ویژگیها گزینههایی دارند که به شما کمک میکنند تا مشکلات مربوط به اسکریپتهای راست به چپ (RTL)، مانند عربی یا عبری، را هدف قرار دهید. آزمایش متن قابل ترجمه شما به شما این امکان را میدهد که قبل از ارسال پیامهای خود به مخزن منبع برای ارسال بعدی برای ترجمه، تنظیماتی را در متن رابط کاربری و طرحبندی آن انجام دهید.
پشتیبانی از زبانهای RTL
Jetpack Compose طرحبندیهای راست به چپ (RTL) را به صورت بومی مدیریت میکند. اصلاحکنندههای طرحبندی و APIها حول مفاهیم جهتدار مانند start و end ساخته شدهاند، نه جهتهای مطلق مانند left و right . وقتی زبان سیستم به یک زبان RTL تغییر میکند، Compose به طور خودکار این طرحبندیها را برای شما منعکس میکند.
برای اینکه برنامه شما زبان RTL را تشخیص دهد و این قرینهسازی را فعال کند، باید از فایل مانیفست برنامه خود استفاده کنید.
برای فعال کردن پشتیبانی RTL، موارد زیر را انجام دهید:
- فایل
AndroidManifest.xmlخود را باز کنید. - ویژگی
android:supportsRtl="true"را به عنصر<application>اضافه کنید:
<manifest ... >
<application
...
android:supportsRtl="true">
</application>
</manifest>
برای کسب اطلاعات بیشتر در مورد نحوه مدیریت طرحبندی متن، قرینهسازی و پیکربندیهای سفارشی RTL توسط Compose، به بخش «کار با زبانهای RTL» مراجعه کنید.
تنظیم دستی جهت متن
در Jetpack Compose، شما از پنجره ویژگیهای بصری برای اعمال تغییرات در طرحبندی یا جهت متن استفاده نمیکنید. Compose به طور خودکار بر اساس زبان سیستم، نمایش معکوس RTL را مدیریت میکند.
با این حال، اگر نیاز دارید که جهت یک عنصر متنی خاص را به صورت دستی تغییر دهید (برای مثال، نمایش یک رشته LTR در یک طرح RTL)، میتوانید یک شیء TextDirection را به TextStyle خود منتقل کنید.
مقادیر پشتیبانی شده عبارتند از:
-
TextDirection.Content: (Default): جهت را از اولین کاراکتر جهتدار قوی استنباط میکند. -
TextDirection.Ltr: جهت چپ به راست را اجباری میکند. -
TextDirection.Rtl: جهت راست به چپ را فعال میکند.
برای کسب اطلاعات بیشتر در مورد سبکدهی متن و پیکربندی دستورالعملهای دستی متن در نوشتن، به بخش «سبکدهی متن» مراجعه کنید.
از رشتههای محلیشده در برنامه خود استفاده کنید
پس از اینکه رشتههای خود را با استفاده از ویرایشگر ترجمهها اضافه و ترجمه کردید، فایلهای res/values/strings.xml زیرین شما به طور خودکار بهروزرسانی میشوند و میتوانید از منابع محلیشده مستقیماً در رابط کاربری خود استفاده کنید.
برای یادگیری نحوه نمایش متن محلی، مدیریت RTL به صورت بومی، و استفاده از @Preview برای آزمایش زبانها و شبهزبانهای مختلف، به بخش رشتهها در منابع در Compose مراجعه کنید.
شبهمحلیها
یک شبهزبان، یک زبان شبیهسازیشده است که برای به عهده گرفتن ویژگیهای زبانهایی که باعث ایجاد مشکلات رابط کاربری، طرحبندی، RTL و سایر مشکلات ترجمه هنگام ترجمه یک برنامه میشوند، طراحی شده است. شبهزبانها ترجمههای فوری و خودکاری را ارائه میدهند که برای همه پیامهای قابل ترجمه به زبان انگلیسی قابل خواندن هستند. این امر به شما امکان میدهد پیامهای غیرقابل ترجمه را در کد منبع خود دریافت کنید.
برای اطلاعات بیشتر در مورد نحوه استفاده از شبهزبانها، به بخش «برنامه خود را با شبهزبانها آزمایش کنید» مراجعه کنید.