问题标签 [currentuiculture]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
636 浏览

powershell - 完全更改当前 PowerShell 会话的语言(包括文化)

我的 Win 10 系统有西班牙语。我的意思是用英语完全操作 PowerShell 会话。在我尝试过的所有事情中(见下文),我设法将当前会话的 更改为 ,但没有UICulture将.en-USCulture

有什么方法可以永久更改Culture当前 PowerShell 会话?


改变Culture(没有成功)

注:我推断的System.Threading.ThreadThreading.Thread都是一样的。


我尝试过的其他事情

答案在这里这里。由于它们是 SO 帖子,我想不在这里发布它们会减少混乱。但如果认为方便,我可以添加它们。

我发现了其他一些帖子,都重复了相同的命令。


编辑

设置文化的方法:

S1。Win 设置 -> 时间和语言 -> 区域 -> 区域格式

S2。Set-Culture <culture>

S3。[CultureInfo]::CurrentCulture=<culture>

S4。[Threading.Thread]::CurrentThread.CurrentCulture=<culture>

获得文化的方法:

G1。与 S1 相同。

G2。Get-Culture

G3。[CultureInfo]::CurrentCulture

G4。[Threading.Thread]::CurrentThread.CurrentCulture

我发现了什么:

  1. S3/G3 和 S4/G4 似乎涉及相同的会话设置/环境变量/注册表项等(?),并且完全等效。
  2. 方法 S1 在新会话中影响(G2、G3、G4)。
  3. 方法 S2 立即影响 G1,并在新会话中影响 (G3, G4)。
  4. 方法 (S3, S4) 立即(微不足道)影响 (G3, G4) 但仅在当前线程中,而不是会话中,并且 (1, 2) 根本没有。
  5. 方法 S1 中可用的选项比方法 S2 中的选项更丰富。我可以在 S1 中更改为“西班牙语(阿根廷)”、“英语(美国)”等,它会在 PS 中得到体现。但是如果我在 S1 中更改为“Spansh (Brazil)”,那么 PS 将显示en-US,就好像它是一种后备文化一样。
0 投票
1 回答
190 浏览

powershell - PowerShell 多条命令的变化范围 - UICulture

在我修补与问题目标有关的 PS 5.1完全更改当前 PowerShell 会话的语言期间, 我观察到一个“奇怪”的行为:

(上面的函数是从这里获得的)。[system.threading.thread]::currentthread.用任何地方替换[cultureinfo]::产生完全相同的结果。

我发现奇怪的是:

  1. 我得出结论,“线程”(当前线程)的边界似乎是执行命令行。
    尽管如此,这里它被引用为“会话范围(非持久)解决方案”(响应其 OP Temporarily change powershell language to English?)。该答案甚至发布了一个包装函数来限制对执行命令的更改范围。
    该信息显然反对这一点,它指出“[Threading.Thread]::CurrentThread.CurrentUICulture仅影响当前的单线”(与我的结论一致)。

  2. Culture即使Set-Culture仅在启动新会话后生效 ,我也可以立即更改那个“线程”。
    我可能会得出结论,这就是它的工作原理。

这两点如何合理化? (我欢迎权威文档)。

0 投票
2 回答
2279 浏览

powershell - PowerShell UICulture 与 Windows 设置

在我在 Win 10 下修改 PS 5.1 的过程中,与问题的目标有关,即为当前 PowerShell 会话完全更改语言(包括文化),我遇到了几个相关的问题。

  1. 与 UICulture 关联的 Windows 设置在哪里?我没有找到“区域和语言”控制面板的“键盘和语言”选项卡,如此所示。

  2. 这可以从 PS 中持续更改吗?到目前为止,我发现的所有内容都只存在于会话中。


设置Settings -> Time and Language -> Language -> Windows显示语言显示“Español(España)”,PS给出

没有任何干预更改,并且在刚刚启动的会话中。

0 投票
0 回答
32 浏览

c# - 锁定 Thread.CurrentThread.CurrentUICulture

我有一种方法可以使用特定的 CurrentUICulture 运行操作,最后它会回滚到原始的 CurrentUICulture。这是片段

CurrentUICulture 在我项目的不同部分临时更改。

问题是有时“action()”不会在临时设置的 CurrentUICulture 传递给“ExecuteInLanguage”的情况下运行,而是在其他语言中运行,可能是因为 CurrentUICulture 在其他地方同时更改。

