Announcement

Collapse

Please use the Hentai ID thread for all hentai ID requests. Click me for link!

The Identification Thread is Here:

http://www.hongfire.com/forum/showthread.php/447081
See more
See less

Translation Aggregator

Collapse
This is a sticky topic.
X
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Translation Aggregator

    I'm no longer working on Translation Aggregator, but Setx has released an updated version, here. The files attached directly to this post are now outdated

    Translation Aggregator basically works like ATLAS, with support for using a number of website translators and ATLAS simultaneously. It was designed to replace ATLAS's interface as well as add support for getting translations from a few additional sources. Currently, it has support for getting translations from Atlas V13 or V14 (Don't need to have Atlas running), Google, Honyaku, Babel Fish, FreeTranslations.com, Excite, OCN, a word-by-word breakdown from WWWJDIC, MeCab, which converts Kanji to Katakana, and its own built-in Japanese parser (JParser). I picked websites based primarily on what I use and how easy it was to figure out their translation request format. I'm open to adding more, but some of the other sites (Like Word Lingo) seem to go to some effort to make this difficult.

    JParser requires edict2 (Or edict) in the dictionaries directory, and supports multiple dictionaries in there at once. It does not support jmdict. You can also stick enamdict in the directory and it'll detect some names as well, though the name list will be heavily filtered to avoid swamping out other hits. If you have MeCab installed, JParser can use it to significantly improve its results. TA can also look up definitions for MeCab output as well, if a dictionary is installed. In general, MeCab makes fewer mistakes, but JParser handles compound words better, and groups verb conjugations with the verb rather than treating them as separate words.

    TA also includes the ability to launch Japanese apps with Japanese locale settings, automatically inject AGTH into them, and inject its own dll into Japanese apps. Its dll can also translate their menus and dialogs using the ATLAS module (Requires you have ATLAS installed, of course). Versions 0.4.0 and later also include a text hooking engine modeled after AGTH. The menu translation option attempts to translate Windows-managed in-game menus, and is AGTH compatible. The AGTH exe and dlls must be in the Translation Aggregator directory for it to be able to inject AGTH into a process. AGTH is included with the most recent versions of TA.

    The interface is pretty simple, much like ATLAS: Just paste text into the upper left window, and either press the double arrow button to run it through all translators, or press the arrow buttons for individual translation apps. Each algorithm is only run once at a time, so if a window is busy when you tell it to translate something, it'll queue it up if it's a remote request, or stop and rerun it for local algorithms. If you have clipboard monitoring enabled (The untranslated text clipboard button disables it altogether), it'll run any clipboard text with Japanese characters copied from any other app through all translators with clipboard monitoring enabled. I won't automatically submit text with over 500 characters to any of the translation websites, so you can skip forward in agth without flooding servers, in theory. I still don't recommend automatic clipboard translation for the website translators, however.

    To assign a hotkey to the current window layout, press shift-alt-#. Press alt-# to restore the layout. Bound hotkeys will automatically include the current transparency, window frame, and toobar states. If you don't want a bound hotkey to affect one or more of those states, then you can remove the first 1 to 3 entries in the associated line in the ini file. Only modify the ini yourself when the program isn't running. All other values in those lines are mandatory.

    Pre-translation substitutions modify input text before it's sent to any translator. Currently applies to websites, ATLAS, Mecab, and JParser. There's a list of universal replacements ("*") and replacements for every launch profile you've created. I pick which set(s) of substitutions to use based on currently running apps. Note that you do not need to be running AGTH or even have launched a game through TA's launch interface for the game to be detected, but you do need to create a launch profile. May allow you to just drag and drop exes onto the dialog in the future.

    MeCab is a free program that separates words and gives their pronunciation and part of speech. I use it to get the information needed to parse words and display furigana. If you have MeCab installed but I report I'm having trouble initializing it, you can try copying libmecab.dll to the same directory as this program. Do not install MeCab using a UTF16 dictionary, as I have no idea how to talk to it (UTF16 strings don't seem to work). Instead, configure MeCab to use UTF8, Shift-JIS, or EUC-JP. If you have both MeCab and edict/edict2 installed, you can view a word's translation in MeCab by hovering the mouse over it. Also, JParser can use MeCab to help in parsing sentences.

    JParser tends to be a better choice for those who know almost no Japanese - it tells you how verbs are conjugated, handles some expressions, etc. MeCab may well be the better choice for those who know some Japanese, however.

    Source, attached below, is available under the GPL v2.

    Thanks to (In alphabetical order, sorry if I'm leaving anyone out):
    Hongfire Members:
    Freaka for his innumerable feature suggestions and reported issues over the course of development.
    Setsumi for TA Helper and for all his suggested improvements and reported issues, particularly with JParser.
    Setx for AGTH.
    Stomp for fixing the open file dialog not working properly on some systems and adding the tooltip font dialog, and fixing a bug that required admin privileges when certain other software was installed.
    Might sound like minor contributions, but feedback really drives the development of TA.

    Non-members:
    KingMike of KingMike's Translations, who is apparently the creator of the EUC-JP table I used to generate my own conversion table.
    Nasser R. Rowhani for his function hooking code.
    Z0mbie for writing the opcode length detector/disassembler I use for hooking. Apparently was intended for virus-related use, but works fine for other things, too.
    And the creators and maintainers of edict, MeCab, and zlib.

    You might also be interested in:
    *Setsumi's TA Helper and AGTHGrab.
    *errotzol's replacements script.
    *Devocalypse's devOSD.
    *kaosu's ITH (Like AGTH. No direct TA support, due to lack of a command line interface, but definitely worth checking out).

    MeCab
    edict2

    Changelog:
    0.4.9
    * Fixed MeCab/JParser getting stuck when starting a new translation before the last is fixed.
    * Fixed interface lockup while mousing over an item in MeCab while JParser is running.
    * Menu translation will now translate column headings in ListViews (Needed this for the AA launcher)
    * Fixed ATLAS config crash.
    * Global hotkey support. Toggle under "File" menu (Tools is kinda big already). Currently only really supports history navigation. May add more later.

    0.4.8
    * Added history. Logs both original text and translations (For online translators). It logs up to 20 MB of original text, and whatever translations are associated with it. Currently only way to force a retranslation is to toggle one of several options (Autoreplace half-width characters, src/dest language, modify substitutions).
    * Fixed deadlock bug on MaCab mouse over while JParser is running.
    * Fix corrupting built-in text hooker settings when launch failed. Suspect no one uses this, anyways.
    * Drag/dropping an exe onto TA to open up the injection dialog now actives TA.

    0.4.7
    * JParser and MeCab each use their own thread (Mostly).
    * Changed conjugation table format to JSON - plan to do this to a lot of other files (Being careful not to mess up game settings or substitution tables). Currently have way too much file loading code.

    0.4.6
    * Fix WWWJDIC
    * Fix closing injection dialog
    * Updating process list 10+x faster
    * Process list autoupdates
    * Fixed bug that would result in injecting into wrong process when one program is running multiple times.
    * Updated included AGTH version

    0.4.5
    * Added bing support.
    * Updated Honyaku code (They didn't try and block TA, they just modified their HTML)
    * Fixed AGTH command line code.
    * Replaced "/GL" with "/SM" compile option, resulting in faster builds when one has a lot of cores.

    0.4.4
    * Regular expressions are now compiled
    * Injection validation when using addresses relative to dlls (Or function addresses in dlls) should be fixed.
    * Added option to create shortcuts. They'll launch TA (If it's not running) and try to launch the game using the current injection settings (Injection settings that you'd get at the launch screen - the current settings are not saved - it always uses the most recently used ones).
    * Appropriated some of Setsumi's code to make tooltips larger.

    0.4.3
    * Multiple subcontexts now supported. Separate them with semi-colons. AGTH code converter will add two subcontexts, when appropriate.
    * Using aliases for hooks added. Prefix a hook with "[Alias Text]" and that's what will be displayed on the context manager screen as the hook's name. Makes it easier to see context strings.
    * Locale selection added to injection dialog.
    * "Hook delay" added to injection dialog. Actually doesn't delay hooking, delays how long before hooks that use filtering based on calling function's dll are enabled. Generally only the default hooks do this. Increasing this delay may circumvent issues with games that crash when launched with AGTH, but work fine when injected after launching.
    * Added "!" and "~" operators.

    * Stomp's admin privilege fix when using some 3rd party software added.
    * Excite fixed
    * Fixed sanity testing for injection addresses, so when specify a dll or exe name in a text hook, shouldn't erroneously think it's an error when the module isn't loaded in the current address space.
    * Fixed some JParser dicrionary common word parsing, when using versions of edict with entL entries. Also changed treatment of Kanji entries when only their corresponding Hiragana are marked as common.
    * Fixed substitution matching Hiragana with Katakana and vice versa.
    * Fixed a clipboard-related crash bug.
    * Fixed hooks causing crashes when relocating call/jumps (Hopefully...)
    * Fixed AGTH repeat filter length placement (oops).

    0.4.2b
    * Fixed substitution loading/deleting.
    * Fixed << and >>.

    0.4.2
    * AGTH code conversion tool.
    * Injection code checker added.
    * New child process injection handler (Really nifty injection code for that...). Should be a little more robust than before.
    * Option not to inject into child processes added.
    * Auto copy to clipboard added.
    * Both extension filters fixed.
    * Both eternal repeat filters fixed/upgraded.
    * Phrase repeat filter fixed/upgraded.
    * OpenMP/MSVC 2008 SP1 runtime requirement removed
    * char/charBE fixed
    * GetGlyphOutline fixed
    * Copy to clipboard crash when auto translate disabled fixed.
    * Slightly improved dll injection error handling.

    0.4.1
    * More context/filter options.
    * Repeated phrase filter now handles cases where phrase is being extended by a couple characters each time (xxyxyz, etc). Extension filters no longer really needed, unless the repeat starts out too short.
    * Option to handle eternally looping text.
    * Option to ignore text without any Japanese characters.
    * Text which substitution rules reduce to nothing no longer overwrites translated text.
    * Log length limit added.
    * Options to manage default internal text hooks added.
    * Clipboard treated as a context. Its default settings should mirror the old handling.

    0.4.0
    * Added it's own text hooking engine. Probably still buggy.
    * Fixed excessive redrawing when a hidden furigana window had clipboard translation enabled.
    * Works with new, even more poorly formatted edict files.
    * Handles EUC_JP characters that Windows does not (Doesn't use them properly with WWWJDIC at the moment, however). Only really fixes loading edict files with those characters.
    * Fixed right clicking when full screen.
    * Fixed not checking auto Hiragana mode.
    * Less picky when reading MeCab output.
    Attached Files
    Last edited by ScumSuckingPig; 07-11-2015, 11:20 AM. Reason: Change download link, re-upload attachments upon request from Setx

  • Just downloaded this... which translation do you suggest?

    Atlas
    Babel fish
    etc..

    Comment


    • Think the best online ones are Google and OCN. Atlas works pretty well, too, and as it runs locally, I generally don't use the other online ones until I need them (Which is often). I'd rate Honyaku pretty highly, too, and can sometimes manage sentences the others can't (Though less often than the first 3 I mention). Excite is just online Atlas. Babelfish/FreeTranslations are, in my opinion, usually the worst of the lot.

      If you really want to understand what's going on and have some basic understanding of Japanese, MeCab and/or JParser work well (You have to have some knowledge of Japanese grammar, which you can pick up over time, to get much use out of them. If you can read a fair bit of Japanese, suspect they're even more useful, though I don't know any Japanese myself. Wrote JParser when I realized that without a decent translation dictionary with extensive annotations, and a much better understanding of Japanese grammar, it's basically impossible for me to translate much of anything correctly, once you get away from very basic sentences). MeCab in general parses things better, JParser is more likely to recognize idiomatic expressions and compound words.

      WWWJDIC used to be pretty competitive with MeCab and JParser - it picked up words JParser didn't, and had definitions (And compound words) that MeCab didn't. It's useless on shorter words with a lot of hiragana, however. Now, while it still handles some cases that neither MeCab nor JParser are sufficient for, those cases are a fair bit less common than they once were.
      Last edited by ScumSuckingPig; 08-20-2010, 09:53 PM.

      Comment


      • Originally posted by ScumSuckingPig View Post
        Think the best online ones are Google and OCN. Atlas works pretty well, too, and as it runs locally, I generally don't use the other online ones until I need them (Which is often). I'd rate Honyaku pretty highly, too, and can sometimes manage sentences the others can't (Though less often than the first 3 I mention). Excite is just online Atlas. Babelfish/FreeTranslations are, in my opinion, usually the worst of the lot.

        If you really want to understand what's going on and have some basic understanding of Japanese, MeCab and/or JParser work well (You have to have some knowledge of Japanese grammar, which you can pick up over time, to get much use out of them. If you can read a fair bit of Japanese, suspect they're even more useful, though I don't know any Japanese myself. Wrote JParser when I realized that without a decent translation dictionary with extensive annotations, and a much better understanding of Japanese grammar, it's basically impossible for me to translate much of anything correctly, once you get away from very basic sentences). MeCab in general parses things better, JParser is more likely to recognize idiomatic expressions and compound words.

        WWWJDIC used to be pretty competitive with MeCab and JParser - it picked up words JParser didn't, and had definitions (And compound words) that MeCab didn't. It's useless on shorter words with a lot of hiragana, however. Now, while it still handles some cases that neither MeCab nor JParser are sufficient for, those cases are a fair bit less common than they once were.
        Thanks ^_^

        Comment


        • I just tried 0.4.3.
          Dunno what kind of magic you did SSP, but I played an RPG called Bunny Black a whole two days without even having a random crash even once. It was tried in Win 7, dunno what happen if I played it on my crappy old XP.
          Another one to notice is when starting the program it seems a little bit too long to loading (maybe because I used a large userdict) but IMO it's not a big issue. In my case, so far it's stable. GJ SSP b^^d

          Comment


          • Hmm...Odd. To the extent of my knowledge, nothing I did should have fixed any crash issues (Other than adding an injection delay option, and IIRC, your crashes were TA-side and possibly substitution related, so not something that would have fixed).

            Could you move your userdict and see if TA loads any faster? If so, I'll download your dictionary and look into it. As I'm going to be significantly reworking dictionaries anyways, can fix it at the same time.

            Edit: As a side note, I'm probably going to be messing more with injection hook parameters before substitution stuff, since the substitution stuff is going to involve a lot more interface work than I had initially thought, and interface work is a pain.

            I'm thinking of letting multiple aliases be specified per-context, with forced per-context settings, so could do something like:

            Code:
            [Names=54;31][Text=154;41][EverythingElse]wchar:....
            54;31 being the subcontext values (Extra 0's would be added as needed, must give a value for all subcontexts). "[EverythingElse]" would be the alias given to everything from all other subcontexts. Numeric subcontext would only be added to the catch-all subcontext. If not present, all other text would be ignored (Unless no aliases are present), so behavior for existing hook codes would be unchanged.

            Also thinking I'm going to automatically have "auto translate" enabled on creation of named [sub]contexts.

            And thinking I'll add per-context settings as extra strings to the text box, though keep them configurable via the interface as well, to both make them shareable, and to make them robust against adding new options (Currently whenever I add a new option to context manager, lose all configuration data, unless I can squeeze it in to the current data structure).

            Strings would probably look something like:
            Code:
            #[Text]#merge=2:filters=c1;e1;p2,4,100
            #wchar:...@...#loop:merge=2:filters=c0;e2;p1
            The first being for a context with an alias of "[Text]" and the second being for a context with no alias. The settings are context name dependent, rather than context dependent, but that's how things currently work anyways. All the context manager knows about data it receives is the context name, not the original context string (Though they may be the same), but that's how I intend to keep it.
            Last edited by ScumSuckingPig; 08-23-2010, 10:03 PM.

            Comment


            • Greetings SSPig, I'm interested in writing a devOSD plug-in for TA to eliminate the need for the clipboard and not to have to rely on constant polls/updates of the TA main window. I specialize in php and scripting but unfortunately I am a complete beginner when it comes to CPP and so I'm not even sure if I can explain it properly. Since I did not find a plug-in api for TA (correct me if I'm wrong) and did not find anything apparently useful in the sampledll code, I thought of asking you directly. The result I'm aiming for would be something like this:

              Scenario 1:
              1. I send some kanji text to the plugin to be translated (through tcp sockets/windows messages/whatever method) from another program/script etc.
              2. The plugin returns the translated text (the final output - after all the substitutions and other plugins have done their job) to the source program/script/whatever again through sockets/wm...

              Scenario 2:
              1. Translation aggregator translates text from the clipboard.
              2. TA notifies the TA plugin that new text is translated with each translation and sends the translated text to it (or it already knows that in which case what would the trigger be).

              So the only thing i need to know for now is what methods/functions to use within the plugin to communicate with TA.
              Lets say that I have a previously assigned variable with the text i want to translate under var_A
              How do I get the translation of that text within the plugin passing var_A and getting it into var_B?
              And how do I notify the plugin when new clipboard text is translated and pass that text as well?

              PS: I'm only interested in Atlas translation for now.
              Some day I think of completely rewriting the entire devOSD to become a pure plugin for TA using GDI+, considering how good setsumi's tahelper plug-in is working, but I'll have to read at least a few programming books before that.
              Last edited by Devocalypse; 08-25-2010, 07:29 PM.
              devOSD nEXT - advanced eroge translation overlay

              Comment


              • Currently not possible (Well...without a lot of funkiness, at least), but been thinking about APIs to make it so.

                So there are two basic approaches to this... TA can load a dll from you, accept data from it, and pass data to it. Or you can have your own process and talk to TA via sockets, Windows Messaging, shared memory, or some other API. Advantage of the first approach is it's more memory efficient, particularly if don't make your own process, it's faster, and a bit easier to handle back-and-forth communication. Advantage of the sockets approach is you can more easily use your own process, and it allows direct communication with a dll injected into another process.

                I've been thinking more about using sockets, since I can basically modify the protocol TA uses to talk to its injected dll to talk to other programs as well.

                Right now, TA uses shared memory to advertise a socket (That only accepts connections from 127.0.0.1). The dll then looks up the socket, if there is one, and copies text to it. There's a handshake that's currently TA version dependent.

                Here's what I'm thinking of doing, open to better ideas: I basically create a special handshake for programs that want to send/receive text to be translated that's different from what the dll uses (dll needs to receive some config info from TA, which is why is has its own interface). They connect, tell me if they want to receive, send, or both.

                If they send, I treat them just like my dll - they send me a "process name", and then just send me data, preceded by context (If they use the context name "auto" or something, it'll act like the clipboard, by default - autotranslation enabled, no filters).

                If they receive, I send them the results of all translations (Not MeCab, JParser, and WWWJDIC, of course). I send them the original string, the translator name, and the resulting translation. If they want, can specify which translators they want to get input from.

                One problem with Scenario 2 - I have no notion of source of a translated string. Context manager just shoves it on to TA, which passes it on to the subwindows, which translate it or queue it to be translated, completely throwing away the original string in the process. Something I eventually intend to rectify, but will probably be a while before I get around to it.


                I'm happy to write a dll interface for TA that can handle your app's side of the conversation for you, just two issues (Note that you may well be able to handle this on your side of things, all you need to be able to do is open a socket, send/receive data on it, and get access to shared memory. I can use a Windows ATOM instead/in addition to the shared memory, if that's easier for you):

                1) I need to know how you're calling dlls, so I can export functions you can use.
                2) Receiving data is non-trivial. You're either going to have to poll the dll to receive data, it's going to have to lock a thread while waiting for data, or it's going to need to be able to call you when data is received.

                Edit: Suppose getting the port isn't necessary, could just hard code it, or require TA be using some port, or store that information elsewhere. TA will try a couple other ports if the configured one is unavailable, though.

                Edit2: Should add that I'm happy to go the dll-route instead of (Or in addition to) the separate process route.
                Last edited by ScumSuckingPig; 08-25-2010, 08:47 PM.

                Comment


                • Here's TA 0.4.3 with some modifications.
                  Tooltips:
                  - Increased maximum width.
                  - Fixed flickering and off screen oversizing, in which case can scroll content with mouse wheel or by clicking/pressing mouse inside upper/lower part (can dismiss by right click or moving mouse away).
                  - I given up on using edict2 because it tends to lump several words together, so it is very hard to make corrections to individual words inside this lump (need to split one line to several), and making corrections is important IMO because edict2/edict contains annoying errors which bugs constantly. Edict is nice in this regard but makes a lot of words with identical definitions (clones) and not look nice in tooltip (pic.1). Even more, such clones are often scattered around creating complete mess (pic.3). So i made all clones group below first one, removing all duplicate definitions and redundant conjugation names.
                  Spoiler
                  Before:

                  After:


                  Before:

                  After:
                  ※ Clone formatting is ignored with "Japanese/definition on it's own line" options because it is hard for me to move them to the very end of text processing, right after clone formatting, and clone formatting near the end is good because the more you remove extra stuff from definitions, the better it works.

                  Other:
                  - Added support for new (T) tag in JParser dictionaries, trying to make words with it most important, so names placed in user dictionary with this tag will not be split by regular words.

                  Modified parts marked in source code by //hack
                  Attached Files
                  読んでみた。 読んでみようとした。 読めたらいいな、と思った。

                  Comment


                  • Sockets are fine with me. That would indeed be the most universal approach imho as socket communication can be initiated via dll calls and many scripting languages have a notion of sockets or support them natively. A plugin dll using shared memory and/or atom tables sounds good as well. It might be faster performance-wise alas I'm not sure that would matter in this case. Ultimately it is up to you which method you prefer implementing. I think your idea with the handshake is great. That could be expanded even more to include some basic authentication and be made to listen to a specific or any interface (0.0.0.0) so remote processes could request translation from TA. That way a person only needs to install atlas on a single computer that would translate for all of his other computers with the included bonus of doing all the configured substitutions before sending out the results to the clients (also adding/listing/removing of substitutions via socket commands would be a welcome feature). The servicing of requests does not have to be multithreaded. It could just buffer them and send them in order. I'm getting too worked up here so forgive my excitement. Thumbs up for your dedication and willingness to expand this project.
                    devOSD nEXT - advanced eroge translation overlay

                    Comment


                    • TA has been crashing quite a bit lately 4.2b version that is any way to fix it?
                      Yesterday never has been,
                      Tomorrow will never come,
                      Today is a figment of your imagination,
                      All that IS is in this moment
                      which will never come again.

                      Comment


                      • Hasn't crashed on me, so I'd need some idea as to what's causing those crashes. errzotl80 reported similar issues with 0.4.2, but says 0.4.3 seems to have cleared things up. You may be running into the same issue, or not. Unless I can reproduce these issues, or someone else figures out the cause, a fix from me is unlikely, unfortunately.

                        Edit: Oh, and Devocalypse... The Multi-threadedness comes from the fact that I don't want to redesign TA, and TA is multi-threaded (Other than JParser and MeCab). My ATLAS code does have a single-threaded interface, but I don't want to have TA lock up to use it and send the result to another process, or implement a new queueing system. Either way, if I stuck with single threaded, it would never be able to work with anything other than ATLAS (ATLAS is generally the best for this purpose, but I'd like to keep it possible to use other translators, rather than locking in ATLAS by its design)
                        Last edited by ScumSuckingPig; 08-26-2010, 03:17 PM.

                        Comment


                        • Well I never said that [ single > multithreaded ]. My assumption was wrong as I thought there was blocking during atlas translation, and thus made those suggestions, but if that is not the case then there is no need for them and it would serve the above mentioned purpose even better.
                          devOSD nEXT - advanced eroge translation overlay

                          Comment


                          • I'm currently using this and it's great. But is anyone getting this error message for OCN's translations?

                            Code:
                            Unrecognized response received:
                            
                            <HTML>
                            <HEAD>
                            <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Shift_JIS">
                            <TITLE>OCN|OCN翻訳サービス:利用規約</TITLE>
                            <META NAME="Keywords" CONTENT="">
                            <META NAME="Description" CONTENT="">
                            
                            <LINK REL="stylesheet" TYPE="text/css" HREF="/common/css/base.css">
                            <SCRIPT LANGUAGE="JavaScript1.2" TYPE="text/javascript" SRC="/common/js/cssselecter.js"></SCRIPT>
                            <SCRIPT LANGUAGE="JavaScript1.2" TYPE="text/javascript">
                            <!--
                            
                            	for (i in gCssFile) {
                            		document.open();
                            		document.write('<LINK REL="stylesheet" TYPE="text/css" HREF="/common/css/' + gCssFile[i] + '">');
                            		document.close();
                            }
                            
                            // -->
                            </SCRIPT>
                            <NOSCRIPT>
                            <LINK REL="stylesheet" TYPE="text/css" HREF="/common/css/default.css">
                            </NOSCRIPT>
                            <SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript" SRC="/common/js/client.js"></SCRIPT>
                            <SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript" SRC="/common/js/window.js"></SCRIPT>
                            </HEAD>
                            <BODY BGCOLOR="#EEEEEE" TEXT="#333333" LINK="#0000CC" ALINK="#0000CC" VLINK="#663333" LEFTMARGIN="0" TOPMARGIN="0" MARGINWIDTH="0" MARGINHEIGHT="0">
                            <CENTER>
                            <!-- ** 2006_header_tool_fix ** -->
                            <table width="740" border="0" cellpadding="0" cellspacing="0">
                            <tr bgcolor="#FFFFFF">
                            <td bgcolor="#CCCCCC" width="1"><img src="http://www.ocn.ne.jp/common/images/clear.gif" alt="" width="1" height="8" border="0"></td>
                            <td width="107" valign="MIDDLE"><a href="http://www.ocn.ne.jp/"><img src="http://www.ocn.ne.jp/common/images/logo_ocn_001.gif" alt="OCN" width="107" height="45" border="0"></a></td>
                            <td width="10"><img src="http://www.ocn.ne.jp/common/images/clear.gif" alt="" width="10" height="1"></td>
                            <td align="CENTER">
                            <table border="0" cellpadding="0" cellspacing="0">
                            <tr><td><img src="http://www.ocn.ne.jp/common/images/clear.gif" alt="" width="1" height="8"></td></tr>
                            <tr><td align="CENTER">
                            <SPAN STYLE="font-size:12px; font-family:Hiragino Kaku Gothic Pro,'ヒラギノ角ゴ Pro W3','MS Pゴシック', Arial, Osaka, Gothic, sans-serif;color:#999;">
                            <A target="_top" HREF="http://www.ocn.ne.jp/weather/" STYLE="text-decoration:none;">天気</A>|<A target="_top" HREF="http://news.goo.ne.jp/?isp=00002" STYLE="text-decoration:none;">ニュース</A>|<A target="_top" HREF="http://ocntv.goo.ne.jp/index.html" STYLE="text-decoration:none;">テレビ</A>|<A target="_top" HREF="http://www.ocn.ne.jp/translation/" STYLE="text-decoration:none;">翻訳</A>|<A target="_top" HREF="http://ocndictionary.goo.ne.jp/" STYLE="text-decoration:none;">辞書</A>|<A target="_top" HREF="http://map.ocn.ne.jp/bg-bin/index.cgi" STYLE="text-decoration:none;">地図</A>|<A target="_top" HREF="http://ocntransit.goo.ne.jp/" STYLE="text-decoration:none;">路線</A>|<A target="_top" HREF="http://ocntownpage.goo.ne.jp/" STYLE="text-decoration:none;">電話帳</A>|<A target="_top" HREF="http://ocnpostcode.goo.ne.jp/" STYLE="text-decoration:none;">郵便番号</A>|<A target="_top" HREF="http://www.ocn.ne.jp/c-navi/" STYLE="text-decoration:none;">コンテンツ</A>|<A target="_top" HREF="http://www.ocn.ne.jp/websearch/services/" STYLE="text-decoration:none;">検索サービス一覧</A></SPAN>
                            </td></tr>
                            <tr><td><img src="http://www.ocn.ne.jp/common/images/clear.gif" alt="" width="1" height="3"></td></tr>
                            <tr><td align="CENTER">
                            <form method="post" action="http://cgi01.ocn.ne.jp/cgi-bin/find/find.cgi" style="display:inline;">
                            <input name="search" type="hidden" value="http://ocnsearch.goo.ne.jp/ocn.jsp?encode=euc&SM=MC&DC=10&IE=eucjp&MT=" id="search">
                            <input name="keyword" type="text" value="" size="60" id="keyword" style=" position:relative;">&nbsp;
                            <input type="image" value="検索" src="http://www.ocn.ne.jp/default/top/general/images/button_search.gif" alt="検索" width="65" height="19" id="image-button" style=" position:relative; top:4px;">&nbsp;
                            </form>
                            </td></tr>
                            <tr><td><img src="http://www.ocn.ne.jp/common/images/clear.gif" alt="" width="1" height="8"></td></tr>
                            </table>
                            </td>
                            <td width="60"><img src="http://www.ocn.ne.jp/common/images/clear.gif" alt="" width="60" height="1"></td>
                            <td bgcolor="#CCCCCC"><img src="http://www.ocn.ne.jp/common/images/clear.gif" alt="" width="1" height="8"></td>
                            </tr>
                            <tr bgcolor="#CCCCCC"><td colspan="6"><img src="http://www.ocn.ne.jp/common/images/clear.gif" alt="" width="8" height="1"></td></tr>
                            <tr bgcolor="#EEEEEE">
                            <td bgcolor="#CCCCCC"><img src="http://www.ocn.ne.jp/common/images/clear.gif" alt="" width="1" height="4"></td>
                            <td><img src="http://www.ocn.ne.jp/common/images/clear.gif" alt="" width="107" height="1"></td>
                            <td><img src="http://www.ocn.ne.jp/common/images/clear.gif" alt="" width="10" height="1"></td>
                            <td colspan="2"><img src="http://www.ocn.ne.jp/common/images/clear.gif" alt="" width="1" height="1"></td>
                            <td bgcolor="#CCCCCC"><img src="http://www.ocn.ne.jp/common/images/clear.gif" alt="" width="1" height="1"></td>
                            </tr>
                            </table>
                            <!-- ** /2006_header_tool_fix ** -->
                            <!-- ooooo header_translation ooooo -->
                            <TABLE WIDTH="740" BORDER="0" CELLPADDING="0" CELLSPACING="0">
                            <TR BGCOLOR="#FFFFFF">
                            <TD BGCOLOR="#CCCCCC"><IMG SRC="/common/images/clear.gif" ALT="" WIDTH="1" HEIGHT="10"></TD>
                            <TD COLSPAN="3"><IMG SRC="/common/images/clear.gif" ALT="" WIDTH="1" HEIGHT="1"></TD>
                            <TD BGCOLOR="#CCCCCC"><IMG SRC="/common/images/clear.gif" ALT="" WIDTH="1" HEIGHT="1"></TD>
                            </TR>
                            <TR BGCOLOR="#FFFFFF">
                            <TD BGCOLOR="#CCCCCC"><IMG SRC="/common/images/clear.gif" ALT="" WIDTH="1" HEIGHT="2"></TD>
                            <TD><IMG SRC="/common/images/clear.gif" ALT="" WIDTH="5" HEIGHT="1"></TD>
                            <TD>
                            <!-- ooooo BannerArea ooooo -->
                            <TABLE WIDTH="728" BORDER="0" CELLPADDING="0" CELLSPACING="0">
                            <TR>
                            <TD ALIGN="center">
                            <!-- AD TAG -->
                            <SCRIPT LANGUAGE="JavaScript"> 
                            var random=Math.random();
                            document.write('<SCR'+'IPT LANGUAGE="JavaScript1.1" SRC="http://ad.nttnavi.co.jp/js.ng/site=ocn&spacedesc=ocntranslation&transactionID='+random+'?">');
                            document.write('</SCR'+'IPT>');
                            </SCRIPT>
                            <NOSCRIPT>
                            <IFRAME WIDTH="468" HEIGHT="60" MARGINWIDTH="0" MARGINHEIGHT="0" HSPACE="0" VSPACE="0" FRAMEBORDER="0" SCROLLING="NO" BORDERCOLOR="#000000" SRC="http://ad.nttnavi.co.jp/html.ng/site=ocn&spacedesc=ocnfiller&transactionID=?">
                            <A HREF="http://ad.nttnavi.co.jp/click.ng/Params.richmedia=yes&site=ocn&spacedesc=ocnfiller&transactionID=?" TARGET="_top"><IMG SRC="http://ad.nttnavi.co.jp/image.ng/Params.richmedia=yes&site=ocn&spacedesc=ocnfiller&transactionID=?" WIDTH="468" HEIGHT="60" BORDER="0" ALT="advertisement"></A>
                            </IFRAME>
                            </NOSCRIPT>
                            <!-- /AD TAG -->
                            </TD>
                            </TR>
                            </TABLE>
                            <!-- xxxxx BannerArea xxxxx -->
                            </TD>
                            <TD><IMG SRC="/common/images/clear.gif" ALT="" WIDTH="5" HEIGHT="1"></TD>
                            <TD BGCOLOR="#CCCCCC"><IMG SRC="/common/images/clear.gif" ALT="" WIDTH="1" HEIGHT="1"></TD>
                            </TR>
                            </TABLE>
                            <TABLE WIDTH="740" BORDER="0" CELLPADDING="0" CELLSPACING="0">
                            <TR BGCOLOR="#FFFFFF">
                            <TD WIDTH="1" BGCOLOR="#CCCCCC"><IMG SRC="/common/images/clear.gif" ALT="" WIDTH="1" HEIGHT="2"></TD>
                            <TD WIDTH="738">
                            <TABLE WIDTH="738" BORDER="0" CELLPADDING="0" CELLSPACING="0">
                            <TR><TD HEIGHT="7"></TD></TR>
                            <TR>
                            <TD>
                            <TABLE WIDTH="738" BORDER="0" CELLPADDING="0" CELLSPACING="0">
                            <TR VALIGN="top">
                            <TD>
                            <A HREF="http://www.ocn.ne.jp/translation/"><IMG SRC="http://www.ocn.ne.jp/translation/images/translation_title.gif" ALT="翻訳" WIDTH="98" HEIGHT="40" BORDER="0"></A><BR>
                            </TD>
                            <TD valign="bottom" align="center">
                            <script language="JavaScript">
                            <!--
                            var random=Math.random();
                            document.write('<iframe width="450" height="20" marginwidth="0" marginheight="0" hspace="0" vspace="0" frameborder="0" scrolling="NO" bordercolor="#000000" SRC="http://ad.nttnavi.co.jp/html.ng/site=ocn&spacedesc=ocntranslation-txt&Params.Styles=navi_0055&tocode=SJIS&transactionID='+random+'?" />');
                            document.write('<scr'+'ipt language="JavaScript1.1" src="http://ad.nttnavi.co.jp/js.ng/site=ocn&spacedesc=ocntranslation-txt&Params.richmedia=yes&Params.Styles=navi_0055&tocode=SJIS&transactionID='+random+'?">');
                            document.write('</scr'+'ipt>');
                            document.write('</iframe>');
                            //-->
                            </script>
                            <noscript>
                            <iframe width="450" height="20" marginwidth="0" marginheight="0" hspace="0" vspace="0" frameborder="0" scrolling="NO" bordercolor="#000000" src="http://ad.nttnavi.co.jp/html.ng/site=ocn&spacedesc=ocntranslation-txt&Params.Styles=navi_0055&tocode=SJIS&transactionID=?">
                            <a href="http://ad.nttnavi.co.jp/click.ng/Params.richmedia=yes&site=ocn&spacedesc=ocntranslation-txt&transactionID=?"><img src="http://ad.nttnavi.co.jp/image.ng/Params.richmedia=yes&site=ocn&spacedesc=ocntranslation-txt&transactionID=?" width="450" height="20" border="0" alt="advertisement" />
                            </a>
                            </iframe>
                            </noscript>
                            </TD>
                            <TD ALIGN="right" WIDTH="20%">
                            <A HREF="http://www.kodensha.jp/"><IMG SRC="http://www.ocn.ne.jp/translation/images/poweredbykodensha.gif" ALT="powered by : KODENSHA" WIDTH="92" HEIGHT="30" BORDER="0"></A><BR>
                            </TD>
                            <TD><IMG SRC="/common/images/clear.gif" ALT="" WIDTH="7" HEIGHT="1" BORDER="0"></TD>
                            </TR>
                            </TABLE>
                            </TD>
                            </TR>
                            <TR><TD HEIGHT="8"></TD></TR>
                            <TR>
                            <TD BGCOLOR="#CCCCCC"><IMG SRC="/common/images/clear.gif" ALT="" WIDTH="581" HEIGHT="1" BORDER="0"></TD>
                            </TR>
                            <TR><TD HEIGHT="1"></TD></TR>
                            <TR>
                            <TD BGCOLOR="#E0DEDE"><IMG SRC="/common/images/clear.gif" ALT="" WIDTH="581" HEIGHT="1" BORDER="0"></TD>
                            </TR>
                            </TABLE>
                            </TD>
                            <TD WIDTH="1" BGCOLOR="#CCCCCC"><IMG SRC="/common/images/clear.gif" ALT="" WIDTH="1" HEIGHT="1"></TD>
                            </TR>
                            </TABLE>
                            <!-- xxxxx header_translation xxxxx -->
                            <!-- ooooo body ooooo -->
                            <TABLE WIDTH="740" BORDER="0" CELLSPACING="0" CELLPADDING="0">
                            <TR>
                            <TD BGCOLOR="#CCCCCC"><IMG SRC="/common/images/clear.gif" ALT="" WIDTH="1" HEIGHT="1"></TD>
                            <TD BGCOLOR="#FFFFFF"><IMG SRC="/common/images/clear.gif" ALT="" WIDTH="9" HEIGHT="1"></TD>
                            <TD BGCOLOR="#FFFFFF" WIDTH="720"><IMG SRC="/common/images/clear.gif" ALT="" WIDTH="1" HEIGHT="15"><BR>
                            <TABLE WIDTH="720" BORDER="0" CELLSPACING="0" CELLPADDING="0">
                            <TR>
                            <TD><FONT COLOR="#000000" SIZE="6" CLASS="s6m"><B>OCN翻訳サービス利用規約</B></FONT><BR></TD>
                            <TD ALIGN="RIGHT" VALIGN="BOTTOM"><FONT COLOR="#000000" SIZE="3" CLASS="s3m"><A HREF="http://www.ocn.ne.jp/translation/">OCN翻訳サービス</A>|利用規約|<A HREF="http://www.ocn.ne.jp/translation/help.html">使い方&FAQ</A></FONT></TD>
                            </TR>
                            </TABLE>
                            <IMG SRC="/common/images/clear.gif" ALT="" WIDTH="1" HEIGHT="10"><BR>
                            <!-- ** title_strong ** -->
                            <TABLE WIDTH="100%" BORDER="0" CELLSPACING="0" CELLPADDING="5">
                            <TR>
                            <TD BGCOLOR="#F6EEEE"><IMG SRC="/common/images/clear.gif" ALT="" WIDTH="10" HEIGHT="1"><FONT COLOR="#990000" SIZE="4" CLASS="s4m"><B>利用規約</B></FONT></TD>
                            </TR>
                            </TABLE>
                            <!-- ** /title_strong ** -->
                            <IMG SRC="/common/images/clear.gif" ALT="" WIDTH="1" HEIGHT="10"><BR>
                            <TABLE WIDTH="705" BORDER="0" CELLSPACING="0" CELLPADDING="0">
                            <TR>
                            <TD><IMG SRC="/common/images/clear.gif" ALT="" WIDTH="15" HEIGHT="1"><BR></TD>
                            <TD WIDTH="690">
                            <!-- ** body_text ** -->
                            <FONT SIZE="3" CLASS="s3">OCN の本サイト上で提供される翻訳サービスを利用するにあたって、以下に利用規定を明記します。ユーザの皆様がサイトを利用する際に、この規定をお読みいただき同意してください。もしこの規定に同意しない場合は、利用をご遠慮ください。 <BR>
                            <BR>
                            本翻訳サービスはユーザの個人的かつ非営利な目的(以下「私的利用」といいます)のために提供されるものであり、本翻訳サービスによる翻訳結果は、私的利用の範囲を超えて、公表、コピー、引用、送信、頒布、改変等することはできません。 <BR>
                            <BR>
                            本翻訳サービスでは、原文に基づいた、できる限り正確な翻訳を提供しますが、どのような機械翻訳にも不正確なところがあります。本翻訳サービスでは、翻訳内容、翻訳の正確さを保証していません。また、OCNは本翻訳サービスにより発生した誤解や意味の取り違いに対し責任を持ちません。 OCN は直接的、間接的、懲罰的、偶発的、特殊な損害、そして本翻訳サービスの利用に起因したいかなる損害に対しても責任を持ちません。これらの損害には、データ、利益の損失等が含まれますが、この限りではありません。 <BR>
                            <BR>
                            本翻訳サービスにおいて、ユーザが私的利用範囲を超え、或いは法令又は公序良俗に違反する行為が原因となり、又は、本サービスの翻訳結果に依拠したことにより、ユーザないし第三者が損害を被った場合、そのすべての責任はユーザが負担することとします。 <BR>
                            <BR>
                            本利用規定は予告無く、変更、修正、追加、削除される場合があります。また、本サービスは予告無く終了する場合があります。予めご了承下さい。 <BR>
                            <BR>
                            ※本サービスは、株式会社高電社の機械翻訳システムを利用し、サービスを提供しております。</FONT><BR>
                            <IMG SRC="/common/images/clear.gif" ALT="" WIDTH="1" HEIGHT="10"><BR>
                            <!-- ** /body_text ** --></TD>
                            </TR>
                            </TABLE></TD>
                            <TD BGCOLOR="#FFFFFF"><IMG SRC="/common/images/clear.gif" ALT="" WIDTH="9" HEIGHT="1"></TD>
                            <TD BGCOLOR="#CCCCCC"><IMG SRC="/common/images/clear.gif" ALT="" WIDTH="1" HEIGHT="1"></TD>
                            </TR>
                            </TABLE>
                            
                            <!-- xxxxx body xxxxx -->
                            <!-- ooooo footer ooooo -->
                            <!-- historyback -->
                            <TABLE WIDTH="740" BORDER="0" CELLPADDING="0" CELLSPACING="0">
                            <TR BGCOLOR="#FFFFFF">
                            <TD BGCOLOR="#CCCCCC"><IMG SRC="/common/images/clear.gif" ALT="" WIDTH="1" HEIGHT="1"></TD>
                            <TD ALIGN="right" WIDTH="738">
                            <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0">
                            <TR VALIGN="top">
                            <TD><IMG SRC="/common/images/symbol_arrow_small_left.gif" ALT="←" WIDTH="13" HEIGHT="9" BORDER="0"></TD>
                            <TD NOWRAP><FONT SIZE="2" CLASS="s2m"><A HREF="javascript:history.back()">前のページへ戻る</A></FONT></TD>
                            <TD><IMG SRC="/common/images/clear.gif" ALT="" WIDTH="10" HEIGHT="8"></TD>
                            </TR>
                            <TR>
                            <TD COLSPAN="3"><IMG SRC="/common/images/clear.gif" ALT="" WIDTH="8" HEIGHT="4"></TD>
                            </TR>
                            </TABLE>
                            </TD>
                            <TD BGCOLOR="#CCCCCC"><IMG SRC="/common/images/clear.gif" ALT="" WIDTH="1" HEIGHT="1"></TD>
                            </TR>
                            </TABLE>
                            <!-- /historyback -->
                            
                            <!-- ** footer_740px ** -->
                            <TABLE WIDTH="740" BORDER="0" CELLPADDING="0" CELLSPACING="0">
                            <TR>
                            <TD COLSPAN="3" BGCOLOR="#CCCCCC"><IMG SRC="/common/images/clear.gif" ALT="" WIDTH="1" HEIGHT="1"></TD>
                            </TR>
                            <TR BGCOLOR="#FFFFFF">
                            <TD BGCOLOR="#CCCCCC"><IMG SRC="/common/images/clear.gif" ALT="" WIDTH="1" HEIGHT="1"></TD>
                            <TD WIDTH="738">
                            <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0">
                            <TR>
                            <TD><A HREF="http://www.ntt.com/" TARGET="_blank"><IMG SRC="/common/images/logo_nttcommunications_001.gif" ALT="NTT Communications" WIDTH="123" HEIGHT="54" BORDER="0"></A></TD>
                            <TD><FONT COLOR="#999999" CLASS="s3">|<A HREF="http://www.ntt.com/COPYRIGHT/" TARGET="_blank">著作権について</A>|<A HREF="http://www.ocn.ne.jp/privacy-policy/" TARGET="_blank">プライバシーポリシー</A>|<A HREF="http://www.ntt.com/" TARGET="_blank">NTTコミュニケーションズ</A>|<BR>
                            </FONT> <IMG SRC="/common/images/clear.gif" ALT="" WIDTH="8" HEIGHT="2"><BR>
                            <IMG SRC="/common/images/copyright_001.gif" ALT="(c) NTT Communications All Rights Reserved" WIDTH="239" HEIGHT="11"></TD>
                            </TR>
                            </TABLE>
                            </TD>
                            <TD><IMG SRC="/common/images/clear.gif" ALT="" WIDTH="10" HEIGHT="10"></TD>
                            <TD BGCOLOR="#CCCCCC"><IMG SRC="/common/images/clear.gif" ALT="" WIDTH="1" HEIGHT="1"></TD>
                            </TR>
                            <TR>
                            <TD COLSPAN="3" BGCOLOR="#CCCCCC"><IMG SRC="/common/images/clear.gif" ALT="" WIDTH="1" HEIGHT="1"></TD>
                            </TR>
                            </TABLE>
                            <!-- ** /footer_740px ** -->
                            <!-- xxxxx footer xxxxx -->
                            
                            </CENTER>
                            
                            <!-- SiteCatalyst code version: H.6.
                            Copyright 1997-2006 Omniture, Inc. More info available at
                            http://www.omniture.com -->
                            <script language="JavaScript" src="/common/js/s_code.js"></script>
                            <script language="JavaScript" src="/sc_code/sc_translation.js"></script>
                            
                            <script language="JavaScript"><!--
                            if(navigator.appVersion.indexOf('MSIE')>=0)document.write(unescape('%3C')+'\!-'+'-')
                            //--></script><!--/DO NOT REMOVE/-->
                            <!-- End SiteCatalyst code version: H.6. -->
                            
                            </BODY>
                            </HTML>

                            Comment


                            • Yeah, OCN is not working anymore for me also.
                              ...

                              Comment


                              • It's OCN's fault. Something to do with the network configuration is what SSP said.

                                Comment

                                Working...
                                X