기능 번역(Capability Translations)

dsddd각각의 기능 보여짐(Capability Presentation)을 여러 말(언어)로 보여지게 하려면 기능 번역(Capability Translations을 만들고 기능 보여짐(Capability Presentation)에서 그 것의 번역된 텍스트를 골라야합니다. 여기에서는 맞춤형 엘리베이터 기능에 대한 영어와 한국어 번역 파일을 살펴보겠습니다.

### 영어(en.json)

```
{
  "tag": "en",
  "label": "Custom Garage Door",
  "attributes": {
    "door": {
      "label": "Garage Door Status",
      "displayTemplate": "{{attribute}} of {{device.label}} is {{value}}",
      "i18n": {
        "value": {
          "closing": {
            "label": "Closing..."
          },
          "closed": {
            "label": "Closed"
          },
          "opening": {
            "label": "Opening..."
          },
          "partial": {
            "label": "Partially open"
          },
          "open": {
            "label": "Open"
          }
        }
      }
    }
  }
}
```

### 한국어

```
{
  "tag": "ko",
  "label": "문",
  "attributes": {
    "door": {
      "label": "문",
      "displayTemplate": "{{attribute}} {{device.label}}: {{value}}",
      "i18n": {
        "value": {
          "closing": {
            "label": "닫는 중…"
          },
          "closed": {
            "label": "닫힘"
          },
          "opening": {
            "label": "여는 중…"
          },
          "open": {
            "label": "열림"
          },
          "partial": {
            "label": "부분적으로 열림"
          }
        }
      }
    }
  }
}
```

이 파일들은 SmartThings CLI 명령을 써서 올릴 수 있습니다.

```
smartthings capabilities:translation:upsert angryofmyhomeminister6617.customGarageDoor -i en.json
smartthings capabilities:translation:upsert angryofmyhomeminister6617.customGarageDoor -i ko.json
```

또한 번역 JSON 파일에서 해당 경로를 써서 label에 쓸 수 있도록 기기 보여짐(Capability Presentation)을 고쳐야 합니다.

```
{
  "dashboard": {
    "states": [
      {
        "label": "{{door.value}}",
        "alternatives": [
          {
            "key": "closed",
            "value": "{{i18n.attributes.door.i18n.value.closed.label}}",
            "type": "inactive"
          },
          {
            "key": "open",
            "value": "{{i18n.attributes.door.i18n.value.open.label}}",
            "type": "active"
          },
          {
            "key": "opening",
            "value": "{{i18n.attributes.door.i18n.value.opening.label}}",
            "type": "active"
          },
          {
            "key": "closing",
            "value": "{{i18n.attributes.door.i18n.value.closing.label}}",
            "type": "active"
          },
          {
            "key": "partial",
            "value": "{{i18n.attributes.door.i18n.value.partial.label}}",
            "type": "active"
          },
          {
            "key": "jammed",
            "value": "{{i18n.attributes.door.i18n.value.jammed.label}}",
            "type": "active"
          }
        ]
      }
    ],
    "actions": [
      {
        "displayType": "toggleSwitch",
        "toggleSwitch": {
          "command": {
            "name": "setDoor",
            "on": "open",
            "off": "closed",
            "argumentType": "string"
          },
          "state": {
            "value": "door.value",
            "on": "open",
            "off": "closed",
            "valueType": "string"
          }
        }
      }
    ],
    "basicPlus": []
  },
  "detailView": [
    {
      "label": "{{i18n.label}}",
      "displayType": "list",
      "list": {
        "command": {
          "name": "setDoor",
          "alternatives": [
            {
              "key": "closed",
              "value": "{{i18n.attributes.door.i18n.value.closed.label}}",
              "type": "inactive"
            },
            {
              "key": "open",
              "value": "{{i18n.attributes.door.i18n.value.open.label}}",
              "type": "active"
            }
          ],
          "argumentType": "string"
        },
        "state": {
          "value": "door.value",
          "valueType": "string",
          "alternatives": [
            {
              "key": "closed",
              "value": "{{i18n.attributes.door.i18n.value.closed.label}}",
              "type": "inactive"
            },
            {
              "key": "open",
              "value": "{{i18n.attributes.door.i18n.value.open.label}}",
              "type": "active"
            },
            {
              "key": "opening",
              "value": "{{i18n.attributes.door.i18n.value.opening.label}}",
              "type": "active"
            },
            {
              "key": "closing",
              "value": "{{i18n.attributes.door.i18n.value.closing.label}}",
              "type": "active"
            },
            {
              "key": "partial",
              "value": "{{i18n.attributes.door.i18n.value.partial.label}}",
              "type": "active"
            },
            {
              "key": "jammed",
              "value": "{{i18n.attributes.door.i18n.value.jammed.label}}",
              "type": "active"
            }
          ]
        }
      },
      "state": null
    }
  ],
  "automation": {
    "conditions": [
      {
        "label": "{{i18n.label}}",
        "displayType": "list",
        "list": {
          "alternatives": [
            {
              "key": "closed",
              "value": "{{i18n.attributes.door.i18n.value.closed.label}}",
              "type": "inactive"
            },
            {
              "key": "open",
              "value": "{{i18n.attributes.door.i18n.value.open.label}}",
              "type": "active"
            },
            {
              "key": "opening",
              "value": "{{i18n.attributes.door.i18n.value.opening.label}}",
              "type": "active"
            },
            {
              "key": "closing",
              "value": "{{i18n.attributes.door.i18n.value.closing.label}}",
              "type": "active"
            },
            {
              "key": "partial",
              "value": "{{i18n.attributes.door.i18n.value.partial.label}}",
              "type": "active"
            },
            {
              "key": "jammed",
              "value": "{{i18n.attributes.door.i18n.value.jammed.label}}",
              "type": "active"
            }
          ],
          "value": "door.value",
          "valueType": "string"
        }
      }
    ],
    "actions": [
      {
        "label": "{{i18n.label}}",
        "displayType": "list",
        "list": {
          "alternatives": [
            {
              "key": "open",
              "value": "{{i18n.attributes.door.i18n.value.open.label}}",
              "type": "active"
            },
            {
              "key": "closed",
              "value": "{{i18n.attributes.door.i18n.value.closed.label}}",
              "type": "inactive"
            }
          ]
        }
      }
    ]
  },
  "id": "angryofmyhomeminister6617.customGarageDoor",
  "version": 1
}
```

기능 보여짐(Capability Presentation)은 SmartThings CLI 명령으로 판올림할 수 있습니다.

```
smartthings capabilities:presentation:update angryofmyhomeminister6617.customGarageDoor -i presentation.json
```