Warning: mysqli_num_fields() expects parameter 1 to be mysqli_result, boolean given in /www/wwwroot/dev.zhalaotie.com/wp-includes/wp-db.php on line 3215

Warning: mysqli_num_fields() expects parameter 1 to be mysqli_result, boolean given in /www/wwwroot/dev.zhalaotie.com/wp-includes/wp-db.php on line 3215
框架后端国际化问题 – 扎老铁
Warning: mysqli_num_fields() expects parameter 1 to be mysqli_result, boolean given in /www/wwwroot/dev.zhalaotie.com/wp-includes/wp-db.php on line 3215

Warning: mysqli_num_fields() expects parameter 1 to be mysqli_result, boolean given in /www/wwwroot/dev.zhalaotie.com/wp-includes/wp-db.php on line 3215
Warning: mysqli_num_fields() expects parameter 1 to be mysqli_result, boolean given in /www/wwwroot/dev.zhalaotie.com/wp-includes/wp-db.php on line 3215
class="post-53102 post type-post status-publish format-standard hentry">

框架后端国际化问题

Could not localize ‘基础信息’ to culture ‘zh-CN’ for Type ‘LocalizationAssembly’, no specified localization Resource file 这是啥错?
朱老师 13:05:48
这两天他们在搞国际化,原来不报错的代码开始报错了
小竹 13:06:03
LocalizationAssembly.json 可能没了
小竹 13:06:22
哪个项目
小竹 13:06:41
国际化 小梁子和曹都弄过
朱老师 13:08:36

朱老师 13:08:52
他们建了很多文件 这样行么?
小竹 13:08:56
fullname 是否正确
朱老师 13:09:32
fullname是指什么
小竹 13:10:12
其实可以这些文件创建了,然后 key value 放到 _Shared.json 里面,这样好搜索
小竹 13:10:30
类名全名 可能没对应
小竹 13:12:40
这个类全名和json要能对应起来
朱老师 13:13:27
只要有一个类漏写了或者写错了就会报错么?
小竹 13:14:47
应该是调用的时候找不到会报错
小竹 13:14:55
不调用不报错
朱老师 13:17:26
大小写敏感么?
小竹 13:17:47
敏感

 

写在StartupEventProcessor里的也要加一个 StartupEventProcessor.json 吗?

通常仅 controller,service,view cshtml(cshtml 里面使用 controller 的国际化内容) 里面要加,因为你调了框架提供的 L 国际化方法,所以是默认找当前类的
在其它类里面,框架没有直接提供 L 方法,通常处于方便,我们是自己为一个 module 指定了一个 LocalizationAssembly 类,然后通过它获取到它的国际化对象,然后调用国际化方法

所以只要 namespace.LocalizationAssembly.json 文件存添加过就可以了。

 

using System;

namespace Bitlab.IOT
{
    // 要是 internal 的
    class LocalizationAssembly
    {
    }
}


namespace Bitlab.IOT
{
    public class DeviceDataSyncer : IDisposable
    {
        // 不在框架提供的 controller,service,view 里时,通过 LocalizationHelper.For<类型>() 获取指定类的国际化对象。
        // 如果不是大型模块,处于方便,我们会在每个 module 建一个名为“LocalizationAssembly”的空类,然后在框架代码之外的地方,统一用这个类来获取国际化对象。
        // 那么与之对应的,国际化的数据,就要写在 Bitlab.IOT.LocalizationAssembly.json 中,不过,不是大型模块(即国际化不需要分的太细的情况下),则模块下的所有国际化内容,统一写在默认的 _Shared.json 中即可。
        static readonly LocalizationHelper L = LocalizationHelper.For<Bitlab.IOT.LocalizationAssembly>();

        public void MethodA(){
            // 获取国际化内容
            var msg = L.L("Serial Port '{0}' disconnected, all underlying device will offline", this._portName);
        }
    }
}

 

注意事项:

LocalizationHelper.For<LocalizationAssembly>() 时,不要引用到别的模块的 LocalizationAssembly 了,所以LocalizationAssembly 要是 internal 的。

发表评论

电子邮件地址不会被公开。