STEAM GROUP
Divinity: Original Sin 2 日本語化プロジ DOS2日本語化
STEAM GROUP
Divinity: Original Sin 2 日本語化プロジ DOS2日本語化
11
IN-GAME
100
ONLINE
Founded
12 September, 2017
Language
Japanese
Location
Japan 
Showing 181-190 of 256 entries
109
作業履歴
スクリプトを修正して、原文付き版と番号付き版の翻訳データを出力するように
http://gtm.steamproxy.vip/groups/dos2_jp_mod#announcements/detail/1446078264125923222

// 翻訳室のURL var url_1 = "https://docs.google.com/spreadsheets/d/1r5uaQeDvJNC3qDkGMSf0TQvnInZnSxjNT-b0W1d0GmE/edit"; var url_2 = "https://docs.google.com/spreadsheets/d/19AOb1oXBEX0bvR60BIYacHNsDDrMtPuy91udCijTbiU/edit"; var url_3 = "https://docs.google.com/spreadsheets/d/10O5bD12Ac4k1nKJFdGuT_f5D29NqvV6rjTSFs5jSkAM/edit"; // 翻訳室のシートの名前 var sheetName_1 = "翻訳データ(オリジン、Fort Joy)"; var sheetName_2 = "翻訳データ(Reapers Coast)"; var sheetName_3 = "翻訳データ(その他)"; // 翻訳室のシートの行数 var max_row_1 = 25025; var max_row_2 = 25215; var max_row_3 = 30888; //翻訳データを指定のフォルダにxmlファイルとして出力する // 原文もつける function saveAsXML_EN() { var fileName = "english" fileName = fileName + ".xml"; var folderName = "0B1yUXrJn16wCS1RWWHA4XzFVd28"; var csvFile = convertRangeToCsvFile_EN(fileName); var folder = DriveApp.getFolderById(folderName); var oldFiles = folder.getFiles(); var file = "" var idToDLET = "" while (oldFiles.hasNext()) { file = oldFiles.next(); idToDLET = file.getId(); file.setSharing(DriveApp.Access.PRIVATE, DriveApp.Permission.EDIT) Drive.Files.remove(idToDLET); } var newfile = folder.createFile(fileName, csvFile); newfile.setSharing(DriveApp.Access.ANYONE, DriveApp.Permission.VIEW) } function convertRangeToCsvFile_EN(csvFileName) { var spreadsheet_1 = SpreadsheetApp.openByUrl(url_1); var sheet_1 = spreadsheet_1.getSheetByName(sheetName_1); var spreadsheet_2 = SpreadsheetApp.openByUrl(url_2); var sheet_2 = spreadsheet_2.getSheetByName(sheetName_2); var spreadsheet_3 = SpreadsheetApp.openByUrl(url_3); var sheet_3 = spreadsheet_3.getSheetByName(sheetName_3); var maintext_1 = sheet_1.getRange(2,3,max_row_1,7); var maintext_2 = sheet_2.getRange(2,3,max_row_2,7); var maintext_3 = sheet_3.getRange(2,3,max_row_3,7); var data_1 = maintext_1.getValues(); var data_2 = maintext_2.getValues(); var data_3 = maintext_3.getValues(); var csvFile = undefined; var datastr; var datastr_en; // 一行目、プロジェクトのURL var csv = "<!-- Divinity: Original Sin 2 日本語化プロジェクト:http://gtm.steamproxy.vip/groups/dos2_jp_mod -->\r\n"; // 二行目、生成日時 var csv = "<!-- " + Utilities.formatDate(new Date(), 'JST', 'yyyy年MM月dd日HH時') + "に自動生成 -->\r\n<contentList>\r\n"; // 第一翻訳室のデータを取得 var rowMax = data_1.length -1; for (var row = 0; row < rowMax; row++) { datastr = data_1[row][0].toString(); datastr = datastr.replace(/&/g, "&amp;") datastr = datastr.replace(/</g, "&lt;") datastr = datastr.replace(/>/g, "&gt;") datastr = datastr.replace(/'/g, "&apos;") datastr_en = data_1[row][3].toString(); datastr_en = datastr_en.replace(/&/g, "&amp;") datastr_en = datastr_en.replace(/</g, "&lt;") datastr_en = datastr_en.replace(/>/g, "&gt;") datastr_en = datastr_en.replace(/'/g, "&apos;") if(data_1[row][1] == '✕'){ csv += ' <content contentuid="' + data_1[row][4] + '">' + datastr_en + '</content>\r\n'; }else { csv += ' <content contentuid="' + data_1[row][4] + '">' + datastr + '/' + datastr_en + '</content>\r\n'; } } csvFile = csv; // 第二翻訳室のデータを取得 csv = ""; rowMax = data_2.length -1; for (var row = 0; row < rowMax; row++) { datastr = data_2[row][0].toString(); datastr = datastr.replace(/&/g, "&amp;") datastr = datastr.replace(/</g, "&lt;") datastr = datastr.replace(/>/g, "&gt;") datastr = datastr.replace(/'/g, "&apos;") datastr_en = data_2[row][3].toString(); datastr_en = datastr_en.replace(/&/g, "&amp;") datastr_en = datastr_en.replace(/</g, "&lt;") datastr_en = datastr_en.replace(/>/g, "&gt;") datastr_en = datastr_en.replace(/'/g, "&apos;") if(data_2[row][1] == '✕'){ csv += ' <content contentuid="' + data_2[row][4] + '">' + datastr_en + '</content>\r\n'; }else { csv += ' <content contentuid="' + data_2[row][4] + '">' + datastr + '/' + datastr_en + '</content>\r\n'; } } csvFile += csv; // 第三翻訳室のデータを取得 csv = ""; rowMax = data_3.length -1; for (var row = 0; row < rowMax; row++) { datastr = data_3[row][0].toString(); datastr = datastr.replace(/&/g, "&amp;") datastr = datastr.replace(/</g, "&lt;") datastr = datastr.replace(/>/g, "&gt;") datastr = datastr.replace(/'/g, "&apos;") datastr_en = data_3[row][3].toString(); datastr_en = datastr_en.replace(/&/g, "&amp;") datastr_en = datastr_en.replace(/</g, "&lt;") datastr_en = datastr_en.replace(/>/g, "&gt;") datastr_en = datastr_en.replace(/'/g, "&apos;") if(data_3[row][1] == '✕'){ csv += ' <content contentuid="' + data_3[row][4] + '">' + datastr_en + '</content>\r\n'; }else { csv += ' <content contentuid="' + data_3[row][4] + '">' + datastr + '/' + datastr_en + '</content>\r\n'; } } csv += '</contentList>'; csvFile += csv; return csvFile; }

