# Angular XLF

> Localization format for Angular web framework

URL: https://store.crowdin.com/angular
Identifier: angular
Category: File Formats
Type: System
Author: Crowdin

Angular XLF is a natively supported file format, you can use it without an additional installation. Just upload it to your projects and start the localization.

## File Format Details

| Attribute | Value |
| --------- | ----- |
| File Extension | .xlf |
| [API Type](https://developer.crowdin.com/api/v2/#operation/api.projects.files.post) | xliff |
| Source can be edited in Crowdin | Yes |
| Generating translated files via [Bundles](https://support.crowdin.com/bundles/) | [Search Crowdin Store](https://store.crowdin.com/tags/string-exporter) |
| Supports pluralization | Yes |
| WYSIWYG Preview in the editor | No |
| Supported types of contextual information | Text comments, Screenshots, In-Context |
| Custom attributes | Yes |
| Existing translations import possibility | Key-value mapping |

## Sample File

```xml
<?xml version="1.0" encoding="UTF-8"?>
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
  <file id="19704" original="/Example (AndroidXML).xml" source-language="en" target-language="en-US" datatype="plaintext">
    <body>
      <trans-unit id="874396" maxwidth="20" size-unit="char">
        <source>text</source>
        <target state="translated">translation</target>
        <note>Context</note>
      </trans-unit>
      <trans-unit id="874397" approved="yes">
        <source>text 1</source>
        <target>translation 1</target>
        <note>Context 1</note>
      </trans-unit>
      <trans-unit id="874398">
        <source>text 2</source>
        <target state="needs-translation"></target>
        <context context-type="context">Context of the segment 2</context>
      </trans-unit>
      <trans-unit id="874399" translate="no">
        <source>text 3</source>
        <target state="final">translation 3</target>
        <note>Context 3</note>
      </trans-unit>
    </body>
  </file>
</xliff>
```

## Translating Angular XLF


**Attributes** 



Translation state of the string: `needs-translation`, `translated`, `final`.



`needs-translation` &ndash; the segment needs translation.  

`translated` &ndash; the segment was translated.  

`final` &ndash; the segment was translated and approved.



```

<source>text</source>

<target state="needs-translation"></target>

```



```

<source>text 2</source>

<target state="translated">translation 2</target>

```



```

<source>text 3</source>

<target state="final">approved translation 3</target>

```  



**Note**: It is also possible to use `approved="yes"` attribute, it is equal to `<target state="final">`



```

<trans-unit id="874397" approved="yes">

  <source>text 1</source>

  <target>translation 1</target>

</trans-unit>

```



Max. Length for the translated string: 



```

<trans-unit id="1" maxwidth="20" size-unit="char">

```



Import as a hidden string: 



```

<trans-unit id="1" translate="no">

  <source>Hi</source>

  <target></target>

</trans-unit>

```



**Custom Attributes**



Source text will be taken from the <target> node: `x-crowdin-source-element="target"`



```

<?xml version="1.0" encoding="UTF-8"?>

<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2" x-crowdin-source-element="target">

  <file id="19704" original="/Example (AndroidXML).xml" source-language="en" datatype="plaintext">

    <body>

```



**Comments** 



```

<trans-unit id="874399">

  <source>String for translation</source>

  <target>translation</target>

  <note>type your comment here</note>

</trans-unit>

```



```

<trans-unit id="874398">

  <source>text to translate</source>

  <target></target>

  <context context-type="context">type your comment here</context>

</trans-unit>

```



**Plurals**



```

<group restype="x-gettext-plurals">

  <note>Context: ApplicationPreferencesActivity_messages_per_conversation [one] [other]</note>

  <trans-unit id="14343743[0]">

    <source>%1s month</source>

    <target xml:lang="pl" state="translated">%1s miesiąc</target>

  </trans-unit>

  <trans-unit id="14343743[1]">

    <source>%1s months</source>

    <target xml:lang="pl" state="translated">%1s miesiące</target>

  </trans-unit>

  <trans-unit id="14343743[2]">

    <source>%1s months</source>

    <target xml:lang="pl" state="translated">%1s miesięcy</target>

  </trans-unit>

  <trans-unit id="14343743[3]">

    <source>%1s months</source>

    <target xml:lang="pl" state="translated">%1s miesiąca</target>

  </trans-unit>

</group>

```
