# Locale

22개의 포스트

LocaleContextHolder 사용 시 주의사항

배경 다국어 처리시에는 보통 LocaleResolver / LocaleInterceptor 를 사용하게 되는데, 요청사항에 따라서 커스텀을 하게 되는 경우가 생기게 된다. 모든 기능이 한 가지 언어로 나가는 형태가 아니라, 기능에 따라 사용자에 따라 특정 언어를 다르게 강제로 노출하고 싶을 때 커스텀이 필요하게 된다. 그래서 현재 조금은 더 간편하게 관리하고 확실히 인지할 수 있는 ThreadLocal기반의 LocaleContextHolder를 직접적으로 사용하는 방식으로 프로젝트가 구성되어 있다. 그렇게 되면 Controller 단에서도 LocaleContextHolder를 사용하게 되더라도 이질감이 없다고 판단했다. 이 글은 LocaleContextHolder 를 사용할 때 발생했던 문제점에 대해서 공유해 보려고 한다. 이슈 발생 LocaleContextHolder의 값을 기존에 Interceptor 단에서 지정을 해주고 있었다. 프로젝트별 공

2023년 9월 6일
·
0개의 댓글
·
post-thumbnail

[Flutter] CupertinoDatePicker 한글로 사용하기.

Flutter로 CupertinoDatePicker를 사용했다. CupertinoDatePicker 구현소스 그런데 아래와 같이 기본적인 UI 설정이 영어로 구성되어 있었다. 한국 종속적인 날짜 인식 개념을 가지고 있는 나는 이 부분을 한글로 고쳐보기로 마음먹었다. 인터넷을 살펴보니 locale 설정을 바꿔주면 된다고 한다. CupertinoDatePicker 한글 적용하기 우선 pubspec.yaml 부터 필요한 내용을 추가하자. 이후 locale 설정을 할 dart 파일 내에 아래와 같이 import를 한다. 마지막으로 아래와 같이 추가로 localizationsDelegates, supportedLocales 를 추가한다. 그렇다면 아래와 같이 한글이 이쁘게 적용된 모습을

2023년 8월 25일
·
0개의 댓글
·

Android 언어 설정

안드로이드 앱에서 언어설정을 사용할 일이 거의 없어서 까먹고 있었다가 최근에 구현할 일이 있어서 생각난김에 정리해본다. LocaleHelper클래스 작성 BaseActivity에 onSharedPreferenceChangeListener 추가 이제 적용될 화면 즉 액티비티에서 추가해야할 내용 BaseActivity를 상속받은 액티비티에서 attachBaseContext를 Override해준다.

2023년 6월 28일
·
0개의 댓글
·

기본 객체

Controller 에서 Model 에 넘겨주지 않아도 자주 사용하는 객체는 Thymeleaf 에서 기본적으로 제공해주고있다. ✏️ thymeleaf 로 기본 객체 사용하기 📍 Controller session 을 생성하고 별도로 Model 로 넘겨주지 않아도 Web 계층에선 Session 을 사용할 수 있다. Configuration 계층이 아니더라도 Bean 을 등록시킬 수 있다. 📍 Web ⚠️ 요청 url /basic/basic-objects?paramData=HelloParam locale 프로그램을 언어와 국가에 최적화하기 위해서 사용하는 지역 / 언어 정보 시스템 관리자가 설정한 locale 정보에 따라서 프로그램은 입출력 인코딩을 적용한다. Request Parameter Controller 가 요청받은 Param 을 model 에 전달하지 않아도 web 에서

2023년 3월 24일
·
0개의 댓글
·

메시지, 국제화

