首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在文件看起来疯狂的情况下混合左右和右到左的脚本?

如何在文件看起来疯狂的情况下混合左右和右到左的脚本?
EN

Software Engineering用户
提问于 2016-04-09 03:07:58
回答 1查看 1.9K关注 0票数 9

假设您的母语是希伯来语,您正在使用类似Python 3这样的编程语言,它允许您将希伯来语放入源代码中。祝贺你!你有一个dict

代码语言:javascript
运行
复制
d = {'a': 1}

你想用希伯来语代替a。所以你替换了那个单一的字符:

代码语言:javascript
运行
复制
d = {'א': 1}

啊哦。只要替换一个字符,而不做任何其他更改,您的显示就会变得疯狂。从希伯来语到1,所有东西都是落后的,而且这甚至是有效的语法(它是),这是非常不明显的,更不用说它意味着什么了。

希伯来语本质上是从右向左的,即使没有任何看不见的控制字符,希伯来语文本也会从右向左显示。这也适用于希伯来语附近的某些“常规”字符,以及其他几个脚本中的字符。细节很复杂。

你怎么处理这件事?在不破坏代码的情况下,无法将控制字符粘贴到源代码中以修复显示。用十六进制来写任何东西都会把一种不可读的东西换成另一种。即使你愿意用基本拉丁语块中的字符命名所有的东西,并把所有希伯来语字符串都粘贴到本地化文件中,也很难避免将左右文本与左到右的文本混合。

有希伯来语的JSON或CSV将被混淆。如果你把你的字符串塞进的那些本地化文件应该是人类可读的,那么它们可能就不是。你的工作是什么?

EN

回答 1

Software Engineering用户

发布于 2016-04-09 05:29:14

AFAIK,当您在代码中的标识符(或者注释)中使用非ASCII字母时,这主要是相关的。

如果您自律以避免这一点,例如,如果您的代码使用" English“查找标识符、关键字和注释,这就不是一个问题(而且每个软件开发人员都应该能够阅读英语文档和代码)。然后,您的应用程序的国际化和本地化只发生在消息中,特别是文字字符串中。

然后,您可以使用一些消息目录。例如,在C和POSIX中,您将使用gettext(3)和朋友。本地化消息目录包含消息的所有本地化/国际化变体。如果您的应用程序只适用于希伯来语用户(而这并不是一个大市场),那么希伯来语只能在文字字符串中使用。

更确切地说,hello world应用程序将包含

代码语言:javascript
运行
复制
void say_hello(char*towhom) {
  printf(gettext("hello %s"), towhom);
}

您的应用程序将在运行开始时通过使用适当的参数调用一些setlocale(3)来自定义自己。

现场(7)。将所有这些调整到Python和操作系统中。许多跨平台框架(如Qt)对国际化和本地化具有广泛的支持。

当然,显示Unicode字符串有一个微妙的问题。最严重的显示和图形用户界面库和工具包(Qt,GTk,.)能够处理混合语言的字符串(例如显示包含希伯来文、英文、俄文和中文的东西)。

要了解更广泛的观点,请阅读国际化与本土化上的“软件维基页面”。

当只包含ASCII字符时,JSON文件是有效的,其他字符(仅出现在JSON字符串中)在字符串中使用\u05d0 (而不是א)编码。

也许您可以找到一个足够好的编辑器,并根据您的需要定制它。我相信您可以找到一些埃马克斯子模式(或者自定义子模式)来解决在Python中使用希伯来文字字符串的特殊问题(但仍然有英文标识符和注释)。

顺便说一句,我不知道希伯来语键盘是什么样子,但在大多数键盘布局中,你可以配置它们,这样输入ASCII字母(即拉丁文字母)比输入非ASCII字母更快。所以,即使对你自己来说,输入英文代码也更好。

对于JSON数据,当字符串包含א时,您应该能够配置编辑器来查看\u05d0 (否则使用JSON转换器la jq)

因此,我认为您真正的问题应该是选择和配置一个足够好的编辑器(而希伯来文只包含在文字字符串中;在很少的情况下,一个文本字符串需要同时包含希伯来语和英语,那么将它分割成几个部分)。我想埃马克斯维姆都可以配置成满足您的需要。

票数 2
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/315215

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档