diff --git a/client/.angular-cli.json b/client/.angular-cli.json index be53ebd8cf..7f57bed953 100644 --- a/client/.angular-cli.json +++ b/client/.angular-cli.json @@ -62,7 +62,10 @@ "src/**/*.spec.ts", "src/app/shared/**/*.ts", "src/app/pickers/microsoft-graph/microsoft-graph-helper.ts", - "**/radio-selector/**" + "**/radio-selector/**", + "**/try-now-busy-state/**", + "**/load-image.directive.ts", + "**/pop-over/**" ] }, "karma": { diff --git a/client/package.json b/client/package.json index 476a0bdc85..44c0d435ca 100644 --- a/client/package.json +++ b/client/package.json @@ -36,7 +36,7 @@ "marked": "^0.3.9", "moment-mini-ts": "^2.20.1", "monaco-editor": "^0.10.0", - "ng-sidebar": "^6.0.1", + "ng-sidebar": "^7.1.0", "ng2-cookies": "^1.0.3", "ng2-file-upload": "~1.2.1", "ng2-popover": "^0.0.14", diff --git a/client/src/app/api/api-details/api-details.component.ts b/client/src/app/api/api-details/api-details.component.ts index 63fc8f0d65..a1e00fa55b 100644 --- a/client/src/app/api/api-details/api-details.component.ts +++ b/client/src/app/api/api-details/api-details.component.ts @@ -16,6 +16,7 @@ import { AiService } from '../../shared/services/ai.service'; import { RequestResposeOverrideComponent } from '../request-respose-override/request-respose-override.component'; import { ArmSiteDescriptor } from '../../shared/resourceDescriptors'; import { NavigableComponent, ExtendedTreeViewInfo } from '../../shared/components/navigable-component'; +import { SiteService } from '../../shared/services/site.service'; @Component({ selector: 'api-details', @@ -42,6 +43,7 @@ export class ApiDetailsComponent extends NavigableComponent implements OnDestroy private _translateService: TranslateService, private _aiService: AiService, private _functionAppService: FunctionAppService, + private _siteService: SiteService, injector: Injector) { super('api-details', injector, DashboardType.ProxyDashboard); @@ -62,7 +64,7 @@ export class ApiDetailsComponent extends NavigableComponent implements OnDestroy this.initEdit(); return Observable.zip( this._functionAppService.getApiProxies(context), - this._functionAppService.getFunctionAppAzureAppSettings(context)); + this._siteService.getAppSettings(context.site.id)); }); }) .do(r => { diff --git a/client/src/app/api/api-new/api-new.component.ts b/client/src/app/api/api-new/api-new.component.ts index 6df10cc24f..f5045bbcd3 100644 --- a/client/src/app/api/api-new/api-new.component.ts +++ b/client/src/app/api/api-new/api-new.component.ts @@ -15,6 +15,7 @@ import { FunctionInfo } from '../../shared/models/function-info'; import { errorIds } from '../../shared/models/error-ids'; import { RequestResposeOverrideComponent } from '../request-respose-override/request-respose-override.component'; import { NavigableComponent } from '../../shared/components/navigable-component'; +import { SiteService } from '../../shared/services/site.service'; @Component({ selector: 'api-new', @@ -55,6 +56,7 @@ export class ApiNewComponent extends NavigableComponent { private _translateService: TranslateService, private _aiService: AiService, private _functionAppService: FunctionAppService, + private _siteService: SiteService, fb: FormBuilder, injector: Injector) { super('api-new', injector, DashboardType.CreateProxyDashboard); @@ -94,7 +96,7 @@ export class ApiNewComponent extends NavigableComponent { return Observable.zip( this._functionAppService.getFunctions(context), this._functionAppService.getApiProxies(context), - this._functionAppService.getFunctionAppAzureAppSettings(context), + this._siteService.getAppSettings(context.site.id), (f, p, a) => ({ fcs: f, proxies: p, appSettings: a, context: context })); }); }) diff --git a/client/src/app/binding/binding.component.ts b/client/src/app/binding/binding.component.ts index 61ec70304d..c7eea743a6 100644 --- a/client/src/app/binding/binding.component.ts +++ b/client/src/app/binding/binding.component.ts @@ -17,6 +17,7 @@ import { FunctionInfo } from '../shared/models/function-info'; import { FunctionAppService } from 'app/shared/services/function-app.service'; import { FunctionAppContext } from 'app/shared/function-app-context'; import { FunctionAppContextComponent } from 'app/shared/components/function-app-context-component'; +import { SiteService } from '../shared/services/site.service'; declare var marked: any; @@ -59,6 +60,7 @@ export class BindingComponent extends FunctionAppContextComponent implements OnD constructor(@Inject(ElementRef) elementRef: ElementRef, broadcastService: BroadcastService, private _functionAppService: FunctionAppService, + private _siteService: SiteService, private _portalService: PortalService, private _cacheService: CacheService, private _translateService: TranslateService, @@ -116,7 +118,7 @@ export class BindingComponent extends FunctionAppContextComponent implements OnD .switchMap(viewInfo => { // TODO: [alrod] handle error this._functionInfo = viewInfo.functionInfo.result; - return this._functionAppService.getFunctionAppAzureAppSettings(viewInfo.context); + return this._siteService.getAppSettings(viewInfo.context.site.id); }) .subscribe(appSettingsResult => { // TODO: [alrod] handle error diff --git a/client/src/app/busy-state/busy-state.component.spec.ts b/client/src/app/busy-state/busy-state.component.spec.ts new file mode 100644 index 0000000000..8a14c03e76 --- /dev/null +++ b/client/src/app/busy-state/busy-state.component.spec.ts @@ -0,0 +1,81 @@ +import { TestBed, ComponentFixture, fakeAsync, tick } from '@angular/core/testing'; +import { async } from 'q'; +import { BusyStateComponent } from './busy-state.component'; +import { TryNowBusyStateComponent } from '../try-now-busy-state/try-now-busy-state.component'; +import { MockComponent } from 'ng-mocks'; +import { BroadcastService } from '../shared/services/broadcast.service'; +import { MockLogService } from '../test/mocks/log.service.mock'; +import { LogService } from '../shared/services/log.service'; +import { Component, ViewChild } from '@angular/core'; +import { BusyStateScopeManager } from './busy-state-scope-manager'; + +@Component({ + selector: `app-host-component`, + template: `` +}) +class TestBusyStateHostComponent { + @ViewChild(BusyStateComponent) + public busyStateComponent: BusyStateComponent; + + private _busyManager: BusyStateScopeManager; + + constructor(broadcastService: BroadcastService) { + this._busyManager = new BusyStateScopeManager(broadcastService, 'global'); + } + + public setBusy() { + this._busyManager.setBusy(); + } + + public clearBusy() { + this._busyManager.clearBusy(); + } +} +describe('BusyStateComponent', () => { + + let busyStateComponent: BusyStateComponent; + let hostComponent: TestBusyStateHostComponent; + let testFixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [BusyStateComponent, TestBusyStateHostComponent, MockComponent(TryNowBusyStateComponent)], + providers: [ + BroadcastService, + { provide: LogService, useClass: MockLogService } + ], + imports: [] + }) + .compileComponents(); + + })); + + beforeEach(() => { + testFixture = TestBed.createComponent(TestBusyStateHostComponent); + hostComponent = testFixture.componentInstance; + busyStateComponent = hostComponent.busyStateComponent; + testFixture.detectChanges(); + }); + + describe('init', () => { + it('component show init', () => { + expect(busyStateComponent).toBeTruthy(); + }); + }); + + describe('public use', () => { + it('set busy broadcast should set busy state to true', fakeAsync(() => { + hostComponent.setBusy(); + tick(100); // wait 100 ms for debounce time + expect(busyStateComponent.busy).toBeTruthy(); + })); + + it('clear busy broadcast should set busy state to false', fakeAsync(() => { + hostComponent.setBusy(); + tick(100); // wait 100 ms for debounce time + hostComponent.clearBusy(); + tick(100); + expect(busyStateComponent.busy).toBeFalsy(); + })); + }); +}); diff --git a/client/src/app/controls/card-info-control/card-info-control.component.scss b/client/src/app/controls/card-info-control/card-info-control.component.scss index 9596ebc991..9a435836b6 100644 --- a/client/src/app/controls/card-info-control/card-info-control.component.scss +++ b/client/src/app/controls/card-info-control/card-info-control.component.scss @@ -3,7 +3,10 @@ vertical-align: middle } .cardContainer { - padding: 25px 25px; + padding-top: 10px; + padding-left: 25px; + padding-right: 25px; + padding-bottom: 10px; } diff --git a/client/src/app/controls/card-info-control/card-info-control.component.spec.ts b/client/src/app/controls/card-info-control/card-info-control.component.spec.ts new file mode 100644 index 0000000000..61e55fe9c0 --- /dev/null +++ b/client/src/app/controls/card-info-control/card-info-control.component.spec.ts @@ -0,0 +1,51 @@ +import { TestBed, ComponentFixture } from '@angular/core/testing'; +import { async } from 'q'; +import { Component, ViewChild } from '@angular/core'; +import { CardInfoControlComponent } from './card-info-control.component'; +import { MockDirective } from 'ng-mocks'; +import { LoadImageDirective } from '../load-image/load-image.directive'; +import { TranslateModule } from '@ngx-translate/core'; + +@Component({ + selector: `app-card-info-host-component`, + template: `` +}) +class TestCardInfoHostComponent { + @ViewChild(CardInfoControlComponent) + public cardDashbaordComponent: CardInfoControlComponent; + + public image = ''; + public header = ''; + public description = ''; + public learnMoreLink = ''; +} + +describe('CardInfoControl', () => { + let cardInfoComponent: CardInfoControlComponent; + let hostComponent: TestCardInfoHostComponent; + let testFixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [CardInfoControlComponent, TestCardInfoHostComponent, MockDirective(LoadImageDirective)], + providers: [ + ], + imports: [TranslateModule.forRoot()] + }) + .compileComponents(); + + })); + + beforeEach(() => { + testFixture = TestBed.createComponent(TestCardInfoHostComponent); + hostComponent = testFixture.componentInstance; + cardInfoComponent = hostComponent.cardDashbaordComponent; + testFixture.detectChanges(); + }); + + describe('init', () => { + it('control initiates', () => { + expect(cardInfoComponent).toBeTruthy(); + }); + }); +}); diff --git a/client/src/app/controls/command-bar/command-bar.component.spec.ts b/client/src/app/controls/command-bar/command-bar.component.spec.ts new file mode 100644 index 0000000000..dcc6257273 --- /dev/null +++ b/client/src/app/controls/command-bar/command-bar.component.spec.ts @@ -0,0 +1,30 @@ +import { CommandBarComponent } from './command-bar.component'; +import { CommonModule } from '@angular/common'; +import { async } from 'q'; +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +describe('CommandBar', () => { + let commandBar: CommandBarComponent; + let testFixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [CommandBarComponent], + imports: [CommonModule] + }) + .compileComponents(); + + })); + + beforeEach(() => { + testFixture = TestBed.createComponent(CommandBarComponent); + commandBar = testFixture.componentInstance; + testFixture.detectChanges(); + }); + + describe('init', () => { + it('should initialize component', () => { + expect(commandBar).toBeTruthy(); + }); + }); +}); diff --git a/client/src/app/controls/command-bar/command/command.component.spec.ts b/client/src/app/controls/command-bar/command/command.component.spec.ts new file mode 100644 index 0000000000..fa6475f183 --- /dev/null +++ b/client/src/app/controls/command-bar/command/command.component.spec.ts @@ -0,0 +1,109 @@ +import { Component, ViewChild } from '@angular/core'; +import { CommandComponent } from './command.component'; +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { async } from 'q'; +import { MockDirective } from 'ng-mocks'; +import { LoadImageDirective } from '../../load-image/load-image.directive'; +import { By } from '@angular/platform-browser'; +import { KeyCodes } from '../../../shared/models/constants'; + +@Component({ + selector: `app-command-host-component`, + template: `` +}) +class TestCommandHostComponent { + @ViewChild(CommandComponent) + public commandComponent: CommandComponent; + + public iconUrl = 'testicon'; + public displayText = 'testtext'; + public disabled = false; + + public clicked = false; + public onClick(event) { + this.clicked = true; + } +} + +describe('CommandControl', () => { + let commandComponent: CommandComponent; + let hostComponent: TestCommandHostComponent; + let testFixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [CommandComponent, TestCommandHostComponent, MockDirective(LoadImageDirective)] + }) + .compileComponents(); + + })); + + beforeEach(() => { + testFixture = TestBed.createComponent(TestCommandHostComponent); + hostComponent = testFixture.componentInstance; + commandComponent = hostComponent.commandComponent; + testFixture.detectChanges(); + }); + + describe('init', () => { + it('should init control', () => { + expect(commandComponent).toBeTruthy(); + }); + it('should have correct text and icon', () => { + expect(commandComponent.displayText).toBe('testtext'); + expect(commandComponent.iconUrl).toBe('testicon'); + }); + + it('should be enabled by default', () => { + expect(commandComponent.disabled).toBeFalsy(); + }); + + }); + + describe('Enabled Behavior', () => { + it('should not have disabled-command class', () => { + const elem = testFixture.debugElement.query(By.css('.disabled-command')); + expect(elem).toBeFalsy(); + }); + + it('click should trigger click event', () => { + const elem = testFixture.debugElement.query(By.css('a')); + elem.nativeElement.click(); + expect(hostComponent.clicked).toBeTruthy(); + }); + + it('enter keypress should trigger click event', () => { + const elem = testFixture.debugElement.query(By.css('a')); + elem.triggerEventHandler('keydown', { + keyCode: KeyCodes.enter + }); + expect(hostComponent.clicked).toBeTruthy(); + }); + }); + + describe('Disabled Behavior', () => { + it('should have disabled-command class', () => { + hostComponent.disabled = true; + testFixture.detectChanges(); + const elem = testFixture.debugElement.query(By.css('.disabled-command')); + expect(elem).toBeTruthy(); + }); + it('click should not trigger click event', () => { + hostComponent.disabled = true; + testFixture.detectChanges(); + const elem = testFixture.debugElement.query(By.css('a')); + elem.nativeElement.click(); + expect(hostComponent.clicked).toBeFalsy(); + }); + + it('enter keypress should trigger click event', () => { + hostComponent.disabled = true; + testFixture.detectChanges(); + const elem = testFixture.debugElement.query(By.css('a')); + elem.triggerEventHandler('keydown', { + keyCode: KeyCodes.enter + }); + expect(hostComponent.clicked).toBeFalsy(); + }); + }); +}); diff --git a/client/src/app/controls/command-bar/command/command.component.ts b/client/src/app/controls/command-bar/command/command.component.ts index cac906ab5c..14df9eb1f6 100644 --- a/client/src/app/controls/command-bar/command/command.component.ts +++ b/client/src/app/controls/command-bar/command/command.component.ts @@ -25,7 +25,7 @@ export class CommandComponent { } onKeyPress(event: KeyboardEvent) { - if (event.keyCode === KeyCodes.enter) { + if (event.keyCode === KeyCodes.enter && !this.disabled) { this.click.next(event); } } diff --git a/client/src/app/controls/info-box/info-box.component.html b/client/src/app/controls/info-box/info-box.component.html index b4252a4ada..95155c9990 100644 --- a/client/src/app/controls/info-box/info-box.component.html +++ b/client/src/app/controls/info-box/info-box.component.html @@ -1,4 +1,4 @@ -
+ + \ No newline at end of file diff --git a/client/src/app/controls/info-box/info-box.component.scss b/client/src/app/controls/info-box/info-box.component.scss index fe4a855d8f..ce8139cdb1 100644 --- a/client/src/app/controls/info-box/info-box.component.scss +++ b/client/src/app/controls/info-box/info-box.component.scss @@ -1,67 +1,75 @@ -@import '../../../sass/common/variables'; +@import "../../../sass/common/variables"; -.info-box{ - margin-bottom: 10px; +.info-box { + margin-bottom: 10px; - .info-icon-container{ - display: table-cell; - vertical-align: middle; + .info-icon-container { + display: table-cell; + vertical-align: middle; - .info-icon{ - height: 30px; - width: 30px; - padding: 5px; - } + .info-icon { + height: 30px; + width: 30px; + padding: 5px; } + } - .info-text-container{ - display: table-cell; - width: 100%; - vertical-align: middle; - padding: 10px; - color: $body-bg-color-dark; - } + .info-text-container { + display: table-cell; + width: 100%; + vertical-align: middle; + padding: 10px; + color: $body-bg-color-dark; + } - .info-link-container{ - display: table-cell; - vertical-align: top; - padding-top: 5px; - padding-right: 5px; - } + .info-link-container { + display: table-cell; + vertical-align: top; + padding-top: 5px; + padding-right: 5px; + } + + .info-dismiss-container { + display: table-cell; + vertical-align: top; + padding-top: 10px; + padding-right: 10px; + } } -.info-box.info{ - background-color: $info-box-color; - - &.clickable:hover{ - background-color: $info-box-color-hover; - } +.info-box.info { + background-color: $info-box-color; + + &.clickable:hover { + background-color: $info-box-color-hover; + } } -.info-box.info /deep/ .msportalfx-svg-c15, .info-box.info /deep/ .msportalfx-svg-c16 { - fill: $primary-color; +.info-box.info /deep/ .msportalfx-svg-c15, +.info-box.info /deep/ .msportalfx-svg-c16 { + fill: $primary-color; } -.info-box.warning{ - background-color: $warning-box-color; - - &.clickable:hover{ - background-color: $warning-box-color-hover; - } +.info-box.warning { + background-color: $warning-box-color; + + &.clickable:hover { + background-color: $warning-box-color-hover; + } } .info-box.warning /deep/ .msportalfx-svg-c10 { - fill: $warning-color; + fill: $warning-color; } -.info-box.error{ - background-color: $error-box-color; - - &.clickable:hover{ - background-color: $error-box-color-hover; - } +.info-box.error { + background-color: $error-box-color; + + &.clickable:hover { + background-color: $error-box-color-hover; + } } .info-box.error /deep/ .msportalfx-svg-c22 { - fill: $error-color; -} \ No newline at end of file + fill: $error-color; +} diff --git a/client/src/app/controls/info-box/info-box.component.spec.ts b/client/src/app/controls/info-box/info-box.component.spec.ts new file mode 100644 index 0000000000..5e69543b05 --- /dev/null +++ b/client/src/app/controls/info-box/info-box.component.spec.ts @@ -0,0 +1,169 @@ +import { CommonModule } from '@angular/common'; +import { async } from 'q'; +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { InfoBoxComponent } from './info-box.component'; +import { MockDirective } from 'ng-mocks'; +import { LoadImageDirective } from '../load-image/load-image.directive'; +import { Component, ViewChild } from '@angular/core'; +import { By } from '@angular/platform-browser'; +import { KeyCodes } from '../../shared/models/constants'; +import { TranslateModule } from '@ngx-translate/core'; + +@Component({ + selector: `app-info-box-host-component`, + template: `` +}) +class TestInfoboxHostComponent { + @ViewChild(InfoBoxComponent) + public ibComponent: InfoBoxComponent; + + public infoText = 'testtext'; + public infoLink = 'testLink'; + public infoActionFn = null; + public type: 'info' | 'warning' | 'error' = 'info'; + public dismissable = false; + public dismissId = null; +} + +describe('InfoBox', () => { + let hostComponent: TestInfoboxHostComponent; + let infoboxComponent: InfoBoxComponent; + let testFixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [InfoBoxComponent, TestInfoboxHostComponent, MockDirective(LoadImageDirective)], + imports: [CommonModule, TranslateModule.forRoot()] + }) + .compileComponents(); + + })); + + beforeEach(() => { + testFixture = TestBed.createComponent(TestInfoboxHostComponent); + hostComponent = testFixture.componentInstance; + infoboxComponent = hostComponent.ibComponent; + testFixture.detectChanges(); + + spyOn( window, 'open' ).and.callFake( function() { + return true; + } ); + }); + + describe('init', () => { + it('should initialize component', () => { + expect(infoboxComponent).toBeTruthy(); + }); + + it('should initialize to info type', () => { + expect(infoboxComponent.iconPath).toBe('image/info.svg'); + expect(infoboxComponent.typeClass).toBe('info'); + }); + }); + + describe('Types', () => { + it('should set warning values correctly', () => { + hostComponent.type = 'warning'; + testFixture.detectChanges(); + expect(infoboxComponent.iconPath).toBe('image/warning.svg'); + expect(infoboxComponent.typeClass).toBe('warning'); + }); + + it('should set error values correctly', () => { + hostComponent.type = 'error'; + testFixture.detectChanges(); + expect(infoboxComponent.iconPath).toBe('image/error.svg'); + expect(infoboxComponent.typeClass).toBe('error'); + }); + }); + + describe('Link Events', () => { + it('click should open link', () => { + hostComponent.infoLink = 'testClickLink'; + testFixture.detectChanges(); + const elem = testFixture.debugElement.query(By.css('.info-box')); + elem.nativeElement.click(); + expect(window.open).toHaveBeenCalledWith('testClickLink', '_blank'); + }); + + it('enter should open link', () => { + hostComponent.infoLink = 'testEnterLink'; + testFixture.detectChanges(); + const elem = testFixture.debugElement.query(By.css('.info-box')); + elem.triggerEventHandler('keydown', { + keyCode: KeyCodes.enter + }); + expect(window.open).toHaveBeenCalledWith('testEnterLink', '_blank'); + }); + }); + + describe('Action Events', () => { + it('click should invoke action if one is defined', () => { + let clicked = false; + hostComponent.infoActionFn = () => clicked = true; + testFixture.detectChanges(); + const elem = testFixture.debugElement.query(By.css('.info-box')); + elem.nativeElement.click(); + expect(clicked).toBeTruthy(); + }); + + it('enter should invoke action if one is defined', () => { + let clicked = false; + hostComponent.infoActionFn = () => clicked = true; + testFixture.detectChanges(); + const elem = testFixture.debugElement.query(By.css('.info-box')); + elem.triggerEventHandler('keydown', { + keyCode: KeyCodes.enter + }); + expect(clicked).toBeTruthy(); + }); + }); + + describe('Dismiss actions', () => { + it('should show dismiss link if set to dismissable', () => { + hostComponent.dismissable = true; + testFixture.detectChanges(); + const elem = testFixture.debugElement.query(By.css('.info-dismiss-container')); + expect(elem).not.toBeNull(); + }); + + it('should dimiss the info box on click of dimiss', () => { + hostComponent.dismissable = true; + testFixture.detectChanges(); + const elem = testFixture.debugElement.query(By.css('.info-dismiss-container a')); + elem.nativeElement.click(); + expect(hostComponent.ibComponent.dismissed).toBeTruthy(); + }); + + it('should dimiss the info box if dismissId is set', () => { + hostComponent.dismissable = true; + hostComponent.dismissId = 'id1'; + testFixture.detectChanges(); + const elem = testFixture.debugElement.query(By.css('.info-dismiss-container a')); + elem.nativeElement.click(); + expect(infoboxComponent.dismissed).toBeTruthy(); + expect(InfoBoxComponent['_dismissedIds']).not.toBeNull(); + expect(InfoBoxComponent['_dismissedIds']['id1']).toBeTruthy(); + }); + }); + + describe('Misc Events', () => { + it('non enter keycode should do nothing', () => { + hostComponent.infoLink = 'testEnterLink'; + testFixture.detectChanges(); + const elem = testFixture.debugElement.query(By.css('.info-box')); + elem.triggerEventHandler('keydown', { + keyCode: KeyCodes.arrowDown + }); + expect(window.open).not.toHaveBeenCalledWith('testEnterLink', '_blank'); + }); + + it('clicking with no action or link defined should do nothing', () => { + hostComponent.infoLink = ''; + testFixture.detectChanges(); + const elem = testFixture.debugElement.query(By.css('.info-box')); + elem.nativeElement.click(); + expect(window.open).not.toHaveBeenCalled(); + }); + }); +}); diff --git a/client/src/app/controls/info-box/info-box.component.ts b/client/src/app/controls/info-box/info-box.component.ts index 277738afec..0db215e652 100644 --- a/client/src/app/controls/info-box/info-box.component.ts +++ b/client/src/app/controls/info-box/info-box.component.ts @@ -8,13 +8,18 @@ import { Component, Input } from '@angular/core'; }) export class InfoBoxComponent { + private static _dismissedIds: { [key: string]: boolean } = {}; + private _dismissId: string; + + public typeClass = 'info'; + public iconPath = 'image/info.svg'; + public dismissed = false; + @Input() infoText: string = null; @Input() infoLink: string = null; @Input() infoActionFn: () => void = null; @Input() infoActionIcon: string = null; - - public typeClass = 'info'; - public iconPath = 'image/info.svg'; + @Input() dismissable = false; @Input('typeClass') set type(value: 'info' | 'warning' | 'error') { switch (value) { @@ -33,10 +38,23 @@ export class InfoBoxComponent { } } + @Input('dismissId') set id(value: string) { + this.dismissed = InfoBoxComponent._dismissedIds && InfoBoxComponent._dismissedIds[value]; + this._dismissId = value; + } + onClick(event: any) { this._invoke(); } + onDismiss() { + this.dismissed = true; + + if (this._dismissId) { + InfoBoxComponent._dismissedIds[this._dismissId] = true; + } + } + onKeyPress(event: KeyboardEvent) { if (event.keyCode === KeyCodes.enter) { this._invoke(); diff --git a/client/src/app/controls/textbox/textbox.component.html b/client/src/app/controls/textbox/textbox.component.html index 30c8936f95..1bd72e6184 100644 --- a/client/src/app/controls/textbox/textbox.component.html +++ b/client/src/app/controls/textbox/textbox.component.html @@ -1,7 +1,7 @@
{ + let textbox: TextboxComponent; + let testFixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [TextboxComponent, MockComponent(PopOverComponent)], + providers: [], + imports: [CommonModule, ReactiveFormsModule, FormsModule] + }) + .compileComponents(); + + })); + + beforeEach(() => { + testFixture = TestBed.createComponent(TextboxComponent); + textbox = testFixture.componentInstance; + testFixture.detectChanges(); + }); + + describe('init', () => { + it('should init control', () => { + expect(textbox).toBeTruthy(); + }); + }); +}); diff --git a/client/src/app/controls/textbox/textbox.component.ts b/client/src/app/controls/textbox/textbox.component.ts index ea3aff9f0a..7c08cbb954 100644 --- a/client/src/app/controls/textbox/textbox.component.ts +++ b/client/src/app/controls/textbox/textbox.component.ts @@ -14,7 +14,7 @@ export class TextboxComponent implements OnInit { @Input() highlightDirty: boolean; @Input() readonly: boolean; @Input() disabled: boolean; - + @Input() type: 'text' | 'password' = 'text'; @Output() change: Subject; @Output() value: Subject; diff --git a/client/src/app/copy-pre/copy-pre.component.html b/client/src/app/copy-pre/copy-pre.component.html index 3edd2f653f..ada611d348 100644 --- a/client/src/app/copy-pre/copy-pre.component.html +++ b/client/src/app/copy-pre/copy-pre.component.html @@ -2,11 +2,17 @@
-
{{content}}
+
{{contentView ? content : hiddenContentPlaceholder}}
-
- -  {{ 'copypre_copy' | translate }} - +
+  {{ 'show' | translate }} +
+
+  {{ 'hide' | translate }}
+
+ +  {{ 'copypre_copy' | translate }} + +
diff --git a/client/src/app/copy-pre/copy-pre.component.spec.ts b/client/src/app/copy-pre/copy-pre.component.spec.ts new file mode 100644 index 0000000000..073818e095 --- /dev/null +++ b/client/src/app/copy-pre/copy-pre.component.spec.ts @@ -0,0 +1,117 @@ +import { Component, ViewChild } from '@angular/core'; +import { CopyPreComponent } from './copy-pre.component'; +import { ComponentFixture, TestBed, fakeAsync } from '@angular/core/testing'; +import { UtilitiesService } from '../shared/services/utilities.service'; +import { async } from 'q'; +import { CommonModule } from '@angular/common'; +import { TranslateModule } from '@ngx-translate/core'; +import { MockComponent } from 'ng-mocks'; +import { PopOverComponent } from '../pop-over/pop-over.component'; +import { By } from '@angular/platform-browser'; + +@Component({ + selector: `app-copy-pre-host-component`, + template: `` +}) +class TestCopyPreComponent { + @ViewChild(CopyPreComponent) + public copyPreComponent: CopyPreComponent; + + content = 'content'; + label = 'label'; +} + +describe('CopyPreComponent', () => { + let copyPreComponent: CopyPreComponent; + let hostComponent: TestCopyPreComponent; + let testFixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [CopyPreComponent, TestCopyPreComponent, MockComponent(PopOverComponent)], + providers: [UtilitiesService], + imports: [CommonModule, TranslateModule.forRoot()] + }) + .compileComponents(); + + })); + + beforeEach(() => { + testFixture = TestBed.createComponent(TestCopyPreComponent); + hostComponent = testFixture.componentInstance; + copyPreComponent = hostComponent.copyPreComponent; + testFixture.detectChanges(); + }); + + describe('init', () => { + it('should init control', () => { + expect(copyPreComponent).toBeTruthy(); + }); + + it('selectOnClick should be true by default', () => { + expect(copyPreComponent.selectOnClick).toBeTruthy(); + }); + + it('passwordField should be false by default', () => { + expect(copyPreComponent.passwordField).toBeFalsy(); + }); + }); + + describe('highlight text', () => { + it('should highlight text when clicked by default', () => { + const elem = testFixture.debugElement.query(By.css('pre')); + elem.nativeElement.click(); + const selection = window.getSelection().toString(); + expect(selection).toBe('content'); + }); + + it('should not highlight text is selectOnClick is disabled', () => { + copyPreComponent.selectOnClick = false; + const elem = testFixture.debugElement.query(By.css('pre')); + elem.nativeElement.click(); + const selection = window.getSelection().toString(); + expect(selection).toBe(''); + }); + }); + + describe('copy to clipboard', () => { + it('should copy content to clipboard in utility service', fakeAsync((done) => { + spyOn(document, 'execCommand').and.callThrough(); + spyOn(copyPreComponent['_utilities'], 'copyContentToClipboard').and.callThrough(); + const elem = testFixture.debugElement.query(By.css('pre')); + elem.nativeElement.click(); + copyPreComponent.copyToClipboard(); + expect(document.execCommand).toHaveBeenCalledWith('copy'); + expect(copyPreComponent['_utilities'].copyContentToClipboard).toHaveBeenCalledWith('content'); + })); + }); + + describe('Password Field', () => { + it('should show dots in field when contentView is false', () => { + copyPreComponent.contentView = false; + copyPreComponent.passwordField = true; + testFixture.detectChanges(); + const elem = testFixture.debugElement.query(By.css('pre')); + expect(elem.nativeElement.innerText).toBe(copyPreComponent.hiddenContentPlaceholder); + }); + + it('should show password when show button is clicked', () => { + copyPreComponent.contentView = false; + copyPreComponent.passwordField = true; + testFixture.detectChanges(); + copyPreComponent.showPassword(); + expect(copyPreComponent.passwordField).toBeTruthy(); + expect(copyPreComponent.contentView).toBeTruthy(); + }); + + it('should hide password when hide button is clicked', () => { + copyPreComponent.contentView = true; + copyPreComponent.passwordField = true; + testFixture.detectChanges(); + copyPreComponent.hidePassword(); + expect(copyPreComponent.passwordField).toBeTruthy(); + expect(copyPreComponent.contentView).toBeFalsy(); + }); + + }); +}); diff --git a/client/src/app/copy-pre/copy-pre.component.ts b/client/src/app/copy-pre/copy-pre.component.ts index 751e6e656d..83419131d4 100644 --- a/client/src/app/copy-pre/copy-pre.component.ts +++ b/client/src/app/copy-pre/copy-pre.component.ts @@ -1,4 +1,4 @@ -import { Component, Input } from '@angular/core'; +import { Component, Input, OnInit } from '@angular/core'; import { UtilitiesService } from '../shared/services/utilities.service'; @Component({ @@ -6,12 +6,20 @@ import { UtilitiesService } from '../shared/services/utilities.service'; templateUrl: './copy-pre.component.html', styleUrls: ['./copy-pre.component.scss'] }) -export class CopyPreComponent { +export class CopyPreComponent implements OnInit { @Input() selectOnClick = true; @Input() content: string; @Input() label: string; + @Input() passwordField = false; - constructor(private _utilities: UtilitiesService) { } + public contentView = true; + public hiddenContentPlaceholder = '●●●●●●●●●●●●●●●'; + constructor(private _utilities: UtilitiesService) { + } + + ngOnInit() { + this.contentView = !this.passwordField; + } highlightText(event: Event) { if (this.selectOnClick) { @@ -22,4 +30,12 @@ export class CopyPreComponent { copyToClipboard() { this._utilities.copyContentToClipboard(this.content); } + + showPassword() { + this.contentView = true; + } + + hidePassword() { + this.contentView = false; + } } diff --git a/client/src/app/function-monitor/function-monitor.component.ts b/client/src/app/function-monitor/function-monitor.component.ts index b3c9f8d103..39cdb77995 100644 --- a/client/src/app/function-monitor/function-monitor.component.ts +++ b/client/src/app/function-monitor/function-monitor.component.ts @@ -1,5 +1,5 @@ import { ScenarioService } from './../shared/services/scenario/scenario.service'; -import { ScenarioIds, Constants } from './../shared/models/constants'; +import { ScenarioIds, Constants, LogCategories } from './../shared/models/constants'; import { ComponentNames } from 'app/shared/models/constants'; import { Component, Injector } from '@angular/core'; import { Observable } from 'rxjs/Observable'; @@ -14,6 +14,8 @@ import { BroadcastEvent } from '../shared/models/broadcast-event'; import { PortalResources } from '../shared/models/portal-resources'; import { TranslateService } from '@ngx-translate/core'; import { ApplicationInsightsService } from '../shared/services/application-insights.service'; +import { SiteService } from '../shared/services/site.service'; +import { LogService } from '../shared/services/log.service'; @Component({ selector: ComponentNames.functionMonitor, @@ -29,9 +31,11 @@ export class FunctionMonitorComponent extends NavigableComponent { constructor( private _functionAppService: FunctionAppService, + private _siteService: SiteService, private _scenarioService: ScenarioService, private _translateService: TranslateService, private _applicationInsightsService: ApplicationInsightsService, + private _logService: LogService, public globalStateService: GlobalStateService, injector: Injector ) { @@ -62,7 +66,7 @@ export class FunctionMonitorComponent extends NavigableComponent { .switchMap(tuple => Observable.zip( Observable.of(tuple[0]), this._functionAppService.getFunction(tuple[0], tuple[1].functionDescriptor.name), - this._functionAppService.getFunctionAppAzureAppSettings(tuple[0]), + this._siteService.getAppSettings(tuple[0].site.id), this._scenarioService.checkScenarioAsync(ScenarioIds.appInsightsConfigurable, { site: tuple[0].site }) )) .map((tuple): FunctionMonitorInfo => ({ @@ -127,6 +131,11 @@ export class FunctionMonitorComponent extends NavigableComponent { message: this._translateService.instant(PortalResources.monitoring_appInsightsIsNotFound), resourceId: this.functionMonitorInfo.functionAppContext.site.id }; + + this._logService.error( + LogCategories.applicationInsightsKeyNotFound, + errorIds.applicationInsightsInstrumentationKeyMismatch, + 'Application Insights Instrumentation Key not found'); } this.monitorConfigureInfo = { diff --git a/client/src/app/function-monitor/monitor-applicationinsights/monitor-applicationinsights.component.html b/client/src/app/function-monitor/monitor-applicationinsights/monitor-applicationinsights.component.html index b74af2d0cb..380740b2f0 100644 --- a/client/src/app/function-monitor/monitor-applicationinsights/monitor-applicationinsights.component.html +++ b/client/src/app/function-monitor/monitor-applicationinsights/monitor-applicationinsights.component.html @@ -9,7 +9,9 @@ + [infoText]="'appInsightsDelay' | translate" + dismissable=true, + [dismissId]="componentId">
diff --git a/client/src/app/function-monitor/monitor-applicationinsights/monitor-applicationinsights.component.ts b/client/src/app/function-monitor/monitor-applicationinsights/monitor-applicationinsights.component.ts index 6309698f1e..14a0ca7724 100644 --- a/client/src/app/function-monitor/monitor-applicationinsights/monitor-applicationinsights.component.ts +++ b/client/src/app/function-monitor/monitor-applicationinsights/monitor-applicationinsights.component.ts @@ -26,6 +26,8 @@ export class MonitorApplicationInsightsComponent extends FeatureComponent _globalStateService.setBusyState()); this.selectedFunction = 'HttpTrigger'; @@ -78,7 +80,7 @@ export class FunctionQuickstartComponent extends FunctionAppContextComponent { return Observable.zip( this._functionAppService.getFunctions(this.context), this._functionAppService.getRuntimeGeneration(this.context), - this._functionAppService.getFunctionAppAzureAppSettings(this.context)); + this._siteService.getAppSettings(this.context.site.id)); }) .do(null, e => { this._aiService.trackException(e, '/errors/function-quickstart'); diff --git a/client/src/app/function/binding-v2/binding-v2.component.ts b/client/src/app/function/binding-v2/binding-v2.component.ts index cc80b2fea3..8dc4f3644d 100644 --- a/client/src/app/function/binding-v2/binding-v2.component.ts +++ b/client/src/app/function/binding-v2/binding-v2.component.ts @@ -21,6 +21,7 @@ import { FunctionAppService } from 'app/shared/services/function-app.service'; import { FunctionAppContextComponent } from 'app/shared/components/function-app-context-component'; import { Subscription } from 'rxjs/Subscription'; import { FunctionAppContext } from 'app/shared/function-app-context'; +import { SiteService } from '../../shared/services/site.service'; declare var marked: any; @@ -76,6 +77,7 @@ export class BindingV2Component extends FunctionAppContextComponent { private _translateService: TranslateService, private _aiService: AiService, private _functionAppService: FunctionAppService, + private _siteService: SiteService, private _logService: LogService) { super('binding-v2', _functionAppService, broadcastService); @@ -124,7 +126,7 @@ export class BindingV2Component extends FunctionAppContextComponent { .switchMap(view => { this._functionInfo = view.functionInfo.result; return Observable.zip( - this._functionAppService.getFunctionAppAzureAppSettings(view.context), + this._siteService.getAppSettings(view.context.site.id), this._functionAppService.getAuthSettings(view.context), Observable.of(view) ); diff --git a/client/src/app/function/function-new/function-new.component.ts b/client/src/app/function/function-new/function-new.component.ts index ab493f367a..c6b750ad0a 100644 --- a/client/src/app/function/function-new/function-new.component.ts +++ b/client/src/app/function/function-new/function-new.component.ts @@ -25,6 +25,7 @@ import { Subscription } from 'rxjs/Subscription'; import { ScenarioService } from '../../shared/services/scenario/scenario.service'; import { ArmObj } from '../../shared/models/arm/arm-obj'; import { ApplicationSettings } from '../../shared/models/arm/application-settings'; +import { SiteService } from '../../shared/services/site.service'; interface CategoryOrder { name: string; @@ -132,7 +133,8 @@ export class FunctionNewComponent extends FunctionAppContextComponent implements private _globalStateService: GlobalStateService, private _translateService: TranslateService, private _logService: LogService, - private _functionAppService: FunctionAppService) { + private _functionAppService: FunctionAppService, + private _siteService: SiteService) { super('function-new', _functionAppService, _broadcastService, () => _globalStateService.setBusyState()); this.disabled = !!_broadcastService.getDirtyState('function_disabled'); @@ -155,7 +157,7 @@ export class FunctionNewComponent extends FunctionAppContextComponent implements return Observable.zip( this._functionAppService.getFunctions(this.context), this._functionAppService.getRuntimeGeneration(this.context), - this._functionAppService.getFunctionAppAzureAppSettings(this.context), + this._siteService.getAppSettings(this.context.site.id), this._functionAppService.getBindingConfig(this.context), this._functionAppService.getTemplates(this.context)); }) diff --git a/client/src/app/log-streaming/log-streaming.component.scss b/client/src/app/log-streaming/log-streaming.component.scss index a3d6dff336..6c937d72b6 100644 --- a/client/src/app/log-streaming/log-streaming.component.scss +++ b/client/src/app/log-streaming/log-streaming.component.scss @@ -5,7 +5,7 @@ h3{ } .log-streaming-container { - height: 245px; + height: calc(100% - 40px); position: relative; } diff --git a/client/src/app/shared/models/arm/site-config.ts b/client/src/app/shared/models/arm/site-config.ts index 0a47849b7e..1bd50f5cf6 100644 --- a/client/src/app/shared/models/arm/site-config.ts +++ b/client/src/app/shared/models/arm/site-config.ts @@ -38,4 +38,5 @@ export interface SiteConfig { appSettings?: ApplicationSettings; connectionStrings?: ConnectionStrings; ftpsState?: string; + http20Enabled: boolean; } diff --git a/client/src/app/shared/models/arm/site.ts b/client/src/app/shared/models/arm/site.ts index 10fef15186..fac200b45a 100644 --- a/client/src/app/shared/models/arm/site.ts +++ b/client/src/app/shared/models/arm/site.ts @@ -3,6 +3,7 @@ import { HostingEnvironmentProfile } from './hosting-environment'; export interface Site { state: string; hostNames: string[]; + enabledHostNames?: string[]; hostNameSslStates: Array<{ name: string; hostType: number; diff --git a/client/src/app/shared/models/constants.ts b/client/src/app/shared/models/constants.ts index 330153ef28..835fdebad5 100644 --- a/client/src/app/shared/models/constants.ts +++ b/client/src/app/shared/models/constants.ts @@ -271,6 +271,7 @@ export class LogCategories { public static readonly addSlot = 'AddSlot'; public static readonly applicationInsightsQuery = 'ApplicationInsightsQuery'; public static readonly applicationInsightsConfigure = 'ApplicationInsightsConfigure'; + public static readonly applicationInsightsKeyNotFound = 'ApplicationInsightsInstrumentationKeyNotFound'; public static readonly serverFarm = 'ServerFarm'; } diff --git a/client/src/app/shared/models/portal-resources.ts b/client/src/app/shared/models/portal-resources.ts index ed94d4ce17..5843d46d78 100644 --- a/client/src/app/shared/models/portal-resources.ts +++ b/client/src/app/shared/models/portal-resources.ts @@ -987,6 +987,7 @@ public static pricing_emptyProdGroup = 'pricing_emptyProdGroup'; public static pricing_pv2NotAvailable = 'pricing_pv2NotAvailable'; public static pricing_scaleUp = 'pricing_scaleUp'; + public static free = 'free'; public static pricing_pricePerHour = 'pricing_pricePerHour'; public static pricing_scaleUpDescription = 'pricing_scaleUpDescription'; public static pricing_applyButtonLabel = 'pricing_applyButtonLabel'; @@ -1097,4 +1098,25 @@ public static FTPBoth = 'FTPBoth'; public static FTPSOnly = 'FTPSOnly'; public static FTPDisable = 'FTPDisable'; + public static dismiss = 'dismiss'; + public static show = 'show'; + public static hide = 'hide'; + public static nomatchpassword = 'nomatchpassword'; + public static dashboard = 'dashboard'; + public static ftpDesc = 'ftpDesc'; + public static ftpInfoCardCredsDesc = 'ftpInfoCardCredsDesc'; + public static userCreds = 'userCreds'; + public static userCredsDesc = 'userCredsDesc'; + public static appCreds = 'appCreds'; + public static appCredsDesc = 'appCredsDesc'; + public static username = 'username'; + public static password = 'password'; + public static confirmPassword = 'confirmPassword'; + public static ftpsEndpoint = 'ftpsEndpoint'; + public static credentials = 'credentials'; + public static pending = 'pending'; + public static failed = 'failed'; + public static saveCredentials = 'saveCredentials'; + public static resetCredentials = 'resetCredentials'; + public static httpVersion = 'httpVersion'; } \ No newline at end of file diff --git a/client/src/app/shared/services/function-app.service.ts b/client/src/app/shared/services/function-app.service.ts index e805c07223..f3b796f7cb 100644 --- a/client/src/app/shared/services/function-app.service.ts +++ b/client/src/app/shared/services/function-app.service.ts @@ -36,6 +36,7 @@ import { LogService } from './log.service'; import { PortalService } from 'app/shared/services/portal.service'; import { ExtensionInstallStatus } from '../models/extension-install-status'; import { Templates } from './../../function/embedded/temp-templates'; +import { SiteService } from './site.service'; type Result = Observable>; @Injectable() @@ -50,6 +51,7 @@ export class FunctionAppService { private _injector: Injector, private _portalService: PortalService, private _globalStateService: GlobalStateService, + private _siteService: SiteService, logService: LogService, injector: Injector) { @@ -73,7 +75,7 @@ export class FunctionAppService { } else if (ArmUtil.isLinuxApp(context.site)) { return this._cacheService.get(Constants.serviceHost + `api/runtimetoken${context.site.id}`, false, this.portalHeaders(info.token)) } else { - return this._cacheService.get(context.urlTemplates.scmTokenUrl, true, this.headers(info.token)); + return this._cacheService.get(context.urlTemplates.scmTokenUrl, false, this.headers(info.token)); } }) .map(r => r.json()); @@ -261,7 +263,7 @@ export class FunctionAppService { return this._cacheService.get( `${Constants.cdnHost}api/templates?runtime=${(extensionVersion || 'latest')}&cacheBreak=${window.appsvc.cacheBreakQuery}`, - true, + false, headers); }) .map(r => { @@ -286,12 +288,6 @@ export class FunctionAppService { .map(r => r.json())); } - getFunctionAppAzureAppSettings(context: FunctionAppContext) { - return this.azure.executeWithConditions([], { resourceId: context.site.id }, t => - this._cacheService.postArm(`${context.site.id}/config/appsettings/list`, true) - .map(r => r.json() as ArmObj<{ [key: string]: string }>)); - } - createFunctionV2(context: FunctionAppContext, functionName: string, files: any, config: any) { const filesCopy = Object.assign({}, files); const sampleData = filesCopy['sample.dat']; @@ -780,7 +776,7 @@ export class FunctionAppService { return this.azure.executeWithConditions([], { resourceId: context.site.id }, Observable.zip( this.isSourceControlEnabled(context), - this.azure.executeWithConditions([], { resourceId: context.site.id }, this._cacheService.postArm(`${context.site.id}/config/appsettings/list`, true)), + this._siteService.getAppSettings(context.site.id), this.isSlot(context) ? Observable.of({ isSuccessful: true, result: true, error: null }) : this.getSlotsList(context).map(r => r.isSuccessful ? Object.assign(r, { result: r.result.length > 0 }) : r), @@ -788,7 +784,7 @@ export class FunctionAppService { (a, b, s, f) => ({ sourceControlEnabled: a, appSettingsResponse: b, hasSlots: s, functions: f })) .map(result => { const appSettings: ArmObj<{ [key: string]: string }> = result.appSettingsResponse.isSuccessful - ? result.appSettingsResponse.result.json() + ? result.appSettingsResponse.result : null; const sourceControlled = result.sourceControlEnabled.isSuccessful && diff --git a/client/src/app/shared/services/site.service.ts b/client/src/app/shared/services/site.service.ts index b0c6856477..b8c8cfdd59 100644 --- a/client/src/app/shared/services/site.service.ts +++ b/client/src/app/shared/services/site.service.ts @@ -114,4 +114,9 @@ export class SiteService { return this._client.execute({ resourceId: resourceId }, t => getSiteExtensions); } + + getPublishingProfile(resourceId: string): Result { + const getPublishingProfile = this._cacheService.postArm(`${resourceId}/publishxml`, true).map(r => r.text()); + return this._client.execute({ resourceId: resourceId }, t => getPublishingProfile); + } } diff --git a/client/src/app/shared/services/utilities.service.ts b/client/src/app/shared/services/utilities.service.ts index 55f0ec059a..3fb78beb85 100644 --- a/client/src/app/shared/services/utilities.service.ts +++ b/client/src/app/shared/services/utilities.service.ts @@ -3,27 +3,27 @@ import { Injectable } from '@angular/core'; @Injectable() export class UtilitiesService { - //http://stackoverflow.com/q/8019534/3234163 + // http://stackoverflow.com/q/8019534/3234163 highlightText(e: Element) { - var range = document.createRange(); + const range = document.createRange(); range.selectNodeContents(e); - var sel = window.getSelection(); + const sel = window.getSelection(); sel.removeAllRanges(); sel.addRange(range); } unHighlightText() { - var sel = window.getSelection(); + const sel = window.getSelection(); sel.removeAllRanges(); } - //https://www.reddit.com/r/web_design/comments/33kxgf/javascript_copying_to_clipboard_is_easier_than + // https://www.reddit.com/r/web_design/comments/33kxgf/javascript_copying_to_clipboard_is_easier_than copyContentToClipboard(text: string) { - var textField = document.createElement('textarea'); + const textField = document.createElement('textarea'); textField.innerText = text; document.body.appendChild(textField); textField.select(); document.execCommand('copy'); textField.remove(); } -} \ No newline at end of file +} diff --git a/client/src/app/shared/validators/passwordValidator.ts b/client/src/app/shared/validators/passwordValidator.ts new file mode 100644 index 0000000000..b7e956afd1 --- /dev/null +++ b/client/src/app/shared/validators/passwordValidator.ts @@ -0,0 +1,18 @@ +import { AbstractControl } from '@angular/forms'; +import { TranslateService } from '@ngx-translate/core'; + +export class ConfirmPasswordValidator { + static create(translateService: TranslateService, passwordControl: AbstractControl) { + return (control: AbstractControl) => { + const value = control.value; + const passwordValue = passwordControl.value; + + if (passwordValue && passwordValue !== value) { + return { + nomatchpassword: translateService.instant('nomatchpassword') + }; + } + return null; + }; + } +} diff --git a/client/src/app/site/deployment-center/Models/deployment-enums.ts b/client/src/app/site/deployment-center/Models/deployment-enums.ts index b1f946a2da..ee44b07589 100644 --- a/client/src/app/site/deployment-center/Models/deployment-enums.ts +++ b/client/src/app/site/deployment-center/Models/deployment-enums.ts @@ -17,4 +17,4 @@ export enum VSTSLogMessageType { export type ProviderType = 'None' | 'VSTSRM' | 'BitbucketGit' | 'BitbucketHg' | 'ExternalGit' | 'GitHub' | 'LocalGit' | 'Dropbox' | 'DropboxV2' | 'OneDrive' | 'VSO'; -export type ProviderDashboardType = '' | 'zip' | 'ftp' | 'webdeploy' ; +export type ProviderDashboardType = '' | 'zip' | 'ftp' | 'webdeploy' | 'reset' ; diff --git a/client/src/app/site/deployment-center/Models/publishing-profile.ts b/client/src/app/site/deployment-center/Models/publishing-profile.ts new file mode 100644 index 0000000000..5f05b8c9c9 --- /dev/null +++ b/client/src/app/site/deployment-center/Models/publishing-profile.ts @@ -0,0 +1,27 @@ +export class PublishingProfile { + msdeploySite: string; + profileName: string; + publishMethod: 'MSDeploy' | 'FTP'; + publishUrl: string; + userName: string; + userPWD: string; + + static parsePublishProfileXml(profileXmlString: string): PublishingProfile[] { + const oParser = new DOMParser(); + const oDOM = oParser.parseFromString(profileXmlString, 'text/xml'); + const publishProfileElements = oDOM.getElementsByTagName('publishProfile'); + const itemCount = publishProfileElements.length; + const PublishProfileItems: any = []; + for (let i = 0; i < itemCount; i++) { + const item = publishProfileElements.item(i); + const attributes = item.attributes; + const attributeItem = {}; + for (let j = 0; j < attributes.length; j++) { + const attr = attributes.item(j); + attributeItem[attr.name] = attr.value; + } + PublishProfileItems.push(attributeItem); + } + return PublishProfileItems; + } +} diff --git a/client/src/app/site/deployment-center/deployment-center-setup/deployment-center-setup.component.html b/client/src/app/site/deployment-center/deployment-center-setup/deployment-center-setup.component.html index 918e57a164..cc96d2515e 100644 --- a/client/src/app/site/deployment-center/deployment-center-setup/deployment-center-setup.component.html +++ b/client/src/app/site/deployment-center/deployment-center-setup/deployment-center-setup.component.html @@ -5,5 +5,5 @@ - + \ No newline at end of file diff --git a/client/src/app/site/deployment-center/deployment-center-setup/deployment-center-setup.component.scss b/client/src/app/site/deployment-center/deployment-center-setup/deployment-center-setup.component.scss index fa4fa08e75..ba87177b3b 100644 --- a/client/src/app/site/deployment-center/deployment-center-setup/deployment-center-setup.component.scss +++ b/client/src/app/site/deployment-center/deployment-center-setup/deployment-center-setup.component.scss @@ -1,4 +1,5 @@ @import '../../../../sass/main'; +@import '../../site-config/site-config.component.scss'; .centered-content { margin: auto; @@ -16,6 +17,7 @@ .footer { position: fixed; + background-color: $body-bg-color; height: 50px; margin-bottom: 0px; bottom: 0px; @@ -27,150 +29,16 @@ } -#site-config-wrapper { - padding: 5px 20px; -} - -th { - height: 0px; -} - -td { - span { - font-size: 16px; - - &:hover { - color: $error-color; - } - } - - span.delete:hover { - color: $error-color; - } -} - -.nameCol { - width: 30%; -} - -.valueCol { - width: 65%; -} - -.typeCol { - width: 200px; -} - -.actionCol { - width: 25px; -} - -.add-setting { - margin-top: 10px; - margin-left: 5px; - display: inline-block; -} - -h3 { - font-weight: bold; - margin-left: 0px; - margin-bottom: 10px; - margin-top: 35px; - padding-bottom: 10px; - display: inline-block; - //border-bottom: 1px solid #dedede; - - &.first-config-heading { - margin-top: 10px; - } -} - -.shield { - position: absolute; - left: 0; - right: 0; - top: 0; - bottom: 0; - z-index: 10; - display: flex; - background: rgba(255, 255, 255, 0.6); - - .shield-message { - padding-top: 15px; - padding-bottom: 15px; - margin-left: 25px; - margin-right: 25px; - margin-top: auto; - margin-bottom: auto; - width: 100%; - border: 1px solid black; - background: rgba(0, 0, 0, 0.6); - color: white; - text-align: center; - } -} - -.settings-group-wrapper { - position: relative; - padding: 10px; -} - .settings-wrapper { margin-top: 10px; margin-bottom: 10px; padding-left: 10px; - position: relative; - - .settings-load-message { - padding-top: 15px; - padding-bottom: 15px; - margin-top: auto; - margin-bottom: auto; - margin-left: 15px; - margin-right: 25px; - //width: 100%; - border: 1px solid black; - background: rgba(0, 0, 0, 0.6); - color: white; - text-align: center; - } .setting-wrapper { - padding-bottom: 15px; - - &.last { - padding-bottom: 0px; - } - - .setting-label { - box-sizing: border-box; - color: rgb(71, 71, 71); - display: inline-block; - font-family: az_ea_font, wf_segoe-ui_normal, 'Segoe UI', 'Segoe WP', Tahoma, Arial, sans-serif; - font-size: 12px; - font-weight: normal; - line-height: normal; - min-height: 20px; - width: 16%; - } - - .setting-control-container { - color: rgb(37, 37, 37); - display: inline-block; - font-family: az_ea_font, wf_segoe-ui_normal, 'Segoe UI', 'Segoe WP', Tahoma, Arial, sans-serif; - font-size: 12px; - font-weight: normal; - line-height: normal; - vertical-align: middle; - width: 255px; - } + width: 600px; } } -.transparent { - background: transparent; -} - .newOrExistingSelection{ margin-bottom: 5px; font-size: 12px; @@ -179,4 +47,10 @@ h3 { input{ margin: 0px 10px; } +} + +#app-root[theme=dark]{ + .footer { + background-color: $body-bg-color-dark; + } } \ No newline at end of file diff --git a/client/src/app/site/deployment-center/deployment-center-setup/deployment-center-setup.component.ts b/client/src/app/site/deployment-center/deployment-center-setup/deployment-center-setup.component.ts index 44179a0567..2a0b7305ed 100644 --- a/client/src/app/site/deployment-center/deployment-center-setup/deployment-center-setup.component.ts +++ b/client/src/app/site/deployment-center/deployment-center-setup/deployment-center-setup.component.ts @@ -120,4 +120,9 @@ export class DeploymentCenterSetupComponent implements OnChanges { } return true; } + + get showSummaryStep() { + const sourceProvider = this._wizardService && this._wizardService.wizardValues && this._wizardService.wizardValues.sourceProvider; + return sourceProvider && sourceProvider !== 'ftp' && sourceProvider !== 'webdeploy'; + } } diff --git a/client/src/app/site/deployment-center/deployment-center-setup/step-complete/step-complete.component.html b/client/src/app/site/deployment-center/deployment-center-setup/step-complete/step-complete.component.html index 57db5c8dea..527bad32c1 100644 --- a/client/src/app/site/deployment-center/deployment-center-setup/step-complete/step-complete.component.html +++ b/client/src/app/site/deployment-center/deployment-center-setup/step-complete/step-complete.component.html @@ -7,6 +7,5 @@

{{'summary'

\ No newline at end of file diff --git a/client/src/app/site/deployment-center/deployment-center-setup/step-complete/step-complete.component.spec.ts b/client/src/app/site/deployment-center/deployment-center-setup/step-complete/step-complete.component.spec.ts index fc5ac38216..3f5813ec04 100644 --- a/client/src/app/site/deployment-center/deployment-center-setup/step-complete/step-complete.component.spec.ts +++ b/client/src/app/site/deployment-center/deployment-center-setup/step-complete/step-complete.component.spec.ts @@ -2,26 +2,6 @@ import { StepCompleteComponent } from './step-complete.component'; import { ComponentFixture, fakeAsync, TestBed, async, tick } from '@angular/core/testing'; import { TranslateModule } from '@ngx-translate/core'; import { DeploymentCenterStateManager } from '../wizard-logic/deployment-center-state-manager'; -import 'rxjs/add/operator/catch'; -import 'rxjs/add/operator/debounceTime'; -import 'rxjs/add/operator/distinctUntilChanged'; -import 'rxjs/add/operator/do'; -import 'rxjs/add/operator/filter'; -import 'rxjs/add/operator/first'; -import 'rxjs/add/observable/forkJoin'; -import 'rxjs/add/operator/map'; -import 'rxjs/add/operator/merge'; -import 'rxjs/add/operator/mergeMap'; -import 'rxjs/add/observable/of'; -import 'rxjs/add/operator/retry'; -import 'rxjs/add/operator/switchMap'; -import 'rxjs/add/operator/take'; -import 'rxjs/add/operator/takeUntil'; -import 'rxjs/add/observable/timer'; -import 'rxjs/add/observable/throw'; -import 'rxjs/add/observable/zip'; -import 'rxjs/add/operator/concatMap'; -import 'rxjs/observable/interval'; import { Injectable, Directive, HostListener } from '@angular/core'; import { BroadcastService } from '../../../../shared/services/broadcast.service'; import { LogService } from '../../../../shared/services/log.service'; @@ -101,41 +81,6 @@ describe('StepCompleteComponent', () => { expect(errorLogSpy).toHaveBeenCalled(); })); }); - describe('Manual Solution', () => { - it('ftp should show "Show Dashboard" button', fakeAsync(() => { - wizardService.wizardValues.sourceProvider = 'ftp'; - tick(); - expect(buildStepTest.showDashboard).toBeTruthy(); - })); - - it('web deploy should show "Show Dashboard" button', fakeAsync(() => { - wizardService.wizardValues.sourceProvider = 'webdeploy'; - tick(); - expect(buildStepTest.showDashboard).toBeTruthy(); - })); - - it('ftp should not show "Save" button', fakeAsync(() => { - wizardService.wizardValues.sourceProvider = 'ftp'; - tick(); - expect(buildStepTest.showSave).toBeFalsy(); - })); - - it('web deploy should not show "Save" button', fakeAsync(() => { - wizardService.wizardValues.sourceProvider = 'webdeploy'; - tick(); - expect(buildStepTest.showSave).toBeFalsy(); - })); - - it('click "show dashboard" should send message to show dashboard', fakeAsync(() => { - wizardService.wizardValues.sourceProvider = 'webdeploy'; - testFixture.detectChanges(); - tick(); - const button = testFixture.debugElement.query(By.css('#step-complete-show-dashboard-button')).nativeElement; - const spy = spyOn(broadcastService, 'broadcastEvent'); - button.click(); - expect(spy).toHaveBeenCalledWith(BroadcastEvent.ReloadDeploymentCenter, 'webdeploy'); - })); - }); }); @Injectable() diff --git a/client/src/app/site/deployment-center/deployment-center-setup/step-complete/step-complete.component.ts b/client/src/app/site/deployment-center/deployment-center-setup/step-complete/step-complete.component.ts index e901826c6b..b9c65eedf1 100644 --- a/client/src/app/site/deployment-center/deployment-center-setup/step-complete/step-complete.component.ts +++ b/client/src/app/site/deployment-center/deployment-center-setup/step-complete/step-complete.component.ts @@ -6,7 +6,6 @@ import { BusyStateScopeManager } from 'app/busy-state/busy-state-scope-manager'; import { Subject } from 'rxjs/Subject'; import { LogService } from 'app/shared/services/log.service'; import { LogCategories, SiteTabIds } from 'app/shared/models/constants'; -import { sourceControlProvider } from 'app/site/deployment-center/deployment-center-setup/wizard-logic/deployment-center-setup-models'; @Component({ selector: 'app-step-complete', @@ -49,17 +48,4 @@ export class StepCompleteComponent { clearBusy() { this._busyManager.clearBusy(); } - - renderDashboard() { - this._broadcastService.broadcastEvent(BroadcastEvent.ReloadDeploymentCenter, this.wizard.wizardValues.sourceProvider); - } - - get showSave(): boolean { - return !this.showDashboard; - } - - get showDashboard(): boolean { - const sourceProvider: sourceControlProvider = this.wizard.wizardValues.sourceProvider; - return sourceProvider === 'ftp' || sourceProvider === 'webdeploy'; - } } diff --git a/client/src/app/site/deployment-center/deployment-center-setup/step-configure/configure-external/configure-external.component.ts b/client/src/app/site/deployment-center/deployment-center-setup/step-configure/configure-external/configure-external.component.ts index ec72e3f36e..292971d5fa 100644 --- a/client/src/app/site/deployment-center/deployment-center-setup/step-configure/configure-external/configure-external.component.ts +++ b/client/src/app/site/deployment-center/deployment-center-setup/step-configure/configure-external/configure-external.component.ts @@ -36,9 +36,7 @@ export class ConfigureExternalComponent { const required = new RequiredValidator(this._translateService, false); this.wizard.sourceSettings.get('repoUrl').setValidators(required.validate.bind(required)); this.wizard.sourceSettings.get('branch').setValidators(required.validate.bind(required)); - this.wizard.sourceSettings.get('isMercurial').setValidators(required.validate.bind(required)); this.wizard.sourceSettings.get('repoUrl').updateValueAndValidity(); this.wizard.sourceSettings.get('branch').updateValueAndValidity(); - this.wizard.sourceSettings.get('isMercurial').updateValueAndValidity(); } } \ No newline at end of file diff --git a/client/src/app/site/deployment-center/deployment-center-setup/step-configure/configure-onedrive/configure-onedrive.component.ts b/client/src/app/site/deployment-center/deployment-center-setup/step-configure/configure-onedrive/configure-onedrive.component.ts index d55386c303..6cd342dd75 100644 --- a/client/src/app/site/deployment-center/deployment-center-setup/step-configure/configure-onedrive/configure-onedrive.component.ts +++ b/client/src/app/site/deployment-center/deployment-center-setup/step-configure/configure-onedrive/configure-onedrive.component.ts @@ -53,7 +53,7 @@ export class ConfigureOnedriveComponent implements OnDestroy { options.push({ displayLabel: siteName, - value: `${DeploymentCenterConstants.onedriveApiUri}/${siteName}` + value: `${DeploymentCenterConstants.onedriveApiUri}:/${siteName}` }); rawFolders.value.forEach(item => { @@ -61,14 +61,14 @@ export class ConfigureOnedriveComponent implements OnDestroy { } else { options.push({ displayLabel: item.name, - value: `${DeploymentCenterConstants.onedriveApiUri}/${item.name}` + value: `${DeploymentCenterConstants.onedriveApiUri}:/${item.name}` }); } }); this.folderList = options; const vals = this.wizard.wizardValues; - vals.sourceSettings.repoUrl = `${DeploymentCenterConstants.onedriveApiUri}/${siteName}`; + vals.sourceSettings.repoUrl = `${DeploymentCenterConstants.onedriveApiUri}:/${siteName}`; this.wizard.wizardValues = vals; }, err => { diff --git a/client/src/app/site/deployment-center/deployment-center-setup/step-configure/configure-vsts-source/configure-vsts-source.component.ts b/client/src/app/site/deployment-center/deployment-center-setup/step-configure/configure-vsts-source/configure-vsts-source.component.ts index 0b6ea65499..66e889c5d1 100644 --- a/client/src/app/site/deployment-center/deployment-center-setup/step-configure/configure-vsts-source/configure-vsts-source.component.ts +++ b/client/src/app/site/deployment-center/deployment-center-setup/step-configure/configure-vsts-source/configure-vsts-source.component.ts @@ -59,15 +59,18 @@ export class ConfigureVstsSourceComponent implements OnDestroy { } updateFormValidation() { + if (this.wizard.wizardValues.buildProvider === 'vsts') { + this.wizard.buildSettings.setAsyncValidators(VstsValidators.createProjectPermissionsValidator(this.wizard, this._translateService, this._cacheService).bind(this)); + this.wizard.buildSettings.updateValueAndValidity(); + } const required = new RequiredValidator(this._translateService, false); this.wizard.sourceSettings.get('repoUrl').setValidators(required.validate.bind(required)); this.wizard.sourceSettings.get('branch').setValidators(required.validate.bind(required)); this.wizard.sourceSettings.get('isMercurial').setValidators(required.validate.bind(required)); - this.wizard.buildSettings.setAsyncValidators(VstsValidators.createProjectPermissionsValidator(this.wizard, this._translateService, this._cacheService).bind(this)); this.wizard.sourceSettings.get('repoUrl').updateValueAndValidity(); this.wizard.sourceSettings.get('branch').updateValueAndValidity(); this.wizard.sourceSettings.get('isMercurial').updateValueAndValidity(); - this.wizard.buildSettings.updateValueAndValidity(); + } setupSubscriptions() { diff --git a/client/src/app/site/deployment-center/deployment-center-setup/step-source-control/step-source-control.component.html b/client/src/app/site/deployment-center/deployment-center-setup/step-source-control/step-source-control.component.html index 567b481581..19cc98cb4c 100644 --- a/client/src/app/site/deployment-center/deployment-center-setup/step-source-control/step-source-control.component.html +++ b/client/src/app/site/deployment-center/deployment-center-setup/step-source-control/step-source-control.component.html @@ -1,7 +1,7 @@
- -
+
{{card.name}}
@@ -17,12 +17,13 @@
- \ No newline at end of file diff --git a/client/src/app/site/deployment-center/deployment-center-setup/step-source-control/step-source-control.component.ts b/client/src/app/site/deployment-center/deployment-center-setup/step-source-control/step-source-control.component.ts index aa22f4adff..24ea44b1d2 100644 --- a/client/src/app/site/deployment-center/deployment-center-setup/step-source-control/step-source-control.component.ts +++ b/client/src/app/site/deployment-center/deployment-center-setup/step-source-control/step-source-control.component.ts @@ -10,6 +10,9 @@ import { LogService } from 'app/shared/services/log.service'; import { Observable } from 'rxjs/Observable'; import { TranslateService } from '@ngx-translate/core'; import { ProviderCard } from '../../Models/provider-card'; +import { BroadcastService } from '../../../../shared/services/broadcast.service'; +import { BroadcastEvent } from '../../../../shared/models/broadcast-event'; +import { PortalResources } from '../../../../shared/models/portal-resources'; @Component({ selector: 'app-step-source-control', @@ -31,7 +34,7 @@ export class StepSourceControlComponent { name: 'OneDrive', icon: 'image/deployment-center/onedrive.svg', color: '#0A4BB3', - description: this._translateService.instant('onedriveDesc'), + description: this._translateService.instant(PortalResources.onedriveDesc), authorizedStatus: 'none' }, { @@ -39,7 +42,7 @@ export class StepSourceControlComponent { name: 'Github', icon: 'image/deployment-center/github.svg', color: '#68217A', - description: this._translateService.instant('githubDesc'), + description: this._translateService.instant(PortalResources.githubDesc), authorizedStatus: 'none' }, { @@ -47,7 +50,7 @@ export class StepSourceControlComponent { name: 'VSTS', icon: 'image/deployment-center/vsts.svg', color: '#0071bc', - description: this._translateService.instant('vstsDesc'), + description: this._translateService.instant(PortalResources.vstsDesc), authorizedStatus: 'none' }, { @@ -55,7 +58,7 @@ export class StepSourceControlComponent { name: 'External', icon: 'image/deployment-center/External.svg', color: '#7FBA00', - description: this._translateService.instant('externalDesc'), + description: this._translateService.instant(PortalResources.externalDesc), authorizedStatus: 'none' }, { @@ -63,7 +66,7 @@ export class StepSourceControlComponent { name: 'Bitbucket', icon: 'image/deployment-center/Bitbucket.svg', color: '#205081', - description: 'Configure continuous integration with a Bitbucket repo.', + description: this._translateService.instant(PortalResources.bitbucketDesc), authorizedStatus: 'none' }, { @@ -71,7 +74,7 @@ export class StepSourceControlComponent { name: 'Dropbox', icon: 'image/deployment-center/Dropbox.svg', color: '#007EE5', - description: this._translateService.instant('dropboxDesc'), + description: this._translateService.instant(PortalResources.dropboxDesc), authorizedStatus: 'none' }, { @@ -79,8 +82,17 @@ export class StepSourceControlComponent { name: 'Local Git', icon: 'image/deployment-center/LocalGit.svg', color: '#ba141a', - description: this._translateService.instant('localGitDesc'), + description: this._translateService.instant(PortalResources.localGitDesc), authorizedStatus: 'none' + }, + { + id: 'ftp', + name: 'FTP', + icon: 'image/deployment-center/FTP.svg', + color: '#FCD116', + description: this._translateService.instant(PortalResources.ftpDesc), + authorizedStatus: 'none', + manual: true } // These are options in works, not wanting to delete though // { @@ -93,16 +105,6 @@ export class StepSourceControlComponent { // authorizedStatus: 'none', // manual: true // }, - // { - // id: 'ftp', - // name: 'FTP', - // icon: 'image/deployment-center/FTP.svg', - // color: '#FCD116', - // barColor: '#fde88a', - // description: 'Use an FTP connection to access and copy app files.', - // authorizedStatus: 'none', - // manual: true - // } // , // { // id: 'zip', @@ -130,6 +132,7 @@ export class StepSourceControlComponent { private _cacheService: CacheService, private _logService: LogService, private _translateService: TranslateService, + private _broadcastService: BroadcastService, _portalService: PortalService, _armService: ArmService, _aiService: AiService @@ -275,6 +278,10 @@ export class StepSourceControlComponent { this._wizardService.wizardValues = currentFormValues; } + renderDashboard() { + this._broadcastService.broadcastEvent(BroadcastEvent.ReloadDeploymentCenter, this._wizardService.wizardValues.sourceProvider); + } + updateProvider(provider: string) { if (provider === 'dropbox') { this.dropboxUserSubject$.next(true); diff --git a/client/src/app/site/deployment-center/deployment-center-setup/wizard-logic/deployment-center-setup-models.ts b/client/src/app/site/deployment-center/deployment-center-setup/wizard-logic/deployment-center-setup-models.ts index bdcc95cd45..f388f30f27 100644 --- a/client/src/app/site/deployment-center/deployment-center-setup/wizard-logic/deployment-center-setup-models.ts +++ b/client/src/app/site/deployment-center/deployment-center-setup/wizard-logic/deployment-center-setup-models.ts @@ -65,6 +65,7 @@ export type sourceControlProvider = 'dropbox' | 'onedrive' | 'github' | 'vsts' | */ export interface ProvisioningConfiguration { + authToken: string; /** * Gets or sets the CI/CD configuration details. */ diff --git a/client/src/app/site/deployment-center/deployment-center-setup/wizard-logic/deployment-center-state-manager.ts b/client/src/app/site/deployment-center/deployment-center-setup/wizard-logic/deployment-center-state-manager.ts index b71f545a28..2be32ef5f5 100644 --- a/client/src/app/site/deployment-center/deployment-center-setup/wizard-logic/deployment-center-state-manager.ts +++ b/client/src/app/site/deployment-center/deployment-center-setup/wizard-logic/deployment-center-state-manager.ts @@ -90,9 +90,19 @@ export class DeploymentCenterStateManager implements OnDestroy { if (this.wizardValues.sourceProvider === 'external') { payload.isManualIntegration = true; } - return this._cacheService.putArm(`${this._resourceId}/sourcecontrols/web`, ARMApiVersions.websiteApiVersion, { - properties: payload - }).map(r => r.json()); + + if (this.wizardValues.sourceProvider === 'localgit') { + return this._cacheService.patchArm(`${this._resourceId}/config/web`, ARMApiVersions.websiteApiVersion, { + properties: { + scmType: 'LocalGit' + } + }).map(r => r.json()); + } else { + return this._cacheService.putArm(`${this._resourceId}/sourcecontrols/web`, ARMApiVersions.websiteApiVersion, { + properties: payload + }).map(r => r.json()); + } + } private _deployVsts() { @@ -111,18 +121,25 @@ export class DeploymentCenterStateManager implements OnDestroy { } private _pollVstsCheck(id: string) { - return this._cacheService.get(`https://${this.wizardValues.buildSettings.vstsAccount}.portalext.visualstudio.com/_apis/ContinuousDelivery/ProvisioningConfigurations/${id}?api-version=3.2-preview.1`, true, this.getVstsDirectHeaders()); + return this._cacheService.get(`https://${this.wizardValues.buildSettings.vstsAccount}.portalext.visualstudio.com/_apis/ContinuousDelivery/ProvisioningConfigurations/${id}?api-version=3.2-preview.1`, + true, + this.getVstsDirectHeaders()); } private _startVstsDeployment() { const deploymentObject: ProvisioningConfiguration = { + authToken: this.getToken(), ciConfiguration: this._ciConfig, id: null, source: this._deploymentSource, targets: this._deploymentTargets }; - const setupvsoCall = this._cacheService.post(`${Constants.serviceHost}api/sepupvso?accountName=${this.wizardValues.buildSettings.vstsAccount}`, true, this.getVstsPassthroughHeaders(), deploymentObject); + const setupvsoCall = this._cacheService.post(`${Constants.serviceHost}api/setupvso?accountName=${this.wizardValues.buildSettings.vstsAccount}`, + true, this.getVstsPassthroughHeaders(), deploymentObject); + if (this.wizardValues.buildSettings.createNewVsoAccount) { - return this._cacheService.post(`https://app.vsaex.visualstudio.com/_apis/HostAcquisition/collections?collectionName=${this.wizardValues.buildSettings.vstsAccount}&preferredRegion=${this.wizardValues.buildSettings.location}&api-version=4.0-preview.1`, true, this.getVstsDirectHeaders()) + return this._cacheService.post( + `https://app.vsaex.visualstudio.com/_apis/HostAcquisition/collections?collectionName=${this.wizardValues.buildSettings.vstsAccount}&preferredRegion=${this.wizardValues.buildSettings.location}&api-version=4.0-preview.1`, + true, this.getVstsDirectHeaders()) .switchMap(r => setupvsoCall) .switchMap(r => Observable.of(r.json().id)); } @@ -260,7 +277,7 @@ export class DeploymentCenterStateManager implements OnDestroy { provider: DeploymentTargetProvider.Azure, type: AzureResourceType.WindowsAppService, environmentType: TargetEnvironmentType.Test, - friendlyName: 'Load Test', //DO NOT CHANGE THIS, it looks like it should be localized but it shouldn't. It's needed by VSTS + friendlyName: 'Load Test', // DO NOT CHANGE THIS, it looks like it should be localized but it shouldn't. It's needed by VSTS subscriptionId: siteDescriptor.subscription, subscriptionName: '', tenantId: tid, @@ -304,7 +321,6 @@ export class DeploymentCenterStateManager implements OnDestroy { const headers = new Headers(); headers.append('Content-Type', 'application/json'); headers.append('Accept', 'application/json'); - headers.append('Authorization', this.getToken()); headers.append('Vstsauthorization', `Bearer ${this._vstsApiToken}`); return headers; } @@ -334,9 +350,9 @@ export class DeploymentCenterStateManager implements OnDestroy { markSectionAsTouched(formGroup: FormGroup) { Object.keys(formGroup.controls).forEach(field => { const control = formGroup.get(field); - if (control instanceof FormControl) { + if (control instanceof FormControl && !control.touched && !control.dirty) { control.markAsTouched(); - control.updateValueAndValidity({ onlySelf: false, emitEvent: true }); + control.updateValueAndValidity({ onlySelf: true, emitEvent: false }); } else if (control instanceof FormGroup) { this.markSectionAsTouched(control); } diff --git a/client/src/app/site/deployment-center/deployment-center-setup/wizard-logic/deployment-center-state-manger.service.spec.ts b/client/src/app/site/deployment-center/deployment-center-setup/wizard-logic/deployment-center-state-manger.service.spec.ts index 8673532e6d..9ca3c3efeb 100644 --- a/client/src/app/site/deployment-center/deployment-center-setup/wizard-logic/deployment-center-state-manger.service.spec.ts +++ b/client/src/app/site/deployment-center/deployment-center-setup/wizard-logic/deployment-center-state-manger.service.spec.ts @@ -1,24 +1,3 @@ - -import 'rxjs/add/operator/catch'; -import 'rxjs/add/operator/debounceTime'; -import 'rxjs/add/operator/distinctUntilChanged'; -import 'rxjs/add/operator/do'; -import 'rxjs/add/operator/filter'; -import 'rxjs/add/operator/first'; -import 'rxjs/add/observable/forkJoin'; -import 'rxjs/add/operator/map'; -import 'rxjs/add/operator/merge'; -import 'rxjs/add/operator/mergeMap'; -import 'rxjs/add/observable/of'; -import 'rxjs/add/operator/retry'; -import 'rxjs/add/operator/switchMap'; -import 'rxjs/add/operator/take'; -import 'rxjs/add/operator/takeUntil'; -import 'rxjs/add/observable/timer'; -import 'rxjs/add/observable/throw'; -import 'rxjs/add/observable/zip'; -import 'rxjs/add/operator/concatMap'; -import 'rxjs/observable/interval'; import { TestBed, inject, fakeAsync } from '@angular/core/testing'; import { DeploymentCenterStateManager } from './deployment-center-state-manager'; import { Injectable } from '@angular/core'; @@ -197,6 +176,13 @@ describe('Deployment State Manager', () => { service.deploy().subscribe(result => expect(result.properties.isManualIntegration).toBeTruthy()); }))); + it('Local git sets the web config', fakeAsync(inject([DeploymentCenterStateManager], (service: DeploymentCenterStateManager) => { + service.wizardForm = starterWizardForm(); + const wizardFormValues = service.wizardValues; + wizardFormValues.sourceProvider = 'localgit'; + service.wizardValues = wizardFormValues; + service.deploy().subscribe(result => expect(result.properties.scmType).toBe('LocalGit')); + }))); }); describe('vsts deployment', () => { @@ -223,13 +209,11 @@ describe('Deployment State Manager', () => { const headers = service.getVstsPassthroughHeaders(); expect(headers.get('Content-Type')).toBe('application/json'); expect(headers.get('Accept')).toBe('application/json'); - expect(headers.get('Authorization')).toBe(`Bearer ${service['_token']}`); expect(headers.get('Vstsauthorization')).toBe(`Bearer ${service['_vstsApiToken']}`); })); }); }); - @Injectable() class MockCacheService { @@ -249,6 +233,13 @@ class MockCacheService { return Observable.of(null); } + patchArm(resourceId: string, apiVersion?: string, content?: any) { + return Observable.of({ + json: () => { + return content; + } + }); + } putArm(resourceId: string, apiVersion?: string, content?: any) { return Observable.of({ json: () => { diff --git a/client/src/app/site/deployment-center/deployment-center.component.html b/client/src/app/site/deployment-center/deployment-center.component.html index abefaddffd..98127b3c8b 100644 --- a/client/src/app/site/deployment-center/deployment-center.component.html +++ b/client/src/app/site/deployment-center/deployment-center.component.html @@ -1,4 +1,16 @@ - - - - \ No newline at end of file + +
+ + + + +
+ + + + + + + +
\ No newline at end of file diff --git a/client/src/app/site/deployment-center/deployment-center.component.scss b/client/src/app/site/deployment-center/deployment-center.component.scss index e69de29bb2..217c81e87b 100644 --- a/client/src/app/site/deployment-center/deployment-center.component.scss +++ b/client/src/app/site/deployment-center/deployment-center.component.scss @@ -0,0 +1,8 @@ +.close-button { + position: absolute; + right: 10px; + top: 10px; + height: 15px; + width: 15px; + cursor: pointer; +} diff --git a/client/src/app/site/deployment-center/deployment-center.component.ts b/client/src/app/site/deployment-center/deployment-center.component.ts index 743950bf2a..da5bf33a33 100644 --- a/client/src/app/site/deployment-center/deployment-center.component.ts +++ b/client/src/app/site/deployment-center/deployment-center.component.ts @@ -33,7 +33,7 @@ export class DeploymentCenterComponent implements OnDestroy { public resourceId: string; public viewInfoStream = new Subject>(); public viewInfo: TreeViewInfo; - private _dashboardProviderType: ProviderDashboardType = ''; + public dashboardProviderType: ProviderDashboardType = ''; @Input() set viewInfoInput(viewInfo: TreeViewInfo) { this.viewInfo = viewInfo; @@ -48,7 +48,7 @@ export class DeploymentCenterComponent implements OnDestroy { public showFTPDashboard = false; public showWebDeployDashboard = false; - + sidePanelOpened = false; constructor( private _authZService: AuthzService, private _cacheService: CacheService, @@ -82,7 +82,7 @@ export class DeploymentCenterComponent implements OnDestroy { this._siteConfigObject = r.siteConfig; this.hasWritePermissions = r.writePermission && !r.readOnlyLock; if (r.appSettings.properties['WEBSITE_USE_ZIP']) { - this._dashboardProviderType = 'zip'; + this.dashboardProviderType = 'zip'; } this._busyManager.clearBusy(); }, @@ -100,7 +100,13 @@ export class DeploymentCenterComponent implements OnDestroy { refreshedSCMType(provider: ProviderDashboardType) { if (provider) { - this._dashboardProviderType = provider; + if (provider === 'reset') { + this.dashboardProviderType = ''; + } else { + this.dashboardProviderType = provider; + this.sidePanelOpened = true; + } + } else { this._cacheService.clearArmIdCachePrefix(`${this.resourceId}/config/web`); this.viewInfoStream.next(this.viewInfo); @@ -108,15 +114,15 @@ export class DeploymentCenterComponent implements OnDestroy { } get kuduDeploymentSetup() { - return this._siteConfigObject && this._siteConfigObject.properties.scmType !== 'None' && this.scmType !== 'VSTSRM' && !this._dashboardProviderType; + return this._siteConfigObject && this._siteConfigObject.properties.scmType !== 'None' && this.scmType !== 'VSTSRM'; } get vstsDeploymentSetup() { - return this.scmType === 'VSTSRM' && !this._dashboardProviderType; + return this.scmType === 'VSTSRM'; } get noDeploymentSetup() { - return this.scmType === 'None' && !this._dashboardProviderType; + return this.scmType === 'None'; } get scmType() { return this._siteConfigObject && this._siteConfigObject.properties.scmType; diff --git a/client/src/app/site/deployment-center/deployment-center.module.ts b/client/src/app/site/deployment-center/deployment-center.module.ts index 6d591bbe9f..a924905012 100644 --- a/client/src/app/site/deployment-center/deployment-center.module.ts +++ b/client/src/app/site/deployment-center/deployment-center.module.ts @@ -23,6 +23,8 @@ import { ConfigureBitbucketComponent } from './deployment-center-setup/step-conf import { ConfigureLocalGitComponent } from './deployment-center-setup/step-configure/configure-local-git/configure-local-git.component'; import { SidebarModule } from 'ng-sidebar'; import { NgSelectModule } from '@ng-select/ng-select'; +import { FtpDashboardComponent } from './provider-dashboards/ftp-dashboard/ftp-dashboard.component'; +import { DeploymentCredentialsComponent } from './provider-dashboards/deployment-credentials/deployment-credentials.component'; @NgModule({ entryComponents: [DeploymentCenterComponent], @@ -45,7 +47,9 @@ import { NgSelectModule } from '@ng-select/ng-select'; ConfigureVstsBuildComponent, ConfigureExternalComponent, ConfigureBitbucketComponent, - ConfigureLocalGitComponent + ConfigureLocalGitComponent, + FtpDashboardComponent, + DeploymentCredentialsComponent ], imports: [TranslateModule.forChild(), SharedModule, WizardModule, SidebarModule, NgSelectModule], exports: [DeploymentCenterComponent] diff --git a/client/src/app/site/deployment-center/provider-dashboards/deployment-credentials/deployment-credentials.component.html b/client/src/app/site/deployment-center/provider-dashboards/deployment-credentials/deployment-credentials.component.html new file mode 100644 index 0000000000..12efc7bf69 --- /dev/null +++ b/client/src/app/site/deployment-center/provider-dashboards/deployment-credentials/deployment-credentials.component.html @@ -0,0 +1,64 @@ +
+ + + + +
+
+
{{ 'username' | translate}}
+
+ +
+
{{'password' | translate}}
+
+ +
+
+
+ +
+ + +
+
+
{{'username' | translate}}
+
+ +
+
+
{{'password' | translate}}
+
+ +
+
+
{{'confirmPassword' | translate}}
+
+ +
+
+
+
+ +
+
\ No newline at end of file diff --git a/client/src/app/site/deployment-center/provider-dashboards/deployment-credentials/deployment-credentials.component.scss b/client/src/app/site/deployment-center/provider-dashboards/deployment-credentials/deployment-credentials.component.scss new file mode 100644 index 0000000000..443bdb97d6 --- /dev/null +++ b/client/src/app/site/deployment-center/provider-dashboards/deployment-credentials/deployment-credentials.component.scss @@ -0,0 +1,55 @@ +@import '../../../../../sass/common/variables'; +@import '../../../../../sass/controls/buttons'; +.credentials-container { + width: 100%; + height: 100%; +} + +.save-button { + @extend .custom-button; + margin-top: 10px; + margin-left: 10px; +} + +#creds-tabs { + padding: 0; + margin: 0; + border-bottom: $border; + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + -webkit-flex-flow: row nowrap; + flex-flow: row nowrap; +} + +.site-tab-label { + border-bottom: 4px solid $default-text-color; + cursor: pointer; + padding: 8px 25px; + width: 200px; + margin-top: 5px; + text-align: center; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + position: relative; + h4 { + display: inline; + } +} + +.inactive-label { + color: $primary-color; + border-bottom: $border; +} + +:host-context(#app-root[theme=dark]) { + .site-tab-label { + border-bottom: 4px solid $default-text-color-dark; + } + .inactive-label { + border-bottom: 4px solid $chrome-color-dark; + } +} \ No newline at end of file diff --git a/client/src/app/site/deployment-center/provider-dashboards/deployment-credentials/deployment-credentials.component.spec.ts b/client/src/app/site/deployment-center/provider-dashboards/deployment-credentials/deployment-credentials.component.spec.ts new file mode 100644 index 0000000000..b10ab9064c --- /dev/null +++ b/client/src/app/site/deployment-center/provider-dashboards/deployment-credentials/deployment-credentials.component.spec.ts @@ -0,0 +1,165 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DeploymentCredentialsComponent } from './deployment-credentials.component'; +import { TextboxComponent } from '../../../../controls/textbox/textbox.component'; +import { MockComponent } from 'ng-mocks'; +import { TranslateModule } from '@ngx-translate/core'; +import { CardInfoControlComponent } from '../../../../controls/card-info-control/card-info-control.component'; +import { CommonModule } from '@angular/common'; +import { CopyPreComponent } from '../../../../copy-pre/copy-pre.component'; +import { BusyStateComponent } from '../../../../busy-state/busy-state.component'; +import { ReactiveFormsModule, FormsModule } from '@angular/forms'; +import { CacheService } from '../../../../shared/services/cache.service'; +import { BroadcastService } from '../../../../shared/services/broadcast.service'; +import { LogService } from '../../../../shared/services/log.service'; +import { MockLogService } from '../../../../test/mocks/log.service.mock'; +import { Observable } from 'rxjs/Observable'; +import { of } from 'rxjs/observable/of'; +import { By } from '@angular/platform-browser'; +import { TelemetryService } from '../../../../shared/services/telemetry.service'; +import { MockTelemetryService } from '../../../../test/mocks/telemetry.service.mock'; +import { SiteService } from '../../../../shared/services/site.service'; + +describe('DeploymentCredentialsComponent', () => { + let component: DeploymentCredentialsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [DeploymentCredentialsComponent, MockComponent(TextboxComponent), MockComponent(CardInfoControlComponent), MockComponent(CopyPreComponent), MockComponent(BusyStateComponent)], + providers: [ + { provide: CacheService, useClass: MockCacheService }, + { provide: LogService, useClass: MockLogService }, + { provide: TelemetryService, useClass: MockTelemetryService }, + { provide: SiteService, useClass: MockSiteService }, + BroadcastService + + ], + imports: [TranslateModule.forRoot(), CommonModule, ReactiveFormsModule, FormsModule] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DeploymentCredentialsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + const cacheService: MockCacheService = TestBed.get(CacheService); + const siteService: MockSiteService = TestBed.get(SiteService); + cacheService.siteService = siteService; + }); + + describe('init', () => { + it('should create', () => { + expect(component).toBeTruthy(); + }); + + it('should load app creds and parse publish profile at init', () => { + expect(component.appUserName).toBe('$username'); + expect(component.appPwd).toBe('password'); + }); + + it('should load user level username at start', () => { + expect(component.userPasswordForm.value.userName).toBe('username'); + }); + + it('should default to user tab', () => { + expect(component.activeTab).toBe('user'); + }); + }); + + describe('tabs', () => { + it('should show user creds when user tab is selected', () => { + const elem = fixture.debugElement.query(By.css('#userCredsForm')); + expect(elem).toBeTruthy(); + }); + + it('should show app creds when app tab is selected', () => { + component.selectTab('app'); + fixture.detectChanges(); + const elem = fixture.debugElement.query(By.css('#appCredsForm')); + expect(elem).toBeTruthy(); + }); + }); + + describe('actions', () => { + const setFormToValues = (username: string = '', password: string = '', confirmPassword: string = '') => { + component.userPasswordForm.setValue({ + userName: username, + password: password, + passwordConfirm: confirmPassword + }); + }; + it('reset should reset password and fetch new password', () => { + component.resetPublishingProfile(); + expect(component.appPwd).toBe('newpassword'); + }); + + it('should save user level credentials', () => { + const mockCacheService: MockCacheService = TestBed.get(CacheService); + + setFormToValues('username', 'password', 'password'); + component.userPasswordForm.updateValueAndValidity(); + component.saveUserCredentails(); + expect(component.userPasswordForm.valid).toBeTruthy(); + expect(mockCacheService.savedCreds.properties.publishingUserName).toBe('username'); + expect(mockCacheService.savedCreds.properties.publishingPassword).toBe('password'); + }); + + it('should invalidate non matching password field', () => { + setFormToValues('username', 'password', 'badpassword'); + expect(component.userPasswordForm.valid).toBeFalsy(); + }); + }); +}); + +class MockSiteService { + public password = 'password'; + public mockPublishProfile = ` + + + + + + + + + `; + getPublishingProfile(resourceId: string): any { + return of({ + result: this.mockPublishProfile.format(this.password) + }); + } +} + +class MockCacheService { + + public siteService: MockSiteService = null; + public savedCreds = null; + getArm(resourceId: string, force?: boolean, apiVersion?: string, invokeApi?: boolean): Observable { + return of({ + json: () => { + return { + properties: { + publishingUserName: 'username' + } + }; + } + }); + + } + + postArm(resourceId: string, force?: boolean, apiVersion?: string, content?: any, cacheKeyPrefix?: string): Observable { + if (resourceId.includes('/publishxml')) { + + } else if (resourceId.includes('/newpassword')) { + this.siteService.password = 'newpassword'; + } + return Observable.of(null); + } + + putArm(resourceId: string, apiVersion?: string, content?: any): Observable { + this.savedCreds = content; + return of(null); + } +} diff --git a/client/src/app/site/deployment-center/provider-dashboards/deployment-credentials/deployment-credentials.component.ts b/client/src/app/site/deployment-center/provider-dashboards/deployment-credentials/deployment-credentials.component.ts new file mode 100644 index 0000000000..10955202ed --- /dev/null +++ b/client/src/app/site/deployment-center/provider-dashboards/deployment-credentials/deployment-credentials.component.ts @@ -0,0 +1,101 @@ +import { Component, OnInit, Input, Injector, OnDestroy } from '@angular/core'; +import { CacheService } from '../../../../shared/services/cache.service'; +import { PublishingProfile } from '../../Models/publishing-profile'; +import { from } from 'rxjs/observable/from'; +import { Subject } from 'rxjs/Subject'; +import { FormBuilder, FormGroup } from '@angular/forms'; +import { BroadcastService } from '../../../../shared/services/broadcast.service'; +import { forkJoin } from 'rxjs/observable/forkJoin'; +import { RequiredValidator } from '../../../../shared/validators/requiredValidator'; +import { TranslateService } from '@ngx-translate/core'; +import { ConfirmPasswordValidator } from '../../../../shared/validators/passwordValidator'; +import { FeatureComponent } from '../../../../shared/components/feature-component'; +import { Observable } from 'rxjs/Observable'; +import { SiteService } from '../../../../shared/services/site.service'; + +@Component({ + selector: 'app-deployment-credentials', + templateUrl: './deployment-credentials.component.html', + styleUrls: ['./deployment-credentials.component.scss', '../../deployment-center-setup/deployment-center-setup.component.scss'] +}) +export class DeploymentCredentialsComponent extends FeatureComponent implements OnInit, OnDestroy { + @Input() resourceId: string; + activeTab: 'user' | 'app' = 'user'; + + public appUserName: string; + public appPwd: string; + + public userPasswordForm: FormGroup; + private _resetPublishingProfile$ = new Subject(); + private _saveUserCredentials$ = new Subject(); + + private _ngUnsubscribe$ = new Subject(); + + public saving = false; + public resetting = false; + constructor(private _cacheService: CacheService, private _siteService: SiteService, fb: FormBuilder, broadcastService: BroadcastService, translateService: TranslateService, injector: Injector) { + super('DeploymentCredentialsComponent', injector); + const requiredValidation = new RequiredValidator(translateService, true); + this.userPasswordForm = fb.group({ + userName: ['', [requiredValidation]], + password: ['', [requiredValidation]], + passwordConfirm: [''] + }); + this.userPasswordForm.get('passwordConfirm').setValidators(ConfirmPasswordValidator.create(translateService, this.userPasswordForm.get('password'))); + } + + protected setup(inputEvents: Observable) { + return inputEvents + .switchMap(() => { + const publishXml$ = this._siteService.getPublishingProfile(this.resourceId) + .switchMap(r => from(PublishingProfile.parsePublishProfileXml(r.result))) + .filter(x => x.publishMethod === 'FTP') + .do(ftpProfile => { + this.appUserName = ftpProfile.userName; + this.appPwd = ftpProfile.userPWD; + }); + + const publishingUsers$ = this._cacheService.getArm(`/providers/Microsoft.Web/publishingUsers/web`, true) + .do(r => { + const creds = r.json(); + this.userPasswordForm.reset({ userName: creds.properties.publishingUserName, password: '', passwordConfirm: '' }); + }); + return forkJoin(publishXml$, publishingUsers$); + }); + } + + ngOnInit() { + this._resetPublishingProfile$ + .takeUntil(this._ngUnsubscribe$) + .do(() => this.resetting = true) + .switchMap(() => { + return this._cacheService.postArm(`${this.resourceId}/newpassword`, true); + }) + .do(() => this.resetting = false) + .subscribe(() => this.setInput(this.resourceId)); + + this._saveUserCredentials$ + .takeUntil(this._ngUnsubscribe$) + .do(() => this.saving = true) + .switchMap(() => this._cacheService.putArm(`/providers/Microsoft.Web/publishingUsers/web`, null, { + properties: { + publishingUserName: this.userPasswordForm.value.userName, + publishingPassword: this.userPasswordForm.value.password + } + })) + .do(() => this.saving = false) + .subscribe(() => this.setInput(this.resourceId)); + this.setInput(this.resourceId); + } + + ngOnDestroy() { + this._ngUnsubscribe$.next(); + super.ngOnDestroy(); + } + selectTab(tab) { + this.activeTab = tab; + } + + public resetPublishingProfile = () => this._resetPublishingProfile$.next(); + public saveUserCredentails = () => this._saveUserCredentials$.next(); +} diff --git a/client/src/app/site/deployment-center/provider-dashboards/ftp-dashboard/ftp-dashboard.component.html b/client/src/app/site/deployment-center/provider-dashboards/ftp-dashboard/ftp-dashboard.component.html new file mode 100644 index 0000000000..18023c9baa --- /dev/null +++ b/client/src/app/site/deployment-center/provider-dashboards/ftp-dashboard/ftp-dashboard.component.html @@ -0,0 +1,12 @@ + + + + +
+ +
+
+ +
+ \ No newline at end of file diff --git a/client/src/app/site/deployment-center/provider-dashboards/ftp-dashboard/ftp-dashboard.component.scss b/client/src/app/site/deployment-center/provider-dashboards/ftp-dashboard/ftp-dashboard.component.scss new file mode 100644 index 0000000000..ab48948896 --- /dev/null +++ b/client/src/app/site/deployment-center/provider-dashboards/ftp-dashboard/ftp-dashboard.component.scss @@ -0,0 +1,25 @@ + +@import '../../../../../sass/common/variables'; +@import '../../../../../sass/controls/buttons'; + +.sidebar-content { + padding-left: 20px; +} + +.ftp-endpoint { + margin: auto; + width: 95%; +} + +.save-button { + @extend .custom-button; + margin-top: 10px; + margin-left: 0px; +} + +.credentials { + margin: auto; + width: 95%; + border-top: $border; + padding-bottom: 20px; +} \ No newline at end of file diff --git a/client/src/app/site/deployment-center/provider-dashboards/ftp-dashboard/ftp-dashboard.component.spec.ts b/client/src/app/site/deployment-center/provider-dashboards/ftp-dashboard/ftp-dashboard.component.spec.ts new file mode 100644 index 0000000000..e6b6607ab3 --- /dev/null +++ b/client/src/app/site/deployment-center/provider-dashboards/ftp-dashboard/ftp-dashboard.component.spec.ts @@ -0,0 +1,146 @@ +import { async, ComponentFixture, TestBed, fakeAsync, tick } from '@angular/core/testing'; + +import { FtpDashboardComponent } from './ftp-dashboard.component'; +import { SidebarModule } from 'ng-sidebar'; +import { SiteService } from '../../../../shared/services/site.service'; +import { LogService } from '../../../../shared/services/log.service'; +import { MockLogService } from '../../../../test/mocks/log.service.mock'; +import { CommandBarComponent } from '../../../../controls/command-bar/command-bar.component'; +import { CommandComponent } from '../../../../controls/command-bar/command/command.component'; +import { CommonModule } from '@angular/common'; +import { CopyPreComponent } from '../../../../copy-pre/copy-pre.component'; +import { RadioSelectorComponent } from '../../../../radio-selector/radio-selector.component'; +import { InfoBoxComponent } from '../../../../controls/info-box/info-box.component'; +import { CardInfoControlComponent } from '../../../../controls/card-info-control/card-info-control.component'; +import { TranslateModule } from '@ngx-translate/core'; +import { DeploymentCredentialsComponent } from '../deployment-credentials/deployment-credentials.component'; +import { MockComponent } from 'ng-mocks'; +import { of } from 'rxjs/observable/of'; +import { Component, ViewChild } from '@angular/core'; +import { BroadcastService } from '../../../../shared/services/broadcast.service'; +import { TelemetryService } from '../../../../shared/services/telemetry.service'; +import { MockTelemetryService } from '../../../../test/mocks/telemetry.service.mock'; + +describe('FtpDashboardComponent', () => { + @Component({ + selector: `app-host-component`, + template: `` + }) + class TestHostComponent { + @ViewChild(FtpDashboardComponent) + public ftpDashbaordComponent: FtpDashboardComponent; + } + + let component: FtpDashboardComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [TestHostComponent, + FtpDashboardComponent, + MockComponent(CommandBarComponent), + MockComponent(CommandComponent), + MockComponent(CopyPreComponent), + MockComponent(RadioSelectorComponent), + MockComponent(InfoBoxComponent), + MockComponent(CardInfoControlComponent), + MockComponent(DeploymentCredentialsComponent) + ], + providers: [ + { provide: SiteService, useClass: MockSiteService }, + { provide: LogService, useClass: MockLogService }, + { provide: TelemetryService, useClass: MockTelemetryService }, + BroadcastService + ], + imports: [SidebarModule, CommonModule, TranslateModule.forRoot()] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(TestHostComponent); + component = fixture.componentInstance.ftpDashbaordComponent; + fixture.detectChanges(); + }); + + describe('init', () => { + it('should initialize', () => { + expect(component).toBeTruthy(); + }); + + it('should load publishing profile data on init', () => { + expect(component.ftpsEndpoint).toBe('publishftpurl'); + }); + + }); + describe('Publishing Profile Download', () => { + + it('download profile should trigger profile download', fakeAsync(() => { + let alinkClicked = false; + const aLinkMock = { + click: () => alinkClicked = true + }; + spyOn(window.URL, 'createObjectURL').and.callFake(() => 'objecturl'); + spyOn(document, 'getElementById').and.callFake(() => aLinkMock); + component.downloadPublishProfile(); + tick(); + expect(window.URL.createObjectURL).toHaveBeenCalled(); + expect(alinkClicked).toBeTruthy(); + })); + + it('triggering when there is already a blobUrl will revoke Old BlobUrl', fakeAsync(() => { + let alinkClicked = false; + const aLinkMock = { + click: () => alinkClicked = true + }; + spyOn(window.URL, 'createObjectURL').and.callFake(() => 'objecturl'); + spyOn(document, 'getElementById').and.callFake(() => aLinkMock); + spyOn(window.URL, 'revokeObjectURL').and.callFake(() => true); + component.downloadPublishProfile(); + tick(); + component.downloadPublishProfile(); + tick(); + expect(window.URL.revokeObjectURL).toHaveBeenCalled(); + + })); + it('hits the right download path for edge', fakeAsync(() => { + window.navigator.msSaveOrOpenBlob = (blob: any, name: string) => true; + spyOn(window.navigator, 'msSaveOrOpenBlob').and.callFake(() => true); + component.downloadPublishProfile(); + tick(); + expect(window.navigator.msSaveOrOpenBlob).toHaveBeenCalled(); + })); + }); +}); + +class MockSiteService { + public ftpsState = 'AllAllowed'; + + public mockPublishProfile = ` + + + + + + + + + `; + + getSiteConfig(resourceId: string) { + return of({ + isSuccessful: true, + result: { + properties: { + ftpsState: this.ftpsState + } + } + }); + } + + getPublishingProfile(resourceId: string): any { + return of({ + result: this.mockPublishProfile + }); + } +} diff --git a/client/src/app/site/deployment-center/provider-dashboards/ftp-dashboard/ftp-dashboard.component.ts b/client/src/app/site/deployment-center/provider-dashboards/ftp-dashboard/ftp-dashboard.component.ts new file mode 100644 index 0000000000..acc8d5f3b9 --- /dev/null +++ b/client/src/app/site/deployment-center/provider-dashboards/ftp-dashboard/ftp-dashboard.component.ts @@ -0,0 +1,90 @@ +import { Component, Input, OnInit, Injector, OnDestroy } from '@angular/core'; +import { Links } from '../../../../shared/models/constants'; +import { Subject } from 'rxjs/Subject'; +import { SiteService } from '../../../../shared/services/site.service'; +import { PublishingProfile } from '../../Models/publishing-profile'; +import { from } from 'rxjs/observable/from'; +import { SafeUrl, DomSanitizer } from '@angular/platform-browser'; +import { ArmSiteDescriptor } from '../../../../shared/resourceDescriptors'; +import { FeatureComponent } from '../../../../shared/components/feature-component'; +import { Observable } from 'rxjs/Observable'; +@Component({ + selector: 'app-ftp-dashboard', + templateUrl: './ftp-dashboard.component.html', + styleUrls: ['./ftp-dashboard.component.scss', '../../deployment-center-setup/deployment-center-setup.component.scss'] +}) +export class FtpDashboardComponent extends FeatureComponent implements OnInit, OnDestroy { + public FwLinks = Links; + @Input() resourceId; + + public ftpsEndpoint = ''; + + private _ngUnsubscribe$ = new Subject(); + private _blobUrl: string; + public publishProfileLink: SafeUrl; + public siteName: string; + constructor( + private _siteService: SiteService, + private _domSanitizer: DomSanitizer, + injector: Injector) { + super('FtpDashboardComponent', injector); + } + + protected setup(inputEvents: Observable) { + return inputEvents + .switchMap(() => this._siteService.getPublishingProfile(this.resourceId)) + .switchMap(r => from(PublishingProfile.parsePublishProfileXml(r.result))) + .filter(x => x.publishMethod === 'FTP') + .do(ftpProfile => { + this.ftpsEndpoint = ftpProfile.publishUrl.replace('ftp:/', 'ftps:/'); + }); + } + + ngOnInit() { + const resourceDesc = new ArmSiteDescriptor(this.resourceId); + this.siteName = resourceDesc.site; + super.setInput(this.resourceId); + } + + ngOnDestroy() { + this._ngUnsubscribe$.next(); + this._cleanupBlob(); + super.ngOnDestroy(); + } + + downloadPublishProfile() { + this._siteService.getPublishingProfile(this.resourceId) + .subscribe(response => { + const publishXml = response.result; + + // http://stackoverflow.com/questions/24501358/how-to-set-a-header-for-a-http-get-request-and-trigger-file-download/24523253#24523253 + const windowUrl = window.URL || (window).webkitURL; + const blob = new Blob([publishXml], { type: 'application/octet-stream' }); + this._cleanupBlob(); + + if (window.navigator.msSaveOrOpenBlob) { + // Currently, Edge doesn' respect the "download" attribute to name the file from blob + // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/7260192/ + window.navigator.msSaveOrOpenBlob(blob, `${this.siteName}.PublishSettings`); + } else { + // http://stackoverflow.com/questions/37432609/how-to-avoid-adding-prefix-unsafe-to-link-by-angular2 + this._blobUrl = windowUrl.createObjectURL(blob); + this.publishProfileLink = this._domSanitizer.bypassSecurityTrustUrl(this._blobUrl); + + setTimeout(() => { + const hiddenLink = document.getElementById('hidden-publish-profile-link-ftp'); + hiddenLink.click(); + this.publishProfileLink = null; + }); + } + }); + } + + private _cleanupBlob() { + const windowUrl = window.URL || (window).webkitURL; + if (this._blobUrl) { + windowUrl.revokeObjectURL(this._blobUrl); + this._blobUrl = null; + } + } +} diff --git a/client/src/app/site/deployment-center/provider-dashboards/kudu-dashboard/deployment-detail/deployment-detail.component.scss b/client/src/app/site/deployment-center/provider-dashboards/kudu-dashboard/deployment-detail/deployment-detail.component.scss index 3e8c7c6c66..b9d306ca1e 100644 --- a/client/src/app/site/deployment-center/provider-dashboards/kudu-dashboard/deployment-detail/deployment-detail.component.scss +++ b/client/src/app/site/deployment-center/provider-dashboards/kudu-dashboard/deployment-detail/deployment-detail.component.scss @@ -4,4 +4,4 @@ top: 5px; height: 15px; width: 15px; -} +} \ No newline at end of file diff --git a/client/src/app/site/deployment-center/provider-dashboards/kudu-dashboard/kudu-dashboard.component.html b/client/src/app/site/deployment-center/provider-dashboards/kudu-dashboard/kudu-dashboard.component.html index 673b4e3010..cfaa645da9 100644 --- a/client/src/app/site/deployment-center/provider-dashboards/kudu-dashboard/kudu-dashboard.component.html +++ b/client/src/app/site/deployment-center/provider-dashboards/kudu-dashboard/kudu-dashboard.component.html @@ -1,10 +1,10 @@
- + - - + +
@@ -79,7 +79,7 @@
-
+
@@ -102,7 +102,7 @@ - +
{{item.time}}
@@ -115,7 +115,9 @@
- {{item.status}} + + {{item.status}} +
{{item.commit}} ({{item.author}}) @@ -138,7 +140,7 @@
- - + + \ No newline at end of file diff --git a/client/src/app/site/deployment-center/provider-dashboards/kudu-dashboard/kudu-dashboard.component.scss b/client/src/app/site/deployment-center/provider-dashboards/kudu-dashboard/kudu-dashboard.component.scss index b60374b459..657c3bec32 100644 --- a/client/src/app/site/deployment-center/provider-dashboards/kudu-dashboard/kudu-dashboard.component.scss +++ b/client/src/app/site/deployment-center/provider-dashboards/kudu-dashboard/kudu-dashboard.component.scss @@ -39,3 +39,20 @@ #activity-list { width: 100%; } + +.list-container{ + width: 90%; + margin: auto; + + img{ + vertical-align: middle; + margin-bottom: 15px; + margin-right: 5px; + width: 32px; + height: 32px; + } +} + +.time-column { + width: 5%; +} \ No newline at end of file diff --git a/client/src/app/site/deployment-center/provider-dashboards/kudu-dashboard/kudu-dashboard.component.ts b/client/src/app/site/deployment-center/provider-dashboards/kudu-dashboard/kudu-dashboard.component.ts index f4027a9801..d6d36e4ecb 100644 --- a/client/src/app/site/deployment-center/provider-dashboards/kudu-dashboard/kudu-dashboard.component.ts +++ b/client/src/app/site/deployment-center/provider-dashboards/kudu-dashboard/kudu-dashboard.component.ts @@ -15,6 +15,18 @@ import { BroadcastService } from 'app/shared/services/broadcast.service'; import { BroadcastEvent } from 'app/shared/models/broadcast-event'; import { LogService } from 'app/shared/services/log.service'; import { LogCategories, SiteTabIds } from 'app/shared/models/constants'; +import { forkJoin } from 'rxjs/observable/forkJoin'; +import { TranslateService } from '@ngx-translate/core'; +import { PortalResources } from '../../../../shared/models/portal-resources'; + +enum DeployStatus { + Pending, + Building, + Deploying, + Failed, + Success +} + class KuduTableItem implements TableItem { public type: 'row' | 'group'; public time: string; @@ -26,6 +38,7 @@ class KuduTableItem implements TableItem { public deploymentObj: ArmObj; public active?: boolean; } + @Component({ selector: 'app-kudu-dashboard', templateUrl: './kudu-dashboard.component.html', @@ -49,13 +62,16 @@ export class KuduDashboardComponent implements OnChanges, OnDestroy { public sidePanelOpened = false; private _ngUnsubscribe$ = new Subject(); private _oldTableHash = 0; + + public hideCreds = false; constructor( _portalService: PortalService, private _cacheService: CacheService, private _armService: ArmService, private _authZService: AuthzService, private _broadcastService: BroadcastService, - private _logService: LogService + private _logService: LogService, + private _translateService: TranslateService ) { this._busyManager = new BusyStateScopeManager(_broadcastService, SiteTabIds.continuousDeployment); this._tableItems = []; @@ -118,18 +134,24 @@ export class KuduDashboardComponent implements OnChanges, OnDestroy { } ); - //refresh automatically every 5 seconds + // refresh automatically every 5 seconds Observable.timer(5000, 5000).takeUntil(this._ngUnsubscribe$).subscribe(() => { this.viewInfoStream$.next(this.resourceId); }); } - //https://gist.github.com/hyamamoto/fd435505d29ebfa3d9716fd2be8d42f0 + // https://gist.github.com/hyamamoto/fd435505d29ebfa3d9716fd2be8d42f0 private _hashcode(s: string): number { - var h = 0, l = s.length, i = 0; - if (l > 0) - while (i < l) + let h = 0; + const l = s.length; + let i = 0; + + if (l > 0) { + while (i < l) { + // tslint:disable-next-line:no-bitwise h = (h << 5) - h + s.charCodeAt(i++) | 0; + } + } return h; }; private _getTableHash(tb) { @@ -156,7 +178,7 @@ export class KuduDashboardComponent implements OnChanges, OnDestroy { commit: commitId, checkinMessage: item.message, // TODO: Compute status and show appropriate message - status: item.complete ? 'Complete' : item.progress, + status: this._getStatusString(item.status, item.progress), active: item.active, author: author, deploymentObj: value @@ -172,6 +194,22 @@ export class KuduDashboardComponent implements OnChanges, OnDestroy { this._oldTableHash = newHash; } } + + private _getStatusString(status: DeployStatus, progressString: string): string { + switch (status) { + case DeployStatus.Building: + case DeployStatus.Deploying: + return progressString; + case DeployStatus.Pending: + return this._translateService.instant(PortalResources.pending); + case DeployStatus.Failed: + return this._translateService.instant(PortalResources.failed); + case DeployStatus.Success: + return this._translateService.instant(PortalResources.success); + default: + return ''; + } + } public ngOnChanges(changes: SimpleChanges): void { if (changes['resourceId']) { this._busyManager.setBusy(); @@ -180,7 +218,7 @@ export class KuduDashboardComponent implements OnChanges, OnDestroy { } get folderPath() { - if (this.sourceLocation !== 'Dropbox' && this.sourceLocation !== 'Onedrive') { + if (this.sourceLocation !== 'Dropbox' && this.sourceLocation !== 'OneDrive') { return null; } const folderPath = this.repo @@ -230,10 +268,20 @@ export class KuduDashboardComponent implements OnChanges, OnDestroy { disconnect() { this._busyManager.setBusy(); - this._armService.delete(`${this.deploymentObject.site.id}/sourcecontrols/web`).delay(2000).subscribe(r => { - this._busyManager.clearBusy(); - this._broadcastService.broadcastEvent(BroadcastEvent.ReloadDeploymentCenter); + + const webConfig = this._armService.patch(`${this.deploymentObject.site.id}/config/web`, { + properties: { + scmType: 'None' + } }); + + const sourceControlsConfig = this._armService.delete(`${this.deploymentObject.site.id}/sourcecontrols/web`); + + forkJoin(webConfig, sourceControlsConfig) + .subscribe(r => { + this._broadcastService.broadcastEvent(BroadcastEvent.ReloadDeploymentCenter); + this._busyManager.clearBusy(); + }); } refresh() { this._busyManager.setBusy(); @@ -241,6 +289,7 @@ export class KuduDashboardComponent implements OnChanges, OnDestroy { } details(item: KuduTableItem) { + this.hideCreds = false; this.rightPaneItem = item.deploymentObj; this.sidePanelOpened = true; } @@ -261,7 +310,7 @@ export class KuduDashboardComponent implements OnChanges, OnDestroy { case 'DropboxV2': return 'Dropbox'; case 'OneDrive': - return 'Onedrive'; + return 'OneDrive'; case 'VSO': return 'Visual Studio Online'; default: @@ -276,4 +325,9 @@ export class KuduDashboardComponent implements OnChanges, OnDestroy { tableItemTackBy(index: number, item: KuduTableItem) { return item && item.commit; // or item.id } + + showDeploymentCredentials() { + this.hideCreds = true; + this.sidePanelOpened = true; + } } diff --git a/client/src/app/site/site-config/general-settings/general-settings.component.html b/client/src/app/site/site-config/general-settings/general-settings.component.html index 443a571116..e1a8cc28fd 100644 --- a/client/src/app/site/site-config/general-settings/general-settings.component.html +++ b/client/src/app/site/site-config/general-settings/general-settings.component.html @@ -183,6 +183,19 @@

{{ 'feature_generalSettingsName' | translate }}

+ +
+ +
+ + +
+
+
+
[]; + public http20Supported = false; + public http20EnabledOptions: SelectOption[]; + public dropDownOptionsMap: { [key: string]: DropDownElement[] }; public linuxRuntimeSupported = false; public linuxFxVersionOptions: DropDownGroupElement[]; @@ -253,6 +256,7 @@ export class GeneralSettingsComponent extends ConfigSaveComponent implements OnC this.autoSwapSupported = false; this.linuxRuntimeSupported = false; this.FTPAccessSupported = false; + this.http20Supported = false; } private _processSupportedControls(siteArm: ArmObj, siteConfigArm: ArmObj) { @@ -270,6 +274,7 @@ export class GeneralSettingsComponent extends ConfigSaveComponent implements OnC let autoSwapSupported = true; let linuxRuntimeSupported = false; let FTPAccessSupported = true; + const http20Supported = true; this._sku = siteArm.properties.sku; @@ -323,6 +328,7 @@ export class GeneralSettingsComponent extends ConfigSaveComponent implements OnC this.autoSwapSupported = autoSwapSupported; this.linuxRuntimeSupported = linuxRuntimeSupported; this.FTPAccessSupported = FTPAccessSupported; + this.http20Supported = http20Supported; } } @@ -444,6 +450,10 @@ export class GeneralSettingsComponent extends ConfigSaveComponent implements OnC [{ displayLabel: this._translateService.instant(PortalResources.FTPBoth), value: 'AllAllowed' }, { displayLabel: this._translateService.instant(PortalResources.FTPSOnly), value: 'FtpsOnly' }, { displayLabel: this._translateService.instant(PortalResources.FTPDisable), value: 'Disabled' }]; + + this.http20EnabledOptions = + [{ displayLabel: '1.1', value: false }, + { displayLabel: '2.0', value: true }]; } private _setupGeneralSettings(group: FormGroup, siteConfigArm: ArmObj, siteArm: ArmObj) { @@ -470,6 +480,9 @@ export class GeneralSettingsComponent extends ConfigSaveComponent implements OnC if (this.FTPAccessSupported) { group.addControl('FTPAccessOptions', this._fb.control({ value: siteConfigArm.properties.ftpsState, disabled: !this.hasWritePermissions })); } + if (this.http20Supported) { + group.addControl('http20Enabled', this._fb.control({ value: siteConfigArm.properties.http20Enabled, disabled: !this.hasWritePermissions })); + } } public updateRemoteDebuggingVersionOptions(enabled: boolean) { @@ -1111,6 +1124,9 @@ export class GeneralSettingsComponent extends ConfigSaveComponent implements OnC if (this.FTPAccessSupported) { siteConfigArm.properties.ftpsState = (generalSettingsControls['FTPAccessOptions'].value); } + if (this.http20Supported) { + siteConfigArm.properties.http20Enabled = (generalSettingsControls['http20Enabled'].value); + } // -- stacks settings -- if (this.netFrameworkSupported) { diff --git a/client/src/app/site/spec-picker/price-spec-manager/plan-price-spec-manager.ts b/client/src/app/site/spec-picker/price-spec-manager/plan-price-spec-manager.ts index 7871a8fe89..2be4e03b6b 100644 --- a/client/src/app/site/spec-picker/price-spec-manager/plan-price-spec-manager.ts +++ b/client/src/app/site/spec-picker/price-spec-manager/plan-price-spec-manager.ts @@ -73,10 +73,8 @@ export class PlanPriceSpecManager { this.selectedSpecGroup = this.specGroups[0]; let specInitCalls: Observable[] = []; - return this._getPlan(inputs) .switchMap(plan => { - // plan is null for new plans this._plan = plan; @@ -136,13 +134,11 @@ export class PlanPriceSpecManager { } getSpecCosts(inputs: SpecPickerInput) { - return this._getBillingMeters(inputs) .switchMap(meters => { if (!meters) { return Observable.of(null); } - let specResourceSets: SpecResourceSet[] = []; let specsToAllowZeroCost: string[] = []; @@ -319,7 +315,7 @@ export class PlanPriceSpecManager { if (!costResult) { spec.priceString = ' '; } else if (costResult.amount === 0.0) { - spec.priceString = 'Free'; + spec.priceString = this._ts.instant(PortalResources.free); } else { const meter = costResult.firstParty[0].meters[0]; spec.priceString = this._ts.instant(PortalResources.pricing_pricePerHour).format(meter.perUnitAmount, meter.perUnitCurrencyCode); @@ -330,6 +326,7 @@ export class PlanPriceSpecManager { private _cleanUpGroups() { let nonEmptyGroupIndex = 0; let foundNonEmptyGroup = false; + let foundDefaultGroup = false; // Remove hidden and forbidden specs and move disabled specs to end of list. this.specGroups.forEach((g, i) => { @@ -343,17 +340,24 @@ export class PlanPriceSpecManager { g.recommendedSpecs = recommendedSpecs; g.additionalSpecs = specs; - // Find if there's already a spec that's selected within a group. Otherwise - // just choose the first spec you can find + // Find if there's a spec in the current group that matches the plan sku g.selectedSpec = this._findSelectedSpec(g.recommendedSpecs); if (!g.selectedSpec) { g.selectedSpec = this._findSelectedSpec(g.additionalSpecs); } + // If a plan's sku matches a spec in the current group, then make that group the default group + if (g.selectedSpec && !foundDefaultGroup) { + foundDefaultGroup = true; + this.selectedSpecGroup = this.specGroups[i]; + } + + // If we still haven't found a default spec in the group, pick the first recommended one if (!g.selectedSpec && g.recommendedSpecs.length > 0) { g.selectedSpec = g.recommendedSpecs[0]; } + // If we still haven't found a defautl spec in the group, pick the first additional one if (!g.selectedSpec && g.additionalSpecs.length > 0) { g.selectedSpec = g.additionalSpecs[0]; } @@ -368,11 +372,7 @@ export class PlanPriceSpecManager { } }); - if (nonEmptyGroupIndex < this.specGroups.length) { - // The UI loads the default set of cards immediately, but the specManager filters them out - // based on each cards initialization logic. Angular isn't able to detect the updated filtered - // view in the list, so we're forcing an update by creating a new reference - this.specGroups[nonEmptyGroupIndex] = Object.assign({}, this.specGroups[nonEmptyGroupIndex]); + if (!foundDefaultGroup && nonEmptyGroupIndex < this.specGroups.length) { this.selectedSpecGroup = this.specGroups[nonEmptyGroupIndex]; // Find the first group with a selectedSpec and make that group the default diff --git a/client/src/app/site/spec-picker/price-spec-manager/price-spec-group.ts b/client/src/app/site/spec-picker/price-spec-manager/price-spec-group.ts index c08a5218d3..791558c2a8 100644 --- a/client/src/app/site/spec-picker/price-spec-manager/price-spec-group.ts +++ b/client/src/app/site/spec-picker/price-spec-manager/price-spec-group.ts @@ -1,4 +1,3 @@ -import { AppKind } from './../../../shared/Utilities/app-kind'; import { Links, Kinds } from 'app/shared/models/constants'; import { StatusMessage } from './../spec-picker.component'; import { PriceSpec, PriceSpecInput } from './price-spec'; @@ -12,6 +11,7 @@ import { IsolatedSmallPlanPriceSpec, IsolatedMediumPlanPriceSpec, IsolatedLargeP import { Injector } from '@angular/core'; import { PortalResources } from '../../../shared/models/portal-resources'; import { TranslateService } from '@ngx-translate/core'; +import { AppKind } from '../../../shared/Utilities/app-kind'; export abstract class PriceSpecGroup { abstract iconUrl: string; diff --git a/client/src/polyfills.ts b/client/src/polyfills.ts index 212c525db6..166439f2a7 100644 --- a/client/src/polyfills.ts +++ b/client/src/polyfills.ts @@ -33,6 +33,9 @@ import 'core-js/es6/regexp'; import 'core-js/es6/map'; import 'core-js/es6/set'; +/** This allows us to use includes without breaking IE */ +import 'core-js/es7/array'; + /** IE10 and IE11 requires the following for NgClass support on SVG elements */ // import 'classlist.js'; // Run `npm install --save classlist.js`. diff --git a/client/tslint.json b/client/tslint.json index 3f46292eee..6b48f46478 100644 --- a/client/tslint.json +++ b/client/tslint.json @@ -40,6 +40,7 @@ "timeEnd", "trace" ], + "no-consecutive-blank-lines": true, "no-construct": true, "no-debugger": true, "no-duplicate-variable": true, diff --git a/client/yarn.lock b/client/yarn.lock index cd2ab090b1..429bd16ddd 100644 --- a/client/yarn.lock +++ b/client/yarn.lock @@ -4734,9 +4734,9 @@ ng-mocks@^5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/ng-mocks/-/ng-mocks-5.3.0.tgz#a9e8671bb8137cdd7b137cce3b0da09a6a891e5b" -ng-sidebar@^6.0.1: - version "6.0.5" - resolved "https://registry.yarnpkg.com/ng-sidebar/-/ng-sidebar-6.0.5.tgz#0fe40e1d9fc2e06f7a750a9628d9977a6718baba" +ng-sidebar@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/ng-sidebar/-/ng-sidebar-7.1.0.tgz#11c0716b6ca7fbb66d268776e0a7f8dd58cfb186" ng2-cookies@^1.0.3: version "1.0.12" diff --git a/server/Resources/Resources.resx b/server/Resources/Resources.resx index 0009c6e2fe..84d2aebf2c 100644 --- a/server/Resources/Resources.resx +++ b/server/Resources/Resources.resx @@ -1,3424 +1,3493 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Azure Functions - - - Azure Functions Runtime - - - Cancel - - - Apply - - - Configure - - - Upgrade - - - Upgrade to enable - - - Select all - - - All items selected - - - {0} items selected - - - CPU - - - Memory - - - Storage - - - Create Function Error: {{error}} - - - Function creation error! Please try again. - - - Function Error: {{error}} - - - Function (${{name}}) Error: {{error}} - - - Function Url - - - GitHub Secret - - - Hide files - - - Host Error: {{error}} - - - Output - - - Request body - - - Save and run - - - Status: - - - View files - - - Choose a template below - - - Subscription with name '{0}' already exist - - - Choose a plan below to create new subscription - - - Provide a friendly subscription name - - - Friendly subscription name - - - Invitation code - - - This language is experimental and does not yet have full support. If you run into issues, please file a bug on our <a href="https://github.com/Azure/azure-webjobs-sdk-templates/issues" target="_blank">GitHub repository.</a> - - - Function name - - - A function name is required - - - Name your function - - - Create + get started - - - Function Apps - - - Get started with Azure Functions - - - New function app - - - Your subscription contains no function apps. These are containers where your functions are executed. Create one now. - - - Or create a function app from <a href="https://portal.azure.com/#create/Microsoft.FunctionApp">Azure Portal</a>. - - - Select Location - - - Select Subscription - - - Subscription {{displayName}} ({{ subscriptionId }}) is not white listed for running functions - - - This subscription contains one or more function apps. These are containers where your functions are executed. Select one or create a new one below. - - - The name must be at least 2 characters - - - The name must be at most 60 characters - - - The name can contain letters, numbers, and hyphens (but the first and last character must be a letter or number) - - - function app name {{funcName}} isn't available - - - You need an Azure subscription in order to use this service. <a href="https://azure.microsoft.com/en-us/free/">Click here</a> to create a free trial subscription - - - Your function apps - - - Your subscription - - - Creating a Function App will automatically provision a new container capable of hosting and running your code. - - - Failed to create app - - - 2. Choose a language - - - 1. Choose a scenario - - - Create this function - - - create your own custom function - - - Custom function - - - Data processing - - - or - - - Get started quickly with a premade function - - - Get started on your own - - - Keep using this quickstart - - - For PowerShell, Python, and Batch, - - - Start from source control - - - Timer - - - Webhook + API - - - Clear - - - Copied! - - - Copy logs - - - No logs to display - - - Failed to download log content - '{0}' - - - Pause - - - Logging paused - - - Start - - - Too many logs. Refresh rate: {{seconds}} seconds. - - - Name - Can't use "name" as key because typescript has own name property for the object - - - Open - - - or - - - Your app is currently in read only mode because you have source control integration enabled. To change edit mode visit - - - Region - - - Run - - - Refresh - - - Save - - - Unsaved changes will be discarded. - - - A save operation is currently in progress. Navigating away may cause some changes to be lost. - - - + Add new setting - - - + Add new connection string - - - + Add new document - - - + Add new handler mapping - - - + Add new virtual application or directory - - - Enter a name - - - Enter a value - - - Enter extension - - - Enter script processor - - - Enter arguments - - - Enter virtual path - - - Enter physical path - - - Application - - - Slot Setting - - - Hidden value. Click to show. - - - Changes made to function {{name}} will be lost. Are you sure you want to continue? - - - New Function - - - Refresh - - - Search - - - Scope to this item - - - Search features - - - Search Function apps - - - Subscription ID - - - Subscription - - - Resource group - - - Location - - - No results - - - Changes made to the current function will be lost. Are you sure you want to continue? - - - Function app settings - - - A new version of Azure Functions is available. To upgrade, click here - - - Quickstart - - - Usage - - - All - - - App executions - - - App Usage(Gb Sec) - - - Function App Usage - - - No data available - - - of executions - - - Parameter name - - - Close - - - Config - - - CORS - - - Create - - - Your trial has expired - - - Disabled - - - Enabled - - - disable - - - enabled - - - here - - - You may be experiencing an error. If you're having issues, please post them - - - Error parsing config: {{error}} - - - Failed to {{state}} function: {{functionName}} - - - Features - - - This field is required - - - Code - - - Run - - - Read only - because you have started editing with source control, this view is read only. - - - Advanced editor - - - Changes made will be lost. Are you sure you want to continue? - - - Changes made to function {{name}} will be lost. Are you sure you want to continue? - - - Setting name: - - - Standard editor - - - Delete Function {{name}} - - - Are you sure you want to delete Function {{name}}? - - - Loading ... - - - Success count since - - - Error count since - - - Invocation log - - - Invocation Details - - - Logs - - - live event stream - - - Function - - - Status - - - Details: Last ran - - - (duration) - - - Parameter - - - Authentication is enabled for the function app. Disable authentication before running the function. - - - There was an error running function ({{name}}). Check logs output for the full error. - - - Inputs - - - Logs - - - New Input - - - New Output - - - New Trigger - - - Next - - - Not valid value - - - Outputs - - - Select - - - Develop - - - Integrate - - - Manage - - - Monitor - - - Choose an input binding - - - Choose an output binding - - - Choose a template - - - Choose a trigger - - - Language: - - - Scenario: - - - Triggers - - - Trial expired - - - Changes made here will affect all of the functions within your function app. - - - <span>Create a brand-new function</span> - Get started with one of the pre-built function templates - - - Develop - - - <span>Dive into the documentation</span> - Explore all of the Azure Functions features <a target="_blank" href="http://go.microsoft.com/fwlink/?LinkId=747839">here</a> - - - Function App Settings - - - Integrate - - - Integrating your functions with other services and data sources is easy. - - - Next Steps - - - Set up automated actions based on external triggers, include other input data sources, and send the output to multiple targets. - - - Skip the tour and start coding - - - The fastest way to edit code is with the code editor, but you can also use Git.This example uses NodeJS, but many other languages are also supported. - - - This page also includes a log stream and a test console for helping you debug your function. - - - <span>Tweak this sample function</span> - Make it yours on the easy-to-use dashboard - - - Your functions are designed to run within Azure App Service as a function app, and this is where you modify the features of that app. - - - Update - - - select - - - delete - - - Parameter 'direction' is missed. - - - Unknown direction: '{{direction}}'. - - - Parameter name must be unique in a function: '{{functionName}}' - - - Parameter 'name' is missed. - - - Parameter 'type' is missed. - - - Unknown type: '{{type}}'. - - - Waiting for the resource - - - We've enjoyed hosting your functions ! - - - Your trial has now expired, but you can sign up for an extended trial which includes the rest of Azure as well. - - - Choose an auth provider - - - Microsoft Account - - - Create a free Azure account - - - Extend trial to 24 hours - - - Free Trial - Time remaining: - - - Function creation error! Please try again. - - - Create Function Error - - - If you'd prefer another supported language, you can choose one later in the functions portal. - - - minutes - - - new - - - Input bindings provide additional data provided to your function when it is triggered. For instance, you can fetch data from table storage on a new queue message. Inputs are optional. - - - Outputs bindings allow you to output data from your function. For instance, you can add a new item to a queue. Outputs are optional. - - - Triggers are what will start your function. For instance, you can trigger on a new queue message. You must always have a trigger. - - - Create a new function triggered by this output - - - Documentation - - - Go - - - Copied! - - - Copy to clipboard - - - Changes made to current file will be lost. Are you sure you want to continue? - - - Are you sure you want to delete {{fileName}} - - - Editing binary files is not supported. - - - Error creating file: {{fileName}} - - - Error deleting file: {{fileName}} - - - The fastest way to edit code is with the code editor, but you can also use Git.This example uses C#, but many other languages are also supported. - - - Actions - - - Less than 1 minute - - - Signing up for a free Azure account unlocks all Functions capabilities without worrying about time limits! - - - CORS is not configured for this function app. Please add {{origin}} to your CORS list. - - - We are unable to reach your function app. Your app could be having a temporary issue or may be failing to start. You can check logs or try again in a couple of minutes. - - - Unable to retrieve Function App ({{functionApp}}) - - - We are unable to reach your function app ({{statusText}}). Please try again later. - - - Just a few more seconds... - - - Hang on while we put the 'fun' in functions... - - - Discover more - - - Add - - - Delete - - - Edit - - - Upload - - - See additional options - - - See only recommended options - - - One or more function apps were linked to this storage account. You can see all the function apps linked to the account under 'files' or 'Shares'. - - - A File with the name {{fileName}} already exists. - - - Function with name '{{name}}' already exists. - - - Account Key: - - - Account Name: - - - You can now view the blobs, queues and tables associated with this storage binding. - - - Connecting to your Storage Account - - - Download Storage explorer from here: - - - Connect using these credentials: - - - Learn more - - - Click to learn more. - - - Add header - - - Add parameter - - - HTTP method - - - Query - - - 'AlwaysOn' is not enabled. Your app may not function properly - - - The 'AzureWebJobsSecretStorageType' setting should be set to 'blob',not having this setting will cause unexpected behavior when using deployment slots - - - Azure Functions release notes. - - - Host Keys (All functions) - - - Add new host key - - - Add new function key - - - Click to show - - - Discard - - - (Required) - - - (Optional) Leave empty to auto-generate a key. - - - NAME - - - VALUE - - - Function Keys - - - Connection String: - - - Daily Usage Quota (GB-Sec) - - - The Function App has reached daily usage quota and has been stopped until the next 24 hours time frame. - - - Remove quota - - - Set quota - - - When the daily usage quota is exceeded, the Function App is stopped until the next day at 0:00 AM UTC. - - - Are you sure you want to revoke {{name}} key? - - - Keys - - - The name must be unique within a Function App. It must start with a letter and can contain letters, numbers (0-9), dashes ("-"), and underscores ("_"). - - - Loading.. - - - Test - - - Runtime version - - - Runtime version - - - Azure Functions v1 (.NET Framework) - - - Azure Functions v2 (.NET Standard) - - - custom - - - Your function app is disabled because it has exceeded the set quota. You can change that from the function app settings view on the left side bar. - - - Your function app is stopped. You cannot use the functions portal when the app is stopped. You can change that by going to the function app settings view on the left side bar and then going to the app service settings blade. - - - You don't have sufficient permissions to access this function app. You may still be able to see basic settings in the app service settings blade which you can access from the function app settings link on the left sidebar. - - - Parameter name must be unique. - - - Use function return value - - - Function State - - - Off - - - On - - - API settings - - - New proxy - - - All methods - - - Allowed HTTP methods - - - Backend URL - - - Proxy or function with that name already exists. - - - Name - - - Proxy URL - - - Route template - - - Selected methods - - - function app settings - - - Runtime version: {{extensionVersion}}. A newer version is available ({{latestExtensionVersion}}). - - - Runtime version: {{exactExtensionVersion}} ({{latestExtensionVersion}}) - - - Proxies - - - Enable Azure Functions Proxies (preview) - - - Changes made to proxy {{name}} will be lost. Are you sure you want to continue? - - - Proxy with name '{{name}}' already exists - - - Azure functions slots (preview) is currently disabled. To enable, visit - - - Discard - - - Functions - - - Sign in with Facebook - - - Sign in with GitHub - - - Sign in with Google - - - Sign in with Microsoft - - - Sign out - - - Backend URL must start with 'http://' or 'https://' - - - Copy - - - Renew - - - Revoke - - - Collapse - - - Expand - - - </> Get function URL - - - </> Get GitHub secret - - - Headers - - - There are no headers - - - All subscriptions - - - Subscriptions - - - {0} subscriptions - - - Functions (No access) - - - Functions (ReadOnly lock) - - - Functions (Stopped) - - - Proxies (No access) - - - Proxies (Stopped) - - - Proxies (ReadOnly lock) - - - Functions - - - New function - - - Function Apps - - - Stop - - - Start - - - Restart - - - Swap - - - Complete Swap - - - Cancel Swap - - - Download publish profile - - - Reset publish credentials - - - Delete - - - Status - - - Availability - - - Available - - - No access - - - Not applicable - - - Not available - - - Configured features - - - Quick links to your features will show up here after you've configured them from the "Platform features" tab above. - - - Unsaved changes for the app '{0}' will be lost. Are you sure you would like to continue? - - - There was an error retrieving information about the app '{0}' - - - The app '{0}' could not be found - - - Pin app to dashboard - - - Are you sure you would like to stop '{0}' - - - Stopping app '{0}' - - - Starting app '{0}' - - - Successfully stopped app '{0}' - - - Successfully started app '{0}' - - - Failed to stop app '{0}' - - - Failed to start app '{0}' - - - Are you sure you want to reset your publish profile? Profiles downloaded previously will become invalid. - - - Resetting publishing profile - - - Successfully reset publishing profile - - - Failed to reset publishing profile - - - Are you sure you want to delete '{0}' - - - Deleting app '{0}' - - - Successfully deleted app '{0}' - - - Failed to delete app '{0}' - - - Are you sure you would like to restart '{0}' - - - Restarting app '{0}' - - - Successfully restarted app '{0}' - - - Failed to restart app '{0}' - - - This feature is not supported for apps on a Consumption plan - - - This feature is not supported for slots - - - This feature is not supported for Linux apps - - - You must have write permissions on the current app in order to use this feature - - - This feature is disabled because the app has a ReadOnly lock on it - - - You must have Read permissions on the associated App Service plan in order to use this feature - - - API - - - Deployment options - - - Configure and manage deployment options for your app, including continuous deployment from VSTS, Github and Bitbucket as well as trigger deployments from OneDrive, Dropbox, external Git and more. - - - Deployment credentials - - - Configure Azure account-level deployment credentials. To change your app-level credentials (also known as 'Publish Credentials'), choose 'Reset publish credentials' in the 'Overview' tab. <a href="https://go.microsoft.com/fwlink/?linkid=846056">Learn more</a>. - - - Console - - - Explore your app's file system from an interactive web-based console. - - - SSH - - - SSH provides a Web SSH console experience for your Linux app code - - - Extensions - - - Extensions add functionality to your entire app. - - - (no application settings to display) - - - (no connection strings to display) - - - (no default documents to display) - - - (no handler mappings to display) - - - (no virtual applications or directories to display) - - - General settings - - - Auto Swap - - - Debugging - - - Runtime - - - Application settings - - - Manage app settings, connection strings, runtime settings, and more. - - - Default documents - - - Handler mappings - - - Virtual applications and directories - - - You must have write permissions on the current app in order to edit these settings. - - - This app has a read-only lock that prevents editing settings or retrieving secure data. Please remove the lock and try again. - - - View settings in read-only mode. - - - Failed to load settings. - - - Loading... - - - Updating web app settings - - - Successfully updated web app settings - - - Failed to update web app settings: - - - {{configGroupName}} Save Error: Invlid input provided. - - - .NET Framework version - - - The version used to run your web app if using the .NET Framework - - - PHP version - - - The version used to run your web app if using PHP - - - Python version - - - The version used to run your web app if using Python - - - App Service supports installing newer versions of Python. Click here to learn more. - - - Java version - - - The version used to run your web app if using Java - - - Java minor version - - - Select the desired Java minor version. Selecting 'Newest' will keep your app using the JVM most recently added to the portal. - - - Java web container - - - The web container version used to run your web app if using Java - - - Platform - - - The platform architecture your web app runs - - - 64-bit configuration requires a basic or higher App Service plan - - - Web sockets - - - WebSockets allow more flexible connectivity between web apps and modern browsers. Your web app would need to be built to leverage these capabilities. - - - Always On - - - Indicates that your web app needs to be loaded at all times. By default, web apps are unloaded after they have been idle. It is recommended that you enable this option when you have continuous web jobs running on the web app. - - - Always on requires a basic or higher App Service plan - - - Managed Pipeline Version - - - Auto swap destinations cannot be configured from production slot - - - Auto Swap requires a standard or higher App Service Plan - - - Auto Swap - - - Auto Swap Slot - - - production - - - ARR Affinity - - - You can improve the performance of your stateless applications by turning off the Affinity Cookie, stateful applications should keep the Affinity Cookie turned on for increased compatibility. Click to learn more. - - - Remote debugging - - - Remote Visual Studio version - - - Stack - - - Web Apps on Linux provide run-time options through a collection of built in containers. <a href="https://go.microsoft.com/fwlink/?linkid=861969">Learn more</a>. - - - Startup File - - - Provide an optional startup command that will be run as part of container startup. <a href="https://go.microsoft.com/fwlink/?linkid=861969">Learn more</a>. - - - Newest - - - 32-bit - - - 64-bit - - - Classic - - - Integrated - - - Properties - - - View properties of your app. - - - Backups - - - Use Backup and Restore to easily create automatic or manual backups. - - - All settings - - - View all App Service settings. - - - Manage settings that affect the Functions runtime for all functions within your app. - - - General Settings - - - Code Deployment - - - Deployment Slots - - - Development tools - - - Networking - - - Securely access resources through VNET Integration and Hybrid Connections. - - - Configure SSL bindings for your app using either a certificate you purchased externally or an App Service Certificate. - - - Custom domains - - - Configure and purchase custom domain names. - - - Authentication / Authorization - - - Use Authentication / Authorization to protect your application and work with per-user data. - - - Managed service identity (Preview) - - - Your application can communicate with other Azure services as itself using a managed Azure Active Directory identity. - - - Push notifications - - - Send fast, scalable, and cross-platform mobile push notifications using Notification Hubs. - - - Diagnostic logs - - - Configure where and when to log application and server events. - - - Log streaming - - - View real-time application logs. - - - Process explorer - - - View details on application processes, memory usage, and CPU utilization. - - - Security scanning - - - Enable security scanning for your app with Tinfoil Security. - - - Monitoring - - - Configure Cross-Origin Resource Sharing (CORS) rules for your app. - - - API definition - - - Configure the location of the Swagger 2.0 metadata describing your API. This makes it easy for others to discover and consume your API. - - - An App Service plan is the container for your app. The App Service plan settings will determine the location, features, cost and compute resources associated with your app. - - - Quotas - - - Monitor file system usage quotas. - - - Activity log - - - View management operations that have been performed on your app. - - - Access control (IAM) - - - Configure Role-Based Access Control (RBAC) for your app. - - - Tags - - - Tags are key/value pairs that enable you to categorize resources and view consolidated billing by applying the same tag to multiple resources and resource groups. - - - Locks - - - Lock resources to prevent unexpected changes or deletions. - - - Automation script - - - Automate deploying resources with Azure Resource Manager templates in a single, coordinated operation. Define resources and configurable input parameters and deploy with script or code. - - - Resource management - - - Diagnose and solve problems - - - Our self-service diagnostic and troubleshooting experience helps you to identify and resolve issues with your app - - - Advanced tools (Kudu) - - - Use Kudu to inspect environment variables, access the debug console, upload zips, view processes, and more. - - - App Service Editor - - - App Service Editor provides an in-browser editing experience for your code. - - - Resource Explorer - - - Explore management APIs with Azure Resource Explorer (preview). - - - CORS Rules ({0} defined) - - - Deployment options configured with {0} - - - SSL certificates - - - WebJobs ({0} defined) - - - Extensions ({0} installed) - - - Overview - - - Platform features - - - Settings - - - Function app settings - - - Configuration - - - Application settings - - - Managing your Function app is not available for this trial. - - - Template - - - Events - - - App Service plan - - - App Service plan / pricing tier - - - Authentication - - - Authorization - - - Hybrid connections - - - support request - - - scale - - - Connection strings - - - Debug - - - Continuous deployment - - - Source - - - Target - - - Options - - - We are not able to access your Azure settings for your function app. - - - First make sure you have proper access to the Azure resource {0}. If you dotTry refreshing the portal to renew your authentication token. - - - Please check the storage account connection string in application settings as it appears to be invalid. - - - Update the app setting with a valid storage connection string. - - - '{0}' application setting is missing from your app. This setting contains a connection string for an Azure Storage account that is used to host your functions content. Your app will be completely broken without this setting. You may need to delete and recreate this function app if you no longer have access to the value of that application setting. - - - '{0}' application setting is missing from your app. This setting contains a share name where your function content lives. Your app will be completely broken without this setting. You may need to delete and recreate this function app if you no longer have access to the value of that application setting. - - - '{0}' application setting is missing from your app. This setting contains a connection string for an Azure Storage account that is needed for the monitoring view of your functions. This is where invocation data is aggregated and then displayed in monitoring view. Your monitoring view might be broken. - - - '{0}' application setting is missing from your app. This setting contains a connection string for an Azure Storage account that is needed for the functions runtime to handle multiple instances synchronization, log invocation results, and other infrastructure jobs. Your function app will not work correctly without that setting. - - - Create the app setting with a valid storage connection string. - - - '{0}' application setting is missing from your app. Without this setting you'll always be running the latest version of the runtime even across major version updates which might contain breaking changes. It's advised to set that value to the current latest major version (~1) and you'll get notified with newer versions for update. - - - Azure Storage Account connection string stored in '{0}' is null or empty. This is required to have your function app working. - - - Update the app setting with a valid storage connection string. - - - Storage account {0} doesn't exist. Deleting the storage account the function app is using will cause the function app to stop working. - - - Update the app setting with a valid existing storage connection string. - - - Storage account {0} doesn't support Azure Queues Storage. Functions runtime require queues to work properly. You'll have to delete and recreate your function app with a storage account that supports Azure Queues Storage. - - - There seem to be a problem querying Azure backend for your function app. - - - There seem to be a problem querying Azure backend for your function app. - - - If the problem persists, contact support with the following code {{code}} - - - We are not able to retrieve the list of functions for this function app. - - - We are not able to create function {{functionName}}. Please try again later. - - - We are unable to decrypt your function access keys. This can happen if you delete and recreate the app with the same name, or if you copied your keys from a different function app. You can try following steps here to fix the issue Follow steps here https://go.microsoft.com/fwlink/?linkid=844094 - - - We are not able to delete the file {{fileName}}. Please try again later. - - - We are not able to delete function '{0}'. Please try again later. - - - We are not able to get the content for {{fileName}}. Please try again later. - - - We are not able to retrieve your functions right now. Please try again later. - - - We are not able to retrieve secrets file for {{functionName}}. Please try again later. - - - We are not able to save the content for {{fileName}}. Please try again later. - - - We are not able to retrieve directory content for your function. Please try again later. - - - We are unable to get the content for function '{0}'. Please try again later. - - - We are unable to save the content for function '{0}'. - - - We are unable to retrieve the runtime config. Please try again later. - - - We are not able to retrieve the runtime master key. Please try again later. - - - We are not able to update function {{functionName}}. Please try again later. - - - The function runtime is unable to start. - - - We are not able to create or update the key {{keyName}} for function {{functionName}}. This can happen if the runtime is not able to load your function. Check other function errors. - - - We are not able to delete the key {{keyName}} for function {{functionName}}. This can happen if the runtime is not able to load your function. Check other function errors. - - - We are not able to renew the key {{keyName}} for function {{functionName}}. This can happen if the runtime is not able to load your function. Check other function errors. - - - We are not able to retrieve the keys for function {{functionName}}. This can happen if the runtime is not able to load your function. Check other function errors. - - - The application is offline. Please check your internet connection. - - - ACTIONS - - - go to the quickstart - - - There are no query parameters - - - Collapse - - - Are you sure you want to delete your API definition? - - - Documentation - - - Expand - - - External URL - - - Read the feature overview - - - Check out our getting started tutorial - - - Function (preview) - - - API definition key - - - Load API definition - - - Generate API definition template - - - Export to PowerApps + Flow - - - Cannot save malformed API definition. - - - Renew - - - Set external definition URL - - - API definition source - - - Consume your HTTP triggered Functions in a variety of services using an OpenAPI 2.0 (Swagger) definition - - - Function API definition (Swagger) - - - API definition URL - - - Use your API definition - - - API definition - - - We are not able to create or update the key swaggerdocumentationkey for the Swagger Endpoint. Please check the runtime logs for any errors or try again later. - - - We are not able to delete the API defintion. Please check the runtime logs for any errors or try again later. - - - We are not able to get the key {{keyName}}. Please check the runtime logs for any errors or try again later. - - - We are not able to load the generated API definition. Please check the runtime logs for any errors or try again later. - - - We are unable to update the runtime config. Please try again later. - - - We are not able to update the API definition. Please check the runtime logs for any errors or try again later. - - - Revert to last save - - - Configure App Service Authentication / Authorization - - - #Click "Generate API definition template" to get started - - - Are you sure you want to overwrite the API definition in the editor? - - - Use your API definition to access your Functions from within <a href="https://powerapps.microsoft.com/en-us/" target="_blank">PowerApps</a> and <a href="https://ms.flow.microsoft.com/en-us/" target="_blank">Flow</a>. - - - Create a sparse definition with the metadata from your HTTP triggered functions. -Fill in the <a href="http://swagger.io/specification/#operationObject" target="_blank">operation objects</a>, and other information about your API before use. - - - This key secures your API Definition from access to anyone without the key. -It does not secure the underlying API. See each Function to see their key security. - - - Set to "Function" to enable a hosted API definition and template definition generation. -Set to "External URL" to use an API definition that is hosted elsewhere. - - - Use this URL to directly access your API definition and import into 3rd party tools - - - Application Insights - - - Change the edit mode of your function app - - - Function app edit mode - - - Read Only - - - Read/Write - - - Please enter a valid decimal value with format 'ddd.dd'. - - - Value must be an decimal in the range of {{min}} to {{max}} - - - Duplicate values are not allowed - - - ERROR - - - This field can only contain letters, numbers (0-9), periods ("."), and underscores ("_") - - - This field is required - - - Sum of routing percentage value of all rules must be less than or equal to 100.0 - - - The name must be at least 2 characters - - - The name must be fewer than 60 characters - - - '{0}' is an invalid character - - - The app name '{0}' is not available - - - We are unable to update your function app's edit mode. Please try again later. - - - Your app is currently in read only mode because you've set the edit mode to read only. To change edit mode visit - - - Your app is currently in read/write mode because you've set the edit mode to read/write despite having source control enabled. Any changes you make may get overwritten with your next deployment. To change edit mode visit - - - Your app is currently in read-only mode because you have published a generated function.json. Changes made to function.json will not be honored by the Functions runtime. - - - Your app is currently in read/write mode because you've set the edit mode to read/write despite having a generated function.json. Changes made to function.json will not be honored by the Functions runtime. - - - Copy - - - Get function URL - - - Key - - - URL - - - Download app content - - - Are you sure you want to renew {{name}} key? - - - Azure Functions are an event-based serverless compute experience to accelerate your development. Scale based on demand and pay only for the resources you consume. - - - Learn more about azure functions - - - Event Hub - - - Namespace - - - Not found. - - - Endpoint - - - No function apps to display - - - Slots (preview) - - - Enable deployment slots (preview). - - - Known issues: - - - Logic apps integration with Functions does not work when Slots(preview) is enabled. - - - Opting into this preview feature will reset any pre-existing secrets. Function secrets can be found under the - - - 'Manage' - - - node for each function. - - - A slot create operation is currently in progress. After navigating away, you will no longer be able to check operation status. - - - Add Slot - - - Name - - - Create a new deployment slot - - - Deployment slots let you deploy different versions of your function app to different URLs. You can test a certain version and then swap content and configuration between slots. - - - Creating new slot {0} - - - Successfully created slot {0} - - - Failed to create slot {0} - - - Unable to upate the list of slots - - - You have reached the slots quota limit ({{quota}}) for the current plan. - - - Please upgrade your plan. - - - No access to create a slot. Please ensure you have the right RBAC access for the function app and do not have read locks enabled either. - - - Upgrade to a standard or premium plan to add slots. - - - Deployment slots are live apps with their own hostnames. App content and configurations elements can be swapped between two deployment slots, including the production slot. - - - Setting - - - Type - - - Old Value - - - New Value - - - You haven't added any deployment slots. Click 'Add Slot' to get started. - - - Name - - - Status - - - App service plan - - - Traffic % - - - Slots (preview) - - - For a richer monitoring experience, including live metrics and custom queries: - - - configure Application Insights for your function app - - - This value will be appended to your main web app's URL and will serve as the public address of the slot. For example if you have a web app named 'contoso' and a slot named ‘staging’ then the new slot will have a URL like ‘http://contoso-staging.azurewebsites.net’. - - - Consumption plan allows only for a single slot. If you need more than one slot, please use dedicated App Service plans. - - - Search functions - - - New - - - Create new - - - Delete function - - - A client certificate is required to call run this function. To run it from the portal you have to disable client certificate. - - - Your app is currently in read only mode because you have slot(s) configured. To change edit mode visit - - - Manage application settings - - - IoT hub - - - Key - - - Value - - - Connection - - - Custom - - - Events (built-in endpoint) - - - Operations monitoring - - - Policy - - - The proxies.json schema validation failed. Error: '{0}'. - - - On a Consumption plan, you can limit platform usage by setting a daily usage quota, in gigabytes-seconds. Once the daily usage quota is reached, the Function App is stopped until the next day at 0:00 AM UTC. - - - (hub policy) - - - (namespace policy) - - - Service Bus - - - App setting is not found. - - - show value - - - Add app setting - - - Add storage account connection string - - - Account name - - - Account key - - - storage account connection string name - - - Enter a name for storage account connection string - - - Storage endpoints domain - - - Microsoft Azure - - - Other(specify bellow) - - - Enter storage endpoints domain - - - Add Sql connection string - - - SQL Server endpoint - - - Database name - - - User name - - - Password - - - Download - - - Include app settings in the download - - - This will include a file called local.settings.json which will contain your app settings values. This file will not be encrypted on download, but can be encrypted using the Azure Functions Core Tools command line. - - - Site content - - - Content and Visual Studio project - - - retrieve - - - Delete proxy - - - New proxy - - - No override - - - Express AAD Registration - - - create - - - You need to add Event Grid subscription after function creation. - - - Event Grid Subscription URL - - - Event Grid Subscription URL - - - Manage Event Grid subscriptions - - - Add Event Grid subscription - - - All locations - - - {0} locations - - - Location: - - - Group by location - - - No grouping - - - Group by resource group - - - Group by subscription - - - South Central US - - - North Europe - - - West Europe - - - Southeast Asia - - - Korea Central - - - Korea South - - - West US - - - East US - - - Japan West - - - Japan East - - - East Asia - - - East US 2 - - - North Central US - - - Central US - - - Brazil South - - - Australia East - - - Australia Southeast - - - West India - - - Central India - - - South India - - - Canada Central - - - Canada East - - - West Central US - - - UK West - - - UK South - - - West US 2 - - - All resource groups - - - Resource Group: - - - {0} resource groups - - - Body - - - Status code - - - Status message - - - Request override - - - Response override - - - Optional - - - Git Clone Uri - - - Rollback Enabled - - - Source Control Type - - - Redeploy - - - Activity - - - Active - - - Time - - - Log - - - Show Logs... - - - Status - - - Commit ID (Author) - - - Checkin Message - - - You're using a prerelease version of Azure Functions. Thanks for trying it out! - - - Click to hide - - - Logic Apps allow you to easily utilize your function across multiple platforms - - - Logic Apps - - - Associated Logic Apps - - - Orchestrate with Logic Apps - - - Create Logic Apps - - - No Logic Apps to display - - - Logic Apps - - - Logic Apps lets you quickly build integrations with SaaS and Enterprise apps, as well as visually design processes and workflows. - - - Expand or Collapse - - - App service Authentication / Authorization: - - - Configure AAD now - - - Add permissions now - - - configured - - - Identity requirements (not satisfied) - - - not configured - - - Required permissions - - - The template needs the following permission: - - - This integration requires an AAD configuration for the function app. - - - This template requires an AAD configuration for the function app. - - - You may need to configure any additional permissions you function requires. Please see the documentation for this binding. - - - Manage App Service Authentication / Authorization - - - Auth configuration required - - - Identity requirements - - - Manage - - - We are not able to get the list of installed runtime extensions - - - We are not able to install runtime extension {{extensionId}} - - - We are not able to uninstall runtime extension {{extensionId}} - - - Installing runtime extensions is taking longer than expected - - - The extension {{extensionId}} with a different version is already installed - - - Open Application Insights - - - App Insights is enabled for your function. - - - No Monitoring data to display - - - Install - - - Extension Installation Succeeded - - - Extensions not Installed - - - This integration requires the following extensions. - - - This template requires the following extensions. - - - Installing template dependencies, you will be able to create a function once this is done. Dependency installation happens in the background and can take up to 2 minutes. You can close this blade and continue to use the portal during this time. - - - We are not able to install runtime extension. Install id {{installationId}} - - - Enter value in GB-sec - - - Connection - - - Notification Hub - - - Java Functions can be built, tested and deployed locally from your machine. No portal required! - - - Click below to get started with documentation on how to build your first Azure Function with Java. - - - Proxies has been enabled. To disable again, delete or disable all individual proxies. - - - Java on Azure Functions Quickstart - - - Name: - - - Search by trigger, language, or description - - - hide value - - - App Insights instrumentation key is presented in app settings but App Insights is not found in Function App's subscription. Please make sure your App Insights is located in the same subscription as Function App. - - - Start of row - - - End of row - - - Cannot Upgrade with Existing Functions - - - Major version upgrades can introduce breaking changes to languages and bindings. When upgrading major versions of the runtime, consider creating a new function app and migrate your functions to this new app. - - - Warning - - - Authorized as: - - - Continue - - - Authorize - - - Authorize - - - Back - - - Continue - - - Finish - - - Code - - - Repository - - - Branch - - - Folder - - - Repository Type - - - Organization - - - Visual Studio Team Service Account - - - Project - - - Build - - - Source - - - Account - - - Load Test - - - Slot - - - Production - - - Entity - - - Entity: - - - Function API definition (Swagger) feature is not supported for beta runtime currently. - - - Deployed Successfully to {0} - - - Failed to deploy to {0} - - - Perform swap with preview - - - Start the swap - - - Review + complete the swap - - - A swap operation is currently in progress. After navigating away, you will no longer be able to check operation status. - - - {{swapType}} between slot {{srcSlot}} and slot {{destSlot}} - - - swap - - - phase one of swap - - - phase two of swap - - - Performing {{operation}} - - - Successfully completed {{operation}} - - - Failed to complete {{operation}}. Error: {{error}} - - - Cancelling {{operation}} - - - Successfully cancelled {{operation}} - - - Failed to cancel {{operation}}. Error: {{error}} - - - Swapped slot {0} with {1} - - - Failed to swap slot {0} with {1} - - - Successfully setup Continuous Delivery and triggered build - - - Successfully setup Continuous Delivery for the repository - - - Failed to setup Continuous Delivery - - - Created new Visual Studio Team Services account - - - Failed to create Visual Studio Team Services account - - - Created new slot - - - Failed to create a slot - - - Created new Web Application for test environment - - - Failed to create new Web Application for test environment - - - Successfully disconnected Continuous Delivery for {0} - - - {0} got started' - - - Failed to start {0} - - - {0} got stopped' - - - Failed to stop {0} - - - {0} got restarted' - - - Failed to restart {0} - - - Successfully triggered Continuous Delivery with latest source code from repository - - - Build Definition - - - Release Definition - - - Build Triggered - - - Web App - - - Slot - - - Visual Studio Online Account - - - View Instructions - - - Build: {0} - - - Release: {0} - - - Deployment Center - - - Source Control - - - Build Provider - - - Configure - - - Deploy - - - Summary - - - Experimental Language Support: - - - Source Provider - - - Sync content from a OneDrive cloud folder. - - - Configure continuous integration with a Github repo. - - - Configure continuous integration with a VSTS repo. - - - Deploy from a public Git or Mercurial repo. - - - Configure continuous integration with a Bitbucket repo. - - - Deploy from a local Git repo. - - - Sync content from a Dropbox cloud folder. - - - Durable Functions - - - A function that will be run whenever an Activity is called by an orchestrator function. - - - An orchestrator function that invokes activity functions in a sequence. - - - A function that will trigger whenever it receives an HTTP request to execute an orchestrator function. - - - Functions (Preview) - - - Your app is currently in read-only mode because you are using Run-From-Zip. When using Run-From-Zip, the file system is read-only and no changes can be made to the files. To make any changes update the content in your zip file and WEBSITE_USE_ZIP app setting. - - - Code - - - Column - - - Description - - - Errors and warnings - - - File - - - Line - - - Recommended pricing tiers - - - Additional pricing tiers - - - Your subscription does not allow this pricing tier - - - Dev / Test - - - For less demanding workloads - - - Production - - - For most production workloads - - - Isolated - - - Advanced networking and scale - - - Scale up is not available for consumption plans - - - You must have write permissions to scale up this plan - - - You must have write permissions on the plan '{0}' to update it - - - The plan '{0}' has a read only lock on it and cannot be updated - - - Updating App Service Plan - - - Updating the plan {0} - - - The plan '{0}' was updated successfully! - - - Successfully submitted job to scale the plan '{0}'. - - - A scale operation is currently in progress for the plan '{0}'. Please wait for the operation to complete before scaling again. - - - Failed to update the plan '{0}' - - - Included features - - - Every app hosted on this App Service plan will have access to these features: - - - Included hardware - - - Every instance of your App Service plan will include the following hardware configuration: - - - Linux web apps in an App Service Environment are billed at a 50% discount while in preview. - - - The first Basic (B1) core for Linux is free for the first 30 days! - - - Windows containers are billed at a 50% discount while in preview. - - - Isolated pricing tiers within an App Service Environment (ASE) are not available for your configuration. An ASE is a powerful feature offering of Azure App Service that gives network isolation and improved scale capabilities. - - - Dev / Test pricing tiers are not available for your configuration and are only available to plans that are not hosted within an App Service environment. - - - Production pricing tiers are not available for your configuration and are only available to plans that are not hosted within an App Service environment. - - - Premium V2 is not supported for this scale unit. Please consider redeploying or cloning your app. - - - Scale up - - - {0} {1}/Hour (Estimated) - - - Choose a different pricing tier to add more resources for your plan - - - Update App Service plan - - - Shared insfrastructure - - - Shared compute resources used to run applications deployed in the App Service Plan. - - - Dedicated A-series compute resources used to run applications deployed in the App Service Plan. - - - Dedicated Dv2-series compute resources used to run applications deployed in the App Service Plan. - - - Memory available to run applications deployed and running in the App Service plan. - - - Memory per instance available to run applications deployed and running in the App Service plan. - - - {0} disk storage shared by all apps deployed in the App Service plan. - - - Custom domains / SSL - - - Configure and purchase custom domains with SNI SSL bindings - - - Configure and purchase custom domains with SNI and IP SSL bindings - - - Manual scale - - - Auto scale - - - Scale to a large number of instances - - - Up to 100 instances. More allowed upon request. - - - Up to {0} instances. Subject to availability. - - - Staging slots - - - Up to {0} staging slots to use for testing and deployments before swapping them into production. - - - Daily backup - - - Daily backups - - - Backup your app {0} times daily. - - - Traffic manager - - - Improve performance and availability by routing traffic between multiple instances of your app. - - - Single tenant system - - - Take more control over the resources being used by your app. - - - Isolated network - - - Runs within your own virtual network. - - - Private app access - - - Using an App Service Environment with Internal Load Balancing (ILB). - - - {0} GB memory - - - {0} minutes/day compute - - - {0} cores - - - A-Series compute - - - Dv2-Series compute - - - The proxies.json is not valid. Error: '{0}'. - - - The proxies schema is not valid. Error: '{0}'. - - - Operation Id - - - Date (UTC) - - - URL - - - Result Code - - - Trigger Reason - - - Error - - - Run in Application Insights - - - Application Insights Instance - - - Success - - - Duration (ms) - - - Success count in last 30 days - - - Error count in last 30 days - - - Query returned {0} items - - - Message - - - Item Count - - - Log Level - - - VSTS build server - - - Use VSTS as the build server. You can choose to leverage advanced options for a full release management workflow. - - - App Service Kudu build server - - - Use App Service as the build server. The App Service Kudu engine will automatically build your code during deployment when applicable with no additional configuration required. - - - Build - - - Select Account - - - Enter Account Name - - - Select Project - - - Web Application Framework - - - Select Framework - - - Working Directory - - - There is an operation in progress. Are you sure you would like leave? - - - Task Runner - - - Python Framework - - - Python Version - - - Django Settings Module - - - flaskProjectName - - - New - - - Existing - - - Select Respository - - - Select Folder - - - Select branch - - - Deployment - - - Enable Deployment Slot - - - Deployment Slot - - - Enter Deployment Slot Name - - - Select Slot - - - Yes - - - No - - - Load Testing - - - Enable Load Testing - - - App Name - - - Pricing Tier - - - Deployment Center (Preview) - - - Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. - - - Not Authorized - - - The call to get Host information failed. - - - Configure Application Insights to capture invocation logs - - - Azure Functions now supports Application Insights as the preferred monitoring solution for apps under construction and in production. App Insights offers powerful analytics, notifications, and visualizations of your log data, as well as higher overall reliability at scale. - - - Switch to classic view - - - Configuration Instructions - - - Configure - - - Invocation traces - - - Results may be delayed for up to 5 minutes. - - - Drag a file here or - - - browse - - - to upload - - - Metrics - - - View metrics and setup alerts. - - - FTP based deployment can be disabled or configured to accept FTP (plain text) or FTPS (secure) connections. Click to learn more. - - - FTP access - - - Validating... - - - You do not have permissions to create a Build Definition or a Release definition on this project. Contact your project administrator - - - The account name supplied is not valid. Please supply another account name. - - - FTP + FTPS - - - FTPS Only - - - Disable - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Azure Functions + + + Azure Functions Runtime + + + Cancel + + + Apply + + + Configure + + + Upgrade + + + Upgrade to enable + + + Select all + + + All items selected + + + {0} items selected + + + CPU + + + Memory + + + Storage + + + Create Function Error: {{error}} + + + Function creation error! Please try again. + + + Function Error: {{error}} + + + Function (${{name}}) Error: {{error}} + + + Function Url + + + GitHub Secret + + + Hide files + + + Host Error: {{error}} + + + Output + + + Request body + + + Save and run + + + Status: + + + View files + + + Choose a template below + + + Subscription with name '{0}' already exist + + + Choose a plan below to create new subscription + + + Provide a friendly subscription name + + + Friendly subscription name + + + Invitation code + + + This language is experimental and does not yet have full support. If you run into issues, please file a bug on our <a href="https://github.com/Azure/azure-webjobs-sdk-templates/issues" target="_blank">GitHub repository.</a> + + + Function name + + + A function name is required + + + Name your function + + + Create + get started + + + Function Apps + + + Get started with Azure Functions + + + New function app + + + Your subscription contains no function apps. These are containers where your functions are executed. Create one now. + + + Or create a function app from <a href="https://portal.azure.com/#create/Microsoft.FunctionApp">Azure Portal</a>. + + + Select Location + + + Select Subscription + + + Subscription {{displayName}} ({{ subscriptionId }}) is not white listed for running functions + + + This subscription contains one or more function apps. These are containers where your functions are executed. Select one or create a new one below. + + + The name must be at least 2 characters + + + The name must be at most 60 characters + + + The name can contain letters, numbers, and hyphens (but the first and last character must be a letter or number) + + + function app name {{funcName}} isn't available + + + You need an Azure subscription in order to use this service. <a href="https://azure.microsoft.com/en-us/free/">Click here</a> to create a free trial subscription + + + Your function apps + + + Your subscription + + + Creating a Function App will automatically provision a new container capable of hosting and running your code. + + + Failed to create app + + + 2. Choose a language + + + 1. Choose a scenario + + + Create this function + + + create your own custom function + + + Custom function + + + Data processing + + + or + + + Get started quickly with a premade function + + + Get started on your own + + + Keep using this quickstart + + + For PowerShell, Python, and Batch, + + + Start from source control + + + Timer + + + Webhook + API + + + Clear + + + Copied! + + + Copy logs + + + No logs to display + + + Failed to download log content - '{0}' + + + Pause + + + Logging paused + + + Start + + + Too many logs. Refresh rate: {{seconds}} seconds. + + + Name + Can't use "name" as key because typescript has own name property for the object + + + Open + + + or + + + Your app is currently in read only mode because you have source control integration enabled. To change edit mode visit + + + Region + + + Run + + + Refresh + + + Save + + + Unsaved changes will be discarded. + + + A save operation is currently in progress. Navigating away may cause some changes to be lost. + + + + Add new setting + + + + Add new connection string + + + + Add new document + + + + Add new handler mapping + + + + Add new virtual application or directory + + + Enter a name + + + Enter a value + + + Enter extension + + + Enter script processor + + + Enter arguments + + + Enter virtual path + + + Enter physical path + + + Application + + + Slot Setting + + + Hidden value. Click to show. + + + Changes made to function {{name}} will be lost. Are you sure you want to continue? + + + New Function + + + Refresh + + + Search + + + Scope to this item + + + Search features + + + Search Function apps + + + Subscription ID + + + Subscription + + + Resource group + + + Location + + + No results + + + Changes made to the current function will be lost. Are you sure you want to continue? + + + Function app settings + + + A new version of Azure Functions is available. To upgrade, click here + + + Quickstart + + + Usage + + + All + + + App executions + + + App Usage(Gb Sec) + + + Function App Usage + + + No data available + + + of executions + + + Parameter name + + + Close + + + Config + + + CORS + + + Create + + + Your trial has expired + + + Disabled + + + Enabled + + + disable + + + enabled + + + here + + + You may be experiencing an error. If you're having issues, please post them + + + Error parsing config: {{error}} + + + Failed to {{state}} function: {{functionName}} + + + Features + + + This field is required + + + Code + + + Run + + + Read only - because you have started editing with source control, this view is read only. + + + Advanced editor + + + Changes made will be lost. Are you sure you want to continue? + + + Changes made to function {{name}} will be lost. Are you sure you want to continue? + + + Setting name: + + + Standard editor + + + Delete Function {{name}} + + + Are you sure you want to delete Function {{name}}? + + + Loading ... + + + Success count since + + + Error count since + + + Invocation log + + + Invocation Details + + + Logs + + + live event stream + + + Function + + + Status + + + Details: Last ran + + + (duration) + + + Parameter + + + Authentication is enabled for the function app. Disable authentication before running the function. + + + There was an error running function ({{name}}). Check logs output for the full error. + + + Inputs + + + Logs + + + New Input + + + New Output + + + New Trigger + + + Next + + + Not valid value + + + Outputs + + + Select + + + Develop + + + Integrate + + + Manage + + + Monitor + + + Choose an input binding + + + Choose an output binding + + + Choose a template + + + Choose a trigger + + + Language: + + + Scenario: + + + Triggers + + + Trial expired + + + Changes made here will affect all of the functions within your function app. + + + <span>Create a brand-new function</span> - Get started with one of the pre-built function templates + + + Develop + + + <span>Dive into the documentation</span> - Explore all of the Azure Functions features <a target="_blank" href="http://go.microsoft.com/fwlink/?LinkId=747839">here</a> + + + Function App Settings + + + Integrate + + + Integrating your functions with other services and data sources is easy. + + + Next Steps + + + Set up automated actions based on external triggers, include other input data sources, and send the output to multiple targets. + + + Skip the tour and start coding + + + The fastest way to edit code is with the code editor, but you can also use Git.This example uses NodeJS, but many other languages are also supported. + + + This page also includes a log stream and a test console for helping you debug your function. + + + <span>Tweak this sample function</span> - Make it yours on the easy-to-use dashboard + + + Your functions are designed to run within Azure App Service as a function app, and this is where you modify the features of that app. + + + Update + + + select + + + delete + + + Parameter 'direction' is missed. + + + Unknown direction: '{{direction}}'. + + + Parameter name must be unique in a function: '{{functionName}}' + + + Parameter 'name' is missed. + + + Parameter 'type' is missed. + + + Unknown type: '{{type}}'. + + + Waiting for the resource + + + We've enjoyed hosting your functions ! + + + Your trial has now expired, but you can sign up for an extended trial which includes the rest of Azure as well. + + + Choose an auth provider + + + Microsoft Account + + + Create a free Azure account + + + Extend trial to 24 hours + + + Free Trial - Time remaining: + + + Function creation error! Please try again. + + + Create Function Error + + + If you'd prefer another supported language, you can choose one later in the functions portal. + + + minutes + + + new + + + Input bindings provide additional data provided to your function when it is triggered. For instance, you can fetch data from table storage on a new queue message. Inputs are optional. + + + Outputs bindings allow you to output data from your function. For instance, you can add a new item to a queue. Outputs are optional. + + + Triggers are what will start your function. For instance, you can trigger on a new queue message. You must always have a trigger. + + + Create a new function triggered by this output + + + Documentation + + + Go + + + Copied! + + + Copy to clipboard + + + Changes made to current file will be lost. Are you sure you want to continue? + + + Are you sure you want to delete {{fileName}} + + + Editing binary files is not supported. + + + Error creating file: {{fileName}} + + + Error deleting file: {{fileName}} + + + The fastest way to edit code is with the code editor, but you can also use Git.This example uses C#, but many other languages are also supported. + + + Actions + + + Less than 1 minute + + + Signing up for a free Azure account unlocks all Functions capabilities without worrying about time limits! + + + CORS is not configured for this function app. Please add {{origin}} to your CORS list. + + + We are unable to reach your function app. Your app could be having a temporary issue or may be failing to start. You can check logs or try again in a couple of minutes. + + + Unable to retrieve Function App ({{functionApp}}) + + + We are unable to reach your function app ({{statusText}}). Please try again later. + + + Just a few more seconds... + + + Hang on while we put the 'fun' in functions... + + + Discover more + + + Add + + + Delete + + + Edit + + + Upload + + + See additional options + + + See only recommended options + + + One or more function apps were linked to this storage account. You can see all the function apps linked to the account under 'files' or 'Shares'. + + + A File with the name {{fileName}} already exists. + + + Function with name '{{name}}' already exists. + + + Account Key: + + + Account Name: + + + You can now view the blobs, queues and tables associated with this storage binding. + + + Connecting to your Storage Account + + + Download Storage explorer from here: + + + Connect using these credentials: + + + Learn more + + + Click to learn more. + + + Add header + + + Add parameter + + + HTTP method + + + Query + + + 'AlwaysOn' is not enabled. Your app may not function properly + + + The 'AzureWebJobsSecretStorageType' setting should be set to 'blob',not having this setting will cause unexpected behavior when using deployment slots + + + Azure Functions release notes. + + + Host Keys (All functions) + + + Add new host key + + + Add new function key + + + Click to show + + + Discard + + + (Required) + + + (Optional) Leave empty to auto-generate a key. + + + NAME + + + VALUE + + + Function Keys + + + Connection String: + + + Daily Usage Quota (GB-Sec) + + + The Function App has reached daily usage quota and has been stopped until the next 24 hours time frame. + + + Remove quota + + + Set quota + + + When the daily usage quota is exceeded, the Function App is stopped until the next day at 0:00 AM UTC. + + + Are you sure you want to revoke {{name}} key? + + + Keys + + + The name must be unique within a Function App. It must start with a letter and can contain letters, numbers (0-9), dashes ("-"), and underscores ("_"). + + + Loading.. + + + Test + + + Runtime version + + + Runtime version + + + Azure Functions v1 (.NET Framework) + + + Azure Functions v2 (.NET Standard) + + + custom + + + Your function app is disabled because it has exceeded the set quota. You can change that from the function app settings view on the left side bar. + + + Your function app is stopped. You cannot use the functions portal when the app is stopped. You can change that by going to the function app settings view on the left side bar and then going to the app service settings blade. + + + You don't have sufficient permissions to access this function app. You may still be able to see basic settings in the app service settings blade which you can access from the function app settings link on the left sidebar. + + + Parameter name must be unique. + + + Use function return value + + + Function State + + + Off + + + On + + + API settings + + + New proxy + + + All methods + + + Allowed HTTP methods + + + Backend URL + + + Proxy or function with that name already exists. + + + Name + + + Proxy URL + + + Route template + + + Selected methods + + + function app settings + + + Runtime version: {{extensionVersion}}. A newer version is available ({{latestExtensionVersion}}). + + + Runtime version: {{exactExtensionVersion}} ({{latestExtensionVersion}}) + + + Proxies + + + Enable Azure Functions Proxies (preview) + + + Changes made to proxy {{name}} will be lost. Are you sure you want to continue? + + + Proxy with name '{{name}}' already exists + + + Azure functions slots (preview) is currently disabled. To enable, visit + + + Discard + + + Functions + + + Sign in with Facebook + + + Sign in with GitHub + + + Sign in with Google + + + Sign in with Microsoft + + + Sign out + + + Backend URL must start with 'http://' or 'https://' + + + Copy + + + Renew + + + Revoke + + + Collapse + + + Expand + + + </> Get function URL + + + </> Get GitHub secret + + + Headers + + + There are no headers + + + All subscriptions + + + Subscriptions + + + {0} subscriptions + + + Functions (No access) + + + Functions (ReadOnly lock) + + + Functions (Stopped) + + + Proxies (No access) + + + Proxies (Stopped) + + + Proxies (ReadOnly lock) + + + Functions + + + New function + + + Function Apps + + + Stop + + + Start + + + Restart + + + Swap + + + Complete Swap + + + Cancel Swap + + + Download publish profile + + + Reset publish credentials + + + Delete + + + Status + + + Availability + + + Available + + + No access + + + Not applicable + + + Not available + + + Configured features + + + Quick links to your features will show up here after you've configured them from the "Platform features" tab above. + + + Unsaved changes for the app '{0}' will be lost. Are you sure you would like to continue? + + + There was an error retrieving information about the app '{0}' + + + The app '{0}' could not be found + + + Pin app to dashboard + + + Are you sure you would like to stop '{0}' + + + Stopping app '{0}' + + + Starting app '{0}' + + + Successfully stopped app '{0}' + + + Successfully started app '{0}' + + + Failed to stop app '{0}' + + + Failed to start app '{0}' + + + Are you sure you want to reset your publish profile? Profiles downloaded previously will become invalid. + + + Resetting publishing profile + + + Successfully reset publishing profile + + + Failed to reset publishing profile + + + Are you sure you want to delete '{0}' + + + Deleting app '{0}' + + + Successfully deleted app '{0}' + + + Failed to delete app '{0}' + + + Are you sure you would like to restart '{0}' + + + Restarting app '{0}' + + + Successfully restarted app '{0}' + + + Failed to restart app '{0}' + + + This feature is not supported for apps on a Consumption plan + + + This feature is not supported for slots + + + This feature is not supported for Linux apps + + + You must have write permissions on the current app in order to use this feature + + + This feature is disabled because the app has a ReadOnly lock on it + + + You must have Read permissions on the associated App Service plan in order to use this feature + + + API + + + Deployment options + + + Configure and manage deployment options for your app, including continuous deployment from VSTS, Github and Bitbucket as well as trigger deployments from OneDrive, Dropbox, external Git and more. + + + Deployment credentials + + + Configure Azure account-level deployment credentials. To change your app-level credentials (also known as 'Publish Credentials'), choose 'Reset publish credentials' in the 'Overview' tab. <a href="https://go.microsoft.com/fwlink/?linkid=846056">Learn more</a>. + + + Console + + + Explore your app's file system from an interactive web-based console. + + + SSH + + + SSH provides a Web SSH console experience for your Linux app code + + + Extensions + + + Extensions add functionality to your entire app. + + + (no application settings to display) + + + (no connection strings to display) + + + (no default documents to display) + + + (no handler mappings to display) + + + (no virtual applications or directories to display) + + + General settings + + + Auto Swap + + + Debugging + + + Runtime + + + Application settings + + + Manage app settings, connection strings, runtime settings, and more. + + + Default documents + + + Handler mappings + + + Virtual applications and directories + + + You must have write permissions on the current app in order to edit these settings. + + + This app has a read-only lock that prevents editing settings or retrieving secure data. Please remove the lock and try again. + + + View settings in read-only mode. + + + Failed to load settings. + + + Loading... + + + Updating web app settings + + + Successfully updated web app settings + + + Failed to update web app settings: + + + {{configGroupName}} Save Error: Invlid input provided. + + + .NET Framework version + + + The version used to run your web app if using the .NET Framework + + + PHP version + + + The version used to run your web app if using PHP + + + Python version + + + The version used to run your web app if using Python + + + App Service supports installing newer versions of Python. Click here to learn more. + + + Java version + + + The version used to run your web app if using Java + + + Java minor version + + + Select the desired Java minor version. Selecting 'Newest' will keep your app using the JVM most recently added to the portal. + + + Java web container + + + The web container version used to run your web app if using Java + + + Platform + + + The platform architecture your web app runs + + + 64-bit configuration requires a basic or higher App Service plan + + + Web sockets + + + WebSockets allow more flexible connectivity between web apps and modern browsers. Your web app would need to be built to leverage these capabilities. + + + Always On + + + Indicates that your web app needs to be loaded at all times. By default, web apps are unloaded after they have been idle. It is recommended that you enable this option when you have continuous web jobs running on the web app. + + + Always on requires a basic or higher App Service plan + + + Managed Pipeline Version + + + Auto swap destinations cannot be configured from production slot + + + Auto Swap requires a standard or higher App Service Plan + + + Auto Swap + + + Auto Swap Slot + + + production + + + ARR Affinity + + + You can improve the performance of your stateless applications by turning off the Affinity Cookie, stateful applications should keep the Affinity Cookie turned on for increased compatibility. Click to learn more. + + + Remote debugging + + + Remote Visual Studio version + + + Stack + + + Web Apps on Linux provide run-time options through a collection of built in containers. <a href="https://go.microsoft.com/fwlink/?linkid=861969">Learn more</a>. + + + Startup File + + + Provide an optional startup command that will be run as part of container startup. <a href="https://go.microsoft.com/fwlink/?linkid=861969">Learn more</a>. + + + Newest + + + 32-bit + + + 64-bit + + + Classic + + + Integrated + + + Properties + + + View properties of your app. + + + Backups + + + Use Backup and Restore to easily create automatic or manual backups. + + + All settings + + + View all App Service settings. + + + Manage settings that affect the Functions runtime for all functions within your app. + + + General Settings + + + Code Deployment + + + Deployment Slots + + + Development tools + + + Networking + + + Securely access resources through VNET Integration and Hybrid Connections. + + + Configure SSL bindings for your app using either a certificate you purchased externally or an App Service Certificate. + + + Custom domains + + + Configure and purchase custom domain names. + + + Authentication / Authorization + + + Use Authentication / Authorization to protect your application and work with per-user data. + + + Managed service identity (Preview) + + + Your application can communicate with other Azure services as itself using a managed Azure Active Directory identity. + + + Push notifications + + + Send fast, scalable, and cross-platform mobile push notifications using Notification Hubs. + + + Diagnostic logs + + + Configure where and when to log application and server events. + + + Log streaming + + + View real-time application logs. + + + Process explorer + + + View details on application processes, memory usage, and CPU utilization. + + + Security scanning + + + Enable security scanning for your app with Tinfoil Security. + + + Monitoring + + + Configure Cross-Origin Resource Sharing (CORS) rules for your app. + + + API definition + + + Configure the location of the Swagger 2.0 metadata describing your API. This makes it easy for others to discover and consume your API. + + + An App Service plan is the container for your app. The App Service plan settings will determine the location, features, cost and compute resources associated with your app. + + + Quotas + + + Monitor file system usage quotas. + + + Activity log + + + View management operations that have been performed on your app. + + + Access control (IAM) + + + Configure Role-Based Access Control (RBAC) for your app. + + + Tags + + + Tags are key/value pairs that enable you to categorize resources and view consolidated billing by applying the same tag to multiple resources and resource groups. + + + Locks + + + Lock resources to prevent unexpected changes or deletions. + + + Automation script + + + Automate deploying resources with Azure Resource Manager templates in a single, coordinated operation. Define resources and configurable input parameters and deploy with script or code. + + + Resource management + + + Diagnose and solve problems + + + Our self-service diagnostic and troubleshooting experience helps you to identify and resolve issues with your app + + + Advanced tools (Kudu) + + + Use Kudu to inspect environment variables, access the debug console, upload zips, view processes, and more. + + + App Service Editor + + + App Service Editor provides an in-browser editing experience for your code. + + + Resource Explorer + + + Explore management APIs with Azure Resource Explorer (preview). + + + CORS Rules ({0} defined) + + + Deployment options configured with {0} + + + SSL certificates + + + WebJobs ({0} defined) + + + Extensions ({0} installed) + + + Overview + + + Platform features + + + Settings + + + Function app settings + + + Configuration + + + Application settings + + + Managing your Function app is not available for this trial. + + + Template + + + Events + + + App Service plan + + + App Service plan / pricing tier + + + Authentication + + + Authorization + + + Hybrid connections + + + support request + + + scale + + + Connection strings + + + Debug + + + Continuous deployment + + + Source + + + Target + + + Options + + + We are not able to access your Azure settings for your function app. + + + First make sure you have proper access to the Azure resource {0}. If you dotTry refreshing the portal to renew your authentication token. + + + Please check the storage account connection string in application settings as it appears to be invalid. + + + Update the app setting with a valid storage connection string. + + + '{0}' application setting is missing from your app. This setting contains a connection string for an Azure Storage account that is used to host your functions content. Your app will be completely broken without this setting. You may need to delete and recreate this function app if you no longer have access to the value of that application setting. + + + '{0}' application setting is missing from your app. This setting contains a share name where your function content lives. Your app will be completely broken without this setting. You may need to delete and recreate this function app if you no longer have access to the value of that application setting. + + + '{0}' application setting is missing from your app. This setting contains a connection string for an Azure Storage account that is needed for the monitoring view of your functions. This is where invocation data is aggregated and then displayed in monitoring view. Your monitoring view might be broken. + + + '{0}' application setting is missing from your app. This setting contains a connection string for an Azure Storage account that is needed for the functions runtime to handle multiple instances synchronization, log invocation results, and other infrastructure jobs. Your function app will not work correctly without that setting. + + + Create the app setting with a valid storage connection string. + + + '{0}' application setting is missing from your app. Without this setting you'll always be running the latest version of the runtime even across major version updates which might contain breaking changes. It's advised to set that value to the current latest major version (~1) and you'll get notified with newer versions for update. + + + Azure Storage Account connection string stored in '{0}' is null or empty. This is required to have your function app working. + + + Update the app setting with a valid storage connection string. + + + Storage account {0} doesn't exist. Deleting the storage account the function app is using will cause the function app to stop working. + + + Update the app setting with a valid existing storage connection string. + + + Storage account {0} doesn't support Azure Queues Storage. Functions runtime require queues to work properly. You'll have to delete and recreate your function app with a storage account that supports Azure Queues Storage. + + + There seem to be a problem querying Azure backend for your function app. + + + There seem to be a problem querying Azure backend for your function app. + + + If the problem persists, contact support with the following code {{code}} + + + We are not able to retrieve the list of functions for this function app. + + + We are not able to create function {{functionName}}. Please try again later. + + + We are unable to decrypt your function access keys. This can happen if you delete and recreate the app with the same name, or if you copied your keys from a different function app. You can try following steps here to fix the issue Follow steps here https://go.microsoft.com/fwlink/?linkid=844094 + + + We are not able to delete the file {{fileName}}. Please try again later. + + + We are not able to delete function '{0}'. Please try again later. + + + We are not able to get the content for {{fileName}}. Please try again later. + + + We are not able to retrieve your functions right now. Please try again later. + + + We are not able to retrieve secrets file for {{functionName}}. Please try again later. + + + We are not able to save the content for {{fileName}}. Please try again later. + + + We are not able to retrieve directory content for your function. Please try again later. + + + We are unable to get the content for function '{0}'. Please try again later. + + + We are unable to save the content for function '{0}'. + + + We are unable to retrieve the runtime config. Please try again later. + + + We are not able to retrieve the runtime master key. Please try again later. + + + We are not able to update function {{functionName}}. Please try again later. + + + The function runtime is unable to start. + + + We are not able to create or update the key {{keyName}} for function {{functionName}}. This can happen if the runtime is not able to load your function. Check other function errors. + + + We are not able to delete the key {{keyName}} for function {{functionName}}. This can happen if the runtime is not able to load your function. Check other function errors. + + + We are not able to renew the key {{keyName}} for function {{functionName}}. This can happen if the runtime is not able to load your function. Check other function errors. + + + We are not able to retrieve the keys for function {{functionName}}. This can happen if the runtime is not able to load your function. Check other function errors. + + + The application is offline. Please check your internet connection. + + + ACTIONS + + + go to the quickstart + + + There are no query parameters + + + Collapse + + + Are you sure you want to delete your API definition? + + + Documentation + + + Expand + + + External URL + + + Read the feature overview + + + Check out our getting started tutorial + + + Function (preview) + + + API definition key + + + Load API definition + + + Generate API definition template + + + Export to PowerApps + Flow + + + Cannot save malformed API definition. + + + Renew + + + Set external definition URL + + + API definition source + + + Consume your HTTP triggered Functions in a variety of services using an OpenAPI 2.0 (Swagger) definition + + + Function API definition (Swagger) + + + API definition URL + + + Use your API definition + + + API definition + + + We are not able to create or update the key swaggerdocumentationkey for the Swagger Endpoint. Please check the runtime logs for any errors or try again later. + + + We are not able to delete the API defintion. Please check the runtime logs for any errors or try again later. + + + We are not able to get the key {{keyName}}. Please check the runtime logs for any errors or try again later. + + + We are not able to load the generated API definition. Please check the runtime logs for any errors or try again later. + + + We are unable to update the runtime config. Please try again later. + + + We are not able to update the API definition. Please check the runtime logs for any errors or try again later. + + + Revert to last save + + + Configure App Service Authentication / Authorization + + + #Click "Generate API definition template" to get started + + + Are you sure you want to overwrite the API definition in the editor? + + + Use your API definition to access your Functions from within <a href="https://powerapps.microsoft.com/en-us/" target="_blank">PowerApps</a> and <a href="https://ms.flow.microsoft.com/en-us/" target="_blank">Flow</a>. + + + Create a sparse definition with the metadata from your HTTP triggered functions. +Fill in the <a href="http://swagger.io/specification/#operationObject" target="_blank">operation objects</a>, and other information about your API before use. + + + This key secures your API Definition from access to anyone without the key. +It does not secure the underlying API. See each Function to see their key security. + + + Set to "Function" to enable a hosted API definition and template definition generation. +Set to "External URL" to use an API definition that is hosted elsewhere. + + + Use this URL to directly access your API definition and import into 3rd party tools + + + Application Insights + + + Change the edit mode of your function app + + + Function app edit mode + + + Read Only + + + Read/Write + + + Please enter a valid decimal value with format 'ddd.dd'. + + + Value must be an decimal in the range of {{min}} to {{max}} + + + Duplicate values are not allowed + + + ERROR + + + This field can only contain letters, numbers (0-9), periods ("."), and underscores ("_") + + + This field is required + + + Sum of routing percentage value of all rules must be less than or equal to 100.0 + + + The name must be at least 2 characters + + + The name must be fewer than 60 characters + + + '{0}' is an invalid character + + + The app name '{0}' is not available + + + We are unable to update your function app's edit mode. Please try again later. + + + Your app is currently in read only mode because you've set the edit mode to read only. To change edit mode visit + + + Your app is currently in read/write mode because you've set the edit mode to read/write despite having source control enabled. Any changes you make may get overwritten with your next deployment. To change edit mode visit + + + Your app is currently in read-only mode because you have published a generated function.json. Changes made to function.json will not be honored by the Functions runtime. + + + Your app is currently in read/write mode because you've set the edit mode to read/write despite having a generated function.json. Changes made to function.json will not be honored by the Functions runtime. + + + Copy + + + Get function URL + + + Key + + + URL + + + Download app content + + + Are you sure you want to renew {{name}} key? + + + Azure Functions are an event-based serverless compute experience to accelerate your development. Scale based on demand and pay only for the resources you consume. + + + Learn more about azure functions + + + Event Hub + + + Namespace + + + Not found. + + + Endpoint + + + No function apps to display + + + Slots (preview) + + + Enable deployment slots (preview). + + + Known issues: + + + Logic apps integration with Functions does not work when Slots(preview) is enabled. + + + Opting into this preview feature will reset any pre-existing secrets. Function secrets can be found under the + + + 'Manage' + + + node for each function. + + + A slot create operation is currently in progress. After navigating away, you will no longer be able to check operation status. + + + Add Slot + + + Name + + + Create a new deployment slot + + + Deployment slots let you deploy different versions of your function app to different URLs. You can test a certain version and then swap content and configuration between slots. + + + Creating new slot {0} + + + Successfully created slot {0} + + + Failed to create slot {0} + + + Unable to upate the list of slots + + + You have reached the slots quota limit ({{quota}}) for the current plan. + + + Please upgrade your plan. + + + No access to create a slot. Please ensure you have the right RBAC access for the function app and do not have read locks enabled either. + + + Upgrade to a standard or premium plan to add slots. + + + Deployment slots are live apps with their own hostnames. App content and configurations elements can be swapped between two deployment slots, including the production slot. + + + Setting + + + Type + + + Old Value + + + New Value + + + You haven't added any deployment slots. Click 'Add Slot' to get started. + + + Name + + + Status + + + App service plan + + + Traffic % + + + Slots (preview) + + + For a richer monitoring experience, including live metrics and custom queries: + + + configure Application Insights for your function app + + + This value will be appended to your main web app's URL and will serve as the public address of the slot. For example if you have a web app named 'contoso' and a slot named ‘staging’ then the new slot will have a URL like ‘http://contoso-staging.azurewebsites.net’. + + + Consumption plan allows only for a single slot. If you need more than one slot, please use dedicated App Service plans. + + + Search functions + + + New + + + Create new + + + Delete function + + + A client certificate is required to call run this function. To run it from the portal you have to disable client certificate. + + + Your app is currently in read only mode because you have slot(s) configured. To change edit mode visit + + + Manage application settings + + + IoT hub + + + Key + + + Value + + + Connection + + + Custom + + + Events (built-in endpoint) + + + Operations monitoring + + + Policy + + + The proxies.json schema validation failed. Error: '{0}'. + + + On a Consumption plan, you can limit platform usage by setting a daily usage quota, in gigabytes-seconds. Once the daily usage quota is reached, the Function App is stopped until the next day at 0:00 AM UTC. + + + (hub policy) + + + (namespace policy) + + + Service Bus + + + App setting is not found. + + + show value + + + Add app setting + + + Add storage account connection string + + + Account name + + + Account key + + + storage account connection string name + + + Enter a name for storage account connection string + + + Storage endpoints domain + + + Microsoft Azure + + + Other(specify bellow) + + + Enter storage endpoints domain + + + Add Sql connection string + + + SQL Server endpoint + + + Database name + + + User name + + + Password + + + Download + + + Include app settings in the download + + + This will include a file called local.settings.json which will contain your app settings values. This file will not be encrypted on download, but can be encrypted using the Azure Functions Core Tools command line. + + + Site content + + + Content and Visual Studio project + + + retrieve + + + Delete proxy + + + New proxy + + + No override + + + Express AAD Registration + + + create + + + You need to add Event Grid subscription after function creation. + + + Event Grid Subscription URL + + + Event Grid Subscription URL + + + Manage Event Grid subscriptions + + + Add Event Grid subscription + + + All locations + + + {0} locations + + + Location: + + + Group by location + + + No grouping + + + Group by resource group + + + Group by subscription + + + South Central US + + + North Europe + + + West Europe + + + Southeast Asia + + + Korea Central + + + Korea South + + + West US + + + East US + + + Japan West + + + Japan East + + + East Asia + + + East US 2 + + + North Central US + + + Central US + + + Brazil South + + + Australia East + + + Australia Southeast + + + West India + + + Central India + + + South India + + + Canada Central + + + Canada East + + + West Central US + + + UK West + + + UK South + + + West US 2 + + + All resource groups + + + Resource Group: + + + {0} resource groups + + + Body + + + Status code + + + Status message + + + Request override + + + Response override + + + Optional + + + Git Clone Uri + + + Rollback Enabled + + + Source Control Type + + + Redeploy + + + Activity + + + Active + + + Time + + + Log + + + Show Logs... + + + Status + + + Commit ID (Author) + + + Checkin Message + + + You're using a prerelease version of Azure Functions. Thanks for trying it out! + + + Click to hide + + + Logic Apps allow you to easily utilize your function across multiple platforms + + + Logic Apps + + + Associated Logic Apps + + + Orchestrate with Logic Apps + + + Create Logic Apps + + + No Logic Apps to display + + + Logic Apps + + + Logic Apps lets you quickly build integrations with SaaS and Enterprise apps, as well as visually design processes and workflows. + + + Expand or Collapse + + + App service Authentication / Authorization: + + + Configure AAD now + + + Add permissions now + + + configured + + + Identity requirements (not satisfied) + + + not configured + + + Required permissions + + + The template needs the following permission: + + + This integration requires an AAD configuration for the function app. + + + This template requires an AAD configuration for the function app. + + + You may need to configure any additional permissions you function requires. Please see the documentation for this binding. + + + Manage App Service Authentication / Authorization + + + Auth configuration required + + + Identity requirements + + + Manage + + + We are not able to get the list of installed runtime extensions + + + We are not able to install runtime extension {{extensionId}} + + + We are not able to uninstall runtime extension {{extensionId}} + + + Installing runtime extensions is taking longer than expected + + + The extension {{extensionId}} with a different version is already installed + + + Open Application Insights + + + App Insights is enabled for your function. + + + No Monitoring data to display + + + Install + + + Extension Installation Succeeded + + + Extensions not Installed + + + This integration requires the following extensions. + + + This template requires the following extensions. + + + Installing template dependencies, you will be able to create a function once this is done. Dependency installation happens in the background and can take up to 2 minutes. You can close this blade and continue to use the portal during this time. + + + We are not able to install runtime extension. Install id {{installationId}} + + + Enter value in GB-sec + + + Connection + + + Notification Hub + + + Java Functions can be built, tested and deployed locally from your machine. No portal required! + + + Click below to get started with documentation on how to build your first Azure Function with Java. + + + Proxies has been enabled. To disable again, delete or disable all individual proxies. + + + Java on Azure Functions Quickstart + + + Name: + + + Search by trigger, language, or description + + + hide value + + + App Insights instrumentation key is presented in app settings but App Insights is not found in Function App's subscription. Please make sure your App Insights is located in the same subscription as Function App. + + + Start of row + + + End of row + + + Cannot Upgrade with Existing Functions + + + Major version upgrades can introduce breaking changes to languages and bindings. When upgrading major versions of the runtime, consider creating a new function app and migrate your functions to this new app. + + + Warning + + + Authorized as: + + + Continue + + + Authorize + + + Authorize + + + Back + + + Continue + + + Finish + + + Code + + + Repository + + + Branch + + + Folder + + + Repository Type + + + Organization + + + Visual Studio Team Service Account + + + Project + + + Build + + + Source + + + Account + + + Load Test + + + Slot + + + Production + + + Entity + + + Entity: + + + Function API definition (Swagger) feature is not supported for beta runtime currently. + + + Deployed Successfully to {0} + + + Failed to deploy to {0} + + + Perform swap with preview + + + Start the swap + + + Review + complete the swap + + + A swap operation is currently in progress. After navigating away, you will no longer be able to check operation status. + + + {{swapType}} between slot {{srcSlot}} and slot {{destSlot}} + + + swap + + + phase one of swap + + + phase two of swap + + + Performing {{operation}} + + + Successfully completed {{operation}} + + + Failed to complete {{operation}}. Error: {{error}} + + + Cancelling {{operation}} + + + Successfully cancelled {{operation}} + + + Failed to cancel {{operation}}. Error: {{error}} + + + Swapped slot {0} with {1} + + + Failed to swap slot {0} with {1} + + + Successfully setup Continuous Delivery and triggered build + + + Successfully setup Continuous Delivery for the repository + + + Failed to setup Continuous Delivery + + + Created new Visual Studio Team Services account + + + Failed to create Visual Studio Team Services account + + + Created new slot + + + Failed to create a slot + + + Created new Web Application for test environment + + + Failed to create new Web Application for test environment + + + Successfully disconnected Continuous Delivery for {0} + + + {0} got started' + + + Failed to start {0} + + + {0} got stopped' + + + Failed to stop {0} + + + {0} got restarted' + + + Failed to restart {0} + + + Successfully triggered Continuous Delivery with latest source code from repository + + + Build Definition + + + Release Definition + + + Build Triggered + + + Web App + + + Slot + + + Visual Studio Online Account + + + View Instructions + + + Build: {0} + + + Release: {0} + + + Deployment Center + + + Source Control + + + Build Provider + + + Configure + + + Deploy + + + Summary + + + Experimental Language Support: + + + Source Provider + + + Sync content from a OneDrive cloud folder. + + + Configure continuous integration with a Github repo. + + + Configure continuous integration with a VSTS repo. + + + Deploy from a public Git or Mercurial repo. + + + Configure continuous integration with a Bitbucket repo. + + + Deploy from a local Git repo. + + + Sync content from a Dropbox cloud folder. + + + Durable Functions + + + A function that will be run whenever an Activity is called by an orchestrator function. + + + An orchestrator function that invokes activity functions in a sequence. + + + A function that will trigger whenever it receives an HTTP request to execute an orchestrator function. + + + Functions (Preview) + + + Your app is currently in read-only mode because you are using Run-From-Zip. When using Run-From-Zip, the file system is read-only and no changes can be made to the files. To make any changes update the content in your zip file and WEBSITE_USE_ZIP app setting. + + + Code + + + Column + + + Description + + + Errors and warnings + + + File + + + Line + + + Recommended pricing tiers + + + Additional pricing tiers + + + Your subscription does not allow this pricing tier + + + Dev / Test + + + For less demanding workloads + + + Production + + + For most production workloads + + + Isolated + + + Advanced networking and scale + + + Scale up is not available for consumption plans + + + You must have write permissions to scale up this plan + + + You must have write permissions on the plan '{0}' to update it + + + The plan '{0}' has a read only lock on it and cannot be updated + + + Updating App Service Plan + + + Updating the plan {0} + + + The plan '{0}' was updated successfully! + + + Successfully submitted job to scale the plan '{0}'. + + + A scale operation is currently in progress for the plan '{0}'. Please wait for the operation to complete before scaling again. + + + Failed to update the plan '{0}' + + + Included features + + + Every app hosted on this App Service plan will have access to these features: + + + Included hardware + + + Every instance of your App Service plan will include the following hardware configuration: + + + Linux web apps in an App Service Environment are billed at a 50% discount while in preview. + + + The first Basic (B1) core for Linux is free for the first 30 days! + + + Windows containers are billed at a 50% discount while in preview. + + + Isolated pricing tiers within an App Service Environment (ASE) are not available for your configuration. An ASE is a powerful feature offering of Azure App Service that gives network isolation and improved scale capabilities. + + + Dev / Test pricing tiers are not available for your configuration and are only available to plans that are not hosted within an App Service environment. + + + Production pricing tiers are not available for your configuration and are only available to plans that are not hosted within an App Service environment. + + + Premium V2 is not supported for this scale unit. Please consider redeploying or cloning your app. + + + Scale up + + + Free + + + {0} {1}/Hour (Estimated) + + + Choose a different pricing tier to add more resources for your plan + + + Update App Service plan + + + Shared insfrastructure + + + Shared compute resources used to run applications deployed in the App Service Plan. + + + Dedicated A-series compute resources used to run applications deployed in the App Service Plan. + + + Dedicated Dv2-series compute resources used to run applications deployed in the App Service Plan. + + + Memory available to run applications deployed and running in the App Service plan. + + + Memory per instance available to run applications deployed and running in the App Service plan. + + + {0} disk storage shared by all apps deployed in the App Service plan. + + + Custom domains / SSL + + + Configure and purchase custom domains with SNI SSL bindings + + + Configure and purchase custom domains with SNI and IP SSL bindings + + + Manual scale + + + Auto scale + + + Scale to a large number of instances + + + Up to 100 instances. More allowed upon request. + + + Up to {0} instances. Subject to availability. + + + Staging slots + + + Up to {0} staging slots to use for testing and deployments before swapping them into production. + + + Daily backup + + + Daily backups + + + Backup your app {0} times daily. + + + Traffic manager + + + Improve performance and availability by routing traffic between multiple instances of your app. + + + Single tenant system + + + Take more control over the resources being used by your app. + + + Isolated network + + + Runs within your own virtual network. + + + Private app access + + + Using an App Service Environment with Internal Load Balancing (ILB). + + + {0} GB memory + + + {0} minutes/day compute + + + {0} cores + + + A-Series compute + + + Dv2-Series compute + + + The proxies.json is not valid. Error: '{0}'. + + + The proxies schema is not valid. Error: '{0}'. + + + Operation Id + + + Date (UTC) + + + URL + + + Result Code + + + Trigger Reason + + + Error + + + Run in Application Insights + + + Application Insights Instance + + + Success + + + Duration (ms) + + + Success count in last 30 days + + + Error count in last 30 days + + + Query returned {0} items + + + Message + + + Item Count + + + Log Level + + + VSTS build server + + + Use VSTS as the build server. You can choose to leverage advanced options for a full release management workflow. + + + App Service Kudu build server + + + Use App Service as the build server. The App Service Kudu engine will automatically build your code during deployment when applicable with no additional configuration required. + + + Build + + + Select Account + + + Enter Account Name + + + Select Project + + + Web Application Framework + + + Select Framework + + + Working Directory + + + There is an operation in progress. Are you sure you would like leave? + + + Task Runner + + + Python Framework + + + Python Version + + + Django Settings Module + + + flaskProjectName + + + New + + + Existing + + + Select Respository + + + Select Folder + + + Select branch + + + Deployment + + + Enable Deployment Slot + + + Deployment Slot + + + Enter Deployment Slot Name + + + Select Slot + + + Yes + + + No + + + Load Testing + + + Enable Load Testing + + + App Name + + + Pricing Tier + + + Deployment Center (Preview) + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + Not Authorized + + + The call to get Host information failed. + + + Configure Application Insights to capture invocation logs + + + Azure Functions now supports Application Insights as the preferred monitoring solution for apps under construction and in production. App Insights offers powerful analytics, notifications, and visualizations of your log data, as well as higher overall reliability at scale. + + + Switch to classic view + + + Configuration Instructions + + + Configure + + + Invocation traces + + + Results may be delayed for up to 5 minutes. + + + Drag a file here or + + + browse + + + to upload + + + Metrics + + + View metrics and setup alerts. + + + FTP based deployment can be disabled or configured to accept FTP (plain text) or FTPS (secure) connections. Click to learn more. + + + FTP access + + + Validating... + + + You do not have permissions to create a Build Definition or a Release definition on this project. Contact your project administrator + + + The account name supplied is not valid. Please supply another account name. + + + FTP + FTPS + + + FTPS Only + + + Disable + + + Dismiss + + + Show + + + Hide + + + Your password and confirmation password do not match. + + + Dashboard + + + Use an FTP connection to access and copy app files. + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + User Credentials + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + App Credentials + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + Username + + + Password + + + Confirm Password + + + FTPS Endpoint + + + Credentials + + + Pending + + + Failed + + + Succcess + + + Save Credentials + + + Reset Credentials + + + HTTP Version + + \ No newline at end of file diff --git a/server/Resources/cs-CZ/Server/Resources/Resources.resx b/server/Resources/cs-CZ/Server/Resources/Resources.resx index a278129afd..ffddfd20a8 100644 --- a/server/Resources/cs-CZ/Server/Resources/Resources.resx +++ b/server/Resources/cs-CZ/Server/Resources/Resources.resx @@ -1577,7 +1577,7 @@ Použije ověřování/autorizaci k ochraně aplikace a pracuje s daty jednotlivých uživatelů. - Identita spravované služby + Identita spravované služby (Preview) Vaše aplikace může s ostatními službami Azure komunikovat sama za sebe pomocí spravované identity Azure Active Directory. @@ -1666,6 +1666,12 @@ Správa prostředků + + Diagnostikovat a řešit problémy + + + Naše prostředí pro samoobslužnou diagnostiku a řešení potíží vám pomůže identifikovat a vyřešit problémy s vaší aplikací. + Rozšířené nástroje (Kudu) @@ -2057,13 +2063,13 @@ Pokud chcete použít definici rozhraní API, která se hostuje někde jinde, na Vaše aplikace je aktuálně v režimu jen pro čtení, protože jste tak nastavili režim úprav. Pokud chcete režim úprav změnit, navštivte - Vaše aplikace je aktuálně v režimu čtení\zápis, protože jste tak nastavili režim úprav, přestože máte aktivovanou správu zdrojového kódu. Případné změny, které provedete, se můžou přepsat při příštím nasazení. Pokud chcete režim úprav změnit, navštivte + Vaše aplikace je aktuálně v režimu čtení a zápisu, protože jste tak nastavili režim úprav, přestože máte aktivovanou správu zdrojového kódu. Případné změny, které provedete, se můžou přepsat při příštím nasazení. Pokud chcete režim úprav změnit, navštivte Vaše aplikace je v tuto chvíli v režimu jen pro čtení, protože jste publikovali vygenerovaný soubor function.json. Modul runtime Functions bude změny v souboru function.json ignorovat. - Vaše aplikace je v tuto chvíli v režimu čtení a zápisu, protože jste nastavili režim úprav na čtení a zápis, i když se vygeneroval soubor function.json. Modul runtime služby Functions nebude respektovat změny, které se provedou v souboru function.json. + Vaše aplikace je v tuto chvíli v režimu čtení a zápisu, protože jste tak nastavili režim úprav, přestože se vygeneroval soubor function.json. Modul runtime služby Functions nebude respektovat změny, které se provedou v souboru function.json. Kopírovat @@ -2648,7 +2654,7 @@ Pokud chcete použít definici rozhraní API, která se hostuje někde jinde, na Tato šablona vyžaduje následující rozšíření. - Instalují se závislosti šablony. Až to bude hotové, budete moct vytvořit funkci. Instalace závislostí probíhá na pozadí a může trvat až 10 minut. Během instalace můžete na portálu dále pracovat. + Instalují se závislosti šablony. Až to bude hotové, budete moct vytvořit funkci. Instalace závislostí probíhá na pozadí a může trvat až 2 minuty. Během instalace můžete toto okno zavřít a dále pracovat na portálu. Nepovedlo se nám nainstalovat rozšíření modulu runtime. ID instalace: {{installationId}} @@ -2948,7 +2954,7 @@ Pokud chcete použít definici rozhraní API, která se hostuje někde jinde, na Nasazení z místního úložiště Gitu - Nakonfiguruje kontinuální integraci se složkou Dropboxu. + Synchronizuje obsah z cloudové složky Dropboxu. Durable Functions @@ -3068,10 +3074,10 @@ Pokud chcete použít definici rozhraní API, která se hostuje někde jinde, na Izolované cenové úrovně ve službě App Service Environment (ASE) nejsou pro vaši konfiguraci k dispozici. ASE je výkonná funkce, která nabízí službu Azure App Service. Ta poskytuje funkce pro izolování sítě a vylepšené škálování. - Cenové úrovně pro vývoj a testování jsou k dispozici jen plánům, které se nehostují ve službě App Service Environment. + Cenové úrovně pro vývoj a testování nejsou k dispozici pro vaši konfiguraci. Jsou k dispozici jen plánům, které se nehostují ve službě App Service Environment. - Produkční cenové úrovně jsou k dispozici jen plánům, které se nehostují ve službě App Service Environment. + Produkční cenové úrovně nejsou k dispozici pro vaši konfiguraci. Jsou k dispozici jen plánům, které se nehostují ve službě App Service Environment. Premium V2 se pro tuto jednotku škálování nepodporuje. Zvažte prosím možnost aplikaci znovu nasadit nebo klonovat. @@ -3079,6 +3085,9 @@ Pokud chcete použít definici rozhraní API, která se hostuje někde jinde, na Škálovat nahoru + + Zdarma + {0} {1}/hod. (odhad) @@ -3148,6 +3157,12 @@ Pokud chcete použít definici rozhraní API, která se hostuje někde jinde, na Zálohovat aplikaci {0}krát denně + + Správce provozu + + + Pokud chcete zvýšit výkon a dostupnost, můžete provoz nasměrovat mezi několik instancí aplikace. + Systém s jedním tenantem @@ -3212,7 +3227,7 @@ Pokud chcete použít definici rozhraní API, která se hostuje někde jinde, na Instance Application Insights - Úspěch + Success Doba trvání (ms) @@ -3223,6 +3238,9 @@ Pokud chcete použít definici rozhraní API, která se hostuje někde jinde, na Počet chyb za posledních 30 dní + + Dotaz vrátil tento počet položek: {0} + Zpráva @@ -3239,7 +3257,7 @@ Pokud chcete použít definici rozhraní API, která se hostuje někde jinde, na Jako buildovací server se použije VSTS. Pro úplný pracovní postup správy vydaných verzí se můžete rozhodnout využít rozšířené možnosti. - Sestavit na serveru + Buildovací server App Service Kudu Jako buildovací server se použije služba App Service. Když to půjde, modul App Service Kudu automaticky sestaví váš kód během nasazování bez nutnosti něco dále konfigurovat. @@ -3352,6 +3370,9 @@ Pokud chcete použít definici rozhraní API, která se hostuje někde jinde, na Přepnout do klasického zobrazení + + Pokyny ke konfiguraci + Konfigurovat @@ -3359,7 +3380,7 @@ Pokud chcete použít definici rozhraní API, která se hostuje někde jinde, na Trasy volání - Výsledky jsou zpožděné až o 5 minut. + Výsledky můžou být až o 5 minut zpožděné. Přetáhněte sem soubor nebo @@ -3391,4 +3412,79 @@ Pokud chcete použít definici rozhraní API, která se hostuje někde jinde, na Zadaný název účtu není platný. Zadejte prosím nějaký jiný. + + FTP a FTPS + + + Jen FTPS + + + Zakázat + + + Zamítnout + + + Zobrazit + + + Skrýt + + + Your password and confirmation password do not match. + + + Řídicí panel + + + Use an FTP connection to access and copy app files. + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + User Credentials + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + App Credentials + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + Uživatelské jméno + + + Heslo + + + Potvrdit heslo + + + FTPS Endpoint + + + Pověření + + + Čeká na dokončení + + + Nepodařilo se. + + + Succcess + + + Save Credentials + + + Reset Credentials + + + HTTP Version + \ No newline at end of file diff --git a/server/Resources/de-DE/Server/Resources/Resources.resx b/server/Resources/de-DE/Server/Resources/Resources.resx index 5bab07db24..818360a687 100644 --- a/server/Resources/de-DE/Server/Resources/Resources.resx +++ b/server/Resources/de-DE/Server/Resources/Resources.resx @@ -1577,7 +1577,7 @@ Mit der Authentifizierung/Autorisierung können Sie Ihre Anwendung schützen und mit benutzerbasierten Daten arbeiten. - Verwaltete Dienstidentität + Verwaltete Dienstidentität (Vorschau) Ihre Anwendung kann unter Verwendung einer verwalteten Azure Active Directory-Identität als sie selbst mit anderen Azure-Diensten kommunizieren. @@ -1666,6 +1666,12 @@ Ressourcenverwaltung + + Diagnose und Problembehandlung + + + Mithilfe der Oberfläche für Self-Service-Diagnose und Problembehandlung können Sie Probleme mit Ihrer App identifizieren und lösen. + Erweiterte Tools (Kudu) @@ -2063,7 +2069,7 @@ Legen Sie die Einstellung auf "Externe URL" fest, um eine API-Definition zu verw Ihre App befindet sich zurzeit im schreibgeschützten Modus, weil Sie eine generierte Datei "function.json" veröffentlicht haben. Änderungen an "function.json" werden von der Functions-Laufzeit nicht berücksichtigt. - Ihre App befindet sich gerade im Lese-/Schreibmodus, weil Sie den Bearbeitungsmodus auf Lesen/Schreiben festgelegt haben, obwohl eine generierte "function.json" vorliegt. Änderungen an "function.json" werden von der Functions-Runtime nicht berücksichtigt. + Ihre App befindet sich gerade im Lese-/Schreibmodus, weil Sie den Bearbeitungsmodus auf "Lesen/Schreiben" festgelegt haben, obwohl eine generierte "function.json" vorliegt. Änderungen an "function.json" werden von der Functions-Runtime nicht berücksichtigt. Kopieren @@ -2201,7 +2207,7 @@ Legen Sie die Einstellung auf "Externe URL" fest, um eine API-Definition zu verw Für eine leistungsstärkere Überwachungsoberfläche einschließlich von Livemetriken und benutzerdefinierten Abfragen: - configure Application Insights for your function app + Application Insights für Ihre Funktions-App konfigurieren Dieser Wert wird an die Haupt-URL Ihrer Web-App angefügt und dient als öffentliche Adresse des Slots. Lautet der Name Ihrer Web-App z. B. "contoso" und der Ihres Slots "staging", dann lautet die URL des neuen Slots "http://contoso-staging.azurewebsites.net". @@ -2648,7 +2654,7 @@ Legen Sie die Einstellung auf "Externe URL" fest, um eine API-Definition zu verw Diese Vorlage erfordert die folgenden Erweiterungen. - Zurzeit werden Vorlagenabhängigkeiten installiert. Sobald dieser Vorgang abgeschlossen wurde, können Sie eine Funktion erstellen. Die Installation der Abhängigkeiten erfolgt im Hintergrund und kann bis zu 10 Minuten dauern. Während dieser Zeit können Sie das Portal weiter nutzen. + Zurzeit werden Vorlagenabhängigkeiten installiert. Sobald dieser Vorgang abgeschlossen wurde, können Sie eine Funktion erstellen. Die Installation der Abhängigkeiten erfolgt im Hintergrund und kann bis zu 2 Minuten dauern. Sie können dieses Blatt schließen und währenddessen das Portal weiter nutzen. Die Laufzeiterweiterung kann nicht installiert werden. Installations-ID: {{installationId}} @@ -2948,7 +2954,7 @@ Legen Sie die Einstellung auf "Externe URL" fest, um eine API-Definition zu verw Hiermit erfolgt die Bereitstellung von einem lokalen Git-Repository aus. - Continuous Integration mit Dropbox-Ordner konfigurieren + Hiermit wird Inhalt aus einem Dropbox-Cloudordner synchronisiert. Robuste Funktionen @@ -2990,7 +2996,7 @@ Legen Sie die Einstellung auf "Externe URL" fest, um eine API-Definition zu verw Empfohlene Tarife - Additional pricing tiers + Zusätzliche Tarife Dieser Tarif ist für Ihr Abonnement nicht zulässig. @@ -3035,10 +3041,10 @@ Legen Sie die Einstellung auf "Externe URL" fest, um eine API-Definition zu verw Der Plan "{0}" wurde erfolgreich aktualisiert. - Successfully submitted job to scale the plan '{0}'. + Der Auftrag zum Skalieren des Plans "{0}" wurde erfolgreich übermittelt. - A scale operation is currently in progress for the plan '{0}'. Please wait for the operation to complete before scaling again. + Für den Plan "{0}" wird zurzeit ein Skalierungsvorgang ausgeführt. Warten Sie, bis der Vorgang abgeschlossen ist, bevor Sie einen neuen Skalierungsvorgang starten. Fehler beim Aktualisieren des Plans "{0}". @@ -3068,10 +3074,10 @@ Legen Sie die Einstellung auf "Externe URL" fest, um eine API-Definition zu verw Isolierte Tarife innerhalb einer App Service-Umgebung (ASE) sind für Ihre Konfiguration nicht verfügbar. Eine App Service-Umgebung ist ein leistungsstarkes Azure App Service-Feature, das Netzwerkisolation und eine verbesserte Skalierung ermöglicht. - Dev/Test-Tarife sind nur für Pläne verfügbar, die nicht innerhalb einer App Service-Umgebung gehostet werden. + Dev/Test-Tarife sind für Ihre Konfiguration nicht verfügbar, sondern nur für Pläne, die nicht innerhalb einer App Service-Umgebung gehostet werden. - Produktionstarife sind nur für Pläne verfügbar, die nicht innerhalb einer App Service-Umgebung gehostet werden. + Produktionstarife sind für Ihre Konfiguration nicht verfügbar, sondern nur für Pläne, die nicht innerhalb einer App Service-Umgebung gehostet werden. Premium V2 wird für diese Skalierungseinheit nicht unterstützt. Erwägen Sie eine erneute Bereitstellung, oder klonen Sie ggf. Ihre App. @@ -3079,6 +3085,9 @@ Legen Sie die Einstellung auf "Externe URL" fest, um eine API-Definition zu verw Zentral hochskalieren + + Frei + {0} {1}/Stunde (geschätzt) @@ -3095,10 +3104,10 @@ Legen Sie die Einstellung auf "Externe URL" fest, um eine API-Definition zu verw Gemeinsam genutzte Computeressourcen zum Ausführen von Anwendungen, die im Rahmen des App Service-Plans bereitgestellt werden. - Dedicated A-series compute resources used to run applications deployed in the App Service Plan. + Dedizierte Computeressourcen der A-Serie, die zum Ausführen von im App Service-Plan bereitgestellten Anwendungen verwendet werden. - Dedicated Dv2-series compute resources used to run applications deployed in the App Service Plan. + Dedizierte Computeressourcen der Dv2-Serie, die zum Ausführen von im App Service-Plan bereitgestellten Anwendungen verwendet werden. Verfügbarer Arbeitsspeicher zum Ausführen von Anwendungen, die im Rahmen des App Service-Plans bereitgestellt und ausgeführt werden. @@ -3146,7 +3155,13 @@ Legen Sie die Einstellung auf "Externe URL" fest, um eine API-Definition zu verw Tägliche Sicherungen - Hiermit wird Ihre App {0} Mal pro Tag gesichert. + Hiermit wird Ihre App {0}-mal pro Tag gesichert. + + + Traffic Manager + + + Verbessern Sie Leistung und Verfügbarkeit, indem Sie Datenverkehr zwischen mehreren Instanzen Ihrer App routen. Einzelnes Mandantensystem @@ -3176,10 +3191,10 @@ Legen Sie die Einstellung auf "Externe URL" fest, um eine API-Definition zu verw {0} Kerne - A-Series compute + A-Serie – Compute - Dv2-Series compute + Dv2-Serie – Compute "proxies.json" ist ungültig. Fehler: {0}. @@ -3212,7 +3227,7 @@ Legen Sie die Einstellung auf "Externe URL" fest, um eine API-Definition zu verw Application Insights-Instanz - ERFOLGREICH + Success Dauer (ms) @@ -3223,6 +3238,9 @@ Legen Sie die Einstellung auf "Externe URL" fest, um eine API-Definition zu verw Anzahl von Fehlern in den letzten 30 Tagen + + Die Abfrage gab {0} Elemente zurück. + Meldung @@ -3239,7 +3257,7 @@ Legen Sie die Einstellung auf "Externe URL" fest, um eine API-Definition zu verw Hiermit wird VSTS als Buildserver verwendet. Für einen vollständigen Releaseverwaltungsworkflow können Sie die erweiterten Optionen nutzen. - Auf Server erstellen + App Service-Kudu-Buildserver Hiermit wird App Service als Buildserver verwendet. Die App Service-Kudu-Engine erstellt während der Bereitstellung ggf. automatisch Ihren Code, eine zusätzliche Konfiguration ist nicht erforderlich. @@ -3338,7 +3356,7 @@ Legen Sie die Einstellung auf "Externe URL" fest, um eine API-Definition zu verw Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. - Not Authorized + Nicht autorisiert Fehler beim Abrufen der Hostinformationen. @@ -3347,19 +3365,22 @@ Legen Sie die Einstellung auf "Externe URL" fest, um eine API-Definition zu verw Application Insights zum Erfassen von Aufrufprotokollen konfigurieren - Azure Functions now supports Application Insights as the preferred monitoring solution for apps under construction and in production. App Insights offers powerful analytics, notifications, and visualizations of your log data, as well as higher overall reliability at scale. + Azure Functions unterstützt ab sofort Application Insights als bevorzugte Überwachungslösung für Apps in der Entwicklung und Produktion. App Insights bietet leistungsstarke Analysen, Benachrichtigungen und Visualisierungen für Ihre Protokolldaten sowie eine höhere Gesamtzuverlässigkeit. Zur klassischen Ansicht wechseln + + Konfigurationsanweisungen + Konfigurieren - Invocation traces + Aufrufablaufverfolgungen - Results delayed up to 5 minutes. + Ergebnisse können bis zu fünf Minuten verzögert sein. Ziehen Sie eine Datei hierher, oder @@ -3386,9 +3407,84 @@ Legen Sie die Einstellung auf "Externe URL" fest, um eine API-Definition zu verw Überprüfung wird durchgeführt... - You do not have permissions to create a Build Definition or a Release definition on this project. Contact your project administrator + Sie haben keine Berechtigungen zum Erstellen einer Build- oder Releasedefinition für dieses Projekt. Wenden Sie sich an Ihren Projektadministrator. - The account name supplied is not valid. Please supply another account name. + Der angegebene Kontoname ist ungültig. Geben Sie einen anderen Kontonamen an. + + + FTP und FTPS + + + Nur FTPS + + + Deaktivieren + + + Dismiss + + + Anzeigen + + + Ausblenden + + + Ihr Kennwort und das Bestätigungskennwort stimmen nicht überein. + + + Dashboard + + + Verwenden Sie eine FTP-Verbindung, um auf App-Dateien zuzugreifen und sie zu kopieren. + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + Benutzeranmeldeinformationen + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + App-Anmeldeinformationen + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + Benutzername + + + Kennwort + + + Kennwort bestätigen + + + FTPS-Endpunkt + + + Anmeldeinformationen + + + Ausstehend + + + Fehler + + + Erfolgreich + + + Anmeldeinformationen speichern + + + Anmeldeinformationen zurücksetzen + + + HTTP Version \ No newline at end of file diff --git a/server/Resources/es-ES/Server/Resources/Resources.resx b/server/Resources/es-ES/Server/Resources/Resources.resx index 12aa59d15a..52ccee45c0 100644 --- a/server/Resources/es-ES/Server/Resources/Resources.resx +++ b/server/Resources/es-ES/Server/Resources/Resources.resx @@ -860,7 +860,7 @@ Cargar - See additional options + Ver opciones adicionales Ver solo las opciones recomendadas @@ -1577,7 +1577,7 @@ Use Autenticación o autorización para proteger la aplicación y trabajar con datos por usuario. - Identidad de servicio administrada + Identidad de servicio administrada (versión preliminar) La aplicación puede comunicarse con otros servicios de Azure como ella misma con una identidad de Azure Active Directory administrada. @@ -1666,6 +1666,12 @@ Administración de recursos + + Diagnosticar y solucionar problemas + + + La experiencia de diagnóstico y solución de problemas de autoservicio le ayuda a identificar y a resolver problemas con la aplicación. + Herramientas avanzadas (Kudu) @@ -2057,13 +2063,13 @@ Elija "URL externa" para usar una definición de API hospedada en otro lugar.La aplicación está actualmente en modo de solo lectura porque ha establecido el modo de edición en solo lectura. Para cambiar el modo de edición, visite - La aplicación está actualmente en modo de lectura y escritura porque ha establecido el modo de edición en lectura y escritura a pesar de tener el control de código fuente habilitado. Los cambios que haga pueden sobrescribirse con su próxima implementación. Para cambiar el modo de edición, visite + La aplicación está actualmente en modo de lectura y escritura porque estableció el modo de edición en lectura y escritura a pesar de tener el control de código fuente habilitado. Los cambios que haga podrían sobrescribirse con su próxima implementación. Para cambiar el modo de edición, visite La aplicación se encuentra actualmente en modo de solo lectura porque se ha publicado un archivo function.json generado. El entorno en tiempo de ejecución de Functions no respetará los cambios realizados en function.json. - La aplicación está actualmente en modo de lectura/escritura porque se ha establecido el modo de edición en lectura/escritura a pesar de haber generado un archivo function.json. No se tendrán en cuenta los cambios realizados en function.json por el tiempo de ejecución de Functions. + La aplicación está actualmente en modo de lectura y escritura porque estableció el modo de edición en lectura y escritura a pesar de haber generado un archivo function.json. Functions Runtime no tendrá en cuenta los cambios realizados en function.json. Copiar @@ -2648,7 +2654,7 @@ Elija "URL externa" para usar una definición de API hospedada en otro lugar.Esta plantilla requiere las extensiones siguientes. - Si instala dependencias de plantilla, podrá crear una función una vez terminado este proceso. La instalación de dependencias se realiza en segundo plano y puede tardar hasta 10 minutos. Durante este tiempo, puede seguir usando el portal. + Si instala dependencias de plantilla, podrá crear una función una vez terminado este proceso. La instalación de dependencias se realiza en segundo plano y puede tardar hasta 2 minutos. Durante este tiempo, puede cerrar esta hoja y seguir usando el portal. No se puede instalar la extensión en tiempo de ejecución. Identificador de instalación {{installationId}} @@ -2948,7 +2954,7 @@ Elija "URL externa" para usar una definición de API hospedada en otro lugar.Implementa desde un repositorio GIT local. - Configura la integración continua en una carpeta de Dropbox. + Sincroniza el contenido de una carpeta en la nube de Dropbox. Durable Functions @@ -3068,10 +3074,10 @@ Elija "URL externa" para usar una definición de API hospedada en otro lugar.Los planes de tarifa aislados en una instancia de App Service Environment (ASE) no están disponibles para su configuración. ASE es una oferta de características eficaces de Azure App Service que proporciona aislamiento de red y funcionalidades de escalado mejoradas. - Los planes de tarifa de desarrollo y pruebas solo están disponibles para los planes que no están hospedados en un entorno de App Service. + Los planes de tarifa de desarrollo y pruebas no están disponibles para su configuración y solo están disponibles para los planes que no están hospedados en un entorno de App Service. - Los planes de tarifa de producción solo están disponibles para los planes que no están hospedados en un entorno de App Service. + Los planes de tarifa de producción no están disponibles para su configuración y están solo disponibles para los planes que no están hospedados en un entorno de App Service. No se admite Premium V2 para esta unidad de escalado. Considere la posibilidad de volver a implementar la aplicación o de clonarla. @@ -3079,6 +3085,9 @@ Elija "URL externa" para usar una definición de API hospedada en otro lugar. Escalar verticalmente + + Gratis + {0} {1}/hora (estimado) @@ -3146,7 +3155,13 @@ Elija "URL externa" para usar una definición de API hospedada en otro lugar.Copias de seguridad diarias - Realiza una copia de seguridad de la aplicación {0} cada día. + Permite realizar una copia de seguridad de la aplicación {0} veces al día. + + + Administrador de tráfico + + + Para mejorar el rendimiento y la disponibilidad, enrute el tráfico entre varias instancias de la aplicación. Sistema de inquilino único @@ -3212,7 +3227,7 @@ Elija "URL externa" para usar una definición de API hospedada en otro lugar.Instancia de Application Insights - CORRECTO + Success Duración (ms) @@ -3223,6 +3238,9 @@ Elija "URL externa" para usar una definición de API hospedada en otro lugar. Recuento de errores en los últimos 30 días + + La consulta devolvió {0} elementos + Mensaje @@ -3239,7 +3257,7 @@ Elija "URL externa" para usar una definición de API hospedada en otro lugar.Use VSTS como servidor de compilación. Puede elegir aprovechar las opciones avanzadas de un flujo de trabajo completo de administración de versiones. - Compilar en el servidor + Servidor de compilación de Kudu para App Service Use App Service como servidor de compilación. El motor de Kudu de App Service compilará automáticamente el código durante la implementación cuando corresponda sin necesidad de ninguna configuración adicional. @@ -3352,6 +3370,9 @@ Elija "URL externa" para usar una definición de API hospedada en otro lugar. Cambiar a la vista clásica + + Instrucciones de configuración + Configurar @@ -3359,7 +3380,7 @@ Elija "URL externa" para usar una definición de API hospedada en otro lugar.Seguimientos de invocación - Los resultados se retrasaron hasta 5 minutos. + Los resultados se pueden retrasar hasta 5 minutos. Arrastrar un archivo aquí o @@ -3391,4 +3412,79 @@ Elija "URL externa" para usar una definición de API hospedada en otro lugar. El nombre de cuenta especificado no es válido. Proporcione otro. + + FTP + FTPS + + + Solo FTPS + + + Deshabilitar + + + Descartar + + + Mostrar + + + Ocultar + + + Your password and confirmation password do not match. + + + Panel + + + Use an FTP connection to access and copy app files. + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + Credenciales de usuario + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + App Credentials + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + Nombre de usuario + + + Contraseña + + + Confirmar contraseña + + + FTPS Endpoint + + + Credenciales + + + Pendiente + + + Error + + + Succcess + + + Save Credentials + + + Reset Credentials + + + HTTP Version + \ No newline at end of file diff --git a/server/Resources/fr-FR/Server/Resources/Resources.resx b/server/Resources/fr-FR/Server/Resources/Resources.resx index 63fbc2884f..d647120348 100644 --- a/server/Resources/fr-FR/Server/Resources/Resources.resx +++ b/server/Resources/fr-FR/Server/Resources/Resources.resx @@ -860,10 +860,10 @@ Charger - See additional options + Afficher d'autres options - See only recommended options + Afficher uniquement les options recommandées Une ou plusieurs applications de fonction sont liées à ce compte de stockage. Vous pouvez consulter toutes les applications de fonction liées au compte sous « fichiers » ou « Partages ». @@ -1577,7 +1577,7 @@ Utilisez Authentification/autorisation pour protéger votre application et utiliser les données par utilisateur. - Managed Service Identity + Identité du service managé (préversion) Votre application peut communiquer en son nom avec d'autres services Azure à l'aide d'une identité Azure Active Directory managée. @@ -1666,6 +1666,12 @@ Gestion des ressources + + Diagnostiquer et résoudre les problèmes + + + Nos outils de diagnostic et de résolution des problèmes en libre-service vous aident à identifier les problèmes liés à votre application et à les résoudre. + Outils avancés (Kudu) @@ -2057,13 +2063,13 @@ Choisissez « URL externe » pour utiliser une définition d'API hébergée ai Votre application est actuellement en mode lecture seule, car vous avez défini le mode d'édition en lecture seule. Pour changer le mode d'édition, visitez - Votre application est actuellement en mode lecture\écriture, car vous avez défini le mode d'édition en lecture\écriture (bien que la gestion de code source soit activée). Tout changement risque d'être remplacé par votre prochain déploiement. Pour changer le mode d'édition, visitez + Votre application est actuellement en mode lecture/écriture, car vous avez défini le mode d'édition en lecture/écriture (bien que le contrôle de code source soit activé). Tout changement risque d'être remplacé par votre prochain déploiement. Pour changer le mode d'édition, visitez Votre application est actuellement en lecture seule, car vous avez publié du code function.json généré. Les modifications apportées à function.json ne sont pas honorées par le runtime Functions. - Votre application est actuellement en mode lecture\écriture, car vous avez défini le mode d'édition en lecture\écriture même si un fichier function.json a été généré. Aucun changement apporté à function.json ne sera honoré par le runtime Functions. + Votre application est actuellement en mode lecture/écriture, car vous avez défini le mode d'édition en lecture/écriture même si un fichier function.json a été généré. Aucun changement apporté à function.json ne sera honoré par le runtime Functions. Copier @@ -2201,7 +2207,7 @@ Choisissez « URL externe » pour utiliser une définition d'API hébergée ai Pour bénéficier d'une expérience de monitoring plus complète, notamment des métriques en temps réel et des requêtes personnalisées : - configure Application Insights for your function app + configurer Application Insights pour votre application de fonction Cette valeur sera ajoutée à l'URL de votre application web principale et servira d'adresse publique de l'emplacement. Par exemple, si votre application web s'appelle « contoso » et que votre emplacement s'appelle « staging », le nouvel emplacement aura une URL similaire à « http://contoso-staging.azurewebsites.net ». @@ -2648,7 +2654,7 @@ Choisissez « URL externe » pour utiliser une définition d'API hébergée ai Ce modèle nécessite les extensions suivantes. - Installation des dépendances de modèle en cours, vous pourrez créer une fonction une fois l'installation terminée. L'installation de dépendances se produit en arrière-plan et peut prendre jusqu'à 10 minutes. Vous pouvez continuer à utiliser le portail pendant ce temps. + Une fois que vous avez installé les dépendances du modèle, vous pouvez créer une fonction. L'installation de dépendance se produit en arrière-plan et peut prendre jusqu'à 2 minutes. Vous pouvez fermer ce panneau et continuer à utiliser le portail pendant ce temps. Impossible d'installer l'extension de runtime. ID d'installation {{installationId}} @@ -2948,7 +2954,7 @@ Choisissez « URL externe » pour utiliser une définition d'API hébergée ai Déploie à partir d'un dépôt Git local. - Configure l'intégration continue avec un dossier Dropbox + Synchronisez du contenu à partir d'un dossier cloud Dropbox. Fonctions durables @@ -2990,7 +2996,7 @@ Choisissez « URL externe » pour utiliser une définition d'API hébergée ai Niveaux tarifaires recommandés - Additional pricing tiers + Autres niveaux tarifaires Votre abonnement n'autorise pas ce niveau tarifaire @@ -3035,10 +3041,10 @@ Choisissez « URL externe » pour utiliser une définition d'API hébergée ai Le plan '{0}' a été mis à jour ! - Successfully submitted job to scale the plan '{0}'. + Le travail pour mettre à l'échelle l'offre « {0} » a été soumis correctement. - A scale operation is currently in progress for the plan '{0}'. Please wait for the operation to complete before scaling again. + Une opération de mise à l'échelle est actuellement en cours d'exécution pour l'offre « {0} ». Attendez que l'opération se termine avant d'effectuer une nouvelle mise à l'échelle. Échec de mise à jour du plan '{0}' @@ -3065,13 +3071,13 @@ Choisissez « URL externe » pour utiliser une définition d'API hébergée ai Les conteneurs Windows bénéficient d'une remise de 50 % pendant la préversion. - Isolated pricing tiers within an App Service Environment (ASE) are not available for your configuration. An ASE is a powerful feature offering of Azure App Service that gives network isolation and improved scale capabilities. + Les niveaux tarifaires Isolé dans un environnement App Service ne sont pas disponibles pour votre configuration. L'environnement App Service est intégré à Azure App Service et offre de puissantes fonctionnalités, comme l'isolement réseau et des fonctionnalités d'échelle améliorées. - Dev / Test pricing tiers are only available to plans that are not hosted within an App Service environment. + Les niveaux tarifaires Dev/Test ne sont pas disponibles pour votre configuration et ils sont disponibles uniquement pour les offres qui ne sont pas hébergées dans un environnement App Service. - Production pricing tiers are only available to plans that are not hosted within an App Service environment. + Les niveaux tarifaires Production ne sont pas disponibles pour votre configuration et sont disponibles uniquement pour les offres qui ne sont pas hébergées dans un environnement App Service. Premium V2 n'est pas pris en charge pour cette unité d'échelle. Redéployez ou clonez l'application. @@ -3079,6 +3085,9 @@ Choisissez « URL externe » pour utiliser une définition d'API hébergée ai Mettre à l'échelle vers le haut + + Gratuit + {0} {1}/heure (estimation) @@ -3089,34 +3098,34 @@ Choisissez « URL externe » pour utiliser une définition d'API hébergée ai Mettre à jour le plan App Service - Shared insfrastructure + Infrastructure partagée - Shared compute resources used to run applications deployed in the App Service Plan. + Ressources de calcul partagées utilisées pour exécuter des applications déployées dans l'offre App Service. - Dedicated A-series compute resources used to run applications deployed in the App Service Plan. + Ressources de calcul Série A dédiées utilisées pour exécuter des applications déployées dans l'offre App Service. - Dedicated Dv2-series compute resources used to run applications deployed in the App Service Plan. + Ressources de calcul Série Dv2 dédiées utilisées pour exécuter des applications déployées dans l'offre App Service. - Memory available to run applications deployed and running in the App Service plan. + Mémoire disponible pour exécuter des applications déployées et exécutées dans l'offre App Service. - Memory per instance available to run applications deployed and running in the App Service plan. + Mémoire par instance disponible pour exécuter des applications déployées et exécutées dans l'offre App Service. - {0} disk storage shared by all apps deployed in the App Service plan. + {0} stockage sur disque partagé par toutes les applications déployées dans l'offre App Service. Domaines personnalisés/SSL - Configure and purchase custom domains with SNI SSL bindings + Configurer et acheter des domaines personnalisés avec des liaisons SNI SSL - Configure and purchase custom domains with SNI and IP SSL bindings + Configurer et acheter des domaines personnalisés avec des liaisons SNI et IP SSL Mise à l'échelle manuelle @@ -3125,61 +3134,67 @@ Choisissez « URL externe » pour utiliser une définition d'API hébergée ai Mise à l'échelle automatique - Scale to a large number of instances + Mettre à l’échelle pour obtenir un grand nombre d'instances - Up to 100 instances. More allowed upon request. + Jusqu'à 100 instances. Un nombre plus élevé est disponible à la demande. - Up to {0} instances. Subject to availability. + Jusqu'à {0} instances. Sous réserve de disponibilité. - Staging slots + Emplacements de préproduction - Up to {0} staging slots to use for testing and deployments before swapping them into production. + Jusqu'à {0} emplacements de préproduction à utiliser pour les tests et les déploiements avant le passage en production. - Daily backup + Sauvegarde quotidienne Sauvegardes quotidiennes - Backup your app {0} time daily. + Sauvegardez votre application {0} fois quotidiennement. + + + Traffic Manager + + + Améliorez les performances et la disponibilité en routant le trafic entre plusieurs instances de votre application. Système à un seul locataire - Take more control over the resources being used by your app. + Bénéficiez d'un contrôle accru des ressources utilisées par votre application. - Isolated network + Réseau isolé - Runs within your own virtual network. + S'exécute dans votre propre réseau virtuel. Accès privé à l'application - Using an App Service Environment with Internal Load Balancing (ILB). + Utilisation d'un environnement App Service avec équilibrage de charge interne. - {0} GB memory + {0} Go de mémoire - {0} minutes/day compute + Calcul pendant {0} minutes/jour - {0} cores + {0} cœurs - A-Series compute + Calcul Série A - Dv2-Series compute + Calcul Série Dv2 Le schéma proxies.json n'est pas valide. Erreur : '{0}'. @@ -3212,7 +3227,7 @@ Choisissez « URL externe » pour utiliser une définition d'API hébergée ai Instance Application Insights - Opération réussie + Success Durée (ms) @@ -3223,6 +3238,9 @@ Choisissez « URL externe » pour utiliser une définition d'API hébergée ai Nombre d'erreurs des 30 derniers jours + + La requête a retourné {0} éléments + Message @@ -3239,7 +3257,7 @@ Choisissez « URL externe » pour utiliser une définition d'API hébergée ai Utilisez VSTS comme serveur de builds. Vous pouvez choisir des options avancées pour configurer un flux de travail complet de gestion des mises en production. - Générer sur le serveur + Serveur de builds Kudu App Service Utilisez App Service comme serveur de builds. Le moteur App Service Kudu génère automatiquement votre code durant le déploiement, le cas échéant, sans aucune configuration supplémentaire. @@ -3338,7 +3356,7 @@ Choisissez « URL externe » pour utiliser une définition d'API hébergée ai Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. - Not Authorized + Non autorisé L'appel pour obtenir les informations de l'hôte a échoué. @@ -3347,19 +3365,22 @@ Choisissez « URL externe » pour utiliser une définition d'API hébergée ai Configurer Application Insights pour capturer les journaux d'invocations - Azure Functions now supports Application Insights as the preferred monitoring solution for apps under construction and in production. App Insights offers powerful analytics, notifications, and visualizations of your log data, as well as higher overall reliability at scale. + Azure Functions prend à présent en charge Application Insights en tant que solution de monitoring favorite pour les applications en cours de création et en production. Application Insights offre de puissantes fonctionnalités d'analytique, de notifications et de visualisations de vos données de journal, ainsi qu'une fiabilité globale supérieure à grande échelle. Passer en mode classique + + Instructions de configuration + Configurer - Invocation traces + Traces de l'appel - Results delayed up to 5 minutes. + Les résultats peuvent être retardés jusqu'à 5 minutes. Faites glisser un fichier ici ou @@ -3377,18 +3398,93 @@ Choisissez « URL externe » pour utiliser une définition d'API hébergée ai Affichez les métriques et les alertes de configuration. - FTP based deployment can be disabled or configured to accept FTP (plain text) or FTPS (secure) connections. Click to learn more. + Le déploiement FTP peut être désactivé ou configuré pour accepter les connexions FTP (texte brut) ou FTPS (sécurisées). Cliquez ici pour en savoir plus. - FTP access + Accès FTP Validation... - You do not have permissions to create a Build Definition or a Release definition on this project. Contact your project administrator + Vous n'avez pas les autorisations nécessaires pour créer une définition de build ou une définition de mise en production sur ce projet. Contactez l'administrateur du projet. - The account name supplied is not valid. Please supply another account name. + Le nom de compte fourni n'est pas valide. Indiquez un autre nom de compte. + + + FTP + FTPS + + + FTPS uniquement + + + Désactiver + + + Ignorer + + + Afficher + + + Masquer + + + Your password and confirmation password do not match. + + + Tableau de bord + + + Use an FTP connection to access and copy app files. + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + Informations d'identification de l'utilisateur + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + App Credentials + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + Nom d’utilisateur + + + Mot de passe + + + Confirmer le mot de passe + + + FTPS Endpoint + + + Informations d'identification + + + En attente + + + Échec + + + Succcess + + + Save Credentials + + + Reset Credentials + + + HTTP Version \ No newline at end of file diff --git a/server/Resources/hu-HU/Server/Resources/Resources.resx b/server/Resources/hu-HU/Server/Resources/Resources.resx index 4d1e132f8a..704d7eeb49 100644 --- a/server/Resources/hu-HU/Server/Resources/Resources.resx +++ b/server/Resources/hu-HU/Server/Resources/Resources.resx @@ -863,7 +863,7 @@ További lehetőségek megjelenítése - See only recommended options + Csak az ajánlott beállítások megtekintése Egy vagy több függvényalkalmazás ehhez a tárfiókhoz lett csatolva. Az összes, a fiókhoz csatolt függvényalkalmazás a Fájlok vagy a Megosztások szakaszban jelenik meg. @@ -1577,7 +1577,7 @@ Hitelesítéssel és engedélyezéssel biztosíthatja az alkalmazás védelmét, és használat felhasználónkénti adatokat. - Felügyeltszolgáltatás-identitás + Felügyeltszolgáltatás-identitás (előzetes verzió) Az alkalmazás egy Azure Active Directory-identitás használatával képes saját magaként kommunikálni más Azure-szolgáltatásokkal. @@ -1666,6 +1666,12 @@ Erőforrás-kezelés + + Problémák diagnosztizálása és megoldása + + + Önkiszolgáló diagnosztikai és hibaelhárítási eszközünk segítségével azonosíthatja és megoldhatja az alkalmazással kapcsolatos problémákat + Speciális eszközök (Kudu) @@ -2057,13 +2063,13 @@ Máshol tárolt API-definíció használatához a „Külső URL-cím” érték Az alkalmazás jelenleg írásvédett módban van, mivel írásvédettre állította a szerkesztési módot. A szerkesztési módot itt változtathatja meg: - Az alkalmazás jelenleg olvasási\írási módban van, mivel olvasási\írásira állította a szerkesztési módot annak ellenére, hogy engedélyezve van a verziókövetés. Az Ön által végrehajtott módosítások bármelyikét felülírhatja a következő üzemelő példány. A szerkesztési módot itt változtathatja meg: + Az alkalmazás jelenleg olvasási/írási módban van, mivel olvasási/írásira állította a szerkesztési módot annak ellenére, hogy engedélyezve van a verziókövetés. Az Ön által végrehajtott módosítások bármelyikét felülírhatja a következő üzemelő példány. A szerkesztési módot itt változtathatja meg: Az alkalmazás jelenleg írásvédett üzemmódban van, mert generált function.json fájlt tett közzé. A function.json fájlban végrehajtott módosítások a Functions-futtatókörnyezetben nem lesznek figyelembe véve. - Az alkalmazás azért van jelenleg olvasási\írási módban, mert az olvasás\írás értékre állította a szerkesztési módot annak ellenére, hogy generált function.json fájllal rendelkezik. A Functions-futtatókörnyezet nem fogja figyelembe venni a function.json módosításait. + Az alkalmazás azért van jelenleg olvasási/írási módban, mert az olvasás/írás értékre állította a szerkesztési módot annak ellenére, hogy generált function.json fájllal rendelkezik. A Functions-futtatókörnyezet nem fogja figyelembe venni a function.json módosításait. Másolás @@ -2648,7 +2654,7 @@ Máshol tárolt API-definíció használatához a „Külső URL-cím” érték A sablonhoz a következő bővítmények szükségesek. - A sablonfüggőségek telepítésekor, annak befejeztével létre tud majd hozni egy függvényt. A függőségek telepítése a háttérben történik és akár 10 percig is eltarthat. Ez idő alatt tovább használhatja a portált. + A sablonfüggőségek telepítésekor, annak befejeztével létre tud majd hozni egy függvényt. A függőségek telepítése a háttérben történik és akár 2 percig is eltarthat. Ez idő alatt bezárhatja ezt a panelt, és tovább használhatja a portált. Nem sikerült telepíteni a(z) {{installationId}} telepítési azonosítójú futtatókörnyezeti bővítményt @@ -2948,7 +2954,7 @@ Máshol tárolt API-definíció használatához a „Külső URL-cím” érték Üzembe helyezés egy helyi Git-adattárból. - Egy Dropbox-mappával való folyamatos integráció konfigurálása + Tartalom szinkronizálása egy felhőbeli Dropbox-mappából. Durable Functions @@ -3065,13 +3071,13 @@ Máshol tárolt API-definíció használatához a „Külső URL-cím” érték A Windows-tárolók előzetes verziójában a tárolók díjaiból 50%-os kedvezményt adunk. - Isolated pricing tiers within an App Service Environment (ASE) are not available for your configuration. An ASE is a powerful feature offering of Azure App Service that gives network isolation and improved scale capabilities. + Az App Service Environment (ASE) csomagbeli izolált díjcsomagok az Ön konfigurációja esetében nem érhetők el. Az ASE egy hatékony Azure App Service-funkció-ajánlat, amely hálózatizolálást és továbbfejlesztett skálázási funkciókat biztosít. - Dev / Test pricing tiers are only available to plans that are not hosted within an App Service environment. + A Dev/Test-tarifacsomagok az Ön konfigurációja esetében nem érhetők el, és csak a nem App Service-környezetben üzemeltetett csomagok esetében érhetők el. - Production pricing tiers are only available to plans that are not hosted within an App Service environment. + Az éles tarifacsomagok az Ön konfigurációja esetében nem érhetők el, és csak a nem App Service-környezetben üzemeltetett csomagok esetében érhetők el. Ez a skálázási egység nem támogatja a Premium V2-őt. Fontolja meg az alkalmazás újbóli üzembe helyezését vagy klónozását. @@ -3079,6 +3085,9 @@ Máshol tárolt API-definíció használatához a „Külső URL-cím” érték Felskálázás + + Ingyenes + {0} {1}/óra (becsült érték) @@ -3089,10 +3098,10 @@ Máshol tárolt API-definíció használatához a „Külső URL-cím” érték Frissítse az App Service-csomagot - Shared insfrastructure + Megosztott infrastruktúra - Shared compute resources used to run applications deployed in the App Service Plan. + Az App Service-csomagban üzembe helyezett alkalmazások futtatásához felhasznált megosztott számítási erőforrások. Az App Service-csomagban üzembe helyezett alkalmazások futtatásához használt dedikált A sorozatú számítási erőforrások. @@ -3101,22 +3110,22 @@ Máshol tárolt API-definíció használatához a „Külső URL-cím” érték Az App Service-csomagban üzembe helyezett alkalmazások futtatásához használt dedikált Dv2 sorozatú számítási erőforrások. - Memory available to run applications deployed and running in the App Service plan. + Az App Service-csomagban üzembe helyezett és működő alkalmazások futtatása számára rendelkezésre álló memória. - Memory per instance available to run applications deployed and running in the App Service plan. + Az App Service-csomagban üzembe helyezett és működő alkalmazások futtatása számára példányonként rendelkezésre álló memória. - {0} disk storage shared by all apps deployed in the App Service plan. + {0} megosztott lemezterület az App Service-csomagban üzembe helyezett összes alkalmazás számára. Egyéni tartományok/SSL - Configure and purchase custom domains with SNI SSL bindings + SNI SSL-kötésekkel rendelkező egyéni tartományok konfigurálása és megvásárlása - Configure and purchase custom domains with SNI and IP SSL bindings + SNI- és IP SSL-kötésekkel rendelkező egyéni tartományok konfigurálása és megvásárlása Manuális skálázás @@ -3125,55 +3134,61 @@ Máshol tárolt API-definíció használatához a „Külső URL-cím” érték Automatikus skálázás - Scale to a large number of instances + Nagy számú példány használatát biztosító skálázás - Up to 100 instances. More allowed upon request. + Legfeljebb 100 példány. A példányszám kérésre növelhető. - Up to {0} instances. Subject to availability. + Legfeljebb {0} példány, az elérhetőség függvényében. - Staging slots + Előkészítési pontok - Up to {0} staging slots to use for testing and deployments before swapping them into production. + Legfeljebb {0} előkészítési pont az éles üzem előtti teszteléshez és üzembe helyezéshez. - Daily backup + Napi biztonsági mentés Napi biztonsági mentések - Backup your app {0} time daily. + Az alkalmazás biztonsági mentése naponta {0} alkalommal. + + + Traffic Manager + + + Növelje a teljesítményt és javítsa az elérhetőséget az alkalmazáspéldányok közötti forgalom szabályozásával. Egybérlős rendszer - Take more control over the resources being used by your app. + Fokozott ellenőrzés az alkalmazás által használt erőforrások felett. - Isolated network + Izolált hálózat - Runs within your own virtual network. + A saját virtuális hálózaton belül fut. Privát alkalmazáselérés - Using an App Service Environment with Internal Load Balancing (ILB). + App Service Environment-környezet használata belső terheléselosztással (ILB). - {0} GB memory + {0} GB memória - {0} minutes/day compute + Napi {0} perc számítás - {0} cores + {0} mag A sorozatú számítási erőforrás @@ -3212,7 +3227,7 @@ Máshol tárolt API-definíció használatához a „Külső URL-cím” érték Application Insights-példány - Sikerült + Success Időtartam (ms) @@ -3223,6 +3238,9 @@ Máshol tárolt API-definíció használatához a „Külső URL-cím” érték Hibák száma az elmúlt 30 napban + + A lekérdezés {0} elemet adott vissza + Üzenet @@ -3239,7 +3257,7 @@ Máshol tárolt API-definíció használatához a „Külső URL-cím” érték A VSTS használata buildelési kiszolgálóként. Ha ezt a lehetőséget választja, a speciális beállítások révén egy teljes körű kiadáskezelési munkafolyamat áll a rendlkezésére. - Buildelés a kiszolgálón + App Service Kudu-buildelési kiszolgáló Az App Service használata buildelési kiszolgálóként. Az App Service Kudu-modulja, amikor szükséges, automatikusan, külön konfigurálás nélkül lefordítja az Ön programkódját az üzembe helyezés során. @@ -3338,7 +3356,7 @@ Máshol tárolt API-definíció használatához a „Külső URL-cím” érték Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. - Not Authorized + Nem engedélyezett A gazdagépadatok lekérésére irányuló hívás nem sikerült. @@ -3352,6 +3370,9 @@ Máshol tárolt API-definíció használatához a „Külső URL-cím” érték Váltás klasszikus nézetre + + Konfigurációs útmutatás + Konfigurálás @@ -3377,18 +3398,93 @@ Máshol tárolt API-definíció használatához a „Külső URL-cím” érték A metrikák és a telepítési értesítések megtekintése. - FTP based deployment can be disabled or configured to accept FTP (plain text) or FTPS (secure) connections. Click to learn more. + Az FTP-alapú üzembe helyezés letiltható, vagy beállítható az egyszerű szöveges FTP-kapcsolatok vagy a biztonságos FTPS-kapcsolatok fogadására. További információért kattintson ide. - FTP access + FTP-hozzáférés Érvényesítés... - You do not have permissions to create a Build Definition or a Release definition on this project. Contact your project administrator + Nem jogosult build- vagy kiadásdefiníció létrehozására ebben a projektben. Forduljon a projekt rendszergazdájához - The account name supplied is not valid. Please supply another account name. + A megadott fióknév érvénytelen. Adjon meg egy másik fióknevet. + + + FTP + FTPS + + + Csak FTPS + + + Letiltás + + + Elvetés + + + Megjelenítés + + + Elrejtés + + + Your password and confirmation password do not match. + + + Irányítópult + + + Use an FTP connection to access and copy app files. + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + User Credentials + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + App Credentials + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + Felhasználónév + + + Jelszó + + + Jelszó megerősítése + + + FTPS Endpoint + + + Hitelesítő adatok + + + Függőben + + + Sikertelen + + + Succcess + + + Save Credentials + + + Reset Credentials + + + HTTP Version \ No newline at end of file diff --git a/server/Resources/it-IT/Server/Resources/Resources.resx b/server/Resources/it-IT/Server/Resources/Resources.resx index b7a9b32636..d039be50de 100644 --- a/server/Resources/it-IT/Server/Resources/Resources.resx +++ b/server/Resources/it-IT/Server/Resources/Resources.resx @@ -1577,7 +1577,7 @@ Consente di usare la modalità Autenticazione/Autorizzazione per proteggere l'applicazione e di lavorare con i dati per utente. - Identità del servizio gestito + Identità del servizio gestita (anteprima) L'applicazione può comunicare con altri servizi di Azure come se stessa usando un'identità di Azure Active Directory gestita. @@ -1666,6 +1666,12 @@ Gestione risorse + + Diagnostica e risoluzione dei problemi + + + L'esperienza di diagnostica e risoluzione dei problemi in modalità self-service consente di identificare i problemi nell'app e di risolverli + Strumenti avanzati (Kudu) @@ -2057,13 +2063,13 @@ Impostare il valore su "URL esterno" per usare una definizione dell'API ospitata L'app è attualmente in modalità di sola lettura perché la modalità di modifica è stata impostata su sola lettura. Per cambiare la modalità di modifica, vedere - L'app è attualmente in modalità di lettura\scrittura perché la modalità di modifica è stata impostata su lettura\scrittura anche se è abilitato il controllo del codice sorgente. È possibile che le modifiche effettuate vengano sovrascritte alla distribuzione successiva. Per cambiare la modalità di modifica, visitare + L'app è attualmente in modalità di lettura/scrittura perché la modalità di modifica è stata impostata su lettura/scrittura anche se è abilitato il controllo del codice sorgente. È possibile che le modifiche effettuate vengano sovrascritte alla distribuzione successiva. Per cambiare la modalità di modifica, visitare L'app è attualmente in modalità di sola lettura perché è stato pubblicato un file function.json generato. Le modifiche apportate al file function.json non saranno considerate dal runtime di Funzioni di Azure. - L'app è attualmente in modalità di lettura\scrittura perché la modalità di modifica è stata impostata su lettura\scrittura nonostante sia stato generato un file function.json. Le modifiche apportate al file function.json non saranno considerate dal runtime di Funzioni di Azure. + L'app è attualmente in modalità di lettura/scrittura perché la modalità di modifica è stata impostata su lettura/scrittura nonostante sia stato generato un file function.json. Le modifiche apportate al file function.json non saranno considerate dal runtime di Funzioni di Azure. Copia @@ -2648,7 +2654,7 @@ Impostare il valore su "URL esterno" per usare una definizione dell'API ospitata Questo modello richiede le estensioni seguenti. - Installando le dipendenze del modello, al termine dell'operazione sarà possibile creare una funzione. L'installazione delle dipendenze viene eseguita in background e può impiegare fino a 10 minuti. Durante questo periodo sarà comunque possibile usare il portale. + Installando le dipendenze del modello, al termine dell'operazione sarà possibile creare una funzione. L'installazione delle dipendenze viene eseguita in background e può impiegare fino a 2 minuti. Durante questo periodo è possibile chiudere il pannello e continuare a usare il portale. Non è possibile installare l'estensione di runtime. ID installazione: {{installationId}} @@ -2948,7 +2954,7 @@ Impostare il valore su "URL esterno" per usare una definizione dell'API ospitata Consente di eseguire la distribuzione da un repository Git locale. - Consente di configurare l'integrazione continua con una cartella Dropbox + Consente di sincronizzare il contenuto da una cartella nel cloud Dropbox. Funzioni durevoli @@ -3068,10 +3074,10 @@ Impostare il valore su "URL esterno" per usare una definizione dell'API ospitata I piani tariffari isolati all'interno di un ambiente del servizio app non sono disponibili per la configurazione corrente. Un ambiente del servizio app è una funzionalità potente del Servizio app di Azure che offre isolamento di rete e scalabilità migliorata. - I piani tariffari di sviluppo/test sono disponibili solo per i piani non ospitati all'interno di un ambiente del servizio app. + I piani tariffari di sviluppo/test non sono disponibili per la configurazione corrente, ma solo per i piani non ospitati all'interno di un ambiente del servizio app. - I piani tariffari di produzione sono disponibili solo per i piani non ospitati all'interno di un ambiente del servizio app. + I piani tariffari di produzione non sono disponibili per la configurazione corrente, ma solo per i piani non ospitati all'interno di un ambiente del servizio app. Lo SKU Premium V2 non è supportato per questa unità di scala. Provare a ridistribuire o a clonare l'app. @@ -3079,6 +3085,9 @@ Impostare il valore su "URL esterno" per usare una definizione dell'API ospitata Aumenta + + Gratuito + {0} {1}/ora (costo stimato) @@ -3146,7 +3155,13 @@ Impostare il valore su "URL esterno" per usare una definizione dell'API ospitata Backup giornalieri - Consente di eseguire il backup dell'app {0} volta al giorno. + Consente di eseguire il backup dell'app {0} volte al giorno. + + + Gestione traffico + + + Migliora le prestazioni e la disponibilità instradando il traffico tra più istanze dell'app. Sistema a tenant singolo @@ -3212,7 +3227,7 @@ Impostare il valore su "URL esterno" per usare una definizione dell'API ospitata Istanza di Application Insights - Operazione riuscita + Success Durata (ms) @@ -3223,6 +3238,9 @@ Impostare il valore su "URL esterno" per usare una definizione dell'API ospitata Numero di errori negli ultimi 30 giorni + + La query ha restituito {0} elementi + Messaggio @@ -3239,7 +3257,7 @@ Impostare il valore su "URL esterno" per usare una definizione dell'API ospitata Consente di usare VSTS come server di compilazione. È possibile scegliere di usare le ozioni avanzate per un flusso di lavoro di gestione del rilascio completo. - Compila nel server + Server di compilazione Kudu del servizio app Consente di usare il servizio app come server di compilazione. Il motore Kudu del servizio app compilerà automaticamente il codice durante la distribuzione, se possibile, senza richiedere ulteriori configurazioni. @@ -3352,6 +3370,9 @@ Impostare il valore su "URL esterno" per usare una definizione dell'API ospitata Passa alla visualizzazione classica + + Istruzioni di configurazione + Configura @@ -3359,7 +3380,7 @@ Impostare il valore su "URL esterno" per usare una definizione dell'API ospitata Analisi chiamata - Risultati ritardati di un massimo di 5 minuti. + I risultati potrebbero essere ritardati fino a 5 minuti. Trascinare un file qui oppure @@ -3391,4 +3412,79 @@ Impostare il valore su "URL esterno" per usare una definizione dell'API ospitata Il nome dell'account specificato non è valido. Specificarne un altro. + + FTP e FTPS + + + Solo FTPS + + + Disabilita + + + Dismiss + + + Mostra + + + Nascondi + + + La password e la password di conferma non corrispondono. + + + Dashboard + + + Usare una connessione FTP per l'accesso e la copia dei file dell'app. + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + Credenziali utente + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + Credenziali dell'app + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + Nome utente + + + Password + + + Conferma password + + + Endpoint FTPS + + + Credenziali + + + In sospeso + + + Operazione non riuscita + + + Operazione riuscita + + + Salva credenziali + + + Reimposta credenziali + + + HTTP Version + \ No newline at end of file diff --git a/server/Resources/ja-JP/Server/Resources/Resources.resx b/server/Resources/ja-JP/Server/Resources/Resources.resx index 18969daabb..91633ebc9c 100644 --- a/server/Resources/ja-JP/Server/Resources/Resources.resx +++ b/server/Resources/ja-JP/Server/Resources/Resources.resx @@ -1466,7 +1466,7 @@ 常にオンにするには、Basic 以上の App Service プランが必要です - マネージ パイプライン バージョン + マネージド パイプライン バージョン 自動スワップの送信先を運用スロットから構成することはできません @@ -1577,10 +1577,10 @@ アプリケーションを保護してユーザーごとのデータを取り扱うには、認証/承認を使用します。 - 管理対象サービス ID + マネージド サービス ID (プレビュー) - アプリケーションが、管理されている Azure Active Directory ID を使って自ら他の Azure サービスと通信できます。 + アプリケーションが、マネージド Azure Active Directory ID を使って自ら他の Azure サービスと通信できます。 プッシュ通知 @@ -1666,6 +1666,12 @@ リソース管理 + + 問題の診断と解決 + + + セルフサービス診断とトラブルシューティングのエクスペリエンスは、アプリの問題を識別して解決するのに役立ちます + 高度なツール (Kudu) @@ -2057,13 +2063,13 @@ 編集モードが [読み取り専用] に設定されたため、アプリが現在 [読み取り専用] モードになっています。編集モードを変更するには、 - ソース管理が有効になっているにもかかわらず編集モードが [読み取り\書き込み] に設定されたため、アプリが現在 [読み取り\書き込み] モードになっています。今回の変更はいずれも、次回のデプロイで上書きされる可能性があります。編集モードを変更するには、 + ソース管理が有効になっているにもかかわらず編集モードが読み取り/書き込みに設定されたため、アプリが現在、読み取り/書き込みモードになっています。今回の変更はいずれも、次回のデプロイで上書きされる可能性があります。編集モードを変更するには、以下にアクセスしてください: 生成された function.json を公開しているため、アプリは現在読み取り専用モードになっています。function.json に加えられた変更は、Functions ランタイムでは受け入れられません。 - 生成された function.json があるにもかかわらず編集モードが [読み取り/書き込み] に設定されたため、アプリは現在 [読み取り/書き込み] モードです。function.json に対する変更は Functions ランタイムでは受け入れられません。 + 生成された function.json があるにもかかわらず編集モードが読み取り/書き込みに設定されたため、アプリは現在、読み取り/書き込みモードです。function.json に対する変更は Functions ランタイムでは受け入れられません。 コピー @@ -2345,7 +2351,7 @@ 新しいプロキシ - 上書きなし + オーバーライドなし 簡易 AAD の登録 @@ -2486,10 +2492,10 @@ 状態メッセージ - 要求の上書き + 要求のオーバーライド - 応答の上書き + 応答のオーバーライド 省略可能 @@ -2648,7 +2654,7 @@ このテンプレートには次の拡張機能が必要です。 - テンプレート依存関係をインストールするとき、インストール完了後に関数を作成できます。依存関係のインストールはバックグラウンドで発生し、最大 10 分かかる可能性があります。この間、ポータルは引き続き使用できます。 + テンプレート依存関係をインストールすると、インストール完了後に関数を作成できます。依存関係のインストールはバックグラウンドで発生し、最大 2 分かかる可能性があります。この間、このブレードを閉じて、ポータルを引き続き使用できます。 ランタイム拡張機能をインストールできません。インストール ID: {{installationId}} @@ -2948,7 +2954,7 @@ ローカル Git リポジトリからデプロイします。 - Dropbox フォルダーを使用して継続的インテグレーションを構成します + Dropbox クラウド フォルダーからコンテンツを同期します。 Durable Functions @@ -3068,10 +3074,10 @@ ご使用の構成では、App Service Environment (ASE) 内の Isolated 価格レベルは利用できません。ASE は Azure App Service で提供されている強力な機能で、ネットワーク分離と向上したスケーリング機能が備わっています。 - 開発/テスト環境の価格レベルは、App Service 環境でホストされていないプランだけで利用できます。 + お客様の構成では開発/テストの価格レベルを利用できません。これは、App Service 環境でホストされていないプランでしか利用できません。 - 運用環境の価格レベルは、App Service 環境でホストされていないプランだけで利用できます。 + お客様の構成では運用の価格レベルを利用できません。これは、App Service 環境でホストされていないプランでしか利用できません。 このスケール ユニットでは Premium V2 はサポートされていません。アプリの再デプロイまたは複製をご検討ください。 @@ -3079,6 +3085,9 @@ スケール アップ + + 無料 + {0} {1}/時間 (推定) @@ -3148,6 +3157,12 @@ アプリを毎日 {0} 回バックアップします。 + + Traffic Manager + + + アプリの複数のインスタンス間でトラフィックをルーティングすると、パフォーマンスと可用性が向上します。 + 単一のテナント システム @@ -3212,7 +3227,7 @@ Application Insights インスタンス - 成功 + Success 期間 (ミリ秒) @@ -3223,6 +3238,9 @@ 過去 30 日間のエラー数 + + クエリによって {0} 件の項目が返されました + メッセージ @@ -3239,7 +3257,7 @@ ビルド サーバーとして VSTS を使用します。完全なリリース管理ワークフローのために詳細オプションを活用できます。 - サーバーでビルド + App Service Kudu ビルド サーバー ビルド サーバーとして App Service を使用します。App Service Kudu エンジンによって、該当する場合にはデプロイ中に、追加構成を必要とせずにコードが自動的にビルドされます。 @@ -3352,6 +3370,9 @@ クラシック ビューに切り替えます + + 構成の説明 + 構成 @@ -3359,7 +3380,7 @@ 呼び出しのトレース - 結果まで最大 5 分の遅延があります。 + 結果は、最大で 5 分遅れる可能性があります。 ファイルをここ、または次にドラッグします: @@ -3391,4 +3412,79 @@ 指定したアカウント名が無効です。別のアカウント名を指定してください。 + + FTP + FTPS + + + FTPS のみ + + + 無効にする + + + 消去 + + + 表示 + + + 非表示 + + + Your password and confirmation password do not match. + + + ダッシュボード + + + Use an FTP connection to access and copy app files. + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + ユーザーの資格情報 + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + App Credentials + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + ユーザー名 + + + パスワード + + + パスワードの確認 + + + FTPS Endpoint + + + 資格情報 + + + 保留中 + + + 失敗 + + + Succcess + + + Save Credentials + + + Reset Credentials + + + HTTP Version + \ No newline at end of file diff --git a/server/Resources/ko-KR/Server/Resources/Resources.resx b/server/Resources/ko-KR/Server/Resources/Resources.resx index 7b73146eac..3ff43e8af2 100644 --- a/server/Resources/ko-KR/Server/Resources/Resources.resx +++ b/server/Resources/ko-KR/Server/Resources/Resources.resx @@ -860,10 +860,10 @@ 업로드 - See additional options + 추가 옵션 보기 - See only recommended options + 권장 옵션만 보기 하나 이상의 함수 앱이 이 저장소 계정에 연결되었습니다. 계정에 연결된 모든 함수 앱을 '파일' 또는 '공유' 아래에서 확인할 수 있습니다. @@ -1577,7 +1577,7 @@ 인증/권한 부여를 사용하여 응용 프로그램을 보호하고 사용자 단위 데이터로 작업합니다. - 관리 서비스 ID + 관리 서비스 ID(미리 보기) 응용 프로그램은 관리되는 Azure Active Directory ID를 사용하여 다른 Azure 서비스와 통신할 수 있습니다. @@ -1666,6 +1666,12 @@ 리소스 관리 + + 문제 진단 및 해결 + + + 셀프 서비스 진단 및 문제 해결 환경을 통해 앱의 문제를 식별하고 해결할 수 있습니다. + 고급 도구(Kudu) @@ -2057,13 +2063,13 @@ 편집 모드를 읽기 전용으로 설정했으므로 현재 앱은 읽기 전용 모드입니다. 편집 모드를 변경하려면 - 소스 제어를 사용하도록 설정했지만 편집 모드를 읽기\쓰기로 설정했으므로 현재 앱은 읽기\쓰기 모드입니다. 변경한 내용을 다음 배포 시 덮어쓸 수 있습니다. 편집 모드를 변경하려면 다음을 방문하세요. + 소스 제어를 사용하도록 설정했음에도 불구하고 편집 모드를 읽기/쓰기로 설정했으므로 현재 앱은 읽기/쓰기 모드입니다. 변경한 내용을 다음 배포 시 덮어쓸 수 있습니다. 편집 모드를 변경하려면 다음을 방문하세요. 생성된 function.json을 게시했기 때문에 현재 앱이 읽기 전용 모드입니다. function.json의 변경 내용이 함수 런타임에 적용되지 않습니다. - 생성된 function.json이 있지만 편집 모드를 읽기/쓰기로 설정했기 때문에 앱이 현재 읽기/쓰기 모드입니다. function.json에 대한 변경 내용은 Functions 런타임에 적용되지 않습니다. + 생성한 function.json이 있음에도 불구하고 편집 모드를 읽기/쓰기로 설정했으므로 앱이 현재 읽기/쓰기 모드입니다. function.json에 대한 변경 내용은 Functions 런타임에 적용되지 않습니다. 복사 @@ -2201,7 +2207,7 @@ 더 풍부한 모니터링 환경(라이브 메트릭 및 사용자 지정 쿼리 포함)을 사용하려면: - configure Application Insights for your function app + 함수 앱에 Application Insights 구성 이 값은 기본 웹 앱의 URL에 추가되며 슬롯의 공용 주소로 사용됩니다. 예를 들어 'contoso'라는 웹 앱과 'staging'이라는 슬롯이 있는 경우 새 슬롯은 'http://contoso-staging.azurewebsites.net'과 같은 URL을 갖게 됩니다. @@ -2648,7 +2654,7 @@ 이 템플릿에는 다음의 확장이 필요합니다. - 템플릿 종속성을 설치하는 중입니다. 템플릿 종속성이 설치되면 함수를 만들 수 있습니다. 종속성 설치는 배경에서 이루어지며 최대 10분이 걸립니다. 그동안 포털을 계속 사용할 수 있습니다. + 템플릿 종속성을 설치하는 중입니다. 템플릿 종속성이 설치되면 함수를 만들 수 있습니다. 종속성 설치는 백그라운드에서 이루어지며 최대 2분이 걸릴 수 있습니다. 그동안 이 블레이드를 닫고 포털을 계속 사용할 수 있습니다. 런타임 확장을 설치할 수 없습니다. 설치 ID: {{installationId}} @@ -2948,7 +2954,7 @@ 로컬 Git 리포지토리에서 배포합니다. - Dropbox 폴더를 사용하여 지속적인 통합을 구성합니다. + Dropbox 클라우드 폴더의 콘텐츠를 동기화합니다. 지속형 함수 @@ -2990,7 +2996,7 @@ 권장 가격 책정 계층 - Additional pricing tiers + 추가적인 가격 책정 계층 구독에서 이 가격 책정 계층을 허용하지 않습니다. @@ -3035,10 +3041,10 @@ '{0}' 계획을 업데이트했습니다! - Successfully submitted job to scale the plan '{0}'. + 계획 '{0}'의 크기를 조정하는 작업을 제출했습니다. - A scale operation is currently in progress for the plan '{0}'. Please wait for the operation to complete before scaling again. + 현재 계획 '{0}'의 크기 조정 작업을 진행 중입니다. 크기를 다시 조정하기 전에 작업이 완료될 때까지 잠시 기다려 주세요. '{0}' 계획을 업데이트하지 못했습니다. @@ -3065,13 +3071,13 @@ Windows 컨테이너는 미리 보기 중에는 50% 할인된 요금으로 청구됩니다. - Isolated pricing tiers within an App Service Environment (ASE) are not available for your configuration. An ASE is a powerful feature offering of Azure App Service that gives network isolation and improved scale capabilities. + ASE(App Service Environment) 내에서 격리된 가격 책정 계층은 구성에 사용할 수 없습니다. ASE는 네트워크 격리 및 개선된 규모 기능을 제공하는 Azure App Service의 강력한 기능 제공입니다. - Dev / Test pricing tiers are only available to plans that are not hosted within an App Service environment. + 개발/테스트 가격 책정 계층은 현재 구성에서 사용할 수 없고, App Service 환경 내에서 호스팅되지 않는 계획에서만 사용할 수 있습니다. - Production pricing tiers are only available to plans that are not hosted within an App Service environment. + 프로덕션 가격 책정 계층은 현재 구성에서 사용할 수 없고, App Service 환경 내에서 호스팅되지 않는 계획에서만 사용할 수 있습니다. Premium V2는 이 배율 단위에는 지원되지 않습니다. 앱 재배포 또는 복제를 고려하세요. @@ -3079,6 +3085,9 @@ 규모 확대 + + 무료 + {0} {1}/시간(예상) @@ -3089,34 +3098,34 @@ App Service 계획 업데이트 - Shared insfrastructure + 공유 인프라 - Shared compute resources used to run applications deployed in the App Service Plan. + App Service 계획에서 배포된 응용 프로그램을 실행하는 데 사용되는 공유 계산 리소스입니다. - Dedicated A-series compute resources used to run applications deployed in the App Service Plan. + App Service 계획에서 배포된 응용 프로그램을 실행하는 데 사용되는 전용 A-시리즈 계산 리소스입니다. - Dedicated Dv2-series compute resources used to run applications deployed in the App Service Plan. + App Service 계획에서 배포된 응용 프로그램을 실행하는 데 사용되는 전용 Dv2-시리즈 계산 리소스입니다. - Memory available to run applications deployed and running in the App Service plan. + App Service 계획에서 배포되고 실행되는 응용 프로그램을 실행할 메모리가 있습니다. - Memory per instance available to run applications deployed and running in the App Service plan. + App Service 계획에서 배포되고 실행되는 응용 프로그램을 실행할 인스턴스당 메모리가 있습니다. - {0} disk storage shared by all apps deployed in the App Service plan. + App Service 계획에 배포된 모든 앱이 공유하는 {0} 디스크 저장소입니다. 사용자 지정 도메인/SSL - Configure and purchase custom domains with SNI SSL bindings + SNI SSL이 바인딩된 사용자 지정 도메인 구성 및 구매 - Configure and purchase custom domains with SNI and IP SSL bindings + SNI 및 IP SSL이 바인딩된 사용자 지정 도메인 구성 및 구매 수동 크기 조정 @@ -3125,61 +3134,67 @@ 자동 크기 조정 - Scale to a large number of instances + 많은 수의 인스턴스로 크기 조정 - Up to 100 instances. More allowed upon request. + 최대 100개의 인스턴스입니다. 요청 시 더 많이 사용할 수 있습니다. - Up to {0} instances. Subject to availability. + 최대 {0}개의 인스턴스까지 가능합니다. 제공 여부는 변동될 수 있습니다. - Staging slots + 스테이징 슬롯 - Up to {0} staging slots to use for testing and deployments before swapping them into production. + 프로덕션 환경으로 바꾸기 전에 최대 {0}개의 스테이징 슬롯까지 테스트 및 배포에 사용 가능합니다. - Daily backup + 매일 백업 매일 백업 - Backup your app {0} time daily. + 앱을 매일 {0}회 백업합니다. + + + Traffic 관리자 + + + 앱의 여러 인스턴스 간에 트래픽을 라우팅하여 성능 및 가용성을 향상합니다. 단일 테넌트 시스템 - Take more control over the resources being used by your app. + 앱이 사용하는 리소스를 더 세밀하게 제어합니다. - Isolated network + 격리된 네트워크 - Runs within your own virtual network. + 자신의 가상 네트워크 내에서만 실행됩니다. 개인 앱 액세스 - Using an App Service Environment with Internal Load Balancing (ILB). + App Service Environment와 ILB(내부 부하 분산)를 사용합니다. - {0} GB memory + {0}GB 메모리 - {0} minutes/day compute + {0}분/일 계산 - {0} cores + {0}코어 - A-Series compute + A-시리즈 계산 - Dv2-Series compute + Dv2-시리즈 계산 proxies.json이 잘못되었습니다. 오류: '{0}'. @@ -3212,7 +3227,7 @@ Application Insights 인스턴스 - 성공 + Success 기간(ms) @@ -3223,6 +3238,9 @@ 지난 30일 동안의 오류 수 + + 쿼리에서 {0}개 항목을 반환함 + 메시지 @@ -3239,7 +3257,7 @@ VSTS를 빌드 서버로 사용합니다. 전체 릴리스 관리 워크플로에 대해 고급 옵션을 활용하도록 선택할 수 있습니다. - 서버에서 빌드 + App Service Kudu 빌드 서버 App Service를 빌드 서버로 사용합니다. App Service Kudu 엔진은 배포 중에 코드를 자동으로 빌드하며(해당하는 경우), 추가 구성이 필요하지 않습니다. @@ -3338,7 +3356,7 @@ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. - Not Authorized + 권한 없음 호스트 정보를 가져오기 위한 호출이 실패했습니다. @@ -3347,19 +3365,22 @@ 호출 로그를 캡처하도록 Application Insights 구성 - Azure Functions now supports Application Insights as the preferred monitoring solution for apps under construction and in production. App Insights offers powerful analytics, notifications, and visualizations of your log data, as well as higher overall reliability at scale. + 이제 Azure Functions는 구성 중인 앱 및 프로덕션 환경의 앱에 대한 기본 모니터링 솔루션으로 Application Insights를 지원합니다. App Insights는 강력한 분석, 알림 및 로그 데이터에 대한 시각화 기능뿐 아니라 확장 시 전반적으로 더 높은 안정성을 제공합니다. 클래식 보기로 전환 + + 지침 구성 + 구성 - Invocation traces + 호출 추적 - Results delayed up to 5 minutes. + 결과는 최대 5분까지 지연될 수 있습니다. 파일을 여기로 끌기 또는 @@ -3377,18 +3398,93 @@ 메트릭 및 설정 경고를 봅니다. - FTP based deployment can be disabled or configured to accept FTP (plain text) or FTPS (secure) connections. Click to learn more. + FTP 기반 배포를 사용하지 않거나 구성하여 FTP(일반 텍스트) 또는 FTPS(보안) 연결을 수락할 수 있습니다. 클릭하여 자세한 내용을 확인하세요. - FTP access + FTP 액세스 유효성을 검사하는 중... - You do not have permissions to create a Build Definition or a Release definition on this project. Contact your project administrator + 이 프로젝트에 대한 빌드 정의 또는 릴리스 정의를 만들 수 있는 권한이 없습니다. 프로젝트 관리자에게 문의하세요. - The account name supplied is not valid. Please supply another account name. + 제공된 계정 이름이 잘못되었습니다. 다른 계정 이름을 제공하세요. + + + FTP+FTPS + + + FTPS만 + + + 사용 안 함 + + + 해제 + + + 표시 + + + 숨기기 + + + 암호와 확인 암호가 일치하지 않습니다. + + + 대시보드 + + + FTP 연결을 사용하여 앱 파일에 액세스 및 복사합니다. + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + 사용자 자격 증명 + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + 앱 자격 증명 + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + 사용자 이름 + + + 암호 + + + 암호 확인 + + + FTPS 끝점 + + + 자격 증명 + + + 보류 중 + + + 실패 + + + 성공 + + + 자격 증명 저장 + + + 자격 증명 다시 설정 + + + HTTP Version \ No newline at end of file diff --git a/server/Resources/nl-NL/Server/Resources/Resources.resx b/server/Resources/nl-NL/Server/Resources/Resources.resx index 1a47682fa7..cfddcc43e1 100644 --- a/server/Resources/nl-NL/Server/Resources/Resources.resx +++ b/server/Resources/nl-NL/Server/Resources/Resources.resx @@ -1577,7 +1577,7 @@ Gebruik Verificatie/autorisatie om uw toepassing te beschermen en met individuele gebruikersgegevens te werken. - Beheerde service-identiteit + Beheerde service-identiteit (preview) Uw toepassing kan met een beheerde Azure Active Directory-id als zichzelf met andere Azure-services communiceren. @@ -1666,6 +1666,12 @@ Resourcebeheer + + Problemen vaststellen en oplossen + + + Met de selfservice-ervaring voor diagnose en probleemoplossing kunt u problemen met uw app identificeren en oplossen + Geavanceerde hulpmiddelen (Kudu) @@ -2057,13 +2063,13 @@ Geef de waarde Externe URL op om een API-definitie te gebruiken die ergens ander Uw app bevindt zich momenteel in de modus alleen-lezen omdat u de bewerkingsmodus hebt ingesteld op alleen-lezen. Voor het wijzigen van de bewerkingsmodus, gaat u naar - Uw app bevindt zich momenteel in de modus lezen\schrijven omdat u de bewerkingsmodus hebt ingesteld op lezen\schrijven ondanks dat bronbeheer is ingeschakeld. Wijzigingen die u hebt aangebracht kunnen worden overschreven bij de volgende implementatie. Voor het wijzigen van de bewerkingsmodus, gaat u naar + Uw app bevindt zich momenteel in de modus lezen/schrijven omdat u de bewerkingsmodus hebt ingesteld op lezen/schrijven ondanks dat bronbeheer is ingeschakeld. Wijzigingen die u hebt aangebracht kunnen worden overschreven bij de volgende implementatie. Voor het wijzigen van de bewerkingsmodus gaat u naar De app is momenteel in de modus alleen-lezen omdat u hebt gegenereerde function.json hebt gepubliceerd. Wijzigingen in de function.json worden niet verwerkt in de Functions-runtime. - Uw app bevindt zich momenteel in de modus lezen\schrijven omdat u de bewerkingsmodus hebt ingesteld op lezen\schrijven ondanks dat .json-functie is gegenereerd. Wijzigingen die u hebt aangebracht in de .json-functie worden niet gehonoreerd door de runtime van de functies. + Uw app bevindt zich momenteel in de modus lezen/schrijven omdat u de bewerkingsmodus hebt ingesteld op lezen/schrijven ondanks dat .json-functie is gegenereerd. Wijzigingen die u hebt aangebracht in de .json-functie, worden niet gehonoreerd door de runtime van de functies. Kopiëren @@ -2201,7 +2207,7 @@ Geef de waarde Externe URL op om een API-definitie te gebruiken die ergens ander Voor een uitgebreidere controle, waaronder live metrische gegevens en aangepaste query's: - configure Application Insights for your function app + Application Insights configureren voor uw functie-app Deze waarde wordt aan het eind van de URL van uw hoofdweb-app toegevoegd en dient als het publieke adres van de site. Als u bijvoorbeeld een web-app hebt met de naam 'contoso' en een site met de naam 'staging', krijgt de nieuwe site de URL 'http://contoso-staging.azurewebsites.net'. @@ -2648,7 +2654,7 @@ Geef de waarde Externe URL op om een API-definitie te gebruiken die ergens ander Voor dit sjabloon zijn de volgende extensies vereist. - Wanneer u sjabloonafhankelijkheden installeert, kunt u een functie maken wanneer dit voltooid is. Het installeren van afhankelijkheden wordt op de achtergrond uitgevoerd en kan tot tien minuten duren. U kunt tijdens deze bewerking de portal blijven gebruiken. + Wanneer u sjabloonafhankelijkheden installeert, kunt u een functie maken wanneer dit voltooid is. Het installeren van afhankelijkheden wordt op de achtergrond uitgevoerd en kan tot twee minuten duren. U kunt deze blade sluiten en tijdens deze bewerking de portal blijven gebruiken. De runtime-extensie kan niet worden geïnstalleerd. Installatie-id {{installationId}} @@ -2949,7 +2955,7 @@ Geef de waarde Externe URL op om een API-definitie te gebruiken die ergens ander Implementeren vanuit een lokale Git-opslagplaats. - Continue integratie configureren met een Dropbox-map. + De inhoud van een OneDrive-cloudmap synchroniseren. Duurzame functies @@ -3069,10 +3075,10 @@ Geef de waarde Externe URL op om een API-definitie te gebruiken die ergens ander Er zijn geen geïsoleerde categorieën binnen een App Service Environment (ASE) beschikbaar voor uw configuratie. Een ASE voorziet in een krachtig functieaanbod van Azure App Service dat netwerkisolatie en verbeterde schaalmogelijkheden biedt. - De prijscategorieën voor ontwikkelen/testen zijn alleen beschikbaar voor abonnementen die niet worden gehost in een App Service Environment. + De prijscategorieën voor ontwikkelen/testen zijn niet beschikbaar voor uw configuratie en zijn alleen beschikbaar voor abonnementen die niet worden gehost in een App Service Environment. - De prijscategorieën voor productie zijn alleen beschikbaar voor abonnementen die niet worden gehost in een App Service Environment. + De prijscategorieën voor productie zijn niet beschikbaar voor uw configuratie en zijn alleen beschikbaar voor abonnementen die niet worden gehost in een App Service Environment. Premium V2 wordt niet ondersteund voor deze schaaleenheid. U kunt de app het beste opnieuw implementeren of klonen. @@ -3080,6 +3086,9 @@ Geef de waarde Externe URL op om een API-definitie te gebruiken die ergens ander Omhoog schalen + + Gratis + {0} {1}/uur (schatting) @@ -3149,6 +3158,12 @@ Geef de waarde Externe URL op om een API-definitie te gebruiken die ergens ander Dagelijks {0} keer een back-up van uw app maken. + + Traffic manager + + + De prestaties en beschikbaarheid verbeteren door het routeren van verkeer tussen meerdere exemplaren van uw app. + Systeem met één tenant @@ -3213,7 +3228,7 @@ Geef de waarde Externe URL op om een API-definitie te gebruiken die ergens ander Application Insights-instantie - Voltooid + Success Duur (ms) @@ -3224,6 +3239,9 @@ Geef de waarde Externe URL op om een API-definitie te gebruiken die ergens ander Het aantal fouten in de afgelopen dertig dagen + + De query heeft {0} items geretourneerd + Bericht @@ -3240,7 +3258,7 @@ Geef de waarde Externe URL op om een API-definitie te gebruiken die ergens ander VSTS gebruiken als de build-server. U kunt profiteren van geavanceerde opties voor een volledige release management-werkstroom. - Bouwen op server + App Service Kudu maken server App Service gebruiken als de build-server. De engine voor het App Service Kudu bouwt automatisch uw code tijdens de implementatie indien van toepassing, zonder aanvullende configuratie vereist. @@ -3339,7 +3357,7 @@ Geef de waarde Externe URL op om een API-definitie te gebruiken die ergens ander Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. - Not Authorized + Niet gemachtigd De aanroep om hostgegevens op te halen is mislukt. @@ -3348,19 +3366,22 @@ Geef de waarde Externe URL op om een API-definitie te gebruiken die ergens ander Application Insights configureren voor het vastleggen van aanroeplogboeken - Azure Functions now supports Application Insights as the preferred monitoring solution for apps under construction and in production. App Insights offers powerful analytics, notifications, and visualizations of your log data, as well as higher overall reliability at scale. + Azure Functions ondersteunt nu Application Insights als de voorkeursoplossing voor bewaking voor apps onder constructie en in productie. App Insights biedt krachtige analyses, meldingen en visualisaties van uw logboekgegevens, evenals een grotere betrouwbaarheid op schaal. Overschakelen naar de klassieke weergave + + Configuratie-instructies + Configureren - Invocation traces + Aanroeptraceringen - Results delayed up to 5 minutes. + Resultaten kunnen maximaal 5 minuten worden uitgesteld. Een bestand hierheen slepen of @@ -3387,9 +3408,84 @@ Geef de waarde Externe URL op om een API-definitie te gebruiken die ergens ander Valideren... - You do not have permissions to create a Build Definition or a Release definition on this project. Contact your project administrator + U hebt geen machtigingen om een builddefinitie of een versiedefinitie te maken voor dit project. Neem contact op met de projectbeheerder - The account name supplied is not valid. Please supply another account name. + De opgegeven naam van het account is ongeldig. Geef een andere accountnaam op. + + + FTP- + FTPS + + + Alleen FTPS + + + Uitschakelen + + + Verwijderen + + + Weergeven + + + Verbergen + + + Uw wachtwoord en bevestigingswachtwoord komen niet overeen. + + + Dashboard + + + Gebruik een FTP-verbinding voor toegang tot en het kopiëren van app-bestanden. + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + Gebruikersreferenties + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + App-referenties + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + Gebruikersnaam + + + Wachtwoord + + + Wachtwoord bevestigen + + + FTPS-eindpunt + + + Referenties + + + In behandeling + + + Mislukt + + + Voltooid + + + Referenties opslaan + + + Referenties opnieuw instellen + + + HTTP Version \ No newline at end of file diff --git a/server/Resources/pl-PL/Server/Resources/Resources.resx b/server/Resources/pl-PL/Server/Resources/Resources.resx index e101bf1060..c8e3d83a53 100644 --- a/server/Resources/pl-PL/Server/Resources/Resources.resx +++ b/server/Resources/pl-PL/Server/Resources/Resources.resx @@ -1577,7 +1577,7 @@ Chroń aplikację i pracuj z danymi pojedynczych użytkowników dzięki uwierzytelnianiu/autoryzacji. - Tożsamość usługi zarządzanej + Tożsamość usługi zarządzanej (wersja zapoznawcza) Twoja aplikacja może komunikować się z innymi usługami platformy Azure w swoim imieniu, używając zarządzanej tożsamości usługi Azure Active Directory. @@ -1666,6 +1666,12 @@ Zarządzanie zasobami + + Diagnozowanie i rozwiązywanie problemów + + + Nasze samoobsługowe środowisko do diagnostyki i rozwiązywania problemów ułatwia identyfikowanie i rozwiązywanie problemów z Twoją aplikacją + Narzędzia zaawansowane (Kudu) @@ -2057,7 +2063,7 @@ Ustaw wartość „Zewnętrzny adres URL”, aby użyć definicji interfejsu API Twoja aplikacja jest obecnie w trybie tylko do odczytu, ponieważ tryb edycji został ustawiony na tylko do odczytu. Aby zmienić tryb edycji, odwiedź - Twoja aplikacja jest obecnie w trybie Odczyt\zapis, ponieważ masz ustawiony tryb edycji Odczyt\zapis mimo włączonej kontroli źródła. Wszelkie wprowadzone zmiany mogą zostać zastąpione kolejnym wdrożeniem. Aby zmienić tryb edycji, odwiedź + Twoja aplikacja jest obecnie w trybie odczytu/zapisu, ponieważ masz ustawiony tryb edycji odczyt/zapis mimo włączonej kontroli źródła. Wszelkie wprowadzone zmiany mogą zostać zastąpione kolejnym wdrożeniem. Aby zmienić tryb edycji, odwiedź Twoja aplikacja jest obecnie w trybie tylko do odczytu, ponieważ opublikowano wygenerowany plik function.json. Zmiany wprowadzone w pliku function.json nie będą uznawane przez środowisko uruchomieniowe usługi Functions. @@ -2648,7 +2654,7 @@ Ustaw wartość „Zewnętrzny adres URL”, aby użyć definicji interfejsu API Ten szablon wymaga następujących rozszerzeń. - Po zainstalowaniu zależności szablonu możliwe będzie utworzenie funkcji. Instalacja zależności przebiega w tle i może potrwać do 10 minut. W tym czasie możesz nadal korzystać z portalu. + Po zainstalowaniu zależności szablonu możliwe będzie utworzenie funkcji. Instalacja zależności przebiega w tle i może potrwać do 2 minut. W tym czasie możesz zamknąć ten blok i nadal korzystać z portalu. Nie możemy zainstalować rozszerzenia środowiska uruchomieniowego. Identyfikator instalacji: {{installationId}} @@ -2948,7 +2954,7 @@ Ustaw wartość „Zewnętrzny adres URL”, aby użyć definicji interfejsu API Wdróż z lokalnego repozytorium Git. - Skonfiguruj ciągłą integrację z folderem Dropbox. + Synchronizuj zawartość z folderu Dropbox w chmurze. Trwałe funkcje @@ -3068,10 +3074,10 @@ Ustaw wartość „Zewnętrzny adres URL”, aby użyć definicji interfejsu API Izolowane warstwy cenowe w środowisku App Service Environment (ASE) nie są dostępne dla danej konfiguracji. Środowisko ASE to zaawansowana oferta funkcji usługi Azure App Service zapewniająca izolację sieciową i ulepszone możliwości skalowania. - Deweloperskie lub testowe warstwy cenowe są dostępne tylko w przypadku planów, które nie są hostowane w środowisku usługi App Service. + Deweloperskie lub testowe warstwy cenowe nie są dostępne dla Twojej konfiguracji. Są one dostępne tylko w przypadku planów, które nie są hostowane w środowisku App Service Environment. - Produkcyjne warstwy cenowe są dostępne tylko w przypadku planów, które nie są hostowane w środowisku usługi App Service. + Produkcyjne warstwy cenowe nie są dostępne dla Twojej konfiguracji. Są one dostępne tylko w przypadku planów, które nie są hostowane w środowisku App Service Environment. Warstwa Premium V2 nie jest obsługiwana w przypadku tej jednostki skalowania. Rozważ ponowne wdrożenie lub sklonowanie aplikacji. @@ -3079,6 +3085,9 @@ Ustaw wartość „Zewnętrzny adres URL”, aby użyć definicji interfejsu API Skaluj w górę + + Bezpłatna + {0} {1}/godz. (szacowane) @@ -3146,7 +3155,13 @@ Ustaw wartość „Zewnętrzny adres URL”, aby użyć definicji interfejsu API Codzienne kopie zapasowe - Wykonuj kopię zapasową aplikacji {0} raz(y) dziennie. + Wykonuj kopię zapasową aplikacji {0} razy dziennie. + + + Menedżer ruchu + + + Zwiększ wydajność i dostępność, kierując ruch do wielu wystąpień aplikacji. System z jedną dzierżawą @@ -3212,7 +3227,7 @@ Ustaw wartość „Zewnętrzny adres URL”, aby użyć definicji interfejsu API Wystąpienie usługi Application Insights - Powodzenie + Success Czas trwania (ms) @@ -3223,6 +3238,9 @@ Ustaw wartość „Zewnętrzny adres URL”, aby użyć definicji interfejsu API Liczba błędów w ciągu ostatnich 30 dni + + Zapytanie zwróciło następującą liczbę elementów: {0} + Komunikat @@ -3239,7 +3257,7 @@ Ustaw wartość „Zewnętrzny adres URL”, aby użyć definicji interfejsu API Użyj usług VSTS jako serwera kompilacji. Możesz wykorzystać opcje zaawansowane na potrzeby przepływu pracy zarządzania pełnym wydaniem. - Kompilowanie na serwerze + Serwer kompilacji Kudu usługi App Service Użyj usługi App Service jako serwera kompilacji. Gdy będzie to stosowne, aparat Kudu usługi App Service automatycznie skompiluje kod podczas wdrażania bez konieczności dodatkowej konfiguracji. @@ -3352,6 +3370,9 @@ Ustaw wartość „Zewnętrzny adres URL”, aby użyć definicji interfejsu API Przełącz na widok klasyczny + + Instrukcje dotyczące konfiguracji + Konfiguruj @@ -3359,7 +3380,7 @@ Ustaw wartość „Zewnętrzny adres URL”, aby użyć definicji interfejsu API Ślady wywołania - Wyniki opóźnione maksymalnie o 5 minut. + Wyniki mogą być opóźnione maksymalnie o 5 minut. Przeciągnij plik tutaj lub @@ -3391,4 +3412,79 @@ Ustaw wartość „Zewnętrzny adres URL”, aby użyć definicji interfejsu API Podana nazwa konta jest nieprawidłowa. Podaj inną nazwę konta. + + FTP + FTPS + + + Tylko FTPS + + + Wyłącz + + + Odrzuć + + + Pokaż + + + Ukryj + + + Hasło i jego potwierdzenie są niezgodne. + + + Pulpit nawigacyjny + + + Użyj połączenia FTP, aby uzyskać dostęp do plików aplikacji i je kopiować. + + + Lorę ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + Poświadczenia użytkownika + + + Lorę ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + Poświadczenia aplikacji + + + Lorę ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + Nazwa użytkownika + + + Hasło + + + Potwierdź hasło + + + Punkt końcowy FTPS + + + Poświadczenia + + + Oczekiwanie + + + Niepowodzenie + + + Powodzenie + + + Zapisz poświadczenia + + + Resetuj poświadczenia + + + HTTP Version + \ No newline at end of file diff --git a/server/Resources/pt-BR/Server/Resources/Resources.resx b/server/Resources/pt-BR/Server/Resources/Resources.resx index 0e746a6564..6f5022df8c 100644 --- a/server/Resources/pt-BR/Server/Resources/Resources.resx +++ b/server/Resources/pt-BR/Server/Resources/Resources.resx @@ -1577,7 +1577,7 @@ Use a Autenticação/Autorização para proteger seu aplicativo e trabalhar com dados por usuário. - Identidade de serviço gerenciada + Identidade de serviço gerenciado (Versão Prévia) Seu aplicativo pode se comunicar com outros serviços do Azure usando uma identidade gerenciada do Azure Active Directory. @@ -1666,6 +1666,12 @@ Gerenciamento de recursos + + Diagnosticar e resolver problemas + + + O diagnóstico de autoatendimento e a experiência de solução de problemas ajudam a identificar e resolver problemas com o seu aplicativo + Ferramentas avançadas (Kudu) @@ -2057,13 +2063,13 @@ Defina como "URL Externa" para usar uma definição de API hospedada em outro lo Atualmente, seu aplicativo está no modo somente leitura porque você definiu o modo de edição como somente leitura. Para alterar o modo de edição, visite - Atualmente, seu aplicativo está no modo leitura\gravação porque você definiu o modo de edição como leitura\gravação apesar de não ter o controle do código-fonte habilitado. Quaisquer alterações feitas podem ser substituídas em sua próxima implantação. Para alterar o modo de edição, visite + Atualmente, seu aplicativo está no modo leitura/gravação porque você definiu o modo de edição como leitura/gravação apesar de o controle do código-fonte estar habilitado. Quaisquer alterações feitas podem ser substituídas em sua próxima implantação. Para alterar o modo de edição, visite Atualmente, seu aplicativo está no modo somente leitura porque você publicou um function.json gerado. As alterações feitas em function.json não serão respeitadas pelo tempo de execução das Funções. - Seu aplicativo está atualmente no modo de leitura\gravação porque você definiu o modo de edição para leitura\gravação mesmo tendo um function.json gerado. As alterações feitas ao function.json não serão respeitadas pelo tempo de execução do Functions. + Seu aplicativo está atualmente no modo de leitura/gravação porque você definiu o modo de edição para leitura/gravação apesar de ter um function.json gerado. As alterações feitas ao function.json não serão respeitadas pelo tempo de execução do Functions. Copiar @@ -2648,7 +2654,7 @@ Defina como "URL Externa" para usar uma definição de API hospedada em outro lo Este modelo requer as seguintes extensões. - Com a instalação de dependências do modelo, você poderá criar uma função assim que isto for feito. A instalação da dependência ocorre em segundo plano e pode levar até 10 minutos. Você pode continuar a usar o portal durante esse período. + Com a instalação de dependências do modelo, você poderá criar uma função assim que isto for feito. A instalação da dependência ocorre em segundo plano e pode levar até 2 minutos. Você pode fechar essa folha e continuar a usar o portal durante esse período. Não foi possível instalar a extensão de tempo de execução. Instale a ID {{installationId}} @@ -2948,7 +2954,7 @@ Defina como "URL Externa" para usar uma definição de API hospedada em outro lo Implante a partir de um repositório Git local. - Configure a integração contínua com uma pasta do Dropbox + Sincronizar conteúdo de uma pasta de nuvem do Dropbox. Funções Duráveis @@ -3068,10 +3074,10 @@ Defina como "URL Externa" para usar uma definição de API hospedada em outro lo Os tipos de preço isolados dentro de um Ambiente do Serviço de Aplicativo (ASE) não estão disponíveis para sua configuração. Um ASE é uma oferta de recursos avançados do Serviço de Aplicativo do Azure que oferece isolamento de rede e melhores capacidades de dimensionamento. - Os tipos de preço de Desenvolvimento/Teste só estão disponíveis para os planos não hospedados em um ambiente de Serviço de Aplicativo. + Os tipos de preço de Desenvolvimento/Teste não estão disponíveis para sua configuração e somente estão disponíveis para os planos não hospedados em um ambiente de Serviço de Aplicativo. - Os tipos de preço de produção só estão disponíveis para os planos não hospedados em um ambiente de Serviço de Aplicativo. + Os tipos de preço de produção não estão disponíveis para sua configuração e somente estão disponíveis para os planos não hospedados em um ambiente de Serviço de Aplicativo. Não há suporte para a versão premium V2 para esta unidade de dimensionamento. Considere reimplantar ou clonar o aplicativo. @@ -3079,6 +3085,9 @@ Defina como "URL Externa" para usar uma definição de API hospedada em outro lo Escalar verticalmente + + Gratuito + {0} {1}/Hora (Estimado) @@ -3148,6 +3157,12 @@ Defina como "URL Externa" para usar uma definição de API hospedada em outro lo Faça backup de seu aplicativo {0} vezes diariamente. + + Gerenciador de tráfego + + + Melhore o desempenho e a disponibilidade ao encaminhar o tráfego entre várias instâncias do seu aplicativo. + Sistema único de locatário @@ -3212,7 +3227,7 @@ Defina como "URL Externa" para usar uma definição de API hospedada em outro lo Instância do Application Insights - Êxito + Success Duração (ms) @@ -3223,6 +3238,9 @@ Defina como "URL Externa" para usar uma definição de API hospedada em outro lo Contagem de erros nos últimos 30 dias + + A consulta retornou {0} itens + Mensagem @@ -3239,7 +3257,7 @@ Defina como "URL Externa" para usar uma definição de API hospedada em outro lo Use o VSTS como o servidor de compilação. Você pode optar por aproveitar as opções avançadas para um fluxo de trabalho de gerenciamento de versão completa. - Compilar no servidor + Servidor de build Kudu do Serviço de Aplicativo Use o Serviço de Aplicativo como o servidor de compilação. O mecanismo do Kudu do Serviço de Aplicativo compilará automaticamente seu código durante a implantação, quando aplicável, sem nenhuma configuração adicional necessária. @@ -3352,6 +3370,9 @@ Defina como "URL Externa" para usar uma definição de API hospedada em outro lo Mudar para o modo de exibição clássico + + Instruções de Configuração + Configurar @@ -3359,7 +3380,7 @@ Defina como "URL Externa" para usar uma definição de API hospedada em outro lo Rastreamentos de invocação - Resultados adiados em até 5 minutos. + Os resultados podem atrasar até 5 minutos. Arraste um arquivo aqui ou @@ -3391,4 +3412,79 @@ Defina como "URL Externa" para usar uma definição de API hospedada em outro lo O nome da conta fornecido não é válido. Forneça outro nome de conta. + + FTP + FTPS + + + Somente FTPS + + + Desabilitar + + + Dismiss + + + Mostrar + + + Ocultar + + + A senha e a senha de confirmação não correspondem. + + + Painel + + + Use uma conexão FTP para acessar e copiar arquivos de aplicativo. + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + Credenciais do Usuário + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + Credenciais do Aplicativo + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + Nome de usuário + + + Senha + + + Confirmar Senha + + + Ponto de Extremidade de FTPS + + + Credenciais + + + Pendente + + + Falha + + + Êxito + + + Salvar Credenciais + + + Redefinir Credenciais + + + HTTP Version + \ No newline at end of file diff --git a/server/Resources/pt-PT/Server/Resources/Resources.resx b/server/Resources/pt-PT/Server/Resources/Resources.resx index ce30bceeac..d86c48712f 100644 --- a/server/Resources/pt-PT/Server/Resources/Resources.resx +++ b/server/Resources/pt-PT/Server/Resources/Resources.resx @@ -860,10 +860,10 @@ Carregar - See additional options + Ver opções adicionais - See only recommended options + Ver apenas opções recomendadas Uma ou mais aplicações de função foram ligadas a esta conta de armazenamento. Pode visualizar todas as aplicações de função ligadas à conta em "ficheiros" ou "Partilhas". @@ -1577,7 +1577,7 @@ Utilize a Autenticação/Autorização para proteger a aplicação e o trabalho com dados por utilizador. - Identidade do serviço gerido + Identidade de serviço gerida (Pré-visualização) A aplicação pode comunicar com outros serviços do Azure em nome próprio utilizando uma identidade do Azure Active Directory gerida. @@ -1666,6 +1666,12 @@ Gestão de Recursos + + Diagnosticar e resolver problemas + + + Our self-service diagnostic and troubleshooting experience helps you to identify and resolve issues with your app + Ferramentas avançadas (Kudu) @@ -2057,13 +2063,13 @@ Defina para "URL Externo" para utilizar uma definição de API que está alojada A aplicação está atualmente no modo só de leitura porque definiu o modo de edição para só de leitura. Para alterar o modo de edição visite - A aplicação está atualmente no modo de leitura\escrita porque definiu o modo de edição para leitura\escrita mesmo tendo o controlo de origem ativado. Quaisquer alterações que efetue podem ser substituídas pela próxima implementação. Para alterar o modo de edição visite + Your app is currently in read/write mode because you've set the edit mode to read/write despite having source control enabled. Any changes you make may get overwritten with your next deployment. To change edit mode visit De momento, a sua aplicação está em modo só de leitura porque publicou um function.json gerado. As alterações realizadas a function.json não serão respeitadas pelo runtime das Funções. - A aplicação está atualmente em modo de leitura\escrita, dado que definiu o modo de edição para leitura\escrita apesar de ter um function.json gerado. As alterações efetuadas a function.json não serão efetuadas no tempo ed execução das Funções. + Your app is currently in read/write mode because you've set the edit mode to read/write despite having a generated function.json. Changes made to function.json will not be honored by the Functions runtime. Copiar @@ -2201,7 +2207,7 @@ Defina para "URL Externo" para utilizar uma definição de API que está alojada Para uma melhor experiência de monitorização, incluindo métricas dinâmicas e consultas personalizadas: - configure Application Insights for your function app + configurar o Application Insights para a sua aplicação de função Este valor será anexado ao URL da principal aplicação Web e funcionará como endereço público da ranhura. Por exemplo, se tiver uma aplicação Web com o nome "contoso" e uma ranhura denominada "testes", a nova ranhura terá um URL como o que se segue: "http://contoso-staging.azurewebsites.net". @@ -2648,7 +2654,7 @@ Defina para "URL Externo" para utilizar uma definição de API que está alojada Este modelo necessita as seguintes extensões. - Depois de instalar dependências de modelo, será possível criar uma função. A instalação de dependências acontece em segundo plano e pode demorar até 10 minutos. Pode continuar a utilizar o portal durante este período de tempo. + Installing template dependencies, you will be able to create a function once this is done. Dependency installation happens in the background and can take up to 2 minutes. You can close this blade and continue to use the portal during this time. Não foi possível instalar a extensão do runtime. Instale o id {{installationId}} @@ -2948,7 +2954,7 @@ Defina para "URL Externo" para utilizar uma definição de API que está alojada Implemente a partir de um repositório do Git local. - Configurar a integração contínua com uma pasta do Dropbox + Sincronize conteúdos de uma pasta de cloud do Dropbox. Funções Duráveis @@ -2990,7 +2996,7 @@ Defina para "URL Externo" para utilizar uma definição de API que está alojada Escalões de preço recomendados - Additional pricing tiers + Escalões de preço adicionais A sua subscrição não permite este escalão de preço @@ -3035,10 +3041,10 @@ Defina para "URL Externo" para utilizar uma definição de API que está alojada O plano "{0}" foi atualizado com êxito! - Successfully submitted job to scale the plan '{0}'. + Tarefa submetida com êxito para dimensionar o plano "{0}". - A scale operation is currently in progress for the plan '{0}'. Please wait for the operation to complete before scaling again. + Uma operação de dimensionamento está atualmente em curso para o plano "{0}". Aguarde até que a operação esteja concluída antes de dimensionar novamente. Falha ao atualizar o plano "{0}" @@ -3065,13 +3071,13 @@ Defina para "URL Externo" para utilizar uma definição de API que está alojada Os contentores do Windows são faturados com 50% de desconto durante a pré-visualização. - Isolated pricing tiers within an App Service Environment (ASE) are not available for your configuration. An ASE is a powerful feature offering of Azure App Service that gives network isolation and improved scale capabilities. + Os escalões de preço isolados num Ambiente do Serviço de Aplicações (ASE) não estão disponíveis para a sua configuração. Um ASE é uma oferta poderosa do Serviço de Aplicações do Azure que proporciona isolamento de rede e capacidades de dimensionamento melhoradas. - Dev / Test pricing tiers are only available to plans that are not hosted within an App Service environment. + Os escalões de preços de Programação/Testes não estão disponíveis para a sua configuração e só estão disponíveis para planos não alojados num ambiente do Serviço de Aplicações. - Production pricing tiers are only available to plans that are not hosted within an App Service environment. + Os escalões de preço de produção não estão disponíveis para a sua configuração e estão apenas disponíveis para planos que não estão alojados num ambiente do Serviço de Aplicações. O Premium V2 não é suportado por esta unidade de dimensionamento. Considere voltar a implementar ou clonar a aplicação. @@ -3079,6 +3085,9 @@ Defina para "URL Externo" para utilizar uma definição de API que está alojada Aumentar verticalmente + + Gratuito + {0} {1}/Hora (Estimado) @@ -3089,34 +3098,34 @@ Defina para "URL Externo" para utilizar uma definição de API que está alojada Atualizar o plano do Serviço de Aplicações - Shared insfrastructure + Infraestrutura partilhada - Shared compute resources used to run applications deployed in the App Service Plan. + Recursos de computação partilhados utilizados para executar aplicações implementadas no Plano do Serviço de Aplicações. - Dedicated A-series compute resources used to run applications deployed in the App Service Plan. + Recursos de computação série A dedicados utilizados para executar aplicações implementadas no Plano do Serviço de Aplicações. - Dedicated Dv2-series compute resources used to run applications deployed in the App Service Plan. + Recursos de computação série Dv2 dedicados utilizados para executar aplicações implementadas no Plano do Serviço de Aplicações. - Memory available to run applications deployed and running in the App Service plan. + A memória disponível para executar aplicações implementadas e em execução no plano do Serviço de Aplicações. - Memory per instance available to run applications deployed and running in the App Service plan. + A memória por instância disponível para executar aplicações implementadas e em execução no plano do Serviço de Aplicações. - {0} disk storage shared by all apps deployed in the App Service plan. + {0} de armazenamento em disco partilhado por todas as aplicações implementadas no plano do Serviço de Aplicações. Domínios personalizados/SSL - Configure and purchase custom domains with SNI SSL bindings + Configurar e comprar domínios personalizados com enlaces SNI SSL - Configure and purchase custom domains with SNI and IP SSL bindings + Configurar e comprar domínios personalizados com enlaces IP SSL e SNI Dimensionamento manual @@ -3125,61 +3134,67 @@ Defina para "URL Externo" para utilizar uma definição de API que está alojada Dimensionamento automático - Scale to a large number of instances + Dimensionar para um grande número de instâncias - Up to 100 instances. More allowed upon request. + Até 100 instâncias. Permite-se mais a pedido. - Up to {0} instances. Subject to availability. + Até {0} instâncias. Sujeito a disponibilidade. - Staging slots + Ranhuras de teste - Up to {0} staging slots to use for testing and deployments before swapping them into production. + Até {0} blocos de teste a utilizar para efeitos de testes e implementações antes de colocá-los em produção. - Daily backup + Cópia de segurança diária Cópias de segurança diárias - Backup your app {0} time daily. + Crie uma cópia de segurança da sua aplicação {0} vezes por dia. + + + Gestor de tráfego + + + Melhore o desempenho e a disponibilidade ao encaminhar tráfego entre diversas instâncias da sua aplicação. Sistema de inquilino único - Take more control over the resources being used by your app. + Ganhe maior controlo sobre os recursos a serem utilizados pela sua aplicação. - Isolated network + Rede isolada - Runs within your own virtual network. + Executa na sua rede virtual. Acesso a aplicações privadas - Using an App Service Environment with Internal Load Balancing (ILB). + Utilizar um Ambiente de Serviço de Aplicações com Balanceamento de Carga Interno (ILB). - {0} GB memory + {0} GB de memória - {0} minutes/day compute + {0} minutos/dia de computação - {0} cores + {0} núcleos - A-Series compute + Computação Série A - Dv2-Series compute + Computação de série Dv2 O ficheiro proxies.json não é válido. Erro: "{0}". @@ -3212,7 +3227,7 @@ Defina para "URL Externo" para utilizar uma definição de API que está alojada Instância do Application Insights - Êxito + Success Duração (ms) @@ -3223,6 +3238,9 @@ Defina para "URL Externo" para utilizar uma definição de API que está alojada Contagem de erros nos últimos 30 dias + + Query returned {0} items + Mensagem @@ -3239,7 +3257,7 @@ Defina para "URL Externo" para utilizar uma definição de API que está alojada Utilize o VSTS como o servidor de compilação. Pode optar por tirar partido de opções avançadas para um fluxo de trabalho de gestão da versão completa. - Compilar no servidor + Servidor de compilação Kudu do Serviço de Aplicações Utilize um Serviço de Aplicações como o servidor de compilação. O motor de Kudu do Serviço de Aplicações cria automaticamente o código durante a implementação, quando aplicável, sem configurações adicionais necessárias. @@ -3338,7 +3356,7 @@ Defina para "URL Externo" para utilizar uma definição de API que está alojada Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. - Not Authorized + Não Autorizado Falha na chamada para obter informações do anfitrião. @@ -3347,19 +3365,22 @@ Defina para "URL Externo" para utilizar uma definição de API que está alojada Configurar o Application Insights para recolher registos de invocação - Azure Functions now supports Application Insights as the preferred monitoring solution for apps under construction and in production. App Insights offers powerful analytics, notifications, and visualizations of your log data, as well as higher overall reliability at scale. + Agora, o Azure Functions suporta o Application Insights como a solução de monitorização preferida para aplicações em construção e produção. O App Insights oferece análises poderosas, notificações e visualizações dos seus dados de registos, bem como uma maior fiabilidade geral à escala. Mudar para a vista clássica + + Instruções de Configuração + Configurar - Invocation traces + Rastreios de invocação - Results delayed up to 5 minutes. + Results may be delayed for up to 5 minutes. Arrastar um ficheiro para aqui ou @@ -3377,18 +3398,93 @@ Defina para "URL Externo" para utilizar uma definição de API que está alojada Ver alertas de métricas e de configuração. - FTP based deployment can be disabled or configured to accept FTP (plain text) or FTPS (secure) connections. Click to learn more. + A implementação baseada em FTP pode ser desativada ou configurada para aceitar ligações de FTP (texto simples) ou FTPS (seguras). Clique aqui para mais informações. - FTP access + Acesso FTP A validar... - You do not have permissions to create a Build Definition or a Release definition on this project. Contact your project administrator + Não tem permissões para criar uma Definição de Compilação ou uma definição de Versão neste projeto. Contacte o seu administrador de projeto - The account name supplied is not valid. Please supply another account name. + O nome da conta fornecido não é válido. Especifique outro nome de conta. + + + FTP + FTPS + + + FTPS Only + + + Desactivar + + + Dispensar + + + Mostrar + + + Ocultar + + + Your password and confirmation password do not match. + + + Dashboard + + + Use an FTP connection to access and copy app files. + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + User Credentials + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + App Credentials + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + Nome de Utilizador + + + Palavra-passe + + + Confirmar Palavra-passe + + + FTPS Endpoint + + + Credenciais + + + Pendente + + + Falha + + + Succcess + + + Save Credentials + + + Reset Credentials + + + HTTP Version \ No newline at end of file diff --git a/server/Resources/qps-ploc/Server/Resources/Resources.resx b/server/Resources/qps-ploc/Server/Resources/Resources.resx index 69c6c21a33..5482dc4ab0 100644 --- a/server/Resources/qps-ploc/Server/Resources/Resources.resx +++ b/server/Resources/qps-ploc/Server/Resources/Resources.resx @@ -106,3289 +106,3385 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - [io2Ya][öÂAzure Functions !!! !!] + [io2Ya][µÕAzure Functions !!! !!] - [P49PT][§ïAzure Functions Runtime !!! !!! !] + [P49PT][ÒñAzure Functions Runtime !!! !!! !] - [R71II][ÈÞCancel !!!] + [R71II][ÍÀCancel !!!] - [j6VkN][ÚòApply !!!] + [j6VkN][ÖõApply !!!] Configure - [yC9A6][æÚUpgrade !!!] + [yC9A6][§ªUpgrade !!!] - [g957b][ýÀUpgrade to enable !!! !!!] + [g957b][ÄÔUpgrade to enable !!! !!!] - [t7Nlz][͵Select all !!! !] + [t7Nlz][ÚåSelect all !!! !] - [ZRG8G][þÆAll items selected !!! !!!] + [ZRG8G][ò£All items selected !!! !!!] - [WLpTT][äÒ{0} items selected !!! !!!] + [WLpTT][óÏ{0} items selected !!! !!!] - [lRfGu][ñùCPU !!] + [lRfGu][èÒCPU !!] - [mOaUp][ßëMemory !!!] + [mOaUp][çýMemory !!!] - [7hctT][ÓåStorage !!!] + [7hctT][êÇStorage !!!] - [17ym6][éÞCreate Function Error: {{error}} !!! !!! !!! ] + [17ym6][Þ©Create Function Error: {{error}} !!! !!! !!! ] - [S6XZZ][ü§Function creation error! Please try again. !!! !!! !!! !!! ] + [S6XZZ][ð©Function creation error! Please try again. !!! !!! !!! !!! ] - [3Qo2N][éãFunction Error: {{error}} !!! !!! !!] + [3Qo2N][Ú§Function Error: {{error}} !!! !!! !!] - [oR0Kt][ûÌFunction (${{name}}) Error: {{error}} !!! !!! !!! !!] + [oR0Kt][âµFunction (${{name}}) Error: {{error}} !!! !!! !!! !!] - [z2m32][ííFunction Url !!! !] + [z2m32][ôÎFunction Url !!! !] - [G33l1][æëGitHub Secret !!! !!] + [G33l1][ÇíGitHub Secret !!! !!] - [hZWeI][ÙËHide files !!! !] + [hZWeI][êÔHide files !!! !] - [rzF0R][õªHost Error: {{error}} !!! !!! ] + [rzF0R][ìíHost Error: {{error}} !!! !!! ] - [9j93r][¥ïOutput !!!] + [9j93r][µ§Output !!!] - [DNy8f][òÙRequest body !!! !] + [DNy8f][âøRequest body !!! !] - [pb8gF][ªûSave and run !!! !] + [pb8gF][ÊóSave and run !!! !] - [wZz1H][@ÒStatus: !!!] + [wZz1H][åÃStatus: !!!] - [4oKjj][ôôView files !!! !] + [4oKjj][§ðView files !!! !] - [aVe0w][ÀóChoose a template below !!! !!! !] + [aVe0w][ÛñChoose a template below !!! !!! !] - [y46vR][ܵSubscription with name '{0}' already exist !!! !!! !!! !!! ] + [y46vR][úÁSubscription with name '{0}' already exist !!! !!! !!! !!! ] - [LdQUj][ÙëChoose a plan below to create new subscription !!! !!! !!! !!! !] + [LdQUj][íÕChoose a plan below to create new subscription !!! !!! !!! !!! !] - [qeek6][ØÐProvide a friendly subscription name !!! !!! !!! !!] + [qeek6][ÅþProvide a friendly subscription name !!! !!! !!! !!] - [Z0Xft][µóFriendly subscription name !!! !!! !!] + [Z0Xft][µìFriendly subscription name !!! !!! !!] - [fQmyD][ÖÎInvitation code !!! !!] + [fQmyD][ÇåInvitation code !!! !!] - [oNfto][ñâThis language is experimental and does not yet have full support. If you run into issues, please file a bug on our <a href="https://github.com/Azure/azure-webjobs-sdk-templates/issues" target="_blank">GitHub repository.</a> !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!] + [oNfto][@¥This language is experimental and does not yet have full support. If you run into issues, please file a bug on our <a href="https://github.com/Azure/azure-webjobs-sdk-templates/issues" target="_blank">GitHub repository.</a> !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!] - [rtEBl][âëFunction name !!! !!] + [rtEBl][ý©Function name !!! !!] - [5Uup0][òãA function name is required !!! !!! !!] + [5Uup0][äÐA function name is required !!! !!! !!] - [WF8As][ÕúName your function !!! !!!] + [WF8As][ÖÁName your function !!! !!!] - [D06QT][ÐñCreate + get started !!! !!! ] + [D06QT][ÅÚCreate + get started !!! !!! ] - [JzUDJ][â£Function Apps !!! !!] + [JzUDJ][åµFunction Apps !!! !!] - [vUqFJ][ùÔGet started with Azure Functions !!! !!! !!! ] + [vUqFJ][ûìGet started with Azure Functions !!! !!! !!! ] - [hnFfT][ÕúNew function app !!! !!!] + [hnFfT][ÚöNew function app !!! !!!] - [GIcnj][äïYour subscription contains no function apps. These are containers where your functions are executed. Create one now. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!] + [GIcnj][µñYour subscription contains no function apps. These are containers where your functions are executed. Create one now. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!] - [Mi23r][@ÁOr create a function app from <a href="https://portal.azure.com/#create/Microsoft.FunctionApp">Azure Portal</a>. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! ] + [Mi23r][ÆÃOr create a function app from <a href="https://portal.azure.com/#create/Microsoft.FunctionApp">Azure Portal</a>. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! ] - [Zm41F][ÀÒSelect Location !!! !!] + [Zm41F][îÎSelect Location !!! !!] - [Qo5CI][ÛÄSelect Subscription !!! !!! ] + [Qo5CI][ÙÉSelect Subscription !!! !!! ] - [l0pIk][ñÑSubscription {{displayName}} ({{ subscriptionId }}) is not white listed for running functions !!! !!! !!! !!! !!! !!! !!! !!! !!] + [l0pIk][âïSubscription {{displayName}} ({{ subscriptionId }}) is not white listed for running functions !!! !!! !!! !!! !!! !!! !!! !!! !!] - [z9IKp][ñøThis subscription contains one or more function apps. These are containers where your functions are executed. Select one or create a new one below. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! ] + [z9IKp][äÍThis subscription contains one or more function apps. These are containers where your functions are executed. Select one or create a new one below. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! ] - [u4WqF][ÑÍThe name must be at least 2 characters !!! !!! !!! !!] + [u4WqF][çÂThe name must be at least 2 characters !!! !!! !!! !!] - [IiOWb][£àThe name must be at most 60 characters !!! !!! !!! !!] + [IiOWb][µªThe name must be at most 60 characters !!! !!! !!! !!] - [2ldyz][ÆÉThe name can contain letters, numbers, and hyphens (but the first and last character must be a letter or number) !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! ] + [2ldyz][ÃÖThe name can contain letters, numbers, and hyphens (but the first and last character must be a letter or number) !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! ] - [Cey3j][Ú£function app name {{funcName}} isn't available !!! !!! !!! !!! !] + [Cey3j][õâfunction app name {{funcName}} isn't available !!! !!! !!! !!! !] - [pMcuB][ú£You need an Azure subscription in order to use this service. <a href="https://azure.microsoft.com/en-us/free/">Click here</a> to create a free trial subscription !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] + [pMcuB][ÔÀYou need an Azure subscription in order to use this service. <a href="https://azure.microsoft.com/en-us/free/">Click here</a> to create a free trial subscription !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] - [6S9B6][ÆãYour function apps !!! !!!] + [6S9B6][ÏÔYour function apps !!! !!!] - [6fq5Y][ýúYour subscription !!! !!!] + [6fq5Y][êóYour subscription !!! !!!] - [rAfl6][ÐÌCreating a Function App will automatically provision a new container capable of hosting and running your code. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!] + [rAfl6][ÁàCreating a Function App will automatically provision a new container capable of hosting and running your code. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!] - [5FLkV][ñÐFailed to create app !!! !!! ] + [5FLkV][ïÿFailed to create app !!! !!! ] - [pcHSk][âÁ2. Choose a language !!! !!! ] + [pcHSk][©à2. Choose a language !!! !!! ] - [cQIBg][óÿ1. Choose a scenario !!! !!! ] + [cQIBg][ûî1. Choose a scenario !!! !!! ] - [2PwH3][ÞèCreate this function !!! !!! ] + [2PwH3][èßCreate this function !!! !!! ] - [BxjYr][Ìòcreate your own custom function !!! !!! !!! ] + [BxjYr][ÞÀcreate your own custom function !!! !!! !!! ] - [rQH0f][ÈÙCustom function !!! !!] + [rQH0f][ÏÎCustom function !!! !!] - [q007q][@ûData processing !!! !!] + [q007q][æîData processing !!! !!] - [6044v][§àor !!] + [6044v][ÞÍor !!] - [AmEoC][ËâGet started quickly with a premade function !!! !!! !!! !!! ] + [AmEoC][ßþGet started quickly with a premade function !!! !!! !!! !!! ] - [qgdAc][ÆÖGet started on your own !!! !!! !] + [qgdAc][üáGet started on your own !!! !!! !] - [VOCqm][àáKeep using this quickstart !!! !!! !!] + [VOCqm][àäKeep using this quickstart !!! !!! !!] - [ym8CF][éêFor PowerShell, Python, and Batch, !!! !!! !!! !] + [ym8CF][öãFor PowerShell, Python, and Batch, !!! !!! !!! !] - [UC498][úÃStart from source control !!! !!! !!] + [UC498][§üStart from source control !!! !!! !!] - [OwYIy][¥ìTimer !!!] + [OwYIy][ýÓTimer !!!] - [hp33d][©ãWebhook + API !!! !!] + [hp33d][àìWebhook + API !!! !!] - [l94nS][Ä©Clear !!!] + [l94nS][ØûClear !!!] - [9d0rU][éêCopied! !!!] + [9d0rU][ëüCopied! !!!] - [uRHXZ][£ßCopy logs !!! ] + [uRHXZ][ÛåCopy logs !!! ] - [zX4DC][ÎÊNo logs to display !!! !!!] + [zX4DC][ÆãNo logs to display !!! !!!] - [3tnmj][ãóFailed to download log content - '{0}' !!! !!! !!! !!] + [3tnmj][öÕFailed to download log content - '{0}' !!! !!! !!! !!] - [quafK][©ÆPause !!!] + [quafK][ØñPause !!!] - [LE06Q][í£Logging paused !!! !!] + [LE06Q][ÕáLogging paused !!! !!] - [512zy][ªàStart !!!] + [512zy][ÄæStart !!!] - [MXQBR][ËÝToo many logs. Refresh rate: {{seconds}} seconds. !!! !!! !!! !!! !!] + [MXQBR][ýþToo many logs. Refresh rate: {{seconds}} seconds. !!! !!! !!! !!! !!] - [cNops][ØÄName !!] + [cNops][µàName !!] Can't use "name" as key because typescript has own name property for the object - [SUapk][ñÚOpen !!] + [SUapk][íÂOpen !!] - [90m4i][ÑÍor !!] + [90m4i][Öæor !!] - [CtSy2][ïÏYour app is currently in read only mode because you have source control integration enabled. To change edit mode visit !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!] + [CtSy2][¥ÊYour app is currently in read only mode because you have source control integration enabled. To change edit mode visit !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!] - [Xv714][ÿôRegion !!!] + [Xv714][ßþRegion !!!] - [NR2Ak][©ìRun !!] + [NR2Ak][Æ¥Run !!] - [664u6][ÿÕRefresh !!!] + [664u6][ÎòRefresh !!!] - [ZTiYZ][ãËSave !!] + [ZTiYZ][ÞÖSave !!] - [8rmT9][Ê@Unsaved changes will be discarded. !!! !!! !!! !] + [8rmT9][ðÓUnsaved changes will be discarded. !!! !!! !!! !] - [RGdYZ][îÓA save operation is currently in progress. Navigating away may cause some changes to be lost. !!! !!! !!! !!! !!! !!! !!! !!! !!] + [RGdYZ][ÁþA save operation is currently in progress. Navigating away may cause some changes to be lost. !!! !!! !!! !!! !!! !!! !!! !!! !!] - [eW5ij][ßÍ+ Add new setting !!! !!!] + [eW5ij][£Â+ Add new setting !!! !!!] - [IUV0u][˪+ Add new connection string !!! !!! !!] + [IUV0u][ÐÄ+ Add new connection string !!! !!! !!] - [LPi4y][¥Î+ Add new document !!! !!!] + [LPi4y][Ìå+ Add new document !!! !!!] - [hrIC1][ìØ+ Add new handler mapping !!! !!! !!] + [hrIC1][ÞÈ+ Add new handler mapping !!! !!! !!] - [ZfnRd][ÍÖ+ Add new virtual application or directory !!! !!! !!! !!! ] + [ZfnRd][©ô+ Add new virtual application or directory !!! !!! !!! !!! ] - [agUQ6][êùEnter a name !!! !] + [agUQ6][üöEnter a name !!! !] - [0lwKY][øªEnter a value !!! !!] + [0lwKY][ÚøEnter a value !!! !!] - [9x4RJ][öæEnter extension !!! !!] + [9x4RJ][û¥Enter extension !!! !!] - [L8T7m][ËçEnter script processor !!! !!! !] + [L8T7m][¥ÑEnter script processor !!! !!! !] - [972D2][õùEnter arguments !!! !!] + [972D2][ã©Enter arguments !!! !!] - [ktrlc][µàEnter virtual path !!! !!!] + [ktrlc][üËEnter virtual path !!! !!!] - [BgUUJ][¢ÚEnter physical path !!! !!! ] + [BgUUJ][úÝEnter physical path !!! !!! ] - [l22NP][À£Application !!! !] + [l22NP][ûøApplication !!! !] - [sMGT8][öÌSlot Setting !!! !] + [sMGT8][ÅÂSlot Setting !!! !] - [j2VsP][ÂàHidden value. Click to show. !!! !!! !!!] + [j2VsP][ð¥Hidden value. Click to show. !!! !!! !!!] - [eskne][ÁÙChanges made to function {{name}} will be lost. Are you sure you want to continue? !!! !!! !!! !!! !!! !!! !!! !!] + [eskne][õËChanges made to function {{name}} will be lost. Are you sure you want to continue? !!! !!! !!! !!! !!! !!! !!! !!] - [mzJsh][îÓNew Function !!! !] + [mzJsh][ýøNew Function !!! !] - [2JBgw][ÒÞRefresh !!!] + [2JBgw][óÒRefresh !!!] - [Wv03z][Ó£Search !!!] + [Wv03z][õ¢Search !!!] - [oOze2][ÛãScope to this item !!! !!!] + [oOze2][òöScope to this item !!! !!!] - [WeDEG][äÒSearch features !!! !!] + [WeDEG][üÏSearch features !!! !!] - [Exzv0][áÃSearch Function apps !!! !!! ] + [Exzv0][À£Search Function apps !!! !!! ] - [cGfKd][ßíSubscription ID !!! !!] + [cGfKd][èïSubscription ID !!! !!] - [9AWwS][ÕýSubscription !!! !] + [9AWwS][äûSubscription !!! !] - [EMtWd][äýResource group !!! !!] + [EMtWd][ÖÞResource group !!! !!] - [kfZFk][ªÂLocation !!! ] + [kfZFk][ØÒLocation !!! ] - [gnNUQ][ÉõNo results !!! !] + [gnNUQ][ôûNo results !!! !] - [OfSsG][ûÞChanges made to the current function will be lost. Are you sure you want to continue? !!! !!! !!! !!! !!! !!! !!! !!!] + [OfSsG][è@Changes made to the current function will be lost. Are you sure you want to continue? !!! !!! !!! !!! !!! !!! !!! !!!] - [mVGCu][ÞÎFunction app settings !!! !!! ] + [mVGCu][ÐèFunction app settings !!! !!! ] - [T5Tpi][üêA new version of Azure Functions is available. To upgrade, click here !!! !!! !!! !!! !!! !!! !] + [T5Tpi][ðùA new version of Azure Functions is available. To upgrade, click here !!! !!! !!! !!! !!! !!! !] - [cjfhr][üÜQuickstart !!! !] + [cjfhr][ÙäQuickstart !!! !] - [9xZ9t][ÑïUsage !!!] + [9xZ9t][ãÇUsage !!!] - [U3vby][òíAll !!] + [U3vby][ÝëAll !!] - [yo2If][©ÿApp executions !!! !!] + [yo2If][ÔÅApp executions !!! !!] - [3dLXg][¢ÊApp Usage(Gb Sec) !!! !!!] + [3dLXg][ãÀApp Usage(Gb Sec) !!! !!!] - [b4tIr][éüFunction App Usage !!! !!!] + [b4tIr][©öFunction App Usage !!! !!!] - [OPtrV][èÑNo data available !!! !!!] + [OPtrV][¥éNo data available !!! !!!] - [03hIV][ÔÁof executions !!! !!] + [03hIV][Éçof executions !!! !!] - [Wtqp5][ÝæParameter name !!! !!] + [Wtqp5][ÐþParameter name !!! !!] - [28Gw1][òóClose !!!] + [28Gw1][ñÐClose !!!] - [fiRY6][ùÓConfig !!!] + [fiRY6][ÑèConfig !!!] - [Oi4NP][ÊÆCORS !!] + [Oi4NP][êæCORS !!] - [j7hh7][àÝCreate !!!] + [j7hh7][ÅÿCreate !!!] - [w6XMR][ËùYour trial has expired !!! !!! !] + [w6XMR][ØåYour trial has expired !!! !!! !] - [aHE4R][ÙìDisabled !!! ] + [aHE4R][ðïDisabled !!! ] - [5tA68][¥ÃEnabled !!!] + [5tA68][êÇEnabled !!!] - [c51Q2][Òïdisable !!!] + [c51Q2][ܧdisable !!!] - [8ijrm][ÄÀenabled !!!] + [8ijrm][ØØenabled !!!] - [StZeI][æîhere !!] + [StZeI][ïùhere !!] - [qnJ4m][ÍÖYou may be experiencing an error. If you're having issues, please post them !!! !!! !!! !!! !!! !!! !!!] + [qnJ4m][ÑÿYou may be experiencing an error. If you're having issues, please post them !!! !!! !!! !!! !!! !!! !!!] - [rAcqH][çError parsing config: {{error}} !!! !!! !!! ] + [rAcqH][ÖµError parsing config: {{error}} !!! !!! !!! ] - [47CFs][ôòFailed to {{state}} function: {{functionName}} !!! !!! !!! !!! !] + [47CFs][ÖóFailed to {{state}} function: {{functionName}} !!! !!! !!! !!! !] - [m0qJa][ÎÀFeatures !!! ] + [m0qJa][ýåFeatures !!! ] - [qPCpe][ØùThis field is required !!! !!! !] + [qPCpe][Ó¢This field is required !!! !!! !] - [J8v9W][ÜøCode !!] + [J8v9W][ÈäCode !!] - [wmrlO][ßÀRun !!] + [wmrlO][ØåRun !!] - [L3v4Z][ÛÆRead only - because you have started editing with source control, this view is read only. !!! !!! !!! !!! !!! !!! !!! !!! ] + [L3v4Z][ÔàRead only - because you have started editing with source control, this view is read only. !!! !!! !!! !!! !!! !!! !!! !!! ] - [XKoih][ÏÀAdvanced editor !!! !!] + [XKoih][ÅÌAdvanced editor !!! !!] - [UPPmU][íëChanges made will be lost. Are you sure you want to continue? !!! !!! !!! !!! !!! !!] + [UPPmU][öÿChanges made will be lost. Are you sure you want to continue? !!! !!! !!! !!! !!! !!] - [oEF4e][îóChanges made to function {{name}} will be lost. Are you sure you want to continue? !!! !!! !!! !!! !!! !!! !!! !!] + [oEF4e][æàChanges made to function {{name}} will be lost. Are you sure you want to continue? !!! !!! !!! !!! !!! !!! !!! !!] - [m230i][áíSetting name: !!! !!] + [m230i][ñóSetting name: !!! !!] - [0m98f][äùStandard editor !!! !!] + [0m98f][üÍStandard editor !!! !!] - [bxDrp][ÊÅDelete Function {{name}} !!! !!! !] + [bxDrp][Ó¥Delete Function {{name}} !!! !!! !] - [ofcbI][ÀûAre you sure you want to delete Function {{name}}? !!! !!! !!! !!! !!!] + [ofcbI][ÕÄAre you sure you want to delete Function {{name}}? !!! !!! !!! !!! !!!] - [z94cm][ÈñLoading ... !!! !] + [z94cm][ÏóLoading ... !!! !] - [r059Y][âìSuccess count since !!! !!! ] + [r059Y][ÕîSuccess count since !!! !!! ] - [U9g38][ÎûError count since !!! !!!] + [U9g38][ÑòError count since !!! !!!] - [a9qoH][ìªInvocation log !!! !!] + [a9qoH][ÍÓInvocation log !!! !!] - [kXEkP][ãùInvocation Details !!! !!!] + [kXEkP][ÏÓInvocation Details !!! !!!] - [5w5KC][óµLogs !!] + [5w5KC][ÁæLogs !!] - [gcbE8][Ãòlive event stream !!! !!!] + [gcbE8][Æîlive event stream !!! !!!] - [kN17H][ÙÃFunction !!! ] + [kN17H][õßFunction !!! ] - [m5m6f][ÅüStatus !!!] + [m5m6f][Ó¢Status !!!] - [BASuW][ÞîDetails: Last ran !!! !!!] + [BASuW][ÎÛDetails: Last ran !!! !!!] - [QYcnf][ýã(duration) !!! !] + [QYcnf][£ß(duration) !!! !] - [t55X6][óöParameter !!! ] + [t55X6][åÎParameter !!! ] - [pie5F][¥ÙAuthentication is enabled for the function app. Disable authentication before running the function. !!! !!! !!! !!! !!! !!! !!! !!! !!! ] + [pie5F][ø£Authentication is enabled for the function app. Disable authentication before running the function. !!! !!! !!! !!! !!! !!! !!! !!! !!! ] - [g55Ib][ÔöThere was an error running function ({{name}}). Check logs output for the full error. !!! !!! !!! !!! !!! !!! !!! !!!] + [g55Ib][è@There was an error running function ({{name}}). Check logs output for the full error. !!! !!! !!! !!! !!! !!! !!! !!!] - [ni51t][ÓûInputs !!!] + [ni51t][àþInputs !!!] - [BxGrN][ÃèLogs !!] + [BxGrN][ÚÿLogs !!] - [9mkDf][¥ýNew Input !!! ] + [9mkDf][ÐÍNew Input !!! ] - [u0x1V][ëÐNew Output !!! !] + [u0x1V][øÖNew Output !!! !] - [fpntM][ôÖNew Trigger !!! !] + [fpntM][ÇçNew Trigger !!! !] - [e1rTR][ÏäNext !!] + [e1rTR][ìæNext !!] - [azTKD][ÓÎNot valid value !!! !!] + [azTKD][ËËNot valid value !!! !!] - [F4dds][ãôOutputs !!!] + [F4dds][ýýOutputs !!!] - [vrdXE][ÔÑSelect !!!] + [vrdXE][§¥Select !!!] - [DqD6m][ËêDevelop !!!] + [DqD6m][ØåDevelop !!!] - [hvG21][£ÙIntegrate !!! ] + [hvG21][Ý£Integrate !!! ] - [50Yko][ñÏManage !!!] + [50Yko][§ÊManage !!!] - [Bo1ZH][ÿòMonitor !!!] + [Bo1ZH][ÈúMonitor !!!] - [h8mDd][ÙèChoose an input binding !!! !!! !] + [h8mDd][£©Choose an input binding !!! !!! !] - [FibqR][ýðChoose an output binding !!! !!! !] + [FibqR][ÍÄChoose an output binding !!! !!! !] - [4b5uS][ìôChoose a template !!! !!!] + [4b5uS][§àChoose a template !!! !!!] - [uB8CD][æÖChoose a trigger !!! !!!] + [uB8CD][çÉChoose a trigger !!! !!!] - [dppNp][çÆLanguage: !!! ] + [dppNp][ÒðLanguage: !!! ] - [AMJtI][ò¢Scenario: !!! ] + [AMJtI][ùÄScenario: !!! ] - [1Gq31][ÙþTriggers !!! ] + [1Gq31][ÖõTriggers !!! ] - [Nav0l][þÎTrial expired !!! !!] + [Nav0l][§ÙTrial expired !!! !!] - [z6q5S][ïÈChanges made here will affect all of the functions within your function app. !!! !!! !!! !!! !!! !!! !!! ] + [z6q5S][ÜÊChanges made here will affect all of the functions within your function app. !!! !!! !!! !!! !!! !!! !!! ] - [4WGl6][¢Ã<span>Create a brand-new function</span> - Get started with one of the pre-built function templates !!! !!! !!! !!! !!! !!! !!! !!! !!! ] + [4WGl6][ùÊ<span>Create a brand-new function</span> - Get started with one of the pre-built function templates !!! !!! !!! !!! !!! !!! !!! !!! !!! ] - [EazO5][ÕéDevelop !!!] + [EazO5][Ê@Develop !!!] - [cIfph][¥¥<span>Dive into the documentation</span> - Explore all of the Azure Functions features <a target="_blank" href="http://go.microsoft.com/fwlink/?LinkId=747839">here</a> !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!] + [cIfph][ÇÀ<span>Dive into the documentation</span> - Explore all of the Azure Functions features <a target="_blank" href="http://go.microsoft.com/fwlink/?LinkId=747839">here</a> !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!] - [Z0a96][ýéFunction App Settings !!! !!! ] + [Z0a96][ÕøFunction App Settings !!! !!! ] - [Xw7Ys][ÉðIntegrate !!! ] + [Xw7Ys][§çIntegrate !!! ] - [kjLVb][åûIntegrating your functions with other services and data sources is easy. !!! !!! !!! !!! !!! !!! !!] + [kjLVb][ÀÈIntegrating your functions with other services and data sources is easy. !!! !!! !!! !!! !!! !!! !!] - [YhOTp][þñNext Steps !!! !] + [YhOTp][ÈËNext Steps !!! !] - [BuAxL][ëèSet up automated actions based on external triggers, include other input data sources, and send the output to multiple targets. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] + [BuAxL][ÌíSet up automated actions based on external triggers, include other input data sources, and send the output to multiple targets. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] - [uVXps][ãáSkip the tour and start coding !!! !!! !!!] + [uVXps][ýêSkip the tour and start coding !!! !!! !!!] - [xujYO][é©The fastest way to edit code is with the code editor, but you can also use Git.This example uses NodeJS, but many other languages are also supported. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] + [xujYO][ÆÀThe fastest way to edit code is with the code editor, but you can also use Git.This example uses NodeJS, but many other languages are also supported. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] - [Oeh5e][©ÚThis page also includes a log stream and a test console for helping you debug your function. !!! !!! !!! !!! !!! !!! !!! !!! !] + [Oeh5e][ìËThis page also includes a log stream and a test console for helping you debug your function. !!! !!! !!! !!! !!! !!! !!! !!! !] - [SrGrl][ÿÿ<span>Tweak this sample function</span> - Make it yours on the easy-to-use dashboard !!! !!! !!! !!! !!! !!! !!! !!] + [SrGrl][úà<span>Tweak this sample function</span> - Make it yours on the easy-to-use dashboard !!! !!! !!! !!! !!! !!! !!! !!] - [c2DAb][¢úYour functions are designed to run within Azure App Service as a function app, and this is where you modify the features of that app. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! ] + [c2DAb][ÔñYour functions are designed to run within Azure App Service as a function app, and this is where you modify the features of that app. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! ] - [BsMNY][àËUpdate !!!] + [BsMNY][ÀñUpdate !!!] - [93db5][Óþselect !!!] + [93db5][Ææselect !!!] - [Px7eu][Âádelete !!!] + [Px7eu][¢ädelete !!!] - [TFETU][èÄParameter 'direction' is missed. !!! !!! !!! ] + [TFETU][ôèParameter 'direction' is missed. !!! !!! !!! ] - [yKPGF][¢ÖUnknown direction: '{{direction}}'. !!! !!! !!! !] + [yKPGF][òÿUnknown direction: '{{direction}}'. !!! !!! !!! !] - [88vLi][üîParameter name must be unique in a function: '{{functionName}}' !!! !!! !!! !!! !!! !!!] + [88vLi][éËParameter name must be unique in a function: '{{functionName}}' !!! !!! !!! !!! !!! !!!] - [wAfYV][èÿParameter 'name' is missed. !!! !!! !!] + [wAfYV][¥ÈParameter 'name' is missed. !!! !!! !!] - [UPyLm][ëæParameter 'type' is missed. !!! !!! !!] + [UPyLm][ÈåParameter 'type' is missed. !!! !!! !!] - [dBgLF][þÕUnknown type: '{{type}}'. !!! !!! !!] + [dBgLF][Å¥Unknown type: '{{type}}'. !!! !!! !!] - [H9FOe][öÈWaiting for the resource !!! !!! !] + [H9FOe][¢¢Waiting for the resource !!! !!! !] - [C0x5g][¥áWe've enjoyed hosting your functions ! !!! !!! !!! !!] + [C0x5g][ÛèWe've enjoyed hosting your functions ! !!! !!! !!! !!] - [pEr2v][µïYour trial has now expired, but you can sign up for an extended trial which includes the rest of Azure as well. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! ] + [pEr2v][ó¢Your trial has now expired, but you can sign up for an extended trial which includes the rest of Azure as well. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! ] - [MmFW5][ÃÄChoose an auth provider !!! !!! !] + [MmFW5][ÒëChoose an auth provider !!! !!! !] - [xGxmh][ÃÅMicrosoft Account !!! !!!] + [xGxmh][õØMicrosoft Account !!! !!!] - [Y7sP3][@éCreate a free Azure account !!! !!! !!] + [Y7sP3][ÿðCreate a free Azure account !!! !!! !!] - [MpBJl][ŧExtend trial to 24 hours !!! !!! !] + [MpBJl][ÑÉExtend trial to 24 hours !!! !!! !] - [li1Tb][åÁFree Trial - Time remaining: !!! !!! !!!] + [li1Tb][éÒFree Trial - Time remaining: !!! !!! !!!] - [XItrU][ÿìFunction creation error! Please try again. !!! !!! !!! !!! ] + [XItrU][ªÁFunction creation error! Please try again. !!! !!! !!! !!! ] - [eNJlt][òÄCreate Function Error !!! !!! ] + [eNJlt][íöCreate Function Error !!! !!! ] - [JyFkD][ÄãIf you'd prefer another supported language, you can choose one later in the functions portal. !!! !!! !!! !!! !!! !!! !!! !!! !!] + [JyFkD][¥ãIf you'd prefer another supported language, you can choose one later in the functions portal. !!! !!! !!! !!! !!! !!! !!! !!! !!] - [795ge][ìâ minutes !!! ] + [795ge][Õâ minutes !!! ] - [ECXmU][©Ñnew !!] + [ECXmU][úÏnew !!] - [SP7uC][îÍInput bindings provide additional data provided to your function when it is triggered. For instance, you can fetch data from table storage on a new queue message. Inputs are optional. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] + [SP7uC][@íInput bindings provide additional data provided to your function when it is triggered. For instance, you can fetch data from table storage on a new queue message. Inputs are optional. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] - [PEQE2][õÈOutputs bindings allow you to output data from your function. For instance, you can add a new item to a queue. Outputs are optional. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!] + [PEQE2][ê§Outputs bindings allow you to output data from your function. For instance, you can add a new item to a queue. Outputs are optional. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!] - [l09UW][ÚÄTriggers are what will start your function. For instance, you can trigger on a new queue message. You must always have a trigger. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!] + [l09UW][øêTriggers are what will start your function. For instance, you can trigger on a new queue message. You must always have a trigger. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!] - [ocAoW][õÅCreate a new function triggered by this output !!! !!! !!! !!! !] + [ocAoW][ÞúCreate a new function triggered by this output !!! !!! !!! !!! !] - [wMNk4][çüDocumentation !!! !!] + [wMNk4][ÓËDocumentation !!! !!] - [q11Kx][ûÝGo !!] + [q11Kx][õÕGo !!] - [Gtjfq][ÏÅCopied! !!!] + [Gtjfq][ÿÜCopied! !!!] - [BpNYe][ãÿCopy to clipboard !!! !!!] + [BpNYe][éµCopy to clipboard !!! !!!] - [mC5qm][ûÂChanges made to current file will be lost. Are you sure you want to continue? !!! !!! !!! !!! !!! !!! !!! ] + [mC5qm][ëüChanges made to current file will be lost. Are you sure you want to continue? !!! !!! !!! !!! !!! !!! !!! ] - [NAlJ6][ãÛAre you sure you want to delete {{fileName}} !!! !!! !!! !!! ] + [NAlJ6][êçAre you sure you want to delete {{fileName}} !!! !!! !!! !!! ] - [RGD9i][ÏâEditing binary files is not supported. !!! !!! !!! !!] + [RGD9i][ðýEditing binary files is not supported. !!! !!! !!! !!] - [TOGJS][ëÅError creating file: {{fileName}} !!! !!! !!! !] + [TOGJS][åçError creating file: {{fileName}} !!! !!! !!! !] - [KcPQJ][¥ÛError deleting file: {{fileName}} !!! !!! !!! !] + [KcPQJ][ëçError deleting file: {{fileName}} !!! !!! !!! !] - [ODzDm][ËâThe fastest way to edit code is with the code editor, but you can also use Git.This example uses C#, but many other languages are also supported. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! ] + [ODzDm][ñîThe fastest way to edit code is with the code editor, but you can also use Git.This example uses C#, but many other languages are also supported. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! ] - [thyZd][ÎÑActions !!!] + [thyZd][ªþActions !!!] - [tFzAi][ýýLess than 1 minute !!! !!!] + [tFzAi][ïüLess than 1 minute !!! !!!] - [QIBBg][ÓßSigning up for a free Azure account unlocks all Functions capabilities without worrying about time limits! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!] + [QIBBg][ÌãSigning up for a free Azure account unlocks all Functions capabilities without worrying about time limits! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!] - [BBlkj][àÑCORS is not configured for this function app. Please add {{origin}} to your CORS list. !!! !!! !!! !!! !!! !!! !!! !!!] + [BBlkj][ÂþCORS is not configured for this function app. Please add {{origin}} to your CORS list. !!! !!! !!! !!! !!! !!! !!! !!!] - [Kw2qm][ïÕWe are unable to reach your function app. Your app could be having a temporary issue or may be failing to start. You can check logs or try again in a couple of minutes. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! ] + [Kw2qm][ªüWe are unable to reach your function app. Your app could be having a temporary issue or may be failing to start. You can check logs or try again in a couple of minutes. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! ] - [QKjJG][©ÛUnable to retrieve Function App ({{functionApp}}) !!! !!! !!! !!! !!] + [QKjJG][äÏUnable to retrieve Function App ({{functionApp}}) !!! !!! !!! !!! !!] - [jb97o][øªWe are unable to reach your function app ({{statusText}}). Please try again later. !!! !!! !!! !!! !!! !!! !!! !!] + [jb97o][æÖWe are unable to reach your function app ({{statusText}}). Please try again later. !!! !!! !!! !!! !!! !!! !!! !!] - [0A9sc][ÌþJust a few more seconds... !!! !!! !!] + [0A9sc][øÚJust a few more seconds... !!! !!! !!] - [7LEKN][©¥Hang on while we put the 'fun' in functions... !!! !!! !!! !!! !] + [7LEKN][âÞHang on while we put the 'fun' in functions... !!! !!! !!! !!! !] - [0j5Pw][ÚÈDiscover more !!! !!] + [0j5Pw][ÄÎDiscover more !!! !!] - [oXxpn][@ÆAdd !!] + [oXxpn][Ç@Add !!] - [ek1a0][ÅÇDelete !!!] + [ek1a0][óÙDelete !!!] - [onXWc][ÝêEdit !!] + [onXWc][ôÍEdit !!] - [G927o][âËUpload !!!] + [G927o][þÂUpload !!!] - [pg1JB][ÀËSee additional options !!! !!! !] + [pg1JB][ë@See additional options !!! !!! !] - [Ga714][É¥See only recommended options !!! !!! !!!] + [Ga714][ëÉSee only recommended options !!! !!! !!!] - [eJppo][ÒòOne or more function apps were linked to this storage account. You can see all the function apps linked to the account under 'files' or 'Shares'. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! ] + [eJppo][ÖÓOne or more function apps were linked to this storage account. You can see all the function apps linked to the account under 'files' or 'Shares'. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! ] - [X3JOA][òóA File with the name {{fileName}} already exists. !!! !!! !!! !!! !!] + [X3JOA][úíA File with the name {{fileName}} already exists. !!! !!! !!! !!! !!] - [M24Zk][ÚÚFunction with name '{{name}}' already exists. !!! !!! !!! !!! !] + [M24Zk][ܧFunction with name '{{name}}' already exists. !!! !!! !!! !!! !] - [EnwGU][ÞÇAccount Key: !!! !] + [EnwGU][ÆÙAccount Key: !!! !] - [gXF2N][ÄÊAccount Name: !!! !!] + [gXF2N][ÕÁAccount Name: !!! !!] - [DXio5][ÉåYou can now view the blobs, queues and tables associated with this storage binding. !!! !!! !!! !!! !!! !!! !!! !!] + [DXio5][üÌYou can now view the blobs, queues and tables associated with this storage binding. !!! !!! !!! !!! !!! !!! !!! !!] - [X9hDS][ûÁConnecting to your Storage Account !!! !!! !!! !] + [X9hDS][اConnecting to your Storage Account !!! !!! !!! !] - [c4Tku][ÅÎDownload Storage explorer from here: !!! !!! !!! !!! ] + [c4Tku][ÂÎDownload Storage explorer from here: !!! !!! !!! !!! ] - [wASvF][îÃConnect using these credentials: !!! !!! !!! ] + [wASvF][ÞÃConnect using these credentials: !!! !!! !!! ] - [126IU][Ú¥Learn more !!! !] + [126IU][ÆÂLearn more !!! !] - [dJh7w][ªâClick to learn more. !!! !!! ] + [dJh7w][äâClick to learn more. !!! !!! ] - [gtBG3][ÛðAdd header !!! !] + [gtBG3][ÄÙAdd header !!! !] - [BKdUW][ëòAdd parameter !!! !!] + [BKdUW][ÏòAdd parameter !!! !!] - [pDm22][ÿÐHTTP method !!! !] + [pDm22][ÅÝHTTP method !!! !] - [6HP2E][ÅÎQuery !!!] + [6HP2E][úªQuery !!!] - [xhZqa][ìã'AlwaysOn' is not enabled. Your app may not function properly !!! !!! !!! !!! !!! !!] + [xhZqa][úÙ'AlwaysOn' is not enabled. Your app may not function properly !!! !!! !!! !!! !!! !!] - [p3kEO][ЩThe 'AzureWebJobsSecretStorageType' setting should be set to 'blob',not having this setting will cause unexpected behavior when using deployment slots !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] + [p3kEO][ËòThe 'AzureWebJobsSecretStorageType' setting should be set to 'blob',not having this setting will cause unexpected behavior when using deployment slots !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] - [j7Dwg][ÄäAzure Functions release notes. !!! !!! !!!] + [j7Dwg][ØèAzure Functions release notes. !!! !!! !!!] - [paZ7w][éÙHost Keys (All functions) !!! !!! !!] + [paZ7w][ýÅHost Keys (All functions) !!! !!! !!] - [46BXr][ÇëAdd new host key !!! !!!] + [46BXr][ÝÞAdd new host key !!! !!!] - [HdFLd][Ó£Add new function key !!! !!! ] + [HdFLd][à¢Add new function key !!! !!! ] - [cCZiE][þõClick to show !!! !!] + [cCZiE][ØÃClick to show !!! !!] - [mTH2T][Ø@Discard !!!] + [mTH2T][Þ@Discard !!!] - [4QSZ9][Ëú(Required) !!! !] + [4QSZ9][æû(Required) !!! !] - [EUUtC][Ãì(Optional) Leave empty to auto-generate a key. !!! !!! !!! !!! !] + [EUUtC][éô(Optional) Leave empty to auto-generate a key. !!! !!! !!! !!! !] - [erPUO][ýýNAME !!] + [erPUO][ÛÆNAME !!] - [mUjmH][ÍÉVALUE !!!] + [mUjmH][ÙþVALUE !!!] - [JSzQT][ÝõFunction Keys !!! !!] + [JSzQT][èÓFunction Keys !!! !!] - [MSHjP][Ò¢Connection String: !!! !!!] + [MSHjP][ÌÜConnection String: !!! !!!] - [ROnSW][þçDaily Usage Quota (GB-Sec) !!! !!! !!] + [ROnSW][Ú©Daily Usage Quota (GB-Sec) !!! !!! !!] - [IkdMH][ÜÚThe Function App has reached daily usage quota and has been stopped until the next 24 hours time frame. !!! !!! !!! !!! !!! !!! !!! !!! !!! !] + [IkdMH][£ÞThe Function App has reached daily usage quota and has been stopped until the next 24 hours time frame. !!! !!! !!! !!! !!! !!! !!! !!! !!! !] - [x3Egh][æòRemove quota !!! !] + [x3Egh][âÔRemove quota !!! !] - [l3EAu][ÿéSet quota !!! ] + [l3EAu][©ÝSet quota !!! ] - [asz3b][ÕÍWhen the daily usage quota is exceeded, the Function App is stopped until the next day at 0:00 AM UTC. !!! !!! !!! !!! !!! !!! !!! !!! !!! !] + [asz3b][ãÁWhen the daily usage quota is exceeded, the Function App is stopped until the next day at 0:00 AM UTC. !!! !!! !!! !!! !!! !!! !!! !!! !!! !] - [t45zF][ýÀAre you sure you want to revoke {{name}} key? !!! !!! !!! !!! !] + [t45zF][à§Are you sure you want to revoke {{name}} key? !!! !!! !!! !!! !] - [WtYrO][ÄÑKeys !!] + [WtYrO][ÑáKeys !!] - [KrHSb][üîThe name must be unique within a Function App. It must start with a letter and can contain letters, numbers (0-9), dashes ("-"), and underscores ("_"). !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!] + [KrHSb][ÅÝThe name must be unique within a Function App. It must start with a letter and can contain letters, numbers (0-9), dashes ("-"), and underscores ("_"). !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!] - [6XWuz][ßÈLoading.. !!! ] + [6XWuz][ÁÖLoading.. !!! ] - [v8xCB][§þTest !!] + [v8xCB][ÞàTest !!] - [TKXLS][Í¢Runtime version !!! !!] + [TKXLS][óËRuntime version !!! !!] - [oy47A][ÃÀRuntime version !!! !!] + [oy47A][ÌèRuntime version !!! !!] - [r3Xdc][ÂÒAzure Functions v1 (.NET Framework) !!! !!! !!! !] + [r3Xdc][ñÃAzure Functions v1 (.NET Framework) !!! !!! !!! !] - [KSi0w][ñÌAzure Functions v2 (.NET Standard) !!! !!! !!! !] + [KSi0w][åñAzure Functions v2 (.NET Standard) !!! !!! !!! !] - [I6Y9K][îÙcustom !!!] + [I6Y9K][¥þcustom !!!] - [lPVP6][ÐîYour function app is disabled because it has exceeded the set quota. You can change that from the function app settings view on the left side bar. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! ] + [lPVP6][çâYour function app is disabled because it has exceeded the set quota. You can change that from the function app settings view on the left side bar. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! ] - [twIVl][èäYour function app is stopped. You cannot use the functions portal when the app is stopped. You can change that by going to the function app settings view on the left side bar and then going to the app service settings blade. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!] + [twIVl][ùàYour function app is stopped. You cannot use the functions portal when the app is stopped. You can change that by going to the function app settings view on the left side bar and then going to the app service settings blade. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!] - [XTkxH][óáYou don't have sufficient permissions to access this function app. You may still be able to see basic settings in the app service settings blade which you can access from the function app settings link on the left sidebar. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!] + [XTkxH][©õYou don't have sufficient permissions to access this function app. You may still be able to see basic settings in the app service settings blade which you can access from the function app settings link on the left sidebar. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!] - [z6S2c][ËúParameter name must be unique. !!! !!! !!!] + [z6S2c][óÖParameter name must be unique. !!! !!! !!!] - [IjLOy][ìñUse function return value !!! !!! !!] + [IjLOy][ÞâUse function return value !!! !!! !!] - [gQuLe][ÒÈFunction State !!! !!] + [gQuLe][üçFunction State !!! !!] - [3o2Ex][èÛOff !!] + [3o2Ex][ãÿOff !!] - [v4Xef][µâOn !!] + [v4Xef][úÏOn !!] - [l5gut][¢ÐAPI settings !!! !] + [l5gut][áµAPI settings !!! !] - [fGlxB][åâNew proxy !!! ] + [fGlxB][àÚNew proxy !!! ] - [j0s0Z][ÃÍAll methods !!! !] + [j0s0Z][åÏAll methods !!! !] - [BwuPT][µìAllowed HTTP methods !!! !!! ] + [BwuPT][íïAllowed HTTP methods !!! !!! ] - [3zNSV][ÓýBackend URL !!! !] + [3zNSV][¢ÊBackend URL !!! !] - [HI9GS][æØProxy or function with that name already exists. !!! !!! !!! !!! !!] + [HI9GS][ÕþProxy or function with that name already exists. !!! !!! !!! !!! !!] - [L8VLo][ÔéName !!] + [L8VLo][òµName !!] - [aDXoP][àÈProxy URL !!! ] + [aDXoP][ôøProxy URL !!! ] - [4OcB6][üüRoute template !!! !!] + [4OcB6][ÝùRoute template !!! !!] - [FYnNM][ÆÊSelected methods !!! !!!] + [FYnNM][üÿSelected methods !!! !!!] - [nFUXm][Öæfunction app settings !!! !!! ] + [nFUXm][Ýñfunction app settings !!! !!! ] - [qso5Y][ÿùRuntime version: {{extensionVersion}}. A newer version is available ({{latestExtensionVersion}}). !!! !!! !!! !!! !!! !!! !!! !!! !!!] + [qso5Y][ÓÌRuntime version: {{extensionVersion}}. A newer version is available ({{latestExtensionVersion}}). !!! !!! !!! !!! !!! !!! !!! !!! !!!] - [YFkSm][áÈRuntime version: {{exactExtensionVersion}} ({{latestExtensionVersion}}) !!! !!! !!! !!! !!! !!! !!] + [YFkSm][ÐéRuntime version: {{exactExtensionVersion}} ({{latestExtensionVersion}}) !!! !!! !!! !!! !!! !!! !!] - [9lEjA][ýÄProxies !!!] + [9lEjA][ÌÅProxies !!!] - [DGX5K][îÀEnable Azure Functions Proxies (preview) !!! !!! !!! !!!] + [DGX5K][ÂèEnable Azure Functions Proxies (preview) !!! !!! !!! !!!] - [ISiRw][ÜÞChanges made to proxy {{name}} will be lost. Are you sure you want to continue? !!! !!! !!! !!! !!! !!! !!! !] + [ISiRw][êÎChanges made to proxy {{name}} will be lost. Are you sure you want to continue? !!! !!! !!! !!! !!! !!! !!! !] - [tnqJ7][ßæProxy with name '{{name}}' already exists !!! !!! !!! !!!] + [tnqJ7][ïàProxy with name '{{name}}' already exists !!! !!! !!! !!!] - [7GHEr][ÉçAzure functions slots (preview) is currently disabled. To enable, visit !!! !!! !!! !!! !!! !!! !!] + [7GHEr][ÀÅAzure functions slots (preview) is currently disabled. To enable, visit !!! !!! !!! !!! !!! !!! !!] - [ra6uk][ÉËDiscard !!!] + [ra6uk][ÏäDiscard !!!] - [xdErx][ÒÖFunctions !!! ] + [xdErx][ÁøFunctions !!! ] - [tqw1e][òµSign in with Facebook !!! !!! ] + [tqw1e][ΩSign in with Facebook !!! !!! ] - [WO5nN][ðøSign in with GitHub !!! !!! ] + [WO5nN][ÒûSign in with GitHub !!! !!! ] - [X6DKg][ÜõSign in with Google !!! !!! ] + [X6DKg][ÚëSign in with Google !!! !!! ] - [FL7vG][ååSign in with Microsoft !!! !!! !] + [FL7vG][ÀèSign in with Microsoft !!! !!! !] - [97BXl][Ï¢Sign out !!! ] + [97BXl][éÁSign out !!! ] - [nMo9Z][ÍîBackend URL must start with 'http://' or 'https://' !!! !!! !!! !!! !!!] + [nMo9Z][¢þBackend URL must start with 'http://' or 'https://' !!! !!! !!! !!! !!!] - [XsfS6][øÉCopy !!] + [XsfS6][åµCopy !!] - [IPDd7][çÃRenew !!!] + [IPDd7][ñÉRenew !!!] - [g265R][èßRevoke !!!] + [g265R][ÁíRevoke !!!] - [8bIOe][ªÔCollapse !!! ] + [8bIOe][ÏøCollapse !!! ] - [ocOfh][ñõExpand !!!] + [ocOfh][á¢Expand !!!] - [sQCz1][Ý£</> Get function URL !!! !!! ] + [sQCz1][ðÛ</> Get function URL !!! !!! ] - [qfsdP][àû</> Get GitHub secret !!! !!! ] + [qfsdP][ãÅ</> Get GitHub secret !!! !!! ] - [2Em0O][ÌòHeaders !!!] + [2Em0O][øñHeaders !!!] - [1aGsR][ýÔThere are no headers !!! !!! ] + [1aGsR][ÔÊThere are no headers !!! !!! ] - [pmSwO][¥êAll subscriptions !!! !!!] + [pmSwO][@ÚAll subscriptions !!! !!!] - [tkYhP][ÀÊSubscriptions !!! !!] + [tkYhP][õÂSubscriptions !!! !!] - [uMBhy][ùÙ{0} subscriptions !!! !!!] + [uMBhy][êô{0} subscriptions !!! !!!] - [vZ7Bd][ÔßFunctions (No access) !!! !!! ] + [vZ7Bd][µµFunctions (No access) !!! !!! ] - [O2pHZ][ÙèFunctions (ReadOnly lock) !!! !!! !!] + [O2pHZ][òÛFunctions (ReadOnly lock) !!! !!! !!] - [EKf4n][ÐûFunctions (Stopped) !!! !!! ] + [EKf4n][ÞÃFunctions (Stopped) !!! !!! ] - [8f72t][ñÅProxies (No access) !!! !!! ] + [8f72t][ùªProxies (No access) !!! !!! ] - [kGBpC][ÏÉProxies (Stopped) !!! !!!] + [kGBpC][ãÂProxies (Stopped) !!! !!!] - [atLg0][ÍùProxies (ReadOnly lock) !!! !!! !] + [atLg0][ìóProxies (ReadOnly lock) !!! !!! !] - [VHO8Q][úÞFunctions !!! ] + [VHO8Q][ÈöFunctions !!! ] - [zYKDm][ÚÃNew function !!! !] + [zYKDm][ãåNew function !!! !] - [sSKm2][ÊÿFunction Apps !!! !!] + [sSKm2][îÉFunction Apps !!! !!] - [Suz6N][ÂýStop !!] + [Suz6N][ôßStop !!] - [jEjj0][ÙÕStart !!!] + [jEjj0][ý§Start !!!] - [nsHwD][öäRestart !!!] + [nsHwD][ØøRestart !!!] - [dlgc8][ÀÊSwap !!] + [dlgc8][øïSwap !!] - [n9kwd][ÁúComplete Swap !!! !!] + [n9kwd][ÑÛComplete Swap !!! !!] - [xAbs5][©ÂCancel Swap !!! !] + [xAbs5][áêCancel Swap !!! !] - [IId24][èÞDownload publish profile !!! !!! !] + [IId24][ÍÜDownload publish profile !!! !!! !] - [4E7dY][ÑéReset publish credentials !!! !!! !!] + [4E7dY][ìÜReset publish credentials !!! !!! !!] - [P3ijB][ÈæDelete !!!] + [P3ijB][ÎßDelete !!!] Status - [PPGdx][ÈÔAvailability !!! !] + [PPGdx][ËüAvailability !!! !] - [Rg83J][ãÖAvailable !!! ] + [Rg83J][ËðAvailable !!! ] - [CXoAP][ªÏNo access !!! ] + [CXoAP][ûÙNo access !!! ] - [dD1nf][¢øNot applicable !!! !!] + [dD1nf][ÒãNot applicable !!! !!] - [v2ybf][§öNot available !!! !!] + [v2ybf][ÃâNot available !!! !!] - [WtWPr][ú§Configured features !!! !!! ] + [WtWPr][êàConfigured features !!! !!! ] - [TTRUj][ÜÃQuick links to your features will show up here after you've configured them from the "Platform features" tab above. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] + [TTRUj][ëÞQuick links to your features will show up here after you've configured them from the "Platform features" tab above. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] - [VuY7O][çüUnsaved changes for the app '{0}' will be lost. Are you sure you would like to continue? !!! !!! !!! !!! !!! !!! !!! !!! ] + [VuY7O][î@Unsaved changes for the app '{0}' will be lost. Are you sure you would like to continue? !!! !!! !!! !!! !!! !!! !!! !!! ] - [17Hb9][¥¥There was an error retrieving information about the app '{0}' !!! !!! !!! !!! !!! !!] + [17Hb9][ÒäThere was an error retrieving information about the app '{0}' !!! !!! !!! !!! !!! !!] - [qTCMA][ΧThe app '{0}' could not be found !!! !!! !!! ] + [qTCMA][åÛThe app '{0}' could not be found !!! !!! !!! ] - [EnJ9t][ÆÙPin app to dashboard !!! !!! ] + [EnJ9t][ÆÒPin app to dashboard !!! !!! ] - [VqLFR][øÖAre you sure you would like to stop '{0}' !!! !!! !!! !!!] + [VqLFR][ÍÚAre you sure you would like to stop '{0}' !!! !!! !!! !!!] - [4CGT0][ÙÈStopping app '{0}' !!! !!!] + [4CGT0][ÝõStopping app '{0}' !!! !!!] - [ekCYB][ã¢Starting app '{0}' !!! !!!] + [ekCYB][ñÌStarting app '{0}' !!! !!!] - [7gKHc][ÅÊSuccessfully stopped app '{0}' !!! !!! !!!] + [7gKHc][ÂíSuccessfully stopped app '{0}' !!! !!! !!!] - [0wR3v][ú§Successfully started app '{0}' !!! !!! !!!] + [0wR3v][À§Successfully started app '{0}' !!! !!! !!!] - [2qgZZ][اFailed to stop app '{0}' !!! !!! !] + [2qgZZ][þûFailed to stop app '{0}' !!! !!! !] - [aGMIP][ÍëFailed to start app '{0}' !!! !!! !!] + [aGMIP][ÿØFailed to start app '{0}' !!! !!! !!] - [DFbYX][µ@Are you sure you want to reset your publish profile? Profiles downloaded previously will become invalid. !!! !!! !!! !!! !!! !!! !!! !!! !!! !] + [DFbYX][ØñAre you sure you want to reset your publish profile? Profiles downloaded previously will become invalid. !!! !!! !!! !!! !!! !!! !!! !!! !!! !] - [4fpVw][ÕæResetting publishing profile !!! !!! !!!] + [4fpVw][ýÙResetting publishing profile !!! !!! !!!] - [a3Jat][ÖÉSuccessfully reset publishing profile !!! !!! !!! !!] + [a3Jat][ÝòSuccessfully reset publishing profile !!! !!! !!! !!] - [QqK8f][óÊFailed to reset publishing profile !!! !!! !!! !] + [QqK8f][ÐÎFailed to reset publishing profile !!! !!! !!! !] - [Z8blP][¥îAre you sure you want to delete '{0}' !!! !!! !!! !!] + [Z8blP][̪Are you sure you want to delete '{0}' !!! !!! !!! !!] - [52jLn][ÆÄDeleting app '{0}' !!! !!!] + [52jLn][¥©Deleting app '{0}' !!! !!!] - [zMndx][ÝÔSuccessfully deleted app '{0}' !!! !!! !!!] + [zMndx][ÉðSuccessfully deleted app '{0}' !!! !!! !!!] - [d0Oqx][êÉFailed to delete app '{0}' !!! !!! !!] + [d0Oqx][ÅìFailed to delete app '{0}' !!! !!! !!] - [lKW4B][ÌÎAre you sure you would like to restart '{0}' !!! !!! !!! !!! ] + [lKW4B][ÂÜAre you sure you would like to restart '{0}' !!! !!! !!! !!! ] - [Qyh1I][ÉÌRestarting app '{0}' !!! !!! ] + [Qyh1I][ÉÔRestarting app '{0}' !!! !!! ] - [N5WOH][â¢Successfully restarted app '{0}' !!! !!! !!! ] + [N5WOH][©ÎSuccessfully restarted app '{0}' !!! !!! !!! ] - [fz1FM][µÏFailed to restart app '{0}' !!! !!! !!] + [fz1FM][èÃFailed to restart app '{0}' !!! !!! !!] - [jpXTk][îªThis feature is not supported for apps on a Consumption plan !!! !!! !!! !!! !!! !!] + [jpXTk][¢ÃThis feature is not supported for apps on a Consumption plan !!! !!! !!! !!! !!! !!] - [1tXW7][íðThis feature is not supported for slots !!! !!! !!! !!!] + [1tXW7][ÚöThis feature is not supported for slots !!! !!! !!! !!!] - [xXStu][üáThis feature is not supported for Linux apps !!! !!! !!! !!! ] + [xXStu][Û£This feature is not supported for Linux apps !!! !!! !!! !!! ] - [qd6IQ][àÀYou must have write permissions on the current app in order to use this feature !!! !!! !!! !!! !!! !!! !!! !] + [qd6IQ][ØÍYou must have write permissions on the current app in order to use this feature !!! !!! !!! !!! !!! !!! !!! !] - [712lG][ѵThis feature is disabled because the app has a ReadOnly lock on it !!! !!! !!! !!! !!! !!! ] + [712lG][çøThis feature is disabled because the app has a ReadOnly lock on it !!! !!! !!! !!! !!! !!! ] - [EpXji][¥µYou must have Read permissions on the associated App Service plan in order to use this feature !!! !!! !!! !!! !!! !!! !!! !!! !!] + [EpXji][Ç@You must have Read permissions on the associated App Service plan in order to use this feature !!! !!! !!! !!! !!! !!! !!! !!! !!] - [zxYV9][þËAPI !!] + [zxYV9][@ÅAPI !!] - [CFtjV][àØDeployment options !!! !!!] + [CFtjV][ý£Deployment options !!! !!!] - [0JCcY][þßConfigure and manage deployment options for your app, including continuous deployment from VSTS, Github and Bitbucket as well as trigger deployments from OneDrive, Dropbox, external Git and more. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] + [0JCcY][é¥Configure and manage deployment options for your app, including continuous deployment from VSTS, Github and Bitbucket as well as trigger deployments from OneDrive, Dropbox, external Git and more. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] - [Yvhge][ÖêDeployment credentials !!! !!! !] + [Yvhge][éÿDeployment credentials !!! !!! !] - [mWkr2][ĵConfigure Azure account-level deployment credentials. To change your app-level credentials (also known as 'Publish Credentials'), choose 'Reset publish credentials' in the 'Overview' tab. <a href="https://go.microsoft.com/fwlink/?linkid=846056">Learn more</a>. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! ] + [mWkr2][ö©Configure Azure account-level deployment credentials. To change your app-level credentials (also known as 'Publish Credentials'), choose 'Reset publish credentials' in the 'Overview' tab. <a href="https://go.microsoft.com/fwlink/?linkid=846056">Learn more</a>. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! ] - [O6WB1][ÇËConsole !!!] + [O6WB1][æ§Console !!!] - [NoMcv][ãêExplore your app's file system from an interactive web-based console. !!! !!! !!! !!! !!! !!! !] + [NoMcv][¢óExplore your app's file system from an interactive web-based console. !!! !!! !!! !!! !!! !!! !] - [bNGTE][ßÆSSH !!] + [bNGTE][ò©SSH !!] - [sqOfz][èàSSH provides a Web SSH console experience for your Linux app code !!! !!! !!! !!! !!! !!! ] + [sqOfz][ÈÆSSH provides a Web SSH console experience for your Linux app code !!! !!! !!! !!! !!! !!! ] - [oK4fh][èÏExtensions !!! !] + [oK4fh][ìþExtensions !!! !] - [HoN7I][þÃExtensions add functionality to your entire app. !!! !!! !!! !!! !!] + [HoN7I][þÕExtensions add functionality to your entire app. !!! !!! !!! !!! !!] - [PhZwN][£Ö(no application settings to display) !!! !!! !!! !!] + [PhZwN][£Ø(no application settings to display) !!! !!! !!! !!] - [UhJWe][Ü¢(no connection strings to display) !!! !!! !!! !] + [UhJWe][Òó(no connection strings to display) !!! !!! !!! !] - [wFaZU][£ý(no default documents to display) !!! !!! !!! !] + [wFaZU][óÜ(no default documents to display) !!! !!! !!! !] - [vj8xs][ìå(no handler mappings to display) !!! !!! !!! ] + [vj8xs][ÆÉ(no handler mappings to display) !!! !!! !!! ] - [ZsHQt][Îæ(no virtual applications or directories to display) !!! !!! !!! !!! !!!] + [ZsHQt][àÒ(no virtual applications or directories to display) !!! !!! !!! !!! !!!] - [8KJCN][ÕîGeneral settings !!! !!!] + [8KJCN][àåGeneral settings !!! !!!] - [XlXme][ÅäAuto Swap !!! ] + [XlXme][ðÿAuto Swap !!! ] - [4WLfX][ÍóDebugging !!! ] + [4WLfX][ÝúDebugging !!! ] - [LM2DJ][¢ÖRuntime !!!] + [LM2DJ][èÇRuntime !!!] - [4HfJf][ïíApplication settings !!! !!! ] + [4HfJf][ÄëApplication settings !!! !!! ] - [Jaewj][éòManage app settings, connection strings, runtime settings, and more. !!! !!! !!! !!! !!! !!! !] + [Jaewj][í¥Manage app settings, connection strings, runtime settings, and more. !!! !!! !!! !!! !!! !!! !] - [o5op2][õáDefault documents !!! !!!] + [o5op2][ãæDefault documents !!! !!!] - [zu67y][¢ËHandler mappings !!! !!!] + [zu67y][êßHandler mappings !!! !!!] - [30fBa][ÖØVirtual applications and directories !!! !!! !!! !!] + [30fBa][ýíVirtual applications and directories !!! !!! !!! !!] - [l7Ted][ÖñYou must have write permissions on the current app in order to edit these settings. !!! !!! !!! !!! !!! !!! !!! !!] + [l7Ted][ÀãYou must have write permissions on the current app in order to edit these settings. !!! !!! !!! !!! !!! !!! !!! !!] - [eJkdI][îëThis app has a read-only lock that prevents editing settings or retrieving secure data. Please remove the lock and try again. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] + [eJkdI][þåThis app has a read-only lock that prevents editing settings or retrieving secure data. Please remove the lock and try again. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] - [zNEXq][òãView settings in read-only mode. !!! !!! !!! ] + [zNEXq][µèView settings in read-only mode. !!! !!! !!! ] - [sImY3][üÞFailed to load settings. !!! !!! !] + [sImY3][ñÂFailed to load settings. !!! !!! !] - [FZLa1][ûýLoading... !!! !] + [FZLa1][üÓLoading... !!! !] - [O7rq1][ôùUpdating web app settings !!! !!! !!] + [O7rq1][ðÉUpdating web app settings !!! !!! !!] - [um7xG][ÚæSuccessfully updated web app settings !!! !!! !!! !!] + [um7xG][ÔÞSuccessfully updated web app settings !!! !!! !!! !!] - [w3HzK][ÇÆFailed to update web app settings: !!! !!! !!! !] + [w3HzK][çêFailed to update web app settings: !!! !!! !!! !] - [2oBCR][øÍ{{configGroupName}} Save Error: Invlid input provided. !!! !!! !!! !!! !!! ] + [2oBCR][ÖÄ{{configGroupName}} Save Error: Invlid input provided. !!! !!! !!! !!! !!! ] - [AzRs7][ÄÃ.NET Framework version !!! !!! !] + [AzRs7][©õ.NET Framework version !!! !!! !] - [hxMg7][õÒThe version used to run your web app if using the .NET Framework !!! !!! !!! !!! !!! !!!] + [hxMg7][ÇÏThe version used to run your web app if using the .NET Framework !!! !!! !!! !!! !!! !!!] - [ZvswO][ÓÏPHP version !!! !] + [ZvswO][üÂPHP version !!! !] - [lU4O0][ãÔThe version used to run your web app if using PHP !!! !!! !!! !!! !!] + [lU4O0][áúThe version used to run your web app if using PHP !!! !!! !!! !!! !!] - [bcY1b][ØÿPython version !!! !!] + [bcY1b][çñPython version !!! !!] - [wkTOz][æÚThe version used to run your web app if using Python !!! !!! !!! !!! !!!] + [wkTOz][ÒÑThe version used to run your web app if using Python !!! !!! !!! !!! !!!] - [P3tb5][¥@App Service supports installing newer versions of Python. Click here to learn more. !!! !!! !!! !!! !!! !!! !!! !!] + [P3tb5][ÞêApp Service supports installing newer versions of Python. Click here to learn more. !!! !!! !!! !!! !!! !!! !!! !!] - [tC31B][ÃöJava version !!! !] + [tC31B][¥ÓJava version !!! !] [1k1gX][©ÿThe version used to run your web app if using Java !!! !!! !!! !!! !!!] - [NsMzs][£ðJava minor version !!! !!!] + [NsMzs][ìÜJava minor version !!! !!!] - [k1Hbm][µÀSelect the desired Java minor version. Selecting 'Newest' will keep your app using the JVM most recently added to the portal. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] + [k1Hbm][Å¥Select the desired Java minor version. Selecting 'Newest' will keep your app using the JVM most recently added to the portal. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] - [jzgjH][Æ©Java web container !!! !!!] + [jzgjH][èùJava web container !!! !!!] - [LjxPY][ØÐThe web container version used to run your web app if using Java !!! !!! !!! !!! !!! !!!] + [LjxPY][ÝÑThe web container version used to run your web app if using Java !!! !!! !!! !!! !!! !!!] - [tSfaq][æöPlatform !!! ] + [tSfaq][ÝÕPlatform !!! ] - [RmQnB][£çThe platform architecture your web app runs !!! !!! !!! !!! ] + [RmQnB][óþThe platform architecture your web app runs !!! !!! !!! !!! ] - [D36FH][©Ë64-bit configuration requires a basic or higher App Service plan !!! !!! !!! !!! !!! !!!] + [D36FH][Òõ64-bit configuration requires a basic or higher App Service plan !!! !!! !!! !!! !!! !!!] - [6QpBJ][ÐÔWeb sockets !!! !] + [6QpBJ][ÇÅWeb sockets !!! !] - [u7d0r][ç£WebSockets allow more flexible connectivity between web apps and modern browsers. Your web app would need to be built to leverage these capabilities. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] + [u7d0r][ÿßWebSockets allow more flexible connectivity between web apps and modern browsers. Your web app would need to be built to leverage these capabilities. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] - [ojE0N][æãAlways On !!! ] + [ojE0N][ÂÍAlways On !!! ] - [s40IF][üÛIndicates that your web app needs to be loaded at all times. By default, web apps are unloaded after they have been idle. It is recommended that you enable this option when you have continuous web jobs running on the web app. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! ] + [s40IF][ÅäIndicates that your web app needs to be loaded at all times. By default, web apps are unloaded after they have been idle. It is recommended that you enable this option when you have continuous web jobs running on the web app. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! ] - [eMe02][ÐÙAlways on requires a basic or higher App Service plan !!! !!! !!! !!! !!! ] + [eMe02][ââAlways on requires a basic or higher App Service plan !!! !!! !!! !!! !!! ] - [oRZ8H][ßÚManaged Pipeline Version !!! !!! !] + [oRZ8H][ä¥Managed Pipeline Version !!! !!! !] - [Vfset][ÁýAuto swap destinations cannot be configured from production slot !!! !!! !!! !!! !!! !!!] + [Vfset][ÉÞAuto swap destinations cannot be configured from production slot !!! !!! !!! !!! !!! !!!] - [dhkvh][ÿÍAuto Swap requires a standard or higher App Service Plan !!! !!! !!! !!! !!! !] + [dhkvh][ìÿAuto Swap requires a standard or higher App Service Plan !!! !!! !!! !!! !!! !] - [8eQty][óÆAuto Swap !!! ] + [8eQty][ÉàAuto Swap !!! ] - [FEl09][ØðAuto Swap Slot !!! !!] + [FEl09][ýÇAuto Swap Slot !!! !!] - [Ap5oT][Ñðproduction !!! !] + [Ap5oT][Úûproduction !!! !] - [Oyc0y][ôâARR Affinity !!! !] + [Oyc0y][¥©ARR Affinity !!! !] - [TLr4t][ÿéYou can improve the performance of your stateless applications by turning off the Affinity Cookie, stateful applications should keep the Affinity Cookie turned on for increased compatibility. Click to learn more. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!] + [TLr4t][ÇíYou can improve the performance of your stateless applications by turning off the Affinity Cookie, stateful applications should keep the Affinity Cookie turned on for increased compatibility. Click to learn more. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!] - [3v1hz][ÛêRemote debugging !!! !!!] + [3v1hz][ñþRemote debugging !!! !!!] - [BZL7H][ËéRemote Visual Studio version !!! !!! !!!] + [BZL7H][ÄçRemote Visual Studio version !!! !!! !!!] - [caOVE][ÂïStack !!!] + [caOVE][ÃáStack !!!] - [2LB06][óòWeb Apps on Linux provide run-time options through a collection of built in containers. <a href="https://go.microsoft.com/fwlink/?linkid=861969">Learn more</a>. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] + [2LB06][ÙâWeb Apps on Linux provide run-time options through a collection of built in containers. <a href="https://go.microsoft.com/fwlink/?linkid=861969">Learn more</a>. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] - [lX4FP][ÏÞStartup File !!! !] + [lX4FP][¢âStartup File !!! !] - [xi6H7][ûÏProvide an optional startup command that will be run as part of container startup. <a href="https://go.microsoft.com/fwlink/?linkid=861969">Learn more</a>. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!] + [xi6H7][ÈÒProvide an optional startup command that will be run as part of container startup. <a href="https://go.microsoft.com/fwlink/?linkid=861969">Learn more</a>. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!] - [0wM2b][ÏÞNewest !!!] + [0wM2b][ÎÔNewest !!!] - [pLhwL][åô32-bit !!!] + [pLhwL][Õë32-bit !!!] - [iwPHz][ª¥64-bit !!!] + [iwPHz][µÁ64-bit !!!] - [rU8tZ][µ©Classic !!!] + [rU8tZ][ÚèClassic !!!] - [HtV2J][ÂûIntegrated !!! !] + [HtV2J][éÒIntegrated !!! !] - [Xf4aE][èÎProperties !!! !] + [Xf4aE][ÀªProperties !!! !] - [VSoAq][áèView properties of your app. !!! !!! !!!] + [VSoAq][ÇòView properties of your app. !!! !!! !!!] - [AacQo][ìýBackups !!!] + [AacQo][¢êBackups !!!] - [mpx8N][úÝUse Backup and Restore to easily create automatic or manual backups. !!! !!! !!! !!! !!! !!! !] + [mpx8N][ÕìUse Backup and Restore to easily create automatic or manual backups. !!! !!! !!! !!! !!! !!! !] - [KlJLU][äÆAll settings !!! !] + [KlJLU][ÅóAll settings !!! !] - [7i2fY][ÑÓView all App Service settings. !!! !!! !!!] + [7i2fY][ýôView all App Service settings. !!! !!! !!!] - [YwyI3][ÀËManage settings that affect the Functions runtime for all functions within your app. !!! !!! !!! !!! !!! !!! !!! !!] + [YwyI3][ýÿManage settings that affect the Functions runtime for all functions within your app. !!! !!! !!! !!! !!! !!! !!! !!] - [vYoSx][ËÿGeneral Settings !!! !!!] + [vYoSx][ÙÖGeneral Settings !!! !!!] - [jBK08][ÓÔCode Deployment !!! !!] + [jBK08][µâCode Deployment !!! !!] - [M7w0e][ÞîDeployment Slots !!! !!!] + [M7w0e][æêDeployment Slots !!! !!!] - [yFyZs][éÒDevelopment tools !!! !!!] + [yFyZs][ýÉDevelopment tools !!! !!!] - [hsNk1][øãNetworking !!! !] + [hsNk1][ÌøNetworking !!! !] - [McG3k][òÌSecurely access resources through VNET Integration and Hybrid Connections. !!! !!! !!! !!! !!! !!! !!!] + [McG3k][ËÄSecurely access resources through VNET Integration and Hybrid Connections. !!! !!! !!! !!! !!! !!! !!!] - [2qHpU][ßÿConfigure SSL bindings for your app using either a certificate you purchased externally or an App Service Certificate. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!] + [2qHpU][ÎíConfigure SSL bindings for your app using either a certificate you purchased externally or an App Service Certificate. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!] - [Dpt6o][ðõCustom domains !!! !!] + [Dpt6o][ÿúCustom domains !!! !!] - [2jED3][ÃóConfigure and purchase custom domain names. !!! !!! !!! !!! ] + [2jED3][êýConfigure and purchase custom domain names. !!! !!! !!! !!! ] - [A4M9T][ÆãAuthentication / Authorization !!! !!! !!!] + [A4M9T][@µAuthentication / Authorization !!! !!! !!!] - [LDdvE][àÚUse Authentication / Authorization to protect your application and work with per-user data. !!! !!! !!! !!! !!! !!! !!! !!! !] + [LDdvE][åÃUse Authentication / Authorization to protect your application and work with per-user data. !!! !!! !!! !!! !!! !!! !!! !!! !] - [zHqWF][ÐØManaged service identity !!! !!! !] + [zHqWF][ýÍManaged service identity (Preview) !!! !!! !!! !] - [FZyXa][áöYour application can communicate with other Azure services as itself using a managed Azure Active Directory identity. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!] + [FZyXa][ÔíYour application can communicate with other Azure services as itself using a managed Azure Active Directory identity. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!] - [eT8r1][§ñPush notifications !!! !!!] + [eT8r1][çùPush notifications !!! !!!] - [x7Kgu][ÂÑSend fast, scalable, and cross-platform mobile push notifications using Notification Hubs. !!! !!! !!! !!! !!! !!! !!! !!! !] + [x7Kgu][úÖSend fast, scalable, and cross-platform mobile push notifications using Notification Hubs. !!! !!! !!! !!! !!! !!! !!! !!! !] - [LJCnd][ýûDiagnostic logs !!! !!] + [LJCnd][ÕÙDiagnostic logs !!! !!] - [ZvSd4][æÑConfigure where and when to log application and server events. !!! !!! !!! !!! !!! !!!] + [ZvSd4][ØØConfigure where and when to log application and server events. !!! !!! !!! !!! !!! !!!] - [iTGu1][ÅáLog streaming !!! !!] + [iTGu1][ïæLog streaming !!! !!] - [erdLM][ß@View real-time application logs. !!! !!! !!! ] + [erdLM][çüView real-time application logs. !!! !!! !!! ] - [LxlAV][ãóProcess explorer !!! !!!] + [LxlAV][Þ¥Process explorer !!! !!!] - [aGiK7][ìóView details on application processes, memory usage, and CPU utilization. !!! !!! !!! !!! !!! !!! !!!] + [aGiK7][ÖøView details on application processes, memory usage, and CPU utilization. !!! !!! !!! !!! !!! !!! !!!] - [KL5p5][üÝSecurity scanning !!! !!!] + [KL5p5][ìÑSecurity scanning !!! !!!] - [eMcsP][ÓÜEnable security scanning for your app with Tinfoil Security. !!! !!! !!! !!! !!! !!] + [eMcsP][ÃåEnable security scanning for your app with Tinfoil Security. !!! !!! !!! !!! !!! !!] - [JkgTe][öüMonitoring !!! !] + [JkgTe][úßMonitoring !!! !] - [d63px][ÑêConfigure Cross-Origin Resource Sharing (CORS) rules for your app. !!! !!! !!! !!! !!! !!! ] + [d63px][îéConfigure Cross-Origin Resource Sharing (CORS) rules for your app. !!! !!! !!! !!! !!! !!! ] - [HZs7I][âÿAPI definition !!! !!] + [HZs7I][ߪAPI definition !!! !!] - [tPx3x][îäConfigure the location of the Swagger 2.0 metadata describing your API. This makes it easy for others to discover and consume your API. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! ] + [tPx3x][ÍãConfigure the location of the Swagger 2.0 metadata describing your API. This makes it easy for others to discover and consume your API. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! ] - [m3I1v][ÊÍAn App Service plan is the container for your app. The App Service plan settings will determine the location, features, cost and compute resources associated with your app. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] + [m3I1v][µøAn App Service plan is the container for your app. The App Service plan settings will determine the location, features, cost and compute resources associated with your app. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] - [8m1dh][òÜQuotas !!!] + [8m1dh][ùÇQuotas !!!] - [84VZ1][ÒÍMonitor file system usage quotas. !!! !!! !!! !] + [84VZ1][©ÑMonitor file system usage quotas. !!! !!! !!! !] - [u4ara][öÖActivity log !!! !] + [u4ara][@ÀActivity log !!! !] - [zH2Kt][ÍäView management operations that have been performed on your app. !!! !!! !!! !!! !!! !!!] + [zH2Kt][£ÕView management operations that have been performed on your app. !!! !!! !!! !!! !!! !!!] - [K3627][æÖAccess control (IAM) !!! !!! ] + [K3627][ÜÎAccess control (IAM) !!! !!! ] - [rdcI0][ÈòConfigure Role-Based Access Control (RBAC) for your app. !!! !!! !!! !!! !!! !] + [rdcI0][êÕConfigure Role-Based Access Control (RBAC) for your app. !!! !!! !!! !!! !!! !] - [axWqb][Ô©Tags !!] + [axWqb][ÝüTags !!] - [ul9nk][ÈâTags are key/value pairs that enable you to categorize resources and view consolidated billing by applying the same tag to multiple resources and resource groups. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!] + [ul9nk][ÍïTags are key/value pairs that enable you to categorize resources and view consolidated billing by applying the same tag to multiple resources and resource groups. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!] - [AJdtj][£ÎLocks !!!] + [AJdtj][øÀLocks !!!] - [ahTMZ][£éLock resources to prevent unexpected changes or deletions. !!! !!! !!! !!! !!! !] + [ahTMZ][æéLock resources to prevent unexpected changes or deletions. !!! !!! !!! !!! !!! !] - [z4HmW][âðAutomation script !!! !!!] + [z4HmW][öÐAutomation script !!! !!!] - [vVAN4][âåAutomate deploying resources with Azure Resource Manager templates in a single, coordinated operation. Define resources and configurable input parameters and deploy with script or code. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!] + [vVAN4][éóAutomate deploying resources with Azure Resource Manager templates in a single, coordinated operation. Define resources and configurable input parameters and deploy with script or code. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!] - [hQFVK][ªÜResource management !!! !!! ] + [hQFVK][ôªResource management !!! !!! ] + + + [jhZA9][©ËDiagnose and solve problems !!! !!! !!] + + + [llb1c][îÕOur self-service diagnostic and troubleshooting experience helps you to identify and resolve issues with your app !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] - [00JJA][ÝÕAdvanced tools (Kudu) !!! !!! ] + [00JJA][ÐÓAdvanced tools (Kudu) !!! !!! ] - [mDuLz][ÏÝUse Kudu to inspect environment variables, access the debug console, upload zips, view processes, and more. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!] + [mDuLz][Û§Use Kudu to inspect environment variables, access the debug console, upload zips, view processes, and more. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!] - [7SOPq][ÐáApp Service Editor !!! !!!] + [7SOPq][çýApp Service Editor !!! !!!] - [j1sR8][ÃóApp Service Editor provides an in-browser editing experience for your code. !!! !!! !!! !!! !!! !!! !!!] + [j1sR8][ÎòApp Service Editor provides an in-browser editing experience for your code. !!! !!! !!! !!! !!! !!! !!!] - [9jh51][ëÇResource Explorer !!! !!!] + [9jh51][üóResource Explorer !!! !!!] - [4jCFN][ëîExplore management APIs with Azure Resource Explorer (preview). !!! !!! !!! !!! !!! !!!] + [4jCFN][@ÒExplore management APIs with Azure Resource Explorer (preview). !!! !!! !!! !!! !!! !!!] - [F31oN][ÿøCORS Rules ({0} defined) !!! !!! !] + [F31oN][õñCORS Rules ({0} defined) !!! !!! !] - [HNhDW][åÖDeployment options configured with {0} !!! !!! !!! !!] + [HNhDW][öãDeployment options configured with {0} !!! !!! !!! !!] - [LHVxe][üýSSL certificates !!! !!!] + [LHVxe][¢óSSL certificates !!! !!!] - [FmEKt][îãWebJobs ({0} defined) !!! !!! ] + [FmEKt][ùÓWebJobs ({0} defined) !!! !!! ] - [lgND1][@ÇExtensions ({0} installed) !!! !!! !!] + [lgND1][¢ÈExtensions ({0} installed) !!! !!! !!] - [cEFX1][Ý¥Overview !!! ] + [cEFX1][ýíOverview !!! ] - [XjE8q][éÜPlatform features !!! !!!] + [XjE8q][ªíPlatform features !!! !!!] - [bQrEZ][íãSettings !!! ] + [bQrEZ][ýóSettings !!! ] - [wBouT][îçFunction app settings !!! !!! ] + [wBouT][ýæFunction app settings !!! !!! ] - [nJYS7][µÑConfiguration !!! !!] + [nJYS7][ù@Configuration !!! !!] - [1RTcE][ÍÔApplication settings !!! !!! ] + [1RTcE][ÞÂApplication settings !!! !!! ] - [FmJBy][ØØManaging your Function app is not available for this trial. !!! !!! !!! !!! !!! !!] + [FmJBy][ÆôManaging your Function app is not available for this trial. !!! !!! !!! !!! !!! !!] - [Nyxzz][í@Template !!! ] + [Nyxzz][ûÂTemplate !!! ] - [O9ZVx][ÉêEvents !!!] + [O9ZVx][Ï£Events !!!] - [XOGqi][ÊæApp Service plan !!! !!!] + [XOGqi][ÿãApp Service plan !!! !!!] - [Ep7ZZ][ÙæApp Service plan / pricing tier !!! !!! !!! ] + [Ep7ZZ][ßËApp Service plan / pricing tier !!! !!! !!! ] - [refs6][óäAuthentication !!! !!] + [refs6][ÞÝAuthentication !!! !!] - [lFBC2][£µAuthorization !!! !!] + [lFBC2][óÕAuthorization !!! !!] - [d86ro][çßHybrid connections !!! !!!] + [d86ro][ÿñHybrid connections !!! !!!] - [lKqDp][íæsupport request !!! !!] + [lKqDp][Òôsupport request !!! !!] - [B5Bnd][ÏÜscale !!!] + [B5Bnd][óÕscale !!!] - [TGaI7][ùôConnection strings !!! !!!] + [TGaI7][ËÛConnection strings !!! !!!] - [c8xo6][Ø£Debug !!!] + [c8xo6][ÖÈDebug !!!] - [idt2l][ñëContinuous deployment !!! !!! ] + [idt2l][ØØContinuous deployment !!! !!! ] Source - [3qcql][ÀÀTarget !!!] + [3qcql][õÕTarget !!!] - [3kb02][ÉÖOptions !!!] + [3kb02][ùªOptions !!!] - [B7fBh][ÿÆWe are not able to access your Azure settings for your function app. !!! !!! !!! !!! !!! !!! !] + [B7fBh][ËîWe are not able to access your Azure settings for your function app. !!! !!! !!! !!! !!! !!! !] - [BUnjj][Ú©First make sure you have proper access to the Azure resource {0}. If you dotTry refreshing the portal to renew your authentication token. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] + [BUnjj][éàFirst make sure you have proper access to the Azure resource {0}. If you dotTry refreshing the portal to renew your authentication token. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] - [KngnQ][çÓPlease check the storage account connection string in application settings as it appears to be invalid. !!! !!! !!! !!! !!! !!! !!! !!! !!! !] + [KngnQ][ÅÀPlease check the storage account connection string in application settings as it appears to be invalid. !!! !!! !!! !!! !!! !!! !!! !!! !!! !] - [A9CoY][î@Update the app setting with a valid storage connection string. !!! !!! !!! !!! !!! !!!] + [A9CoY][ãÆUpdate the app setting with a valid storage connection string. !!! !!! !!! !!! !!! !!!] - [V1vac][ñª'{0}' application setting is missing from your app. This setting contains a connection string for an Azure Storage account that is used to host your functions content. Your app will be completely broken without this setting. You may need to delete and recreate this function app if you no longer have access to the value of that application setting. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!] + [V1vac][Öþ'{0}' application setting is missing from your app. This setting contains a connection string for an Azure Storage account that is used to host your functions content. Your app will be completely broken without this setting. You may need to delete and recreate this function app if you no longer have access to the value of that application setting. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!] - [SkOYm][ȵ'{0}' application setting is missing from your app. This setting contains a share name where your function content lives. Your app will be completely broken without this setting. You may need to delete and recreate this function app if you no longer have access to the value of that application setting. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!] + [SkOYm][Âí'{0}' application setting is missing from your app. This setting contains a share name where your function content lives. Your app will be completely broken without this setting. You may need to delete and recreate this function app if you no longer have access to the value of that application setting. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!] - [6uI0W][ð©'{0}' application setting is missing from your app. This setting contains a connection string for an Azure Storage account that is needed for the monitoring view of your functions. This is where invocation data is aggregated and then displayed in monitoring view. Your monitoring view might be broken. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!] + [6uI0W][þá'{0}' application setting is missing from your app. This setting contains a connection string for an Azure Storage account that is needed for the monitoring view of your functions. This is where invocation data is aggregated and then displayed in monitoring view. Your monitoring view might be broken. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!] - [KPa7R][ðñ'{0}' application setting is missing from your app. This setting contains a connection string for an Azure Storage account that is needed for the functions runtime to handle multiple instances synchronization, log invocation results, and other infrastructure jobs. Your function app will not work correctly without that setting. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! ] + [KPa7R][úÃ'{0}' application setting is missing from your app. This setting contains a connection string for an Azure Storage account that is needed for the functions runtime to handle multiple instances synchronization, log invocation results, and other infrastructure jobs. Your function app will not work correctly without that setting. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! ] - [xMA9r][ØÞCreate the app setting with a valid storage connection string. !!! !!! !!! !!! !!! !!!] + [xMA9r][öðCreate the app setting with a valid storage connection string. !!! !!! !!! !!! !!! !!!] - [KV55C][ØÖ'{0}' application setting is missing from your app. Without this setting you'll always be running the latest version of the runtime even across major version updates which might contain breaking changes. It's advised to set that value to the current latest major version (~1) and you'll get notified with newer versions for update. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] + [KV55C][êÂ'{0}' application setting is missing from your app. Without this setting you'll always be running the latest version of the runtime even across major version updates which might contain breaking changes. It's advised to set that value to the current latest major version (~1) and you'll get notified with newer versions for update. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] - [bntRS][áñAzure Storage Account connection string stored in '{0}' is null or empty. This is required to have your function app working. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] + [bntRS][ËìAzure Storage Account connection string stored in '{0}' is null or empty. This is required to have your function app working. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] - [aQUvT][ÛÀUpdate the app setting with a valid storage connection string. !!! !!! !!! !!! !!! !!!] + [aQUvT][ö©Update the app setting with a valid storage connection string. !!! !!! !!! !!! !!! !!!] - [mJiuX][ªÚStorage account {0} doesn't exist. Deleting the storage account the function app is using will cause the function app to stop working. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! ] + [mJiuX][µÈStorage account {0} doesn't exist. Deleting the storage account the function app is using will cause the function app to stop working. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! ] - [12MKK][ïáUpdate the app setting with a valid existing storage connection string. !!! !!! !!! !!! !!! !!! !!] + [12MKK][èØUpdate the app setting with a valid existing storage connection string. !!! !!! !!! !!! !!! !!! !!] - [zKm4a][ûðStorage account {0} doesn't support Azure Queues Storage. Functions runtime require queues to work properly. You'll have to delete and recreate your function app with a storage account that supports Azure Queues Storage. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!] + [zKm4a][£âStorage account {0} doesn't support Azure Queues Storage. Functions runtime require queues to work properly. You'll have to delete and recreate your function app with a storage account that supports Azure Queues Storage. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!] - [oFzW4][ÿÕThere seem to be a problem querying Azure backend for your function app. !!! !!! !!! !!! !!! !!! !!] + [oFzW4][éíThere seem to be a problem querying Azure backend for your function app. !!! !!! !!! !!! !!! !!! !!] - [RUkcZ][ôüThere seem to be a problem querying Azure backend for your function app. !!! !!! !!! !!! !!! !!! !!] + [RUkcZ][óÞThere seem to be a problem querying Azure backend for your function app. !!! !!! !!! !!! !!! !!! !!] - [cF2yV][æéIf the problem persists, contact support with the following code {{code}} !!! !!! !!! !!! !!! !!! !!!] + [cF2yV][ïÀIf the problem persists, contact support with the following code {{code}} !!! !!! !!! !!! !!! !!! !!!] - [Ak6He][ÝÿWe are not able to retrieve the list of functions for this function app. !!! !!! !!! !!! !!! !!! !!] + [Ak6He][êÜWe are not able to retrieve the list of functions for this function app. !!! !!! !!! !!! !!! !!! !!] - [CUb5G][ÝÔWe are not able to create function {{functionName}}. Please try again later. !!! !!! !!! !!! !!! !!! !!! ] + [CUb5G][êÏWe are not able to create function {{functionName}}. Please try again later. !!! !!! !!! !!! !!! !!! !!! ] - [mz5ka][£ËWe are unable to decrypt your function access keys. This can happen if you delete and recreate the app with the same name, or if you copied your keys from a different function app. You can try following steps here to fix the issue Follow steps here https://go.microsoft.com/fwlink/?linkid=844094 !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! ] + [mz5ka][£ÉWe are unable to decrypt your function access keys. This can happen if you delete and recreate the app with the same name, or if you copied your keys from a different function app. You can try following steps here to fix the issue Follow steps here https://go.microsoft.com/fwlink/?linkid=844094 !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! ] - [8eHRp][ЧWe are not able to delete the file {{fileName}}. Please try again later. !!! !!! !!! !!! !!! !!! !!] + [8eHRp][¥þWe are not able to delete the file {{fileName}}. Please try again later. !!! !!! !!! !!! !!! !!! !!] - [921Pl][þÚWe are not able to delete function '{0}'. Please try again later. !!! !!! !!! !!! !!! !!! ] + [921Pl][Ô¢We are not able to delete function '{0}'. Please try again later. !!! !!! !!! !!! !!! !!! ] - [n3ZhE][Þ¢We are not able to get the content for {{fileName}}. Please try again later. !!! !!! !!! !!! !!! !!! !!! ] + [n3ZhE][ÄÕWe are not able to get the content for {{fileName}}. Please try again later. !!! !!! !!! !!! !!! !!! !!! ] - [6xua9][ãÜWe are not able to retrieve your functions right now. Please try again later. !!! !!! !!! !!! !!! !!! !!! ] + [6xua9][ýùWe are not able to retrieve your functions right now. Please try again later. !!! !!! !!! !!! !!! !!! !!! ] - [Mq223][ÇÙWe are not able to retrieve secrets file for {{functionName}}. Please try again later. !!! !!! !!! !!! !!! !!! !!! !!!] + [Mq223][ÆÐWe are not able to retrieve secrets file for {{functionName}}. Please try again later. !!! !!! !!! !!! !!! !!! !!! !!!] - [d1vn7][ðóWe are not able to save the content for {{fileName}}. Please try again later. !!! !!! !!! !!! !!! !!! !!! ] + [d1vn7][éôWe are not able to save the content for {{fileName}}. Please try again later. !!! !!! !!! !!! !!! !!! !!! ] - [GCI35][ÔðWe are not able to retrieve directory content for your function. Please try again later. !!! !!! !!! !!! !!! !!! !!! !!! ] + [GCI35][ÌÝWe are not able to retrieve directory content for your function. Please try again later. !!! !!! !!! !!! !!! !!! !!! !!! ] - [t4Mct][¢ÕWe are unable to get the content for function '{0}'. Please try again later. !!! !!! !!! !!! !!! !!! !!! ] + [t4Mct][§äWe are unable to get the content for function '{0}'. Please try again later. !!! !!! !!! !!! !!! !!! !!! ] - [svvPz][©éWe are unable to save the content for function '{0}'. !!! !!! !!! !!! !!! ] + [svvPz][ÁÖWe are unable to save the content for function '{0}'. !!! !!! !!! !!! !!! ] - [WuvPO][ÆËWe are unable to retrieve the runtime config. Please try again later. !!! !!! !!! !!! !!! !!! !] + [WuvPO][ÕßWe are unable to retrieve the runtime config. Please try again later. !!! !!! !!! !!! !!! !!! !] - [xtFcf][çßWe are not able to retrieve the runtime master key. Please try again later. !!! !!! !!! !!! !!! !!! !!!] + [xtFcf][òÓWe are not able to retrieve the runtime master key. Please try again later. !!! !!! !!! !!! !!! !!! !!!] - [b4qdt][âóWe are not able to update function {{functionName}}. Please try again later. !!! !!! !!! !!! !!! !!! !!! ] + [b4qdt][ûôWe are not able to update function {{functionName}}. Please try again later. !!! !!! !!! !!! !!! !!! !!! ] - [NXrAF][ÅìThe function runtime is unable to start. !!! !!! !!! !!!] + [NXrAF][ú¥The function runtime is unable to start. !!! !!! !!! !!!] - [hnooV][ÄÿWe are not able to create or update the key {{keyName}} for function {{functionName}}. This can happen if the runtime is not able to load your function. Check other function errors. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! ] + [hnooV][îøWe are not able to create or update the key {{keyName}} for function {{functionName}}. This can happen if the runtime is not able to load your function. Check other function errors. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! ] - [YBZ0y][òùWe are not able to delete the key {{keyName}} for function {{functionName}}. This can happen if the runtime is not able to load your function. Check other function errors. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] + [YBZ0y][ØÕWe are not able to delete the key {{keyName}} for function {{functionName}}. This can happen if the runtime is not able to load your function. Check other function errors. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] - [LM61O][ßáWe are not able to renew the key {{keyName}} for function {{functionName}}. This can happen if the runtime is not able to load your function. Check other function errors. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] + [LM61O][ÿ§We are not able to renew the key {{keyName}} for function {{functionName}}. This can happen if the runtime is not able to load your function. Check other function errors. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] - [MF3jJ][ÃÏWe are not able to retrieve the keys for function {{functionName}}. This can happen if the runtime is not able to load your function. Check other function errors. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!] + [MF3jJ][ÎáWe are not able to retrieve the keys for function {{functionName}}. This can happen if the runtime is not able to load your function. Check other function errors. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!] - [Y4myA][çæThe application is offline. Please check your internet connection. !!! !!! !!! !!! !!! !!! ] + [Y4myA][íËThe application is offline. Please check your internet connection. !!! !!! !!! !!! !!! !!! ] - [dwixq][ÚåACTIONS !!!] + [dwixq][Í£ACTIONS !!!] - [NYo3z][ôÆgo to the quickstart !!! !!! ] + [NYo3z][þ£go to the quickstart !!! !!! ] - [TCWwD][ÝÚThere are no query parameters !!! !!! !!!] + [TCWwD][ûÕThere are no query parameters !!! !!! !!!] - [tJL99][àäCollapse !!! ] + [tJL99][ùâCollapse !!! ] - [ckWwM][ÈàAre you sure you want to delete your API definition? !!! !!! !!! !!! !!!] + [ckWwM][@ÝAre you sure you want to delete your API definition? !!! !!! !!! !!! !!!] - [Vv7Oc][æÕDocumentation !!! !!] + [Vv7Oc][øÌDocumentation !!! !!] - [jCjLN][äÅExpand !!!] + [jCjLN][ÇÇExpand !!!] - [IF9rQ][óñExternal URL !!! !] + [IF9rQ][ÖñExternal URL !!! !] - [4l8QL][ÌÀRead the feature overview !!! !!! !!] + [4l8QL][ùÇRead the feature overview !!! !!! !!] - [YoTQF][ÄäCheck out our getting started tutorial !!! !!! !!! !!] + [YoTQF][ØßCheck out our getting started tutorial !!! !!! !!! !!] - [GTle9][Õ£Function (preview) !!! !!!] + [GTle9][éåFunction (preview) !!! !!!] - [T84bF][øÕAPI definition key !!! !!!] + [T84bF][ÊÅAPI definition key !!! !!!] - [azP36][æåLoad API definition !!! !!! ] + [azP36][ÞÞLoad API definition !!! !!! ] - [GW7Lo][©íGenerate API definition template !!! !!! !!! ] + [GW7Lo][áËGenerate API definition template !!! !!! !!! ] - [64oB2][ò©Export to PowerApps + Flow !!! !!! !!] + [64oB2][éÎExport to PowerApps + Flow !!! !!! !!] - [ERMjP][ìÃCannot save malformed API definition. !!! !!! !!! !!] + [ERMjP][åíCannot save malformed API definition. !!! !!! !!! !!] - [3MNSt][äÄRenew !!!] + [3MNSt][íðRenew !!!] - [DHcyM][üÆSet external definition URL !!! !!! !!] + [DHcyM][ïÍSet external definition URL !!! !!! !!] - [pjq3N][Ò¥API definition source !!! !!! ] + [pjq3N][ÍÂAPI definition source !!! !!! ] - [ZmaYW][ìèConsume your HTTP triggered Functions in a variety of services using an OpenAPI 2.0 (Swagger) definition !!! !!! !!! !!! !!! !!! !!! !!! !!! !] + [ZmaYW][ÈüConsume your HTTP triggered Functions in a variety of services using an OpenAPI 2.0 (Swagger) definition !!! !!! !!! !!! !!! !!! !!! !!! !!! !] - [ARPZs][þÝFunction API definition (Swagger) !!! !!! !!! !] + [ARPZs][Ú§Function API definition (Swagger) !!! !!! !!! !] - [vesbU][ÆÄAPI definition URL !!! !!!] + [vesbU][ÍüAPI definition URL !!! !!!] - [nx1L4][èÉUse your API definition !!! !!! !] + [nx1L4][çÝUse your API definition !!! !!! !] - [oOnhd][µÈAPI definition !!! !!] + [oOnhd][éìAPI definition !!! !!] - [fph36][ÃóWe are not able to create or update the key swaggerdocumentationkey for the Swagger Endpoint. Please check the runtime logs for any errors or try again later. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! ] + [fph36][ÝðWe are not able to create or update the key swaggerdocumentationkey for the Swagger Endpoint. Please check the runtime logs for any errors or try again later. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! ] - [2pH3A][îâWe are not able to delete the API defintion. Please check the runtime logs for any errors or try again later. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!] + [2pH3A][¥ÞWe are not able to delete the API defintion. Please check the runtime logs for any errors or try again later. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!] - [tzO0c][êÄWe are not able to get the key {{keyName}}. Please check the runtime logs for any errors or try again later. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!] + [tzO0c][þþWe are not able to get the key {{keyName}}. Please check the runtime logs for any errors or try again later. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!] - [0wF6y][ЩWe are not able to load the generated API definition. Please check the runtime logs for any errors or try again later. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!] + [0wF6y][äËWe are not able to load the generated API definition. Please check the runtime logs for any errors or try again later. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!] - [V4UHe][éÙWe are unable to update the runtime config. Please try again later. !!! !!! !!! !!! !!! !!! ] + [V4UHe][ÀáWe are unable to update the runtime config. Please try again later. !!! !!! !!! !!! !!! !!! ] - [3XtJs][@ÙWe are not able to update the API definition. Please check the runtime logs for any errors or try again later. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!] + [3XtJs][ÐñWe are not able to update the API definition. Please check the runtime logs for any errors or try again later. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!] - [H6hhu][ñïRevert to last save !!! !!! ] + [H6hhu][ÓðRevert to last save !!! !!! ] - [2hLAJ][É@Configure App Service Authentication / Authorization !!! !!! !!! !!! !!!] + [2hLAJ][õÍConfigure App Service Authentication / Authorization !!! !!! !!! !!! !!!] - [pITlI][ÌÜ#Click "Generate API definition template" to get started !!! !!! !!! !!! !!! !] + [pITlI][ÙÅ#Click "Generate API definition template" to get started !!! !!! !!! !!! !!! !] - [Q1Zo3][õÙAre you sure you want to overwrite the API definition in the editor? !!! !!! !!! !!! !!! !!! !] + [Q1Zo3][âÝAre you sure you want to overwrite the API definition in the editor? !!! !!! !!! !!! !!! !!! !] - [lhYWH][ðÉUse your API definition to access your Functions from within <a href="https://powerapps.microsoft.com/en-us/" target="_blank">PowerApps</a> and <a href="https://ms.flow.microsoft.com/en-us/" target="_blank">Flow</a>. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] + [lhYWH][ØþUse your API definition to access your Functions from within <a href="https://powerapps.microsoft.com/en-us/" target="_blank">PowerApps</a> and <a href="https://ms.flow.microsoft.com/en-us/" target="_blank">Flow</a>. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] - [SXxOE][ÙÌCreate a sparse definition with the metadata from your HTTP triggered functions. !!! !!! !!! !!! !!! !!! !!! !] -[SXxOE][óùFill in the <a href="http://swagger.io/specification/#operationObject" target="_blank">operation objects</a>, and other information about your API before use. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! ] + [SXxOE][ãóCreate a sparse definition with the metadata from your HTTP triggered functions. !!! !!! !!! !!! !!! !!! !!! !] +[SXxOE][ÚÜFill in the <a href="http://swagger.io/specification/#operationObject" target="_blank">operation objects</a>, and other information about your API before use. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! ] - [5MTfU][úØThis key secures your API Definition from access to anyone without the key. !!! !!! !!! !!! !!! !!! !!!] -[5MTfU][èïIt does not secure the underlying API. See each Function to see their key security. !!! !!! !!! !!! !!! !!! !!! !!] + [5MTfU][ðÏThis key secures your API Definition from access to anyone without the key. !!! !!! !!! !!! !!! !!! !!!] +[5MTfU][Ì£It does not secure the underlying API. See each Function to see their key security. !!! !!! !!! !!! !!! !!! !!! !!] - [Swwu3][êôSet to "Function" to enable a hosted API definition and template definition generation. !!! !!! !!! !!! !!! !!! !!! !!!] -[Swwu3][ÆÙSet to "External URL" to use an API definition that is hosted elsewhere. !!! !!! !!! !!! !!! !!! !!] + [Swwu3][ÛçSet to "Function" to enable a hosted API definition and template definition generation. !!! !!! !!! !!! !!! !!! !!! !!!] +[Swwu3][üÍSet to "External URL" to use an API definition that is hosted elsewhere. !!! !!! !!! !!! !!! !!! !!] - [6UDTj][Ç¥Use this URL to directly access your API definition and import into 3rd party tools !!! !!! !!! !!! !!! !!! !!! !!] + [6UDTj][íàUse this URL to directly access your API definition and import into 3rd party tools !!! !!! !!! !!! !!! !!! !!! !!] - [EzURR][§ÉApplication Insights !!! !!! ] + [EzURR][ÏûApplication Insights !!! !!! ] - [mEQmo][ÖµChange the edit mode of your function app !!! !!! !!! !!!] + [mEQmo][ßßChange the edit mode of your function app !!! !!! !!! !!!] - [4eTe5][ûÍFunction app edit mode !!! !!! !] + [4eTe5][ßãFunction app edit mode !!! !!! !] - [nJom2][úùRead Only !!! ] + [nJom2][ÈîRead Only !!! ] - [U4pE3][ü£Read/Write !!! !] + [U4pE3][ú§Read/Write !!! !] - [Zzv2w][ÔÒPlease enter a valid decimal value with format 'ddd.dd'. !!! !!! !!! !!! !!! !] + [Zzv2w][ÀÍPlease enter a valid decimal value with format 'ddd.dd'. !!! !!! !!! !!! !!! !] - [9JO8l][ÌæValue must be an decimal in the range of {{min}} to {{max}} !!! !!! !!! !!! !!! !!] + [9JO8l][À¥Value must be an decimal in the range of {{min}} to {{max}} !!! !!! !!! !!! !!! !!] - [GCMGe][óÈDuplicate values are not allowed !!! !!! !!! ] + [GCMGe][ÿãDuplicate values are not allowed !!! !!! !!! ] - [wNaEo][ÔÝERROR !!!] + [wNaEo][ÜêERROR !!!] - [tChhA][ãÓThis field can only contain letters, numbers (0-9), periods ("."), and underscores ("_") !!! !!! !!! !!! !!! !!! !!! !!! ] + [tChhA][öÔThis field can only contain letters, numbers (0-9), periods ("."), and underscores ("_") !!! !!! !!! !!! !!! !!! !!! !!! ] - [woMWd][ÔÿThis field is required !!! !!! !] + [woMWd][¢ÐThis field is required !!! !!! !] - [gPeHU][êÎSum of routing percentage value of all rules must be less than or equal to 100.0 !!! !!! !!! !!! !!! !!! !!! !] + [gPeHU][ЩSum of routing percentage value of all rules must be less than or equal to 100.0 !!! !!! !!! !!! !!! !!! !!! !] - [FJCjM][èÍThe name must be at least 2 characters !!! !!! !!! !!] + [FJCjM][µîThe name must be at least 2 characters !!! !!! !!! !!] - [HNHBo][ÜüThe name must be fewer than 60 characters !!! !!! !!! !!!] + [HNHBo][ÛÌThe name must be fewer than 60 characters !!! !!! !!! !!!] - [Z4hHw][îÊ'{0}' is an invalid character !!! !!! !!!] + [Z4hHw][æã'{0}' is an invalid character !!! !!! !!!] - [uP4uR][ôÒThe app name '{0}' is not available !!! !!! !!! !] + [uP4uR][ÓÃThe app name '{0}' is not available !!! !!! !!! !] - [ZA4jK][ÄÊWe are unable to update your function app's edit mode. Please try again later. !!! !!! !!! !!! !!! !!! !!! ] + [ZA4jK][üóWe are unable to update your function app's edit mode. Please try again later. !!! !!! !!! !!! !!! !!! !!! ] - [p67R2][ÇæYour app is currently in read only mode because you've set the edit mode to read only. To change edit mode visit !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] + [p67R2][ÝáYour app is currently in read only mode because you've set the edit mode to read only. To change edit mode visit !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] - [H4d2E][Á§Your app is currently in read\write mode because you've set the edit mode to read\write despite having source control enabled. Any changes you make may get overwritten with your next deployment. To change edit mode visit !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!] + [H4d2E][ýÖYour app is currently in read/write mode because you've set the edit mode to read/write despite having source control enabled. Any changes you make may get overwritten with your next deployment. To change edit mode visit !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!] - [aFR98][âØYour app is currently in read-only mode because you have published a generated function.json. Changes made to function.json will not be honored by the Functions runtime. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] + [aFR98][øÓYour app is currently in read-only mode because you have published a generated function.json. Changes made to function.json will not be honored by the Functions runtime. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] - [iaYxN][£ãYour app is currently in read\write mode because you've set the edit mode to read\write despite having a generated function.json. Changes made to function.json will not be honored by the Functions runtime. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] + [iaYxN][§ÍYour app is currently in read/write mode because you've set the edit mode to read/write despite having a generated function.json. Changes made to function.json will not be honored by the Functions runtime. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] - [g9tRk][ôãCopy !!] + [g9tRk][ùæCopy !!] - [DBggp][ã@Get function URL !!! !!!] + [DBggp][§ØGet function URL !!! !!!] - [TaSk1][ßßKey !!] + [TaSk1][ÊÍKey !!] - [rpLfL][µÿURL !!] + [rpLfL][ÑüURL !!] - [cwf16][ÛþDownload app content !!! !!! ] + [cwf16][ðìDownload app content !!! !!! ] - [EFtI8][ùÏAre you sure you want to renew {{name}} key? !!! !!! !!! !!! ] + [EFtI8][üÔAre you sure you want to renew {{name}} key? !!! !!! !!! !!! ] - [5Ipct][þúAzure Functions are an event-based serverless compute experience to accelerate your development. Scale based on demand and pay only for the resources you consume. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!] + [5Ipct][ÒÞAzure Functions are an event-based serverless compute experience to accelerate your development. Scale based on demand and pay only for the resources you consume. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!] - [lWp2b][áÆLearn more about azure functions !!! !!! !!! ] + [lWp2b][ïýLearn more about azure functions !!! !!! !!! ] - [8RrXM][î©Event Hub !!! ] + [8RrXM][éÕEvent Hub !!! ] - [aaleI][ÑÝNamespace !!! ] + [aaleI][ÀµNamespace !!! ] - [UHcee][ÇÈNot found. !!! !] + [UHcee][ëÕNot found. !!! !] - [20U9s][ÛáEndpoint !!! ] + [20U9s][ãýEndpoint !!! ] - [yejjZ][ïåNo function apps to display !!! !!! !!] + [yejjZ][öìNo function apps to display !!! !!! !!] - [x0DPN][ØÌSlots (preview) !!! !!] + [x0DPN][àÜSlots (preview) !!! !!] - [mKJji][ßÜEnable deployment slots (preview). !!! !!! !!! !] + [mKJji][æÁEnable deployment slots (preview). !!! !!! !!! !] - [Q79Iw][ÜçKnown issues: !!! !!] + [Q79Iw][õýKnown issues: !!! !!] - [3IbBo][ÁöLogic apps integration with Functions does not work when Slots(preview) is enabled. !!! !!! !!! !!! !!! !!! !!! !!] + [3IbBo][ÜÔLogic apps integration with Functions does not work when Slots(preview) is enabled. !!! !!! !!! !!! !!! !!! !!! !!] - [SytoJ][¢ÐOpting into this preview feature will reset any pre-existing secrets. Function secrets can be found under the !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!] + [SytoJ][ïþOpting into this preview feature will reset any pre-existing secrets. Function secrets can be found under the !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!] - [OSJlv][íÞ'Manage' !!! ] + [OSJlv][îå'Manage' !!! ] - [01pD8][çõnode for each function. !!! !!! !] + [01pD8][âénode for each function. !!! !!! !] - [Tq549][¥ÌA slot create operation is currently in progress. After navigating away, you will no longer be able to check operation status. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] + [Tq549][ÛþA slot create operation is currently in progress. After navigating away, you will no longer be able to check operation status. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] - [QuACL][ÌÉAdd Slot !!! ] + [QuACL][ÒßAdd Slot !!! ] - [g5FTm][ÙñName !!] + [g5FTm][Ç@Name !!] - [rjVnr][ÆìCreate a new deployment slot !!! !!! !!!] + [rjVnr][ÜÒCreate a new deployment slot !!! !!! !!!] - [wt9Bn][äÜDeployment slots let you deploy different versions of your function app to different URLs. You can test a certain version and then swap content and configuration between slots. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!] + [wt9Bn][ï¥Deployment slots let you deploy different versions of your function app to different URLs. You can test a certain version and then swap content and configuration between slots. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!] - [P5HvO][¢ÔCreating new slot {0} !!! !!! !] + [P5HvO][ëýCreating new slot {0} !!! !!! !] - [VYz2A][ÃÑSuccessfully created slot {0} !!! !!! !!!] + [VYz2A][£ÜSuccessfully created slot {0} !!! !!! !!!] - [AwcrL][ÔÞFailed to create slot {0} !!! !!! !!] + [AwcrL][ÀâFailed to create slot {0} !!! !!! !!] - [4D09u][ÀáUnable to upate the list of slots !!! !!! !!! !] + [4D09u][áûUnable to upate the list of slots !!! !!! !!! !] - [NpJiv][ñÂYou have reached the slots quota limit ({{quota}}) for the current plan. !!! !!! !!! !!! !!! !!! !!] + [NpJiv][æÿYou have reached the slots quota limit ({{quota}}) for the current plan. !!! !!! !!! !!! !!! !!! !!] - [QXLB1][ìðPlease upgrade your plan. !!! !!! !!] + [QXLB1][ïöPlease upgrade your plan. !!! !!! !!] - [VevG5][öÝNo access to create a slot. Please ensure you have the right RBAC access for the function app and do not have read locks enabled either. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] + [VevG5][ÔÄNo access to create a slot. Please ensure you have the right RBAC access for the function app and do not have read locks enabled either. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] - [z7mIU][©ÍUpgrade to a standard or premium plan to add slots. !!! !!! !!! !!! !!!] + [z7mIU][ØÚUpgrade to a standard or premium plan to add slots. !!! !!! !!! !!! !!!] - [jZ9ZM][ÉÌDeployment slots are live apps with their own hostnames. App content and configurations elements can be swapped between two deployment slots, including the production slot. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] + [jZ9ZM][§ÝDeployment slots are live apps with their own hostnames. App content and configurations elements can be swapped between two deployment slots, including the production slot. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] - [nM8wV][ÌøSetting !!!] + [nM8wV][ÒçSetting !!!] - [8Z8HD][ÓßType !!] + [8Z8HD][ÊçType !!] - [45QYO][àÜOld Value !!! ] + [45QYO][øÕOld Value !!! ] - [euGjY][¥ØNew Value !!! ] + [euGjY][ÿÂNew Value !!! ] - [A0Cc5][ÙíYou haven't added any deployment slots. Click 'Add Slot' to get started. !!! !!! !!! !!! !!! !!! !!] + [A0Cc5][â§You haven't added any deployment slots. Click 'Add Slot' to get started. !!! !!! !!! !!! !!! !!! !!] - [LKyiE][ÀÚName !!] + [LKyiE][ÑÎName !!] - [gG2Mn][ü©Status !!!] + [gG2Mn][Í¢Status !!!] - [Dy7Lz][ËÐApp service plan !!! !!!] + [Dy7Lz][ëæApp service plan !!! !!!] - [cvLVm][óÃTraffic % !!! ] + [cvLVm][ÔÒTraffic % !!! ] - [zro6b][åÌSlots (preview) !!! !!] + [zro6b][è¥Slots (preview) !!! !!] - [Y5Ffx][ÜáFor a richer monitoring experience, including live metrics and custom queries: !!! !!! !!! !!! !!! !!! !!! ] + [Y5Ffx][ñËFor a richer monitoring experience, including live metrics and custom queries: !!! !!! !!! !!! !!! !!! !!! ] - [6b5WZ][ÄËconfigure Application Insights for your function app !!! !!! !!! !!! !!!] + [6b5WZ][Åóconfigure Application Insights for your function app !!! !!! !!! !!! !!!] - [6I6Zu][óæThis value will be appended to your main web app's URL and will serve as the public address of the slot. For example if you have a web app named 'contoso' and a slot named ‘staging’ then the new slot will have a URL like ‘http://contoso-staging.azurewebsites.net’. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!] + [6I6Zu][¥äThis value will be appended to your main web app's URL and will serve as the public address of the slot. For example if you have a web app named 'contoso' and a slot named ‘staging’ then the new slot will have a URL like ‘http://contoso-staging.azurewebsites.net’. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!] - [Fh049][ÅóConsumption plan allows only for a single slot. If you need more than one slot, please use dedicated App Service plans. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!] + [Fh049][ûÆConsumption plan allows only for a single slot. If you need more than one slot, please use dedicated App Service plans. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!] - [1cMFu][úÍSearch functions !!! !!!] + [1cMFu][ìïSearch functions !!! !!!] - [LRWQt][@ðNew !!] + [LRWQt][ËÈNew !!] - [x5Q2C][ÃõCreate new !!! !] + [x5Q2C][ÇýCreate new !!! !] - [k41rD][ÜèDelete function !!! !!] + [k41rD][ªþDelete function !!! !!] - [lx92w][ÅàA client certificate is required to call run this function. To run it from the portal you have to disable client certificate. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] + [lx92w][Í@A client certificate is required to call run this function. To run it from the portal you have to disable client certificate. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] - [VtvSH][ÒÞYour app is currently in read only mode because you have slot(s) configured. To change edit mode visit !!! !!! !!! !!! !!! !!! !!! !!! !!! !] + [VtvSH][ÞúYour app is currently in read only mode because you have slot(s) configured. To change edit mode visit !!! !!! !!! !!! !!! !!! !!! !!! !!! !] - [pzNRc][òÿManage application settings !!! !!! !!] + [pzNRc][ÝÝManage application settings !!! !!! !!] - [E7oyl][èóIoT hub !!!] + [E7oyl][ªþIoT hub !!!] - [KH97Q][ÙöKey !!] + [KH97Q][þÍKey !!] - [F7c1R][©ÂValue !!!] + [F7c1R][ÈþValue !!!] - [FmFxE][µðConnection !!! !] + [FmFxE][çóConnection !!! !] - [zby0Q][Ð@Custom !!!] + [zby0Q][ÊãCustom !!!] - [ZWlMm][ËÚEvents (built-in endpoint) !!! !!! !!] + [ZWlMm][ͧEvents (built-in endpoint) !!! !!! !!] - [Z5ZPz][ñîOperations monitoring !!! !!! ] + [Z5ZPz][èÞOperations monitoring !!! !!! ] - [TI96d][îßPolicy !!!] + [TI96d][ä§Policy !!!] - [4VkS7][ÑÚThe proxies.json schema validation failed. Error: '{0}'. !!! !!! !!! !!! !!! !] + [4VkS7][¢ÑThe proxies.json schema validation failed. Error: '{0}'. !!! !!! !!! !!! !!! !] - [tY43Y][ÓÐOn a Consumption plan, you can limit platform usage by setting a daily usage quota, in gigabytes-seconds. Once the daily usage quota is reached, the Function App is stopped until the next day at 0:00 AM UTC. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] + [tY43Y][ÚÓOn a Consumption plan, you can limit platform usage by setting a daily usage quota, in gigabytes-seconds. Once the daily usage quota is reached, the Function App is stopped until the next day at 0:00 AM UTC. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] - [2fYk0][ýÐ(hub policy) !!! !] + [2fYk0][õï(hub policy) !!! !] - [K8FZV][èØ(namespace policy) !!! !!!] + [K8FZV][ÐÅ(namespace policy) !!! !!!] - [LTeqh][ÓÄService Bus !!! !] + [LTeqh][Þ£Service Bus !!! !] - [Gaeet][èåApp setting is not found. !!! !!! !!] + [Gaeet][¢ÂApp setting is not found. !!! !!! !!] - [7zRjt][ÀÑshow value !!! !] + [7zRjt][ÎÑshow value !!! !] - [1TSkP][ÊûAdd app setting !!! !!] + [1TSkP][ìïAdd app setting !!! !!] - [blzNw][ÙÝAdd storage account connection string !!! !!! !!! !!] + [blzNw][àòAdd storage account connection string !!! !!! !!! !!] - [WjzcG][õÍAccount name !!! !] + [WjzcG][ËÿAccount name !!! !] - [dPdw7][ÏýAccount key !!! !] + [dPdw7][ÈÊAccount key !!! !] - [yAWLf][§ástorage account connection string name !!! !!! !!! !!] + [yAWLf][ôÑstorage account connection string name !!! !!! !!! !!] - [YP0Mw][ÕìEnter a name for storage account connection string !!! !!! !!! !!! !!!] + [YP0Mw][ýúEnter a name for storage account connection string !!! !!! !!! !!! !!!] - [PZfYT][Æ¥Storage endpoints domain !!! !!! !] + [PZfYT][ãêStorage endpoints domain !!! !!! !] - [XLC5Z][ÙßMicrosoft Azure !!! !!] + [XLC5Z][üîMicrosoft Azure !!! !!] - [7Xri2][äÉOther(specify bellow) !!! !!! ] + [7Xri2][£ÔOther(specify bellow) !!! !!! ] - [i1Yet][üÜEnter storage endpoints domain !!! !!! !!!] + [i1Yet][ÂÔEnter storage endpoints domain !!! !!! !!!] - [75Jr6][êùAdd Sql connection string !!! !!! !!] + [75Jr6][úÑAdd Sql connection string !!! !!! !!] - [ovl20][î¢SQL Server endpoint !!! !!! ] + [ovl20][ÛþSQL Server endpoint !!! !!! ] - [j9wHa][àáDatabase name !!! !!] + [j9wHa][¢ìDatabase name !!! !!] - [b1nE3][çåUser name !!! ] + [b1nE3][ÙàUser name !!! ] - [vn2m0][ÿæPassword !!! ] + [vn2m0][©úPassword !!! ] - [lZ40c][§ØDownload !!! ] + [lZ40c][ýæDownload !!! ] - [X4DJu][ÆøInclude app settings in the download !!! !!! !!! !!] + [X4DJu][äúInclude app settings in the download !!! !!! !!! !!] - [GaH6W][ôñThis will include a file called local.settings.json which will contain your app settings values. This file will not be encrypted on download, but can be encrypted using the Azure Functions Core Tools command line. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! ] + [GaH6W][ÏàThis will include a file called local.settings.json which will contain your app settings values. This file will not be encrypted on download, but can be encrypted using the Azure Functions Core Tools command line. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! ] - [Lw6h3][ªÑSite content !!! !] + [Lw6h3][ÖÓSite content !!! !] - [p1ON6][ùýContent and Visual Studio project !!! !!! !!! !] + [p1ON6][ØæContent and Visual Studio project !!! !!! !!! !] - [XoZZE][öõretrieve !!! ] + [XoZZE][éûretrieve !!! ] - [w14cI][åöDelete proxy !!! !] + [w14cI][ÿ¢Delete proxy !!! !] - [cSEIi][ÏËNew proxy !!! ] + [cSEIi][ØúNew proxy !!! ] - [PyIlD][@èNo override !!! !] + [PyIlD][ÊÜNo override !!! !] - [AFdQO][ÚËExpress AAD Registration !!! !!! !] + [AFdQO][ðÓExpress AAD Registration !!! !!! !] - [bddiW][@Ûcreate !!!] + [bddiW][ªÌcreate !!!] - [yYNx2][ÆÅYou need to add Event Grid subscription after function creation. !!! !!! !!! !!! !!! !!!] + [yYNx2][ªùYou need to add Event Grid subscription after function creation. !!! !!! !!! !!! !!! !!!] - [yeMVM][ÆòEvent Grid Subscription URL !!! !!! !!] + [yeMVM][ØüEvent Grid Subscription URL !!! !!! !!] - [2cXar][ÐñEvent Grid Subscription URL !!! !!! !!] + [2cXar][ñØEvent Grid Subscription URL !!! !!! !!] - [b5lFs][ÿòManage Event Grid subscriptions !!! !!! !!! ] + [b5lFs][ÐÝManage Event Grid subscriptions !!! !!! !!! ] - [jMclh][çìAdd Event Grid subscription !!! !!! !!] + [jMclh][äêAdd Event Grid subscription !!! !!! !!] - [YxLqo][¥øAll locations !!! !!] + [YxLqo][ÁúAll locations !!! !!] - [LEsTI][þÿ{0} locations !!! !!] + [LEsTI][ôú{0} locations !!! !!] - [Jpoxb][ßîLocation: !!! ] + [Jpoxb][ÕþLocation: !!! ] - [gRZrb][ÐçGroup by location !!! !!!] + [gRZrb][§úGroup by location !!! !!!] - [exfIA][ßÊNo grouping !!! !] + [exfIA][ÒûNo grouping !!! !] - [oGE50][ñÚGroup by resource group !!! !!! !] + [oGE50][ýãGroup by resource group !!! !!! !] - [00Oih][þÒGroup by subscription !!! !!! ] + [00Oih][èÝGroup by subscription !!! !!! ] - [3yiMx][ÒùSouth Central US !!! !!!] + [3yiMx][ôÑSouth Central US !!! !!!] - [EUzvP][øÍNorth Europe !!! !] + [EUzvP][ÊËNorth Europe !!! !] - [guPGZ][ÚÛWest Europe !!! !] + [guPGZ][áÿWest Europe !!! !] - [xS9TN][ÃîSoutheast Asia !!! !!] + [xS9TN][õÎSoutheast Asia !!! !!] - [kg5k6][¥µKorea Central !!! !!] + [kg5k6][ùëKorea Central !!! !!] - [TAcHH][ÎàKorea South !!! !] + [TAcHH][æßKorea South !!! !] - [oTtF2][ìáWest US !!!] + [oTtF2][áÒWest US !!!] - [E2QYb][çêEast US !!!] + [E2QYb][È¥East US !!!] - [lOg0d][ôÄJapan West !!! !] + [lOg0d][êùJapan West !!! !] - [17plQ][õÅJapan East !!! !] + [17plQ][á¥Japan East !!! !] - [5T1Ay][öêEast Asia !!! ] + [5T1Ay][øÀEast Asia !!! ] - [1urMP][ËñEast US 2 !!! ] + [1urMP][ÑýEast US 2 !!! ] - [66n1n][ÄñNorth Central US !!! !!!] + [66n1n][äÅNorth Central US !!! !!!] - [qhVOZ][áÑCentral US !!! !] + [qhVOZ][@îCentral US !!! !] - [4C1Ym][ÅõBrazil South !!! !] + [4C1Ym][àÁBrazil South !!! !] - [RKZvt][©ÇAustralia East !!! !!] + [RKZvt][£ýAustralia East !!! !!] - [NJBiv][ÿîAustralia Southeast !!! !!! ] + [NJBiv][ʧAustralia Southeast !!! !!! ] - [XMaSa][ÚïWest India !!! !] + [XMaSa][ÄÝWest India !!! !] - [nH0IH][ÚëCentral India !!! !!] + [nH0IH][ðµCentral India !!! !!] - [JxQIz][ÓèSouth India !!! !] + [JxQIz][ý@South India !!! !] - [JaRYE][©íCanada Central !!! !!] + [JaRYE][ÒÏCanada Central !!! !!] - [CRBb4][øðCanada East !!! !] + [CRBb4][ªßCanada East !!! !] - [FU30n][ëÞWest Central US !!! !!] + [FU30n][ÓíWest Central US !!! !!] - [j1Z6n][à¢UK West !!!] + [j1Z6n][ÄåUK West !!!] - [uCcvA][ªüUK South !!! ] + [uCcvA][ëÓUK South !!! ] - [cCuEK][ÖÈWest US 2 !!! ] + [cCuEK][ÊÀWest US 2 !!! ] - [AvkK3][þáAll resource groups !!! !!! ] + [AvkK3][áèAll resource groups !!! !!! ] - [2QtJL][áÐResource Group: !!! !!] + [2QtJL][çÌResource Group: !!! !!] - [GpXkv][èå{0} resource groups !!! !!! ] + [GpXkv][¥î{0} resource groups !!! !!! ] - [msE4p][ð¢Body !!] + [msE4p][éùBody !!] - [Dtfy3][µÎStatus code !!! !] + [Dtfy3][úÂStatus code !!! !] - [jUqZr][¢ÇStatus message !!! !!] + [jUqZr][ÍôStatus message !!! !!] - [zj3oN][ÎÞRequest override !!! !!!] + [zj3oN][§ÁRequest override !!! !!!] - [VJAdo][âÝResponse override !!! !!!] + [VJAdo][§þResponse override !!! !!!] - [cTz7g][ÀÔOptional !!! ] + [cTz7g][ÌÊOptional !!! ] - [2Rxoj][íÞGit Clone Uri !!! !!] + [2Rxoj][óïGit Clone Uri !!! !!] - [CHlQt][ÊÇRollback Enabled !!! !!!] + [CHlQt][üÚRollback Enabled !!! !!!] - [Pw6js][ÚÅSource Control Type !!! !!! ] + [Pw6js][ç@Source Control Type !!! !!! ] - [c17X7][õæRedeploy !!! ] + [c17X7][@èRedeploy !!! ] - [1akXj][ÅýActivity !!! ] + [1akXj][ÅÏActivity !!! ] - [nsok1][£ÔActive !!!] + [nsok1][ªáActive !!!] - [HUTfw][ÑðTime !!] + [HUTfw][æçTime !!] - [x99lt][ÙµLog !!] + [x99lt][öÊLog !!] - [s452x][äÜShow Logs... !!! !] + [s452x][ÛäShow Logs... !!! !] - [gr7nB][éóStatus !!!] + [gr7nB][üóStatus !!!] - [ONfWr][ËÏCommit ID (Author) !!! !!!] + [ONfWr][ïóCommit ID (Author) !!! !!!] - [LueEf][Á§Checkin Message !!! !!] + [LueEf][ÝúCheckin Message !!! !!] - [4eS5j][âÉYou're using a prerelease version of Azure Functions. Thanks for trying it out! !!! !!! !!! !!! !!! !!! !!! !] + [4eS5j][íÀYou're using a prerelease version of Azure Functions. Thanks for trying it out! !!! !!! !!! !!! !!! !!! !!! !] - [kUC52][ìÓClick to hide !!! !!] + [kUC52][çÍClick to hide !!! !!] - [kbNfC][ÄêLogic Apps allow you to easily utilize your function across multiple platforms !!! !!! !!! !!! !!! !!! !!! ] + [kbNfC][áÐLogic Apps allow you to easily utilize your function across multiple platforms !!! !!! !!! !!! !!! !!! !!! ] - [04P41][ÖÁLogic Apps !!! !] + [04P41][Ê£Logic Apps !!! !] - [gQgYV][ÅâAssociated Logic Apps !!! !!! ] + [gQgYV][öÿAssociated Logic Apps !!! !!! ] - [IlI8F][ÂÞOrchestrate with Logic Apps !!! !!! !!] + [IlI8F][ÍÿOrchestrate with Logic Apps !!! !!! !!] - [ZxCEE][èïCreate Logic Apps !!! !!!] + [ZxCEE][äÜCreate Logic Apps !!! !!!] - [G0cDC][ÿÛNo Logic Apps to display !!! !!! !] + [G0cDC][ß@No Logic Apps to display !!! !!! !] - [YIctd][@úLogic Apps !!! !] + [YIctd][åÂLogic Apps !!! !] - [582ZC][óßLogic Apps lets you quickly build integrations with SaaS and Enterprise apps, as well as visually design processes and workflows. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!] + [582ZC][ëòLogic Apps lets you quickly build integrations with SaaS and Enterprise apps, as well as visually design processes and workflows. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!] - [qwwjj][µëExpand or Collapse !!! !!!] + [qwwjj][¢ØExpand or Collapse !!! !!!] - [TZ4re][øÀApp service Authentication / Authorization: !!! !!! !!! !!! ] + [TZ4re][§§App service Authentication / Authorization: !!! !!! !!! !!! ] - [ruQYi][ÜýConfigure AAD now !!! !!!] + [ruQYi][ãßConfigure AAD now !!! !!!] - [ilUpe][ÈöAdd permissions now !!! !!! ] + [ilUpe][ÝèAdd permissions now !!! !!! ] - [74NLd][Â@configured !!! !] + [74NLd][þÒconfigured !!! !] - [bZcbD][îÍIdentity requirements (not satisfied) !!! !!! !!! !!] + [bZcbD][øµIdentity requirements (not satisfied) !!! !!! !!! !!] - [0CSVV][ñönot configured !!! !!] + [0CSVV][˧not configured !!! !!] - [X20JH][ÅàRequired permissions !!! !!! ] + [X20JH][àÓRequired permissions !!! !!! ] - [gsUHu][úÂThe template needs the following permission: !!! !!! !!! !!! ] + [gsUHu][òÒThe template needs the following permission: !!! !!! !!! !!! ] - [ODiaG][ªçThis integration requires an AAD configuration for the function app. !!! !!! !!! !!! !!! !!! !] + [ODiaG][äØThis integration requires an AAD configuration for the function app. !!! !!! !!! !!! !!! !!! !] - [2YR4l][ÇãThis template requires an AAD configuration for the function app. !!! !!! !!! !!! !!! !!! ] + [2YR4l][ÚÑThis template requires an AAD configuration for the function app. !!! !!! !!! !!! !!! !!! ] - [0Fx0t][ÔÍYou may need to configure any additional permissions you function requires. Please see the documentation for this binding. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! ] + [0Fx0t][ÙâYou may need to configure any additional permissions you function requires. Please see the documentation for this binding. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! ] - [L7kot][ÏèManage App Service Authentication / Authorization !!! !!! !!! !!! !!] + [L7kot][ìÀManage App Service Authentication / Authorization !!! !!! !!! !!! !!] - [jNMub][ÝèAuth configuration required !!! !!! !!] + [jNMub][ÅÕAuth configuration required !!! !!! !!] - [TOWSF][ÚÂIdentity requirements !!! !!! ] + [TOWSF][çIdentity requirements !!! !!! ] - [GAHPn][§òManage !!!] + [GAHPn][¥èManage !!!] - [r2SOZ][ÛÙWe are not able to get the list of installed runtime extensions !!! !!! !!! !!! !!! !!!] + [r2SOZ][þðWe are not able to get the list of installed runtime extensions !!! !!! !!! !!! !!! !!!] - [1GZb6][ÛóWe are not able to install runtime extension {{extensionId}} !!! !!! !!! !!! !!! !!] + [1GZb6][ÌøWe are not able to install runtime extension {{extensionId}} !!! !!! !!! !!! !!! !!] - [h3P90][ÒÐWe are not able to uninstall runtime extension {{extensionId}} !!! !!! !!! !!! !!! !!!] + [h3P90][ÐìWe are not able to uninstall runtime extension {{extensionId}} !!! !!! !!! !!! !!! !!!] - [MOdU2][§þInstalling runtime extensions is taking longer than expected !!! !!! !!! !!! !!! !!] + [MOdU2][ìÖInstalling runtime extensions is taking longer than expected !!! !!! !!! !!! !!! !!] - [q4RGN][ÝåThe extension {{extensionId}} with a different version is already installed !!! !!! !!! !!! !!! !!! !!!] + [q4RGN][èåThe extension {{extensionId}} with a different version is already installed !!! !!! !!! !!! !!! !!! !!!] - [t592D][ÝäOpen Application Insights !!! !!! !!] + [t592D][ðÿOpen Application Insights !!! !!! !!] - [ekL3i][ÌñApp Insights is enabled for your function. !!! !!! !!! !!! ] + [ekL3i][ÞõApp Insights is enabled for your function. !!! !!! !!! !!! ] - [FyKZE][óõNo Monitoring data to display !!! !!! !!!] + [FyKZE][íçNo Monitoring data to display !!! !!! !!!] - [xeWsw][ÇýInstall !!!] + [xeWsw][ÛÌInstall !!!] - [Ntn02][äýExtension Installation Succeeded !!! !!! !!! ] + [Ntn02][ìèExtension Installation Succeeded !!! !!! !!! ] - [s1W3p][ùèExtensions not Installed !!! !!! !] + [s1W3p][äÑExtensions not Installed !!! !!! !] - [cl2t5][ýùThis integration requires the following extensions. !!! !!! !!! !!! !!!] + [cl2t5][ÒõThis integration requires the following extensions. !!! !!! !!! !!! !!!] - [m06uq][ôÂThis template requires the following extensions. !!! !!! !!! !!! !!] + [m06uq][ÚÔThis template requires the following extensions. !!! !!! !!! !!! !!] - [hkEiW][ÎÏInstalling template dependencies, you will be able to create a function once this done. Dependency installation happens in the background and can take up to 10 minutes. You can continue to use the portal during this time. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!] + [hkEiW][ÇÛInstalling template dependencies, you will be able to create a function once this is done. Dependency installation happens in the background and can take up to 2 minutes. You can close this blade and continue to use the portal during this time. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!] - [1gFO9][ÝâWe are not able to install runtime extension. Install id {{installationId}} !!! !!! !!! !!! !!! !!! !!!] + [1gFO9][ãÅWe are not able to install runtime extension. Install id {{installationId}} !!! !!! !!! !!! !!! !!! !!!] - [tmqqB][ÖªEnter value in GB-sec !!! !!! ] + [tmqqB][ÃÉEnter value in GB-sec !!! !!! ] - [ws1Kg][©µConnection !!! !] + [ws1Kg][ÓðConnection !!! !] - [FZED7][òøNotification Hub !!! !!!] + [FZED7][òæNotification Hub !!! !!!] - [RbFwl][ÕÎJava Functions can be built, tested and deployed locally from your machine. No portal required! !!! !!! !!! !!! !!! !!! !!! !!! !!] + [RbFwl][ßÇJava Functions can be built, tested and deployed locally from your machine. No portal required! !!! !!! !!! !!! !!! !!! !!! !!! !!] - [rSeSX][¢íClick below to get started with documentation on how to build your first Azure Function with Java. !!! !!! !!! !!! !!! !!! !!! !!! !!!] + [rSeSX][ëÂClick below to get started with documentation on how to build your first Azure Function with Java. !!! !!! !!! !!! !!! !!! !!! !!! !!!] - [ub1oe][èÖProxies has been enabled. To disable again, delete or disable all individual proxies. !!! !!! !!! !!! !!! !!! !!! !!!] + [ub1oe][þ©Proxies has been enabled. To disable again, delete or disable all individual proxies. !!! !!! !!! !!! !!! !!! !!! !!!] - [nI5EQ][©ÆJava on Azure Functions Quickstart !!! !!! !!! !] + [nI5EQ][ȧJava on Azure Functions Quickstart !!! !!! !!! !] - [4Ew3W][äôName: !!!] + [4Ew3W][ßÛName: !!!] - [ukwFj][ªÿSearch by trigger, language, or description !!! !!! !!! !!! ] + [ukwFj][اSearch by trigger, language, or description !!! !!! !!! !!! ] - [soqGS][Ò©hide value !!! !] + [soqGS][óÛhide value !!! !] - [luhuk][âÿApp Insights instrumentation key is presented in app settings but App Insights is not found in Function App's subscription. Please make sure your App Insights is located in the same subscription as Function App. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!] + [luhuk][ûóApp Insights instrumentation key is presented in app settings but App Insights is not found in Function App's subscription. Please make sure your App Insights is located in the same subscription as Function App. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!] - [7diyP][äûStart of row !!! !] + [7diyP][ÇÑStart of row !!! !] - [iNsVt][ùÍEnd of row !!! !] + [iNsVt][çÑEnd of row !!! !] - [GT5WP][ýåCannot Upgrade with Existing Functions !!! !!! !!! !!] + [GT5WP][ÑûCannot Upgrade with Existing Functions !!! !!! !!! !!] - [taOXQ][ÝÎMajor version upgrades can introduce breaking changes to languages and bindings. When upgrading major versions of the runtime, consider creating a new function app and migrate your functions to this new app. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] + [taOXQ][ØÏMajor version upgrades can introduce breaking changes to languages and bindings. When upgrading major versions of the runtime, consider creating a new function app and migrate your functions to this new app. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] - [ISfs1][ÖþWarning !!!] + [ISfs1][ÁÎWarning !!!] - [5UrHU][ßÛAuthorized as: !!! !!] + [5UrHU][øÁAuthorized as: !!! !!] Continue - [p8GSb][ÖôAuthorize !!! ] + [p8GSb][ÆÚAuthorize !!! ] - [DZwY6][ÝýAuthorize !!! ] + [DZwY6][áêAuthorize !!! ] - [l6B9A][ÛÕBack !!] + [l6B9A][ª£Back !!] - [9pANf][ÇÝContinue !!! ] + [9pANf][ÛÛContinue !!! ] - [FY0js][óÏFinish !!!] + [FY0js][ÀÇFinish !!!] - [Z5zyM][£âCode !!] + [Z5zyM][@ÖCode !!] - [Yx4Cc][âÒRepository !!! !] + [Yx4Cc][ÅÛRepository !!! !] - [vNWqD][ÔªBranch !!!] + [vNWqD][ÈÝBranch !!!] - [Pz0ov][Á£Folder !!!] + [Pz0ov][ýïFolder !!!] - [BNsxW][ûôRepository Type !!! !!] + [BNsxW][çÀRepository Type !!! !!] - [A7vHk][ª§Organization !!! !] + [A7vHk][èïOrganization !!! !] - [TEHZB][ÛÊVisual Studio Team Service Account !!! !!! !!! !] + [TEHZB][æ@Visual Studio Team Service Account !!! !!! !!! !] - [cMe1h][âåProject !!!] + [cMe1h][äàProject !!!] Build - [vbdk7][ÍæSource !!!] + [vbdk7][ªÛSource !!!] - [pVMxZ][ÏÓAccount !!!] + [pVMxZ][ïúAccount !!!] - [OeFzt][øÀLoad Test !!! ] + [OeFzt][ªõLoad Test !!! ] Slot - [qGYgI][ÚæProduction !!! !] + [qGYgI][ÙÐProduction !!! !] - [hhoZ0][µðEntity !!!] + [hhoZ0][øÙEntity !!!] - [sKkZ4][¥ÖEntity: !!!] + [sKkZ4][ÕÞEntity: !!!] - [myYhL][êçFunction API definition (Swagger) feature is not supported for beta runtime currently. !!! !!! !!! !!! !!! !!! !!! !!!] + [myYhL][ÚÞFunction API definition (Swagger) feature is not supported for beta runtime currently. !!! !!! !!! !!! !!! !!! !!! !!!] - [Bq3Ae][©îDeployed Successfully to {0} !!! !!! !!!] + [Bq3Ae][ïªDeployed Successfully to {0} !!! !!! !!!] - [nJcLj][ßÖFailed to deploy to {0} !!! !!! !] + [nJcLj][íîFailed to deploy to {0} !!! !!! !] - [PoJDD][íÆPerform swap with preview !!! !!! !!] + [PoJDD][ÈøPerform swap with preview !!! !!! !!] - [TGRH5][ðÝStart the swap !!! !!] + [TGRH5][ɧStart the swap !!! !!] - [8lrXD][ëÄReview + complete the swap !!! !!! !!] + [8lrXD][ÑòReview + complete the swap !!! !!! !!] - [TCOkg][é£A swap operation is currently in progress. After navigating away, you will no longer be able to check operation status. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!] + [TCOkg][çÏA swap operation is currently in progress. After navigating away, you will no longer be able to check operation status. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!] - [6biM7][Úî{{swapType}} between slot {{srcSlot}} and slot {{destSlot}} !!! !!! !!! !!! !!! !!] + [6biM7][Øê{{swapType}} between slot {{srcSlot}} and slot {{destSlot}} !!! !!! !!! !!! !!! !!] - [sJpEF][âÐswap !!] + [sJpEF][§æswap !!] - [QFJXH][ñµphase one of swap !!! !!!] + [QFJXH][úàphase one of swap !!! !!!] - [uMXdc][ÄÞphase two of swap !!! !!!] + [uMXdc][Ùñphase two of swap !!! !!!] - [sZX8g][ÄÛPerforming {{operation}} !!! !!! !] + [sZX8g][ã©Performing {{operation}} !!! !!! !] - [NojHz][üËSuccessfully completed {{operation}} !!! !!! !!! !!] + [NojHz][©ÊSuccessfully completed {{operation}} !!! !!! !!! !!] - [H94pM][ÌôFailed to complete {{operation}}. Error: {{error}} !!! !!! !!! !!! !!!] + [H94pM][ÃÜFailed to complete {{operation}}. Error: {{error}} !!! !!! !!! !!! !!!] - [cb4lT][ùóCancelling {{operation}} !!! !!! !] + [cb4lT][àäCancelling {{operation}} !!! !!! !] - [BlD9O][@§Successfully cancelled {{operation}} !!! !!! !!! !!] + [BlD9O][çãSuccessfully cancelled {{operation}} !!! !!! !!! !!] - [e3UEU][£äFailed to cancel {{operation}}. Error: {{error}} !!! !!! !!! !!! !!] + [e3UEU][ÔàFailed to cancel {{operation}}. Error: {{error}} !!! !!! !!! !!! !!] - [o8O7Q][çÓSwapped slot {0} with {1} !!! !!! !!] + [o8O7Q][ÆæSwapped slot {0} with {1} !!! !!! !!] - [22UW3][îÈFailed to swap slot {0} with {1} !!! !!! !!! ] + [22UW3][ªæFailed to swap slot {0} with {1} !!! !!! !!! ] - [xQTYJ][ÃçSuccessfully setup Continuous Delivery and triggered build !!! !!! !!! !!! !!! !] + [xQTYJ][òÎSuccessfully setup Continuous Delivery and triggered build !!! !!! !!! !!! !!! !] - [tud16][£ÌSuccessfully setup Continuous Delivery for the repository !!! !!! !!! !!! !!! !] + [tud16][ñÖSuccessfully setup Continuous Delivery for the repository !!! !!! !!! !!! !!! !] - [6VegA][©£Failed to setup Continuous Delivery !!! !!! !!! !] + [6VegA][ÝøFailed to setup Continuous Delivery !!! !!! !!! !] - [v20pv][ÇïCreated new Visual Studio Team Services account !!! !!! !!! !!! !] + [v20pv][ÅèCreated new Visual Studio Team Services account !!! !!! !!! !!! !] - [a9KbU][ÕÚFailed to create Visual Studio Team Services account !!! !!! !!! !!! !!!] + [a9KbU][ëàFailed to create Visual Studio Team Services account !!! !!! !!! !!! !!!] - [C0Uy2][íêCreated new slot !!! !!!] + [C0Uy2][ìîCreated new slot !!! !!!] - [Rgl6n][âÍFailed to create a slot !!! !!! !] + [Rgl6n][ÌñFailed to create a slot !!! !!! !] - [ertQF][ÔæCreated new Web Application for test environment !!! !!! !!! !!! !!] + [ertQF][ãÓCreated new Web Application for test environment !!! !!! !!! !!! !!] - [f62Iy][ÏÀFailed to create new Web Application for test environment !!! !!! !!! !!! !!! !] + [f62Iy][è©Failed to create new Web Application for test environment !!! !!! !!! !!! !!! !] - [b26hz][åêSuccessfully disconnected Continuous Delivery for {0} !!! !!! !!! !!! !!! ] + [b26hz][ÃÆSuccessfully disconnected Continuous Delivery for {0} !!! !!! !!! !!! !!! ] - [yFw7j][ò§{0} got started' !!! !!!] + [yFw7j][øâ{0} got started' !!! !!!] - [vKIfO][þúFailed to start {0} !!! !!! ] + [vKIfO][ÐíFailed to start {0} !!! !!! ] - [Dyvld][ëø{0} got stopped' !!! !!!] + [Dyvld][öð{0} got stopped' !!! !!!] - [8X0ut][ûñFailed to stop {0} !!! !!!] + [8X0ut][ÌÍFailed to stop {0} !!! !!!] - [HaCYo][ñ¢{0} got restarted' !!! !!!] + [HaCYo][ÙÞ{0} got restarted' !!! !!!] - [uyZzV][©ÃFailed to restart {0} !!! !!! ] + [uyZzV][èõFailed to restart {0} !!! !!! ] - [PbV9W][ªÑSuccessfully triggered Continuous Delivery with latest source code from repository !!! !!! !!! !!! !!! !!! !!! !!] + [PbV9W][éøSuccessfully triggered Continuous Delivery with latest source code from repository !!! !!! !!! !!! !!! !!! !!! !!] - [fpO2c][ÁÇBuild Definition !!! !!!] + [fpO2c][ìßBuild Definition !!! !!!] - [N36W9][¢óRelease Definition !!! !!!] + [N36W9][È@Release Definition !!! !!!] - [exG5d][Ü£Build Triggered !!! !!] + [exG5d][òèBuild Triggered !!! !!] - [JPsxz][£ðWeb App !!!] + [JPsxz][åÜWeb App !!!] - [1lceo][îêSlot !!] + [1lceo][£çSlot !!] - [A03UR][öÑVisual Studio Online Account !!! !!! !!!] + [A03UR][âÁVisual Studio Online Account !!! !!! !!!] - [5vT1k][ÃÈView Instructions !!! !!!] + [5vT1k][ÊîView Instructions !!! !!!] - [OO85O][£ÏBuild: {0} !!! !] + [OO85O][ÍõBuild: {0} !!! !] - [i3V4I][ãìRelease: {0} !!! !] + [i3V4I][ªªRelease: {0} !!! !] - [uFsxF][íÁDeployment Center !!! !!!] + [uFsxF][ôÚDeployment Center !!! !!!] - [VFhyf][òæSource Control !!! !!] + [VFhyf][ÜØSource Control !!! !!] - [o9E1S][ØéBuild Provider !!! !!] + [o9E1S][ë£Build Provider !!! !!] - [oYutu][éÝConfigure !!! ] + [oYutu][êáConfigure !!! ] - [72S90][âÕDeploy !!!] + [72S90][þæDeploy !!!] - [oMUWM][ÀñSummary !!!] + [oMUWM][åÑSummary !!!] - [laES3][ÔÒExperimental Language Support: !!! !!! !!!] + [laES3][ÃóExperimental Language Support: !!! !!! !!!] - [m53CU][ÚËSource Provider !!! !!] + [m53CU][ìÁSource Provider !!! !!] - [Cdwyd][ñ©Sync content from a OneDrive cloud folder. !!! !!! !!! !!! ] + [Cdwyd][ôØSync content from a OneDrive cloud folder. !!! !!! !!! !!! ] - [NxqiU][êÉConfigure continuous integration with a Github repo. !!! !!! !!! !!! !!!] + [NxqiU][@ùConfigure continuous integration with a Github repo. !!! !!! !!! !!! !!!] - [X59iJ][êÈConfigure continuous integration with a VSTS repo. !!! !!! !!! !!! !!!] + [X59iJ][@ØConfigure continuous integration with a VSTS repo. !!! !!! !!! !!! !!!] - [pWgIr][ùÛDeploy from a public Git or Mercurial repo. !!! !!! !!! !!! ] + [pWgIr][ÇÞDeploy from a public Git or Mercurial repo. !!! !!! !!! !!! ] - [FWNLi][ÄîConfigure continuous integration with a Bitbucket repo. !!! !!! !!! !!! !!! ] + [FWNLi][õùConfigure continuous integration with a Bitbucket repo. !!! !!! !!! !!! !!! ] - [oV0Ec][§çDeploy from a local Git repo. !!! !!! !!!] + [oV0Ec][ÀÕDeploy from a local Git repo. !!! !!! !!!] - [c8n2Z][æñConfigure continuous integration with a Dropbox folder !!! !!! !!! !!! !!! ] + [c8n2Z][¥ÃSync content from a Dropbox cloud folder. !!! !!! !!! !!!] - [mZOFW][óÝDurable Functions !!! !!!] + [mZOFW][áÃDurable Functions !!! !!!] - [WBCbY][æßA function that will be run whenever an Activity is called by an orchestrator function. !!! !!! !!! !!! !!! !!! !!! !!!] + [WBCbY][§üA function that will be run whenever an Activity is called by an orchestrator function. !!! !!! !!! !!! !!! !!! !!! !!!] - [2ulkB][ÍÀAn orchestrator function that invokes activity functions in a sequence. !!! !!! !!! !!! !!! !!! !!] + [2ulkB][͵An orchestrator function that invokes activity functions in a sequence. !!! !!! !!! !!! !!! !!! !!] - [Xi0ZG][ØÂA function that will trigger whenever it receives an HTTP request to execute an orchestrator function. !!! !!! !!! !!! !!! !!! !!! !!! !!! !] + [Xi0ZG][£ÊA function that will trigger whenever it receives an HTTP request to execute an orchestrator function. !!! !!! !!! !!! !!! !!! !!! !!! !!! !] - [nFDGK][ÌÙFunctions (Preview) !!! !!! ] + [nFDGK][Ô£Functions (Preview) !!! !!! ] - [iLCiI][ùÕYour app is currently in read-only mode because you are using Run-From-Zip. When using Run-From-Zip, the file system is read-only and no changes can be made to the files. To make any changes update the content in your zip file and WEBSITE_USE_ZIP app setting. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! ] + [iLCiI][©ÙYour app is currently in read-only mode because you are using Run-From-Zip. When using Run-From-Zip, the file system is read-only and no changes can be made to the files. To make any changes update the content in your zip file and WEBSITE_USE_ZIP app setting. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! ] - [cb3zx][çÌCode !!] + [cb3zx][á©Code !!] - [NijdJ][ïÐColumn !!!] + [NijdJ][àªColumn !!!] - [11z6A][úüDescription !!! !] + [11z6A][ÃÉDescription !!! !] - [Fwoku][ÊþErrors and warnings !!! !!! ] + [Fwoku][ÊÙErrors and warnings !!! !!! ] - [LvCn3][àüFile !!] + [LvCn3][íóFile !!] - [rPFze][áÁLine !!] + [rPFze][éÒLine !!] - [PGPlb][ÃòRecommended pricing tiers !!! !!! !!] + [PGPlb][ÍÅRecommended pricing tiers !!! !!! !!] - [xgUve][óÏAdditional pricing tiers !!! !!! !] + [xgUve][öÈAdditional pricing tiers !!! !!! !] - [EH3nS][ÿÀYour subscription does not allow this pricing tier !!! !!! !!! !!! !!!] + [EH3nS][þæYour subscription does not allow this pricing tier !!! !!! !!! !!! !!!] - [JAObI][¢ïDev / Test !!! !] + [JAObI][ôòDev / Test !!! !] - [WjxPe][çÉFor less demanding workloads !!! !!! !!!] + [WjxPe][£ãFor less demanding workloads !!! !!! !!!] - [NMypF][æÁProduction !!! !] + [NMypF][äÛProduction !!! !] - [Q7mU6][îìFor most production workloads !!! !!! !!!] + [Q7mU6][ùÇFor most production workloads !!! !!! !!!] - [Eitjm][ÃÕIsolated !!! ] + [Eitjm][åñIsolated !!! ] - [6qw54][õÊAdvanced networking and scale !!! !!! !!!] + [6qw54][ÍÆAdvanced networking and scale !!! !!! !!!] - [0b7kH][ÕíScale up is not available for consumption plans !!! !!! !!! !!! !] + [0b7kH][áÌScale up is not available for consumption plans !!! !!! !!! !!! !] - [iQ5so][ñòYou must have write permissions to scale up this plan !!! !!! !!! !!! !!! ] + [iQ5so][ïþYou must have write permissions to scale up this plan !!! !!! !!! !!! !!! ] - [Y0GGY][À¢You must have write permissions on the plan '{0}' to update it !!! !!! !!! !!! !!! !!!] + [Y0GGY][ÕªYou must have write permissions on the plan '{0}' to update it !!! !!! !!! !!! !!! !!!] - [4lqLn][êüThe plan '{0}' has a read only lock on it and cannot be updated !!! !!! !!! !!! !!! !!!] + [4lqLn][ÆôThe plan '{0}' has a read only lock on it and cannot be updated !!! !!! !!! !!! !!! !!!] - [mcnjy][ôÜUpdating App Service Plan !!! !!! !!] + [mcnjy][òöUpdating App Service Plan !!! !!! !!] - [ebIHT][úµUpdating the plan {0} !!! !!! ] + [ebIHT][©æUpdating the plan {0} !!! !!! ] - [gJosw][£ØThe plan '{0}' was updated successfully! !!! !!! !!! !!!] + [gJosw][õéThe plan '{0}' was updated successfully! !!! !!! !!! !!!] - [faEAr][ÜýSuccessfully submitted job to scale the plan '{0}'. !!! !!! !!! !!! !!!] + [faEAr][ØäSuccessfully submitted job to scale the plan '{0}'. !!! !!! !!! !!! !!!] - [tE1Zv][åÚA scale operation is currently in progress for the plan '{0}'. Please wait for the operation to complete before scaling again. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] + [tE1Zv][©ðA scale operation is currently in progress for the plan '{0}'. Please wait for the operation to complete before scaling again. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] - [3KX2T][íÆFailed to update the plan '{0}' !!! !!! !!! ] + [3KX2T][ÄÂFailed to update the plan '{0}' !!! !!! !!! ] - [uKYXW][ÄëIncluded features !!! !!!] + [uKYXW][ÅóIncluded features !!! !!!] - [kKF3g][£©Every app hosted on this App Service plan will have access to these features: !!! !!! !!! !!! !!! !!! !!! ] + [kKF3g][ÜôEvery app hosted on this App Service plan will have access to these features: !!! !!! !!! !!! !!! !!! !!! ] - [9d1AS][íûIncluded hardware !!! !!!] + [9d1AS][¢ÿIncluded hardware !!! !!!] - [fJ3jd][ÈèEvery instance of your App Service plan will include the following hardware configuration: !!! !!! !!! !!! !!! !!! !!! !!! !] + [fJ3jd][þæEvery instance of your App Service plan will include the following hardware configuration: !!! !!! !!! !!! !!! !!! !!! !!! !] - [r4OvO][ùèLinux web apps in an App Service Environment are billed at a 50% discount while in preview. !!! !!! !!! !!! !!! !!! !!! !!! !] + [r4OvO][ÄüLinux web apps in an App Service Environment are billed at a 50% discount while in preview. !!! !!! !!! !!! !!! !!! !!! !!! !] - [dox5q][öõThe first Basic (B1) core for Linux is free for the first 30 days! !!! !!! !!! !!! !!! !!! ] + [dox5q][ðûThe first Basic (B1) core for Linux is free for the first 30 days! !!! !!! !!! !!! !!! !!! ] - [jz1zX][ÎÏWindows containers are billed at a 50% discount while in preview. !!! !!! !!! !!! !!! !!! ] + [jz1zX][ðçWindows containers are billed at a 50% discount while in preview. !!! !!! !!! !!! !!! !!! ] - [Ze4TG][æÌIsolated pricing tiers within an App Service Environment (ASE) are not available for your configuration. An ASE is a powerful feature offering of Azure App Service that gives network isolation and improved scale capabilities. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! ] + [Ze4TG][ÑûIsolated pricing tiers within an App Service Environment (ASE) are not available for your configuration. An ASE is a powerful feature offering of Azure App Service that gives network isolation and improved scale capabilities. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! ] - [Pzup4][ÌÍDev / Test pricing tiers are only available to plans that are not hosted within an App Service environment. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!] + [Pzup4][Å©Dev / Test pricing tiers are not available for your configuration and are only available to plans that are not hosted within an App Service environment. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!] - [oKRGU][íèProduction pricing tiers are only available to plans that are not hosted within an App Service environment. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!] + [oKRGU][ÉõProduction pricing tiers are not available for your configuration and are only available to plans that are not hosted within an App Service environment. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!] - [F48OU][ÃåPremium V2 is not supported for this scale unit. Please consider redeploying or cloning your app. !!! !!! !!! !!! !!! !!! !!! !!! !!!] + [F48OU][ÄÏPremium V2 is not supported for this scale unit. Please consider redeploying or cloning your app. !!! !!! !!! !!! !!! !!! !!! !!! !!!] - [G8Qq9][ìèScale up !!! ] + [G8Qq9][ËÿScale up !!! ] + + + [EANBJ][ÐíFree !!] - [mjM1a][õê{0} {1}/Hour (Estimated) !!! !!! !] + [mjM1a][éö{0} {1}/Hour (Estimated) !!! !!! !] - [Apjuu][úÇChoose a different pricing tier to add more resources for your plan !!! !!! !!! !!! !!! !!! ] + [Apjuu][@ÔChoose a different pricing tier to add more resources for your plan !!! !!! !!! !!! !!! !!! ] - [gamR7][ÅÍUpdate App Service plan !!! !!! !] + [gamR7][ªÔUpdate App Service plan !!! !!! !] - [tGQFI][êßShared insfrastructure !!! !!! !] + [tGQFI][ëéShared insfrastructure !!! !!! !] - [TgGXc][çÊShared compute resources used to run applications deployed in the App Service Plan. !!! !!! !!! !!! !!! !!! !!! !!] + [TgGXc][ªêShared compute resources used to run applications deployed in the App Service Plan. !!! !!! !!! !!! !!! !!! !!! !!] - [mEzMq][ÞèDedicated A-series compute resources used to run applications deployed in the App Service Plan. !!! !!! !!! !!! !!! !!! !!! !!! !!] + [mEzMq][£ûDedicated A-series compute resources used to run applications deployed in the App Service Plan. !!! !!! !!! !!! !!! !!! !!! !!! !!] - [5EOSf][Ù©Dedicated Dv2-series compute resources used to run applications deployed in the App Service Plan. !!! !!! !!! !!! !!! !!! !!! !!! !!!] + [5EOSf][ÜØDedicated Dv2-series compute resources used to run applications deployed in the App Service Plan. !!! !!! !!! !!! !!! !!! !!! !!! !!!] - [ViM6v][À¢Memory available to run applications deployed and running in the App Service plan. !!! !!! !!! !!! !!! !!! !!! !!] + [ViM6v][Ö@Memory available to run applications deployed and running in the App Service plan. !!! !!! !!! !!! !!! !!! !!! !!] - [jgjKe][üáMemory per instance available to run applications deployed and running in the App Service plan. !!! !!! !!! !!! !!! !!! !!! !!! !!] + [jgjKe][ìÖMemory per instance available to run applications deployed and running in the App Service plan. !!! !!! !!! !!! !!! !!! !!! !!! !!] - [7dXeJ][á¢{0} disk storage shared by all apps deployed in the App Service plan. !!! !!! !!! !!! !!! !!! !] + [7dXeJ][ðÊ{0} disk storage shared by all apps deployed in the App Service plan. !!! !!! !!! !!! !!! !!! !] - [gdWGg][ÞÁCustom domains / SSL !!! !!! ] + [gdWGg][ÔëCustom domains / SSL !!! !!! ] - [i0Mtl][©àConfigure and purchase custom domains with SNI SSL bindings !!! !!! !!! !!! !!! !!] + [i0Mtl][ÕýConfigure and purchase custom domains with SNI SSL bindings !!! !!! !!! !!! !!! !!] - [vEEOz][õëConfigure and purchase custom domains with SNI and IP SSL bindings !!! !!! !!! !!! !!! !!! ] + [vEEOz][üªConfigure and purchase custom domains with SNI and IP SSL bindings !!! !!! !!! !!! !!! !!! ] - [bAP7R][ëÌManual scale !!! !] + [bAP7R][ÛîManual scale !!! !] - [wzXnl][ÈÀAuto scale !!! !] + [wzXnl][ÝòAuto scale !!! !] - [Enqia][âæScale to a large number of instances !!! !!! !!! !!] + [Enqia][ÃÿScale to a large number of instances !!! !!! !!! !!] - [ItGcn][ÜþUp to 100 instances. More allowed upon request. !!! !!! !!! !!! !!] + [ItGcn][ЧUp to 100 instances. More allowed upon request. !!! !!! !!! !!! !!] - [gM1l4][ÑåUp to {0} instances. Subject to availability. !!! !!! !!! !!! !] + [gM1l4][£ÌUp to {0} instances. Subject to availability. !!! !!! !!! !!! !] - [SxTxf][ªæStaging slots !!! !!] + [SxTxf][¥ÊStaging slots !!! !!] - [MjVmN][ÂçUp to {0} staging slots to use for testing and deployments before swapping them into production. !!! !!! !!! !!! !!! !!! !!! !!! !!!] + [MjVmN][ü£Up to {0} staging slots to use for testing and deployments before swapping them into production. !!! !!! !!! !!! !!! !!! !!! !!! !!!] - [e4U3w][ÝÉDaily backup !!! !] + [e4U3w][ÊÿDaily backup !!! !] - [tODAu][ëæDaily backups !!! !!] + [tODAu][ßÆDaily backups !!! !!] - [99WyQ][ÐÓBackup your app {0} time daily. !!! !!! !!! ] + [99WyQ][ÞèBackup your app {0} times daily. !!! !!! !!! ] + + + [dvAFe][èòTraffic manager !!! !!] + + + [b8Uyq][ÚäImprove performance and availability by routing traffic between multiple instances of your app. !!! !!! !!! !!! !!! !!! !!! !!! !!] - [H2FDo][òþSingle tenant system !!! !!! ] + [H2FDo][åöSingle tenant system !!! !!! ] - [4TgM9][ÈÄTake more control over the resources being used by your app. !!! !!! !!! !!! !!! !!] + [4TgM9][ѵTake more control over the resources being used by your app. !!! !!! !!! !!! !!! !!] - [HoK9t][íÁIsolated network !!! !!!] + [HoK9t][ÓÝIsolated network !!! !!!] - [1EkqD][ãÃRuns within your own virtual network. !!! !!! !!! !!] + [1EkqD][ÜÂRuns within your own virtual network. !!! !!! !!! !!] - [5CHVr][@ÌPrivate app access !!! !!!] + [5CHVr][µ¥Private app access !!! !!!] - [Mvdy4][äùUsing an App Service Environment with Internal Load Balancing (ILB). !!! !!! !!! !!! !!! !!! !] + [Mvdy4][ùÙUsing an App Service Environment with Internal Load Balancing (ILB). !!! !!! !!! !!! !!! !!! !] - [K0vpt][ò§{0} GB memory !!! !!] + [K0vpt][ëé{0} GB memory !!! !!] - [nMtlI][Àû{0} minutes/day compute !!! !!! !] + [nMtlI][Æò{0} minutes/day compute !!! !!! !] - [4FWVJ][ûÁ{0} cores !!! ] + [4FWVJ][îÀ{0} cores !!! ] - [agJs6][ëÀA-Series compute !!! !!!] + [agJs6][ÅþA-Series compute !!! !!!] - [2gUdY][ÉôDv2-Series compute !!! !!!] + [2gUdY][@àDv2-Series compute !!! !!!] - [LecOv][õáThe proxies.json is not valid. Error: '{0}'. !!! !!! !!! !!! ] + [LecOv][ÚÔThe proxies.json is not valid. Error: '{0}'. !!! !!! !!! !!! ] - [p8x4M][¢ÕThe proxies schema is not valid. Error: '{0}'. !!! !!! !!! !!! !] + [p8x4M][ªØThe proxies schema is not valid. Error: '{0}'. !!! !!! !!! !!! !] - [GGNir][üÔOperation Id !!! !] + [GGNir][ÀÍOperation Id !!! !] - [Xe3M4][ǧDate (UTC) !!! !] + [Xe3M4][öîDate (UTC) !!! !] - [IhCYg][ÔÅURL !!] + [IhCYg][òçURL !!] - [PhPiP][õÜResult Code !!! !] + [PhPiP][ñÙResult Code !!! !] - [VjOPG][ÕÃTrigger Reason !!! !!] + [VjOPG][ÌìTrigger Reason !!! !!] - [xwrXO][@ÆError !!!] + [xwrXO][ðÊError !!!] - [XWS3p][òÚRun in Application Insights !!! !!! !!] + [XWS3p][äñRun in Application Insights !!! !!! !!] - [WbYaS][áÔApplication Insights Instance !!! !!! !!!] + [WbYaS][ñùApplication Insights Instance !!! !!! !!!] - [88eQU][@åSuccess !!!] + Success - [BPXi3][ªÃDuration (ms) !!! !!] + [BPXi3][ÕÍDuration (ms) !!! !!] - [iu9XR][ìðSuccess count in last 30 days !!! !!! !!!] + [iu9XR][ÍÙSuccess count in last 30 days !!! !!! !!!] - [G9Vn3][Á@Error count in last 30 days !!! !!! !!] + [G9Vn3][ªÑError count in last 30 days !!! !!! !!] + + + [IBIIQ][ûþQuery returned {0} items !!! !!! !] - [YC58W][£ÞMessage !!!] + [YC58W][ÉôMessage !!!] - [3VvzK][öÄItem Count !!! !] + [3VvzK][ýãItem Count !!! !] - [9Abqv][©ÝLog Level !!! ] + [9Abqv][ÖµLog Level !!! ] - [Iq64z][ÍéVSTS build server !!! !!!] + [Iq64z][µÜVSTS build server !!! !!!] - [doaI0][ÚÒUse VSTS as the build server. You can choose to leverage advanced options for a full release management workflow. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] + [doaI0][ûéUse VSTS as the build server. You can choose to leverage advanced options for a full release management workflow. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] - [vrrWU][ç©Build on server !!! !!] + [vrrWU][ËèApp Service Kudu build server !!! !!! !!!] - [SrsA7][û©Use App Service as the build server. The App Service Kudu engine will automatically build your code during deployment when applicable with no additional configuration required. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!] + [SrsA7][èÍUse App Service as the build server. The App Service Kudu engine will automatically build your code during deployment when applicable with no additional configuration required. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!] - [Q3ITe][ÔôBuild !!!] + [Q3ITe][íëBuild !!!] - [7DA3J][صSelect Account !!! !!] + [7DA3J][¢ïSelect Account !!! !!] - [GoNRo][ÁöEnter Account Name !!! !!!] + [GoNRo][ûÓEnter Account Name !!! !!!] - [BqRuB][áÿSelect Project !!! !!] + [BqRuB][¢âSelect Project !!! !!] - [4JfRy][ÒÑWeb Application Framework !!! !!! !!] + [4JfRy][â£Web Application Framework !!! !!! !!] - [tZVim][îîSelect Framework !!! !!!] + [tZVim][Ñ©Select Framework !!! !!!] - [iIlL1][åõWorking Directory !!! !!!] + [iIlL1][ÊâWorking Directory !!! !!!] - [4k4wl][Ì£There is an operation in progress. Are you sure you would like leave? !!! !!! !!! !!! !!! !!! !] + [4k4wl][ÝËThere is an operation in progress. Are you sure you would like leave? !!! !!! !!! !!! !!! !!! !] - [GgJgT][àæTask Runner !!! !] + [GgJgT][ÞÞTask Runner !!! !] - [tJ0vG][¢ïPython Framework !!! !!!] + [tJ0vG][ÍäPython Framework !!! !!!] - [5ejOy][ñÄPython Version !!! !!] + [5ejOy][ôëPython Version !!! !!] - [fO9yw][ÆíDjango Settings Module !!! !!! !] + [fO9yw][úÜDjango Settings Module !!! !!! !] - [K9W7z][îíflaskProjectName !!! !!!] + [K9W7z][ÜËflaskProjectName !!! !!!] - [wpa0q][òØNew !!] + [wpa0q][öËNew !!] - [2jXO9][ÑÓExisting !!! ] + [2jXO9][ÏÁExisting !!! ] - [ZnADs][©ÛSelect Respository !!! !!!] + [ZnADs][ÕÆSelect Respository !!! !!!] - [LdtEO][ÑÓSelect Folder !!! !!] + [LdtEO][ðÄSelect Folder !!! !!] - [iZflk][ÚùSelect branch !!! !!] + [iZflk][îÆSelect branch !!! !!] - [VHoMD][©ÀDeployment !!! !] + [VHoMD][ÞáDeployment !!! !] - [8MMNi][áÖEnable Deployment Slot !!! !!! !] + [8MMNi][âßEnable Deployment Slot !!! !!! !] - [ZTbtr][©ÄDeployment Slot !!! !!] + [ZTbtr][ÐØDeployment Slot !!! !!] - [fY6n0][ëÿEnter Deployment Slot Name !!! !!! !!] + [fY6n0][ÄúEnter Deployment Slot Name !!! !!! !!] - [b8wpA][ÔÄSelect Slot !!! !] + [b8wpA][âóSelect Slot !!! !] - [29xtK][åòYes !!] + [29xtK][ÑÓYes !!] - [fAzB7][ÊÿNo !!] + [fAzB7][ÙëNo !!] - [T3Nzj][è§Load Testing !!! !] + [T3Nzj][öñLoad Testing !!! !] - [KiKO4][ÉÔEnable Load Testing !!! !!! ] + [KiKO4][úêEnable Load Testing !!! !!! ] - [Je6qW][øóApp Name !!! ] + [Je6qW][øýApp Name !!! ] - [WVWbH][ä©Pricing Tier !!! !] + [WVWbH][øèPricing Tier !!! !] - [Fgcdn][èóDeployment Center (Preview) !!! !!! !!] + [Fgcdn][ÏéDeployment Center (Preview) !!! !!! !!] - [fSxO6][ãÞLorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] + [fSxO6][áùLorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] - [dLTXt][ÐÝNot Authorized !!! !!] + [dLTXt][ìÙNot Authorized !!! !!] - [B5aMb][©£The call to get Host information failed. !!! !!! !!! !!!] + [B5aMb][úêThe call to get Host information failed. !!! !!! !!! !!!] - [5APsS][µèConfigure Application Insights to capture invocation logs !!! !!! !!! !!! !!! !] + [5APsS][ýÞConfigure Application Insights to capture invocation logs !!! !!! !!! !!! !!! !] - [s1pJH][ÕøAzure Functions now supports Application Insights as the preferred monitoring solution for apps under construction and in production. App Insights offers powerful analytics, notifications, and visualizations of your log data, as well as higher overall reliability at scale. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] + [s1pJH][ÌÕAzure Functions now supports Application Insights as the preferred monitoring solution for apps under construction and in production. App Insights offers powerful analytics, notifications, and visualizations of your log data, as well as higher overall reliability at scale. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] - [tAM2J][¢ÙSwitch to classic view !!! !!! !] + [tAM2J][ÅÆSwitch to classic view !!! !!! !] + + + [xwtq6][ÅçConfiguration Instructions !!! !!! !!] - [Dtzaa][ãîConfigure !!! ] + [Dtzaa][ÔüConfigure !!! ] - [2l1v0][ÅÈInvocation traces !!! !!!] + [2l1v0][Æ¥Invocation traces !!! !!!] - [NZ4xc][ØßResults delayed up to 5 minutes. !!! !!! !!! ] + [NZ4xc][Ù¢Results may be delayed for up to 5 minutes. !!! !!! !!! !!! ] - [rU2a9][ÓÇDrag a file here or !!! !!! ] + [rU2a9][ûÿDrag a file here or !!! !!! ] - [GidgR][ê¥browse !!!] + [GidgR][ÎÃbrowse !!!] - [eYoQy][ðóto upload !!! ] + [eYoQy][ËÂto upload !!! ] - [4xM4c][éîMetrics !!!] + [4xM4c][êÿMetrics !!!] - [5VYO0][ìµView metrics and setup alerts. !!! !!! !!!] + [5VYO0][íÍView metrics and setup alerts. !!! !!! !!!] - [IRwQG][àÞFTP based deployment can be disabled or configured to accept FTP (plain text) or FTPS (secure) connections. Click to learn more. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!] + [IRwQG][îÙFTP based deployment can be disabled or configured to accept FTP (plain text) or FTPS (secure) connections. Click to learn more. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!] - [x5r2I][Ô¥FTP access !!! !] + [x5r2I][ÊôFTP access !!! !] - [HqZoj][ÕêValidating... !!! !!] + [HqZoj][ÆîValidating... !!! !!] - [bRIeo][ÒãYou do not have permissions to create a Build Definition or a Release definition on this project. Contact your project administrator !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!] + [bRIeo][Ç¢You do not have permissions to create a Build Definition or a Release definition on this project. Contact your project administrator !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!] - [g0KZu][ûÈThe account name supplied is not valid. Please supply another account name. !!! !!! !!! !!! !!! !!! !!!] + [g0KZu][ªóThe account name supplied is not valid. Please supply another account name. !!! !!! !!! !!! !!! !!! !!!] + + + [P9Kdv][öèFTP + FTPS !!! !] + + + [1pEB9][ÄÀFTPS Only !!! ] + + + [hlHgX][ÄËDisable !!!] + + + [bAImL][êÎDismiss !!!] + + + [2WcEV][òúShow !!] + + + [1Szp7][ÓøHide !!] + + + [DUA2Y][ìçYour password and confirmation password do not match. !!! !!! !!! !!! !!! ] + + + [J3r4Q][ÌäDashboard !!! ] + + + [GBCZE][Þ¢Use an FTP connection to access and copy app files. !!! !!! !!! !!! !!!] + + + [DS1T5][ÉôLorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] + + + [4pIsy][ªÝUser Credentials !!! !!!] + + + [Q5kzK][Õ¥Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] + + + [H3dBG][ÞÇApp Credentials !!! !!] + + + [WugMl][ÕÌLorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !] + + + [A72rs][âÞUsername !!! ] + + + [JQj6z][ÍÛPassword !!! ] + + + [CCxxV][¥þConfirm Password !!! !!!] + + + [BTr6B][£íFTPS Endpoint !!! !!] + + + [W4FHn][ÕÉCredentials !!! !] + + + [UFvcr][Ý¥Pending !!!] + + + [UgGlw][ÕúFailed !!!] + + + [88eQU][ÎüSucccess !!! ] + + + [MYDVN][ÐóSave Credentials !!! !!!] + + + [20aIT][ùØReset Credentials !!! !!!] + + + [M17c5][ëÂHTTP Version !!! !] \ No newline at end of file diff --git a/server/Resources/ru-RU/Server/Resources/Resources.resx b/server/Resources/ru-RU/Server/Resources/Resources.resx index ce8b2534d9..250bc58165 100644 --- a/server/Resources/ru-RU/Server/Resources/Resources.resx +++ b/server/Resources/ru-RU/Server/Resources/Resources.resx @@ -1577,7 +1577,7 @@ Используйте проверку подлинности и авторизацию, чтобы защитить приложение и работать с данными каждого пользователя. - Управляемое удостоверение службы + Удостоверение управляемой службы (предварительная версия) Приложение может взаимодействовать с другими службами Azure, так как использует управляемое удостоверение Azure Active Directory. @@ -1666,6 +1666,12 @@ Управление ресурсами + + Диагностика и решение проблем + + + Интерфейс самостоятельной диагностики и устранения неполадок помогает определить и устранить неполадки приложения + Дополнительные инструменты (Kudu) @@ -2057,13 +2063,13 @@ Приложение сейчас находится в режиме "только для чтения", так как вы перевели его в режим правки. Чтобы изменить режим правки, посетите - Приложение сейчас находится в режиме "чтение и запись", так как вы перевели его в режим правки, несмотря на включенную систему управления версиями. Любые вносимые изменения могут быть переопределены при следующем развертывании. Чтобы изменить режим правки, посетите + Приложение сейчас находится в режиме чтения и записи, так как вы задали этот режим для правки, несмотря на включенную систему управления версиями. Все вносимые изменения могут быть перезаписаны при следующем развертывании. Чтобы изменить режим правки, воспользуйтесь Ваше приложение сейчас находится в режиме "только для чтения", так как вы опубликовали созданный function.json. Изменения, вносимые в function.json, не будут учитываться средой выполнения Функций Azure. - Ваше приложение сейчас находится в режиме чтения и записи, так как вы задали такой режим правки несмотря на созданный function.json. Изменения, внесенные в function.json, не будут учитываться в среде выполнения функций. + Приложение сейчас находится в режиме чтения и записи, так как вы задали этот режим для правки, несмотря на созданный function.json. Изменения, внесенные в function.json, не будут учитываться в среде выполнения функций. Копировать @@ -2648,7 +2654,7 @@ Для шаблона требуются следующие расширения. - Установив зависимости шаблона, можно создать функцию. Установка происходит в фоновом режиме и может занять до 10 минут. В течение этого времени можно продолжать использовать портал. + Установив зависимости шаблона, можно создать функцию. Установка происходит в фоновом режиме и может занять до 2 минут. В течение этого времени можно закрыть эту колонку и продолжать использовать портал. Установить расширение среды выполнения не удалось. Идентификатор установки: {{installationId}} @@ -2948,7 +2954,7 @@ Развертывание из локального репозитория Git. - Настройка непрерывной интеграции с папкой папки Dropbox + Синхронизация содержимого из облачной папки Dropbox. Устойчивые функции @@ -3068,10 +3074,10 @@ Изолированные ценовые категории в среде службы приложений (ASE) недоступны вам для настройки. ASE — мощная функция службы приложений Azure, обеспечивающая сетевую изоляцию и улучшенные возможности масштабирования. - Ценовые категории для разработки и тестирования доступны только для планов, не размещаемых в среде службы приложений. + Ценовые категории для разработки и тестирования недоступны для вашей конфигурации и доступны только для планов, не размещаемых в среде службы приложений. - Ценовые категории для рабочих сред доступны только для планов, не размещенных в среде службы приложений. + Ценовые категории для рабочих сред недоступны для вашей конфигурации и доступны только для планов, не размещенных в среде службы приложений. Ценовая категория "Премиум V2" для этой единицы масштабирования не поддерживается. Разверните ваше приложение повторно или клонируйте его. @@ -3079,6 +3085,9 @@ Увеличить масштаб + + Бесплатно + {0} {1}/ч (предварительно) @@ -3148,6 +3157,12 @@ Ежедневная архивация приложения (количество раз: {0}). + + Диспетчер трафика + + + Повышение производительности и доступности путем маршрутизации трафика между несколькими экземплярами приложения. + Система из одного клиента @@ -3212,7 +3227,7 @@ Экземпляр Application Insights - Успех + Success Длительность (мс) @@ -3223,6 +3238,9 @@ Число ошибок за последние 30 дней + + Запрос вернул следующее число элементов: {0} + Сообщение @@ -3239,7 +3257,7 @@ Используйте VSTS как сервер сборки. Вы можете использовать дополнительные параметры для реализации полноценного рабочего процесса управления выпуском. - Сборка на сервере + Сервер сборки Kudu службы приложений Используйте службу приложений как сервер сборки. Подсистема Kudu в службе приложений автоматически создаст код во время развертывания, когда это потребуется, без дополнительной настройки. @@ -3352,6 +3370,9 @@ Перейти к классическому представлению + + Настройка инструкций + Настроить @@ -3359,7 +3380,7 @@ Трассировка вызовов - Вывод результатов отложен максимум на 5 минут. + Вывод результатов может занять до 5 минут. Перетащите сюда файл или @@ -3391,4 +3412,79 @@ Указанное имя учетной записи недопустимо. Укажите другое имя. + + FTP + FTPS + + + Только FTPS + + + Отключить + + + Отклонить + + + Показать + + + Скрыть + + + Пароль и его подтверждение не совпадают. + + + Панель мониторинга + + + Использование FTP-подключения для доступа к файлам приложений и их копирования. + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + Учетные данные пользователя + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + Учетные данные приложения + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + Имя пользователя + + + Пароль + + + Подтвердите пароль + + + Конечная точка FTPS + + + Учетные данные + + + Ожидание + + + Сбой + + + Выполнено + + + Сохранить учетные данные + + + Сбросить учетные данные + + + Версия HTTP + \ No newline at end of file diff --git a/server/Resources/sv-SE/Server/Resources/Resources.resx b/server/Resources/sv-SE/Server/Resources/Resources.resx index 84e4d4b14b..0c318b2532 100644 --- a/server/Resources/sv-SE/Server/Resources/Resources.resx +++ b/server/Resources/sv-SE/Server/Resources/Resources.resx @@ -1577,7 +1577,7 @@ Använd autentisering/auktorisering för att skydda program och arbeta med data per användare. - Hanterad tjänstidentitet + Hanterad ACS-tjänstidentitet (förhandsversion) Ditt program kan kommunicera med andra Azure-tjänster som sig självt med hjälp av en hanterad Azure Active Directory-identitet. @@ -1666,6 +1666,12 @@ Resurshantering + + Diagnosticera och lösa problem + + + Via vår diagnostik- och felsökningsupplevelse för självbetjäning kan du identifiera och lösa problem med din webbapp + Avancerade verktyg (Kudu) @@ -2057,13 +2063,13 @@ Ställ in på extern URL för att använda en API-definition som finns på någo Appen är för närvarande i skrivskyddat läge eftersom redigeringsläget har angetts som skrivskyddat. Om du vill ändra redigeringsläge går du till - Appen är för närvarande i läs\skrivläge eftersom redigeringsläget har angetts till läs\skriv trots att källkontroll är aktiverat. Eventuella ändringar som du gör kanske skrivs över vid nästa distribution. Om du vill ändra redigeringsläget går du till + Din app är för närvarande i läs-/skrivläge eftersom redigeringsläget har angetts till läs-/skriv trots att källkontroll har aktiverats. Eventuella ändringar som du gör kanske skrivs över vid nästa distribution. Om du vill ändra redigeringsläget går du till Appen är nu i skrivskyddat läge eftersom du har publicerat en genererad function.json. Ändringar i function.json kommer inte att hanteras av Functions-körningen. - Appen är för närvarande i läs-/skrivläge eftersom redigeringsläget har angetts till läs-/skriv trots att en function.json har genererats. Ändringar i function.json hanteras inte av Functions-körningen. + Din app är för närvarande i läs-/skrivläge eftersom redigeringsläget har angetts till läs-/skriv trots att en function.json har genererats. Körmiljön för Azure Functions hanterar inte ändringar i function.json. Kopiera @@ -2648,7 +2654,7 @@ Ställ in på extern URL för att använda en API-definition som finns på någo Den här mallen kräver följande tillägg. - Mallberoenden installeras. Du kan skapa en funktion så fort det här är klart. Installationen av beroenden sker i bakgrunden och kan ta upp till 10 minuter. Du kan fortsätta använda portalen under tiden. + Mallberoenden installeras. Du kan skapa en funktion så fort det här är klart. Installationen av beroenden sker i bakgrunden och kan ta upp till 2 minuter. Du kan stänga det här bladet och fortsätta använda portalen under tiden. Vi kunde inte installera runtime-tillägget. Installations-ID {{installationId}} @@ -2948,7 +2954,7 @@ Ställ in på extern URL för att använda en API-definition som finns på någo Distribuera från en lokal Git-lagringsplats. - Konfigurera kontinuerlig integrering med en Dropbox-mapp + Synkronisera innehåll från en Dropbox-molnmapp. Varaktiga funktioner @@ -3068,10 +3074,10 @@ Ställ in på extern URL för att använda en API-definition som finns på någo Isolerade prisnivåer inom en App Service-miljö (ASE) finns inte tillgängliga för din konfiguration. En ASE är ett kraftfullt funktionserbjudande i Azure App Service som erbjuder nätverksisolering och förbättrade skalningsfunktioner. - Dev/Test-prisnivåer är bara tillgängliga för planer som inte finns inom en App Service-miljö. + Dev/Test-prissättningsnivåer finns inte tillgängliga för din konfiguration och finns bara tillgängliga för planer som inte finns inom en App Service-miljö. - Produktionsprisnivåer finns bara tillgängliga för planer som inte ligger inom en App Service-miljö. + Produktionsprissättningnivåer finns inte tillgängliga för din konfiguration och finns bara tillgängliga för planer som inte ligger inom en App Service-miljö. Premium V2 stöds inte för den här skalningsenheten. Distribuera om eller klona din app. @@ -3079,6 +3085,9 @@ Ställ in på extern URL för att använda en API-definition som finns på någo Skala upp + + Gratis + {0} {1}/timme (uppskattat) @@ -3148,6 +3157,12 @@ Ställ in på extern URL för att använda en API-definition som finns på någo Säkerhetskopiera din app {0} gånger dagligen. + + Traffic Manager + + + Förbättra prestanda och tillgänglighet genom att dirigera trafiken mellan flera instanser av din app. + System med enskild klient @@ -3212,7 +3227,7 @@ Ställ in på extern URL för att använda en API-definition som finns på någo Application Insights-instans - Klar + Success Varaktighet (ms) @@ -3223,6 +3238,9 @@ Ställ in på extern URL för att använda en API-definition som finns på någo Antal fel senaste 30 dagarna + + Frågan returnerade {0} objekt + Meddelande @@ -3239,7 +3257,7 @@ Ställ in på extern URL för att använda en API-definition som finns på någo Använd VSTS som versionsserver. Du kan välja att använda avancerade alternativ för ett arbetsflöde för fullständig versionshantering. - Version på server + App Service Kudu-versionsserver Använd App Service som versionsserver. App Service Kudu-motorn bygger automatiskt din kod under distributionen när det är möjligt utan att någon ytterligare konfiguration krävs. @@ -3338,7 +3356,7 @@ Ställ in på extern URL för att använda en API-definition som finns på någo Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. - Not Authorized + Saknar behörighet Anropet för att hämta värdinformation misslyckades. @@ -3352,6 +3370,9 @@ Ställ in på extern URL för att använda en API-definition som finns på någo Växla till klassisk vy + + Konfigurationsinstruktioner + Konfigurera @@ -3359,7 +3380,7 @@ Ställ in på extern URL för att använda en API-definition som finns på någo Anropsspår - Resultaten fördröjs upp till 5 minuter. + Resultaten kan fördröjas i upp till 5 minuter. Dra en fil hit eller @@ -3386,9 +3407,84 @@ Ställ in på extern URL för att använda en API-definition som finns på någo Validerar... - You do not have permissions to create a Build Definition or a Release definition on this project. Contact your project administrator + Du har inte behörighet att skapa en versionsdefinition i projektet. Kontakta din projektadministratör - The account name supplied is not valid. Please supply another account name. + Kontonamnet som angetts är inte giltig. Ange ett annat kontonamn. + + + FTP + FTPS + + + Endast FTPS + + + Inaktivera + + + Stäng + + + Visa + + + Dölj + + + Your password and confirmation password do not match. + + + Instrumentpanel + + + Use an FTP connection to access and copy app files. + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + User Credentials + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + App Credentials + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + Användarnamn + + + Lösenord + + + Bekräfta lösenord + + + FTPS Endpoint + + + Autentiseringsuppgifter + + + Väntar + + + Misslyckades + + + Succcess + + + Save Credentials + + + Reset Credentials + + + HTTP Version \ No newline at end of file diff --git a/server/Resources/tr-TR/Server/Resources/Resources.resx b/server/Resources/tr-TR/Server/Resources/Resources.resx index e9a3253de3..45ec8d02fc 100644 --- a/server/Resources/tr-TR/Server/Resources/Resources.resx +++ b/server/Resources/tr-TR/Server/Resources/Resources.resx @@ -860,7 +860,7 @@ Karşıya Yükle - See additional options + Ek seçenekleri gör Yalnızca önerilen seçeneklere bakın @@ -1577,7 +1577,7 @@ Uygulamanızı korumak ve kullanıcı başına verilerle çalışmak için Kimlik Doğrulaması / Yetkilendirme kullanın. - Yönetilen hizmet kimliği + Yönetilen hizmet kimliği (Önizleme) Uygulamanız diğer Azure hizmetleriyle kendisi olarak iletişim kurmak için, yönetilen bir Azure Active Directory kimliği kullanabilir. @@ -1666,6 +1666,12 @@ Kaynak yönetimi + + Sorunları tanılama ve çözme + + + Self servis tanılama ve sorun giderme deneyimimiz, uygulamanızla ilgili sorunları belirlemenize ve çözmenize yardımcı olur + Gelişmiş araçlar (Kudu) @@ -2057,13 +2063,13 @@ Başka yerde barındırılan bir API tanımı kullanmak için "Dış URL" olarak Düzenleme modunu salt okunur olarak ayarladığınız için uygulamanız şu anda salt okunur modda. Düzenleme modunu değiştirmek için şurayı ziyaret edin: - Kaynak denetimini etkinleştirmiş olmanıza karşın düzenleme modunu okuma\yazma olarak ayarladığınız için uygulamanız şu anda okuma\yazma modunda. Bir sonraki dağıtımınızda, yaptığınız tüm değişikliklerin üzerine yazılabilir. Düzenleme modunu değiştirmek için şurayı ziyaret edin: + Kaynak denetimini etkinleştirmiş olmanıza karşın düzenleme modunu okuma/yazma olarak ayarladığınızdan uygulamanız şu anda okuma/yazma modunda. Bir sonraki dağıtımınızda, yaptığınız tüm değişikliklerin üzerine yazılabilir. Düzenleme modunu değiştirmek için şurayı ziyaret edin: Oluşturulan bir function.json yayımlamış olduğundan uygulamanız şu anda salt okunur modda çalışıyor. Function.json içinde yapılan değişiklikler, İşlevler çalışma zamanı tarafından kullanılmaz. - Oluşturulmuş bir function.json olduğu halde düzenleme modunu okuma\yazma olarak ayarladığınızdan uygulamanız şu anda okuma\yazma modunda. Function.json üzerinde yapılan değişiklikler İşlevler çalışma zamanı tarafından uygulanmayacak. + Oluşturulmuş bir function.json olduğu halde düzenleme modunu okuma\yazma olarak ayarladığınızdan uygulamanız şu anda okuma/yazma modunda. Function.json üzerinde yapılan değişiklikler, İşlevler çalışma zamanı tarafından uygulanmayacak. Kopyala @@ -2201,7 +2207,7 @@ Başka yerde barındırılan bir API tanımı kullanmak için "Dış URL" olarak Canlı ölçümler ve özel sorgular içeren daha zengin bir izleme deneyimi için: - configure Application Insights for your function app + işlev uygulamanız için Application Insights'ı yapılandırın Bu değer ana web uygulamanızın URL'sine eklenir ve yuvanın genel adresi görevini görür. Örneğin, 'contoso' adında bir web uygulamanız ve ‘staging’ adında bir yuvanız varsa, yeni yuvanın URL'si ‘http://contoso-staging.azurewebsites.net’ olacaktır. @@ -2648,7 +2654,7 @@ Başka yerde barındırılan bir API tanımı kullanmak için "Dış URL" olarak Bu şablon aşağıdaki uzantıları gerektirir. - Şablon bağımlılıkları yükleniyor. Bu tamamlandıktan sonra bir işlev oluşturmanız mümkün olacaktır. Bağımlılık yüklemesi arka planda gerçekleşir ve 10 dakika kadar sürebilir. Bu süre boyunca portalı kullanmaya devam edebilirsiniz. + Şablon bağımlılıkları yükleniyor. Bu tamamlandıktan sonra bir işlev oluşturabileceksiniz. Bağımlılık yüklemesi arka planda gerçekleşir ve 2 dakika kadar sürebilir. Bu dikey pencereyi kapatıp bu süre boyunca portalı kullanmaya devam edebilirsiniz. Çalışma zamanı uzantısını yükleyemiyoruz. Yükleme kimliği {{installationId}} @@ -2948,7 +2954,7 @@ Başka yerde barındırılan bir API tanımı kullanmak için "Dış URL" olarak Yerel bir Git deposundan dağıtın. - Bir Dropbox klasörü ile sürekli tümleştirmeyi yapılandırın + İçerikleri bir Dropbox bulut klasöründen eşitleyin. Dayanıklı İşlevler @@ -2990,7 +2996,7 @@ Başka yerde barındırılan bir API tanımı kullanmak için "Dış URL" olarak Önerilen fiyatlandırma katmanları - Additional pricing tiers + Ek fiyatlandırma katmanları Aboneliğiniz bu fiyatlandırma katmanına izin vermiyor @@ -3035,10 +3041,10 @@ Başka yerde barındırılan bir API tanımı kullanmak için "Dış URL" olarak '{0}' planı başarıyla güncelleştirildi! - Successfully submitted job to scale the plan '{0}'. + '{0}' planını ölçeklendirme işi başarıyla gönderildi. - A scale operation is currently in progress for the plan '{0}'. Please wait for the operation to complete before scaling again. + Şu anda '{0}' planı için bir ölçeklendirme işlemi devam ediyor. Yeniden ölçeklendirmeden önce lütfen işlemin tamamlanmasını bekleyin. '{0}' planı güncelleştirilemedi @@ -3068,10 +3074,10 @@ Başka yerde barındırılan bir API tanımı kullanmak için "Dış URL" olarak App Service Ortamı'nda (ASE) yalıtılmış fiyatlandırma katmanları yapılandırmanız için bulunmuyor. ASE, ağ yalıtımı ve geliştirilmiş ölçek özellikleri sunan güçlü bir Azure App Service teklifidir. - Geliştirme / Test fiyatlandırma katmanları, yalnızca bir App Service ortamında barındırılmayan planlarda bulunur. + Geliştirme / Test fiyatlandırma katmanları yapılandırmanız için kullanılamaz ve yalnızca bir App Service ortamında barındırılmayan planlarda kullanılabilir. - Üretim fiyatlandırma katmanları yalnızca bir App Service ortamında barındırılmayan planlarda bulunur. + Üretim fiyatlandırma katmanları yapılandırmanız için kullanılamaz ve yalnızca bir App Service ortamında barındırılmayan planlarda kullanılabilir. Premium V2 bu ölçek birimi için desteklenmiyor. Uygulamanızı yeniden dağıtabilir veya kopyalayabilirsiniz. @@ -3079,6 +3085,9 @@ Başka yerde barındırılan bir API tanımı kullanmak için "Dış URL" olarak Ölçeği artır + + Ücretsiz + {0} {1}/Saat (Tahmini) @@ -3095,10 +3104,10 @@ Başka yerde barındırılan bir API tanımı kullanmak için "Dış URL" olarak App Service Planı'nda dağıtılan uygulamaları çalıştırmak için kullanılan paylaşılan işlem kaynakları. - Dedicated A-series compute resources used to run applications deployed in the App Service Plan. + App Service Planında dağıtılan uygulamaları çalıştırmak için kullanılan adanmış A serisi işlem kaynakları. - Dedicated Dv2-series compute resources used to run applications deployed in the App Service Plan. + App Service Planında dağıtılan uygulamaları çalıştırmak için kullanılan adanmış Dv2 serisi işlem kaynakları. App Service planında dağıtılan ve çalışan uygulamaları çalıştırmak için kullanılabilen bellek. @@ -3148,6 +3157,12 @@ Başka yerde barındırılan bir API tanımı kullanmak için "Dış URL" olarak Uygulamanızı her gün {0} kez yedekleyin. + + Traffic manager + + + Trafiği uygulamanızın birden çok örneği arasında yönlendirerek performans ve kullanılabilirliği artırın. + Tek kiracılı sistem @@ -3176,10 +3191,10 @@ Başka yerde barındırılan bir API tanımı kullanmak için "Dış URL" olarak {0} çekirdek - A-Series compute + A Serisi işlem - Dv2-Series compute + Dv2 serisi işlem Proxies.json geçerli değil. Hata: '{0}'. @@ -3212,7 +3227,7 @@ Başka yerde barındırılan bir API tanımı kullanmak için "Dış URL" olarak Application Insights Örneği - Başarılı + Success Süre (ms) @@ -3223,6 +3238,9 @@ Başka yerde barındırılan bir API tanımı kullanmak için "Dış URL" olarak Son 30 gün içindeki hata sayısı + + Sorgu {0} öğe döndürdü + İleti @@ -3239,7 +3257,7 @@ Başka yerde barındırılan bir API tanımı kullanmak için "Dış URL" olarak Derleme sunucusu olarak VSTS kullanın. Bir tam sürüm yönetimi iş akışı için gelişmiş seçeneklerden yararlanmayı seçebilirsiniz. - Sunucuda derleme + App Service Kudu derleme sunucusu Derleme sunucusu olarak App Service kullanın. App Service Kudu altyapısı kodunuzu gerektiğinde dağıtım sırasında ek yapılandırma gerektirmeden otomatik olarak derler. @@ -3338,7 +3356,7 @@ Başka yerde barındırılan bir API tanımı kullanmak için "Dış URL" olarak Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. - Not Authorized + Yetkili Değil Ana bilgisayar bilgilerini alma çağrısı başarısız oldu. @@ -3347,19 +3365,22 @@ Başka yerde barındırılan bir API tanımı kullanmak için "Dış URL" olarak Çağırma günlükleri tutmak için Application Insights'ı yapılandırın - Azure Functions now supports Application Insights as the preferred monitoring solution for apps under construction and in production. App Insights offers powerful analytics, notifications, and visualizations of your log data, as well as higher overall reliability at scale. + Azure İşlevleri artık geliştirilmekte ve üretimde olan uygulamalar için tercih edilen izleme çözümü olarak Application Insights'ı desteklemektedir. App Insights güçlü analiz yöntemleri, bildirimler ve günlük verileriniz için görselleştirmeler, ayrıca daha büyük ölçekte daha fazla güvenilebilirlik sunmaktadır. Klasik görünümüne geç + + Yapılandırma Yönergeleri + Yapılandır - Invocation traces + Çağırma izleri - Results delayed up to 5 minutes. + Sonuçlar 5 dakika kadar gecikebilir. Buraya bir dosya sürükleyin veya @@ -3386,9 +3407,84 @@ Başka yerde barındırılan bir API tanımı kullanmak için "Dış URL" olarak Doğrulanıyor... - You do not have permissions to create a Build Definition or a Release definition on this project. Contact your project administrator + Bu projede Derleme Tanımı veya Sürüm tanımı oluşturmak için izniniz yok. Proje yöneticinize başvurun - The account name supplied is not valid. Please supply another account name. + Belirtilen hesap adı geçerli değil. Lütfen başka bir hesap adı sağlayın. + + + FTP + FTPS + + + Yalnızca FTPS + + + Devre dışı bırak + + + Anımsatma + + + Göster + + + Gizle + + + Your password and confirmation password do not match. + + + Pano + + + Use an FTP connection to access and copy app files. + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + User Credentials + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + App Credentials + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + Kullanıcı Adı + + + Parola + + + Parolayı Doğrula + + + FTPS Endpoint + + + Kimlik Bilgileri + + + Beklemede + + + Başarısız + + + Succcess + + + Save Credentials + + + Reset Credentials + + + HTTP Version \ No newline at end of file diff --git a/server/Resources/zh-CN/Server/Resources/Resources.resx b/server/Resources/zh-CN/Server/Resources/Resources.resx index 35face480c..99cd9e9db5 100644 --- a/server/Resources/zh-CN/Server/Resources/Resources.resx +++ b/server/Resources/zh-CN/Server/Resources/Resources.resx @@ -1577,7 +1577,7 @@ 使用身份验证/授权来保护应用程序,并使用按用户划分的数据工作。 - 托管的服务标识 + 托管的服务标识(预览) 应用程序可以与其他 Azure 服务通信,因为它本身使用的是托管 Azure Active Directory 标识。 @@ -1666,6 +1666,12 @@ 资源管理 + + 诊断并解决问题 + + + 我们的自助诊断和故障排除体验帮助你确定和解决应用的问题 + 高级工具(Kudu) @@ -2057,13 +2063,13 @@ 由于你已将编辑模式设为“只读”,因此应用当前处于只读模式。若要更改编辑模式,请访问 - 尽管已启用源控件,但由于你已将读取/写入模式设为“读取\写入”,因此应用当前处于读取\写入模式。下次部署可能会替代所做的所有更改。若要更改编辑模式,请访问 + 尽管已启用源控件,但由于已将编辑模式设置为读/写,因此应用当前处于读/写模式。下次部署可能会替代所做的所有更改。若要更改编辑模式,请访问 应用当前处于只读模式,因为你发布了生成的 function.json。Functions 运行时不会采用对 function.json 所做的更改。 - 你的应用当前处于读\写模式,因为尽管具有一个生成的 function.json,但你已将编辑模式设置为读\写。对 function.json 进行的更改将不会被 Functions 运行时所采用。 + 尽管具有一个生成的 function.json,但由于已将编辑模式设置为读/写,因此应用当前处于读/写模式。对 function.json 进行的更改将不会被 Functions 运行时所采用。 复制 @@ -2648,7 +2654,7 @@ 此模板需要以下扩展。 - 安装模板依赖项,安装完成后,可创建一个函数。依赖项安装在后台进行,最多可能需要 10 分钟。在此期间,可继续使用门户。 + 安装模板依赖项,安装完成后即可创建函数。依赖项安装在后台进行,最多可能需要 2 分钟。在此期间,可关闭此边栏选项卡并继续使用门户。 我们无法安装运行时扩展。安装 ID {{installationId}} @@ -2948,7 +2954,7 @@ 从本地 Git 存储库部署。 - 使用 Dropbox 文件夹配置持续集成 + 从 Dropbox 云文件夹同步内容。 Durable 函数 @@ -3068,10 +3074,10 @@ 应用服务环境(ASE)内的独立定价层不可用于你的配置。ASE 是 Azure 应用服务强大的功能服务,可提供网络隔离和改进的缩放功能。 - 开发/测试定价层仅适用于未托管于应用服务环境中的计划。 + 开发/测试定价层不可用于配置,仅适用于未托管于应用服务环境中的计划。 - 生产定价层仅适用于未托管在应用服务环境中的计划。 + 生产定价层不适用于配置,仅适用于未托管在应用服务环境中的计划。 此缩放单位不支持高级版 V2。请考虑重新部署或克隆应用。 @@ -3079,6 +3085,9 @@ 纵向扩展 + + 免费 + {0} {1}/小时(估计值) @@ -3148,6 +3157,12 @@ 每天备份 {0} 次应用。 + + 流量管理器 + + + 在应用的多个实例之间路由流量,改进性能和可用性。 + 单个租户系统 @@ -3212,7 +3227,7 @@ Application Insights 实例 - 成功 + Success 持续时间(毫秒) @@ -3223,6 +3238,9 @@ 过去 30 天内的错误计数 + + 查询返回了 {0} 个项 + 消息 @@ -3239,7 +3257,7 @@ 将 VSTS 用作生成服务器。可以选择利用高级选项获得完整的版本管理工作流。 - 在服务器上生成 + 应用服务 Kudu 生成服务器 将应用服务用作生成服务器。如果无需其他配置,在适用时应用服务 Kudu 引擎将于部署期间自动生成代码。 @@ -3352,6 +3370,9 @@ 切换到经典视图 + + 配置说明 + 配置 @@ -3359,7 +3380,7 @@ 调用跟踪 - 结果延迟了 5 分钟之久。 + 结果可能延迟至多 5 分钟。 将文件拖动到此处或 @@ -3391,4 +3412,79 @@ 提供的帐户名无效。请提供其他帐户名。 + + FTP + FTPS + + + 仅 FTPS + + + 禁用 + + + Dismiss + + + 显示 + + + 隐藏 + + + 密码和确认密码不匹配。 + + + 仪表板 + + + 使用 FTP 连接访问和复制应用文件。 + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + 用户凭据 + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + 应用凭据 + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + 用户名 + + + 密码 + + + 确认密码 + + + FTPS 终结点 + + + 凭据 + + + 挂起 + + + 失败 + + + 成功 + + + 保存凭据 + + + 重置凭据 + + + HTTP Version + \ No newline at end of file diff --git a/server/Resources/zh-TW/Server/Resources/Resources.resx b/server/Resources/zh-TW/Server/Resources/Resources.resx index d82cbd5ba6..f73dd173d2 100644 --- a/server/Resources/zh-TW/Server/Resources/Resources.resx +++ b/server/Resources/zh-TW/Server/Resources/Resources.resx @@ -1577,7 +1577,7 @@ 使用驗證/授權保護您的應用程式及使用個別使用者的資料。 - 受管理服務識別 + 受管理的服務身分識別 (預覽) 因為您的應用程式使用受管理的 Azure Active Directory 身分識別,所以可與其他 Azure 服務通訊。 @@ -1666,6 +1666,12 @@ 資源管理 + + 診斷並解決問題 + + + 我們的自助式診斷與疑難排解體驗,可協助您透過應用程式識別並解決問題 + 進階工具 (Kudu) @@ -2057,13 +2063,13 @@ 因為您已將編輯模式設定為唯讀模式,所以應用程式目前是唯讀模式。若要變更編輯模式,請瀏覽 - 因為雖然已啟用了原始檔控制,但您仍已將編輯模式設定為讀寫,所以應用程式目前是讀寫模式。您所進行的任何變更,都會覆寫下一次的部署。若要變更編輯模式,請瀏覽 + 因為根據您的設定,即使已啟用了原始檔控制,仍將編輯模式設定為讀取/寫入模式,所以您的應用程式目前為讀取/寫入模式。您的所有變更在下次部署時皆會予以覆寫。若要變更編輯模式,請前往 因為您已發行產生的 function.json,所以應用程式目前為唯讀模式。Functions 執行階段不會接受 Function.json 的變更。 - 您的應用程式目前處於讀取\寫入模式,原因是雖然您有已產生的 function.json,但仍將編輯模式設為讀取\寫入。Functions 執行階段不會執行對 function.json 進行的變更。 + 因為根據您的設定,即使已產生了 function.json,仍將編輯模式設定為讀取/寫入模式,所以您的應用程式目前為讀取/寫入模式。Functions 執行階段不會執行 function.json 的變更。 複製 @@ -2201,7 +2207,7 @@ 如需更多的監視體驗,包括即時計量與自訂查詢: - configure Application Insights for your function app + 為您的函數應用程式設定 Application Insights 此值之後會附加您主要 Web 應用程式的 URL,並會用為位置的公用位址。例如,若您的 Web 應用程式名稱為 'contoso',位置名稱為 'staging',則新位置的 URL 會類似於 'http://contoso-staging.azurewebsites.net'。 @@ -2648,7 +2654,7 @@ 此範本需要下列延伸模組。 - 正在安裝範本相依性,該動作完成後,你將可以建立函式。相依性安裝會在背景進行,而且最多可能會花費 10 分鐘。在這段時間內,您可以繼續使用入口網站。 + 安裝範本相依性之後就能建立函式。相依性安裝會在背景執行,最長可能需要 2 分鐘的時間。您可以關閉此刀鋒視窗。在這段期間內,您可以繼續使用入口網站。 無法安裝執行階段延伸模組。安裝識別碼 {{installationId}} @@ -2948,7 +2954,7 @@ 從本機 Git 存放庫部署。 - 設定與 Dropbox 資料夾的持續整合 + 從 Dropbox 雲端資料夾同步內容。 Durable Functions @@ -2990,7 +2996,7 @@ 建議的定價層 - Additional pricing tiers + 其他定價層 您的訂用帳戶不允許此定價層 @@ -3035,10 +3041,10 @@ 方案 '{0}' 已成功更新! - Successfully submitted job to scale the plan '{0}'. + 已成功提交作業以調整方案 '{0}'。 - A scale operation is currently in progress for the plan '{0}'. Please wait for the operation to complete before scaling again. + 方案 '{0}' 的調整作業目前進行中。 請等候作業完成後再次調整。 無法更新方案 '{0}' @@ -3068,10 +3074,10 @@ 您的設定不適用於 App Service 環境 (ASE) 中隔離環境的定價層。ASE 是 Azure App Service 提供的強大功能之一,可隔離網路並提升調整的能力。 - 只有未裝載在 App Service 環境中的方案,才可使用開發/測試定價層。 + 開發/測試定價並不適用於您的設定,而僅適用於未託管於 App Service 環境中的方案。 - 生產環境定價層僅適用於不是裝載在 App Service 環境中的方案。 + 生產定價層並不適用於您的設定,而僅適用於未託管於 App Service 環境中的方案。 此縮放單位不支援進階 V2。請考慮重新部署或複製您的應用程式。 @@ -3079,6 +3085,9 @@ 相應增加 + + 免費 + 每小時 {0} {1} (預估) @@ -3095,10 +3104,10 @@ 用以執行部署在 App Service 方案中之應用程式的共用計算資源。 - Dedicated A-series compute resources used to run applications deployed in the App Service Plan. + 用來執行應用程式部署於 App Service 方案中之應用程式的專用 A 系列計算資源。 - Dedicated Dv2-series compute resources used to run applications deployed in the App Service Plan. + 用來執行應用程式部署於 App Service 方案中之應用程式的專用 Dv2 系列計算資源。 App Service 方案中所部署用以執行應用程式的記憶體及正在使用的記憶體。 @@ -3146,7 +3155,13 @@ 每日備份 - 每日備份您的應用程式 {0} 的時間。 + 每日備份您的應用程式 {0} 次。 + + + 流量管理員 + + + 在多個應用程式執行個體間路由流量,進而提升效能與可用性。 單一租用戶系統 @@ -3176,10 +3191,10 @@ {0} 個核心 - A-Series compute + A 系列計算 - Dv2-Series compute + Dv2 系列計算 proxies.json 無效。錯誤: '{0}'。 @@ -3212,7 +3227,7 @@ Application Insights 執行個體 - 成功 + Success 持續期間 (毫秒) @@ -3223,6 +3238,9 @@ 過去 30 天內的錯誤計數 + + 查詢傳回了 {0} 個項目 + 訊息 @@ -3239,7 +3257,7 @@ 使用 VSTS 作為組建伺服器。您可以選擇對整個發行管理工作流程使用進階選項。 - 在伺服器上建置 + App Service Kudu 組建伺服器 使用 App Service 作為組建伺服器。App Service Kudu 引擎會在適用且無須其他設定的情況下,自動在部署期間建置您的程式碼。 @@ -3338,7 +3356,7 @@ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. - Not Authorized + 未獲授權 取得主機資訊的呼叫失敗。 @@ -3347,19 +3365,22 @@ 設定 Application Insights 擷取引動過程記錄 - Azure Functions now supports Application Insights as the preferred monitoring solution for apps under construction and in production. App Insights offers powerful analytics, notifications, and visualizations of your log data, as well as higher overall reliability at scale. + Azure Functions 現在支援使用 Application Insights 當作監視建構中及生產中應用程式時偏好的解決方案。App Insights 提供強大的記錄資料分析、通知及視覺化功能,而且提升大規模的整體可靠性。 切換至傳統檢視 + + 組態指示 + 設定 - Invocation traces + 引動過程追蹤 - Results delayed up to 5 minutes. + 結果最長可能會延遲 5 分鐘。 將檔案拖曳到此處或 @@ -3386,9 +3407,84 @@ 正在驗證... - You do not have permissions to create a Build Definition or a Release definition on this project. Contact your project administrator + 您無權在此專案上建立組建定義或版本定義。請連絡您的專案系統管理員 - The account name supplied is not valid. Please supply another account name. + 提供的帳戶名稱無效。請提供另一個帳戶名稱。 + + + FTP + FTPS + + + 僅 FTPS + + + 停用 + + + 關閉 + + + 顯示 + + + 隱藏 + + + 您的密碼與確認密碼不相符。 + + + 儀表板 + + + 請使用 FTP 連線存取及複製應用程式檔案。 + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + 使用者認證 + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + 應用程式認證 + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + 使用者名稱 + + + 密碼 + + + 確認密碼 + + + FTPS 端點 + + + 認證 + + + 暫止 + + + 失敗 + + + 成功 + + + 儲存認證 + + + 重設認證 + + + HTTP 版本 \ No newline at end of file diff --git a/server/gulpfile.js b/server/gulpfile.js index a5ebfde42f..4d7c17525f 100644 --- a/server/gulpfile.js +++ b/server/gulpfile.js @@ -26,6 +26,7 @@ gulp.task('build-all', function (cb) { 'build-templates', 'build-bindings', 'resx-to-typescript-models', + 'list-numeric-versions', 'resources-clean', cb ); @@ -406,6 +407,18 @@ gulp.task('unzip-templates', function () { return gulpMerge(streams); }); +gulp.task("list-numeric-versions", function () { + // Checks version matches patter x.x with unlimited .x and x being any numeric value + const regex = /\d+(?:\.\d+)*/; + const templateKeys = Object.keys(templateVersionMap); + const templateVersions = templateKeys.filter(x => regex.test(x)); + let writePath = path.join(__dirname, 'src', 'actions', 'data'); + if (!fs.existsSync(writePath)) { + fs.mkdirSync(writePath); + } + writePath = path.join(writePath, 'supportedFunctionsFxVersions.json'); + fs.writeFileSync(writePath, new Buffer(JSON.stringify(templateVersions))); +}); /******** * UTILITIES */ diff --git a/server/src/actions/data/supportedFunctionsFxVersions.json b/server/src/actions/data/supportedFunctionsFxVersions.json new file mode 100644 index 0000000000..9f7c45246f --- /dev/null +++ b/server/src/actions/data/supportedFunctionsFxVersions.json @@ -0,0 +1 @@ +["1","2"] \ No newline at end of file diff --git a/server/src/actions/metadata.ts b/server/src/actions/metadata.ts index bc467ecd8f..4967b0d15e 100644 --- a/server/src/actions/metadata.ts +++ b/server/src/actions/metadata.ts @@ -1,81 +1,95 @@ import { Request, Response } from 'express'; +import { versionCompare, isNumericVersion } from '../utilities/versions'; import * as fs from 'async-file'; import * as path from 'path'; const _languageMap: { [key: string]: string } = { - ja: 'ja-JP', - ko: 'ko-KR', - sv: 'sv-SE', - cs: 'cs-CZ', - 'zh-hans': 'zh-CN', - 'zh-hant': 'zh-TW', - 'en-us' : 'en', - 'en-gb' : 'en' + ja: 'ja-JP', + ko: 'ko-KR', + sv: 'sv-SE', + cs: 'cs-CZ', + 'zh-hans': 'zh-CN', + 'zh-hant': 'zh-TW', + 'en-us': 'en', + 'en-gb': 'en' }; +const versionList: string[] = require('./data/supportedFunctionsFxVersions.json').sort(versionCompare); + +function findLatestTemplateVersion(version: string): string { + if (isNumericVersion(version)) { + return version; + } + let retVersion = versionList.filter(x => versionCompare(version, x) >= 0); + + return retVersion.length > 0 ? retVersion[retVersion.length - 1] : 'default'; +} + export async function getTemplates(req: Request, res: Response) { - const runtime: string = req.query['runtime'] || 'default'; - const versionFile = path.join(__dirname, 'templates', runtime.replace('~', '') + '.json'); - const defaultFile = path.join(__dirname, 'templates', 'default.json'); + const runtime: string = req.query['runtime'] || 'default'; + const runtimeVersion = findLatestTemplateVersion(runtime.replace('~', '')); + const versionFile = path.join(__dirname, 'templates', runtimeVersion + '.json'); + const defaultFile = path.join(__dirname, 'templates', 'default.json'); - if (await fs.exists(versionFile)) { - res.sendFile(versionFile); - } else if (await fs.exists(defaultFile)) { - res.sendFile(defaultFile); - } else { - res.sendStatus(404); - } + if (await fs.exists(versionFile)) { + res.sendFile(versionFile); + } else if (await fs.exists(defaultFile)) { + res.sendFile(defaultFile); + } else { + res.sendStatus(404); + } } export async function getBindingConfig(req: Request, res: Response) { - const runtime: string = req.query['runtime'] || 'default'; - const versionFile = path.join(__dirname, 'bindings', runtime.replace('~', '') + '.json'); - const defaultFile = path.join(__dirname, 'bindings', 'default.json'); + const runtime: string = req.query['runtime'] || 'default'; + const runtimeVersion = findLatestTemplateVersion(runtime.replace('~', '')); + const versionFile = path.join(__dirname, 'bindings', runtimeVersion + '.json'); + const defaultFile = path.join(__dirname, 'bindings', 'default.json'); - if (await fs.exists(versionFile)) { - res.sendFile(versionFile); - } else if (await fs.exists(defaultFile)) { - res.sendFile(defaultFile); - } else { - res.sendStatus(404); - } + if (await fs.exists(versionFile)) { + res.sendFile(versionFile); + } else if (await fs.exists(defaultFile)) { + res.sendFile(defaultFile); + } else { + res.sendStatus(404); + } } export async function getResources(req: Request, res: Response) { - const runtime: string = req.query['runtime'] || 'default'; - const name: string = req.query['name'] || 'en'; + const runtime: string = req.query['runtime'] || 'default'; + const runtimeVersion = findLatestTemplateVersion(runtime.replace('~', '')); + const name: string = req.query['name'] || 'en'; - let langCode = 'en'; - if (name !== 'en') { - if (!!_languageMap[name]) { - langCode = _languageMap[name]; - } else { - langCode = `${name.toLowerCase()}-${name.toUpperCase()}`; - } + let langCode = 'en'; + if (name !== 'en') { + if (!!_languageMap[name]) { + langCode = _languageMap[name]; + } else { + langCode = `${name.toLowerCase()}-${name.toUpperCase()}`; } + } - const cleanRuntimeVersion = runtime.replace('~', ''); - //this is the ideal item to return, it is the correct language and version asked for - var versionFile = langCode === 'en' ? `Resources.${cleanRuntimeVersion}.json` : `Resources.${langCode}.${cleanRuntimeVersion}.json`; - //This means the version asked for don't exist but the strings for hte default version will be returned - var defaultVersionFile = langCode === 'en' ? 'Resources.default.json' : `Resources.${langCode}.default.json`; - //This is for development only so people can develop without having a templates folder laid out - var defaultFallbackFile = 'Resources.json'; + //this is the ideal item to return, it is the correct language and version asked for + var versionFile = langCode === 'en' ? `Resources.${runtimeVersion}.json` : `Resources.${langCode}.${runtimeVersion}.json`; + //This means the version asked for don't exist but the strings for hte default version will be returned + var defaultVersionFile = langCode === 'en' ? 'Resources.default.json' : `Resources.${langCode}.default.json`; + //This is for development only so people can develop without having a templates folder laid out + var defaultFallbackFile = 'Resources.json'; - var folder = path.join(__dirname, 'resources'); - if (await fs.exists(path.join(folder, versionFile))) { - res.sendFile(path.join(folder, versionFile)); - } else if (await fs.exists(path.join(folder, defaultVersionFile))) { - res.sendFile(path.join(folder, defaultVersionFile)); - } else { - res.sendFile(path.join(folder, defaultFallbackFile)); - } + var folder = path.join(__dirname, 'resources'); + if (await fs.exists(path.join(folder, versionFile))) { + res.sendFile(path.join(folder, versionFile)); + } else if (await fs.exists(path.join(folder, defaultVersionFile))) { + res.sendFile(path.join(folder, defaultVersionFile)); + } else { + res.sendFile(path.join(folder, defaultFallbackFile)); + } } export function getRuntimeVersion(_: Request, res: Response) { - res.json('~1'); + res.json('~1'); } export function getRoutingVersion(_: Request, res: Response) { - res.json('~0.2'); + res.json('~0.2'); } diff --git a/server/src/deployment-center/bitbucket-auth.ts b/server/src/deployment-center/bitbucket-auth.ts index bcb0431301..ae6ad286c9 100644 --- a/server/src/deployment-center/bitbucket-auth.ts +++ b/server/src/deployment-center/bitbucket-auth.ts @@ -2,7 +2,7 @@ import { Application } from 'express'; import axios from 'axios'; import { oAuthHelper } from './oauth-helper'; import { constants } from '../constants'; -import { GUID } from '../utilities'; +import { GUID } from '../utilities/guid'; import { LogHelper } from '../logHelper'; import { ApiRequest, PassthroughRequestBody } from '../types/request'; const oauthHelper: oAuthHelper = new oAuthHelper('bitbucket'); diff --git a/server/src/deployment-center/dropbox-auth.ts b/server/src/deployment-center/dropbox-auth.ts index f361727074..7530bc74af 100644 --- a/server/src/deployment-center/dropbox-auth.ts +++ b/server/src/deployment-center/dropbox-auth.ts @@ -1,7 +1,7 @@ import { Application } from 'express'; import axios from 'axios'; import { oAuthHelper } from './oauth-helper'; -import { GUID } from '../utilities'; +import { GUID } from '../utilities/guid'; import { LogHelper } from '../logHelper'; import { ApiRequest, PassthroughRequestBody } from '../types/request'; import { constants } from '../constants'; diff --git a/server/src/deployment-center/github-auth.ts b/server/src/deployment-center/github-auth.ts index 416b6cebba..b6705a9fea 100644 --- a/server/src/deployment-center/github-auth.ts +++ b/server/src/deployment-center/github-auth.ts @@ -2,7 +2,7 @@ import { Application } from 'express'; import axios from 'axios'; import { oAuthHelper } from './oauth-helper'; import { constants } from '../constants'; -import { GUID } from '../utilities'; +import { GUID } from '../utilities/guid'; import { LogHelper } from '../logHelper'; import { ApiRequest, PassthroughRequestBody } from '../types/request'; const oauthHelper: oAuthHelper = new oAuthHelper('github'); diff --git a/server/src/deployment-center/onedrive-auth.ts b/server/src/deployment-center/onedrive-auth.ts index 89ae4d1b02..91e4a7f75c 100644 --- a/server/src/deployment-center/onedrive-auth.ts +++ b/server/src/deployment-center/onedrive-auth.ts @@ -3,7 +3,7 @@ import axios from 'axios'; import { oAuthHelper } from './oauth-helper'; import { LogHelper } from '../logHelper'; import { ApiRequest, PassthroughRequestBody } from '../types/request'; -import { GUID } from '../utilities'; +import { GUID } from '../utilities/guid'; import { constants } from '../constants'; const oauthHelper: oAuthHelper = new oAuthHelper('onedrive'); diff --git a/server/src/deployment-center/vso-deployment-passthrough.ts b/server/src/deployment-center/vso-deployment-passthrough.ts index 980ff66370..0464bc4074 100644 --- a/server/src/deployment-center/vso-deployment-passthrough.ts +++ b/server/src/deployment-center/vso-deployment-passthrough.ts @@ -5,7 +5,7 @@ import axios from 'axios'; import { LogHelper } from "../logHelper"; export function setupVsoPassthroughAuthentication(app: Application) { - app.post('/api/sepupvso', async (req: ApiRequest, res) => { + app.post('/api/setupvso', async (req: ApiRequest, res) => { const uri = `https://${req.query.accountName}.portalext.visualstudio.com/_apis/ContinuousDelivery/ProvisioningConfigurations?api-version=3.2-preview.1`; const headers = req.headers; const body = req.body; @@ -14,6 +14,7 @@ export function setupVsoPassthroughAuthentication(app: Application) { const githubToken = await getGithubTokens(req) body.source.repository.authorizationInfo.parameters.AccessToken = githubToken.token; } + delete body.authToken; try { const result = await axios.post(uri, body, { headers: { diff --git a/server/src/utilities.ts b/server/src/utilities/guid.ts similarity index 92% rename from server/src/utilities.ts rename to server/src/utilities/guid.ts index 1aea71dde3..4444740ecb 100644 --- a/server/src/utilities.ts +++ b/server/src/utilities/guid.ts @@ -1,9 +1,9 @@ export class GUID { public static newGuid() { - return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { var r = (Math.random() * 16) | 0, v = c == 'x' ? r : (r & 0x3) | 0x8; return v.toString(16); }); } -} +} \ No newline at end of file diff --git a/server/src/utilities/versions.ts b/server/src/utilities/versions.ts new file mode 100644 index 0000000000..7811c54286 --- /dev/null +++ b/server/src/utilities/versions.ts @@ -0,0 +1,26 @@ +export function versionCompare(version1: string, version2: string): -1 | 0 | 1 { + let v1parts = version1.split('.'); + let v2parts = version2.split('.'); + + while (v1parts.length < v2parts.length) v1parts.push("0"); + while (v2parts.length < v1parts.length) v2parts.push("0"); + + for (var i = 0; i < v1parts.length; ++i) { + if (+v1parts[i] === +v2parts[i]) { + continue; + } + else if (+v1parts[i] > +v2parts[i]) { + return 1; + } + else { + return -1; + } + } + return 0; +} + +export function isNumericVersion(version: string){ + // Checks version matches patter x.x with unlimited .x and x being any numeric value + const regex = /\d+(?:\.\d+)*/; + return regex.test(version); +} \ No newline at end of file diff --git a/tslint.json b/tslint.json index 5c959cfdde..e78912adde 100644 --- a/tslint.json +++ b/tslint.json @@ -20,6 +20,7 @@ "spaces" ], "interface-over-type-literal": true, + "no-consecutive-blank-lines": true, "label-position": true, "max-line-length": [ false,