fix: preserve locality when using timezone plugin methods
Fixes #2398 

Not entirely sure if this also needs to be added below, to the non-prototype methods. I'm not familiar with this codebase but am happy to make changes as needed to this PR.
Running
`dayjs('2020-01-08T15:14:59.741774+00:00')
          .locale('es')
          .tz('America/New_York')
          .format('LLL')`
gives `January 8, 2020 10:14 AM` instead of `8 de enero de 2020 10:14`.

However, switching the order of `locale` and `tz`, e.g.
`dayjs('2020-01-08T15:14:59.741774+00:00')
          .tz('America/New_York')
          .locale('es')
          .format('LLL')`
gives the correct result of `8 de enero de 2020 10:14`.

I believe this is the result of the following line of code, which overrides the current locale:
https://github.com/iamkun/dayjs/blob/a9d7d0398d22ebd4bfc3812ca0134a97606d54d9/src/plugin/timezone/index.js#L98

This is the intended behavior or is it something to be fixed to support the provided locale?

Calling tz() overrides locale
diff --git a/src/plugin/timezone/index.js b/src/plugin/timezone/index.js
index c8f8a4675..832fb4a73 100644
--- a/src/plugin/timezone/index.js
+++ b/src/plugin/timezone/index.js
@@ -97,7 +97,7 @@ export default (o, c, d) => {
     const date = this.toDate()
     const target = date.toLocaleString('en-US', { timeZone: timezone })
     const diff = Math.round((date - new Date(target)) / 1000 / 60)
-    let ins = d(target).$set(MS, this.$ms)
+    let ins = d(target, { locale: this.$L }).$set(MS, this.$ms)
       .utcOffset((-Math.round(date.getTimezoneOffset() / 15) * 15) - diff, true)
     if (keepLocalTime) {
       const newOffset = ins.utcOffset()
@@ -120,7 +120,7 @@ export default (o, c, d) => {
       return oldStartOf.call(this, units, startOf)
     }
 
-    const withoutTz = d(this.format('YYYY-MM-DD HH:mm:ss:SSS'))
+    const withoutTz = d(this.format('YYYY-MM-DD HH:mm:ss:SSS'), { locale: this.$L })
     const startOfWithoutTz = oldStartOf.call(withoutTz, units, startOf)
     return startOfWithoutTz.tz(this.$x.$timezone, true)
   }

diff --git a/test/plugin/timezone.test.js b/test/plugin/timezone.test.js
index 2b28cc309..c4529c6c8 100644
--- a/test/plugin/timezone.test.js
+++ b/test/plugin/timezone.test.js
@@ -318,4 +318,15 @@ describe('startOf and endOf', () => {
     const endOfDay = originalDay.endOf('day')
     expect(endOfDay.valueOf()).toEqual(originalDay.valueOf())
   })
+
+  it('preserves locality when tz is called', () => {
+    const tzWithoutLocality = dayjs.tz('2023-02-17 00:00:00', NY)
+    const tzWithLocality = dayjs.tz('2023-02-17 00:00:00', NY).locale({
+      name: 'locale_test',
+      weekStart: 3
+    })
+
+    expect(tzWithoutLocality.startOf('week').format('YYYY-MM-DD')).toEqual('2023-02-12')
+    expect(tzWithLocality.startOf('week').format('YYYY-MM-DD')).toEqual('2023-02-15')
+  })
 })

