Android Ice cream Sandwich supports Arabic from Google – نظام أندرويد الجديد يدعم العربية بالكامل

Today Google and Samsung revealed the next flagship device and made an official announcement for Google’s next mobile operating system: Android Ice Cream Sandwich. They made the SDK available so I jumped on it to see if it supports Arabic. Check out the gallery at the bottom of this page to see the answer. Hint: It’s a good one.

Edit 11/3/2011: I figured out how to get the keyboard to display correctly. I’ve attached some screenshots of the Arabic keyboard for your viewing pleasures.

اليوم أعلنت شركة قوقل آخر إصدار أندرويد وهو Ice Cream Sandwich 4.0. النسخة الجديدة فيها تغييرات كثيرة وتحديثات في البنية التحتية للنظام. لقد قمت بتنزيل نسخة المطورين من موقع أندرويد للنظر فيما إذا تقوم هذه النسخة بدعم لغتنا العربية. إليكم النتيجة في الأسفل.

تحديث 11/3/2011: لقد تم تحديث الصور بصور فيها نسخة من الكيبورد (لوحة المفاتيح) العربي الجديد من قوقل.

Posted in Uncategorized | 13 Comments

New update v0.813 تحديث جديد

تم اصدار نسخة 0.813 من الباتش اليوم والذي يقوم بتصحيح مشكلة تراقص الحروف في برنامج WhatsApp.
المشكلة رصدت من قبل الأخ uTh في منتدى المطورين فله الشكر على ذلك.

المشكلة تكمن في أن بعض الرسائل العربية في هذا البرنامج (عادةً قادمة من مرتدي أجهزة البلاك بيري) تكون فيها حرف اليونيكود 0x200F. هذا الرمز يسبب تراقص الحروف وهذه النسخة تقوم بتبديل هذا الرمز برمز المسافة 0x0020 والذي يصحح المشكلة.

تغييراتي كالعادة مفتوحة المصدر ولكم مشاهدتها على هذا الموقع.

I’ve just released v0.813 which includes a fix to the “dancing letters” problem in WhatsApp.
uTh has helped to come up with this fix as he found out that the unicode character 0x200F was responsible for this misbehavior. Simply replacing 0x200F with a white space (0×0020) fixed it.

As always, changes are shared with you guys and committed on my github account.

You can grab the patch from HERE.

Posted in arabic shaping, العربية | 12 Comments

New universal patcher v0.810 تحديث ونسخة جديدة

Hello everyone. Me again !

I have just finished updating my universal patcher to v0.810 which brings one new big feature to the table: shaping libwebcore.so from any ROM -well, hopefully-.

This work was taken from a genius that I’ve met a couple of weeks ago that goes by the name brightidea. He has successfully integrated Arabic shaping by modifying the binary file itself. In other words, without recompiling the sources or waiting for them to be released by the manufacturer.
He has contributed by first giving us the libwebcore.so file for the Android 2.3.4 ROMs for the Samsung Galaxy S2 and has now carried on to bring us a universal patcher that should work with any non-arabized libwebcore.so file.

His work and thread can be traced here: Link

In the spirit of openness, I have also upped his source code for this great utility at my github account. Thank you, brightidea, for sharing this code with us.

v0.810 also reworks the folder structure of the patcher. So now we have input and output only instead of the old complex structure. This version also brings the latest smali and baksmali tools for decompiling framework.jar.

Enjoy it while it lasts

Update 8/22: v0.810 broke the decompiling process because of the baksmali upgrade to 1.2.7. JesusFreke helped me fix it so please grab v0.811 instead.

Posted in arabic shaping | 3 Comments

New framework patcher v0.804 تحديث جديد


لقد تم انزال باتش جديد بنسخة .804 والتي تقوم بتصحيح انقلاب الأرقام عندما تكون في بداية سطر جديد وفي السطر أحرف عربية.

عليك بإنزال النسخة من هنا

It’s been a while since I’ve touched my framework patcher files given how successful it was with various devices.

Today I’ve patched up the number reversing issue that was prevalent when the numbers are at the beginning of a new line and the line contains RTL text. The fix was easier than I previously imagined so it was quick and required modifications only to one file: StaticLayout.java
I’ve taken the fix from the CyanogenMod 7 open sources so props to them for fixing it.

As always, the sources are out there on my github account and the exact commit for this update is HERE.

You can grab the patch from HERE.

Posted in arabic shaping | 2 Comments

Updated patch