//翻訳データを指定のフォルダにxmlファイルとして出力する // 先頭に翻訳室の番号と行数を追加 function saveAsXML_Num() { var fileName = "english" fileName = fileName + ".xml"; var folderName = "0B1yUXrJn16wCNmR5Y0ozdjRBcms"; var csvFile = convertRangeToCsvFile_Num(fileName); var folder = DriveApp.getFolderById(folderName); var oldFiles = folder.getFiles(); var file = "" var idToDLET = "" while (oldFiles.hasNext()) { file = oldFiles.next(); idToDLET = file.getId(); file.setSharing(DriveApp.Access.PRIVATE, DriveApp.Permission.EDIT) Drive.Files.remove(idToDLET); } var newfile = folder.createFile(fileName, csvFile); newfile.setSharing(DriveApp.Access.ANYONE, DriveApp.Permission.VIEW) } //機械翻訳無し版のデータ変換 function convertRangeToCsvFile_Num(csvFileName) { var spreadsheet_1 = SpreadsheetApp.openByUrl(url_1); var sheet_1 = spreadsheet_1.getSheetByName(sheetName_1); var spreadsheet_2 = SpreadsheetApp.openByUrl(url_2); var sheet_2 = spreadsheet_2.getSheetByName(sheetName_2); var spreadsheet_3 = SpreadsheetApp.openByUrl(url_3); var sheet_3 = spreadsheet_3.getSheetByName(sheetName_3); var maintext_1 = sheet_1.getRange(2,3,max_row_1,7); var maintext_2 = sheet_2.getRange(2,3,max_row_2,7); var maintext_3 = sheet_3.getRange(2,3,max_row_3,7); var data_1 = maintext_1.getValues(); var data_2 = maintext_2.getValues(); var data_3 = maintext_3.getValues(); var csvFile = undefined; var datastr; var number; // 一行目、プロジェクトのURL var csv = "<!-- Divinity: Original Sin 2 日本語化プロジェクト:http://gtm.steamproxy.vip/groups/dos2_jp_mod -->\r\n"; // 二行目、生成日時 var temp_csv = "<!-- " + Utilities.formatDate(new Date(), 'JST', 'yyyy年MM月dd日HH時') + "に自動生成 -->\r\n<contentList>\r\n"; csv += temp_csv; // 第一翻訳室のデータを取得 var rowMax = data_1.length -1; for (var row = 0; row < rowMax; row++) { datastr = data_1[row][0].toString(); datastr = datastr.replace(/&/g, "&amp;") datastr = datastr.replace(/</g, "&lt;") datastr = datastr.replace(/>/g, "&gt;") datastr = datastr.replace(/'/g, "&apos;") number = row + 2; csv += ' <content contentuid="' + data_1[row][4] + '">[1-'+ number + ']' + datastr + '</content>\r\n'; } csvFile = csv; // 第二翻訳室のデータを取得 csv = ""; rowMax = data_2.length -1; for (var row = 0; row < rowMax; row++) { datastr = data_2[row][0].toString(); datastr = datastr.replace(/&/g, "&amp;") datastr = datastr.replace(/</g, "&lt;") datastr = datastr.replace(/>/g, "&gt;") datastr = datastr.replace(/'/g, "&apos;") number = row + 2; csv += ' <content contentuid="' + data_2[row][4] + '">[2-'+ number + ']' + datastr + '</content>\r\n'; } csvFile += csv; // 第三翻訳室のデータを取得 csv = ""; rowMax = data_3.length -1; for (var row = 0; row < rowMax; row++) { datastr = data_3[row][0].toString(); datastr = datastr.replace(/&/g, "&amp;") datastr = datastr.replace(/</g, "&lt;") datastr = datastr.replace(/>/g, "&gt;") datastr = datastr.replace(/'/g, "&apos;") number = row + 2; csv += ' <content contentuid="' + data_3[row][4] + '">[3-'+ number + ']' + datastr + '</content>\r\n'; } csv += '</contentList>'; csvFile += csv; return csvFile; }
107
有志翻訳者を全力で応援するスレッド
6
ファイヤ?ファイア?
109
作業履歴
12
作業所の負荷軽減策の検討について
109
作業履歴
作業所の改修2

