# Amazon Vega PUFF-J > Localize Amazon Vega & Fire TV PUFF-J resource files URL: https://store.crowdin.com/amazon-vega-puff-j Category: File Formats Type: App Author: Awesome Crowdin Adds support for the Amazon Vega PUFF-J format (*.puff.json) to Crowdin. Select your projects at install time, then upload files and download translations. No other configuration. Covers ICU placeholders, per-language plural forms, select and gender branches, and nested messages. ## File Format Details | Attribute | Value | | --------- | ----- | | File Extension | .puff.json | | [API Type](https://developer.crowdin.com/api/v2/#operation/api.projects.files.post) | amazon-vega-puff-j | | 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 | Yes | | WYSIWYG Preview in the editor | No | | Supported types of contextual information | Text comments, Screenshots | | Custom attributes | No | | Existing translations import possibility | Key-value mapping | ## Sample File ```csv { "dir": "ltr", "resources": { "app-name": "Vega Streaming", "home-greeting": { "note": "Home screen, after sign-in. {username} is the profile name, {lastWatched} is a date.", "value": "Welcome back, {username}! You last watched something on {lastWatched,date,medium}." }, "detail-episode-count": { "note": "Episode count on a series detail page. {episodeCount} is the number of episodes.", "value": { "param": "episodeCount", "pluralItems": { "=0": "No episodes available yet", "one": "{episodeCount,number,integer} episode available", "other": "{episodeCount,number,integer} episodes available" } } }, "downloads-in-progress": { "note": "Downloads screen header. Parameter 0 is the number of downloads still running.", "value": { "param": 0, "pluralItems": { "one": "{0,number,integer} download in progress", "other": "{0,number,integer} downloads in progress" } } }, "watchparty-invite": { "note": "{hostName} is the name of the host, {hostGender} is the host's grammatical gender.", "value": { "param": "hostGender", "selectItems": { "female": "{hostName} invites you to her watch party.", "male": "{hostName} invites you to his watch party.", "other": "{hostName} invites you to their watch party." } } }, "watchparty-guest-summary": { "note": "{guestCount} is the number of guests, {hostGender} is the host's grammatical gender.", "value": { "param": "guestCount", "pluralItems": { "one": { "param": "hostGender", "selectItems": { "female": "{hostName} invited one guest to her watch party.", "male": "{hostName} invited one guest to his watch party.", "other": "{hostName} invited one guest to their watch party." } }, "other": { "param": "hostGender", "selectItems": { "female": "{hostName} invited {guestCount,number,integer} guests to her watch party.", "male": "{hostName} invited {guestCount,number,integer} guests to his watch party.", "other": "{hostName} invited {guestCount,number,integer} guests to their watch party." } } } } }, "settings-legal-notice": { "note": "Settings screen. Second line must render the braces around username literally.", "value": "By continuing you accept the Terms of Use.\nType '{'username'}' to insert your profile name." }, "build:app-version": { "note": "App version rendered verbatim in Settings.", "translate": false, "value": "1.4.2" } } } ```