You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			328 lines
		
	
	
		
			23 KiB
		
	
	
	
		
			HTML
		
	
			
		
		
	
	
			328 lines
		
	
	
		
			23 KiB
		
	
	
	
		
			HTML
		
	
<h4 i18n="Settings title" mat-dialog-title>Settings</h4>
 | 
						|
<!-- <ng-container i18n="Allow subscriptions setting"></ng-container> -->
 | 
						|
<mat-dialog-content>
 | 
						|
 | 
						|
<!-- Language
 | 
						|
<div style="margin-bottom: 10px;">
 | 
						|
 | 
						|
</div> -->
 | 
						|
 | 
						|
<mat-tab-group>
 | 
						|
    <!-- Server -->
 | 
						|
    <mat-tab label="Main" i18n-label="Main settings label">
 | 
						|
        <ng-template matTabContent style="padding: 15px;">
 | 
						|
            <div *ngIf="new_config" class="container-fluid">
 | 
						|
                <div class="row">
 | 
						|
                    <div class="col-12 mt-3">
 | 
						|
                        <mat-form-field class="text-field" color="accent">
 | 
						|
                            <input [(ngModel)]="new_config['Host']['url']" matInput placeholder="URL" i18n-placeholder="URL input placeholder" required>
 | 
						|
                            <mat-hint><ng-container i18n="URL setting input hint">URL this app will be accessed from, without the port.</ng-container></mat-hint>
 | 
						|
                        </mat-form-field>
 | 
						|
                    </div>
 | 
						|
                    <div class="col-12 mb-4 mt-3">
 | 
						|
                        <mat-form-field class="text-field" color="accent">
 | 
						|
                            <input [(ngModel)]="new_config['Host']['port']" matInput placeholder="Port" i18n-placeholder="Port input placeholder" required>
 | 
						|
                            <mat-hint><ng-container i18n="Port setting input hint">The desired port. Default is 17442.</ng-container></mat-hint>
 | 
						|
                        </mat-form-field>
 | 
						|
                    </div>
 | 
						|
                </div>
 | 
						|
            </div>
 | 
						|
            <mat-divider></mat-divider>
 | 
						|
            <div *ngIf="new_config" class="container-fluid">
 | 
						|
                <div class="row">
 | 
						|
                    <div class="col-12 mt-3">
 | 
						|
                        <mat-checkbox color="accent" [(ngModel)]="new_config['Advanced']['multi_user_mode']"><ng-container i18n="Multi user mode setting">Multi-user mode</ng-container></mat-checkbox>
 | 
						|
                    </div>
 | 
						|
                    <div class="col-12 mt-3 mb-4">
 | 
						|
                        <mat-form-field class="text-field">
 | 
						|
                            <input [disabled]="!new_config['Advanced']['multi_user_mode']" [(ngModel)]="new_config['Users']['base_path']" matInput placeholder="Users base path" i18n-placeholder="Users base path placeholder" required>
 | 
						|
                            <mat-hint><ng-container i18n="Users base path hint">Base path for users and their downloaded videos.</ng-container></mat-hint>
 | 
						|
                        </mat-form-field>
 | 
						|
                    </div>
 | 
						|
                </div>
 | 
						|
            </div>
 | 
						|
            <mat-divider></mat-divider>
 | 
						|
            <div *ngIf="new_config" class="container-fluid">
 | 
						|
                <div class="row">
 | 
						|
                    <div class="col-12 mt-3">
 | 
						|
                        <mat-checkbox color="accent" [(ngModel)]="new_config['Encryption']['use-encryption']"><ng-container i18n="Use encryption setting">Use encryption</ng-container></mat-checkbox>
 | 
						|
                    </div>
 | 
						|
 | 
						|
                    <div class="col-12">
 | 
						|
                        <mat-form-field class="text-field" color="accent">
 | 
						|
                            <input [disabled]="!new_config['Encryption']['use-encryption']" [(ngModel)]="new_config['Encryption']['cert-file-path']" matInput placeholder="Cert file path" i18n-placeholder="Cert file path input placeholder">
 | 
						|
                        </mat-form-field>
 | 
						|
                    </div>
 | 
						|
 | 
						|
                    <div class="col-12">
 | 
						|
                        <mat-form-field class="text-field" color="accent">
 | 
						|
                            <input [disabled]="!new_config['Encryption']['use-encryption']" [(ngModel)]="new_config['Encryption']['key-file-path']" matInput placeholder="Key file path" i18n-placeholder="Key file path input placeholder">
 | 
						|
                        </mat-form-field>
 | 
						|
                    </div>
 | 
						|
                </div>
 | 
						|
            </div>
 | 
						|
            <mat-divider></mat-divider>
 | 
						|
            <div *ngIf="new_config" class="container-fluid">
 | 
						|
                <div class="row">
 | 
						|
                    <div class="col-12 mt-3">
 | 
						|
                        <mat-checkbox color="accent" [(ngModel)]="new_config['Subscriptions']['allow_subscriptions']"><ng-container i18n="Allow subscriptions setting">Allow subscriptions</ng-container></mat-checkbox>
 | 
						|
                    </div>
 | 
						|
                    <div class="col-12">
 | 
						|
                        <mat-form-field class="text-field" color="accent">
 | 
						|
                            <input [disabled]="!new_config['Subscriptions']['allow_subscriptions']" [(ngModel)]="new_config['Subscriptions']['subscriptions_base_path']" matInput placeholder="Subscriptions base path" i18n-placeholder="Subscriptions base path input setting placeholder">
 | 
						|
                            <mat-hint><ng-container i18n="Subscriptions base path setting input hint">Base path for videos from your subscribed channels and playlists. It is relative to YTDL-Material's root folder.</ng-container></mat-hint>
 | 
						|
                        </mat-form-field>
 | 
						|
                    </div>
 | 
						|
                    <div class="col-12 mt-5">
 | 
						|
                        <mat-form-field class="text-field" color="accent">
 | 
						|
                            <input [disabled]="!new_config['Subscriptions']['allow_subscriptions']" [(ngModel)]="new_config['Subscriptions']['subscriptions_check_interval']" matInput placeholder="Check interval" i18n-placeholder="Check interval input setting placeholder">
 | 
						|
                            <mat-hint><ng-container i18n="Check interval setting input hint">Unit is seconds, only include numbers.</ng-container></mat-hint>
 | 
						|
                        </mat-form-field>
 | 
						|
                    </div>
 | 
						|
                </div>
 | 
						|
            </div>
 | 
						|
            <mat-divider></mat-divider>
 | 
						|
            <div *ngIf="new_config" class="container-fluid">
 | 
						|
                <div class="row">
 | 
						|
                    <div class="col-12 mt-3">
 | 
						|
                        <mat-form-field>
 | 
						|
                            <mat-label><ng-container i18n="Theme select label">Theme</ng-container></mat-label>
 | 
						|
                            <mat-select color="accent" [(ngModel)]="new_config['Themes']['default_theme']">
 | 
						|
                                <mat-option value="default"><ng-container i18n="Default theme label">Default</ng-container></mat-option>
 | 
						|
                                <mat-option value="dark"><ng-container i18n="Dark theme label">Dark</ng-container></mat-option>
 | 
						|
                            </mat-select>
 | 
						|
                        </mat-form-field>
 | 
						|
                    </div>
 | 
						|
                    <div class="col-12 mb-2">
 | 
						|
                        <mat-checkbox color="accent" [(ngModel)]="new_config['Themes']['allow_theme_change']"><ng-container i18n="Allow theme change setting">Allow theme change</ng-container></mat-checkbox>
 | 
						|
                    </div>
 | 
						|
                </div>
 | 
						|
            </div>
 | 
						|
            <mat-divider></mat-divider>
 | 
						|
            <div *ngIf="new_config" class="container-fluid">
 | 
						|
                <div class="row">
 | 
						|
                    <div class="col-12 mt-3">
 | 
						|
                        <mat-form-field color="accent">
 | 
						|
                            <mat-label><ng-container i18n="Language select label">Language</ng-container></mat-label>
 | 
						|
                            <mat-select (selectionChange)="localeSelectChanged($event.value)" [(value)]="initialLocale">
 | 
						|
                                <mat-option *ngFor="let locale of supported_locales" [value]="locale">
 | 
						|
                                    {{all_locales[locale]['nativeName']}}
 | 
						|
                                </mat-option>
 | 
						|
                            </mat-select>
 | 
						|
                        </mat-form-field>
 | 
						|
                    </div>
 | 
						|
                </div>
 | 
						|
            </div>
 | 
						|
        </ng-template>
 | 
						|
    </mat-tab>
 | 
						|
    <!-- Downloader -->
 | 
						|
    <mat-tab label="Downloader" i18n-label="Downloader settings label">
 | 
						|
        <ng-template matTabContent>
 | 
						|
            <!-- Downloader -->
 | 
						|
            <div *ngIf="new_config" class="container-fluid">
 | 
						|
                <div class="row">
 | 
						|
                    <div class="col-12 mt-3">
 | 
						|
                        <mat-form-field class="text-field" color="accent">
 | 
						|
                            <input matInput [(ngModel)]="new_config['Downloader']['path-audio']" placeholder="Audio folder path" i18n-placeholder="Audio folder path input placeholder" required>
 | 
						|
                            <mat-hint><ng-container i18n="Aduio path setting input hint">Path for audio only downloads. It is relative to YTDL-Material's root folder.</ng-container></mat-hint>
 | 
						|
                        </mat-form-field>
 | 
						|
                    </div>
 | 
						|
 | 
						|
                    <div class="col-12 mt-5">
 | 
						|
                        <mat-form-field class="text-field" color="accent">
 | 
						|
                            <input matInput [(ngModel)]="new_config['Downloader']['path-video']" placeholder="Video folder path" i18n-placeholder="Video folder path input placeholder" required>
 | 
						|
                            <mat-hint><ng-container i18n="Video path setting input hint">Path for video downloads. It is relative to YTDL-Material's root folder.</ng-container></mat-hint>
 | 
						|
                        </mat-form-field>
 | 
						|
                    </div>
 | 
						|
 | 
						|
                    <div class="col-12 mt-4">
 | 
						|
                        <mat-form-field class="text-field" style="margin-right: 12px;" color="accent">
 | 
						|
                            <textarea matInput [(ngModel)]="new_config['Downloader']['custom_args']" placeholder="Custom args" i18n-placeholder="Custom args input placeholder"></textarea>
 | 
						|
                            <mat-hint><ng-container i18n="Custom args setting input hint">Global custom args for downloads on the home page. Args are delimited using two commas like so: ,,</ng-container></mat-hint>
 | 
						|
                            <button class="args-edit-button" (click)="openArgsModifierDialog()" mat-icon-button><mat-icon>edit</mat-icon></button>
 | 
						|
                        </mat-form-field>
 | 
						|
                    </div>
 | 
						|
 | 
						|
                    <div class="col-12 mt-5">
 | 
						|
                        <mat-checkbox color="accent" [(ngModel)]="new_config['Downloader']['use_youtubedl_archive']"><ng-container i18n="Use youtubedl archive setting">Use youtube-dl archive</ng-container></mat-checkbox>
 | 
						|
                    </div>
 | 
						|
 | 
						|
                    <div class="col-12 mt-2">
 | 
						|
                        <mat-checkbox color="accent" [(ngModel)]="new_config['Downloader']['safe_download_override']"><ng-container i18n="Safe download override setting">Safe download override</ng-container></mat-checkbox>
 | 
						|
                    </div>
 | 
						|
 | 
						|
                    <div class="col-12 mt-2">
 | 
						|
                        <button (click)="killAllDownloads()" mat-stroked-button color="warn"><ng-container i18n="Kill all downloads button">Kill all downloads</ng-container></button>
 | 
						|
                    </div>
 | 
						|
                </div>
 | 
						|
            </div>
 | 
						|
        </ng-template>
 | 
						|
    </mat-tab>
 | 
						|
    <!-- Extra -->
 | 
						|
    <mat-tab label="Extra" i18n-label="Extra settings label">
 | 
						|
        <ng-template matTabContent>
 | 
						|
            <div *ngIf="new_config" class="container-fluid">
 | 
						|
                <div class="row">
 | 
						|
                    <div class="col-12 mt-3">
 | 
						|
                        <mat-form-field class="text-field" color="accent">
 | 
						|
                            <input [(ngModel)]="new_config['Extra']['title_top']" matInput placeholder="Top title" i18n-placeholder="Top title input placeholder" required>
 | 
						|
                            <mat-hint></mat-hint>
 | 
						|
                        </mat-form-field>
 | 
						|
                    </div>
 | 
						|
                    <div class="col-12">
 | 
						|
                        <mat-checkbox color="accent" [(ngModel)]="new_config['Extra']['file_manager_enabled']"><ng-container i18n="File manager enabled setting">File manager enabled</ng-container></mat-checkbox>
 | 
						|
                    </div>
 | 
						|
                    <div class="col-12">
 | 
						|
                        <mat-checkbox color="accent" [(ngModel)]="new_config['Extra']['enable_downloads_manager']"><ng-container i18n="Downloads manager enabled setting">Downloads manager enabled</ng-container></mat-checkbox>
 | 
						|
                    </div>
 | 
						|
                    <div class="col-12">
 | 
						|
                        <mat-checkbox color="accent" [(ngModel)]="new_config['Extra']['allow_quality_select']"><ng-container i18n="Allow quality seelct setting">Allow quality select</ng-container></mat-checkbox>
 | 
						|
                    </div>
 | 
						|
                    <div class="col-12">
 | 
						|
                        <mat-checkbox color="accent" [(ngModel)]="new_config['Extra']['download_only_mode']"><ng-container i18n="Download only mode setting">Download only mode</ng-container></mat-checkbox>
 | 
						|
                    </div>
 | 
						|
                    <div class="col-12">
 | 
						|
                        <mat-checkbox color="accent" [(ngModel)]="new_config['Extra']['allow_multi_download_mode']"><ng-container i18n="Allow multi-download mode setting">Allow multi-download mode</ng-container></mat-checkbox>
 | 
						|
                    </div>
 | 
						|
                </div>
 | 
						|
            </div>
 | 
						|
            <mat-divider></mat-divider>
 | 
						|
            <div *ngIf="new_config" class="container-fluid">
 | 
						|
                <div class="row">
 | 
						|
                    <div class="col-12 mt-3">
 | 
						|
                        <mat-checkbox color="accent" [(ngModel)]="new_config['API']['use_API_key']"><ng-container i18n="Enable Public API key setting">Enable Public API</ng-container></mat-checkbox>
 | 
						|
                    </div>
 | 
						|
                    <div class="col-12 mb-3">
 | 
						|
                        <div class="enable-api-key-div">
 | 
						|
                            <mat-form-field class="text-field" color="accent">
 | 
						|
                                <input [disabled]="!new_config['API']['use_API_key']" [(ngModel)]="new_config['API']['API_key']" matInput placeholder="Public API Key" i18n-placeholder="Public API Key setting placeholder" required>
 | 
						|
                                <mat-hint><a target="_blank" href="https://stoplight.io/p/docs/gh/tzahi12345/youtubedl-material"><ng-container i18n="View API docs setting hint">View documentation</ng-container></a></mat-hint>
 | 
						|
                            </mat-form-field>
 | 
						|
                        </div>
 | 
						|
                        <div class="api-key-div">
 | 
						|
                            <button matTooltip="This will delete your old API key!" i18n-matTooltip="delete api key tooltip" mat-stroked-button (click)="generateAPIKey()"><ng-container i18n="Generate key button">Generate</ng-container></button>
 | 
						|
                        </div>
 | 
						|
                    </div>
 | 
						|
                </div>
 | 
						|
            </div>
 | 
						|
            <mat-divider></mat-divider>
 | 
						|
            <div *ngIf="new_config" class="container-fluid">
 | 
						|
                <div class="row">
 | 
						|
                    <div class="col-12 mt-3">
 | 
						|
                        <mat-checkbox color="accent" [(ngModel)]="new_config['API']['use_youtube_API']"><ng-container i18n="Use YouTube API setting">Use YouTube API</ng-container></mat-checkbox>
 | 
						|
                    </div>
 | 
						|
                    <div class="col-12 mb-3">
 | 
						|
                        <mat-form-field class="text-field" color="accent">
 | 
						|
                            <input [disabled]="!new_config['API']['use_youtube_API']" [(ngModel)]="new_config['API']['youtube_API_key']" matInput placeholder="Youtube API Key" i18n-placeholder="Youtube API Key setting placeholder" required>
 | 
						|
                            <mat-hint><a target="_blank" href="https://developers.google.com/youtube/v3/getting-started"><ng-container i18n="Youtube API Key setting hint">Generating a key is easy!</ng-container></a></mat-hint>
 | 
						|
                        </mat-form-field>
 | 
						|
                    </div>
 | 
						|
                </div>
 | 
						|
            </div>
 | 
						|
            <mat-divider></mat-divider>
 | 
						|
            <div *ngIf="new_config" class="container-fluid">
 | 
						|
                <div class="row">
 | 
						|
                    <div class="col-12 mt-3">
 | 
						|
                        <h6>Chrome</h6>
 | 
						|
                        <p><a href="https://github.com/Tzahi12345/YoutubeDL-Material/blob/master/chrome-extension/youtubedl-material-chrome-extension.zip?raw=true"><ng-container i18n="Chrome ext click here">Click here</ng-container></a> <ng-container i18n="Chrome click here suffix">to download the official YoutubeDL-Material Chrome extension manually.</ng-container></p>
 | 
						|
                        <p><ng-container i18n="Chrome setup suffix">You must manually load the extension and modify the extension's settings to set the frontend URL.</ng-container></p>
 | 
						|
                        <mat-divider class="ext-divider"></mat-divider>
 | 
						|
                    </div>
 | 
						|
                    <div class="col-12">
 | 
						|
                        <h6>Firefox</h6>
 | 
						|
                        <p><a href="https://addons.mozilla.org/en-US/firefox/addon/youtubedl-material/" target="_blank"><ng-container i18n="Firefox ext click here">Click here</ng-container></a> <ng-container i18n="Firefox click here suffix">to install the official YoutubeDL-Material Firefox extension right off the Firefox extensions page.</ng-container></p>
 | 
						|
                        <p><a href="https://github.com/Tzahi12345/YoutubeDL-Material/wiki/Firefox-Extension" target="_blank"><ng-container i18n="Firefox setup prefix link">Detailed setup instructions.</ng-container></a> <ng-container i18n="Firefox setup suffix">Not much is required other than changing the extension's settings to set the frontend URL.</ng-container></p>
 | 
						|
                        <mat-divider class="ext-divider"></mat-divider>
 | 
						|
                    </div>
 | 
						|
                    <div class="col-12">
 | 
						|
                        <h6>Bookmarklet</h6>
 | 
						|
                        <p><ng-container i18n="Bookmarklet instructions">Drag the link below to your bookmarks, and you're good to go! Just navigate to the YouTube video you'd like to download, and click the bookmark.</ng-container></p>
 | 
						|
                        <mat-checkbox (change)="bookmarkletAudioOnlyChanged($event)"><ng-container i18n="Generate audio only bookmarklet checkbox">Generate 'audio only' bookmarklet</ng-container></mat-checkbox>
 | 
						|
                        <!--<button style="margin-bottom: 5px;" mat-stroked-button color="accent" (click)="generateBookmarklet()">Generate bookmarklet</button>-->
 | 
						|
                        <p><a [href]="generated_bookmarklet_code" target="_blank">YTDL-Bookmarklet</a></p>
 | 
						|
                    </div>
 | 
						|
                </div>
 | 
						|
            </div>
 | 
						|
        </ng-template>
 | 
						|
    </mat-tab>
 | 
						|
    <!-- Advanced -->
 | 
						|
    <mat-tab label="Advanced" i18n-label="Host settings label">
 | 
						|
        <ng-template matTabContent>
 | 
						|
            <div *ngIf="new_config" class="container-fluid">
 | 
						|
                <div class="row">
 | 
						|
                    <div class="col-12 mt-3">
 | 
						|
                        <mat-checkbox color="accent" [(ngModel)]="new_config['Advanced']['use_default_downloading_agent']"><ng-container i18n="Use default downloading agent setting">Use default downloading agent</ng-container></mat-checkbox>
 | 
						|
                    </div>
 | 
						|
                    <div class="col-12">
 | 
						|
                        <mat-form-field>
 | 
						|
                            <mat-label><ng-container i18n="Custom downloader select label">Select a downloader</ng-container></mat-label>
 | 
						|
                            <mat-select [disabled]="new_config['Advanced']['use_default_downloading_agent']" color="accent" [(ngModel)]="new_config['Advanced']['custom_downloading_agent']">
 | 
						|
                                <mat-option value="aria2c">aria2c</mat-option>
 | 
						|
                                <mat-option value="avconv">avconv</mat-option>
 | 
						|
                                <mat-option value="axel">axel</mat-option>
 | 
						|
                                <mat-option value="curl">curl</mat-option>
 | 
						|
                                <mat-option value="ffmpeg">ffmpeg</mat-option>
 | 
						|
                                <mat-option value="httpie">httpie</mat-option>
 | 
						|
                                <mat-option value="wget">wget</mat-option>
 | 
						|
                            </mat-select>
 | 
						|
                        </mat-form-field>
 | 
						|
                    </div>
 | 
						|
                    <div class="col-12 mt-2 mb-1">
 | 
						|
                        <mat-form-field>
 | 
						|
                            <mat-label><ng-container i18n="Logger level select label">Select a logger level</ng-container></mat-label>
 | 
						|
                            <mat-select color="accent" [(ngModel)]="new_config['Advanced']['logger_level']">
 | 
						|
                                <mat-option value="debug">Debug</mat-option>
 | 
						|
                                <mat-option value="verbose">Verbose</mat-option>
 | 
						|
                                <mat-option value="info">Info</mat-option>
 | 
						|
                                <mat-option value="warn">Warn</mat-option>
 | 
						|
                                <mat-option value="error">Error</mat-option>
 | 
						|
                            </mat-select>
 | 
						|
                        </mat-form-field>
 | 
						|
                    </div>
 | 
						|
                    <div class="col-12">
 | 
						|
                        <mat-checkbox color="accent" [(ngModel)]="new_config['Advanced']['allow_advanced_download']"><ng-container i18n="Allow advanced downloading setting">Allow advanced download</ng-container></mat-checkbox>
 | 
						|
                    </div>
 | 
						|
                </div>
 | 
						|
            </div>
 | 
						|
            <mat-divider></mat-divider>
 | 
						|
            <div *ngIf="new_config" class="container-fluid">
 | 
						|
                <div class="row">
 | 
						|
                    <div class="col-12 mt-4">
 | 
						|
                        <mat-checkbox color="accent" [(ngModel)]="new_config['Advanced']['use_cookies']"><ng-container i18n="Use cookies setting">Use Cookies</ng-container></mat-checkbox>
 | 
						|
                        <button class="checkbox-button" mat-stroked-button (click)="openCookiesUploaderDialog()"><ng-container i18n="Set cookies button">Set Cookies</ng-container></button>
 | 
						|
                    </div>
 | 
						|
                </div>
 | 
						|
            </div>
 | 
						|
            <mat-divider></mat-divider>
 | 
						|
            <div *ngIf="new_config" class="container-fluid mt-1">
 | 
						|
                <app-updater></app-updater>
 | 
						|
            </div>
 | 
						|
        </ng-template>
 | 
						|
    </mat-tab>
 | 
						|
    <mat-tab *ngIf="postsService.config && postsService.config.Advanced.multi_user_mode" label="Users" i18n-label="Users settings label">
 | 
						|
        <div style="margin-left: 48px; margin-top: 24px;">
 | 
						|
            <mat-checkbox color="accent" [(ngModel)]="new_config['Users']['allow_registration']"><ng-container i18n="Allow registration setting">Allow user registration</ng-container></mat-checkbox>
 | 
						|
        </div>
 | 
						|
        <app-modify-users></app-modify-users>
 | 
						|
    </mat-tab>
 | 
						|
    <mat-tab *ngIf="postsService.config" label="Logs" i18n-label="Logs settings label">
 | 
						|
        <ng-template matTabContent>
 | 
						|
            <div style="margin-left: 48px; margin-top: 24px; height: 340px">
 | 
						|
                <app-logs-viewer></app-logs-viewer>
 | 
						|
            </div>
 | 
						|
        </ng-template>
 | 
						|
    </mat-tab>
 | 
						|
</mat-tab-group>
 | 
						|
</mat-dialog-content>
 | 
						|
 | 
						|
<mat-dialog-actions>
 | 
						|
    <div style="margin-bottom: 10px;">
 | 
						|
        <button color="accent" (click)="saveSettings()" [disabled]="settingsSame()" mat-raised-button><mat-icon>done</mat-icon>  
 | 
						|
            <ng-container i18n="Settings save button">Save</ng-container>
 | 
						|
        </button>
 | 
						|
        <button mat-flat-button [mat-dialog-close]="false"><mat-icon>cancel</mat-icon>  
 | 
						|
            <span i18n="Settings cancel and close button">{settingsAreTheSame + "", select, true {Close} false {Cancel} other {otha}}</span>
 | 
						|
        </button>
 | 
						|
    </div>
 | 
						|
</mat-dialog-actions>
 |