- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
编辑:完整的代码可以在 github repository 中找到。 .
我已经按照 this post 构建了一个 ASP.NET MVC5 多语言应用程序(1) 和this MVC4 code (2) 对于多语言网站。
在(2)中,它使用“技巧”来解决“我想要以语言 Y 呈现完整的 X.cshtml”问题:它添加后缀 ViewName.fr.cshtml,以便 View 自动重定向到正确的语言。这是代码,我认为这是与我的问题相关的代码的唯一部分:
public class LocalizedViewEngine : RazorViewEngine
{
public override ViewEngineResult FindPartialView (ControllerContext controllerContext, string partialViewName, bool useCache)
{
List<string> searched = new List<string>();
if (!string.IsNullOrEmpty(partialViewName))
{
ViewEngineResult result;
result = base.FindPartialView(controllerContext, string.Format("{0}.{1}", partialViewName, CultureInfo.CurrentUICulture.Name), useCache);
if (result.View != null)
{
return result;
}
searched.AddRange(result.SearchedLocations);
result = base.FindPartialView(controllerContext, string.Format("{0}.{1}", partialViewName, CultureInfo.CurrentUICulture.TwoLetterISOLanguageName), useCache);
if (result.View != null)
{
return result;
}
searched.AddRange(result.SearchedLocations);
}
return new ViewEngineResult(searched.Distinct().ToList());
}
public override ViewEngineResult FindView (ControllerContext controllerContext, string viewName, string masterName, bool useCache)
{
List<string> searched = new List<string>();
if (!string.IsNullOrEmpty(viewName))
{
ViewEngineResult result;
result = base.FindView(controllerContext, string.Format("{0}.{1}", viewName, CultureInfo.CurrentUICulture.Name), masterName, useCache);
if (result.View != null)
{
return result;
}
searched.AddRange(result.SearchedLocations);
result = base.FindView(controllerContext, string.Format("{0}.{1}", viewName, CultureInfo.CurrentUICulture.TwoLetterISOLanguageName), masterName, useCache);
if (result.View != null)
{
return result;
}
searched.AddRange(result.SearchedLocations);
}
return new ViewEngineResult(searched.Distinct().ToList());
}
}
问题:虽然网络在本地主机中运行得很好,但将网站部署到 Azure 时,行为似乎发生了变化(请参阅 http://educa03.org )。
默认语言设置为加泰罗尼亚语 (ca-ES)。效果很好。您可以在右上角将语言更改为西类牙语(“ES”),这是其背后的 razor 代码:
<ul class="nav navbar-nav navbar-right">
<li>@Html.ActionLink("es", ViewContext.RouteData.Values["action"].ToString(), ViewContext.RouteData.Values["controller"].ToString(), new { culture = "es" }, null)</li>
<li>@Html.ActionLink("cat", ViewContext.RouteData.Values["action"].ToString(), ViewContext.RouteData.Values["controller"].ToString(), new { culture = "ca-ES" }, null)</li>
</ul>
此语言更改适用于除索引(主页)之外的所有页面。就像在这种情况下,由于某种原因,它不会搜索 index.es.chtml
... 再说一次:它在本地主机中的行为不是这样的,所以我不知道如何调试它。另外,所有其他页面都可以正常工作,在 Azure 上也是如此。
这是路由配置:
// (some captcha-specific routing)
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
// BotDetect requests must not be routed:
routes.IgnoreRoute("{*botdetect}",
new { botdetect = @"(.*)BotDetectCaptcha\.ashx" });
// the language route:
routes.MapRoute(
"Default",
"{culture}/{controller}/{action}/{id}",
new
{
culture = "ca",
controller = "Home",//ControllerName
action = "Index",//ActionName
id = UrlParameter.Optional
}
).RouteHandler = new LocalizedMvcRouteHandler();
最佳答案
这就是我解决问题的方法:
public ActionResult Index()
{
// The Index is the only page that does not respond to the LocalizedViewEngine as it should...
var currentCulture = CultureInfo.CurrentUICulture.TwoLetterISOLanguageName;
if (currentCulture != LocalizationAttribute.DefaultCulture)
return View(string.Format("Index.{0}", currentCulture));
else
return View();
}
也就是说:我强制唯一没有被重新路由到 {View}.{Culture}.cshtml
的情况(Action Index),并强制在 Action 内部这样做在 Controller 中。我不喜欢这个解决方案,但至少它有效。它仅在这种非常特殊的情况下进行本地化,这是由于 Azure 部署对索引的处理方式与我的本地主机 IIS 有所不同。
关于c# - 多语言网站 : Azure deployment different behavior than localhost,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35068513/
谁能解释一下 localhost:5000 之间的区别和其他本地主机。 谢谢你。 最佳答案 localhost:5000 正在访问端口 5000 上的 localhost。 例如,如果您从浏览器访问它
假设本地 Python 脚本正在运行网络服务器。 有没有办法设置别名,以便http://localwebapp/等于 http://localhost:1234/ ? 编辑:或至少 http://lo
我对网络开发完全陌生。所以我总是看到“localhost”之类的东西并问自己:那是什么? 我感觉知道什么是“主持人”了。执行某事的东西。所以我的 Mac 是其上运行的所有内容的主机。那么“localh
我正在学习 xmpp 编程,我使用 sudo apt-get install ejabberd 在我的 ubuntu 15.10 上安装了 ejabberd,然后我通过添加管理员用户 ejabberd
是否总是可以 ping localhost 并解析为 127.0.0.1? 我知道 Windows Vista、XP、Ubuntu 和 Debian 都这样做,但每个人都这样做吗? 最佳答案 任何正确
我们在同一台计算机上使用客户端/服务器 RMI 通信(因此所有 ip 都应该是本地主机)。 我们启动注册表(使用默认端口1099) registry = LocateRegistry.createRe
我已经在 windows/system32/drivers/etc/ 中验证了我的主机文件其中有一个 localhost 的条目,但它不会去任何地方。我必须在 URL 中有一个端口号:http://1
我的主机上有一个守护程序在某个端口(即 8008)上运行,我的代码通常通过联系 localhost:8008 与守护程序交互。 我现在已经将我的代码容器化了,但还没有将守护进程容器化。如何将容器上的
在 SMTP 中,HELO 命令之后应该是什么,它有什么作用? 我在我的应用程序中发送电子邮件,我想知道我是否应该使用 localhost、发件人地址的域名 (me@example.com)、应用程序
我遇到无法打开本地主机Web应用程序的问题,因为Microsoft Edge会将URL http://localhost:3000重定向到https://localhost:3000。因此,我得到了错
一直在尝试设置我想用于登录的 Facebook 应用程序,以允许我在 Mac 的本地主机上测试它。 Facebook 抛出错误“应用程序域:http://localhost 不是有效域。”当我尝试将站
我在 MacOS 10.15 上使用 minikube 1.4.0 版和 Kubernetes 1.16.0 版。 我正在开发一些依赖于外部服务的授权/认证代码。在对服务的 API 调用中,我需要提供
当我用谷歌搜索这个问题时,我注意到这是 nginx 的一个常见问题。但是我从来没有在我的机器上使用过 nginx。我使用 MAMP,偶尔使用 Python Bottle。 现在,无论我的 MAMP/P
我在本地运行 Squid,我想通过在 localhost:3000 上运行的 Ruby 服务器通过 Squid 进行访问。 如果我尝试访问 localhost:3000,我会收到以下消息: The f
我使用 VS 2012 默认模板创建了 MVC4 移动应用程序。使用 http://localhost/mvcapplication1/ 在桌面浏览器中运行良好但是当我尝试在 WP8 Emulator
如何将默认的 xampp localhost c:xampp/htdoc 更改为另一个文件夹,即 c:/alan?当我使用 IP 地址时,我应该能够在 C:/alan 中查看我的网站文件。 感谢您帮助
我正在使用带有centos版本6(Fedora)的Vmware。我正在使用hadoop 1.0.4版本。我的 http://localhost:50070 地址显示为“无法连接”,但是 http://
我正在运行带有 apache 2.4.38 和 Maria DB 10.1.38 + PHP 7.3.3 的 Windows Server 2016 有时,我可以看到(使用 netstat)从 127
尝试通过 SSH 连接到本地主机时的调试信息 ssh root@localhost -vvv 输出 OpenSSH_6.6.1、OpenSSL 1.0.1f 2014 年 1 月 6 日debug1:
我正在使用 Node 和 Laravel 编写一个应用程序。我正在运行小型 laravel 本地服务器,该服务器解析为 http://localhost:8000 。我还在 localhost:300
我是一名优秀的程序员,十分优秀!