네, 가능합니다. 크게 다음 흐름으로 진행합니다:
- 데이터베이스에서 언어팩 조회
- .resx 파일 생성
- 리소스 작성 후 저장
아래는 C# 콘솔 애플리케이션 예제입니다.
using System;
using System.Data;
using System.Data.SqlClient;
using System.Resources;
using System.Collections.Generic;
using System.IO;
using System.Xml;
namespace DbToResx
{
class Program
{
static void Main(string[] args)
{
// 1) DB 연결 정보
var connectionString = "Server=.;Database=YourDb;User Id=sa;Password=YourPw;";
// 2) 출력할 언어 목록과 대상 폴더 지정
var cultures = new[] { "en", "ko", "jp" };
var outputDir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Resources");
Directory.CreateDirectory(outputDir);
using (var conn = new SqlConnection(connectionString))
{
conn.Open();
foreach (var culture in cultures)
{
// 3) 테이블에서 culture별 키·값 불러오기
using (var cmd = new SqlCommand(
@"SELECT MessageKey, MessageValue
FROM LanguagePack
WHERE Culture = @culture", conn))
{
cmd.Parameters.Add(new SqlParameter("@culture", culture));
using (var reader = cmd.ExecuteReader())
{
// 4) .resx 작성기 준비
var resxPath = Path.Combine(outputDir, $"Strings.{culture}.resx");
using (var resx = new ResXResourceWriter(resxPath))
{
// 5) 레코드 순회하며 추가
while (reader.Read())
{
var key = reader.GetString(0);
var value = reader.GetString(1);
resx.AddResource(key, value);
}
resx.Generate(); // 파일에 기록
}
Console.WriteLine($"Generated: {resxPath}");
}
}
}
}
Console.WriteLine("Done.");
}
}
}
상세 설명
-
DB 조회
SqlConnection
/ SqlCommand
로 언어팩 테이블(LanguagePack
)에서
MessageKey
·MessageValue
·Culture
컬럼을 가져옵니다.
-
ResXResourceWriter
System.Resources.ResXResourceWriter
클래스로 .resx
파일을 만듭니다.
AddResource(string name, object value)
로 키·값을 등록한 뒤 Generate()
호출.
-
파일 네이밍
- 일반적으로
.resx
는 Strings.resx
(기본),
Strings.ko.resx
, Strings.en.resx
식으로 문화권별로 분리합니다.
-
후처리
- Visual Studio 프로젝트에 생성된
.resx
파일을 포함시키면, 빌드 시 .resources
로 컴파일됩니다.
ResourceManager
또는 자동 생성된 Strings
클래스(.Designer.cs
)로 런타임에 접근 가능.
추가 팁
- Bulk Export: SQL Server Management Studio(SSMS)에서 쿼리 결과를 CSV로 뽑아두고, 간단한 스크립트(JSON→.resx)로 변환해도 됩니다.
- ResX Manager 확장: VS용 ResXManager 툴을 쓰면, 여러 언어 .resx를 GUI에서 한꺼번에 편집·관리할 수 있습니다.
이 과정을 통해 데이터베이스에 있는 언어팩 데이터를 .NET 표준 리소스 파일(.resx)로 손쉽게 변환할 수 있습니다. 추가로 궁금하신 부분 있으면 알려주세요!