33 Commits

Author SHA1 Message Date
Evgeniy A. Dushistov
e73388c726 release 0.5.3 2020-08-14 13:06:51 +03:00
Evgeniy A. Dushistov
7e8fee5e78 update translation and readme 2020-08-14 13:01:18 +03:00
Evgeniy Dushistov
bc890621a9 Merge pull request #64 from Dushistov/to-release
To release
2020-08-14 12:56:08 +03:00
Evgeniy A. Dushistov
0836551bb4 require cmake at least 3.5, and glib 2.36
this should be fine to support ubuntu 16.04 lts
2020-08-14 12:52:37 +03:00
Evgeniy A. Dushistov
824764ab50 handle possibly invalid data: origin_data == nullptr 2020-08-14 12:46:42 +03:00
Evgeniy A. Dushistov
431a5774ba fix warning 2020-08-14 12:37:21 +03:00
Evgeniy A. Dushistov
7facbe215e refactoring: run clang-format against code 2020-08-14 12:36:02 +03:00
Evgeniy Dushistov
79773d6af9 Merge pull request #63 from Dushistov/github-actions
migrate to github actions
2020-08-14 12:30:22 +03:00
Evgeniy A. Dushistov
373bd786d7 CI: remove travis and update link to README 2020-08-14 12:28:01 +03:00
Evgeniy Dushistov
cef6eb5447 Create main.yml 2020-08-14 12:22:10 +03:00
Evgeniy Dushistov
995bdc5bdb Merge pull request #61 from pavelbykov/patch-1
corrected word version
2020-07-04 22:45:27 +03:00
Pavel Bykov
581c2d2b5c corrected word version 2020-07-04 12:30:25 +02:00
Evgeniy Dushistov
958ec353ca Merge pull request #59 from guidocella/xdg
Comply with the XDG Base Directory Specification
2020-05-11 17:19:06 +03:00
Guido Cella
2fd47ba0d0 Keep searching in $HOME 2020-05-10 12:48:32 +02:00
Evgeniy Dushistov
357ca4d453 Merge pull request #60 from guidocella/typo
Typo
2020-05-10 11:40:29 +03:00
Guido Cella
3736ef0060 Typo 2020-05-10 07:19:34 +02:00
Guido Cella
3413d847c5 Comply with the XDG Base Directory Specification 2020-05-10 07:01:31 +02:00
Evgeniy A. Dushistov
780b7dd214 infra: add t_return_code to tests list 2020-03-17 17:13:25 +03:00
Evgeniy Dushistov
08461acab8 Merge pull request #57 from alcah/master
Return exit code 2 if search term not found
2020-03-17 17:09:42 +03:00
alcah
2d1a454026 add return code test 2020-03-17 23:43:16 +10:30
alcah
021e467b37 return exit code 2 if search term not found 2020-03-17 22:15:16 +10:30
Evgeniy Dushistov
a500176661 Merge pull request #44 from nickeb96/master
Added $SDCV_HISTFILE to set history file
2018-05-08 03:21:18 +03:00
nickeb96
7341675088 Moved history file path code to helper function 2018-05-07 20:08:47 -04:00
nickeb96
51f808d96c Updated man page 2018-05-07 18:02:42 -04:00
nickeb96
7719111c57 Added support for 2018-05-07 17:45:07 -04:00
Evgeniy Dushistov
51db56f7e5 Merge pull request #38 from nijel/master
Store integer magic in cache file
2017-11-14 18:52:06 +03:00
Michal Čihař
0f83f0aa0b Store integer magic in cache file
This allows to detect different endianity of machines to avoid
loading caches created with different endianity.

Fixes #36

Signed-off-by: Michal Čihař <michal@cihar.com>
2017-11-14 16:39:57 +01:00
Evgeniy Dushistov
a7432338ee Merge pull request #37 from nijel/test
Use single quotes around JSON data to reduce need for escaping
2017-11-09 18:39:34 +03:00
Michal Čihař
69fe19d269 Use single quotes around JSON data to reduce need for escaping
Also use unicode escape sequence for newline to avoid problems with some
shells decoding \n even when they probably should not.
2017-11-08 22:51:23 +01:00
Evgeniy Dushistov
b9a1fba5bb Merge pull request #35 from nijel/test
Pass parameters individually to the test
2017-11-09 00:32:26 +03:00
Michal Čihař
ac2acfdcd2 Pass parameters individually to the test
This way we can properly quote path.
2017-11-08 15:38:10 +01:00
Evgeniy Dushistov
925a4bc163 Merge pull request #34 from nijel/test
Fix test execution on Debian
2017-11-08 16:59:34 +03:00
Michal Čihař
4b6486c58e Fix test execution on Debian
The default /bin/sh is probably more picky than bash.

Fixes #33
2017-11-08 14:30:37 +01:00
29 changed files with 398 additions and 337 deletions

48
.github/workflows/main.yml vendored Normal file
View File

@@ -0,0 +1,48 @@
name: CI
on:
push:
branches:
- master
pull_request:
branches:
- master
schedule:
- cron: '00 02 */4 * *'
env:
RUST_BACKTRACE: 1
jobs:
tests:
name: Run tests
runs-on: ${{ matrix.os }}
strategy:
fail-fast: true
matrix:
os: [ubuntu-latest]
steps:
- uses: actions/checkout@v2
with:
submodules: 'recursive'
- uses: jwlawson/actions-setup-cmake@v1.0
with:
cmake-version: '3.5.1'
github-api-token: ${{ secrets.GITHUB_TOKEN }}
- name: Check versions
run: |
set -e
cmake --version
gcc --version
echo "end of versions checking"
shell: bash
- name: Run tests
run: |
set -e
cd $GITHUB_WORKSPACE
mkdir build
cd build
cmake -DBUILD_TESTS=True ..
make -k -j2 VERBOSE=1
ctest --output-on-failure
shell: bash

View File

@@ -1,49 +0,0 @@
#
# Available repositories are listed here:
# https://github.com/travis-ci/apt-source-whitelist/blob/master/ubuntu.json
#
sudo: false
language: cpp
matrix:
include:
- env: COMPILER_VERSION=4.8
os: linux
compiler: g++
addons:
apt:
sources:
- ubuntu-toolchain-r-test
- kalakris-cmake
- ubuntu-sdk-team
packages:
- g++-4.8
- cmake
- libglib2.0-dev
- jq
# - env: COMPILER_VERSION=3.5
# os: linux
# compiler: clang++
# addons:
# apt:
# sources:
# - ubuntu-toolchain-r-test
# - llvm-toolchain-precise-3.5
# packages:
# - clang-3.5
# - cmake
# - libglib2.0-dev
before_script:
- mkdir build
- cd build
- CC=$CC-${COMPILER_VERSION} CXX=$CXX-${COMPILER_VERSION} cmake -DBUILD_TESTS=True ..
- cd ..
script:
- cd build
- make -k -j2 VERBOSE=1
- ctest --output-on-failure

View File

