«ویرایشگر ترجمهها» نمای یکپارچه و قابلویرایشی از همه منابع رشتهای پیشفرض و ترجمهشده شما ارائه میدهد.
برای آشنایی با ترجمه برنامهتان به زبانهای مختلف، پشتیبانی از زبانها و فرهنگهای مختلف را بخوانید.
منابع رشتهای
منابع رشتهای برای پروژه در فایلهای strings.xml قرار دارد. پروژه شما یک فایل پیشفرض strings.xml دارد که حاوی منابع رشتهای به زبان پیشفرض برنامهتان است، یعنی زبانی که انتظار دارید اکثر کاربران برنامهتان به آن صحبت کنند. همچنین میتوانید فایلهای strings.xml ترجمهشدهای داشته باشید که حاوی
منابع رشتهای برای زبانهای دیگری باشد که میخواهید برنامهتان از آنها پشتیبانی کند.
وقتی فایل پیشفرض strings.xml را تکمیل کردید، میتوانید خودتان ترجمهها را اضافه کنید یا به یک سرویس حرفهای پول بدهید تا ترجمهها را انجام دهد.
در هر دو حالت، باید از ویژگیهای «استودیو Android» برای کمک به
مدیریت و آزمایش نوشتار قابلبومیسازی استفاده کنید. برای اطلاعات درباره
سرویسهای ترجمه حرفهای، به سرویسهای ترجمه مراجعه کنید.
باز کردن «ویرایشگر ترجمهها»
میتوانید از مکانهای زیر در «استودیو Android» به «ویرایشگر ترجمهها» دسترسی پیدا کنید.
باز کردن از نمای Android
- در پانل پروژه > Android در سمت راست، ModuleName > res > values را انتخاب کنید.
روی فایل strings.xml کلیک راست کنید و Open Translations Editor (باز کردن ویرایشگر ترجمهها) را انتخاب کنید.
«ویرایشگر ترجمهها» جفتهای کلید و مقدار را از فایل
strings.xmlنمایش میدهد.
شکل ۱ نوشتار پیشفرض برنامه (در این مورد، انگلیسی) را در «ویرایشگر ترجمهها» برای برنامهای نشان میدهد که هنوز ترجمه نشده است. محتوای فایلهای ترجمهشده strings.xml در سمت چپ ستون ترجمهناپذیر نشان داده میشود و هر زبان یک ستون دارد، همانطور که در شکل ۲ نشان داده شده است.
باز کردن از داخل strings.xml
میتوانید از داخل هریک از فایلهای strings.xml به ویرایشگر ترجمهها دسترسی داشته باشید.
- در پانل پروژه > Android در سمت راست، ModuleName > res > values را انتخاب کنید.
- روی strings.xml دوکلیک کنید تا برای ویرایش باز شود.
- در strings.xml، روی پیوند باز کردن ویرایشگر در گوشه بالا کلیک کنید.
پیکربندی ردیفهای غیرقابلترجمه
در ویرایشگر ترجمهها، میتوانید غیرقابل ترجمه را انتخاب کنید تا نشان دهید نمیخواهید نوشتار این ردیف ترجمه شود. نوشتاری که نمیخواهید ترجمه شود ممکن است نوشتار مختص محصول مانند نامهای تجاری و علامتهای تجاری، یا اصطلاحات فنی باشد که ترجمه ندارند.
وقتی غیرقابلترجمه را انتخاب میکنید، خط مربوطه در فایل پیشفرض
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 برای اسپانیایی.
برای حذف کردن زبان، کارهای زیر را انجام دهید:
میتوانید زبانی را در ویرایشگر ترجمهها با حذف کردن همه مقادیر در ستون حذف کنید (به ویرایش، افزودن، و حذف کردن نوشتار مراجعه کنید)، یا میتوانید پوشه پروژه را برای آن زبان بهصورت زیر حذف کنید:
- در پانل پروژه > Android در سمت راست، ModuleName > res را انتخاب کنید.
- روی پوشه values-* برای زبانی که میخواهید حذف شود کلیک راست کنید. برای مثال، values-hi برای زبان هندی.
- از فهرست، حذف را انتخاب کنید تا پوشه و فایل strings.xml آن حذف شود.
ویرایش، افزودن، و حذف نوشتار
میتوانید تنظیمات نوشتار را مستقیماً در فایل strings.xml یا
ازطریق ویرایشگر ترجمهها اعمال کنید. این بخش رویکرد ویرایشگر
ترجمه را شرح میدهد. در ویرایشگر ترجمهها، میتوانید نوشتار را ازطریق نمای فهرستی یا ازطریق فیلد ترجمه در پایین ویرایشگر ترجمهها ویرایش، اضافه، یا حذف کنید.
نمای فهرستی
برای ویرایش یا افزودن نوشتار، کارهای زیر را انجام دهید:
- روی سلولی که میخواهید نوشتار را ویرایش یا اضافه کنید دوکلیک کنید.
- با صفحهکلید کپی و جایگذاری کنید، یا اگر صفحهکلیدی دارید که از نشانههای تشخیصدهنده پشتیبانی میکند، مستقیماً در نمای فهرستی تایپ کنید.
- کلید Tab را فشار دهید یا مکاننما را از فیلد خارج کنید.
برای حذف کردن نوشتار، کارهای زیر را انجام دهید:
- روی سلولی که میخواهید حذف شود دوکلیک کنید.
- در نمای فهرستی، نوشتار را انتخاب کنید و Delete (حذف) را فشار دهید.
- کلید Tab را فشار دهید یا مکاننما را از فیلد خارج کنید.
فیلد ترجمه
برای ویرایش یا افزودن نوشتار، کارهای زیر را انجام دهید:
- در نمای فهرستی، روی سلولی که میخواهید نوشتار را در آن ویرایش یا اضافه کنید یکبار کلیک کنید.
- در فیلد ترجمه، با صفحهکلید کپی و جایگذاری کنید، یا اگر صفحهکلیدتان از نشانههای زیروزبر پشتیبانی میکند، مستقیماً در فیلد ترجمه تایپ کنید.
- کلید Tab را فشار دهید یا مکاننما را از فیلد خارج کنید.
برای حذف کردن نوشتار، کارهای زیر را انجام دهید:
- روی سلولی که میخواهید حذف شود یکبار کلیک کنید.
- در فیلد ترجمه، نوشتار را انتخاب کنید و حذف را فشار دهید.
افزودن و حذف کلیدها
در «ویرایشگر ترجمهها»، ستون کلید شناسههای یکتا را برای هر مورد داده در فایلهای strings.xml شما فهرست میکند. میتوانید ازطریق «ویرایشگر ترجمهها» کلید اضافه و حذف کنید. وقتی کلیدی را حذف میکنید، «ویرایشگر ترجمه» آن کلید و همه ترجمههای مرتبط با آن را حذف میکند. «ویرایشگر ترجمهها» از بازسازی کد «حذف ایمن» برای حذف کلید استفاده میکند تا بدانید که آیا نوشتار کلید در جای دیگری استفاده شده است یا نه و فرصت داشته باشید قبلاز حذف کلید، اصلاحات لازم را انجام دهید. بازسازی کد
«حذف ایمن» تضمین میکند که کد شما پساز حذف کلید همچنان کامپایل میشود.
برای افزودن کلید، کارهای زیر را انجام دهید:
- در ویرایشگر ترجمهها، روی افزودن کلید
کلیک کنید. در کادر گفتگو، نام کلید، مقدار پیشفرض، و مکان فایل پیشفرض strings.xml را وارد کنید.
شکل ۳. افزودن کلید
برای حذف کلید، مراحل زیر را دنبال کنید:
- در «ویرایشگر ترجمهها»، کلیدی را که میخواهید حذف شود انتخاب کنید.
- روی برداشتن کلیدها
کلیک کنید. در کادر گفتگوی حذف، تصمیم بگیرید که آیا میخواهید حذف ایمن انجام شود و آیا میخواهید در نظرات و رشتهها جستجو شود، و روی تأیید کلیک کنید.
شکل ۴. کادر گفتگوی حذف اگر هیچ مرجعی (استفادهای) برای کلید حذفشده وجود نداشته باشد، یا اگر همه مرجعها بهطور ایمن قابلجمعشدن باشند، کلید حذف میشود. درغیراینصورت، «ویرایشگر ترجمهها» کادر گفتگوی موارد استفاده شناساییشده را با اطلاعاتی درباره مشکلات شناساییشده نمایش میدهد.
شکل ۵. کادر گفتگوی «موارد استفاده شناساییشده» مشاهده موارد استفاده را انتخاب کنید تا آنچه حذف خواهد شد را مرور کنید. کادر گفتگوی یافتن موارد ایمن حذف تداخلها همه کاربردهایی را که حذف آنها ایمن نیست نشان میدهد تا بتوانید کد مربوطه را ویرایش کنید.
شکل ۶. استفادههای ناامن روی یکی از موارد استفاده کلیک راست کنید تا منوِ زمینهای نمایش داده شود و پرش به منبع را انتخاب کنید تا بتوانید تغییرات لازم را انجام دهید.
در پانل یافتن تداخلهای حذف ایمن، اجرای مجدد حذف ایمن را انتخاب کنید تا مطمئن شوید موارد استفاده دیگری که نیاز به توجه داشته باشند وجود ندارد.
وقتی موارد استفاده پاک شد، روی Do Refactor (بازسازی کد) کلیک کنید تا کلید حذف شود.
اصلاح خطاها
شکل ۷ ویرایشگر ترجمهها را نشان میدهد که محتوای فایلهای strings.xml انگلیسی، فرانسوی، و اسپانیایی را نمایش میدهد. نوشتار قرمز نشاندهنده خطوطی است
که خطا دارند.
برای اصلاح خطا، نشانگر را روی نوشتار قرمز نگه دارید تا توضیح مشکل و راهحل آن نمایش داده شود.
وقتی در ویرایشگر ترجمهها تغییراتی ایجاد میکنید، فایلهای strings.xml زیرین با تغییرات شما بهروز میشوند. وقتی در فایل
strings.xml تغییر ایجاد میکنید، ستون مربوطه در ویرایشگر ترجمه
با تغییرات شما بهروز میشود.
نمونه اصلاحات ویرایشگر ترجمهها:
- شکل ۷ نشان میدهد که ردیف app_name دارای علامت غیرقابل ترجمه است، اما ترجمه اسپانیایی ارائه شده است. ترجمه اسپانیایی را حذف کنید تا خطا اصلاح شود.
- شکل ۷ نشان میدهد که ردیف next_page ترجمه فرانسوی ندارد. بااستفاده از صفحهکلید، Page Suivante را در سلول کپی کنید تا خطا برطرف شود. عملیات کپی-جایگذاری صفحهکلید، نوشتار را با هرگونه علامتهای زیروزبر در سلول کپی میکند.
مدیریت و آزمایش نوشتار قابلبومیسازی
پلاتفرم Android و Android Studio چندین ویژگی برای کمک به شما در مدیریت و آزمایش نوشتار قابلبومیسازی برنامهتان ارائه میدهند. این ویژگیها گزینههایی دارند که به شما کمک میکنند مشکلات مربوط به خطهای راستبهچپ (RTL)، مانند عربی یا عبری، را هدف قرار دهید. آزمایش کردن نوشتار قابلمحلیسازی به شما امکان میدهد نوشتار میانای کاربر و چیدمان آن را قبلاز اینکه پیامهایتان را به مخزن منبع ارسال کنید تا بعداً برای ترجمه فرستاده شود، اصلاح کنید.
پشتیبانی از زبانهای راستبهچپ
Jetpack Compose طرحبندیهای راستبهچپ (RTL) را بهصورت بومی مدیریت میکند. اصلاحکنندههای چیدمان
و میاناهای برنامهسازی کاربردی براساس مفاهیم جهتی مانند start و end ساخته شدهاند نه
جهتهای مطلق مانند left و right. وقتی زبان سیستم
به زبان محلی راستبهچپ تغییر میکند، Compose بهطور خودکار این چیدمانها را برای شما آینهسازی میکند.
برای اینکه برنامهتان زبان راستبهچپ را تشخیص دهد و این قرینهسازی را راهاندازی کند، باید بااستفاده از فایل مانیفست برنامهتان موافقت کنید.
برای فعال کردن پشتیبانی از راست به چپ، کارهای زیر را انجام دهید:
- فایل
AndroidManifest.xmlرا باز کنید. - مشخصه
android:supportsRtl="true"را به عنصر<application>اضافه کنید:
<manifest ... >
<application
...
android:supportsRtl="true">
</application>
</manifest>
برای کسب اطلاعات بیشتر درباره نحوه مدیریت چیدمان نوشتار، قرینهسازی، و پیکربندیهای سفارشی راستبهچپ توسط Compose، به کار با زبانهای راستبهچپ مراجعه کنید.
تنظیم دستی جهت نوشتار
در Jetpack Compose، از پنجره Properties تصویری برای اجبار چیدمان یا جهتهای نوشتار استفاده نمیکنید. Compose بهطور خودکار قرینهسازی راستبهچپ را براساس زبان سیستم مدیریت میکند.
بااینحال، اگر لازم است جهت را برای عنصر نوشتاری خاصی بهطور دستی لغو کنید (برای مثال، نمایش رشته چپبهراست در چیدمان راستبهچپ)، میتوانید شیء TextDirection را به TextStyle خود ارسال کنید.
مقادیر پشتیبانیشده عبارتاند از:
TextDirection.Content: (Default): جهت را از اولین نویسه جهتدار قوی استنباط میکند.TextDirection.Ltr: جهت چپ به راست را اجباری میکند.TextDirection.Rtl: جهت راست به چپ را اجباری میکند.
برای کسب اطلاعات بیشتر درباره سبکبندی نوشتار و پیکربندی جهتهای نوشتار دستی در Compose، به سبکبندی نوشتار مراجعه کنید.
از رشتههای بومیسازیشده در برنامهتان استفاده کنید
وقتی رشتههایتان را بااستفاده از «ویرایشگر ترجمهها» اضافه و ترجمه کردید،
فایلهای res/values/strings.xml زیربنایی شما بهطور خودکار بهروزرسانی میشوند و
میتوانید از منابع بومیسازیشده مستقیماً در میانای کاربرتان استفاده کنید.
برای آشنایی با نحوه نمایش نوشتار بومیسازیشده، مدیریت بومی راستبهچپ، و استفاده از @Preview
برای آزمایش کردن زبانهای مختلف و شبهزبانها، به بخش رشتهها در
«منابع» در Compose مراجعه کنید.
مکانهای کاذب
منطقه زبانی کاذب یک منطقه زبانی شبیهسازیشده است که برای فرض کردن ویژگیهای زبانهایی طراحی شده است که هنگام ترجمه برنامه باعث ایجاد مشکلات ترجمه در میانای کاربر، چیدمان، راستبهچپ، و غیره میشوند. مکانهای کاذب ترجمههای فوری و خودکاری ارائه میدهند که برای همه پیامهای قابلبومیسازی به زبان انگلیسی قابلخواندن است. این کار به شما امکان میدهد پیامهای غیرقابلترجمه را در کد منبع خود پیدا کنید.
برای کسب اطلاعات درباره نحوه استفاده از شبهمنطقهها، به آزمایش کردن برنامه با شبهمنطقهها مراجعه کنید.