假设您的母语是希伯来语,您正在使用类似Python 3这样的编程语言,它允许您将希伯来语放入源代码中。祝贺你!你有一个dict
:
d = {'a': 1}
你想用希伯来语代替a
。所以你替换了那个单一的字符:
d = {'א': 1}
啊哦。只要替换一个字符,而不做任何其他更改,您的显示就会变得疯狂。从希伯来语到1
,所有东西都是落后的,而且这甚至是有效的语法(它是),这是非常不明显的,更不用说它意味着什么了。
希伯来语本质上是从右向左的,即使没有任何看不见的控制字符,希伯来语文本也会从右向左显示。这也适用于希伯来语附近的某些“常规”字符,以及其他几个脚本中的字符。细节很复杂。
你怎么处理这件事?在不破坏代码的情况下,无法将控制字符粘贴到源代码中以修复显示。用十六进制来写任何东西都会把一种不可读的东西换成另一种。即使你愿意用基本拉丁语块中的字符命名所有的东西,并把所有希伯来语字符串都粘贴到本地化文件中,也很难避免将左右文本与左到右的文本混合。
有希伯来语的JSON或CSV将被混淆。如果你把你的字符串塞进的那些本地化文件应该是人类可读的,那么它们可能就不是。你的工作是什么?
发布于 2016-04-09 05:29:14
AFAIK,当您在代码中的标识符(或者注释)中使用非ASCII字母时,这主要是相关的。
如果您自律以避免这一点,例如,如果您的代码使用" English“查找标识符、关键字和注释,这就不是一个问题(而且每个软件开发人员都应该能够阅读英语文档和代码)。然后,您的应用程序的国际化和本地化只发生在消息中,特别是文字字符串中。
然后,您可以使用一些消息目录。例如,在C和POSIX中,您将使用gettext(3)和朋友。本地化消息目录包含消息的所有本地化/国际化变体。如果您的应用程序只适用于希伯来语用户(而这并不是一个大市场),那么希伯来语只能在文字字符串中使用。
更确切地说,hello world应用程序将包含
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)
因此,我认为您真正的问题应该是选择和配置一个足够好的编辑器(而希伯来文只包含在文字字符串中;在很少的情况下,一个文本字符串需要同时包含希伯来语和英语,那么将它分割成几个部分)。我想埃马克斯和维姆都可以配置成满足您的需要。
https://softwareengineering.stackexchange.com/questions/315215
复制相似问题