Localization to replace the hardcoded English/Japanese. I will follow up with a Japanese translation based on the previous code. Some of the old solution lingers in parts of the code. A small amount of clean-up and removal BeOS-specifics.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34956 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Jonas Sundström 2010-01-08 20:26:05 +00:00
parent b5be9fe6ff
commit c8767bee6f
17 changed files with 389 additions and 433 deletions

View File

@ -38,35 +38,29 @@ All rights reserved.
#include <stdio.h>
#include <ctype.h>
#include <Debug.h>
#include <Alert.h>
#include <Beep.h>
#include <Clipboard.h>
#include <Debug.h>
#include <E-mail.h>
#include <Beep.h>
#include <Input.h>
#include <Locale.h>
#include <MenuItem.h>
#include <Mime.h>
#include <NodeInfo.h>
#include <NodeMonitor.h>
#include <Path.h>
#include <Mime.h>
#include <Beep.h>
#include <PopUpMenu.h>
#include <MenuItem.h>
#include <Region.h>
#include <Roster.h>
#include <ScrollView.h>
#include <TextView.h>
#include <UTF8.h>
#include <MenuItem.h>
#include <Roster.h>
#include <Clipboard.h>
#include <Input.h>
#include <MailMessage.h>
#include <MailAttachment.h>
#include <mail_util.h>
#include <MDRLanguage.h>
#include "MailApp.h"
#include "MailSupport.h"
#include "MailWindow.h"
@ -84,6 +78,10 @@ All rights reserved.
# define DSPELL(x) ;
#endif
#define TR_CONTEXT "Mail"
const rgb_color kNormalTextColor = {0, 0, 0, 255};
const rgb_color kSpellTextColor = {255, 0, 0, 255};
const rgb_color kHyperLinkColor = {0, 0, 255, 255};
@ -744,9 +742,8 @@ TContentView::MessageReceived(BMessage *msg)
} else {
beep();
(new BAlert("",
MDR_DIALECT_CHOICE ("An error occurred trying to open this signature.",
"この署名を開くときにエラーが発生しました"),
MDR_DIALECT_CHOICE ("Sorry", "了解")))->Go();
TR("An error occurred trying to open this signature."),
TR("Sorry")))->Go();
}
break;
}
@ -885,19 +882,19 @@ TTextView::TTextView(BRect frame, BRect text, bool incoming,
//
fEnclosureMenu = new BPopUpMenu("Enclosure", false, false);
fEnclosureMenu->SetFont(&menuFont);
fEnclosureMenu->AddItem(new BMenuItem(MDR_DIALECT_CHOICE ("Save Enclosure", "添付ファイルを保存") B_UTF8_ELLIPSIS,new BMessage(M_SAVE)));
fEnclosureMenu->AddItem(new BMenuItem(MDR_DIALECT_CHOICE ("Open Enclosure", "添付ファイルを開く"), new BMessage(M_OPEN)));
fEnclosureMenu->AddItem(new BMenuItem(TR("Save Enclosure" B_UTF8_ELLIPSIS),
new BMessage(M_SAVE)));
fEnclosureMenu->AddItem(new BMenuItem(TR("Open Enclosure"),
new BMessage(M_OPEN)));
//
// Hyperlink pop up menu
//
fLinkMenu = new BPopUpMenu("Link", false, false);
fLinkMenu->SetFont(&menuFont);
fLinkMenu->AddItem(new BMenuItem(
MDR_DIALECT_CHOICE ("Open This Link", "リンク先を開く"),
fLinkMenu->AddItem(new BMenuItem(TR("Open This Link"),
new BMessage(M_OPEN)));
fLinkMenu->AddItem(new BMenuItem(
MDR_DIALECT_CHOICE ("Copy Link Location", "リンク先をコピー"),
fLinkMenu->AddItem(new BMenuItem(TR("Copy Link Location"),
new BMessage(M_COPY)));
SetDoesUndo(true);
@ -1551,7 +1548,7 @@ TTextView::MouseDown(BPoint where)
BMenuItem *addItem = NULL;
if (!foundWord && gUserDict >= 0) {
menu.AddSeparatorItem();
addItem = new BMenuItem(MDR_DIALECT_CHOICE ("Add", "追加"), NULL);
addItem = new BMenuItem(TR("Add"), NULL);
menu.AddItem(addItem);
}
@ -1893,8 +1890,7 @@ TTextView::Open(hyper_text *enclosure)
if (result != B_NO_ERROR && result != B_ALREADY_RUNNING) {
beep();
(new BAlert("",
MDR_DIALECT_CHOICE("There is no installed handler for URL links.",
"このURLリンクを扱えるアプリケーションが存在しません"),
TR("There is no installed handler for URL links."),
"Sorry"))->Go();
}
break;
@ -2043,10 +2039,8 @@ TTextView::Save(BMessage *msg, bool makeNewFile)
if (result != B_NO_ERROR) {
beep();
MDR_DIALECT_CHOICE(
(new BAlert("", "An error occurred trying to save the enclosure.", "Sorry"))->Go();,
(new BAlert("", "添付ファイルを保存するときにエラーが発生しました", "了解"))->Go();
)
(new BAlert("", TR("An error occurred trying to save the enclosure."),
TR("Sorry")))->Go();
}
return result;
@ -3285,8 +3279,8 @@ TTextView::Undo(BClipboard */*clipboard*/)
} else {
::beep();
(new BAlert("",
MDR_DIALECT_CHOICE("Inconsistency occurred in the Undo/Redo buffer.",
"Undo/Redoバッファに矛盾が発生しました"), "OK"))->Go();
TR("Inconsistency occurred in the Undo/Redo buffer."),
TR("OK")))->Go();
}
break;
}
@ -3331,8 +3325,8 @@ TTextView::Redo()
case K_REPLACED:
::beep();
(new BAlert("",
MDR_DIALECT_CHOICE("Inconsistency occurred in the Undo/Redo buffer.",
"Undo/Redoバッファに矛盾が発生しました"), "OK"))->Go();
TR("Inconsistency occurred in the Undo/Redo buffer."),
TR("OK")))->Go();
break;
}
ScrollToSelection();

View File

