Localizable macro
This commit is contained in:
70
README.md
70
README.md
@@ -1 +1,69 @@
|
||||
# Localizable
|
||||
# Localizable
|
||||
|
||||
Macros-based Swift library for type-safe localization without stringly-typed keys.
|
||||
|
||||
## Overview
|
||||
|
||||
Localizable allows you to define localization keys using enums, and automatically generates static constants and functions for accessing localized strings. This makes your code type-safe, easy to read, and avoids errors from hardcoded keys.
|
||||
|
||||
## Installation
|
||||
|
||||
To add Localizable to your project, use Swift Package Manager (SPM).
|
||||
|
||||
### Adding to an Xcode Project
|
||||
|
||||
1. Open your project in Xcode.
|
||||
2. Navigate to the `File` menu and select `Add Package Dependencies`.
|
||||
3. Enter the repository URL: `https://github.com/angd-dev/localizable.git`.
|
||||
4. Choose the version to install (e.g. `1.0.0`).
|
||||
5. Add the library to your target module.
|
||||
|
||||
### Adding to Package.swift
|
||||
|
||||
If you are using Swift Package Manager with a Package.swift file, add the dependency like this:
|
||||
|
||||
```swift
|
||||
// swift-tools-version: 6.0
|
||||
import PackageDescription
|
||||
|
||||
let package = Package(
|
||||
name: "YourProject",
|
||||
dependencies: [
|
||||
.package(url: "https://github.com/angd-dev/localizable.git", from: "1.0.0")
|
||||
],
|
||||
targets: [
|
||||
.target(
|
||||
name: "YourTarget",
|
||||
dependencies: [
|
||||
.product(name: "Localizable", package: "localizable")
|
||||
]
|
||||
)
|
||||
]
|
||||
)
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
Define your localization keys inside a nested enum marked with @Localizable. The macro will generate static properties and methods for you.
|
||||
|
||||
```swift
|
||||
import Localizable
|
||||
|
||||
extension String {
|
||||
@Localizable enum Login {
|
||||
private enum Strings {
|
||||
case welcome
|
||||
case title(String)
|
||||
case message(msg1: String, msg2: Int)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let text1 = String.Login.welcome
|
||||
let text2 = String.Login.title("Some text")
|
||||
let text3 = String.Login.message(msg1: "Hello", msg2: 42)
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
This project is licensed under the MIT License. See the `LICENSE` file for details.
|
||||
|
||||
Reference in New Issue
Block a user