آی پی امداد
آی پی امداد
آریا الکترونیک parcham تکشو

سوال: ترجمه فایل هایی با پسوند php. به صورت دسته جمعی

mehran76gh

VIP+ افتخاری
کاربر
2016-06-17
1,537
7,064
IRANTK
در اکثر اسکریپ ها با زبان اصلی (English) برای ترجمه و تبدیل متون اسکریپ در قسمت کنترل پنل و صفحه اصلی به زبان دیگر یا زبان فارسی نیاز به ترجمه فایل هایی است که کلمات محتوا اسکریپت در آن قرار گرفته , اما ترجمه کلمه به کلمه و گوگلی هم زمان زیادی میبرد و هم ترجمه درستی از آب در نمیاد .
بنابر این نرم افزار
Poedit قادر به ترجمه حرفه ای این گونه از ترجمه هایی است که پسوند فایل آن ها .po و .mo باشد .
اما متاسفانه بعضی اسکریپ هایی هم نیز وجود دارند که محتوای متنی آن ها در فایل هایی با پسوند
.php است که نرم افزار Poedit قادر به ترجمه آن نیست.
بنابر این ناچار هستیم که کلمه به کلمه ترجمه کنیم و این واقعا زمان بر است.
سوال من این هست آیا راه حلی برای ترجمه گروهی به شکلی که نرم افزار
Poedit انجام میده وجود داره یا خیر .
ممنون میشم راهنمایی بفرمایید.
تشکر



screenshot_20190127_133615.png
 
آخرین ویرایش:
  • Like
واکنش‌ها[ی پسندها]: abady

nekooee

Senior Technical Supervisor
مدیرکل
معاونت انجمن
2007-09-21
6,774
29,824
ایران
سلام
خب شما وقتی یک فایل رو بدید بگین ترجمه کنه نرم افزار میاد همه متن رو ترجمه میکنه نمیفهمه که شما دقیقا کدوم عبارت ها رو نیاز دارید ترجمه کنه. میاد حتی کد های صفحه رو هم ترجمه میکنه. شما در نرم افزار poeditor فقط قسمت های دلخواه رو ترجمه می کنی؟ یعنی میفهمه خودش که کجا رو باید ترجمه کنه و کجا رو ترجمه نکنه؟
 

mehran76gh

VIP+ افتخاری
کاربر
2016-06-17
1,537
7,064
IRANTK
سلام
خب شما وقتی یک فایل رو بدید بگین ترجمه کنه نرم افزار میاد همه متن رو ترجمه میکنه نمیفهمه که شما دقیقا کدوم عبارت ها رو نیاز دارید ترجمه کنه. میاد حتی کد های صفحه رو هم ترجمه میکنه. شما در نرم افزار poeditor فقط قسمت های دلخواه رو ترجمه می کنی؟ یعنی میفهمه خودش که کجا رو باید ترجمه کنه و کجا رو ترجمه نکنه؟

خب شما وقتی یک فایل رو بدید بگین ترجمه کنه نرم افزار میاد همه متن رو ترجمه میکنه نمیفهمه که شما دقیقا کدوم عبارت ها رو نیاز دارید ترجمه کنه. میاد حتی کد های صفحه رو هم ترجمه میکنه.

احسنت دقیقا همین طوره .

شما در نرم افزار poeditor فقط قسمت های دلخواه رو ترجمه می کنی؟

خیر خود نرم افزار شناسایی و باتوجه به کتابخانه ای که داره و همچنین فایل های ترجمه ای که در نرم افزار باز میشود ترجمه وبی نه گوگلی را انجام میدهد و همچنین درصد استفاده شده ترجمه آن کلمه را نشان میدهد که ۶۰ درصد از این ترجمه استفاده شده است و همچنین امکان تغییر ترجمه هم وجود دارد.

یعنی میفهمه خودش که کجا رو باید ترجمه کنه و کجا رو ترجمه نکنه؟

دقیقا همین طوره!

