使用gettext提取c#中的多语言占位符(nopCommerce示例篇)

Posted 白菜园

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用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”这个词。

那么我们在开发完一个项目后,怎么提取这些字符串呢?事实上很久以前就已经有了这样的工具,( 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示例篇)的主要内容,如果未能解决你的问题,请参考以下文章

Inno Setup中多语言时,使用占位符填充

PHP - 如何使用带有.po文件的gettext()创建一个简单的多语言应用程序

为 Movilizer 应用程序提供本地化/多语言支持

在占位符 JSX 中渲染特殊字符

浅析NopCommerce的多语言方案

nopCommerce 3.9 大波浪系列 之 路由扩展 [多语言Seo的实现]