چگونه یک صفحهگسترده اکسل را بدون خراب کردن فرمولها یا لیستهای کشویی ترجمه کنیم
متنی را پیدا کنید که مترجم سلولبهسلول از آن صرفنظر میکند در یک فایل .xlsx (متن فرمول، متن غنی، پیوندها، نمودارها، ماکروها)، لیستهای کشویی و کدهایی را که ممکن است خراب شوند اصلاح کنید، و نتیجه را با یک اسکریپت رایگان و یک کتابکار آزمایشی بررسی کنید.

برای ترجمه کل یک کتابکار اکسل، فایل .xlsx را به جای ترجمه سلول به سلول، در یک مترجم اسناد بارگذاری کنید. فرمان Review > Translate خود اکسل روی متنی که انتخاب میکنید کار میکند (Microsoft Support)، که برای یک برچسب خوب است و برای یک لیست قیمت کند. یک مترجم فایل هر سلول متنی را میخواند، ترجمه میکند و به همان آدرس برمیگرداند، بنابراین فرمولها، اعداد و تاریخها در جای خود باقی میمانند.
چیزی که به شما نمیگوید این است که کدام متن را هرگز نخوانده است. متنی که داخل یک فرمول تایپ شده، سلولی با یک کلمه پررنگ، یک پیوند، یک یادداشت، عنوان یک نمودار: در ترجمه سلولبهسلول، همه اینها میتوانند به زبان اصلی برگردند. و دو چیز میتواند خراب شود: یک لیست کشویی که مقادیر مجاز آن ترجمه نشدهاند، و یک کد محصول که ترجمه شده است.
ما یک کتابکار آزمایشی دوبرگی با متن در هر یک از این مکانها ساختیم، یک بررسیکننده رایگان نوشتیم که محل قرارگیری متن را فهرست میکند، و کتابکار را از طریق یک بازتولید محلی از پردازش صفحهگستردهای که BookTranslator استفاده میکند اجرا کردیم. این راهنما نشان میدهد چه چیزی برگشت، قبل از بارگذاری چه چیزی را تغییر دهید، و چگونه فایل ترجمهشده را بررسی کنید.
پاسخ سریع: چه چیزی در یک کتابکار ترجمه میشود
| متن کجاست | مثال از آزمایش ما | توسط BookTranslator ترجمه میشود؟ | چه کاری انجام دهید |
|---|---|---|---|
| سلولهای متنی ساده، شامل ردیفهای سرصفحه | "دفترچه آبی"، "قیمت" | بله | هیچ |
| اعداد، تاریخها، مقادیر بولی | 4.5, 2026-10-30 | همانطور که بودند باقی میمانند | قالبهای عددی را برای بازار هدف بررسی کنید |
| فرمولها | =C2*D2 | همانطور که بودند باقی میمانند | هیچ |
| متن داخل یک فرمول | =IF(D2>5,"In stock","Low stock") | خیر | کلمات را به سلولها منتقل کنید (به مرحله ۲ مراجعه کنید) |
| سلول با قالببندی مختلط | "نسخه محدود خودکار" | خیر، کل سلول نادیده گرفته میشود | ابتدا قالببندی را پاک کنید، یا آن را دستی ترجمه کنید |
| سلولهای دارای پیوند | "صفحه محصول" | خیر | متن پیوند را پس از ترجمه ویرایش کنید |
| مقدار داخل سلول کشویی | "لوازمالتحریر" | بله، اما فهرست کشویی خیر | فهرست را اصلاح کنید، وگرنه سلول دیگر معتبر نیست |
| کدهای دارای حروف | "A-77"، "B-09" | به مترجم ارسال میشود | پس از ترجمه آنها را بررسی کنید |
| کدهای فقط دارای رقم یا نماد | "00123" | بدون تغییر باقی میمانند | هیچ |
| یادداشتها و نظرات | "نام تأمینکننده را قبل از انتشار بررسی کنید" | خیر | دستی ترجمه کنید، یا آنها را حذف کنید |
| نام برگهها و محدودههای نامگذاریشده | "محصولات"، PriceRange | خیر، بنابراین فرمولهای بینصفحهای همچنان کار میکنند | فقط در صورت نیاز، پس از بررسی فرمولها، نام صفحهها را بهصورت دستی تغییر دهید |
| نمودارها و ماکروها | یک نمودار میلهای، یک پروژه VBA | در فایل ترجمهشده در آزمون ما حذف شد | اصل را نگه دارید، پس از آن بازسازی کنید (به پایین مراجعه کنید) |
فایلهای قدیمیتر .xls پذیرفته نمیشوند. ابتدا آنها را در Excel باز کنید و بهصورت .xlsx ذخیره کنید. فایلهای .xlsm دارای ماکرو پذیرفته میشوند، اما پیش از بارگذاری بخش ماکروها را بخوانید: فایل ترجمهشده ماکرو ندارد، و اگر دانلود هنوز با پسوند .xlsm تمام میشود، پیش از باز کردن آن را به .xlsx تغییر نام دهید.
مرحله ۱: بررسیکننده را روی کتابکارتان اجرا کنید
check_xlsx_text.py را دانلود کنید و آن را روی فایل خود اجرا کنید:
python3 check_xlsx_text.py "Price list.xlsx"
این اسکریپت فقط به Python 3 نیاز دارد و فایل را بدون تغییر میخواند. در ادامه خلاصهای برای کتابکار نمونه ما آمده است:
Counts by location:
cell code, ID or address 2
cell link text 1
cell mixed formatting 1
cell plain text 15
comments comment or note text 1
dropdown list of allowed values 1
formula text text inside a formula 6
sheet sheet name 2
workbook defined name 1
Plain text cells (translated by a cell-by-cell translator): 15
Items that need a decision before you upload: 12
در زیر شمارشها، هر مورد را همراه با صفحه و سلول آن فهرست میکند، مانند Products!E2 formula text 'In stock'. از این فهرست بهعنوان فهرست کارهای خود برای مرحله ۲ استفاده کنید. اگر کتابکار شما نمودار، کادر متن، جدول محوری یا پروژه ماکرو داشته باشد، آنها نیز در شمارشها ظاهر میشوند.
README کتابکار نمونه را توصیف میکند، هش فایلها را فهرست میکند و به اسکریپتهایی که آن را میسازند پیوند میدهد، تا بتوانید آزمون را تکرار کنید.
چه بر سر کتابکار آزمون ما آمد
ما کتابکار نمونه را از طریق کدی که پردازشگر صفحهگسترده BookTranslator استفاده میکند، بهصورت محلی در ۲۰۲۶-۱۱-۰۱ با همان کتابخانه (ExcelJS 4.4.0) بازتولید کردیم. بهجای ترجمه واقعی، از یک جایگزین استفاده کردیم که "[DE]" را به ابتدای متن هر سلول اضافه میکند. این کار مدل زبانی را از آزمون خارج میکند، بنابراین نتایج فقط نشان میدهند که پردازش فایل چه چیزی را میفرستد، نگه میدارد و حذف میکند.
پردازشگر هر صفحه را سلول به سلول میخواند. یک سلول را فقط در صورتی برای ترجمه میفرستد که مقدار متنی ساده داشته باشد، و هر متنی که فقط از ارقام، علائم نگارشی و نمادها تشکیل شده باشد را رد میکند. هر چیز دیگری در شبکه سلولها بدون تغییر کپی میشود. سپس BookTranslator دو فایل برمیگرداند: یک کتابکار ترجمهشده و یک کتابکار دوزبانه.
کتابکار ترجمهشده
این فایلی است که باید استفاده کنید. هر ۶ فرمول، ۷ عدد و تاریخ، قالبهای واحد پول و تاریخ، سلولهای ادغامشده، یادداشت، قاعده کشویی و محدوده نامگذاریشده بدون تغییر بازگشتند. ۹ سلول سرستون و سایر سلولهای متنی ساده در جای خود ترجمه شدند. سه نتیجه نیاز به توجه دارند:
متن داخل فرمولها به زبان مبدأ میماند. ستون Status از =IF(D2>5,"In stock","Low stock") استفاده میکرد. فرمول یک سلول متنی نیست، بنابراین پردازشگر هرگز آن را نمیخواند، و "In stock" در هر ردیف به انگلیسی میماند. همین امر برای متنهای متصلشده با & یا CONCAT و متن داخل HYPERLINK نیز صدق میکند.
مقدار کشویی ترجمهشده دیگر با فهرست خود مطابقت ندارد. سلول H2 یک کشویی داشت که "Stationery, Office, Art" را مجاز میکرد. مقدار سلول ترجمه شد، اما فهرست در قاعده اعتبارسنجی ذخیره میشود، نه در یک سلول، بنابراین ترجمه نشد. حالت مقایسه بررسیکننده ما آن را اینگونه گزارش کرد:
Problems: 3
Products!A3: code changed: 'A-77' -> '[DE] A-77'
Products!A4: code changed: 'B-09' -> '[DE] B-09'
Products!H2: '[DE] Stationery' is not in its dropdown list ['Art', 'Office', 'Stationery']
Excel مقداری را که قاعده اعتبارسنجی آن را نقض میکند نگه میدارد، اما نفر بعدی که کشویی را باز کند فقط گزینههای قدیمی را میبیند، و Data > Circle Invalid Data سلول را علامتگذاری میکند.
کدهای دارای حروف به مترجم فرستاده میشوند. "00123" رد شد زیرا فقط شامل ارقام بود. "A-77" و "B-09" فرستاده شدند، زیرا حاوی یک حرف هستند. اینکه آیا یک کد بدون تغییر بازمیگردد به مدل بستگی دارد؛ هیچ چیز در پردازش فایل از آن محافظت نمیکند. یک SKU که بهصورت "A-77-Artikel" بازگردد، هر جستجویی که از آن استفاده میکند را خراب میکند.
کتابکار دوزبانه
فایل دوزبانه یک ستون ترجمه در سمت راست هر ستونی که حداقل یک سلول ترجمهشده داشت درج میکند، با سرستونهایی مانند "Name (Translated)". مقادیر سلول را به ستونهای جدیدشان منتقل میکند، اما قالبهای سلول را منتقل نمیکند یا فرمولها را بهروزرسانی نمیکند. در آزمون ما:
- قالب قیمت
$#,##0.00در ستون C باقی ماند، که اکنون نام محصولات را دارد، در حالی که قیمتها بدون آن به ستون E منتقل شدند؛ - قالب تاریخ در ستون G باقی ماند، ستونی که اکنون مقدار را در خود دارد، بنابراین مقدار ۱۰ به صورت تاریخ نمایش داده شد؛
=C2*D2به ستون K منتقل شد اما هنوز به C2 و D2 اشاره میکرد که اکنون نام محصول و ترجمه آن را در خود دارند، بنابراین دیگر نمیتواند ۴۵ را برگرداند؛- در برگه Summary،
=SUM(Products!F2:F4)اکنون یک ستون ترجمه خالی را جمع میزد.
بنابراین کارپوشه دوزبانه برای خواندن همزمان متن مبدأ و ترجمه است، نه برای محاسبه. آن را ویرایش نکنید یا فرمولها را از آن کپی نگیرید.
نمودارها و ماکروها
در یک نسخه جداگانه از کارپوشه، یک نمودار و یک پروژه ماکرو اضافه کردیم و به همان روشی که Excel ذخیره میکند ذخیره شدند. هیچکدام در فایل ترجمهشده یا دوزبانه نبودند. ExcelJS برگههای کاری، سبکها، متن مشترک، تصاویر، جدولها و نظرات را میخواند و مینویسد و هیچ کدی برای بخشهای نمودار یا پروژه VBA ندارد، بنابراین هنگام ذخیره آنها را حذف میکند. همین کد چیزی برای جدولهای محوری ندارد، پس انتظار داشته باشید جدولهای محوری نیز حذف شوند، هرچند ما یکی را آزمایش نکردیم. این پردازشگر همچنین خروجی خود را به صورت فایل .xlsx ذخیره میکند که نمیتواند ماکرو داشته باشد.
یک محدودیت دیگر آزمایش: ما کارپوشه نمونه را با خود ExcelJS ساختیم، که مساعدترین حالت برای حفظ قالبها، ادغامها و قواعد اعتبارسنجی است. کارپوشهای که توسط Excel ذخیره شده میتواند ویژگیهایی داشته باشد که ExcelJS مدلسازی نمیکند، بنابراین مرحله مقایسه زیر را روی فایل خودتان اجرا کنید و فرض نکنید که نتیجه یکسان و پاکیزه خواهد بود.
مرحله ۲: کارپوشه را قبل از بارگذاری آماده کنید
روی یک کپی کار کنید. بررسیکننده به شما میگوید کدام سلولها را تغییر دهید.
- متن فرمول را به سلولها منتقل کنید. کلمات را در یک برگه کوچک «Labels» قرار دهید و فرمول را به آنها اشاره دهید:
=IF(D2>5,Labels!$A$1,Labels!$A$2). سلولهای برچسب متن ساده هستند، بنابراین ترجمه میشوند و هر فرمول ترجمه را دریافت میکند. این تغییر معمولاً بیشتر شمار «متن فرمول» را برطرف میکند، زیرا یک عبارت یکسان تمایل دارد در کل یک ستون تکرار شود. - فهرستهای کشویی را به سلولها منتقل کنید. در Data > Data Validation، منبع را از یک فهرست تایپشده (
Stationery,Office,Art) به یک محدوده در برگه Labels تغییر دهید (=Labels!$B$1:$B$3). سپس مقادیر فهرست همراه با سلولهایی که از آنها استفاده میکنند ترجمه میشوند. بعداً چند سلول را بررسی کنید: فهرست کشویی فقط مقدار ترجمهشده را میپذیرد اگر مدل «Stationery» را در هر دو جا یکسان ترجمه کرده باشد. - قالببندی مختلط را پاک کنید. سلولی که یک کلمه پررنگ یا رنگی دارد به صورت قطعههای قالببندیشده ذخیره میشود و کاملاً نادیده گرفته میشود. سلول را انتخاب کنید و Home > Clear > Clear Formats را بزنید، یا آن را دوباره تایپ کنید، سپس پررنگ را بعد از ترجمه دوباره اعمال کنید. اگر تعداد زیادی از اینها دارید، ابتدا آنها را یادداشت کنید.
- تصمیم بگیرید با یادداشتها و نظرات چه کنید. آنها ترجمه نمیشوند. یادداشتهای بازبینی را که نمیخواهید به سرویس ترجمه فرستاده شوند حذف کنید و بقیه را دستی ترجمه کنید.
- کارپوشههای ماکرو را به صورت
.xlsxذخیره کنید. فایل.xlsmخود را به عنوان نسخه اصلی نگه دارید. یک کپی.xlsxرا ترجمه کنید، سپس یا ستونهای متن ترجمهشده را به نسخه اصلی کپی کنید (Paste Special > Values، فقط ستونهای متن، تا فرمولها را بازنویسی نکنید) یا ماژولهای VBA را صادر کنید و آنها را به فایل ترجمهشده وارد کنید. - نمودارها را برای بعد بگذارید. یک نمودار متن کمی دارد: یک عنوان، عنوانهای محور و یک راهنما که معمولاً از سلولهای سرستون میآید. اغلب سریعتر است که نمودار را در کارپوشه ترجمهشده از همان محدودهها دوباره بسازید، یا ستونهای متن ترجمهشده را به کارپوشه اصلی برگردانید تا نمودارها و جدولهای محوری آن خودشان بهروز شوند.
مرحله ۳: کل فایل را ترجمه کنید
فایل .xlsx را در صفحه مترجم اسناد بارگذاری کنید، زبان مقصد را انتخاب کنید و قیمت نمایشدادهشده را قبل از پرداخت بررسی کنید. بارگذاری کل فایل همه سلولهای متنی را در هر برگه در یک وظیفه ترجمه میکند، که یکسان نگه داشتن نام محصول در سطر ۳ و سطر ۳۰۰۰ را آسانتر میکند. راهنمای ما برای ساخت واژهنامه ترجمه توضیح میدهد چگونه اصطلاحاتی را که نباید تغییر کنند تثبیت کنید.
وقتی وظیفه تمام شد، صفحه History هر دو دانلود را ارائه میدهد. از کارپوشه ترجمهشده استفاده کنید. کارپوشه دوزبانه را فقط برای بررسی جملهبندی با کسی که هر دو زبان را میخواند باز کنید.
اگر در Google Sheets کار میکنید، دو مسیر دیگر وجود دارد. تب Documents در Google Translate فایلهای .xlsx تا ۱۰ مگابایت را میپذیرد (راهنمای Google Translate)؛ راهنمای ترجمه Google Docs ما گزینههای آن را مقایسه میکند. و Sheets تابع GOOGLETRANSLATE(text, source_language, target_language) دارد (راهنمای Google Docs Editors) که میتوانید آن را در یک ستون جدید کنار متن مبدأ به پایین بکشید. این برای یک ستون از برچسبهای کوتاه راحت است، اما نتایج فرمول هستند، بنابراین قبل از اشتراکگذاری برگه آنها را به صورت مقدار بچسبانید. DeepL نیز اسناد را ترجمه میکند؛ ببینید محدودیتهای اسناد آن در عمل چه معنایی دارند. هر چه استفاده میکنید، ابتدا بررسیکننده را روی مبدأ اجرا کنید: متن داخل فرمولها، پیوندها و نمودارها مهم نیست کدام ابزار فایل را میخواند، در همان جاها قرار دارد.
مرحله ۴: کارپوشه ترجمهشده را بررسی کنید
-
حالت مقایسه را اجرا کنید. فایل مبدأ و ترجمهشده را کنار هم قرار دهید:
python3 check_xlsx_text.py --compare "Price list.xlsx" "Price list (translated).xlsx"بررسی میکند که هر فرمول، عدد و تاریخ بدون تغییر است، کدهای دارای حروف دقیقاً همانطور که بودند برگشتهاند، و هر مقدار فهرست کشویی در فهرست خودش قرار دارد. آن را فقط روی کارپوشه ترجمهشده استفاده کنید. چون فایل دوزبانه ستونها را جابهجا میکند، تقریباً هر سلول گزارش میشود.
-
دوباره محاسبه کنید. اگر فرمولی پس از اصلاح برچسبها هنوز متن قدیمی را نشان میدهد، F9 را بزنید (یا Formulas > Calculate Now).
-
باقیماندهها را ترجمه کنید. از فهرست بررسیکننده از مرحله ۱ استفاده کنید: متن پیوند، یادداشتها، عنوانهای نمودار و هر سلولی که قالببندی آن را پاک کردهاید.
-
به دنبال متنهای بریدهشده باشید. ترجمهها اغلب طولانیتر از متن مبدأ هستند و رشتههای کوتاه بیشترین رشد را دارند. W3C به دستورالعملهای IBM اشاره میکند که میانگین افزایش طول از انگلیسی به زبانهای اروپایی را برای متون تا ۱۰ کاراکتر ۲۰۰ تا ۳۰۰ درصد اعلام کرده است (W3C). سرستونها کوتاه هستند، بنابراین ستونها را پهنتر کنید یا در جاهایی که بریده میشوند، گزینه Wrap Text را فعال کنید.
-
نمایش اعداد و تاریخها را بررسی کنید. مقادیر دستنخورده باقی ماندهاند، اما ممکن است «4.50» برای یک خواننده آلمانی باید به صورت «4,50» نمایش داده شود. این یک قالب سلول یا تنظیم منطقهای است، نه ترجمه.
-
نام توابع را «اصلاح» نکنید. اگر اکسل فرانسویِ همکارتان به جای
SUMعبارتSOMMEرا نشان میدهد، این اکسل است که نامهای محلیشده توابع خودش را نمایش میدهد؛ فرمول همان است. -
برگهها را راستبهچپ تنظیم کنید. برای عربی، عبری، فارسی یا اردو، گزینه Page Layout > Sheet Right-to-Left را فعال کنید و ترازبندی سلولها را بررسی کنید.
-
اگر قرار است به دست مشتری برسد، مانند یک لیست قیمت یا کاتالوگ محصول، یک خواننده مسلط آن را بازبینی کند. ترجمه ماشینی پیشنویس اولیه خوبی است، نه نسخه نهایی.
فایلهای CSV و TSV
یک فایل .csv هیچ فرمول، قالببندی یا لیست کشویی ندارد، بنابراین بیشتر مشکلات بالا از بین میروند. سه چیز متفاوت است:
- سطر سرستون ترجمه نمیشود. برنامهریز سطر اول را به عنوان سرستون در نظر میگیرد و فقط سطرهای داده را ترجمه میکند. سرستونها را دستی ترجمه کنید، یا آنها را قبل از بارگذاری در یک سطر داده کپی کنید و بعداً به جای خود برگردانید.
- یک ستون به صورت یکجا ترجمه میشود. اگر هر سلولی در یک ستون حاوی حرف باشد، هر سلولی در آن ستون که حرف دارد، از جمله کدها، ارسال میشود. حالت مقایسه فقط
.xlsxرا میخواند، بنابراین یک ستون کد CSV را دستی بررسی کنید: آن را از هر دو فایل در یک برگه کپی کنید و دو ستون را با=EXACT(A2,B2)مقایسه کنید. - یک CSV با جداکننده ویرگول برمیگردد. صرفنظر از جداکنندهای که مبدأ استفاده کرده، CSV ترجمهشده از ویرگول استفاده میکند؛ یک فایل
.tsvزبانههای خود را حفظ میکند. در آزمایش ما، یک CSV با جداکننده نقطهویرگول با ویرگول جدا شده بود و ویرگولهای اعشاری مانند «4,50» داخل گیومه حفظ شده بودند. فایل UTF-8 بدون نشانه ترتیب بایت است. مایکروسافت میگوید اکسل یک CSV با کدگذاری UTF-8 را وقتی آن نشانه را داشته باشد به طور عادی باز میکند و در غیر این صورت توصیه میکند آن را با Data > Get Data > From Text/CSV وارد کنید (Microsoft Support). اگر روی فایل دوبار کلیک کردید و حروف دارای اعراب به هم ریخته دیده شد، به جای آن از این روش وارد کردن استفاده کنید.
اگر دادههای شما در یک کتاب کار با فرمولها قرار دارد، فایل .xlsx را ترجمه کنید. صادر کردن به CSV برای ترجمه، همه فرمولها را دور میریزد.
مشکلات رایج
| مشکل | علت احتمالی | اقدام |
|---|---|---|
| یک ستون کامل هنوز میگوید «In stock» | کلمات داخل یک فرمول IF هستند | آنها را به سلولهای برچسب منتقل کنید و فرمول را به آنها ارجاع دهید |
| یک لیست کشویی مقدار ترجمهشده را رد میکند | مقادیر مجاز در قاعده اعتبارسنجی تایپ شدهاند | منبع قاعده را به یک محدوده سلولی تغییر دهید و محدوده را ترجمه کنید |
| یک کد محصول تغییر کرده است | حاوی حروف است، بنابراین به مترجم ارسال شده است | آن را از مبدأ اصلاح کنید؛ حالت مقایسه را روی هر تحویل اجرا کنید |
| یک سلول اصلاً ترجمه نشده است | قالببندی ترکیبی دارد یا یک پیوند است | قالببندی را پاک کنید یا متن پیوند را ویرایش کنید، سپس دوباره ترجمه کنید یا دستی اصلاح کنید |
| نمودار یا ماکروها از بین رفتهاند | کتابخانهای که برای بازنویسی فایل استفاده شده آنها را ذخیره نمیکند | یک کپی .xlsx را ترجمه کنید و متن ترجمهشده را به فایل اصلی برگردانید |
| جمعها در فایل دوزبانه اشتباه هستند | ستونهای اضافهشده مقادیر را جابهجا میکنند اما فرمولها یا قالببندیها را نه | برای هر محاسبهای از کارپوشه ترجمهشده استفاده کنید |
| حروف دارای اعراب در یک CSV ترجمهشده بههمریخته به نظر میرسند | Excel رمزگذاری اشتباهی را حدس زده است | آن را با Data > Get Data > From Text/CSV وارد کنید |
| بارگذاری رد میشود | فایل .xls است یا برای باز شدن به رمز عبور نیاز دارد | آن را بهصورت یک .xlsx معمولی بدون رمز عبور باز شدن ذخیره کنید (محافظت از برگه بهتنهایی اشکالی ندارد) |
همین ایده برای اسلایدها هم صدق میکند: یک ارائه پاورپوینت نیز متن را در جاهایی نگه میدارد که مترجم از آنها میگذرد، و بررسیکننده آن مقاله هم دقیقاً مثل همین یکی کار میکند.
مطالب مرتبط





