【发布时间】:2021-06-23 21:58:35
【问题描述】:
我有适用于 android 和 ios 的 xamarin.forms 应用程序,我也想以 UWP 为目标,但我不想使用 Xamarin.Forms 生成的 UWP,而是我将重用 XF 共享库中的 ViewModel 和资源并原生设计 UWP。
共享项目中有 resx 文件作为翻译文件,我正在 xaml 中使用 TranslatorExtension,如下所示,如 article 中所述
[ContentProperty("Text")]
public class TranslateExtension : IMarkupExtension
{
const string ResourceId = "LocalizationSample.Resources.AppResources";
static readonly Lazy resmgr =
new Lazy(() =>
new ResourceManager(ResourceId, typeof(TranslateExtension)
.GetTypeInfo().Assembly));
public string Text { get; set; }
public object ProvideValue(IServiceProvider serviceProvider)
{
if (Text == null)
return "";
var ci = CrossMultilingual.Current.CurrentCultureInfo;
var translation = resmgr.Value.GetString(Text, ci);
if (translation == null)
{
translation = Text; // returns the key, which GETS DISPLAYED TO THE USER
}
return translation;
}
}
并在 ContentPage 中的 Xaml 代码中简单地引用 <Label Text="{i18n:Translate HelloWorld}"
这工作得很好,但我不知道如何在 UWP xaml 页面中使用 translationextension。 它是否仅用于 Xamarin.Forms 应用程序。 UWP有类似的东西吗? 那么基本上如何在不复制 UWP 的情况下重用这些 resx 文件呢?
PS,如果我必须使用 Xamarin.forms nuget 和命名空间才能使用 IMarkupExtension,那对我来说仍然没问题。
【问题讨论】:
标签: xamarin xamarin.forms uwp