Moment: React Nativeμ—μ„œ momentJS의 λ‘œμΌ€μΌμ„ λ³€κ²½ν•˜λŠ” 방법은 λ¬΄μ—‡μž…λ‹ˆκΉŒ?

에 λ§Œλ“  2018λ…„ 01μ›” 30일  Β·  21μ½”λ©˜νŠΈ  Β·  좜처: moment/moment

이것은 λ‚΄κ°€ 가지고 μžˆμ§€λ§Œ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

import moment from 'moment' 
import 'moment/min/moment-with-locales' 
import 'moment-duration-format' // used by moment  
componentDidMount () {  
 console.log(moment.locale())   
 console.log(moment.locale('zh-cn'))    
 console.log(moment.locale())  
} 

μ½˜μ†” 둜그 좜λ ₯: en, en, en
μ˜ˆμƒ μ½˜μ†” 둜그 좜λ ₯: en, zh-cn, zh-cn

'moment'μ—μ„œ 'moment/min/moment-with-locales'둜 μˆœκ°„ κ°€μ Έμ˜€κΈ°λ₯Ό λ³€κ²½ν•˜λ €κ³  μ‹œλ„ν–ˆμ§€λ§Œ 이 μ€„μ—μ„œ 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.

const total = moment.duration(this.props.stoveUsage.total, 'seconds').format('H:mm', { trim: false })

였λ₯˜: momentWithLocales2.default.duration(...).format은 ν•¨μˆ˜κ°€ μ•„λ‹™λ‹ˆλ‹€.

Troubleshooting Up-For-Grabs

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

import 'moment/min/moment-with-locales'

νŠΈλ¦­μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€!

moment.locale('fr'); moment().format("ll");

κ²°κ³ΌλŠ” μ˜ˆμƒλŒ€λ‘œ "1 fΓ©vr. 2018" μž…λ‹ˆλ‹€.

λͺ¨λ“  21 λŒ“κΈ€

moment.locale('es') λŠ” React Nativeμ—μ„œ λ‚˜μ—κ²Œ μ•„λ¬΄λŸ° 영ν–₯을 λ―ΈμΉ˜μ§€ μ•ŠλŠ”λ‹€λŠ” 것을 ν™•μΈν•©λ‹ˆλ‹€.

import 'moment/min/moment-with-locales'

νŠΈλ¦­μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€!

moment.locale('fr'); moment().format("ll");

κ²°κ³ΌλŠ” μ˜ˆμƒλŒ€λ‘œ "1 fΓ©vr. 2018" μž…λ‹ˆλ‹€.

λͺ¨λ“  λ‘œμΌ€μΌ 데이터λ₯Ό λ‘œλ“œν•˜λŠ” moment-with-locales λ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠμœΌλ €λ©΄ v2.18 μ‹œμ μœΌλ‘œ λ‘€λ°±ν•˜μ—¬ 이 문제λ₯Ό ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€. μˆœκ°„ v2.20κ³Ό λ°˜μ‘ λ„€μ΄ν‹°λΈŒμ—μ„œ λ‘œμΌ€μΌμ„ μ„€μ •ν•˜λŠ” 버그가 λΆ„λͺ…νžˆ μžˆμŠ΅λ‹ˆλ‹€.

@Leeds-eBooks λͺ¨λ©˜νŠΈλ₯Ό κ°€μ Έμ˜€λŠ” 방법을 μ„€λͺ…ν•΄ μ£Όμ‹œκ² μŠ΅λ‹ˆκΉŒ? 2.18둜 λ‘€λ°±ν–ˆμ§€λ§Œ 둜컬이 λ°˜μ‘ λ„€μ΄ν‹°λΈŒμ—μ„œ μ œλŒ€λ‘œ μž‘λ™ν•˜λ„λ‘ ν•˜λ €λ©΄ 둜캘이 μžˆλŠ” μˆœκ°„μ—μ„œ μˆœκ°„μ„ 가져와야 ν•©λ‹ˆλ‹€.

감사 ν•΄μš”

@msevestre λ„€, λ¬Όλ‘ , 제 μ†”λ£¨μ…˜μ΄ μ§€κΈˆμ€ ꡬ식일 수 μžˆλ‹€κ³  μƒκ°ν•˜μ§€λ§Œ, 제 μ½”λ“œμ—μ„œ μž‘λ™ν•˜λ„λ‘ λ§Œλ“€κ³  계속 μ§„ν–‰ν–ˆμŠ΅λ‹ˆλ‹€. λͺ¨λ©˜νŠΈμ˜ 이후 λ²„μ „μ—μ„œ μˆ˜μ •ν–ˆμ„ μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸΌμ—λ„ λΆˆκ΅¬ν•˜κ³  λ‚΄ μˆ˜μ • 사항은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

  • npmμ—μ„œ 직접 moment λŒ€μ‹  gitμ—μ„œ https://github.com/tqc/moment.git#no-dynamic-import μ„€μΉ˜
  • κ·Έ λ‹€μŒμ—:
import moment from 'moment'