메시지, 국제화란? 어느날, 신나게 개발을 진행하다가 화면에 보이는 문구가 마음에 들지않고 자꾸만 신경쓰일 때가 있다. 그런데 그 문구는 전부 코드안에 때려박혀있는 데다가(하드코딩) 동일한 문구가 한 두군데가 아니어서 쉽사리 건들기도 어렵거니와 까딱하면 일부만 수정되는 경우가 생길 수도 있다. 그래서 이 현상을 방지하고자, Spring에서는 그런 문구를 따로 관리할 수 있도록 기능을 제공해주는데, 이를 메시지 기능이라고 한다. 또한, 이것을 확장하여 현재 접속하고 있는 국가에 따라 (Locale 정보) 다른 화면을 보여줄 수 있는 기능 또한 제공해주는데, 이를 국제화 기능이라고 한다. 정리 메시지: 화면에 나오는 동일한 문구(문자열)를 하나의 파일에서 관리하는 것. 국제화: 클라이언트가 접속한 국가 정보(Locale 정보)에 따라서 다른 문구를 보여주기 위한 기능. 설정 Spring Bean 등록 Spring Bo

2023년 2월 19일
·
0개의 댓글
·

Centos7에서 locale 에러 해결하기

ssh로 접속시 아래 warning 이 뜬다면 로케일 설정이 해야한다. /etc/environment 파일에 아래 환경변수 추가하면 경고가 뜨지 않는다. #cuuDev

2022년 12월 5일
·
0개의 댓글
·

개발일기 #19 : 단순한 해결책

단순한 해결책 핀란드 지역 언어로 설정된 서버에서 소수점(.)을 콤마(,)로 인식해서 파싱 오류가 나는 문제가 있었습니다. 가장 단순한 해결책은 서비스가 시작될 때 Locale.setDefault(Locale.ENGLISH) 설정을 해주면 기존 파싱하는 코드 수정 없이 문제를 해결할 수 있었습니다. Nginx 인스턴스가 2개 Nginx를 통해 로그 다운로드 서비스를 설정 하려합니다. 설정을 바꾸었는데 예전 설정과 새로운 설정을 왔다갔다 하는 희한한 문제를 겪습니다. 오후 내내 삽질을 했는데 서버를 껏다켜니 잘됩니다. Nginx 인스턴스를 중복 띄워둔게 아닌가 생각되네요. 윽.

2022년 9월 2일
·
0개의 댓글
·
post-thumbnail

개발일기 #18 : 소수점을 콤마로 찍는다고?

소수점을 콤마로 찍는다고? 핀란드 지역에 6번째 지상국을 세우고 있습니다. 오늘 서비스가 구동될 서버 설정을 하는데 정말 처음 보는 이슈를 만납니다. 문자열로 표현된 부동소수점 수의 수소점 자리 표현이 점(.)이 아니라 콤마(,)로 표현되며 파싱 오류가 발생합니다. 첨에는 눈을 의심했는데 “12.34”가 아니라 “12,34”라고 표현됩니다. 확인해 보니 OS의 Locale 설정이 English(Finland)로 설정되어 있느면 소수점 표현 형식이 콤마를 사용하네요. 세상은 넓고 표현은 다양한 것 같습니다. 해결책은 내일 개발일기에 있어요

2022년 9월 1일
·
0개의 댓글
·
post-thumbnail

[TIL] UTC, GMT, Locale

협정 세계시, UTC란? > UTC, Universal Time Coordinated UTC는 세계 시간 표기의 기준이다. 보통 본초자오선이 지나가는 영국의 그리니치 천문대의 시간(GMT)을 기준시라고 생각하지만 사실 조오금 다르다. 사실 그렇게 중요한 것은 아니니 'UTC, GMT는 거의 비슷하다' '그러나 UTC가 더 정밀하다' '둘 다 경도가 0인 지역의 시간이다' 라고만 기억하자. Locale = {UTC, offset} 옆집 철수와 먼나라 스티븐에게 동시에 시간을 물어보면, 두 명은 다른 시간을 말한다. 이렇게 각자의 지역에서 편하게 말하는 시간을 local time 이라고 한다. (locale 은 명사, local은 형용사. 의미는 같다) 이 local time은 UTC와 offset으로 나타낼 수 있다({UTC, offset}). 경도가 0일 때는 offset도 0이다. 예를 들어보자. 현재 UTC 표기 시간을 '2022-06-01T00:00'

2022년 6월 1일
·
0개의 댓글
·
post-thumbnail

