Multilingual app without localizing
I did something like this. You can also just use a Strings file. What I did was create a spreadsheet in the Google Drive with all the translations (one column for the identifier BUTTON_TITLE_OK and one each language the app supports). It's then very easy to make a little formula in Google Drive that takes all the identifiers, and turns it into an enum. Like so:

    enum LocalizedStringIdentifier: String {
        case BUTTON_TITLE_OK
    }

    func string(_ identifier: LocalizedStringIdentifier) -&gt; String? {
        guard let value = plists[identifier.rawValue] else { return nil }
        return value
    }


The advantage of this that you get code completion in Xcode and thus less chance of mistakes. Usage:

LanguageManager.shared.string(.BUTTON_TITLE_OK)


The advantage of the spreadsheet approach is that you have all localizations combined so you have a better overview (and it is also easier to share with your client so that they can provide you with the right translations, unless this is your own project). 

Side note: If you do use plists, you should try use the new Codable protocol to load Plists directly into your models.