0
A
답변
0
이 시도 :
// reading the language from the preferredLanguages in the bundle project architecture.
#define currentLanguageBundle [NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:[[NSLocale preferredLanguages] objectAtIndex:0] ofType:@"lproj"]]
#define CurrentNSLocalizedString(key) NSLocalizedStringFromTableInBundle(key, nil, currentLanguageBundle, @"")
// you can set language in the same location preferred settings like this :
[[NSUserDefaults standardUserDefaults]setObject:lang forKey:@"AppleLanguages"];
[[NSUserDefaults standardUserDefaults] synchronize];
// lang can be :
@"fr"
@"en"
@"de"
@"es"
@"it"
// etc ...
는 다음과 같이 Localizable.Strings에 구성된 문자열의 어 번역 호출 할 수 있습니다 https://developer.apple.com/library/ios/documentation/MacOSX/Conceptual/BPInternational/LocalizingYourApp/LocalizingYourApp.html
: 여기CurrentNSLocalizedString(@"my_text")
그리고 당신의 문자열 변환을 사용하는 몇 가지 링크가 있습니다
https://www.raywenderlich.com/64401/internationalization-tutorial-for-ios-2014
0
언어를 변경하려면 귀하의 응용 프로그램에서 설정. 고려해야 할 2 가지 솔루션이 있습니다. 첫 번째는
#import "NSBundle+HLanguage.h"
#import <objc/runtime.h>
static const char _bundle=0;
@interface HBundle : NSBundle
@end
@implementation HBundle
-(NSString*)localizedStringForKey:(NSString *)key value:(NSString *)value table:(NSString *)tableName
{
NSBundle* bundle=objc_getAssociatedObject(self, &_bundle);
return bundle ? [bundle localizedStringForKey:key value:value table:tableName] : [super localizedStringForKey:key value:value table:tableName];
}
@end
@implementation NSBundle (HLanguage)
+(void)setLanguage:(NSString*)language
{
static dispatch_once_t onceToken;
dispatch_once(&onceToken,^
{
object_setClass([NSBundle mainBundle],[HBBundle class]);
});
objc_setAssociatedObject([NSBundle mainBundle], &_bundle, language ? [NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:language ofType:@"lproj"]] : nil, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
@end
이러한 접근 방식은 좋은 간단한 방법입니다, 같은
.H
@interface NSBundle (HLanguage)
+(void)setLanguage:(NSString*)language;
@end
하는 .m에게 특정 로케일 소스를로드 할 주요 번들을 강요
지원되는 모든 지역화를 추가하기 만하면됩니다.
두 번째 언어는 더 유연하며 언어 설정 또는 동일한 영어 로케일로 구동되는 콘텐츠를 지원할 수 있습니다.하지만 독일에서 영어로는 싱가포르에서 영어로 다른 콘텐츠가 표시되기를 원합니다. 간단히 말하면, 자신의 번들 리소스를 만들고 지원되는 모든 언어를 넣은 다음 NSLocalizedStringWithDefaultValue
또는 NSLocalizedStringFromTableInBundle
을 사용하여 선택한 언어의 "번들"과 "테이블"을 지정하십시오.
희망이 있으면 도움이 될 것입니다.
관련 문제
- 1. iOS 응용 프로그램에서 언어 변경
- 2. 모바일 응용 프로그램에서 언어 변경
- 3. iOS 응용 프로그램에서 키보드 언어 변경 UITextField에서
- 4. ios 응용 프로그램에서 UI 요소의 언어 변경
- 5. wpf 응용 프로그램에서 현지화 - 언어 변경
- 6. C# 응용 프로그램에서 "(기본값)"언어 변경
- 7. iOS 응용 프로그램의 언어 설정 변경
- 8. 장치의 언어 설정 (로케일) 변경
- 9. 응용 프로그램 이름 변경 iPad 언어 설정 변경
- 10. 변경 안드로이드 응용 프로그램 언어
- 11. FileUpload UserControl의 언어 설정 변경
- 12. 언어 변경
- 13. 다른 파일에서 응용 프로그램의 언어 설정 저장
- 14. 프로그래밍 할 때 응용 프로그램 언어 변경
- 15. 안드로이드 : 응용 프로그램에서 언어 제한
- 16. 응용 프로그램에서 지원하는 언어 목록
- 17. 언어 설정
- 18. 서버의 단일 페이지 응용 프로그램에서 클라이언트 측 언어 설정 처리
- 19. 사용자 선택에 따라 asp.net 응용 프로그램에서 사용자 언어 변경
- 20. App.Config에서 응용 프로그램 언어 설정
- 21. 설정 응용 프로그램에서 응용 프로그램 설정 만들기
- 22. 응용 프로그램 내 언어 변경
- 23. 런타임에 응용 프로그램 언어 변경
- 24. 웹 응용 프로그램 언어 변경
- 25. zf2 동적으로 언어 변경
- 26. 언어 변경 이벤트시 동적으로 Qt 응용 프로그램 아이콘 변경
- 27. 런타임시 언어 변경
- 28. 응용 프로그램이 백그라운드 일 때 장치 언어 변경
- 29. ios의 언어 설정
- 30. 런타임에서 언어 변경
음, 그런 링크를 찾으셨습니까? – dorukayhan
일반적으로 현지화를 구현하면 앱이 먼저 기기의 언어를 따릅니다. 명시 적으로 언어를 지정하려면 응용 프로그램에 번들을 지정해야합니다 (예 : let path = NSBundle.mainBundle(). pathForResource (language, ofType : "lproj", inDirectory : nil, forLocalization : language) { LocalizationHelper.bundle = NSBundle (경로 : 경로) } – Happiehappie
언어는 Xcode에 지정된 언어 코드이며 파일 이름은 "en.lprog"와 같습니다. – Happiehappie