@@ -1,24 +1,14 @@
project(sdcv)
# Older versions have a different signature for CMAKE_MINIMUM_REQUIRED,
# check it manually just to make sure
if (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} LESS 2.8)
message(FATAL_ERROR "${PROJECT_NAME} requires at least CMake v2.8."
" You are running v${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}."
" Please upgrade." )
endif(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} LESS 2.8)
# If we get this far, use the modern signature. This will also cause newer
# CMake versions to try to be backwards-compatible with the desired version
cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
cmake_policy(VERSION 2.8)
cmake_minimum_required(VERSION 3.5 FATAL_ERROR)
cmake_policy(VERSION 3.5)
include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/compiler.cmake")
set(ZLIB_FIND_REQUIRED True)
include(FindZLIB)
set(GLIB2_REQ "'glib-2.0 >= 2.6.1'")
set(GLIB2_REQ "'glib-2.0 >= 2.36'")
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/FindGLIB2.cmake")
@@ -101,7 +91,7 @@ set(CPACK_PACKAGE_VENDOR "Evgeniy Dushistov <dushistov@mail.ru>")
set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README.org")
set(CPACK_PACKAGE_VERSION_MAJOR "0")
set(CPACK_PACKAGE_VERSION_MINOR "5")
set(CPACK_PACKAGE_VERSION_PATCH "2")
set(CPACK_PACKAGE_VERSION_PATCH "3")
set(sdcv_VERSION
"${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
@@ -152,5 +142,6 @@ if (BUILD_TESTS)
add_sdcv_shell_test(t_utf8output)
add_sdcv_shell_test(t_utf8input)
add_sdcv_shell_test(t_datadir)
add_sdcv_shell_test(t_return_code)
endif (BUILD_TESTS)

16
NEWS
View File

@@ -1,9 +1,15 @@
Version 0.5.3
- Use single quotes around JSON data to reduce need for escaping
- Store integer magic in cache file
- Added $SDCV_HISTFILE to set history file
- return exit code 2 if search term not found
- Comply with the XDG Base Directory Specification
Version 0.5.2
Synonyms index support (.syn files) by Peter <craven@gmx.net>
Add support of json output by Peter <craven@gmx.net> (--json-output)
Add -e for exact searches (no fuzzy matches) by Peter <craven@gmx.net>
Fix build with clang 3.4.1
fix FSF address in license by Tomáš Čech <sleep_walker@suse.com>
- Synonyms index support (.syn files) by Peter <craven@gmx.net>
- Add support of json output by Peter <craven@gmx.net> (--json-output)
- Add -e for exact searches (no fuzzy matches) by Peter <craven@gmx.net>
- Fix build with clang 3.4.1
- fix FSF address in license by Tomáš Čech <sleep_walker@suse.com>
Version 0.5.1
Fix usage of SDCV_PAGER by Anton Yuzhaninov

View File

@@ -1,5 +1,5 @@
#+OPTIONS: ^:nil
[[https://travis-ci.org/Dushistov/sdcv][https://travis-ci.org/Dushistov/sdcv.svg?branch=master]]
[[https://github.com/Dushistov/sdcv/actions?query=workflow%3ACI+branch%3Amaster][https://github.com/Dushistov/sdcv/workflows/CI/badge.svg]]
[[https://github.com/Dushistov/sdcv/blob/master/LICENSE][https://img.shields.io/badge/license-GPL%202-brightgreen.svg]]
* How to compile and install
#+BEGIN_SRC sh
@@ -22,7 +22,8 @@ you can use "DESTDIR" variable to change installation path
See sdcv man page for usage description.
* Bugs
If you find bug reports it via email to dushistov at mail dot ru.
To report bugs use https://github.com/Dushistov/sdcv/issues ,
if it is not possible you can report it via email to dushistov at mail dot ru.
Be sure to include the word "sdcv" somewhere in the "Subject:" field.
* Notes to developer

View File

@@ -25,7 +25,7 @@ you can use the UP and DOWN keys to cycle through history.
.B "\-h \-\-help"
Display help message and exit
.TP 8
.B "\-v \-\-verbose"
.B "\-v \-\-version"
Display version and exit
.TP 8
.B "\-l \-\-list\-dicts"
@@ -64,7 +64,7 @@ Use ANSI escape codes for colorizing sdcv output (does not work with json output
.TP
/usr/share/stardict/dic
.TP
$(HOME)/.stardict/dic
$(XDG_DATA_HOME)/stardict/dic
Place where sdcv expects to find dictionaries.
Instead of /usr/share/stardict/dic you can use any directory
@@ -72,12 +72,12 @@ you want, just set the STARDICT_DATA_DIR environment variable.
For example, if you have dictionaries in /mnt/data/stardict-dicts/dic,
set STARDICT_DATA_DIR to /mnt/data/stardict-dicts.
.TP
$(HOME)/.sdcv_history
$(XDG_DATA_HOME)/sdcv_history
This file includes the last $(SDCV_HISTSIZE) words, which you sought with sdcv.
SDCV uses this file only if it was compiled with readline library support.
.TP
$(HOME)/.sdcv_ordering
$(XDG_CONFIG_HOME)/sdcv_ordering
This is a text file containing one dictionary bookname per line.
It specifies in which order the results of a search should be shown.
@@ -86,11 +86,14 @@ Environment Variables Used By \fIsdcv\fR:
.TP 20
.B STARDICT_DATA_DIR
If set, sdcv uses this variable as the data directory, this means that sdcv
searches dictionaries in $\fBSTARDICT_DATA_DIR\fR\\dic
searches dictionaries in $\fBSTARDICT_DATA_DIR\fR/dic
.TP 20
.B SDCV_HISTSIZE
If set, sdcv writes in $(HOME)/.sdcv_history the last $(SDCV_HISTSIZE) words,
which you look up using sdcv. If it is not set, then the last 2000 words are saved in $(HOME)/.sdcv_history.
If set, sdcv writes in $(XDG_DATA_HOME)/sdcv_history (or $(SDCV_HISTFILE)) the last $(SDCV_HISTSIZE) words,
which you look up using sdcv. If it is not set, then the last 2000 words are saved in $(XDG_DATA_HOME)/sdcv_history.
.TP 20
.B SDCV_HISTFILE
If set, sdcv writes it's history to $(SDCV_HISTFILE). If it is not set, then the default $(XDG_DATA_HOME)/sdcv_history path will be used.
.TP 20
.B SDCV_PAGER
If SDCV_PAGER is set, its value is used as the name of the program

View File

@@ -50,7 +50,7 @@ sdcv проста, міжплатформена текстова утиліта
.TP
/usr/share/stardict/dic
.TP
$(HOME)/.stardict/dic
$(XDG_DATA_HOME)/stardict/dic
Місце, де sdcv очікує знайти словники.
Замість шляху /usr/share/stardict/dic Ви можете використовувати все,
@@ -58,7 +58,7 @@ $(HOME)/.stardict/dic
Наприклад, якщо Ви маєте словники у теці /mnt/data/stardict-dicts/dic,
встановіть STARDICT_DATA_DIR у /mnt/data/stardict-dicts.
.TP
$(HOME)/.sdcv_history
$(XDG_DATA_HOME)/sdcv_history
Цей файл містить останні $(SDCV_HISTSIZE) слова, які Ви шукали з sdcv.
SDCV використовує цей файл при умові, якщо sdcv був скомпільований
@@ -69,12 +69,12 @@ SDCV використовує цей файл при умові, якщо sdcv
.TP 20
.B STARDICT_DATA_DIR
Якщо встановлена, sdcv використає цю змінну як теку даних, це означає,
що sdcv шукатиме словники у $\fBSTARDICT_DATA_DIR\fR\dic
що sdcv шукатиме словники у $\fBSTARDICT_DATA_DIR\fR/dic
.TP 20
.B SDCV_HISTSIZE
Якщо встановлена, sdcv писатиме у $(HOME)/.sdcv_history лише
Якщо встановлена, sdcv писатиме у $(XDG_DATA_HOME)/sdcv_history лише
останні $(SDCV_HISTSIZE) слова, які Ви шукали з sdcv. Якщо не встановлена,
то збірігатиметься останніх 2000 слів у $(HOME)/.sdcv_history.
то збірігатиметься останніх 2000 слів у $(XDG_DATA_HOME)/sdcv_history.
.SH BUGS
Звіти про помилки висилайте на адресу dushistov на mail крапка ru.
Не забувайте включати слово "sdcv" десь у полі "Тема:".

View File

@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: sdcv 0.4.2\n"
"Report-Msgid-Bugs-To: dushistov@mail.ru\n"
"POT-Creation-Date: 2017-08-16 09:52+0300\n"
"POT-Creation-Date: 2020-08-14 12:58+0300\n"
"PO-Revision-Date: 2008-09-24 10:42+0200\n"
"Last-Translator: Michal Čihař <michal@cihar.com>\n"
"Language-Team: Czech <cs@li.org>\n"
@@ -20,21 +20,21 @@ msgstr ""
msgid "popen failed"
msgstr "popen selhalo"
#: ../src/libwrapper.cpp:340
#: ../src/libwrapper.cpp:341
#, c-format
msgid "Can not convert %s to utf8.\n"
msgstr "Nepodařilo se převést %s do utf8.\n"
#: ../src/libwrapper.cpp:398 ../src/libwrapper.cpp:432
#: ../src/libwrapper.cpp:399 ../src/libwrapper.cpp:433
#, fuzzy, c-format
msgid "Found %zu items, similar to %s.\n"
msgstr "Nalezeno %d záznamů podobných %s.\n"
#: ../src/libwrapper.cpp:416
#: ../src/libwrapper.cpp:417
msgid "Your choice[-1 to abort]: "
msgstr "Vaše volba [-1 pro ukončení]: "
#: ../src/libwrapper.cpp:426
#: ../src/libwrapper.cpp:427
#, fuzzy, c-format
msgid ""
"Invalid choice.\n"
@@ -43,102 +43,102 @@ msgstr ""
"Chybná volba.\n"
"Musí být mezi 0 a %d nebo -1.\n"
#: ../src/libwrapper.cpp:445
#: ../src/libwrapper.cpp:446
#, c-format
msgid "Nothing similar to %s, sorry :(\n"
msgstr "Nic podobného %s nenalezeno, promiň :(\n"
#: ../src/sdcv.cpp:88
#: ../src/sdcv.cpp:89
#, fuzzy
msgid "display version information and exit"
msgstr "-v, --version zobrazí informace o verzi a skončí\n"
#: ../src/sdcv.cpp:90
#: ../src/sdcv.cpp:91
#, fuzzy
msgid "display list of available dictionaries and exit"
msgstr "-l, --list-dicts zobrazí seznam dostupných slovníků a skončí\n"
#: ../src/sdcv.cpp:92
#: ../src/sdcv.cpp:93
#, fuzzy
msgid "for search use only dictionary with this bookname"
msgstr "-u, --use-dict jméno vyhledávat jen v zadaném slovníku\n"
#: ../src/sdcv.cpp:93
#: ../src/sdcv.cpp:94
msgid "bookname"
msgstr ""
#: ../src/sdcv.cpp:95
#: ../src/sdcv.cpp:96
msgid "for use in scripts"
msgstr ""
#: ../src/sdcv.cpp:97
#: ../src/sdcv.cpp:98
msgid "print the result formatted as JSON"
msgstr ""
#: ../src/sdcv.cpp:99
#: ../src/sdcv.cpp:100
msgid "do not fuzzy-search for similar words, only return exact matches"
msgstr ""
#: ../src/sdcv.cpp:101
#: ../src/sdcv.cpp:102
#, fuzzy
msgid "output must be in utf8"
msgstr "--utf8-output výstup musí být v utf8\n"
#: ../src/sdcv.cpp:103
#: ../src/sdcv.cpp:104
#, fuzzy
msgid "input of sdcv in utf8"
msgstr "--utf8-input vstup musí být v utf8\n"
#: ../src/sdcv.cpp:105
#: ../src/sdcv.cpp:106
#, fuzzy
msgid "use this directory as path to stardict data directory"
msgstr ""
"--data-dir cesta/někam použít tento adresář jako cestu ke slovníkům "
"stardict\n"
#: ../src/sdcv.cpp:106
#: ../src/sdcv.cpp:107
msgid "path/to/dir"
msgstr ""
#: ../src/sdcv.cpp:108
#: ../src/sdcv.cpp:109
msgid ""
"only use the dictionaries in data-dir, do not search in user and system "
"directories"
msgstr ""
#: ../src/sdcv.cpp:110
#: ../src/sdcv.cpp:111
msgid "colorize the output"
msgstr ""
#: ../src/sdcv.cpp:115
#: ../src/sdcv.cpp:116
msgid " words"
msgstr ""
#: ../src/sdcv.cpp:121
#: ../src/sdcv.cpp:122
#, c-format
msgid "Invalid command line arguments: %s\n"
msgstr ""
#: ../src/sdcv.cpp:127
#: ../src/sdcv.cpp:128
#, c-format
msgid "Console version of Stardict, version %s\n"
msgstr "Konzolová verze Stardictu, verze %s\n"
#: ../src/sdcv.cpp:202
#: ../src/sdcv.cpp:206
#, c-format
msgid "g_mkdir failed: %s\n"
msgstr "g_mkdir selhalo: %s\n"
#: ../src/sdcv.cpp:217
#: ../src/sdcv.cpp:222
msgid "Enter word or phrase: "
msgstr "Zadejte slovo nebo frázi: "
#: ../src/sdcv.cpp:225
#: ../src/sdcv.cpp:230
#, c-format
msgid "There are no words/phrases to translate.\n"
msgstr "Nebyla zadáno nic k přeložení.\n"
#: ../src/sdcv.cpp:237
#: ../src/sdcv.cpp:242
#, c-format
msgid "Dictionary's name Word count\n"
msgstr "Jméno slovníku Počet slov\n"

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: sdcv 0.4.2\n"
"Report-Msgid-Bugs-To: dushistov@mail.ru\n"
"POT-Creation-Date: 2017-08-16 09:52+0300\n"
"POT-Creation-Date: 2020-08-14 12:58+0300\n"
"PO-Revision-Date: 2009-06-15 23:20+0800\n"
"Language-Team: Vincent Petry <PVince81@yahoo.fr>\n"
"Language: \n"
@@ -22,21 +22,21 @@ msgstr ""
msgid "popen failed"
msgstr "Échec de popen"
#: ../src/libwrapper.cpp:340
#: ../src/libwrapper.cpp:341
#, c-format
msgid "Can not convert %s to utf8.\n"
msgstr "Ne peut convertir %s au format utf8.\n"
#: ../src/libwrapper.cpp:398 ../src/libwrapper.cpp:432
#: ../src/libwrapper.cpp:399 ../src/libwrapper.cpp:433
#, fuzzy, c-format
msgid "Found %zu items, similar to %s.\n"
msgstr "Trouvé %d éléments similaires à %s.\n"
#: ../src/libwrapper.cpp:416
#: ../src/libwrapper.cpp:417
msgid "Your choice[-1 to abort]: "
msgstr "Votre choix[-1 pour abandonner] : "
#: ../src/libwrapper.cpp:426
#: ../src/libwrapper.cpp:427
#, fuzzy, c-format
msgid ""
"Invalid choice.\n"
@@ -45,107 +45,107 @@ msgstr ""
"Selection invalide.\n"
"Veuillez choisir un nombre entre 0 et %d, ou -1.\n"
#: ../src/libwrapper.cpp:445
#: ../src/libwrapper.cpp:446
#, c-format
msgid "Nothing similar to %s, sorry :(\n"
msgstr "Aucun mot/phrase similaire à %s, désolé :(\n"
#: ../src/sdcv.cpp:88
#: ../src/sdcv.cpp:89
#, fuzzy
msgid "display version information and exit"
msgstr ""
"-v, --version afficher les informations de version et sortir\n"
#: ../src/sdcv.cpp:90
#: ../src/sdcv.cpp:91
#, fuzzy
msgid "display list of available dictionaries and exit"
msgstr ""
"-l, --list-dicts afficher la liste des dictionnaires disponibles et "
"sortir\n"
#: ../src/sdcv.cpp:92
#: ../src/sdcv.cpp:93
#, fuzzy
msgid "for search use only dictionary with this bookname"
msgstr ""
"-u, --use-dict nom_dict pour chercher seulement en utilisant le "
"dictionnaire spécifié\n"
#: ../src/sdcv.cpp:93
#: ../src/sdcv.cpp:94
msgid "bookname"
msgstr ""
#: ../src/sdcv.cpp:95
#: ../src/sdcv.cpp:96
msgid "for use in scripts"
msgstr ""
#: ../src/sdcv.cpp:97
#: ../src/sdcv.cpp:98
msgid "print the result formatted as JSON"
msgstr ""
#: ../src/sdcv.cpp:99
#: ../src/sdcv.cpp:100
msgid "do not fuzzy-search for similar words, only return exact matches"
msgstr ""
#: ../src/sdcv.cpp:101
#: ../src/sdcv.cpp:102
#, fuzzy
msgid "output must be in utf8"
msgstr "--utf8-output force la sortie au format utf8\n"
#: ../src/sdcv.cpp:103
#: ../src/sdcv.cpp:104
#, fuzzy
msgid "input of sdcv in utf8"
msgstr "--utf8-input force l'entrée de sdcv au format utf8\n"
#: ../src/sdcv.cpp:105
#: ../src/sdcv.cpp:106
#, fuzzy
msgid "use this directory as path to stardict data directory"
msgstr ""
"--data-dir chemin utiliser ce chemin pour trouver les données de "
"stardict\n"
#: ../src/sdcv.cpp:106
#: ../src/sdcv.cpp:107
msgid "path/to/dir"
msgstr ""
#: ../src/sdcv.cpp:108
#: ../src/sdcv.cpp:109
msgid ""
"only use the dictionaries in data-dir, do not search in user and system "
"directories"
msgstr ""
#: ../src/sdcv.cpp:110
#: ../src/sdcv.cpp:111
msgid "colorize the output"
msgstr ""
#: ../src/sdcv.cpp:115
#: ../src/sdcv.cpp:116
msgid " words"
msgstr ""
#: ../src/sdcv.cpp:121
#: ../src/sdcv.cpp:122
#, c-format
msgid "Invalid command line arguments: %s\n"
msgstr ""
#: ../src/sdcv.cpp:127
#: ../src/sdcv.cpp:128
#, c-format
msgid "Console version of Stardict, version %s\n"
msgstr "Version console de Stardict, version %s\n"
#: ../src/sdcv.cpp:202
#: ../src/sdcv.cpp:206
#, c-format
msgid "g_mkdir failed: %s\n"
msgstr "Échec de g_mkdir : %s\n"
#: ../src/sdcv.cpp:217
#: ../src/sdcv.cpp:222
msgid "Enter word or phrase: "
msgstr "Entrez un mot ou une phrase: "
#: ../src/sdcv.cpp:225
#: ../src/sdcv.cpp:230
#, c-format
msgid "There are no words/phrases to translate.\n"
msgstr "Il n'y a pas de mots/phrases à traduire.\n"
#: ../src/sdcv.cpp:237
#: ../src/sdcv.cpp:242
#, c-format
msgid "Dictionary's name Word count\n"
msgstr "Nom dictionnaire Nombre de mots\n"

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: sdcv 0.5\n"
"Report-Msgid-Bugs-To: dushistov@mail.ru\n"
"POT-Creation-Date: 2017-08-16 09:52+0300\n"
"POT-Creation-Date: 2020-08-14 12:58+0300\n"
"PO-Revision-Date: 2017-08-16 10:05+0300\n"
"Last-Translator: Evgeniy Dushistov <dushistov@mail.ru>\n"
"Language-Team: Russian <ru@li.org>\n"
@@ -23,21 +23,21 @@ msgstr ""
msgid "popen failed"
msgstr "функция popen завершилась с ошибкой"
#: ../src/libwrapper.cpp:340
#: ../src/libwrapper.cpp:341
#, c-format
msgid "Can not convert %s to utf8.\n"
msgstr "Не могу преобразовать %s в utf8.\n"
#: ../src/libwrapper.cpp:398 ../src/libwrapper.cpp:432
#: ../src/libwrapper.cpp:399 ../src/libwrapper.cpp:433
#, c-format
msgid "Found %zu items, similar to %s.\n"
msgstr "Найдено %zu слов, похожих на %s.\n"
#: ../src/libwrapper.cpp:416
#: ../src/libwrapper.cpp:417
msgid "Your choice[-1 to abort]: "
msgstr "Ваш выбор[-1 - отмена]: "
#: ../src/libwrapper.cpp:426
#: ../src/libwrapper.cpp:427
#, c-format
msgid ""
"Invalid choice.\n"
@@ -46,95 +46,98 @@ msgstr ""
"Неправильный выбор.\n"
"Должно быть от 0 до %zu или -1.\n"
#: ../src/libwrapper.cpp:445
#: ../src/libwrapper.cpp:446
#, c-format
msgid "Nothing similar to %s, sorry :(\n"
msgstr "Ничего похожего на %s, извините :(\n"
#: ../src/sdcv.cpp:88
#: ../src/sdcv.cpp:89
msgid "display version information and exit"
msgstr "показать номер версии и завершить работу"
#: ../src/sdcv.cpp:90
#: ../src/sdcv.cpp:91
msgid "display list of available dictionaries and exit"
msgstr "показать список доступных словарей и завершить работу"
#: ../src/sdcv.cpp:92
#: ../src/sdcv.cpp:93
msgid "for search use only dictionary with this bookname"
msgstr "для поиска использовать только этот словарь с таким именем"
#: ../src/sdcv.cpp:93
#: ../src/sdcv.cpp:94
msgid "bookname"
msgstr "имя_словаря"
#: ../src/sdcv.cpp:95
#: ../src/sdcv.cpp:96
msgid "for use in scripts"
msgstr "для использования в скриптах"
#: ../src/sdcv.cpp:97
#: ../src/sdcv.cpp:98
msgid "print the result formatted as JSON"
msgstr "выдать результат в JSON формате"
#: ../src/sdcv.cpp:99
#: ../src/sdcv.cpp:100
msgid "do not fuzzy-search for similar words, only return exact matches"
msgstr "не использовать нечеткий поиск похожих слов, вернуть только точные совпадения"
msgstr ""
"не использовать нечеткий поиск похожих слов, вернуть только точные совпадения"
#: ../src/sdcv.cpp:101
#: ../src/sdcv.cpp:102
msgid "output must be in utf8"
msgstr "вывод программы должен быть в utf8"
#: ../src/sdcv.cpp:103
#: ../src/sdcv.cpp:104
msgid "input of sdcv in utf8"
msgstr "ввод программы в utf8"
#: ../src/sdcv.cpp:105
#: ../src/sdcv.cpp:106
msgid "use this directory as path to stardict data directory"
msgstr ""
"использовать эту директорию в качестве пути к \"stardict data\" директории"
#: ../src/sdcv.cpp:106
#: ../src/sdcv.cpp:107
msgid "path/to/dir"
msgstr "путь/до/директории"
#: ../src/sdcv.cpp:108
#: ../src/sdcv.cpp:109
msgid ""
"only use the dictionaries in data-dir, do not search in user and system "
"directories"
msgstr "использовать словари только из data-dir, не искать в пользовательских и системных каталогах"
msgstr ""
"использовать словари только из data-dir, не искать в пользовательских и "
"системных каталогах"
#: ../src/sdcv.cpp:110
#: ../src/sdcv.cpp:111
msgid "colorize the output"
msgstr "раскрашивать вывод в разные цвета"
#: ../src/sdcv.cpp:115
#: ../src/sdcv.cpp:116
msgid " words"
msgstr "слова"
#: ../src/sdcv.cpp:121
#: ../src/sdcv.cpp:122
#, c-format
msgid "Invalid command line arguments: %s\n"
msgstr "Неправильный аргумент командой строки: %s\n"
#: ../src/sdcv.cpp:127
#: ../src/sdcv.cpp:128
#, c-format
msgid "Console version of Stardict, version %s\n"
msgstr "Консольная версия StarDict, версия %s\n"
#: ../src/sdcv.cpp:202
#: ../src/sdcv.cpp:206
#, c-format
msgid "g_mkdir failed: %s\n"
msgstr "g_mkdir завершился с ошибкой: %s\n"
#: ../src/sdcv.cpp:217
#: ../src/sdcv.cpp:222
msgid "Enter word or phrase: "
msgstr "Введите слово или фразу: "
#: ../src/sdcv.cpp:225
#: ../src/sdcv.cpp:230
#, c-format
msgid "There are no words/phrases to translate.\n"
msgstr "Не задано слова/фразы для перевода.\n"
#: ../src/sdcv.cpp:237
#: ../src/sdcv.cpp:242
#, c-format
msgid "Dictionary's name Word count\n"
msgstr "Название словаря Количество слов\n"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: sdcv 0.5\n"
"Report-Msgid-Bugs-To: dushistov@mail.ru\n"
"POT-Creation-Date: 2017-08-16 09:52+0300\n"
"POT-Creation-Date: 2020-08-14 12:58+0300\n"
"PO-Revision-Date: 2017-08-16 10:01+0300\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -20,115 +20,115 @@ msgstr ""
msgid "popen failed"
msgstr ""
#: ../src/libwrapper.cpp:340
#: ../src/libwrapper.cpp:341
#, c-format
msgid "Can not convert %s to utf8.\n"
msgstr ""
#: ../src/libwrapper.cpp:398 ../src/libwrapper.cpp:432
#: ../src/libwrapper.cpp:399 ../src/libwrapper.cpp:433
#, c-format
msgid "Found %zu items, similar to %s.\n"
msgstr ""
#: ../src/libwrapper.cpp:416
#: ../src/libwrapper.cpp:417
msgid "Your choice[-1 to abort]: "
msgstr ""
#: ../src/libwrapper.cpp:426
#: ../src/libwrapper.cpp:427
#, c-format
msgid ""
"Invalid choice.\n"
"It must be from 0 to %zu or -1.\n"
msgstr ""
#: ../src/libwrapper.cpp:445
#: ../src/libwrapper.cpp:446
#, c-format
msgid "Nothing similar to %s, sorry :(\n"
msgstr ""
#: ../src/sdcv.cpp:88
#: ../src/sdcv.cpp:89
msgid "display version information and exit"
msgstr ""
#: ../src/sdcv.cpp:90
#: ../src/sdcv.cpp:91
msgid "display list of available dictionaries and exit"
msgstr ""
#: ../src/sdcv.cpp:92
#: ../src/sdcv.cpp:93
msgid "for search use only dictionary with this bookname"
msgstr ""
#: ../src/sdcv.cpp:93
#: ../src/sdcv.cpp:94
msgid "bookname"
msgstr ""
#: ../src/sdcv.cpp:95
#: ../src/sdcv.cpp:96
msgid "for use in scripts"
msgstr ""
#: ../src/sdcv.cpp:97
#: ../src/sdcv.cpp:98
msgid "print the result formatted as JSON"
msgstr ""
#: ../src/sdcv.cpp:99
#: ../src/sdcv.cpp:100
msgid "do not fuzzy-search for similar words, only return exact matches"
msgstr ""
#: ../src/sdcv.cpp:101
#: ../src/sdcv.cpp:102
msgid "output must be in utf8"
msgstr ""
#: ../src/sdcv.cpp:103
#: ../src/sdcv.cpp:104
msgid "input of sdcv in utf8"
msgstr ""
#: ../src/sdcv.cpp:105
#: ../src/sdcv.cpp:106
msgid "use this directory as path to stardict data directory"
msgstr ""
#: ../src/sdcv.cpp:106
#: ../src/sdcv.cpp:107
msgid "path/to/dir"
msgstr ""
#: ../src/sdcv.cpp:108
#: ../src/sdcv.cpp:109
msgid ""
"only use the dictionaries in data-dir, do not search in user and system "
"directories"
msgstr ""
#: ../src/sdcv.cpp:110
#: ../src/sdcv.cpp:111
msgid "colorize the output"
msgstr ""
#: ../src/sdcv.cpp:115
#: ../src/sdcv.cpp:116
msgid " words"
msgstr ""
#: ../src/sdcv.cpp:121
#: ../src/sdcv.cpp:122
#, c-format
msgid "Invalid command line arguments: %s\n"
msgstr ""
#: ../src/sdcv.cpp:127
#: ../src/sdcv.cpp:128
#, c-format
msgid "Console version of Stardict, version %s\n"
msgstr ""
#: ../src/sdcv.cpp:202
#: ../src/sdcv.cpp:206
#, c-format
msgid "g_mkdir failed: %s\n"
msgstr ""
#: ../src/sdcv.cpp:217
#: ../src/sdcv.cpp:222
msgid "Enter word or phrase: "
msgstr ""
#: ../src/sdcv.cpp:225
#: ../src/sdcv.cpp:230
#, c-format
msgid "There are no words/phrases to translate.\n"
msgstr ""
#: ../src/sdcv.cpp:237
#: ../src/sdcv.cpp:242
#, c-format
msgid "Dictionary's name Word count\n"
msgstr ""

View File

@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: sdcv 0.3.2\n"
"Report-Msgid-Bugs-To: dushistov@mail.ru\n"
"POT-Creation-Date: 2017-08-16 09:52+0300\n"
"POT-Creation-Date: 2020-08-14 12:58+0300\n"
"PO-Revision-Date: 2007-09-11 00:22+0100\n"
"Last-Translator: Ivan Masár <helix84@centrum.sk>\n"
"Language-Team: Slovak <sk-i18n@lists.linux.sk>\n"
@@ -22,22 +22,22 @@ msgstr ""
msgid "popen failed"
msgstr "popen zlyhalo"
#: ../src/libwrapper.cpp:340
#: ../src/libwrapper.cpp:341
#, c-format
msgid "Can not convert %s to utf8.\n"
msgstr "nie je možné konvertovať %s na utf8.\n"
#: ../src/libwrapper.cpp:398 ../src/libwrapper.cpp:432
#: ../src/libwrapper.cpp:399 ../src/libwrapper.cpp:433
#, fuzzy, c-format
msgid "Found %zu items, similar to %s.\n"
msgstr "Nájdené %d položiek, podobných %s,\n"
#: ../src/libwrapper.cpp:416
#: ../src/libwrapper.cpp:417
#, fuzzy
msgid "Your choice[-1 to abort]: "
msgstr "Vaša voľba[-1 zruší]: "
#: ../src/libwrapper.cpp:426
#: ../src/libwrapper.cpp:427
#, fuzzy, c-format
msgid ""
"Invalid choice.\n"
@@ -46,103 +46,103 @@ msgstr ""
"Neplatná voľba.\n"
"Musí byť od 0 do %d alebo -1.\n"
#: ../src/libwrapper.cpp:445
#: ../src/libwrapper.cpp:446
#, c-format
msgid "Nothing similar to %s, sorry :(\n"
msgstr "Ľutujem, nič sa nepodobá na %s :(\n"
#: ../src/sdcv.cpp:88
#: ../src/sdcv.cpp:89
#, fuzzy
msgid "display version information and exit"
msgstr "-v, --version zobrazí informácie o verzii a skončí\n"
#: ../src/sdcv.cpp:90
#: ../src/sdcv.cpp:91
#, fuzzy
msgid "display list of available dictionaries and exit"
msgstr ""
"-l, --list-dicts zobrazí zoznam dostupných slovníkov a skončí\n"
#: ../src/sdcv.cpp:92
#: ../src/sdcv.cpp:93
#, fuzzy
msgid "for search use only dictionary with this bookname"
msgstr "-u, --use-dict názov použiť pre hľadanie iba zvolený slovník\n"
#: ../src/sdcv.cpp:93
#: ../src/sdcv.cpp:94
msgid "bookname"
msgstr ""
#: ../src/sdcv.cpp:95
#: ../src/sdcv.cpp:96
msgid "for use in scripts"
msgstr ""
#: ../src/sdcv.cpp:97
#: ../src/sdcv.cpp:98
msgid "print the result formatted as JSON"
msgstr ""
#: ../src/sdcv.cpp:99
#: ../src/sdcv.cpp:100
msgid "do not fuzzy-search for similar words, only return exact matches"
msgstr ""
#: ../src/sdcv.cpp:101
#: ../src/sdcv.cpp:102
#, fuzzy
msgid "output must be in utf8"
msgstr "--utf8-output výstup musí byť v utf8\n"
#: ../src/sdcv.cpp:103
#: ../src/sdcv.cpp:104
#, fuzzy
msgid "input of sdcv in utf8"
msgstr "--utf8-input vstup pre sdcv je v utf8\n"
#: ../src/sdcv.cpp:105
#: ../src/sdcv.cpp:106
#, fuzzy
msgid "use this directory as path to stardict data directory"
msgstr ""
"--data-dir path/to/dir použiť tento priečinok ako cestu pre stardict "
"dátový priečinok\n"
#: ../src/sdcv.cpp:106
#: ../src/sdcv.cpp:107
msgid "path/to/dir"
msgstr ""
#: ../src/sdcv.cpp:108
#: ../src/sdcv.cpp:109
msgid ""
"only use the dictionaries in data-dir, do not search in user and system "
"directories"
msgstr ""
#: ../src/sdcv.cpp:110
#: ../src/sdcv.cpp:111
msgid "colorize the output"
msgstr ""
#: ../src/sdcv.cpp:115
#: ../src/sdcv.cpp:116
msgid " words"
msgstr ""
#: ../src/sdcv.cpp:121
#: ../src/sdcv.cpp:122
#, c-format
msgid "Invalid command line arguments: %s\n"
msgstr ""
#: ../src/sdcv.cpp:127
#: ../src/sdcv.cpp:128
#, c-format
msgid "Console version of Stardict, version %s\n"
msgstr "Konzolová verzia StarDict, verzia %s\n"
#: ../src/sdcv.cpp:202
#: ../src/sdcv.cpp:206
#, c-format
msgid "g_mkdir failed: %s\n"
msgstr "g_mkdir zlyhalo: %s\n"
#: ../src/sdcv.cpp:217
#: ../src/sdcv.cpp:222
msgid "Enter word or phrase: "
msgstr "Vložte slovo alebo frázu: "
#: ../src/sdcv.cpp:225
#: ../src/sdcv.cpp:230
#, c-format
msgid "There are no words/phrases to translate.\n"
msgstr "Nie je čo preložiť.\n"
#: ../src/sdcv.cpp:237
#: ../src/sdcv.cpp:242
#, c-format
msgid "Dictionary's name Word count\n"
msgstr "názov slovníka počet slov\n"

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: sdcv 0.3\n"
"Report-Msgid-Bugs-To: dushistov@mail.ru\n"
"POT-Creation-Date: 2017-08-16 09:52+0300\n"
"POT-Creation-Date: 2020-08-14 12:58+0300\n"
"PO-Revision-Date: 2004-12-14 17:54+0300\n"
"Last-Translator: <dubyk@lsl.lviv.ua>\n"
"Language-Team: Ukrainian <dubyk@lsl.lviv.ua>\n"
@@ -23,22 +23,22 @@ msgstr ""
msgid "popen failed"
msgstr ""
#: ../src/libwrapper.cpp:340
#: ../src/libwrapper.cpp:341
#, c-format
msgid "Can not convert %s to utf8.\n"
msgstr "Не можу перетворити %s у utf8.\n"
#: ../src/libwrapper.cpp:398 ../src/libwrapper.cpp:432
#: ../src/libwrapper.cpp:399 ../src/libwrapper.cpp:433
#, fuzzy, c-format
msgid "Found %zu items, similar to %s.\n"
msgstr "Знайдено %d слів, схожих на %s.\n"
#: ../src/libwrapper.cpp:416
#: ../src/libwrapper.cpp:417
#, fuzzy
msgid "Your choice[-1 to abort]: "
msgstr "Ваш вибір: "
#: ../src/libwrapper.cpp:426
#: ../src/libwrapper.cpp:427
#, fuzzy, c-format
msgid ""
"Invalid choice.\n"
@@ -47,105 +47,105 @@ msgstr ""
"Неправильний вибір.\n"
"Повинно бути від 0 до %d.\n"
#: ../src/libwrapper.cpp:445
#: ../src/libwrapper.cpp:446
#, c-format
msgid "Nothing similar to %s, sorry :(\n"
msgstr "Нічого схожого на %s, даруйте :(\n"
#: ../src/sdcv.cpp:88
#: ../src/sdcv.cpp:89
#, fuzzy
msgid "display version information and exit"
msgstr "-v, --version показати номер версії і завершити роботу\n"
#: ../src/sdcv.cpp:90
#: ../src/sdcv.cpp:91
#, fuzzy
msgid "display list of available dictionaries and exit"
msgstr ""
"-l, --list-dicts показати список доступних словників і завершити "
"роботу\n"
#: ../src/sdcv.cpp:92
#: ../src/sdcv.cpp:93
#, fuzzy
msgid "for search use only dictionary with this bookname"
msgstr ""
"-u, --use-dict ім`я словника для пошуку використовувати лише цей словник\n"
#: ../src/sdcv.cpp:93
#: ../src/sdcv.cpp:94
msgid "bookname"
msgstr ""
#: ../src/sdcv.cpp:95
#: ../src/sdcv.cpp:96
msgid "for use in scripts"
msgstr ""
#: ../src/sdcv.cpp:97
#: ../src/sdcv.cpp:98
msgid "print the result formatted as JSON"
msgstr ""
#: ../src/sdcv.cpp:99
#: ../src/sdcv.cpp:100
msgid "do not fuzzy-search for similar words, only return exact matches"
msgstr ""
#: ../src/sdcv.cpp:101
#: ../src/sdcv.cpp:102
#, fuzzy
msgid "output must be in utf8"
msgstr "--utf8-output вивід програми повинен бути в utf8\n"
#: ../src/sdcv.cpp:103
#: ../src/sdcv.cpp:104
#, fuzzy
msgid "input of sdcv in utf8"
msgstr "--utf8-input ввід програми в utf8\n"
#: ../src/sdcv.cpp:105
#: ../src/sdcv.cpp:106
#, fuzzy
msgid "use this directory as path to stardict data directory"
msgstr ""
"--data-dir тека використовувати цю теку як шлях до stardict data "
"directory\n"
#: ../src/sdcv.cpp:106
#: ../src/sdcv.cpp:107
msgid "path/to/dir"
msgstr ""
#: ../src/sdcv.cpp:108
#: ../src/sdcv.cpp:109
msgid ""
"only use the dictionaries in data-dir, do not search in user and system "
"directories"
msgstr ""
#: ../src/sdcv.cpp:110
#: ../src/sdcv.cpp:111
msgid "colorize the output"
msgstr ""
#: ../src/sdcv.cpp:115
#: ../src/sdcv.cpp:116
msgid " words"
msgstr ""
#: ../src/sdcv.cpp:121
#: ../src/sdcv.cpp:122
#, c-format
msgid "Invalid command line arguments: %s\n"
msgstr ""
#: ../src/sdcv.cpp:127
#: ../src/sdcv.cpp:128
#, c-format
msgid "Console version of Stardict, version %s\n"
msgstr "Консольна версія Зоряного словника [Stardict], номер версії %s\n"
#: ../src/sdcv.cpp:202
#: ../src/sdcv.cpp:206
#, c-format
msgid "g_mkdir failed: %s\n"
msgstr ""
#: ../src/sdcv.cpp:217
#: ../src/sdcv.cpp:222
msgid "Enter word or phrase: "
msgstr "ВведЁть слово або фразу: "
#: ../src/sdcv.cpp:225
#: ../src/sdcv.cpp:230
#, c-format
msgid "There are no words/phrases to translate.\n"
msgstr "Не задано слова/фрази для перекладу.\n"
#: ../src/sdcv.cpp:237
#: ../src/sdcv.cpp:242
#, fuzzy, c-format
msgid "Dictionary's name Word count\n"
msgstr "назва словника кількість слів\n"

View File

@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: sdcv 0.3\n"
"Report-Msgid-Bugs-To: dushistov@mail.ru\n"
"POT-Creation-Date: 2017-08-16 09:52+0300\n"
"POT-Creation-Date: 2020-08-14 12:58+0300\n"
"PO-Revision-Date: 2005-1-17 00:58+0800\n"
"Last-Translator: Cai Qian <caiqian@gnome.org>\n"
"Language-Team: Simplified Chinese\n"
@@ -19,22 +19,22 @@ msgstr ""
msgid "popen failed"
msgstr ""
#: ../src/libwrapper.cpp:340
#: ../src/libwrapper.cpp:341
#, c-format
msgid "Can not convert %s to utf8.\n"
msgstr "无法将 %s 转换为 UTF-8。\n"
#: ../src/libwrapper.cpp:398 ../src/libwrapper.cpp:432
#: ../src/libwrapper.cpp:399 ../src/libwrapper.cpp:433
#, fuzzy, c-format
msgid "Found %zu items, similar to %s.\n"
msgstr "发现 %d 条记录和 %s 相似。\n"
#: ../src/libwrapper.cpp:416
#: ../src/libwrapper.cpp:417
#, fuzzy
msgid "Your choice[-1 to abort]: "
msgstr "您的选择为:"
#: ../src/libwrapper.cpp:426
#: ../src/libwrapper.cpp:427
#, fuzzy, c-format
msgid ""
"Invalid choice.\n"
@@ -43,100 +43,100 @@ msgstr ""
"无效的选择。\n"
"必须是 0 到 %d。\n"
#: ../src/libwrapper.cpp:445
#: ../src/libwrapper.cpp:446
#, c-format
msgid "Nothing similar to %s, sorry :(\n"
msgstr "对不起,没有发现和 %s 相似的 :(\n"
#: ../src/sdcv.cpp:88
#: ../src/sdcv.cpp:89
#, fuzzy
msgid "display version information and exit"
msgstr "-v, --version 显示版本信息并退出\n"
#: ../src/sdcv.cpp:90
#: ../src/sdcv.cpp:91
#, fuzzy
msgid "display list of available dictionaries and exit"
msgstr "-l, --list-dicts 显示可用的字典列表并退出\n"
#: ../src/sdcv.cpp:92
#: ../src/sdcv.cpp:93
#, fuzzy
msgid "for search use only dictionary with this bookname"
msgstr "-u, --use-dict 字典名 只使用指定的字典进行单词搜索\n"
#: ../src/sdcv.cpp:93
#: ../src/sdcv.cpp:94
msgid "bookname"
msgstr ""
#: ../src/sdcv.cpp:95
#: ../src/sdcv.cpp:96
msgid "for use in scripts"
msgstr ""
#: ../src/sdcv.cpp:97
#: ../src/sdcv.cpp:98
msgid "print the result formatted as JSON"
msgstr ""
#: ../src/sdcv.cpp:99
#: ../src/sdcv.cpp:100
msgid "do not fuzzy-search for similar words, only return exact matches"
msgstr ""
#: ../src/sdcv.cpp:101
#: ../src/sdcv.cpp:102
#, fuzzy
msgid "output must be in utf8"
msgstr "--utf8-output 输出必须是 UTF-8\n"
#: ../src/sdcv.cpp:103
#: ../src/sdcv.cpp:104
#, fuzzy
msgid "input of sdcv in utf8"
msgstr "--utf8-input sdcv 的输入为 UTF-8\n"
#: ../src/sdcv.cpp:105
#: ../src/sdcv.cpp:106
#, fuzzy
msgid "use this directory as path to stardict data directory"
msgstr "--data-dir 目录路径 指定 Stardict 数据所在目录的路径\n"
#: ../src/sdcv.cpp:106
#: ../src/sdcv.cpp:107
msgid "path/to/dir"
msgstr ""
#: ../src/sdcv.cpp:108
#: ../src/sdcv.cpp:109
msgid ""
"only use the dictionaries in data-dir, do not search in user and system "
"directories"
msgstr ""
#: ../src/sdcv.cpp:110
#: ../src/sdcv.cpp:111
msgid "colorize the output"
msgstr ""
#: ../src/sdcv.cpp:115
#: ../src/sdcv.cpp:116
msgid " words"
msgstr ""
#: ../src/sdcv.cpp:121
#: ../src/sdcv.cpp:122
#, c-format
msgid "Invalid command line arguments: %s\n"
msgstr ""
#: ../src/sdcv.cpp:127
#: ../src/sdcv.cpp:128
#, c-format
msgid "Console version of Stardict, version %s\n"
msgstr "Stardict 的控制台版本,版本为 %s\n"
#: ../src/sdcv.cpp:202
#: ../src/sdcv.cpp:206
#, c-format
msgid "g_mkdir failed: %s\n"
msgstr ""
#: ../src/sdcv.cpp:217
#: ../src/sdcv.cpp:222
msgid "Enter word or phrase: "
msgstr "请输入单词或短语:"
#: ../src/sdcv.cpp:225
#: ../src/sdcv.cpp:230
#, c-format
msgid "There are no words/phrases to translate.\n"
msgstr "没有供翻译的单词或短语。\n"
#: ../src/sdcv.cpp:237
#: ../src/sdcv.cpp:242
#, fuzzy, c-format
msgid "Dictionary's name Word count\n"
msgstr "字典名 单词量\n"

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: sdcv 0.4.2\n"
"Report-Msgid-Bugs-To: dushistov@mail.ru\n"
"POT-Creation-Date: 2017-08-16 09:52+0300\n"
"POT-Creation-Date: 2020-08-14 12:58+0300\n"
"PO-Revision-Date: 2013-06-12 14:11+0800\n"
"Last-Translator: Wei-Lun Chao <bluebat@member.fsf.org>\n"
"Language-Team: Chinese (traditional) <zh-l10n@linux.org.tw>\n"
@@ -22,21 +22,21 @@ msgstr ""
msgid "popen failed"
msgstr "popen 失敗"
#: ../src/libwrapper.cpp:340
#: ../src/libwrapper.cpp:341
#, c-format
msgid "Can not convert %s to utf8.\n"
msgstr "無法將 %s 轉換為 UTF-8。\n"
#: ../src/libwrapper.cpp:398 ../src/libwrapper.cpp:432
#: ../src/libwrapper.cpp:399 ../src/libwrapper.cpp:433
#, fuzzy, c-format
msgid "Found %zu items, similar to %s.\n"
msgstr "找到 %d 項紀錄和 %s 相似。\n"
#: ../src/libwrapper.cpp:416
#: ../src/libwrapper.cpp:417
msgid "Your choice[-1 to abort]: "
msgstr "您的選擇是[-1 表示放棄]"
#: ../src/libwrapper.cpp:426
#: ../src/libwrapper.cpp:427
#, fuzzy, c-format
msgid ""
"Invalid choice.\n"
@@ -45,100 +45,100 @@ msgstr ""
"無效的選擇。\n"
"必須是 0 到 %d 之間或 -1。\n"
#: ../src/libwrapper.cpp:445
#: ../src/libwrapper.cpp:446
#, c-format
msgid "Nothing similar to %s, sorry :(\n"
msgstr "抱歉,沒有和 %s 相似者 :(\n"
#: ../src/sdcv.cpp:88
#: ../src/sdcv.cpp:89
#, fuzzy
msgid "display version information and exit"
msgstr "-v, --version 顯示版本資訊並離開\n"
#: ../src/sdcv.cpp:90
#: ../src/sdcv.cpp:91
#, fuzzy
msgid "display list of available dictionaries and exit"
msgstr "-l, --list-dicts 顯示可用的字典清單並離開\n"
#: ../src/sdcv.cpp:92
#: ../src/sdcv.cpp:93
#, fuzzy
msgid "for search use only dictionary with this bookname"
msgstr "-u, --use-dict 字典名 只使用指定的字典進行單字搜尋\n"
#: ../src/sdcv.cpp:93
#: ../src/sdcv.cpp:94
msgid "bookname"
msgstr ""
#: ../src/sdcv.cpp:95
#: ../src/sdcv.cpp:96
msgid "for use in scripts"
msgstr ""
#: ../src/sdcv.cpp:97
#: ../src/sdcv.cpp:98
msgid "print the result formatted as JSON"
msgstr ""
#: ../src/sdcv.cpp:99
#: ../src/sdcv.cpp:100
msgid "do not fuzzy-search for similar words, only return exact matches"
msgstr ""
#: ../src/sdcv.cpp:101
#: ../src/sdcv.cpp:102
#, fuzzy
msgid "output must be in utf8"
msgstr "--utf8-output 輸出必須是 UTF-8\n"
#: ../src/sdcv.cpp:103
#: ../src/sdcv.cpp:104
#, fuzzy
msgid "input of sdcv in utf8"
msgstr "--utf8-input sdcv 的輸入為 UTF-8\n"
#: ../src/sdcv.cpp:105
#: ../src/sdcv.cpp:106
#, fuzzy
msgid "use this directory as path to stardict data directory"
msgstr "--data-dir 目錄路徑 指定 Stardict 資料所在目錄的路徑\n"
#: ../src/sdcv.cpp:106
#: ../src/sdcv.cpp:107
msgid "path/to/dir"
msgstr ""
#: ../src/sdcv.cpp:108
#: ../src/sdcv.cpp:109
msgid ""
"only use the dictionaries in data-dir, do not search in user and system "
"directories"
msgstr ""
#: ../src/sdcv.cpp:110
#: ../src/sdcv.cpp:111
msgid "colorize the output"
msgstr ""
#: ../src/sdcv.cpp:115
#: ../src/sdcv.cpp:116
msgid " words"
msgstr ""
#: ../src/sdcv.cpp:121
#: ../src/sdcv.cpp:122
#, c-format
msgid "Invalid command line arguments: %s\n"
msgstr ""
#: ../src/sdcv.cpp:127
#: ../src/sdcv.cpp:128
#, c-format
msgid "Console version of Stardict, version %s\n"
msgstr "Stardict 的主控臺版本,版本為 %s\n"
#: ../src/sdcv.cpp:202
#: ../src/sdcv.cpp:206
#, c-format
msgid "g_mkdir failed: %s\n"
msgstr "g_mkdir 失敗:%s\n"
#: ../src/sdcv.cpp:217
#: ../src/sdcv.cpp:222
msgid "Enter word or phrase: "
msgstr "請輸入單字或片語:"
#: ../src/sdcv.cpp:225
#: ../src/sdcv.cpp:230
#, c-format
msgid "There are no words/phrases to translate.\n"
msgstr "沒有可供翻譯的單字或片語。\n"
#: ../src/sdcv.cpp:237
#: ../src/sdcv.cpp:242
#, c-format
msgid "Dictionary's name Word count\n"
msgstr "字典名稱 單字數量\n"

View File

@@ -314,12 +314,12 @@ public:
private:
FILE *output;
};
}
} // namespace
bool Library::process_phrase(const char *loc_str, IReadLine &io, bool force)
search_result Library::process_phrase(const char *loc_str, IReadLine &io, bool force)
{
if (nullptr == loc_str)
return true;
return SEARCH_SUCCESS;
std::string query;
@@ -330,6 +330,7 @@ bool Library::process_phrase(const char *loc_str, IReadLine &io, bool force)
gsize bytes_read;
gsize bytes_written;
glib::Error err;
search_result rval = SEARCH_SUCCESS;
glib::CharStr str;
if (!utf8_input_)
str.reset(g_locale_to_utf8(loc_str, -1, &bytes_read, &bytes_written, get_addr(err)));
@@ -339,11 +340,11 @@ bool Library::process_phrase(const char *loc_str, IReadLine &io, bool force)
if (nullptr == get_impl(str)) {
fprintf(stderr, _("Can not convert %s to utf8.\n"), loc_str);
fprintf(stderr, "%s\n", err->message);
return false;
return SEARCH_FAILURE;
}
if (str[0] == '\0')
return true;
return SEARCH_SUCCESS;
TSearchResultList res_list;
@@ -443,10 +444,11 @@ bool Library::process_phrase(const char *loc_str, IReadLine &io, bool force)
loc_str = utf8_to_locale_ign_err(get_impl(str));
if (!json_)
printf(_("Nothing similar to %s, sorry :(\n"), utf8_output_ ? get_impl(str) : loc_str.c_str());
rval = SEARCH_NO_RESULT;
}
if (json_) {
fputs("]\n", stdout);
}
return true;
return rval;
}

View File

@@ -23,6 +23,13 @@ struct TSearchResult {
typedef std::vector<TSearchResult> TSearchResultList;
//possible return values for Library.process_phase()
enum search_result {
SEARCH_SUCCESS = 0,
SEARCH_FAILURE,
SEARCH_NO_RESULT
};
//this class is wrapper around Dicts class for easy use
//of it
class Library : public Libs
@@ -38,7 +45,7 @@ public:
setFuzzy(!no_fuzzy);
}
bool process_phrase(const char *loc_str, IReadLine &io, bool force = false);
search_result process_phrase(const char *loc_str, IReadLine &io, bool force = false);
private:
bool utf8_input_;

View File

@@ -57,11 +57,25 @@ public:
return stdio_getline(stdin, line);
}
};
}
} // namespace
#else
namespace
{
std::string get_hist_file_path()
{
const gchar *hist_file_str = g_getenv("SDCV_HISTFILE");
if (hist_file_str != nullptr)
return std::string(hist_file_str);
const std::string hist_file_path = std::string(g_get_home_dir()) + G_DIR_SEPARATOR + ".sdcv_history";
if (g_file_test(hist_file_path.c_str(), G_FILE_TEST_IS_REGULAR))
return hist_file_path;
return std::string(g_get_user_data_dir()) + G_DIR_SEPARATOR + "sdcv_history";
}
class real_readline : public IReadLine
{
@@ -70,13 +84,13 @@ public:
{
rl_readline_name = "sdcv";
using_history();
const std::string histname = std::string(g_get_home_dir()) + G_DIR_SEPARATOR + ".sdcv_history";
const std::string histname = get_hist_file_path();
read_history(histname.c_str());
}
~real_readline()
{
const std::string histname = std::string(g_get_home_dir()) + G_DIR_SEPARATOR + ".sdcv_history";
const std::string histname = get_hist_file_path();
write_history(histname.c_str());
const gchar *hist_size_str = g_getenv("SDCV_HISTSIZE");
int hist_size;
@@ -102,7 +116,7 @@ public:
add_history(phrase.c_str());
}
};
}
} // namespace
#endif //WITH_READLINE
IReadLine *create_readline_object()

