.NET 相当于 Java 资源包中的选择吗?

2024-01-10

在Java资源包中,我可能有以下资源包定义:

en_GB - 英式英语

jobs.search.resultstr = There {1,choice,0#are no jobs|1#is one job|1<are {1,number,integer} jobs} for your search

ceb_PH-宿务语

jobs.search.resultstr = Adunay {1,choice,0#mga walay mga|1#mao ang 1 nga|1<{1,number,integer}} trabaho alang sa {1,choice,0#inyong mga|1#imong|1<inyong mga} search

我用来提取资源的代码将根据输入数据做出选择并正确格式化字符串,从而产生三种不同输出之一。

伪代码:

myResultStr = resourceBundle.getResource("jobs.search.resultStr", jobs.recordCount)

这将导致根据所选区域设置和返回结果数输出以下字符串之一。

en_GB

  1. 没有适合您搜索的职位
  2. 有一份工作可供您搜索
  3. 有 2 个职位可供您搜索

or

ceb_PH

  1. Adunay mga walay mga trabaho alang sa inyong mga 搜索
  2. Adunay mao ang 1 nga trabaho alang sa imong 搜索
  3. Adunay 2 trabaho alang sa inyong mga 搜索

我对 .NET 开发比较陌生,我一直在研究 .NET .resource 和 .resx 本地化方法,但我似乎找不到任何关于如何实现相同级别的提示正如我上面在 .NET 框架中所说明的本地化灵活性。

任何有关我如何在 .NET 中实现这一目标的指导和指示都将受到欢迎。

Thanks


我解决这个问题的方法确实是使用 CustomFormatter 实现 ChoiceFormat 的等效项,自定义 ResourceBundle 对象使用它来代理对 .NET resx 文件的访问。通过实现涵盖我需要的所有语言(以及将来更多)的 Pluraliser 对象层次结构以及 ChoiceFormat,我可以准确地本地化字符串。

代码看起来有点像这样......

String.Format(new ChoiceFormatProvider(Session["CultureInfo"]), rb.GetString("resxkey", Session["CultureInfo"]), new object[] { 5 });

GetString 返回的字符串由 resx 文件本地化,但随后由自定义格式化程序处理,它们看起来像这样......

{0:choice,0#zero str|1#one str|1<more than one}

更进一步,我可以处理这样格式化的字符串......

{0:plural,zero#zero str|one#singular str|two#dual str|few#few str|many#many str|other#other plural str}

这两个功能与一组自定义复数对象相结合,可以实现非常复杂的本地化功能。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.NET 相当于 Java 资源包中的选择吗? 的相关文章

  • 如何解决文件被另一个进程使用的问题?

    我一直在 VS NET 2010 中调试 没有任何问题 但现在无法建造 我收到错误 Unable to copy file filename to bin Debug filename The process cannot access t
  • 如何用日语创建 ggplot2 标题?

    我正在准备日语演示文稿 并希望图像的标题和图例名称为日语 我可以让文本在 RStudio 中渲染得很好 但是当渲染图像时 日语字符仅显示为方框 x 10 10 y x x df data frame x y ggplot df aes x
  • 使用 apachesoap:使用 .net 在 Web 服务中映射复杂数据类型

    我有一个用 Coldfusion 编程的 Web 服务 我试图使用 c net 来使用它 特定的 Web 服务返回一个 Coldfusion 结构 具有键和值的项目的集合 该结构由 Web 服务公开为 apachesoap Map 类型的复
  • 有没有办法在 C# 中仅通过文件名查找文件?

    我们现在使用绝对路径或相对路径在 C 应用程序中查找文件 如果文件位于当前工作目录下或 路径 之一下 有没有办法仅通过名称查找文件 使用绝对路径不好 使用相对路径也不够好 因为我们可能通过重命名或移动项目文件夹来更改项目结构 如果我们的代码
  • .NET 中的错误和异常有什么区别?

    您能向我解释一下错误和异常之间的区别吗 一个例外是利用语言语义的类 正如其他人所说 异常会中断堆栈的执行 直到被捕获 一个例外can用于传达错误 但更一般地用于传达发生了异常情况 另一方面 错误可能是异常的 也可能不是异常的 错误有以下几种
  • 从 DataGridViewSelectedRowCollection 复制列详细信息

    我有一个 DataGridView 它绑定到一个由设计时未知的 SQL 查询返回的 DataSet 好吧 我知道查询是什么 我只是不知道用户选择了哪一个 我允许用户从表中选择一组行并单击 确定 按钮 然后我想将这些行复制到新的 DataGr
  • 多线程 Web 应用程序

    我知道有很多情况都是在应用程序中使用多线程的好例子 但是什么时候最好在 net Web 应用程序中使用多线程 Web 应用程序几乎肯定已经由托管环境 IIS 等 实现多线程化 如果您的页面受 CPU 限制 并且想要使用多个核心 那么可以说多
  • Environment.CurrentDirectory 与 System.IO.Directory.GetCurrentDirectory

    我正在编写一个 Net WinForms 并不断在调试和发布配置之间切换 并且有一些文件我需要任一配置才能访问 我想做的是将文件放在 BIN 文件夹中的公共目录中 这样它看起来像这样 MyProject Bin CommonFiles My
  • Rx.NET 中是否有一个Subject 实现,其功能类似于BehaviourSubject,但仅在值发生更改时才发出?

    有没有Subject https learn microsoft com en us previous versions dotnet reactive extensions hh229699 v vs 103 Rx NET 中的实现在功能
  • 打印“X”个字符数与“X”字符串长度的所有可能组合(暴力破解)

    我正在尝试编写一个单词组合生成器 我的意思是打印 X 个字符数与 X 字符串长度的所有可能组合 首先 我需要说的是 我在 StackOverFlow 中看到了一个关于这个问题的问题 其中有很多单词生成器的答案来执行此操作 在不同的语言上 但
  • 即使没有异步,CallContext.LogicalGetData 也会恢复。为什么?

    我注意到CallContext LogicalSetData LogicalGetData不按照我期望的方式工作 内部设置的值async方法得到恢复即使没有异步或任何类型的线程切换 无论如何 这是一个简单的例子 using System u
  • SecurityAction.RequestMinimum 在 .Net 4.0 中已过时

    最近 我们的 Net 客户端库正在升级以针对 Net 4 0 进行编译 将目标框架更改为4 0后 应用程序出现一些编译错误 In AssemblyInfo cs assembly SecurityPermission SecurityAct
  • Visual Studio '17 未在参考管理器中显示程序集

    我遇到的问题是 我似乎无法弄清楚如何添加对某些解决方案的引用 在我从 Visual Studio 17 开始的大多数解决方案中 我在解决方案资源管理器中看到 引用 但例如对于 asp net core web api 我得到 依赖项 每当解
  • 获取 Windows 窗体应用程序的执行目录的路径

    我想获取 Windows 窗体应用程序的执行目录的路径 即可执行文件所在的目录 有谁知道 NET 中的内置方法可以做到这一点 在VB NET中 Dim directory as String My Application Info Dire
  • VB.net 应用程序保留以前的版本

    我有一个正在发布的 Visual Basic 项目 并且每次都会增加版本号 当我安装新版本时 它会打开 但一旦应用程序重新启动 它似乎就会恢复到以前的版本 我不知道为什么 尝试更新发布应用程序时所需的最低版本 转到应用程序属性 gt 发布
  • 如何使用 LibGit2Sharp 从 Git 获取更改?

    下面的代码将 Git url 克隆到测试目录 var url http abc 555 com team project 555 git var path E temp 555 var credential new Credentials
  • 装配和产品版本不匹配

    我正在尝试在 asp net 网站中使用 Ajax 控件工具包 我从之前的一个示例项目中复制了 dll 它有以下详细信息 Assembly Version 3 5 40412 0 File Version 3 5 40412 2 Inter
  • Parallel.ForEach - 优雅取消

    关于等待任务完成和线程同步的主题 我目前有一个迭代 我已将其包含在 Parallel ForEach 中 在下面的示例中 我在评论中提出了一些关于如何最好地处理循环的优雅终止的问题 NET 4 0 private void myFuncti
  • Ajax 函数在重定向后不保存滚动位置

    正如标题所述 我编写了一个 ajax 函数 该函数应该滚动到用户在重定向之前所在的位置 我写了一个alert对于测试场景 它确实触发了 但滚动不断回到顶部 我在这里做错了什么 JavaScript ajax type GET url Adm
  • 如何将对 System.Data.DataSetExtensions 的引用添加到网站 ascx.cs 文件?

    我们正在处理一个网站项目并尝试参考System Data DataSetExtensions 使用 Web 应用程序会更好 不过 技术主管有她的理由 这是我们尝试过的 找到装配路径 打开 Visual Studio 命令提示符并运行sn e

随机推荐

  • 获取 GIF 图像的第一帧而不下载所有其他帧

    我想从网络上获取一张GIF图像 但我发现如果我下载整个GIF图像 会导致大量的网络流量 我可以只获取 GIF 图像的第一帧而不下载所有其他帧吗 9 年零 6 个月后 正是伸出援手的最佳时机 这可以使用 ImageMagick 使用以下命令来
  • 离子服务/离子运行不反映变化

    ionicserve 和 ionicrun 都没有反映我的任何最新更改 ionicserve 显示了几个小时前的情况 ionicrun 显示了大约一个小时后的情况 从那时起 我放弃了所有更改 并从父分支创建了一个新分支 但它仍然在第一个分支
  • 如何以守护进程模式运行 Django 服务器?

    我想在守护进程模式下运行 Django 开发服务器 这样当我退出 shell 时 服务器仍然会运行 我怎样才能做到这一点 除了 Bernhard 所说的之外 如果您计划将其用于生产环境 您应该使用 mod wsgi 在 apache 下运行
  • 当用户滚动到页面最底部时淡入/淡出固定位置 div

    这看起来相当简单 但我试图让固定位置的页脚 div 在用户滚动到网页最底部时滑动并淡入 然后在用户向上滚动时滑动并淡出 我搜索了 Stack Overflow 其他人提出了建议的解决方案 但我的代码导致我的 div 只能滑动和淡入 当用户向
  • 我的数据库没有更新,如果我的JSON数据也会增加

    我正在将 JSON 数据解析到数据库 该数据显示在我的 lisview 中 但是第一次它从我的 JSON 获取数据并将其存储在数据库中 如果我在网站中添加任何内容 它不会升级 json 也会增加 但不会增加反映在数据库中 数据库部分也没有升
  • Prism可以使用.NET Core内置的依赖注入吗?

    我想使用 NET Core 3 1 启动 WPF 应用程序Prism可以利用 Net Core的内置DI IServiceCollection 或者我必须使用Unity之类的东西吗 如果Prism不能使用内置DI 它们可以并存吗 Prism
  • 为什么编译器不能完全解决死代码检测问题?

    我在 C 或 Java 中使用的编译器具有死代码预防功能 当一行永远不会被执行时发出警告 我的教授说编译器永远无法完全解决这个问题 我想知道这是为什么 我不太熟悉编译器的实际编码 因为这是一个基于理论的课程 但我想知道他们检查什么 例如可能
  • 测试文件是否已下载 Selenium/C# (Google Chrome)

    我想单击下载文件的按钮on click 并测试是否已下载所需的文件 我已经用 google 搜索过这个问题 但不幸的是没有找到关于这个主题的任何具体答案 我发现的很多帖子都已经过时了 2014 年 我敢打赌 Selenium 现在肯定已经改
  • WSO2 API 管理器,无效。无法找到请求目标的有效认证路径

    我已经在本地启动了 WSO2 API Manager 我正在尝试添加 API 端点https联系 它向我展示了这种错误 它向我展示了Invalid unable to find valid certification path to req
  • C# 与 Excel 中的模数有何不同?

    我正在试验负基数系统 并使用 Excel 来处理和检查我的计算 我注意到 C 与 Excel 之间存在差异 为什么 C 返回的结果与 Excel 不同 例如 C 146 3 2 Excel mod 146 3 1 假设我们有四个整数 x y
  • string.replace(fromCharCode() , '') 无法替换字符

    当我解析 XML 时 它包含异常的十六进制字符 所以我尝试用空白来代替它 但这根本不起作用 原人物 hex code 253 255 code xmlData String replace String fromCharCode 253 2
  • 查找矩阵内的最大和子=矩形[重复]

    这个问题在这里已经有答案了 可能的重复 获取总和最大的子矩阵 https stackoverflow com questions 2643908 getting the submatrix with maximum sum 给定一个正整数和
  • 如何根据不同的URL参数和请求值写入不同的数据库?

    我正在尝试创建一个 REST API 它选择要写入的适当的 mongo 数据库以及正确的集合 如何选择与参数同名的数据库以及集合 即将推出的 v0 6 Eve 将原生支持多个 Mongo 实例 新功能 支持多个 MongoDB 数据库和 或
  • 如何在 Mac OS 上使用 homebrew 将 postgresql 从 10.1 降级到 9.6 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我的 Mac 上装有 postgresql 10 1 我的工作网站需要 9 6 才能在本地计算机上运行 找不到有关如何卸载或降级到 9 6
  • 如何解决此错误 (GWT)

    运行我的应用程序后出现此错误 编译过程中没有出现错误 另外 没有其他应用程序在运行 在端口 8888 警告 上启动 Jetty 失败 电子邮件受保护 cdn cgi l email protection 8888 java net Bind
  • 如何在java中为游戏实现双缓冲?

    因此 在我正在开发的游戏中 我有一个弹珠跟随鼠标 但当它这样做时 屏幕会闪烁 背景包括两个 jpeg 和 9 个矩形 我该如何进行双缓冲呢 这是主窗口的代码 Write a description of class Window here
  • R:分割数字字符串

    我正在尝试拆分 40 位数字的数字字符串 即拆分123456789123456789123456789 into 1 2 3 4 etc 很遗憾strsplit不起作用 因为它需要字符 并使用转换字符串as character不起作用 因为
  • Zappa/AWS - 电子邮件不会发送并且只是超时

    目前 我已经为我的交易电子邮件提供商 Postmark 尝试了普通的 Django SMTP 和一些不同的基于 api 的 Django 库 当我运行我的开发服务器时 一切都运行良好 通过 Postmark API 发送电子邮件没有任何问题
  • Get-ADPrincipalGroupMembership -Identity 不接受变量

    在几个不同的域中工作 这些域具有不同的命名模式 因此 我正在编写一个进入每个域的脚本 并检查它们的组成员身份 该脚本所做的第一件事是询问用户的姓氏 然后我用Get ADUser选择samaccountname并将其绑定到一个变量 samac
  • .NET 相当于 Java 资源包中的选择吗?

    在Java资源包中 我可能有以下资源包定义 en GB 英式英语 jobs search resultstr There 1 choice 0 are no jobs 1 is one job 1