非常简单的例子是:
\n\ncity = "\xe2\x80\x8f\xd8\xa7\xd9\x84\xd9\x85\xd9\x83\xd9\x84\xd8\xa7\xe2\x80\x8e"\nprint(city)\nRun Code Online (Sandbox Code Playgroud)\n\n我期望输出是:
\n\n\xe2\x80\x8f\xd8\xa7\xd9\x84\xd9\x85\xd9\x83\xd9\x84\xd8\xa7\xe2\x80\x8e\nRun Code Online (Sandbox Code Playgroud)\n\n但实际上输出是相反的字符串(字母看起来有点不同,因为它们有开始、中间和结束形式)。我无法将其粘贴到此处,因为复制粘贴会再次更正字符串的顺序。
\n\n如何在 Linux 终端上正确打印阿拉伯语?周围的文本是从左到右 (LTR),只有这一行需要是从右到左 (RTL)。是否有 UFT-8 字符可以告诉终端这一点?
\n我有一个 LFR(从左到右)格式的法语网站,客户希望将该网站翻译成希伯来语,从而将其转换为 RTL(从右到左)格式。所有希伯来语网站的设计都是相反的
https://he.wikipedia.org/wiki/
有没有办法自动执行此操作?再说一遍,我不是在谈论文本方向。我想把它水平翻转设计,像镜面效果一样。
我正在尝试右对齐表格单元格。

我已将整个视觉树的“语义”属性设置为“强制从右到左”值。
所需布局:

视觉树:

代码中没有任何视觉定义......
编辑:
在@dirtydanee建议之后:

