2016-11-08 86 views
0

我试过多次,以我的故事板对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的

enter image description here

例子:

"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”中转换)。

谢谢你的帮助!

+0

有你读https://developer.xamarin.com/guides/ios/advanced_topics/localization_and_internationalization/#storyboard –

+0

我也有通过复制Main.String文件修复相同的问题。如果您仍然觉得有任何问题随时发表评论 –

+0

是的,这是我的意思是“像在文档中”... –

回答

0

至于项目的树状结构,你不必使用Resource目录,这里我使用了我的非发育语言./Design/Base.lproj/我LaunchScreen /主营stroyboards和Support/en.lprojSupport/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.plistCFBundleDevelopmentRegion显示的语言,也不能除去从CFBundleLocalizations数组项不影响的条目(该条目是为App Store)。

此致应该有两个条目,enfr,否则删除.lproj文件夹,你是不是包括你的应用程序的语言。 (您也可以在该文件夹中的所有文件设置为None构建类型。

确保您的设备或模拟器设置为纠正你对测试您的本地化语言。

+0

谢谢你关于CFBundle的扩展。我删除了en.lproj,因为它是我的开发语言。但尝试你所说的解决没有奏效。我必须让资源文件夹中的fr.lproj,否则它不起作用 –