2013-04-02 28 views
1

我做了一個本地化爲兩種語言(英語和丹麥語,英語爲默認)的ios應用程序。
我用兩個子文件en和da製作了Localizable.strings。
一切都應該正確,我看到英文文本加載罰款字符串文件。但丹麥人不。ios可本地化的字符串不工作

我試圖通過下面的代碼檢查首選語言,它是丹麥語。

[[NSLocale preferredLanguages] objectAtIndex:0]; 

我試過乾淨+刪除和重建沒有運氣。

我知道Localizable.strings文件正在工作,因爲它正在獲取英文文本。我知道它通過上面的代碼行來看到丹麥語的本地化。 我錯過了什麼?

我想補充兩個例子:從EN

"YesButton" = "Done"; 
"NoButton" = "Not yet!"; 
"NextButton" = "Next"; 
"BackButton" = "Back"; 
"EditButton" = "Edit"; 
"DoneButton" = "Done"; 

和丹麥:

"YesButton" = "Færdig"; 
"NoButton" = "Ikke endnu!"; 
"NextButton" = "Næste"; 
"BackButton" = "Tilbage"; 
"EditButton" = "Redigér"; 
"DoneButton" = "Færdig"; 

和獲取文本的代碼是:

[yesButton setTitle:NSLocalizedString(@"YesButton", nil) forState:UIControlStateNormal]; 

即使preferredLang是da(丹麥語),它也會返回「完成」 !

希望有人有一個想法? :)

在此先感謝。

編輯:::
實際的丹麥 - 丹麥本地化出了問題。我不知道蘋果是否更新了它或者它做了什麼,但是它從被稱爲「丹麥 - 丹麥」變爲「丹麥」。 做了一個全新的丹麥語本地化並刪除了它的舊版本!瘋狂的事情。讓你撓頭!

+0

您是否在英文和丹麥文件中使用相同的密鑰? – sixthcent

+0

是的,當然......關鍵是當然是相同的,不同的文字。 –

+0

你確定你正在獲得英文版本,而不是簡單的默認文本? –

回答

0

有一些問題與實際丹麥的定位。
當我開始製作本地化時,它被稱爲「丹麥 - 丹麥」。更新ios和/或xcode後,現在只有「丹麥語」。
所以不得不做一個全新的本地化。

謝謝蘋果......不!

1

我曾經有過類似的事情發生在我身上。我所做的來解決這個問題是從改變編碼字符串:。。。。。。。

encoding:NSASCIIStringEncoding 

encoding:NSUTF8StringEncoding 

〜〜〜〜〜〜〜〜〜〜。 〜。〜。〜。〜。〜。〜。〜。〜。〜。〜。〜。

現在假設問題不是字符串編碼。您也可以解決它,這樣做:

NSString * language = [[NSLocale preferredLanguages] objectAtIndex:0]; 

NSString [email protected]""; 
NSString [email protected]""; 
NSString [email protected]""; 

if([@"en" caseInsensitiveCompare:language] == NSOrderedSame) 
{ 
yesButtonStr = @"Done"; 
noButtonStr= @"Not yet!"; 
nextButtonStr = @"Next"; 
//... 
} 
else if if([@"da" caseInsensitiveCompare:language] == NSOrderedSame) 
{ 
yesButtonStr = @"Færdig"; 
noButtonStr = @"Ikke endnu!"; 
nextButtonStr = @"Næste"; 
//... 
} 

然後:

[yesButton setTitle:NSLocalizedString(yesButtonStr, nil) forState:UIControlStateNormal]; 
+0

在屬性檢查器中它被設置爲UTF16,我知道它應該是(也試過8沒有運氣)。我直接在xcode中創建了字符串文件(沒有從外部複製它)。 但謝謝你的建議。 –

+0

您是否嘗試在調試屏幕上打印出這些字符串? – 2013-04-02 01:40:59

+0

剛剛嘗試過。 preferredLang的nslog是DANISH,文本來自英文Localizable.strings。博格我! –

1

試試這個,

NSString *translatedString = [self languageSelectedStringForKey:@"YesButton"]; // Give your key here 

-(NSString*) languageSelectedStringForKey:(NSString*) key 
{ 
    NSString *path; 
    path = [[NSBundle mainBundle] pathForResource:@"en" ofType:@"lproj"]; // give your language type in pathForResource, i.e. "en" for english, "da" for Danish 
    NSBundle* languageBundle = [NSBundle bundleWithPath:path]; 
    NSString* str=[languageBundle localizedStringForKey:key value:@"" table:nil]; 
    return str; 
} 

希望這會有所幫助,謝謝。快樂編碼

+0

你好,謝謝你的回答。我明白了,並在下面回答(不能接受自我回答)。但感謝你的方法,很好的對角工具。實際的丹麥語本地化存在問題。 當我開始進行本地化時,它被稱爲「丹麥 - 丹麥」。更新ios和/或xcode後,現在只有「丹麥語」。 所以不得不做一個全新的本地化。 謝謝蘋果......不! 無論如何,感謝您的幫助:) –