import 'moment/src/locale/en-gb'
import 'moment/src/locale/es'
import 'moment/src/locale/fr'
import 'moment/src/locale/pl'
import 'moment/src/locale/pt'
// ...etc

// bonus trick!
import DeviceInfo from 'react-native-device-info'
const deviceLocale = DeviceInfo.getDeviceLocale()
moment.locale([deviceLocale, 'en'])

이것이 μ œκ°€ ν•˜κ³  μžˆλŠ” 일이고 μ €μ—κ²Œ νš¨κ³Όμ μ΄μ§€λ§Œ μ œκ°€ λ§ν–ˆλ“―μ΄ 더 이상 ν•„μš”ν•˜μ§€ μ•Šμ„ μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

@Leeds-eBook ꡉμž₯ν•©λ‹ˆλ‹€. λΉ λ₯Έ ν”Όλ“œλ°±μ— κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€. 정말 도움이 λ˜μ—ˆμŠ΅λ‹ˆλ‹€

이것은 λ‚˜μ—κ²Œ νš¨κ³Όκ°€ μžˆμ—ˆκ³ ,
https://momentjs.com/docs/#/i18n/instance -locale/

App.jsμ—μ„œ μ›ν•˜λŠ” 것보닀 λͺ¨λ“  단어λ₯Ό μ–Έμ–΄λ‘œ μΈμŠ€ν„΄μŠ€ν™”ν•΄μ•Ό ν•©λ‹ˆλ‹€. 이것은 λͺ¨λ“  μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ μž‘λ™ν•©λ‹ˆλ‹€.

@VanessaChu - μ—¬μ „νžˆ λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆκΉŒ?

이 μ†”λ£¨μ…˜ 은 μ €μ—κ²Œ νš¨κ³Όμ μž…λ‹ˆλ‹€.

μ•ˆλ…•ν•˜μ„Έμš” μ—¬λŸ¬λΆ„, import 'moment/locale/fr'; 이 μ €μ—κ²Œ νš¨κ³Όμ μ΄μ§€λ§Œ 기쑴의 λͺ¨λ“  μ–Έμ–΄λ₯Ό κ°€μ Έμ˜¬ ν•„μš”κ°€ μ—†λŠ” 것과 같이 동적 μ–Έμ–΄λ₯Ό μˆ˜ν–‰ν•˜λ €λŠ” 경우 import 'moment/locale/[variable]' where variable ν•„μš”ν•œ μ–Έμ–΄μž…λ‹ˆκΉŒ?
λͺ¨λ“  κ΅­κ°€μ—μ„œ μž‘λ™ν•˜λ„λ‘... :/

λŒ€λΆ€λΆ„μ˜ ν† λ‘  μ°Έκ°€μžκ°€ 문제λ₯Ό ν•΄κ²°ν–ˆμœΌλ©΄ μ’‹κ² μŠ΅λ‹ˆλ‹€. :) κ°μ‚¬ν•©λ‹ˆλ‹€. @Leeds-eBook

3.x의 경우 동적 κ°€μ Έμ˜€κΈ°/es6이 μžˆκ±°λ‚˜ μ—†λŠ” 더 λ§Žμ€ λ²„μ „μ˜ μˆœκ°„μ΄ μžˆμ„ 수 μžˆμœΌλ―€λ‘œ μ΄λŠ” λ¬Έμ œκ°€ λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

μ•ˆλ…•ν•˜μ„Έμš” @MayeuldP ,
Reactjs/ReactNativeμ—μ„œ μˆœκ°„μ˜ λ‹€μ–‘ν•œ μ–Έμ–΄λ₯Ό μ‚¬μš©ν•˜μ—¬ μˆ˜μ •ν•˜κΈ° μœ„ν•΄ λ„μ°©ν–ˆλŠ”μ§€ λͺ¨λ₯΄κ² μ§€λ§Œ λˆ„κ΅°κ°€μ—κ²Œ 도움이 될 수 μžˆλŠ” μ†”λ£¨μ…˜μ„ κ³΅μœ ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€.
λ¬Έν™”λ³„λ‘œ λ¬Έν™”λ₯Ό κ°€μ Έμ˜¬ ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€. import 'moment/min/locales' 만 μΆ”κ°€ν•˜λ©΄ λ‚˜μ€‘μ— μ’‹μ•„ν•˜λŠ” λ¬Έν™”λ‘œ moment.local('')을 μ„€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ €λŠ” v2.18을 μ‚¬μš©ν•˜κ³  있으며 이 방법이 μž‘λ™ν•©λ‹ˆλ‹€.

import moment from 'moment';
import momentFR from 'moment/src/locale/fr' 
moment.locale('fr',momentFR );

μ•ˆλ…•ν•˜μ„Έμš”, @KashifAhmed v.2.22.2 μ—μ„œλŠ” moment.updateLocale('fr',momentFR)을 μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€.