I’ve just released 0.802 of the patch which uses the latest CM7 RTL fixes. The fixes include alignment and text width modifications. You can see my changes here: Github 1 and here Github 2

Some users were having problems with incomplete titles in Gmail. That was caused by not having an AOSP build of the TextUtils.smali file in these ROMs. I had a problem myself using my patch on the Galaxy S JVH ROM.

This new patch separates added methods from TextUtils.java that the CM7 team have added into a new class under android/text/util/RTLTextUtils. That way, we don’t need to replace this file from Stock and hopefully won’t have any disappearing titles in Gmail anymore.

Because of this new modification, the gingerbread patch should also work flawlessly on Froyo AOSP builds now (you get some updated tidbits from the modified files as a bonus).

Posted in arabic shaping, English | 3 Comments

New library and patch added to github

CyanogenMod 7 has introduced a new arabic patch in its latest nightly that uses JNI calls to speed up the shaping process (by Eyad Aboulouz: Ref). I have tested it on my device and it seems to do a decent job and it doesn’t break Hebrew RTL like my previous arabic patch did. The only problem it had was that it relied on modified JNI calls that change libandroid_runtime.so in each device in two ways:
(1) injects this new arabic shaping method
(2) renames the JNI call drawText to native_drawText so that it could intercept texts going to the public API drawText() in Canvas.

For (1) I have created a new icu4c library that exposes these arabic shaping methods. This library should be portable across devices which means we won’t have to recompile libandroid_runtime.so for each device separately. My work can be seen at:
https://github.com/madmack/pla…

As for (2), the guys responsible for the Hebrew patch have produced a hex editor tool that can rename the function without having to recompile libandroid_runtime.so. This utility is called LibPatcher.exe and it simply takes your compiled libandroid_runtime.so and produces a fixed one with the correct naming scheme.

Given that these two things are taken care, we have Gingerbread AOSP patched correctly:
https://github.com/madmack/platform_frameworks_base/compare/arabic_gb_patch

While this should be backward compatible with Froyo AOSP builds, I was having a problem in Gmail’s title’s: a “Rejected.” string was appended to the end of each title. It seems that the Gmail app in Froyo is expecting a certain text to be returned and its not, but I couldn’t find the problem so far specially given how close the Froyo AOSP sources are to Gingerbread in these patched files.(update 4/13/2011) This has been fixed. Problem was with TextUtils.java. Simply recompiling my patch in Froyo’s AOSP build and cherry-picking TextUtils’ additions fixed it. My latest patch 0.800 should work with Froyo builds and Gingerbread now.

The other problem we have is with Sense UI in HTC’s new Gingerbread builds. HTC decided to modify Layout.java (in framework/base/core/java/android/text/) and this breaks the patch if replaced with AOSP’s compiled patched files. I fixed this tiny problem by applying the Hebrew java patch to Layout.smali.

So far the new patch basically applies to all Gingerbread ROMs except the ones based on Sense UI.

While this patch is speedy and takes care of the space after LAMALEF, it still has some spacing issues when typing text and its missing visual-to-logical functions to make the cursor fall exactly where the text appears for the user. For example, typing a sentence in arabic and then going back to modify somewhere in the middle will place your newly typed letters in unexpected positions in the sentence instead of it being exactly where the cursor is. So make sure you get the strings typed correctly on first shot ;)

As always, my work is staying open sourced, so there you have it for those who are interested.

Posted in arabic shaping, English | 4 Comments

طلبات تعريب المتصفح والجيميل Taking requests for webcore shaping


ما هو تعريب libwebcore.so ؟

تعريب هذا الملف يمّكنك من مشاهدة المواقع والكلمات العربية في المتصفح وبرنامج الجيميل.

لمشاهدة الملفات المعربة حالياً، اذهب هنا

هنا نأخذ طلبات تعريب libwebcore.so لأجهزتكم الخاصة. إذا كان هناك طلب كبير فإن شاء الله ندرج التعريب في هذا الموقع. فقط اكتب طلبك في في التعليقات وإن شاء الله نتكفّل بتعريبه
يجب عليكم أيضاً إدراج أي نسخة من أندرويد متواجدة في الهاتف ويفضل أيضاً معرفة نسخة الروم بشكل خاص.

الرومات التي لا استطيع تعريبها حالياً لعدم توافر المصدر

  • Sense UI Gingerbread
  • MIUI

ملاحظة: لا يمكننا تعريب متصفح رومات MIUI وذلك لأن المصدر مغلق من قبل المطورين الصينيين


تحديث 14/4/2011: بعض الإخوان طلبوا شرح كيفية تعريب المتصفح. الباتش المستخدم هو من هذا المصدر. بعد رفع تعديلات الشركات لwebcore، تقوم بعمل الباتش ومن ثم recompile على أجهزة linux.

تحديث بتاريخ 16/8/2011: لقد تم اغلاق هذه الصفحة ومنع الطلبات في الوقت الراهن لإني قد توصلت مع أخي brightidea لحل أفضل وسيكون تعريب المتصفح متوافر مع framework في صفحة “طريقة التعريب”.


What is libwebcore.so and why arabize it ?

libwebcore.so is responsible for shaping arabic text in the Browser and Gmail apps. My work on framework will arabize everything else for you.

for a list of completed patched cores, click Here

If you’re interested in getting this file arabized, please post your request in the comments section. Make sure you mention which Android version is on the device and what ROM specifically is it based on (CM, Sense UI, AOSP). If the device/rom combo is popular enough, I’ll try to put it up on this website for you to download.

Current roms that I cannot patch due to sources not being out yet

  • Sense UI Gingerbread
  • MIUI

Update 14/4/2011: Some folks are asking about the method of arabizing libwebcore. I’m applying this patch. You’ll need to override android’s sources with the device’s specific webkit (e.g. HTC’s Hero webkit, Samsung Galaxy’s webkit) and then apply the patch and recompile.


Update 16/8/2011: I have disabled the comments section on this page because a genius by the name of brightidea has found a global solution for arabizing libwebcore.so. This means we won’t have to recompile source code anymore and his utility should be able to patch non-arabized libwebcore.so files from the manufacturer. Go to “apply the patch” page for details on how to get these files in correct RTL format.

Posted in arabic shaping, English, العربية | 211 Comments

Arabic for Gingerbread ROMs

Some more progress and updates . . .

I have just successfully compiled and tested the arabic patch on AOSP 2.3.3. My old patch for 2.2 AOSP worked for all the files except TextUtils.java which Google added a new method to. Replacing it with CM7′s TextUtils.java file, which is based on Gingerbread, fixed that error.

HTC’s implementation of Gingerbread broke another file, Layout.java which they added a couple of new methods to. The fix was to manually edit HTC’s Layout.smali file and replace the strings getChars (3x occurrences) with getCharsDraw manually. A proper fix would be to include a utility that searches and replaces for these strings. This will guarantee functionality across all devices that sport Eclair and higher versions of Android.

Edit: HTC’s Gingerbread Sense UI also modified internal class CharWrapper in TextView.java. A small modification to the smali file in method “access”‘s signature fixed it.

Posted in arabic shaping, English | 4 Comments

Arabic Shaping for Android 2.2 and 2.2.1

I have made a patch that should work on deodexed Android 2.2 and 2.2.1 devices to support shaping arabic in framework.jar

Please use the links to the right for more details on how to apply them.

Most available patches are either not open sourced or are device specific. I attempt to make a global solution to our problem by providing a patching tool that should apply to any ROM by replacing the specific patched files. This should hopefully not break device specific implementations such as TouchWiz from Samsung, Sense UI from HTC or Motoblur from Motorola.

I have been following work for Y6b and dudyk over at github. Unfortunately both of their work was made for Cyanogenmod and not for AOSP. They also do change code in the JNI implementation which further makes this harder to port to several devices. I changed their code slightly to not require these modified JNI implementations and to have an independent framework.jar that will be easy to port.

Most of my code on github is composed of y6b’s and dudyk’s (see source code page for details). Namely I used y6b’s implementation for the shaping by importing the ICU4J library, and dudyk’s RTL alignments.

Again, all details should be on the two pages linked on the right panel.

Posted in arabic shaping, English | 6 Comments

طريقة تعريب أندرويد بنظام 2.2 و 2.2.1


بسم الله الرحمن الرحيم

في هذا الموقع يتم ادراج تحديثات framework.jar والتي تقوم بشبك الحروف العربية في أنظمة أندرويد.

للمزيد من التفاصيل، يرجى زيارة الصفحة التالية
طريقة التعريب

بإذن الله سأضع آخر التحديثات في تلك الصفحة أعلاه.

يرجى ترك تعليقاتكم في هذه الصفحة، وانشالله سأقوم بالتحديث عند علمي بالمشاكل

Posted in arabic shaping, العربية | 25 Comments