برای اینکه بهتر متوجه شوید به عکس های زیر توجه بفرمایید.
فایل با پسوند .PO در اسکریپت وردپرس
screenshot_20190204_152726.png

محتوای فایل .PO که پیوست کردم

screenshot_20190204_152706.png
ترجمه همین فایل که در نت پد باز کردم توسط نرم افزار Pedite
screenshot_20190204_152806.png


من به پشتیبانی نرم افزار پیام دادم اما چون نرم افزار رو نخریده بودم پشتیبانی ندادند اما خوش برخوردی آن مسئول کمی راهنمایی کرد و آدرس سایتی داد که از طریق کد های php با اضافه کردن شورت کد این کار انجام می شد اما چون من php بلد نیستم متوجه نشدمtear
 
  • Like
واکنش‌ها[ی پسندها]: abady

nekooee

Senior Technical Supervisor
مدیرکل
معاونت انجمن
2007-09-21
6,774
29,824
ایران
ببینید من الان دارم نگاه می کنم در متن po دقیقا داره فقط مقابل مقادیر msgstr رو ترجمه میکنه. یعنی میدونه که هر چی عبارت مقابل این متغیر قرار داره باید ترجمه بشه. طبیعتا میاد فقط همون قسمت رو ترجمه میکنه.
اما php نا محدود هست یعنی ممکنه هر متغیری نیاز به ترجمه داشته باشه! بنابر این اگر کسی بیاد مترجم براش بنویسیه فقط میتونه برای خودش بنویسه یا برای یک اسکریپت خاصی که قوانین ترجمه اون مشخص هست. ولی اگر من مثلا در فایلم عبارت هایی که باید ترجمه بشه رو به شکل دیگری یا با متغیر دیگری نوشته باشم اون دیگه از کجا بفهمه چی رو باید ترجمه کنه؟

پس این کاملا بستگی به اسکریپت شما داره.
شما زمانی هم خودت میتونی با php ترجمه رو انجام بدی که تمام عبارت هایی که نیاز به ترجمه دارند یک الگو داشته باشند. مثلا هر جا به یک شکل متفاوت نباشه. در غیر اینصورت خودتم نمیتونی براش برنامه ای بنویسید!
الآن اگر بیای مثل po همه متغیرهات رو به همین شکل (روبروی msgstr) بنویسی و پسوندش رو خودت از php تغییر بدی به po، احتمالا poeditor این ترجمه رو انجام میده برات بعدا باز متغیرهات رو تو نرم افزار خودت به هر شکلی که میخوای بنویس.

ولی دیگه چه کاری هست شما بیا کل عبارت هات رو تو گوگل ترانسلیت یکدفعه ترجمه کنه بعد هر کدوم رو هر جا میخوای بزار!
 

mehran76gh

VIP+ افتخاری
کاربر
2016-06-17
1,537
7,064
IRANTK
ببینید من الان دارم نگاه می کنم در متن po دقیقا داره فقط مقابل مقادیر msgstr رو ترجمه میکنه. یعنی میدونه که هر چی عبارت مقابل این متغیر قرار داره باید ترجمه بشه. طبیعتا میاد فقط همون قسمت رو ترجمه میکنه.
اما php نا محدود هست یعنی ممکنه هر متغیری نیاز به ترجمه داشته باشه! بنابر این اگر کسی بیاد مترجم براش بنویسیه فقط میتونه برای خودش بنویسه یا برای یک اسکریپت خاصی که قوانین ترجمه اون مشخص هست. ولی اگر من مثلا در فایلم عبارت هایی که باید ترجمه بشه رو به شکل دیگری یا با متغیر دیگری نوشته باشم اون دیگه از کجا بفهمه چی رو باید ترجمه کنه؟

پس این کاملا بستگی به اسکریپت شما داره.
شما زمانی هم خودت میتونی با php ترجمه رو انجام بدی که تمام عبارت هایی که نیاز به ترجمه دارند یک الگو داشته باشند. مثلا هر جا به یک شکل متفاوت نباشه. در غیر اینصورت خودتم نمیتونی براش برنامه ای بنویسید!
الآن اگر بیای مثل po همه متغیرهات رو به همین شکل (روبروی msgstr) بنویسی و پسوندش رو خودت از php تغییر بدی به po، احتمالا poeditor این ترجمه رو انجام میده برات بعدا باز متغیرهات رو تو نرم افزار خودت به هر شکلی که میخوای بنویس.

