Applied patchs from Karvjorm (tickets #7149, #7148, #7147) with fixes by myself: Localizations for WebP, Wonderbrush and TIFF translators.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40284 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Jérôme Duval 2011-01-24 22:50:46 +00:00
parent c44966dff2
commit 6537cf9750
13 changed files with 166 additions and 68 deletions

View File

@ -19,6 +19,14 @@ Translator TIFFTranslator :
: true
;
DoCatalogs TIFFTranslator :
x-vnd.Haiku-TIFFTranslator
:
TIFFMain.cpp
TIFFTranslator.cpp
TIFFView.cpp
;
Package haiku-translationkit-cvs :
TIFFTranslator :
boot home config add-ons Translators ;

View File

@ -33,9 +33,13 @@
/*****************************************************************************/
#include <Application.h>
#include <Catalog.h>
#include "TIFFTranslator.h"
#include "TranslatorWindow.h"
#undef B_TRANSLATE_CONTEXT
#define B_TRANSLATE_CONTEXT "TIFFMain"
// ---------------------------------------------------------------
// main
//
@ -54,7 +58,8 @@ main()
{
BApplication app("application/x-vnd.Haiku-TIFFTranslator");
status_t result;
result = LaunchTranslatorWindow(new TIFFTranslator, "TIFF Settings");
result = LaunchTranslatorWindow(new TIFFTranslator,
B_TRANSLATE("TIFF Settings"));
if (result == B_OK) {
app.Run();
return 0;

View File

@ -13,10 +13,15 @@
#include "tiffio.h"
#include <Catalog.h>
#include <stdio.h>
#include <string.h>
#undef B_TRANSLATE_CONTEXT
#define B_TRANSLATE_CONTEXT "TIFFTranslator"
/*!
How this works:
@ -202,7 +207,8 @@ identify_tiff_header(BPositionIO *inSource, BMessage *ioExtension,
if (documentIndex < 1 || documentIndex > documentCount) {
// document index is invalid
fprintf(stderr, "identify_tiff_header: invalid document index\n");
fprintf(stderr, B_TRANSLATE("identify_tiff_header: invalid "
"document index\n"));
return B_NO_TRANSLATOR;
}
}
@ -210,7 +216,8 @@ identify_tiff_header(BPositionIO *inSource, BMessage *ioExtension,
// identify the document the user specified or the first document
// if the user did not specify which document they wanted to identify
if (!TIFFSetDirectory(tif, documentIndex - 1)) {
fprintf(stderr, "identify_tiff_header: couldn't set directory\n");
fprintf(stderr, B_TRANSLATE("identify_tiff_header: couldn't set "
"directory\n"));
return B_NO_TRANSLATOR;
}
@ -226,7 +233,8 @@ identify_tiff_header(BPositionIO *inSource, BMessage *ioExtension,
outInfo->quality = TIFF_IN_QUALITY;
outInfo->capability = TIFF_IN_CAPABILITY;
strcpy(outInfo->MIME, "image/tiff");
sprintf(outInfo->name, "TIFF image");
snprintf(outInfo->name, sizeof(outInfo->name),
B_TRANSLATE("TIFF image"));
}
if (!poutTIFF) {
@ -258,8 +266,8 @@ identify_tiff_header(BPositionIO *inSource, BMessage *ioExtension,
// convert_buffer_bgra_rgba
inline void
convert_buffer_bgra_rgba(uint8* buffer,
uint32 rows, uint32 width, uint32 bytesPerRow)
convert_buffer_bgra_rgba(uint8* buffer, uint32 rows, uint32 width,
uint32 bytesPerRow)
{
for (uint32 y = 0; y < rows; y++) {
uint8* handle = buffer;
@ -275,8 +283,8 @@ convert_buffer_bgra_rgba(uint8* buffer,
// convert_buffer_argb_rgba
inline void
convert_buffer_argb_rgba(uint8* buffer,
uint32 rows, uint32 width, uint32 bytesPerRow)
convert_buffer_argb_rgba(uint8* buffer, uint32 rows, uint32 width,
uint32 bytesPerRow)
{
for (uint32 y = 0; y < rows; y++) {
uint8* handle = buffer;
@ -294,8 +302,8 @@ convert_buffer_argb_rgba(uint8* buffer,
// convert_buffers_bgra_rgba
inline void
convert_buffers_bgra_rgba(uint8* inBuffer, uint8* outBuffer,
uint32 rows, uint32 width, uint32 bytesPerRow)
convert_buffers_bgra_rgba(uint8* inBuffer, uint8* outBuffer, uint32 rows,
uint32 width, uint32 bytesPerRow)
{
for (uint32 y = 0; y < rows; y++) {
uint8* inHandle = inBuffer;
@ -315,8 +323,8 @@ convert_buffers_bgra_rgba(uint8* inBuffer, uint8* outBuffer,
// convert_buffers_argb_rgba
inline void
convert_buffers_argb_rgba(uint8* inBuffer, uint8* outBuffer,
uint32 rows, uint32 width, uint32 bytesPerRow)
convert_buffers_argb_rgba(uint8* inBuffer, uint8* outBuffer, uint32 rows,
uint32 width, uint32 bytesPerRow)
{
for (uint32 y = 0; y < rows; y++) {
uint8* inHandle = inBuffer;
@ -336,8 +344,8 @@ convert_buffers_argb_rgba(uint8* inBuffer, uint8* outBuffer,
// convert_buffers_bgrX_rgb
inline void
convert_buffers_bgrX_rgb(uint8* inBuffer, uint8* outBuffer,
uint32 rows, uint32 width, uint32 bytesPerRow, uint32 samplesPerPixel)
convert_buffers_bgrX_rgb(uint8* inBuffer, uint8* outBuffer, uint32 rows,
uint32 width, uint32 bytesPerRow, uint32 samplesPerPixel)
{
for (uint32 y = 0; y < rows; y++) {
uint8* inHandle = inBuffer;
@ -359,8 +367,8 @@ convert_buffers_bgrX_rgb(uint8* inBuffer, uint8* outBuffer,
// convert_buffers_rgbX_rgb
inline void
convert_buffers_rgbX_rgb(uint8* inBuffer, uint8* outBuffer,
uint32 rows, uint32 width, uint32 bytesPerRow, uint32 samplesPerPixel)
convert_buffers_rgbX_rgb(uint8* inBuffer, uint8* outBuffer, uint32 rows,
uint32 width, uint32 bytesPerRow, uint32 samplesPerPixel)
{
for (uint32 y = 0; y < rows; y++) {
uint8* inHandle = inBuffer;
@ -380,8 +388,8 @@ convert_buffers_rgbX_rgb(uint8* inBuffer, uint8* outBuffer,
// convert_buffers_cmap
inline void
convert_buffers_cmap(uint8* inBuffer, uint8* outBuffer,
uint32 rows, uint32 width, uint32 bytesPerRow)
convert_buffers_cmap(uint8* inBuffer, uint8* outBuffer, uint32 rows,
uint32 width, uint32 bytesPerRow)
{
// compensate for bytesPerRow != width (padding bytes)
// this function will not be called if bytesPerRow == width, btw
@ -394,8 +402,8 @@ convert_buffers_cmap(uint8* inBuffer, uint8* outBuffer,
// convert_buffer
inline void
convert_buffer(color_space format,
uint8* buffer, uint32 rows, uint32 width, uint32 bytesPerRow)
convert_buffer(color_space format, uint8* buffer, uint32 rows, uint32 width,
uint32 bytesPerRow)
{
switch (format) {
case B_RGBA32:
@ -425,9 +433,8 @@ convert_buffer(color_space format,
// convert_buffers
inline void
convert_buffers(color_space format,
uint8* inBuffer, uint8* outBuffer,
uint32 rows, uint32 width, uint32 bytesPerRow)
convert_buffers(color_space format, uint8* inBuffer, uint8* outBuffer,
uint32 rows, uint32 width, uint32 bytesPerRow)
{
switch (format) {
case B_RGBA32:
@ -596,7 +603,8 @@ write_tif_stream(TIFF* tif, BPositionIO* inSource, color_space format,
TIFFTranslator::TIFFTranslator()
: BaseTranslator("TIFF images", "TIFF image translator",
: BaseTranslator(B_TRANSLATE("TIFF images"),
B_TRANSLATE("TIFF image translator"),
TIFF_TRANSLATOR_VERSION,
sInputFormats, kNumInputFormats,
sOutputFormats, kNumOutputFormats,
@ -950,5 +958,6 @@ TIFFTranslator::DerivedTranslate(BPositionIO *inSource,
BView *
TIFFTranslator::NewConfigView(TranslatorSettings *settings)
{
return new TIFFView("TIFFTranslator Settings", B_WILL_DRAW, settings);
return new TIFFView(B_TRANSLATE("TIFFTranslator Settings"),
B_WILL_DRAW, settings);
}

View File

@ -33,6 +33,7 @@
#include <stdio.h>
#include <string.h>
#include <Catalog.h>
#include <GridLayoutBuilder.h>
#include <GroupLayout.h>
#include <GroupLayoutBuilder.h>
@ -49,6 +50,9 @@
#include "TIFFView.h"
#undef B_TRANSLATE_CONTEXT
#define B_TRANSLATE_CONTEXT "TIFFView"
// add_menu_item
void
add_menu_item(BMenu* menu,
@ -77,7 +81,8 @@ add_menu_item(BMenu* menu,
//
// Returns:
// ---------------------------------------------------------------
TIFFView::TIFFView(const char *name, uint32 flags, TranslatorSettings *settings)
TIFFView::TIFFView(const char *name, uint32 flags,
TranslatorSettings *settings)
: BView(name, flags)
{
fSettings = settings;
@ -85,19 +90,19 @@ TIFFView::TIFFView(const char *name, uint32 flags, TranslatorSettings *settings)
SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
SetLowColor(ViewColor());
fTitle = new BStringView("title", "TIFF Image Translator");
fTitle = new BStringView("title", B_TRANSLATE("TIFF Image Translator"));
fTitle->SetFont(be_bold_font);
char detail[100];
sprintf(detail, "Version %d.%d.%d %s",
sprintf(detail, B_TRANSLATE("Version %d.%d.%d %s"),
static_cast<int>(B_TRANSLATION_MAJOR_VERSION(TIFF_TRANSLATOR_VERSION)),
static_cast<int>(B_TRANSLATION_MINOR_VERSION(TIFF_TRANSLATOR_VERSION)),
static_cast<int>(B_TRANSLATION_REVISION_VERSION(TIFF_TRANSLATOR_VERSION)),
__DATE__);
static_cast<int>(B_TRANSLATION_REVISION_VERSION(
TIFF_TRANSLATOR_VERSION)), __DATE__);
fDetail = new BStringView("detail", detail);
int16 i = 1;
fLibTIFF[0] = new BStringView(NULL, "TIFF Library:");
fLibTIFF[0] = new BStringView(NULL, B_TRANSLATE("TIFF Library:"));
char libtiff[] = TIFFLIB_VERSION_STR;
char *tok = strtok(libtiff, "\n");
while (i < 5 && tok) {
@ -110,11 +115,15 @@ TIFFView::TIFFView(const char *name, uint32 flags, TranslatorSettings *settings)
uint32 currentCompression = fSettings->SetGetInt32(TIFF_SETTING_COMPRESSION);
// create the menu items with the various compression methods
add_menu_item(menu, COMPRESSION_NONE, "None", currentCompression);
add_menu_item(menu, COMPRESSION_NONE, B_TRANSLATE("None"),
currentCompression);
menu->AddSeparatorItem();
add_menu_item(menu, COMPRESSION_PACKBITS, "RLE (Packbits)", currentCompression);
add_menu_item(menu, COMPRESSION_DEFLATE, "ZIP (Deflate)", currentCompression);
add_menu_item(menu, COMPRESSION_LZW, "LZW", currentCompression);
add_menu_item(menu, COMPRESSION_PACKBITS, B_TRANSLATE("RLE (Packbits)"),
currentCompression);
add_menu_item(menu, COMPRESSION_DEFLATE, B_TRANSLATE("ZIP (Deflate)"),
currentCompression);
add_menu_item(menu, COMPRESSION_LZW, B_TRANSLATE("LZW"),
currentCompression);
// TODO: the disabled compression modes are not configured in libTIFF
// menu->AddSeparatorItem();
@ -122,7 +131,8 @@ TIFFView::TIFFView(const char *name, uint32 flags, TranslatorSettings *settings)
// TODO ? - strip encoding is not implemented in libTIFF for this compression
// add_menu_item(menu, COMPRESSION_JP2000, "JPEG2000", currentCompression);
fCompressionMF = new BMenuField("Use Compression:", menu, NULL);
fCompressionMF = new BMenuField(B_TRANSLATE("Use Compression:"), menu,
NULL);
// Build the layout
SetLayout(new BGroupLayout(B_VERTICAL));

View File

@ -10,6 +10,7 @@
#include "ConfigView.h"
#include "WebPTranslator.h"
#include <Catalog.h>
#include <CheckBox.h>
#include <GroupLayout.h>
#include <GroupLayoutBuilder.h>
@ -18,28 +19,31 @@
#include <stdio.h>
#include <string.h>
#undef B_TRANSLATE_CONTEXT
#define B_TRANSLATE_CONTEXT "ConfigView"
ConfigView::ConfigView(uint32 flags)
: BView("WebPTranslator Settings", flags)
: BView(B_TRANSLATE("WebPTranslator Settings"), flags)
{
SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
BStringView* title = new BStringView("title", "WebP Images");
BStringView* title = new BStringView("title", B_TRANSLATE("WebP Images"));
title->SetFont(be_bold_font);
char versionString[256];
sprintf(versionString, "Version %d.%d.%d, %s",
int(B_TRANSLATION_MAJOR_VERSION(WEBP_TRANSLATOR_VERSION)),
int(B_TRANSLATION_MINOR_VERSION(WEBP_TRANSLATOR_VERSION)),
int(B_TRANSLATION_REVISION_VERSION(WEBP_TRANSLATOR_VERSION)),
__DATE__);
sprintf(versionString, B_TRANSLATE("Version %d.%d.%d, %s"),
static_cast<int>(B_TRANSLATION_MAJOR_VERSION(WEBP_TRANSLATOR_VERSION)),
static_cast<int>(B_TRANSLATION_MINOR_VERSION(WEBP_TRANSLATOR_VERSION)),
static_cast<int>(B_TRANSLATION_REVISION_VERSION(
WEBP_TRANSLATOR_VERSION)), __DATE__);
BStringView* version = new BStringView("version", versionString);
BStringView* copyright = new BStringView("copyright",
B_UTF8_COPYRIGHT "2010 Haiku Inc.");
BStringView* copyright2 = new BStringView("copyright2",
"Based on libwebp v0.1");
B_TRANSLATE("Based on libwebp v0.1"));
BStringView* copyright3 = new BStringView("copyright3",
B_UTF8_COPYRIGHT "2010 Google Inc.");
@ -61,7 +65,8 @@ ConfigView::ConfigView(uint32 flags)
BFont font;
GetFont(&font);
SetExplicitPreferredSize(BSize((font.Size() * 233)/12, (font.Size() * 200)/12));
SetExplicitPreferredSize(BSize(font.Size() * 233 / 12,
font.Size() * 200 / 12));
}

View File

@ -27,3 +27,11 @@ Translator WebPTranslator :
: true
;
DoCatalogs WebPTranslator :
x-vnd.Haiku-WebPTranslator
:
main.cpp
ConfigView.cpp
WebPTranslator.cpp
;

View File

@ -13,6 +13,7 @@
#include "decode.h"
#include <BufferIO.h>
#include <Catalog.h>
#include <Messenger.h>
#include <TranslatorRoster.h>
@ -21,6 +22,10 @@
#include <string.h>
#undef B_TRANSLATE_CONTEXT
#define B_TRANSLATE_CONTEXT "WebPTranslator"
class FreeAllocation {
public:
FreeAllocation(void* buffer)
@ -70,16 +75,20 @@ static const TranSetting sDefaultSettings[] = {
{B_TRANSLATOR_EXT_DATA_ONLY, TRAN_SETTING_BOOL, false}
};
const uint32 kNumInputFormats = sizeof(sInputFormats) / sizeof(translation_format);
const uint32 kNumOutputFormats = sizeof(sOutputFormats) / sizeof(translation_format);
const uint32 kNumDefaultSettings = sizeof(sDefaultSettings) / sizeof(TranSetting);
const uint32 kNumInputFormats = sizeof(sInputFormats) /
sizeof(translation_format);
const uint32 kNumOutputFormats = sizeof(sOutputFormats) /
sizeof(translation_format);
const uint32 kNumDefaultSettings = sizeof(sDefaultSettings) /
sizeof(TranSetting);
// #pragma mark -
WebPTranslator::WebPTranslator()
: BaseTranslator("WebP images", "WebP image translator",
: BaseTranslator(B_TRANSLATE("WebP images"),
B_TRANSLATE("WebP image translator"),
WEBP_TRANSLATOR_VERSION,
sInputFormats, kNumInputFormats,
sOutputFormats, kNumOutputFormats,
@ -120,7 +129,7 @@ WebPTranslator::DerivedIdentify(BPositionIO* stream,
info->group = B_TRANSLATOR_BITMAP;
info->quality = WEBP_IN_QUALITY;
info->capability = WEBP_IN_CAPABILITY;
snprintf(info->name, sizeof(info->name), "WebP image");
snprintf(info->name, sizeof(info->name), B_TRANSLATE("WebP image"));
strcpy(info->MIME, "image/webp");
return B_OK;
@ -139,7 +148,7 @@ WebPTranslator::DerivedTranslate(BPositionIO* stream,
off_t streamLength = 0;
stream->GetSize(&streamLength);
printf("stream GetSize(): %lld\n", streamLength);
printf(B_TRANSLATE("stream GetSize(): %lld\n"), streamLength);
off_t streamSize = stream->Seek(0, SEEK_END);
stream->Seek(0, SEEK_SET);
@ -154,7 +163,8 @@ WebPTranslator::DerivedTranslate(BPositionIO* stream,
}
int width, height;
uint8* out = WebPDecodeRGB((const uint8*)streamData, streamSize, &width, &height);
uint8* out = WebPDecodeRGB((const uint8*)streamData, streamSize, &width,
&height);
free(streamData);
if (out == NULL)
@ -174,7 +184,8 @@ WebPTranslator::DerivedTranslate(BPositionIO* stream,
// write out Be's Bitmap header
swap_data(B_UINT32_TYPE, &bitmapHeader, sizeof(TranslatorBitmap),
B_SWAP_HOST_TO_BENDIAN);
ssize_t bytesWritten = target->Write(&bitmapHeader, sizeof(TranslatorBitmap));
ssize_t bytesWritten = target->Write(&bitmapHeader,
sizeof(TranslatorBitmap));
if (bytesWritten < B_OK)
return bytesWritten;

View File

@ -8,16 +8,22 @@
#include <Application.h>
#include <Catalog.h>
#include "WebPTranslator.h"
#include "TranslatorWindow.h"
#include "WebPTranslator.h"
#undef B_TRANSLATE_CONTEXT
#define B_TRANSLATE_CONTEXT "main"
int
main()
{
BApplication app("application/x-vnd.Haiku-WebPTranslator");
if (LaunchTranslatorWindow(new WebPTranslator,
"WebP Settings") != B_OK)
B_TRANSLATE("WebP Settings")) != B_OK)
return 1;
app.Run();

View File

@ -26,6 +26,15 @@ Translator WonderBrushTranslator :
: true
;
DoCatalogs WonderBrushTranslator :
x-vnd.Haiku-WonderBrushTranslator
:
Layer.cpp
WonderBrushMain.cpp
WonderBrushTranslator.cpp
WonderBrushView.cpp
;
Package haiku-translationkit-cvs :
WonderBrushTranslator :
boot home config add-ons Translators ;

View File

@ -12,6 +12,7 @@
#include <stdio.h>
#include <Bitmap.h>
#include <Catalog.h>
#include <Message.h>
#include "bitmap_compression.h"
@ -20,6 +21,10 @@
#include "support.h"
#undef B_TRANSLATE_CONTEXT
#define B_TRANSLATE_CONTEXT "Layer"
// constructor
Layer::Layer()
: fBitmap(NULL),

View File

@ -7,17 +7,23 @@
*/
#include <Application.h>
#include <Catalog.h>
#include "WonderBrushTranslator.h"
#include "TranslatorWindow.h"
#undef B_TRANSLATE_CONTEXT
#define B_TRANSLATE_CONTEXT "WonderBrushMain"
int
main()
{
BApplication app("application/x-vnd.Haiku-WonderBrushTranslator");
status_t result;
result = LaunchTranslatorWindow(new WonderBrushTranslator,
"WBI Settings", BRect(0, 0, 225, 175));
B_TRANSLATE("WBI Settings"), BRect(0, 0, 225, 175));
if (result == B_OK) {
app.Run();
return 0;

View File

@ -13,6 +13,7 @@
#include <string.h>
#include <Bitmap.h>
#include <Catalog.h>
#include <OS.h>
#include "blending.h"
@ -20,6 +21,11 @@
#include "WonderBrushImage.h"
#include "WonderBrushView.h"
#undef B_TRANSLATE_CONTEXT
#define B_TRANSLATE_CONTEXT "WonderBrushTranslator"
using std::nothrow;
// The input formats that this translator supports.
@ -69,9 +75,12 @@ static const TranSetting sDefaultSettings[] = {
{ B_TRANSLATOR_EXT_DATA_ONLY, TRAN_SETTING_BOOL, false }
};
const uint32 kNumInputFormats = sizeof(sInputFormats) / sizeof(translation_format);
const uint32 kNumOutputFormats = sizeof(sOutputFormats) / sizeof(translation_format);
const uint32 kNumDefaultSettings = sizeof(sDefaultSettings) / sizeof(TranSetting);
const uint32 kNumInputFormats = sizeof(sInputFormats) /
sizeof(translation_format);
const uint32 kNumOutputFormats = sizeof(sOutputFormats) /
sizeof(translation_format);
const uint32 kNumDefaultSettings = sizeof(sDefaultSettings) /
sizeof(TranSetting);
BTranslator*
@ -85,7 +94,8 @@ make_nth_translator(int32 n, image_id you, uint32 flags, ...)
WonderBrushTranslator::WonderBrushTranslator()
: BaseTranslator("WonderBrush images", "WonderBrush image translator",
: BaseTranslator(B_TRANSLATE("WonderBrush images"),
B_TRANSLATE("WonderBrush image translator"),
WBI_TRANSLATOR_VERSION,
sInputFormats, kNumInputFormats,
sOutputFormats, kNumOutputFormats,
@ -124,7 +134,7 @@ identify_wbi_header(BPositionIO* inSource, translator_info* outInfo,
outInfo->quality = WBI_IN_QUALITY;
outInfo->capability = WBI_IN_CAPABILITY;
strcpy(outInfo->MIME, "image/x-wonderbrush");
strcpy(outInfo->name, "WonderBrush image");
strcpy(outInfo->name, B_TRANSLATE("WonderBrush image"));
}
} else {
delete wbImage;
@ -170,8 +180,8 @@ WonderBrushTranslator::DerivedTranslate(BPositionIO* inSource,
BView*
WonderBrushTranslator::NewConfigView(TranslatorSettings* settings)
{
return new WonderBrushView(BRect(0, 0, 225, 175), "WBI Settings",
B_FOLLOW_ALL, B_WILL_DRAW, settings);
return new WonderBrushView(BRect(0, 0, 225, 175),
B_TRANSLATE("WBI Settings"), B_FOLLOW_ALL, B_WILL_DRAW, settings);
}

View File

@ -11,6 +11,7 @@
#include <stdio.h>
#include <string.h>
#include <Catalog.h>
#include <MenuBar.h>
#include <MenuField.h>
#include <MenuItem.h>
@ -20,6 +21,11 @@
#include "WonderBrushImage.h"
#include "WonderBrushTranslator.h"
#undef B_TRANSLATE_CONTEXT
#define B_TRANSLATE_CONTEXT "WonderBrushView"
const char* kAuthor = "Stephan Aßmus, <superstippi@gmx.de>";
const char* kWBICopyright = "Copyright "B_UTF8_COPYRIGHT" 2006 Haiku Inc.";
@ -129,7 +135,7 @@ WonderBrushView::Draw(BRect area)
BPoint offset(xbold, ybold);
const char* text = "WonderBrush image translator";
const char* text = B_TRANSLATE("WonderBrush image translator");
DrawString(text, offset);
SetFont(be_plain_font);
@ -140,16 +146,16 @@ WonderBrushView::Draw(BRect area)
offset.y += yplain;
char detail[100];
sprintf(detail, "Version %d.%d.%d %s",
sprintf(detail, B_TRANSLATE("Version %d.%d.%d %s"),
static_cast<int>(B_TRANSLATION_MAJOR_VERSION(WBI_TRANSLATOR_VERSION)),
static_cast<int>(B_TRANSLATION_MINOR_VERSION(WBI_TRANSLATOR_VERSION)),
static_cast<int>(B_TRANSLATION_REVISION_VERSION(WBI_TRANSLATOR_VERSION)),
__DATE__);
static_cast<int>(B_TRANSLATION_REVISION_VERSION(
WBI_TRANSLATOR_VERSION)), __DATE__);
DrawString(detail, offset);
offset.y += 2 * ybold;
text = "written by:";
text = B_TRANSLATE("written by:");
DrawString(text, offset);
offset.y += ybold;