[flutter] DateFormat 한국어 설정하기

main.dart에 추가하고 확인 ![](https://velog.velcdn.com/images/qkrtnfks128/post/88d12029-ac09-43f1-b9b

2022년 5월 2일
·
0개의 댓글
·
post-thumbnail

22.4.22 [HackerRank]Java Currency Formatter

🌱 배경지식 NumberFormat 클래스 이 추상 클래스는 수에 대한 전반적인 포맷 기능을 제공해 준다. 팩토리 패턴을 사용해 작성된 클래스이므로 new 연산자를 이용해 객체를 생성하는 것이 아닌 getInstance() method를 사용해 인스턴스를 얻는다. 이 클래스로 표현할 수 있는 포맷의 종류는 아래와 같으며, 클래스 생성 시 각 포맷에 해당하는 인스턴스 반환 메서드를 사용한다. 정수형: getIntegerInstance() 통화: getCurrencyInstance() 퍼센트: getPercentInstance() Locale 클래스 각 지역의 언어, 나라 등의 정보를 담고 있는 클래스이다. Locale 객체는 생성자와 Builder를 통해 생성할 수 있다. 1) 생성자를 통한 객체 생성 2) Builder를 통한 객체 생성 ✏️ 해설 및 분석 👉 참고 > * https://docs.oracle.com

2022년 4월 22일
·
0개의 댓글
·
post-thumbnail

Intl.NumberFormat 주의사항

