Skip to content

A simple freestanding macro to easily localize strings in both app targets and Swift packages

License

Notifications You must be signed in to change notification settings

Mackarous/Localize

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Localize

A simple freestanding macro to easily localize strings in both app targets and Swift packages

Localization

Localization with String catalogs is now easier than ever, and you can also easily localize Swift packages as well.

Here is a simple example of localization:

LocalizedStringResource("This is a localized string")

However, this will not work in the context of a Swift package because the built in localization uses the app target instead of the package target. You can see more information on how this works in my blog post on Localization in SwiftUI.

To make sure localization works in the context of a Swift package, or any module, you have to enable localization of the package, and initialize the resource like so:

LocalizedStringResource("This is a localized string", bundle: .module)

Usage

This package introduces a simple freestanding Swift macro to help with reduce the boilerplate and effort of localization across modules.

You can use it anywhere that you would normally use a localized string, here are a couple examples:

// Assign to a variable
let localizedString = #Localize("This is a localized string")

// Use directly within SwiftUI
Text(#Localize("This is a localized text"))

The macro will expand to the following:

let localizedString = #Localize("This is a localized string")
{
    #if SWIFT_PACKAGE
    LocalizedStringResource("This is a localized string", bundle: .atURL(Bundle.module.bundleURL))
    #else
    LocalizedStringResource("This is a localized string")
    #endif
}()

License

This package is released under MIT License. See LICENSE for more information.

About

A simple freestanding macro to easily localize strings in both app targets and Swift packages

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages