import Elementary import Foundation import Localization /// The HTML page rendered for a not-found response, with its text localized to a given locale. struct ErrorPage: HTMLDocument, Sendable { // MARK: Properties /// The locale the page content is localized to. private let locale: Locale /// Resolves the page's text from the bundled String Catalog for the page's ``locale``. private let localize: Localize // MARK: Initializers /// Creates a not-found page localized to the given locale. /// - Parameter locale: the locale the page content is localized to. init( locale: Locale ) { self.locale = locale self.localize = .init(bundle: .module) } // MARK: Document /// The page's content: a localized heading and explanatory message. var body: some HTML { h1 { localize("error.heading", locale: locale) } p { localize("error.message", locale: locale) } } /// The metadata and stylesheet link placed in the document head. var head: some HTML { meta(.charset(.utf8)) meta( .name(.viewport), .content("width=device-width, initial-scale=1") ) link( .rel(.stylesheet), .href("/css/error.css") ) } /// The document language, derived from the page's locale and falling back to the default language. var lang: String { locale.language.languageCode?.identifier ?? LanguageList(bundle: .module).default } /// The localized document title. var title: String { localize("error.title", locale: locale) } }