ولی دیگه چه کاری هست شما بیا کل عبارت هات رو تو گوگل ترانسلیت یکدفعه ترجمه کنه بعد هر کدوم رو هر جا میخوای بزار!

بله حرف شما کاملا درست و مورد قبول بنده هست و من دنبال راه راحتی به جز ترجمه تک به تک و خصوصا گوگلی بود که نرم افزار poedit برای اسکریپت وردپرس ساخته شده اما قابلیت ترجمه فایل هایی که ساختار وردپرس را ندارند هم هست اما راه و روش آن محفوظ و یا مخصوص کسانی هست که نرم افزار را خریداری کرده اند به دلیل اینکه در سایتی مطالعه کردم که توضیحات داده بود با اضافه کردن کد php در قسمتی از کد ترجمه را انجام داد نه به این شکل کد شورت کدی برای ترجمه هر کلمه قرار بدهیم که همان عمل هم زمان بر باشد.
۰۰۰۰۰۰۰۰۰۰۰۰۰۰
این مورد را تست نکردم که فایل اسکریپت وردپرس به زبان اصلی از سایت اصلی فایلی با پسوند .po را دارد یا خیر
 

nekooee

Senior Technical Supervisor
مدیرکل
معاونت انجمن
2007-09-21
6,774
29,824
ایران
سلام
فکر کنم نتونستم منظورم رو درست برسونم. ببینید این فایل po که وردپرس داره یک ساختار مشخص داره. و فقط به همین دلیل امکان ترجمش وجود داره. در واقع پسوندش اصلا مهم نیست و ساختارش مهم هست. اما خیلی از اسکریپت ها فایل ترجمه مستقل با ساختار مشخص ندارند. اگ رداشته باشند به راحتی میشه همین کار رو براشون کرد.
مثلا در لاراول شما روش های مختلفی برای زبان دارید. یکی از راه ها این هست که در فایلی به اسم lang.php دقیقا مثل همین po وردپرس شما میتونید سمت چپ مقدار متغیر و سمت راست مقدار ترجمه رو بنوسید و به دلیل داشتن ساختار مشخص میشه مترجم براش ساخت یا حتی با یک تغییر کوچک با همون poeditor یکدفعه ترجمش کرد.

اما شما یک فایل php که ساختار نداره رو هرگز نمی تونید با هیچ نرم افزاری اینجوری ترجمه کنید و هیچ نسخه پولی poeditor هم نمیتونه اینکار رو بکنه چون ساختار مشخصی نداره و مشخص نیست کجاش ترجمه هست و کجاش کد و ...

این رو مطمئن باشید.
اگر نرم افزار خاصی هست که فایل ترجمه جدا از فایل های اصلی داره و ساختار مشخصی داره می تونید ساختارش رو با کدنویسی با یک کلید تبدیل کنید به po با poeditor ترجمش کنید و دوباره برش گردونید به ساختار قبل
 

mehran76gh

VIP+ افتخاری
کاربر
2016-06-17
1,537
7,064
IRANTK
اگر نرم افزار خاصی هست که فایل ترجمه جدا از فایل های اصلی داره و ساختار مشخصی داره می تونید ساختارش رو با کدنویسی با یک کلید تبدیل کنید به po با poeditor ترجمش کنید و دوباره برش گردونید به ساختار قبل

جناب نکویی متوجه نشدم امکانش هست مثال بزنید و یا بیشتر راهنمایی بفرمایید.
 

nekooee

Senior Technical Supervisor
مدیرکل
معاونت انجمن
2007-09-21
6,774
29,824
ایران
فایل po یک فایل معمولی و متنی هست که ساختار مشخصی دارد و پسوند آن فقط برای جدا کردن آن از سایر فایلهاست. شما فرض کنید یک فایل دارید که ساختار مشخصی داره ولی با po متفاوت هست مثلا این شکل:
/***********************************
 ** sample translate array
 **********************************/