使用“锁定”可以避免所描述的正确解决方案吗?

0 投票
0 回答
38 浏览

.net - 设置 CultureInfo.CurrentCulture 也设置 CurrentUICulture,反之亦然

出于某种原因,在我的应用程序中设置CultureInfo.CurrentCulture为“de-CH”时,它也会自动设置CultureInfo.CurrentUICulture为“de-CH”。如果我以相反的方式进行操作,它也会发生。我的系统位于“en-US”

在此处输入图像描述

正如您在图像中看到的,我将“de-CH”设置为CurrentCulture它也设置CurrentUICulture了。在我将 'fr' 设置为 后CurrentUICulture,它也设置CurrentCulture为 'fr'。

有谁知道这是来自 Xamarin Forms、.NET 的错误还是我做错了什么?

更新

该问题也发生在 UWP 应用程序上,因此不是 XF 问题。

0 投票
1 回答
674 浏览

c# - 根据当前 CultureInfo ASP.NET Core 存储 DateTime

我的应用程序服务器与我的大多数应用程序用户当前所在的位置不同。

在存储日期时间值时,我意识到如果我只是这样做

时间是根据服务器位置时间存储的,无论我在Startup.cs课堂上是否做了以下事情

我的用户的位置在 UTC+1,而服务器当前位于 UTC-8 的位置

有没有办法让我的日期时间值按照类中的CurrentCultureInfo设置存储在数据库(SQL Server)中startup.cs

我目前仅将日期时间值存储为 UTC,并在从数据库中检索值后将其转换为等效的 UTC+1 值。

所以,我愿意

在检索显示给用户的值后,我将其转换为

我希望有一个更好的方法来解决这个问题。

谢谢

0 投票
1 回答
111 浏览

c# - 如何在 .NET Core 3.1 的子线程中设置主线程 CultureInfo.CurrentUICulture 的值?

背景:

我有一个异步等待函数,它从外部源获取语言和区域设置参数,这将用于设置为 CurrentUICulture。

我的 Web 应用程序是使用 C# 在 .NET Core 3.1 中构建的

问题:

CurrentUICulture 仅在 Child 方法的上下文中设置,一旦超出此范围,CurrentUICulture 就不会反映更改的值。

我的困境:

我知道始终建议从主线程(而不是从子线程)设置 CurrentUICulture 的值,但我正在处理一个对 Thread.CurrentThread.CurrentUICulture 有太多依赖的现有代码,实际上很难让我在不同的地方改变。

片段:

实际输出:

(假设外部服务返回的值为“pt-BR”[葡萄牙语巴西])

期望的输出:

任何解决问题的线索都将是非常可观的。

0 投票
0 回答
174 浏览

blazor - 为每个客户端连接设置默认语言文化 blazor-server

我有一个 blazor-server 应用程序,并且正在寻找一种能够根据连接到该应用程序的每个客户端的偏好设置默认语言的方法。

我目前有这段代码,Startup.Configure()它通过调用成功地为每个用户设置了默认语言user.GetPreferences().language,它从数据库中获取了他们的首选语言。但是,由于此代码仅在服务器启动时运行一次(对吗?),如果用户更改了他们的首选项然后从另一台机器登录,则DefaultRequestCulture = new RequestCulture()仍然包含旧的首选项。因此,它会使用他们的旧语言偏好加载应用程序。

我还尝试在我CurrentCulture的. 这样做可以解决问题并从不同的机器连接为每个客户端设置正确的默认语言。但似乎在 ui 加载后设置了文化。这意味着用户必须手动刷新页面才能更改语言。CurrentUiCultureOnInitializedAsync()MainLayout.razor

每次客户端通过从数据库查询连接时,是否有一种有效的方法来设置默认语言?

谢谢

0 投票
0 回答
60 浏览

c# - 如何改变类库(dll)的当前文化

我有一个 dll,它有一个表单,这个表单支持两种语言(具有可本地化的语言属性)。

然后我将我们的 dll 添加到主项目并从 dll 调用表单。表单的语言仍处于默认模式。

我必须说我在 program.cs 中设置了 CurrentCulture 和 CurrentUICulture 的值,如下所示:

问:我如何才能将表单的默认文化从 dll 外部更改为 dll,但以编程方式?

请任何人帮助我。

谢谢