Compare commits

..

3 Commits

Author SHA1 Message Date
Shahaab
8343604394 adding language selector INITIAL COMMIT NOTFINAL 2021-02-23 19:41:35 +05:30
Shahaab
908611102c adding files from shahaab/prototype 2021-02-14 00:02:00 +05:30
Shahaab
4949a1d027 fixing typo -initial commit 2021-02-13 23:41:10 +05:30
327 changed files with 16795 additions and 10490 deletions

View File

@@ -13,15 +13,14 @@ jobs:
with:
python-version: '3.5'
- name: Install packages
run: |
brew update
run:
brew install gcovr pkg-config ninja
- name: Install python modules
run: pip3 install meson==0.49.2 pytest
- name: Install deps
shell: bash
run: |
ARCHIVE_NAME=deps2_osx_native_dyn_libkiwix.tar.xz
ARCHIVE_NAME=deps2_osx_native_dyn_kiwix-lib.tar.xz
wget -O- http://tmp.kiwix.org/ci/${ARCHIVE_NAME} | tar -xJ -C $HOME
- name: Compile
shell: bash
@@ -94,7 +93,7 @@ jobs:
HOME: /home/runner
runs-on: ubuntu-latest
container:
image: "kiwix/kiwix-build_ci:${{matrix.image_variant}}-31"
image: "kiwix/kiwix-build_ci:${{matrix.image_variant}}-26"
steps:
- name: Extract branch name
shell: bash
@@ -115,7 +114,7 @@ jobs:
- name: Install deps
shell: bash
run: |
ARCHIVE_NAME=deps2_${OS_NAME}_${{matrix.target}}_libkiwix.tar.xz
ARCHIVE_NAME=deps2_${OS_NAME}_${{matrix.target}}_kiwix-lib.tar.xz
wget -O- http://tmp.kiwix.org/ci/${ARCHIVE_NAME} | tar -xJ -C /home/runner
- name: Compile
shell: bash
@@ -134,7 +133,7 @@ jobs:
if [[ "${{matrix.target}}" =~ android_.* ]]; then
MESON_OPTION="$MESON_OPTION -Dandroid=true"
fi
cd $HOME/libkiwix
cd $HOME/kiwix-lib
meson . build ${MESON_OPTION}
cd build
ninja
@@ -145,7 +144,7 @@ jobs:
if: startsWith(matrix.target, 'native_')
shell: bash
run: |
cd $HOME/libkiwix/build
cd $HOME/kiwix-lib/build
meson test --verbose
ninja coverage
env:
@@ -154,7 +153,7 @@ jobs:
- name: Publish coverage
shell: bash
run: |
cd $HOME/libkiwix
cd $HOME/kiwix-lib
curl https://codecov.io/bash -o codecov.sh
bash codecov.sh -n "${OS_NAME}_${{matrix.target}}" -Z
rm codecov.sh

View File

@@ -7,11 +7,7 @@ jobs:
strategy:
fail-fast: false
matrix:
distro:
- ubuntu-impish
- ubuntu-hirsute
- ubuntu-focal
- ubuntu-bionic
distro: [ubuntu-hirsute, ubuntu-groovy, ubuntu-focal, ubuntu-bionic]
steps:
- uses: actions/checkout@v2
@@ -34,14 +30,6 @@ jobs:
email: release+launchpad@kiwix.org
distro: ${{ matrix.distro }}
- uses: legoktm/gh-action-build-deb@ubuntu-impish
if: matrix.distro == 'ubuntu-impish'
name: Build package for ubuntu-impish
id: build-ubuntu-impish
with:
args: --no-sign
ppa: ${{ steps.ppa.outputs.ppa }}
- uses: legoktm/gh-action-build-deb@ubuntu-hirsute
if: matrix.distro == 'ubuntu-hirsute'
name: Build package for ubuntu-hirsute
@@ -50,6 +38,14 @@ jobs:
args: --no-sign
ppa: ${{ steps.ppa.outputs.ppa }}
- uses: legoktm/gh-action-build-deb@ubuntu-groovy
if: matrix.distro == 'ubuntu-groovy'
name: Build package for ubuntu-groovy
id: build-ubuntu-groovy
with:
args: --no-sign
ppa: ${{ steps.ppa.outputs.ppa }}
- uses: legoktm/gh-action-build-deb@ubuntu-focal
if: matrix.distro == 'ubuntu-focal'
name: Build package for ubuntu-focal

1
.gitignore vendored
View File

@@ -4,4 +4,3 @@ subprojects/googletest-release*
*.class
build/
.vscode/
builddir/

View File

@@ -1,8 +1,3 @@
libkiwix 10.0.0
===============
* ...
kiwix-lib 9.4.1
===============

109
README.md
View File

