当前位置: 首页 > news >正文

地图定位网站开发seo营销全景图

地图定位网站开发,seo营销全景图,接手一个新的网站应该怎样做,建设隔热网站前言最近的新型冠状病毒流行让很多人主动在家隔离#xff0c;希望疫情能快点消退。武汉加油#xff0c;中国必胜#xff01;Asp.Net Core 提供了内置的网站国际化#xff08;全球化与本地化#xff09;支持#xff0c;微软还内置了基于 resx 资源字符串的国际化服务组件。… 前言       最近的新型冠状病毒流行让很多人主动在家隔离希望疫情能快点消退。武汉加油中国必胜       Asp.Net Core 提供了内置的网站国际化全球化与本地化支持微软还内置了基于 resx 资源字符串的国际化服务组件。可以在入门教程中找到相关内容。       但是内置实现方式有一个明显缺陷resx 资源是要静态编译到程序集中的无法在网站运行中临时编辑灵活性较差。幸好我找到了一个基于数据库资源存储的组件这个组件完美解决了 resx 资源不灵活的缺陷经过适当的设置可以在第一次查找资源时顺便创建数据库记录而我们要做的就是访问一次相应的网页让组件创建好记录然后我们去编辑相应的翻译字段并刷新缓存即可。       但是又是但是经过一段时间的使用发现基于数据库的方式依然存在缺陷开发中难免有需要删除并重建数据库初始化环境。这时之前辛辛苦苦编辑的翻译就会一起灰飞烟灭 (╯‵□′)╯︵┻━┻ 。而 resx 资源却完美避开了这个问题这时我就在想能不能让他们同时工作兼顾灵活性与稳定性鱼与熊掌兼得。       经过一番摸索终于得以成功在此开贴记录分享。正文设置并启用国际化服务组件       安装 Nuget 包 Localization.SqlLocalizer这个包依赖 EF Core 进行数据库操作。然后在 Startup 的 ConfigureServices 方法中加入以下代码注册  EF Core 上下文1 services.AddDbContextLocalizationModelContext(options 2 { 3 options.UseSqlServer(connectionString); 4 }, 5 ServiceLifetime.Singleton, 6 ServiceLifetime.Singleton);       注册自制的混合国际化服务services.AddMixedLocalization(opts { opts.ResourcesPath Resources; }, options options.UseSettings(true, false, true, true));       注册请求本地化配置 1 services.ConfigureRequestLocalizationOptions(2 options 3 {4 var cultures Configuration.GetSection(Internationalization).GetSection(Cultures)5 .GetListstring()6 .Select(x new CultureInfo(x)).ToList();7 var supportedCultures cultures;8 9 var defaultRequestCulture cultures.FirstOrDefault() ?? new CultureInfo(zh-CN); 10 options.DefaultRequestCulture new RequestCulture(culture: defaultRequestCulture, uiCulture: defaultRequestCulture); 11 options.SupportedCultures supportedCultures; 12 options.SupportedUICultures supportedCultures; 13 });       注册 MVC 本地化服务复制代码1 services.AddMvc() 2 //注册视图本地化服务 3 .AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix, opts { opts.ResourcesPath Resources; }) 4 //注册数据注解本地化服务 5 .AddDataAnnotationsLocalization();       在 appsettings.json 的根对象节点添加属性复制代码Internationalization: {Cultures: [zh-CN,en-US] }       在某个控制器加入以下动作 1 public IActionResult SetLanguage(string lang)2 {3 var returnUrl HttpContext.RequestReferer() ?? /Home;4 5 Response.Cookies.Append(6 CookieRequestCultureProvider.DefaultCookieName,7 CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(lang)),8 new CookieOptions { Expires DateTimeOffset.UtcNow.AddYears(1) }9 ); 10 11 return Redirect(returnUrl); 12 }       准备一个页面调用这个动作切换语言。然后大功告成       这个自制服务遵循以下规则优先查找基于 resx 资源的翻译数据如果找到则直接使用如果没有找到再去基于数据库的资源中查找如果找到则正常使用如果没有找到则按照对服务的配置决定是否在数据库中生成记录并使用。自制混合国际化服务组件的实现       本体       注册辅助扩展       原理简介       服务组件利用了 DI 中可以为同一个服务类型注册多个实现类型的特性并在构造方法中注入服务集合便可以将注册的所有实现注入组件同时使用。要注意主控服务和工作服务不能注册为同一个服务类型不然会导致循环依赖。内置的国际化框架已经指明了依赖 IStringLocalizerFatory 必须将主控服务注册为 IStringLocalizerFatory工作服只能注册为其他类型不过依然要实现 IStringLocalizerFatory所以最方便的办法就是定义一个新服务类型作为工作服务类型并继承 IStringLocalizerFatory。       想直接体验效果的可以到文章底部访问我的 Github 下载项目并运行。结语       这个组件是在计划集成 IdentityServer4 管理面板时发现那个组件使用了 resx 的翻译而我的现存项目已经使用了数据库翻译存储两者又不相互兼容的情况下产生的想法。       当时 Localization.SqlLocalizer 旧版本2.0.4还存在无法在视图本地化时正常创建数据库记录的问题也是我调试修复了 bug 并向原作者提交了拉取请求原作者也在合并了我的修复后发布了新版本。       这次在集成 IdentityServer4 管理面板时又发现了 bug正准备联系原作者看怎么处理。
http://wiki.neutronadmin.com/news/360320/

相关文章:

  • 做logo的网站互联网营销师是什么
  • 查公司资质在哪个网站河北网站开发价格
  • 网站网页设计哪个好网站建设销售总结
  • 用什么网站可以做镇江网站建设方案
  • 广东专业移动网站建设哪家好动漫制作好找工作吗
  • 跨越网站建设科技有限公司app成本
  • wordpress 安装问题网站建设布局利于优化
  • 建设定制网站wordpress首页调用所有分类
  • 制作网站第一步个人备案的网站可以做商城
  • 网站建设div设置圆角冒险岛钓鱼网站做啥用
  • 做ppt介绍网站吗南京广告制作公司
  • 上海网站建设哪lnmp怎么做网站
  • 鹰眼智能营销系统lnmp wordpress优化
  • 谷歌网站怎么做排名丹江口市建设局网站
  • 文化体育局网站建设免费软件的特征
  • 学做网站论坛教学视频下载国家企业信息网官网
  • 百度SEO是谁做的网站旅游网站内容规划
  • 阿克苏网站建设价格天津做宠物饲料的网站
  • 德州seo排名seo关键词排名优化官网
  • 用二级页面做网站的源代码网站建设需求调研过程
  • 北京网站优化厂家华天动力oa系统
  • 电子商务网站建设资讯做本地网站
  • 佛山格尔做网站的公司wordpress 修改样式
  • 怎么自己做优惠券网站外包公司设计完网站谁负责运营
  • 鸿扬家装网站建设免费域名证书申请
  • 公司网站案例展示自动化设计网站建设
  • wordpress添加备案信息长沙网站搭建seo
  • 怎么在手机上做网站网站建设后的心得
  • 个人单页网站怎样做网站排名
  • 商城网站建设天软科技网站基本建设的原理