문제

나는 이것에 대한 해결책이 있다고 생각하지만 더 나은 방법이 있습니까, 아니면 이것이 나에게 깨질 것입니까?

글로벌/로컬 Resx 파일을 사용하여 현지화 된 웹 사이트를 구성하고 있습니다. 비 기술적 인 사용자는 웹 앱을 통해 문자열을 편집하고 새로운 언어를 추가 할 수 있어야합니다.

이것은 충분히 쉬워 보입니다. 문자열을 표시 할 양식이 있으며 변경 사항은이 스 니펫과 같은 코드로 저장됩니다.

string filename = MapPath("App_GlobalResources/strings.hu.resx");
XmlDocument xDoc = new XmlDocument();
XmlNode xNode;

xDoc.Load(filename);
xNode = xDoc.SelectSingleNode("//root/data[@name='PageTitle']/value");
xNode.InnerText = txtNewTitle.Text;
xDoc.Save(filename);

이것이 바쁜 사이트에서 문제를 일으킬 것입니까? 그것이 재 컴파일에 순간적인 지연을 일으키면 큰 문제는 아닙니다. 그리고 현실적으로,이 형태는 일정하고 무거운 용도를 보지 못합니다. 지역 사회는 어떻게 생각합니까?

도움이 되었습니까?

해결책

매우 기본적인 "CMS"에 대해 비슷한 방법을 사용했습니다. 사이트는 대규모로 사용되지 않았지만 문제가 발생하지 않았습니다.

resx를 변경하면 재활용이 발생할 것이라고 생각하지 않습니다.

다른 팁

우리는 비슷한 일을했지만 데이터베이스를 사용하여 사용자 수정 된 값을 저장했습니다. 그런 다음 현지화 된 키의 재정의 값을 제공하기위한 폴백 메커니즘을 제공했습니다.

즉, 나는 당신의 방법이 잘 작동해야한다고 생각합니다.

리소스 개체 생성을 고려해 보셨습니까? 설정을 모든 클라이언트 코드에서 사용할 단일 객체로 랩핑해야합니다. 같은 것 :

public class GuiResources
{
    public string PageTitle
    {
        get return _pageTitle;
    }

    // Fired once when the class is first created.
    void LoadConfiguration()
    {
        // Load settings from config section
        _pageTitle = // Value from config
    }
}

싱글 톤이나 공급자로 만들 수 있습니다. 또한 문화 정보를 얻기 위해 현재 스레드를보고 어떤 언어를 반환 할 언어를 알 수 있도록 현명하게 만들 수 있습니다.

그런 다음 web.config 파일에서 a를 만들 수 있습니다 맞춤 섹션 그리고 설정 restartOnExternalChanges="true". 그렇게하면 앱이 만들어지면 앱이 변경됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top