LazowskiAnton · Extensions

LocaleSmith

모든 .resx 키의 텍스트를 키를 사용하는 바로 그 자리에서 보여 줍니다. 값은 줄 끝에, 모든 번역은 마우스를 올리면 나타납니다. 누락된 번역과 잘못된 자리 표시자는 사용자가 보기 전에 표시됩니다.

무료 · Visual Studio 2022 및 2026 · UI 14개 언어 · 원격 분석 없음

LocaleSmith를 쓰는 이유

LocaleSmith가 없을 때와 있을 때의 같은 코드: 리소스 키와 그 텍스트

읽히는 코드

Strings.InvoiceSaved만으로는 알 수 있는 게 적지만, “Invoice {0} saved”는 모든 것을 말해 줍니다. 텍스트는 줄 끝에 눈에 거슬리지 않는 기울임꼴로 표시됩니다.

모든 언어를 바로

값에 마우스를 올리면 모든 번역이 보이고, 편집기 전체를 독일어나 일본어로 바꾸면 앱을 실행하기 전에 화면을 미리 볼 수 있습니다.

사용자보다 먼저 찾는 실수

누락된 번역, 기본 텍스트에 없는 {1}, 키의 오타, 인수가 부족한 string.Format — 모두 코드에 밑줄로 표시됩니다.

조건 없는 무료

구독, 체험판, 귀찮은 알림 화면, 원격 분석이 없습니다. Visual Studio 2022 및 2026, x64 및 ARM64에서 작동합니다.

기능

인식하는 키

코드사용 위치
Strings.Key, Properties.Resources.KeyC#, Visual Basic, F#
{x:Static res:Strings.Key}XAML (WPF, WinUI, MAUI, Avalonia)
localizer["Key"], @Localizer["Key"]ASP.NET Core 및 Blazor: IStringLocalizer, IViewLocalizer
GetString("Key")ResourceManager 및 지역화 도구

마우스를 올리면 모든 번역

값에 마우스 포인터를 올리면 카드에 키의 모든 언어가 나열되고, 누락된 번역은 노란색으로 표시됩니다. 언어를 클릭하면 해당 .resx가 값이 선택된 상태로 열리므로 그대로 입력하면 됩니다. 위쪽에는 .resx에서 열기와 키 복사가 있습니다.

키의 번역을 보여 주는 호버 카드(번역 두 개 누락)

문제

문제는 컴파일러 경고와 같은 물결선으로 표시되므로, 경고를 보여 주는 도구라면 이것도 보여 줍니다. LensSmith는 줄 끝에 표시합니다. 각 규칙은 따로 끌 수 있습니다.

번역이 누락된 키와 서식 인수 개수가 잘못된 키에 표시된 물결선
규칙밑줄이 표시되는 경우
LOC001일부 언어 파일에 없는 키. 해당 언어 목록도 함께 표시합니다.
LOC002기본 텍스트와 자리 표시자가 다른 번역. 추가된 자리 표시자는 런타임에 실패하므로 오류입니다.
LOC003어떤 리소스 파일에도 없는 키를 사용하는 localizer["Key"] 또는 GetString("Key"). 가장 가까운 기존 키도 함께 표시합니다.
LOC004텍스트에 필요한 것보다 인수가 적거나(오류) 사용하는 것보다 많은(경고) string.Format(Strings.Key, …).

리소스로 추출

문자열 안에 캐럿을 두고 Ctrl+.를 누르면 리소스로 추출…이 텍스트로 만든 키와 가장 가까운 .resx 파일을 제안합니다. 파일에 같은 텍스트가 이미 있으면 그 키를 사용합니다. 문자열은 Strings.Key(파일이 네임스페이스를 가져오지 않았으면 네임스페이스 포함)로, XAML에서는 {x:Static res:Strings.Key}로 바뀌며 xmlns도 자동으로 추가됩니다.

제안된 키와 파일이 표시된 리소스로 추출 대화 상자

설정

도구 → 옵션 → SmithWorks → LocaleSmith. 모든 옵션에 설명이 있으며, 위쪽의 미리 보기에서 선택한 언어의 값을 바로 확인할 수 있습니다.

옵션기본값
키 옆에 리소스 값 표시켜짐
미리 보기 언어기본 리소스
최대 길이80
문제: LOC001–LOC004모두 켜짐
전구 메뉴에 리소스로 추출 표시켜짐

설정은 %LocalAppData%\LocaleSmith에 저장됩니다.

LocaleSmith 옵션 페이지
실시간 미리 보기가 있는 옵션 페이지.

자주 묻는 질문

어떤 .resx 파일을 읽나요?

솔루션 폴더(.sln 또는 .slnx 파일이 있는 폴더, 또는 리포지토리 루트) 아래의 모든 .resx 파일을 읽습니다. 단, bin, obj, node_modules는 제외합니다. 이미지 등 텍스트가 아닌 리소스는 건너뜁니다.

키 뒤에 값이 표시되지 않는 이유는 무엇인가요?

키가 솔루션의 .resx 파일에 있어야 하고, 클래스 이름이 파일 이름과 일치해야 합니다(Strings.resx → Strings. 생성기와 마찬가지로 점은 밑줄로 바뀝니다). 값은 솔루션을 연 뒤 파일을 읽고 나서 잠시 후에 나타납니다.

추출한 후 새 속성에 밑줄이 표시됩니다. 왜 그런가요?

프로젝트가 사용자 지정 도구로 강력한 형식의 클래스(Strings.Designer.cs)를 생성하면 즉시 다시 생성됩니다. 빌드 중에 생성하는 프로젝트에서는 다음 빌드 후에 속성이 추가됩니다.

XAML의 {x:Static}이 리소스 클래스를 찾지 못합니다.

x:Static에는 public 클래스가 필요합니다. 리소스 디자이너에서 .resx 파일의 액세스 한정자를 Public으로 설정하거나 public 래퍼를 사용하세요.

LensSmith와 함께 사용할 수 있나요?

예. 둘 다 줄 끝에 표시하므로 그 공간을 나눠 씁니다. 키의 값이 먼저, 진단 메시지가 그 뒤에 표시됩니다. LocaleSmith의 문제는 다른 경고와 마찬가지로 LensSmith에 표시됩니다.

LocaleSmith가 데이터를 전송하나요?

아니요. 원격 분석도 네트워크 액세스도 없으며, 리소스 파일은 사용자의 컴퓨터를 벗어나지 않습니다.

문제를 보고하거나 기능을 제안하려면 어디로 가야 하나요?

GitHub의 Feedback 리포지토리에 이슈를 등록하세요. 버그와 아이디어를 위한 양식이 있습니다(비공개 이름은 바꿔 주세요). Marketplace의 Q&A 탭을 이용할 수도 있습니다.

변경 내역

1.0.1

1.0.0