<!--
{
  "availability" : [
    "iOS: 2.0.0 -",
    "iPadOS: 2.0.0 -",
    "macCatalyst: 13.0.0 -",
    "macOS: 10.0.0 -",
    "tvOS: 9.0.0 -",
    "visionOS: 1.0.0 -",
    "watchOS: 2.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "Foundation",
  "identifier" : "/documentation/Foundation/NSLocalizedString",
  "metadataVersion" : "0.1.0",
  "role" : "Macro",
  "symbol" : {
    "kind" : "Macro",
    "modules" : [
      "Foundation"
    ],
    "preciseIdentifier" : "c:@macro@NSLocalizedString"
  },
  "title" : "NSLocalizedString"
}
-->

# NSLocalizedString

Returns a localized version of a string from the default table, which Xcode autogenerates when exporting localizations.

```
#define NSLocalizedString(key, comment)
```

## Parameters

`key`

The key for a string in the default table.
  
  > Note:
  > Xcode can’t export localizations for strings whose `key` is a string variable, `nil`, or an empty string.

`comment`

The comment to place above the key-value pair in the strings file. This parameter provides the translator with some context about the localized string’s presentation to the user.

## Return Value

The result of sending [`localizedString(forKey:value:table:)`](/documentation/Foundation/Bundle/localizedString(forKey:value:table:)) to the main bundle, passing the specified `key`.

## Discussion

Use this macro to automatically generate the default `Localizable.strings` file from your code when exporting localizations from Xcode or the `genstrings` utility. You can specify Unicode characters in `key` using `\\Uxxxx`—see the `-u` option for the `genstrings` utility.

The initial value for `key` in the strings file is `key`. To avoid collisions between words or phrases with multiple meanings, use a unique `key` for each use of the same phrase. Use the [`NSLocalizedStringWithDefaultValue`](/documentation/Foundation/NSLocalizedStringWithDefaultValue) macro to specify another value for `key`.

For information about inserting plural nouns and units into localized strings, see <doc://com.apple.documentation/documentation/Xcode/localizing-strings-that-contain-plurals>.

As of OS X 10.11 and iOS 9, [`Bundle`](/documentation/Foundation/Bundle) is thread-safe. As such, you can safely call [`NSLocalizedString`](/documentation/Foundation/NSLocalizedString) from any execution context.

> Important:
> The values for `key` and `comment` must be string literal values. Xcode can read these values from source code to automatically create localization tables when exporting localizations, but it doesn’t resolve string variables. If you want to use string variables, manually create a strings file and use ``doc://com.apple.foundation/documentation/Foundation/Bundle/localizedString(forKey:value:table:)`` instead. For more information on strings files, see [String Resources](https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/LoadingResources/Strings/Strings.html#//apple_ref/doc/uid/10000051i-CH6).

> Tip:
> Break up long string values into consecutive string literals.

```objc
NSLocalizedString(
    @"Did you know that venus flytraps have flowers"
        @" atop very long stems?\nThe long stem keeps"
        @" insects a safe distance away from their"
        @" digestive leaves below.",
    @"An interesting fact about venus flytraps shown"
        @" on the loading screen.");
```

## See Also

  <doc://com.apple.documentation/documentation/Xcode/exporting-localizations>

  <doc://com.apple.documentation/documentation/Xcode/importing-localizations>



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)