これまでの作業所を、中央観測室へと改修する
集計シートを作成し、あらかじめ作成しておいたシートからコピペ
※集計シートは進捗データを計算するための物なので、後々非表示にする
相変わらず重いので、翻訳データのシートを削除
概要ページを、あらかじめ作成しておいたシートからコピペ
各作業所のIMPORTRANGEのURLを修正
中央観測室に全文検索用データシートを作成し、IDでソートしたExcelファイルからデータをコピペ
進捗グラフのシートを修正
用語集のシートを微修正(メモ欄を候補3の右に移動)

スクリプトの修正
スクリプトエディタで、あらかじめ作成しておいた翻訳データ変換プログラムをコピペ
スクリプトの出力フォルダなどを修正し、テスト
作成したenglish.xmlを使ってゲームを起動し、日本語化できることを確認
スクリプトの自動実行を設定
負荷を減らすため、翻訳データ変換スクリプトも一日一回の実行に減らす

作業所を公開
各作業所の共有設定を編集可に変更
試しにEdgeからアクセスし、テキストを一つ翻訳してみる
→問題なさげ

プロジェクトページの編集
翻訳データの番号付き版は、スクリプトの変更が必要なので、一旦出力を停止する。「日本語化方法」のページにその旨を記載する
「翻訳の方法」のページを修正。そのうちもう少し分かりやすく修正するかも

終了告知
http://gtm.steamproxy.vip/groups/dos2_jp_mod#announcements/detail/1451707209229007216
Showing 181-190 of 256 entries