mirror of
https://github.com/laurent22/joplin.git
synced 2024-11-27 08:21:03 +02:00
Added list of translated languages to README file
This commit is contained in:
parent
fad96f5266
commit
f66be08d1d
@ -799,6 +799,16 @@ msgstr ""
|
||||
"verwendet werden, abhängig davon, wie die jeweiligen Notizen oder "
|
||||
"Notizbücher ursprünglich verschlüsselt wurden."
|
||||
|
||||
#, fuzzy
|
||||
msgid "Missing Master Keys"
|
||||
msgstr "Hauptschlüssel"
|
||||
|
||||
msgid ""
|
||||
"The master keys with these IDs are used to encrypt some of your items, "
|
||||
"however the application does not currently have access to them. It is likely "
|
||||
"they will eventually be downloaded via synchronisation."
|
||||
msgstr ""
|
||||
|
||||
msgid "Status"
|
||||
msgstr "Status"
|
||||
|
||||
|
@ -694,6 +694,15 @@ msgid ""
|
||||
"how the notes or notebooks were originally encrypted."
|
||||
msgstr ""
|
||||
|
||||
msgid "Missing Master Keys"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"The master keys with these IDs are used to encrypt some of your items, "
|
||||
"however the application does not currently have access to them. It is likely "
|
||||
"they will eventually be downloaded via synchronisation."
|
||||
msgstr ""
|
||||
|
||||
msgid "Status"
|
||||
msgstr ""
|
||||
|
||||
|
@ -755,6 +755,15 @@ msgid ""
|
||||
"how the notes or notebooks were originally encrypted."
|
||||
msgstr ""
|
||||
|
||||
msgid "Missing Master Keys"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"The master keys with these IDs are used to encrypt some of your items, "
|
||||
"however the application does not currently have access to them. It is likely "
|
||||
"they will eventually be downloaded via synchronisation."
|
||||
msgstr ""
|
||||
|
||||
msgid "Status"
|
||||
msgstr "Estatus"
|
||||
|
||||
|
@ -767,6 +767,15 @@ msgid ""
|
||||
"how the notes or notebooks were originally encrypted."
|
||||
msgstr ""
|
||||
|
||||
msgid "Missing Master Keys"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"The master keys with these IDs are used to encrypt some of your items, "
|
||||
"however the application does not currently have access to them. It is likely "
|
||||
"they will eventually be downloaded via synchronisation."
|
||||
msgstr ""
|
||||
|
||||
msgid "Status"
|
||||
msgstr "Estado"
|
||||
|
||||
|
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Joplin-CLI 1.0.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"Last-Translator: \n"
|
||||
"Last-Translator: Laurent Cozic\n"
|
||||
"Language-Team: \n"
|
||||
"Language: fr_FR\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@ -784,6 +784,18 @@ msgstr ""
|
||||
"pour le décryptage, selon la façon dont les notes ou carnets étaient cryptés "
|
||||
"à l'origine."
|
||||
|
||||
msgid "Missing Master Keys"
|
||||
msgstr "Clefs maître manquantes"
|
||||
|
||||
msgid ""
|
||||
"The master keys with these IDs are used to encrypt some of your items, "
|
||||
"however the application does not currently have access to them. It is likely "
|
||||
"they will eventually be downloaded via synchronisation."
|
||||
msgstr ""
|
||||
"Les clefs maître avec ces identifiants sont utilisées pour crypter certains "
|
||||
"de vos objets, cependant le logiciel n'y a pour l'instant pas accès. Il est "
|
||||
"probable qu'elle vont être prochainement disponible via la synchronisation."
|
||||
|
||||
msgid "Status"
|
||||
msgstr "État"
|
||||
|
||||
|
@ -775,6 +775,15 @@ msgid ""
|
||||
"how the notes or notebooks were originally encrypted."
|
||||
msgstr ""
|
||||
|
||||
msgid "Missing Master Keys"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"The master keys with these IDs are used to encrypt some of your items, "
|
||||
"however the application does not currently have access to them. It is likely "
|
||||
"they will eventually be downloaded via synchronisation."
|
||||
msgstr ""
|
||||
|
||||
msgid "Status"
|
||||
msgstr "Status"
|
||||
|
||||
|
@ -755,6 +755,15 @@ msgid ""
|
||||
"how the notes or notebooks were originally encrypted."
|
||||
msgstr ""
|
||||
|
||||
msgid "Missing Master Keys"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"The master keys with these IDs are used to encrypt some of your items, "
|
||||
"however the application does not currently have access to them. It is likely "
|
||||
"they will eventually be downloaded via synchronisation."
|
||||
msgstr ""
|
||||
|
||||
msgid "Status"
|
||||
msgstr "Stato"
|
||||
|
||||
|
@ -755,6 +755,15 @@ msgstr ""
|
||||
"注意:\"active\"に指定されたマスターキーのみが暗号化に使用されます。暗号化に"
|
||||
"使用されたキーの応じて、すべてのキーが暗号解除のために使用されます。"
|
||||
|
||||
msgid "Missing Master Keys"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"The master keys with these IDs are used to encrypt some of your items, "
|
||||
"however the application does not currently have access to them. It is likely "
|
||||
"they will eventually be downloaded via synchronisation."
|
||||
msgstr ""
|
||||
|
||||
msgid "Status"
|
||||
msgstr "状態"
|
||||
|
||||
|
@ -694,6 +694,15 @@ msgid ""
|
||||
"how the notes or notebooks were originally encrypted."
|
||||
msgstr ""
|
||||
|
||||
msgid "Missing Master Keys"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"The master keys with these IDs are used to encrypt some of your items, "
|
||||
"however the application does not currently have access to them. It is likely "
|
||||
"they will eventually be downloaded via synchronisation."
|
||||
msgstr ""
|
||||
|
||||
msgid "Status"
|
||||
msgstr ""
|
||||
|
||||
|
@ -781,6 +781,16 @@ msgstr ""
|
||||
"(aangeduid met \"active\"). Alle sleutels kunnen gebruikt worden voor "
|
||||
"decodering, afhankelijk van hoe de notitieboeken initieel versleuteld zijn."
|
||||
|
||||
#, fuzzy
|
||||
msgid "Missing Master Keys"
|
||||
msgstr "Hoofdsleutels"
|
||||
|
||||
msgid ""
|
||||
"The master keys with these IDs are used to encrypt some of your items, "
|
||||
"however the application does not currently have access to them. It is likely "
|
||||
"they will eventually be downloaded via synchronisation."
|
||||
msgstr ""
|
||||
|
||||
msgid "Status"
|
||||
msgstr "Status"
|
||||
|
||||
|
@ -750,6 +750,15 @@ msgid ""
|
||||
"how the notes or notebooks were originally encrypted."
|
||||
msgstr ""
|
||||
|
||||
msgid "Missing Master Keys"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"The master keys with these IDs are used to encrypt some of your items, "
|
||||
"however the application does not currently have access to them. It is likely "
|
||||
"they will eventually be downloaded via synchronisation."
|
||||
msgstr ""
|
||||
|
||||
msgid "Status"
|
||||
msgstr "Status"
|
||||
|
||||
|
@ -782,6 +782,16 @@ msgstr ""
|
||||
"ключей, в зависимости от того, как изначально были зашифрованы заметки или "
|
||||
"блокноты."
|
||||
|
||||
#, fuzzy
|
||||
msgid "Missing Master Keys"
|
||||
msgstr "Мастер-ключи"
|
||||
|
||||
msgid ""
|
||||
"The master keys with these IDs are used to encrypt some of your items, "
|
||||
"however the application does not currently have access to them. It is likely "
|
||||
"they will eventually be downloaded via synchronisation."
|
||||
msgstr ""
|
||||
|
||||
msgid "Status"
|
||||
msgstr "Статус"
|
||||
|
||||
|
@ -721,6 +721,15 @@ msgid ""
|
||||
"how the notes or notebooks were originally encrypted."
|
||||
msgstr ""
|
||||
|
||||
msgid "Missing Master Keys"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"The master keys with these IDs are used to encrypt some of your items, "
|
||||
"however the application does not currently have access to them. It is likely "
|
||||
"they will eventually be downloaded via synchronisation."
|
||||
msgstr ""
|
||||
|
||||
msgid "Status"
|
||||
msgstr "状态"
|
||||
|
||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
29
README.md
29
README.md
@ -104,6 +104,12 @@ On the **terminal application**, you will need to set the `sync.target` config v
|
||||
|
||||
If synchronisation does not work, please consult the logs in the app profile directory - it is often due to a misconfigured URL or password. The log should indicate what the exact issue is.
|
||||
|
||||
## WebDAV synchronisation
|
||||
|
||||
**Important: This is a beta feature. It has been extensively tested and is already in use by some users, but it is possible that some bugs remain. If you wish to you use it, it is recommended that you keep a backup of your data. The simplest way is to regularly backup the profile directory of the desktop or terminal application.**
|
||||
|
||||
Select the "WebDAV" synchronisation target and follow the same instructions as for Nextcloud above.
|
||||
|
||||
## OneDrive synchronisation
|
||||
|
||||
When syncing with OneDrive, Joplin creates a sub-directory in OneDrive, in /Apps/Joplin and read/write the notes and notebooks from it. The application does not have access to anything outside this directory.
|
||||
@ -140,15 +146,36 @@ If for any reason the notifications do not work, please [open an issue](https://
|
||||
|
||||
# Localisation
|
||||
|
||||
Joplin is currently available in English, French, Spanish, German, Portuguese, Chinese, Japanese, Russian, Croatian, Dutch and Italian. If you would like to contribute a translation, it is quite straightforward, please follow these steps:
|
||||
Joplin is currently available in the languages below. If you would like to contribute a **new translation**, it is quite straightforward, please follow these steps:
|
||||
|
||||
- [Download Poedit](https://poedit.net/), the translation editor, and install it.
|
||||
- [Download the file to be translated](https://raw.githubusercontent.com/laurent22/joplin/master/CliClient/locales/joplin.pot).
|
||||
- In Poedit, open this .pot file, go into the Catalog menu and click Configuration. Change "Country" and "Language" to your own country and language.
|
||||
- From then you can translate the file. Once it is done, please either [open a pull request](https://github.com/laurent22/joplin/pulls) or send the file to [this address](https://raw.githubusercontent.com/laurent22/joplin/master/Assets/Adresse.png).
|
||||
|
||||
To **update a translation**, follow the same steps as above but instead of getting the .pot file, get the .po file for your language from there: https://github.com/laurent22/joplin/tree/master/CliClient/locales
|
||||
|
||||
This translation will apply to the three applications - desktop, mobile and terminal.
|
||||
|
||||
Current translations:
|
||||
|
||||
<!-- LOCALE-TABLE-AUTO-GENERATED -->
|
||||
Language | Code | Last translator | Percent done
|
||||
---|---|---|---
|
||||
Croatian | hr_HR | Hrvoje Mandić <trbuhom@net.hr> | 72%
|
||||
Deutsch | de_DE | Tobias Strobel <git@strobeltobias.de> | 92%
|
||||
English | en_GB | | 100%
|
||||
Español | es_ES | Lucas Vieites | 80%
|
||||
Español (Costa Rica) | es_CR | | 68%
|
||||
Français | fr_FR | Laurent Cozic | 100%
|
||||
Italiano | it_IT | | 76%
|
||||
Nederlands | nl_BE | | 90%
|
||||
Português (Brasil) | pt_BR | | 74%
|
||||
Русский | ru_RU | Artyom Karlov <artyom.karlov@gmail.com> | 96%
|
||||
中文 (简体) | zh_CN | RCJacH <RCJacH@outlook.com> | 76%
|
||||
日本語 | ja_JP | | 74%
|
||||
<!-- LOCALE-TABLE-AUTO-GENERATED -->
|
||||
|
||||
# Contributing
|
||||
|
||||
Please see the guide for information on how to contribute to the development of Joplin: https://github.com/laurent22/joplin/blob/master/CONTRIBUTING.md
|
||||
|
@ -126,6 +126,10 @@ You will need to set the `sync.target` config variable and all the `sync.5.path`
|
||||
|
||||
If synchronisation does not work, please consult the logs in the app profile directory - it is often due to a misconfigured URL or password. The log should indicate what the exact issue is.
|
||||
|
||||
## WebDAV synchronisation
|
||||
|
||||
Select the "WebDAV" synchronisation target and follow the same instructions as for Nextcloud above.
|
||||
|
||||
## OneDrive synchronisation
|
||||
|
||||
When syncing with OneDrive, Joplin creates a sub-directory in OneDrive, in /Apps/Joplin and read/write the notes and notebooks from it. The application does not have access to anything outside this directory.
|
||||
|
@ -297,4 +297,4 @@ function _(s, ...args) {
|
||||
return sprintf(result, ...args);
|
||||
}
|
||||
|
||||
module.exports = { _, supportedLocales, localeStrings, setLocale, supportedLocalesToLanguages, defaultLocale, closestSupportedLocale, languageCode };
|
||||
module.exports = { _, supportedLocales, countryDisplayName, localeStrings, setLocale, supportedLocalesToLanguages, defaultLocale, closestSupportedLocale, languageCode };
|
@ -73,10 +73,14 @@ class DecryptionWorker {
|
||||
for (let i = 0; i < items.length; i++) {
|
||||
const item = items[i];
|
||||
|
||||
if (['edf44b7a0e4f8cbf248e206cd8dfa800', '2ccb3c9af0b1adac2ec6b66a5961fbb1'].indexOf(item.id) >= 0) continue; // Temp hack
|
||||
// Temp hack
|
||||
if (['edf44b7a0e4f8cbf248e206cd8dfa800', '2ccb3c9af0b1adac2ec6b66a5961fbb1'].indexOf(item.id) >= 0) {
|
||||
excludedIds.push(item.id);
|
||||
continue;
|
||||
}
|
||||
|
||||
const ItemClass = BaseItem.itemClass(item);
|
||||
this.logger().debug('DecryptionWorker: decrypting: ' + item.id + ' (' + ItemClass.tableName() + ')');
|
||||
this.logger().info('DecryptionWorker: decrypting: ' + item.id + ' (' + ItemClass.tableName() + ')');
|
||||
try {
|
||||
await ItemClass.decrypt(item);
|
||||
} catch (error) {
|
||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,5 +1,7 @@
|
||||
"use strict"
|
||||
|
||||
require('app-module-path').addPath(__dirname + '/../ReactNativeClient');
|
||||
|
||||
const rootDir = __dirname + '/..';
|
||||
|
||||
const processArgs = process.argv.splice(2, process.argv.length);
|
||||
@ -16,6 +18,7 @@ const rnDir = rootDir + '/ReactNativeClient';
|
||||
const electronDir = rootDir + '/ElectronClient/app';
|
||||
|
||||
const { execCommand } = require('./tool-utils.js');
|
||||
const { countryDisplayName } = require('lib/locale.js');
|
||||
|
||||
function parsePoFile(filePath) {
|
||||
const content = fs.readFileSync(filePath);
|
||||
@ -105,6 +108,59 @@ function availableLocales(defaultLocale) {
|
||||
return output;
|
||||
}
|
||||
|
||||
async function translationStatus(isDefault, poFile) {
|
||||
// "apt install translate-toolkit" to have pocount
|
||||
const command = 'pocount "' + poFile + '"';
|
||||
const result = await execCommand(command);
|
||||
const matches = result.match(/translated:\s*?(\d+)\s*\((.+?)%\)/);
|
||||
if (matches.length < 3) throw new Error('Cannot extract status: ' + command + ':\n' + result);
|
||||
|
||||
const percentDone = Number(matches[2]);
|
||||
if (isNaN(percentDone)) throw new Error('Cannot extract percent translated: ' + command + ':\n' + result);
|
||||
|
||||
let translatorName = '';
|
||||
const content = await fs.readFile(poFile, 'utf-8');
|
||||
// "Last-Translator: Hrvoje Mandić <trbuhom@net.hr>\n"
|
||||
const translatorMatch = content.match(/Last-Translator:\s*?(.*)/);
|
||||
|
||||
if (translatorMatch.length >= 1) {
|
||||
translatorName = translatorMatch[1];
|
||||
translatorName = translatorName.replace(/["\s]+$/, '');
|
||||
translatorName = translatorName.replace(/\\n$/, '');
|
||||
translatorName = translatorName.replace(/^\s*/, '');
|
||||
}
|
||||
|
||||
if (translatorName.indexOf('FULL NAME') >= 0) translatorName = '';
|
||||
|
||||
return {
|
||||
percentDone: isDefault ? 100 : percentDone,
|
||||
translatorName: translatorName,
|
||||
};
|
||||
}
|
||||
|
||||
function translationStatusToMdTable(status) {
|
||||
let output = [];
|
||||
output.push(['Language', 'Code', 'Last translator', 'Percent done'].join(' | '));
|
||||
output.push(['---', '---', '---', '---'].join('|'));
|
||||
for (let i = 0; i < status.length; i++) {
|
||||
const stat = status[i];
|
||||
output.push([stat.languageName, stat.locale, stat.translatorName, stat.percentDone + '%'].join(' | '));
|
||||
}
|
||||
return output.join('\n');
|
||||
}
|
||||
|
||||
async function updateReadmeWithStats(stats) {
|
||||
const mdTableMarkerOpen = '<!-- LOCALE-TABLE-AUTO-GENERATED -->\n';
|
||||
const mdTableMarkerClose = '\n<!-- LOCALE-TABLE-AUTO-GENERATED -->';
|
||||
let mdTable = translationStatusToMdTable(stats);
|
||||
mdTable = mdTableMarkerOpen + mdTable + mdTableMarkerClose;
|
||||
|
||||
let content = await fs.readFile(rootDir + '/README.md', 'utf-8');
|
||||
const regex = new RegExp(mdTableMarkerOpen + '.*?' + mdTableMarkerClose);
|
||||
content = content.replace(regex, mdTable);
|
||||
await fs.writeFile(rootDir + '/README.md', content);
|
||||
}
|
||||
|
||||
async function main() {
|
||||
let potFilePath = cliLocalesDir + '/joplin.pot';
|
||||
let jsonLocalesDir = cliDir + '/build/locales';
|
||||
@ -126,6 +182,8 @@ async function main() {
|
||||
|
||||
fs.mkdirpSync(jsonLocalesDir, 0o755);
|
||||
|
||||
let stats = [];
|
||||
|
||||
let locales = availableLocales(defaultLocale);
|
||||
for (let i = 0; i < locales.length; i++) {
|
||||
const locale = locales[i];
|
||||
@ -133,8 +191,15 @@ async function main() {
|
||||
const jsonFilePath = jsonLocalesDir + '/' + locale + '.json';
|
||||
if (locale != defaultLocale) await mergePotToPo(potFilePath, poFilePäth);
|
||||
buildLocale(poFilePäth, jsonFilePath);
|
||||
|
||||
const stat = await translationStatus(defaultLocale === locale, poFilePäth);
|
||||
stat.locale = locale;
|
||||
stat.languageName = countryDisplayName(locale);
|
||||
stats.push(stat);
|
||||
}
|
||||
|
||||
stats.sort((a, b) => a.languageName < b.languageName ? -1 : +1);
|
||||
|
||||
saveToFile(jsonLocalesDir + '/index.js', buildIndex(locales));
|
||||
|
||||
const rnJsonLocaleDir = rnDir + '/locales';
|
||||
@ -142,6 +207,8 @@ async function main() {
|
||||
|
||||
const electronJsonLocaleDir = electronDir + '/locales';
|
||||
await execCommand('rsync -a "' + jsonLocalesDir + '/" "' + electronJsonLocaleDir + '"');
|
||||
|
||||
await updateReadmeWithStats(stats);
|
||||
}
|
||||
|
||||
main().catch((error) => {
|
||||
|
5
Tools/package-lock.json
generated
5
Tools/package-lock.json
generated
@ -4,6 +4,11 @@
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
"app-module-path": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/app-module-path/-/app-module-path-2.2.0.tgz",
|
||||
"integrity": "sha1-ZBqlXft9am8KgUHEucCqULbCTdU="
|
||||
},
|
||||
"encoding": {
|
||||
"version": "0.1.12",
|
||||
"resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz",
|
||||
|
@ -9,6 +9,7 @@
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"app-module-path": "^2.2.0",
|
||||
"fs-extra": "^4.0.2",
|
||||
"gettext-parser": "^1.3.0",
|
||||
"marked": "^0.3.7",
|
||||
|
@ -305,6 +305,9 @@ sudo ln -s ~/.joplin-bin/bin/joplin /usr/bin/joplin
|
||||
:config sync.5.password YOUR_PASSWORD
|
||||
:config sync.target 5
|
||||
</code></pre><p>If synchronisation does not work, please consult the logs in the app profile directory - it is often due to a misconfigured URL or password. The log should indicate what the exact issue is.</p>
|
||||
<h2 id="webdav-synchronisation">WebDAV synchronisation</h2>
|
||||
<p><strong>Important: This is a beta feature. It has been extensively tested and is already in use by some users, but it is possible that some bugs remain. If you wish to you use it, it is recommended that you keep a backup of your data. The simplest way is to regularly backup the profile directory of the desktop or terminal application.</strong></p>
|
||||
<p>Select the "WebDAV" synchronisation target and follow the same instructions as for Nextcloud above.</p>
|
||||
<h2 id="onedrive-synchronisation">OneDrive synchronisation</h2>
|
||||
<p>When syncing with OneDrive, Joplin creates a sub-directory in OneDrive, in /Apps/Joplin and read/write the notes and notebooks from it. The application does not have access to anything outside this directory.</p>
|
||||
<p>On the <strong>desktop application</strong> or <strong>mobile application</strong>, select "OneDrive" as the synchronisation target in the config screen (it is selected by default). Then, to initiate the synchronisation process, click on the "Synchronise" button in the sidebar. You will be asked to login to OneDrive to authorise the application (simply input your Microsoft credentials - you do not need to register with OneDrive).</p>
|
||||
@ -326,14 +329,102 @@ sudo ln -s ~/.joplin-bin/bin/joplin /usr/bin/joplin
|
||||
<p>On mobile, the alarms will be displayed using the built-in notification system.</p>
|
||||
<p>If for any reason the notifications do not work, please <a href="https://github.com/laurent22/joplin/issues">open an issue</a>.</p>
|
||||
<h1 id="localisation">Localisation</h1>
|
||||
<p>Joplin is currently available in English, French, Spanish, German, Portuguese, Chinese, Japanese, Russian, Croatian, Dutch and Italian. If you would like to contribute a translation, it is quite straightforward, please follow these steps:</p>
|
||||
<p>Joplin is currently available in the languages below. If you would like to contribute a <strong>new translation</strong>, it is quite straightforward, please follow these steps:</p>
|
||||
<ul>
|
||||
<li><a href="https://poedit.net/">Download Poedit</a>, the translation editor, and install it.</li>
|
||||
<li><a href="https://raw.githubusercontent.com/laurent22/joplin/master/CliClient/locales/joplin.pot">Download the file to be translated</a>.</li>
|
||||
<li>In Poedit, open this .pot file, go into the Catalog menu and click Configuration. Change "Country" and "Language" to your own country and language.</li>
|
||||
<li>From then you can translate the file. Once it is done, please either <a href="https://github.com/laurent22/joplin/pulls">open a pull request</a> or send the file to <a href="https://raw.githubusercontent.com/laurent22/joplin/master/Assets/Adresse.png">this address</a>.</li>
|
||||
</ul>
|
||||
<p>To <strong>update a translation</strong>, follow the same steps as above but instead of getting the .pot file, get the .po file for your language from there: <a href="https://github.com/laurent22/joplin/tree/master/CliClient/locales">https://github.com/laurent22/joplin/tree/master/CliClient/locales</a></p>
|
||||
<p>This translation will apply to the three applications - desktop, mobile and terminal.</p>
|
||||
<p>Current translations:</p>
|
||||
<!-- LOCALE-TABLE-AUTO-GENERATED -->
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Language</th>
|
||||
<th>Code</th>
|
||||
<th>Last translator</th>
|
||||
<th>Percent done</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Croatian</td>
|
||||
<td>hr_HR</td>
|
||||
<td>Hrvoje Mandić <a href="mailto:trbuhom@net.hr">trbuhom@net.hr</a></td>
|
||||
<td>72%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Deutsch</td>
|
||||
<td>de_DE</td>
|
||||
<td>Tobias Strobel <a href="mailto:git@strobeltobias.de">git@strobeltobias.de</a></td>
|
||||
<td>92%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>English</td>
|
||||
<td>en_GB</td>
|
||||
<td></td>
|
||||
<td>100%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Español</td>
|
||||
<td>es_ES</td>
|
||||
<td>Lucas Vieites</td>
|
||||
<td>80%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Español (Costa Rica)</td>
|
||||
<td>es_CR</td>
|
||||
<td></td>
|
||||
<td>68%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Français</td>
|
||||
<td>fr_FR</td>
|
||||
<td>Laurent Cozic</td>
|
||||
<td>100%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Italiano</td>
|
||||
<td>it_IT</td>
|
||||
<td></td>
|
||||
<td>76%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Nederlands</td>
|
||||
<td>nl_BE</td>
|
||||
<td></td>
|
||||
<td>90%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Português (Brasil)</td>
|
||||
<td>pt_BR</td>
|
||||
<td></td>
|
||||
<td>74%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Русский</td>
|
||||
<td>ru_RU</td>
|
||||
<td>Artyom Karlov <a href="mailto:artyom.karlov@gmail.com">artyom.karlov@gmail.com</a></td>
|
||||
<td>96%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>中文 (简体)</td>
|
||||
<td>zh_CN</td>
|
||||
<td>RCJacH <a href="mailto:RCJacH@outlook.com">RCJacH@outlook.com</a></td>
|
||||
<td>76%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>日本語</td>
|
||||
<td>ja_JP</td>
|
||||
<td></td>
|
||||
<td>74%</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<!-- LOCALE-TABLE-AUTO-GENERATED -->
|
||||
<h1 id="contributing">Contributing</h1>
|
||||
<p>Please see the guide for information on how to contribute to the development of Joplin: <a href="https://github.com/laurent22/joplin/blob/master/CONTRIBUTING.md">https://github.com/laurent22/joplin/blob/master/CONTRIBUTING.md</a></p>
|
||||
<h1 id="coming-features">Coming features</h1>
|
||||
|
@ -305,6 +305,8 @@ sudo ln -s ~/.joplin-bin/bin/joplin /usr/bin/joplin
|
||||
:config sync.5.username YOUR_USERNAME
|
||||
:config sync.5.password YOUR_PASSWORD
|
||||
</code></pre><p>If synchronisation does not work, please consult the logs in the app profile directory - it is often due to a misconfigured URL or password. The log should indicate what the exact issue is.</p>
|
||||
<h2 id="webdav-synchronisation">WebDAV synchronisation</h2>
|
||||
<p>Select the "WebDAV" synchronisation target and follow the same instructions as for Nextcloud above.</p>
|
||||
<h2 id="onedrive-synchronisation">OneDrive synchronisation</h2>
|
||||
<p>When syncing with OneDrive, Joplin creates a sub-directory in OneDrive, in /Apps/Joplin and read/write the notes and notebooks from it. The application does not have access to anything outside this directory.</p>
|
||||
<p>To initiate the synchronisation process, type <code>:sync</code>. You will be asked to follow a link to authorise the application (simply input your Microsoft credentials - you do not need to register with OneDrive). It is possible to also synchronise outside of the user interface by typing <code>joplin sync</code> from the terminal. This can be used to setup a cron script to synchronise at regular interval. For example, this would do it every 30 minutes:</p>
|
||||
|
Loading…
Reference in New Issue
Block a user