Python 我应该改为使用gettext吗?

Python 我应该改为使用gettext吗?,python,localization,gettext,Python,Localization,Gettext,我的产品必须独立于品牌/徽标,并应发送本地化信息。我现在不需要超过2个本地化(英语和葡萄牙语)但我以后可能需要更多,因此如果我的应用程序被某个俄文网站使用,应该可以很容易地添加翻译,它应该能够以俄文发送欢迎电子邮件,并带有使用我的应用程序的网站/品牌的名称,因此我支持我想做的事情类似于白标产品。我应该改为使用gettext吗 -- -- 结果例如,当我们添加了一个域,然后有一个品牌/徽标可供使用时: ----------转发消息------发件人:日期:2011年10月16日星期日下午7:29主

我的产品必须独立于品牌/徽标,并应发送本地化信息。我现在不需要超过2个本地化(英语和葡萄牙语)但我以后可能需要更多,因此如果我的应用程序被某个俄文网站使用,应该可以很容易地添加翻译,它应该能够以俄文发送欢迎电子邮件,并带有使用我的应用程序的网站/品牌的名称,因此我支持我想做的事情类似于白标产品。我应该改为使用gettext吗

--

-- 结果例如,当我们添加了一个域,然后有一个品牌/徽标可供使用时:

----------转发消息------发件人:日期:2011年10月16日星期日下午7:29主题:本田zoomer收件人: fridge@koolbusiness.com

亲爱的Niklas R感谢您在www.koolbusiness.com注册!到 编辑广告,从菜单中单击编辑。www.koolbusiness.com/vi/4361186 我们邀请您访问我们的主页,在那里您可以找到最新信息 有关我们发布的新业务公告的信息。从那里你也 可以上传视频、音乐和图像。1) 联系首选项-请 选择您的联系人首选项信息联系人如果愿意,您可以 也可以在Facebook上添加我们:apps.Facebook.com/koolbusiness


你觉得怎么样

下面是消息的构建方式。确切的内容并不重要,但重要的是它可以在多种语言中使用。你可以用gettext来做,但我认为这个例子很简单,我可以在源代码中做,因为英语和葡萄牙语将成为应用程序的主要语言一段时间,然后我们可能会添加西班牙语、法语、瑞典语,但写这些翻译是一项非技术性的工作

更新

既然gettext似乎是我的选择,我想知道它的实现。有两件事特别重要:是否包含HTML以及如何显示特殊字符,如符号。我现在使用的是呈现正确输出的代码,但是代码正确吗

django.po

msgid "Accessories & Parts"
msgstr "Partes & Acessórios"

msgid "Entire Brasil"
msgstr "«Todo Brasil»"

msgid "You can post ads for free. You can search for classified advertisements from professionals as well as private individuals; such as: cars, property, employment, pieces of furniture, electronics and others."
msgstr "<a href='/ai'>Anúncios</a> no site Montao.com.br são colocados manualmente pelo usuário aqui. <br/><a href='/li'>Todos</a> os anúncios são revistos pela equipe do Montao.com.br. O anúncio será visível durante dois messes. Grátis!"

然而,根据我的经验,创建两个cron作业(每个翻译一个)比创建一个cron作业(多个翻译)要好得多,因为一个请求可能会由于cookie中断或类似情况而意外获得错误的cookie。因此,这项翻译任务也是为了完整性和一致性,即使第一次尝试适用于英语,并且很容易被两种语言验证。我认为使用gettext进行完全本地化是件好事

如果您想要本地化,那么gettext肯定是最好的解决方案(请记住使用占位符,而不是像您在示例中那样连接字符串)

关于白色标签,如果所有依赖于客户的内容也可以本地化,那么gettext就可以做得很好了——你一箭双雕,加上gettext在某种程度上是标准的,因此所有本地化工具和专业人员都可以毫无问题地工作。但是,我想有些东西不是真正可以本地化的(比如图片),因此我建议您为这些内容保留某种预定义的结构,这样每个客户都可以插入自己的内容,而不必触摸代码(例如,徽标始终命名为logo.png,大小固定)

通常的做法是将.po文件中的msgid与源语言中的文本保持一致,这对于简单的短句非常有效。如果您有长句,带有特殊字符和HTML或其他标记,我建议您使用ID,如“result_message”,然后手动填充主资源文件(例如英语)。这使得文件不那么自我描述,并且需要花费更多的精力,但从长远来看,如果您希望保持理智(并使资源文件尽可能小),这是最好的解决方案

为了使主文件和翻译文件保持同步,有很多工具,正如我在这里所写的:

msgid "Accessories &amp; Parts"
msgstr "Partes &amp; Acessórios"

msgid "Entire Brasil"
msgstr "&#171;Todo Brasil&#187;"

msgid "You can post ads for free. You can search for classified advertisements from professionals as well as private individuals; such as: cars, property, employment, pieces of furniture, electronics and others."
msgstr "<a href='/ai'>Anúncios</a> no site Montao.com.br são colocados manualmente pelo usuário aqui. <br/><a href='/li'>Todos</a> os anúncios são revistos pela equipe do Montao.com.br. O anúncio será visível durante dois messes. Grátis!"
msgid "Dear %s\nThank you for registering with %s! To edit your ad,click edit from the menu.%s/vi/%s \nWe invite you to visit our home page where you can find latest information on new business announcements from us. From there you also can upload videos, music and images. \n1) Contact Preferences - Please Select Your Contact Preferences\nInformation Contact\nIf you like, you can also add us on Facebook: apps.facebook.com/koolbusiness"
msgstr ""