@@ -1,50 +1,50 @@
Libkiwix
========
Kiwix library
=============
The Libkiwix provides the [Kiwix](https://kiwix.org) software suite
core. It contains the code shared by all Kiwix ports (Windows,
The Kiwix library provides the [Kiwix](https://kiwix.org) software
suite core. It contains the code shared by all Kiwix ports (Windows,
GNU/Linux, macOS, Android, iOS, ...).
[![Repositories](https://img.shields.io/repology/repositories/libkiwix?label=repositories)](https://github.com/kiwix/libkiwix/wiki/Repology)
[![Build Status](https://github.com/kiwix/libkiwix/workflows/CI/badge.svg?query=branch%3Amaster)](https://github.com/kiwix/libkiwix/actions?query=branch%3Amaster)
[![CodeFactor](https://www.codefactor.io/repository/github/kiwix/libkiwix/badge)](https://www.codefactor.io/repository/github/kiwix/libkiwix)
[![Codecov](https://codecov.io/gh/kiwix/libkiwix/branch/master/graph/badge.svg)](https://codecov.io/gh/kiwix/libkiwix)
[![Download](https://api.bintray.com/packages/kiwix/kiwix/kiwixlib/images/download.svg)](https://bintray.com/kiwix/kiwix/kiwixlib/_latestVersion)
[![Build Status](https://github.com/kiwix/kiwix-lib/workflows/CI/badge.svg?query=branch%3Amaster)](https://github.com/kiwix/kiwix-lib/actions?query=branch%3Amaster)
[![CodeFactor](https://www.codefactor.io/repository/github/kiwix/kiwix-lib/badge)](https://www.codefactor.io/repository/github/kiwix/kiwix-lib)
[![Codecov](https://codecov.io/gh/kiwix/kiwix-lib/branch/master/graph/badge.svg)](https://codecov.io/gh/kiwix/kiwix-lib)
[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)
[![Packaging status](https://repology.org/badge/vertical-allrepos/kiwix-lib.svg)](https://repology.org/project/kiwix-lib/versions)
Disclaimer
----------
This document assumes you have a little knowledge about software
compilation. If you experience difficulties with the dependencies or
with the Libkiwix compilation itself, we recommend to have a look to
[kiwix-build](https://github.com/kiwix/kiwix-build).
with the Kiwix library compilation itself, we recommend to have a look
to [kiwix-build](https://github.com/kiwix/kiwix-build).
Preamble
--------
Although the Libkiwix can be (cross-)compiled on/for many sytems, the
following documentation explains how to do it on POSIX ones. It is
primarly thought for GNU/Linux systems and has been tested on recent
releases of Ubuntu and Fedora.
Although the Kiwix library can be (cross-)compiled on/for many
systems, the following documentation explains how to do it on POSIX
ones. It is primarily thought for GNU/Linux systems and has been tested
on recent releases of Ubuntu and Fedora.
Dependencies
------------
The Libkiwix relies on many third party software libraries. They are
prerequisites to the Libkiwix compilation. Following libraries need to
be available:
The Kiwix library relies on many third parts software libraries. They
are prerequisites to the Kiwix library compilation. Following
libraries need to be available:
* [ICU](https://site.icu-project.org/) (package `libicu-dev` on Ubuntu)
* [ZIM](https://openzim.org/) (package `libzim-dev` on Ubuntu)
* [Pugixml](https://pugixml.org/) (package `libpugixml-dev` on Ubuntu)
* [Mustache](https://github.com/kainjow/Mustache) (Just copy the
header `mustache.hpp` somewhere it can be found by the compiler and/or
set CPPFLAGS with correct `-I` option). Use Mustache version 4.1 or above.
* [Libcurl](https://curl.se/libcurl) (`libcurl4-gnutls-dev`, `libcurl4-nss-dev` or `libcurl4-openssl-dev` on Ubuntu)
* [Microhttpd](https://www.gnu.org/software/libmicrohttpd) (package `libmicrohttpd-dev` on Ubuntu)
* [Zlib](https://zlib.net/) (package `zlib1g-dev` on Ubuntu)
To test the code:
* [Google Test](https://github.com/google/googletest) (package `googletest` on Ubuntu)
set CPPFLAGS with correct `-I` option). Use Mustache version 3 only.
* [libcurl](https://curl.se/libcurl) (`libcurl4-gnutls-dev`, `libcurl4-nss-dev` or `libcurl4-openssl-dev` on Ubuntu)
* [microhttpd](https://www.gnu.org/software/libmicrohttpd) (package `libmicrohttpd-dev` on Ubuntu)
* [zlib](https://zlib.net/) (package `zlib1g-dev` on Ubuntu)
The following dependency needs to be available at runtime:
* [Aria2](https://aria2.github.io/) (package `aria2` on Ubuntu)
@@ -56,12 +56,12 @@ In the worse case, you will have to download and compile bleeding edge
version by hand.
If you want to install these dependencies locally, then use the
`libkiwix` directory as install prefix.
`kiwix-lib` directory as install prefix.
Environment
-------------
The Libkiwix builds using [Meson](https://mesonbuild.com/) version
The Kiwix library builds using [Meson](https://mesonbuild.com/) version
0.45 or higher. Meson relies itself on Ninja, pkg-config and few other
compilation tools.
@@ -77,7 +77,7 @@ section.
Compilation
-----------
Once all dependencies are installed, you can compile the Libkiwix
Once all dependencies are installed, you can compile the Kiwix library
with:
```bash
meson . build
@@ -85,7 +85,7 @@ ninja -C build
```
By default, it will compile dynamic linked libraries. All binary files
will be created in the `build` directory created automatically by
will be created in the "build" directory created automatically by
Meson. If you want statically linked libraries, you can add
`--default-library=static` option to the Meson command.
@@ -103,7 +103,7 @@ meson test
Installation
------------
If you want to install the Libkiwix and the headers you just have
If you want to install the Kiwix library and the headers you just have
compiled on your system, here we go:
```bash
ninja -C build install
@@ -146,57 +146,6 @@ cp ninja ../bin
cd ..
```
Custom Index Page
-----------------
to use custom welcome page mention `customIndexPage` argument in `kiwix::internalServer()` or use `kiwix::server->setCustomIndexTemplate()`.
(note - while using custom html file please mention all external links as absolute path.)
to create a HTML template with custom JS you need to have a look at various OPDS based endpoints as mentioned [here](https://wiki.kiwix.org/wiki/OPDS) to load books.
To use JS provided by kiwix-serve you can use the following template to start with ->
```
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<title><-- Custom Tittle --></title>
<script
type="text/javascript"
src="{{root}}/skin/jquery-ui/external/jquery/jquery.js"
></script>
<script
type="text/javascript"
src="{{root}}/skin/jquery-ui/jquery-ui.min.js"
></script>
<script src="{{root}}/skin/isotope.pkgd.min.js" defer></script>
<script src="{{root}}/skin/iso6391To3.js"></script>
<script type="text/javascript" src="{{root}}/skin/index.js" defer></script>
</head>
<body>
</body>
</html>
```
- To get books listed using `index.js` add - `<div class="book__list"></div>` under body tag.
- To get number of books listed add - `<h3 class="kiwixHomeBody__results"></h3>` under body tag.
- To add language select box add - `<select id="languageFilter"></select>` under body tag.
- To add language select box add - `<select id="categoryFilter"></select>` under body tag.
- To add search box for books use following form -
```
<form id='kiwixSearchForm'>
<input type="text" name="q" placeholder="Search" id="searchFilter" class='kiwixSearch filter'>
<input type="submit" class="searchButton" value="Search"/>
</form>
```
If you compile manually Libmicrohttpd, you might need to compile it
without GNU TLS, a bug here will empeach further compilation
otherwise.
If the compilation still fails, you might need to get a more recent
version of a dependency than the one packaged by your Linux
distribution. Try then with a source tarball distributed by the

View File

@@ -29,7 +29,7 @@ task writePom {
version '10.0.0' + (System.env.KIWIXLIB_BUILDVERSION == null ? '' : '-'+System.env.KIWIXLIB_BUILDVERSION)
packaging 'aar'
name 'kiwixlib'
url 'https://github.com/kiwix/libkiwix'
url 'https://github.com/kiwix/kiwix-lib'
licenses {
license {
name 'GPLv3'
@@ -44,9 +44,9 @@ task writePom {
}
}
scm {
connection 'https://github.com/kiwix/libkiwix.git'
developerConnection 'https://github.com/kiwix/libkiwix.git'
url 'https://github.com/kiwix/libkiwix'
connection 'https://github.com/kiwix/kiwix-lib.git'
developerConnection 'https://github.com/kiwix/kiwix-lib.git'
url 'https://github.com/kiwix/kiwix-lib'
}
}
}.withXml {

2
debian/control vendored
View File

@@ -15,7 +15,7 @@ Build-Depends: debhelper-compat (= 13),
zlib1g-dev
Standards-Version: 4.5.0
Section: libs
Homepage: https://github.com/kiwix/libkiwix
Homepage: https://github.com/kiwix/kiwix-lib
Rules-Requires-Root: no
Package: libkiwix-dev

View File

@@ -7,7 +7,6 @@ files=(
"include/common/otherTools.h"
"include/common/regexTools.h"
"include/common/networkTools.h"
"include/common/archiveTools.h"
"include/manager.h"
"include/reader.h"
"include/kiwix.h"
@@ -23,7 +22,6 @@ files=(
"src/common/pathTools.cpp"
"src/common/regexTools.cpp"
"src/common/otherTools.cpp"
"src/common/archiveTools.cpp"
"src/common/networkTools.cpp"
"src/common/stringTools.cpp"
"src/xapianSearcher.cpp"

View File

@@ -26,10 +26,6 @@ namespace pugi {
class xml_node;
}
namespace zim {
class Archive;
}
namespace kiwix
{
@@ -47,7 +43,6 @@ class Book
bool update(const Book& other);
void update(const Reader& reader);
void update(const zim::Archive& archive);
void updateFromXml(const pugi::xml_node& node, const std::string& baseDir);
void updateFromOpds(const pugi::xml_node& node, const std::string& urlHost);
std::string getHumanReadableIdFromPath() const;
@@ -64,7 +59,6 @@ class Book
const std::string& getDate() const { return m_date; }
const std::string& getUrl() const { return m_url; }
const std::string& getName() const { return m_name; }
std::string getCategory() const;
const std::string& getTags() const { return m_tags; }
std::string getTagStr(const std::string& tagName) const;
bool getTagBool(const std::string& tagName) const;
@@ -100,9 +94,6 @@ class Book
void setFaviconMimeType(const std::string& faviconMimeType) { m_faviconMimeType = faviconMimeType; }
void setDownloadId(const std::string& downloadId) { m_downloadId = downloadId; }
private:
std::string getCategoryFromTags() const;
protected:
std::string m_id;
std::string m_downloadId;
@@ -110,7 +101,6 @@ class Book
bool m_pathValid = false;
std::string m_title;
std::string m_description;
std::string m_category;
std::string m_language;
std::string m_creator;
std::string m_publisher;

View File

@@ -103,7 +103,7 @@ class Entry
* Some entry (ie binary ones) have their content plain stored
* in the zim file. Knowing the offset where the content is stored
* an user can directly read the content in the zim file bypassing the
* libkiwix/libzim.
* kiwix-lib/libzim.
*
* @return A pair specifying where to read the content.
* The string is the real file to read (may be different that .zim
@@ -111,7 +111,7 @@ class Entry
* The offset is the offset to read in the file.
* Return <"",0> if is not possible to read directly.
*/
zim::Item::DirectAccessInfo getDirectAccessInfo() const { return entry.getItem().getDirectAccessInformation(); }
std::pair<std::string, offset_type> getDirectAccessInfo() const { return entry.getItem().getDirectAccessInformation(); }
/**
* Get the size of the entry.

View File

@@ -24,7 +24,6 @@
#include <vector>
#include <map>
#include <memory>
#include <zim/archive.h>
#include "book.h"
#include "bookmark.h"
@@ -36,7 +35,6 @@ namespace kiwix
{
class OPDSDumper;
class Library;
enum supportedListSortBy { UNSORTED, TITLE, SIZE, DATE, CREATOR, PUBLISHER };
enum supportedListMode {
@@ -50,23 +48,18 @@ enum supportedListMode {
};
class Filter {
public: // types
using Tags = std::vector<std::string>;
private: // data
private:
uint64_t activeFilters;
Tags _acceptTags;
Tags _rejectTags;
std::string _category;
std::vector<std::string> _acceptTags;
std::vector<std::string> _rejectTags;
std::string _lang;
std::string _publisher;
std::string _creator;
size_t _maxSize;
std::string _query;
bool _queryIsPartial;
std::string _name;
public: // functions
public:
Filter();
~Filter() = default;
@@ -100,42 +93,16 @@ class Filter {
/**
* Set the filter to only accept book with corresponding tag.
*/
Filter& acceptTags(const Tags& tags);
Filter& rejectTags(const Tags& tags);
Filter& acceptTags(std::vector<std::string> tags);
Filter& rejectTags(std::vector<std::string> tags);
Filter& category(std::string category);
Filter& lang(std::string lang);
Filter& publisher(std::string publisher);
Filter& creator(std::string creator);
Filter& maxSize(size_t size);
Filter& query(std::string query, bool partial=true);
Filter& query(std::string query);
Filter& name(std::string name);
bool hasQuery() const;
const std::string& getQuery() const { return _query; }
bool queryIsPartial() const { return _queryIsPartial; }
bool hasName() const;
const std::string& getName() const { return _name; }
bool hasCategory() const;
const std::string& getCategory() const { return _category; }
bool hasLang() const;
const std::string& getLang() const { return _lang; }
bool hasPublisher() const;
const std::string& getPublisher() const { return _publisher; }
bool hasCreator() const;
const std::string& getCreator() const { return _creator; }
const Tags& getAcceptTags() const { return _acceptTags; }
const Tags& getRejectTags() const { return _rejectTags; }
private: // functions
friend class Library;
bool accept(const Book& book) const;
};
@@ -147,27 +114,12 @@ class Library
{
std::map<std::string, kiwix::Book> m_books;
std::map<std::string, std::shared_ptr<Reader>> m_readers;
std::map<std::string, std::shared_ptr<zim::Archive>> m_archives;
std::vector<kiwix::Bookmark> m_bookmarks;
class BookDB;
std::unique_ptr<BookDB> m_bookDB;
public:
typedef std::vector<std::string> BookIdCollection;
typedef std::map<std::string, int> AttributeCounts;
public:
Library();
~Library();
/**
* Library is not a copiable object. However it can be moved.
*/
Library(const Library& ) = delete;
Library(Library&& );
void operator=(const Library& ) = delete;
Library& operator=(Library&& );
/**
* Add a book to the library.
*
@@ -196,12 +148,9 @@ class Library
*/
bool removeBookmark(const std::string& zimId, const std::string& url);
const Book& getBookById(const std::string& id) const;
Book& getBookById(const std::string& id);
const Book& getBookByPath(const std::string& path) const;
Book& getBookByPath(const std::string& path);
std::shared_ptr<Reader> getReaderById(const std::string& id);
std::shared_ptr<zim::Archive> getArchiveById(const std::string& id);
/**
* Remove a book from the library.
@@ -217,7 +166,7 @@ class Library
* @param path the path of the file to write to.
* @return True if the library has been correctly saved.
*/
bool writeToFile(const std::string& path) const;
bool writeToFile(const std::string& path);
/**
* Write the library bookmarks to a file.
@@ -225,7 +174,7 @@ class Library
* @param path the path of the file to write to.
* @return True if the library has been correctly saved.
*/
bool writeBookmarksToFile(const std::string& path) const;
bool writeBookmarksToFile(const std::string& path);
/**
* Get the number of book in the library.
@@ -234,56 +183,42 @@ class Library
* @param remoteBooks If we must count remote books (books with an url)
* @return The number of books.
*/
unsigned int getBookCount(const bool localBooks, const bool remoteBooks) const;
unsigned int getBookCount(const bool localBooks, const bool remoteBooks);
/**
* Get all languagues of the books in the library.
* Get all langagues of the books in the library.
*
* @return A list of languages.
*/
std::vector<std::string> getBooksLanguages() const;
/**
* Get all languagues of the books in the library with counts.
*
* @return A list of languages with the count of books in each language.
*/
AttributeCounts getBooksLanguagesWithCounts() const;
/**
* Get all categories of the books in the library.
*
* @return A list of categories.
*/
std::vector<std::string> getBooksCategories() const;
std::vector<std::string> getBooksLanguages();
/**
* Get all book creators of the books in the library.
*
* @return A list of book creators.
*/
std::vector<std::string> getBooksCreators() const;
std::vector<std::string> getBooksCreators();
/**
* Get all book publishers of the books in the library.
*
* @return A list of book publishers.
*/
std::vector<std::string> getBooksPublishers() const;
std::vector<std::string> getBooksPublishers();
/**
* Get all bookmarks.
*
* @return A list of bookmarks
*/
const std::vector<kiwix::Bookmark> getBookmarks(bool onlyValidBookmarks = true) const;
const std::vector<kiwix::Bookmark> getBookmarks(bool onlyValidBookmarks = true);
/**
* Get all book ids of the books in the library.
*
* @return A list of book ids.
*/
BookIdCollection getBooksIds() const;
std::vector<std::string> getBooksIds();
/**
* Filter the library and generate a new one with the keep elements.
@@ -293,7 +228,7 @@ class Library
* @param search List only books with search in the title or description.
* @return The list of bookIds corresponding to the query.
*/
DEPRECATED BookIdCollection filter(const std::string& search) const;
DEPRECATED std::vector<std::string> filter(const std::string& search);
/**
@@ -302,7 +237,7 @@ class Library
* @param filter The filter to use.
* @return The list of bookIds corresponding to the filter.
*/
BookIdCollection filter(const Filter& filter) const;
std::vector<std::string> filter(const Filter& filter);
/**
@@ -312,7 +247,7 @@ class Library
* @param comparator how to sort the books
* @return The sorted list of books
*/
void sort(BookIdCollection& bookIds, supportedListSortBy sortBy, bool ascending) const;
void sort(std::vector<std::string>& bookIds, supportedListSortBy sortBy, bool ascending);
/**
* List books in the library.
@@ -336,7 +271,7 @@ class Library
* Set to 0 to cancel this filter.
* @return The list of bookIds corresponding to the query.
*/
DEPRECATED BookIdCollection listBooksIds(
DEPRECATED std::vector<std::string> listBooksIds(
int supportedListMode = ALL,
supportedListSortBy sortBy = UNSORTED,
const std::string& search = "",
@@ -344,21 +279,11 @@ class Library
const std::string& creator = "",
const std::string& publisher = "",
const std::vector<std::string>& tags = {},
size_t maxSize = 0) const;
size_t maxSize = 0);
friend class OPDSDumper;
friend class libXMLDumper;
private: // types
typedef const std::string& (Book::*BookStrPropMemFn)() const;
private: // functions
AttributeCounts getBookAttributeCounts(BookStrPropMemFn p) const;
std::vector<std::string> getBookPropValueSet(BookStrPropMemFn p) const;
BookIdCollection filterViaBookDB(const Filter& filter) const;
void updateBookDB(const Book& book);
};
}
#endif

View File

@@ -38,7 +38,7 @@ class LibXMLDumper
{
public:
LibXMLDumper() = default;
LibXMLDumper(const Library* library);
LibXMLDumper(Library* library);
~LibXMLDumper();
/**
@@ -69,10 +69,10 @@ class LibXMLDumper
*
* @param library The library to dump.
*/
void setLibrary(const Library* library) { this->library = library; }
void setLibrary(Library* library) { this->library = library; }
protected:
const kiwix::Library* library;
kiwix::Library* library;
std::string baseDir;
private:
void handleBook(Book book, pugi::xml_node root_node);

View File

@@ -13,8 +13,18 @@ headers = [
'search_renderer.h',
'server.h',
'kiwixserve.h',
'name_mapper.h',
'tools.h'
'name_mapper.h'
]
install_headers(headers, subdir:'kiwix')
install_headers(
'tools/base64.h',
'tools/networkTools.h',
'tools/otherTools.h',
'tools/pathTools.h',
'tools/regexTools.h',
'tools/stringTools.h',
subdir:'kiwix/tools'
)

View File

@@ -1,33 +0,0 @@
/*
* Copyright 2021 Veloman Yunkan <veloman.yunkan@gmail.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301, USA.
*/
#ifndef KIWIX_OPDS_CATALOG_H
#define KIWIX_OPDS_CATALOG_H
#include "library.h"
namespace kiwix
{
std::string getSearchUrl(const Filter& f);
} // namespace kiwix
#endif // KIWIX_OPDS_CATALOG_H

View File

@@ -26,6 +26,9 @@
#include <pugixml.hpp>
#include "tools/base64.h"
#include "tools/pathTools.h"
#include "tools/regexTools.h"
#include "library.h"
#include "reader.h"
@@ -48,50 +51,24 @@ class OPDSDumper
/**
* Dump the OPDS feed.
*
* @param bookIds the ids of the books to include in the feed
* @param query the query used to obtain the list of book ids
* @param id The id of the library.
* @return The OPDS feed.
*/
std::string dumpOPDSFeed(const std::vector<std::string>& bookIds, const std::string& query) const;
std::string dumpOPDSFeed(const std::vector<std::string>& bookIds);
/**
* Dump the OPDS feed.
*
* @param bookIds the ids of the books to include in the feed
* @param query the query used to obtain the list of book ids
* @param partial whether the feed should include partial or complete entries
* @return The OPDS feed.
*/
std::string dumpOPDSFeedV2(const std::vector<std::string>& bookIds, const std::string& query, bool partial) const;
/**
* Dump the OPDS complete entry document.
*
* @param bookId the id of the book
* @return The OPDS complete entry document.
*/
std::string dumpOPDSCompleteEntry(const std::string& bookId) const;
/**
* Dump the categories OPDS feed.
*
* @return The OPDS feed.
*/
std::string categoriesOPDSFeed() const;
/**
* Dump the languages OPDS feed.
*
* @return The OPDS feed.
*/
std::string languagesOPDSFeed() const;
/**
* Set the id of the library.
* Set the id of the opds stream.
*
* @param id the id to use.
*/
void setLibraryId(const std::string& id) { this->libraryId = id;}
void setId(const std::string& id) { this->id = id;}
/**
* Set the title oft the opds stream.
*
* @param title the title to use.
*/
void setTitle(const std::string& title) { this->title = title; }
/**
* Set the root location used when generating url.
@@ -100,6 +77,13 @@ class OPDSDumper
*/
void setRootLocation(const std::string& rootLocation) { this->rootLocation = rootLocation; }
/**
* Set the search url.
*
* @param searchUrl the search url to use.
*/
void setSearchDescriptionUrl(const std::string& searchDescriptionUrl) { this->searchDescriptionUrl = searchDescriptionUrl; }
/**
* Set some informations about the search results.
*
@@ -109,13 +93,27 @@ class OPDSDumper
*/
void setOpenSearchInfo(int totalResult, int startIndex, int count);
/**
* Set the library to dump.
*
* @param library The library to dump.
*/
void setLibrary(Library* library) { this->library = library; }
protected:
kiwix::Library* library;
std::string libraryId;
std::string id;
std::string title;
std::string date;
std::string rootLocation;
std::string searchDescriptionUrl;
int m_totalResults;
int m_startIndex;
int m_count;
bool m_isSearchResult = false;
private:
pugi::xml_node handleBook(Book book, pugi::xml_node root_node);
};
}

View File

@@ -29,53 +29,20 @@
#include <string>
#include "common.h"
#include "entry.h"
#include "tools/pathTools.h"
#include "tools/stringTools.h"
using namespace std;
namespace kiwix
{
/**
* The SuggestionItem is a helper class that contains the info about a single
* suggestion item.
*/
class SuggestionItem
{
// Functions
// Temporarily making the constructor public until the code move is complete
public:
// Create a sugggestion item.
explicit SuggestionItem(const std::string& title, const std::string& normalizedTitle,
const std::string& path, const std::string& snippet = "") :
title(title),
normalizedTitle(normalizedTitle),
path(path),
snippet(snippet) {}
public:
const std::string& getTitle() const { return title;}
const std::string& getNormalizedTitle() const { return normalizedTitle;}
const std::string& getPath() const { return path;}
const std::string& getSnippet() const { return snippet;}
bool hasSnippet() const { return !snippet.empty();}
// Data
private:
std::string title;
std::string normalizedTitle;
std::string path;
std::string snippet;
friend class Reader;
};
/**
* The Reader class is the class who allow to get an entry content from a zim
* file.
*/
using SuggestionsList_t = std::vector<SuggestionItem>;
using SuggestionsList_t = std::vector<std::vector<std::string>>;
class Reader
{
public:
@@ -88,18 +55,7 @@ class Reader
* unsplitted path as if the file were not splitted
* (.zim extesion).
*/
explicit Reader(const string zimFilePath);
/**
* Create a Reader to read a zim file given by the Archive.
*
* @param archive The shared pointer to the Archive object.
*/
explicit Reader(const std::shared_ptr<zim::Archive> archive);
#ifndef _WIN32
explicit Reader(int fd);
Reader(int fd, zim::offset_type offset, zim::size_type size);
#endif
Reader(const string zimFilePath);
~Reader() = default;
/**
@@ -292,6 +248,16 @@ class Reader
*/
string getScraper() const;
/**
* Get the origId of the zim file.
*
* The origId is only used in the case of patch zim file and is the Id
* of the original zim file.
*
* @return The origId of the zim file as specified in the zim metadata.
*/
string getOrigId() const;
/**
* Get the favicon of the zim file.
*
@@ -483,7 +449,7 @@ class Reader
zim::Archive* getZimArchive() const;
protected:
std::shared_ptr<zim::Archive> zimArchive;
std::unique_ptr<zim::Archive> zimArchive;
std::string zimFilePath;
SuggestionsList_t suggestions;

View File

@@ -21,7 +21,6 @@
#define KIWIX_SEARCH_RENDERER_H
#include <string>
#include <zim/search.h>
namespace kiwix
{
@@ -41,8 +40,6 @@ class SearchRenderer
* Used to generate pagination links.
*/
SearchRenderer(Searcher* searcher, NameMapper* mapper);
SearchRenderer(zim::SearchResultSet srs, NameMapper* mapper,
unsigned int start, unsigned int estimatedResultCount);
~SearchRenderer();
@@ -77,7 +74,7 @@ class SearchRenderer
protected:
std::string beautifyInteger(const unsigned int number);
zim::SearchResultSet m_srs;
Searcher* mp_searcher;
NameMapper* mp_nameMapper;
std::string searchContent;
std::string searchPattern;

View File

@@ -27,10 +27,10 @@
#include <cctype>
#include <locale>
#include <string>
#include <memory>
#include <vector>
#include <zim/search.h>
#include <vector>
#include "tools/pathTools.h"
#include "tools/stringTools.h"
using namespace std;
@@ -48,11 +48,10 @@ class Result
virtual std::string get_content() = 0;
virtual int get_wordCount() = 0;
virtual int get_size() = 0;
virtual std::string get_zimId() = 0;
virtual int get_readerIndex() = 0;
};
struct SearcherInternal;
struct SuggestionInternal;
/**
* The Searcher class is reponsible to do different kind of search using the
* fulltext index.
@@ -86,12 +85,12 @@ class Searcher
*
* @param search The search query.
* @param resultStart the start offset of the search results (used for pagination).
* @param maxResultCount Maximum results to get from start (used for pagination).
* @param resultEnd the end offset of the search results (used for pagination).
* @param verbose print some info on stdout if true.
*/
void search(const std::string& search,
unsigned int resultStart,
unsigned int maxResultCount,
unsigned int resultEnd,
const bool verbose = false);
/**
@@ -105,12 +104,12 @@ class Searcher
* @param longitude The longitude of the center point.
* @param distance The radius of the disc.
* @param resultStart the start offset of the search results (used for pagination).
* @param maxResultCount Maximum number of results to get from start (used for pagination).
* @param resultEnd the end offset of the search results (used for pagination).
* @param verbose print some info on stdout if true.
*/
void geo_search(float latitude, float longitude, float distance,
unsigned int resultStart,
unsigned int maxResultCount,
unsigned int resultEnd,
const bool verbose = false);
/**
@@ -143,29 +142,23 @@ class Searcher
*/
unsigned int getEstimatedResultCount();
/**
* Get a SearchResultSet object for current search
*/
zim::SearchResultSet getSearchResultSet();
unsigned int getResultStart() { return resultStart; }
unsigned int getMaxResultCount() { return maxResultCount; }
unsigned int getResultEnd() { return resultEnd; }
protected:
std::string beautifyInteger(const unsigned int number);
void closeIndex();
void searchInIndex(string& search,
const unsigned int resultStart,
const unsigned int maxResultCount,
const unsigned int resultEnd,
const bool verbose = false);
std::vector<Reader*> readers;
std::unique_ptr<SearcherInternal> internal;
std::unique_ptr<SuggestionInternal> suggestionInternal;
SearcherInternal* internal;
std::string searchPattern;
unsigned int estimatedResultCount;
unsigned int resultStart;
unsigned int maxResultCount;
unsigned int resultEnd;
private:
void reset();

View File

@@ -55,7 +55,6 @@ namespace kiwix
void setPort(int port) { m_port = port; }
void setNbThreads(int threads) { m_nbThreads = threads; }
void setVerbose(bool verbose) { m_verbose = verbose; }
void setIndexTemplateString(const std::string& indexTemplateString) { m_indexTemplateString = indexTemplateString; }
void setTaskbar(bool withTaskbar, bool withLibraryButton)
{ m_withTaskbar = withTaskbar; m_withLibraryButton = withLibraryButton; }
void setBlockExternalLinks(bool blockExternalLinks)
@@ -66,7 +65,6 @@ namespace kiwix
NameMapper* mp_nameMapper;
std::string m_root = "";
std::string m_addr = "";
std::string m_indexTemplateString = "";
int m_port = 80;
int m_nbThreads = 1;
bool m_verbose = false;

View File

@@ -1,198 +0,0 @@
/*
* Copyright 2021 Matthieu Gautier <mgautier@kymeria.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301, USA.
*/
#ifndef KIWIX_TOOLS_H
#define KIWIX_TOOLS_H
#include <string>
#include <vector>
namespace kiwix {
/**
* Return the current directory.
*
* @return the current directory (utf8 encoded)
*/
std::string getCurrentDirectory();
/**
* Return the data directory.
*
* The data directory is a directory where to put data (zim files, ...)
* It depends of the platform and it may be changed by user using environment variable.
*
* The resolution order is :
* - `KIWIX_DATA_DIR` env variable (if set).
* - On Windows :
* . `$APPDATA/kiwix` if $APPDATA is set
* . `$USERPROFILE/kiwix` if $USERPROFILE is set
* - Else :
* . `$XDG_DATA_HOME/kiwix`if $XDG_DATA_HOME is set
* . `$HOME/.local/share/kiwx` if $HOWE is set
* - current directory
*
* @return the path of the data directory (utf8 encoded)
*/
std::string getDataDirectory();
/** Return the path of the executable
*
* Some application may be packaged in auto extractible archive (Appimage) and the
* real executable is different of the path of the archive.
* If `realPathOnly` is true, return the path of the real executable instead of the
* archive launched by the user.
*
* @param realPathOnly If we must return the real path of the executable.
* @return the path of the executable (utf8 encoded)
*/
std::string getExecutablePath(bool realPathOnly = false);
/** Tell if the path is a relative path.
*
* This function is provided as a small helper. It is probably better to use native tools
* to manipulate paths.
*
* @param path A utf8 encoded path.
* @return true if the path is relative.
*/
bool isRelativePath(const std::string& path);
/** Append a path to another one.
*
* This function is provided as a small helper. It is probably better to use native tools
* to manipulate paths.
*
* @param basePath the base path.
* @param relativePath a path to add to the base path, must be a relative path.
* @return The concatenation of the paths, using the right separator.
*/
std::string appendToDirectory(const std::string& basePath, const std::string& relativePath);
/** Remove the last element of a path.
*
* This function is provided as a small helper. It is probably better to use native tools
* to manipulate paths.
*
* @param path a path.
* @return The parent directory (or empty string if none).
*/
std::string removeLastPathElement(const std::string& path);
/** Get the last element of a path.
*
* This function is provided as a small helper. It is probably better to use native tools
* to manipulate paths.
*
* @param path a path.
* @return The base name of the path or empty string if none (ending with a separator).
*/
std::string getLastPathElement(const std::string& path);
/** Compute the absolute path of a relative path based on another one
*
* Equivalent to appendToDirectory followed by a normalization of the path.
*
* This function is provided as a small helper. It is probably better to use native tools
* to manipulate paths.
*
* @param path the base path (if empty, current directory is taken).
* @param relativePath the relative path.
* @return a absolute path.
*/
std::string computeAbsolutePath(const std::string& path, const std::string& relativePath);
/** Compute the relative path of a path relative to another one
*
* This function is provided as a small helper. It is probably better to use native tools
* to manipulate paths.
*
* @param path the base path.
* @param absolutePath the absolute path to find the relative path for.
* @return a relative path (pointing to absolutePath, relative to path).
*/
std::string computeRelativePath(const std::string& path, const std::string& absolutePath);
/** Sleep the current thread.
*
* This function is provided as a small helper. It is probably better to use native tools.
*
* @param milliseconds The number of milliseconds to wait for.
*/
void sleep(unsigned int milliseconds);
/** Split a string
*
* This function is provided as a small helper. It is probably better to use native tools.
*
* Assuming text = "foo:;bar;baz,oups;"
*
* split(text, ":;", true, true) => ["foo", ":", ";", "bar", ";", "baz,oups", ";"]
* split(text, ":;", true, false) => ["foo", "bar", "baz,oups"] (default)
* split(text, ":;", false, true) => ["foo", ":", "", ";", "bar", ";", "baz,oups", ";", ""]
* split(text, ":;", false, false) => ["foo", "", "bar", "baz,oups", ""]
*
* @param str The string to split.
* @param delims A string of potential delimiters.
* Each charater in the string can be a individual delimiters.
* @param dropEmpty true if empty part must be dropped from the result.
* @param keepDelim true if delimiter must be included from the result.
* @return a list of part (potentially containing delimiters)
*/
std::vector<std::string> split(const std::string& str, const std::string& delims, bool dropEmpty=true, bool keepDelim = false);
/** Convert language code from iso2 code to iso3
*
* This function is provided as a small helper. It is probably better to use native tools
* to manipulate locales.
*
* @param a2code a iso2 code string.
* @return the corresponding iso3 code.
* @throw std::out_of_range if iso2 code is not known.
*/
std::string converta2toa3(const std::string& a2code);
/** Extracts content from given file.
*
* This function provides content of a file provided it's path.
*
* @param path The absolute path provided in string format.
* @return Content of corresponding file in string format.
*/
std::string getFileContent(const std::string& path);
/** checks if file exists.
*
* This function returns boolean stating if file exists or not.
*
* @param path The absolute path provided in string format.
* @return Boolean representing if file exists or not.
*/
bool fileExists(const std::string& path);
/** provides mimetype from filename.
*
* This function provides mimetype from file-name.
*
* @param filename string containing filename.
* @return mimetype from filename in string format.
*/
std::string getMimeTypeForFile(const std::string& filename);
}
#endif // KIWIX_TOOLS_H

View File

@@ -24,7 +24,6 @@
#include <vector>
#include <map>
#include <zim/zim.h>
#include <mustache.hpp>
namespace pugi {
class xml_node;
@@ -32,7 +31,9 @@ namespace pugi {
namespace kiwix
{
void sleep(unsigned int milliseconds);
std::string nodeToString(const pugi::xml_node& node);
std::string converta2toa3(const std::string& a2code);
/*
* Convert all format tag string to new format
@@ -44,11 +45,6 @@ namespace kiwix
using MimeCounterType = std::map<const std::string, zim::entry_index_type>;
MimeCounterType parseMimetypeCounter(const std::string& counterData);
std::string gen_date_str();
std::string gen_uuid(const std::string& s);
std::string render_template(const std::string& template_str, kainjow::mustache::data data);
}
#endif

View File

@@ -26,13 +26,23 @@
std::string WideToUtf8(const std::wstring& wstr);
std::wstring Utf8ToWide(const std::string& str);
#endif
bool isRelativePath(const std::string& path);
std::string computeAbsolutePath(const std::string& path, const std::string& relativePath);
std::string computeRelativePath(const std::string& path, const std::string& absolutePath);
std::string removeLastPathElement(const std::string& path);
std::string appendToDirectory(const std::string& directoryPath, const std::string& filename);
unsigned int getFileSize(const std::string& path);
std::string getFileSizeAsString(const std::string& path);
std::string getFileContent(const std::string& path);
bool fileExists(const std::string& path);
bool makeDirectory(const std::string& path);
std::string makeTmpDirectory();
bool copyFile(const std::string& sourcePath, const std::string& destPath);
std::string getLastPathElement(const std::string& path);
std::string getExecutablePath(bool realPathOnly = false);
std::string getCurrentDirectory();
std::string getDataDirectory();
bool writeTextFile(const std::string& path, const std::string& content);
std::string getMimeTypeForFile(const std::string& filename);
#endif

View File

@@ -43,6 +43,7 @@ void loadICUExternalTables();
std::string urlEncode(const std::string& value, bool encodeReserved = false);
std::string urlDecode(const std::string& value, bool component = false);
std::vector<std::string> split(const std::string& str, const std::string& delims, bool trimEmpty = true, bool keepDelim = false);
std::string join(const std::vector<std::string>& list, const std::string& sep);
std::string ucAll(const std::string& word);
@@ -69,7 +70,5 @@ T extractFromString(const std::string& str) {
}
bool startsWith(const std::string& base, const std::string& start);
std::vector<std::string> getTitleVariants(const std::string& title);
} //namespace kiwix
#endif

View File

@@ -1,4 +1,4 @@
project('libkiwix', 'cpp',
project('kiwix-lib', 'cpp',
version : '10.0.0', # Also change this in android-kiwix-lib-publisher/kiwixLibAndroid/build.gradle
license : 'GPLv3+',
default_options : ['c_std=c11', 'cpp_std=c++11', 'werror=true'])
@@ -18,7 +18,7 @@ if wrapper.contains('java')
add_languages('java')
endif
# See https://github.com/kiwix/libkiwix/issues/371
# See https://github.com/kiwix/kiwix-lib/issues/371
if ['arm', 'mips', 'm68k', 'ppc', 'sh4'].contains(target_machine.cpu_family())
extra_libs += '-latomic'
endif
@@ -34,7 +34,6 @@ pugixml_dep = dependency('pugixml', static:static_deps)
libcurl_dep = dependency('libcurl', static:static_deps)
microhttpd_dep = dependency('libmicrohttpd', static:static_deps)
zlib_dep = dependency('zlib', static:static_deps)
xapian_dep = dependency('xapian-core', static:static_deps)
if compiler.has_header('mustache.hpp')
extra_include = []
@@ -56,11 +55,7 @@ if target_machine.system() == 'windows' and static_deps
extra_cflags += '-DCURL_STATICLIB'
endif
if target_machine.system() == 'windows'
add_project_arguments('-DNOMINMAX', language: 'cpp')
endif
all_deps = [thread_dep, libicu_dep, libzim_dep, pugixml_dep, libcurl_dep, microhttpd_dep, zlib_dep, xapian_dep]
all_deps = [thread_dep, libicu_dep, libzim_dep, pugixml_dep, libcurl_dep, microhttpd_dep, zlib_dep]
inc = include_directories('include', extra_include)
@@ -79,7 +74,7 @@ subdir('static')
subdir('src')
subdir('test')
pkg_requires = ['libzim', 'icu-i18n', 'pugixml', 'libcurl', 'libmicrohttpd', 'xapian-core']
pkg_requires = ['libzim', 'icu-i18n', 'pugixml', 'libcurl', 'libmicrohttpd']
pkg_conf = configuration_data()
pkg_conf.set('prefix', get_option('prefix'))

10
prototype/README.md Normal file
View File

@@ -0,0 +1,10 @@
# kiwixprototype
Revamping the landing page
## I made a simple mockup using pages
![ROUGH SKETCH landingpage](https://user-images.githubusercontent.com/41134301/105805694-969e8080-5fc8-11eb-8ce4-dc85bcfa7a55.png)
![ROUGH SKETCH footer section](https://user-images.githubusercontent.com/41134301/105805730-ab7b1400-5fc8-11eb-9d47-b3fd7abc7cd4.png)
## and here's the final version
![kiwix1](https://user-images.githubusercontent.com/41134301/105805990-23e1d500-5fc9-11eb-81be-df0ff3210071.png)
![kiwix2](https://user-images.githubusercontent.com/41134301/105806018-2fcd9700-5fc9-11eb-911f-0552fb4f0b62.png)

View File

@@ -0,0 +1,132 @@
.uls-trigger {
background: url(../images/language.svg ) no-repeat left center;
padding-left: 24px;
}
.uls-menu {
position: absolute;
z-index: 1000;
display: none;
margin-top: 1px;
background-color: #fff;
border: 1px solid #ccc;
border-color: rgba(0, 0, 0, 0.2);
-webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-webkit-background-clip: padding-box;
-moz-background-clip: padding;
background-clip: padding-box;
}
.uls-wide {
min-width: 715px;
width: 45%;
}
.uls-medium {
min-width: 360px;
width: 30%;
}
/* Override the grid */
.uls-medium.grid .row {
min-width: 300px;
}
.uls-narrow {
min-width: 180px;
width: 20%;
}
/* Override the grid */
.uls-narrow.grid .row {
min-width: 150px;
}
.uls-search {
background-color: #fff;
padding: 5px 16px;
border-bottom: 1px solid #ddd;
}
.grid .uls-search {
padding-left: 0;
}
/* Make space for magnifying class on the front */
.uls-search-wrapper {
position: relative;
padding-left: 44px;
margin-right: 5px;
height: 32px;
}
.uls-search-label {
background: url(../images/search.svg ) no-repeat center center;
background-size: 20px;
height: 32px;
width: 44px;
display: block;
position: absolute;
left: 0;
opacity: 0.5;
}
.uls-search-input-wrapper {
position: relative;
}
/* There are two input boxes. This class applies to both of them */
.uls-filterinput {
font-size: 16px;
height: 32px;
width: 100%;
/* For the custom clear (X) icon */
padding: 6px 25px 6px 0;
outline: 0;
border: 0;
display: block;
position: absolute;
top: 0;
left: 0;
}
/* This is the actual input */
.uls-languagefilter {
background-color: transparent;
border: 0;
color: #222;
}
/* This is the shadow input box showing completion suggestions */
.uls-filtersuggestion {
background-color: #fff;
color: #777;
}
.uls-languagefilter-clear {
background: url(../images/close.svg ) no-repeat left center;
background-size: 15px;
cursor: pointer;
height: 15px;
width: 15px;
opacity: 0.7;
/* Vertical margins: (32 - 15) / 2 */
margin: 8.5px 5px;
position: absolute;
right: 0;
/* Make it appear above the input boxes */
z-index: 1;
}
div.navbar {
padding: 20px;
}
span.uls-trigger {
float: right;
cursor: pointer;
font-weight: bold;
}

View File

@@ -0,0 +1,307 @@
/* Generated using Foundation http://foundation.zurb.com/docs/grid.php */
/* Global Reset & Standards ---------------------- */
.grid * {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
/* Misc ---------------------- */
.grid .left {
float: left;
}
.grid .right {
float: right;
}
.grid .text-left {
text-align: left;
}
.grid .text-right {
text-align: right;
}
.grid .text-center {
text-align: center;
}
.grid .hide {
display: none;
}
.grid .highlight {
background: #ff9;
}
/* The Grid ---------------------- */
.grid .row {
width: 100%;
max-width: none;
min-width: 600px;
margin: 0 auto;
}
.grid .row .row {
width: auto;
max-width: none;
min-width: 0;
margin: 0 -5px;
}
.grid .column,
.grid .columns {
float: left;
min-height: 1px;
padding: 0 5px;
position: relative;
}
.grid .row.collapse .column,
.grid .row.collapse .columns {
padding: 0;
}
.grid .row .row.collapse {
margin: 0;
}
.grid .column.centered,
.grid .columns.centered {
float: none;
margin: 0 auto;
}
.grid .row .one {
width: 8.333%;
}
.grid .row .two {
width: 16.667%;
}
.grid .row .three {
width: 25%;
}
.grid .row .four {
width: 33.333%;
}
.grid .row .five {
width: 41.667%;
}
.grid .row .six {
width: 50%;
}
.grid .row .seven {
width: 58.333%;
}
.grid .row .eight {
width: 66.667%;
}
.grid .row .nine {
width: 75%;
}
.grid .row .ten {
width: 83.333%;
}
.grid .row .eleven {
width: 91.667%;
}
.grid .row .twelve {
width: 100%;
}
.grid .row .offset-by-one {
margin-left: 8.333%;
}
.grid .row .offset-by-two {
margin-left: 16.667%;
}
.grid .row .offset-by-three {
margin-left: 25%;
}
.grid .row .offset-by-four {
margin-left: 33.333%;
}
.grid .row .offset-by-five {
margin-left: 41.667%;
}
.grid .row .offset-by-six {
margin-left: 50%;
}
.grid .row .offset-by-seven {
margin-left: 58.333%;
}
.grid .row .offset-by-eight {
margin-left: 66.667%;
}
.grid .row .offset-by-nine {
margin-left: 75%;
}
.grid .row .offset-by-ten {
margin-left: 83.333%;
}
.grid .push-two {
left: 16.667%;
}
.grid .pull-two {
right: 16.667%;
}
.grid .push-three {
left: 25%;
}
.grid .pull-three {
right: 25%;
}
.grid .push-four {
left: 33.333%;
}
.grid .pull-four {
right: 33.333%;
}
.grid .push-five {
left: 41.667%;
}
.grid .pull-five {
right: 41.667%;
}
.grid .push-six {
left: 50%;
}
.grid .pull-six {
right: 50%;
}
.grid .push-seven {
left: 58.333%;
}
.grid .pull-seven {
right: 58.333%;
}
.grid .push-eight {
left: 66.667%;
}
.grid .pull-eight {
right: 66.667%;
}
.grid .push-nine {
left: 75%;
}
.grid .pull-nine {
right: 75%;
}
.grid .push-ten {
left: 83.333%;
}
.grid .pull-ten {
right: 83.333%;
}
.grid .row:before,
.grid .row:after {
content: '';
display: table;
}
.grid .row:after {
clear: both;
}
/* Block Grids ---------------------- */
/* These are 2-up, 3-up, 4-up and 5-up ULs, suited
for repeating blocks of content. Add 'mobile' to
them to switch them just like the layout grid
(one item per line) on phones
For IE7/8 compatibility block-grid items need to be
the same height. You can optionally uncomment the
lines below to support arbitrary height, but know
that IE7/8 do not support :nth-child.
-------------------------------------------------- */
.grid .block-grid {
display: block;
overflow: hidden;
padding: 0;
}
.grid .block-grid > li {
display: block;
height: auto;
float: left;
}
.grid .block-grid.two-up {
margin: 0 -15px;
}
.grid .block-grid.two-up > li {
width: 50%;
padding: 0 15px 15px;
}
/* .block-grid.two-up>li:nth-child(2n+1) {clear: left;} */
.grid .block-grid.three-up {
margin: 0 -12px;
}
.grid .block-grid.three-up > li {
width: 33.33%;
padding: 0 12px 12px;
}
/* .block-grid.three-up>li:nth-child(3n+1) {clear: left;} */
.grid .block-grid.four-up {
margin: 0 -10px;
}
.grid .block-grid.four-up > li {
width: 25%;
padding: 0 10px 10px;
}
/* .block-grid.four-up>li:nth-child(4n+1) {clear: left;} */
.grid .block-grid.five-up {
margin: 0 -8px;
}
.grid .block-grid.five-up > li {
width: 20%;
padding: 0 8px 8px;
}

View File

@@ -0,0 +1,140 @@
/*
* Language Category Display (LCD) consists of multiple sections:
* - one to display when there are no search results (which might display suggested languages)
* - one for each region of the world, plus regions for world languages and suggested languages
* The regions consist of one or more rows (blocks) which consist of one-to-four columns. Each
* column is an ul element, and contains up to 8 li elements, each containing a link.
*/
.uls-lcd {
background-color: #fcfcfc;
height: 20em;
/* Work around Chrome bug where it places scrollbar on the left in
* in RTL mode but actually reserves the place on the right side */
overflow-x: hidden;
overflow-y: auto;
width: auto;
padding: 0 16px;
}
.uls-lcd-region-title {
color: #555;
font-size: 14px;
padding-left: 28px;
}
.uls-lcd--no-quicklist [ data-region='all' ] .uls-lcd-region-title {
display: none;
}
.uls-lcd-region-section {
margin-top: 10px;
}
/*
* We need to have this as a grid row to push rest of the content below it, but resetting
* padding and margin so that calculating them for children is easier.
*/
.grid .uls-language-block.row {
padding: 0;
margin: 0;
}
.uls-language-block > ul {
/*
* We don't want any visible bullets in this list. Not by default anyway.
* Using very unspecific selector here to allow other classes to override.
* Bug because overflow: hidden is incompatible with bullets, also render
* the bullets inside the list in case there should be any.
*/
list-style: none none;
}
/*
* Each block should have 16px padding on both sides. But because we already gave
* 16px for the whole menu, we need to remove it for first and last items the blocks.
*/
.grid .uls-language-block > ul {
margin: 0 0 20px 0;
padding: 0 16px;
}
.grid .uls-language-block > ul:first-child {
padding-left: 0;
}
.grid .uls-language-block > ul:last-child {
padding-right: 0;
}
.uls-language-block > ul > li {
cursor: pointer;
margin-left: 20px;
padding: 8px;
/*
* The directionality (ltr/rtl) for each list item is set dynamically
* as HTML attributes in JavaScript. Setting directionality also applies
* alignment, but a list with mixed alignment is hard to read.
* All items are therefore explicitly aligned to the left, including names
* of right-to-left languages in left-to-right environment and vice versa.
* As long as the directionality of the item is set correctly, the text
* is readable.
*/
text-align: left;
}
.uls-language-block > ul > li:hover {
background-color: #eaeff7;
}
.uls-language-block a {
cursor: pointer;
text-decoration: none;
color: #36c;
font-size: 14px;
display: inline-block;
width: 100%;
overflow-x: hidden;
/*
* Some languages have long names for various reasons and we still want
* them to appear on one line.
* To make it work correctly, the directionality must be set correctly
* on the item level.
*/
text-overflow: ellipsis;
white-space: nowrap;
vertical-align: middle;
}
.uls-no-results-view {
display: none;
}
.uls-lcd.uls-no-results > .uls-lcd-region-section {
display: none;
}
.uls-lcd.uls-no-results > .uls-no-results-view {
display: block;
}
.uls-no-results-found-title {
font-size: 16px;
padding: 0 16px 0 28px;
margin: 20px 0;
border-bottom: 0;
color: #54595d;
}
.uls-no-found-more {
border-top: 1px solid #eaecf0;
color: #54595d;
padding: 12px 16px 12px 44px;
font-size: 0.9em;
width: 100%;
margin-top: 1.6em;
line-height: 1.6em;
position: absolute;
bottom: 0;
left: 0;
}

View File

@@ -0,0 +1,307 @@
/* stylelint-disable declaration-no-important */
@media only screen and ( max-width: 767px ) {
.uls-mobile.uls-menu {
width: 95%;
left: 2.5%;
}
.uls-mobile .uls-language-list {
-webkit-overflow-scrolling: touch;
}
.uls-mobile .uls-language-block {
padding-left: 15px !important;
}
.uls-mobile .uls-language-block ul {
min-height: 14em;
}
.uls-mobile .uls-language-block a {
font-size: 16px;
line-height: 1.7em;
}
.uls-mobile .row {
width: auto;
min-width: 0;
margin-left: 0;
margin-right: 0;
}
.uls-mobile .column,
.uls-mobile .columns {
width: auto !important;
float: none;
}
.uls-mobile .column:last-child,
.uls-mobile .columns:last-child {
float: none;
}
.uls-mobile [ class*='column' ] + [ class*='column' ]:last-child {
float: none;
}
.uls-mobile .column:before,
.uls-mobile .uls-mobile .columns:before,
.uls-mobile .column:after,
.columns:after {
content: '';
display: table;
}
.uls-mobile .column:after,
.uls-mobile .columns:after {
clear: both;
}
.uls-mobile .offset-by-one,
.uls-mobile .offset-by-two,
.uls-mobile .offset-by-three,
.uls-mobile .offset-by-four,
.uls-mobile .offset-by-five,
.uls-mobile .offset-by-six,
.uls-mobile .offset-by-seven,
.uls-mobile .offset-by-eight,
.uls-mobile .offset-by-nine,
.uls-mobile .offset-by-ten {
margin-left: 0 !important;
}
.uls-mobile .push-two,
.uls-mobile .push-three,
.uls-mobile .push-four,
.uls-mobile .push-five,
.uls-mobile .push-six,
.uls-mobile .push-seven,
.uls-mobile .push-eight,
.uls-mobile .push-nine,
.uls-mobile .push-ten {
left: auto;
}
.uls-mobile .pull-two,
.uls-mobile .pull-three,
.uls-mobile .pull-four,
.uls-mobile .pull-five,
.uls-mobile .pull-six,
.uls-mobile .pull-seven,
.uls-mobile .pull-eight,
.uls-mobile .pull-nine,
.uls-mobile .pull-ten {
right: auto;
}
/* Mobile 4-column Grid */
.uls-mobile .row .mobile-one {
width: 25% !important;
float: left;
padding: 0 4px;
}
.uls-mobile .row .mobile-one:last-child {
float: right;
}
.uls-mobile .row.collapse .mobile-one {
padding: 0;
}
.uls-mobile .row .mobile-two {
width: 50% !important;
float: left;
padding: 0 4px;
}
.uls-mobile .row .mobile-two:last-child {
float: right;
}
.uls-mobile .row.collapse .mobile-two {
padding: 0;
}
.uls-mobile .row .mobile-three {
width: 75% !important;
float: left;
padding: 0 4px;
}
.uls-mobile .row .mobile-three:last-child {
float: right;
}
.uls-mobile .row.collapse .mobile-three {
padding: 0;
}
.uls-mobile .row .mobile-four {
width: 100% !important;
float: left;
padding: 0 4px;
}
.uls-mobile .row .mobile-four:last-child {
float: right;
}
.uls-mobile .row.collapse .mobile-four {
padding: 0;
}
.uls-mobile .push-one-mobile {
left: 25%;
}
.uls-mobile .pull-one-mobile {
right: 25%;
}
.uls-mobile .push-two-mobile {
left: 50%;
}
.uls-mobile .pull-two-mobile {
right: 50%;
}
.uls-mobile .push-three-mobile {
left: 75%;
}
.uls-mobile .pull-three-mobile {
right: 75%;
}
}
/* Visibility Classes ---------------------- */
/* Standard (large) display targeting */
.uls-mobile .show-for-small,
.uls-mobile .show-for-medium,
.uls-mobile .show-for-medium-down,
.uls-mobile .hide-for-large,
.uls-mobile .hide-for-large-up,
.uls-mobile .show-for-xlarge {
display: none !important;
}
.uls-mobile .hide-for-xlarge,
.uls-mobile .show-for-large,
.uls-mobile .show-for-large-up,
.uls-mobile .hide-for-small,
.uls-mobile .hide-for-medium,
.uls-mobile .hide-for-medium-down {
display: block !important;
}
/* Very large display targeting */
@media only screen and ( min-width: 1441px ) {
.uls-mobile .hide-for-small,
.uls-mobile .hide-for-medium,
.uls-mobile .hide-for-medium-down,
.hide-for-large,
.show-for-large-up,
.show-for-xlarge {
display: block !important;
}
.show-for-small,
.uls-mobile .show-for-medium,
.uls-mobile .show-for-medium-down,
.uls-mobile .show-for-large,
.uls-mobile .hide-for-large-up,
.uls-mobile .hide-for-xlarge {
display: none !important;
}
}
/* Medium display targeting */
@media only screen and ( max-width: 1279px ) and ( min-width: 768px ) {
.uls-mobile .hide-for-small,
.uls-mobile .show-for-medium,
.uls-mobile .show-for-medium-down,
.uls-mobile .hide-for-large,
.uls-mobile .hide-for-large-up,
.uls-mobile .hide-for-xlarge {
display: block !important;
}
.uls-mobile .show-for-small,
.uls-mobile .hide-for-medium,
.uls-mobile .hide-for-medium-down,
.uls-mobile .show-for-large,
.uls-mobile .show-for-large-up,
.uls-mobile .show-for-xlarge {
display: none !important;
}
}
/* Small display targeting */
@media only screen and ( max-width: 767px ) {
.uls-mobile .show-for-small,
.uls-mobile .hide-for-medium,
.uls-mobile .show-for-medium-down,
.uls-mobile .hide-for-large,
.uls-mobile .hide-for-large-up,
.uls-mobile .hide-for-xlarge {
display: block !important;
}
.uls-mobile .hide-for-small,
.uls-mobile .show-for-medium,
.uls-mobile .hide-for-medium-down,
.uls-mobile .show-for-large,
.uls-mobile .show-for-large-up,
.uls-mobile .show-for-xlarge {
display: none !important;
}
}
/* Orientation targeting */
.uls-mobile .show-for-landscape,
.uls-mobile .hide-for-portrait {
display: block !important;
}
.uls-mobile .hide-for-landscape,
.uls-mobile .show-for-portrait {
display: none !important;
}
@media screen and ( orientation: landscape ) {
.uls-mobile .show-for-landscape,
.uls-mobile .hide-for-portrait {
display: block !important;
}
.uls-mobile .hide-for-landscape,
.uls-mobile .show-for-portrait {
display: none !important;
}
}
@media screen and ( orientation: portrait ) {
.uls-mobile .show-for-portrait,
.uls-mobile .hide-for-landscape {
display: block !important;
}
.uls-mobile .hide-for-portrait,
.uls-mobile .show-for-landscape {
display: none !important;
}
}
/* Touch-enabled device targeting */
.uls-mobile .show-for-touch,
.uls-mobile .touch .hide-for-touch {
display: none !important;
}
/* stylelint-disable-next-line no-descending-specificity */
.uls-mobile .hide-for-touch,
.uls-mobile .touch .show-for-touch {
display: block !important;
}

505
prototype/css/style.css Normal file
View File

@@ -0,0 +1,505 @@
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
#main {
width: 100%;
height: 100%;
background: linear-gradient(180deg, #ff9933 0%, rgba(64, 38, 13, 1) 73%);
background-size: cover;
}
nav {
width: 100%;
height: 80px;
line-height: 80px;
}
nav ul {
float: left;
margin-right: 30px;
}
/* changes at kiwix logo */
nav .kiwix-logo {
float: left;
height: 60px;
width: 150px;
margin: 10px;
}
nav ul li {
list-style-type: none;
display: inline-block;
transition: 0.8s all;
}
nav ul li:hover {
background-color: #f39d1a;
}
nav ul li a {
text-decoration: none;
color: #fff;
padding: 30px;
}
/* code for search box */
#content {
position: absolute;
top: 50px;
right: 50px;
transform: translate(0%, -50%);
}
#content.on {
-webkit-animation-name: in-out;
animation-name: in-out;
-webkit-animation-duration: 0.7s;
animation-duration: 0.7s;
-webkit-animation-timing-function: linear;
animation-timing-function: linear;
-webkit-animation-iteration-count: 1;
animation-iteration-count: 1;
}
input {
box-sizing: border-box;
width: 30px;
height: 30px;
border: 2px solid #ffffff;
border-radius: 50%;
background: none;
color: #fff;
font-size: 16px;
font-weight: 400;
font-family: Roboto;
outline: 0;
-webkit-transition: width 0.4s ease-in-out, border-radius 0.8s ease-in-out,
padding 0.2s;
transition: width 0.4s ease-in-out, border-radius 0.8s ease-in-out,
padding 0.2s;
-webkit-transition-delay: 0.4s;
transition-delay: 0.4s;
-webkit-transform: translate(-100%, -50%);
-ms-transform: translate(-100%, -50%);
transform: translate(-100%, -50%);
}
.search {
background: none;
position: absolute;
top: 24px;
left: 0;
height: 50px;
width: 50px;
padding: 0;
border-radius: 100%;
outline: 0;
border: 0;
color: inherit;
cursor: pointer;
-webkit-transition: 0.2s ease-in-out;
transition: 0.2s ease-in-out;
-webkit-transform: translate(-100%, -50%);
-ms-transform: translate(-100%, -50%);
transform: translate(-100%, -50%);
}
.search:before {
content: "";
position: absolute;
width: 20px;
height: 4px;
background-color: #fff;
-webkit-transform: rotate(45deg);
-ms-transform: rotate(45deg);
transform: rotate(45deg);
margin-top: 17px;
margin-left: 17px;
-webkit-transition: 0.2s ease-in-out;
transition: 0.2s ease-in-out;
}
.close {
-webkit-transition: 0.4s ease-in-out;
transition: 0.4s ease-in-out;
-webkit-transition-delay: 0.4s;
transition-delay: 0.4s;
}
.close:before {
content: "";
position: absolute;
width: 20px;
height: 3px;
margin-top: -1px;
margin-left: -2px;
background-color: #fff;
-webkit-transform: rotate(45deg);
-ms-transform: rotate(45deg);
transform: rotate(45deg);
-webkit-transition: 0.2s ease-in-out;
transition: 0.2s ease-in-out;
}
.close:after {
content: "";
position: absolute;
width: 20px;
height: 3px;
background-color: #fff;
margin-top: -1px;
margin-left: -2px;
cursor: pointer;
-webkit-transform: rotate(-45deg);
-ms-transform: rotate(-45deg);
transform: rotate(-45deg);
}
.square {
box-sizing: border-box;
padding: 0 40px 0 10px;
width: 300px;
height: 30px;
border: 2px solid #ffffff;
border-radius: 100vh;
background: none;
color: #fff;
font-family: Roboto;
font-size: 16px;
font-weight: 400;
outline: 0;
-webkit-transition: width 0.4s ease-in-out, border-radius 0.4s ease-in-out,
padding 0.2s;
transition: width 0.4s ease-in-out, border-radius 0.4s ease-in-out,
padding 0.2s;
-webkit-transition-delay: 0.4s, 0s, 0.4s;
transition-delay: 0.4s, 0s, 0.4s;
-webkit-transform: translate(-100%, -50%);
-ms-transform: translate(-100%, -50%);
transform: translate(-100%, -50%);
}
/* language selector */
.ui-dropdown-list {
position: relative;
}
p.ui-dropdown-list-trigger {
margin-top: 0;
}
.ui-dropdown-list-trigger strong {
position: relative;
z-index: 999;
}
.ui-dropdown-list-trigger strong:after {
display: block;
position: absolute;
content: '';
right: 5px;
top: 35px;
width: 0;
height: 0;
border-left: 5px solid transparent;
border-right: 5px solid transparent;
border-top: 5px solid #ffffff;
}
.ui-dropdown-list-trigger strong,
.ui-dropdown-list ul a {
display: block;
width: 80px;
cursor: pointer;
padding: 30px 8px;
font-size: 13px;
line-height: 13px;
color: #ffffff;
font-weight: normal;
}
#lang-switcher strong {
float: right;
}
/* information contents */
.boxes {
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: space-around;
padding: 60px;
}
.box {
display: flex;
flex-direction: column;
text-align: center;
width: 350px;
height: auto;
background: url('./images/bg-pattern-card.svg') no-repeat top white;
border-radius: 20px;
margin: auto;
margin-top: 10%;
box-shadow: 10px 10px 100px rgba(0, 0, 0, 0.363);
}
.photo {
background-color: transparent;
}
.photo img {
margin-top: -7%;
border-radius: 50%;
}
.gras {
font-weight: 700;
}
.grey {
color: hsl(0, 0%, 59%);
font-weight: 400;
}
.content_info {
justify-content: center;
padding-top: 10px;
padding-bottom: 10px;
border-bottom: 1px solid hsl(0, 0%, 70%);
}
.content_info .gras {
padding-right: 5px;
}
.content_stats {
display: flex;
flex-direction: row;
justify-content: space-evenly;
align-content: center;
padding-top: 30px;
padding-bottom: 30px;
padding-left: 0px;
padding-right: 15px;
padding: 10px 0 10px 0;
}
p {
padding-bottom: 5px;
text-align: center;
margin: 0;
}
@media screen and (max-width: 375px) {
html {
width: 375px;
}
.boxes {
padding: 0;
}
.box {
margin-top: 40%;
}
}
.pagination ul {
width: 100%;
display: flex;
align-items: center;
justify-content: center;
flex-wrap: wrap;
padding: 8px;
border-radius: 50px;
box-shadow: 0px 10px 15px rgba(0, 0, 0, 0.1);
}
.pagination ul li {
color: chocolate;
list-style: none;
line-height: 45px;
text-align: center;
font-size: 18px;
font-weight: 500;
cursor: pointer;
user-select: none;
transition: all 0.3s ease;
}
.pagination ul li.numb {
list-style: none;
height: 45px;
width: 45px;
margin: 0 3px;
line-height: 45px;
border-radius: 50%;
}
.pagination ul li.numb.first {
margin: 0px 3px 0 -5px;
}
.pagination ul li.numb.last {
margin: 0px -5px 0 3px;
}
.pagination ul li.dots {
font-size: 22px;
cursor: default;
}
.pagination ul li.btn {
padding: 0 20px;
border-radius: 50px;
}
.pagination li.active,
.pagination ul li.numb:hover,
.pagination ul li:first-child:hover,
.pagination ul li:last-child:hover {
color: #fff;
background: #ff9933;
}
ul {
list-style-type: none;
}
a {
text-decoration: none;
color: white;
transition: color 0.5s ease;
}
a:hover {
color: wheat;
}
.spacing {
height: 400px;
}
.design {
width: 100%;
height: 100px;
display: flex;
justify-content: space-between;
align-items: center;
background: white;
color: #fff;
padding: 0 4rem;
}
.footer {
width: 100%;
height: auto;
/* this is how change the color */
background: linear-gradient(180deg, #40260d 73%, #000);
}
.container {
max-width: 85%;
margin: 0 auto;
padding: 2rem 0;
}
.footer-group__container {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
}
.footer-group {
align-self: stretch;
padding: 0.4rem 1rem;
flex: 1 0 280px;
}
.footer-group__header {
color: #ff9933;
text-transform: uppercase;
font-size: 1.2rem;
letter-spacing: -1px;
word-spacing: 0.2rem;
font-weight: 500;
margin-bottom: 1.2rem;
}
.footer-group__item {
font-size: 0.85rem;
font-weight: 400;
margin-bottom: 0.6rem;
text-transform: capitalize;
}
.footer-group__lead {
/* font-weight:600; */
width: 100%;
}
.visually-hidden {
display: none;
/* TODO proper implementation */
}
.footer-footnote,
.footnote__items {
display: flex;
font-size: 0.8rem;
}
.footnote__copyright,
.footnote__items {
margin: 1rem 0;
}
.footer-footnote {
flex-wrap: wrap;
font-weight: 600;
padding: 0.25rem 1rem;
color: white;
background: #915e35;
}
.footnote__copyright {
flex: 2 0 50%;
}
@media (max-width: 998px) {
.footnote__copyright {
flex: 1 0 50%;
}
}
.footnote__items {
flex: 1 0 50%;
justify-content: flex-end;
}
.footnote__item {
margin: 0 1rem;
}
@media (max-width: 580px) {
.footer-footnote {
flex-direction: column-reverse;
}
}

View File

@@ -0,0 +1,20 @@
{
"@metadata": {
"authors": [
"Csisc"
]
},
"uls-region-WW": "Ģālemīye",
"uls-region-SP": "Spēsyāl",
"uls-region-AM": "Emerīke",
"uls-region-AF": "Ifrīqye",
"uls-region-EU": "Ūrūppe",
"uls-region-AS": "Ēsye",
"uls-region-ME": "Ic-carq il-awsaţ",
"uls-region-PA": "Il-Mūḩīţ il-hēdī",
"uls-no-results-found": "Mē fammēc ḩattā rēzülta",
"uls-common-languages": "Lūğāt muntacra",
"uls-no-results-suggestion-title": "Tnejjim tkūn muhtam b-:",
"uls-search-help": "Tnejjim tlawwij ḩasb ism il-lūğa, ism il-kod, il-kod ISO mtēģ il-lūğa w illē ḩasb ij-jīhe",
"uls-search-placeholder": "Lawwij ģlā il-lūğa"
}

26
prototype/i18n/af.json Normal file
View File

@@ -0,0 +1,26 @@
{
"@metadata": {
"authors": [
"Amire80",
"Biggs ZA",
"Fwolff",
"Joris Darlington Quarshie",
"Naudefj",
"Puvircho"
]
},
"uls-region-WW": "Wêreldwyd",
"uls-region-SP": "Spesiaal",
"uls-region-AM": "Amerika",
"uls-region-AF": "Afrika",
"uls-region-EU": "Europa",
"uls-region-AS": "Asië",
"uls-region-ME": "Midde-Ooste",
"uls-region-PA": "Stille Oseaan",
"uls-region-all": "Alle tale",
"uls-no-results-found": "Geen resultate gevind nie",
"uls-common-languages": "Voorgestelde tale",
"uls-no-results-suggestion-title": "U mag geïnteresseerd wees in:",
"uls-search-help": "Soek gerus volgens taalnaam, skrifnaam of ISO-kode, of blaai volgens streek.",
"uls-search-placeholder": "Soek na n taal"
}

22
prototype/i18n/am.json Normal file
View File

@@ -0,0 +1,22 @@
{
"@metadata": {
"authors": [
"Andemta",
"Elfalem"
]
},
"uls-region-WW": "ዓለም አቀፍ",
"uls-region-SP": "ልዩ",
"uls-region-AM": "አሜሪካ",
"uls-region-AF": "አፍሪካ",
"uls-region-EU": "አውሮጳ",
"uls-region-AS": "እስያ",
"uls-region-ME": "መካከለኛው ምሥራቅ",
"uls-region-PA": "ፓሲፊክ",
"uls-region-all": "ሁሉ ቋንቋ",
"uls-no-results-found": "ውጤት አልተገኘም",
"uls-common-languages": "ተመራጭ ቋንቋዎች",
"uls-no-results-suggestion-title": "ይህ ሊመስጦት ይችላል:",
"uls-search-help": "በቋንቋ ስም፣ የአፃፃፍ ሥርዓት ስም፣ አይ.ኤስ.ኦ. (ISO) ኮድ መፈለግ ወይም በአካባቢ መቃኘት ይቻላል::",
"uls-search-placeholder": "ቋንቋ ለመፈለግ"
}

21
prototype/i18n/anp.json Normal file
View File

@@ -0,0 +1,21 @@
{
"@metadata": {
"authors": [
"Angpradesh"
]
},
"uls-region-WW": "वैश्विक",
"uls-region-SP": "खास",
"uls-region-AM": "अमरीका",
"uls-region-AF": "अफ़्रीका",
"uls-region-EU": "यूरोप",
"uls-region-AS": "एशिया",
"uls-region-ME": "मध्य पूर्व",
"uls-region-PA": "प्रशांत",
"uls-region-all": "सब्भे भाषा",
"uls-no-results-found": "कोय परिणाम नै मिललै",
"uls-common-languages": "आम भाषा सिनी",
"uls-no-results-suggestion-title": "आपन॑ लेली संभवतः उपयोगी:",
"uls-search-help": "आपन॑ भाषा केरऽ नाम , स्क्रिप्ट केरऽ नाम , भाषा केरऽ आईएसओ कोड सं॑ खोज॑ सकै छहो या आपन॑ क्षेत्र के नाम सं॑ ब्राउज़ कर॑ सकै छहऽ.",
"uls-search-placeholder": "भाषा लेली खोजऽ"
}

26
prototype/i18n/ar.json Normal file
View File

@@ -0,0 +1,26 @@
{
"@metadata": {
"authors": [
"Amire80",
"DRIHEM",
"Hhaboh162002",
"Meno25",
"ترجمان05",
"ديفيد"
]
},
"uls-region-WW": "في جميع أنحاء العالم",
"uls-region-SP": "الخاصة",
"uls-region-AM": "أمريكا",
"uls-region-AF": "أفريقيا",
"uls-region-EU": "أوروبا",
"uls-region-AS": "آسيا",
"uls-region-ME": "الشرق الأوسط",
"uls-region-PA": "المحيط الهادئ",
"uls-region-all": "جميع اللغات",
"uls-no-results-found": "لم يتم العثور على نتائج",
"uls-common-languages": "اللغات المقترحة",
"uls-no-results-suggestion-title": "قد تكون مهتما بما يلي:",
"uls-search-help": "يمكنك البحث مستخدما اسم اللغة، أو اسم السكريبت، أو رمز اللغة القياسي أو يمكنك التصفح حسب المنطقة.",
"uls-search-placeholder": "بحث عن لغة"
}

22
prototype/i18n/arz.json Normal file
View File

@@ -0,0 +1,22 @@
{
"@metadata": {
"authors": [
"Meno25",
"UpDownUp"
]
},
"uls-region-WW": "لغات عالمية",
"uls-region-SP": "لغات خاصّة",
"uls-region-AM": "أمريكا",
"uls-region-AF": "إفريقيا",
"uls-region-EU": "أوروپّا",
"uls-region-AS": "آسيا",
"uls-region-ME": "الشرق الأوسط",
"uls-region-PA": "المحيط الهادي",
"uls-region-all": "كل اللغات",
"uls-no-results-found": "مفيش أي نتايج",
"uls-common-languages": "اللغات المقترحة",
"uls-no-results-suggestion-title": "يمكن تكون مهتم بـ:",
"uls-search-help": "ممكن تدور حسب اسم اللغه، اسم نظام الكتابه\\الخط، كود الـ ISO بتاع اللغه أو ممكن تتصفح حسب المنطقه.",
"uls-search-placeholder": "دوّر على لغة"
}

23
prototype/i18n/as.json Normal file
View File

@@ -0,0 +1,23 @@
{
"@metadata": {
"authors": [
"Dibya Dutta",
"Mohsin Ali",
"Nilamdyuti"
]
},
"uls-region-WW": "বিশ্বব্যাপী",
"uls-region-SP": "বিশেষ",
"uls-region-AM": "আমেৰিকা",
"uls-region-AF": "আফ্ৰিকা",
"uls-region-EU": "ইউৰোপ",
"uls-region-AS": "এছিয়া",
"uls-region-ME": "মধ্যপ্রাচ্য",
"uls-region-PA": "পেচিফিক",
"uls-region-all": "সকলো ভাষা",
"uls-no-results-found": "কোনো ফলাফল পোৱা নগ'ল",
"uls-common-languages": "পৰামৰ্শমূলক ভাষাসমূহ",
"uls-no-results-suggestion-title": "আপুনি আগ্ৰহী হ'ব পাৰে:",
"uls-search-help": "আপুনি ভাষাৰ নাম, লিপিৰ নাম, ভাষাৰ ISO ক'ড সাপেক্ষে সন্ধান কৰিব পাৰে অথবা অঞ্চল সাপেক্ষে ব্ৰাউজ কৰিব পাৰে।",
"uls-search-placeholder": "ভাষা এটাৰ সন্ধান কৰক"
}

21
prototype/i18n/ast.json Normal file
View File

@@ -0,0 +1,21 @@
{
"@metadata": {
"authors": [
"Xuacu"
]
},
"uls-region-WW": "Mundial",
"uls-region-SP": "Especiales",
"uls-region-AM": "América",
"uls-region-AF": "África",
"uls-region-EU": "Europa",
"uls-region-AS": "Asia",
"uls-region-ME": "Oriente mediu",
"uls-region-PA": "Pacíficu",
"uls-region-all": "Toles llingües",
"uls-no-results-found": "Nun s'alcontraron resultaos",
"uls-common-languages": "Llingües suxeríes",
"uls-no-results-suggestion-title": "Seique t'interese:",
"uls-search-help": "Pues buscar pol nome de la llingua, nome del alfabetu, códigu ISO de la llingua o ver un área xeográfica.",
"uls-search-placeholder": "Buscar una llingua"
}

20
prototype/i18n/av.json Normal file
View File

@@ -0,0 +1,20 @@
{
"@metadata": {
"authors": [
"Gazimagomedov"
]
},
"uls-region-WW": "ГӀаламиял",
"uls-region-SP": "Хассал",
"uls-region-AM": "Америка",
"uls-region-AF": "Африка",
"uls-region-EU": "Европа",
"uls-region-AS": "Азия",
"uls-region-ME": "АскӀосаб Магъриб",
"uls-region-PA": "Океания",
"uls-no-results-found": "Щибниги жо батинчӀо",
"uls-common-languages": "Жалго жедедаго рищарал мацӀал",
"uls-no-results-suggestion-title": "Дур интерес гьал мацӀазда ккезе батила:",
"uls-search-help": "МацӀалъул яги хъвай-хъваялъул цӀаразда рекъон цӀехезе бегьула, яги мацӀалъул ISO-кодалда рекъон. Гьединго бегьула регион бищун балагьизе:",
"uls-search-placeholder": "МацӀ цӀехей"
}

23
prototype/i18n/awa.json Normal file
View File

@@ -0,0 +1,23 @@
{
"@metadata": {
"authors": [
"1AnuraagPandey",
"1PandeyAnurag",
"Ajeetsinghawadh"
]
},
"uls-region-WW": "वैश्विक",
"uls-region-SP": "विशेष",
"uls-region-AM": "अमेरिका",
"uls-region-AF": "अफ्रिका",
"uls-region-EU": "यूरोप",
"uls-region-AS": "एशिया",
"uls-region-ME": "मध्य पुरुब",
"uls-region-PA": "प्रशांत",
"uls-region-all": "कुल भाषा",
"uls-no-results-found": "कवनो नतिजा नाई मिला",
"uls-common-languages": "सुझाई गय भाषा",
"uls-no-results-suggestion-title": "आप कय लिये संभवतः उपयोगी:",
"uls-search-help": "आप भाषा कय नाँव,लिपि नाँव,भाषा कय आई.एस.ओ कोड अव क्षेत्र कय नाँव से खोज सका जात अहै ।",
"uls-search-placeholder": "भाषा खोज"
}

24
prototype/i18n/az.json Normal file
View File

@@ -0,0 +1,24 @@
{
"@metadata": {
"authors": [
"AZISS",
"Khan27",
"Wertuose",
"Şeyx Şamil"
]
},
"uls-region-WW": "Dünya üzrə",
"uls-region-SP": "Xüsusi",
"uls-region-AM": "Amerika",
"uls-region-AF": "Afrika",
"uls-region-EU": "Avropa",
"uls-region-AS": "Asiya",
"uls-region-ME": "Yaxın Şərq",
"uls-region-PA": "Okeaniya",
"uls-region-all": "Bütün dillər",
"uls-no-results-found": "Nəticələr tapılmadı",
"uls-common-languages": "Təklif edilən dillər",
"uls-no-results-suggestion-title": "Sizin üçün maraqlı ola bilər:",
"uls-search-help": "Siz dilin adı, yazısı və ISO-kodu üzrə və ya region üzrə axtarış edə bilərsiz.",
"uls-search-placeholder": "Dili axtar"
}

23
prototype/i18n/azb.json Normal file
View File

@@ -0,0 +1,23 @@
{
"@metadata": {
"authors": [
"Alp Er Tunqa",
"Arjanizary",
"Mousa"
]
},
"uls-region-WW": "دونیا بویو",
"uls-region-SP": "مخصوص",
"uls-region-AM": "آمریکا",
"uls-region-AF": "آفریقا",
"uls-region-EU": "اوروپا",
"uls-region-AS": "آسیا",
"uls-region-ME": "اورتادوغو",
"uls-region-PA": "بؤیوک اوقیانوس",
"uls-region-all": "بۆتون دیللر",
"uls-no-results-found": "هئچ نتیجه تاپیلمادی",
"uls-common-languages": "یایغین دیل‌لر",
"uls-no-results-suggestion-title": "بونلارا ماراقلی اولابیلرسینیز:",
"uls-search-help": "سیز دیل آدی، یازی آدی، دیلین ISO کودو، یوخسا بؤلگه ایله آختارا بیلرسینیز.",
"uls-search-placeholder": "بیر دیلی آختار"
}

22
prototype/i18n/ba.json Normal file
View File

@@ -0,0 +1,22 @@
{
"@metadata": {
"authors": [
"Sagan",
"Ләйсән"
]
},
"uls-region-WW": "Бөтә донъя",
"uls-region-SP": "Махсус",
"uls-region-AM": "Америка",
"uls-region-AF": "Африка",
"uls-region-EU": "Европа",
"uls-region-AS": "Азия",
"uls-region-ME": "Яҡын Көнсығыш",
"uls-region-PA": "Океания",
"uls-region-all": "Бөтә телдәр",
"uls-no-results-found": "Бер нимә лә табылманы",
"uls-common-languages": "Тәҡдим ителгән телдәр",
"uls-no-results-suggestion-title": "Бәлки, ошо телдәрҙе һайларһығыҙ:",
"uls-search-help": "Телдең исеме, яҙмаһы, ISO коды йәки регионы буйынса эҙләй алаһығыҙ.",
"uls-search-placeholder": "Тел буйынса эҙләү"
}

22
prototype/i18n/ban.json Normal file
View File

@@ -0,0 +1,22 @@
{
"@metadata": {
"authors": [
"Chinamoonroll",
"Joseagush"
]
},
"uls-region-WW": "Gumi makejang",
"uls-region-SP": "Rahina",
"uls-region-AM": "Amérika",
"uls-region-AF": "Afrika",
"uls-region-EU": "Éropa",
"uls-region-AS": "Asia",
"uls-region-ME": "Timur Tengah",
"uls-region-PA": "Pasifik",
"uls-region-all": "Basa makejang",
"uls-no-results-found": "Tusing ade hasil",
"uls-common-languages": "Basa sane mapiteket",
"uls-no-results-suggestion-title": "Ida dane dumadak rimang:",
"uls-search-help": "Ida dane dados ngerereh anggen adan basa, adan script, kode basa ISO, utawi ida dane dados ngalih anggen wewengkon.",
"uls-search-placeholder": "Basa sane kererehin"
}

View File

@@ -0,0 +1,17 @@
{
"@metadata": {
"authors": [
"Stephensuleeman"
]
},
"uls-region-WW": "Sude luat portibi on",
"uls-region-AM": "Amerika",
"uls-region-AF": "Afrika",
"uls-region-EU": "Eropa",
"uls-region-AS": "Asia",
"uls-region-ME": "Timur Tengah",
"uls-region-PA": "Pasifik",
"uls-no-results-found": "Ndang adong jumpang",
"uls-common-languages": "Hata na somal",
"uls-search-placeholder": "Mandiori hata"
}

21
prototype/i18n/bcc.json Normal file
View File

@@ -0,0 +1,21 @@
{
"@metadata": {
"authors": [
"Baloch Afghanistan",
"Sultanselim baloch"
]
},
"uls-region-WW": "بی سراسری دونیا",
"uls-region-SP": "ویژه",
"uls-region-AM": "آمریکا",
"uls-region-AF": "آفریقا",
"uls-region-EU": "اروپا",
"uls-region-AS": "آسیا",
"uls-region-ME": "خاورمیانه",
"uls-region-PA": "اقیانوس آرام",
"uls-no-results-found": "نتیجه‌ای یافت نشد",
"uls-common-languages": "زبان‌های رایج",
"uls-no-results-suggestion-title": "ممکن است علاقه‌مند باشید:",
"uls-search-help": "شما می‌توانید بر پایه نام زبان، نام اسکریپت، کد استاندارد زبان یا بر پایه منطقه جستجو کنید:",
"uls-search-placeholder": "زبانء شۏھاز"
}

21
prototype/i18n/bci.json Normal file
View File

@@ -0,0 +1,21 @@
{
"@metadata": {
"authors": [
"Kjeanclaude"
]
},
"uls-region-WW": "Mein oumouan nou",
"uls-region-SP": "Koungou liké",
"uls-region-AM": "Amériki",
"uls-region-AF": "Afriki",
"uls-region-EU": "Abloki",
"uls-region-AS": "Azi",
"uls-region-ME": "Wia afiliè lô mein i atôliè",
"uls-region-PA": "Pacifiki",
"uls-region-all": "Anien mou bé ngba",
"uls-no-results-found": "Ya woun man liké fi",
"uls-common-languages": "Anien nga bé fa klé mou",
"uls-no-results-suggestion-title": "Amoun kwla klo",
"uls-search-help": "Amoun kwla kounndè i anien douman sou, klèlè douman sou, anien ISO codi sou, anzè amoun kwla kounndè i akpassoua sou.",
"uls-search-placeholder": "Kounndè anien koun"
}

22
prototype/i18n/bcl.json Normal file
View File

@@ -0,0 +1,22 @@
{
"@metadata": {
"authors": [
"Brazal.dang",
"Geopoet"
]
},
"uls-region-WW": "Pankinaban",
"uls-region-SP": "Espesyal",
"uls-region-AM": "Amerika",
"uls-region-AF": "Aprika",
"uls-region-EU": "Europa",
"uls-region-AS": "Asya",
"uls-region-ME": "Katahawang Sirangan",
"uls-region-PA": "Pasipiko",
"uls-region-all": "Gabos na lengguwahe",
"uls-no-results-found": "Mayong mga resultang nanumpungan",
"uls-common-languages": "Komun na mga lengguwahe",
"uls-no-results-suggestion-title": "Ika gayod interesado sa:",
"uls-search-help": "Ika makakahanap sa pangaran nin lengguwahe, pangaran nin eskrip, ISO kodigo nin lengguwahe o kaya ika makakabuklat sa paagi nin rehiyon.",
"uls-search-placeholder": "Maghanap nin lengguwahe"
}

View File

@@ -0,0 +1,23 @@
{
"@metadata": {
"authors": [
"Amire80",
"Red Winged Duck",
"Wizardist"
]
},
"uls-region-WW": "Сусьветныя",
"uls-region-SP": "Дадатковыя",
"uls-region-AM": "Амэрыка",
"uls-region-AF": "Афрыка",
"uls-region-EU": "Эўропа",
"uls-region-AS": "Азія",
"uls-region-ME": "Блізкі Ўсход",
"uls-region-PA": "Акіянія",
"uls-region-all": "Усе мовы",
"uls-no-results-found": "Нічога ня знойдзена",
"uls-common-languages": "Прапанаваныя мовы",
"uls-no-results-suggestion-title": "Магчыма, вас зацікавяць:",
"uls-search-help": "Вы можаце шукаць паводле назвы мовы ці пісьменнасьці, а таксама паводле ISO-коду мовы, або выбраць рэгіён.",
"uls-search-placeholder": "Пошук мовы"
}

22
prototype/i18n/be.json Normal file
View File

@@ -0,0 +1,22 @@
{
"@metadata": {
"authors": [
"Amire80",
"Unomano"
]
},
"uls-region-WW": "Па ўсім свеце",
"uls-region-SP": "Спецыяльныя",
"uls-region-AM": "Амерыка",
"uls-region-AF": "Афрыка",
"uls-region-EU": "Еўропа",
"uls-region-AS": "Азія",
"uls-region-ME": "Блізкі Ўсход",
"uls-region-PA": "Ціхі акіян",
"uls-region-all": "Усе мовы",
"uls-no-results-found": "Нічога не знойдзена",
"uls-common-languages": "Прапанаваныя мовы",
"uls-no-results-suggestion-title": "Вы можаце быць зацікаўлены ў:",
"uls-search-help": "Вы можаце шукаць па мове, назве сцэнара, ISO-коду мовы, або вы можаце праглядаць па рэгіенах.",
"uls-search-placeholder": "Пошук мовы"
}

25
prototype/i18n/bg.json Normal file
View File

@@ -0,0 +1,25 @@
{
"@metadata": {
"authors": [
"Amire80",
"Aquilax",
"DCLXVI",
"StanProg",
"Vodnokon4e"
]
},
"uls-region-WW": "Световни",
"uls-region-SP": "Специални",
"uls-region-AM": "Америка",
"uls-region-AF": "Африка",
"uls-region-EU": "Европа",
"uls-region-AS": "Азия",
"uls-region-ME": "Близкия изток",
"uls-region-PA": "Тихия океан",
"uls-region-all": "Всички езици",
"uls-no-results-found": "Не бяха открити резултати",
"uls-common-languages": "Предложени езици",
"uls-no-results-suggestion-title": "Може би се интересувате от:",
"uls-search-help": "Можете да търсите по име на език, име на скрипт, ISO кода на език или да разглеждате по региони.",
"uls-search-placeholder": "Търсене на език"
}

22
prototype/i18n/bgn.json Normal file
View File

@@ -0,0 +1,22 @@
{
"@metadata": {
"authors": [
"Baloch Afghanistan",
"Ibrahim khashrowdi"
]
},
"uls-region-WW": "بی موچین دونیایی تا",
"uls-region-SP": "خاص",
"uls-region-AM": "آمریکا",
"uls-region-AF": "آفریقا",
"uls-region-EU": "اروپا",
"uls-region-AS": "آسیا",
"uls-region-ME": "خاورمیانه",
"uls-region-PA": "اقیانوس آرام",
"uls-region-all": "موچین زبانان",
"uls-no-results-found": "هیچ نتیجه ودئ نبوت",
"uls-common-languages": "پیشنهاد بوته‌این زبانان",
"uls-no-results-suggestion-title": "ممکن اینت علاقه‌مند بئیت:",
"uls-search-help": "شما ئه توانیت به زبانی نامئ اساسا، نامئ اسکریپت، زبانئ استاندارتین کود یا به منطقه‌ای اساسا بگردیت.",
"uls-search-placeholder": "گَشتین په یک زبانئ خاتیرا"
}

26
prototype/i18n/bn.json Normal file
View File

@@ -0,0 +1,26 @@
{
"@metadata": {
"authors": [
"Aftabuzzaman",
"Bellayet",
"Nasir8891",
"Sankarshan",
"Sayak Sarkar",
"আফতাবুজ্জামান"
]
},
"uls-region-WW": "বিশ্বব্যাপী",
"uls-region-SP": "বিশেষ",
"uls-region-AM": "আমেরিকা",
"uls-region-AF": "আফ্রিকা",
"uls-region-EU": "ইউরোপ",
"uls-region-AS": "এশিয়া",
"uls-region-ME": "মধ্যপ্রাচ্য",
"uls-region-PA": "প্রশান্ত মহাসাগরীয়",
"uls-region-all": "সকল ভাষা",
"uls-no-results-found": "কোনো ফলাফল পাওয়া যায়নি",
"uls-common-languages": "প্রস্তাবিত ভাষাসমূহ",
"uls-no-results-suggestion-title": "আপনি হয়তো আগ্রহী হতে পারেন:",
"uls-search-help": "আপনি ভাষার নাম, স্ক্রিপ্টের নাম, ভাষার আইএসও কোড অথবা এলাকার ভিত্তিক অনুসন্ধান করতে পারবেন।",
"uls-search-placeholder": "একটি ভাষার জন্য অনুসন্ধান করুন"
}

22
prototype/i18n/br.json Normal file
View File

@@ -0,0 +1,22 @@
{
"@metadata": {
"authors": [
"Fulup",
"Gwenn-Ael"
]
},
"uls-region-WW": "Bed a-bezh",
"uls-region-SP": "Dibar",
"uls-region-AM": "Amerika",
"uls-region-AF": "Afrika",
"uls-region-EU": "Europa",
"uls-region-AS": "Azia",
"uls-region-ME": "Reter-Kreiz",
"uls-region-PA": "Habask",
"uls-region-all": "An holl yezhoù",
"uls-no-results-found": "N'eus bet kavet disoc'h ebet",
"uls-common-languages": "Yezhoù aliet",
"uls-no-results-suggestion-title": "Gallout a reot bezañ dedennet gant :",
"uls-search-help": "Gallout a reot klask dre anv yezh, anv skript, kod yezh ISO pe gallout a reot klask dre rannvro.",
"uls-search-placeholder": "Klask ur yezh"
}

24
prototype/i18n/bs.json Normal file
View File

@@ -0,0 +1,24 @@
{
"@metadata": {
"authors": [
"DzWiki",
"Edinwiki",
"Srdjan m",
"Srđan"
]
},
"uls-region-WW": "Svjetski",
"uls-region-SP": "Posebno",
"uls-region-AM": "Amerika",
"uls-region-AF": "Afrika",
"uls-region-EU": "Evropa",
"uls-region-AS": "Azija",
"uls-region-ME": "Bliski istok",
"uls-region-PA": "Pacifik",
"uls-region-all": "Svi jezici",
"uls-no-results-found": "Nema pronađenih rezultata",
"uls-common-languages": "Predloženi jezici",
"uls-no-results-suggestion-title": "Možda vas interesuje:",
"uls-search-help": "Možete da tražite po imenu jezika ili pisma, po ISO kodu jezika ili po regionu.",
"uls-search-placeholder": "Pronađi jezik"
}

13
prototype/i18n/bto.json Normal file
View File

@@ -0,0 +1,13 @@
{
"@metadata": {
"authors": [
"Filipinayzd"
]
},
"uls-region-AM": "Amerika",
"uls-region-AF": "Aprika",
"uls-region-EU": "Europa",
"uls-region-AS": "Asya",
"uls-region-PA": "Pasipiko",
"uls-no-results-found": "Uda naturakan na resulta"
}

24
prototype/i18n/ca.json Normal file
View File

@@ -0,0 +1,24 @@
{
"@metadata": {
"authors": [
"Amire80",
"Pginer",
"Ssola",
"Toniher"
]
},
"uls-region-WW": "Mundial",
"uls-region-SP": "Especials",
"uls-region-AM": "Amèrica",
"uls-region-AF": "Àfrica",
"uls-region-EU": "Europa",
"uls-region-AS": "Àsia",
"uls-region-ME": "Orient mitjà",
"uls-region-PA": "Pacífic",
"uls-region-all": "Totes les llengües",
"uls-no-results-found": "Cap resultat",
"uls-common-languages": "Llengües suggerides",
"uls-no-results-suggestion-title": "Pot interessar-vos:",
"uls-search-help": "Podeu cercar per nom de llengua, nom d'alfabet, codi ISO de la llengua o podeu navegar per regió:",
"uls-search-placeholder": "Cerca una llengua"
}

21
prototype/i18n/ce.json Normal file
View File

@@ -0,0 +1,21 @@
{
"@metadata": {
"authors": [
"Умар"
]
},
"uls-region-WW": "Дерригдуьненан",
"uls-region-SP": "Леррина",
"uls-region-AM": "Америка",
"uls-region-AF": "Африка",
"uls-region-EU": "Европа",
"uls-region-AS": "Ази",
"uls-region-ME": "Гергара Малхбале",
"uls-region-PA": "Океани",
"uls-region-all": "Берриге меттанаш",
"uls-no-results-found": "Цакарийна",
"uls-common-languages": "Ша дӀанисбелла меттанаш",
"uls-no-results-suggestion-title": "Хьуна хӀара меттанаш хьашта хила мега:",
"uls-search-help": "Хьа таро ю меттан я йозанан цӀарца лаха, меттан ISO-кодаца я регионаца хьажа.",
"uls-search-placeholder": "Лаха мотт"
}

24
prototype/i18n/ckb.json Normal file
View File

@@ -0,0 +1,24 @@
{
"@metadata": {
"authors": [
"Asoxor",
"Calak",
"Lost Whispers",
"Épine"
]
},
"uls-region-WW": "لە گشت جیھاندا",
"uls-region-SP": "تایبەت",
"uls-region-AM": "ئەمریکا",
"uls-region-AF": "ئەفریقا",
"uls-region-EU": "ئەورووپا",
"uls-region-AS": "ئاسیا",
"uls-region-ME": "ڕۆژھەڵاتی ناوین",
"uls-region-PA": "ئۆقیانووسی ئارام",
"uls-region-all": "ھەموو زمانەکان",
"uls-no-results-found": "ھیچ ئاکامێک نەدۆزرایەوە",
"uls-common-languages": "زمانە پێشنیارکراوەکان",
"uls-no-results-suggestion-title": "ڕەنگە ئەمانەت پێ خۆش بێت:",
"uls-search-help": "دەتوانیت بە پێی ناوی زمان، جۆری ئەلفوبێ، کۆدی ISOی زمان یان بە پێی ناوچە بگەڕێی.",
"uls-search-placeholder": "گەڕان بەدوای زمانێکدا"
}

20
prototype/i18n/cop.json Normal file
View File

@@ -0,0 +1,20 @@
{
"@metadata": {
"authors": [
"Bloomaround",
"ⲁϩⲙⲉⲧ"
]
},
"uls-region-WW": "ⲡⲓⲑⲟ ⲧⲏⲣϥ",
"uls-region-AM": "ⲁⲙⲉⲣⲓⲕⲏ",
"uls-region-AF": "ⲁⲫⲣⲓⲕⲏ",
"uls-region-EU": "ⲉⲩⲣⲱⲡⲏ",
"uls-region-AS": "ⲁⲥⲓⲁ",
"uls-region-ME": "ⲡⲓⲉⲃⲧ `ⲛⲑⲙⲏϯ",
"uls-region-PA": "ⲱⲕⲉⲁⲛⲓⲁ",
"uls-region-all": "ⲁⲥⲡⲓ ⲛⲓⲃⲉⲛ",
"uls-no-results-found": "ⲁⲩϫⲓⲙⲓ ⲁⲛ ⲛⲓⲁⲡⲟⲧⲉⲗⲉⲥⲙⲁ",
"uls-common-languages": "ⲛⲓⲁⲥⲡⲓ ⲁⲩϯⲙⲉⲩⲓ",
"uls-search-help": "ⲧⲉⲧⲉⲛϫⲉⲙϫⲟⲙ ⲉϫⲉⲙⲣⲁⲧ ϩⲉⲛ ⲡⲓⲣⲁⲛ ⲛⲧⲉ ⲟⲩⲁⲥⲡⲓ, ⲡⲓⲣⲁⲛ ⲛⲧⲉ ⲟⲩⲙⲉⲧⲥϦⲁⲓ, ⲟⲩϣⲓϥⲣ `ⲛISO ⲛⲧⲉ ⲁⲥⲡⲓ ⲓⲉ ⲧⲉⲧⲉⲛϫⲉⲙϫⲟⲙ ⲉⲥⲓⲛⲓ ϧⲁⲧⲉⲛⲟⲩⲭⲱⲣⲁ",
"uls-search-placeholder": "ϫⲉⲙⲣⲁⲧⲕ `ⲛⲟⲩⲁⲥⲡⲓ"
}

23
prototype/i18n/cs.json Normal file
View File

@@ -0,0 +1,23 @@
{
"@metadata": {
"authors": [
"Amire80",
"Dvorapa",
"Mormegil"
]
},
"uls-region-WW": "Celosvětové",
"uls-region-SP": "Speciální",
"uls-region-AM": "Amerika",
"uls-region-AF": "Afrika",
"uls-region-EU": "Evropa",
"uls-region-AS": "Asie",
"uls-region-ME": "Blízký východ",
"uls-region-PA": "Tichomoří",
"uls-region-all": "Všechny jazyky",
"uls-no-results-found": "Nenalezeny žádné výsledky",
"uls-common-languages": "Doporučené jazyky",
"uls-no-results-suggestion-title": "Mohlo by vás zajímat:",
"uls-search-help": "Můžete vyhledávat podle názvu jazyka, názvu písma, ISO kódu jazyka nebo můžete procházet po regionech.",
"uls-search-placeholder": "Hledat jazyk"
}

22
prototype/i18n/cv.json Normal file
View File

@@ -0,0 +1,22 @@
{
"@metadata": {
"authors": [
"Chavash",
"Salam"
]
},
"uls-region-WW": "Пӗтӗм тӗнчери",
"uls-region-SP": "Ятарлисем",
"uls-region-AM": "Америка",
"uls-region-AF": "Африка",
"uls-region-EU": "Европа",
"uls-region-AS": "Ази",
"uls-region-ME": "Малти хӗвел тухӑҫ",
"uls-region-PA": "Океани",
"uls-region-all": "Мӗн пур чӗлхе",
"uls-no-results-found": "Нимӗн те тупӑнмарӗ",
"uls-common-languages": "Сӗннӗ чӗлхесем",
"uls-no-results-suggestion-title": "Тен çак чĕлхесем пăхма пултаратăр:",
"uls-search-help": "Чĕлхе ячĕпе, çырулăхĕпе, ISO-кочĕпе е регионĕпе шырама пулать:",
"uls-search-placeholder": "Чĕлхе шыра"
}

22
prototype/i18n/cy.json Normal file
View File

@@ -0,0 +1,22 @@
{
"@metadata": {
"authors": [
"Dafyddt",
"Lloffiwr",
"Robin Owain"
]
},
"uls-region-WW": "Byd-eang",
"uls-region-SP": "Neilltuol",
"uls-region-AM": "America",
"uls-region-AF": "Affrica",
"uls-region-EU": "Ewrop",
"uls-region-AS": "Asia",
"uls-region-ME": "Y Dwyrain Canol",
"uls-region-PA": "Y Pasiffig",
"uls-no-results-found": "Ni chafwyd unrhyw ganlyniadau",
"uls-common-languages": "Ieithoedd awgrymedig",
"uls-no-results-suggestion-title": "Hwyrach bod y rhai sy'n dilyn o ddiddordeb i chi:",
"uls-search-help": "Gallwch chwilio gan ddefnyddio enw iaith, enw sgript, côd ISO'r iaith neu gallwch bori fesul rhanbarth.",
"uls-search-placeholder": "Chwilio am iaith"
}

24
prototype/i18n/da.json Normal file
View File

@@ -0,0 +1,24 @@
{
"@metadata": {
"authors": [
"Amire80",
"Christian List",
"Jubber",
"Peter Alberti"
]
},
"uls-region-WW": "Verdensomspændende",
"uls-region-SP": "Specielle",
"uls-region-AM": "Amerika",
"uls-region-AF": "Afrika",
"uls-region-EU": "Europa",
"uls-region-AS": "Asien",
"uls-region-ME": "Mellemøsten",
"uls-region-PA": "Stillehavet",
"uls-region-all": "Alle sprog",
"uls-no-results-found": "Ingen resultater fundet",
"uls-common-languages": "Foreslåede sprog",
"uls-no-results-suggestion-title": "Du er måske interesseret i:",
"uls-search-help": "Du kan søge på sprogets navn, skriftens navn eller sprogets ISO-kode, eller du kan bladre hen til sproget efter regionen.",
"uls-search-placeholder": "Søg efter et sprog"
}

View File

@@ -0,0 +1,12 @@
{
"@metadata": {
"authors": [
"Kghbln",
"Purodha"
]
},
"uls-region-SP": "Extras - kein Schprohche",
"uls-no-results-suggestion-title": "Dies könnte Sie interessieren:",
"uls-search-help": "Sie können nach dem Namen der Sprache suchen, dem Namen der Schrift, dem ISO-Code der Sprache oder aber die Suche über eine Region durchführen:",
"uls-search-placeholder": "Noh Schprohche söhke"
}

24
prototype/i18n/de.json Normal file
View File

@@ -0,0 +1,24 @@
{
"@metadata": {
"authors": [
"Kghbln",
"Man77",
"Metalhead64",
"TMg"
]
},
"uls-region-WW": "Weltweit",
"uls-region-SP": "Spezial",
"uls-region-AM": "Amerika",
"uls-region-AF": "Afrika",
"uls-region-EU": "Europa",
"uls-region-AS": "Asien",
"uls-region-ME": "Naher Osten",
"uls-region-PA": "Pazifik",
"uls-region-all": "Alle Sprachen",
"uls-no-results-found": "Es wurden keine Ergebnisse gefunden.",
"uls-common-languages": "Vorgeschlagene Sprachen",
"uls-no-results-suggestion-title": "Dies könnte dich interessieren:",
"uls-search-help": "Du kannst nach dem Namen der Sprache suchen, dem Namen der Schrift, dem ISO-Code der Sprache oder aber die Suche über eine Region durchführen.",
"uls-search-placeholder": "Nach einer Sprache suchen"
}

27
prototype/i18n/diq.json Normal file
View File

@@ -0,0 +1,27 @@
{
"@metadata": {
"authors": [
"Asmen",
"Erdemaslancan",
"Gorizon",
"Gırd",
"Kumkumuk",
"Marmase",
"Mirzali"
]
},
"uls-region-WW": "Dınyayi",
"uls-region-SP": "Xısusi",
"uls-region-AM": "Amerika",
"uls-region-AF": "Afrika",
"uls-region-EU": "Ewropa",
"uls-region-AS": "Asya",
"uls-region-ME": "Rocvetışê Miyani",
"uls-region-PA": "Pasifik",
"uls-region-all": "Zıwani pêro",
"uls-no-results-found": "Neticeyi nêvêniyayi",
"uls-common-languages": "Zıwanê ke estê.",
"uls-no-results-suggestion-title": "Belki şıma cıya eleqederi:",
"uls-search-help": ıma şenê name dê zıwaniya, skript kodiya, ISO qodiya yana mıntıqa heta cıgeyrayış bıkerê.",
"uls-search-placeholder": "Yew zıwani cı geyre"
}

20
prototype/i18n/dsb.json Normal file
View File

@@ -0,0 +1,20 @@
{
"@metadata": {
"authors": [
"Michawiki"
]
},
"uls-region-WW": "na cełem swěśe",
"uls-region-SP": "Specialne",
"uls-region-AM": "Amerika",
"uls-region-AF": "Afrika",
"uls-region-EU": "Europa",
"uls-region-AS": "Azija",
"uls-region-ME": "Srjejźne pódzajtšo",
"uls-region-PA": "Pacifik",
"uls-no-results-found": "Žedne wuslědki namakane",
"uls-common-languages": "Powšykne rěcy",
"uls-no-results-suggestion-title": "To by mógło śi zajmowaś:",
"uls-search-help": "Móžoš pó mjenju rěcy, mjenju pisma, ISO-koźe rěcy pytaś abo móžoš pó regionje pytaś:",
"uls-search-placeholder": "Rěcne pytanje"
}

22
prototype/i18n/dty.json Normal file
View File

@@ -0,0 +1,22 @@
{
"@metadata": {
"authors": [
"Nirajan pant",
"रमेश सिंह बोहरा"
]
},
"uls-region-WW": "विश्वभर",
"uls-region-SP": "खास",
"uls-region-AM": "अमेरिका",
"uls-region-AF": "अफ्रिका",
"uls-region-EU": "युरोप",
"uls-region-AS": "एसिया",
"uls-region-ME": "मध्य पूर्व",
"uls-region-PA": "प्रशान्त",
"uls-region-all": "जम्माइ भाषान",
"uls-no-results-found": "कोइ पन नतिजाहरू नाइभेटिया",
"uls-common-languages": "सुझावित भाषाअन",
"uls-no-results-suggestion-title": "तमलाई यैमी मन लाग्गसकन्छ:",
"uls-search-help": "तम भषा: नाउँले, लिपिया नाउँले, भषा: ISO कोड खोजिसकन्छ: या क्षेत्रा आधारमी ब्राउज अरिसकन्छ:।",
"uls-search-placeholder": "भाषा खिलाइ खोजी अरऽ"
}

21
prototype/i18n/ee.json Normal file
View File

@@ -0,0 +1,21 @@
{
"@metadata": {
"authors": [
"Aguve"
]
},
"uls-region-WW": "Xexeme Godoo",
"uls-region-SP": "Tɔxɛ",
"uls-region-AM": "Amerika",
"uls-region-AF": "Afrika",
"uls-region-EU": "Europa",
"uls-region-AS": "Asia",
"uls-region-ME": "Titina Ɣedzeƒe",
"uls-region-PA": "Pasifik",
"uls-region-all": "Gbewo Katã",
"uls-no-results-found": "Mekpɔ naneke o",
"uls-common-languages": "Kpɔ gbe siawo ɖa",
"uls-no-results-suggestion-title": "Ɖewohĩ esiwo gbɔna adzɔ dzi na wò:",
"uls-search-help": "Àte ŋu aŋlɔ gbea ŋkɔ atsɔ adii, azã woƒe skript ƒe ŋkɔ, gbea ƒe ISO dzesi adii alo àdii le nutonutowo nu.",
"uls-search-placeholder": "Di gbe aɖe"
}

23
prototype/i18n/el.json Normal file
View File

@@ -0,0 +1,23 @@
{
"@metadata": {
"authors": [
"Amire80",
"Evropi",
"Geraki"
]
},
"uls-region-WW": "Παγκόσμιες",
"uls-region-SP": "Ειδικές",
"uls-region-AM": "Αμερική",
"uls-region-AF": "Αφρική",
"uls-region-EU": "Ευρώπη",
"uls-region-AS": "Ασία",
"uls-region-ME": "Μέση Ανατολή",
"uls-region-PA": "Ειρηνικός",
"uls-region-all": "Όλες οι γλώσσες",
"uls-no-results-found": "Δε βρέθηκαν αποτελέσματα",
"uls-common-languages": "Προτεινόμενες γλώσσες",
"uls-no-results-suggestion-title": "Μπορεί να σας ενδιαφέρουν:",
"uls-search-help": "Μπορείτε να ψάξετε κατά το όνομα της γλώσσας, τρόπο γραφής, κωδικό ISO της γλώσσας, ή να περιηγηθείτε ανά περιοχή.",
"uls-search-placeholder": "Αναζήτηση για γλώσσα"
}

22
prototype/i18n/en-gb.json Normal file
View File

@@ -0,0 +1,22 @@
{
"@metadata": {
"authors": [
"Andibing",
"Chase me ladies, I'm the Cavalry"
]
},
"uls-region-WW": "Worldwide",
"uls-region-SP": "Special",
"uls-region-AM": "America",
"uls-region-AF": "Africa",
"uls-region-EU": "Europe",
"uls-region-AS": "Asia",
"uls-region-ME": "Middle East",
"uls-region-PA": "Pacific",
"uls-region-all": "All languages",
"uls-no-results-found": "No results found",
"uls-common-languages": "Suggested languages",
"uls-no-results-suggestion-title": "You may be interested in:",
"uls-search-help": "You can search by language name, script name, ISO code of language or you can browse by region.",
"uls-search-placeholder": "Search for a language"
}

22
prototype/i18n/en.json Normal file
View File

@@ -0,0 +1,22 @@
{
"@metadata": {
"author": "Santhosh Thottingal <santhosh.thottingal@gmail.com>",
"last-updated": "2012-09-21",
"locale": "en",
"message-documentation": "qqq"
},
"uls-region-WW": "Worldwide",
"uls-region-SP": "Special",
"uls-region-AM": "America",
"uls-region-AF": "Africa",
"uls-region-EU": "Europe",
"uls-region-AS": "Asia",
"uls-region-ME": "Middle East",
"uls-region-PA": "Pacific",
"uls-region-all": "All languages",
"uls-no-results-found": "No results found",
"uls-common-languages": "Suggested languages",
"uls-no-results-suggestion-title": "You may be interested in:",
"uls-search-help": "You can search by language name, script name, ISO code of language or you can browse by region.",
"uls-search-placeholder": "Search for a language"
}

24
prototype/i18n/eo.json Normal file
View File

@@ -0,0 +1,24 @@
{
"@metadata": {
"authors": [
"Amire80",
"KuboF",
"Objectivesea",
"Orikrin1998"
]
},
"uls-region-WW": "Tutmonda",
"uls-region-SP": "Speciala",
"uls-region-AM": "Ameriko",
"uls-region-AF": "Afriko",
"uls-region-EU": "Eŭropo",
"uls-region-AS": "Azio",
"uls-region-ME": "Mezoriento",
"uls-region-PA": "Pacifiko",
"uls-region-all": "Ĉiuj lingvoj",
"uls-no-results-found": "Neniu rezulto estis trovita",
"uls-common-languages": "Sugestataj lingvoj",
"uls-no-results-suggestion-title": "Vi eble interesiĝas pri:",
"uls-search-help": "Vi povas serĉi laŭ la lingvonomo, la skriptnomo aŭ la lingva ISO-kodo, aŭ vi povas foliumi laŭ regiono.",
"uls-search-placeholder": "Serĉi lingvon"
}

27
prototype/i18n/es.json Normal file
View File

@@ -0,0 +1,27 @@
{
"@metadata": {
"authors": [
"Armando-Martin",
"Fitoschido",
"Macofe",
"McDutchie",
"Pginer",
"Santhosh.thottingal",
"Vivaelcelta"
]
},
"uls-region-WW": "Mundial",
"uls-region-SP": "Especial",
"uls-region-AM": "América",
"uls-region-AF": "África",
"uls-region-EU": "Europa",
"uls-region-AS": "Asia",
"uls-region-ME": "Medio Oriente",
"uls-region-PA": "Pacífico",
"uls-region-all": "Todos los idiomas",
"uls-no-results-found": "No se encontraron resultados",
"uls-common-languages": "Idiomas sugeridos",
"uls-no-results-suggestion-title": "Puedes estar interesado en:",
"uls-search-help": "Puedes buscar por el nombre del idioma, su tipo de escritura, el código ISO del idioma o buscar por región.",
"uls-search-placeholder": "Buscar un idioma"
}

21
prototype/i18n/et.json Normal file
View File

@@ -0,0 +1,21 @@
{
"@metadata": {
"authors": [
"Pikne"
]
},
"uls-region-WW": "Kogu maailm",
"uls-region-SP": "Erijuhud",
"uls-region-AM": "Ameerika",
"uls-region-AF": "Aafrika",
"uls-region-EU": "Euroopa",
"uls-region-AS": "Aasia",
"uls-region-ME": "Lähis-Ida",
"uls-region-PA": "Vaikne ookean",
"uls-region-all": "Kõik keeled",
"uls-no-results-found": "Tulemusi ei leitud.",
"uls-common-languages": "Soovitatavad keeled",
"uls-no-results-suggestion-title": "Võid eelistada neid:",
"uls-search-help": "Saad otsida keeli keelenimetuse, kirjanimetuse või keele ISO-koodi järgi või sirvida keeli piirkonna järgi.",
"uls-search-placeholder": "Keeleotsing"
}

23
prototype/i18n/eu.json Normal file
View File

@@ -0,0 +1,23 @@
{
"@metadata": {
"authors": [
"An13sa",
"Sator",
"Theklan"
]
},
"uls-region-WW": "Mundu osoa",
"uls-region-SP": "Berezia",
"uls-region-AM": "Amerika",
"uls-region-AF": "Afrika",
"uls-region-EU": "Europa",
"uls-region-AS": "Asia",
"uls-region-ME": "Ekialde Hurbila",
"uls-region-PA": "Pazifikoa",
"uls-region-all": "Hizkuntza guztiak",
"uls-no-results-found": "Ez da emaitzarik aurkitu",
"uls-common-languages": "Proposatutako hizkuntzak",
"uls-no-results-suggestion-title": "Agian interesa duzu:",
"uls-search-help": "Bilaketa egin ahal duzu hizkuntzaren izena, script izena, hizkuntzaren ISO kodea edo eskualdeka bilaketa egin ahal duzu.",
"uls-search-placeholder": "Hizkuntza bat bilatu"
}

25
prototype/i18n/fa.json Normal file
View File

@@ -0,0 +1,25 @@
{
"@metadata": {
"authors": [
"Ahmad252",
"Alirezaaa",
"Amire80",
"Namo",
"Reza1615"
]
},
"uls-region-WW": "در سراسر جهان",
"uls-region-SP": "ویژه",
"uls-region-AM": "آمریکا",
"uls-region-AF": "آفریقا",
"uls-region-EU": "اروپا",
"uls-region-AS": "آسیا",
"uls-region-ME": "خاورمیانه",
"uls-region-PA": "اقیانوس آرام",
"uls-region-all": "همهٔ زبان‌ها",
"uls-no-results-found": "نتیجه‌ای یافت نشد",
"uls-common-languages": "زبان‌های پیشنهادشده",
"uls-no-results-suggestion-title": "ممکن است علاقه‌مند باشید:",
"uls-search-help": "شما می‌توانید بر پایه نام زبان، نام اسکریپت، کد استاندارد زبان یا بر پایه منطقه جستجو کنید.",
"uls-search-placeholder": "جستجوی زبان"
}

24
prototype/i18n/fi.json Normal file
View File

@@ -0,0 +1,24 @@
{
"@metadata": {
"authors": [
"Alluk.",
"Nedergard",
"Nike",
"VezonThunder"
]
},
"uls-region-WW": "Maailmankielet",
"uls-region-SP": "Erikoiskielet",
"uls-region-AM": "Pohjois- ja Etelä-Amerikka",
"uls-region-AF": "Afrikka",
"uls-region-EU": "Eurooppa",
"uls-region-AS": "Aasia",
"uls-region-ME": "Lähi-itä",
"uls-region-PA": "Tyynenmeren alue",
"uls-region-all": "Kaikki kielet",
"uls-no-results-found": "Ei hakutuloksia",
"uls-common-languages": "Ehdotetut kielet",
"uls-no-results-suggestion-title": "Lähimmät hakutulokset:",
"uls-search-help": "Hae kielen tai kirjoitusjärjestelmän nimellä, kielen ISO-koodilla tai selaa kieliä alueluettelosta:",
"uls-search-placeholder": "Etsi kieltä"
}

21
prototype/i18n/fit.json Normal file
View File

@@ -0,0 +1,21 @@
{
"@metadata": {
"authors": [
"Pyscowicz"
]
},
"uls-region-WW": "Maailmankielet",
"uls-region-SP": "Spesiaalikielet",
"uls-region-AM": "Pohjois- ja Etelä-Ameriika",
"uls-region-AF": "Aafriikka",
"uls-region-EU": "Euruuppa",
"uls-region-AS": "Aasia",
"uls-region-ME": "Lähi-itä",
"uls-region-PA": "Tyynenmeren alue",
"uls-region-all": "Kaikki kielet",
"uls-no-results-found": "Ei hakuresyltaatteja",
"uls-common-languages": "Ehotetut kielet",
"uls-no-results-suggestion-title": "Lähimmät hakuresyltaatit:",
"uls-search-help": "Hae kielen tai kirjoitussysteemin nimelä, kielen ISO-kootila eli selaa kieliä aluelistasta:",
"uls-search-placeholder": "Eti kieltä"
}

20
prototype/i18n/fo.json Normal file
View File

@@ -0,0 +1,20 @@
{
"@metadata": {
"authors": [
"EileenSanda"
]
},
"uls-region-WW": "Alheims",
"uls-region-SP": "Serstakt",
"uls-region-AM": "Amerika",
"uls-region-AF": "Afrika",
"uls-region-EU": "Evropa",
"uls-region-AS": "Asia",
"uls-region-ME": "Miðeystur",
"uls-region-PA": "Stillahavið",
"uls-no-results-found": "Ongi úrslit funnin",
"uls-common-languages": "Vanlig mál",
"uls-no-results-suggestion-title": "Tú ert kanska áhugað/ur í:",
"uls-search-help": "Tú kanst leita eftir navni á máli, skrifttýpu á máli, ISO kotu av máli ella kanst tú leita eftir øki:",
"uls-search-placeholder": "Leita eftir máli"
}

25
prototype/i18n/fr.json Normal file
View File

@@ -0,0 +1,25 @@
{
"@metadata": {
"authors": [
"Gomoko",
"Pols12",
"Ultimate",
"Verdy p",
"Wladek92"
]
},
"uls-region-WW": "Dans le monde entier",
"uls-region-SP": "Spéciales",
"uls-region-AM": "Amérique",
"uls-region-AF": "Afrique",
"uls-region-EU": "Europe",
"uls-region-AS": "Asie",
"uls-region-ME": "Moyen-Orient",
"uls-region-PA": "Pacifique",
"uls-region-all": "Toutes les langues",
"uls-no-results-found": "Aucun résultat trouvé",
"uls-common-languages": "Langues suggérées",
"uls-no-results-suggestion-title": "Vous pouvez être intéressé par:",
"uls-search-help": "Vous pouvez rechercher par nom de langue, par nom de lécriture, par code ISO de langue, ou vous pouvez naviguer par région.",
"uls-search-placeholder": "Rechercher une langue"
}

20
prototype/i18n/fur.json Normal file
View File

@@ -0,0 +1,20 @@
{
"@metadata": {
"authors": [
"Klenje"
]
},
"uls-region-WW": "Dut il mont",
"uls-region-SP": "Speciâl",
"uls-region-AM": "Americhe",
"uls-region-AF": "Afriche",
"uls-region-EU": "Europe",
"uls-region-AS": "Asie",
"uls-region-ME": "Medi Orient",
"uls-region-PA": "Pacjific",
"uls-no-results-found": "Nissun risultât",
"uls-common-languages": "Lenghis comunis",
"uls-no-results-suggestion-title": "Tu puedis jessi interessât a:",
"uls-search-help": "Tu pues cirî par non de lenghe, non dal alfabet, codis ISO de lenghe o tu puedis cirî intune regjon:",
"uls-search-placeholder": "Ricercje de lenghe"
}

23
prototype/i18n/fy.json Normal file
View File

@@ -0,0 +1,23 @@
{
"@metadata": {
"authors": [
"PiefPafPier",
"Robin van der Vliet",
"Robin0van0der0vliet"
]
},
"uls-region-WW": "Wrâldwiid",
"uls-region-SP": "Spesjaal",
"uls-region-AM": "Amearika",
"uls-region-AF": "Afrika",
"uls-region-EU": "Jeropa",
"uls-region-AS": "Aazje",
"uls-region-ME": "Midden-Easten",
"uls-region-PA": "Pasifysk gebiet",
"uls-region-all": "Alle talen",
"uls-no-results-found": "Gjin resultaten fûn",
"uls-common-languages": "Taalsuggestjes",
"uls-no-results-suggestion-title": "Faaks stelle jo belang yn:",
"uls-search-help": "Jo kinne op taalnamme, skriftnamme, ISO-koade fan 'e taal sykje of it op gebiet trochsjen.",
"uls-search-placeholder": "Taal sykje"
}

20
prototype/i18n/ga.json Normal file
View File

@@ -0,0 +1,20 @@
{
"@metadata": {
"authors": [
"Kscanne"
]
},
"uls-region-WW": "Ar fud an Domhain",
"uls-region-SP": "Speisialta",
"uls-region-AM": "Meiriceá",
"uls-region-AF": "An Afraic",
"uls-region-EU": "An Eoraip",
"uls-region-AS": "An Áise",
"uls-region-ME": "An Meánoirthear",
"uls-region-PA": "An tAigéan Ciúin",
"uls-no-results-found": "Gan torthaí",
"uls-common-languages": "Teangacha coitianta",
"uls-no-results-suggestion-title": "Seans go mbeadh suim agat i:",
"uls-search-help": "Is féidir cuardach de réir ainm na teanga, ainm na scripte, cód ISO 639, nó brabhsáil de réir réigiúin:",
"uls-search-placeholder": "Cuardaigh teangacha"
}

21
prototype/i18n/gcr.json Normal file
View File

@@ -0,0 +1,21 @@
{
"@metadata": {
"authors": [
"LeGuyanaisPure"
]
},
"uls-region-WW": "Annan monn antché",
"uls-region-SP": "Èspésyal",
"uls-region-AM": "Lanmérik",
"uls-region-AF": "Lafrik",
"uls-region-EU": "Léròp",
"uls-region-AS": "Lazi",
"uls-region-ME": "Mwayen-Loryan",
"uls-region-PA": "Pasifik",
"uls-region-all": "Tout lanng-yan",
"uls-no-results-found": "Pyès rézilta trouvé",
"uls-common-languages": "Lanng sigjéré",
"uls-no-results-suggestion-title": "Ou pouvé fika entérésé pa :",
"uls-search-help": "Ou pouvé sasé pa non di lanng, pa non di lékritir-a, pa kod ISO di lanng-an, oben ou pouvé navigé pa réjyon.",
"uls-search-placeholder": "Sasé roun lanng"
}

22
prototype/i18n/gd.json Normal file
View File

@@ -0,0 +1,22 @@
{
"@metadata": {
"authors": [
"Akerbeltz",
"GunChleoc"
]
},
"uls-region-WW": "Mòr-chànan",
"uls-region-SP": "Sònraichte",
"uls-region-AM": "Aimeireaga",
"uls-region-AF": "Afraga",
"uls-region-EU": "An Roinn-Eòrpa",
"uls-region-AS": "Àisia",
"uls-region-ME": "An Ear-mheadhan",
"uls-region-PA": "An Cuan Sèimh",
"uls-region-all": "A h-uile cànan",
"uls-no-results-found": "Cha deach toradh a lorg",
"uls-common-languages": "Cànain a mholamaid",
"uls-no-results-suggestion-title": "S dòcha gum bi ùidh agad sna leanas:",
"uls-search-help": "'S urrainn dhut lorg le ainm a' chànain, ainm an sgriobt, còd ISO a' chànain no brabhsadh a-rèir roinn-dùthcha.",
"uls-search-placeholder": "Lorg cànan"
}

23
prototype/i18n/gl.json Normal file
View File

@@ -0,0 +1,23 @@
{
"@metadata": {
"authors": [
"Banjo",
"Elisardojm",
"Toliño"
]
},
"uls-region-WW": "Mundial",
"uls-region-SP": "Especial",
"uls-region-AM": "América",
"uls-region-AF": "África",
"uls-region-EU": "Europa",
"uls-region-AS": "Asia",
"uls-region-ME": "Oriente Medio",
"uls-region-PA": "Pacífico",
"uls-region-all": "Todas as linguas",
"uls-no-results-found": "Non se atopou ningún resultado",
"uls-common-languages": "Linguas suxeridas",
"uls-no-results-suggestion-title": "Poida que estea buscando:",
"uls-search-help": "Pode procurar polo nome da lingua, o tipo de escritura ou o código ISO. Tamén pode explorar as rexións.",
"uls-search-placeholder": "Procurar unha lingua"
}

21
prototype/i18n/glk.json Normal file
View File

@@ -0,0 +1,21 @@
{
"@metadata": {
"authors": [
"شیخ"
]
},
"uls-region-WW": "دۊنىا سرتاسرˇ ميئن",
"uls-region-SP": "خاص",
"uls-region-AM": "آمريکا",
"uls-region-AF": "آفريقا",
"uls-region-EU": "اۊرۊپا",
"uls-region-AS": "آسيا",
"uls-region-ME": "مئني خۊرتؤ",
"uls-region-PA": "اۊقيانۊسˇ آرؤم",
"uls-region-all": "همته زوؤنؤن",
"uls-no-results-found": "نتيجه-اي وامته نۊبؤ",
"uls-common-languages": "پيش بنا زوؤنؤن",
"uls-no-results-suggestion-title": "مۊمکنه خۊش بدأرين:",
"uls-search-help": "شۊمۊ تؤنين زوانˇ نؤمˇ أمرأ، رسم الخط، زوانˇ ايزؤ کؤد ىا شيمي سامؤنˇ أمرأ وامجين.",
"uls-search-placeholder": "وامج يته زوؤنˇ ويسين"
}

22
prototype/i18n/gn.json Normal file
View File

@@ -0,0 +1,22 @@
{
"@metadata": {
"authors": [
"Fitoschido",
"P. S. F. Freitas"
]
},
"uls-region-WW": "Yvóra",
"uls-region-SP": "Mba'echĩchĩ",
"uls-region-AM": "Amérika",
"uls-region-AF": "Áfrika",
"uls-region-EU": "Európa",
"uls-region-AS": "Ásia",
"uls-region-ME": "Mbyte Kuarahyresẽ",
"uls-region-PA": "Paraguasu Py'aguapy",
"uls-region-all": "Opa ñe'ẽ",
"uls-no-results-found": "Ndojuhu mba'e",
"uls-common-languages": "Ñe'ẽ ojeipuruvéva",
"uls-no-results-suggestion-title": "Nde ikatu reipotaː",
"uls-search-help": "Nde ikatu reheka ñe'ẽ héra rupi, tai ysaja rupi, ISO ñe'ẽ héra térã ñe'ẽ renda rupi.",
"uls-search-placeholder": "Ñe'ẽ jeheka"
}

View File

@@ -0,0 +1,20 @@
{
"@metadata": {
"authors": [
"Santhosh.thottingal",
"The Discoverer",
"Vaishali Parab"
]
},
"uls-region-AM": "अमेरिका",
"uls-region-AF": "अफ़्रीका",
"uls-region-EU": "यूरोप",
"uls-region-AS": "एशिया",
"uls-region-ME": "मदलें उदेंत",
"uls-region-PA": "पॅसिफीक",
"uls-no-results-found": "परिणाम मेळूंक ना",
"uls-common-languages": "सामान्य भासो",
"uls-no-results-suggestion-title": "Tuka avdot:",
"uls-search-help": "तुज्यान भाशेचें नांव, लिपीचें नांव, भाशेचो ISO कोड वा जाग्यावरवीं सोदूंक जाता.",
"uls-search-placeholder": "भास सोदात"
}

View File

@@ -0,0 +1,21 @@
{
"@metadata": {
"authors": [
"The Discoverer"
]
},
"uls-region-WW": "Akhea sonvsarant",
"uls-region-SP": "Khashelem",
"uls-region-AM": "Amerika",
"uls-region-AF": "Afrika",
"uls-region-EU": "Erop",
"uls-region-AS": "Asia",
"uls-region-ME": "Modlem Udent",
"uls-region-PA": "Pacifik",
"uls-region-all": "Soglleo bhaso",
"uls-no-results-found": "Porinam mellunk nam",
"uls-common-languages": "Suchoiloeo bhaso",
"uls-no-results-suggestion-title": "Tuka avdot:",
"uls-search-help": "Tujean bhase, lipie, bhaseche ISO code vo zagea vorvim sodunk zata.",
"uls-search-placeholder": "Eke bhase khatir sod"
}

20
prototype/i18n/got.json Normal file
View File

@@ -0,0 +1,20 @@
{
"@metadata": {
"authors": [
"Gothicspeaker"
]
},
"uls-region-WW": "𐌹𐌽 𐌰𐌻𐌻𐌰𐌼𐌰 𐍆𐌰𐌹𐍂𐍈𐌰𐌿",
"uls-region-SP": "𐍃𐌹𐌻𐌳𐌰𐌻𐌴𐌹𐌺𐍃",
"uls-region-AM": "𐌰𐌼𐌴𐍂𐌹𐌺𐌰",
"uls-region-AF": "𐌰𐍆𐍂𐌹𐌺𐌰",
"uls-region-EU": "𐌰𐌹𐍅𐍂𐍉𐍀𐌰",
"uls-region-AS": "𐌰𐍃𐌹𐌰",
"uls-region-ME": "𐌼𐌹𐌳𐌾𐌹𐍃 𐌰𐌿𐍃𐍄𐍂𐌰",
"uls-region-PA": "𐍀𐌰𐍃𐌹𐍆𐌹𐌺",
"uls-no-results-found": "𐌽𐌹 𐍅𐌰𐌹𐌷𐍄𐍃 𐌱𐌹𐌲𐌹𐍄𐌰𐌽𐍃",
"uls-common-languages": "𐌱𐌹𐌿𐌷𐍄𐌰 𐍂𐌰𐌶𐌳𐍉𐍃",
"uls-no-results-suggestion-title": "𐌿𐍆𐍄𐍉 𐍅𐌹𐌻𐌴𐌹𐍃 𐍃𐌿𐌼𐍃 𐌸𐌹𐌶𐍉 𐍂𐌰𐌶𐌳𐍉:",
"uls-search-help": "𐌼𐌰𐌲𐍄 𐍃𐍉𐌺𐌾𐌰𐌽 𐌼𐌹𐌸 𐍂𐌰𐌶𐌳𐌰𐌽𐌰𐌼𐌹𐌽, 𐌼𐌴𐌻𐌴𐌹𐌽𐌹𐌽𐌰𐌼𐌹𐌽, 𐌹𐍃𐍉 𐍂𐌰𐌸𐌾𐍉𐌽 𐌸𐌹𐌶𐍉𐍃 𐍂𐌰𐌶𐌳𐍉𐍃 𐌰𐌹𐌸𐌸𐌰𐌿 𐌼𐌰𐌲𐍄 𐍃𐍉𐌺𐌾𐌰𐌽 𐌱𐌹 𐌲𐌰𐍅𐌹.",
"uls-search-placeholder": "𐍂𐌰𐌶𐌳𐌰 𐍃𐍉𐌺𐌴𐌹𐌽𐍃"
}

18
prototype/i18n/grc.json Normal file
View File

@@ -0,0 +1,18 @@
{
"@metadata": {
"authors": [
"PastelKos"
]
},
"uls-region-WW": "Οἰκουμενικῶς",
"uls-region-AM": "Ἀμερική",
"uls-region-AF": "Λιβύη",
"uls-region-EU": "Εὐρώπη",
"uls-region-AS": "Ἀσία",
"uls-region-ME": "Ἐγγὺς Ἀνατολή",
"uls-region-PA": "Εἰρηνικός",
"uls-region-all": "Ἅπασαι αἱ γλῶσσαι",
"uls-no-results-found": "Οὐδὲν Ἀποτέλεσμα",
"uls-common-languages": "Εἰσηγούμεναι γλῶσσαι",
"uls-search-placeholder": "Ζητεῖν γλῶσσαν"
}

22
prototype/i18n/gsw.json Normal file
View File

@@ -0,0 +1,22 @@
{
"@metadata": {
"authors": [
"Als-Holder",
"Terfili"
]
},
"uls-region-WW": "Wältwyt",
"uls-region-SP": "Spezial",
"uls-region-AM": "Amerika",
"uls-region-AF": "Afrika",
"uls-region-EU": "Europa",
"uls-region-AS": "Asie",
"uls-region-ME": "Mittlere Oschte",
"uls-region-PA": "Pazifik",
"uls-region-all": "Alli Sprooche",
"uls-no-results-found": "Kei Ergebnis gfunde",
"uls-common-languages": "Sprooche, wo vorgschlo sin",
"uls-no-results-suggestion-title": "Des chennt Di interessiere:",
"uls-search-help": "Du chasch noch em Name vu dr Sproch sueche, em ISO-Code vu dr Sproch oder Du gohsch iber e Region fir d Suechi.",
"uls-search-placeholder": "Nooch ere Sproch sueche"
}

24
prototype/i18n/gu.json Normal file
View File

@@ -0,0 +1,24 @@
{
"@metadata": {
"authors": [
"Ashok modhvadia",
"Harsh4101991",
"KartikMistry",
"Santhosh.thottingal"
]
},
"uls-region-WW": "વિશ્વભરમાં",
"uls-region-SP": "ખાસ",
"uls-region-AM": "અમેરિકા",
"uls-region-AF": "આફ્રિકા",
"uls-region-EU": "યુરોપ",
"uls-region-AS": "એશિયા",
"uls-region-ME": "મધ્ય પૂર્વ",
"uls-region-PA": "પૅસિફિક",
"uls-region-all": "બધી ભાષાઓ",
"uls-no-results-found": "કોઈ પરિણામ મળ્યા નહી",
"uls-common-languages": "સૂચિત ભાષાઓ",
"uls-no-results-suggestion-title": "તમને આમાં રસ હોઈ શકે છે:",
"uls-search-help": "તમે ભાષા નામ, સ્ક્રિપ્ટ નામ, ભાષા ISO કોડ દ્વારા શોધ કરી શકો છે અથવા તમે પ્રદેશ દ્વારા શોધ કરી શકો છો.",
"uls-search-placeholder": "ભાષા માટે શોધો"
}

20
prototype/i18n/hak.json Normal file
View File

@@ -0,0 +1,20 @@
{
"@metadata": {
"authors": [
"Jetlag"
]
},
"uls-region-WW": "全世界",
"uls-region-SP": "特別",
"uls-region-AM": "美洲",
"uls-region-AF": "非洲",
"uls-region-EU": "歐洲",
"uls-region-AS": "亞洲",
"uls-region-ME": "中東",
"uls-region-PA": "太平洋",
"uls-no-results-found": "尋毋到任何結果",
"uls-common-languages": "常用語言",
"uls-no-results-suggestion-title": "爾可能感興趣:",
"uls-search-help": "爾可以按語言名稱、程式碼名稱、語言ISO代碼搜索也可以按區域瀏覽",
"uls-search-placeholder": "語言搜索"
}

Some files were not shown because too many files have changed in this diff Show More