μ‚¬μš© 쀑단 κ²½κ³ : moment.updateLocale(localeName, config)을 μ‚¬μš©ν•˜μ—¬ κΈ°μ‘΄ λ‘œμΌ€μΌμ„ λ³€κ²½ν•˜μ‹­μ‹œμ˜€. moment.defineLocale(localeName, config)은 μƒˆ λ‘œμΌ€μΌ μƒμ„±μ—λ§Œ μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ http://momentjs.com/guides/#/warnings/define -locale/을 μ°Έμ‘°ν•˜μ‹­μ‹œμ˜€.

이것을 ν™•μΈν•˜μ‹­μ‹œμ˜€:

import moment from "moment";
import 'moment/min/locales'

μ—¬κΈ°μ—λŠ” μˆœκ°„μ˜ λͺ¨λ“  languaje ꡬ성이 ν¬ν•¨λ˜λ©° jsμ΄λ―€λ‘œ 크기에 λ¬Έμ œκ°€ μ—†μŠ΅λ‹ˆλ‹€.

λ‚˜λŠ” μ–΄λ–€ μ‚¬λžŒμ΄ λ‹€λ₯Έ μ–Έμ–΄λ‘œ λͺ¨λ°”μΌλ‘œ 앱을 μ„€μΉ˜ν•  λ•Œ λ¬Έμ œκ°€ μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

μ΄κ²ƒμ—μ„œ 당신은 λ¬Έμ œμ—†μ΄ μˆœκ°„ μ •μ˜ 된 λͺ¨λ“  λ‘œμΌ€μΌμ„ μ„€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

moment.locale('es');

λ˜λŠ” @benadamstyles의 μ˜ˆμ™€ 같이 μž₯치 λ‘œμΌ€μΌμ„ κ±±μ •ν•˜μ§€ μ•Šκ³  μ‚¬μš©ν•˜λŠ” 것은 languajes 사양을 λ²—μ–΄λ‚©λ‹ˆλ‹€.

제 κ²½μš°μ—λŠ” import λ‘œμΌ€μΌλ§ŒμœΌλ‘œλŠ” μΆ©λΆ„ν•˜μ§€ μ•Šμ•„μ„œ κ°€μ Έμ˜¨ 사전을 μ‚¬μš©ν•˜κ³  밑쀄 _ 인 첫 번째 문자λ₯Ό μ œκ±°ν–ˆμŠ΅λ‹ˆλ‹€.

import moment from 'moment';
import momentPTBR from 'moment/src/locale/pt-br';

function prepareLocale(locale) {
  for (const key in locale) {
    if (locale.hasOwnProperty(key)) {
      // remove first character underscore fom key, i.e. '_calendar' => 'calendar'
      locale[key.substring(1)] = locale[key];
    }
  }
  return locale;
}

moment.defineLocale('pt-br', prepareLocale(momentPTBR));

import 'moment/src/locale/en-gb' λŠ” μž‘λ™ν•˜μ§€ μ•Šμ•˜μ§€λ§Œ import 'moment/locale/en-gb' λŠ” μž‘λ™ν–ˆμŠ΅λ‹ˆλ‹€.

  "dependencies": {
    "expo": "32.0.0",
    "moment": "2.24.0",
    "react": "16.5.0",
    "react-native": "https://github.com/expo/react-native/archive/sdk-32.0.0.tar.gz"
  },

트리의 μ΅œμƒμœ„ νŒŒμΌμ—μ„œ λ‚΄ μ½”λ“œλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

import moment from 'moment'

import 'moment/locale/en-gb'

const momentLocale = moment.locale('en-gb')
if (momentLocale !== 'en-gb') {
  throw new Error(`Moment fell back to locale ${momentLocale}`)
}

export default () => null

μ €λŠ” v2.18을 μ‚¬μš©ν•˜κ³  있으며 이 방법이 μž‘λ™ν•©λ‹ˆλ‹€.

` import moment from 'moment'; import momentFR from 'moment/src/locale/fr' moment.locale('fr',momentFR );
λͺ‡ 가지 예λ₯Ό λ“€μ–΄ μ£Όμ‹œκ² μŠ΅λ‹ˆκΉŒ?
정말 κ°μ‚¬ν•©λ‹ˆλ‹€!

λ‚΄ 버전을 2.24μ—μ„œ 2.18둜 λ³€κ²½ν–ˆλŠ”λ° 이제 μž‘λ™ν•©λ‹ˆλ‹€. 2.20 이후 μ–΄λ”˜κ°€μ— 버그가 μžˆμŠ΅λ‹ˆλ‹€.

λ‚˜λ₯Ό μœ„ν•œ 일

import moment from 'moment'
import 'moment/locale/pt-br'
moment.locale('pt-br')

λ‚˜λ₯Ό μœ„ν•œ 일

import moment from 'moment'
import 'moment/locale/pt-br'
moment.locale('pt-br')

.locale() μ—μ„œ λŒλ €λ°›λŠ” κΈˆμ•‘μ΄ μ„€μ •ν•œ 것인지 ν™•μΈν•˜μ‹­μ‹œμ˜€. 쑰용히 λ’€λ‘œ λ„˜μ–΄μ§‘λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