2016-11-08 77 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,否則它不起作用 –