查看“自动I18N(多语言功能)”的源代码
←
自动I18N(多语言功能)
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
管理员
您可以查看和复制此页面的源代码。
原理:编译时自动遍历字符串和Attribute并将引用部分作IL变更以获得正确字符串。 使用方法:使用LessokajiWeaver时会自动处理,无需声明。 编译后会生成一个$工程名$_i18n.json的文件,它列举了全部的字符串和可多语言的Attribute。增加更多语言就改这个json即可。<syntaxhighlight lang="json"> [ {"DocumentAttribute.Name@TestApp.Program":{"default":"capture1","zh":"捕捉!"}}, {"DocumentAttribute.Description@TestApp.Program":{"default":"start capture lidar data1"}}, {"TestApp.Program.Main(args)[0]":{"default":"zh"}}, {"TestApp.Program.Main(args)[1]":{"default":"Cool!","zh":"牛啊!"}}, {"TestApp.Program.Main(args)[2]":{"default":"x"}}, {"TestApp.Program.Main(args)[3]":{"default":","}}, ] </syntaxhighlight>再次编译就会将该json的多语言翻译写入到生成的二进制程序中。 ----另外:程序中的字符串可直接正常使用,会被自动替换。但对于Attribute的翻译,获取CustomAttribute后并不能直接翻译(它是c#的metadata的一部分,无法运行时更改),因此需要人工获取Attribute的翻译。LessokajiWeaver中提供了专门的DocumentAttribute用于获取翻译文档。以下为例子:<syntaxhighlight lang="csharp"> [Document(Description = "时间偏移毫秒")] public int time_bias_ms = 0; //使用GetDocument()方法来获取Attribute的翻译内容。 var translated = typeof(X).GetField().GetDocument().Description; //程序启动时,使用以下代码切换语言: I18N.LoadI18N("en"); </syntaxhighlight>
返回
自动I18N(多语言功能)
。
导航菜单
个人工具
中文(中国大陆)
创建账号
登录
命名空间
页面
讨论
大陆简体
查看
阅读
查看源代码
查看历史
更多
导航
首页
最近更改
随机页面
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息