Skip to content

Instantly share code, notes, and snippets.

View meyusufdemirci's full-sized avatar

Yusuf Demirci meyusufdemirci

View GitHub Profile
@meyusufdemirci
meyusufdemirci / AppEnvironment.swift
Created April 28, 2022 11:08
Realtime Localization Article
class AppEnvironment: ObservableObject {
@Published private var localizationManagerWillChange: Void = ()
let localizationManager: LocalizationManager = .init()
init() {
localizationManager.objectWillChange.assign(to: &$localizationManagerWillChange)
}
}
@meyusufdemirci
meyusufdemirci / LocalizationManager.swift
Last active April 28, 2022 10:52
Realtime Localization Article
class LocalizationManager: ObservableObject {
@Published var language: Language = .english
func localize(_ key: String) -> String {
guard
let bundlePath = Bundle.main.path(forResource: language.rawValue,
ofType: "lproj"),
let bundle = Bundle(path: bundlePath)
else {
@meyusufdemirci
meyusufdemirci / MainError3.swift
Created April 12, 2022 14:09
Error Handling Article
enum MainError: Error {
case general
case unknownError
var userFriendlyDescription: String {
"MainError.\(self)".localizeSafely(safe: "MainError.general".localized)
}
}
extension String {
@meyusufdemirci
meyusufdemirci / NetworkError2.swift
Created April 12, 2022 13:25
Error Handling Article
enum NetworkError: String, Error {
case userNotFound = "USER_NOT_FOUND"
var userFriendlyDescription: String {
"NetworkError.\(self)".localized
}
}
@meyusufdemirci
meyusufdemirci / Localizable2.string
Created April 12, 2022 12:54
Error Handling Article
NetworkError.userNotFound = "The user is not exist";
@meyusufdemirci
meyusufdemirci / String+Extension.swift
Created April 12, 2022 12:33
Error Handling Article
extension String {
var localized: String {
NSLocalizedString(self, comment: "")
}
}
@meyusufdemirci
meyusufdemirci / MainError2.swift
Created April 6, 2022 13:28
Error Handling Article
enum MainError: Error {
case general
case networkError(NetworkError)
var userFriendlyDescription: String {
switch self {
case .networkError(let error):
return error.userFriendlyDescription
default:
@meyusufdemirci
meyusufdemirci / NetworkError.swift
Last active April 12, 2022 12:48
Error Handling Article
enum NetworkError: Error {
case userNotFound
var userFriendlyDescription: String {
"NetworkError.\(self)".localized
}
}
@meyusufdemirci
meyusufdemirci / Localizable.string
Created April 6, 2022 12:55
Error Handling Article
MainError.general = "An error occurred. Please try again later.";
@meyusufdemirci
meyusufdemirci / MainError.swift
Last active April 12, 2022 12:50
Error Handling Article
enum MainError: Error {
case general
var userFriendlyDescription: String {
"MainError.\(self)".localized
}
}