I am making android app in which I have to give support of Arabic text to those mobiles in which Arabic is not present.
I successfully did this in widgets(textview, button etc) by adding following code.
I ahve added dejavusans.ttf file in assests folder.
and in code I added
TypeFace typeFace = Typeface.createFromAsset(context.getAssets(), "dejavusans.ttf");
fieldName.setTypeface(typeFace);
fieldName.setText(ArabicUtilities.reshape(resources.getString(R.string.bring_financial_arabic)));
But the problem is with WebView. The text of webView is breaking. I saw different solutions including How to change font face of Webview in Android?. But no one is working fine.
Here is the snapshot.
The title(TextView) is looking fine but the webpage text is breaking.
If anyone know its answer then please help.
Thanks
I found a solution of this problem.
I used the following tool http://www.arabic-keyboard.org/photoshop-arabic/
I pasted my arabic in it and copy the result then I pasted the result in my html file. The result is like this.
Although it is not 100 percent accurate but it is much better than previous one.
U can use adobe indesign for your arabic text and after paste all paragraph text to indesign , you should copy, then paste to photoshop from adobe indesign, every texts will be Okay.
Related
Hello I have a question about arabic formatting how should I properly format this strings, it seems i can't manage this:
تحميل %1$s…
تم تحميل الكلمات. %1$d/%2$d!
This is in sublime text 2 - but i think that there is Left-to-Right order
EDITED:
In Eclipse this copied from Sublime Text gets messed up a little. I hire some person to translate from english to arabic strings.xml. He used Word editor but things get messed up when coping to eclipse and I suggested to changed it in Sublime Text, that I think will support it correctly like in Eclipse and is lighter editor. I see that in Sublime Text seems to be in Left-To-Right order which is also wrong.
* When I run app with this messed up special characters it seems to run correctly. Bu I have doubt whether some interpunction words hasn't also messed up and for example: Item 5/10 has been downloaded. will be Item has been downloaded. 5/10 or something like this.*
Need a preferred way to get someone english written strings.xml, get this translated, and then copied into /values-ar and working correctly?
Try adding a RIGHT-TO-LEFT MARK character (\u200F) at the start of your text.
similar type answered here
That is a sublime issue with Right-to-Left languages as listed here. You dont have to worry too much about it because it does not affect the results, your app will show it perfectly.
"To solve this problem, use the unicodeWrap() method, found in the BidiFormatter class, on every piece of text that you insert into a localized message."
Quoted from here https://developer.android.com/training/basics/supporting-devices/languages.html#FormatText
You have to use Arabic Font like:
Typeface face = Typeface.createFromAsset(this.getAssets(), "fonts/arabic_letters.TTF");
yourTextView = (TextView) findViewById(R.id.yourTextVIew);
yourTextView.setTypeface(face, Typeface.BOLD);
I am developing an application in Android. I want to show Hindi text for EditText, Buttons, textview, webview
and also I need to get data from json parsing and store in Sqlite.
i have checked many sollutions but the following issues arise
Normal words in hindi can be rendered properly like सरल
the problem arises in words like नित्य
also words like प्र
My questions are
1) which ttf file should i use
2) which min sdk should i target
3) will the sqlite database support unicode
4) how to display data in webview it gets all messed up
is there a simple solution than using
TextView t = (TextView ) findViewById(R.id.hindi);
Typeface face=Typeface.createFromAsset(getAssets(),
"fonts/hindi.ttf");
t.setTypeface(face);
t.setText("Hindi font");
everywhere for textview like setting up a common file to call in res folder like we call strings.xml
I found these ttf available on this link
Android Fonts TTF
try give it a go :)
For the second question the minSdk looks like to be API14 from what I read on this link
Android 4.0 APIs
I know, I am bit late here but this is a known bug for android. You may like to see this thread
Let me specify the problem first.
My app is designed for text mainly in Hindi, and I want to target Android OS below 4.1, which doesn't support hindi characters(yes, I've tried various Hindi fonts, which don't work properly, or the desired outcome is not the expected one).
So, I've prepared icons with hindi text, and all works perfectly fine now.
The problem left with is, how can I specify hindi text for the launcher icon?
I've tried to specify hindi text by creating an image with hindi text, and left the application:label ="" and activity:label="" blank.
But the text doesn't appear in where the app name should have appeared, or apparently I didn't create the image correctly.
Any help in this regard would be appreciated :)
I hope you already have tried Krutidev (Hindi Font), if not you can try it.
Though it may late to answer now, but as i read this now, i would like to answer since I did the same in my application in the following way:
1. Just in application tag of your app's manifest, give app name as normal:
android:label="#string/app_name"
2. in resource file strings.xml, add a string 'app_name' with the name your want for your app. Be careful, what i did was: i typed the text using Google transliteration and i gave this in Hindi.
3. Then when you save your strings.xml, it will ask you to save this in proper encoding, then choose 'utf-8', and that's it.
I have done an app to show tamil data on text view to putting elcutni.ttf in android asset folder for that. Then I made a fonts folder by using
Typeface tf = Typeface.createFromAsset(this.getAssets(),"fonts/vigyapti.ttf");
txt.setTypeface(tf);
I am showing tamil data on text view a sample tamil data is taken from random site and store it in the strings.xml file. How can I show data on text view and dialog box of indic fonts? Please help me to make app which contains all indic fonts. Please help me to show indic font data on dialog box and text view.
It seems like you are on the right way, although maybe not the correct font. Have a look at this post to see if it helps:
http://lkalarani.blogspot.com/2011/04/tamil-in-android.html
Also, what is exactly the problem with the code you posted? Do you get an exception? If it's not correctly rendered, have you got any screenshots?
The screenshot below displays my problem.
The first EditText shows a hint in Arabic which is shifted upwards, now the second EditText is just for reference which shows the English version completely fine. Same goes for the Button.
I have declared the string in strings.xml like this:
<string name="ar_login">دخول</string>
This is how I set the EditText's hint:
UserName.setTypeface(ArabicFont);
String hint = getString(R.string.ar_HintUserName);
....
UserName.setHint(hint);
UPDATE:
I used this, but of no use:
UserName.setGravity(Gravity.CENTER_VERTICAL);
But with this, Text moved a little down; but i guess its not generic:
UserName.setPadding(0,15,0,0);
With Padding, English words move to downwards.
UPDATE 2:
Originally arabic texts are separated; means they are shown letter by letter. So to join them, i was using this Arabic Reshaper. To Download Code, Check this link
Now when i reshape the arabic text and then set on TextView or as EditText's Hint, it got shifted upwords but without reshaping it is fine.
So i guess, whether i have to change the reshape class OR make my textview to not split the word. But dont know where to go?
I am still unable to find out why Android splits the arabic words into separate letters anyhow in my second edit I am providing a link which uses a class to rejoin the separated letters and form a word again.
In the reshape function, it was mistakenly appending \n at the end, just removing it solves the problem.
I am sure its problem with the font file which you are using.!
[Sorry I am not allowed to upload the screen shot as my reputations are lower :(]
For the layout, I was setting text in xml, and typeface in code. And I'm not setting any attributes like padding/gravity. But it was working fine for me.
So, I can assure you that using font file whose style matches your requirement will solve your problem.
Just to help you out with, but 'm not sure I got font file from DroidSansFallback.ttf
Just a guess :) ...,
What if the size of the Arabic font is lower? [If this is the case, then Gravity.CENTER_VERTICAL should have worked for you :( ]
May be this is the style of that font file. How about trying a different font file for Arabic text ?