I often read such messages. But what is the reason of the replacement? I only know that a space bar cannot be at the end of a string because it will be ignored and you will get the string without the space bar.
<string name="lorem">Lorem and a space bar </string>
But what about everything else? I don't see any visual difference between
<string name="loading">Loading…</string>
and
<string name="loading">Loading...</string>
have a look at this answer. This is just to use less characters if possible and there is no point making three dots if the appropriate character is available for this. It's good to use Unicode value in this case. You can also tell Lint to ignore this if you with.
Android Replace "..." with ellipsis character
Related
I want to format time like 5h45'12" but I'd like to make the 'h' top index in TextView. Is there easy way to do that without making several TextViews for each part of the time?
You can try to copy this character and use it: ʰ
It's a superscript h. So it will look like:
5ʰ45'12"
I'm not sure if this is what you like, and also not sure if it will work on Android but you can try.
As documented here: https://developer.android.com/guide/topics/resources/localization#mark-message-parts
To mark text that should not be translated, use an
placeholder tag. Here is an example tag that ensures the text "%1$s"
isn't changed during translation (otherwise it could break the
message):
I'm bit confused here. Since with the Translation Editor I always need to explicitly put the translation for every key. So I'm not getting what it means - tag that ensures the text isn't changed during translation
Could someone please help me understand?
If a developer works with translators they could translate some text the developer doesn't intend it to be translated, there comes the need for xliff tag.
Indeed, this is a localization specification. This comes handy when there are items like brand/product names (or even URLs, time stamps, date formats, currency formats, etc.) in the source text which should not be modified by any means in the target text. Here is an example:
Please use %s by the end of %d. You can find more details under chapter %d%.
If the translator (or their reviewer) omits, misplaces, or changes one of these placeholders, the localized text will be wrong. Please note that these placeholders are not random, so their relative position matters. That is, one should never use these placeholders interchangeably (e.g. "use %d%" instead of "use %s" in the example above), because each token refers to a specific entity.
I’m trying to edit my android strings.xml file with arabic translations. However, I’m having issues. For example, I have something like this:
<string name="test">اختبار</string>
When I type something like %1$s to add a placeholder, the string with the placeholder is also mixed up.
What’s the right approach to do this? Thanks
Placeholders (ascii) in BiDi strings are tricky. If you know that this %1$s will eventually be substituted by a name in Arabic, it's manageable; but if the substitution can be English or mixed text, you need a long and careful QA to check all special cases.
Don't try to edit Arabic text in Android Studio text editor for file res/values-ar/strings.xml; use the Translations Editor instead.
The official guide https://developer.android.com/studio/write/translations-editor.html describes the this editor in great detail, but one little trick that it misses is the use of View/BiDi Text Direction menu. To work with Arabic strings, you want to set it to Right-to-Left.
This will not effect the Arabic column in your Editor, and not even the way the translation is displayed in the text box at the bottom:
But when you click the ... button for translation, you will get the translation in RTL:
Now you can understand how your placeholder(s) will look when replaced with actual data.
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);
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 ?