Reconstruct Persian sentences in Godot engine.
This plugin works with Godot engine v3.x.
Godot engine don't support right to left language like Persian (Farsi). This problem is solve in Godot engine 4.
The first problem is that text written left to right and characters are isolated form.
For solve this problem, First need reverse letters to right to left.
Then need to reshape characters.
Another problem is line order for multi-line text. the lines written bottom to top.
This problem solves with reverse lines order.
Download this repo and copy "addons" folder to your project root directory.
Then go to Project > Project Settings... > Plugins and enable "Persian Reshaper" plugin.
Plugin GUI added to the top of Godot engine panel.
This code don't work on RichTextLabel good.
Don't choose Autowrap in Label Properties.
Add a Label node, then go to the inspector and change
- Align to Right
- Grow Direction > Horizontal to Begin
You could use GUI in plugin panel.
Call Label like this in Label script:
var txt := "پارسی شکر است."
$Label.text = Persian.reshaper(txt)
If you want enable Autowrap for Multi-line text, Add the second parameter numerically, That is line length.
Line length is all characters (letter, number, space) that are in a line.
$Label.text = Persian.reshaper(txt, 36)
P.S. I am beginner in coding. Take it easy. :))
این افزونه با گودو انجین 3.x کار میکند.
گودو انجین از زبانهای راست به چپ مانند پارسی پشتیبانی نمیکند. این مشکل در گودو انجین نسخه ۴ حل شده است.
مشکل اول نوشتن کاراکترها از چپ به راست و در حالت ایزوله است.
برای حل این مشکل لازم است تا کاراکترها بصورت راست به چپ معکوس شوند.
بعد لازم است که کاراکترها به شکل درست بازنویسی شود.
مشکل دیگر ترتیب قرار گیری خطوط در زمانی است که حالت wrap برای متن انتخاب میشود. در این حالت خطها از پایین به بالا نمایش داده میشوند.
برای حل این مشکل باید ترتیب خطها را معکوس کنیم.
برای نصب افزونه این رپوزیتوری را دانلود کنید و فولدر «addons» را در مسیر اصلی پروژه خود کپی کنید.
سپس به مسیر Project > Project Settings... > Plugins بروید و پلاگین «Persian Reshaper» فعال کنید
پانل گرافیکی افزونه در بالای پنجره گودو انجین قرار میگیرد.
این کد در RichTextLabel به خوبی کار نمیکند.
برای نود لیبل از Autowrap استفاده نکنید.
یک نود لیبل اضافه کنید، سپس در تنظیمات لیبل موارد زیر را تغییر دهید
- گزینه Align به Right
- گزینه Grow Direction > Horizontal به Begin
شما میتوانید از رابط گرافیکی در پانل افزونه استفاده کنید.
لیبل را در اسکریپتاش به این شکل صدا بزنید
var txt := "پارسی شکر است."
$Label.text = Persian.reshaper(txt)
اگر میخواهید حالت Autowrap برای متن شما فعال شود، پارامتر دوم را به شکل عددی وارد کنید. این عدد طول خط شما است.
طول خط شامل همه کاراکترهایی (حرف، عدد، فاصله) است که در یک خط قرار میگیرند.
$Label.text = Persian.reshaper(txt, 36)