Xamarin Ios的本地化
我试过多次,以我的故事板对Xamarin翻译,但不能使它工作......首先我有一个Splashcreen那么好叫我MainStoryboard(所以里面的AppDelegate)Xamarin Ios的本地化
public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions) {
var lang = NSLocale.PreferredLanguages[0];
Window = new UIWindow(UIScreen.MainScreen.Bounds);
UIStoryboard Storyboard = UIStoryboard.FromName("Main", null);
UIViewController initialViewController = Storyboard.InstantiateInitialViewController() as UIViewController;
Window.RootViewController = initialViewController;
Window.AccessibilityLanguage = lang;
Window.MakeKeyAndVisible();
return true;
}
我有一个名为Main.storyboard的故事板。在资源文件夹中有en.lproj和fr.lproj。每个文件夹里我有一个特定的文件的文件名为Main.strings像(以下我的项目文件夹中)在法国Maiin.strings的
例子:
"458.text" = "Rechercher";
"473.text" = "Parametres";
"501.text" = "Informations";
"480.normalTitle" = "Mise a jour";
"481.normalTitle" = "A propos";
plist文件是也正确:
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleLocalizations</key>
<array>
<string>fr</string>
</array>
对我来说这一切都是正确的,但它不工作......我仍然有“???”我已经放入故事板了。 (在458项目中有“???”,但是本地化应该在“Rechercher”中转换)。
谢谢你的帮助!
至于项目的树状结构,你不必使用Resource
目录,这里我使用了我的非发育语言./Design/Base.lproj/
我LaunchScreen /主营stroyboards和Support/en.lproj
和Support/fr.lproj/
:
的关键因素与.strings
文件不同的是它们包含的文件夹名称,它们被标记为BundleResources
构建类型。
.
├── AppDelegate.cs
├── Assets.xcassets
│ ├── AppIcon.appiconset
│ │ └── Contents.json
│ ├── Contents.json
│ └── LaunchImage.launchimage
│ └── Contents.json
├── Design
│ └── Base.lproj
│ ├── LaunchScreen.storyboard
│ └── Main.storyboard
├── Entitlements.plist
├── Info.plist
├── Main.cs
├── Media
│ └── hayley.jpg
├── Support
│ ├── en.lproj
│ │ ├── LaunchScreen.strings
│ │ └── Main.strings
│ └── fr.lproj
│ ├── LaunchScreen.storyboard
│ ├── LaunchScreen.strings
│ └── Main.strings
├── ViewController.cs
├── ViewController.designer.cs
└── iOSLocalization.csproj
在info.plist
如CFBundleDevelopmentRegion
显示的语言,也不能除去从CFBundleLocalizations
数组项不影响的条目(该条目是为App Store)。
此致应该有两个条目,en
和fr
,否则删除.lproj
文件夹,你是不是包括你的应用程序的语言。 (您也可以在该文件夹中的所有文件设置为None
构建类型。
确保您的设备或模拟器设置为纠正你对测试您的本地化语言。
谢谢你关于CFBundle的扩展。我删除了en.lproj,因为它是我的开发语言。但尝试你所说的解决没有奏效。我必须让资源文件夹中的fr.lproj,否则它不起作用 –
有你读https://developer.xamarin.com/guides/ios/advanced_topics/localization_and_internationalization/#storyboard –
我也有通过复制Main.String文件修复相同的问题。如果您仍然觉得有任何问题随时发表评论 –
是的,这是我的意思是“像在文档中”... –