     /// The `String` that represents the key of the localized string.
     public let key: String
 
+    /// The `String` that represents the table name of the localized string.
+    public let tableName: String?
+
+    /// The `Bundle` that represents the bundle of the localized string.
+    public let bundle: Bundle
+
+    /// The `String` that represents the value of the localized string.
+    public let value: String
+
     /// The `String` that represents the comment of the localized string.
     public let comment: String
 
     /// The array of `Any` that represents the arguments of the localized string.
     public let arguments: [Any]?
 
-    public init(key: String, comment: String = "", arguments: [Any]? = nil) {
+    public init(key: String, tableName: String? = nil, bundle: Bundle = .main, value: String = "", comment: String = "", arguments: [Any]? = nil) {
         self.key = key
+        self.tableName = tableName
+        self.bundle = bundle
+        self.value = value
         self.comment = comment
         self.arguments = arguments
     }

    /// The `String` that represents the key of the localized string.
    var key: String { get }

    /// The `String` that represents the comment of the localized string.
    var comment: String { get }


    /// - Parameter describing: An item that conforms to `LocalizedStringDescribing`.
    /// - Returns: A represented localized string.
    static func of(_ describing: LocalizedStringDescribing) -> String {
        let localizedString = NSLocalizedString(describing.key, tableName: describing.tableName, bundle: describing.bundle, value: describing.value, comment: describing.comment)
        guard let arguments = describing.arguments as? [CVarArg] else {
            return localizedString
        }
