2016-05-09 10 views
3

Ich arbeite an Sprachmutation Frontend unserer App für den iranischen Markt, aber zur Zeit haben wir mit Problem mit Mischen von europäischen Ziffern und Einheiten mit persischen Texten stecken. Zum Beispiel unseres gewünschtes Format für einen Text lautet:Mischen von europäischen Zahlen und Einheiten mit persischen Text

Result: <value>s (e.g. Result: 50s) 

Aber wenn ich versuche, diese Zeichenfolge in Javascript zu komponieren, 50 Nummer ist vor Text (nach in persischer Sprache) wie diese

50 :persiantext s 

Gibt es Irgendeine Lösung, wie man diese Dinge zusammenmischt, oder es macht überhaupt keinen Sinn, es zu mischen und alles sollte persisch sein?

Vielen Dank für alle Hilfe/Vorschläge.

+0

Sie müssen ein wenig mehr Kontext, ist das in HTML? Aber ich nehme eine Vermutung und sage etwas mit 'direction: rtl' und' direction: ltr' zum Stil des Elements. – C14L

Antwort

2

Platzhalter in Ihrem Text verwenden und dann durch die Zahl ersetzen. Wenn Sie

Result: {$d}s 

für Englisch haben, und

{$d}s :نتیجه 

für persisch, dann können Sie {$ d} mit 50 ersetzen und den richtigen Text in beiden Fällen erhalten.

Es gibt einige Bibliotheken, die beim Ersetzen von Variablen wie Underscore oder Lodash helfen könnten (obwohl sie eine etwas andere Syntax für die Variablen verwenden), siehe template Funktion.

+0

Sie haben die Einheit [s] vergessen. Das ist sehr wichtig für uns. – DSDev7

+0

Ok, kein Problem, fügte hinzu. –

+0

Nun, ich muss zugeben, dass es für uns am besten funktioniert, bis uns Übersetzer oder Muttersprachler bessere Anweisungen geben. Vielen Dank! – DSDev7

0

Wenn Sie gemischten RTL/LTR-Text verketten, sollten Sie entsprechende Right-to-left und Links-nach-rechts-Markierungen verwenden (wie in dieser Java-Frage gezeigt - String concatenation containing Arabic and Western characters).

myArabicString + "\u202A" + englishNumberAndText + "\u202C" + moreArabic 

Alternativ haben die meisten RTL-Sprachen native Nummern, die auch RTL verwenden. Um diesen Ansatz zu verwenden, müssen Sie eigenen Code schreiben, um die einzelnen Ziffern zu ersetzen - ähnlich wie der Code in convert numbers from arabic to english.

Mischen in lateinischer Interpunktion wie ":" und "!" müssen Sie vorsichtig sein - Sie müssen es möglicherweise in RTL/LTR-Markierungen umbrechen - aber stellen Sie sicher, dass Sie die Ergebnisse mit Personen vergleichen, die wissen, wie Text aussehen soll.

Seitennotiz: Sie möchten vielleicht JavaScript equivalent to printf/string.format auschecken, wenn Sie viel Formatierung benötigen.

+0

Vielen Dank für Ihre Antwort. Ich denke, dass es unter allen Antworten am besten war, aber eine andere Antwort gab uns bereits genau, was wir wollten, bis wir darauf warten, dass Übersetzer/Muttersprachler uns bessere Anweisungen geben, weil wir vorsichtig sein sollten, Interpunktion und andere Dinge zu mischen. Nochmals vielen Dank – DSDev7