Latest 1.0.0
Homepage https://github.com/cmaftuleac/BundleLocalization
License MIT
Platforms ios
Authors

Workaround for XCode base internationalization to support on-the-fly language change

Reasoning

Base internationalization is awesome, but sometimes not enough.
Sometimes users want to change the language inside an application, rather than changing on the whole device.
Currently there is no way to change the bundle language while the application is running.

These set of classes are here to do just that!

Usage

1) Drop the files to your project:

BundleLocalization.h
BundleLocalization.m
NSBundle+Localization.h
NSBundle+Localization.m

2) Just import and use it

#import "BundleLocalization.h"
...
[[BundleLocalization sharedInstance] setLanguage:@"fr"];

or

[BundleLocalization sharedInstance].language = @"de";
NSLog(@"Application language: %@", [BundleLocalization sharedInstance].language);

Nothing more is required, you can use NSLocalizedString() as usual.

Notes

Remember that for the nib/storyboards to be translated you need to reload them.

Implementation details

This implementation works by tweaking inside NSBundle.
The idea is that you override the method localizedStringForKey on the instance of NSBundle object, and then call this method on a different bundle with a different language.
Simple and elegant fully compatible with all types of resources.

Lcence

MIT Licence.

Latest podspec

{
    "name": "BundleLocalization",
    "version": "1.0.0",
    "summary": "Workaround for XCode base internationalization to support on-the-fly language change.",
    "description": "Workaround for XCode base internationalization to support on-the-fly language change.nnnI do not own the rights, just needed that for a project and decided to make a pod. All credits belong to the owner.nPackaged by: Dimitar Marinov / openmind ",
    "homepage": "https://github.com/cmaftuleac/BundleLocalization",
    "license": "MIT",
    "authors": {
        "cmaftuleac": ""
    },
    "platforms": {
        "ios": null
    },
    "source": {
        "git": "https://github.com/openm1nd/BundleLocalization.git",
        "tag": "1.0.0"
    },
    "source_files": [
        "Classes",
        "Classes/**/*.{h,m}"
    ],
    "exclude_files": "Classes/Exclude"
}

Pin It on Pinterest

Share This