Programming/iOS2015/02/11 15:35

다국어 지원을 위해 NSLocalizedString 을 하면 아이폰 디바이스의 언어 설정으로 문자열을 가져옵니다.

만약 앱 안에서 언어 설정을 변경하고 싶다면 어떻게 해야 할까??


검색을 해보면 가장 많이 나오는 방법은 아래와 같다.


[[NSUserDefaults standardUserDefaults] setObject:@[ @"ko" ] forKey:@"AppleLanguages"];
[[NSUserDefaults standardUserDefaults] synchronize];


NSLocalizedString이 AppleLanguages에 설정된 언어에서 가져오므로 잘 동작한다.

하지만 문제는 앱을 재 실행해야 한다는 것이다. 설정 하나 바꿨다고 앱을 재 실행하라고??


내가 찾은 방법은 다국어를 가져올때 특정 언어 Bundle에서 가져오도록 하는 것이다.


NSString *bundlePath = [[NSBundle mainBundle] pathForResource:@"Localizable" ofType:@"strings" inDirectory:nil forLocalization:@"ko"];
NSBundle *localizableBundle = [[NSBundle alloc] initWithPath:[bundlePath stringByDeletingLastPathComponent]];
NSLocalizedStringFromTableInBundle(key, nil, localizableBundle, nil);


위 코드에서는 디바이스 언어와 상관없이 모두 한국어로 다국로 문자열을 가져오게 하였습니다.

이 코드를 적용해도 바로 화면의 언어들이 변경되지는 않을 것 입니다.

추가 적으로 뷰를 새로 그려지게 하면 됩니다. 언어를 일일이 다시 설정하는 방법도 있겠지만..... 전 window.rootViewController를 새로 설정했습니다.


AppDelegate *appDelegate = [UIApplication sharedApplication].delegate;
appDelegate.window.rootViewController = viewController;


이제 설정할때마다 새로 화면을 불러와서 원하는 언어대로 표시합니다~!


Posted by 초보 프로그래머
Programming/iOS2015/01/27 17:16

실행할 디바이스가 시뮬레이터인지 아닌지를 확인하는 매크로가 있다.

이걸 확인하는 방법은

#ifndef TARGET_IPHONE_SIMULATOR

#endif

가 아니다!!!!

#if !TARGET_IPHONE_SIMULATOR

#endif

이거다....

Posted by 초보 프로그래머
TAG ios, Xcode
Programming/Android2014/09/27 02:50

빌드해서 aar을 생성했는데… 그냥 dependency에 넣어서는 추가가 안된다. 뭐지;;


일단 duplicate 오류가 나면 aar과 겹치는 리소스가 있어서 그렇다.

그래서 모듈 리소스명 앞에 prefix를 붙여서 해결함.


그후 빌드는 성공했는데 class를 찾을 수 없다!!!!!! 뭐지…

compile fileTree(dir: 'libs', include: ['*.jar','*.jar'])
compile files('libs/chope-1.0.0.aar')


이 방법 둘다 안 먹힌다.


해결 방법은 다음과 같다.

aar은 꼭 repository에서만 추가되어야 하나 보다. 그래서 일단 local repository를 추가해준다.

repositories {
    flatDir {
        dirs 'libs'
    }
}

그리고 dependency는 다음과 같이 추가 한다.

compile(name:'chope-1.0.0', ext:'aar')


이제 빌드하면 제대로 나온다!~~!!

aar에 관련된 부분을 전체적으로 보면 다음과 같다.

repositories {
    flatDir {
        dirs 'libs'
    }
}

dependencies {
    compile(name:'chope-1.0.0', ext:'aar')
}


Posted by 초보 프로그래머
Programming/Android2014/09/27 02:50

Android Module은 빌드되면 .aar (Android ARchive) 파일로 생성됩니다.

기본으로 build/outputs/aar 위치에 [module].aar 로 생성됩니다.

[module]-[version].aar 으로 변경하려면 아래와 같이 설정합시다!

android {
    .....

    buildTypes {
        release {
            project.archivesBaseName='chope'
            project.version=defaultConfig.versionName

            .....
        }
    }
}


Posted by 초보 프로그래머
Programming2014/09/12 01:55

http://blog.chopestory.net/787

Posted by 초보 프로그래머