首页 > 代码库 > 使用gettext提取c#中的多语言占位符(nopCommerce示例篇)
使用gettext提取c#中的多语言占位符(nopCommerce示例篇)
i18n国际化通常的作法是使用gettext,即在源码中使用特殊的关键字来标识这个字符串将可能被翻译,如
@if (Model.IsCustomerForumModerator) { <li class="status"> <label>@T("Forum.Status"):</label> <span>@T("Forum.Moderator")</span> </li> }
@T("xxxx") 这句代码的意思就是说要翻译 “Forum.Status”这个词。
那么我们在开发完一个项目后,怎么提取这些字符串呢?事实上至少20年前就已经有了这样的工具,( https://www.gnu.org/software/gettext/ ) xgettext.exe就是干这事的。
gettext有相当长的文档,包含的工具非常多,提取字符串用的是 xgettext
1.首先我们得告知 xgettext 输入源是什么。
我们用以下代码生成一个待提取文件的文件列表
dir *.cshtml /s/b>cshtml.list
输出的文件类似
2. 使用xgettext生成 PO 文件
xgettext --files-from="C:\Users\用户名\Documents\opensource\nop\Presentation\Nop.Web\cshtml.list" --output-dir=c:\noptext --language=C# -kT -kNopResourceDisplayName --from-code=UTF-8
*需要在c盘先创建一个目录noptext(你可以自己指定),-kT,指示T为关键字
得到的PO文件为:
有了PO文件你就可以使用翻译工具翻译啦!!
在此推荐客户端工具 https://poedit.net/
或者线上大名鼎鼎的crowdin(收费) : https://crowdin.com/
-----------------------------------------------------广告分隔线-------------------------------------------------------------------------------------------
最后欢迎加入 nop的翻译项目
https://crowdin.com/project/nopcommerce
使用gettext提取c#中的多语言占位符(nopCommerce示例篇)