我有应用程序中的阿拉伯语翻译。该应用程序还支持 RTL 布局。当用户使用阿拉伯语时,一切看起来都很好。问题是,当我将 local 更改为 eq Persian(他们使用 RTL)但我不提供这种语言的翻译时,我的布局看起来一团糟。
如果当前本地没有可用的翻译,如何禁用 RTL?
我有一个支持 RTL 的应用程序。当格式化两个团队之间的分数时,我会写下以下内容:
\n\nt1.setText(String.format(Locale.forLanguageTag("ar-MA"), "%d - %d", 1, 0));\nRun Code Online (Sandbox Code Playgroud)\n\n如果我的文本字段设置为 textDirection="locale",在运行 Android 8 和 Android 9 的所有测试设备上、在我的华为上以及基本上在任何地方,它都会在 Android 模拟器上输出“0 - 1”。但如果我在运行 Android 8.0 的三星 S7 上进行测试,它会返回“1 - 0”。我在物理设备和三星设备实验室上进行了测试:https ://developer.samsung.com/remotetestlab/rtlDeviceList.action
\n\n这是错误的做法吗?当我有一个包含乐谱的文本字段时,如何格式化乐谱,使其在所有设备上的 LTR 和 RTL 上都可以使用?这在大多数设备上都能完美运行,但我似乎遗漏了一些关于它在三星设备上崩溃的原因。
\n\n这是我的代码:
\n\n<?xml version="1.0" encoding="utf-8"?>\n<LinearLayout\n xmlns:android="http://schemas.android.com/apk/res/android"\n xmlns:app="http://schemas.android.com/apk/res-auto"\n xmlns:tools="http://schemas.android.com/tools"\n android:orientation="vertical"\n android:layout_width="match_parent"\n android:layout_height="match_parent"\n tools:context=".MainActivity"\n tools:showIn="@layout/activity_main">\n\n <TextView\n android:layout_width="wrap_content"\n android:layout_height="wrap_content"\n android:text="Home team won 1-0"/>\n\n <TextView\n android:id="@+id/t1"\n android:layout_width="wrap_content"\n android:layout_height="wrap_content"\n android:layoutDirection="locale"\n android:text="1-0"\n />\n <TextView\n android:id="@+id/t2"\n android:layoutDirection="rtl"\n android:layout_width="wrap_content"\n android:layout_height="wrap_content"\n android:text="1-0"\n />\n <TextView\n android:id="@+id/t3"\n android:textDirection="locale"\n android:layout_width="wrap_content"\n android:layout_height="wrap_content"\n android:text="1-0"\n />\n …Run Code Online (Sandbox Code Playgroud) 输入:
\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当包含括号 () 符号(或 <> 符号)的 RTL 语言(波斯语)文本放置在小Text部件中并且我们使用 html 渲染器 ( ) 为 Web 构建时,问题就会出现flutter run --web-renderer html。
这是代码(如图所示按原样显示 RTL。文本代码如下):
\n\n这是默认渲染器(桌面上的 canvaskit)的结果,一切听起来都很好:
\n\n与 html 渲染器相同的代码:
\n\n如果我们在带括号的单词前面添加 RTL/LTR(分别)unicode 标记,我们会得到:
\n\n这显然解决了“push”这个词的问题。
\n这是文本代码:
\nconst Text(\'You have pushed the button this (many) times:\'),\nconst Text(\'You have pushed the (\xd8\xaf\xda\xa9\xd9\x85\xd9\x87) this (many) times:\'),\nconst Text(\'\xd8\xaa\xd8\xb9\xd8\xaf\xd8\xa7\xd8\xaf (\xd8\xaf\xd9\x81\xd8\xb9\xd8\xa7\xd8\xaa) \xd9\x81\xd8\xb4\xd8\xa7\xd8\xb1 \xd8\xaf\xd8\xa7\xd8\xaf\xd9\x86 \xd8\xaf\xda\xa9\xd9\x85\xd9\x87:\', textDirection: TextDirection.rtl),\nconst Text(\'\xd8\xaa\xd8\xb9\xd8\xaf\xd8\xa7\xd8\xaf (\xd8\xaf\xd9\x81\xd8\xb9\xd8\xa7\xd8\xaa) \xd9\x81\xd8\xb4\xd8\xa7\xd8\xb1 (push) \xd8\xaf\xda\xa9\xd9\x85\xd9\x87:\', textDirection: TextDirection.rtl),\nRun Code Online (Sandbox Code Playgroud)\n有没有办法解决html渲染器的问题?
\n假设有一段代码如下:
<div dir="rtl">
test 50%
</div>Run Code Online (Sandbox Code Playgroud)
它呈现为test 50%. 但根据这个阿拉伯语维基页面,%50 test它应该显示为. 请注意,百分号位于数字之前。问题如下:如何强制执行所需的行为?浏览器支持 OOB 吗?有已知的方法可以轻松做到这一点吗?
联合发展署。我将提供更多背景信息。有一个带有输入文本属性的角度分量。假设它可能如下所示:
<component [label]="'test 50%'"></component>
Run Code Online (Sandbox Code Playgroud)
那么它的模板如下所示:
<span>{{label}}</span>
Run Code Online (Sandbox Code Playgroud)
它适用于从左到右的模式。但是,当启用从右到左模式时,文本会向右对齐,但浏览器不会修改文本。我之所以认为可能会被浏览器自动修改,是因为下面的文字test this!被修改为:!test this自动被浏览器修改。
我是否需要修改组件以便它接受已经 RTL 修改的文本?
我正在尝试将阿拉伯文字绘制到位图上以供显示:
Bitmap img = Bitmap.createBitmap( (int) f+100, 300, Config.RGB_565);
Canvas c = new Canvas();
c.setBitmap( img );
mFace = Typeface.createFromAsset(getAssets(),"DejaVuSansCondensed.ttf");
mPaint.setTypeface(mFace);
content = "????";
content = ArabicUtilities.reshape( content );
System.out.println("Drawing text: " + content);
c.drawText(content, 30, 30, mPaint);
Run Code Online (Sandbox Code Playgroud)
ArabicUtilities类是一个重塑unicode文本的工具,因此字母是连接的.请参阅:http://github.com/agawish/Better-Arabic-Reshaper/
但是,生成的位图如下所示:
alt text http://imagebin.ca/img/J1EB8DWc.jpg
它应该看起来像يجري
我相信这个问题是因为,与TextView不同,Bitmap类不支持BiDi,所以它从左边开始绘制字母.
尽我所能,我无法弄清楚如何以正确的顺序绘制文本.
这是一个愚蠢的问题,但我找不到答案:
我正在使用消息框以希伯来语显示文本,我需要RTLReading和RightAlign.
我目前正在使用:
MessageBox.Show(msg, title, MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.RtlReading);
Run Code Online (Sandbox Code Playgroud)
如何添加MessageBoxOptions.RightAlign?
right-to-left ×10
android ×3
ios ×2
angular ×1
arabic ×1
arrays ×1
bidi ×1
c# ×1
farsi ×1
flutter ×1
hebrew ×1
html ×1
linux ×1
messagebox ×1
parentheses ×1
python ×1
right-align ×1
swift ×1
translation ×1
uitableview ×1
winforms ×1