To run the example project, clone the repo, and run pod install
from the Example directory first.
Anatoly Cherkasov, [email protected]
Autolocalizable is available under the MIT license. See the LICENSE file for more info.
В Bridging-Header.h
проекта стоит тобавить строчку:
#import "Autolocalizable/Autolocalizable-Swift.h"
Если вы будете использовать Swift Package Manager, тогда этот трюк не сработает.
К классам UILabel, UIButton, UITabbarItem, UIViewController(заголовок) подключен протокол AutoLocalizableField - он позволяет зарегистрировать объект в системе авто локализации, при заполнении поля localized.
labelDecription.localized = LocalizableStringItem("description")
sendButton.localized = LocalizableStringItem("send")
viewController.localizedTitle = LocalizableStringItem("viewControllerTitle")
при смене языка, текст автоматически заменится.
Пример отслеживания смены языка:
final class MyClass: AutolocalizableFollowing {
init() {
followAutolocalization()
}
// MARK: - AutolocalizableFollowing
func languageWasChanged(locale: LocaleType) {
/// ... code
}
}
Доступен шаблон для подключения автоматической генерации через SwiftGen. Шаблон находится в корне репозитория (swiftgen-templates) и поддерживает генерацию в отдельном package SPM Узнать про установку кастомных шаблонов можно в репозитории проекта SwiftGen
Если генерация успешно интегрирована, доступен подобный синтаксис:
titleLabel.localized = L10n.ViewController.title
Протокол, для чтения .strings файлов запрашиваемого языка
Методы
func localized(_ table: String, _ key: String, _ args: [CVarArg], locale: LocaleType, bundle: Bundle) -> String
Метод для получения переведенной строки на указанный язык, по ключу
table - Таблица .strings (По умолчанию Localizable.strings)
key - Ключ строки, для которой требуется перевод (Например "Login.title")
args - Список аргументов для форматирования (Необходимо указывать если в перевод подставляются данные через %@)
locale - Требуемый язык
bundle - Bundle содержащий ресурсы
Базовая реализация протокола доступна в классе BaseLocalizableValueService
Моделька, оборачивает параметры строки, необходимые для локализации. Подключен к SwiftGen
Свойства
private(set) var value: String
Возвращает локализированную строку
Конструкторы
init(_ table: String, _ key: String, _ args: CVarArg...)
и
init(_ table: String, _ key: String, _ args: CVarArg..., bundle: Bundle)
table - Название .strings таблицы
key - Ключ локализации
args - Список аргументов для форматирования
bundle - Bundle содержащий ресурсы, по умолчанию Bundle.main, но может быть изменен, если например ресурсы вынесены в spm
Методы
func set(localizableService: LocalizableValueService) -> LocalizableStringItem
Позволяет установить таблицу для получения локализаций. Возвращает LocalizableStringItem сконфигурированный для получения строки из указаного сервиса.
func add(transform: @escaping ((String) -> String)) -> LocalizableStringItem
Добавляет transform к локализуемой строке. Возвращает LocalizableStringItem с добавленным в очередь трансформом.
Правила трансформации: На вход блока приходит локализованная строка, обработанная ранее добавленными transform-блоками, в блоке необходимо вернуть измененную строку.
func addDeclension(_ value: Int?) -> LocalizableStringItem
Подключает склонения к локализованной строке
func uppercased() -> LocalizableStringItem
Переводит всю локализируемую строку в верхний регистр
func lowercased() -> LocalizableStringItem
Переводит всю локализируемую строку в нижний регистр
func capitalizingFirstLetter() -> LocalizableStringItem
Переводит первый символ локализуемой строки в верхний регистр
func attributedItem(with attributed: [NSAttributedString.Key: Any]) -> LocalizableAttributedStringItem
Позволяет получить AttributedString из локализованной строки
Аналог LocalizableStringItem для работы с AttributedString
Свойства
private(set) var value: NSAttributedString
Локализованная строка с примененными атрибутами
private(set) var item: LocalizableStringItem
Исходный элемент локализации
Конструкторы
init(item: LocalizableStringItem, attributed: [NSAttributedString.Key: Any])
item - исходный LocalizableStringItem
attributed - Применяемые атрибуты
Свойства:
var localized: LocalizableStringItem? { get set }
Не требует реализации. При заполнении, зарегистрирует текущий объект в системе авто локализации с указанным LocalizableStringItem
Если передать nil - удалит из системы локализации.
Методы:
func languageWasChanged(locale: LocaleType, localizableString: LocalizableStringItem?)
Метод вызовется при смене локализации
locale - новый язык
localizableString - LocalizableStringItem, указанный при регистрации.
Аналог AutoLocalizableField, но для AttributedString
Позволяет подписаться на обновление локализации
В классе, к которому подключается протокол, необходимо реализовать метод
func languageWasChanged(locale: LocaleType)`
Для отслеживания смены языка вызывать followAutolocalization()
, для отмены unfollowAutolocalization
link |
Stars: 2 |
Last commit: 3 years ago |
Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics