diff --git a/support/documents/document/font.html b/support/documents/document/font.html index 7ce0942..17e6474 100644 --- a/support/documents/document/font.html +++ b/support/documents/document/font.html @@ -1,103 +1,103 @@ フォントの設定 - +
KDE Project

フォントの設定


「KDE の起動が遅い! アプリケーションの動作が重い!」
よくこのような苦情が寄せられます。

フォントの設定を適切に行わないと上記のような症状が発生します。
ホームディレクトリに .qti18nrc というファイルを作って 以下の内容を記述してみてください。

cf. 起動にどれくらい時間がかかるかの目安


Vine Linux

ビットマップ(きれいですが、少し遅いです)

 *       -alias-fixed-*-*-*--*-*-*-*-c-*-jisx0201.1976-0, \
         -alias-fixed-*-*-*--*-*-*-*-c-*-jisx0208.1983-0
 

TrueType(フリー版)

 fixed     -alias-fixed-*-*-*--*-*-*-*-c-*-jisx0201.1976-0, \
 	  -alias-fixed-*-*-*--*-*-*-*-c-*-jisx0208.1983-0
 helvetica -alias-fixed-*-*-*--*-*-*-*-c-*-jisx0201.1976-0, \
 	  -aliastt-gothic-*-*-*--*-*-*-*-c-*-jisx0208.1983-0
 *	  -alias-fixed-*-*-*--*-*-*-*-c-*-jisx0201.1976-0, \
 	  -aliastt-mincho-*-*-*--*-*-*-*-c-*-jisx0208.1983-0
 

TrueType(CR版)

 fixed     -alias-fixed-*-*-*--*-*-*-*-c-*-jisx0201.1976-0, \
 	  -alias-fixed-*-*-*--*-*-*-*-c-*-jisx0208.1983-0
 helvetica -dynalab-dfgothicp-*-*-*--*-*-*-*-c-*-jisx0201.1976-0, \
 	  -dynalab-dfgothicp-*-*-*--*-*-*-*-c-*-jisx0208.1983-0
 *	  -dynalab-dfminchop-*-*-*--*-*-*-*-c-*-jisx0201.1976-0, \
 	  -dynalab-dfminchop-*-*-*--*-*-*-*-c-*-jisx0208.1983-0
 

日本語 redhat Linux 5.2

調査中

Turbo Linux 4.0(フリー版)

調査中

Turbo Linux 3.0

調査中

FreeBSD

パッケージから以下をインストールしてください。
  1. お使いのグラフィックボードに対応した X-TT サーバ
  2. ja-truetypefonts
    (あくまでフリーのフォントのため、小さい文字では表示が少々潰れます)
 fixed     -misc-fixed-*-*-*--*-*-*-*-c-*-jisx0201.1976-0, \
 	  -misc-fixed-*-*-*--*-*-*-*-c-*-jisx0208.1983-0
 helvetica -misc-fixed-*-*-*--*-*-*-*-c-*-jisx0201.1976-0, \
 	  -wadalab-gothic-*-*-*--*-*-*-*-c-*-jisx0208.1983-0
 *	  -misc-fixed-*-*-*--*-*-*-*-c-*-jisx0201.1976-0, \
 	  -watanabe-mincho-*-*-*--*-*-*-*-c-*-jisx0208.1983-0
 

(注) 日本語 KDE があらかじめ設定済みのディストリビューションは省略しています。


日本KDEユーザ会トップページへ


このサイトは日本KDEユーザ会が著作権を有します。本著作権を表示する限りにおいて転載を許可します。
Copyright (C) 1999 Japan KDE Users' Group. All Rights Reserved.
このサイトに関するご意見・お問い合わせはwebmaster@kde.gr.jpまで。
最終更新日:1999年7月15日
メーリングリスト ダウンロード ニュース KDEとは diff --git a/support/documents/document/kde-tutorial-en.html b/support/documents/document/kde-tutorial-en.html index c6ccccf..4017c01 100644 --- a/support/documents/document/kde-tutorial-en.html +++ b/support/documents/document/kde-tutorial-en.html @@ -1,715 +1,715 @@ - + GUI Building with KDE

GUI Building with KDE

Richard J. Moore


Introduction

Creating GUIs with the KDE Desktop Environment is very easy thanks to the large number of preexisting GUI components that are available for you to use, and to the framework Qt provides for developers. Unfortunately while there is a large body of public domain source code (for example the entire KDE), and detailed class documentation to learn from, there has not been a tutorial that explains how to put things together to create a GUI. The aim of this document is to provide such a tutorial. To make this discussion concrete I will develop a very simple KDE application adding such details as `Drag and Drop', URL support and online help. This document does not try to explain C++ or basic compilation issues, it is only concerned with how to put a GUI together.

To begin with we'll just create a very simple GUI consisting only of a menubar containing a single menu. The only item in the menu will be the `Exit' command. From this rather humble beginning we'll extend our application into a simple but functional text editor. This may seem like a rather formidable task for a tutorial, but as you will see by reusing the existing components provided by Qt and KDE it is made very simple in practice.  I'll give the code first then go through it in detail afterwards. All of the example code is available free for download from the KDE development website at http://developer.kde.org/examples.tar.gz.
 

A Minimal Application

We'll now examine in detail a minimal KDE Application. The application only provides a single function `Exit', but already supports floating menubars, session management and internationalisation.
 
 #ifndef EDIT_H
 #define EDIT_H
 
 #include <ktopwidget.h>
 
 class Edit : public KTopLevelWidget
 {
   Q_OBJECT
 
 public:
   Edit();
 
   ~Edit();
 
 public slots:
  void commandCallback(int id_);
 
 private:
   // Child widgets
   KMenuBar *menu;
 };
 #endif // EDIT_H
 
Edit class declaration 
 
  The first thing to look at is the class declaration, as you can see our application is implemented as the class Edit. Edit is a subclass of KTopLevelWidget (KTLW) which is the baseclass of all KDE applications. KTLW manages an applications menu bar, status bar and toolbars, and provides support for session management. The next thing in the class declaration is the `Q_OBJECT' macro, this is needed in order to support the important Qt features of `signals' and `slots'. The only slot in the Edit class is the commandCallback() method, it has been declared as a slot with `public' access by the line that reads `public slots:'. A slot is essentially a sort of typesafe callback method, it will be called by objects that the Edit class has expressed an interest in using the connect() method. The rest of the class declaration is like any other C++ class.
 
 #include <kapp.h>
 #include <kmenubar.h>
 #include "edit.h"
 
 const int ID_EXIT= 111;
 
 Edit::Edit()
 {
   QPopupMenu *file = new QPopupMenu;
 
   file->insertItem(klocale->translate("Exit"), ID_EXIT);
 
   menu = new KMenuBar( this );
   CHECK_PTR( menu );
   menu->insertItem( klocale->translate("File"), file );
   menu->show();
   setMenu(menu);
 
   // Connect things together
   connect (file, SIGNAL (activated (int)), SLOT (commandCallback (int)));
 }
 
 Edit::~Edit()
 {
 
 }
 
 void Edit::commandCallback(int id_)
 {
   switch(id_) {
   case ID_EXIT:
     exit(0);
     break;
   }
 }
 
 #include "edit.moc"
 
Edit class implementation

Now we'll study the implementation of our Edit class, looking first at the constructor. The constructor creates a QPopupMenu object, this is the File menu. We add the `Exit' item using the insertItem() method. The first parameter is the string to be displayed in the menu, the second is an integer id (you can find out about all the methods of a class by looking at it's class documentation). In order to prepare the applet for translation we call klocale->translate() rather than just setting the label to the literal string 'Exit', this should be done for any string the user will see. We don't have to create our own KLocale object as KApplication (the base class of all KDE application objects) creates one for us. We access the KLocate object using the klocale macro provided by kapp.h.

The next thing we need to do is create a menubar to contain our menu, we do this using a KMenuBar widget. The CHECK_PTR macro used to ensure the widget was created successfully is a Qt provided macro that checks it's parameter is not 0 (if the parameter is 0 it terminates the application with an error message). We create the 'File' item in almost the same way as we created the menu entry (the similarity should come as no suprise once you know that QPopupMenu and KMenuBar have a common baseclass QMenuData). Again we need to call KLocale as string 'File' will be visible to the user. We display our menu by calling its show() method then tell KTLW to manage our menu with setMenu().

The final stage in making our applet work is to connect the menubar entry to some code to exit the application, that's what the connect() call does. Qt applications (and hence KDE applications) use signals and slots to wire one widget to another. A widget (or any other QObject) will emit a signal whenever it's state changes, our applet uses the activated() signal that a QPopupMenu emits when a user selects a menu item. This signal must be connected to the commandCallback() slot we declared in the Edit class. As you can see the commandCallback() slot looks no different to a normal method, the only difference is the declaration that this method is a slot in the header file. commandCallback() exits the program if the id_ parameter it was passed is the constand ID_EXIT - the same constant we used to identify the 'Exit' menu item. Signals and slots can have parameters and they are treated like those of any other method. Qt checks that the type signature of the signal matches that of the slot (and reports the error if they do not match). Now we can take a look at the connect() method call in the Edit constructor.
 
   connect (file, SIGNAL (activated (int)), SLOT (commandCallback (int)));
 
Connecting a signal to a slot

The first parameter is the object that will omit the signal, in our case it's the QPopupMenu file. The next parameter is the signal to be connected, you must specify the name of the signal and the types of it's parameters (as they appear in the class header file or class documentation) using the SIGNAL() macro. The last parameter connect() takes is the slot specified using the SLOT() macro and specifying it's parameters as before. Qt will inform you at run time if the connection is invalid. QObject provides a number of other overloaded versions of the connect() method, you should look at the Qt class documentation for more details. It is perfectly acceptable to connect a signal to more than one slot or to connect more than one signal to a single slot.

The last feature to note about this simple applet is that we include the file edit.moc at the end of the class implementation. The `moc' file is the output of the moc preprocessor that must must be applied to any class that inherits QObject. You normally invoke moc via a makefile rather than directly and you must ensure that its output is compiled and linked to your application. The easiest way to ensure this is to simply include the moc output in the class implementation which is the approach used here. It is important to ensure that moc is rerun if you change the class declaration or you may get strange errors.

You may think that this was a lot of work just to create a completely useless applet, but we've come a long way already: We've learned about session management, creating menus, internationalisation and the basis of Qt, signals and slots. The next stage will be to make our applet actually do something!

Adding functionality

Now that we know the basics we can move on a bit more quickly, so I won't be covering the code in quite as much detail as in the last section. Our aim now is to make the applet do something, in our case we want to be able to edit text.

You can see the complete code for this version of Edit as example2 in the source files for this tutorial.

Qt provides us with QMultiLineEdit, a widget for editing text, this will form the core of our editor applet. We declare a member variable to hold the widget in the Edit class declaration like this:
 
   QMultiLineEdit *view;
 
Declaring the editor widget
All we need to do now is create the widget in Edits constructor and tell KTLW to manage it.
 
   view= new QMultiLineEdit(this, "Main View");
   setView(view);
 
Creating the editor widget

We already know how to add menu items, so adding some new ones for load and save is easy. The code is almost the same as that for the 'Exit' item (note that we now need some more constants like ID_SAVE to identify the new commands).
 
   file->insertItem(klocale->translate("Open..."), ID_OPEN );
   file->insertItem(klocale->translate("Save"), ID_SAVE);
   file->insertItem(klocale->translate("Save As..."), ID_SAVEAS);
 
Adding some more menu items
Notice that these entries all end in an ellipsis ('...'), this indicates that selecting this item will cause a dialog to be displayed for the user to give more information. Using an ellipsis in this way is almost universal across all GUIs and you should follow this convention religiously.

Now that we've created the menu items, all that remains is to make them do something. The code required is very straight forward. We'll look first at the `Open' command. All we need to do is create a new case in the switch statement of the commandCallback() slot, and then add the code to open a file.
 
   case ID_OPEN:
     name= QFileDialog::getOpenFileName();
     if (!name.isEmpty()) {
       load(name);
     }
     break;
 
Opening a file in Edit
The new code makes use of a static method of the QFileDialog class to pop up a modal file dialog and get a filename. If the user pressed the `Cancel' button then the empty string is returned so we test for this case and do nothing. If the user selected a filename then we read the file into the editor widget by calling the load method.

The load method uses the QFile class to read the contents of the selected file. The QFile class is provided by Qt and provides an easy to use platform independent way to access files. It is used here in combination with QTestStream which lets us read the contents of the file a line at time. Each line is appended to the text widget as it is read. It is important to keep track of the name of the current file name (so we can implement `Save') so we add a new instance variable filename_ to the Edit class. This value is set by the load method.
 
   void Edit::load(const char *filename) {
       QFile f( filename );
       if ( !f.open( IO_ReadOnly ) )
 	  return;
 
       view->setAutoUpdate( FALSE );
       view->clear();
 
       QTextStream t(&f);
       while ( !t.eof() ) {
   	QString s = t.readLine();
 	view->append( s );
       }
       f.close();
 
       view->setAutoUpdate( TRUE );
       view->repaint();
       filename_= filename;
   }
 
The implementation of the load() method.
One feature of this method to note is the use of setAutoUpdate() to prevent flickering and improve performance. The effect is to disable redraws for the text widget until the entire file is read in - otherwise the widget would be repainted for each line. It is very important not to leave a widget in this state, so when we have finished reading the file we call setAutoUpdate() again to re-enable updates. We also call repaint() to ensure the widget is properly redrawn.

The 'Save As' command is almost the same as the 'Open' command. We now use the getSaveFileName() which unlike getOpenFileName() does not require that the filename choosen should be that of an existing file. The save command is also easy: if we already know the filename then save the text, if not then call the saveAs() command.
 
     case ID_SAVE:
       if (!filename_.isEmpty())
         saveAs(filename_);
       else {
         name= QFileDialog::getSaveFileName();
         if (!name.isEmpty())
           saveAs(name);
       }
       break;
     case ID_SAVEAS:
       name= QFileDialog::getSaveFileName();
       if (!name.isEmpty())
         saveAs(name);
       break;
 
Saving a file in Edit
The code to actually save the file is simple, we use QFile as before, but this time we open the file with the IO_WriteOnly flag to indicate we want to open the file for output. We write the whole text as a single (multiline) string obtained with the text() method of QMultiLineEdit;
 
   void Edit::saveAs(const char *filename) {
       QFile f( filename );
       if ( !f.open( IO_WriteOnly ) )
 	  return;
 
       QTextStream t(&f);
       t << view->text();
       f.close();
 
       setHint(filename);
       filename_= filename;
   }
 
The implementation of the saveAs() method.
The last feature of this version of the example is an `About' box. This is a dialog box usually accessed using the `About...' entry in the `Help' menu. This is implemented here by calling the static method QMessageBox::about(). `About' boxes are usually used to display information such as the version number, author and vendor of an application.


 
     case ID_ABOUT:
       QMessageBox::about(this, "About Edit",
 	  	         "This is a simple text editor example program.");
       break;
 
The implementation of the saveAs() method.

Improving the user interface

Our applet is now capable of performing useful tasks, but its user interface is rather poor. There are a number of deficiencies such as the lack of a warning if you exit without saving changes, the lack of any display of the name of the currently open file, and a lack of keyboard shortcuts. We'll now try to rectify some of these defects.

The first thing we'll tackle is adding a status bar to our applet, we'll use it to display the name of the currently open file. KDE provides a status bar widget, KStatusBar, and KTLW knows how to manage it, so there's not much left for us to do. KStatusBar has an API very similar to that of the menu widgets so you should be able to figure out what's going on. Note that after showing our status bar we tell KTLW to manage it. We can change the string displayed on the status bar using the id constant ID_HINTTEXT, this is implemented in the slot setHint().
 
   void Edit::initStatusBar()
   {
     statusbar= new KStatusBar(this);
     statusbar->insertItem("Welcome to Edit", ID_HINTTEXT);
     statusbar->show();
     setStatusBar(statusbar);
   }
 
   void Edit::setHint(const char *text)
   {
     statusbar->changeItem(text, ID_HINTTEXT);
   }
 
 
Adding a status bar.

We set the string in the status bar when the user invokes any method that changes the filename, for example loading and saving.

We'll now add a toolbar to Edit, this is slightly more complicated as we need to assign icons to the buttons and setup the tooltips. We make use of the KIconLoader class to handle loading (and caching) of the toolbar icons. This class searches in the directories specified by the KDE File System Standard for an icon, which as we're only using standard icons, suits us fine. We use a macro provided by kapp.h to access the icon loader created by KApplication.
 
   void Edit::initToolBar()
   {
     KIconLoader *loader = kapp->getIconLoader();
     toolbar = new KToolBar(this);
 
     toolbar->insertButton(loader->loadIcon("filenew.xpm"),
 			  ID_NEW, TRUE,
 			  klocale->translate("Create a new file"));
     toolbar->insertButton(loader->loadIcon("fileopen.xpm"),
 	 		  ID_OPEN, FALSE,
 			  klocale->translate("Open a file"));
     toolbar->insertButton(loader->loadIcon("filefloppy.xpm"),
 			  ID_SAVE, FALSE,
 			  klocale->translate("Save the current file"));
 
     addToolBar(toolbar);
     toolbar->setBarPos(KToolBar::Top);
     toolbar->show();
     connect(toolbar, SIGNAL(clicked(int)), SLOT(commandCallback(int)));
   }
 
 
Adding a toolbar.
Each toolbar item is created by a call to insertButton(). This method takes the icon (accessed using KIconLoader), the command id, a flag to indicated if the button is enabled and the text for the tooltip as parameters. As usual we allow for i18n support and wrap the tooltip in a call to klocale->translate().

We connect the toolbars clicked signal to the same slot as we use for the menus. This is perfectly safe as we are using the same id numbers for commands in each, and we are free to connect as many signals as we want to a slot.

It is generally good practice when designing a user interface to prevent the user invoking an operation that cannot be performed. We do this in Qt by enabling and disabling widgets depending on the state of the application. For example if you have made no changes to a document then saving to its original file makes no sense (though saving it to a different file is often useful). All Qt and KDE widgets have a method setEnabled() which is used to `grey out' the widget and disable it.

KMenuBar and KToolbar both make the process of enabling and disabling their entries easy by providing a method which will set the state of an entry specified by its command id. We call both of these in the implementation of enableCommand().
 
   void Edit::enableCommand(int id) //SLOT
   {
     toolbar->setItemEnabled(id, true);
     menu->setItemEnabled(id, true);
   }
 
   void Edit::disableCommand(int id) // SLOT
   {
     toolbar->setItemEnabled(id, false);
     menu->setItemEnabled(id, false);
   }
 
Enabling and disabling commands.
We shall now use these methods to implement context sensitive enabling and disabling of commands. To make the `Save' command disabled when there are no changes to save we need to keep track of when the text is modified, this is dome using the textChanged() signal emitted by QMultiLineEdit when the user edits the text. Using this signal we can create a flag to indicate if the text has been changed. This is handled by the textChanged() slot defined by the Edit class. This slot also updates the state of the commands.
 
 void Edit::textChanged()
 {
   modified= true;
   enableCommand(ID_SAVE);
   enableCommand(ID_SAVEAS);
 }
 
The definition of the textChanged() slot.
Note that the load and save methods must also be modified to keep the flag up to date, and to enable or disable commands. You can see these changes for yourself by looking at the example programs.

The final thing we will add to our editor in this section is a confirmation dialog to be shown when the user tries to exit when there are unsaved changes in the editor. The dialog is a standard Qt warning dialog.

The dialog is implemented using the exit() method. This method simply tests the flag we created to indicate modifications, and uses another static method of QMessageBox to display a warning dialog.


 
   int Edit::exit()
   {
     int die= 0;
 
     if (!modified)
       die= 1;
     else
       if (QMessageBox::warning(this, klocale->translate("Unsaved Changes"),
   			       "You have unsaved changes, you will loose "
 			       "them if you exit now.",
 			       "Exit", "Cancel",
 			       0, 1, 1))
          die= 0;
       else
         die= 1;
 
     return die;
   }
 
The definition of the exit() method.

Forthcoming...


This document is Copyright Richard J. Moore 1997-1998 (rich@kde.org)
You are free to distribute the examples given here in any form what so ever, and under any license terms. You are however NOT free to do the same with the text of the tutorial itself. You are permitted to distribute the text of the tutorial in electronic formats as long as it is distributed in its entirity. You may not charge for this document, though you may recoup packaging costs. You may make paper copies for personal use only. If you want to distribute this under other terms then drop me a mail.
diff --git a/support/documents/document/kde-tutorial.html b/support/documents/document/kde-tutorial.html index 2cfb6be..6d20c31 100644 --- a/support/documents/document/kde-tutorial.html +++ b/support/documents/document/kde-tutorial.html @@ -1,493 +1,493 @@ - + KDEによるGUI作成

KDEによるGUI作成

Richard J. Moore

日本語訳: 菰田泰生 19990618

導入

KDEでGUIを作ることはたくさんの既存の利用可能なGUIコンポーネントや、開発者のためのQtが提供するフレームワークのおかげでとても簡単にできます。不幸にも大量のパブリックドメインのソースコード(例えばKDE全体)や詳細なクラスドキュメントのせいで、GUIを作るためにどうやって物を組み合わせていくかを説明するチュートリアルがありませんでした。この文書の目的はそのような文書を提供することです。具体的に議論するために`ドラッグアンドドロップ'、URLサポート、オンラインヘルプのような機能を含むとても簡単なKDEアプリケーションを作っていきたいと思います。この文書はC++や基本的なコンパイルの問題については説明しません。どうやってGUIを組み合わせるかだけを説明します。

始めるにあたって1つのメニューを含むメニューバーだけから構成されるとても簡単なGUIを作ってみましょう。`Exit'コマンドだけをメニューに含みます。このむしろ謙虚なものから、私たちはアプリケーションをシンプルながら機能的なエディタに拡張していきたいと思います。これはチュートリアルにしては手ごわいものかも知れませんが、QtやKDEによって提供されているコンポーネントを再利用することを見ることで簡単に練習できます。私は最初にコードを見せてあとで詳しく追っていきます。全てのサンプルコードはKDEの開発者用ウェブサイトのhttp://developer.kde.org/examples.tar.gzから自由にダウンロードできます。

最小のアプリケーション

私たちはこれから最小のKDEアプリケーションについて詳細に見ていきたいと思います。それは`Exit'コマンドだけを提供しますが、すでにフローティングメニューバー、セッションマネージメント、国際化もサポートしています。
 
#ifndef EDIT_H
 #define EDIT_H
 
 #include <ktopwidget.h>
 
 class Edit : public KTopLevelWidget
 {
   Q_OBJECT
 
 public:
   Edit();
 
   ~Edit();
 
 public slots:
  void commandCallback(int id_);
 
 private:
   // 子ウィジェット
   KMenuBar *menu;
 };
 #endif // EDIT_H
Edit クラス宣言 
 最初に見るべきなのはクラス宣言で、Editクラスとしてアプリケーションにインプリメントされているのが分かるでしょう。
Editは全てのKDEアプリケーションの基本クラスであるKTopLevelWidget (KTLW)の派生クラスです。KTLWはアプリケーションのメニューバー、ステータスバー、ツールバー、セッションマネージメントを管理します。次にクラス宣言にあるのは`Q_OBJECT'マクロです。これは重要なQtの特徴である"シグナル"と"スロット"のサポートのために必要です。Editクラスのただ一つのスロットがcommandCallback()メソッドで、`public slots:'のようにパブリックアクセスのスロットとして宣言されています。スロットは本質的にタイプセーフなコールバックメソッドです。オブジェクトによって、「Editクラスは connect()メソッドで使われると表現されているもの」として呼ばれます。残りのクラス宣言は他のC++クラスと同様です。
 
#include <kapp.h>
 #include <kmenubar.h>
 #include "edit.h"
 
 const int ID_EXIT= 111;
 
 Edit::Edit()
 {
   QPopupMenu *file = new QPopupMenu;
 
   file->insertItem(klocale->translate("Exit"), ID_EXIT);
 
   menu = new KMenuBar( this );
   CHECK_PTR( menu );
   menu->insertItem( klocale->translate("File"), file );
   menu->show();
   setMenu(menu);
 
   // 互いを接続します
   connect (file, SIGNAL (activated (int)), SLOT (commandCallback (int)));
 }
 
 Edit::~Edit()
 {
 
 }
 
 void Edit::commandCallback(int id_)
 {
   switch(id_) {
   case ID_EXIT:
     exit(0);
     break;
   }
 }
 
 #include "edit.moc"
Edit クラス インプリメント

私たちは今、コンストラクタを最初に見ることによりEditクラスのインプリメントを学びます。コンストラクタはQPopupMenuオブジェクトを生成します、これはFileメニューです。私たちはinsertItem() メソッドを使って`Exit'アイテムを追加します。最初のパラメターはメニューで表示される文字列で、2番目は整数のidです(あなたはクラスドキュメンテーションを見ることで、クラスの全てのメソッドを見つけることができます)。翻訳のためのアプレットの準備としてただの'Exit'文字列のラベルをセットする代わりにklocale->translate() を呼びます。ユーザーが見るであろうどんな文字列もこうされるべきです。私たちは私たち独自のKLocaleオブジェクトを作る必要はありません、というのはKApplication(全てのKDEアプリケーションオブジェクトの基本クラス)が作ってくれるからです。私たちはkapp.hによって提供されるklocaleマクロを使ってKLocateオブジェクトにアクセスします。

次に私たちがやることは私たちのメニューを含むメニューバーを作ることです、私たちはKMenuBarウィジェットを使ってこれをやります。CHECK_PTRマクロ(ウィジェットがうまく作られたかを確かめる)はQtが供給するパラメターが0かどうかをチェックするマクロです(もしパラメターが0ならアプリケーションをエラーともに終了させます)。私たちは私たちがメニューエントリを作ったのとほぼ同じ方法で'File'アイテムを作ります(この一致は驚くに足りません、なぜならQPopupMenuとKMenuBarは同じ基本クラスQMenuDataを継承しているからです)。再び私たちはKLocaleを呼ぶ必要があります、というのは'File'という文字列はユーザーに見えるからです。私たちはshow() メソッドを使ってメニューを表示し、KTLWにsetMenu()でメニューを管理することを知らせます。

私たちのアプレットが動くようにするための最後のステージは、メニューバーエントリをアプリケーションが終了するためのコードと接続することです、これはconnect() 呼び出しによって行なわれます。Qtアプリケーション(つまりKDEアプリケーション)はウィジェットを繋げるためにシグナルとスロットを使います。ウィジェット(もしくは他のあらゆるQObject)は状態が変わった時はいつでもシグナルを発行します。私たちのアプレットではQPopupMenuがユーザーがメニューアイテムを選択した時に発行する activated() シグナルを使用します。このシグナルはEdit クラスで宣言された commandCallback() スロットに接続しなければなりません。 commandCallback() を見て分かるように、スロットは通常のメソッドと違いはそうありません。唯一の違いは宣言で、このメソッドはヘッダーファイルにあるスロットです。commandCallback() は渡されたパラメターが定数 ID_EXIT--私たちが'Exit'メニューアイテムを識別するのと同じ定数--だったらプログラムを終了します。シグナルとスロットはパラメターを持て、それらは他のメソッドのパラメターと同様に扱えます。Qtはシグナルのtype signatureがスロットのそれとマッチするか(そしてマッチしなければエラーを返します)をチェックします。さて、Editコンストラクタのconnect() メソッド呼び出しのところを見てみましょう。
 
  connect (file, SIGNAL (activated (int)), SLOT (commandCallback (int)));
シグナルをスロットに接続

最初のパラメターはシグナルを排除するオブジェクトで、私たちのケースでは QPopupMenu file です。次のパラメターは接続されるべきシグナルです。あなたはシグナルの名前とそのパラメターの型をSIGNAL()マクロを使って特定しなくてはなりません(というのはパラメターはクラスヘッダーファイルかクラスドキュメントに現れるからです)。connect() が取る最後のパラメターはSLOT() マクロを使って特定されるスロットで、前と同様そのパラメターも特定します。Qtは実行時に、もし接続が無効だと知らせます。QObjectはたくさんのオーバーロードバージョンのconnect() メソッドを提供します、詳しくはQt クラスドキュメントを御覧下さい。ひとつのシグナルをひとつ以上のスロットに接続することや、ひとつ以上のシグナルをひとつのスロットに接続することは全く問題はありません。

この簡単なアプレットで注意しておかなければならない最後の特徴はクラスインプリメントの最後の方でインクルードしたedit.mocファイルです。`moc'ファイルはmocプリプロセッサーの出力で、QObjectを継承するどんなクラスにも適用されなければいけません。あなたは通常直接mocを呼び出すよりmakefile経由で呼び出すでしょう。そしてその出力はあなたのアプリケーションにコンパイル、リンクされることを確かめておいて下さい。これを確かめるもっとも簡単な方法は単純にmoc出力をここで使ったクラスインプリメントのアプローチのようにインクルードすることです。あなたがクラス宣言の部分を変更した時にmocが再実行されることを確かめておくことは重要です、というのはそうでないなら変なエラーが出てしまうからです。

あなたはこんな全く使えないアプレットを作るには多過ぎる作業だと考えたでしょう、しかし私たちは長い道のりを来ました。私たちはセッションマネージメント、メニュー作成、国際化、Qtの基礎シグナルとスロットを学びました。次のステージでは私たちのアプレットを実際に何かをさせるようにします!

機能を追加する

今私たちは基礎を知っているのでもうちょっと速く進めるでしょう。私はさっきのセクションでやったように詳しくコードを追うようなことはしません。私たちの目的はアプレットに何かをさせるようにすることで、ここでは文章を編集したいと思います。

あなたはこのチュートリアルのソースファイルのexample2でこのバージョンの Edit の完全なコードが見れます。

Qtはテキストを編集するウィジェット、QMultiLineEditを提供します。これは私たちのエディタアプレットの核をなします。私たちはEdit クラス宣言の中にあるウィジェットのメンバ変数をこのように宣言します:
 
  QMultiLineEdit *view;
エディタウィジェットの宣言
私たちが今しなければならないことはEditコンストラクタにウィジェットを作り、それを管理するためKTLWに教えることです。
 
  view= new QMultiLineEdit(this, "Main View");
   setView(view);
エディタウィジェットの作成

私たちは既にどうやってメニューアイテムを追加するかを知っています、よってloadとsaveのために新しいものを追加するのは簡単です。そのコードは'Exit' アイテムとほぼ同じです(今私たちには ID_SAVEのような定数が新しいコマンドのために必要なことに注意して下さい)。
 
  file->insertItem(klocale->translate("Open..."), ID_OPEN );
   file->insertItem(klocale->translate("Save"), ID_SAVE);
   file->insertItem(klocale->translate("Save As..."), ID_SAVEAS);
更にメニューアイテムの追加
省略('...')で終る全てのエントリーに注目して下さい。これはこのアイテムを選択することによってユーザーに更に情報を求めるダイアログが表示されるということを示しています。省略をこのように使うことはほぼ全ての世界のGUIの方法であり、あなたもこの慣習に是非従うべきです。

今私たちはメニューアイテムを作成しました。残りの仕事はそれらが何かをするようにすることです。必要なコードは非常に直接的です。最初に`Open' コマンドを見てみましょう。私たちがしなければならないことはommandCallback() スロットのswitchのところに新しいcaseを作ることです。
 
  case ID_OPEN:
     name= QFileDialog::getOpenFileName();
     if (!name.isEmpty()) {
       load(name);
     }
     break;
Editでファイルを開く
新しいはコードは現代的なファイルダイアログをポップアップし、ファイル名を得るためにQFileDialogクラスのスタティックメソッドを利用しています。もしユーザーが`Cancel'ボタンを押したら空の文字列が返されます。よって私たちはこれをテストしても何も起こりません。もしユーザーがファイル名を選択したら、loadメソッドを呼んでファイルを読み込みエディタウィジェットに渡します。

loadメソッドは選択したファイルの中身を読み込むためにQFileクラスを使います。QFileクラスはQtによって提供され、プラットフォーム非依存のファイルアクセスの方法を提供します。ここでは一回にファイルの中身を1行読むことのできるQTestStreamと組み合わせて使われています。それぞれの行は読まれるたびにテキストウィジェットに付加します。現在のファイル名のトラック名を残しておくことは重要なので(それによって'Save'がインプリメントできる)、即席の filename_ 変数をEditクラスに加えます。この値はloadメソッドによってセットされます。
 
  void Edit::load(const char *filename) {
       QFile f( filename );
       if ( !f.open( IO_ReadOnly ) )
           return;
 
       view->setAutoUpdate( FALSE );
       view->clear();
 
       QTextStream t(&f);
       while ( !t.eof() ) {
         QString s = t.readLine();
         view->append( s );
       }
       f.close();
 
       view->setAutoUpdate( TRUE );
       view->repaint();
       filename_= filename;
   }
load() メソッドのインプリメント
注意すべきこのメソッドの特徴はちらつきやパフォーマンスを向上させるためのsetAutoUpdate()の使いかたです。これにはファイル全てが読み込まれるまでテキストウィジェットに再描画を無効にするという効果があります、さもなければウィジェットは各行ごとに再描画するでしょう。ウィジェットをこの状態にしておかないことは重要です。よってファイルからの読み込みが終ったら、わたしたちは再びsetAutoUpdate()を呼び出して更新を有効にします。私たちはまた正しく再描画されたかを確かめるためrepaint() を呼び出します。

'Save As'コマンドはほとんど'Open'コマンドと同じです。私たちは getSaveFileName()を使います、これはgetOpenFileName()と違って選んだファイル名が存在するファイル名であることを要求しません。saveコマンドは簡単です。もし私たちがファイル名を知っているのなら文章を保存し、そうでないならsaveAs() コマンドが呼び出します。
 
    case ID_SAVE:
       if (!filename_.isEmpty())
         saveAs(filename_);
       else {
         name= QFileDialog::getSaveFileName();
         if (!name.isEmpty())
           saveAs(name);
       }
       break;
     case ID_SAVEAS:
       name= QFileDialog::getSaveFileName();
       if (!name.isEmpty())
         saveAs(name);
       break;
Editでのファイルの保存
実際にファイルを保存するコードは簡単です。わたしたちは以前QFileを使いましたが、今回は出力のためにファイルを開きたいことを示すためにIO_WriteOnly フラグを付けてファイルを開きます。わたしたちは全体のテキストをQMultiLineEditのtext()メソッドを使って得られる1(または複数)文字列として書き出します。
 
  void Edit::saveAs(const char *filename) {
       QFile f( filename );
       if ( !f.open( IO_WriteOnly ) )
           return;
 
       QTextStream t(&f);
       t << view->text();
       f.close();
 
       setHint(filename);
       filename_= filename;
   }
saveAs() メソッドのインプリメント
このバージョンの例の最後の特徴は`About'ボックスです。これは通常`Help'メニューの`About...' エントリーを使ってアクセスされるダイアログです。QMessageBox::about()スタティックメソッドを呼び出してここではインプリメントされます。`About' ボックスは通常アプリケーションのバージョン、作者、ベンダーなどの情報を表示するのに使われます。

    case ID_ABOUT:
       QMessageBox::about(this, "About Edit",
                          "This is a simple text editor example program.");
       break;
saveAs()メソッドのインプリメント

ユーザーインターフェースの改良

わたしたちのアプレットは今では有用な仕事をこなせますが、ユーザーインターフェースが貧弱です。たくさんの落度があります、例えば変更を保存しないで終了しようとした時の警告、現在開いているファイルの名前の表示、キーボードショートカット、などです。このような欠点を改良しようと思います。

最初に取り組むことはアプレットにステータスバーを追加することです。わたしたちはそれを現在開いているファイルの名前を表示させるのに使います。KDEはステータスバーウィジェットKStatusBarを提供し、KTLWはその管理ができるのでわたしたちがしなければならないことはそれほど残されていません。KStatusBarはメニューウィジェットととても似たAPIを持っているので何が行なわれているかあなたは分かるでしょう。ステータスバーを表示したあとKTLWにそれを管理させるために報告して下さい。私たちはID_HINTTEXT定数を使ってステータスバーに表示させる文字列を変えることができます。これは setHint()スロットにインプリメントします。
 
  void Edit::initStatusBar()
   {
     statusbar= new KStatusBar(this);
     statusbar->insertItem("Welcome to Edit", ID_HINTTEXT);
     statusbar->show();
     setStatusBar(statusbar);
   }
 
   void Edit::setHint(const char *text)
   {
     statusbar->changeItem(text, ID_HINTTEXT);
   }
 
 
ステータスバーを追加

私たちは例えば読み込みや保存のようにファイル名を変えるようなメソッドをユーザーが呼び出した時、ステータスバーに文字列をセットします。

今度はツールバーを追加します。これはちょっと複雑です、というのは私たちがボタンアイコンの割り当てやツールチップのセットをする必要があるからです。私たちはツールバーアイコンの読み込み(とキャッシング)を扱うためにKIconLoaderクラスを利用します。 このクラスはKDE File System Standardによって指定されるディレクトリでアイコン(私たちはただ普通の、用途に合うアイコンを使います)を検索します。 私たちはKApplicationによって作られるアイコンローダーにアクセスするためkapp.h によって提供されるマクロを使います。
 
  void Edit::initToolBar()
   {
     KIconLoader *loader = kapp->getIconLoader();
     toolbar = new KToolBar(this);
 
     toolbar->insertButton(loader->loadIcon("filenew.xpm"),
                           ID_NEW, TRUE,
                           klocale->translate("Create a new file"));
     toolbar->insertButton(loader->loadIcon("fileopen.xpm"),
                           ID_OPEN, FALSE, 
                           klocale->translate("Open a file"));
     toolbar->insertButton(loader->loadIcon("filefloppy.xpm"),
                           ID_SAVE, FALSE, 
                           klocale->translate("Save the current file"));
 
     addToolBar(toolbar);
     toolbar->setBarPos(KToolBar::Top);
     toolbar->show();
     connect(toolbar, SIGNAL(clicked(int)), SLOT(commandCallback(int)));
   }
 
 
ツールバーを追加
各ツールバーアイテムはinsertButton()を呼び出して作られます。このメソッドはアイコン(KIconLoaderを使ってアクセス)、コマンドid、ボタンが有効になったことを指すフラグ、ツールチップの文章、をパラメターとしてとります。私たちは通常i18nサポートのためにklocale->translate()でツールチップをラップします。

私たちはツールバー"clicked"シグナルをメニューで使ったのと同じスロットに接続します。これは全く安全です。というのはコマンドそれぞれに同じidナンバーを使っているので、わたしたちは多くのシグナルを欲しいだけスロットに自由に接続することができます。

ユーザーインターフェースのデザイン時にユーザーが働きようがない操作を呼び出すことを防止するのは一般的に良い練習です。私たちはこれをQtでアプリケーションの状態に依存して、ウィジェットを有効・無効にすることで行ないます。例えばもしあなたが文章を変更していないのに、元のファイルに保存することはナンセンスです(ただし違うファイルに保存することは有用です)。全てのQt,KDEのウィジェットはウィジェットを`grey out'し無効にする setEnabled() メソッドを持っています。

KMenuBarとKToolbarは両方ともコマンドidによって特定されるエントリーの状態をセットするメソッドを提供することによってそれらのエントリーを有効・無効にするプロセスを簡単に作れます。わたしたちはこれら両方enableCommand()のインプリメントの中で呼び出します。
 
  void Edit::enableCommand(int id) //スロット
   {
     toolbar->setItemEnabled(id, true);
     menu->setItemEnabled(id, true);
   }
 
   void Edit::disableCommand(int id) // スロット
   {
     toolbar->setItemEnabled(id, false);
     menu->setItemEnabled(id, false);
   }
コマンドを有効・無効にする
私たちは前後を考慮したコマンドの有効・無効のインプリメントのために、今これらのメソッドを使います。保存すべき変更がない時`Save'コマンドを無効にするために文章が変更されるまでトラックを保つ必要があります。これはユーザーが文章を変更した時にQMultiLineEdit によって発行されるtextChanged()シグナルを使って行なわれます。このシグナルを使うことで文章が変更されているかを指し示すフラグを作ることができます。これはEditクラスで定義されているtextChanged()スロットによって行なわれます。このスロットはコマンドの状態も更新します。
 
void Edit::textChanged()
 {
   modified= true;
   enableCommand(ID_SAVE);
   enableCommand(ID_SAVEAS);
 }
textChanged() スロットの定義
load,saveメソッドはまた、フラグを最新に保ち、コマンドを有効・無効にするために変更されなければならないということに注意して下さい。あなたはサンプルプログラムで、この変更を見ることができます。

あなたがこのセクションのエディタに最後に加えることは、エディタに保存されていない変更がある時にユーザーが終了しようとした時に表示される確認ダイアログです。
 


ダイアログはexit()メソッドを使ってインプリメントされます。このメソッドは単に変更を指すためにわたしたちが作ったフラグをテストし、警告ダイアログを表示するためにもうひとつのQMessageBoxスタティックメソッドを使います。
 
  int Edit::exit()
   {
     int die= 0;
  
     if (!modified)
       die= 1;
     else
       if (QMessageBox::warning(this, klocale->translate("Unsaved Changes"),
                                "You have unsaved changes, you will loose "
                                "them if you exit now.",
                                "Exit", "Cancel",
                                0, 1, 1))
          die= 0;
       else
         die= 1;
 
     return die;
   }
exit()メソッドの定義

間もなくできます...


This document is Copyright Richard J. Moore 1997-1998 (rich@kde.org)
You are free to distribute the examples given here in any form what so ever, and under any license terms. You are however NOT free to do the same with the text of the tutorial itself. You are permitted to distribute the text of the tutorial in electronic formats as long as it is distributed in its entirity. You may not charge for this document, though you may recoup packaging costs. You may make paper copies for personal use only. If you want to distribute this under other terms then drop me a mail.
翻訳者追記
オリジナルと比べて誤訳、おかしい記述があったら菰田泰生: tklab@ma6.seikyou.ne.jpまで連絡して下さい。なおライセンスについては元の文書に従います。
diff --git a/support/documents/document/kde2-howtoi18n.html b/support/documents/document/kde2-howtoi18n.html index 7f2bed9..ef11fc0 100644 --- a/support/documents/document/kde2-howtoi18n.html +++ b/support/documents/document/kde2-howtoi18n.html @@ -1,134 +1,134 @@ How to I18N - +
KDE Project

KDE-2 アプリの国際化の方法


Qt は ver.2 以降、内部コードが Unicode 化されています。

文字列は EUC のまま渡すと文字化けしてしまいます。
そのため Unicode に変換してから渡す必要があります。
内部処理の際にも Unicode であることを意識して行う必要があります。

これらは他のライブラリではあまり見掛けない独特な手法です。
そこで Unicode 関連の処理についてまとめてみました。


Unicode について

Unicode とは世界中の主要な文字を単一の文字テーブルに定義したものです。
テーブルは 16bit で表され、理論上 65,536 文字を収録することができます。

16bit で表された Unicode 体系を UCS-2 といいます。

従来の char* 型文字列では UCS-2 を処理することができません。
そのためマルチバイト処理により 8bit 化して
char* 型文字列として扱えるようにした規格が UTF-8 です。

UCS-2 と UTF-8 との変換では情報の欠損がないため、
表記内容を等価な物として扱うことができます。
そのため char* 型で処理する必要がある場合には、
一時的に UTF-8 に変換して処理後に UCS-2 に戻すという作業が必要になります。

処理対象が UCS-2 または UTF-8 のみであれば
特に難しいことを考えなくても取り扱うことができるのですが、
現状では EUC など従来の文字コードがメインのためそうもいきません。
これが Qt での文字コード処理を複雑にしている主な原因です。


具体的なパッチの作り方

  1. ascii(), latin1() を見つける。

    QString::ascii(), latin1() を用いているところがあれば、
    そこに日本語などが入る可能性があるときには local8Bit() へ変更します。
    ※ utf8()でも十分な場合は utf8() を。
    場合によっては const char * へのキャストをつける。

  2. sprintf は要注意

    QString::sprintf() の %s の文字列のところには UTF-8 しか受け付けません。
    UTF-8 に変換して渡してください。

    1. ascii() を使っていた場合
      utf8()に変換。さらに const char * へキャストしてください。
       QString str, str2;
       str.sprintf("%s", str2);
       ---> str.sprintf("%s", (const char *)str2.utf8());
       
    2. char * をそのまま渡している場合
      UTF-8 の文字列を渡してる場合は問題なし。
      locale 文字列 (EUC など) を渡している場合には UTF-8 に変換してください。
       (const char *) QString::fromLocal8Bit(str).utf8()
       
    3. QString::sprintf() の format は現状で日本語などは受け付けません
       qstring.sprintf(unicodestr, args, ...);
       ---> qstring = QString::fromUtf8(QCString().sprintf(unicodestr.utf8(), args, ...));
       
  3. QStrList も要注意。

    QStrList は QString ではなく、 char * のリストです。
    QStringとのやり取りを行なう場合には変換をしてください。


日本KDEユーザ会トップページ


このサイトは日本KDEユーザ会が著作権を有します。本著作権を表示する限りにおいて転載を許可します。
Copyright (C) 1999-2000 Japan KDE Users' Group. All Rights Reserved.
このサイトに関するご意見・お問い合わせはtino@kde.gr.jp(井上)まで。
最終更新日:2000年8月6日
メーリングリスト ダウンロード ニュース KDEとは diff --git a/support/documents/document/makegui.html b/support/documents/document/makegui.html index 04eaae4..7f620c0 100644 --- a/support/documents/document/makegui.html +++ b/support/documents/document/makegui.html @@ -1,16 +1,16 @@ - + kde-tutorial KDE-Tutorial  "KDEによるGUI作成"

kde.orgにあるチュートリアルの翻訳物です。

日本語訳
原作
本文に出てくるexampleのアーカイブ

diff --git a/support/documents/document/start_time.html b/support/documents/document/start_time.html index f1a3f2d..c419485 100644 --- a/support/documents/document/start_time.html +++ b/support/documents/document/start_time.html @@ -1,225 +1,225 @@ 起動時間の計測 - +
KDE Project

起動時間の計測


日本語化KDE起動時間データ

KDE自体少し重いプログラムで日本語化KDEはさらに重くなりますが、しかし最近のマシンでは気になる
ことはないと思います。どうしても遅いと感じたら下のデータと比べてみて下さい。もし比べてみてかなり
遅い場合は遅くなっている原因があります。大体~/.qti18nrcが原因のことが多いので見直してみて下さい。

用語
キャッシュある/なし…一回立ちあげたプログラムはメモリにキャッシュが残っていることがあるので
  次回立ち上げが高速になります。boot直後は当然キャッシュはありません。

--------------------------------------------------------------------------
[測定環境]
CPU: MMX/233, mem: 96MB
OS: VineLinux1.1CR, kernel: 2.0.36
X: XFree3.3.3.1(+X-TT)
font: ビットマップフォント

[結果]
1回目: 57秒  (boot 直後)
2回目: 36秒  (X 終了後、再度 startx)

[**追加報告**]
KDE 以前の問題ですが、ためしに、XF86Config の FontPath を最小限にし、
使わないフォント(ハングル等)をはずして、フォント数を半分程度にしてみました。
結果、以下のようになりました。

[計測結果]
・KDE
ビットマップ
  boot 直後: 57秒 -> 50秒
  X再起動:  36秒 -> 20秒
TrueType
  boot 直後: 48秒
  X 再起動:  18秒
・WindowMaker(参考)
  boot 直後: 20秒
  X 再起動:  11秒

ちなみに .qti18nrc は

*       -alias-fixed-*-*-*--*-*-*-*-c-*-jisx0201.1976-0, \
        -alias-fixed-*-*-*--*-*-*-*-c-*-jisx0208.1983-0

XF86Config で5行コメントアウトしました。

    FontPath   "/usr/X11R6/lib/X11/fonts/japanese:unscaled"
    FontPath   "/usr/X11R6/lib/X11/fonts/TrueType"
    FontPath   "/usr/X11R6/lib/X11/fonts/misc:unscaled"
    FontPath   "/usr/X11R6/lib/X11/fonts/75dpi:unscaled"
    FontPath   "/usr/X11R6/lib/X11/fonts/100dpi:unscaled"
    FontPath   "/usr/X11R6/lib/X11/fonts/Type1"
#    FontPath   "/usr/X11R6/lib/X11/fonts/Speedo"
#    FontPath   "/usr/X11R6/lib/X11/fonts/japanese"
#    FontPath   "/usr/X11R6/lib/X11/fonts/misc"
#    FontPath   "/usr/X11R6/lib/X11/fonts/75dpi"
#    FontPath   "/usr/X11R6/lib/X11/fonts/100dpi"
--------------------------------------------------------------------------
[測定環境]
キャッシュにある状態ではかりました。

Vine-Linux 1.0(1 -2.0.36 + glibc-2.0.7 + XFree86-3.3.3.1)
Celeron(375MHz(本来は?)) + memory 128MB
で kinput2 + kfm + kvt を立ち上げます。
~/.cshrcでdateコマンドを実行してkvtに表示された時間と
~/.xinitrcの最初に表示させた時間との差をとりました。

1. TrueType fonts

"~/.qti18nrc"
Courier         -aliastt-gothic-*-r-normal--0-0-0-0-c-0-jisx0208.1983-0,
                -aliastt-mincho-*-r-normal--0-0-0-0-c-0-jisx0208.1983-0
Helvetica       -aliastt-gothic-*-r-normal--0-0-0-0-c-0-jisx0208.1983-0,
                -aliastt-mincho-*-r-normal--0-0-0-0-c-0-jisx0208.1983-0
*               -aliastt-gothic-*-r-normal--0-0-0-0-c-0-jisx0208.1983-0,
                -aliastt-mincho-*-r-normal--0-0-0-0-c-0-jisx0208.1983-0

16秒

2. Bitmap fonts

Courier     -alias-fixed-*-*-*--*-*-*-*-c-*-jisx0201.1976-0,
            -alias-fixed-*-*-*--*-*-*-*-c-*-jisx0208.1983-0
Helvetica   -alias-fixed-*-*-*--*-*-*-*-*-*-jisx0208.1983-*,
            -alias-fixed-*-*-*--*-*-*-*-*-*-jisx0201.1976-*
*           -alias-fixed-*-*-*--*-*-*-*-*-*-jisx0208.1983-*,
            -alias-fixed-*-*-*--*-*-*-*-*-*-jisx0201.1976-*

19から20秒

3. ~/.qti18nrcなし
42から44秒

でした。
それぞれ2回づつ計測しています。
--------------------------------------------------------------------------
[測定環境]
Pentium2-333(417MHz)x2, Memory 128MB,
FreeBSD-3.2R, XFree3.3.3.1+X-TT
kpanel,kfm等を立ち上げた場合の時間です。

 ビットマップ、キャッシュなし: 17秒
 ビットマップ、キャッシュあり: 11秒
 TrueType、  キャッシュなし: 16秒
 TrueType、  キャッシュあり: 10秒
.qti18nrcなし、キャッシュなし: 30秒
.qti18nrcなし、キャッシュあり: 25秒

.qti18nrc は以下のとおりです。
 

・ビットマップ(FreeBSDにVineのAlias-Fixedを入れています)

fixed -alias-fixed-*-*-*--14-*-*-*-c-*-jisx0201.1976-0,
      -alias-fixed-*-*-*--14-*-*-*-c-*-jisx0208.1983-0
*     -alias-fixed-*-*-*--*-*-*-*-c-*-jisx0201.1976-0,
      -alias-fixed-*-*-*--*-*-*-*-c-*-jisx0208.1983-0
 

・TrueType

* -wadalab-gothic-*-*-*--*-*-*-*-c-*-jisx0208.1983-0

------------------------------------------------------------------------------
[測定環境]
Cyrix 6x86MX-PR233(200MHz), Memory 64MB
FreeBSD 3.2R, XFree3.3.3.1+X-TT

 ビットマップ、キャッシュなし: 30秒
 ビットマップ、キャッシュあり: 22秒
 TrueType、  キャッシュなし: 30秒
 TrueType、  キャッシュあり: 20秒
.qti18nrcなし、キャッシュなし: 62秒
.qti18nrcなし、キャッシュあり: 50秒

ビットマップとTrueTypeで時間がほとんど同じです。

CyrixのCPUは浮動小数演算が遅いかわりに整数演算が速く、
コンパイルや圧縮・解凍では有利だということが言われていましたが、
どうもその辺が関係している可能性があります。
(ビットマップの展開は整数で、TrueTypeは浮動小数?)

CyrixとMMXという違いはあるのですが大体同スペックですので、
ちょっとこれは遅すぎるという感じがします。
~/.qti18nrc はどの設定しておられるでしょうか?
ひょっとして以下のようにすると速くなるかもしれません。

fixed -alias-fixed-*-*-*--14-*-*-*-c-*-jisx0201.1976-0,
      -alias-fixed-*-*-*--14-*-*-*-c-*-jisx0208.1983-0
*     -alias-fixed-*-*-*--*-*-*-*-c-*-jisx0201.1976-0,
      -alias-fixed-*-*-*--*-*-*-*-c-*-jisx0208.1983-0

fixedは変な書き方をしていますが、
11ポイントで半角2文字が全角1文字と同じ幅になるようにしたためです。
(なぜか11ポイントが実際には14ポイントとして表示されるため)
-------------------------------------------------------------------------
[測定環境]
Cyrix 6x86MX-PR233(200MHz), Memory 64MB
Vine Linux 1.1, XFree3.3.3.1+X-TT

 ビットマップ、キャッシュなし: 38秒
 ビットマップ、キャッシュあり: 20秒
 TrueType、  キャッシュなし: 38秒
 TrueType、  キャッシュあり: 20秒
.qti18nrcなし、キャッシュなし: 54秒
.qti18nrcなし、キャッシュあり: 35秒

ビットマップとTrueTypeで起動時間が同じでした。
-------------------------------------------------------------------------
[測定環境]
PowerPC604e/200Mhz(PowerMac7600)
512k(2nd cache) , Memory 144MB
LinuxPPC 1999(RedHat6.0見当)
XFree86-3.3.3.1 + X-TT
kde*-1.1.1+i18n

startx(startkde)にかかった時間
キャッシュ無し : 34秒
キャッシュ有り : 21秒

----------------------------------------------------------------------------
[測定環境]
Celeron300A(on 450MHz)x2,memory 128MB
Debian GNU/Linux 2.1(Slink),Linux-2.2.12
XFree3.3.5+X-TT-1.2.1
KDE-1.1.2pre3+patchいろいろ
同時にkinput2,kterm x2も起動,その他のkde関連のプログラム(kfm等)は立ちあげず
フォントにはビットマップフォントを使用

約15秒です。キャッシュにある状態では11秒ぐらいでした。
----------------------------------------------------------------------------
[測定環境]
P-MMX166, Memory: 128MB
VineLinux1.1CR,kernel 2.0.36

ログインしてkinput2 とkterm が立ち上がるまでの時間を計りました。

Boot直後は、 50秒
一旦、ログアウトしてから再ログインしたら 32秒(以降、同じ)

試しに、メモリを64MBに落としてみましたが、同じ結果でした。

~/.qti18nrc
fixed   -misc-fixed-*-*-*--*-*-*-*-*-*-jisx0201.1976-0,
        -misc-fixed-*-*-*--*-*-*-*-*-*-jisx0208.1983-0
*       -alias-fixed-*-*-*--*-*-*-*-*-*-jisx0201.1976-0,
        -alias-fixed-*-*-*--*-*-*-*-*-*-jisx0208.1983-0


日本KDEユーザ会トップページへ


このサイトは日本KDEユーザ会が著作権を有します。本著作権を表示する限りにおいて転載を許可します。
Copyright (C) 1999 Japan KDE Users' Group. All Rights Reserved.
このサイトに関するご意見・お問い合わせはwebmaster@kde.gr.jpまで。
最終更新日:1999年7月15日
メーリングリスト ダウンロード ニュース KDEとは diff --git a/support/documents/po/howto-i18n.html b/support/documents/po/howto-i18n.html index 20236a7..0128977 100644 --- a/support/documents/po/howto-i18n.html +++ b/support/documents/po/howto-i18n.html @@ -1,306 +1,306 @@ KDE 国際化 HOWTO - +

KDE 国際化 HOWTO

KDE デスクトップ環境


(image: kde)
 
 www.kde.org/i18n.html を見ると、アプリケーションの表のところに
 .pot ファイルへのリンクがあります。それらは以下のような形式になっています。
 
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR Free Software Foundation, Inc.
 # FIRST AUTHOR , YEAR.
 #
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "POT-Creation-Date: 1998-01-02 15:01+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME \n"
 "Language-Team: LANGUAGE \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=CHARSET\n"
 "Content-Transfer-Encoding: ENCODING\n"
 
 #: kdecore/kapp.cpp:407 kdeui/kcolordlg.cpp:469 kdeui/kcontrol.cpp:34
 #: po/texts.cpp:43
 msgid "Help"
 msgstr ""
 
 #: kdecore/kapp.cpp:412
 msgid "About "
 msgstr ""
 
 #: kdecore/kapp.cpp:416 kdecore/kapp.cpp:437
 msgid "About KDE"
 msgstr ""
 
 ヘッダは現在のところ私にとってのみ、翻訳者と連絡をとる必要が
 ある時のために重要なものです。以前は翻訳者はそれを削除しても
 構いませんでしたが、ヘッダなしでは誰が何をしたかを覚えておくのは
 困難です。
 現在のところ、私自身は以下のような形式のものをヘッダに使っています。
 
 msgid ""
 msgstr ""
 "Project-Id-Version: kdelibs\n"
 "POT-Creation-Date: 1998-01-02 21:12+0100\n"
 "PO-Revision-Date: 1997-12-28 19:46+01\n"
 "Last-Translator: Stephan Kulow \n"
 
 もしバージョンを更新した時はここにさらに翻訳者を追加すると
 よいでしょう。
 
 オリジナルのヘッダに話を戻しましょう。"#" に続いてファイル名と
 行番号が書いてあります。それらはアプリケーションの中でその
 メッセージがどのように使われているかを知るためのヒントとなります。
 
 そのファイルを翻訳する場合は msgstr の後ろに Help の翻訳を
 追加して下さい。ドイツ語の場合は以下のようになります。
 
 #: kdecore/kapp.cpp:407 kdeui/kcolordlg.cpp:469 kdeui/kcontrol.cpp:34
 #: po/texts.cpp:43
 msgid "Help"
 msgstr "Hilfe"
 
 簡単でしょう? 時には以下のようなもっと長いメッセージに
 でくわすこともあるでしょう。(スウェーデン語のバージョンより):
 
 #: kdecore/kapp.cpp:439
 msgid ""
 "The KDE Desktop Environment was written by the KDE team.\n"
 "\n"
 "Please send bug reports to kde-bugs@kde.org.\n"
 "\n"
 "\n"
 "KDE was developed with Qt, a cross-platform GUI library.\n"
 "\n"
 "Qt is a product of Troll Tech (http://www.troll.no, info@troll.no).\n"
 "Qt may be used freely to develop free software on the X Window
 System.\n"
 msgstr ""
 "KDE Desktop Environment skrevs av KDE-teamet.\n"
 "\n"
 "V-A ligen, skicka bug-rapporter till kde-bugs@kde.org.\n"$)B
 "\n"
 "\n"
 "Det h-A  programmet utvecklades med hj p av Qt, ett tv kompatibelt "$)B
 "GUI-bibliotek.\n"
 "\n"
 "Qt tillverkas av Troll Tech AS (http://www.troll.no, info@troll.no). Qt
 f-A  "$)B
 "anv-A das fritt f  att utveckla fri programvara p X Window System.\n"$)B
 
 こちらにも msgid と msgstr がありますが、より長い文章が
 続いています。ユーザーに同じ情報が提供される限り、文章の
 配置を同じに保つ必要はありません。ほとんどの場合、長い文章は
 ダイアログボックスか --help の文章に使われるものです。
 どちらの場合にも、オリジナルの方にあるからといって途中にある
 改行を保存する必要はありません。もし翻訳のためにより多くの行が
 必要だとしてもそれは全く問題ありませんし、もしより少なくて
 済んだとしても同様に問題ありません。
 唯一重要な箇所は最後の行です。msgfmt コマンドは両方のバージョンが
 改行有りか、または改行無しで終っているかをチェックします。
 それは、後ろにさらに文章が続く際に重要になるからです。
 
 テンプレートファイルでみかける別のケースはアクセラレータです。
 
 #: po/texts.cpp:48
 msgid "View"
 msgstr ""
 
 #: po/texts.cpp:49
 msgid "&View"
 msgstr ""
 
 最初の方がアクセラレータなしの View で、二番目の方が
 アクセラレータ付きの View です。両方ともメインメニューには
 View として表示されますが、二番目の方は "V" にアンダーラインが
 ついて ALT+V が使えることを示します。ですから、問題は、
 翻訳する時にどこに "&" を置けばいいか、ということになります。
 その答えは簡単です。メニューの中でただ一つの文字だけが
 マークされていることが重要なのです。これはメインメニューと
 全てのポップアップについて言えます。もし英語バージョンのものと
 同じ文字が使えれば、ほとんどどんな場合も安全です。
 (しかし、このようにする必要はありません。)
 例えば、View のドイツ語訳は Ansicht (V なし) で、
 スウェーデン語訳は Utseende (こちらも V なし) です。
 そのような場合(メインメニューでは)、最初の文字が最もよく
 使われます。これは、普通はメニューにはせいぜい 5 か 6 しか
 項目が無いので、問題にはなりません。
 
 さて、次のトピックスに行きましょう。C-形式の文字列です。
 
 #: app.cpp:416
 #, c-format
 msgid "Your time: %02d:%02d:%02d"
 msgstr ""
 
 みんなが少しでも printf() を使った経験があればいいのですが。
 そうすればここで何が起こっているのかを理解する助けになります。
 These messages are translated and then the real time is filled in the gaps. // No sure what real time is
 (訳注:恐らく、この場合、%02d のところが実行時に変換される、ということを
  言いたいのだと思う。%なんちゃらについては、man printf あるいは
  C 言語の解説書を眺めるといいでしょう。)
 重要なのはこれらのメッセージの構造を保存するということです。
 しかし、もちろん、"%02d:%02d:%02d was your time" や
 "you did in %02d hours, %02d minutes and %02d seconds" のように
 翻訳することも適切です。
 やってはいけないのは、"file %s not found, tried %d times" を
 "I have tried %d times to find file %s" のように翻訳することです。
 (訳注: %s と %d の順序が入れ替わっている)
 翻訳したバージョンは、printf() が文字列を数字の場所に入れようとして
 アプリケーションをクラッシュさせるでしょう。
 
 これで個々のメッセージを翻訳する方法が分かったでしょう。
 
 KDE には、kdelibs にいくつかの重要なメッセージを含んだ
 ファイルがあります(前に書いた "View" や "Help" のような)。
 これは最新の状態に保たれなければなりません。
 
 次に、KDE アプリケーションのためのメッセージファイルが
 あります。翻訳されたアプリケーションのためには、両方とも
 (kdelibs のファイルとアプリケーションのファイル)が翻訳されて
 いる必要があります。
 GNU の "gettext" が翻訳作業のためにインストールされていなければ
 なりません。msgfmt コマンドで .po ファイルを .gmo ファイルに
 コンパイルして、それを .mo ファイルとして
  $KDEDIR/share/locale/$LANG/LC_MESSAGES/ にインストールします。
 それが済んだら、"LANG=sv khexdit" とすればスウェーデン語版の
 khexdit が起動しますし、"LANG=de khexdit" とすればドイツ語版の
 khexdit が起動します。
 
 前の節は主に新規の翻訳のための説明ですが、既存の翻訳を
 アップデートする必要もかなりあります。既存の翻訳ファイルを
 手に入れると(スナップショットから)、テンプレートファイルに
 あるものと全く同じように扱われる空のメッセージがあります。
 しかし、時々 以下のようなあいまい(fuzzy)な項目というのもあります。
 
 #: kfmprops.cpp:697
 #, fuzzy
 msgid "Run normally"
 msgstr "In Terminal ausf-A ren"$)B
 
 これは msgmerge (私がこの仕事のために使っている
 アプリケーション)による推測です。時々この推測は
 うまくいくのですが、この場合は完全に誤りです。
 気にせず、この項目を更新してあいまい(fuzzy)という
 コメントを削除して下さい。というのは、msgfmt は
 あいまい(fuzzy)と印の付けられた項目を無視するからです。
 
 その他にも以下のような使われていない翻訳があるかもしれません。
 
 #~ msgid "Do you really want to quit?"
 #~ msgstr "Wirklich beenden?"
 
 #~ msgid "&How can I ..."
 #~ msgstr "&Wie kann ich ...?"
 
 これらの翻訳は一時使われていましたが、もはやアプリケーションの
 一部ではないか、(それよりもあり得るのは)変更されたかです。
 これは、"Do you really want to exit?" かそれと似た項目が
 なくて、msgmerge がこれらのメッセージのつながりを
 見つけられなかったのです。もし残りの部分を更新したのなら
 削除しても構いません。ただのコメントですから。
 
 もし翻訳が出来たら、それらを Stephan Kulow  に
 email して下さい。私がそれらを KDE のソースに追加します。
 
 ここに書いておきたいもう一つのトピックスは .kdelnk ファイルに
 ついてです。これはもうちょっと複雑です。というのは、
 それらは .pot ファイルのように全部が一か所にあるわけでは
 ないからです。
 You'll need to make patches to get them applied.
 
 $KDEDIR/share/applnk を見ると、kpanel によってスキャンされる
 ファイルの構造があります。これらのファイルと、それらが入っている
 ディレクトリも翻訳できます。しかし、そこではなくて
 ソースパッケージの方を翻訳して下さい。kdebase/applnk に
 ほとんどものがあります。例えば、kdebase/applnk/Games には
 .directory ファイルがあって、以下のようになっています。
 
 [KDE Desktop Entry]
 Name=Games
 Name[de]=Spiele
 Name[nl]=Spelletjes
 Name[pl]=Gry
 Name[cs]=Hry
 
 見れば分かるように、ここにはほんの少しの翻訳しか追加されていません。
 .directory ファイルか .kdelnk ファイル、それは以下のようになっています、を
 
 # KDE Config File
 [KDE Desktop Entry]
 Name=Hex Editor
 Name[de]=Hexeditor
 Name[pl]=HexEdytor
 Exec=khexdit -caption "%c" -icon "%i" -miniicon "%m" %f
 Icon=khexdit.xpm
 Type=Application
 DocPath=khexdit/index.html
 Comment=A simple Hex editor
 Comment[de]=Ein Editor f-A  bin e Dateien$)B
 Comment[pl]=Prosty edytor plik-A  binarnych$)B
 Terminal=0
 MiniIcon=khexdit.xpm
 
 翻訳する場合は、単に Name[$LANG] や Comment[$LANG] といった
 行をファイルに追加して、最新のスナップショットに対する
 パッチとして私に送って下さい。私はあなたがスナップショットを
 ダウンロードして、1時間かあるいは KDE を使うのに費す時間を
 割いて翻訳して、同じ日にパッチを送って下さることを本当に
 お願いします。同じ日に二つのパッチを受け取らければいいのですが、
 これは私が目を光らせていなければならないような事なのです;)。
 
 もしパッチの作り方を知らない場合は、ソース(それを
 コンパイルしないのがベストです;)を別のディレクトリに
 (例えばkdebase を kdebase.origに)コピーして下さい。
 それから kdebase を編集して、それが済んだら
 "diff -U0r kdebase.orig kdebase | gzip > kdebase-patch.gz"
 として結果を私に送って下さい。
 
 さぁ、これがあたなの助けとなって、私のメールボックスをいっぱいに
 してくれますように;)。
 
 Stephan Kulow
 
もしさらに質問があれば日本語化チームコーディネーターに連絡して下さい。

原文はこちら

日本誤^H語訳 : 1998/01/11 高木淳司
追記 : 1999/10/04 菰田泰生

diff --git a/support/documents/po/index.php b/support/documents/po/index.php index e0e4e7d..acb989d 100644 --- a/support/documents/po/index.php +++ b/support/documents/po/index.php @@ -1,234 +1,234 @@ KDE 日本語翻訳プロジェクト '; ?> - +

KDE 日本語翻訳プロジェクト

現在の状況: KDE-3.1、及びCVS版用の翻訳を募集しています。新規翻訳、翻訳の修正などがありましたら担当までメールを下さい。
細かい情報は以前のページに載っています。

メッセージカタログの翻訳

KDEではメッセージ、ドキュメントとも翻訳はメッセージカタログ形式のファイルを使用します。 翻訳をやってみようという方は以下を参考にやってみて下さい。ドキュメント翻訳の詳しい仕組みについてはドキュメントの詳細の項で説明しています。一応本家KDE projectの流儀に乗っ取っていますが一部日本語チームに特化した情報も入っています。

手順

既存の翻訳、一部翻訳されたファイル またはテンプレートファイルをダウンロードする

翻訳状況を確認する

Kbabelを設定する (翻訳はKBabelというツールを使って行います。KBabelの設定はここ)

対訳表KDEの独自拡張を読む

訳す

もう一度対訳表を読んで確認

公表する(KDeveloper-MLか担当宛)


翻訳状況の確認

以前は翻訳状況をHTMLにして公開していたのですが手間がかかる、利用者が少ないという理由から
現在は更新していません。それではどうやって翻訳状況を確認するかと言うとこれには2つの方法があります。

(1)KBabelを使う
KBabelのカタログマネージャというツールを使います。これを利用するにはテンプレートと日本語翻訳ファイルを
インストールし、KBabelの設定でこれらのディレクトリを指定する必要があります。
(図)カタログマネージャ

(2)i18n.kde.orgのHighscore for jaを参照する。
これは本家が提供しているTranslation Statisticsです。


対訳表

更新中です。しばらくお待ち下さい。旧版はここ


KDEの独自拡張

KDEにはgettextにはないメッセージ翻訳の独自拡張があります。これらは間違えると深刻なので気を付けてください。
msgidが_:や_n:で始まるのが特徴です。_:や_n:で始まる行は訳さないで下さい。

translation information
これらは翻訳者情報です。アプリケーションのバージョン情報の「翻訳」のところに表示されます。
複数人いる場合はカンマで区切ります。

#: _translatorinfo.cpp:1
msgid ""
"_: NAME OF TRANSLATORS\n"
"Your names"
msgstr "Taiki Komoda"

#: _translatorinfo.cpp:3
msgid ""
"_: EMAIL OF TRANSLATORS\n"
"Your emails"
msgstr "kom@kde.gr.jp"

context information
これは文脈情報です。短縮語とかで分かりづらい場合に翻訳者にこの語がどういう文脈で使われているかを
示します。

#: kdecore/klocale.cpp:117
msgid ""
"_: June\n"
"Jun"
msgstr "6月"

plural form
これは複数形情報です。gettext-0.10. 36以降で導入されたものとは書式が若干違います。ただ日本語の場合はNo Pluralですので
単純に下のようになります。

#: kfile/kfiledialog.cpp:1220 kio/defaultprogress.cpp:140
#, c-format
msgid ""
"_n: %n directory\n"
"%n directories"
msgstr "%n ディレクトリ"

ちなみにgettextは0.10.35を使用するのがいいらしいです。

[参考]
Plural=3の言語の場合は以下のようになります。
msgid ""
"_n: %n directory\n"
"%n directories"
msgstr ""
"%n Katalog\n"
"%n Kataloga\n"
"%n Katalogiv"

[注意]
kdelibs.poに以下のような項目があります。
msgid ""
"_: Definition of PluralForm\n"
"Look at klocale.cpp for now"

これは訳すものではなく設定情報です。これに対するmsgstrは"NoPlural"にします。
(kdelibs.poはできるだけ私がメインテナンスします)


ドキュメントの詳細

翻訳中、査読中ファイル

査読待ちファイル。いままで日本語化されていないファイルがここにあります。ご覧ください。

過去の翻訳ファイルに関してはのここにあります。

設定

まずKBabelを設定してください。

翻訳

KBabelで翻訳します。

KDE翻訳エキスパート向け情報

XML/POフォーマット KDEでは2.2からドキュメントのフォーマットをXMLに変更しました。これは世界的に標準になりつつあるXMLをドキュメントフォーマットの中核にしようとしたものです。
ドキュメントの翻訳には一つ問題がありました。それはもしオリジナルの文書が更新された場合にそれに追随するのが難しいということです。ましてやSGMLやXMLのタグだらけの文書の中の更新された一部分を探し出すのはそれだけで一苦労で肝心の翻訳に労力が割けません。そこで考え出された方法がXMLから擬似的にPOファイル(メッセージカタログ)を作成し、それを既に熟成された感のあるメッセージカタログ翻訳ツールKBabelで翻訳しそれをまたXMLに変換するという方法です。こうすることで翻訳者はタグをほとんど意識することなく、更新された部分も一目瞭然(原文と翻訳が対応した形になっているため)に翻訳だけに集中して作業ができます。POファイルはCVSで自動的に生成され、PO->XMLの変換は各国語のコーディネータが行います。
このように翻訳者が行うKDEドキュメント翻訳のほぼ全ての作業はKBabelで行えます。つまりKBabelさえ使いこなせるようになれば翻訳に協力して頂くことができるということです。もちろんこの上位でどういうことが行われているかを理解していただくことはKDEのドキュメントシステムに対するより深い理解につながりますが、これは必ずしも必要ではありません。いずれにせよKBabelを使うことで効率的なKDEドキュメントの翻訳が行えるでしょう。

ドキュメントの変換の仕方

> ちなみに最初からKBabelで翻訳すればこんな苦労はしなくてすみます;)。
この方法はKDE2のドキュメントが存在し、かつほとんど情報が変わっていない場合に有効です。
以下の手順でXML/PO化します。ただほとんどの場合ものすごい労力を伴うことに注意してください。
エンコーディングをUTF8に変更する。ほとんどの場合元ファイルはEUC-JP。
% iconv -f ujis -t utf8 index.docbook > index.xml
% mv index.xml index.docbook
(注)XMLファイルの拡張子は.xmlではなく.docbookです。
一部の記号をXML対応にする(このコマンドは日本語を破壊するので使用しなくても手間は変わらないかもしれません;()
% xmlizer index.docbook
日本語の場合一部の文字が破壊されるのでYudit(UNICODEエディタ)で直す;(。このエディタは壊れたシーケンスが入っていてもなんとか編集
できます。
% yudit index.docbook
XML的に正しいかのチェック。正しくない場合はYuditで直す(結構エラーが出ます ;()。タグがXMLで定義されていないこともあります。
% checkXML index.docbook
もしくは
% meinproc --check index.docbook
これでエラーが出なくなったら
% meinproc index.docbook
とするとindex.html以下様々なファイルが作成され、ヘルプの閲覧ができます。(適当なディレクトリで
読み込めばスタイルシートのファイルも読み込まれます。)
この状態で閲覧可能なXMLファイルができました。次にメッセージファイルへの分割を行います。メッセージファイルへの分割はタグをいくつか直せば通ることがありますがたいていの場合パラグラフが足りなかったりタグが異なったりします。Kbabelでメッセージカタログ化されたものを確認すれば不整合が起こっているのが分かるでしょう。そのような場合にはタグを直し、パラグラフが足りないところには その場で訳すか原文をはさみます。
% split2po 原文のXML 翻訳されたXML > app.po
% kbabel app.po
この作業でエラーが出なくなり、かつオフセットがなくなったらXMLに戻す際にエラーが起こらないか確認します。
% po2xml 原文のXML 翻訳されたPOファイル > index.docbook

エラーが出なくなったらようやくそのpo、xmlとも最新のフォーマットに追いつきました。お疲れ様でした。

メッセージカタログ化した後は修正はメッセージカタログに対して行います。なぜならKbabelで翻訳する場合パラグラフ内のタグしか見えません。その他のタグは自動的に処理してくれるためここらへんで起こるエラーが防げます。

diff --git a/support/documents/po/indexold.html b/support/documents/po/indexold.html index c544020..dfc03bd 100644 --- a/support/documents/po/indexold.html +++ b/support/documents/po/indexold.html @@ -1,196 +1,196 @@ - + KDE メッセージファイル翻訳プロジェクト  
KDE Project

KDE メッセージファイル翻訳プロジェクト


メッセージファイルの翻訳

ここはメッセージファイル(通称poファイル)翻訳のコーナーです。翻訳をやってみようという方は以下を参考にやってみて下さい。
一応本家KDE projectの流儀に乗っ取っていますが一部日本語チームに特化した情報も入っています。

手順
既存の翻訳、一部翻訳されたファイルとテンプレートファイルをダウンロードする→
翻訳状況を確認する→ Kbabelを設定する(gettextの知識がない場合は本家 KDE 国際化ページの KDE 国際化 HOWTOを読む)→
対訳表KDEの独自拡張を読む→ 訳す→ もう一度対訳表を読んで確認→公表する
現在KDE-2.2、及びCVS版用の翻訳を募集しています。新規翻訳、翻訳の修正などがありましたら担当までメールを下さい。
最後に行なわれた修正が最近の場合でも新しい翻訳が追加されている場合があるので、既存の翻訳も通読してみて下さい。

既存の翻訳、一部翻訳されたファイル またはテンプレートファイル をダウンロードして、その中のpoを翻訳します。
翻訳のファイルの標準のエンコーディングは UTF-8 ですがUTF-8 編集の環境がない場合は日本語 EUC でも構いません。
使いなれるとエラーチェックしてくれたりするKBabelはかなり便利なので、できるだけKBabelを使って下さい。


翻訳状況の確認

以前は翻訳状況をHTMLにして公開していたのですが手間がかかる、利用者が少ないという理由から
現在は更新していません。それではどうやって翻訳状況を確認するかと言うとこれには2つの方法があります。
(1)KBabelを使う
KBabelのカタログマネージャというツールを使います。これを利用するにはテンプレートと日本語翻訳ファイルを
インストールし、KBabelの設定でこれらのディレクトリを指定する必要があります。
(図)カタログマネージャ

(2)i18n.kde.orgのHighscore for jaを参照する。
これは本家が提供しているTranslation Statisticsです。ただし未着手のファイルは表示されていないので
注意してください。パッケージ全体の翻訳状況はStatus table of KDE Translations for the HEAD branchで参照できます。


対訳表

更新中です。しばらくお待ち下さい。旧版はここ

KDEの独自拡張

KDEにはgettextにはないメッセージ翻訳の独自拡張があります。これらは間違えると深刻なので気を付けてください。
msgidが_:や_n:で始まるのが特徴です。_:や_n:で始まる行は訳さないで下さい。

translation information
これらは翻訳者情報です。アプリケーションのバージョン情報の「翻訳」のところに表示されます。
複数人いる場合はカンマで区切ります。

#: _translatorinfo.cpp:1
msgid ""
"_: NAME OF TRANSLATORS\n"
"Your names"
msgstr "Taiki Komoda"

#: _translatorinfo.cpp:3
msgid ""
"_: EMAIL OF TRANSLATORS\n"
"Your emails"
msgstr "kom@kde.gr.jp"

context information
これは文脈情報です。短縮語とかで分かりづらい場合に翻訳者にこの語がどういう文脈で使われているかを
示します。

#: kdecore/klocale.cpp:117
msgid ""
"_: June\n"
"Jun"
msgstr "6月"

plural form
これは複数形情報です。gettext-0.10. 36以降で導入されたものとは書式が若干違います。ただ日本語の場合はNo Pluralですので
単純に下のようになります。

#: kfile/kfiledialog.cpp:1220 kio/defaultprogress.cpp:140
#, c-format
msgid ""
"_n: %n directory\n"
"%n directories"
msgstr "%n ディレクトリ"

ちなみにgettextは0.10.35を使用するのがいいらしいです。

[参考]
Plural=3の言語の場合は以下のようになります。
msgid ""
"_n: %n directory\n"
"%n directories"
msgstr ""
"%n Katalog\n"
"%n Kataloga\n"
"%n Katalogiv"

[注意]
kdelibs.poに以下のような項目があります。
msgid ""
"_: Definition of PluralForm\n"
"Look at klocale.cpp for now"

これは訳すものではなく設定情報です。これに対するmsgstrは"NoPlural"にします。
(kdelibs.poはできるだけ私がメインテナンスします)


翻訳に役立つ各種ツール

PO ファイル翻訳支援ツール UTF-8(UNICODE のエンコーディングの1つ)対応エディタ UNICODE <-> その他のエンコーディングのコンバータ

ファイル置場

以下のファイルのライセンスは全てGPL2です。自由に配布できます。
配布等で疑問がございましたら 担当までメールを下さい。

KDE-2.2用
KDE-2.2用メッセージファイルは現在JKUGでベータテストを行なっております。
インストールして不具合を見つけ出して下さい。未翻訳の部分の翻訳も受け付けております。
既存の翻訳、一部翻訳されたファイル
テンプレートファイル

KDE-2.0.1, KDE-2.1, KDE-2.1.1用
KDE-2.0.1, KDE-2.1, KDE-2.1.1では本家の配布に含まれます。

KDE-2.0用
kde-i18n-ja-日付.tar.bz2をダウンロードして下さい。
インストールは以下の通りです

$ tar xvIf kde-i18n-ja-日付.tar.bz2
$ cd kde-i18n-ja
$ ./configure --prefix=$KDEDIR
$ make
$ su
パスワード
# make install

KDE-1.1.2 用アップデートパッケージ
KDE-1.1.2 には標準で日本語po,kdelnk日本語エントリーが含まれています。
KDE-1.1.2 の po ファイルのアップデートパッケージです。
解凍後make,make installでインストールされます。
(1)KDE-1.1.2用アップデートパッケージ(kde-1.1.2-ja.po_modified.tar.bz2)

KDE-1.1.1用
最新版では全アプリケーションの po が含まれます。
po と mo はどちらかがあれば十分です。両方は要りません。
(2)開発者用日本語KDE-1.1.1.poファイル(pofile-ja-1.0.0pre1.tar.bz2)
(3)ユーザー用日本語KDE-1.1.1.moファイル(locale-ja-1.0.0pre1.tar.bz2)

その他
(4)非標準アプリケーション用.poファイル
オフィシャルKDEパッケージに含まれないKDEアプリケーションのpoファイルです。


日本 KDE ユーザ会トップページ


このサイトは日本KDEユーザ会が著作権を有します。本著作権を表示する限りにおいて転載を許可します。
Copyright (C) 1999-2001 Japan KDE Users' Group. All Rights Reserved.
このサイトに関するご意見・お問い合わせはこちらまで。
最終更新日:2001年6月15日
メーリングリストダウンロードニュースKDEとは diff --git a/support/documents/po/kbabel.html b/support/documents/po/kbabel.html index e74258c..910a251 100644 --- a/support/documents/po/kbabel.html +++ b/support/documents/po/kbabel.html @@ -1,136 +1,136 @@ - + こんなに簡単KBabel  
KDE Project

こんなに簡単KBabel


ここではKBabelの最低限の設定と使用法について述べていきます。かなりビジュアルに書いたので読み込みに
時間がかかるかも知れませんが、分かりやすくなっているはずです。
 

KBabelとは

KBabelはKDEの翻訳チームが使用している翻訳補助ツールです。KDE1の頃にあったKTranslatorに比べて
検索機能、使い勝手、UTF8エンコーディング、エラーチェック機能など大幅に機能が強化されています。
KDEだけでなく他の翻訳プロジェクトの人にも有用なツールでしょう。

インストール

ここではKBabel-0.8の場合で説明します。KDE-2.2系に含まれるKBabelはバージョン0.9.xですが
日本語メッセージファイルとの相性が悪いみたいなので(本家に問い合わせているところです),0.8を
使用して下さい。インストールにはlibdb2、コンパイルにはlibdb2-devが必要です。
コンパイルは以下の通りです。
./configure --prefix=$KDEDIR
make
su
make install

KBabelの設定

KBabelを立ち上げると魚のスプラッシュスクリーンの後にKBabelが立ち上がります。
初回立ち上げ時は設定の入力を求めるダイアログが出て来ます。

(画面1 設定の入力を求めるダイアログ)

「はい」を押すと次の画面になります。

(画面2 設定ダイアログ- 個人情報)

ここには自分の名前とメールアドレスを入力して下さい。そのほかの情報は上の画面を参考にして下さい。

個人情報の他の大きな設定項目としては「エディタ」、「検索」、「保存」、「カタログマネージャ」、「その他」があります。
そのうち「エディタ」に関しては好みで設定して下さい。「その他」はいじる必要が無いと思います。
次に「検索」の設定を行います。

(画面3 設定ダイアログ-検索)

検索は翻訳中にデータベース(3種類ありますがこれの設定はで説明します)の中から検索してきて
画面右下部に表示してくれます。「自動的に検索を開始」をチェックすると次のメッセージに移動したときに
自動的に検索を開始して表示してくれます。ちなみに3種類というのは以下の通りです。
翻訳データベース:内蔵データベースシステムによってローカルにあるファイルからインデックスを作成します。
po補助:今までに翻訳されたものを合わせた日本語翻訳ファイルから検索します。
po要約:他の言語(ドイツ語とか)のファイルから該当語を探して来ます。普通必要無いでしょう^^;;;
相当遅いマシンならともかく(まあ486でKDE使っている人とかいないでしょう^^;)、普通のマシンなら
数分でインデックスを作成できるので翻訳データベースを使用するのがよいでしょう。

設定は辞書の設定のところで説明します。

次に「保存」の項目です。
(画面4 設定ダイアログ-保存)

ここで重要なのはエンコーディングです。これは必ずUTF8にして下さい。KDE2ではほとんどの文字を
内部でUTF8で扱っています。メッセージカタログもja.poは全てUTF8になっています。一般的なエディタでは
UTF8を扱えないのが多いですが、KBabelでメッセージカタログを扱う分にはほとんど意識しないで済むので
ここは必ずUTF8にして下さい。

最後にカタログマネージャの項目です。
(画面5 設定ダイアログ-カタログマネージャ)

まずテンプレートと日本語メッセージファイルをここからダウンロードします。
そして展開したディレ クトリをそれぞれ上に指定します。例えば/usr/local/extend/kde-i18nというディレクトリで
これらのファイルを展開した場合は上の画面の ようにします。

以上で本体の設定は終了です。なおこれらはメニューバーの「設定」→「KBabelの設定」から再設定できます。
 

辞書の設定

辞書の設定はメニューバーの「設定」→「辞書の設定」で行います。

・翻訳データベースの設定
「辞書の設定」から「翻訳データベース」を選択すると設定ダイアログが現れます。
(画面6 翻訳データベース設定ダイアログ)

グッドキーというのはどれだけクエリーに近いかということです。ここらへんはあまりいじる必要が無いでしょう。
データベースインデックスを作成するには上の画面で「ディレクトリ、サブディレクトリをスキャン」を選択して
日本語メッセージファイルを展開したできたディレクトリ(さっきの例なら/usr/local/extend/kde-i18n/ja/messages)
を指定するとインデックス作成が始まります。数分待ちましょう。

・po補助/要約の設定
「辞書の設定」から「po補助」または「po要約」を選択すると設定ダイアログが現れます。
(画面7 po補助設定ダイアログ)

ここからダウンロードしたファイルを解凍しそのファイルが置いてあるディレクトリを指定します。
変数が使用できますが普通に直接指定すると良いでしょう。

カタログマネージャ

ファイルの選択をしたり、翻訳の進捗の確認をするのにはカタログマネージャというものを使用します。
メニューバーの「ツール」→「カタログマネージャ」から起動します。
(画面8 カタログマネージャ)

フォルダをクリックするとツリーが展開されます。×印は完全に未翻訳、!印は部分的に翻訳されている、
V印は翻訳済みです。×!を減らしていきましょう :-)

使用法

KBabelは4つの部分に分かれています。
(画面9 KBabel)

左上が翻訳する文字列(Msgid)、左下が翻訳を入力するフィールド(Msgstr)、右上が翻訳情報、左下が翻訳結果です。
左下の部分に翻訳を入力していきます。文法が間違っていると赤く表示されます。

ショートカットキーがいくつか設定されていますが特に以下のショートカットはよく使います。
PageDown 次のメッセージ
PageUp 前のメッセージ
Ctrl+Alt+PageDown 次のFuzzyか未翻訳メッセージ
Ctrl+Space MsgidをMsgstrにコピー
Ctrl+Alt+Space 検索結果をMsgstrにコピー

以上です。KBabelを使ってKDEのメッセージ・ドキュメントをがんがん翻訳して下さい:-)。

リンク

KBabelホームページ
KDE Internationalization Project http://i18n.kde.org

不明な点はkom@kde.gr.jpまでメールを下さい。

メッセージ翻訳プロジェクトトップページ


このサイトは日本KDEユーザ会が著作権を有します。本著作権を表示する限りにおいて転載を許可します。
Copyright (C) 1999-2001 Japan KDE Users' Group. All Rights Reserved.
このサイトに関するご意見・お問い合わせはこちらまで。
最終更新日:2001年7月09日
メーリングリストダウンロードニュースKDEとは diff --git a/support/documents/po/kdejpdoc.html b/support/documents/po/kdejpdoc.html index 413e50c..71f54ae 100644 --- a/support/documents/po/kdejpdoc.html +++ b/support/documents/po/kdejpdoc.html @@ -1,2179 +1,2179 @@ - + KDE-日本語翻訳状況 KDE国際化 - 日本語翻訳状況 ...更新 2001/01/08 5:00 JST

          back to kde-jp


この下の表にKDE-2.0のメッセージファイル翻訳の進行状況が載っています。

・.poファイルを作ったぞ、もしくはこれは俺が訳すぞ、というのがある方はいう方はMailで送って下さい。
 致命的なミスがない限りそのまま載せます。
・MLのほうに流れてきた情報も気付き次第載せます。
・意見、情報等はkom@kde.gr.jp まで
・poファイルというのはKDEにおいてはウィンドウのメニューのところを日本語化するファイルです。
 msgfmt(gettext)というプログラムを使ってコンパイルして使います。メッセージカタログというのが正式名称です。
・本家KDE国際化プロジェクトには更新があり次第送っていきます。

この表の見方  ○:翻訳済み /△:翻訳中 /-:手つかず /na:not available
パッケージ名 .po(2.0用) 翻訳者(敬称略)
kdelibs
desktop ○ 20010104 篠原 昇,Taiki Komoda
kdelibs ○ 20010104 篠原 昇
knotify ○ 20010104 篠原 昇
kdeadmin
kcmlilo ○ 20010104 篠原 昇
kcron ○ 20010104 篠原 昇
kdat ○ 20010104 篠原 昇
kpackage ○ 20010104 篠原 昇
ksysctrl ○ 20010104 篠原 昇
ksysv ○ 20010104 篠原 昇
kuser ○ 20010104 篠原 昇
kwuftpd ○ 20010104 篠原 昇
secpolicy ○ 20010104 篠原 昇
kdebase
appletproxy ○ 20010104 篠原 昇
childpanelextension ○ 20010104 篠原 昇
clockapplet ○ 20010104 篠原 昇
drkonqi ○ 20010104 篠原 昇
extensionproxy ○ 20010104 篠原 昇
filetypes ○ 20010104 篠原 昇
htmlsearch ○ 20010104 篠原 昇
kaccess ○ 20010104 篠原 昇
kappfinder ○ 20010104 篠原 昇
kcmaccess ○ 20010104 篠原 昇
kcmarts ○ 20010104 篠原 昇
kcmbackground ○ 20010104 篠原 昇
kcmbell ○ 20010104 篠原 昇
kcmcolors ○ 20010104 篠原 昇
kcmcrypto ○ 20010104 篠原 昇
kcmemail ○ 20010104 篠原 昇
kcmenergy ○ 20010104 篠原 昇
kcmfonts ○ 20010104 篠原 昇
kcmhtmlsearch ○ 20010104 篠原 昇
kcmicons ○ 20010104 篠原 昇
kcmiconthemes ○ 20010104 篠原 昇
kcminfo ○ 20010104 篠原 昇
kcminput ○ 20010104 篠原 昇
kcmkclock ○ 20010104 篠原 昇
kcmkdb ○ 20010104 篠原 昇
kcmkeys ○ 20010104 篠原 昇
kcmkicker ○ 20010104 篠原 昇
kcmkio ○ 20010104 篠原 昇
kcmkmix ○ 20010104 篠原 昇
kcmkonq ○ 20010104 篠原 昇
kcmkonqhtml ○ 20010104 篠原 昇
kcmkurifilt ○ 20010104 篠原 昇
kcmkwm ○ 20010104 篠原 昇
kcmlaptop ○ 20010104 篠原 昇
kcmlayout ○ 20010104 篠原 昇
kcmlilo ○ 20010104 篠原 昇
kcmlocale ○ 20010104 篠原 昇
kcmmidi ○ 20010104 篠原 昇
kcmnotify ○ 20010104 篠原 昇
kcmodbc ○ 20010104 篠原 昇
kcmsamba ○ 20010104 篠原 昇
kcmsample ○ 20010104 篠原 昇
kcmscreensaver ○ 20010104 篠原 昇
kcmsmserver ○ 20010104 篠原 昇
kcmstyle ○ 20010104 篠原 昇
kcmtaskbar ○ 20010104 篠原 昇
kcmthemes ○ 20010104 篠原 昇
kcmvirtualdesktops ○ 20010104 篠原 昇
kcontrol ○ 20010104 篠原 昇
kdcop ○ 20010104 篠原 昇
kdebugdialog ○ 20010104 篠原 昇
kdesktop ○ 20010104 篠原 昇
kdesu ○ 20010104 篠原 昇
kdesud ○ 20010104 篠原 昇
kdewizard ○ 20010104 篠原 昇
kdm ○ 20010104 篠原 昇
kdmconfig ○ 20010104 篠原 昇
kfindpart ○ 20010104 篠原 昇
kfmclient ○ 20010104 篠原 昇
kfmexec ○ 20010104 篠原 昇
khelpcenter ○ 20010104 篠原 昇
khotkeys ○ 20010104 篠原 昇
kicker ○ 20010104 篠原 昇
kio_help ○ 20010104 篠原 昇
kio_man ○ 20010104 篠原 昇
klegacyimport ○ 20010104 篠原 昇
klipper ○ 20010104 篠原 昇
klock ○ 20010104 篠原 昇
kmenuedit ○ 20010104 篠原 昇
kminipagerapplet ○ 20010104 篠原 昇
konqueror ○ 20010104 篠原 昇
konsole ○ 20010104 篠原 昇
kpager ○ 20010104 篠原 昇
krdb ○ 20010104 篠原 昇
krunapplet ○ 20010104 篠原 昇
ksmserver ○ 20010104 篠原 昇
ksplash ○ 20010104 篠原 昇
kstart ○ 20010104 篠原 昇
ksysguard ○ 20010104 篠原 昇
ktaskbarapplet ○ 20010104 篠原 昇
ktip ○ 20010104 篠原 昇
kwin ○ 20010104 篠原 昇
kwrite ○ 20010104 篠原 昇
kxkb ○ 20010104 篠原 昇
kxmlrpcd ○ 20010104 篠原 昇
kxsconfig ○ 20010104 篠原 昇
libkonq ○ 20010104 篠原 昇
libtaskbar ○ 20010104 篠原 昇
nsplugin ○ 20010104 篠原 昇
passwords ○ 20010104 篠原 昇
quicklauncher ○ 20010104 篠原 昇
kdegames
kabalone ○ 20010107 Taiki Komoda
kasteroids ○ 20010107 Taiki Komoda
katomic ○ 20010107 Taiki Komoda
kblackbox ○ 20010107 Taiki Komoda
kjezz ○ 20010107 Taiki Komoda
kjumpingcube ○ 20010107 Taiki Komoda
kmahjongg ○ 20010107 Taiki Komoda
kmines ○ 20010107 Taiki Komoda
konquest ○ 20010107 Taiki Komoda
kpat ○ 20010107 Taiki Komoda
kpoker ○ 20010107 Taiki Komoda
kreversi ○ 20010107 Taiki Komoda
ksame ○ 20010107 Taiki Komoda
kshisen ○ 20010107 Taiki Komoda
ksirtet ○ 20010107 Taiki Komoda
ksmiletris ○ 20010107 Taiki Komoda
ksnake ○ 20010107 Taiki Komoda
ksokoban ○ 20010107 Taiki Komoda
kspaceduel ○ 20010107 Taiki Komoda
ktron ○ 20010107 Taiki Komoda
ktuberling ○ 20010107 Taiki Komoda
kwin4 ○ 20010107 Taiki Komoda
lskat ○ 20010107 Taiki Komoda
multiplayers ○ 20010107 Taiki Komoda
kdegraphics
kdvi ○ 19990601 Taiki Komoda
kfax ○ 19990601 Taiki Komoda
kfract ○ 19990601 Taiki Komoda
kghostview ○ 20001018 Taiki Komoda
kpixmap2bitmap - -
ksnapshot ○ 19990613 Kimiyasu Tomiyama
kview ○ 20001018 Taiki Komoda
kviewshell ○ 20001018 Taiki Komoda
pixie ○ 20001029 Taiki Komoda
kdemultimedia
aktion ○ 20010104 篠原 昇
artsbuilder ○ 20010104 篠原 昇
artscontrol ○ 20010104 篠原 昇
kaiman ○ 20010104 篠原 昇
kcmkmix ○ 20010104 篠原 昇
kmid ○ 20010104 篠原 昇
kmidi ○ 20010104 篠原 昇
kmix ○ 20010104 篠原 昇
kscd ○ 20010104 篠原 昇
kdenetwork
kcmktalkd ○ 20010104 篠原 昇
keystone ○ 20010104 篠原 昇
kit ○ 20010104 篠原 昇
kmail ○ 20010104 篠原 昇
knode ○ 20010104 篠原 昇
korn ○ 20010104 篠原 昇
kppp ○ 20010104 篠原 昇
kppplogview ○ 20010104 篠原 昇
ksirc ○ 20010104 篠原 昇
ktalkd ○ 20010104 篠原 昇
kdepim
(abbrowser) - -
(empath) - -
korganizer ○ 20000930 Taiki Komoda
(kpilot) - -
(twister) - -
kdesdk
kbabel ○ 20000930 Taiki Komoda
kbabeldict - -
kdevelop ○ 19991020 Taiki Komoda
ktranslator ○ 19991018 井村 竜一郎
kdetoys
amor ○ 20010102 Taiki Komoda
kmoon ○ 20010102 Taiki Komoda
kodo ○ 20010102 Taiki Komoda
kscoreapplet ○ 20010102 Taiki Komoda
kteatime ○ 20010102 Taiki Komoda
ktux ○ 20010102 Taiki Komoda
kworldwatch ○ 20010102 Taiki Komoda
kdeutils
ark ○ 20010104 篠原 昇
kab ○ 20010104 篠原 昇
karm ○ 20010104 篠原 昇
kcalc ○ 20010104 篠原 昇
kcharselect ○ 20010104 篠原 昇
kcmfontmanager ○ 20010104 篠原 昇
kcmlaptop ○ 20010104 篠原 昇
kdepasswd ○ 20010104 篠原 昇
kdessh ○ 20010104 篠原 昇
kdf ○ 20010104 篠原 昇
kedit ○ 20010104 篠原 昇
kfind ○ 20010104 篠原 昇
kfloppy ○ 20010104 篠原 昇
khexedit ○ 20010104 篠原 昇
kjots ○ 20010104 篠原 昇
klaptopdaemon ○ 20010104 篠原 昇
kljettool ○ 20010104 篠原 昇
klpq ○ 20010104 篠原 昇
knotes ○ 20010104 篠原 昇
kpm ○ 20010104 篠原 昇
ktimemon ○ 20010104 篠原 昇

 
koffice
kchart ○ 20000930 Taiki Komoda
killustrator ○ 19990608 堀江 信之
kimageshop ○ 20000927 Taiki Komoda
koffice ○ 20001001 Taiki Komoda
koshell ○ 20000924 Taiki Komoda
kpresenter ○ 20000924 Taiki Komoda
kspread ○ 20001228 Taiki Komoda
kspreadcalc_calc ○ 20000930 Taiki Komoda
kword ○ 20000924 Toshihiro Inoue
others(for 2.0)、または標準パッケージに含まれていないもの
caitoo ○ 19991014 塙 雅典
gofai - -
iconpackager ○ 20000730 Yohei Makaki
karchie ○ 19990613 井村 竜一郎
kautorun △ 20000710 Yohei Makaki
kapm ○ 19991104 塙 雅典
kbiff ○ 19990613 井村 竜一郎
kcdtools ○ 19991014 塙 雅典
kclock ○ 20000108 坂口聡
kcmail ○ 20000124 坂口聡
kcmbind - -
kcmdhcpd ○ 20000117 坂口聡
kcmfontmanager ○ 20000730 Yohei Makaki
kcmgofai - -
kcmiwatcher - -
kcmkisdn - -
kcmprinter - -
kcrontab - -
kdbg ○ 20000404 石田絵理
kdepass - -
kdiff ○ 19990208 堀江 信之
kexpress - -
kfinger ○ 19990613 井村 竜一郎
kfortune - -
kglchess - -
kgoodstuff ○ 19990208 堀江 信之
kgrapher - -
kiconedit ○ 19990608 堀江 信之
kirc - -
kisdn - -
kjoy - -
kjukebox ○ 20000518 Yohei Makaki
kless - -
klilo - -
klyx - -
kmaster - -
kmessage - -
kmp3 ○ 19991014 Koji TORIYAMA
kmpg ○ 19990428 Kimiyasu Tomiyama
knetmon - -
knotify - -
knu ○ 19990613 井村 竜一郎
konv - -
kpaint 堀江 信之 堀江 信之
kray - -
krubik - -
ksamba ○ 20000117 坂口聡
ksciplot - -
ktalk - -
ktelnet - -
kticker ○ 19990428 Kimiyasu Tomiyama
kuickshow - -
kvidtune - -
kwebtree - -
kwebwatch ○ 19991014 塙 雅典
noatun △ 20000710 Yohei Makaki
webmaker - -

訳者メールアドレス - .poファイルを参照して下さい diff --git a/support/documents/po/translate.html b/support/documents/po/translate.html index b6183fb..63f44ef 100644 --- a/support/documents/po/translate.html +++ b/support/documents/po/translate.html @@ -1,329 +1,334 @@ -The K Desktop Environment + + + + +The K Desktop Environment +

KDEプロジェクト日本語翻訳 翻訳用訳語対応表 (2002/06/07版)


以下の表はkdelibs.poの翻訳に用いた訳語の対応表です。他のpoファイルを翻訳 する際の参考にしてください。以下はkde-jpメーリングリストでこのような対応 表を作成する契機となったメールのやり取りです。
> > KDEはそういうレベルでも統一感を出した方が、
 > > かっこいいような気がしたので。
 > この意見には私も賛成です。
 
   訳がそろっていないとかっこわるいというのもありますが、
   それ以上にユーザを混乱させる原因になって
   ユーザビリティの低下を招いちゃいますから
   KDE のような統合環境では訳の統一は必須です。
 #そういう所でマイナス評価をされるのはもったいないし。
 
ということですので、poファイルの翻訳をされる方は是非ユーザビリティの向上 にご協力下さい。統合環境故の難しさですね。;)

訳語?に対するご意見も募集中です。お気軽にどうぞ。

メニューまわり

これはかならず統一して下さい。
fileファイル
new新規作成
open開く
save上書き保存
saveas名前を付けて保存
print印刷
close閉じる
quit終了
exit終了
edit編集
cut切り取り
copyコピー
paste貼り付け
clearクリア
insert挿入
delete削除
undo元に戻す
redoやり直す
optionsオプション
property設定
search検索
find検索
search検索
replace置換
top先頭
bottom末尾
view表示
windowウィンドウ
cascadeカスケード
browseブラウズ
forward進む
back戻る
reload再読み込み
bookmarkブックマーク
helpヘルプ
aboutバージョン情報
about xxxxxx について

ダイアログまわり

これはかならず統一して下さい。
dialogダイアログ
yesはい
noいいえ
okOK
cancelキャンセル
apply適用
default標準
dismiss閉じる

その他

これはできれば統一したいところですが、 文脈によっても意味が変わってくると思うので その辺は臨機応変に対応して下さい。
aboutバージョン情報
accessアクセス
action動作
add追加
addressbookアドレス帳
alert警告
and
appearance外観
applicationアプリケーション
apply適用
arrange配置
attention注意
authorization認可
available有効な
back戻る
background背景
backupバックアップ
barバー
bindings割り当て
boldボールド
bookmarkブックマーク
bottom末尾
browseブラウズ
browserブラウザ
browsingブラウジング
bugバグ
busyビジー
bytes/sバイト毎秒
bytesバイト
cacheキャッシュ
cancelキャンセル
cascadeカスケード
casesensitive大文字小文字を区別
change変更
charset文字セット
clearクリア
clickクリック
close閉じる
color
combination組合わせ
commentコメント
complete完了
configure設定
conflict衝突
connect接続
connection接続
contact連絡先
contents内容
continue続ける
cookiecookie
copyコピー
create作成
customカスタム
cut切り取り
cyclic循環的な
damageダメージ,損害
dataデータ
databaseデータベース
date日付
default標準
defaults標準設定
deiconifyアイコン化解除
delete削除
deskデスク
desktopデスクトップ
deviceデバイス
dialogダイアログ
directoryディレクトリ
dismiss閉じる
document文書
dragドラッグ
dropドロップ
edit編集
edition
emailメール
empty
encodingエンコーディング
entryエントリ
errorエラー
expiration失効
export他に渡す,エキスポートする
familyファミリ
fatal致命的な
fetching取得中
fieldフィールド
filemanagerファイルマネージャ
filterフィルタ
find検索
fitフィット
floatフロート化
floatingフローティング
focusフォーカス
folderフォルダ
fontフォント
footerフッタ
forward進む
general一般
geometryジオメトリ
global広域
go実行
groupグループ
helpヘルプ
hidden隠しファイル
highscoreハイスコア
historyヒストリ
hostホスト
huge特大
iconアイコン
iconifyアイコン化
implement実装
incorrect正しくない
information情報
insert挿入
installインストール
italicイタリック
kb/sキロバイト毎秒
kbキロバイト
key-value-mapキーと値のマップ
kill強制終了
large
layout配置
line
localローカル
location場所
lockロック
lookandfeelルックアンドフィール
mailerメーラ
maintainer開発者
malformedおかしな
maximize最大化
mb/sメガバイト毎秒
mbメガバイト
medium
menuメニュー
messageメッセージ
miscその他
miscellaneousその他
modeモード
mountマウント
new新規作成
next
noいいえ
normal通常
okOK
ooopsおっとぉ
open開く
optionsオプション
others
overview概要
overwrite上書き
owner所有者
ownership所有権
parent親ディレクトリ
paste張り付け
pathパス
patternパターン
perhapsたぶん
permission許可
permission許可情報
personal個人
picture画像
pixmapピックスマップ
plain無地
pleasechoose
point場所
print印刷
prior
processプロセス
property設定
protocolプロトコル
quickhelpクイックヘルプ
quit終了
rearrange再配置
redoやり直し
rejected拒否されました
reload再読み込み
remove削除
replace置換
restore元に戻す
resume元に戻す
romanローマン
rootルート
save保存
saveas名前を付けて保存
savedocumentas名前を付けて保存
search検索
seconds
sectionセクション,節
securityセキュリティ
select選択
serviceサービス
setting設定
show表示
singleシングル
skipスキップ
small
socketソケット
special特別
specified指定された
specify指定
start開始
status状態
sticky常に表示
stop停止
store保管
string文字列
styleスタイル
switchスイッチ
syntax文法
taskタスク
templateテンプレート,雛型
terminalターミナル
thumbnailsサムネイル
tiny極小
titleタイトル
toggleトグル
top先頭
trashゴミ箱
treeツリー
typeタイプ
unclutter整頓
undo元に戻す
unfloatフロート化解除
unique一意な
unknown未知
unmountマウント解除
untitled名前なし
update更新
usage利用法
userユーザ
utilityユーティリティ
value
viewビュー
virtual仮想
warning警告
yesはい

[Top][Next][Prev] diff --git a/support/documents/printing/detail_lpr.html b/support/documents/printing/detail_lpr.html index c56a5a4..a994345 100644 --- a/support/documents/printing/detail_lpr.html +++ b/support/documents/printing/detail_lpr.html @@ -1,51 +1,51 @@ - + KDEの印刷について title

詳細情報: UNIX(lpr)の印刷機構


印刷の流れ

 一般的な印刷の流れとしては上図のフローの通りです。
 まず各アプリケーションはPostScriptという印刷ファイル形式で印刷を出力します。UNIXのほとんどのアプリケーションはPostScriptファイルで印刷を出力する機能を持っており、問題は多いとはいえUNIXではデファクトスタンダードと言って良いでしょう。
 次にGhostScriptというプログラムにデータを渡しPostScriptをプリンターが印刷できる生データに変換します。GhostScriptの最新版はフリーライセンスではありません。GhostScriptの最新版より一つ古いバージョンはGPLで配布されています。通常のディストリビューションにはこのバージョンが入っています。その中でもCKJに対応したものやTrueTypeフォントを使用できるようにしたもの等さまざまなバージョンがありますが、ここではディストリビューションに付属のGhostScriptについてみていきます。またプリンターの中にはPostScriptファイルをそのまま印刷できるものもあります。これはPostScriptプリンターと呼ばれ、店頭で売っていることもあると思いますが、非常に高価なので通常の用途であえてこれを買う人はいないと思います。よって普通はGhostScriptを使用することになると思います。
 さて、プリンターの生データに変換できたらスプーラと呼ばれるプログラムにそのデータを渡します。CUPS/LPRはスプールやジョブ管理をするプログラムでGhostScriptから送られてきた生データを一時的に保存しその後プリンターポートにデータを流します。CUPSはスプーラだけではなく高度なプリンタ管理もできます。LPRにはBSDのLPRや高機能なLPRngがあります。基本的な設定、使用法は両者とも同じです。


日本KDEユーザ会トップページへ KDE印刷トップへ

このサイトは日本KDEユーザ会が著作権を有します。 本著作権を表示する限りにおいて転載を許可します。
Copyright (C) 1999-2002 Japan KDE Users' Group. All Rights Reserved.
このサイトに関するご意見・お問い合わせは webmaster@kde.gr.jpまで。
最終更新日:2002年11月18日
diff --git a/support/documents/printing/index.html b/support/documents/printing/index.html index d0512c9..5541d8d 100644 --- a/support/documents/printing/index.html +++ b/support/documents/printing/index.html @@ -1,94 +1,94 @@ - + KDEの印刷について title

KDEで印刷しよう

KDEではバージョン2.2から印刷機構の強化を掲げています。実際KDEアプリケーションからの印刷は Windowsに比べて遜色なく、それに加えPDF書き出しの機能など便利な機能も備えています。では Windowsに比べて劣っているところはあるか?というとやはり設定がカンタンにはいかないことが多いです。しかし KDEの設定ツールを使用すれば簡単にプリンタの設定を行うことが出来ます。このドキュメントでは KDEでのプリンタの設定の仕方、印刷方法について解説します。また最新の印刷システム、CUPSについての Tipsも掲載します。

目次: KDE関連

  1. KDEを使った印刷設定(ローカル)
  2. KDEクライアントからリモートCUPSサーバへ印刷する場合の設定
  3. KDEアプリケーションからの印刷
  4. 詳細情報「UNIX(lpr)の印刷機構」

目次: CUPS関連

  1. BSD lpr → CUPS乗り換え方法
  2. SambaでCUPS
  3. CUPS設定ツールを使用したCUPSサーバへのプリンタ追加の設定
  4. WindowsクライアントからのIPPを使用した印刷方法
  5. リモート印刷サーバの構築: 事例

リンク


日本KDEユーザ会トップページへ

このサイトは日本KDEユーザ会が著作権を有します。 本著作権を表示する限りにおいて転載を許可します。
Copyright (C) 1999-2002 Japan KDE Users' Group. All Rights Reserved.
このサイトに関するご意見・お問い合わせは kom@kde.gr.jpまで。
最終更新日:2002年11月18日
diff --git a/support/documents/printing/ipp_fromwin.html b/support/documents/printing/ipp_fromwin.html index d4c7817..7227248 100644 --- a/support/documents/printing/ipp_fromwin.html +++ b/support/documents/printing/ipp_fromwin.html @@ -1,60 +1,60 @@ - + KDEの印刷について title

WindowsクライアントからのIPPを使用した印刷方法

Windows2000/XPではネットワークを介した標準規格の印刷プロトコルであるIPP(Internet Printing Protocol)に対応しています。よってCUPSサーバをIPPサーバ、Windows2000/XPをIPPクライアントとして印刷をすることが可能です。ここではCUPSでrawプリンタを設定してある時にWindows2000/XPをIPPクライアントとして使用する時のWindows2000/XPの設定方法を説明します。

まずコントロールパネルで「プリンタ」を選択し「プリンタの追加」ボタンをダブルクリックします。するとプリンタの追加ウィザードが起動します。「次へ」をクリックします。
プリンタの追加ウィザード

次にネットワークかローカルかを聞かれるので「ネットワークプリンタ」を指定し、「次へ」をクリックします。
ネットワークかローカルか

「インターネットまたはイントラネット上のプリンタに接続します」にチェックし、CUPSサーバのIPPプリンタのアドレスを指定します。
書式は「http://"CUPSサーバのアドレス":631/printers/"プリンタ名"」です。「次へ」をクリックします。
ドライバをインストール

ローカルにドライバをインストールします。自分のモデルを選択して下さい。一覧にない場合はドライバディスクを使用して下さい。(これはドライバ共有などのうまい方法があるかも知れません。)「OK」をクリックします。
通常使うプリンタ

最後に「通常使うプリンタ」にするかどうかを選択します。「次へ」をクリックします。


「完了」をクリックするとプリンタが追加されます。
設定完了


日本KDEユーザ会トップページへ

このサイトは日本KDEユーザ会が著作権を有します。 本著作権を表示する限りにおいて転載を許可します。
Copyright (C) 1999-2002 Japan KDE Users' Group. All Rights Reserved.
このサイトに関するご意見・お問い合わせは webmaster@kde.gr.jpまで。
最終更新日:2002年11月18日
diff --git a/support/documents/printing/lprtocups.html b/support/documents/printing/lprtocups.html index 6ffbde7..d103b26 100644 --- a/support/documents/printing/lprtocups.html +++ b/support/documents/printing/lprtocups.html @@ -1,74 +1,74 @@ - + KDEの印刷について title

BSD-lpr→CUPS乗り換え方法

 ここではDebianでlprから環境を乗り換える際の注意事項を列記します。多分Debianユーザ以外にも役に立つはずです。試行錯誤しながらやったのと、詳しく手順を記録しなかったので抜けているところもあるかもしれませんが、そこはDebianユーザ、がんばってください(笑)。BSD lprからの乗り換えを前提に書いていますが、まっさらの状態から構築する人にも役に立つはずです。
 とりあえず必要なパッケージをapt-get install します。
# apt-get install cupsys
ライブラリとか依存しているものも一緒に入ります。dselectでやるとsuggestされるcupsys-bsdがbsd-lprやlprngとconflictするのでapt-get installがおすすめです。 CUPSはプリンタ情報をPPD(Postscript Printer Description)で扱います。これがないと使用できるプリンタのモデルが激減します。別パッケージなのでインストールしましょう。
# apt-get install cupsomatic-ppd
これもいろいろ依存しているので一緒に入れて下さい。ここからの進め方は2通りあります。

ここではダウンタイムを最小限にする手順で解説していきます。

 CUPSのlpr互換環境を残す場合重要なことがあります。それは

ということです(注: 2つのシステムを混在させているからこうなるのであって、単独でインストールしたらCUPSのほうも/etc/printcapを参照するように設定されるものと思われます。ちなみに/etc/cups/cupsd.confにてどのprintcapを使用するかを変更できます)。さらに CUPSが提供するlpr互換機能は、CUPSのlprがBSDのlprとコマンドが互換になるだけで、設定ファイルまで互換ではないということです (実はこの後出てくるcupsys-bsdのインストールの際に何か聞かれて「parse」を選択したのですがCUPSに特に変化は起こりませんでした。不充分な情報ですみません)。
 このことからCUPSでBSD lprのプリンタ名と同じプリンタ名を持つプリンタをCUPS側で用意しておく必要があります。 例えば/etc/printcapに「hp990c」というプリンタエントリがあった場合、設定で見たようにCUPSを設定します。 エントリを作成したら(Rawプリンタ以外の場合は)テストページが印刷できるか確認してください。
 つぎにいよいよlprをCUPSの互換コマンドで置換します。念のため/etc/printcapを/etc/printcap.bakにするなどバックアップをとっておいてください。
# apt-get install cupsys-client
# apt-get install cupsys-bsd

/etc/printcapをCUPSのものにします。
# ln -s printcap.cups printcap
これで移行は終了です。いままでのlprが使用できるかテストしてください。


日本KDEユーザ会トップページへ KDE印刷トップへ

このサイトは日本KDEユーザ会が著作権を有します。 本著作権を表示する限りにおいて転載を許可します。
Copyright (C) 1999-2002 Japan KDE Users' Group. All Rights Reserved.
このサイトに関するご意見・お問い合わせは webmaster@kde.gr.jpまで。
最終更新日:2002年11月18日
diff --git a/support/documents/printing/nowprint.html b/support/documents/printing/nowprint.html index 2df9faf..5c51521 100644 --- a/support/documents/printing/nowprint.html +++ b/support/documents/printing/nowprint.html @@ -1,59 +1,59 @@ - + KDEの印刷について title

KDEアプリケーションからの印刷

 設定ができたらあとはKDEのアプリケーションの印刷の際、印刷ダイアログで今回追加したプリンターを選択すれば印刷できます。ですがその前に一回テストを行います。
テストのやり方はまずKDEアプリケーションからPSファイルを出力します。KDE アプリケーションで印刷ボタンをクリックし、「名前」に「ファイルに出力 (PostScript)」を選択し「OK」をクリックします。 PSファイルを出力

そのファイルをkghostviewで開いてみてください。
kghostview
このようにエラーが出ずに表示されればOKです。
同様の方法でPDFファイルを出力することができます。また、PDFファイルはPSファイルと同様にkghostviewで閲覧することができます。
実際の印刷の場合は下のようにプリンタ「hp990c」を選択し、「OK」をクリックします。
プリンタに出力

データ転送中の画面。
出力中
これでプリンタから出力されます。快適過ぎて紙の無駄使いをしないようにしましょう;)。


日本KDEユーザ会トップページへ KDE印刷トップへ

このサイトは日本KDEユーザ会が著作権を有します。 本著作権を表示する限りにおいて転載を許可します。
Copyright (C) 1999-2002 Japan KDE Users' Group. All Rights Reserved.
このサイトに関するご意見・お問い合わせは webmaster@kde.gr.jpまで。
最終更新日:2002年11月18日
diff --git a/support/documents/printing/remote.html b/support/documents/printing/remote.html index b6021a8..fcd2d97 100644 --- a/support/documents/printing/remote.html +++ b/support/documents/printing/remote.html @@ -1,65 +1,65 @@ - + KDEの印刷について title

リモート印刷サーバの構築

 ここではリモートプリンタの使用について解説します。
 単純にリモートプリンタといっても様々な形態、組み合わせがあります。ここでは私が設定したことのあるものについて説明します。もちろん「こんな事例もあるぞ」というのは大歓迎なので私宛てにメールをしてください:)。

事例 サーバ:CUPS(BSD-lprから移行)、クライアント:KDEアプリケーション(CUPS使用)、Windowsクライアント、lprクライアント

 ここは小さな事業所です。いままでSamba+lprでプリントサーバを立てていました。これをCUPSベースに完全に移行させることにしました。
移行の際に必要な要件は以下の通りです。

それでは一つづつ設定を見ていきましょう。それぞれリンクされたドキュメントを見ればできます。

リモートCUPSサーバの設定

Sambaサーバの設定

新規KDEクライアントの設定

新規Windows2000/XPクライアントの設定

いままでのSamba/lprクライアント (そのままの設定でOKです:)。

これで移行は完了です。快適なCUPS生活が始まります:)。


日本KDEユーザ会トップページへ KDE印刷トップへ

このサイトは日本KDEユーザ会が著作権を有します。 本著作権を表示する限りにおいて転載を許可します。
Copyright (C) 1999-2002 Japan KDE Users' Group. All Rights Reserved.
このサイトに関するご意見・お問い合わせは webmaster@kde.gr.jpまで。
最終更新日:2002年11月18日
diff --git a/support/documents/printing/remote_cups.html b/support/documents/printing/remote_cups.html index 0370d59..405e01c 100644 --- a/support/documents/printing/remote_cups.html +++ b/support/documents/printing/remote_cups.html @@ -1,129 +1,129 @@ - + KDEの印刷について title

CUPS設定ツールを使用したCUPSサーバへのプリンタ追加の設定

PS入力用の「hp990c」と、raw入力用(ローカルでドライバを持たせ、プリンタ言語に変換されたものを入力とする、Samba等で使用される)の「hp990raw」というプリンタをCUPS設定ツールを使用して追加してみましょう。

BSD-lprからCUPSへの移行の注意点についてはlpr→CUPSへの移行をご覧ください。要約すると に注意する必要があります。

CUPSサーバへのプリンタの追加はKDEを使用した設定か、KDEがサーバにインストールされていない場合はCUPS設定ツールで行います。ここではCUPS設定ツールを用いたプリンタの追加の仕方を説明します。
CUPS設定ツールはブラウザからアクセスします。CUPSツールを日本語表示させる方法について補足3を御覧ください。
ブラウザを起動し「http://localhost:631」のアドレスを入力します。すると画面のようになります。
CUPS設定ツール

PS入力用「hp990c」プリンタの追加

プリンタボタンをクリックすると画面のようになります。「プリンタの追加」をクリックします。 プリンタ情報ページ

ルート権限が必要なのでルートアカウント「root」とそのパスワードを入力します。
ルートパスワードの入力

ここからはプリンタの追加です。以下のように入力します。
プリンタ名: これは重要です。「hp990c」を入力してください(lprを使用していたのならそれと同じ名前にする必要があります)
設置場所: プリンタの使用される場所を記述します。必須ではありません。
説明: プリンタの説明を記述します。必須ではありません。
プリンタ名の入力

デバイスはUSB1に繋がっているものとします。
デバイスの選択

メーカーの選択: HPを選択します。
ベンダの選択

モデルの選択: 「HP DeskJet 990C, Foomatic + hpjis (en)」を選択します。
モデルの選択

これで完了です。
設定終了

プリンタボタンをクリックしプリンタのページに移動すると追加したプリンタが表示されます。テストプリントで設定が正しくできているか確認してください。
追加したプリンタが表示されている

raw入力用の「hp990raw」

上と同様ですが、モデルの指定のみが異なります。手順を追ってみましょう。
名前は「hp990raw」です。 プリンタの名前の指定

接続先を指定します。USBの#1です。
接続先を指定

rawプリンタの場合は「Raw」を選択します。
ベンダの指定

rawプリンタの場合は「Raw Queue (en)」しかありません。これを選択します。
プリンタ名の指定


設定終了

プリンタのページに移動すると追加したプリンタが表示されます。rawプリンタはドライバを持っていないので、テストプリントはしないでください。
2つのプリンタが表示される

rawプリンタで動かすにはmimeの設定が必要です。CUPSの設定を参照してください。これの設定を行うとCUPSに対する設定は終了します。

補足1 CUPS設定ツールはcupsd.confのaccess、adminの設定を変えることでリモートからブラウザを使用しての設定が可能です。しかしこの方法は認証がなく(設定可能?)、通信の暗号化がされていない(これも設定可能?)ので、ローカル以外ではお奨めできません。(設定ファイルを見る限りでは、なんかできそうな気もしますがまだ調べていません。)

補足2 ローカルにあるCUPSサーバの詳細な設定(cupsd.confファイルで行うアクセスやセキュリティなどの設定)についてはcupsdconfというKDEのツールが使用できます。グラフィカルでかつ日本語化されているので、KDEがインストールされている場合はこれを使用するとよいでしょう。

補足3 ディストリビューションによってはCUPS設定ツールが日本語化されていません。これはもともとの配布に日本語化ファイルが含まれていないからです。TurboLinux8では日本語化されたリソースがインストールされます。作成者の許可を得て、この日本語リソースを配布許可を得ることができました。この場を借りてお礼申し上げます。
日本語リソース
日本語リソースのインストール方法
CUPSのリソースは例えば/usr/share/cupsなどにインストールされます。このディレクトリには「doc(debianならdoc-root)」、「templates」というディレクトリがあります。ここでリソースを展開してください。
# cd /usr/share/cups
# tar xjf cupsd-japanese-resources.tar.bz2
するとdoc,templatesディレクトリ以下に「ja」というディレクトリができます。これでブラウザを再読み込みすれば日本語でCUPS設定ツールにアクセスできます。


日本KDEユーザ会トップページへ KDE印刷トップへ

このサイトは日本KDEユーザ会が著作権を有します。 本著作権を表示する限りにおいて転載を許可します。
Copyright (C) 1999-2002 Japan KDE Users' Group. All Rights Reserved.
このサイトに関するご意見・お問い合わせは webmaster@kde.gr.jpまで。
最終更新日:2002年11月18日
diff --git a/support/documents/printing/remote_kde.html b/support/documents/printing/remote_kde.html index e7be336..430c4f2 100644 --- a/support/documents/printing/remote_kde.html +++ b/support/documents/printing/remote_kde.html @@ -1,93 +1,93 @@ - + KDEの印刷について title

KDEクライアントからリモートCUPSサーバへ印刷する場合の設定

 ここではリモートCUPSサーバへの接続(IPPを利用してCUPSサーバと通信する場合)を解説します。サーバマシンにてKDE印刷マネージャ、またはCUPS設定ツールでプリンタを追加しておいてください。 例として使用するリモートプリンタはPS入力を受け付ける「hp990c」とします(注1)。KDEでのプリンタの追加ですからKDEを使用した設定で見たものと手順はほとんど同じです(注2)。

(注1)KDEクライアントはプリンタ言語の出力をサーバに送るのではなく、PS出力をサーバのスケジューラに送ります(つまりサーバサイドでラスタ化します)。しかしローカルをRawにしておく必要はなく、ローカルもサーバと同じPS入力可能のプリンタ設定にしておいてください。
(注2)言いかえればCUPSシステムを使用するときのローカルプリンタの設定は、ローカルCUPSサーバへのプリンタ設定の追加、クライアントをlocalhost:631という(リモート)CUPSサーバに接続するための設定を行っていることになります。

それでは一つ一つ手順を見ていきましょう。まず印刷マネージャから右クリックし「プリンタ/クラスの追加」を選択します。以下のダイアログが出てきます。


「リモートCUPSサーバ」を選択します。


ゲストアカウント以外でログインする場合は「ゲストアカウント」のチェックを外しログイン名とパスワードを入力します。


リモートCUPSサーバのアドレスを入力します。ポートは通常「631」です。


リモートCUPSサーバに追加されているプリンタがブラウズできます。画面は異なりますが「hp990c」を選択します。


プリンタのメーカーとモデルを選択します。


ドライバを選択します。「推奨」となっているものを使用すると良いでしょう。


プリンタのテストになります。「テスト」ボタンをクリックするとテストプリントが印刷されます。


印刷の前後に挟まれる「バナー」を選択します。通常必要ありません。


印刷容量の制限「クオータ」の設定です。サーバ側に容量がない場合や、クライアントから異常な量の印刷命令が来たときに拒否したい場合に設定してください。


拒否したいユーザを設定できます。


プリンタの名前はローカルでKDEから印刷するときに使用される名前です。混乱を避けるためサーバでのプリンタ名と同じ名前にしておくと良いでしょう。


設定の確認です。「完了」をクリックすると設定が完了し、「hp990c」リモートプリンタが使用できるようになります。



日本KDEユーザ会トップページへ KDE印刷トップへ

このサイトは日本KDEユーザ会が著作権を有します。 本著作権を表示する限りにおいて転載を許可します。
Copyright (C) 1999-2002 Japan KDE Users' Group. All Rights Reserved.
このサイトに関するご意見・お問い合わせは webmaster@kde.gr.jpまで。
最終更新日:2002年11月18日
diff --git a/support/documents/printing/samba_cups.html b/support/documents/printing/samba_cups.html index e267ec5..0a9c1e1 100644 --- a/support/documents/printing/samba_cups.html +++ b/support/documents/printing/samba_cups.html @@ -1,71 +1,71 @@ - + KDEの印刷について title

SambaでCUPS

SambaでCUPSを使用するときいくつか設定しておく必要があります。以下に箇条書きでまとめておきます。
(なおここで述べた方法の他に、Windows2000/XPクライアントから直接IPPポートを使用して印刷するという方法があります。これはクライアント側で新しい設定が必要ですがSambaを経由しないためSambaで設定ミスをしても影響を受けなく便利です。新規にクライアントを追加する場合はIPPのほうがおすすめです。)

CUPS側の設定

CUPSの設定ファイルのうち、以下のファイルの以下の行のコメント(#)を外します。これらの設定はSambaをRawプリントサーバとして使用しているときに必要です。

完了したらcupsを再起動してください。

Samba側の設定

一応smbdを再起動して、SWATでプリンタがマージされているか確認して下さい。
ちなみにCUPS使用時にSambaでスプールディレクトリの印刷データファイルが消えないのはバグです。2.2.6では直っているそうです。


日本KDEユーザ会トップページへ KDE印刷トップへ

このサイトは日本KDEユーザ会が著作権を有します。 本著作権を表示する限りにおいて転載を許可します。
Copyright (C) 1999-2002 Japan KDE Users' Group. All Rights Reserved.
このサイトに関するご意見・お問い合わせは webmaster@kde.gr.jpまで。
最終更新日:2002年11月18日
diff --git a/support/documents/printing/setting.html b/support/documents/printing/setting.html index d5cee2e..c0d5b73 100644 --- a/support/documents/printing/setting.html +++ b/support/documents/printing/setting.html @@ -1,197 +1,197 @@ - + KDEの印刷について title

KDEを使った印刷設定

下準備

印刷するには印刷のツールがインストールされている必要があります。確認してください。

それでは物理的なレイヤーからひとつづつ見ていきます。

プリンタ

ケーブルを繋げて電源を入れてください:)

プリンタデバイス/ドライバ

通常のディストリビューションでは既に設定されていることがほとんどです。 /dev/lp0 (USBなら例えば /dev/usb/lp0)が存在するか確認して下さい。またlpモジュールかUSBのprinterモジュールが読み込まれているかを確認して下さい。
# /sbin/lsmod
デバイスファイル/ドライバの設定についてはLinux Printing HOWTOを御覧ください。

Ghostscriptの設定

コマンドラインでgs -vと入力するとバージョン情報が表示されます。ここで重要なのはKDEのアプリケーションから出力した日本語のPS,PDFファイルが正しく扱えることです。TurboやVineなら問題なくいけると思います。これのテストについては印刷前のプレテストのところで行います。

KDEからの設定

 さてこれでKDEで設定する準備が整いました。これまでのステップはちゃんと設定してあるディストリビューションなら必要がないのでここからがKDEでの設定ということになります。
 まず一つ印刷システム(ジョブ管理、スプーラ)として何を使用するかを決める必要があります。一般にCUPSかlpr(類似物を含む)が選択肢に上がると思います。これら2つの特徴としては

と言えるでしょう。指針としてはlprに慣れ親しんでいてそのまま使用したい場合はlpr、特にこだわりがない場合はCUPSを使用すると良いかもしれません。

これからの説明では以下のシステムを想定します。

プリンターを設定するには印刷マネージャを立ち上げます。印刷マネージャはKメニューの「設定」→「システム」→「印刷マネージャ」から立ち上げます。またコントロールセンターの「周辺装置」→「プリンタ」でも同様の設定を行なえます。下図のような画面が立ち上がります。
印刷マネージャ
 ここで下のほうにある「現在の印刷システム」を「CUPS (Common UNIX Print System)」にします。
 プリンタの追加は印刷マネージャの白いあたりのところを右クリックし「プリンタ/クラスの追加...」を選択すると下図のダイアログが現れます。

プリンタを追加ウィザード
「次」をクリックします。

バックエンドを選択
まずバックエンドを選択します。ここではローカルで使用するので「ローカルプリンター」にチェックを入れて「次」をクリックします。

ポートを選択
 次にポートを選択します。パラレルポートの場合は「パラレル」になります。 USBプリンターの場合は「USB」→「USB Printer #1」です。URIのところは「usb:/dev/usblp0」 ですが、システムによっては「usb:/dev/usb/lp0」の場合もあります。上の「プリンタデバイス/ドライバ」を確認して下さい。「次」をクリックします。

プリンタのメーカー、モデルを選択
 次にプリンタのメーカーとモデルを選択します。製造者が「HP」、モデルが「DeskJet 990C」です。「次」をクリックします。

ドライバを選択
 ドライバを選択します。幸せなことにHPのプリンタの場合は利用できるドライバがたくさんあります。ここでは「推奨」となっているものをそのまま使用します。「次」をクリックします。

プリンタテスト
 次はテスト印刷になります。「テスト」をクリックするとテストができます。プリンター追加後でもテストはできるので希望に応じて行なって下さい。

バナーの設定
 バナーは印刷の前後に文字列やロゴを挿入するものです。通常は「バナーなし」で良いでしょう。「次」をクリックします。

クオータの設定
クオータとは大き過ぎるジョブを制限する機能のことです。通常必要ありません。「次」をクリックします。

ユーザの設定
印刷を禁止したいユーザなどを作成することができます。ひとりや家族で使用する環境の場合には必要ないでしょう。「次」をクリックします。

一般情報
 次に一般情報についての記述です。「名前」はそのままCUPSやlprで使用するプリンター名になるので短い名前が良いです。lprからCUPSに移行する場合はlprでのプリンタ名と同一にして下さい。 「場所」はプリンターが使われる状況をコメントしておく部分で必須ではありません。「次」をクリックします。

設定の確認
 そして最後に設定の確認です。ここで「完了」をクリックすると設定が完了し、プリンターが追加されます。 一般ユーザの場合はここでルートパスワードを求められます。
rootパスワード
ユーザ名に「root」パスワードにルートパスワードを入力して下さい。 これでプリンタ「hp990c」が追加されました。

「hp990c」が追加された状態

 ちなみにこの設定はKDEの印刷システムに対してのGUI設定フロントエンドであって、KDE以外でも印刷することができます。例えばlprを使って
% lpr -Php990c foo.ps
とすれば普通に印刷ができますし、既に設定がある場合に印刷マネージャで設定を変更するということもできます。

フォント埋め込みの設定

最後にフォント埋め込みの設定を行います。ヨーロッパ諸国言語と違い日本語の場合はデスクトップ環境としてフォントが統一されていない(フリーのフォントが少なく、ディストリビューション毎にまちまちのフォントをバンドルしているせいです)という欠点があります。また、ネットワークプリンタにデスクトップと同じフォントがインストールされていないこともあります。これらの問題はドキュメントにフォントを埋め込むことで解決します。欠点としてはデータ量が多くなるということがありますが、多くの問題を回避できるのでぜひとも設定しておいてください。

 

KDE

印刷マネージャを起動します。次に印刷マネージャの白いあたりのところを右クリックし 「マネージャの設定」を選択すると下図のダイアログが現れます。
マネージャの設定
ここの「フォント」の「印刷時にPostScriptにフォントを埋め込む」にチェックを入れて「OK」をクリックします。
埋め込みの設定

Qt

ここは必ずしも必要ではありませんがQtアプリケーションを使用するときに必要なので設定しておきましょう。
% qtconfig &
でqtconfigを起動します。そこの「Printer」→「Enable font embedding」をチェックし、メニューの「File」→「Save」を選択し、終了します。
qtconfig

エラーの回避方法/ヒント

応用編

Canon Bubble Jet Print Filter for Linux フィルタを使用する(lpd使用)

 最近ではプリンターメーカーも高品質なLinux用のプリンタフィルタを無料で提供するサービスを行っています。ここでは(株)キャノン販売のCanon Bubble Jet Print Filter for Linuxを使用した設定を試してみます。プリンターにはCanon BJF870を使用しました。このようなフィルタには他にもエプソンコーワの「Photo Image Print System」と「GS Laser Printer Driver」があります。
 残念ながらこれらのフィルターを使用するには設定の全てをGUIでできません。インストールとprintcapの設定は手動でやる必要があります。なおCanon Bubble Jet Print Filterのより詳しい設定の詳細はウェブにドキュメントがアーカイブでおいてありますのでそちらをご覧ください。

システム側の設定

 まずパッケージをインストールします。
# rpm -ivh bjfiltercom-1.3-0.i386.rpm bjfilter870-1.3-0.i386.rpm
次に/etc/printcapに以下のエントリーを追加します。
bjf870raw:\
:lp=/dev/lp0:\
:sd=/var/spool/lpd/bjf870raw:\
:mx#0:\
:sh:\
:rw:\
:if=/usr/local/bin/bjf870raw:

bjf870ps:\
:lp=/dev/lp0:\
:sd=/var/spool/lpd/bjf870ps:\
:mx#0:\
:sh:\
:rw:\
:if=/usr/local/bin/bjf870ps:

次にスプールディレクトリを作成します。
# cd /var/spool/lpd
# mkdir bjf870ps
# mkdir bjf870raw

キャノンの印刷ダイアログを表示するためにxhostを設定します。
# xhost localhost (Xの起動ファイルに追加しておくと良いでしょう)
lpdを再起動します。
# /etc/rc.d/init.d/lpd restart
これでシステム側の設定は終了です。この状態で
% lpr -Pbjf870ps foo.ps
とするとPostScriptファイルが印刷できる状態になっています。bjf870psはPostScriptファイルをGhostScriptでビットマップに変換し、それをフィルタに通すスクリプトです。

KDE側の設定

 KDEの印刷マネージャは/etc/printcapを自動的にパースしてくれるのでKDE側でプリンターの細かい設定をする必要はありません。ここまで設定できたらあとは印刷時のダイアログでbjf870psを選択すればめでたく印刷できます。印刷を実行するとフィルタ側のダイアログがでてきて細かいプリンターの設定ができます。プリンタの設定を行ったら「OK」を押して実際の印刷を開始してください。


日本KDEユーザ会トップページへ KDE印刷トップへ

このサイトは日本KDEユーザ会が著作権を有します。 本著作権を表示する限りにおいて転載を許可します。
Copyright (C) 1999-2002 Japan KDE Users' Group. All Rights Reserved.
このサイトに関するご意見・お問い合わせは webmaster@kde.gr.jpまで。
最終更新日:2002年11月18日
diff --git a/support/documents/printing/template.html b/support/documents/printing/template.html index 648eaf0..b868e0e 100644 --- a/support/documents/printing/template.html +++ b/support/documents/printing/template.html @@ -1,104 +1,104 @@ - + KDEの印刷について title

新規KDEクライアントの設定

ここではリモートCUPSサーバへの接続(IPPを利用してCUPSサーバと通信する場合)を解説します。サーバマシンにてKDE印刷マネージャ、またはCUPS設定ツールでプリンタを追加しておいてください。 この場合使用されるプリンタは前の例では「hp990c」になります(注)。KDEでのプリンタの追加ですからKDEを使用した設定で見たものと手順はほとんど同じです(注2)。
(注)KDEクライアントはプリンタ言語の出力をサーバに送るのではなく、PS出力をサーバに送ります(つまりサーバサイドでラスタ化します)。
(注2)言いかえればCUPSシステムを使用するときのローカルプリンタの設定は、ローカルCUPSサーバへのプリンタ設定の追加、クライアントをlocalhost:631という(リモート)サーバに接続するための設定を行っていることになります)
それでは一つ一つ手順を見ていきましょう。まず印刷マネージャから右クリックし「プリンタ/クラスの追加」を選択します。


「リモートCUPSサーバ」を選択します。








































プリンタのモデルを選択するところはKDEを使用した設定と同じです。


日本KDEユーザ会トップページへ KDE印刷トップへ

このサイトは日本KDEユーザ会が著作権を有します。 本著作権を表示する限りにおいて転載を許可します。
Copyright (C) 1999-2002 Japan KDE Users' Group. All Rights Reserved.
このサイトに関するご意見・お問い合わせは webmaster@kde.gr.jpまで。
最終更新日:2002年11月18日