         attributedString.addAttributes([NSAttributedStringKey.font: UIConstants.fonts.copyButtonQuery], range: queryRange)
         attributedString.addAttributes([NSAttributedStringKey.foregroundColor: UIColor.white], range: fullRange)
         
+        return attributedString
+    }
+    
+    func setAttributedButtonTitle(phrase: String, button: InsetButton) {
+        
+        let attributedString = getAttributedButtonTitle(phrase: phrase,
+                                                        localizedStringFormat: UIConstants.strings.searchButton)
+        
         button.setAttributedTitle(attributedString, for: .normal)
     }
+    
     func setSearchQuery(query: String, animated: Bool) {
         searchQuery = query
         let query = query.trimmingCharacters(in: .whitespaces)

}

extension UIPasteboard {
    func urlAsync(callback: @escaping (URL?) -> Void) {
        DispatchQueue.global().async {
            let url = URL(string: UIPasteboard.general.string ?? "")

            button.titleEdgeInsets = UIEdgeInsets(top: padding, left: padding * 2, bottom: padding, right: padding)
        }
    }
    
    /**
     
     Localize and style 'phrase' text for use as a button title.
     
     - Parameter phrase: The phrase text for a button title
     - Parameter localizedStringFormat: The localization format string to apply
     
     - Returns: An NSAttributedString with `phrase` localized and styled appropriately.
     
     */
    func getAttributedButtonTitle(phrase: String,
                                  localizedStringFormat: String) -> NSAttributedString {
        
        let localizedString = String(format: localizedStringFormat, "[\(phrase)]")
        
        // Use [ and ] to help find the position of the query, then delete them.
        let copyTitle = NSMutableString(string: localizedString)
        let startIndex = copyTitle.range(of: "[")
        let endIndex = copyTitle.range(of: "]")
        copyTitle.deleteCharacters(in: endIndex)
