# Twilio Studio IVR

> Twilio Studio IVR Localization

URL: https://store.crowdin.com/twilio-studio
Identifier: twilio-studio
Category: File Formats
Type: App
Author: Crowdin

With this app you can translate Twilio Studio IVR in Crowdin and keep the app multilingual.

## File Format Details

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

## Sample File

```json
{
  "description": "A New Flow",
  "states": [
    {
      "name": "Trigger",
      "type": "trigger",
      "transitions": [
        {
          "event": "incomingMessage"
        },
        {
          "next": "check-open",
          "event": "incomingCall"
        },
        {
          "event": "incomingRequest"
        },
        {
          "event": "incomingParent"
        }
      ],
      "properties": {
        "offset": {
          "x": 0,
          "y": 0
        }
      }
    },
    {
      "name": "check-open",
      "type": "run-function",
      "transitions": [
        {
          "next": "split-open",
          "event": "success"
        },
        {
          "event": "fail"
        }
      ],
      "properties": {
        "service_sid": "",
        "environment_sid": "",
        "offset": {
          "x": 120,
          "y": 180
        },
        "function_sid": "",
        "parameters": [
          {
            "value": "#YOUR_BUSINESS_PLACE_ID#",
            "key": "PlaceId"
          }
        ]
      }
    },
    {
      "name": "open",
      "type": "say-play",
      "transitions": [
        {
          "event": "audioComplete"
        }
      ],
      "properties": {
        "voice": "alice",
        "offset": {
          "x": 460,
          "y": 750
        },
        "loop": 1,
        "say": "The business is open",
        "language": "en-US"
      }
    },
    {
      "name": "closed",
      "type": "say-play",
      "transitions": [
        {
          "event": "audioComplete"
        }
      ],
      "properties": {
        "voice": "alice",
        "offset": {
          "x": -50,
          "y": 780
        },
        "loop": 1,
        "say": "The business is closed",
        "language": "en-US"
      }
    },
    {
      "name": "split-open",
      "type": "split-based-on",
      "transitions": [
        {
          "next": "closed",
          "event": "noMatch"
        },
        {
          "next": "closed",
          "event": "match",
          "conditions": [
            {
              "friendly_name": "If value equal_to open",
              "arguments": [
                "{{widgets.check-open.parsed.open.open_now}}"
              ],
              "type": "equal_to",
              "value": "false"
            }
          ]
        },
        {
          "next": "open",
          "event": "match",
          "conditions": [
            {
              "friendly_name": "If value equal_to open",
              "arguments": [
                "{{widgets.check-open.parsed.open.open_now}}"
              ],
              "type": "equal_to",
              "value": "true"
            }
          ]
        }
      ],
      "properties": {
        "input": "{{widgets.check-open.parsed.open.open_now}}",
        "offset": {
          "x": 150,
          "y": 410
        }
      }
    }
  ],
  "initial_state": "Trigger",
  "flags": {
    "allow_concurrent_calls": true
  }
}
```