View File

@@ -53,7 +53,7 @@ static void free_str_array(gchar **arr)
g_free(*p);
g_free(arr);
}
}
} // namespace
namespace glib
{
using StrArr = ResourceWrapper<gchar *, gchar *, free_str_array>;
@@ -61,7 +61,8 @@ using StrArr = ResourceWrapper<gchar *, gchar *, free_str_array>;
static void list_dicts(const std::list<std::string> &dicts_dir_list, bool use_json);
int main(int argc, char *argv[]) try {
int main(int argc, char *argv[])
try {
setlocale(LC_ALL, "");
#if ENABLE_NLS
bindtextdomain("sdcv",
@@ -141,13 +142,13 @@ int main(int argc, char *argv[]) try {
data_dir = get_impl(opt_data_dir);
}
const char *homedir = g_getenv("HOME");
if (!homedir)
homedir = g_get_home_dir();
std::string conf_dir = std::string(g_get_home_dir()) + G_DIR_SEPARATOR + ".stardict";
if (!g_file_test(conf_dir.c_str(), G_FILE_TEST_IS_DIR))
conf_dir = std::string(g_get_user_data_dir()) + G_DIR_SEPARATOR + "stardict";
std::list<std::string> dicts_dir_list;
if (!only_data_dir)
dicts_dir_list.push_back(std::string(homedir) + G_DIR_SEPARATOR + ".stardict" + G_DIR_SEPARATOR + "dic");
dicts_dir_list.push_back(conf_dir + G_DIR_SEPARATOR + "dic");
dicts_dir_list.push_back(data_dir);
if (show_list_dicts) {
list_dicts(dicts_dir_list, json_output);
@@ -186,8 +187,12 @@ int main(int argc, char *argv[]) try {
++p;
}
} else {
const std::string odering_cfg_file = std::string(homedir) + G_DIR_SEPARATOR_S ".sdcv_ordering";
FILE *ordering_file = fopen(odering_cfg_file.c_str(), "r");
std::string ordering_cfg_file = std::string(g_get_user_config_dir()) + G_DIR_SEPARATOR_S "sdcv_ordering";
FILE *ordering_file = fopen(ordering_cfg_file.c_str(), "r");
if (ordering_file == nullptr) {
ordering_cfg_file = std::string(g_get_home_dir()) + G_DIR_SEPARATOR_S ".sdcv_ordering";
ordering_file = fopen(ordering_cfg_file.c_str(), "r");
}
if (ordering_file != nullptr) {
std::string line;
while (stdio_getline(ordering_file, line)) {
@@ -197,7 +202,6 @@ int main(int argc, char *argv[]) try {
}
}
const std::string conf_dir = std::string(g_get_home_dir()) + G_DIR_SEPARATOR + ".stardict";
if (g_mkdir(conf_dir.c_str(), S_IRWXU) == -1 && errno != EEXIST) {
fprintf(stderr, _("g_mkdir failed: %s\n"), strerror(errno));
}
@@ -207,15 +211,16 @@ int main(int argc, char *argv[]) try {
std::unique_ptr<IReadLine> io(create_readline_object());
if (optind < argc) {
search_result rval = SEARCH_SUCCESS;
for (int i = optind; i < argc; ++i)
if (!lib.process_phrase(argv[i], *io, non_interactive)) {
return EXIT_FAILURE;
if ((rval = lib.process_phrase(argv[i], *io, non_interactive)) != SEARCH_SUCCESS) {
return rval;
}
} else if (!non_interactive) {
std::string phrase;
while (io->read(_("Enter word or phrase: "), phrase)) {
if (!lib.process_phrase(phrase.c_str(), *io))
if (lib.process_phrase(phrase.c_str(), *io) == SEARCH_FAILURE)
return EXIT_FAILURE;
phrase.clear();
}

View File

@@ -71,7 +71,7 @@ static void unicode_strdown(gunichar *str)
++str;
}
}
}
} // namespace
bool DictInfo::load_from_ifo_file(const std::string &ifofilename,
bool istreedict)
@@ -334,6 +334,7 @@ bool DictBase::SearchData(std::vector<std::string> &SearchWords, guint32 idxitem
if (dictfile)
fseek(dictfile, idxitem_offset, SEEK_SET);
THROW_IF_ERROR(origin_data != nullptr);
if (dictfile) {
const size_t nitems = fread(origin_data, idxitem_size, 1, dictfile);
THROW_IF_ERROR(nitems == 1);
@@ -491,7 +492,8 @@ private:
static std::list<std::string> get_cache_variant(const std::string &url);
};
const char *OffsetIndex::CACHE_MAGIC = "StarDict's Cache, Version: 0.1";
const char *OffsetIndex::CACHE_MAGIC = "StarDict's Cache, Version: 0.2";
#define CACHE_MAGIC_BYTES 0x51a4d1c1
class WordListIndex : public IIndexFile
{
@@ -573,7 +575,11 @@ bool OffsetIndex::load_cache(const std::string &url)
continue;
if (strncmp(mf.begin(), CACHE_MAGIC, strlen(CACHE_MAGIC)) != 0)
continue;
memcpy(&wordoffset[0], mf.begin() + strlen(CACHE_MAGIC), wordoffset.size() * sizeof(wordoffset[0]));
guint32 tmp;
memcpy(&tmp, mf.begin() + strlen(CACHE_MAGIC), sizeof(tmp));
if (tmp != CACHE_MAGIC_BYTES)
continue;
memcpy(&wordoffset[0], mf.begin() + strlen(CACHE_MAGIC) + sizeof(guint32), wordoffset.size() * sizeof(wordoffset[0]));
return true;
}
@@ -605,10 +611,13 @@ bool OffsetIndex::save_cache(const std::string &url, bool verbose)
const std::list<std::string> vars = get_cache_variant(url);
for (const std::string &item : vars) {
FILE *out = fopen(item.c_str(), "wb");
guint32 magic = CACHE_MAGIC_BYTES;
if (!out)
continue;
if (fwrite(CACHE_MAGIC, 1, strlen(CACHE_MAGIC), out) != strlen(CACHE_MAGIC))
continue;
if (fwrite(&magic, 1, sizeof(magic), out) != sizeof(magic))
continue;
if (fwrite(&wordoffset[0], sizeof(wordoffset[0]), wordoffset.size(), out) != wordoffset.size())
continue;
fclose(out);
@@ -750,7 +759,7 @@ bool OffsetIndex::lookup(const char *str, glong &idx)
return bFound;
}
bool WordListIndex::load(const std::string &url, gulong wc, gulong fsize, bool verbose)
bool WordListIndex::load(const std::string &url, gulong wc, gulong fsize, bool)
{
gzFile in = gzopen(url.c_str(), "rb");
if (in == nullptr)
@@ -818,7 +827,7 @@ bool WordListIndex::lookup(const char *str, glong &idx)
}
return bFound;
}
}
} // namespace
bool SynFile::load(const std::string &url, gulong wc)
{

View File

@@ -68,7 +68,7 @@ namespace glib
{
typedef ResourceWrapper<gchar, void, g_free> CharStr;
typedef ResourceWrapper<GError, GError, g_error_free> Error;
}
} // namespace glib
extern std::string utf8_to_locale_ign_err(const std::string &utf8_str);

Binary file not shown.

View File

@@ -6,7 +6,7 @@ unset SDCV_PAGER
have=`"$PATH_TO_SDCV" --data-dir /tmp/bugagaga -l | wc -l`
#do not count header
have=$(($have-1))
ndicts=`find "${HOME}"/.stardict/dic -name "*.ifo" -print | wc -l`
ndicts=`find "${XDG_DATA_HOME:-$HOME/.local/share}"/stardict/dic -name "*.ifo" -print | wc -l`
#ndicts=$(($ndicts+1))
if [ $have -ne $ndicts ]; then
ndicts=$(($ndicts-1))

View File

@@ -9,17 +9,17 @@ unset SDCV_PAGER
unset STARDICT_DATA_DIR
test_json() {
PARAMS="$1"
EXPECTED=$(echo "$2" | jq 'sort')
RESULT=$($SDCV $PARAMS | jq 'sort')
if [ "$EXPECTED" != "$RESULT"]; then
EXPECTED=$(echo "$1" | jq 'sort')
shift
RESULT=$($SDCV "$@" | jq 'sort')
if [ "$EXPECTED" != "$RESULT" ]; then
echo "expected $EXPECTED but got $RESULT"
exit 1
fi
}
test_json "-x -j -l -n --data-dir \"$TEST_DIR\"" "[{\"name\": \"Test synonyms\", \"wordcount\": \"1\"},{\"name\": \"Sample 1 test dictionary\", \"wordcount\": \"1\"},{\"name\": \"test_dict\", \"wordcount\": \"1\"}]"
test_json "-x -j -n --data-dir \"$TEST_DIR\" foo" "[{\"dict\": \"Test synonyms\",\"word\":\"test\",\"definition\":\"\nresult of test\"}]"
test_json "-x -j -n --data-dir \"$TEST_DIR\" foobarbaaz" "[]"
test_json '[{"name": "Test synonyms", "wordcount": "2"},{"name": "Sample 1 test dictionary", "wordcount": "1"},{"name": "test_dict", "wordcount": "1"}]' -x -j -l -n --data-dir "$TEST_DIR"
test_json '[{"dict": "Test synonyms","word":"test","definition":"\u000aresult of test"}]' -x -j -n --data-dir "$TEST_DIR" foo
test_json '[]' -x -j -n --data-dir "$TEST_DIR" foobarbaaz
exit 0

View File

@@ -4,7 +4,7 @@ PATH_TO_SDCV="$1"
ndicts=`"$PATH_TO_SDCV" -l | wc -l`
ndicts=$(($ndicts-1))
ncom=`find /usr/share/stardict/dic -name "*.ifo" | wc -l`
nspe=`find "${HOME}"/.stardict/dic -name "*.ifo" | wc -l`
nspe=`find "${XDG_DATA_HOME:-$HOME/.local/share}"/stardict/dic -name "*.ifo" | wc -l`
nmy=$(($ncom+$nspe))
if [ $nmy -ne $ndicts ]; then

22
tests/t_return_code Executable file
View File

@@ -0,0 +1,22 @@
#!/bin/sh
SDCV="$1"
TEST_DIR="$2"
unset SDCV_PAGER
test_return_code() {
WORD=$1
EXPECTED=$2
$SDCV -e -n --data-dir "$TEST_DIR" -u "Test synonyms" $WORD > /dev/null
RC=$?
if [ $RC -ne $EXPECTED ]; then
echo "Return code for $WORD should be '$EXPECTED' but was '$RC'"
exit 1
fi
}
test_return_code testawordy 0
test_return_code testawordies 2
exit 0

View File

@@ -5,8 +5,8 @@ set -e
PATH_TO_SDCV="$1"
TESTS_DIR="$2"
mkdir -p "${HOME}"/.stardict/dic
cp -R "${TESTS_DIR}/stardict-test_dict-2.4.2" "${HOME}"/.stardict/dic
mkdir -p "${XDG_DATA_HOME:-$HOME/.local/share}"/stardict/dic
cp -R "${TESTS_DIR}/stardict-test_dict-2.4.2" "${XDG_DATA_HOME:-$HOME/.local/share}"/stardict/dic
unset SDCV_PAGER
RES=`"$PATH_TO_SDCV" -n -u test_dict test | grep "test passed"`
@@ -15,6 +15,6 @@ if [ -z "$RES" ]; then
exit 1
fi
rm -fr "${HOME}"/.stardict/dic/stardict-test_dict-2.4.2
rm -fr "${XDG_DATA_HOME:-$HOME/.local/share}"/stardict/dic/stardict-test_dict-2.4.2
exit 0

View File

@@ -4,9 +4,8 @@ set -e
PATH_TO_SDCV="$1"
TESTS_DIR="$2"
mkdir -p "${HOME}"/.stardict/dic
cp -R "${TESTS_DIR}/rus-eng-stardict-2.4.2" "${HOME}"/.stardict/dic/
mkdir -p "${XDG_DATA_HOME:-$HOME/.local/share}"/stardict/dic
cp -R "${TESTS_DIR}/rus-eng-stardict-2.4.2" "${XDG_DATA_HOME:-$HOME/.local/share}"/stardict/dic/
unset SDCV_PAGER
export LANG=ru_RU.KOI8-R