是否可以使用 Xamarin iOS/Android 中定义的 PCL 的 RESX 文件来支持多语言?
Is it possible to use RESX files defined PCL in Xamarin iOS/Android for multi-language support?
我正在研究 Xamarin iOS/Android,还有 PCL 可移植 class 库的项目。
我需要的是在 Xamarin iOS/Android 中使用 PCL 个项目的 RESX 文件。
我的项目不是 Xamarin.Forms,所以这个 link 对我不起作用。
[使用 RESX 资源文件本地化 Xamarin.Forms 应用程序][1]
我不想在 iOS 和 android 上使用单独的文件来支持多语言。
我的思路是这样的:
1) 在PCL项目中为英文和中文创建两个RESX文件。
AppResources.resx
AppResources.zh-CN.resx
2) 从 iOS 和 Android 项目加载 RESX 文件。
3) 在我的应用程序中切换语言时,更改 UI 语言。
但是我找不到确切的方法。
如果你能帮助我,我会很高兴。
我已经解决了这个问题。
也许这个 post 对我有帮助。
ios localizing .net
我在 PCL 项目中创建了 2 个 resx 文件。
并将其命名如下。
LackPack.resx
LangPack_zh_CN.resx
并且我在PCL中定义了一个静态函数到
public static string GetString (I18N sID)
{
string sResource = STRINGS_ROOT + "_" + currLocale;
Type type = Type.GetType (sResource);
if (type == null) {
if (currLocale.Length > 2) {
sResource = STRINGS_ROOT + "_" + currLocale.Substring (0, 2); // Use first two letters of region code
type = Type.GetType (sResource);
}
}
if (type == null) {
sResource = STRINGS_ROOT;
type = Type.GetType (sResource);
if (type == null) {
System.Diagnostics.Debug.WriteLine ("No strings resource file when looking for " + sID + " in " + currLocale);
return null; // This shouldn't ever happen in theory
}
}
ResourceManager resman = new ResourceManager (type);
return resman.GetString (sID.ToString());
}
我们可以在iOS/Android谎言上使用它。
Localise.GetString (I18N.TitleHistory);
public enum I18N
{
BtnOk,
BtnContinue,
BtnLogin,
}
我正在研究 Xamarin iOS/Android,还有 PCL 可移植 class 库的项目。 我需要的是在 Xamarin iOS/Android 中使用 PCL 个项目的 RESX 文件。 我的项目不是 Xamarin.Forms,所以这个 link 对我不起作用。 [使用 RESX 资源文件本地化 Xamarin.Forms 应用程序][1]
我不想在 iOS 和 android 上使用单独的文件来支持多语言。
我的思路是这样的:
1) 在PCL项目中为英文和中文创建两个RESX文件。
AppResources.resx
AppResources.zh-CN.resx
2) 从 iOS 和 Android 项目加载 RESX 文件。
3) 在我的应用程序中切换语言时,更改 UI 语言。
但是我找不到确切的方法。 如果你能帮助我,我会很高兴。
我已经解决了这个问题。 也许这个 post 对我有帮助。 ios localizing .net
我在 PCL 项目中创建了 2 个 resx 文件。 并将其命名如下。
LackPack.resx
LangPack_zh_CN.resx
并且我在PCL中定义了一个静态函数到
public static string GetString (I18N sID)
{
string sResource = STRINGS_ROOT + "_" + currLocale;
Type type = Type.GetType (sResource);
if (type == null) {
if (currLocale.Length > 2) {
sResource = STRINGS_ROOT + "_" + currLocale.Substring (0, 2); // Use first two letters of region code
type = Type.GetType (sResource);
}
}
if (type == null) {
sResource = STRINGS_ROOT;
type = Type.GetType (sResource);
if (type == null) {
System.Diagnostics.Debug.WriteLine ("No strings resource file when looking for " + sID + " in " + currLocale);
return null; // This shouldn't ever happen in theory
}
}
ResourceManager resman = new ResourceManager (type);
return resman.GetString (sID.ToString());
}
我们可以在iOS/Android谎言上使用它。
Localise.GetString (I18N.TitleHistory);
public enum I18N
{
BtnOk,
BtnContinue,
BtnLogin,
}