RTL(从右到左)语言在传统知识国际



我正在使用Tkinter作为我的Gui(Python(。到目前为止,该程序仅支持 LTR 语言。现在我还需要支持 RTL 语言(希伯来语(。

我看到了用镜像文本处理的答案,但这不是我的问题。 我在使用符号/标点符号(点、逗号等(时遇到了问题,而且当我在同一句话中同时写英语和希伯来语时。 例如,我得到:

"שלום。欢迎。מ׃ שלומכם?">

什么时候应该:

"?מה שלומכם .welcome .שלום">

我迷路了。有什么建议吗?

四年后,但作为练习,我编写了一个函数,将文本从左到右更改为从右到左。

text = "שלום. welcome. מה שלומכם?"
new_text = []
# list to hold each sentence
end_character_number = len(text) - 1
end_char = end_character_number
if text[end_char] == "?" or text[end_char] == "!" or text[end_char] == ".":
new_text.append(text[end_char]) # adds final punctuation first
text = text[:end_char] # removes final punctuation from left-to-right text
right_to_left_checker = end_char - 1 
rtl_checker = right_to_left_checker 
while rtl_checker >= 0:
if text[rtl_checker] == "?" or text[rtl_checker] == "!" or text[rtl_checker] == ".":
sentence = text[rtl_checker+1:].strip()
new_text.append(sentence) # adds each sentence in right-to-left order
new_text.append(" " + text[rtl_checker]) # add punctuation and space after
text = text[:rtl_checker] # removes sentence from left-to-right text
if rtl_checker == 0:
new_text.append(text) # adds final sentence in right-to-left order
text = text[:rtl_checker] # removes final sentence from left-to-right text
rtl_checker = rtl_checker - 1 # moves punctuation checker one place right-to-left
right_to_left_sentence = ""
rtl_sent = right_to_left_sentence
for part in new_text:
rtl_sent = rtl_sent + part # creates new right-to-left sentence
print(rtl_sent)

最新更新