해외송금 쪽 프론트를 담당하고 있는데 Intl.NumberFormat 로 인스턴스를 생성할 때 locale 을 지정하지 않으면 브라우저에서 설정한 위치 기준으로 locale 이 설정된다. 이러면 문제가 되는게 개발자의 국가와 사용자의 국가가 다를경우 메서드가 반환하는 값이 달라지게 된다. 예를들어 한국, 미국 기준 ( ko-kr , en-US ) 과 프랑스 기준이 다르기 때문에 문제가 될 수 있다. 그래서 왠만하면 en-US 로 고정하는 것이 좋다. ![](https://velog.velcdn.com/cloudflare/rud285/f13ced49-9097-4582-92ba-a86b56b7ba6d/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-04-07%20%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB%

2022년 4월 6일
·
0개의 댓글
·
post-thumbnail

[mac][터미널] sort 명령어와 locale

linux와 shell script 등에 대해 배우던 중 궁금한 점이 생겼다. shell command 중에는 sort가 있다. sort [filename], cat [filename]|sort (option) 등으로 사용하는데 말 그대로 정렬을 해준다. 예를 들어 다음과 같은 식이다. sort 명령어를 다양한 텍스트에 대해 옵션도 달리 하면서 이리저리 사용해보던 중 의아한 상황을 마주쳤다. ![](https://images.vel

2022년 2월 18일
·
0개의 댓글
·
post-thumbnail

[포트폴리오, git] 오늘자 포폴 수정과 git이 또 말썽!!

😡😡 깃 언어 설정 > 깃이 또 말썽이다. 저번에 언어 설정을 영어로 바꿔준 적이 있는데 git log에서 한글이 깨진다;; 이게 머선129 이제 진짜 오류 하나씩 생길 때마다 블로그에 적어놔야겠다. 거의 비슷한 문제로 계속 시간을 잡아먹는데 오류가 생길 때마다 검색하고, 또 검색하면 그 때 분명 있었던 보고 해결했던 딱 입맛에 맞는 정보들이 다 사라진다;; 내가 적어놓는게 속 편할듯 ![](https://images.velog.io/imag

2021년 12월 29일
·
0개의 댓글
·

리눅스에서 한글 파일 인식이 안될 때

개요 업무 중 타 사(社)의 Application 구성 요소를 확인해봐야 하는 일이 있었다. 이 Application은 특이하게도 DB를 거의 사용하지 않고, 리눅스 내에 사용자 ID로 구분하여 파일로 관리를 하는 구조였다. 그런데 여기서 문제가 있었다. 바로.. 한글 디렉토리! > 도대체 왜 서버에서 한글로 된 디렉토리를 사용하는 걸까? 정확한 사정은 모르지만... 난 아직도 이해할 수 없다... 😱 파일 확인 과정 이렇게 한글로 된 디렉토리는 아무리 로 존재 여부를 확인하고자 해도 곧죽어도 를 return 했다. 이때, 내가 했던 뻘짓은 다음과 같다. > 1. java.io.File 패키지의 메서드 사용 java.nio.file.Files 패키지의 메서드 사용 리눅스 서버의 locale

2021년 7월 25일
·
0개의 댓글
·
post-thumbnail

[iOS] Date Formatter

프로젝트 요구사항 중 작성일자를 사용자의 지역 포멧에 맞게 표현해야 되서 찾아보는 Date Formatter 참고 자료: Developer Document https://developer.apple.com/documentation/foundation/dateformatter Date Formatter 날짜와 텍스트 표현을 변환하는 형식이다 DateFormatter의 인스턴스는, NSDate 객체의 문자열 표현을 생성하고 날짜 및 시간의 텍스트 표현을 NSDate 객체로 변환한다. 사용자가 볼 수 있는 날짜 및 시간 표현을 위해 DateFormatter는 다양한 지역화된 사전 설정 및 구성 옵션을 제공한다. 날짜 및 시간의 고정 형식 표현의 경우 사용자 지정 형식 문자열을 지정할 수 있다. ISO 8601 형식의 날짜 표현을 사용할 때는 대신 ISO 8601 Date Formatter을 사용해야한다 두 NSDate 객체 간의 간격을 나타내려면

2021년 6월 3일
·
0개의 댓글
·
post-thumbnail

[Localized Number] 5편: LocalizedNumberField 라이브러리 만들기

목차 > * 1편 - [Localized Number] 1편: 글로벌 서비스 숫자 표기에 대한 고민 > * 2편 - [[Localized Number] 2편: NumberFormatter를 이용한 국가별 숫자 표기 변환](https://velog.io/@baecheese/Localized-Number-Numbe

2021년 3월 8일
·
0개의 댓글
·
post-thumbnail

[Localized Number] 4편: LocalizedNumberFormatter 구현하기

목차 > * 1편 - [Localized Number] 1편: 글로벌 서비스 숫자 표기에 대한 고민 > * 2편 - [[Localized Number] 2편: NumberFormatter를 이용한 국가별 숫자 표기 변환](https://velog.io/@baecheese/Localized-Number-Numbe

2021년 3월 3일
·
0개의 댓글
·
post-thumbnail

iOS Locale Identifier 별 숫자 표기

double value : 123456789.123 숫자 표기 다름 숫자 decimalSeparator / groupingSeparator 구분 문자 다름 | Double(123456789.123) | identifier | country name | |-----------------------|-------------|------------------------------------------------| | 12,34,56,789.123 | ml_IN | Malayalam (India) | | 12,34,56,789.123 | hi | Hindi | | 12,34,56,789.123 | pa_Guru | Punjab

2021년 1월 29일
·
0개의 댓글
·

맥 docker에 mysql 설치 & character set 설정 locale 설정

mysql를 도커에 이미지 다운받는다 ` $ docker pull mysql:5.7 ` MYSQLALLOWEMPTY_PASSWORD=true 라고하면 비번없이 생성 MYSQLROOTPASSWORD=원하는 패스워드 --name mysql 라고하면 이미지? 이름 설정 mysql:5.7 버전 설정 도커 이미지들 확인 ` $ docker images ` mysql 컨테이너 생성 및 실행 docker run -d -p 3306:3306 -e MYSQLROOTPASSWORD=원하는패스워드 --name 원하는이름 mysql:5.7 도커에 이미지 다운로드 안해도 이렇게 실행하면 자동으로 다운로드 받음. 한글안깨지게 character set 을 utf-8로 변경 --character-set-server=utf8mb4 --collation-server=utf8mb4unicodeci 컨테이너 실행할때 뒤에 이 명령어를 같이 입력 해주면 된다. 그

2021년 1월 29일
·
0개의 댓글
·