---
title: "@push.rocks/smarti18n"
---
# @push.rocks/smarti18n
a package dealing with i18n stuff

## Install
To use @push.rocks/smarti18n in your project, you will need to install it via npm or yarn. Ensure you have Node.js installed before proceeding. To install the package, run the following command in your project's root directory:

```bash
npm install @push.rocks/smarti18n --save
```
or if you prefer using yarn:

```bash
yarn add @push.rocks/smarti18n
```

This command will download @push.rocks/smarti18n and add it to your project's `node_modules` directory as well as add it as a dependency in your project's `package.json` file.

## Usage
The `@push.rocks/smarti18n` package provides functionalities to deal with internationalization (i18n) aspects, such as language codes, country codes, and potentially localized strings management. Let's explore its capabilities through various use cases.

### Importing the module

First, you need to import the module into your TypeScript project. Since this package uses ESM syntax, you should import it like so:

```typescript
import * as smarti18n from '@push.rocks/smarti18n';
```

Or if you just need specific exports like `countryCodeArray`, you can import them directly:

```typescript
import { countryCodeArray } from '@push.rocks/smarti18n';
```

### Working with Country Codes

One primary feature of `@push.rocks/smarti18n` is dealing with country codes. The module provides an array of country codes along with their respective names and phone prefixes.

```typescript
import { countryCodeArray } from '@push.rocks/smarti18n';

// Let's log the name and phone prefix of Germany
const germanyInfo = countryCodeArray.find(country => country.code === 'DE');
console.log(`Country: ${germanyInfo?.name}, Phone Prefix: ${germanyInfo?.phonePrefix}`);
```

This example would output something like:

```plaintext
Country: Germany, Phone Prefix: 49
```

This simple scenario showcases how you can retrieve information about a country, which can be particularly useful when working with international forms, user profiles, etc.

### Advanced Usage Scenarios

Though the provided test cases and examples primarily deal with country codes, the infrastructure of `@push.rocks/smarti18n` allows for expansions to include handling localized strings based on user locale, formatting numbers and dates according to locale, etc. 

Here's a conceptual overview of how you might expand upon the existing framework to include localized strings:

1. **Defining Localized Strings**: Imagine you have JSON files for each locale, containing key-value pairs of strings that need to be localized.

    ```json
    // en.json
    {
      "greeting": "Hello, World!"
    }

    // de.json
    {
      "greeting": "Hallo, Welt!"
    }
    ```

2. **Loading and Using Localized Strings**: First, you'd load the appropriate JSON file based on the user's locale. Then, you could access the localized strings using a key. 

    ```typescript
    import { getLocalizedString } from '@push.rocks/smarti18n';

    const userLocale = 'de'; // This would typically come from the user's preferences
    const greeting = getLocalizedString('greeting', userLocale);
    console.log(greeting); // Outputs: Hallo, Welt!
    ```

    Note: The function `getLocalizedString` is hypothetical and represents a potential feature of the library, illustrating how it could be expanded to handle a broader scope of i18n needs.

### Conclusion

While `@push.rocks/smarti18n` currently focuses on providing a comprehensive listing of country codes, its design allows for easy expansion to cover a wide array of internationalization and localization features. Whether you're building a multinational web application or just need to handle different languages and regions, `@push.rocks/smarti18n` offers a solid foundation to incorporate i18n aspects into your TypeScript projects.

## License and Legal Information

This repository contains open-source code that is licensed under the MIT License. A copy of the MIT License can be found in the [license](license) file within this repository. 

**Please note:** The MIT License does not grant permission to use the trade names, trademarks, service marks, or product names of the project, except as required for reasonable and customary use in describing the origin of the work and reproducing the content of the NOTICE file.

### Trademarks

This project is owned and maintained by Task Venture Capital GmbH. The names and logos associated with Task Venture Capital GmbH and any related products or services are trademarks of Task Venture Capital GmbH and are not included within the scope of the MIT license granted herein. Use of these trademarks must comply with Task Venture Capital GmbH's Trademark Guidelines, and any usage must be approved in writing by Task Venture Capital GmbH.

### Company Information

Task Venture Capital GmbH  
Registered at District court Bremen HRB 35230 HB, Germany

For any legal inquiries or if you require further information, please contact us via email at hello@task.vc.

By using this repository, you acknowledge that you have read this section, agree to comply with its terms, and understand that the licensing of the code does not imply endorsement by Task Venture Capital GmbH of any derivative works.
