当前位置: 首页 > 知识库问答 >
问题:

Xamarin动态加载本地化文件

陈康胜
2023-03-14

关于Xamarin形式指南(http://developer.xamarin.com/guides/cross-platform/xamarin-forms/localization/)对于本地化,我们创建Resx并为每个平台构建自定义本地化类。这一部分非常简单明了。

我的问题是,我需要在应用程序中发送所有本地化的文件,还是有一种方法,当用户在我的应用程序中更改语言时,我从服务器下载所需的Resx文件并应用更改?

共有1个答案

崔绍辉
2023-03-14

我想看看这个例子:Xamarin表单本地化Xlf

这里有一个做翻译的类

  public static string Localize(string key)
  {
       try
       {
           var netLanguage = Locale();
           ResourceManager temp = new ResourceManager("MyApp.Strings.AppResources", typeof(Translator).GetTypeInfo().Assembly);
           string result = temp.GetString(key, new CultureInfo(netLanguage));

           return result;
        }
        catch (Exception ex)
        {
            return null;
        }
    }

但是这里不是使用ResourceManager来获取字符串,而是从Sqlite数据库获取字符串,根据应用程序的语言环境,在启动应用程序时下载相关的翻译。

在xaml中,您可以这样使用此类:

<ContentPage xmlns:local="clr-namespace:MyApp;assembly=MyApp">
   <Label Text="{local:Translate MyFieldStrike}"/>
</ContentPage>

在回答您最初的问题时,我想说不,没有一种方法可以动态下载和加载您的资源文件,因为它们是嵌入式资源

 类似资料:
  • 问题内容: 我正在尝试加载本地JSON文件,但无法正常工作。这是我的JavaScript代码(使用jQuery): test.json文件: 什么都没有显示,Firebug告诉我这是未定义的。在Firebug中,我可以看到它是好的且有效的,但是当我复制该行时,这很奇怪: 在Firebug的控制台中,它可以正常工作,并且我可以访问数据。 有人有解决方案吗? 问题答案: 是异步的,所以您应该这样做:

  • 问题内容: 如何可靠,动态地加载JavaScript文件?这将用于实现模块或组件,该模块或组件在“初始化”时将根据需要动态加载所有需要的JavaScript库脚本。 使用该组件的客户端不需要加载实现该组件的所有库脚本文件(并将标记手动插入其网页),只需加载“主”组件脚本文件即可。 主流JavaScript库如何做到这一点(原型,jQuery等)? 这些工具是否将多个JavaScript文件合并到脚

  • 问题内容: 我正在尝试加载本地JSON文件,但无法正常工作。这是我的JavaScript代码(使用jQuery: test.json文件: 什么都没有显示,Firebug告诉我数据未定义。在Firebug中,我可以看到它是好的且有效的,但是当我复制该行时,这很奇怪: 在Firebug的控制台中,它可以正常工作,并且我可以访问数据。 有人有解决办法吗? 问题答案: 是异步的,所以您应该这样做:

  • 我有一个表单,它首先加载文本字段,并有一个与之关联的时间选择器。用户还可以单击“更多”按钮,该按钮动态加载下面的额外文本字段。这也有一个与之相关联的时间选择器,但是它不会加载到动态字段上。我正在使用Trent Richardson的jQuery timepicker插件http://trentrichardson.com/examples/timepicker 我还找到了以前的答案(https:/

  • 问题内容: 我有一个非常大的javascript文件,仅当用户单击某个按钮时才想加载。我正在使用jQuery作为框架。有内置的方法或插件可以帮助我做到这一点吗? 更多详细信息:我有一个“添加注释”按钮,该按钮应该加载TinyMCE javascript文件(我已经将所有TinyMCE东西都煮成了一个JS文件),然后调用tinyMCE.init(…)。 我不想在初始页面加载时加载它,因为不是每个人都