@ -41,19 +41,18 @@ All rights reserved.
#include "Enclosures.h"
#include <Debug.h>
#include <Alert.h>
#include <Beep.h>
#include <Bitmap.h>
#include <Debug.h>
#include <Locale.h>
#include <MenuItem.h>
#include <Alert.h>
#include <NodeMonitor.h>
#include <PopUpMenu.h>
#include <MailAttachment.h>
#include <MailMessage.h>
#include <MDRLanguage.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@ -64,6 +63,9 @@ All rights reserved.
#include "Messages.h"
#define TR_CONTEXT "Mail"
static const float kPlainFontSizeScale = 0.9;
static status_t
@ -137,7 +139,7 @@ TEnclosuresView::TEnclosuresView(BRect rect, BRect wind_rect)
BRect r;
r.left = ENCLOSE_TEXT_H + font.StringWidth(
MDR_DIALECT_CHOICE ("Enclosures: ","添付ファイル")) + 5;
TR("Enclosures: ")) + 5;
r.top = ENCLOSE_FIELD_V;
r.right = wind_rect.right - wind_rect.left - B_V_SCROLL_BAR_WIDTH - 9;
r.bottom = Frame().Height() - 8;
@ -218,16 +220,14 @@ TEnclosuresView::MessageReceived(BMessage *msg)
if (item->Component())
{
// remove the component from the mail
TMailWindow *window = dynamic_cast<TMailWindow *>(Window());
if (window && window->Mail())
window->Mail()->RemoveComponent(item->Component());
(new BAlert("", MDR_DIALECT_CHOICE (
"Removing enclosures from a forwarded mail is not yet implemented!\n"
"It will not yet work correctly.",
"転送メールから添付ファイルを削除する機能はまだ実装されていません。"),
MDR_DIALECT_CHOICE ("OK","了解")))->Go();
(new BAlert("", TR(
"Removing enclosures from a forwarded mail is not yet "
"implemented!\nIt will not yet work correctly."),
TR("OK")))->Go();
}
else
watch_node(item->NodeRef(), B_STOP_WATCHING, this);
@ -277,10 +277,9 @@ TEnclosuresView::MessageReceived(BMessage *msg)
if (badType)
{
beep();
(new BAlert("", MDR_DIALECT_CHOICE (
"Only files can be added as enclosures.",
"添付できるのは、ファイルのみです。"),
MDR_DIALECT_CHOICE ("Ok","了解")))->Go();
(new BAlert("",
TR("Only files can be added as enclosures."),
TR("Ok")))->Go();
}
}
break;
@ -424,11 +423,9 @@ TListView::MouseDown(BPoint point)
BPopUpMenu menu("enclosure", false, false);
menu.SetFont(&font);
menu.AddItem(new BMenuItem(
MDR_DIALECT_CHOICE ("Open Enclosure","添付ファイルを開く"),
menu.AddItem(new BMenuItem(TR("Open Enclosure"),
new BMessage(LIST_INVOKED)));
menu.AddItem(new BMenuItem(
MDR_DIALECT_CHOICE ("Remove Enclosure","添付ファイルを削除"),
menu.AddItem(new BMenuItem(TR("Remove Enclosure"),
new BMessage(M_REMOVE)));
BPoint menuStart = ConvertToScreen(point);

View File

@ -43,13 +43,17 @@ All rights reserved.
#include "Messages.h"
#include "AutoTextControl.h"
#include <TextView.h>
#include <Button.h>
#include <Application.h>
#include <String.h>
#include <Box.h>
#include <Button.h>
#include <Catalog.h>
#include <Locale.h>
#include <String.h>
#include <TextView.h>
#define TR_CONTEXT "Mail"
#include <MDRLanguage.h>
enum {
M_FIND_STRING_CHANGED = 'fsch'
@ -134,7 +138,7 @@ FindPanel::FindPanel(BRect rect)
AddChild(mBTextControl);
mFindButton = new BButton(BRect(0,0,90,20),"FINDBUTTON",
MDR_DIALECT_CHOICE ("Find","検索"),
TR("Find"),
new BMessage(FINDBUTTON),B_FOLLOW_LEFT | B_FOLLOW_BOTTOM);
mFindButton->ResizeToPreferred();
AddChild(mFindButton);
@ -229,7 +233,7 @@ void FindPanel::Find()
FindWindow::FindWindow()
: BWindow(FindWindow::mLastPosition,
MDR_DIALECT_CHOICE ("Find","検索"),
TR("Find"),
B_FLOATING_WINDOW,
B_NOT_RESIZABLE | B_NOT_ZOOMABLE | B_WILL_ACCEPT_FIRST_CLICK)
{

View File

@ -42,13 +42,13 @@ All rights reserved.
#include "FieldMsg.h"
#include "Prefs.h"
#include <MDRLanguage.h>
#include <MailSettings.h>
#include <MailMessage.h>
#include <CharacterSet.h>
#include <CharacterSetRoster.h>
#include <E-mail.h>
#include <Locale.h>
#include <MenuBar.h>
#include <MenuField.h>
#include <MenuItem.h>
@ -70,6 +70,9 @@ All rights reserved.
#include <time.h>
#define TR_CONTEXT "Mail"
using namespace BPrivate;
using std::map;
@ -153,7 +156,7 @@ THeaderView::THeaderView(BRect rect, BRect windowRect, bool incoming,
BMessage* msg;
float x = StringWidth( /* The longest title string in the header area */
MDR_DIALECT_CHOICE ("Enclosures: ","添付ファイル:")) + 9;
TR("Enclosures: ")) + 9;
float y = TO_FIELD_V;
BMenuBar* dummy = new BMenuBar(BRect(0, 0, 100, 15), "Dummy");
@ -242,17 +245,17 @@ THeaderView::THeaderView(BRect rect, BRect windowRect, bool incoming,
if (fIncoming && !resending) {
// Set up the character set pop-up menu on the right of "To" box.
r.Set (windowRect.Width() - widestCharacterSet -
StringWidth (DECODING_TEXT) - 2 * SEPARATOR_MARGIN, y - 2,
StringWidth (TR("Decoding:")) - 2 * SEPARATOR_MARGIN, y - 2,
windowRect.Width() - SEPARATOR_MARGIN, y + menuFieldHeight);
field = new BMenuField (r, "decoding", DECODING_TEXT, fEncodingMenu,
field = new BMenuField (r, "decoding", TR("Decoding:"), fEncodingMenu,
true /* fixedSize */,
B_FOLLOW_TOP | B_FOLLOW_RIGHT,
B_WILL_DRAW | B_NAVIGABLE | B_NAVIGABLE_JUMP);
field->SetDivider(field->StringWidth(DECODING_TEXT) + 5);
field->SetDivider(field->StringWidth(TR("Decoding:")) + 5);
AddChild(field);
r.Set(SEPARATOR_MARGIN, y,
field->Frame().left - SEPARATOR_MARGIN, y + menuFieldHeight);
sprintf(string, FROM_TEXT);
sprintf(string, TR("From:"));
} else {
r.Set(x - 12, y, windowRect.Width() - SEPARATOR_MARGIN,
y + menuFieldHeight);
@ -279,9 +282,9 @@ THeaderView::THeaderView(BRect rect, BRect windowRect, bool incoming,
if (!fIncoming || resending) {
r.right = r.left - 5;
r.left = r.right - ceilf(be_plain_font->StringWidth(TO_TEXT) + 25);
r.left = r.right - ceilf(be_plain_font->StringWidth(TR("To:")) + 25);
r.top -= 1;
fToMenu = new QPopupMenu(TO_TEXT);
fToMenu = new QPopupMenu(TR("To:"));
field = new BMenuField(r, "", "", fToMenu, true,
B_FOLLOW_LEFT | B_FOLLOW_TOP, B_WILL_DRAW);
field->SetDivider(0.0);
@ -293,13 +296,14 @@ THeaderView::THeaderView(BRect rect, BRect windowRect, bool incoming,
if (!fIncoming || resending) {
// Put the character set box on the right of the From field.
r.Set(windowRect.Width() - widestCharacterSet -
StringWidth(ENCODING_TEXT) - 2 * SEPARATOR_MARGIN,
StringWidth(TR("Encoding:")) - 2 * SEPARATOR_MARGIN,
y - 2, windowRect.Width() - SEPARATOR_MARGIN, y + menuFieldHeight);
BMenuField *encodingField = new BMenuField (r, "encoding", ENCODING_TEXT, fEncodingMenu,
true /* fixedSize */,
BMenuField* encodingField = new BMenuField(r, "encoding",
TR("Encoding:"), fEncodingMenu, true /* fixedSize */,
B_FOLLOW_TOP | B_FOLLOW_RIGHT,
B_WILL_DRAW | B_NAVIGABLE | B_NAVIGABLE_JUMP);
encodingField->SetDivider(encodingField->StringWidth(ENCODING_TEXT) + 5);
encodingField->SetDivider(encodingField->StringWidth(TR("Encoding:"))
+ 5);
AddChild(encodingField);
field = encodingField;
@ -351,7 +355,7 @@ THeaderView::THeaderView(BRect rect, BRect windowRect, bool incoming,
}
r.Set(SEPARATOR_MARGIN, y - 2,
field->Frame().left - SEPARATOR_MARGIN, y + menuFieldHeight);
field = new BMenuField(r, "account", FROM_TEXT, fAccountMenu,
field = new BMenuField(r, "account", TR("From:"), fAccountMenu,
true /* fixedSize */,
B_FOLLOW_TOP | B_FOLLOW_LEFT_RIGHT,
B_WILL_DRAW | B_NAVIGABLE | B_NAVIGABLE_JUMP);
@ -371,7 +375,8 @@ THeaderView::THeaderView(BRect rect, BRect windowRect, bool incoming,
windowRect.Width() - SEPARATOR_MARGIN, y + menuFieldHeight);
if (account)
r.right -= SEPARATOR_MARGIN + ACCOUNT_FIELD_WIDTH;
fAccountTo = new TTextControl(r, TO_TEXT, NULL, fIncoming, false, B_FOLLOW_LEFT_RIGHT);
fAccountTo = new TTextControl(r, TR("To:"), NULL, fIncoming, false,
B_FOLLOW_LEFT_RIGHT);
fAccountTo->SetEnabled(false);
fAccountTo->SetDivider(x - 12 - SEPARATOR_MARGIN);
fAccountTo->SetAlignment(B_ALIGN_RIGHT, B_ALIGN_LEFT);
@ -379,7 +384,8 @@ THeaderView::THeaderView(BRect rect, BRect windowRect, bool incoming,
if (account) {
r.left = r.right + 6; r.right = windowRect.Width() - SEPARATOR_MARGIN;
fAccount = new TTextControl(r, ACCOUNT_TEXT, NULL, fIncoming, false, B_FOLLOW_RIGHT | B_FOLLOW_TOP);
fAccount = new TTextControl(r, TR("Account:"), NULL, fIncoming,
false, B_FOLLOW_RIGHT | B_FOLLOW_TOP);
fAccount->SetEnabled(false);
AddChild(fAccount);
}
@ -390,7 +396,7 @@ THeaderView::THeaderView(BRect rect, BRect windowRect, bool incoming,
r.Set(SEPARATOR_MARGIN, y,
windowRect.Width() - SEPARATOR_MARGIN, y + menuFieldHeight);
y += controlHeight;
fSubject = new TTextControl(r, SUBJECT_TEXT, new BMessage(SUBJECT_FIELD),
fSubject = new TTextControl(r, TR("Subject:"), new BMessage(SUBJECT_FIELD),
fIncoming, false, B_FOLLOW_LEFT_RIGHT);
AddChild(fSubject);
(msg = new BMessage(FIELD_CHANGED))->AddInt32("bitmask", FIELD_SUBJECT);
@ -413,9 +419,9 @@ THeaderView::THeaderView(BRect rect, BRect windowRect, bool incoming,
fCc->SetModificationMessage(msg);
r.right = r.left - 5;
r.left = r.right - ceilf(be_plain_font->StringWidth(CC_TEXT) + 25);
r.left = r.right - ceilf(be_plain_font->StringWidth(TR("Cc:")) + 25);
r.top -= 1;
fCcMenu = new QPopupMenu(CC_TEXT);
fCcMenu = new QPopupMenu(TR("Cc:"));
field = new BMenuField(r, "", "", fCcMenu, true,
B_FOLLOW_LEFT | B_FOLLOW_TOP, B_WILL_DRAW);
@ -423,7 +429,7 @@ THeaderView::THeaderView(BRect rect, BRect windowRect, bool incoming,
field->SetEnabled(true);
AddChild(field);
r.Set(BCC_FIELD_H + be_plain_font->StringWidth(BCC_TEXT), y,
r.Set(BCC_FIELD_H + be_plain_font->StringWidth(TR("Bcc:")), y,
windowRect.Width() - SEPARATOR_MARGIN, y + menuFieldHeight);
y += controlHeight;
fBcc = new TTextControl(r, "", new BMessage(BCC_FIELD),
@ -436,9 +442,9 @@ THeaderView::THeaderView(BRect rect, BRect windowRect, bool incoming,
fBcc->SetModificationMessage(msg);
r.right = r.left - 5;
r.left = r.right - ceilf(be_plain_font->StringWidth(BCC_TEXT) + 25);
r.left = r.right - ceilf(be_plain_font->StringWidth(TR("Bcc:")) + 25);
r.top -= 1;
fBccMenu = new QPopupMenu(BCC_TEXT);
fBccMenu = new QPopupMenu(TR("Bcc:"));
field = new BMenuField(r, "", "", fBccMenu, true,
B_FOLLOW_LEFT | B_FOLLOW_TOP, B_WILL_DRAW);
field->SetDivider(0.0);
@ -1159,3 +1165,4 @@ void
QPopupMenu::EntryRemoved(ino_t /*node*/)
{
}

View File

@ -47,32 +47,24 @@ All rights reserved.
#include <fs_attr.h>
#define TO_TEXT "To:"
#define FROM_TEXT "From:"
#define ENCODING_TEXT "Encoding:"
#define DECODING_TEXT "Decoding:"
#define TO_FIELD_H 39
#define FROM_FIELD_H 31
#define TO_FIELD_V 7
#define TO_FIELD_WIDTH 270
#define FROM_FIELD_WIDTH 280
#define ACCOUNT_TEXT "Account:"
#define ACCOUNT_FIELD_WIDTH 165
#define SUBJECT_TEXT "Subject:"
#define SUBJECT_FIELD_H 18
#define SUBJECT_FIELD_V 33
#define SUBJECT_FIELD_WIDTH 270
#define SUBJECT_FIELD_HEIGHT 16
#define CC_TEXT "CC:"
#define CC_FIELD_H 40
#define CC_FIELD_V 58
#define CC_FIELD_WIDTH 192
#define CC_FIELD_HEIGHT 16
#define BCC_TEXT "BCC:"
#define BCC_FIELD_H 268
#define BCC_FIELD_V 58
#define BCC_FIELD_WIDTH 197
@ -141,3 +133,4 @@ class TTextControl : public BComboBox {
};
#endif /* _HEADER_H */

View File

@ -1,7 +1,5 @@
SubDir HAIKU_TOP src apps mail ;
SetSubDirSupportedPlatformsBeOSCompatible ;
if $(TARGET_PLATFORM) != haiku {
UsePublicHeaders mail ;
}
@ -11,7 +9,8 @@ UsePrivateHeaders textencoding ;
UsePrivateHeaders shared ;
UsePrivateHeaders storage ;
AddResources Mail : Mail.rdef pictures.rdef ;
AddResources Mail : pictures.rdef ;
Application Mail :
AutoTextControl.cpp
BmapButton.cpp
@ -32,11 +31,25 @@ Application Mail :
Utilities.cpp
WIndex.cpp
Words.cpp
KUndoBuffer.cpp ;
KUndoBuffer.cpp
: be tracker $(TARGET_LIBSTDC++) $(TARGET_LIBSUPC++) liblocale.so libmail.so
libtextencoding.so
: Mail.rdef
;
LinkAgainst Mail : be tracker $(TARGET_LIBSTDC++) libmail.so libtextencoding.so ;
Package haiku-maildaemon-cvs :
Mail :
boot beos apps ;
DoCatalogs Mail :
x-vnd.Be-MAIL
:
Content.cpp
Enclosures.cpp
FindWindow.cpp
Header.cpp
MailApp.cpp
MailPopUpMenu.cpp
MailWindow.cpp
Prefs.cpp
Signature.cpp
: en.catalog
: # ja.catkeys
;

View File

@ -19,7 +19,7 @@ resource app_version {
internal = 3,
short_info = "Mail",
long_info = "Mail ©2005-2009 Haiku, Inc."
long_info = "Mail ©2005-2010 Haiku, Inc."
};
resource vector_icon {

View File

@ -44,10 +44,12 @@ All rights reserved.
#include <unistd.h>
#include <Autolock.h>
#include <Catalog.h>
#include <Clipboard.h>
#include <Debug.h>
#include <E-mail.h>
#include <InterfaceKit.h>
#include <Locale.h>
#include <Roster.h>
#include <Screen.h>
#include <StorageKit.h>
@ -62,16 +64,11 @@ All rights reserved.
#include <MailSettings.h>
#include <MailDaemon.h>
#include <mail_util.h>
#include <MDRLanguage.h>
#include <CharacterSetRoster.h>
using namespace BPrivate ;
#ifdef HAIKU_TARGET_PLATFORM_BEOS
#include <netdb.h>
#endif
#include "ButtonBar.h"
#include "Content.h"
#include "Enclosures.h"
@ -90,6 +87,9 @@ using namespace BPrivate ;
#include "Words.h"
#define TR_CONTEXT "Mail"
static const char *kDictDirectory = "word_dictionary";
static const char *kIndexDirectory = "word_index";
static const char *kWordsPath = "/boot/optional/goodies/words";
@ -117,11 +117,13 @@ TMailApp::TMailApp()
fMailCharacterSet(B_MS_WINDOWS_CONVERSION),
fContentFont(be_fixed_font)
{
be_locale->GetAppCatalog(&fCatalog);
// set default values
fContentFont.SetSize(12.0);
fAutoMarkRead = true;
fSignature = (char *)malloc(strlen(SIG_NONE) + 1);
strcpy(fSignature, SIG_NONE);
fSignature = (char*)malloc(strlen(TR("None")) + 1);
strcpy(fSignature, TR("None"));
fReplyPreamble = (char*)malloc(1);
fReplyPreamble[0] = '\0';
@ -1253,3 +1255,4 @@ main()
TMailApp().Run();
return B_OK;
}

View File

@ -35,6 +35,7 @@ All rights reserved.
#define _MAIL_APP_H
#include <Application.h>
#include <Catalog.h>
#include <Entry.h>
#include <Font.h>
#include <List.h>
@ -128,7 +129,10 @@ class TMailApp : public BApplication {
int32 fUseAccountFrom;
uint32 fMailCharacterSet;
BFont fContentFont;
BCatalog fCatalog;
};
#endif // #ifndef _MAIL_H

View File

@ -35,18 +35,21 @@ All rights reserved.
#include "MailPopUpMenu.h"
#include <Catalog.h>
#include <Locale.h>
#include <MenuItem.h>
#include <Message.h>
#include <malloc.h>
#include <string.h>
#include <MDRLanguage.h>
#include "MailSupport.h"
#include "Messages.h"
#define TR_CONTEXT "Mail"
TMenu::TMenu(const char *name, const char *attribute, int32 message, bool popup,
bool addRandom)
: BPopUpMenu(name, false, false),
@ -94,13 +97,10 @@ TMenu::BuildMenu()
BMessage *msg = new BMessage(M_RANDOM_SIG);
if (!fPopup) {
AddItem(new BMenuItem(MDR_DIALECT_CHOICE ("Random","R) 自動決定"), msg,
'0'), 0);
AddItem(new BMenuItem(TR("Random"), msg, '0'), 0);
} else {
AddItem(new BMenuItem(MDR_DIALECT_CHOICE ("Random","R) 自動決定"), msg),
0);
AddItem(new BMenuItem(TR("Random"), msg), 0);
}
}
}

View File

@ -62,7 +62,6 @@ All rights reserved.
#include <MailSettings.h>
#include <MailDaemon.h>
#include <mail_util.h>
#include <MDRLanguage.h>
#include <CharacterSetRoster.h>

View File

@ -48,6 +48,7 @@ All rights reserved.
#include <Debug.h>
#include <E-mail.h>
#include <InterfaceKit.h>
#include <Locale.h>
#include <PathMonitor.h>
#include <Roster.h>
#include <Screen.h>
@ -86,6 +87,9 @@ All rights reserved.
#include "Words.h"
#define TR_CONTEXT "Mail"
using namespace BPrivate;
@ -195,12 +199,11 @@ TMailWindow::TMailWindow(BRect rect, const char* title, TMailApp* app,
// File Menu
menu = new BMenu(MDR_DIALECT_CHOICE ("File","F) ファイル"));
menu = new BMenu(TR("File"));
msg = new BMessage(M_NEW);
msg->AddInt32("type", M_NEW);
menu->AddItem(item = new BMenuItem(MDR_DIALECT_CHOICE (
"New Mail Message", "N) 新規メッセージ作成"), msg, 'N'));
menu->AddItem(item = new BMenuItem(TR("New Mail Message"), msg, 'N'));
item->SetTarget(be_app);
// Cheap hack - only show the drafts menu when composing messages. Insert
@ -216,7 +219,7 @@ TMailWindow::TMailWindow(BRect rect, const char* title, TMailApp* app,
if (!fIncoming) {
QueryMenu *queryMenu;
queryMenu = new QueryMenu(MDR_DIALECT_CHOICE ("Open Draft", "O) ドラフトを開く"), false);
queryMenu = new QueryMenu(TR("Open Draft"), false);
queryMenu->SetTargetForItems(be_app);
queryMenu->SetPredicate("MAIL:draft==1");
@ -224,122 +227,119 @@ TMailWindow::TMailWindow(BRect rect, const char* title, TMailApp* app,
}
if (!fIncoming || resending) {
menu->AddItem(fSendLater = new BMenuItem(
MDR_DIALECT_CHOICE ("Save as Draft", "S)ドラフトとして保存"),
menu->AddItem(fSendLater = new BMenuItem(TR("Save as Draft"),
new BMessage(M_SAVE_AS_DRAFT), 'S'));
}
if (!resending && fIncoming) {
menu->AddSeparatorItem();
subMenu = new BMenu(MDR_DIALECT_CHOICE ("Close and ","C) 閉じる"));
subMenu = new BMenu(TR("Close and "));
if (file.GetAttrInfo(B_MAIL_ATTR_STATUS, &info) == B_NO_ERROR)
file.ReadAttr(B_MAIL_ATTR_STATUS, B_STRING_TYPE, 0, str, info.size);
else
str[0] = 0;
if (!strcmp(str, "New")) {
subMenu->AddItem(item = new BMenuItem(
MDR_DIALECT_CHOICE ("Leave as New", "N) 新規<New>のままにする"),
subMenu->AddItem(item = new BMenuItem(TR("Leave as New"),
new BMessage(M_CLOSE_SAME), 'W', B_SHIFT_KEY));
#if 0
subMenu->AddItem(item = new BMenuItem(
MDR_DIALECT_CHOICE ("Set to Read", "R) 開封済<Read>に設定"),
subMenu->AddItem(item = new BMenuItem(TR("Set to Read"),
new BMessage(M_CLOSE_READ), 'W'));
#endif
message = M_CLOSE_READ;
} else {
if (strlen(str))
sprintf(status, MDR_DIALECT_CHOICE ("Leave as '%s'","W) 属性を<%s>にする"), str);
sprintf(status, TR("Leave as '%s'"), str);
else
sprintf(status, MDR_DIALECT_CHOICE ("Leave same","W) 属性はそのまま"));
sprintf(status, TR("Leave same"));
subMenu->AddItem(item = new BMenuItem(status,
new BMessage(M_CLOSE_SAME), 'W'));
message = M_CLOSE_SAME;
AddShortcut('W', B_COMMAND_KEY | B_SHIFT_KEY, new BMessage(M_CLOSE_SAME));
}
subMenu->AddItem(new BMenuItem(MDR_DIALECT_CHOICE("Move to Trash",
"T) 削除"), new BMessage(M_DELETE), 'T', B_CONTROL_KEY));
AddShortcut('T', B_SHIFT_KEY | B_COMMAND_KEY, new BMessage(M_DELETE_NEXT));
subMenu->AddItem(new BMenuItem(TR("Move to Trash"),
new BMessage(M_DELETE), 'T', B_CONTROL_KEY));
AddShortcut('T', B_SHIFT_KEY|B_COMMAND_KEY,
new BMessage(M_DELETE_NEXT));
subMenu->AddSeparatorItem();
subMenu->AddItem(new BMenuItem(MDR_DIALECT_CHOICE("Set to Saved",
"S) 属性を<Saved>に設定"), new BMessage(M_CLOSE_SAVED), 'W', B_CONTROL_KEY));
subMenu->AddItem(new BMenuItem(TR("Set to Saved"),
new BMessage(M_CLOSE_SAVED), 'W', B_CONTROL_KEY));
if (add_query_menu_items(subMenu, INDEX_STATUS, M_STATUS,
MDR_DIALECT_CHOICE("Set to %s", "属性を<%s>に設定")) > 0)
TR("Set to %s")) > 0)
subMenu->AddSeparatorItem();
subMenu->AddItem(new BMenuItem(MDR_DIALECT_CHOICE("Set to", "X) 他の属性に変更")
B_UTF8_ELLIPSIS, new BMessage(M_CLOSE_CUSTOM)));
subMenu->AddItem(new BMenuItem(TR("Set to" B_UTF8_ELLIPSIS),
new BMessage(M_CLOSE_CUSTOM)));
#if 0
subMenu->AddItem(new BMenuItem(new TMenu(
MDR_DIALECT_CHOICE ("Set to", "X) 他の属性に変更")B_UTF8_ELLIPSIS,
INDEX_STATUS, M_STATUS, false, false), new BMessage(M_CLOSE_CUSTOM)));
TR("Set to" B_UTF8_ELLIPSIS), INDEX_STATUS, M_STATUS, false, false),
new BMessage(M_CLOSE_CUSTOM)));
#endif
menu->AddItem(subMenu);
} else {
menu->AddSeparatorItem();
menu->AddItem(new BMenuItem(
MDR_DIALECT_CHOICE ("Close", "W) 閉じる"),
menu->AddItem(new BMenuItem(TR("Close"),
new BMessage(B_CLOSE_REQUESTED), 'W'));
}
menu->AddSeparatorItem();
menu->AddItem(fPrint = new BMenuItem(
MDR_DIALECT_CHOICE ("Page Setup", "G) ページ設定") B_UTF8_ELLIPSIS,
menu->AddItem(fPrint = new BMenuItem(TR("Page Setup" B_UTF8_ELLIPSIS),
new BMessage(M_PRINT_SETUP)));
menu->AddItem(fPrint = new BMenuItem(
MDR_DIALECT_CHOICE ("Print", "P) 印刷") B_UTF8_ELLIPSIS,
menu->AddItem(fPrint = new BMenuItem(TR("Print" B_UTF8_ELLIPSIS),
new BMessage(M_PRINT), 'P'));
fMenuBar->AddItem(menu);
menu->AddSeparatorItem();
menu->AddItem(item = new BMenuItem(
MDR_DIALECT_CHOICE ("About Mail", "A) Mailについて") B_UTF8_ELLIPSIS,
TR("About Mail" B_UTF8_ELLIPSIS),
new BMessage(B_ABOUT_REQUESTED)));
item->SetTarget(be_app);
menu->AddSeparatorItem();
menu->AddItem(item = new BMenuItem(
MDR_DIALECT_CHOICE ("Quit", "Q) 終了"),
menu->AddItem(item = new BMenuItem(TR("Quit"),
new BMessage(B_QUIT_REQUESTED), 'Q'));
item->SetTarget(be_app);
// Edit Menu
menu = new BMenu(MDR_DIALECT_CHOICE ("Edit","E) 編集"));
menu->AddItem(fUndo = new BMenuItem(MDR_DIALECT_CHOICE ("Undo","Z) 元に戻す"), new BMessage(B_UNDO), 'Z', 0));
menu = new BMenu(TR("Edit"));
menu->AddItem(fUndo = new BMenuItem(TR("Undo"), new BMessage(B_UNDO),
'Z', 0));
fUndo->SetTarget(NULL, this);
menu->AddItem(fRedo = new BMenuItem(MDR_DIALECT_CHOICE ("Redo","Z) やり直し"), new BMessage(M_REDO), 'Z', B_SHIFT_KEY));
menu->AddItem(fRedo = new BMenuItem(TR("Redo"), new BMessage(M_REDO),
'Z', B_SHIFT_KEY));
fRedo->SetTarget(NULL, this);
menu->AddSeparatorItem();
menu->AddItem(fCut = new BMenuItem(MDR_DIALECT_CHOICE ("Cut","X) 切り取り"), new BMessage(B_CUT), 'X'));
menu->AddItem(fCut = new BMenuItem(TR("Cut"), new BMessage(B_CUT), 'X'));
fCut->SetTarget(NULL, this);
menu->AddItem(fCopy = new BMenuItem(MDR_DIALECT_CHOICE ("Copy","C) コピー"), new BMessage(B_COPY), 'C'));
menu->AddItem(fCopy = new BMenuItem(TR("Copy"), new BMessage(B_COPY), 'C'));
fCopy->SetTarget(NULL, this);
menu->AddItem(fPaste = new BMenuItem(MDR_DIALECT_CHOICE ("Paste","V) 貼り付け"), new BMessage(B_PASTE), 'V'));
menu->AddItem(fPaste = new BMenuItem(TR("Paste"), new BMessage(B_PASTE),
'V'));
fPaste->SetTarget(NULL, this);
menu->AddSeparatorItem();
menu->AddItem(item = new BMenuItem(MDR_DIALECT_CHOICE ("Select All", "A) 全文選択"), new BMessage(M_SELECT), 'A'));
menu->AddItem(item = new BMenuItem(TR("Select All"), new BMessage(M_SELECT),
'A'));
menu->AddSeparatorItem();
item->SetTarget(NULL, this);
menu->AddItem(new BMenuItem(MDR_DIALECT_CHOICE ("Find", "F) 検索") B_UTF8_ELLIPSIS, new BMessage(M_FIND), 'F'));
menu->AddItem(new BMenuItem(MDR_DIALECT_CHOICE ("Find Again", "G) 次を検索"), new BMessage(M_FIND_AGAIN), 'G'));
menu->AddItem(new BMenuItem(TR("Find" B_UTF8_ELLIPSIS),
new BMessage(M_FIND), 'F'));
menu->AddItem(new BMenuItem(TR("Find Again"), new BMessage(M_FIND_AGAIN),
'G'));
if (!fIncoming) {
menu->AddSeparatorItem();
menu->AddItem(fQuote =new BMenuItem(
MDR_DIALECT_CHOICE ("Quote","Q) 引用符をつける"),
menu->AddItem(fQuote =new BMenuItem(TR("Quote"),
new BMessage(M_QUOTE), B_RIGHT_ARROW));
menu->AddItem(fRemoveQuote = new BMenuItem(
MDR_DIALECT_CHOICE ("Remove Quote","R) 引用符を削除"),
menu->AddItem(fRemoveQuote = new BMenuItem(TR("Remove Quote"),
new BMessage(M_REMOVE_QUOTE), B_LEFT_ARROW));
menu->AddSeparatorItem();
fSpelling = new BMenuItem(
MDR_DIALECT_CHOICE ("Check Spelling","H) スペルチェック"),
fSpelling = new BMenuItem(TR("Check Spelling"),
new BMessage(M_CHECK_SPELLING), ';');
menu->AddItem(fSpelling);
if (fApp->StartWithSpellCheckOn())
@ -347,12 +347,12 @@ TMailWindow::TMailWindow(BRect rect, const char* title, TMailApp* app,
}
menu->AddSeparatorItem();
menu->AddItem(item = new BMenuItem(
MDR_DIALECT_CHOICE ("Preferences","P) Mailの設定") B_UTF8_ELLIPSIS,
TR("Preferences" B_UTF8_ELLIPSIS),
new BMessage(M_PREFS),','));
item->SetTarget(be_app);
fMenuBar->AddItem(menu);
menu->AddItem(item = new BMenuItem(
MDR_DIALECT_CHOICE ("Accounts","Accounts") B_UTF8_ELLIPSIS,
TR("Accounts" B_UTF8_ELLIPSIS),
new BMessage(M_ACCOUNTS),'-'));
item->SetTarget(be_app);
@ -360,41 +360,50 @@ TMailWindow::TMailWindow(BRect rect, const char* title, TMailApp* app,
if (!resending && fIncoming) {
menu = new BMenu("View");
menu->AddItem(fHeader = new BMenuItem(MDR_DIALECT_CHOICE ("Show Header","H) ヘッダーを表示"), new BMessage(M_HEADER), 'H'));
menu->AddItem(fRaw = new BMenuItem(MDR_DIALECT_CHOICE ("Show Raw Message"," メッセージを生で表示"), new BMessage(M_RAW)));
menu->AddItem(fHeader = new BMenuItem(TR("Show Header"),
new BMessage(M_HEADER), 'H'));
menu->AddItem(fRaw = new BMenuItem(TR("Show Raw Message"),
new BMessage(M_RAW)));
fMenuBar->AddItem(menu);
}
// Message Menu
menu = new BMenu(MDR_DIALECT_CHOICE ("Message", "M) メッセージ"));
menu = new BMenu(TR("Message"));
if (!resending && fIncoming) {
BMenuItem *menuItem;
menu->AddItem(new BMenuItem(MDR_DIALECT_CHOICE ("Reply","R) 返信"), new BMessage(M_REPLY),'R'));
menu->AddItem(new BMenuItem(MDR_DIALECT_CHOICE ("Reply to Sender","S) 送信者に返信"), new BMessage(M_REPLY_TO_SENDER),'R',B_OPTION_KEY));
menu->AddItem(new BMenuItem(MDR_DIALECT_CHOICE ("Reply to All","P) 全員に返信"), new BMessage(M_REPLY_ALL), 'R', B_SHIFT_KEY));
menu->AddItem(new BMenuItem(TR("Reply"), new BMessage(M_REPLY),'R'));
menu->AddItem(new BMenuItem(TR("Reply to Sender"),
new BMessage(M_REPLY_TO_SENDER),'R',B_OPTION_KEY));
menu->AddItem(new BMenuItem(TR("Reply to All"),
new BMessage(M_REPLY_ALL), 'R', B_SHIFT_KEY));
menu->AddSeparatorItem();
menu->AddItem(new BMenuItem(MDR_DIALECT_CHOICE ("Forward","J) 転送"), new BMessage(M_FORWARD), 'J'));
menu->AddItem(new BMenuItem(MDR_DIALECT_CHOICE ("Forward without Attachments","The opposite: F) 添付ファイルを含めて転送"), new BMessage(M_FORWARD_WITHOUT_ATTACHMENTS)));
menu->AddItem(menuItem = new BMenuItem(MDR_DIALECT_CHOICE ("Resend"," 再送信"), new BMessage(M_RESEND)));
menu->AddItem(menuItem = new BMenuItem(MDR_DIALECT_CHOICE ("Copy to New","D) 新規メッセージへコピー"), new BMessage(M_COPY_TO_NEW), 'D'));
menu->AddItem(new BMenuItem(TR("Forward"), new BMessage(M_FORWARD),
'J'));
menu->AddItem(new BMenuItem(TR("Forward without Attachments"),
new BMessage(M_FORWARD_WITHOUT_ATTACHMENTS)));
menu->AddItem(menuItem = new BMenuItem(TR("Resend"),
new BMessage(M_RESEND)));
menu->AddItem(menuItem = new BMenuItem(TR("Copy to New"),
new BMessage(M_COPY_TO_NEW), 'D'));
menu->AddSeparatorItem();
fDeleteNext = new BMenuItem(MDR_DIALECT_CHOICE ("Move to Trash","T) 削除"), new BMessage(M_DELETE_NEXT), 'T');
fDeleteNext = new BMenuItem(TR("Move to Trash"),
new BMessage(M_DELETE_NEXT), 'T');
menu->AddItem(fDeleteNext);
menu->AddSeparatorItem();
fPrevMsg = new BMenuItem(MDR_DIALECT_CHOICE ("Previous Message","B) 前のメッセージ"), new BMessage(M_PREVMSG),
B_UP_ARROW);
fPrevMsg = new BMenuItem(TR("Previous Message"),
new BMessage(M_PREVMSG), B_UP_ARROW);
menu->AddItem(fPrevMsg);
fNextMsg = new BMenuItem(MDR_DIALECT_CHOICE ("Next Message","N) 次のメッセージ"), new BMessage(M_NEXTMSG),
fNextMsg = new BMenuItem(TR("Next Message"), new BMessage(M_NEXTMSG),
B_DOWN_ARROW);
menu->AddItem(fNextMsg);
menu->AddSeparatorItem();
fSaveAddrMenu = subMenu = new BMenu(MDR_DIALECT_CHOICE ("Save Address", " アドレスを保存"));
fSaveAddrMenu = subMenu = new BMenu(TR("Save Address"));
// create the list of addresses
@ -449,30 +458,31 @@ TMailWindow::TMailWindow(BRect rect, const char* title, TMailApp* app,
fMenuBar->AddItem(menu);
}
} else {
menu->AddItem(fSendNow = new BMenuItem(
MDR_DIALECT_CHOICE ("Send Message", "M) メッセージを送信"),
menu->AddItem(fSendNow = new BMenuItem(TR("Send Message"),
new BMessage(M_SEND_NOW), 'M'));
if (!fIncoming) {
menu->AddSeparatorItem();
fSignature = new TMenu(
MDR_DIALECT_CHOICE ("Add Signature", "D) 署名を追加"),
INDEX_SIGNATURE, M_SIGNATURE);
fSignature = new TMenu(TR("Add Signature"), INDEX_SIGNATURE,
M_SIGNATURE);
menu->AddItem(new BMenuItem(fSignature));
menu->AddItem(item = new BMenuItem(
MDR_DIALECT_CHOICE ("Edit Signatures","S) 署名の編集") B_UTF8_ELLIPSIS,
TR("Edit Signatures" B_UTF8_ELLIPSIS),
new BMessage(M_EDIT_SIGNATURE)));
item->SetTarget(be_app);
menu->AddSeparatorItem();
menu->AddItem(fAdd = new BMenuItem(MDR_DIALECT_CHOICE ("Add Enclosure","E) 追加")B_UTF8_ELLIPSIS, new BMessage(M_ADD), 'E'));
menu->AddItem(fRemove = new BMenuItem(MDR_DIALECT_CHOICE ("Remove Enclosure","T) 削除"), new BMessage(M_REMOVE), 'T'));
menu->AddItem(fAdd = new BMenuItem(TR(
"Add Enclosure" B_UTF8_ELLIPSIS),
new BMessage(M_ADD), 'E'));
menu->AddItem(fRemove = new BMenuItem(TR("Remove Enclosure"),
new BMessage(M_REMOVE), 'T'));
}
fMenuBar->AddItem(menu);
}
// Queries Menu
fQueryMenu = new BMenu(MDR_DIALECT_CHOICE("Queries","???"));
fQueryMenu = new BMenu(TR("Queries"));
fMenuBar->AddItem(fQueryMenu);
_RebuildQueryMenu(true);
@ -527,8 +537,8 @@ TMailWindow::TMailWindow(BRect rect, const char* title, TMailApp* app,
BString signature = fApp->Signature();
if (!fIncoming && strcmp(signature.String(), SIG_NONE) != 0) {
if (strcmp(signature.String(), SIG_RANDOM) == 0)
if (!fIncoming && strcmp(signature.String(), TR("None")) != 0) {
if (strcmp(signature.String(), TR("Random")) == 0)
PostMessage(M_RANDOM_SIG);
else {
// Create a query to find this signature
@ -585,50 +595,41 @@ TMailWindow::BuildButtonBar()
bbar = new ButtonBar(BRect(0, 0, 100, 100), "ButtonBar", 2, 3, 0, 1, 10,
2);
bbar->AddButton(MDR_DIALECT_CHOICE ("New","新規"), 28, new BMessage(M_NEW));
bbar->AddButton(TR("New"), 28, new BMessage(M_NEW));
bbar->AddDivider(5);
fButtonBar = bbar;
if (fResending) {
fSendButton = bbar->AddButton(MDR_DIALECT_CHOICE ("Send","送信"), 8,
new BMessage(M_SEND_NOW));
fSendButton = bbar->AddButton(TR("Send"), 8, new BMessage(M_SEND_NOW));
bbar->AddDivider(5);
} else if (!fIncoming) {
fSendButton = bbar->AddButton(MDR_DIALECT_CHOICE ("Send","送信"), 8,
new BMessage(M_SEND_NOW));
fSendButton = bbar->AddButton(TR("Send"), 8, new BMessage(M_SEND_NOW));
fSendButton->SetEnabled(false);
fSigButton = bbar->AddButton(MDR_DIALECT_CHOICE ("Signature","署名"), 4,
fSigButton = bbar->AddButton(TR("Signature"), 4,
new BMessage(M_SIG_MENU));
fSigButton->InvokeOnButton(B_SECONDARY_MOUSE_BUTTON);
fSaveButton = bbar->AddButton(MDR_DIALECT_CHOICE ("Save","保存"), 44,
fSaveButton = bbar->AddButton(TR("Save"), 44,
new BMessage(M_SAVE_AS_DRAFT));
fSaveButton->SetEnabled(false);
fPrintButton = bbar->AddButton(MDR_DIALECT_CHOICE ("Print","印刷"), 16,
new BMessage(M_PRINT));
fPrintButton = bbar->AddButton(TR("Print"), 16, new BMessage(M_PRINT));
fPrintButton->SetEnabled(false);
bbar->AddButton(MDR_DIALECT_CHOICE ("Trash","削除"), 0,
new BMessage(M_DELETE));
bbar->AddButton(TR("Trash"), 0, new BMessage(M_DELETE));
bbar->AddDivider(5);
} else {
BmapButton *button = bbar->AddButton(MDR_DIALECT_CHOICE ("Reply","返信"),
12, new BMessage(M_REPLY));
BmapButton *button = bbar->AddButton(TR("Reply"), 12,
new BMessage(M_REPLY));
button->InvokeOnButton(B_SECONDARY_MOUSE_BUTTON);
button = bbar->AddButton(MDR_DIALECT_CHOICE ("Forward","転送"), 40,
new BMessage(M_FORWARD));
button = bbar->AddButton(TR("Forward"), 40, new BMessage(M_FORWARD));
button->InvokeOnButton(B_SECONDARY_MOUSE_BUTTON);
fPrintButton = bbar->AddButton(MDR_DIALECT_CHOICE ("Print","印刷"), 16,
new BMessage(M_PRINT));
bbar->AddButton(MDR_DIALECT_CHOICE ("Trash","削除"), 0,
new BMessage(M_DELETE_NEXT));
fPrintButton = bbar->AddButton(TR("Print"), 16, new BMessage(M_PRINT));
bbar->AddButton(TR("Trash"), 0, new BMessage(M_DELETE_NEXT));
if (fApp->ShowSpamGUI()) {
button = bbar->AddButton("Spam", 48, new BMessage(M_SPAM_BUTTON));
button->InvokeOnButton(B_SECONDARY_MOUSE_BUTTON);
}
bbar->AddDivider(5);
fNextButton = bbar->AddButton(MDR_DIALECT_CHOICE ("Next","次へ"), 24,
new BMessage(M_NEXTMSG));
bbar->AddButton(MDR_DIALECT_CHOICE ("Previous","前へ"), 20,
new BMessage(M_PREVMSG));
fNextButton = bbar->AddButton(TR("Next"), 24, new BMessage(M_NEXTMSG));
bbar->AddButton(TR("Previous"), 20, new BMessage(M_PREVMSG));
if (!fAutoMarkRead) {
_AddReadButton();
}
@ -1036,9 +1037,11 @@ TMailWindow::MessageReceived(BMessage *msg)
if (msg->FindInt32("buttons", (int32 *)&buttons) == B_OK
&& buttons == B_SECONDARY_MOUSE_BUTTON) {
BPopUpMenu menu("Reply To", false, false);
menu.AddItem(new BMenuItem(MDR_DIALECT_CHOICE ("Reply","R) 返信"),new BMessage(M_REPLY)));
menu.AddItem(new BMenuItem(MDR_DIALECT_CHOICE ("Reply to Sender","S) 送信者に返信"),new BMessage(M_REPLY_TO_SENDER)));
menu.AddItem(new BMenuItem(MDR_DIALECT_CHOICE ("Reply to All","P) 全員に返信"),new BMessage(M_REPLY_ALL)));
menu.AddItem(new BMenuItem(TR("Reply"),new BMessage(M_REPLY)));
menu.AddItem(new BMenuItem(TR("Reply to Sender"),
new BMessage(M_REPLY_TO_SENDER)));
menu.AddItem(new BMenuItem(TR("Reply to All"),
new BMessage(M_REPLY_ALL)));
BPoint where;
msg->FindPoint("where", &where);
@ -1059,10 +1062,9 @@ TMailWindow::MessageReceived(BMessage *msg)
if (msg->FindInt32("buttons", (int32 *)&buttons) == B_OK
&& buttons == B_SECONDARY_MOUSE_BUTTON) {
BPopUpMenu menu("Forward", false, false);
menu.AddItem(new BMenuItem(MDR_DIALECT_CHOICE("Forward", "J) 転送"),
menu.AddItem(new BMenuItem(TR("Forward"),
new BMessage(M_FORWARD)));
menu.AddItem(new BMenuItem(MDR_DIALECT_CHOICE("Forward without Attachments",
"The opposite: F) 添付ファイルを含む転送"),
menu.AddItem(new BMenuItem(TR("Forward without Attachments"),
new BMessage(M_FORWARD_WITHOUT_ATTACHMENTS)));
BPoint where;
@ -1120,9 +1122,8 @@ TMailWindow::MessageReceived(BMessage *msg)
tracker.SendMessage(&msg);
} else {
(new BAlert("",
MDR_DIALECT_CHOICE ( "Need tracker to move items to trash",
"削除するにはTrackerが必要です。"),
MDR_DIALECT_CHOICE ("sorry","削除できませんでした。")))->Go();
TR("Need tracker to move items to trash"),
TR("sorry")))->Go();
}
}
} else {
@ -1277,12 +1278,13 @@ TMailWindow::MessageReceived(BMessage *msg)
else
{
sprintf(arg, "META:email %s", str);
status_t result = be_roster->Launch("application/x-person", 1, &arg);
status_t result = be_roster->Launch("application/x-person",
1, &arg);
if (result != B_NO_ERROR)
(new BAlert("", MDR_DIALECT_CHOICE (
"Sorry, could not find an application that supports the 'Person' data type.",
"Peopleデータ形式をサポートするアプリケーションが見つかりませんでした。"),
MDR_DIALECT_CHOICE ("OK","了解")))->Go();
(new BAlert("", TR(
"Sorry, could not find an application that supports"
" the 'Person' data type."), TR("OK")))->Go();
}
free(arg);
}
@ -1494,11 +1496,9 @@ TMailWindow::MessageReceived(BMessage *msg)
{
beep();
(new BAlert("",
MDR_DIALECT_CHOICE (
"The spell check feature requires the optional \"words\" file on your BeOS CD.",
"スペルチェク機能はBeOS CDの optional \"words\" ファイルが必要です"),
MDR_DIALECT_CHOICE ("OK","了解"),
NULL, NULL, B_WIDTH_AS_USUAL, B_OFFSET_SPACING,
TR("The spell check feature requires the optional "
"\"words\" file on your BeOS CD."),
TR("OK"), NULL, NULL, B_WIDTH_AS_USUAL, B_OFFSET_SPACING,
B_STOP_ALERT))->Go();
}
else
@ -1608,14 +1608,9 @@ TMailWindow::QuitRequested()
{
if (fResending) {
BAlert *alert = new BAlert("",
MDR_DIALECT_CHOICE (
"Do you wish to send this message before closing?",
"閉じる前に送信しますか?"),
MDR_DIALECT_CHOICE ("Discard","無視"),
MDR_DIALECT_CHOICE ("Cancel","中止"),
MDR_DIALECT_CHOICE ("Send","送信"),
B_WIDTH_AS_USUAL, B_OFFSET_SPACING,
B_WARNING_ALERT);
TR("Do you wish to send this message before closing?"),
TR("Discard"), TR("Cancel"), TR("Send"),
B_WIDTH_AS_USUAL, B_OFFSET_SPACING, B_WARNING_ALERT);
alert->SetShortcut(0,'d');
alert->SetShortcut(1,B_ESCAPE);
result = alert->Go();
@ -1631,14 +1626,10 @@ TMailWindow::QuitRequested()
}
} else {
BAlert *alert = new BAlert("",
MDR_DIALECT_CHOICE (
"Do you wish to save this message as a draft before closing?",
"閉じる前に保存しますか?"),
MDR_DIALECT_CHOICE ("Don't Save","保存しない"),
MDR_DIALECT_CHOICE ("Cancel","中止"),
MDR_DIALECT_CHOICE ("Save","保存"),
B_WIDTH_AS_USUAL, B_OFFSET_SPACING,
B_WARNING_ALERT);
TR("Do you wish to save this message as a draft before closing?"
),
TR("Don't Save"), TR("Cancel"), TR("Save"),
B_WIDTH_AS_USUAL, B_OFFSET_SPACING, B_WARNING_ALERT);
alert->SetShortcut(0,'d');
alert->SetShortcut(1,B_ESCAPE);
result = alert->Go();
@ -2187,9 +2178,8 @@ TMailWindow::Send(bool now)
status_t status = SaveAsDraft();
if (status != B_OK) {
beep();
(new BAlert("",
MDR_DIALECT_CHOICE ("E-mail draft could not be saved!","ドラフトは保存できませんでした。"),
MDR_DIALECT_CHOICE ("OK","了解")))->Go();
(new BAlert("", TR("E-mail draft could not be saved!"),
TR("OK")))->Go();
}
return status;
}
@ -2267,24 +2257,16 @@ TMailWindow::Send(bool now)
if (count > 0) {
int32 userAnswer;
BString messageString;
MDR_DIALECT_CHOICE (
messageString << "Your main text contains " << count <<
" unencodable characters. Perhaps a different character "
"set would work better? Hit Send to send it anyway "
messageString << TR("Your main text contains ") << count <<
TR(" unencodable characters. Perhaps a different "
"character set would work better? Hit Send to send it "
"anyway "
"(a substitute character will be used in place of "
"the unencodable ones), or choose Cancel to go back "
"and try fixing it up."
,
messageString << "送信メールの本文には " << count <<
" 個のエンコードできない文字があります。"
"違う文字セットを使うほうがよい可能性があります。"
"このまま送信の場合は「送信」ボタンを押してください。"
"その場合、代用文字がUnicode化可能な文字に代わって使われます。"
"文字セットを変更する場合は「中止」ボタンを押して下さい。"
);
"and try fixing it up.");
userAnswer = (new BAlert("Question", messageString.String(),
MDR_DIALECT_CHOICE ("Send","送信"),
MDR_DIALECT_CHOICE ("Cancel","中止"),
TR("Send"),
TR("Cancel"),
NULL, B_WIDTH_AS_USUAL, B_OFFSET_SPACING,
B_WARNING_ALERT))->Go();
if (userAnswer == 1) {
@ -2416,12 +2398,9 @@ TMailWindow::Send(bool now)
fSent = true;
int32 start = (new BAlert("no daemon",
MDR_DIALECT_CHOICE ("The mail_daemon is not running. "
"The message is queued and will be sent when the mail_daemon is started.",
"mail_daemon が開始されていません "
"このメッセージは処理待ちとなり、mail_daemon 開始後に処理されます"),
MDR_DIALECT_CHOICE ("Start Now","ただちに開始する"),
MDR_DIALECT_CHOICE ("Ok","了解")))->Go();
TR("The mail_daemon is not running. The message is queued and "
"will be sent when the mail_daemon is started."),
TR("Start Now"), TR("Ok")))->Go();
if (start == 0) {
result = be_roster->Launch("application/x-vnd.Be-POST");
@ -2661,7 +2640,7 @@ ErrorExit:
"Possibly useful error code: %s (%ld).",
filePath.Path(), CommandWord, strerror (errorCode), errorCode);
(new BAlert("", errorString,
MDR_DIALECT_CHOICE("OK","了解")))->Go();
TR("OK")))->Go();
return errorCode;
}
@ -2956,7 +2935,7 @@ TMailWindow::_RebuildQueryMenu(bool firstTime)
delete item;
}
fQueryMenu->AddItem(new BMenuItem(MDR_DIALECT_CHOICE("Edit Queries" B_UTF8_ELLIPSIS,"???" B_UTF8_ELLIPSIS),
fQueryMenu->AddItem(new BMenuItem(TR("Edit Queries" B_UTF8_ELLIPSIS),
new BMessage(M_EDIT_QUERIES), 'E', B_SHIFT_KEY));
bool queryItemsAdded = false;
@ -3123,12 +3102,10 @@ TMailWindow::_AddReadButton()
int32 buttonIndex = fButtonBar->IndexOf(fNextButton);
if (newMail)
fReadButton = fButtonBar->AddButton(
MDR_DIALECT_CHOICE (" Read ", " Read "), 24,
new BMessage(M_READ), buttonIndex);
TR(" Read "), 24, new BMessage(M_READ), buttonIndex);
else
fReadButton = fButtonBar->AddButton(
MDR_DIALECT_CHOICE ("Unread", "Unread"), 28,
new BMessage(M_UNREAD), buttonIndex);
TR("Unread"), 28, new BMessage(M_UNREAD), buttonIndex);
}

View File

@ -50,7 +50,6 @@ All rights reserved.
#include <MailSettings.h>
#include <mail_encoding.h>
#include <MDRLanguage.h>
#include <String.h>
#include <CharacterSet.h>
@ -62,38 +61,20 @@ using namespace BPrivate;
#include "MailSupport.h"
#include "MailWindow.h"
#include "Messages.h"
#include "Signature.h"
#define TR_CONTEXT "Mail"
#define BUTTON_WIDTH 70
#define BUTTON_HEIGHT 20
#define ITEM_SPACE 6
#define FONT_TEXT MDR_DIALECT_CHOICE ("Font:", "フォント:")
#define SIZE_TEXT MDR_DIALECT_CHOICE ("Size:", "サイズ:")
#define LEVEL_TEXT MDR_DIALECT_CHOICE ("User Level:", "ユーザーレベル:")
#define WRAP_TEXT MDR_DIALECT_CHOICE ("Text Wrapping:", "テキスト・ラップ:")
#define ATTACH_ATTRIBUTES_TEXT MDR_DIALECT_CHOICE ("Attach Attributes:", "ファイル属性情報:")
#define QUOTES_TEXT MDR_DIALECT_CHOICE ("Colored Quotes:", "引用部分の着色:")
#define ACCOUNT_TEXT MDR_DIALECT_CHOICE ("Default Account:", "標準アカウント:")
#define REPLYTO_TEXT MDR_DIALECT_CHOICE ("Reply Account:", "返信用アカウント:")
#define REPLYTO_USE_DEFAULT_TEXT MDR_DIALECT_CHOICE ("Use Default Account", "標準アカウントを使う")
#define REPLYTO_FROM_MAIL_TEXT MDR_DIALECT_CHOICE ("Account From Mail", "メールのアカウントを使う")
#define REPLY_PREAMBLE_TEXT MDR_DIALECT_CHOICE ("Reply Preamble:", "返信へ追加:")
#define SIGNATURE_TEXT MDR_DIALECT_CHOICE ("Auto Signature:", "自動署名:")
#define ENCODING_TEXT MDR_DIALECT_CHOICE ("Encoding:", "エンコード形式:")
#define WARN_UNENCODABLE_TEXT MDR_DIALECT_CHOICE ("Warn Unencodable:", "警告: エンコードできません")
#define SPELL_CHECK_START_ON_TEXT MDR_DIALECT_CHOICE ("Initial Spell Check Mode:", "編集時スペルチェック:")
#define AUTO_MARK_READ_TEXT MDR_DIALECT_CHOICE ("Automatically mark mail as read:", "Automatically mark mail as read:")
#define BUTTONBAR_TEXT MDR_DIALECT_CHOICE ("Button Bar:", "ボタンバー:")
#define OK_BUTTON_X1 (PREF_WIDTH - BUTTON_WIDTH - 6)
#define OK_BUTTON_X2 (OK_BUTTON_X1 + BUTTON_WIDTH)
#define OK_BUTTON_TEXT MDR_DIALECT_CHOICE ("OK", "設定")
#define CANCEL_BUTTON_TEXT MDR_DIALECT_CHOICE ("Cancel", "中止")
#define REVERT_BUTTON_X1 8
#define REVERT_BUTTON_X2 (REVERT_BUTTON_X1 + BUTTON_WIDTH)
#define REVERT_BUTTON_TEXT MDR_DIALECT_CHOICE ("Revert", "復元")
enum P_MESSAGES {P_OK = 128, P_CANCEL, P_REVERT, P_FONT,
P_SIZE, P_LEVEL, P_WRAP, P_ATTACH_ATTRIBUTES,
@ -102,16 +83,8 @@ enum P_MESSAGES {P_OK = 128, P_CANCEL, P_REVERT, P_FONT,
P_ACCOUNT, P_REPLYTO, P_REPLY_PREAMBLE,
P_COLORED_QUOTES, P_MARK_READ};
#define ICON_LABEL_TEXT MDR_DIALECT_CHOICE ("Show Icons & Labels", "アイコンとラベル")
#define ICON_TEXT MDR_DIALECT_CHOICE ("Show Icons Only", "アイコンのみ")
#define HIDE_TEXT MDR_DIALECT_CHOICE ("Hide", "隠す")
extern BPoint prefs_window;
#define ATTRIBUTE_ON_TEXT MDR_DIALECT_CHOICE ("Include BeOS Attributes in Attachments", "BeOSの属性を付ける")
#define ATTRIBUTE_OFF_TEXT MDR_DIALECT_CHOICE ("No BeOS Attributes, just Plain Data", "BeOSの属性を付けないデータのみ")
//#pragma mark -
@ -140,11 +113,11 @@ TPrefsWindow::TPrefsWindow(BRect rect, BFont* font, int32* level, bool* wrap,
bool* spellCheckStartOn, bool* autoMarkRead, uint8* buttonBar)
:
#if USE_LAYOUT_MANAGEMENT
BWindow(rect, MDR_DIALECT_CHOICE ("Mail Preferences", "Mailの設定"),
BWindow(rect, TR("Mail Preferences"),
B_TITLED_WINDOW, B_NOT_RESIZABLE | B_NOT_ZOOMABLE
| B_AUTO_UPDATE_SIZE_LIMITS),
#else
BWindow(rect, MDR_DIALECT_CHOICE ("Mail Preferences", "Mailの設定"),
BWindow(rect, TR("Mail Preferences"),
B_TITLED_WINDOW, B_NOT_RESIZABLE | B_NOT_ZOOMABLE),
#endif
@ -205,20 +178,19 @@ TPrefsWindow::TPrefsWindow(BRect rect, BFont* font, int32* level, bool* wrap,
interfaceLayout->AlignLayoutWith(mailLayout, B_HORIZONTAL);
BBox* interfaceBox = new BBox(B_FANCY_BORDER, interfaceView);
interfaceBox->SetLabel(MDR_DIALECT_CHOICE ("User Interface",
"ユーザーインターフェース"));
interfaceBox->SetLabel(TR("User Interface"));
BBox* mailBox = new BBox(B_FANCY_BORDER, mailView);
mailBox->SetLabel(MDR_DIALECT_CHOICE ("Mailing", "メール関係"));
mailBox->SetLabel(TR("Mailing"));
// revert, ok & cancel
BButton* okButton = new BButton("ok", OK_BUTTON_TEXT, new BMessage(P_OK));
BButton* okButton = new BButton("ok", TR("OK"), new BMessage(P_OK));
okButton->MakeDefault(true);
BButton* cancelButton = new BButton("cancel", CANCEL_BUTTON_TEXT,
BButton* cancelButton = new BButton("cancel", TR("Cancel"),
new BMessage(P_CANCEL));
fRevert = new BButton("revert", REVERT_BUTTON_TEXT,
fRevert = new BButton("revert", TR("Revert"),
new BMessage(P_REVERT));
fRevert->SetEnabled(false);
@ -226,45 +198,47 @@ TPrefsWindow::TPrefsWindow(BRect rect, BFont* font, int32* level, bool* wrap,
int32 layoutRow = 0;
fButtonBarMenu = _BuildButtonBarMenu(*buttonBar);
menu = new BMenuField("bar", BUTTONBAR_TEXT, fButtonBarMenu, NULL);
menu = new BMenuField("bar", TR("Button Bar:"), fButtonBarMenu, NULL);
add_menu_to_layout(menu, interfaceLayout, layoutRow);
fFontMenu = _BuildFontMenu(font);
menu = new BMenuField("font", FONT_TEXT, fFontMenu, NULL);
menu = new BMenuField("font", TR("Font:"), fFontMenu, NULL);
add_menu_to_layout(menu, interfaceLayout, layoutRow);
fSizeMenu = _BuildSizeMenu(font);
menu = new BMenuField("size", SIZE_TEXT, fSizeMenu, NULL);
menu = new BMenuField("size", TR("Size:"), fSizeMenu, NULL);
add_menu_to_layout(menu, interfaceLayout, layoutRow);
fColoredQuotesMenu = _BuildColoredQuotesMenu(fColoredQuotes);
menu = new BMenuField("cquotes", QUOTES_TEXT, fColoredQuotesMenu, NULL);
menu = new BMenuField("cquotes", TR("Colored Quotes:"), fColoredQuotesMenu,
NULL);
add_menu_to_layout(menu, interfaceLayout, layoutRow);
fSpellCheckStartOnMenu = _BuildSpellCheckStartOnMenu(fSpellCheckStartOn);
menu = new BMenuField("spellCheckStartOn", SPELL_CHECK_START_ON_TEXT,
menu = new BMenuField("spellCheckStartOn", TR("Initial Spell Check Mode:"),
fSpellCheckStartOnMenu, NULL);
add_menu_to_layout(menu, interfaceLayout, layoutRow);
fAutoMarkReadMenu = _BuildAutoMarkReadMenu(fAutoMarkRead);
menu = new BMenuField("autoMarkRead", AUTO_MARK_READ_TEXT,
fAutoMarkReadMenu, NULL);
menu = new BMenuField("autoMarkRead",
TR("Automatically mark mail as read:"), fAutoMarkReadMenu, NULL);
add_menu_to_layout(menu, interfaceLayout, layoutRow);
// Mail Accounts
layoutRow = 0;
fAccountMenu = _BuildAccountMenu(fAccount);
menu = new BMenuField("account", ACCOUNT_TEXT, fAccountMenu, NULL);
menu = new BMenuField("account", TR("Default Account:"), fAccountMenu,
NULL);
add_menu_to_layout(menu, mailLayout, layoutRow);
fReplyToMenu = _BuildReplyToMenu(fReplyTo);
menu = new BMenuField("replyTo", REPLYTO_TEXT, fReplyToMenu, NULL);
menu = new BMenuField("replyTo", TR("Reply Account:"), fReplyToMenu, NULL);
add_menu_to_layout(menu, mailLayout, layoutRow);
// Mail Contents
fReplyPreamble = new BTextControl("replytext", REPLY_PREAMBLE_TEXT,
fReplyPreamble = new BTextControl("replytext", TR("Reply Preamble:"),
*preamble, new BMessage(P_REPLY_PREAMBLE));
fReplyPreamble->SetAlignment(B_ALIGN_RIGHT, B_ALIGN_LEFT);
@ -279,24 +253,24 @@ TPrefsWindow::TPrefsWindow(BRect rect, BFont* font, int32* level, bool* wrap,
layoutRow++;
fSignatureMenu = _BuildSignatureMenu(*sig);
menu = new BMenuField("sig", SIGNATURE_TEXT, fSignatureMenu, NULL);
menu = new BMenuField("sig", TR("Auto Signature:"), fSignatureMenu, NULL);
add_menu_to_layout(menu, mailLayout, layoutRow);
fEncodingMenu = _BuildEncodingMenu(fEncoding);
menu = new BMenuField("enc", ENCODING_TEXT, fEncodingMenu, NULL);
menu = new BMenuField("enc", TR("Encoding:"), fEncodingMenu, NULL);
add_menu_to_layout(menu, mailLayout, layoutRow);
fWarnUnencodableMenu = _BuildWarnUnencodableMenu(fWarnUnencodable);
menu = new BMenuField("warnUnencodable", WARN_UNENCODABLE_TEXT,
menu = new BMenuField("warnUnencodable", TR("Warn Unencodable:"),
fWarnUnencodableMenu, NULL);
add_menu_to_layout(menu, mailLayout, layoutRow);
fWrapMenu = _BuildWrapMenu(*wrap);
menu = new BMenuField("wrap", WRAP_TEXT, fWrapMenu, NULL);
menu = new BMenuField("wrap", TR("Text wrapping:"), fWrapMenu, NULL);
add_menu_to_layout(menu, mailLayout, layoutRow);
fAttachAttributesMenu = _BuildAttachAttributesMenu(*attachAttributes);
menu = new BMenuField("attachAttributes", ATTACH_ATTRIBUTES_TEXT,
menu = new BMenuField("attachAttributes", TR("Attach Attributes:"),
fAttachAttributesMenu, NULL);
add_menu_to_layout(menu, mailLayout, layoutRow);
@ -328,21 +302,20 @@ TPrefsWindow::TPrefsWindow(BRect rect, BFont* font, int32* level, bool* wrap,
view->GetFontHeight(&fontHeight);
int32 height = (int32)(fontHeight.ascent + fontHeight.descent
+ fontHeight.leading) + 6;
int32 labelWidth = (int32)view->StringWidth(SPELL_CHECK_START_ON_TEXT)
int32 labelWidth = (int32)view->StringWidth(TR("Initial Spell Check Mode:"))
+ SEPARATOR_MARGIN;
// group boxes
r.Set(8, 4, Bounds().right - 8, 4 + 6 * (height + ITEM_SPACE));
BBox* interfaceBox = new BBox(r , NULL,B_FOLLOW_LEFT_RIGHT | B_FOLLOW_TOP);
interfaceBox->SetLabel(MDR_DIALECT_CHOICE ("User Interface",
"ユーザーインターフェース"));
interfaceBox->SetLabel(TR("User Interface"));
view->AddChild(interfaceBox);
r.top = r.bottom + 8;
r.bottom = r.top + 9 * (height + ITEM_SPACE);
BBox* mailBox = new BBox(r,NULL,B_FOLLOW_LEFT_RIGHT | B_FOLLOW_TOP);
mailBox->SetLabel(MDR_DIALECT_CHOICE ("Mailing", "メール関係"));
mailBox->SetLabel(TR("Mailing"));
view->AddChild(mailBox);
// revert, ok & cancel
@ -351,17 +324,17 @@ TPrefsWindow::TPrefsWindow(BRect rect, BFont* font, int32* level, bool* wrap,
r.bottom = r.top + height;
r.left = OK_BUTTON_X1;
r.right = OK_BUTTON_X2;
BButton* button = new BButton(r, "ok", OK_BUTTON_TEXT, new BMessage(P_OK));
BButton* button = new BButton(r, "ok", TR("OK"), new BMessage(P_OK));
button->MakeDefault(true);
view->AddChild(button);
r.OffsetBy(-(OK_BUTTON_X2 - OK_BUTTON_X1 + 10), 0);
button = new BButton(r, "cancel", CANCEL_BUTTON_TEXT,
button = new BButton(r, "cancel", TR("Cancel"),
new BMessage(P_CANCEL));
view->AddChild(button);
r.left = REVERT_BUTTON_X1; r.right = REVERT_BUTTON_X2;
fRevert = new BButton(r, "revert", REVERT_BUTTON_TEXT,
fRevert = new BButton(r, "revert", TR("Revert"),
new BMessage(P_REVERT));
fRevert->SetEnabled(false);
view->AddChild(fRevert);
@ -374,7 +347,7 @@ TPrefsWindow::TPrefsWindow(BRect rect, BFont* font, int32* level, bool* wrap,
r.top = height;
r.bottom = r.top + height - 3;
fButtonBarMenu = _BuildButtonBarMenu(*buttonBar);
menu = new BMenuField(r, "bar", BUTTONBAR_TEXT, fButtonBarMenu,
menu = new BMenuField(r, "bar", TR("Button Bar:"), fButtonBarMenu,
B_FOLLOW_ALL, B_WILL_DRAW | B_NAVIGABLE | B_NAVIGABLE_JUMP);
menu->SetDivider(labelWidth);
menu->SetAlignment(B_ALIGN_RIGHT);
@ -382,7 +355,7 @@ TPrefsWindow::TPrefsWindow(BRect rect, BFont* font, int32* level, bool* wrap,
r.OffsetBy(0, height + ITEM_SPACE);
fFontMenu = _BuildFontMenu(font);
menu = new BMenuField(r, "font", FONT_TEXT, fFontMenu,
menu = new BMenuField(r, "font", TR("Font:"), fFontMenu,
B_FOLLOW_ALL, B_WILL_DRAW | B_NAVIGABLE | B_NAVIGABLE_JUMP);
menu->SetDivider(labelWidth);
menu->SetAlignment(B_ALIGN_RIGHT);
@ -390,7 +363,7 @@ TPrefsWindow::TPrefsWindow(BRect rect, BFont* font, int32* level, bool* wrap,
r.OffsetBy(0, height + ITEM_SPACE);
fSizeMenu = _BuildSizeMenu(font);
menu = new BMenuField(r, "size", SIZE_TEXT, fSizeMenu,
menu = new BMenuField(r, "size", TR("Size:"), fSizeMenu,
B_FOLLOW_ALL, B_WILL_DRAW | B_NAVIGABLE | B_NAVIGABLE_JUMP);
menu->SetDivider(labelWidth);
menu->SetAlignment(B_ALIGN_RIGHT);
@ -398,16 +371,17 @@ TPrefsWindow::TPrefsWindow(BRect rect, BFont* font, int32* level, bool* wrap,
r.OffsetBy(0, height + ITEM_SPACE);
fColoredQuotesMenu = _BuildColoredQuotesMenu(fColoredQuotes);
menu = new BMenuField(r, "cquotes", QUOTES_TEXT, fColoredQuotesMenu,
B_FOLLOW_ALL, B_WILL_DRAW | B_NAVIGABLE | B_NAVIGABLE_JUMP);
menu = new BMenuField(r, "cquotes", TR("Colored Quotes:"),
fColoredQuotesMenu, B_FOLLOW_ALL,
B_WILL_DRAW | B_NAVIGABLE | B_NAVIGABLE_JUMP);
menu->SetDivider(labelWidth);
menu->SetAlignment(B_ALIGN_RIGHT);
interfaceBox->AddChild(menu);
r.OffsetBy(0, height + ITEM_SPACE);
fSpellCheckStartOnMenu = _BuildSpellCheckStartOnMenu(fSpellCheckStartOn);
menu = new BMenuField(r, "spellCheckStartOn", SPELL_CHECK_START_ON_TEXT,
fSpellCheckStartOnMenu, B_FOLLOW_ALL,
menu = new BMenuField(r, "spellCheckStartOn",
TR("Initial Spell Check Mode:"), fSpellCheckStartOnMenu, B_FOLLOW_ALL,
B_WILL_DRAW | B_NAVIGABLE | B_NAVIGABLE_JUMP);
menu->SetDivider(labelWidth);
menu->SetAlignment(B_ALIGN_RIGHT);
@ -415,8 +389,8 @@ TPrefsWindow::TPrefsWindow(BRect rect, BFont* font, int32* level, bool* wrap,
r.OffsetBy(0, height + ITEM_SPACE);
fAutoMarkReadMenu = _BuildAutoMarkReadMenu(fAutoMarkRead);
menu = new BMenuField("autoMarkRead", AUTO_MARK_READ_TEXT,
fAutoMarkReadMenu, NULL);
menu = new BMenuField("autoMarkRead",
TR("Automatically mark mail as read:"), fAutoMarkReadMenu, NULL);
menu->SetDivider(labelWidth);
menu->SetAlignment(B_ALIGN_RIGHT);
interfaceBox->AddChild(menu);
@ -429,7 +403,7 @@ TPrefsWindow::TPrefsWindow(BRect rect, BFont* font, int32* level, bool* wrap,
r.top = height;
r.bottom = r.top + height - 3;
fAccountMenu = _BuildAccountMenu(fAccount);
menu = new BMenuField(r, "account", ACCOUNT_TEXT, fAccountMenu,
menu = new BMenuField(r, "account", TR("Default Account:"), fAccountMenu,
B_FOLLOW_ALL, B_WILL_DRAW | B_NAVIGABLE | B_NAVIGABLE_JUMP);
menu->SetDivider(labelWidth);
menu->SetAlignment(B_ALIGN_RIGHT);
@ -437,7 +411,7 @@ TPrefsWindow::TPrefsWindow(BRect rect, BFont* font, int32* level, bool* wrap,
r.OffsetBy(0, height + ITEM_SPACE);
fReplyToMenu = _BuildReplyToMenu(fReplyTo);
menu = new BMenuField(r, "replyTo", REPLYTO_TEXT, fReplyToMenu,
menu = new BMenuField(r, "replyTo", TR("Reply Account:"), fReplyToMenu,
B_FOLLOW_ALL, B_WILL_DRAW | B_NAVIGABLE | B_NAVIGABLE_JUMP);
menu->SetDivider(labelWidth);
menu->SetAlignment(B_ALIGN_RIGHT);
@ -447,7 +421,7 @@ TPrefsWindow::TPrefsWindow(BRect rect, BFont* font, int32* level, bool* wrap,
r.OffsetBy(0, height + ITEM_SPACE);
r.right -= 25;
fReplyPreamble = new BTextControl(r, "replytext", REPLY_PREAMBLE_TEXT,
fReplyPreamble = new BTextControl(r, "replytext", TR("Reply Preamble:"),
*preamble, new BMessage(P_REPLY_PREAMBLE), B_FOLLOW_ALL,
B_WILL_DRAW | B_NAVIGABLE);
fReplyPreamble->SetDivider(labelWidth);
@ -467,7 +441,7 @@ TPrefsWindow::TPrefsWindow(BRect rect, BFont* font, int32* level, bool* wrap,
r.OffsetBy(0, height + ITEM_SPACE);
fSignatureMenu = _BuildSignatureMenu(*sig);
menu = new BMenuField(r, "sig", SIGNATURE_TEXT, fSignatureMenu,
menu = new BMenuField(r, "sig", TR("Auto Signature:"), fSignatureMenu,
B_FOLLOW_ALL, B_WILL_DRAW | B_NAVIGABLE | B_NAVIGABLE_JUMP);
menu->SetDivider(labelWidth);
menu->SetAlignment(B_ALIGN_RIGHT);
@ -475,7 +449,7 @@ TPrefsWindow::TPrefsWindow(BRect rect, BFont* font, int32* level, bool* wrap,
r.OffsetBy(0, height + ITEM_SPACE);
fEncodingMenu = _BuildEncodingMenu(fEncoding);
menu = new BMenuField(r, "enc", ENCODING_TEXT, fEncodingMenu,
menu = new BMenuField(r, "enc", TR("Encoding:"), fEncodingMenu,
B_FOLLOW_ALL, B_WILL_DRAW | B_NAVIGABLE | B_NAVIGABLE_JUMP);
menu->SetDivider(labelWidth);
menu->SetAlignment(B_ALIGN_RIGHT);
@ -483,7 +457,7 @@ TPrefsWindow::TPrefsWindow(BRect rect, BFont* font, int32* level, bool* wrap,
r.OffsetBy(0, height + ITEM_SPACE);
fWarnUnencodableMenu = _BuildWarnUnencodableMenu(fWarnUnencodable);
menu = new BMenuField(r, "warnUnencodable", WARN_UNENCODABLE_TEXT,
menu = new BMenuField(r, "warnUnencodable", TR("Warn Unencodable:"),
fWarnUnencodableMenu, B_FOLLOW_ALL,
B_WILL_DRAW | B_NAVIGABLE | B_NAVIGABLE_JUMP);
menu->SetDivider(labelWidth);
@ -492,15 +466,15 @@ TPrefsWindow::TPrefsWindow(BRect rect, BFont* font, int32* level, bool* wrap,
r.OffsetBy(0, height + ITEM_SPACE);
fWrapMenu = _BuildWrapMenu(*wrap);
menu = new BMenuField(r, "wrap", WRAP_TEXT, fWrapMenu, B_FOLLOW_ALL,
B_WILL_DRAW | B_NAVIGABLE | B_NAVIGABLE_JUMP);
menu = new BMenuField(r, "wrap", TR("Text wrapping:"), fWrapMenu,
B_FOLLOW_ALL, B_WILL_DRAW | B_NAVIGABLE | B_NAVIGABLE_JUMP);
menu->SetDivider(labelWidth);
menu->SetAlignment(B_ALIGN_RIGHT);
mailBox->AddChild(menu);
r.OffsetBy(0, height + ITEM_SPACE);
fAttachAttributesMenu = _BuildAttachAttributesMenu(*attachAttributes);
menu = new BMenuField(r, "attachAttributes", ATTACH_ATTRIBUTES_TEXT,
menu = new BMenuField(r, "attachAttributes", TR("Attach Attributes:"),
fAttachAttributesMenu, B_FOLLOW_ALL,
B_WILL_DRAW | B_NAVIGABLE | B_NAVIGABLE_JUMP);
menu->SetDivider(labelWidth);
@ -610,7 +584,7 @@ TPrefsWindow::MessageReceived(BMessage* msg)
}
strcpy(label,fReplyTo == ACCOUNT_USE_DEFAULT
? REPLYTO_USE_DEFAULT_TEXT : REPLYTO_FROM_MAIL_TEXT);
? TR("Use Default Account") : TR("Account From Mail"));
if ((item = fReplyToMenu->FindItem(label)) != NULL)
item->SetMarked(true);
@ -619,7 +593,8 @@ TPrefsWindow::MessageReceived(BMessage* msg)
item->SetMarked(true);
strcpy(label, fAttachAttributes
? ATTRIBUTE_ON_TEXT : ATTRIBUTE_OFF_TEXT);
? TR("Include BeOS Attributes in Attachments")
: TR("No BeOS Attributes, just Plain Data"));
if ((item = fAttachAttributesMenu->FindItem(label)) != NULL)
item->SetMarked(true);
@ -721,8 +696,8 @@ TPrefsWindow::MessageReceived(BMessage* msg)
*fNewSignature = (char*)malloc(strlen(signature) + 1);
strcpy(*fNewSignature, signature);
} else {
*fNewSignature = (char *)malloc(strlen(SIG_NONE) + 1);
strcpy(*fNewSignature, SIG_NONE);
*fNewSignature = (char*)malloc(strlen(TR("None")) + 1);
strcpy(*fNewSignature, TR("None"));
}
break;
case P_ENC:
@ -834,15 +809,13 @@ TPrefsWindow::_BuildLevelMenu(int32 level)
menu = new BPopUpMenu("");
msg = new BMessage(P_LEVEL);
msg->AddInt32("level", L_BEGINNER);
menu->AddItem(item = new BMenuItem(MDR_DIALECT_CHOICE ("Beginner","初心者"),
msg));
menu->AddItem(item = new BMenuItem(TR("Beginner"), msg));
if (level == L_BEGINNER)
item->SetMarked(true);
msg = new BMessage(P_LEVEL);
msg->AddInt32("level", L_EXPERT);
menu->AddItem(item = new BMenuItem(MDR_DIALECT_CHOICE ("Expert","上級者"),
msg));
menu->AddItem(item = new BMenuItem(TR("Expert"), msg));
if (level == L_EXPERT)
item->SetMarked(true);
@ -888,13 +861,13 @@ TPrefsWindow::_BuildReplyToMenu(int32 account)
BMenuItem* item;
BMessage* msg;
menu->AddItem(item = new BMenuItem(REPLYTO_USE_DEFAULT_TEXT,
menu->AddItem(item = new BMenuItem(TR("Use Default Account"),
msg = new BMessage(P_REPLYTO)));
msg->AddInt32("replyTo", ACCOUNT_USE_DEFAULT);
if (account == ACCOUNT_USE_DEFAULT)
item->SetMarked(true);
menu->AddItem(item = new BMenuItem(REPLYTO_FROM_MAIL_TEXT,
menu->AddItem(item = new BMenuItem(TR("Account From Mail"),
msg = new BMessage(P_REPLYTO)));
msg->AddInt32("replyTo", ACCOUNT_FROM_MAIL);
if (account == ACCOUNT_FROM_MAIL)
@ -912,11 +885,11 @@ TPrefsWindow::_BuildReplyPreambleMenu()
"%f - First name",
"%l - Last name",
*/
MDR_DIALECT_CHOICE ("%n - Full name", "%n - フルネーム"),
MDR_DIALECT_CHOICE ("%e - E-mail address", "%e - E-mailアドレス"),
MDR_DIALECT_CHOICE ("%d - Date", "%d - 日付"),
TR("%n - Full name"),
TR("%e - E-mail address"),
TR("%d - Date"),
"",
MDR_DIALECT_CHOICE ("\\n - Newline", "\\n - 空行"),
TR("\\n - Newline"),
NULL
};
@ -950,15 +923,15 @@ TPrefsWindow::_BuildSignatureMenu(char* sig)
BPopUpMenu* menu = new BPopUpMenu("");
msg = new BMessage(P_SIG);
msg->AddString("signature", SIG_NONE);
menu->AddItem(item = new BMenuItem(SIG_NONE, msg));
if (!strcmp(sig, SIG_NONE))
msg->AddString("signature", TR("None"));
menu->AddItem(item = new BMenuItem(TR("None"), msg));
if (!strcmp(sig, TR("None")))
item->SetMarked(true);
msg = new BMessage(P_SIG);
msg->AddString("signature", SIG_RANDOM);
menu->AddItem(item = new BMenuItem(SIG_RANDOM, msg));
if (!strcmp(sig, SIG_RANDOM))
msg->AddString("signature", TR("Random"));
menu->AddItem(item = new BMenuItem(TR("Random"), msg));
if (!strcmp(sig, TR("Random")))
item->SetMarked(true);
menu->AddSeparatorItem();
@ -1048,13 +1021,15 @@ TPrefsWindow::_BuildAttachAttributesMenu(bool attachAttributes)
menu = new BPopUpMenu("");
msg = new BMessage(P_ATTACH_ATTRIBUTES);
msg->AddBool("attachAttributes", true);
menu->AddItem(item = new BMenuItem(ATTRIBUTE_ON_TEXT, msg));
menu->AddItem(item = new BMenuItem(
TR("Include BeOS Attributes in Attachments"), msg));
if (attachAttributes)
item->SetMarked(true);
msg = new BMessage(P_ATTACH_ATTRIBUTES);
msg->AddInt32("attachAttributes", false);
menu->AddItem(item = new BMenuItem(ATTRIBUTE_OFF_TEXT, msg));
menu->AddItem(item = new BMenuItem(
TR("No BeOS Attributes, just Plain Data"), msg));
if (!attachAttributes)
item->SetMarked(true);
@ -1140,19 +1115,19 @@ TPrefsWindow::_BuildButtonBarMenu(uint8 show)
msg = new BMessage(P_BUTTON_BAR);
msg->AddInt8("bar", 1);
menu->AddItem(item = new BMenuItem(ICON_LABEL_TEXT, msg));
menu->AddItem(item = new BMenuItem(TR("Show Icons & Labels"), msg));
if (show & 1)
item->SetMarked(true);
msg = new BMessage(P_BUTTON_BAR);
msg->AddInt8("bar", 2);
menu->AddItem(item = new BMenuItem(ICON_TEXT, msg));
menu->AddItem(item = new BMenuItem(TR("Show Icons Only"), msg));
if (show & 2)
item->SetMarked(true);
msg = new BMessage(P_BUTTON_BAR);
msg->AddInt8("bar", 0);
menu->AddItem(item = new BMenuItem(HIDE_TEXT, msg));
menu->AddItem(item = new BMenuItem(TR("Hide"), msg));
if (!show)
item->SetMarked(true);

View File

@ -50,9 +50,6 @@ class BTextControl;
#define PREF_WIDTH 340
#define PREF_HEIGHT 330
#define SIG_NONE MDR_DIALECT_CHOICE ("None", "無し")
#define SIG_RANDOM MDR_DIALECT_CHOICE ("Random", "自動選択")
struct EncodingItem {
char* name;
uint32 flavor;
@ -146,3 +143,4 @@ private:
};
#endif /* _PREFS_H */

View File

@ -40,6 +40,7 @@ All rights reserved.
#include <Clipboard.h>
#include <InterfaceKit.h>
#include <Locale.h>
#include <StorageKit.h>
#include "MailApp.h"
@ -48,21 +49,18 @@ All rights reserved.
#include "MailWindow.h"
#include "Messages.h"
#include <MDRLanguage.h>
#define TR_CONTEXT "Mail"
extern BRect signature_window;
extern const char *kUndoStrings[];
extern const char *kRedoStrings[];
const char kNameText[] = MDR_DIALECT_CHOICE ("Title:", "署名の名称:");
const char kSigText[] = MDR_DIALECT_CHOICE ("Signature:", "署名:");
//====================================================================
TSignatureWindow::TSignatureWindow(BRect rect)
: BWindow (rect, MDR_DIALECT_CHOICE ("Signatures","署名の編集"), B_TITLED_WINDOW, 0),
:
BWindow (rect, TR("Signatures"), B_TITLED_WINDOW, 0),
fFile(NULL)
{
BMenu *menu;
@ -72,27 +70,30 @@ TSignatureWindow::TSignatureWindow(BRect rect)
BRect r = Bounds();
/*** Set up the menus ****/
menu_bar = new BMenuBar(r, "MenuBar");
menu = new BMenu(MDR_DIALECT_CHOICE ("Signature","S) 署名"));
menu->AddItem(fNew = new BMenuItem(MDR_DIALECT_CHOICE ("New","N) 新規"), new BMessage(M_NEW), 'N'));
fSignature = new TMenu(MDR_DIALECT_CHOICE ("Open","O) 開く"), INDEX_SIGNATURE, M_SIGNATURE);
menu = new BMenu(TR("Signature"));
menu->AddItem(fNew = new BMenuItem(TR("New"), new BMessage(M_NEW), 'N'));
fSignature = new TMenu(TR("Open"), INDEX_SIGNATURE, M_SIGNATURE);
menu->AddItem(new BMenuItem(fSignature));
menu->AddSeparatorItem();
menu->AddItem(fSave = new BMenuItem(MDR_DIALECT_CHOICE ("Save","S) 保存"), new BMessage(M_SAVE), 'S'));
menu->AddItem(fDelete = new BMenuItem(MDR_DIALECT_CHOICE ("Delete","T) 削除"), new BMessage(M_DELETE), 'T'));
menu->AddItem(fSave = new BMenuItem(TR("Save"), new BMessage(M_SAVE), 'S'));
menu->AddItem(fDelete = new BMenuItem(TR("Delete"), new BMessage(M_DELETE),
'T'));
menu_bar->AddItem(menu);
menu = new BMenu(MDR_DIALECT_CHOICE ("Edit","E) 編集"));
menu->AddItem(fUndo = new BMenuItem(MDR_DIALECT_CHOICE ("Undo","Z) やり直し"), new BMessage(B_UNDO), 'Z'));
menu = new BMenu(TR("Edit"));
menu->AddItem(fUndo = new BMenuItem(TR("Undo"), new BMessage(B_UNDO), 'Z'));
fUndo->SetTarget(NULL, this);
menu->AddSeparatorItem();
menu->AddItem(fCut = new BMenuItem(MDR_DIALECT_CHOICE ("Cut","X) 切り取り"), new BMessage(B_CUT), 'X'));
menu->AddItem(fCut = new BMenuItem(TR("Cut"), new BMessage(B_CUT), 'X'));
fCut->SetTarget(NULL, this);
menu->AddItem(fCopy = new BMenuItem(MDR_DIALECT_CHOICE ("Copy","C) コピー"), new BMessage(B_COPY), 'C'));
menu->AddItem(fCopy = new BMenuItem(TR("Copy"), new BMessage(B_COPY), 'C'));
fCopy->SetTarget(NULL, this);
menu->AddItem(fPaste = new BMenuItem(MDR_DIALECT_CHOICE ("Paste","V) 貼り付け"), new BMessage(B_PASTE), 'V'));
menu->AddItem(fPaste = new BMenuItem(TR("Paste"), new BMessage(B_PASTE),
'V'));
fPaste->SetTarget(NULL, this);
menu->AddSeparatorItem();
menu->AddItem(item = new BMenuItem(MDR_DIALECT_CHOICE ("Select All","A) 全文選択"), new BMessage(M_SELECT), 'A'));
menu->AddItem(item = new BMenuItem(TR("Select All"), new BMessage(M_SELECT),
'A'));
item->SetTarget(NULL, this);
menu_bar->AddItem(menu);
@ -187,11 +188,9 @@ TSignatureWindow::MessageReceived(BMessage* msg)
break;
case M_DELETE:
if (!(new BAlert("",MDR_DIALECT_CHOICE (
"Really delete this signature? This cannot be undone.",
"この署名を削除しますか?"),
MDR_DIALECT_CHOICE ("Cancel","取消l"),
MDR_DIALECT_CHOICE ("Delete","削除"), NULL, B_WIDTH_AS_USUAL,
if (!(new BAlert("",
TR("Really delete this signature? This cannot be undone."),
TR("Cancel"), TR("Delete"), NULL, B_WIDTH_AS_USUAL,
B_WARNING_ALERT))->Go())
break;
@ -225,10 +224,8 @@ TSignatureWindow::MessageReceived(BMessage* msg)
else {
fFile = NULL;
beep();
(new BAlert("", MDR_DIALECT_CHOICE (
"Couldn't open this signature. Sorry.",
"署名を開く時にエラーが発生しました。"),
MDR_DIALECT_CHOICE ("OK","了解")))->Go();
(new BAlert("", TR("Couldn't open this signature. Sorry."),
TR("OK")))->Go();
}
}
break;
@ -283,11 +280,8 @@ TSignatureWindow::Clear()
if (IsDirty()) {
beep();
BAlert *alert = new BAlert("",
MDR_DIALECT_CHOICE ("Save changes to this signature?","変更した署名を保存しますか?"),
MDR_DIALECT_CHOICE ("Don't Save","保存しない"),
MDR_DIALECT_CHOICE ("Cancel","中止"),
MDR_DIALECT_CHOICE ("Save","保存する"),
BAlert *alert = new BAlert("", TR("Save changes to this signature?"),
TR("Don't Save"), TR("Cancel"), TR("Save"),
B_WIDTH_AS_USUAL, B_WARNING_ALERT);
alert->SetShortcut(0, 'd');
alert->SetShortcut(1, B_ESCAPE);
@ -380,10 +374,8 @@ TSignatureWindow::Save()
err_exit:
beep();
(new BAlert("", MDR_DIALECT_CHOICE (
"An error occurred trying to save this signature.",
"署名を保存しようとした時にエラーが発生しました。"),
MDR_DIALECT_CHOICE ("Sorry","了解")))->Go();
(new BAlert("", TR("An error occurred trying to save this signature."),
TR("Sorry")))->Go();
}
@ -401,8 +393,8 @@ void
TSignatureView::AttachedToWindow()
{
BRect rect = Bounds();
float name_text_length = StringWidth(kNameText);
float sig_text_length = StringWidth(kSigText);
float name_text_length = StringWidth(TR("Title:"));
float sig_text_length = StringWidth(TR("Signature:"));
float divide_length;
if (name_text_length > sig_text_length)
@ -413,7 +405,7 @@ TSignatureView::AttachedToWindow()
rect.InsetBy(8,0);
rect.top+= 8;
fName = new TNameControl(rect, kNameText, new BMessage(NAME_FIELD));
fName = new TNameControl(rect, TR("Title:"), new BMessage(NAME_FIELD));
AddChild(fName);
fName->SetDivider(divide_length + 10);
@ -434,7 +426,8 @@ TSignatureView::AttachedToWindow()
/* back up a bit to make room for the label */
rect = scroller->Frame();
BStringView *stringView = new BStringView(rect, "SigLabel", kSigText);
BStringView *stringView = new BStringView(rect, "SigLabel",
TR("Signature:"));
AddChild(stringView);
float tWidth, tHeight;

View File

@ -56,13 +56,13 @@ All rights reserved.
#include <TextControl.h>
#include <Window.h>
#include <MDRLanguage.h>
const float kSigHeight = 200;
const float kSigWidth = 457;
#define INDEX_SIGNATURE "_signature"
class TMenu;
class TNameControl;
class TScrollView;
@ -143,3 +143,4 @@ private:
};
#endif // #ifndef _SIGNATURE_H

View File

@ -50,8 +50,6 @@ All rights reserved.
#include <MailMessage.h>
#include <MDRLanguage.h>
#include "Utilities.h"