Python 本地化和未来证明

Python 本地化和未来证明,python,localization,future-proof,Python,Localization,Future Proof,所以我知道这对于StackOverflow格式来说不是一个好问题。但我有点不知所措,可以随意推荐一个不同的地方来放这个,这样可能会吸引一些眼球 我非常熟悉用于本地化python程序的xgettext内容。目前,我们正在将用户首选项保存为字符串(例如:user_prefs={'temperature':u'\u00b0C Fahrenheit','volumative':'Cubic inches',…}) 这可以很好地工作,在使用外语操作时,我们尝试(大部分成功地)在保存之前将字符串本地化恢复为

所以我知道这对于StackOverflow格式来说不是一个好问题。但我有点不知所措,可以随意推荐一个不同的地方来放这个,这样可能会吸引一些眼球

我非常熟悉用于本地化python程序的xgettext内容。目前,我们正在将用户首选项保存为字符串(例如:
user_prefs={'temperature':u'\u00b0C Fahrenheit','volumative':'Cubic inches',…}

这可以很好地工作,在使用外语操作时,我们尝试(大部分成功地)在保存之前将字符串本地化恢复为英语。因此保存的字符串始终是英文版本,然后在启动程序时对其进行本地化

但是,如果我们在\u00b3'中将
'Cubic inches'
更改为
u'in\u00b3'
,甚至将
'Cubic inches'
这样的小更改更改为
'Cubic inches'
,以后会导致问题。我们总是用小写来进行比较,这在某种程度上弥补了这一点,但我觉得这有点不对劲,而且似乎必须有更好的方法来做,比如保存一个id(可以是数组中的索引,甚至只是一些唯一的标识符)。但想知道其他人在这里的经验,关于未来证明用户的喜好,以便他们将始终被认可


我怀疑这会结束(询问主观答案),但也许我可以在它结束之前获得一些好的见解

我不了解您的实际问题,您存储在哪里。
但希望“base64 utf编码-解码”能解决您的问题

我不明白你的实际问题,你在哪里存储。
但希望“base64 utf编码-解码”能解决您的问题

听起来您正试图使用文本的英文表示形式作为消息的唯一ID,但当您更改英文表示形式时,它将不再与以前存储的首选项文件中的ID匹配。解决方案是为每条消息使用唯一的永久ID。此ID可以是英文可读的,但您必须承诺永不更改它。为这个ID使用一个简单且标准化的命名约定可能会有所帮助,不使用unicode或大写字符。例如,一个消息ID可能是“立方英寸”。另一个可能是“华氏度”


然后,您应该定义国际化文本,以便以每种语言(包括英语)显示此消息。因此,如果您想在英文系统上显示“cubic inches”消息,您将查找此ID的英文对应项,并获得“cubic inches”、“cubic inches”、“u'in\u00b3”或您喜欢的任何内容。然后应用程序可以显示该文本。但您将始终在首选项文件中存储永久消息ID(“立方英寸”)。这使您可以灵活地更改消息的英语表示形式,如向用户显示的那样,而不会使以前存储的首选项文件中的ID无效。

听起来您试图使用文本的英语表示形式作为消息的唯一ID,但当您更改英语表示形式时,它不再与以前存储的首选项文件中的ID匹配。解决方案是为每条消息使用唯一的永久ID。此ID可以是英文可读的,但您必须承诺永不更改它。为这个ID使用一个简单且标准化的命名约定可能会有所帮助,不使用unicode或大写字符。例如,一个消息ID可能是“立方英寸”。另一个可能是“华氏度”


然后,您应该定义国际化文本,以便以每种语言(包括英语)显示此消息。因此,如果您想在英文系统上显示“cubic inches”消息,您将查找此ID的英文对应项,并获得“cubic inches”、“cubic inches”、“u'in\u00b3”或您喜欢的任何内容。然后应用程序可以显示该文本。但您将始终在首选项文件中存储永久消息ID(“立方英寸”)。这使您可以灵活地更改消息的英语表示形式(如向用户显示的),而不会使以前存储的首选项文件中的ID无效。

我对这类事情一无所知,但是,你可以试着在中征求这样的意见。我对这类事情一无所知——但是,你可以试着在中征求这样的意见。是的,这就是我们最后做的:)。。。它工作正常。。。它不像存储英语那么优雅,但它可以工作(存储英语时会发生可怕的故障)是的,这就是我们最终要做的:)。。。它工作正常。。。它不像存储英语那么优雅,但它可以工作(存储英语的过程非常糟糕)