-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix again: translation keywords #6
fix again: translation keywords #6
Conversation
سلام ممنون. دقیقا مشکلم برای drop کردن سر force بود که نمیدونستم و بعد که دیلیت کردم فهمیدم که من پوش معمولی رو میزدم و این مورد باید فورس باشه. |
Congratulation @alisalehi1380 🌟 دوس ندارم کشش بدم ولی بگم که الان که |
اره من دیشب حواسم به اون نبود. این اوکیه. فقط حواست باشه که باید فقط قسمتی از کد رو که میخوای تغییر بدی، تغییر بدی. نه کل سورس کد رو! الان توی اون لاین های بین توابع، فاصله ها رو حذف کردی. ولی در کل اوکیه. private function translateRecursive($content, $google): array
{
$trans_data = [];
foreach ($content as $key => $value) {
if (is_array($value)) {
$trans_data[$key] = $this->translateRecursive($value, $google);
continue;
}
$hasProps = str_contains($value, ':');
$modifiedValue = $hasProps
? preg_replace_callback(
'/(:\w+)/',
fn($match) => '{' . $match[0] . '}',
$value
)
: $value;
$translatedValue = $google->translate($modifiedValue);
$trans_data[$key] = $hasProps
? str_replace(['{', '}'], '', $translatedValue)
: $translatedValue;
}
return $trans_data;
} |
https://vuejs.org/guide/components/props.html م props در Vue به این معنا ست که کامپوننتی برای اجرای صحیح ش نیاز به یک سری دیتا داره. اگر میخوای از اون استفاده کنی باید حتما اون دیتا رو بهش پاس بدی. بعدا لاراول هم از این فیچر الهام گرفت و در template engin Blade اون رو آورد. و به طور کلی وقتی یه دیتایی رو برای کارکرد صحیح یک قسمت به سمت ش ارسال میکنی، ( مثل همین جا > فقط این مورد رو نمیدونم که بعدش ریپو فورک شده رو دیلیت کنم یا نه... وقتی ریپو یی رو fork کردی اون ریپو دیگه برای خودت هست. هر کاری میتونی بکنی توش. |
ممنون بابت توضیحات 🙌 |
ca75cf8
to
4fe94ef
Compare
a01b7ed
to
e52f481
Compare
انجام شد. 🚀 |
عزیزین. منم همین طور. ❤️ انشالله که تو پروژه های بزرگ تر سعادت همکاری با شما رو داشته باشیم. ✌️ |
انشاءالله ✨ |
Hi Again 😁
سلام مهندس @alisalehi1380 ، لطف دارید، من تا مهندس شدن راه زیاد دارم...
از توجهتون ممنونم. ✨
من نمیخواستم توی کدهاتون خیلی دست ببرم و برای همین فقط بخش مد نظر رو تغییر دادم. ولی اینطور که شما گفتید بهتره. 🚀
با drop کامیت ها مشکل داشتم، چون بعد از حذف میگفت از repo عقب تری و عجله کردم برنچ رو پاک کردم...
برم سر اصل مطلب
تنها بخشی که یه مقدار مورد بحث هست به نظرم کد:
هستش که دلیلشو بگم چرا نوشتم و بعد شما راهنماییم کنید.
فکر میکنم که تابع
preg_replace
کل حروف رشته رو مورد برسی قرار میده تا رشته هایی که مطابق باregex
هستند رو پیدا کنه. توی فایل هایی که باید ترجمه بشن پیام های زیادی هستند که شامل کلمه ی کلیدی نیستند، و اگر ما همه رو مستقیما بهpreg_replace
بدیم ، پیام های زیادی بدون اینکه شامل کلمه کلیدی باشن تمام کاراکترهاشون مورد برسی قرار میگیرن.هرچند که
str_contains
هم رشته رو پیمایش میکنه ولی تا زمانی که اولین:
رو پیدا کنه و پیچیدگی کمتری داره و برسی regex پیچیده تر از برسی برابری کاراکترهاست.اینجا شاید بهتر گفته باشه:
In general, it tends to be slower and more resource-intensive than str_contains because it involves compiling and executing a regular expression engine, which can lead to higher time complexity, often O(nm) or worse, where n is the length of the string and m is the length of the pattern
source
more...
البته اینکه برای متن بالا تابع
preg_match
رو برسی کردم بخاطر اینه کهpreg_replace
ابتدا عملیاتی مشابهpreg_match
انجام میده و فقط بعد از این که پیدا شدند میاد و match ها رو عوض میکنه.بخاطر این موضوع به نظرم برسی وجود اینکه اصلا کلمه ای هست و بعد اقدام به استخراج کردن بهتر اومد ولی سر و ته قضیه چیزی نمیشه و خب هرطور شما صلاح بدونید.
هرموقع نظرتونو بفرماید من اطاعت میکنم و کامیت میکنم. 🎈