将 TwoLetterIsoLanguageName 用于 ResourceManager
using TwoLetterIsoLanguageName for ResourceManager
我有 6 种不同语言(En、Nl、De、Es、It、Fr)的 6 个资源文件。
我正在使用 ResourceManager.GetString 获取字符串,但它似乎只有在 AppResources 文件具有完整的 en-EN、fr-FR 等
时才有效
是否可以将文件命名为 AppResources.es.resx,而不是 es-ES,以便在西班牙和墨西哥使用,或者将文件命名为 fr,而不是 fr-FR,以便在法国和加拿大使用?
以下解决方案是我尝试过的,但似乎没有用:
ResourceManager.GetString(Text, new CultureInfo(cultureInfo.TwoLetterISOLanguageName))
TwoLetterISOLanguageName
应该可以正常工作。
请检查您是否在 AppResources
上设置了 Culture
,以便在您的应用中强制执行这些值,即使设备的区域设置不同也是如此。
从我们在评论中的讨论来看,问题出在您的资源文件没有正确的构建操作。不要忘记将 resx 文件设置为 Custom Tool: ResXFileCodeGenerator
.
另请参阅 https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/localization/text?tabs=vswin
处的文档
我有 6 种不同语言(En、Nl、De、Es、It、Fr)的 6 个资源文件。 我正在使用 ResourceManager.GetString 获取字符串,但它似乎只有在 AppResources 文件具有完整的 en-EN、fr-FR 等
时才有效是否可以将文件命名为 AppResources.es.resx,而不是 es-ES,以便在西班牙和墨西哥使用,或者将文件命名为 fr,而不是 fr-FR,以便在法国和加拿大使用?
以下解决方案是我尝试过的,但似乎没有用:
ResourceManager.GetString(Text, new CultureInfo(cultureInfo.TwoLetterISOLanguageName))
TwoLetterISOLanguageName
应该可以正常工作。
请检查您是否在 AppResources
上设置了 Culture
,以便在您的应用中强制执行这些值,即使设备的区域设置不同也是如此。
从我们在评论中的讨论来看,问题出在您的资源文件没有正确的构建操作。不要忘记将 resx 文件设置为 Custom Tool: ResXFileCodeGenerator
.
另请参阅 https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/localization/text?tabs=vswin
处的文档