我有一个用户联系人详细信息的显示,用户可以在从左到右和从右到左文本之间交替显示.
在阿拉伯语中,文本从右向左显示和阅读,但电话号码,网址和电子邮件地址以阿拉伯语和其他从右向左的语言从左向右显示和读取.
我已经能够交替显示用户的联系方式,但是当电话号码中有空格时,电话号码不会从左到右显示.这是我所遇问题的直观显示:
以下是与上述相同的详细信息,但在阿拉伯语中从右向左显示(电话号码(以浅灰色显示)有空格且未正确显示):
以下是相同的细节,用阿拉伯语从右向左显示,但从电话号码中删除了空格(电话号码(用浅色)在这里正确显示):
有没有人知道如何以从右到左的语言从左到右显示带有空格的电话号码?
这是我的HTML代码:
<div class="row contact_reverse">
{{ #if contact_details_phone }}
<div class="col-sm-4 col-md-4 col-lg-4 ellipsis contact_reverse" dir="rtl" style="direction: rtl;">
<i class="fa fa-phone icon_size20 icon_padding_rtl"></i><span class="contact_dir_reverse">{{ contact_details_phone }}</span>
</div>
{{ /if }}
{{ #if contact_details_mobile_phone }}
<div class="col-sm-4 col-md-4 col-lg-4 ellipsis contact_reverse" dir="rtl" style="direction: rtl;">
<i class="fa fa-tablet icon_size20 icon_padding_rtl"></i><span class="contact_dir_reverse">{{ contact_details_mobile_phone }}</span>
</div>
{{ /if }}
{{ #if contact_details_email_address }}
<div class="col-sm-4 col-md-4 col-lg-4 ellipsis contact_reverse" dir="rtl" style="direction: rtl;">
<i class="fa fa-envelope icon_size20 …Run Code Online (Sandbox Code Playgroud) 我有一系列英文和阿拉伯文字,应该以对齐的方式打印.
例如:
List<Character> ar = new ArrayList<Character>();
ar.add('?');
ar.add('?');
ar.add('?');
List<Character> en = new ArrayList<Character>();
en.add('a');
en.add('b');
en.add('c');
System.out.println("ArArray: " + ar);
System.out.println("EnArray: " + en);
Run Code Online (Sandbox Code Playgroud)
预期产出:
ArArray: [?, ?, ?] // <- I want characters to be printed in the order they were added to the list
EnArray: [a, b, c]
Run Code Online (Sandbox Code Playgroud)
实际产量:
ArArray: [?, ?, ?] // <- but they're printed in reverse order
EnArray: [a, b, c]
Run Code Online (Sandbox Code Playgroud)
有没有办法在从左到右的方向打印阿拉伯字符而不在输出之前明确地反转列表?
萨拉姆.
在我的项目中,我必须为语言和语言创建两者layout-ldltr和layout-ldrtl布局.Right-To-LeftLeft-To-Right
我启动了从右到左语言的应用程序,每件事都很好.但是当方向改变时,android加载layout-ldltr布局反对layout-ldrtl,虽然当前Locale设置为RTL语言!
怎么解决这个问题?!
在 AndroidManifest.xml
<application
android:name=".QuranApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
Run Code Online (Sandbox Code Playgroud)
在layout-ldrtl\activity_main.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layoutDirection="rtl">
<include layout="@layout/toolbar" />
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:layoutDirection="rtl">
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layoutDirection="rtl"/>
<include
layout="@layout/list_view"
android:layout_width="@dimen/drawer_width"
android:layout_height="match_parent"
android:layout_gravity="start" />
</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)
UPDATE
在@JohanShogun评论之后,我改变android:layoutDirection="rtl"了android:layoutDirection="locale"并解决了大多数项目的问题.
在第一张照片中,所有元素都显示非常好:
在横向模式下,在粘贴在屏幕顶部的标题项中的StickyListHeader列表视图中,从ltr布局使用android !:
android android-layout right-to-left left-to-right android-5.0-lollipop
我正在实现一个 RTL 接口。所有组件和文本都是 RTL,但数字是 LTR。
我使用<span dir="ltr">元素将 LTR 文本插入到主要的 RTL 文本中。
它适用于大多数情况,但不适用于<option>元素:
<div dir="rtl">
<select>
<option>One amount <span dir="ltr">15.000</span> coins</option>
<option>Other amount <span dir="ltr">19?000</span> coins</option>
</select>
</div>
Run Code Online (Sandbox Code Playgroud)
它不工作。
这里有一个 JSfiddle 可以玩:https ://jsfiddle.net/fguillen/2hngzv3d/
可以使用以下方法获取当前的语言环境方向:
val isRtl=TextUtilsCompat.getLayoutDirectionFromLocale(Locale.getDefault()) == ViewCompat.LAYOUT_DIRECTION_RTL
Run Code Online (Sandbox Code Playgroud)
如果开发人员设置了它,也可以获得视图的布局方向:
val layoutDirection = ViewCompat.getLayoutDirection(someView)
Run Code Online (Sandbox Code Playgroud)
视图的默认layoutDirection不基于其语言环境.它实际上是LAYOUT_DIRECTION_LTR.
当您将设备的语言环境从LTR(从左到右)语言环境(如英语)更改为RTL(从右到左)语言环境(如阿拉伯语或希伯来语)时,视图将相应地对齐,但值为默认获取视图将保留LTR ...
这意味着在给定视图的情况下,我看不出如何确定它将采用的正确方向.
我做了一个简单的POC.它有一个带有TextView的LinearLayout:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:id="@+id/linearLayout" xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:gravity="center_vertical" tools:context=".MainActivity">
<TextView
android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="Hello World!"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
在代码中,我编写了语言环境和视图的方向:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val isRtl = TextUtilsCompat.getLayoutDirectionFromLocale(Locale.getDefault()) == ViewCompat.LAYOUT_DIRECTION_RTL
Log.d("AppLog", "locale direction:isRTL? $isRtl")
Log.d("AppLog", "linearLayout direction:${layoutDirectionValueToStr(ViewCompat.getLayoutDirection(linearLayout))}")
Log.d("AppLog", "textView direction:${layoutDirectionValueToStr(ViewCompat.getLayoutDirection(textView))}")
}
fun layoutDirectionValueToStr(layoutDirection: Int): String =
when (layoutDirection) {
ViewCompat.LAYOUT_DIRECTION_INHERIT -> …Run Code Online (Sandbox Code Playgroud) 我有一个包含希伯来文和拉丁文的html文档.它用utf-8编码:
<!DOCTYPE HTML>
<html>
<head>
<title>Title</title>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
</head>
<style type='text/css'>
.h { color: green}
</style>
<body>
<div>
here are some words ??? ??? ????? (100, 200)
</div>
<div>
here are some words <span class='h'>??? ??? ?????</span> (100, 200)
</div>
<div>
here are some words <span class='h'>??? ??? ?????</span> <span>(100, 200)</span>
</div>
<div>
here are some words <span class='h'>??? ??? ?????</span> <b>WORD</b> <span>(100, 200)</span>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我认为应该显示前三行.第四个(<b>WORD</b>在parantheses面前的附加是.
以下是此文档在Firefox中的显示方式:

编辑甚至我的html文本的复制/粘贴都没有正常工作,所以这里是原始html的屏幕截图(抱歉,但似乎无法正确呈现此文本):

我有一个 LFR(从左到右)格式的法语网站,客户希望将该网站翻译成希伯来语,从而将其转换为 RTL(从右到左)格式。所有希伯来语网站的设计都是相反的
https://he.wikipedia.org/wiki/
有没有办法自动执行此操作?再说一遍,我不是在谈论文本方向。我想把它水平翻转设计,像镜面效果一样。
输入:
\ntempTextArray:\n\xe2\x96\xbf 3 个元素
\n- 0 : "\xd7\x96\xd7\x94 \xd7\x9e\xd7\x91\xd7\x97\xd7\x9f"\n- 1 : "7 x 5 abc"\n- 2 : "other text"\nRun Code Online (Sandbox Code Playgroud)\n当做一个简单的tempText = tempTextArray.joined(" | ")结果时,结果并没有将所有元素放置在我期望的位置...结果:
Printing description of tempText:\n"\xd7\x96\xd7\x96\xd7\x94 \xd7\x9e\xd7\x91\xd7\x97\xd7\x9f | 7 x 5 abc | other text"\nRun Code Online (Sandbox Code Playgroud)\n这是我第一次将从右到左与从左到右的文本结合起来,以前有人处理过类似的情况吗?
\n我的应用程序正在从后端接收翻译,因此我不知道哪些元素被翻译成(在本例中)希伯来语,以及我将以默认语言(英语)收到哪些元素
\n我想让它产生一个单词旁边的数字,这样我就可以要求用户使用相应的数字来选择单词.
这是我的代码
alt_words = hlst
loopnum = 8
for i in range(loopnum):
if i < len(alt_words):
print('{0}. {1:<20}'.format((i+1), alt_words[i]), end =' ')
if i == 0:
print('', end=' ')
if i + 9 <= len(alt_words):
print('{0}. {1:<20}'.format((i+9), alt_words[i+8]), end =' ')
if i + 17 <= len(alt_words):
print('{0}. {1:<20}'.format((i+17), alt_words[i+16]), end=' ')
print('\n'+'-'*80)
Run Code Online (Sandbox Code Playgroud)
每行的第一个数字打印在左侧,但是右侧的单词,而其余的数字和单词打印在RTL上.似乎一旦python开始在LTR线上打印,它就可以切换到RTL,但不能从RTL返回到LTR.请注意,即使周期打印在每行第二组数字的数字右侧.
它工作得很好,用英文单词看起来不错:
我猜一个工作可能涉及把数字放在后面,但我认为必须有一个更好的方法.
我有一个包含英语和波斯语的字符串。我想如果一行以波斯字符开头,那么该行在文本视图中从右到左显示;如果一行以英文字符开头,则该行从左到右显示。
注意:我想在文本视图中为每条线设置重力/方向。
如何在android textview中实现它。
这是我的textview xml代码:
<TextView
android:id="@+id/textViewContent"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentRight="true"
android:autoLink="web"
android:layoutDirection="rtl"
android:gravity="start"
android:layout_gravity="start"
android:text="My Text"
android:textColor="#000"
android:textDirection="rtl" />
Run Code Online (Sandbox Code Playgroud) 我创建了一个简单的聊天应用程序,它在使用react-native时看起来非常好,但是在(从右到左)语言上它看起来很糟糕并且布局没有响应。device languageleft to rightdevices with RTL
那么,即使在具有类似..的设备上,我怎样才能做到forcefully keep这一点呢?LTR(left to right)RTL languagespersian, arabic, dari, pashto, urdo
我正在学习C ++中的优先规则。据说其中条件运算符具有从右到左的关联性。我将其解释为对表达式的评估从右开始,然后从左开始。因此,对于以下代码,
int a=1, b=2, c;
c=a>b? a=a*2: a=a+3;
cout<<c<<" "<<a;
Run Code Online (Sandbox Code Playgroud)
我假设输出为
8 8
Run Code Online (Sandbox Code Playgroud)
但是实际输出是
4 4
Run Code Online (Sandbox Code Playgroud)
我不了解这种关联性实际上是如何工作的,因为从上面的输出中,在我看来,条件运算符已经从左到右具有关联性。
c++ conditional-operator associativity right-to-left left-to-right
left-to-right ×12
right-to-left ×11
android ×4
hebrew ×3
html ×3
css ×2
ios ×2
arrays ×1
c++ ×1
java ×1
locale ×1
localization ×1
python ×1
python-3.x ×1
react-native ×1
swift ×1
textview ×1
translation ×1
unicode ×1