TKinter 中的 RTL(从右到左)语言

rin*_*ior 6 python tkinter

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

\n\n

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

\n\n
\n

"\xd7\xa9\xd7\x9c\xd7\x95\xd7\x9d。欢迎。\xd7\x9e\xd7\x94 \xd7\xa9\xd7\x9c\xd7\x95\xd7\x9e\xd7\x9b\xd7 \x9d?”

\n
\n\n

什么时候应该是:

\n\n
\n

"?\xd7\x9e\xd7\x94\xd7\xa9\xd7\x9c\xd7\x95\xd7\x9e\xd7\x9b\xd7\x9d.欢迎。\xd7\xa9\xd7\x9c\xd7\x95\ xd7\x9d"

\n
\n\n

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

\n

小智 1

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

\n
text = "\xd7\xa9\xd7\x9c\xd7\x95\xd7\x9d. welcome. \xd7\x9e\xd7\x94 \xd7\xa9\xd7\x9c\xd7\x95\xd7\x9e\xd7\x9b\xd7\x9d?"\n\nnew_text = []\n# list to hold each sentence\n\nend_character_number = len(text) - 1\nend_char = end_character_number\n\nif text[end_char] == "?" or text[end_char] == "!" or text[end_char] == ".":\n    new_text.append(text[end_char]) # adds final punctuation first\n    text = text[:end_char] # removes final punctuation from left-to-right text\n\nright_to_left_checker = end_char - 1 \nrtl_checker = right_to_left_checker \n\nwhile rtl_checker >= 0:\n    if text[rtl_checker] == "?" or text[rtl_checker] == "!" or text[rtl_checker] == ".":\n        sentence = text[rtl_checker+1:].strip()\n        new_text.append(sentence) # adds each sentence in right-to-left order\n        new_text.append(" " + text[rtl_checker]) # add punctuation and space after\n        text = text[:rtl_checker] # removes sentence from left-to-right text\n    if rtl_checker == 0:\n        new_text.append(text) # adds final sentence in right-to-left order\n        text = text[:rtl_checker] # removes final sentence from left-to-right text\n    rtl_checker = rtl_checker - 1 # moves punctuation checker one place right-to-left\n\nright_to_left_sentence = ""\nrtl_sent = right_to_left_sentence\n\nfor part in new_text:\n    rtl_sent = rtl_sent + part # creates new right-to-left sentence\n\nprint(rtl_sent)\n
Run Code Online (Sandbox Code Playgroud)\n