메뉴 닫기

MFC 다국어 지원 방법(국가별 언어설정)

MFC 다국어 지원 방법(국가별 언어설정)

MFC 에서 프로젝트를 완료 했는데 뜬금 없이 다국어 지원을 요청한다.

영어,중국어 등등……. 참 난감합니다.

Code를 전부 다시 작성해야 할 판 입니다. 또 수정하다 발생 시킬 수 있는 오류가 두렵습니다.

MFC에 기본적인 메뉴에 대해서는 OS에 설정된 언어 별로 대응할 방법이 있습니다 만. 임의로 추가한 사용자 정의 메뉴에 대해서는 대응 방법이 모호 합니다..

해결 방법을 알아 보도록 하겠습니다.

목차

1    DLL을 이용하는 방법    2

1.1    DLL 프로젝트를 생성합니다.    2

1.2    프로젝트가 생성 되었으면 File Open 메뉴를 눌러 리소스 가져오기    2

1.3    DLL 프로젝트의 리소스에서 내용을 수정합니다.    4

1.4    DLL을 컴파일 합니다.    4

1.5    언어별 리소스 불러오기    4

1.6    단점검토.    5

2    MAKEINTRESOURCE를 사용하여 직접 코딩    6

2.1    CMap을 활용하여 리소스 생성하기    6

2.2    SetAt 만들기    7

2.3    파일에서 String Table 불러오기    7

2.4    사용방법.    10

  1. DLL을 이용하는 방법

    1. DLL 프로젝트를 생성합니다.


  1. 프로젝트가 생성 되었으면 File Open 메뉴를 눌러 리소스 가져오기

수정해야 할 원본 프로젝트의 리소스 파일 “xxx.rc” 을 엽니다.

그러면 아래 그림과 같이 모든 리소스가 연결되는 것을 볼 수 있습니다


외부파일에서 불러온 리소스 항목에서 필요한 리소스를 끌어서 왼쪽에 새로 만들 Dll 프로젝트로 Import 시킵니다.


모두 Import 시켰으면 리소스 파일을 닫습니다.

이때 저장 할 것이냐 라고 물으면 “저장안함” 을 선택 해야 합니다.

만일 저장 하게 되면 Open된 원본 파일에서 리소스들이 옮겨서 삭제된 상태로 저장되어 원본 파일의 리소스가 사라 지기 때문입니다.

  1. DLL 프로젝트의 리소스에서 내용을 수정합니다.

    StringTable은 물론 ,Dialog에 기록 된 내용,또는 Image에 그림으로 그려진 내용 등. 바꿀 내용을 모두 수정합니다.

  2. DLL을 컴파일 합니다.

    각각의 언어별로 배포할 DLL을 컴파일 합니다.

    예를 들어 영어는 lang_eng.dll, 한글은 lang_kor.dll 과 같은 형태로

    컴파일 해서 작성 해 둡니다.

  3. 언어별 리소스 불러오기

프로젝트의 Application 파일 “xxxApp.cpp” 파일에서 동적으로 DLL을 불러 오도록

코딩 합니다.

