Next.js 다국어 라우팅 가이드 App Router + next-intl 설정 방법 정리 (1편)
·
리액트/NextJs
1. 개요글로벌 웹 서비스를 구축하면서 다국어 지원(internationalization, i18n) 기능을 직접 구현했던 경험을 정리해 공유합니다.이 글에서는 Next.js 13 이상 버전의 App Router 환경에서  `next-intl` 라이브러리를 사용해 언어별 URL 라우팅, 자동 리다이렉션, 번역 메시지 구성 등 다국어 라우팅을 설정하는 방법에 대해 단계별로 설명합니다.✅ 이번 글에서는 `next-intl` 설정만 다루고, 다음 글(2편)에서는 실제 화면에서 다국어 메시지 렌더링, 언어 전환 UI를 구현합니다.2. next-intl을 활용한 다국어 라우팅 설정2-1. next-intl 라이브러리 설치먼저, 프로젝트에 `next-intl` 패키지를 설치합니다.npm install next-in..
[Github 코드 리뷰 자동화] Gemini Code Assist 앱 설치부터 AI 리뷰 활용까지
·
Github/AI Code Review
1. 개요코드 리뷰는 시간과 리소스가 부족한 개발팀에겐 부담으로 작용하기도 합니다. 이를 위한 대안으로 AI Code Review를 도입할 수 있는데요. 구글이 새롭게 공개한 `Gemini Code Assists`는 Github Pull Request에 AI 기반의 요약과 코드 리뷰를 자동으로 추가해 줍니다.이번 글에서는 Github에 Gemini Code Assist 앱을 설치하고, 실제로 코드 리뷰에 어떻게 활용되는지 다뤄보겠습니다.특히, AI 리뷰 커스터마이징도 가능하므로 팀의 코딩 컨벤션 등을 적용해서 활용할 수 있습니다.Github의 Gemini Code Assist 앱 장점무료로 사용 가능PR 작성 시, `PR 요약` 및 `리뷰 코멘트`가 자동으로 달림`.gemini/styleguide.me`..
[Github] PR Template 전역으로 설정하여 유지보수 효율적으로 하기 #2 - 다중 템플릿
·
Github/PR Template
1. 개요앞선 글에서는 `.github` 레포지토리를 통해 Github 조직 내에서 PR 템플릿을 전역으로 설정하는 방법에 대해 다루었습니다. 이를 통해 모든 프로젝트에서 일관된 PR 포맷을 자동으로 적용할 수 있었지만, 아쉬운 점이 한 가지 있었습니다.Github는 기본적으로 하나의 PR 템플릿만 지원하기 때문에 실무에서 자주 필요한 다양한 상황별 템플릿을 선택하여 사용하는 것이 불가능합니다.이번 글에서는 이러한 제약을 우회하여, 전역 PR 템플릿을 사용하면서도 다중 템플릿을 선택적으로 사용하는 방법에 대해 소개하겠습니다.2. 전역 환경에서 다중 템플릿을 구성하는 방법Github는 다중 템플릿 선택 UI를 제공하지 않기 때문에, 사용자가 직접 필요한 템플릿을 선택할 수 있도록 하는 방식으로 구현해야 합..
[Github] PR Template 전역으로 설정하여 유지보수 효율적으로 하기
·
Github/PR Template
1. 개요Github를 사용하는 조직은 일관된 PR을 작성하기 위하여 PR Template 기능을 사용하면 좋습니다. 하지만 전역으로 설정하는 방법을 모른다면 개별 레포지토리마다 PR 템플릿을 만들어야 하고,이는 유지보수를 어렵게 만듭니다.본 글에서는 Github 전역 PR 템플릿을 설정하는 방법에 대해 포스팅하겠습니다.전역 PR 템플릿이 필요한 경우개별 레포지토리마다 PR 템플릿을 별도로 관리하고 있음모든 프로젝트에서 PR 형식의 일관성을 유지하고자 함전역 PR 템플릿의 장점PR 형식을 조직 전체적으로 일관성 있게 유지 가능개별 레포지토리에 템플릿을 별도로 만들 필요가 없어서 관리가 쉬움리뷰어와의 소통 효율성을 증가2. Github 전역 PR 템플릿 설정 방법다음과 같이 총 3단계를 통해 쉽게 설정할 ..
[안드로이드 멀티 모듈] 11. JvmLibraryConventionPlugin 만들기
·
안드로이드/멀티 모듈
지난 포스트에서는 Room 데이터베이스를 위한 AndoridRoomConventionPlugin을 만들었습니다.이번 시간에는 안드로이드에 의존성이 없는 모듈을 위한 JvmLibraryConventionPlugin을 만들겠습니다.해당 플러그인은 도메인 모듈 등에서 사용하게 될 것입니다.1. configureKotlinJvm 유틸 함수 만들기build-logic 모듈의 Kotlin 파일에 Kotlin과 JVM 설정을 하기 위한 Project.configureKotlinJvm 이라는 유틸 함수를 만들겠습니다.configureKotlinJvm 함수는 Java 11을 사용하도록 설정하는 역할을 합니다. build-logic 모듈에서만 사용할 것 이므로 internal 키워드를 추가해주었습니다.// Kotlin.k..
[안드로이드 멀티 모듈] 10. AndroidRoomConventionPlugin 만들기
·
안드로이드/멀티 모듈
지난 포스트에서는 Compose로 구성된 화면을 위한 AndroidPresentationUIConventionPlugin을 만들었습니다.이번 시간에는 Room 데이터베이스를 사용하기 위한 AndroidRoomConventionPlugin을 만들겠습니다. 해당 플러그인은 데이터베이스와 관련된 모듈에서 적용하는 컨벤션 플러그인 입니다.1. Room과 관련된 의존성 추가하기먼저, libs.versions.toml 파일에 아래와 같이 Room을 사용하기 위한 라이브러리와 플러그인을 추가하겠습니다.room-compiler, room-ktx, room-runtime, room-gradle-plugin로 구성된 4개의 라이브러리와 androidx.room 플러그인을 추가합니다.Room 데이터베이스는 ksp도 필요하므..
[안드로이드 멀티 모듈] 9. AndroidPresentationUIConventionPlugin 만들기
·
안드로이드/멀티 모듈
지난 포스팅에서는 화면은 없지만 Compose와 관련된 컨벤션 플러그인을 만들어서 designsystem 모듈에 적용했습니다. 이번 포스팅에서는 화면이 존재하고 Compose와 관련된 모듈을 위한 AndroidPresentationUIConventionPlugin을 만들겠습니다. 해당 플러그인은 home, login, board 등 화면을 담당하는 UI Layer 모듈에 적용되는 컨벤션 플러그인입니다.1. AndroidPresentationUIConventionPlugin 만들기이번에는 화면이 존재하는 Compose 컨벤션 플러그인을 만들고 있습니다. 그래서 이전 포스팅에서 만든 컨벤션 플러그인을 pluginManager를 통해 적용하고, Compose 화면을 위한 의존성을 추가해줘야 합니다.// And..
[안드로이드 멀티 모듈] 8. AndroidLibraryComposeConventionPlugin 만들기
·
안드로이드/멀티 모듈
지난 포스팅에서는 Compose가 없는 AndroidLibrary를 위한 AndroidLibraryConventionPlugin을 만들었습니다. 이번에는 Compose 관련 빌드 옵션이 포함된 AndroidLibraryComposeConventionPlugin을 만들겠습니다. Compose 관련 모듈은 아래처럼 2가지로 나뉘게 됩니다.화면이 없는 모듈 (designsystem, ui 등)화면이 있는 모듈 (home, board, login 등)designsystem처럼 화면이 없는 모듈이 있고, home처럼 Compose로 구성된 화면이 있는 presentation 성격의 모듈이 있습니다. 이번 포스팅에서는 Compose 관련 기능이 있지만 화면이 없는 모듈을 위한 컨벤션 플러그인을 만들겠습니다.1. A..