Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

French translation #4

Open
wants to merge 7 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 29 additions & 29 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,39 +1,39 @@
# Chromeからローカルフォルダーをエクスプローラーで開くChrome拡張
# Extension Chrome pour ouvrir un dossier local dans l'explorateur de Chrome

## 機能
- フォルダをExplorerで開く
- (ファイルの場合)ファイルを選択した状態で親フォルダをExplorerで開く
## Fonction
- Ouvrez le dossier dans Explorer
- (Pour les fichiers) Ouvrez le dossier parent dans l'explorateur avec le fichier sélectionné.


## 対象可能なフォルダ・ファイル
- 現在のタブ(URLが `file://` 始まりの場合)
- リンク先URL(URLが `file://` 始まりの場合)
- 選択文字列(選択文字列が `C:\`, `\\ComputerName\` などで始まる場合)
- 先頭と末尾の `"` (ダブルクォーテーション)は無視する(先頭末尾両方に存在する場合のみ)
## Dossiers et fichiers ciblés
- Onglet courant (si l'URL commence par "fichier://`)
- L'URL du lien (si l'URL commence par "file://`)
- Chaîne de sélection (la chaîne de sélection commence par `C:\\\\, `C:\, `C:ComputerName`, etc.) (condition)
- Ignorez les guillemets de début et de fin (double guillemets) s'ils sont présents aux deux extrémités (uniquement)


## :warning: 注意点
Chromeからホスト側を操作するため、以下の作業が必要
- Node.jsのインストール
- レジストリの変更
## : avertissement : Notes
Afin de contrôler le côté hôte de Chrome, vous devez faire ce qui suit
- Installation de Node.js
- Modifications du registre


## 使い方
1. 拡張をインストール
1. インストール時に開かれる `設定` タブに従って設定する
- 再設定が必要な場合は、拡張のオプションページから可能
1. ページ・リンク・選択テキストの右クリックメニューから「~~をExplorerで開く」を選択
- フォルダをExplorerで開く
- リンク先をExplorerで開く(ローカルファイルの場合)
- 選択文字列をExplorerで開く(ローカルファイルパスの場合)
## Déroulement
1. Installer l'extension
2. Configurez-la selon l'onglet "Configuration" ouvert au moment de l'installation.
- Si vous avez besoin de la reconfigurer, vous pouvez le faire à partir de la page d'options de l'extension
3. Sélectionnez "Ouvrir ... dans l'explorateur" dans le menu contextuel de la page, du lien et du texte sélectionné
- Ouvrir le dossier dans l'explorateur
- Ouvrez la destination du lien dans l'explorateur (pour les fichiers locaux)
- Ouvrez la chaîne de caractères sélectionnée dans l'explorateur (pour le chemin d'accès au fichier local)

### 右クリックメニューのタイトル変更
#### メリット
アルファベット始まりに変更するとキーボードで選択が可能
### Changer le titre du menu du clic droit
#### Avantages
Si vous le passez en mode alphabétique, vous pouvez sélectionner le titre avec le clavier.

#### 変更方法
1. 設定ページ(オプションページ)を開く
1. `右クリックメニュータイトル変更` 部分で右クリックメニューの種類ごとに新タイトルを設定
#### Comment changer
1. Ouvrez la page des paramètres (page d'options)
Nouveaux titres pour chaque type de menu (clic-droit) dans la section "Changer le titre du menu (clic-droit)".

## アイコン
[アイコン素材ダウンロードサイト「icooon-mono](http://icooon-mono.com/) の [フォルダのアイコン素材 その2](http://icooon-mono.com/00019-%e3%83%95%e3%82%a9%e3%83%ab%e3%83%80%e3%81%ae%e3%82%a2%e3%82%a4%e3%82%b3%e3%83%b3%e7%b4%a0%e6%9d%90-%e3%81%9d%e3%81%ae2/) を使わせていただきました。
## Icônes
Nous avons utilisé les icônes Material suivantes pouvant être téléchargées à partir de : [icon material download site "icooon-mono"](http://icooon-mono.com/) & [Folder Icons Web graphics Part 2](http://icooon-mono.com/00019-%e3%83%95%e3%82%a9%e3%83%ab%e3%83%80%e3%81%ae%e3%82%a2%e3%82%a4%e3%82%b3%e3%83%b3%e7%b4%a0%e6%9d%90-%e3%81%9d%e3%81%ae2/).
8 changes: 4 additions & 4 deletions chrome-extension/background.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ chrome.contextMenus.onClicked.addListener((info) => {
const extractResult = extractFilePath(info);
if (!extractResult.isSucceeded) {
notificationUtil.showNotification({
resultMessage: 'ファイルパスではありません',
resultMessage: 'Chemin de fichier non valide',
path: extractResult.target,
});
return;
Expand Down Expand Up @@ -64,7 +64,7 @@ const extractFilePath = info => {
if (info.menuItemId === CONTEXT_MENU.LINK.id) {
const linkUrl = info.linkUrl;
if (!linkUrl.startsWith('file://')) {
// link 要素用の右クリックメニューの表示対象を <all_urls> にしているため fileスキーマ以外を無視する
// link Right-click menu for elements is set to <all_urls>, so all but the file schema is ignored
return ExtractResult.ofFailure(linkUrl);
}
return new ExtractResult(linkUrl, convertUrl2FilePath(linkUrl));
Expand All @@ -79,8 +79,8 @@ const extractFilePath = info => {
};

const convertUrl2FilePath = encodedUrl => {
// 1. hash除去 (例えば、PDFのページ指定時の #page=12)
// 2. %23 -> # 変換のために decodeURI ではなく decodeURIComponent を使用
// 1. Remove hash (e.g., #page=12 for PDF pages)
// 2. %23 -> # Use decodeURIComponent instead of decodeURI for conversion
const decodedURI = decodeURIComponent(encodedUrl.replace(/#.*/, ''));
if (decodedURI.startsWith('file:///')) {
return decodedURI.replace(/^file:\/\/\//, '').replace(/\//g, '\\');
Expand Down
18 changes: 9 additions & 9 deletions chrome-extension/context-menu.js
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
export const CONTEXT_MENU = {
PAGE: {
id: 'page',
description: 'フォルダ・ファイル閲覧',
defaultTitle: 'フォルダをExplorerで開く',
description : "Parcourir les dossiers et les fichiers",
defaultTitle : "Adresse du dossier d'installation dans le gestionnaire de fichiers",
},
LINK: {
id: 'link',
description: 'リンク',
defaultTitle: 'リンク先をExplorerで開く(ローカルファイルの場合)',
description : "Lien",
defaultTitle : "Ouvrez la destination du lien dans l'explorateur (pour les fichiers locaux)",
},
SELECTION: {
id: 'selection',
description: 'テキスト選択',
defaultTitle: '選択文字列をExplorerで開く(ローカルファイルパスの場合)',
description : "Sélection de textes",
defaultTitle : "Ouvrez la chaîne sélectionnée dans l'explorateur (pour le fichier local path",
},
};

Expand All @@ -21,7 +21,7 @@ const generateStorageKey = key => `contextMenus.title.${key}`;
export const saveContextMenuTitle = (key, title) => {
return new Promise((resolve, reject) => {
if (!CONTEXT_MENU.hasOwnProperty(key)) {
return reject('サポートしていないContextMenu typeです');
return reject('Type de menu contextuel non pris en charge');
}
const items = {
[generateStorageKey(key)]: title,
Expand Down Expand Up @@ -62,8 +62,8 @@ export const createContextMenu = () => {
title: contextMenuTitle.LINK,
contexts: ['link'],
targetUrlPatterns: [
// file:///* 指定だとローカルファイルリンクにメニューが表示されないため <all_urls> 指定している
// ※ targetUrlPatterns 指定を無しにしてもOk
// file:///* If you specify <all_urls>, the menu will not be displayed on the local file link.)
// ※ targetUrlPatterns can be left out.
'<all_urls>',
],
id: CONTEXT_MENU.LINK.id,
Expand Down
14 changes: 7 additions & 7 deletions chrome-extension/host-app-src/native-messaging-host-app.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,19 +33,19 @@ const send = (messageObject) => {
};


/** Explorerで開く
* - path が ディレクトリ(末尾が\\) の場合: ディレクトリを開く
* - path が ファイル の場合: 選択した状態で開く
/** Open in Explorer
* - If the path is a directory (ending in Fresno): Open the directory
* - If path is a file: Open with the selection
* @param {string} path
*/
const openByExplorer = path => {
path = path.replace(/\\+$/, '');
fs.stat(path, (err, stats) => {
if (err) {
// file or directory が無い
// file or directory unavailable
send({
path,
resultMessage: 'ファイル/フォルダが存在しません',
resultMessage: "Le fichier/dossier n'existe pas.",
err,
});
return;
Expand All @@ -54,13 +54,13 @@ const openByExplorer = path => {
execFile('explorer', [path]);
send({
path,
resultMessage: 'フォルダを開きました',
resultMessage: 'Le dossier est ouvert',
});
} else {
execFile('explorer', ['/select,', path]);
send({
path,
resultMessage: 'ファイルのあるフォルダを開きました',
resultMessage: 'Le dossier contenant les fichiers est ouvert',
});
}
});
Expand Down
4 changes: 2 additions & 2 deletions chrome-extension/manifest.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "Open local folder by explorer",
"description": "Chromeからローカルフォルダーをエクスプローラーで開く",
"description": "Ouvrez un dossier local dans l'explorateur via un lien dans Chrome",
"version": "0.2.0",
"manifest_version": 2,
"icons": {
Expand All @@ -19,4 +19,4 @@
"page": "background.html",
"persistent": false
}
}
}
42 changes: 23 additions & 19 deletions chrome-extension/setup/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<html>
<head>
<meta charset="utf-8">
<title>設定</title>
<title>Setup</title>
<style>
body {
font-size: large;
Expand Down Expand Up @@ -36,26 +36,30 @@
#update-notification:target {
display: block;
}
ol > li {
margin-top:7px;
}
</style>
</head>
<body>
<div id="update-notification">
拡張機能が更新されました。再設定をお願いします。
L'extension a été mise à jour. Veuillez la reconfigurer.
</div>
<h1>
初期設定
Initialisation
</h1>
<p>Ces mesures sont nécessaires pour permettre à l'extension d'être pleinement opérationnelle.</p>
<ol>
<li>
<a href="https://nodejs.org/ja/" target="_blank">Node.js</a> をインストール<br>
※ LTS 推奨版でOK
Installer <a href="https://nodejs.org/ja/" target="_blank">Node.js</a>.<br>
La version LTS est recommandée.
</li>
<li>
削除されない適当な場所にフォルダを作成する<br>
フォルダが削除や移動によって存在しなくなると本初期設定の再実施が必要
Créez un dossier dans un endroit approprié qui ne sera pas supprimé.<br>
Si le dossier disparaît en raison d'une suppression ou d'un déplacement, cette configuration initiale doit être réalisée de nouveau.
</li>
<li>
以下のファイルを作成したフォルダに保存
Enregistrez les fichiers suivants dans le dossier que vous venez de créer.
<ul>
<li>
<a id="manifest-json-download-link" download="manifest.json">manifest.json</a>
Expand All @@ -69,44 +73,44 @@ <h1>
</ul>
</li>
<li>
作成したフォルダのpathを以下に入力<br>
Chemin d'accès au dossier que vous avez créé :<br>
<input id="dirPath" placeholder="C:\path\to">
</li>
<li>
レジストリ登録
Génération du fichier de registre, effectuer l'édition du registre soit à partir de l'édition manuelle OU à partir du lancement du fichier généré :
<ul>
<li>
レジストリエディターから手動で設定
<b>(Utilisateurs AVANCÉS uniquement)</b> Configuration manuelle à partir de l'éditeur de registre.
<pre data-description="Key"><code id="reg-key"></code></pre>
<pre data-description="Value"><code id="reg-value"></code></pre>
</li>
<li>
レジストリ登録ファイルを <a id="reg-download-link">ダウンロード</a> して実行
<b>(Solution PRÉFÉRÉE)</b> Téléchargez le fichier généré : <a id="reg-download-link">clé de registre</a> et lancez-le (double-clic).
<pre><code id="reg-content"></code></pre>
</li>
</ul>
</li>
<li>
動作確認
Vérification du bon fonctionnement
<ol>
<li>
Explorerで開く ディレクトリ/ファイル のパス<br>
Ajoutez le chemin d'accès à un dossier à ouvrir dans Explorer<br>
<input id="filePathToOpen" value="C:\ProgramData\">
</li>
<li>
<button type="button" id="open">Explorerで開く</button>
<button type="button" id="open">Ouvrir dans Explorerく</button>
</li>
</ol>
</li>
</ol>
<h1>
右クリックメニュータイトル変更
Cliquez sur le titre du menu avec le bouton droit de la souris pour le modifier
</h1>
<p>
キーボードショートカット用<br>
Enterで保存
Raccourci clavier<br>
Appuyez sur la touche Entrée pour sauvegarder.
</p>
<ul id="context-menu-title-setting-container"></ul>
<script type="module" src="./main.js"></script>
</body>
</html>
</html>
6 changes: 3 additions & 3 deletions chrome-extension/setup/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,13 @@ import notificationUtil from '../notification-util.js';

{
/**
* 文字列をUTF-16用にUint16Arrayに変換する
* Convert a string to a Uint16Array for UTF-16
* @param {String} str
* @returns {Uint16Array}
*/
const convertToUtf16 = str => {
const codePointArray = Array.from(str).map(c => c.codePointAt(0));
// TODO: サロゲートペア(codePointが0xFFFFを超える場合)対応
// TODO: Surrogate Pairs (when the code point exceeds 0xFFFF)
return new Uint16Array(codePointArray);
};

Expand Down Expand Up @@ -87,7 +87,7 @@ import notificationUtil from '../notification-util.js';
const input = document.createElement('input');
input.value = currentTitle;
input.placeholder = CONTEXT_MENU[key].defaultTitle;
input.title = 'Enterで保存';
input.title = 'Appuyez sur la touche Entrée pour sauvegarder';
input.addEventListener('keydown', evt => {
if (evt.key === 'Enter') {
saveContextMenuTitle(key, input.value).then(updateContextMenu);
Expand Down