BOOL App::InitInstance
{
     …….
     //AfxDbInitModule();
     m_hInstLocalDLL=NULL;
     UINT    uCP = GetOEMCP();
     switch( uCP )
     {
     case 949://한국어
     m_hInstLocalDLL = LoadLibrary ("lang_kor.dll");
         //m_hInstLocalDLL=NULL 인경우는 적용 되지 않는다
        break;
     case 437:// MS-DOS United States :
     default:
        m_hInstLocalDLL = LoadLibrary ("lang_eng.dll");
        break;
     }
#ifdef _WIN32
    if (m_hInstLocalDLL != NULL)
        AfxSetResourceHandle (m_hInstLocalDLL); //불러온 인스턴스 적용 되는 곳
#else
    if (m_hInstLocalDLL >= HINSTANCE_ERROR)
        AfxSetResourceHandle (m_hInstLocalDLL);
#endif

 

이렇게 하면 DLL에서 리소스를 불러와서 자동으로 메핑하게 됩니다.

이로서 언어별로 적용이 완료 됩니다.

  1. 단점검토.

지금까지 설명한 방법은 단점이 있습니다.

    개발이 완전히 종료된 시점에서 해당 방법은 아주 유용하지만 대부분은

개발 완료시점에서 수정 및 추가 사항이 발생하여 원본 리소스를 건드리게 되는

상황이 발생 합니다.

그때마다 앞에서 행했던 작업을 반복해야 하는 번거로움이 있습니다.

기본적으로 프로그램을 개발 할 때

LoadString을 사용하여 String Table을 불러 오도록 하는 방법을 선택 하는 것이

바람직한 코딩 방법입니다.

int LoadString(

HINSTANCE hInstance, // handle to module containing string resource

UINT uID, // resource identifier

LPTSTR lpBuffer, // pointer to buffer for resource

int nBufferMax // size of buffer

);

  1. MAKEINTRESOURCE를 사용하여 직접 코딩

프로젝트를 수행하다 보면, 개발이 완료되기 전에도 빈번한 수정이 발생합니다,

개발자가 사용자의 요구사항을 100% 이해 하지 못하고 프로젝트에 투입,

심지어 개발을 요구한 User조차도 자신이 원하는 사항을 완전하게 전달 하지

못하는 경우가 있어,

프로젝트가 완전하게 완료되었다고 판단하기가 어렵습니다.

배포된 이후에도 빈번한 수정이 발생 하게 됩니다.

이것을 피해가는 방법을 검토 해 보겠습니다.

사용자가 메뉴의 이름을 바꿀 수 있도록 우회 하는 방법을 알아 보겠습니다.

  1. CMap을 활용하여 리소스 생성하기

#include “Afxtempl.h”

class AFX_EXT_CLASS CLanguagePack:public CMap<WORD,WORD,CString,CString>

{

}

와 같이 CMAP클래스를 상속받아서 StringTable을 불러올 수 있는 클래스를

만들자

  1. SetAt 만들기

사용할 리소스 ID를 SetAt 으로 추가 하면 자동으로 Resource에서 문자를

찾아서 MAP에 등록 하는 클래스를 구현 합니다

void CLanguagePack::SetAt(WORD Id,LPCTSTR str)
{
    CString mstr=str;
    CString mtemp="";
    if(mstr.IsEmpty())//내용이 비어 있으면 사전에 등록 된 내용을 적용
    {if(Lookup(Id,mtemp))mstr=mtemp;}
    if(mstr.IsEmpty()) //사전에 등록된 내용이 없으면 리소스에서 찾는다
        mstr=(CString)MAKEINTRESOURCE(Id);//리소스에 등록된 글 가져오기
    CMap<WORD,WORD,CString,CString>::SetAt(Id,mstr);
}

사용 예:

CLanguagePack* p_lang=new CLanguagePack();

p_lang->SetAt(IDS_ANG_DIVISION);

p_lang->SetAt(IDS_ANG_IRREGULAR);

p_lang->SetAt(IDS_ANG_REGULAR);

와 같이 리소스의 이름을 등록하면 리소스에서 문자를 찾아서 자동으로 등록합니다.

  1. 파일에서 String Table 불러오기

Language.lng에 Stringtable을 만들어 두고 불러오도록 코딩 합니다.

“Language.lng”에 바로 아래의 내용과 같이 stringtable을 미리 만들어 두고

[CMainFrame]

3=Monitoring

2=도움말(&H)

1=보기(&V)

111=최근 파일

109=인쇄 설정(&R)…

108=인쇄 미리 보기(&V)

107=인쇄(&P)…    Ctrl+P

105=모델선택

104=검사작업(F4)

103=교정작업(F3)

102=환경설정(F2)

100=관리자 메뉴(&S)

113=종료(&X)

파일에서 불러오도록 코딩을 합니다.

코딩 내용은 파일에서 지정된 resource ID 에 해당하는 String이 있으면

String을 불러오고 String이 없으면 default로 지정된 String을 파일에 자동 기록

하도록 만들어 져 있습니다.

void CLanguagePack::GetResourceFromFile(CString mfile)
{
    WORD KEY;
    CString sbuff,fmt;
    char lp_str[1024]; // address of return buffer
    int pos=0;
    CWinApp* p_app=AfxGetApp();
    mfile= p_app->m_pszHelpFilePath ;
if((pos=mfile.ReverseFind('\\'))>0)
        mfile=mfile.Left(pos);
mfile+="\\Language.lng";
POSITION POS=GetStartPosition();
while(POS)
{
     GetNextAssoc(POS,KEY,sbuff);
     fmt.Format("%d",KEY);
     if(KEY==0)continue;
     if(GetPrivateProfileString(m_section,fmt,"",lp_str,1024,mfile))
     {
            sbuff=lp_str;
            sbuff.Replace("\\n","\n");//
            sbuff.Replace("\\r","\r");//
            CMap<WORD,WORD,CString,CString>::SetAt(KEY,sbuff);
     }
     else //파일에서 읽지 못했을 때 초기값을 만들어 둔다
     {
         if(sbuff.IsEmpty())//등록이 되어 있지 않았을때 리소스에서 가져와 등록
         {
            sbuff=(CString)MAKEINTRESOURCE(KEY);
            CMap<WORD,WORD,CString,CString>::SetAt(KEY,sbuff);
           }
     sbuff.Replace("\n","\\n");//줄바꿈 구분자를 따로 넣음
     sbuff.Replace("\r","\\r");//
     fmt.Format("%d",KEY);
    WritePrivateProfileString(m_section,fmt,sbuff,mfile);
     }
};
}

사용방법.

OnInitialUpdate(),또는 OnInitDialog () 등 시작되는 위치에 다음과 같이 코딩한다.

   

CLanguagePack m_lang(“CMainFrame “);

m_lang.SetAt(IDS_CALSTEP_FORMAT);

m_lang.SetAt(IDS_CALSTEP1);

m_lang.SetAt(IDS_CALSTEP2);

m_lang.GetResourceFromFile(“파일이름”); //파일에서 내용 불러 오기

만일 Dialog창에 “ID_CALSTEP_FORMAT”이라는 버튼이 있다면

SetDlgItemText(ID_CALSTEP_FORMAT, m_lang[IDS_CALSTEP_FORMAT]);

과 같이 사용하면 됩니다.

SetDlgItemText(ID_CALSTEP_FORMAT, m_lang[IDS_CALSTEP_FORMAT]);

로 간단히 불러 오는 것이 너무 간단하게 보입니다.

저게 어떻게 가능 한 것인지는 CMap이라는 클래스가 가지고 있습니다.

291 Comments

  1. g we

    Hello There. I discovered your blog the usage of msn. That is a
    very well written article. I’ll be sure to bookmark it and return to read more of your useful information. Thanks for the post.
    I’ll definitely comeback.

  2. g https://tinyurl.com/rsacwgxy

    Hmm it seems like your website ate my first comment (it was super long)
    so I guess I’ll just sum it up what I wrote and say, I’m thoroughly
    enjoying your blog. I as well am an aspiring blog writer but
    I’m still new to everything. Do you have any tips and hints for first-time blog writers?
    I’d genuinely appreciate it.

  3. Best CBD Oil

    I am just commenting to let you know of the perfect experience my wife’s princess encountered studying your web site. She picked up numerous details, most notably what it’s like to have an ideal helping character to have many more very easily gain knowledge of selected advanced subject matter. You undoubtedly exceeded our own expectations. Thanks for offering such effective, healthy, explanatory and in addition fun thoughts on this topic to Gloria.

  4. security screens home depot

    Howdy just wanted to give you a quick heads up. The words in your content seem to be running off the screen in Internet explorer. I’m not sure if this is a format issue or something to do with internet browser compatibility but I thought I’d post to let you know. The design and style look great though! Hope you get the problem resolved soon. Cheers

  5. calvin klein underwear

    Youre so cool! I dont suppose Ive read something like this before. So good to find any individual with some original ideas on this subject. realy thanks for beginning this up. this website is one thing that is needed on the net, someone with a bit originality. useful job for bringing one thing new to the web!

  6. air force 1

    There are definitely lots of particulars like that to take into consideration. That could be a nice level to convey up. I supply the ideas above as general inspiration but clearly there are questions like the one you convey up where crucial thing will probably be working in sincere good faith. I don?t know if finest practices have emerged around issues like that, but I’m positive that your job is clearly identified as a fair game. Each girls and boys really feel the impact of only a moment抯 pleasure, for the remainder of their lives.

  7. best cbd oil on sale

    Can I simply say what an alleviation to find someone who in fact recognizes what theyre discussing on the web. You certainly recognize exactly how to bring a concern to light as well as make it important. More individuals require to read this as well as understand this side of the tale. I angle think youre not much more popular since you certainly have the present.

  8. sale pure200 cbd

    Youre so great! I don’t intend Ive review anything such as this prior to. So good to locate someone with some original ideas on this subject. realy thank you for starting this up. this web site is something that is needed on the internet, a person with a little originality. valuable task for bringing something brand-new to the internet!

  9. bape hoodie

    There are certainly loads of details like that to take into consideration. That is a great level to convey up. I supply the ideas above as basic inspiration but clearly there are questions like the one you convey up the place an important thing might be working in trustworthy good faith. I don?t know if best practices have emerged round issues like that, but I am sure that your job is clearly recognized as a fair game. Both boys and girls feel the influence of just a second抯 pleasure, for the remainder of their lives.

  10. cbd gummies near me

    I am the proprietor of JustCBD Store company (justcbdstore.com) and I’m presently trying to broaden my wholesale side of company. I am hoping someone at targetdomain is able to provide some guidance ! I considered that the most ideal way to do this would be to reach out to vape shops and cbd retail stores. I was hoping if someone could suggest a qualified website where I can buy CBD Shops Sales Leads I am presently examining creativebeartech.com, theeliquidboutique.co.uk and wowitloveithaveit.com. Not sure which one would be the most ideal selection and would appreciate any assistance on this. Or would it be simpler for me to scrape my own leads? Suggestions?

  11. the full details

    After research study a few of the post on your web site now, as well as I really like your way of blog writing. I bookmarked it to my bookmark web site checklist as well as will certainly be examining back quickly. Pls look into my internet site as well and also let me know what you believe.

  12. Google

    Having read this I believed it was extremely enlightening. I appreciate you finding the time and effort to put this informative article together. I once again find myself spending a lot of time both reading and leaving comments. But so what, it was still worth it!

  13. Jack Kimbrel

    I?m amazed, I have to state. Actually rarely do I run into a blog that?s both educative and also entertaining, and also let me tell you, you have actually hit the nail on the head. Your idea is impressive; the concern is something that not nearly enough individuals are speaking intelligently about. I am very satisfied that I stumbled across this in my look for something relating to this.

  14. casino338

    Hi, I do believe this is a great website. I stumbledupon it 😉 I will return yet again since I book marked it. Money and freedom is the greatest way to change, may you be rich and continue to help other people.

  15. dewajudiqq

    Hi, I do believe this is an excellent site. I stumbledupon it 😉 I’m going to revisit once again since i have book-marked it. Money and freedom is the greatest way to change, may you be rich and continue to guide others.

  16. pokerpelangi

    Good post. I learn something totally new and challenging on blogs I stumbleupon on a daily basis. It will always be interesting to read articles from other writers and practice a little something from other websites.

  17. judi deposit pulsa

    Howdy! This article could not be written any better! Looking at this article reminds me of my previous roommate! He continually kept talking about this. I’ll send this post to him. Fairly certain he will have a great read. Thanks for sharing!

  18. microgaming

    A fascinating discussion is definitely worth comment. I do think that you need to publish more about this subject matter, it might not be a taboo subject but typically people don’t speak about such topics. To the next! Many thanks!!

  19. joker123 pulsa

    Can I simply just say what a relief to find a person that actually knows what they are discussing on the web. You certainly understand how to bring an issue to light and make it important. A lot more people ought to read this and understand this side of the story. It’s surprising you are not more popular because you definitely possess the gift.

  20. dingdong togel

    When I initially left a comment I appear to have clicked on the -Notify me when new comments are added- checkbox and from now on each time a comment is added I receive 4 emails with the exact same comment. Perhaps there is an easy method you can remove me from that service? Thanks a lot!

  21. dingdong 42d

    An interesting discussion is definitely worth comment. I do think that you should write more on this subject, it might not be a taboo matter but usually people don’t discuss such issues. To the next! All the best!!

  22. 139.180.185.166

    Oh my goodness! Awesome article dude! Thank you so much, However I am experiencing issues with your RSS. I don’t know the reason why I can’t subscribe to it. Is there anybody else getting identical RSS issues? Anyone that knows the solution will you kindly respond? Thanx!!

  23. agen bet88

    Good post. I learn something new and challenging on sites I stumbleupon every day. It’s always interesting to read through articles from other authors and use a little something from other sites.

  24. Firmanrahman.com

    I was pretty pleased to discover this web site. I need to to thank you for ones time for this particularly wonderful read!! I definitely savored every bit of it and I have you book marked to check out new things in your web site.

  25. totobet hongkong

    After I initially commented I appear to have clicked on the -Notify me when new comments are added- checkbox and from now on each time a comment is added I receive 4 emails with the same comment. There has to be an easy method you can remove me from that service? Thanks a lot!

  26. login totobet

    I truly love your blog.. Excellent colors & theme. Did you build this amazing site yourself? Please reply back as I’m attempting to create my own website and would like to learn where you got this from or exactly what the theme is called. Kudos!

  27. free ebooks to download and read

    You are so interesting! I don’t suppose I have read through anything like that before. So wonderful to discover somebody with a few original thoughts on this topic. Seriously.. many thanks for starting this up. This site is something that is needed on the internet, someone with a little originality!

  28. resep pasta

    Hi! I could have sworn I’ve visited your blog before but after browsing through some of the posts I realized it’s new to me. Anyways, I’m certainly delighted I found it and I’ll be bookmarking it and checking back regularly!

  29. trang lo de 188 loto

    You’re so interesting! I don’t think I’ve truly read through anything like that before. So nice to find another person with a few unique thoughts on this issue. Seriously.. many thanks for starting this up. This site is something that’s needed on the web, someone with a bit of originality!

  30. trang xo so k8loto

    Hello there! This blog post couldn’t be written much better! Looking through this article reminds me of my previous roommate! He always kept preaching about this. I am going to send this information to him. Pretty sure he will have a good read. Thanks for sharing!

  31. lo de online uy tin 188xoso

    Oh my goodness! Incredible article dude! Many thanks, However I am encountering difficulties with your RSS. I don’t know why I can’t join it. Is there anyone else getting similar RSS problems? Anyone who knows the answer can you kindly respond? Thanks!!

  32. Situs Slot Pulsa Online

    Having read this I believed it was very enlightening. I appreciate you finding the time and energy to put this content together. I once again find myself personally spending a lot of time both reading and posting comments. But so what, it was still worthwhile!

  33. download joker123 apk

    I’m impressed, I must say. Rarely do I encounter a blog that’s both equally educative and amusing, and let me tell you, you have hit the nail on the head. The problem is something which too few people are speaking intelligently about. I am very happy I came across this in my hunt for something concerning this.

  34. joker slot apk

    When I originally left a comment I appear to have clicked on the -Notify me when new comments are added- checkbox and now every time a comment is added I get four emails with the same comment. Is there a means you are able to remove me from that service? Thanks!

  35. bentuk bibir ideal

    Hi there! This blog post could not be written any better! Looking at this article reminds me of my previous roommate! He always kept preaching about this. I’ll send this article to him. Pretty sure he’ll have a good read. Thank you for sharing!

  36. poker88

    You are so cool! I do not think I have read a single thing like that before. So good to discover somebody with some genuine thoughts on this subject. Really.. thanks for starting this up. This website is one thing that is required on the web, someone with a bit of originality!

  37. download poker88

    An outstanding share! I have just forwarded this onto a coworker who had been conducting a little homework on this. And he in fact bought me lunch due to the fact that I found it for him… lol. So let me reword this…. Thank YOU for the meal!! But yeah, thanx for spending some time to talk about this matter here on your internet site.

  38. idn poker88 asia

    The next time I read a blog, Hopefully it won’t disappoint me just as much as this one. After all, Yes, it was my choice to read, but I actually believed you would have something helpful to say. All I hear is a bunch of moaning about something that you can fix if you weren’t too busy searching for attention.

  39. idn poker apk

    The next time I read a blog, Hopefully it doesn’t fail me as much as this one. After all, I know it was my choice to read through, nonetheless I really thought you would probably have something interesting to talk about. All I hear is a bunch of moaning about something that you could fix if you weren’t too busy searching for attention.

  40. situs judi online

    You’re so awesome! I don’t believe I have read a single thing like that before. So great to discover somebody with some unique thoughts on this issue. Really.. many thanks for starting this up. This web site is something that’s needed on the internet, someone with a little originality!

  41. cara membuat blog di blogger

    Hi there! This post could not be written any better! Going through this article reminds me of my previous roommate! He constantly kept preaching about this. I most certainly will send this information to him. Pretty sure he’s going to have a good read. I appreciate you for sharing!

  42. jagad poker

    An outstanding share! I have just forwarded this onto a coworker who was doing a little research on this. And he actually bought me breakfast due to the fact that I found it for him… lol. So allow me to reword this…. Thank YOU for the meal!! But yeah, thanx for spending time to discuss this matter here on your website.

  43. cover lagu dangdut terbaru

    Hi, I believe your site could be having web browser compatibility issues. When I take a look at your web site in Safari, it looks fine but when opening in Internet Explorer, it has some overlapping issues. I just wanted to give you a quick heads up! Apart from that, excellent blog!

  44. dingdong online

    Oh my goodness! Incredible article dude! Thank you so much, However I am experiencing problems with your RSS. I don’t know the reason why I am unable to join it. Is there anyone else having the same RSS problems? Anyone who knows the solution can you kindly respond? Thanx!!

  45. aplikasi dingdongtogel

    Right here is the right webpage for anybody who hopes to understand this topic. You know so much its almost hard to argue with you (not that I actually would want to…HaHa). You certainly put a brand new spin on a topic that has been discussed for ages. Excellent stuff, just excellent!

  46. dingdong togel

    After I initially commented I appear to have clicked the -Notify me when new comments are added- checkbox and now every time a comment is added I receive four emails with the same comment. Is there a way you can remove me from that service? Cheers!

  47. dingdong casino online

    Hi there, I think your blog could possibly be having internet browser compatibility problems. Whenever I take a look at your blog in Safari, it looks fine but when opening in IE, it has some overlapping issues. I just wanted to provide you with a quick heads up! Other than that, wonderful site!

  48. KelasJudi

    I would like to thank you for the efforts you have put in penning this blog. I really hope to view the same high-grade content by you in the future as well. In truth, your creative writing abilities has motivated me to get my very own website now 😉

  49. bwin bet365

    I’d like to thank you for the efforts you have put in penning this site. I am hoping to check out the same high-grade content from you later on as well. In fact, your creative writing abilities has encouraged me to get my own blog now 😉

  50. situs online bwinbet365

    The next time I read a blog, I hope that it does not fail me as much as this one. After all, I know it was my choice to read through, but I actually believed you’d have something helpful to say. All I hear is a bunch of complaining about something that you can fix if you weren’t too busy looking for attention.

  51. sabung ayam online

    This is the right blog for anybody who would like to understand this topic. You realize so much its almost tough to argue with you (not that I really will need to…HaHa). You certainly put a new spin on a topic that’s been written about for ages. Excellent stuff, just great!

  52. king s128

    Aw, this was a very good post. Taking the time and actual effort to generate a good article… but what can I say… I put things off a whole lot and don’t manage to get nearly anything done.

  53. kings128

    Hi, I do believe this is a great website. I stumbledupon it 😉 I am going to revisit yet again since I book-marked it. Money and freedom is the greatest way to change, may you be rich and continue to help others.

  54. AduQ

    I seriously love your website.. Excellent colors & theme. Did you make this website yourself? Please reply back as I’m planning to create my very own blog and would love to find out where you got this from or exactly what the theme is called. Kudos!

  55. the original source

    An intriguing discussion is worth remark. I think that you need to compose a lot more on this subject, it might not be a forbidden subject however typically people are inadequate to talk on such topics. To the following. Thanks

  56. Sbobet777

    An impressive share! I’ve just forwarded this onto a co-worker who has been doing a little research on this. And he in fact bought me dinner due to the fact that I found it for him… lol. So let me reword this…. Thank YOU for the meal!! But yeah, thanx for spending time to talk about this issue here on your internet site.

  57. Agen Sbobet88 Online

    I really love your blog.. Pleasant colors & theme. Did you create this amazing site yourself? Please reply back as I’m hoping to create my very own blog and want to learn where you got this from or exactly what the theme is named. Thank you!

  58. s128

    You are so interesting! I don’t believe I’ve truly read a single thing like this before. So great to find someone with some unique thoughts on this issue. Really.. many thanks for starting this up. This web site is something that is needed on the internet, someone with some originality!

  59. Bet88 Online

    Hi, I do believe this is an excellent blog. I stumbledupon it 😉 I will return yet again since i have bookmarked it. Money and freedom is the best way to change, may you be rich and continue to guide other people.

  60. jago s128

    You’re so cool! I don’t believe I’ve read a single thing like that before. So wonderful to find another person with some unique thoughts on this subject matter. Seriously.. many thanks for starting this up. This web site is something that is required on the web, someone with a little originality!

  61. sabung ayam online

    I absolutely love your blog.. Pleasant colors & theme. Did you make this site yourself? Please reply back as I’m attempting to create my own blog and want to know where you got this from or exactly what the theme is named. Appreciate it!

  62. s128

    I’m pretty pleased to uncover this website. I want to to thank you for your time for this particularly wonderful read!! I definitely enjoyed every little bit of it and I have you bookmarked to see new stuff in your blog.

  63. Agen Poker

    You are so interesting! I don’t believe I’ve truly read through anything like that before. So great to find someone with unique thoughts on this subject. Really.. many thanks for starting this up. This site is something that’s needed on the internet, someone with some originality!

  64. http://99bandarqiuqiu.com/

    May I simply say what a comfort to find someone that genuinely knows what they are talking about on the internet. You actually understand how to bring an issue to light and make it important. A lot more people should look at this and understand this side of the story. I was surprised that you are not more popular since you most certainly possess the gift.

  65. http://senangdominopkv.com/

    Hi, I think your site might be having web browser compatibility issues. Whenever I take a look at your blog in Safari, it looks fine however, if opening in I.E., it has some overlapping issues. I simply wanted to provide you with a quick heads up! Apart from that, excellent site!

  66. http://180.215.15.98

    Good day! I could have sworn I’ve been to this blog before but after going through some of the articles I realized it’s new to me. Nonetheless, I’m certainly pleased I discovered it and I’ll be book-marking it and checking back frequently!

  67. senang domino

    Howdy! This article could not be written any better! Going through this article reminds me of my previous roommate! He constantly kept talking about this. I most certainly will forward this information to him. Pretty sure he’s going to have a great read. Many thanks for sharing!

  68. s128 apk

    A motivating discussion is definitely worth comment. I do believe that you need to publish more on this subject matter, it may not be a taboo matter but typically people do not talk about these topics. To the next! Cheers!!

  69. download s1288

    Having read this I believed it was very enlightening. I appreciate you taking the time and effort to put this information together. I once again find myself personally spending way too much time both reading and commenting. But so what, it was still worthwhile!

  70. judi slot online

    I’m very happy to uncover this page. I need to to thank you for ones time for this wonderful read!! I definitely really liked every little bit of it and I have you saved as a favorite to see new information on your site.

  71. daftar sv388 ayam

    Can I simply say what a relief to find somebody that really understands what they’re talking about on the net. You certainly realize how to bring an issue to light and make it important. A lot more people need to look at this and understand this side of your story. I was surprised you are not more popular given that you surely possess the gift.

  72. login totobet

    You’re so interesting! I do not believe I have read a single thing like this before. So wonderful to find somebody with some unique thoughts on this topic. Really.. thank you for starting this up. This website is something that is needed on the internet, someone with some originality!

  73. login totobet

    Next time I read a blog, I hope that it does not disappoint me just as much as this particular one. I mean, I know it was my choice to read, nonetheless I really thought you would probably have something useful to talk about. All I hear is a bunch of crying about something that you could fix if you were not too busy searching for attention.

  74. agen slot deposit pulsa

    Can I simply say what a comfort to uncover someone who actually knows what they are discussing on the net. You definitely realize how to bring an issue to light and make it important. More people really need to check this out and understand this side of your story. I was surprised you aren’t more popular because you definitely have the gift.

  75. Judi Poker Online

    Hello there! This article couldn’t be written any better! Reading through this article reminds me of my previous roommate! He always kept talking about this. I am going to send this post to him. Fairly certain he will have a great read. Many thanks for sharing!

  76. dominobet asia

    Oh my goodness! Incredible article dude! Thank you, However I am experiencing troubles with your RSS. I don’t know the reason why I am unable to subscribe to it. Is there anyone else getting similar RSS problems? Anyone that knows the solution will you kindly respond? Thanks!!

  77. Ulatmovie

    A fascinating discussion is definitely worth comment. I believe that you should write more about this subject matter, it may not be a taboo matter but usually people do not talk about such subjects. To the next! All the best!!

  78. www.elevenconsignment.com

    The very next time I read a blog, Hopefully it doesn’t disappoint me as much as this particular one. I mean, Yes, it was my choice to read through, nonetheless I truly thought you’d have something useful to talk about. All I hear is a bunch of moaning about something that you can fix if you were not too busy looking for attention.

  79. sosbobet

    Nice post. I learn something totally new and challenging on blogs I stumbleupon everyday. It will always be interesting to read content from other writers and use something from other websites.

  80. kamera4d.org

    Hi! I could have sworn I’ve been to your blog before but after looking at some of the articles I realized it’s new to me. Anyways, I’m definitely delighted I stumbled upon it and I’ll be bookmarking it and checking back often!

  81. download free ebooks online

    I’m impressed, I have to admit. Rarely do I encounter a blog that’s equally educative and interesting, and without a doubt, you’ve hit the nail on the head. The problem is an issue that not enough folks are speaking intelligently about. Now i’m very happy I stumbled across this in my hunt for something regarding this.

  82. Kursus Bahasa Inggris Batam

    Hi there! This blog post couldn’t be written much better! Looking through this post reminds me of my previous roommate! He continually kept preaching about this. I’ll send this article to him. Fairly certain he’s going to have a good read. Thank you for sharing!

  83. rezgamer.com

    Next time I read a blog, Hopefully it doesn’t fail me just as much as this one. I mean, Yes, it was my choice to read, however I genuinely thought you would probably have something useful to talk about. All I hear is a bunch of whining about something that you can fix if you weren’t too busy searching for attention.

  84. http://www.kamera4d.org/

    Can I simply just say what a comfort to discover a person that actually understands what they are talking about on the web. You actually realize how to bring a problem to light and make it important. A lot more people ought to check this out and understand this side of your story. I was surprised that you aren’t more popular since you surely possess the gift.

  85. pokerace99

    Good day! I could have sworn I’ve visited this site before but after looking at a few of the posts I realized it’s new to me. Nonetheless, I’m definitely happy I stumbled upon it and I’ll be book-marking it and checking back often!

  86. resep masakanku

    Nice post. I learn something totally new and challenging on websites I stumbleupon on a daily basis. It will always be exciting to read articles from other authors and practice something from their web sites.

  87. in the know

    I uncovered your blog website on google as well as examine a few of your early posts. Continue to maintain the excellent operate. I just extra up your RSS feed to my MSN Information Viewers. Looking for onward to reading more from you later!?

  88. MyStarGarden

    Hi! I could have sworn I’ve visited your blog before but after going through many of the articles I realized it’s new to me. Anyways, I’m definitely delighted I found it and I’ll be bookmarking it and checking back frequently!

  89. joker 128

    I’m impressed, I must say. Seldom do I encounter a blog that’s both educative and entertaining, and let me tell you, you have hit the nail on the head. The problem is something that too few men and women are speaking intelligently about. Now i’m very happy I stumbled across this during my hunt for something relating to this.

  90. joker 123

    Howdy! This post could not be written any better! Looking at this article reminds me of my previous roommate! He always kept talking about this. I’ll send this article to him. Fairly certain he’s going to have a great read. Many thanks for sharing!

  91. poker idn

    Can I simply say what a relief to uncover somebody that genuinely knows what they are discussing over the internet. You definitely understand how to bring a problem to light and make it important. A lot more people have to read this and understand this side of the story. I was surprised you are not more popular given that you certainly possess the gift.

  92. idnplay poker

    Oh my goodness! Awesome article dude! Many thanks, However I am encountering difficulties with your RSS. I don’t understand the reason why I cannot join it. Is there anybody getting the same RSS issues? Anybody who knows the answer can you kindly respond? Thanx!!

  93. idn poker88

    I truly love your site.. Great colors & theme. Did you develop this site yourself? Please reply back as I’m hoping to create my own site and would like to learn where you got this from or exactly what the theme is called. Thank you!

  94. fafa slot

    You’re so awesome! I do not believe I have read a single thing like this before. So wonderful to discover another person with some unique thoughts on this issue. Really.. many thanks for starting this up. This site is one thing that’s needed on the web, someone with a bit of originality!

  95. Kertas puyer press

    This is the right site for anybody who would like to understand this topic. You know a whole lot its almost tough to argue with you (not that I really would want to…HaHa). You definitely put a brand new spin on a topic which has been written about for decades. Great stuff, just great!

  96. joker123 slot

    I’m impressed, I have to admit. Seldom do I encounter a blog that’s both educative and engaging, and without a doubt, you have hit the nail on the head. The problem is something that too few men and women are speaking intelligently about. I am very happy I found this in my search for something regarding this.

  97. joker123 slot

    Next time I read a blog, I hope that it does not disappoint me just as much as this one. After all, Yes, it was my choice to read through, but I really thought you would probably have something useful to talk about. All I hear is a bunch of whining about something you could fix if you were not too busy seeking attention.

  98. joker123 slot

    Hi, I do believe this is a great web site. I stumbledupon it 😉 I am going to revisit yet again since I bookmarked it. Money and freedom is the greatest way to change, may you be rich and continue to guide others.

  99. Ebola88

    When I originally commented I appear to have clicked the -Notify me when new comments are added- checkbox and from now on whenever a comment is added I recieve four emails with the same comment. There has to be an easy method you can remove me from that service? Cheers!

  100. khazanahpromosi

    After going over a number of the blog articles on your web site, I seriously appreciate your technique of blogging. I book-marked it to my bookmark webpage list and will be checking back soon. Take a look at my website too and let me know how you feel.

  101. canon support

    An outstanding share! I’ve just forwarded this onto a coworker who has been doing a little research on this. And he in fact bought me dinner because I discovered it for him… lol. So let me reword this…. Thanks for the meal!! But yeah, thanks for spending the time to discuss this topic here on your web page.

  102. Samsung drivers

    An outstanding share! I have just forwarded this onto a co-worker who was conducting a little homework on this. And he actually bought me dinner due to the fact that I discovered it for him… lol. So allow me to reword this…. Thank YOU for the meal!! But yeah, thanks for spending some time to talk about this matter here on your web site.

  103. Sofa Sudut L

    I seriously love your site.. Excellent colors & theme. Did you develop this site yourself? Please reply back as I’m attempting to create my very own site and would love to know where you got this from or exactly what the theme is called. Thanks!

  104. baca selengkapnya

    Hi, I do think this is an excellent web site. I stumbledupon it 😉 I’m going to return once again since I bookmarked it. Money and freedom is the greatest way to change, may you be rich and continue to help other people.

  105. Aplikasidewasa.com

    I really love your site.. Great colors & theme. Did you create this amazing site yourself? Please reply back as I’m looking to create my very own blog and would love to know where you got this from or just what the theme is named. Thanks!

  106. Mandiriqq

    An impressive share! I’ve just forwarded this onto a friend who has been doing a little research on this. And he actually ordered me dinner simply because I found it for him… lol. So let me reword this…. Thanks for the meal!! But yeah, thanx for spending the time to talk about this issue here on your site.

  107. sahabatqq.mobi

    Hello there! I could have sworn I’ve visited this blog before but after looking at many of the posts I realized it’s new to me. Anyways, I’m definitely delighted I came across it and I’ll be bookmarking it and checking back regularly!

  108. levidio.musafirdigital

    Oh my goodness! Incredible article dude! Thank you, However I am encountering issues with your RSS. I don’t know the reason why I am unable to subscribe to it. Is there anybody else having identical RSS issues? Anyone that knows the solution can you kindly respond? Thanx!!

  109. Mother Nature

    Environment Awareness is the attention of the significance and fragility of our surroundings. It helps us understand the fragility of our surroundings by making us understand the things that we will do and contribute to the preservation of the environment. Environmental consciousness is a straightforward approach to be an energetic environmentalist and help contribute in making a bright future for future generations. It can be necessary for us to know the issues which are contributing in direction of the destruction of the environment and what can be done to prevent them from taking place.

  110. https://charlesforboston.com/

    The very next time I read a blog, I hope that it doesn’t fail me as much as this particular one. After all, I know it was my choice to read through, however I genuinely thought you would have something helpful to talk about. All I hear is a bunch of whining about something that you could possibly fix if you weren’t too busy searching for attention.

  111. https://ardusat.org/

    After looking into a few of the blog articles on your website, I really appreciate your technique of blogging. I added it to my bookmark website list and will be checking back soon. Take a look at my web site too and let me know how you feel.

  112. agen joker388 online

    Having read this I believed it was rather informative. I appreciate you taking the time and effort to put this short article together. I once again find myself personally spending way too much time both reading and leaving comments. But so what, it was still worthwhile!

  113. joker888

    You are so interesting! I don’t think I’ve read anything like that before. So wonderful to discover somebody with a few genuine thoughts on this subject matter. Really.. many thanks for starting this up. This website is something that is needed on the web, someone with a little originality!

  114. cara daftar sbobet

    Next time I read a blog, I hope that it doesn’t fail me just as much as this one. I mean, I know it was my choice to read through, however I actually believed you would probably have something useful to say. All I hear is a bunch of moaning about something you can fix if you were not too busy seeking attention.

  115. daftar sbobet88

    Having read this I believed it was extremely enlightening. I appreciate you finding the time and effort to put this content together. I once again find myself spending way too much time both reading and commenting. But so what, it was still worthwhile!

  116. https://hermes21.net/

    I blog quite often and I seriously thank you for your content. This great article has really peaked my interest. I’m going to book mark your blog and keep checking for new details about once per week. I subscribed to your RSS feed too.

  117. http://103.194.171.205/

    Having read this I thought it was really enlightening. I appreciate you finding the time and effort to put this informative article together. I once again find myself personally spending a significant amount of time both reading and leaving comments. But so what, it was still worthwhile!

  118. https://hermes21.net/

    After checking out a few of the blog posts on your web page, I really appreciate your technique of blogging. I bookmarked it to my bookmark site list and will be checking back in the near future. Please visit my web site as well and tell me what you think.

  119. http://107.152.32.187/

    Hi there, I do believe your web site could be having internet browser compatibility problems. When I take a look at your web site in Safari, it looks fine however, if opening in IE, it has some overlapping issues. I simply wanted to give you a quick heads up! Apart from that, wonderful website!

  120. look at these guys

    Youre so great! I do not suppose Ive check out anything like this prior to. So nice to discover someone with some initial thoughts on this subject. realy thanks for beginning this up. this internet site is something that is required on the internet, somebody with a little originality. valuable job for bringing something new to the web!

  121. Chasidy Obbink

    I like the helpful information you provide in your articles. I’ll bookmark your weblog and check again here regularly. I’m quite sure I’ll learn many new stuff right here! Best of luck for the next!

댓글 남기기

이메일은 공개되지 않습니다.