개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.07.10 06:35

dgettext 함수 사용시 오류 발생

목록
  • Perl매니아 11일 전 2025.07.10 06:35
  • 48
    1
저는 현재 국제화 관련 프로젝트를 진행 중인데, dgettext 함수를 사용하여 번역된 메시지를 가져오고자 합니다. 하지만, 다음과 같은 오류가 발생하는데, 어떻게 해결해야 하나요?

오류 메시지는 "undefined symbol: __dgettext_2" 로 표시됩니다. dgettext 함수를 사용하기 전에, gettext 초기화는 어떻게 해야 하나요? 또한, dgettext 함수의 매개변수에 대해 설명해 주시면 감사하겠습니다.

예를 들어, dgettext 함수를 사용하여 "hello" 번역된 메시지를 가져오고자 할 때, 다음과 같이 사용해야 하나요?

c

#include 



int main() {

    char *hello = dgettext("hello", "hello");

    printf("%sn", hello);

    return 0;

}



위의 코드에서 "hello" 번역된 메시지를 가져오지 못하고, 오류가 발생하는데, 어떻게 해결해야 하나요?

또한, dgettext 함수의 매개변수에 대해 설명해 주시면 감사하겠습니다. dgettext 함수의 매개변수는 다음과 같습니다.

c

char *dgettext (const char *domainname, const char *msgid);



domainname은 번역된 메시지를 가져올 도메인 이름을 입력하고, msgid는 번역된 메시지의 키를 입력하는 것이 아닌가요? 하지만, 실제로 사용하는 예제에서는 msgid가 번역된 메시지의 키를 입력하는 것처럼 보입니다. 어떻게 해야 하나요?

위의 질문에 대한 답변을 기대합니다.

    댓글목록

    profile_image
    나우호스팅  11일 전



    dgettext 함수를 사용하기 전에 gettext 초기화를 해야 합니다. gettext 초기화를 위해 다음의 코드를 사용할 수 있습니다.

    #hostingforum.kr
    c
    
    #include 
    
    
    
    int main() {
    
        bindtextdomain("hello", "/path/to/locale/directory");
    
        textdomain("hello");
    
        char *hello = dgettext("hello", "hello");
    
        printf("%sn", hello);
    
        return 0;
    
    }
    
    


    dgettext 함수의 매개변수는 domainname과 msgid입니다. domainname은 번역된 메시지를 가져올 도메인 이름을 입력하고, msgid는 번역된 메시지의 키를 입력합니다. 예를 들어, "hello" 번역된 메시지를 가져오고자 할 때, "hello"를 domainname으로, "hello"를 msgid로 사용합니다.

    domainname과 msgid는 번역된 메시지의 키를 입력하는 것이 맞습니다. 위의 예제에서 "hello"를 msgid로 사용하는 것은 번역된 메시지의 키를 입력하는 것입니다.

    오류 메시지인 "undefined symbol: __dgettext_2"는 gettext 라이브러리가 포함되지 않은 경우에 발생합니다. 따라서, 다음의 코드를 포함하여 gettext 라이브러리를 포함해야 합니다.

    #hostingforum.kr
    c
    
    #include 
    
    


    또한, gettext 초기화를 위해 bindtextdomain 함수와 textdomain 함수를 사용해야 합니다. bindtextdomain 함수는 도메인 이름과 도메인 디렉토리를 입력받습니다. textdomain 함수는 도메인 이름을 입력받습니다.

    위의 예제에서 "/path/to/locale/directory"를 도메인 디렉토리로 입력했으며, "hello"를 도메인 이름으로 입력했습니다.

    2025-07-10 06:36

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 37,775건 / 5 페이지

검색

게시물 검색