Quick Start #
- Enable the CSV Import feature.
- Click CSV Import….
- Export the templates you need.
- Translate the templates.
- Import the completed templates.
- Check your translations.
Enable CSV Import #
Enable CSV Import under Settings → In-App Purchases. This unlocks CSV import and template export. You also need Unlimited Languages to work with languages beyond your app’s Primary Language. See In-App Purchases.
Before You Start #
Use Languages… to select your supported languages before starting the process.

Before exporting or importing app texts, click the appropriate platform card in the main window.
Click CSV Import #
Select your app, then click CSV Import… beside Languages… to open the import and export dialog.

Export Templates #
In the CSV Import dialog, select the template you want:
- App: app texts, including Name, Subtitle, Description, Promotional Text, What’s New, Keywords, Support URL, Marketing URL and Privacy Policy URL.
- Subscriptions: Display Name and Subscription Description, identified by Product ID and language.
- In-App Purchases: Display Name and Description, identified by Product ID and language. Currently, only Non-Consumable products are supported.
Click Export Template…, choose where to save the file, give it a name or use its default name and click Save. Repeat for each template you need.
App text templates use the selected platform and version. Subscription and in-app purchase templates use the selected app’s product catalog, regardless of the selected platform card.
Templates contain the current values for your supported languages, including local drafts. Existing translations are included; empty fields remain empty.
Note: Name, Subtitle and Privacy Policy URL are shared app information across platforms.
Translate Templates #
Open the template in Numbers and translate the texts there, or use an AI service of your choice to fill missing translations.
Tell your AI that the language column contains the target language code for each row. It is the first column in App.csv; product templates start with identifier, followed by language. Keep language codes, column headers and Product IDs unchanged.
Save the completed file as UTF-8 CSV. If you use Numbers, export the table back to CSV before importing it into AbbzThor.
Import Templates #
- Click CSV Import… in AbbzThor.
- Select the matching template: App, Subscriptions or In-App Purchases.
- Click Choose CSV File… and select your completed template.
- Read the import summary and check any reported errors.
Note: The import updates local drafts. It does not upload anything to App Store Connect. Import each template separately.
Check Translations #
Review the imported texts in AbbzThor before uploading. Check the wording, language, character limits and any warnings. See Check Translations.
File Format #
Save your file as UTF-8 CSV. Templates use a comma (,) to separate columns, matching your CSV export from Numbers. The importer also accepts older semicolon-separated files and detects the separator from the header automatically. The first row contains the column names. Each following row contains one language for the app, or one product and language for subscriptions and non-consumables.
Fields containing commas must be enclosed in double quotation marks. In Numbers, choose File → Export To → CSV, use UTF-8 and leave Include table names unchecked. Numbers handles the required quoting during CSV export; enter normal text in its cells without adding CSV wrapper quotes yourself. Use language codes such as de-DE or en-US, matching the language in the app.
Lists in Numbers #
CSV contains plain text, not cell formatting. Avoid Numbers’ built-in bullet and numbered list formatting for descriptions: automatically generated list markers may be omitted during CSV export.
Enter list markers directly as part of the cell text instead. Option + – types an en dash – on a Mac; this worked in our Numbers CSV export test. A directly entered • also worked. A hyphen – may trigger Numbers’ automatic list formatting and then disappear from the exported text. Disable automatic list formatting if Numbers converts your typed marker into a formatted list. Markers that remain actual cell text are preserved during import.
On a Swiss Mac keyboard, Option + Shift + H can be used to type •. The shortcut depends on the keyboard layout. You can also copy • from here or insert it using macOS Character Viewer.
Check the exported file #
If list markers are missing after importing, open the exported CSV as plain text and check whether they are present. The importer preserves list characters contained in the CSV; it cannot restore formatting that was omitted during export.
Columns #
- App: language,name,subtitle,description,keywords,promotional_text,whats_new,support_url,marketing_url,privacy_policy_url
- Subscriptions: identifier,language,name,description
- In-App Purchases (Non-Consumables): identifier,language,name,description
For app texts, language identifies the language to update. For products, identifier and language together identify the entry. For both Subscriptions and In-App Purchases, identifier is the exact Product ID (Product Identifier) you specified when creating the product in App Store Connect, for example com.example.app.premium_monthly. It is not the display name, reference name, subscription group identifier or numeric Apple ID. Copy the Product ID exactly, including capitalization and punctuation. Importing text does not change the identifier.
Include only the text columns you want to update. Keep the language column and, for products, the identifier column.
Double Quotes and Special Characters #
Enclose a field in double quotation marks (“) if it contains the file’s separator (normally a comma), a line break or a double quotation mark. Single quotation marks (‘) do not serve this purpose.
A comma inside quotation marks belongs to the text: “Buy once, keep forever” is one field.
To include a double quotation mark in the text, write it twice and enclose the whole field in double quotation marks: “Includes the “”Premium”” package”.
For a description spanning several lines, keep the actual line breaks inside the quoted field. Do not start a new CSV entry for each paragraph.
Example: two product translations #
identifier,language,name,description
premium_monthly,de-DE,Premium monatlich,”Alle Funktionen, jederzeit verfügbar”
lifetime,en-US,Lifetime,”Buy once, keep forever”
Empty Fields and Local Changes #
Empty fields and missing text columns leave existing values unchanged. An empty quoted field (“”) is also empty. To delete an existing text, clear it directly in the app.
The import applies text to local drafts without a preview. It does not upload changes to App Store Connect. Review the imported texts in the app before uploading them.
Example: update only the name #
language,name,subtitle
de-DE,Mein neuer App-Name,
This changes the German app name. The existing subtitle and all text columns omitted from the file remain unchanged.