import {
	INodeProperties,
} from 'n8n-workflow';

export const textOperations: INodeProperties[] = [
	{
		displayName: 'Text',
		name: 'text',
		type: 'string',
		default: '',
		description: 'Input text to translate.',
		required: true,
		typeOptions: {
			alwaysOpenEditWindow: true,
		},
		displayOptions: {
			show: {
				operation: [
					'translate',
				],
			},
		},
	},
	{
		displayName: 'Target Language',
		name: 'translateTo',
		type: 'options',
		typeOptions: {
			loadOptionsMethod: 'getLanguages',
		},
		default: '',
		description: 'Language to translate to.',
		required: true,
		displayOptions: {
			show: {
				operation: [
					'translate',
				],
			},
		},
	},
	{
		displayName: 'Additional Fields',
		name: 'additionalFields',
		type: 'collection',
		placeholder: 'Add Field',
		default: {},
		options: [
			{
				displayName: 'Source Language',
				name: 'sourceLang',
				type: 'options',
				default: '',
				description: 'Language to translate from.',
				typeOptions: {
					loadOptionsMethod: 'getLanguages',
				},
			},
			{
				displayName: 'Split Sentences',
				name: 'splitSentences',
				type: 'options',
				default: '1',
				description: 'How the translation engine should split sentences.',
				options: [
					{
						name: 'Interpunction Only',
						value: 'nonewlines',
						description: 'Split text on interpunction only, ignoring newlines.',
					},
					{
						name: 'No Splitting',
						value: '0',
						description: 'Treat all text as a single sentence.',
					},
					{
						name: 'On Punctuation and Newlines',
						value: '1',
						description: 'Split text on interpunction and newlines.',
					},
				],
			},
			{
				displayName: 'Preserve Formatting',
				name: 'preserveFormatting',
				type: 'options',
				default: '0',
				description: 'Whether the translation engine should respect the original formatting, even if it would usually correct some aspects.',
				options: [
					{
						name: 'Apply corrections',
						value: '0',
						description: 'Fix punctuation at the beginning and end of sentences and fixes lower/upper caseing at the beginning.',
					},
					{
						name: 'Do not correct',
						value: '1',
						description: 'Keep text as similar as possible to the original.',
					},
				],
			},
			{
				displayName: 'Formality',
				name: 'formality',
				type: 'options',
				default: 'default',
				description: 'How formal or informal the target text should be. May not be supported with all languages.',
				options: [
					{
						name: 'Formal',
						value: 'more',
					},
					{
						name: 'Informal',
						value: 'less',
					},
					{
						name: 'Neutral',
						value: 'default',
					},
				],
			},
		],
	},
];