{"test/plugin/timezone.test.js": {"run": "PASS", "test": "FAIL", "fix": "PASS"}}
{"test/timezone.test.js:Add Time days (DST)": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/de.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/is.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/sk.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/advancedFormat.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/weekYear.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/timezone.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/isSameOrBefore.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/pluralGetSet.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/timezone.test.js:Diff (DST)": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/bigIntSupport.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/keys.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/zh-tw.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/utils.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/relativeTime.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/parse.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/localizedFormat.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/updateLocale.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/constructor.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/weekday.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/zh-hk.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/isLeapYear.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/query.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/localeData.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/timezone.test.js:UTC diff in DST": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/zh.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/ja.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/declarations.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/ar-kw.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/ar-dz.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/ru.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/bn.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/dayOfYear.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/timezone.test.js:UTC add day in DST": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/manipulate.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/issues/issue2027.swapped-order.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/cs.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/en.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/he.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/get-set.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/utc.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/bn-bd.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/quarterOfYear.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/objectSupport.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/fi.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/ar-tn.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/ar-ma.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/sv.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/toArray.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/timezone.test.js:Utc Offset": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/ar-sa.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/bg.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/issues/issue2027.correct-order.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/utc-utcOffset.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/sr-cyrl.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/br.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/isMoment.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/isYesterday.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/pl.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/toObject.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/sr.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/it-ch.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/preParsePostFormat.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/isSameOrAfter.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/weekOfYear.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/comparison.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/calendar.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/isTomorrow.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/hu.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/et.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/timezone.test.js:UTC and utcOffset": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/arraySupport.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/isToday.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/hr.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/ar-ly.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/ku.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/badMutable.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/sv-fi.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/customParseFormat.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/duration.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/isoWeek.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/ar-iq.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/minMax.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/isoWeeksInYear.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/uk.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/buddhistEra.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/display.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/devHelper.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/lt.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/zh-cn.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/ar.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/isBetween.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}}
{"test/plugin/timezone.test.js": {"run": "PASS", "test": "FAIL", "fix": "PASS"}}
{"passed_count": 95, "failed_count": 0, "skipped_count": 0, "passed_tests": ["test/timezone.test.js:Add Time days (DST)", "test/locale/sk.test.js", "test/plugin/weekYear.test.js", "test/plugin/isSameOrBefore.test.js", "test/plugin/pluralGetSet.test.js", "test/timezone.test.js:Diff (DST)", "test/plugin/bigIntSupport.test.js", "test/locale/keys.test.js", "test/locale/zh-tw.test.js", "test/parse.test.js", "test/plugin/weekday.test.js", "test/locale/zh-hk.test.js", "test/plugin/isLeapYear.test.js", "test/query.test.js", "test/plugin/localeData.test.js", "test/timezone.test.js:UTC diff in DST", "test/locale/zh.test.js", "test/plugin/declarations.test.js", "test/locale/bn.test.js", "test/plugin/dayOfYear.test.js", "test/locale/en.test.js", "test/locale/he.test.js", "test/get-set.test.js", "test/locale/bn-bd.test.js", "test/plugin/quarterOfYear.test.js", "test/plugin/objectSupport.test.js", "test/locale/fi.test.js", "test/locale/ar-sa.test.js", "test/issues/issue2027.correct-order.test.js", "test/plugin/utc-utcOffset.test.js", "test/locale/br.test.js", "test/locale/pl.test.js", "test/plugin/toObject.test.js", "test/plugin/isSameOrAfter.test.js", "test/plugin/weekOfYear.test.js", "test/plugin/calendar.test.js", "test/plugin/arraySupport.test.js", "test/plugin/isToday.test.js", "test/locale/hr.test.js", "test/locale/ar-ly.test.js", "test/locale.test.js", "test/plugin/customParseFormat.test.js", "test/plugin/duration.test.js", "test/plugin/isoWeeksInYear.test.js", "test/locale/uk.test.js", "test/locale/zh-cn.test.js", "test/plugin/isBetween.test.js", "test/plugin.test.js", "test/locale/de.test.js", "test/locale/is.test.js", "test/plugin/advancedFormat.test.js", "test/timezone.test.js", "test/utils.test.js", "test/plugin/relativeTime.test.js", "test/plugin/localizedFormat.test.js", "test/plugin/updateLocale.test.js", "test/constructor.test.js", "test/locale/ja.test.js", "test/locale/ar-kw.test.js", "test/locale/ar-dz.test.js", "test/plugin/timezone.test.js", "test/locale/ru.test.js", "test/timezone.test.js:UTC add day in DST", "test/manipulate.test.js", "test/issues/issue2027.swapped-order.test.js", "test/locale/cs.test.js", "test/plugin/utc.test.js", "test/locale/ar-tn.test.js", "test/locale/ar-ma.test.js", "test/locale/sv.test.js", "test/plugin/toArray.test.js", "test/timezone.test.js:Utc Offset", "test/locale/bg.test.js", "test/locale/sr-cyrl.test.js", "test/plugin/isMoment.test.js", "test/plugin/isYesterday.test.js", "test/locale/sr.test.js", "test/locale/it-ch.test.js", "test/plugin/preParsePostFormat.test.js", "test/comparison.test.js", "test/plugin/isTomorrow.test.js", "test/locale/hu.test.js", "test/locale/et.test.js", "test/timezone.test.js:UTC and utcOffset", "test/locale/ku.test.js", "test/plugin/badMutable.test.js", "test/locale/sv-fi.test.js", "test/plugin/isoWeek.test.js", "test/locale/ar-iq.test.js", "test/plugin/minMax.test.js", "test/plugin/buddhistEra.test.js", "test/display.test.js", "test/plugin/devHelper.test.js", "test/locale/lt.test.js", "test/locale/ar.test.js"], "failed_tests": [], "skipped_tests": []}
{"passed_count": 94, "failed_count": 1, "skipped_count": 0, "passed_tests": ["test/timezone.test.js:Add Time days (DST)", "test/locale/sk.test.js", "test/plugin/weekYear.test.js", "test/plugin/isSameOrBefore.test.js", "test/plugin/pluralGetSet.test.js", "test/timezone.test.js:Diff (DST)", "test/plugin/bigIntSupport.test.js", "test/locale/keys.test.js", "test/locale/zh-tw.test.js", "test/parse.test.js", "test/plugin/weekday.test.js", "test/locale/zh-hk.test.js", "test/plugin/isLeapYear.test.js", "test/query.test.js", "test/plugin/localeData.test.js", "test/timezone.test.js:UTC diff in DST", "test/locale/zh.test.js", "test/plugin/declarations.test.js", "test/locale/bn.test.js", "test/plugin/dayOfYear.test.js", "test/locale/en.test.js", "test/locale/he.test.js", "test/get-set.test.js", "test/locale/bn-bd.test.js", "test/plugin/quarterOfYear.test.js", "test/plugin/objectSupport.test.js", "test/locale/fi.test.js", "test/locale/ar-sa.test.js", "test/issues/issue2027.correct-order.test.js", "test/plugin/utc-utcOffset.test.js", "test/locale/br.test.js", "test/locale/pl.test.js", "test/plugin/toObject.test.js", "test/plugin/isSameOrAfter.test.js", "test/plugin/weekOfYear.test.js", "test/plugin/calendar.test.js", "test/plugin/arraySupport.test.js", "test/plugin/isToday.test.js", "test/locale/hr.test.js", "test/locale/ar-ly.test.js", "test/locale.test.js", "test/plugin/customParseFormat.test.js", "test/plugin/duration.test.js", "test/plugin/isoWeeksInYear.test.js", "test/locale/uk.test.js", "test/locale/zh-cn.test.js", "test/plugin/isBetween.test.js", "test/plugin.test.js", "test/locale/de.test.js", "test/locale/is.test.js", "test/plugin/advancedFormat.test.js", "test/timezone.test.js", "test/utils.test.js", "test/plugin/relativeTime.test.js", "test/plugin/localizedFormat.test.js", "test/plugin/updateLocale.test.js", "test/constructor.test.js", "test/locale/ja.test.js", "test/locale/ar-kw.test.js", "test/locale/ar-dz.test.js", "test/locale/ru.test.js", "test/timezone.test.js:UTC add day in DST", "test/manipulate.test.js", "test/issues/issue2027.swapped-order.test.js", "test/locale/cs.test.js", "test/plugin/utc.test.js", "test/locale/ar-tn.test.js", "test/locale/ar-ma.test.js", "test/locale/sv.test.js", "test/plugin/toArray.test.js", "test/timezone.test.js:Utc Offset", "test/locale/bg.test.js", "test/locale/sr-cyrl.test.js", "test/plugin/isMoment.test.js", "test/plugin/isYesterday.test.js", "test/locale/sr.test.js", "test/locale/it-ch.test.js", "test/plugin/preParsePostFormat.test.js", "test/comparison.test.js", "test/locale/et.test.js", "test/locale/hu.test.js", "test/plugin/isTomorrow.test.js", "test/timezone.test.js:UTC and utcOffset", "test/locale/ku.test.js", "test/plugin/badMutable.test.js", "test/locale/sv-fi.test.js", "test/plugin/isoWeek.test.js", "test/locale/ar-iq.test.js", "test/plugin/minMax.test.js", "test/plugin/buddhistEra.test.js", "test/display.test.js", "test/plugin/devHelper.test.js", "test/locale/lt.test.js", "test/locale/ar.test.js"], "failed_tests": ["test/plugin/timezone.test.js"], "skipped_tests": []}
{"passed_count": 95, "failed_count": 0, "skipped_count": 0, "passed_tests": ["test/timezone.test.js:Add Time days (DST)", "test/locale/sk.test.js", "test/plugin/weekYear.test.js", "test/plugin/isSameOrBefore.test.js", "test/plugin/pluralGetSet.test.js", "test/timezone.test.js:Diff (DST)", "test/plugin/bigIntSupport.test.js", "test/locale/keys.test.js", "test/locale/zh-tw.test.js", "test/parse.test.js", "test/plugin/weekday.test.js", "test/locale/zh-hk.test.js", "test/plugin/isLeapYear.test.js", "test/query.test.js", "test/plugin/localeData.test.js", "test/timezone.test.js:UTC diff in DST", "test/locale/zh.test.js", "test/plugin/declarations.test.js", "test/locale/bn.test.js", "test/plugin/dayOfYear.test.js", "test/locale/en.test.js", "test/locale/he.test.js", "test/get-set.test.js", "test/locale/bn-bd.test.js", "test/plugin/quarterOfYear.test.js", "test/plugin/objectSupport.test.js", "test/locale/fi.test.js", "test/locale/ar-sa.test.js", "test/issues/issue2027.correct-order.test.js", "test/plugin/utc-utcOffset.test.js", "test/locale/br.test.js", "test/locale/pl.test.js", "test/plugin/toObject.test.js", "test/plugin/isSameOrAfter.test.js", "test/plugin/weekOfYear.test.js", "test/plugin/calendar.test.js", "test/plugin/arraySupport.test.js", "test/plugin/isToday.test.js", "test/locale/hr.test.js", "test/locale/ar-ly.test.js", "test/locale.test.js", "test/plugin/customParseFormat.test.js", "test/plugin/duration.test.js", "test/plugin/isoWeeksInYear.test.js", "test/locale/uk.test.js", "test/locale/zh-cn.test.js", "test/plugin/isBetween.test.js", "test/plugin.test.js", "test/locale/de.test.js", "test/locale/is.test.js", "test/plugin/advancedFormat.test.js", "test/timezone.test.js", "test/utils.test.js", "test/plugin/relativeTime.test.js", "test/plugin/localizedFormat.test.js", "test/plugin/updateLocale.test.js", "test/constructor.test.js", "test/locale/ja.test.js", "test/locale/ar-kw.test.js", "test/locale/ar-dz.test.js", "test/plugin/timezone.test.js", "test/locale/ru.test.js", "test/timezone.test.js:UTC add day in DST", "test/manipulate.test.js", "test/issues/issue2027.swapped-order.test.js", "test/locale/cs.test.js", "test/plugin/utc.test.js", "test/locale/ar-tn.test.js", "test/locale/ar-ma.test.js", "test/locale/sv.test.js", "test/plugin/toArray.test.js", "test/timezone.test.js:Utc Offset", "test/locale/bg.test.js", "test/locale/sr-cyrl.test.js", "test/plugin/isMoment.test.js", "test/plugin/isYesterday.test.js", "test/locale/sr.test.js", "test/locale/it-ch.test.js", "test/plugin/preParsePostFormat.test.js", "test/comparison.test.js", "test/plugin/isTomorrow.test.js", "test/locale/hu.test.js", "test/locale/et.test.js", "test/timezone.test.js:UTC and utcOffset", "test/locale/ku.test.js", "test/plugin/badMutable.test.js", "test/locale/sv-fi.test.js", "test/plugin/isoWeek.test.js", "test/locale/ar-iq.test.js", "test/plugin/minMax.test.js", "test/plugin/buddhistEra.test.js", "test/display.test.js", "test/plugin/devHelper.test.js", "test/locale/lt.test.js", "test/locale/ar.test.js"], "failed_tests": [], "skipped_tests": []}