return [
    'welcome' => 'Welcome to our application',
    'signIn' => 'click here to sign in',
    'singOut' => 'thank you for use my site'
];


خب شما می تونید خودتون یک کد بنویسید که بگین هر چی string بعد از => ' هست تا رسیدن به اولین ' بعدی بردار و مثل فایل po بذارید تو ساختار خودتون و بعد با پسوند po ذخیرش کنید. حالا دوباره بعد از ترجمه بگین به همین شکل ولی برعکس بیاره تو ساختار قبل.
زمانی ارزش داره اینقدر بشینید کد بنویسید که این کار زمان کمتری از شما بگیره و بخواین دائم ازش استفاده کنید. ولی برای 20 خط ترجمه ارزش کدنویسی نداره
فقط میخواستم بهتون نشون بدم شدنی هست.
حتی به جای اینکه ببریدش به این سختار میتونید بگید هر چی string بعد از => ' هست تا رسیدن به اولین ' بعدی رو بردار برو تو گوگل ترجمش رو بگیر بیا بذار سر جاش. اینجوری نیازی به poeditor هم نیست. google خودش برای ترجمه api داره و میشه تا یک حدی ترجمه رو ازش گرفت از اون مقدار بیشتر بشه پولی میشه.
سایت های دیگری هم هستند که برای ترجمه Api میدند.
 

mehran76gh

VIP+ افتخاری
کاربر
2016-06-17
1,537
7,064
IRANTK
فایل po یک فایل معمولی و متنی هست که ساختار مشخصی دارد و پسوند آن فقط برای جدا کردن آن از سایر فایلهاست. شما فرض کنید یک فایل دارید که ساختار مشخصی داره ولی با po متفاوت هست مثلا این شکل:

<?php
return [
    'welcome' => 'Welcome to our application',
    'signIn' => 'click here to sign in',
    'singOut' => 'thank you for use my site'
];?>


خب شما می تونید خودتون یک کد بنویسید که بگین هر چی string بعد از => ' هست تا رسیدن به اولین ' بعدی بردار و مثل فایل po بذارید تو ساختار خودتون و بعد با پسوند po ذخیرش کنید. حالا دوباره بعد از ترجمه بگین به همین شکل ولی برعکس بیاره تو ساختار قبل.
زمانی ارزش داره اینقدر بشینید کد بنویسید که این کار زمان کمتری از شما بگیره و بخواین دائم ازش استفاده کنید. ولی برای 20 خط ترجمه ارزش کدنویسی نداره
فقط میخواستم بهتون نشون بدم شدنی هست.
حتی به جای اینکه ببریدش به این سختار میتونید بگید هر چی string بعد از => ' هست تا رسیدن به اولین ' بعدیرو بردار برو تو گوگل ترجمش رو بگیر بیا بذار سر جاش. اینجوری نیازی به poeditor هم نیست. google خودش برای ترجمه api داره و میشه تا یک حدی ترجمه رو ازش گرفت از اون مقدار بیشتر بشه پولی میشه.
سایت های دیگری هم هستند که برای ترجمه Api میدند.
خیلی خوب توضیح دادید کاملا متوجه شدم و چقدر زبان php دست آدم رو باز میکنه که هر کاری رو انجام بده و محدود نیست.
و باتوجه به گفته شما این روش موثر و قابل انجام هست اما زمانی ارزش دارد که یک بار برای اسکریپت ایجاد شود و برای نسخه های آپدیت و همچنین ترجمه به زبان های دیگر به راحتی قابل انجام باشد اما صرفا برای یک اسکریپت عملا همان زمانی رو میگیرد که تک به تک و یا کلمه به کلمه متن را ترجمه کنیم و فایده ندارد.
سپاس
 
  • Like
واکنش‌ها[ی پسندها]: nekooee
بالا