Page MenuHomePhorge

No OneTemporary

This file is larger than 256 KB, so syntax highlighting was skipped.
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1cad718319..bdd488e5c4 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,362 +1,362 @@
project(kdelibs)
# where to look first for cmake modules, before ${CMAKE_ROOT}/Modules/ is checked
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules")
# Make CPack available to easy generate binary packages
include(CPack)
################# set KDE specific information #################
set (KDE_VERSION_MAJOR 4)
set (KDE_VERSION_MINOR 7)
-set (KDE_VERSION_RELEASE 4)
+set (KDE_VERSION_RELEASE 95)
set (KDE_VERSION "${KDE_VERSION_MAJOR}.${KDE_VERSION_MINOR}.${KDE_VERSION_RELEASE}" )
-set (KDE_VERSION_STRING "${KDE_VERSION} (4.7.4)")
+set (KDE_VERSION_STRING "${KDE_VERSION} (4.8 RC1 (4.7.95)")
set (KDE_DISTRIBUTION_TEXT "compiled sources" CACHE STRING "Indicate the distribution in bug reports" )
# win32: give kde home in debug mode a different name as the release home dir because the settings and caches are different
if (WIN32 AND CMAKE_BUILD_TYPE STREQUAL "Debug")
set (_KDE_DEFAULT_HOME_POSTFIX "-debug" CACHE STRING "default KDE home directory postfix" )
endif (WIN32 AND CMAKE_BUILD_TYPE STREQUAL "Debug")
set (KDE_DEFAULT_HOME ".kde${_KDE_DEFAULT_HOME_POSTFIX}" CACHE STRING "The default KDE home directory" )
# this must be before FindKDE4Internal in order to preset the result of the visibility test, so that it will be skipped
option(KHTML_BUILD_TESTREGRESSION "Build KHTML's testregression. Note: this disables hidden visibility")
# Disable visibility if testregression is built, because the symbols are needed then
if (KHTML_BUILD_TESTREGRESSION)
set (__KDE_HAVE_GCC_VISIBILITY 0)
endif (KHTML_BUILD_TESTREGRESSION)
option(STATIC_LIBRARY "Build kdelibs as static libraries." FALSE)
################# write platform profile file which will be installed #################
include(CreateKDEPlatformProfile.cmake)
if(KDE_PLATFORM_FEATURE_DISABLE_DEPRECATED)
set(KDE_NO_DEPRECATED TRUE)
endif(KDE_PLATFORM_FEATURE_DISABLE_DEPRECATED)
############### Load the CTest options ###############
# CTestCustom.cmake has to be in the CTEST_BINARY_DIR.
# in the KDE build system, this is the same as CMAKE_BINARY_DIR.
configure_file(${CMAKE_SOURCE_DIR}/CTestCustom.cmake ${CMAKE_BINARY_DIR}/CTestCustom.cmake COPYONLY)
################# now find all used packages #################
set (QT_MIN_VERSION "4.7.0")
find_package(KDE4Internal REQUIRED)
include(KDE4Defaults)
include (MacroLibrary)
if (APPLE)
find_package(Carbon REQUIRED)
endif (APPLE)
if(UNIX AND Q_WS_X11)
#X11 Session Management (SM) is required
#X11_SM_FOUND is set in FindX11, which is required by KDE4Internal
if(NOT X11_SM_FOUND)
message(FATAL_ERROR "\nThe X11 Session Management (SM) development package could not be found.\nPlease install libSM.\n")
endif(NOT X11_SM_FOUND)
endif(UNIX AND Q_WS_X11)
#required features:
# Perl is used e.g. in khtml, kjs, kjsembed and others
find_package(Perl)
macro_log_feature(PERL_FOUND "Perl" "Needed for building kdelibs" "http://www.perl.org" TRUE "" "")
find_package(ZLIB)
macro_log_feature(ZLIB_FOUND "ZLib" "Support for gzip compressed files and data streams" "http://www.zlib.net" TRUE "" "Required by the core KDE libraries and some critical kioslaves")
set(STRIGI_MIN_VERSION 0.6.3)
find_package(Strigi)
if (WIN32)
set (STRIGI_REQUIRED FALSE)
set (STRIGI_EXTRA_TEXT "")
else (WIN32)
set (STRIGI_REQUIRED TRUE)
set (STRIGI_EXTRA_TEXT "Required by some critical kioslaves")
endif (WIN32)
macro_log_feature(STRIGI_FOUND "Strigi" "Desktop indexing and search support" "http://strigi.sourceforge.net" ${STRIGI_REQUIRED} "${STRIGI_MIN_VERSION}" ${STRIGI_EXTRA_TEXT})
set(LIBATTICA_MIN_VERSION "0.1.90")
find_package(LibAttica)
macro_log_feature(LIBATTICA_FOUND "libattica" "Support for Get Hot New Stuff" "git clone git://anongit.kde.org/attica" TRUE "${LIBATTICA_MIN_VERSION}" "")
#optional features
if(X11_FOUND)
#X11_Xrender discovery is done by FindX11
macro_log_feature(X11_Xrender_FOUND "X Rendering Extension (libXrender)" "Support for compositing, rendering operations, and alpha-blending" "http://www.x.org" FALSE "" "STRONGLY RECOMMENDED")
macro_bool_to_01(X11_Xscreensaver_FOUND HAVE_XSCREENSAVER)
macro_bool_to_01(X11_XSync_FOUND HAVE_XSYNC)
macro_log_feature(HAVE_XSCREENSAVER "X Screensaver Extension (libXss)" "Support for KIdleTime (fallback mode)" "http://www.x.org/" FALSE "" "")
macro_log_feature(HAVE_XSYNC "X Sync Extension (libXext)" "Efficient operation of KIdleTime" "http://www.x.org/" FALSE "" "STRONGLY RECOMMENDED")
if(NOT HAVE_XSYNC AND NOT HAVE_XSCREENSAVER)
message(FATAL_ERROR "\nNeither the XSync (libXext) nor XScreensaver (libXss) development package was found.\nPlease install one of them (XSync is recommended)\n")
endif(NOT HAVE_XSYNC AND NOT HAVE_XSCREENSAVER)
endif(X11_FOUND)
macro_optional_find_package(OpenSSL)
macro_log_feature(OPENSSL_FOUND "OpenSSL" "Support for secure network communications (SSL and TLS)" "http://openssl.org" FALSE "" "STRONGLY RECOMMENDED: KDE uses OpenSSL for the bulk of secure communications, including secure web browsing via HTTPS")
macro_optional_find_package(Libintl)
macro_log_feature(LIBINTL_FOUND "Libintl" "Support for multiple languages" "http://www.gnu.org/software/gettext" FALSE "" "STRONGLY RECOMMENDED: Enables KDE to be available in many different languages")
set(SOPRANO_MIN_VERSION "2.5.60")
macro_optional_find_package(Soprano ${SOPRANO_MIN_VERSION} COMPONENTS PLUGIN_RAPTORPARSER PLUGIN_REDLANDBACKEND)
macro_log_feature(SOPRANO_FOUND "Soprano" "Support for the Nepomuk semantic desktop system" "http://soprano.sourceforge.net" FALSE "${SOPRANO_MIN_VERSION}" "")
macro_log_feature(SOPRANO_PLUGIN_RAPTORPARSER_FOUND "Soprano Raptor Parser" "Support for the Nepomuk semantic desktop system" "http://soprano.sourceforge.net" FALSE "" "")
macro_log_feature(SOPRANO_PLUGIN_REDLANDBACKEND_FOUND "Soprano Redland Backend" "Support for the Nepomuk semantic desktop system" "http://soprano.sourceforge.net" FALSE "" "")
set(SHAREDDESKTOPONTOLOGIES_MIN_VERSION 0.6.50)
macro_optional_find_package(SharedDesktopOntologies ${SHAREDDESKTOPONTOLOGIES_MIN_VERSION})
macro_log_feature(SHAREDDESKTOPONTOLOGIES_FOUND "Shared desktop ontologies" "Support for the Nepomuk semantic desktop system" "http://oscaf.sourceforge.net" FALSE "${SHAREDDESKTOPONTOLOGIES_MIN_VERSION}" "")
macro_optional_find_package(QCA2)
macro_log_feature(QCA2_FOUND "QCA2" "Support for remote plasma widgets" "http://delta.affinix.com/qca" FALSE "2.0.0" "")
find_package(DBusMenuQt)
macro_log_feature(DBUSMENUQT_FOUND "DBusMenuQt" "Support for notification area menus via the DBusMenu protocol" "git clone git://gitorious.org/dbusmenu/dbusmenu-qt.git" TRUE "" "")
################# Disallow in-source build #################
macro_ensure_out_of_source_build("kdelibs requires an out of source build. Please create a separate build directory and run 'cmake path_to_kdelibs [options]' there.")
# ... and warn in case of an earlier in-source build
set(generatedFileInSourceDir EXISTS ${kdelibs_SOURCE_DIR}/kdemacros.h OR EXISTS ${kdelibs_SOURCE_DIR}/config.h)
if(${generatedFileInSourceDir})
message(STATUS "kdemacros.h or config.h exists in your source directory.")
message(FATAL_ERROR "Please run svn-clean, it would seem that your source directory has generated files in it.")
endif(${generatedFileInSourceDir})
#########################################################################
add_definitions(${QT_DEFINITIONS} ${KDE4_DEFINITIONS})
remove_definitions(-DQT3_SUPPORT_WARNINGS -DQT3_SUPPORT)
add_definitions(-DQT_USE_FAST_CONCATENATION -DQT_USE_FAST_OPERATOR_PLUS)
################# setup the include directories #################
# for including config.h and for includes like <kparts/foo.h>
include_directories( ${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}/interfaces)
if(QCA2_FOUND)
include_directories(
${QCA2_INCLUDE_DIR}
)
endif(QCA2_FOUND)
# Those variables for are only valid inside of kdelibs, of course.
# Use the one variable for the lib you depend upon.
# E.g. kdeui uses ${KDE4_KDECORE_INCLUDES}. Something that depends on kparts uses ${KDE4_KPARTS_INCLUDES}.
set(KDE4_KJS_INCLUDES ${CMAKE_SOURCE_DIR}/kjs
${CMAKE_BINARY_DIR}/kjs)
if(NOT WINCE)
set(KDE4_KDECORE_INCLUDES ${KDE4_KJS_INCLUDES} )
endif(NOT WINCE)
# kdecore depends on Qt (need only headers from kjs)
set(KDE4_KDECORE_INCLUDES ${KDE4_KDECORE_INCLUDES}
${CMAKE_SOURCE_DIR}/kdecore
${CMAKE_BINARY_DIR}/kdecore
${CMAKE_SOURCE_DIR}/kdecore/compression
${CMAKE_SOURCE_DIR}/kdecore/config
${CMAKE_SOURCE_DIR}/kdecore/date
${CMAKE_SOURCE_DIR}/kdecore/io
${CMAKE_SOURCE_DIR}/kdecore/jobs
${CMAKE_SOURCE_DIR}/kdecore/kernel
${CMAKE_SOURCE_DIR}/kdecore/auth
${CMAKE_SOURCE_DIR}/kdecore/network
${CMAKE_SOURCE_DIR}/kdecore/services
${CMAKE_SOURCE_DIR}/kdecore/localization
${CMAKE_SOURCE_DIR}/kdecore/sycoca
${CMAKE_SOURCE_DIR}/kdecore/text
${CMAKE_SOURCE_DIR}/kdecore/util
${CMAKE_SOURCE_DIR}/kdecore/sonnet
${QT_INCLUDES}
${_KDE4_PLATFORM_INCLUDE_DIRS})
# kdeui depends on kdecore
set(KDE4_KDEUI_INCLUDES ${CMAKE_SOURCE_DIR}/kdeui
${CMAKE_SOURCE_DIR}/kdeui/actions
${CMAKE_SOURCE_DIR}/kdeui/colors
${CMAKE_SOURCE_DIR}/kdeui/config
${CMAKE_SOURCE_DIR}/kdeui/dialogs
${CMAKE_SOURCE_DIR}/kdeui/findreplace
${CMAKE_SOURCE_DIR}/kdeui/fonts
${CMAKE_SOURCE_DIR}/kdeui/icons
${CMAKE_SOURCE_DIR}/kdeui/itemviews
${CMAKE_SOURCE_DIR}/kdeui/jobs
${CMAKE_SOURCE_DIR}/kdeui/kernel
${CMAKE_SOURCE_DIR}/kdeui/notifications
${CMAKE_SOURCE_DIR}/kdeui/paged
${CMAKE_SOURCE_DIR}/kdeui/plotting
${CMAKE_SOURCE_DIR}/kdeui/shortcuts
${CMAKE_SOURCE_DIR}/kdeui/sonnet
${CMAKE_SOURCE_DIR}/kdeui/util
${CMAKE_SOURCE_DIR}/kdeui/widgets
${CMAKE_SOURCE_DIR}/kdeui/windowmanagement
${CMAKE_SOURCE_DIR}/kdeui/xmlgui
${KDE4_KDECORE_INCLUDES})
# kio depends on kdeui
set(KDE4_KIO_INCLUDES ${CMAKE_SOURCE_DIR}/kio
${CMAKE_SOURCE_DIR}/kio/bookmarks
${CMAKE_SOURCE_DIR}/kio/kio
${CMAKE_SOURCE_DIR}/kio/kfile
${KDE4_KDEUI_INCLUDES})
# kpty
set(KDE4_KPTY_INCLUDES ${CMAKE_SOURCE_DIR}/kpty ${KDE4_KIO_INCLUDES} )
# kparts depends on kio
set(KDE4_KPARTS_INCLUDES ${CMAKE_SOURCE_DIR}/kparts
${KDE4_KIO_INCLUDES})
# kde3support depends on kparts
set(KDE4_KDE3SUPPORT_INCLUDES ${CMAKE_SOURCE_DIR}/kde3support
${CMAKE_SOURCE_DIR}/kde3support/kdecore
${CMAKE_SOURCE_DIR}/kde3support/kdeui
${CMAKE_SOURCE_DIR}/kde3support/kio
${KDE4_KPARTS_INCLUDES})
if(NOT WINCE)
set(KDE4_KHTML_INCLUDES ${CMAKE_SOURCE_DIR}/khtml)
endif(NOT WINCE)
################# configure checks and create the configured files #################
if(WINCE)
set(STATIC_LIBRARY ON)
add_definitions(-DSTATIC_INSTALL_PATH=L\\\"/programme/kde\\\")
endif(WINCE)
if(STATIC_LIBRARY)
set(LIBRARY_TYPE STATIC)
add_definitions(-DKDELIBS_STATIC_LIBS)
message(STATUS "Building kdelibs as static libraries")
else(STATIC_LIBRARY)
set(LIBRARY_TYPE SHARED)
endif(STATIC_LIBRARY)
# ACL stuff (used in kio/ and kioslaves/)
macro_optional_find_package(ACL)
macro_bool_to_01(ACL_FOUND HAVE_LIBACL HAVE_POSIX_ACL)
macro_log_feature(ACL_FOUND "LibACL" "Support for manipulating access control lists" "ftp://oss.sgi.com/projects/xfs/cmd_tars" FALSE "" "STRONGLY RECOMMENDED")
configure_file(config-acl.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-acl.h )
include(ConfigureChecks.cmake)
# Actually nepomuk is not optional, without it other KDE modules don't build,
# so this must be fixed. Alex
if(Soprano_FOUND AND SHAREDDESKTOPONTOLOGIES_FOUND)
set(HAVE_NEPOMUK true)
include(SopranoAddOntology)
add_subdirectory(nepomuk)
endif(Soprano_FOUND AND SHAREDDESKTOPONTOLOGIES_FOUND)
# now create config headers
configure_file(config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h )
configure_file(config-prefix.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-prefix.h )
configure_file(config-compiler.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-compiler.h )
configure_file(config-pty.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-pty.h )
configure_file(config-nepomuk.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-nepomuk.h )
configure_file(kdemacros.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/kdemacros.h )
# these two calls here should go somewhere else, Alex
check_library_exists(nsl gethostbyname "" HAVE_NSL_LIBRARY)
check_library_exists(socket connect "" HAVE_SOCKET_LIBRARY)
################# list the subdirectories #################
add_subdirectory( cmake )
add_subdirectory( kdecore )
add_subdirectory( kdeui )
if (UNIX)
add_subdirectory( kpty )
add_subdirectory( kdesu )
endif (UNIX)
if(NOT WINCE)
add_subdirectory( kjs )
add_subdirectory( kjsembed )
endif(NOT WINCE)
add_subdirectory( kio )
add_subdirectory( solid )
add_subdirectory( kded )
if (QT_QT3SUPPORT_FOUND)
add_subdirectory( kde3support )
endif (QT_QT3SUPPORT_FOUND)
add_subdirectory( kfile )
add_subdirectory( kconf_update )
if(NOT WINCE)
add_subdirectory( kdoctools )
endif(NOT WINCE)
add_subdirectory( kioslave )
add_subdirectory( knewstuff )
add_subdirectory( kparts )
add_subdirectory( kutils )
add_subdirectory( licenses )
add_subdirectory( mimetypes )
add_subdirectory( kinit )
add_subdirectory( threadweaver )
add_subdirectory( sonnet )
if(NOT WINCE)
add_subdirectory( khtml )
endif(NOT WINCE)
add_subdirectory( interfaces )
#if ( NOT CMAKE_CROSSCOMPILING AND QT_QTDESIGNER_FOUND )
add_subdirectory( kdewidgets )
#endif ( NOT CMAKE_CROSSCOMPILING AND QT_QTDESIGNER_FOUND )
add_subdirectory( knotify )
if(NOT WINCE)
add_subdirectory( kimgio )
endif(NOT WINCE)
add_subdirectory( dnssd )
add_subdirectory( kross )
add_subdirectory( security )
if(NOT WINCE)
add_subdirectory( plasma )
endif(NOT WINCE)
add_subdirectory( kunitconversion )
add_subdirectory( kdewebkit )
add_subdirectory( includes )
add_subdirectory( experimental )
macro_optional_add_subdirectory( doc )
################# write dependency file which will be installed #################
# Used in configure_file() and install(EXPORT)
set(KDE4_TARGET_PREFIX KDE4__)
include(CreateKDELibsDependenciesFile.cmake)
################# install files #################
install( FILES ${CMAKE_CURRENT_BINARY_DIR}/kdemacros.h DESTINATION ${INCLUDE_INSTALL_DIR} )
install( FILES ${CMAKE_CURRENT_BINARY_DIR}/config-nepomuk.h DESTINATION ${INCLUDE_INSTALL_DIR} )
install( FILES ${CMAKE_CURRENT_BINARY_DIR}/KDELibsDependencies.cmake DESTINATION ${DATA_INSTALL_DIR}/cmake/modules)
install( FILES ${CMAKE_CURRENT_BINARY_DIR}/KDEPlatformProfile.cmake DESTINATION ${DATA_INSTALL_DIR}/cmake/modules)
# run a script before installing the exports files which deletes previously installed
# configuration specific export files KDELibs4(Library|Tools)Targets-<config>.cmake
# if the main exports file KDELibs4(Library|Tools)Targets.cmake has changed. This makes sure
# that this main file doesn't include older and different configuration specific exports files,
# which might have a different set of targets or targets with different names.
# The code for installing the exports files will soon go into a macro. Alex
install(CODE "set(EXPORT_FILES KDELibs4LibraryTargets.cmake KDELibs4ToolsTargets.cmake)"
CODE "set(EXPORT_INSTALL_DIR \"${DATA_INSTALL_DIR}/cmake/modules\")"
SCRIPT "${CMAKE_SOURCE_DIR}/cmake/modules/check_installed_exports_file.cmake" )
install( EXPORT kdelibsLibraryTargets DESTINATION ${DATA_INSTALL_DIR}/cmake/modules NAMESPACE ${KDE4_TARGET_PREFIX} FILE KDELibs4LibraryTargets.cmake )
install( EXPORT kdelibsToolsTargets DESTINATION ${DATA_INSTALL_DIR}/cmake/modules NAMESPACE ${KDE4_TARGET_PREFIX} FILE KDELibs4ToolsTargets.cmake )
# the following will be the correct locations once cmake has the improved FIND_PACKAGE()
# install( FILES ${CMAKE_CURRENT_BINARY_DIR}/KDELibsDependencies.cmake DESTINATION ${PLUGIN_INSTALL_DIR}/cmake RENAME KDE4Config.cmake)
macro_display_feature_log()
diff --git a/interfaces/kimproxy/interface/dbusinstantmessenger.desktop b/interfaces/kimproxy/interface/dbusinstantmessenger.desktop
index 1d6c41a39a..f6f6ecad3c 100644
--- a/interfaces/kimproxy/interface/dbusinstantmessenger.desktop
+++ b/interfaces/kimproxy/interface/dbusinstantmessenger.desktop
@@ -1,88 +1,88 @@
[Desktop Entry]
Type=ServiceType
X-KDE-ServiceType=DBUS/InstantMessenger
Comment=Instant Messenger with a D-Bus interface
Comment[ar]=مرسال فوري مع واجهة D-Bus
Comment[as]=এটা D-Bus সংযোগ মাধ্যম থকা Instant Messenger
Comment[ast]=Mensaxería nel intre con interfaz D-Bus
Comment[be]=Імгненны абвестнік з інтэрфейсам D-Bus
Comment[be@latin]=Kamunikatar z interfejsam „D-Bus”
Comment[bg]=Програма за съобщения в реално време с интерфейс DCOP
Comment[bn]=ডি-বাস (DBUS) ইন্টারফেস সহ ইনস্ট্যান্ট মেসেঞ্জার
Comment[bn_IN]=D-Bus ইন্টারফেসসহ ইনস্ট্যান্ট বার্তা আদান-প্রদান ব্যবস্থা
Comment[bs]=Brzi glasnik sa d‑bus sučeljem
Comment[ca]=Missatgeria instantània amb una interfície D-Bus
Comment[ca@valencia]=Missatgeria instantània amb una interfície D-Bus
Comment[cs]=Komunikátor s DBUS rozhraním
Comment[csb]=Internetowi kòmùnikator z interfejsã D-Bus
Comment[da]=Instant Messenger med D-Bus-grænseflade
Comment[de]=Instant Messenger mit D-Bus-Schnittstelle
Comment[el]=Στιγμιαίος αποστολέας μηνυμάτων με διεπαφή D-Bus
Comment[en_GB]=Instant Messenger with a D-Bus interface
Comment[eo]=Tujmesaĝilo kun D-Bus-interfaco
Comment[es]=Mensajería instantánea con interfaz D-Bus
Comment[et]=Kiirsuhtlemisrakendus D-Bus-liidesega
Comment[eu]=Berehalako mezularitza D-Bus interfazearekin
Comment[fa]=پیام‌رسان فوری با یک واسط D-Bus
Comment[fi]=Pikaviestiohjelma D-Bus-rajapinnalla
Comment[fr]=Messagerie instantanée munie d'une interface D-Bus
Comment[fy]=Instant Messenger mei in D-Bus-ynterface
Comment[ga]=Clár teachtaireachtaí meandaracha le comhéadan D-Bus
-Comment[gl]=Mensaxaría instantánea con interface D-Bus
+Comment[gl]=Mensaxería instantánea con interface D-Bus
Comment[gu]=D-Bus ઇન્ટરફેસ સાથે ઇન્સ્ટન્ટ મેસેન્જર
Comment[he]=תוכנת מסרים מידיים עם ממשק D-Bus
Comment[hi]=डी-बस इंटरफ़ेस के साथ इंस्टैंट मैसेंजर
Comment[hne]=डी-बस इंटरफेस के साथ इंस्टैंट मैसेंजर
Comment[hr]=Aplikacija za komunikaciju s D-Bus sučeljem
Comment[hsb]=Instant Messenger z DCOP-interfejsom
Comment[hu]=Azonnali üzenetküldő D-Bus felülettel
Comment[ia]=Messagero Instante con un interfacie D-Bus
Comment[id]=Pesan Instan dengan antarmuka D-Bus
Comment[is]=Spjallforrit með D-Bus viðmóti
Comment[it]=Messaggistica istantanea con un'interfaccia D-Bus
Comment[ja]=D-Bus インターフェースを持つインスタントメッセンジャー
Comment[kk]=D-Bus интерфейсті лезде хабарласу бағдарламасы
Comment[km]=​កម្មវិធី​ផ្ញើ​សារ​បន្ទាន់​ដែល​មាន​ចំណុច​ប្រទាក់ DCOP
Comment[kn]=D-Bus ಸಂಪರ್ಕಸಾಧನದೊಂದಿಗಿನ (interface) ತಕ್ಷಣ ಓಲೆಕಾರ
Comment[ko]=D-Bus 인터페이스를 사용하는 인스턴트 메신저
Comment[ku]=Peyamkera Têgihan bi navrû ya D-Bus
Comment[lt]=Momentinių žinučių klientas su D-Bus sąsaja
Comment[lv]=Tūlītējās ziņapmaiņas programma ar D-Bus saskarni
Comment[mai]=डी-बस इंटरफ़ेस केर सँग इंस्टैंट मैसेंजर
Comment[mk]=Инстант гласник (Messenger) со D-Bus интерфејс
Comment[ml]=ഡി-ബസ് വിനിമയതലമുള്ള ഇന്‍സ്റ്റന്റ് മെസഞ്ചര്‍
Comment[mr]=D-Bus संवादपटरहीत जलद संदेशवाहक
Comment[ms]=Utusan Segera dengan antaramuka D-Bus
Comment[nb]=Lynmeldingsprogram med D-Bus-grensesnitt
Comment[nds]=Kortnarichten-Maker mit en D-Bus-Koppelsteed
Comment[ne]=D-Bus इन्टरफेससँग इन्सट्यान्ट मेसेन्जर
Comment[nl]=Instant-messenger met een D-Bus-interface
Comment[nn]=Lynmeldingsprogram med D-Bus-grensesnitt
Comment[or]=D-Bus ଅନ୍ତରାପୃଷ୍ଠ ସହିତ ତୁରନ୍ତ ସନ୍ଦେଶ ଦୁତ
Comment[pa]=ਇੱਕ D-Bus ਇੰਟਰਫੇਸ ਲਈ ਇੱਕ ਮੌਕਾ ਮੈਸੈਂਜ਼ਰ
Comment[pl]=Komunikator internetowy z interfejsem D-Bus
Comment[pt]=Mensageiro Instantâneo com interface D-Bus
Comment[pt_BR]=Mensageiro instantâneo com interface D-Bus
Comment[ro]=Mesagerie instantanee cu interfață D-Bus
Comment[ru]=Клиент обмена мгновенными сообщениями с интерфейсом D-Bus
Comment[se]=Šleađgadiehtoprográmma mas lea D-Bus-lákta
Comment[sk]=Instant Messenger s rozhraním D-Bus
Comment[sl]=Takojšni sporočilnik z vmesnikom D-Bus
Comment[sq]=Mesazher i çastit me ndërfaqe D-Bus
Comment[sr]=Брзи гласник са д‑бус сучељем
Comment[sr@ijekavian]=Брзи гласник са д‑бус сучељем
Comment[sr@ijekavianlatin]=Brzi glasnik sa D‑Bus sučeljem
Comment[sr@latin]=Brzi glasnik sa D‑Bus sučeljem
Comment[sv]=Direktmeddelanden med ett D-Bus-gränssnitt
Comment[ta]=D-Bus இடைமுகத்தோடுக் கூடிய உடனடி தூதர்
Comment[te]=డి-బస్ ఇంటర్ఫెస్ కలిగివున్న ఇంస్టెంట్ మెస్సెన్జర్
Comment[tg]=Барномаи паёмнависӣ бо интерфейси D-Bus
Comment[th]=โปรแกรมส่งข้อความด่วนทันใจ ด้วยส่วนติดต่อกับ D-Bus
Comment[tr]=D-Bus Arayüzü Kullanan Anında Mesajlaşma Uygulaması
Comment[ug]=D-Bus ئېغىزى بار مۇڭداشقۇ
Comment[uk]=Програма миттєвого зв'язку, у якій передбачено інтерфейс D-Bus
-Comment[vi]=Bộ tin nhắn có giao diện D-Bus
+Comment[vi]=Trình nhắn tin tức thời với giao diện D-Bus
Comment[wa]=Messaedjreye sol moumint avou ene eterface D-Bus
Comment[x-test]=xxInstant Messenger with a D-Bus interfacexx
Comment[zh_CN]=带 D-Bus 接口的即时通讯程序
Comment[zh_TW]=DBUS 介面的即時通訊系統
diff --git a/interfaces/kimproxy/interface/kcm_instantmessenger.desktop b/interfaces/kimproxy/interface/kcm_instantmessenger.desktop
index 7ceeba59cb..5446c9dc71 100644
--- a/interfaces/kimproxy/interface/kcm_instantmessenger.desktop
+++ b/interfaces/kimproxy/interface/kcm_instantmessenger.desktop
@@ -1,167 +1,168 @@
# ctxt: standard desktop component
Name=Instant Messenger
Name[ar]=مرسال فوري
Name[ast]=Mensaxeru nel intre
Name[be@latin]=Kamunikatar
Name[bg]=Моментни съобщения
Name[bn]=ইনস্ট্যান্ট মেসেঞ্জার
Name[bs]=brzi glasnik
Name[ca]=Missatgeria instantània
Name[ca@valencia]=Missatgeria instantània
Name[cs]=Komunikátor
Name[csb]=Internetowi kòmùnikator
Name[da]=Instant Messenger
Name[de]=Instant Messenger
Name[el]=Στιγμιαίος αποστολέας
Name[en_GB]=Instant Messenger
Name[eo]=Tujmesaĝilo
Name[es]=Mensajería instantánea
Name[et]=Kiirsuhtlus
Name[eu]=Berehalako mezularitza
Name[fa]=پیام‌رسان فوری
Name[fi]=Pikaviestiohjelma
Name[fr]=Messagerie instantanée
Name[fy]=Instant Messenger
Name[ga]=Clár teachtaireachtaí meandaracha
Name[gl]=Mensaxaría instantánea
Name[gu]=ઇન્સ્ટન્ટ મેસેન્જર
Name[he]=מסרים מידיים
Name[hi]=इंसटैंट मैसेंजर
Name[hr]=Aplikacija za čavrljanje
Name[hu]=Azonnali üzenetküldő
Name[ia]=Messagero Instante
Name[id]=Pesan Instan
Name[is]=Spjallforrit
Name[it]=Messaggistica istantanea
Name[ja]=インスタントメッセンジャー
Name[kk]=Лезде хабарласу
Name[km]=កម្មវិធី​វិធី​ផ្ញើសារ​បន្ទាន់
Name[kn]=ತಕ್ಷಣ ಓಲೆಕಾರ
Name[ko]=인스턴트 메신저
Name[ku]=Peyamkera Têgihan
Name[lt]=Momentinių žinučių klientas
Name[lv]=Tūlītējais ziņotājs
Name[ml]=ഇന്‍സ്റ്റന്റ് മെസഞ്ചര്‍
Name[ms]=Utusan Segera
Name[nb]=Lynmelding
Name[nds]=Kortnarichten-Maker
Name[nl]=Instant messenger
Name[nn]=Lynmeldingsprogram
Name[pa]=ਮੌਕਾ ਮੈਸੈਂਜ਼ਰ
Name[pl]=Komunikator internetowy
Name[pt]=Mensageiro Instantâneo
Name[pt_BR]=Mensageiro instantâneo
Name[ro]=Mesagerie instantanee
Name[ru]=Обмен мгновенными сообщениями
Name[se]=Šleađgadiehtoprográmma
Name[sk]=Instant Messenger
Name[sl]=Takojšni sporočilnik
Name[sr]=брзи гласник
Name[sr@ijekavian]=брзи гласник
Name[sr@ijekavianlatin]=brzi glasnik
Name[sr@latin]=brzi glasnik
Name[sv]=Direktmeddelanden
Name[ta]=உடனடி தூதர்
Name[tg]=Паёмнависӣ
Name[th]=ส่งข้อความด่วนทันใจ
Name[tr]=Anında Mesajlaşma Uygulaması
Name[ug]=مۇڭداشقۇ
Name[uk]=Програма для миттєвого зв'язку
+Name[vi]=Trình nhắn tin tức thời
Name[wa]=Messaedjî sol moumint
Name[x-test]=xxInstant Messengerxx
Name[zh_CN]=即时通讯程序
Name[zh_TW]=即時通訊
Comment=The instant messenger allows two-way chat between individuals and groups.
Comment[af]=Die Kitsboodskapper laat twee rigting kommunikasie tussen individue en groepe toe.
Comment[ar]=يسمح المرسال الفوري بمحادثات من اتجاهين بين الأفراد والمجموعات.
Comment[as]=এই instant messenger এ মানুহ আৰু সমষ্টিৰ মাজত দুই ফালৰ পৰাই কথা পাতিব দিয়ে ।
Comment[ast]=El mensaxeru nel intre permite charres bidireicionales ente individuos y grupos.
Comment[be]=Імгненны абвеснік дазваляе весці размову двум і больш асобам/гуртам.
Comment[be@latin]=Kamunikatar dazvalaje vieści razmovu – pryvatnuju albo hurtom.
Comment[bg]=Разговор между различни хора в реално време.
Comment[bn]=ইনস্ট্যান্ট মেসেঞ্জার একাধিক ব্যক্তি বা গোষ্ঠীকে দ্বিমুখী বার্তালাপ বা আড্ডার সুযোগ দেয়।
Comment[bn_IN]=ইনস্ট্যান্ট মেসেঞ্জারের সাহায্যে ব্যক্তি ও দলের সদস্যরা একে অপরের সাথে কথা বলতে সক্ষম হবে।
Comment[bs]=Brzim glasnikom možete ćaskati sa drugim pojedincima i u grupama.
Comment[ca]=La missatgeria instantània permet converses en dos sentits entre individus i grups.
Comment[ca@valencia]=La missatgeria instantània permet converses en dos sentits entre individus i grups.
Comment[cs]=Komunikátor vám umožňuje obousměrný rozhovor s jednotlivci nebo skupinami.
Comment[csb]=Internetowi kòmùnikator dôwô mòżnota kôrbionczi midzë lëdzama ë karnama.
Comment[cy]=Mae'r negesydd chwim yn caniatàu sgwrs dwy-ffordd rhwng unigolion a grwpiau.
Comment[da]=Instant messenger tillader tovejs chat mellem individer og grupper.
Comment[de]=Der Instant Messenger ermöglicht Chats zwischen Personen und Gruppen in jede Richtung.
Comment[el]=Ο στιγμιαίος αποστολέας επιτρέπει τη συζήτηση μεταξύ ατόμων και ομάδων.
Comment[en_GB]=The instant messenger allows two-way chat between individuals and groups.
Comment[eo]=La tujmesaĝilo ebligas ambaŭdirektan paroladon inter homoj kaj grupoj.
Comment[es]=El programa de mensajería instantánea permite la conversación bidireccional entre personas y grupos.
Comment[et]=Kiirsuhtlus võimaldab üksikisikute ja gruppide kahepoolset vestlust.
Comment[eu]=Berehalako mezularitzak banan-banako edo taldeen arteko berriketan aritzeko.
Comment[fa]=پیام‌رسان فوری امکان گپ دو طرفه بین افراد و گروهها را می‌دهد.
Comment[fi]=Pikaviestiohjelman avulla voidaan keskustella kahden kesken tai ryhmissä.
Comment[fr]=La messagerie instantanée permet un dialogue bidirectionnel entre individus et groupes.
Comment[fy]=Mei de instant messenger kinne jo twaspraak hâlde mei in yndividu en groepen.
Comment[ga]=Is féidir comhrá déthreoch a dhéanamh idir daoine agus grúpaí leis an gclár teachtaireachtaí meandaracha.
Comment[gl]=O instant messenger permite conversas nos dous sentidos entre individuos e grupos.
Comment[gu]=ઇન્સ્ટન્ટ મેસેન્જર એ બે જણાં અને સમૂહોને દ્રિ-પક્ષી વાતચીત કરવાની સુવિધા આપે છે.
Comment[he]=תוכנת מסרים מידיים מאפשרת לשוחח ברשת בין שני אנשים או יותר.
Comment[hi]=दो व्यक्तियों या समूहों के बीच दो-तरफ़ा गपशप की सुविधा इंस्टैंट मैसेंजर से मिलती है.
Comment[hne]=दू मनखे या समूह मन के बीच दू-तरफा गपसप के सुविधा इंस्टैंट मैसेंजर से मिलथे.
Comment[hr]=Aplikacija za čavrljanje omogućuje dvosmjerno dopisivanje između pojedinaca i grupa.
Comment[hsb]=Instant messenger zmóžni jednotliwcam a skupinam spěšnu wuměnu zdźělenkow.
Comment[hu]=Interaktív társalgást tesz lehetővé az interneten keresztül két személy vagy csoport között.
Comment[ia]=Le messagero Instante permitte le confabulation de duo vias inter individuos e gruppos
Comment[id]=Pesan instan memungkinkan percakapan dua-arah antar individu dan grup.
Comment[is]=Spjallforritið gerir einstaklingum og hópum kleyft að spjalla saman á einfaldan máta.
Comment[it]=La messaggistica istantanea permette di chiacchierare tra due persone o in gruppo.
Comment[ja]=インスタントメッセンジャーは個人とグループとの双方向チャットを可能にします。
Comment[kk]=Лезде хабарласу жеке тұлға және топтар араларында әңгімелесу мүмкіндігін береді.
-Comment[km]=កម្មវិធី​ផ្ញើសារ​បន្ទាន់​អនុញ្ញាត​ឲ្យ​ជជែក​កំសាន្ដ​បាន​តាម​ពីរ​របៀប​រវាង​បុគ្គល និង​ក្រុម ។
+Comment[km]=កម្មវិធី​ផ្ញើ​សារ​បន្ទាន់​អនុញ្ញាត​ឲ្យ​ជជែក​កំសាន្ដ​បាន​តាម​ពីរ​របៀប​រវាង​បុគ្គល និង​ក្រុម ។
Comment[kn]=ತಕ್ಷಣ ಓಲೆಕಾರ ವ್ಯಕ್ತಿಗಳ ಮತ್ತು ಗುಂಪುಗಳ ನಡುವೆ ದ್ವಿಮಾರ್ಗೀಯ ಸಲ್ಲಾಪಕ್ಕೆ (two-way chat) ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ.
Comment[ko]=인스턴트 메신저를 사용하여 개인과 그룹 사이의 양방향 대화를 할 수 있습니다.
Comment[ku]=Peyamkera têgihan dihêle ku du rê yan ve hevpeyvîn di navbera şexsan û koman de bê kirin.
Comment[lb]=Den Instant Messenger erlaabt eng zwee-Weeër Kommunikatioun tëschent eenzelne Persounen a Gruppen.
Comment[lt]=Momentinių žinučių klientas kalbėtis individams ir grupėms.
Comment[lv]=Tūlītējais ziņotājs nodrošina divvirzienu tērzēšanu starp cilvēkiem un grupām.
Comment[mai]=दुइ लोकनिसभ अथवा समूहसभ केर बीच दुइ-तरफा गप्प सप्पक सुविधा इंस्टैंट मैसेंजर सँ भैटेछ.
Comment[mk]=Инстант гласникот овозможува двонасочна комуникација меѓу индивидуи и групи.
Comment[ml]=ഇന്‍സ്റ്റന്റ് മെസഞ്ചര്‍, വ്യക്തികളോ കൂട്ടങ്ങളോ തമ്മിലുള്ള കൊച്ചുവര്‍ത്തമാനം നടത്താന്‍ സഹായിക്കുന്നു
Comment[mr]=जलद संदेशवाहक वापरकर्ता व समुह यांच्यातील दुहेरी संवाद साधण्यास परवानगी देतो.
Comment[ms]=Utusan segera membenarkan perbualan di antara individu dan kumpulan.
Comment[nb]=Et lynmeldingsprogram som gjør det mulig å føre toveis samtale mellom enkeltpersoner og grupper.
Comment[nds]=Mit den Kortnarichten-Maker köönt enkelte Minschen oder Gruppen ünnerenanner snacken.
Comment[ne]=इन्सट्यान्ट मेसेन्जरले एक अर्का र समूहबीच दोहोरो कुराकानीका लागि अनुमति दिन्छ ।
Comment[nl]=De instant messenger maakt directe communicatie tussen personen of groepen mogelijk.
Comment[nn]=Lynmeldingsprogram gjer det mogleg for enkeltpersonar og grupper å prata saman.
Comment[or]=The instant messenger allows two-way chat between individuals and groups.
Comment[pa]=ਇਹ ਮੌਕਾ ਮੈਸੈਂਜ਼ਰ ਇੱਕਲੇ ਅਤੇ ਗਰੁੱਪ ਵਿਚਕਾਰ ਦੋ ਪਾਸੀ ਗਲਬਾਤ ਲਈ ਸਹਾਇਕ ਹੈ
Comment[pl]=Komunikator internetowy umożliwia pogawędki między dwiema osobami lub grupami osób.
Comment[pt]=O mensageiro instantâneo permite conversar entre dois extremos com indivíduos e com grupos.
Comment[pt_BR]=O mensageiro instantâneo possibilita o bate-papo entre pessoas e grupos.
Comment[ro]=Aplicația de mesagerie instantanee permite convorbiri între persoane sau grupuri de persoane.
Comment[ru]=Клиент обмена мгновенными сообщениями служит для обмена сообщениями между людьми и между группами.
Comment[se]=Šleađgadiehtoprográmma gos olbmot ja joavkkut sáhttet buillardit (Chat).
Comment[sk]=Instant messenger umožňuje obojsmerný rozhovor medzi jednotlivcami a skupinami.
Comment[sl]=Takojšni sporočilnik omogoča dvosmeren klepet med posamezniki in skupinami.
Comment[sr]=Брзим гласником можете ћаскати са другим појединцима и у групама.
Comment[sr@ijekavian]=Брзим гласником можете ћаскати са другим појединцима и у групама.
Comment[sr@ijekavianlatin]=Brzim glasnikom možete ćaskati sa drugim pojedincima i u grupama.
Comment[sr@latin]=Brzim glasnikom možete ćaskati sa drugim pojedincima i u grupama.
Comment[sv]=Direktmeddelanden möjliggör tvåvägschatt mellan individer och grupper.
Comment[ta]=தனிநபர், குழுக்களுக்கிடையே இருவழி உரையாடலை உடனடி தூதர் அனுமதிக்கும்
Comment[te]=ఇంస్టెంట్ మెస్సెన్జర్ వ్యక్తు లు మరయు గుంపుల తొ ఇరువయపుల నుంచి సంబాషించవచ్చు
Comment[tg]=Барномаи паёмнависӣ барои ирсоли иттилооти шахсӣ ва гурӯҳӣ.
Comment[th]=โปรแกรมส่งข้อความด่วนทันใจทีจะอนุญาตให้มีการพูดคุยสองทาง ทั้งระหว่างบุคคลและกลุ่ม
Comment[tr]=Anında mesajlaşma uygulaması bireylerin ve grupların karşılıklı sohbet etmesini sağlar.
Comment[ug]=بۇ مۇڭداشقۇ شەخسىي ۋە گۇرۇپپا ئارىسىدا قوش يۆنىلىشتە ئۇچۇر ئالماشتۇرۇشقا يول قويىدۇ.
Comment[uk]=Програма для миттєвого зв'язку дозволяє розмовляти з іншою людиною чи групою людей.
-Comment[vi]=Bộ tin nhắn tức khắc cho phép trò chuyện hai chiều giữa người riêng và nhóm khác nhau.
+Comment[vi]=Trình nhắn tin tức thời cho phép trò chuyện hai chiều giữa các cá nhân hay nhóm với nhau.
Comment[wa]=Li messaedjreye sol moumint permete di berdeler dins les deus sinses etur deus djins ou e groupe.
Comment[x-test]=xxThe instant messenger allows two-way chat between individuals and groups.xx
Comment[zh_CN]=这个即时通讯程序允许在个人和群组之间双向聊天。
Comment[zh_HK]=即時通訊軟件可以讓用戶和別的用戶或羣組通訊。
Comment[zh_TW]=即時通訊系統允許兩個人或兩個群組間的聊天與對話
ServiceTypeToConfigure=DBUS/InstantMessenger
defaultImplementation=kopete
storeInFile=default_components
valueSection=InstantMessenger
valueName=imClient
configurationType=component
diff --git a/interfaces/ktexteditor/kcm_ktexteditor.desktop b/interfaces/ktexteditor/kcm_ktexteditor.desktop
index 19ad154b0a..94e88f5a33 100644
--- a/interfaces/ktexteditor/kcm_ktexteditor.desktop
+++ b/interfaces/ktexteditor/kcm_ktexteditor.desktop
@@ -1,169 +1,170 @@
# ctxt: standard desktop component
Name=Embedded Text Editor
Name[ar]=محرر نصوص مدمج
Name[ast]=Editor de testu encrustáu
Name[be@latin]=Unutrany tekstavy redaktar
Name[bg]=Вграден текстов редактор
Name[bn]=অভ্যন্তরীন টেক্সট সম্পাদক
Name[bs]=ugnežđeni uređivač teksta
Name[ca]=Editor de text encastat
Name[ca@valencia]=Editor de text encastat
Name[cs]=Zabudovaný textový editor
Name[csb]=Òbsôdzony editor tekstu
Name[da]=Indlejret tekstredigering
Name[de]=Eingebetteter Texteditor
Name[el]=Ενσωματωμένος επεξεργαστής κειμένου
Name[en_GB]=Embedded Text Editor
Name[es]=Editor de texto integrado
Name[et]=Põimitud tekstiredaktor
Name[eu]=Kapsulatutako testu-editorea
Name[fa]=ویرایشگر متن توکار
Name[fi]=Upotettava tekstieditori
Name[fr]=Éditeur de texte intégré
Name[fy]=Ynsletten tekstbewurker
Name[ga]=Eagarthóir téacs leabaithe
Name[gl]=Editor de textos integrado
Name[gu]=જડિત લખાણ સંપાદક
Name[he]=עורך טקסט משובץ
Name[hi]=अंतर्निर्मित पाठ संपादक
Name[hr]=Ugrađeni uređivač teksta
Name[hu]=Beágyazott szövegszerkesztő
Name[ia]=Editor Interne de texto
Name[id]=Penyunting Teks Dapat Dibenamkan
Name[is]=Ívafinn textaritill
Name[it]=Editor di testi integrato
Name[ja]=埋め込みテキストエディタ
Name[kk]=Ендірілетін мәтін редакторы
Name[km]=កម្មវិធី​និពន្ធ​អត្ថបទ​ដែល​បាន​បង្កប់
Name[kn]=ಹುದುಗಿಸಲಾದ (ಎಂಬೆಡೆಡ್) ಪಠ್ಯ ಸಂಪಾದಕ
Name[ko]=끼워넣은 텍스트 편집기
Name[ku]=Edîtora Nivîsê yê Jixwe Heyî
Name[lt]=Įdėtas tekstų redaktorius
Name[lv]=Iegultais teksta redaktors
Name[ml]=തുന്നിച്ചേര്‍ത്ത ചെയ്ത എഴുത്തിടം
Name[ms]=Editor Teks Terbinadalam
Name[nb]=Innebygd skriveprogram
Name[nds]=Inbett Texteditor
Name[nl]=Ingebedde tekstbewerker
Name[nn]=Innebyggbart skriveprogram
Name[pa]=ਇੰਬੈੱਡ ਟੈਕਸਟ ਐਡੀਟਰ
Name[pl]=Osadzony edytor tekstu
Name[pt]=Editor de Texto Incorporado
Name[pt_BR]=Editor de texto integrado
Name[ro]=Editor de text înglobat
Name[ru]=Встроенный текстовый редактор
Name[se]=Vuojuhahtti čállinprográmma
Name[sk]=Vložený textový editor
Name[sl]=Vgrajeni urejevalnik besedil
Name[sr]=угнежђени уређивач текста
Name[sr@ijekavian]=угнијежђени уређивач текста
Name[sr@ijekavianlatin]=ugniježđeni uređivač teksta
Name[sr@latin]=ugnežđeni uređivač teksta
Name[sv]=Inbäddad texteditor
Name[ta]=உட்பொதிந்த உரைதிருத்தி
Name[tg]=Таҳриргари матни дарунсохт
Name[th]=ส่วนแก้ไขข้อความแบบฝังตัวได้
Name[tr]=Gömülü Metin Düzenleyici
Name[ug]=سىڭدۈرمە تېكىست تەھرىرلىگۈچ
Name[uk]=Вмонтований текстовий редактор
+Name[vi]=Trình soạn thảo văn bản nhúng
Name[wa]=Ravalé aspougneu di tecse
Name[x-test]=xxEmbedded Text Editorxx
Name[zh_CN]=嵌入式文本编辑器
Name[zh_TW]=嵌入式文字編輯器
Comment=The text editor service provides applications with a text viewer and editor. KDE applications that provide text editing facilities should use this service.
Comment[af]=Die teksredigeerderdiens verskaf programme met 'n teks aansig en redigeerder. KDE programme wat teksredigering fasiliteite verskaf, moet hierdie diens gebruik.
Comment[ar]=تقوم خدمة محرر النصوص بتزويد التطبيقات بمعاين نصوص ومحرر. يجب أن تستخدم تطبيقات كيدي التي تزود بتسهيلات تحرير النصوص هذه الخدمة.
Comment[as]=লিপি সম্পাদক সেৱাই এটা লিপি প্ৰদৰ্শক আৰু সম্পাদকৰ অনুপ্ৰয়োগ দিয়ে । যি KDE অনুপ্ৰয়োগে লিপি সম্পাদনৰ সুবিধা দিয়ে এই সেৱা ব্যৱহাৰ কৰিব লাগে ।
Comment[ast]=El serviciu d'editor de testu ufre a les aplicaciones un visor y editor de testu. Les aplicaciones KDE qu'ufren facilidáes d'edición de testu habríen d'usar esti serviciu.
Comment[be]=Сервіс тэкставага рэдактара дазваляе праглядаць і рэдагаваць тэкст у праграмах. Праграмы KDE, якія выконваюць гэтыя функцыі, павінны працаваць з гэтым сервісам.
Comment[be@latin]=Słužba redahavańnia tekstaŭ zabiaśpiečvaje aplikacyi prahladnikam i redaktaram tekstaŭ. Aplikacyi KDE, jakija pracujuć z tekstami, pavinnyja karystacca hetaj słužbaj.
Comment[bg]=Текстовия редактор, представлява компонент за вграждане в другите програми, който предоставя функционалност за разглеждане и редактиране на текстови файлове.
Comment[bn]=টেক্সট সম্পাদক সার্ভিসটি বিভিন্ন অ্যাপলিকেশন-কে একটি টেক্সট প্রদর্শক এবং সম্পাদক ব্যবহার করার সুযোগ দেয়। কোন কে.ডি.ই. অ্যাপলিকেশন টেক্সট সম্পাদনা করার সুবিধা দিতে চাইলে তার এই সার্ভিসটি ব্যবহার করা উচিত্‍।
Comment[bn_IN]=টেক্সট এডিটর পরিসেবার সাহায্যে টেক্সট প্রদর্শন ব্যবস্থা ও এডিটর উপলব্ধ করা হয়। টেক্সট এডিটরের কর্ম উপলব্ধকারী KDE অ্যাপ্লিকেশনগুলি দ্বারা এই পরিসেবা ব্যবহার করা আবশ্যক।
Comment[bs]=Servis uređivača teksta pruža programima način za prikazivanje i uređivanje tekstova. Trebalo bi da ga koriste svi KDE programi kojima je to potrebno.
Comment[ca]=El servei de l'editor de text proveeix d'aplicacions amb un visor i un editor de text. Les aplicacions KDE que proveeixen de facilitats d'edició haurien d'emprar aquest servei.
Comment[ca@valencia]=El servei de l'editor de text proveeix d'aplicacions amb un visor i un editor de text. Les aplicacions KDE que proveeixen de facilitats d'edició haurien d'emprar este servei.
Comment[cs]=Služba textového editoru poskytuje aplikacím prohlížeč a editor textu. Aplikace KDE, které umožňují upravovat text, by měly používat tuto službu.
Comment[csb]=Ùsłëżnota tekstowegò editorë zezwôlô aplikaceją na przezéranié ë edicejã tekstów. Programë KDE, jaczé ùprzistãpniają nã edicëjną fùnkcëjã, mają brëkòwac ti ùsłëżnotë.
Comment[cy]=Mae'r gwasanaeth golygu testun yn darparu gwelydd testun a golygydd i gymhwysiadau. dylai cymhwysiadau KDE sy'n darparu galluoedd golygu testun ddefnyddio'r gwasanaeth yma.
Comment[da]=Teksteditor-tjenesten udstyrer programmer med en tekstfremviser og editor. KDE-programmer der bruger tekstredigeringsfaciliteter bør benytte denne tjeneste.
Comment[de]=Diese Komponente stellt Programmen einen Textbetrachter und -editor zur Verfügung. KDE-Anwendungen, die eine Möglichkeit zur Textbearbeitung bieten, sollten dieses Angebot nutzen.
Comment[el]=Η υπηρεσία επεξεργαστή κειμένου παρέχει στις εφαρμογές έναν προβολέα και επεξεργαστή κειμένου. Οι εφαρμογές του KDE που παρέχουν δυνατότητες επεξεργασίας κειμένου θα πρέπει να χρησιμοποιούν αυτή την υπηρεσία.
Comment[en_GB]=The text editor service provides applications with a text viewer and editor. KDE applications that provide text editing facilities should use this service.
Comment[eo]=La tekstredaktila servo donas al vi aplikaĵojn kun tekstrigardilo kaj redaktilo. KDE-aplikaĵoj kiuj volas provizi tekstredaktadan eblon uzu tiun ĉi servon.
Comment[es]=El servicio del editor de texto proporciona a las aplicaciones un visor y editor de textos. Las aplicaciones KDE que suministren funciones de edición deberían utilizar este servicio.
Comment[et]=Tekstiredaktori teenus annab rakendustele komponendi teksti vaatamiseks ja redigeerimiseks. Seda kasutavad kõik KDE rakendused, mis tegelevad teksti redigeerimisega.
Comment[eu]=Testu-editorearen zerbitzuak testu-ikustailea eta editorea duten aplikazioak eskaintzen ditu. Testuak editatzeko aukera ematen duten KDE aplikazioek erabili beharko lukete zerbitzu hau.
Comment[fa]=خدمت ویرایشگر متن، کاربردهایی را توسط یک مشاهده‌گر و ویرایشگر متن، فراهم می‌کند. کاربردهای KDE که امکانات ویرایش متن را فراهم می‌کنند باید از این \ خدمت استفاده نمایند.
Comment[fi]=Tekstieditoripalvelu tarjoaa sovelluksille tekstinäyttäjän- ja muokkaimen. KDE-sovelluksien, jotka tarjoavat tekstinmuokkauspalveluita, tulisi käyttää tätä palvelua.
Comment[fr]=Le service d'édition de texte fournit des applications comportant un afficheur de texte et un éditeur. Les applications KDE qui fournissent des fonctions d'édition de texte devraient utiliser ce service.
Comment[fy]=De tekstbewurkings-fasiliteit foarsjocht programma's fan een tekstwerjouwer en -ferwurker. KDE-applikaasjes mei tekstferwurkingsmooglikheden kinne hjir gebrûk fan meitsje.
Comment[ga]=Cuirtear amharcán téacs agus eagarthóir ar fáil d'fheidhmchláir tríd an tseirbhís eagarthóireachta téacs. Ba cheart d'fheidhmchláir KDE a sholáthraíonn áiseanna eagarthóireachta an tseirbhís seo a úsáid.
Comment[gl]=O servizo de edición de texto fornece aos programas un visor e editor de textos. Todos os programas de KDE que permitan editar textos deberan empregar este servizo.
Comment[gu]=લખાણ સંપાદક સેવા કાર્યક્રમોને લખાણ દર્શક અને સંપાદક પૂરૂં પાડે છે. KDE કાર્યક્રમો જે લખાણ સંપાદન સુવિધાઓ ઉપયોગ કરે છે તેમને આ સેવા ઉપયોગ કરવી જોઇએ.
Comment[he]=שירות עורך הטקסט מספק לתוכניות יכולות הצגה ועריכת טקסט. תוכנות של KDE שמספקות אמצעים לעריכת טקסט ישתמשו בשירות זה.
Comment[hi]=पाठ संपादक सेवा में पाठ प्रदर्शक तथा संपादक अनुप्रयोग मिलते हैं. केडीई अनुप्रयोग जो पाठ संपादन सुविधा प्रदान करते हैं उन्हें यह सेवा प्रयोग करना चाहिए.
Comment[hne]=पाठ संपादक सेवा मं पाठ प्रदर्सक अउ संपादक अनुपरयोग मिलथे. केडीई अनुपरयोग जऊन पाठ संपादन सुविधा प्रदान करथे ओ मन ल ए सेवा परयोग करना चाही.
Comment[hr]=Usluga tekstualnog uređivača omugućuje aplikacijama pregledavanje i uređivanje teksta. KDE aplikacije koje omogućuju uređivanje teksta trebale bi upotrebljavati ovu uslugu.
Comment[hsb]=Wobdźěłanje teksta staji programam wobdźěłarja a wobhladowarja teksta k dispoziciji. KDE-aplikacije, kiž tajke něšto trjebaja, měli tutón serwis wužiwać.
Comment[hu]=A szövegszerkesztő szolgáltatáson keresztül az alkalmazások szövegek megtekintését és szerkesztését végezhetik el. A KDE szövegszerkesztő programjai használhatják.
Comment[ia]=Le servicio de editor de texto forni le applicationes de un visor e un editor. Le applicationes KDE que usa iste facilitates deberea usar iste servicio.
Comment[id]=Layanan penyunting teks menyediakan aplikasi dengan penampil dan penyunting teks. Aplikasi KDE yang memberikan fasilitas penyuntingan teks harus menggunakan layanan ini.
Comment[is]=Ívafni ritillinn færir forritum texta-skoðara og ritil. KDE forrit sem birta ritil til textavinnslu ættu að nota þessa þjónustu.
Comment[it]=Il servizio di editor di testi fornisce alle applicazioni un visualizzatore ed un editor di testi. Le applicazioni KDE che permettono l'elaborazione di testi dovrebbero usare questo servizio.
Comment[ja]=テキストエディタサービスはアプリケーションにテキストビューアとテキストエディタを提供します。テキスト編集の機能を持つ KDE アプリケーションはこれを使用します。
Comment[kk]=Қолданбаларға мәтінді қарау және өңдеу мүмкіншілікті беретін қызмет. Мәтінді өңдеу үшін KDE қолданбалар осы қызметті пайдалану керек.
Comment[km]=សេវា​កម្មវិធី​និពន្ធ​អត្ថបទ​ផ្តល់​នូវ​កម្មវិធី​រួម​មាន​កម្មវិធី​មើល​អត្ថបទ និង​កម្មវិធី​និពន្ធ​អត្ថបទ ។ កម្មវិធី KDE ដែល​ផ្តល់​មធ្យោបាយ​ងាយស្រួល​និពន្ធ​អត្ថបទ​គួរ​ប្រើ​សេវា​នេះ ។
Comment[kn]=ಪಠ್ಯ ಸಂಪಾದಕ ಸೇವೆ ಅನ್ವಯಗಳಿಗೆ ಪಠ್ಯ ವೀಕ್ಷಣೆ ಮತ್ತು ಸಂಪಾದನೆಗೆ ಅನುಕೂಲವಾಗುವ ಸೌಲಭ್ಯಗಳನ್ನು ನೀಡುತ್ತದೆ. ಪಠ್ಯ ಸಂಪಾದನಾ ಸೌಲಭ್ಯಗಳನ್ನು ನೀಡುವ ಕೆಡಿಇ ಅನ್ವಯಗಳು ಈ ಸೇವೆಯನ್ನು ಬಳಸಿಕೊಳ್ಳಬೇಕು.
Comment[ko]=텍스트 편집기 서비스는 프로그램에 텍스트 뷰어 및 에디터 기능을 제공합니다. 텍스트 편집 기능을 사용하려는 KDE 프로그램은 이 서비스를 사용해야 합니다.
Comment[ku]=Servîsa edîtora nivîsê sepanên bi nîşanderê nivîsê û edîtorê nivîsê re peyda dike. Sepanên KDE yên ku derfetên nivîsandinê peyda dike divê vê servîsê bi kar bîne.
Comment[lb]=Den Texeditor-Service stellt Programmer en Textlieser an en Texteditor zur Verfügung.KDE-Programmer, déi Textmanipuléierungsfunktiounen ubidden, sollen dëse Service benotzen.
Comment[lt]=Teksto redaktoriaus tarnyba pateikia programoms teksto žiūriklį ir redaktorių. KDE programos, leidžiančios redaguoti tekstą, turėtų naudoti šią tarnybą.
Comment[lv]=Teksta redaktora serviss sniedz teksta aplūkošanas un rediģēšanas pakalpojumus programmām. Tām KDE programmām, kurām tas ir nepieciešams, vajadzētu izmantot šo servisu.
Comment[mai]=पाठ संपादक सेवामे पाठ प्रदर्शक आओर संपादक अनुप्रयोग भेटैछ. केडीइ अनुप्रयोग जे पाठ संपादन सुविधा दैछ ओकरा ई सेवाक प्रयोग कएनाइ चाही.
Comment[mk]=Сервисот за текст уредувач ги снабдува апликациите со текст прегледник и уредувач. KDE апликациите што овозможуваат уредување текст би требало да го користат овој сервис.
Comment[ml]=ടെക്സ്റ്റ് എഴുത്തിടത്തിന്റെ സേവനം പ്രയോഗങ്ങള്‍ക്കു് പദാവലി കാണാനും മാറ്റാനുമുള്ള സംവിധാനം ഒരുക്കുന്നു. പദാവലി ലേഖനം ചെയ്യാനുള്ള സൌകര്യങ്ങളൊരുക്കുന്ന കെഡിഇയിലെ പ്രയോഗങ്ങള്‍ ഈ സേവനം ഉപയോഗിയ്ക്കണം.
Comment[mr]=पाठ्य संपादक सेवा पाठ्य प्रदर्शक व संपादक समाविष्ठीत अनुप्रयोग पुरवितो. KDE अनुप्रयोग जे पाठ्य संपादन सुविधा पुरवितात ही सेवा वापरायला हवी.
Comment[ms]= Servis penyunting teks yang menyediakan aplikasi dengan pelihat teks dan editor. Aplikasi KDE yang menyediakan kemudahan penyuntingan teks patut menggunakan servis ini.
Comment[nb]=Tjenesten innebygd skriveprogram gir programmer mulighet til å vise og redigere tekst. KDE-programmer som kan redigere tekst bør bruke denne tjenesten.
Comment[nds]=De Texteditor-Deenst föögt Programmen en Textwieser un -editor to. KDE-Programmen, mit de Texten bewerkt warrt, schöölt em bruken.
Comment[ne]=पाठ सम्पादक सेवाले पाठ दर्शक र सम्पादक भएको अनुप्रयोग उपलब्ध गराउँछ । पाठ सम्पादक सुविधा उपलब्ध गर्ने केडीई अनुप्रयोगले यो सेवा प्रयोग गर्नु आवश्यक हुन्छ ।
Comment[nl]=Dit component stelt programma's een tekstinvoercomponent tot hun beschikking. KDE-toepassingen die te maken hebben met het bewerken van tekst kunnen gebruik maken van deze aangeboden dienst.
Comment[nn]=Skriveprogramtenesta tilbyr vising og redigering av tekst. KDE-program som skal visa eller redigera tekst brukar denne tenesta.
Comment[or]=The text editor service provides applications with a text viewer and editor. KDE applications that provide text editing facilities should use this service.
Comment[pa]=ਟੈਕਸਟ ਐਡੀਟਰ ਸਰਵਿਸ ਉਹ ਸਭ ਐਪਲੀਕੇਸ਼ਨ ਉਪਲੱਬਧ ਕਰਵਾਉਦਾ ਹੈ, ਜੋ ਕਿ ਟੈਕਸਟ ਦਰਸ਼ਕ ਅਤੇ ਐਡੀਟਰ ਸ਼ਾਮਿਲ ਹਨ। KDE ਐਪਲੀਕੇਸ਼ਨਾਂ, ਜੋ ਕਿ ਟੈਕਸਟ ਐਡਟਿੰਗ ਦੀ ਸਹੂਲਤ ਉਪਲੱਬਧ ਕਰਵਾਉਦੀਆਂ ਹਨ, ਇਸ ਨੂੰ ਇਸਤੇਮਾਲ ਕਰਦੀਆਂ ਹਨ।
Comment[pl]=Usługa edytora tekstowego pozwala programom na przeglądanie i edycję tekstów. Programy KDE, które udostępniają funkcje edycyjne, powinny używać tej usługi.
Comment[pt]=O serviço de edição de texto oferece às aplicações um visualizador e editor de texto. As aplicações do KDE que oferecem funcionalidade de edição de texto devem usar este serviço.
Comment[pt_BR]=O serviço de edição de texto fornece um visualizador e editor de texto aos aplicativos. Os aplicativos KDE que fornecem recursos de edição de texto devem utilizar este serviço.
Comment[ro]=Serviciul de editare text asigură aplicațiilor un vizualizor de text și un editor. Aplicațiile KDE care oferă capabilități de editare de text ar trebui să utilizeze acest serviciu.
Comment[ru]=Компонент текстового редактора для приложений, в которых требуется просмотр и редактирование текста. Её должны использовать приложения KDE, в которых требуется редактирование текста.
Comment[se]=Čállinprográmmabálvalus fállá teakstačájeheami ja -doaimmaheami. KDE-prográmmat, mat fállet teakstadoaimmahanvejolašvuođaid, galggašedje geavahit dán bálvalusa.
Comment[sk]=Služba textového editora poskytuje aplikáciám prehliadač a editor textových súborov. Aplikácie KDE, ktoré podporujú úpravu textu, by mali používať túto službu.
Comment[sl]=Storitev urejevalnika besedila omogoča programom dostop do pregledovalnika in urejevalnika besedil. Programi za KDE, ki omogočajo urejanje besedila, naj bi uporabljali to storitev.
Comment[sr]=Сервис уређивача текста пружа програмима начин за приказивање и уређивање текстова. Требало би да га користе сви КДЕ програми којима је то потребно.
Comment[sr@ijekavian]=Сервис уређивача текста пружа програмима начин за приказивање и уређивање текстова. Требало би да га користе сви КДЕ програми којима је то потребно.
Comment[sr@ijekavianlatin]=Servis uređivača teksta pruža programima način za prikazivanje i uređivanje tekstova. Trebalo bi da ga koriste svi KDE programi kojima je to potrebno.
Comment[sr@latin]=Servis uređivača teksta pruža programima način za prikazivanje i uređivanje tekstova. Trebalo bi da ga koriste svi KDE programi kojima je to potrebno.
Comment[sv]=Texteditortjänsten ger program en textvisare och editor. KDE-program som tillhandahåller textredigeringsfunktioner bör använda denna tjänst.
Comment[ta]=பயன்பாடுகளுக்கு உரைகாட்டியொன்றையும் திருத்தியொன்றையும் உரைதிருத்தி சேவை வழங்குகிறது. உரை திருத்தும் வசதிகளை வழங்கக்கூடிய கேடீயீ பயன்பாடுகள் இந்தச் சேவையை பயன்படுத்திக் கொள்ளலாம்.
Comment[te]=కార్యక్రమాలకు వాచకం సరిచేయు సేవ ఒక వాచకం విక్షణ మరియు సరిచెయుటకు సహాయపడును. కెడిఈ కార్యక్రమాలు వాచకం సరిచెయు సౌకర్యాలు వున్నట్టైతె దిని సేవ ను ఉపయొగించొకొవలెను
Comment[tg]=Хидмати таҳриргари матн барномаҳоро бо намоишгари матн ва таҳриргар имкон медиҳад. Барномаҳои KDE бо хосиятҳои таҳриргари матн бояд ин хидмат истифода барад.
Comment[th]=บริการตัวแก้ไขข้อความ จะจัดเตรียมตัวดูข้อความและแก้ไขข้อความให้กับโปรแกรม โปรแกรมของ KDE ที่เตรียมความสามารถในการแก้ไขข้อความเอาไว้ ควรจะใช้บริการนี้
Comment[tr]=Metin düzenleyici servisi bir metin düzenleyici ve gösterici uygulama sağlar. Metin düzenleyebilen KDE uygulamaları bu servisi kullanmalıdır.
-Comment[ug]=تېكىست مۇلازىمىتى تېكىست كۆرگۈچ ۋە تەھرىرلەش پروگراممىنى تەمىنلىدى. تېكىست تەھرىر ئىقتىدارىنى تەمىنلەيدىغان KDE پروگراممىلىرىنىڭ ھەممىسى مۇشۇ مۇلازىمەتنى ئىشلىتىدۇ.
+Comment[ug]=تېكىست تەھرىرچى مۇلازىمىتى تېكىست كۆرگۈچ ۋە تەھرىرچى پروگراممىنى تەمىنلىدى. تېكىست تەھرىر ئىقتىدارىنى تەمىنلەيدىغان KDE پروگراممىلىرىنىڭ ھەممىسى مۇشۇ مۇلازىمەتنى ئىشلىتىدۇ.
Comment[uk]=Служба «Текстовий редактор» забезпечує роботу програм з переглядачем та редактором тексту. Програми KDE, які надають можливість редагування тексту, повинні користуватись цією службою.
Comment[uz]=Matn tarhrirchi xizmati dasturlarni matn koʻruvchi va tahrirchi bilan taʼminlaydi. Matn tahrirlash imkoniyatini yaratuvchi KDE dasturlari shu xizmatni ishlatishi kerak.
Comment[uz@cyrillic]=Матн тарҳрирчи хизмати дастурларни матн кўрувчи ва таҳрирчи билан таъминлайди. Матн таҳрирлаш имкониятини яратувчи KDE дастурлари шу хизматни ишлатиши керак.
-Comment[vi]=Dịch vụ soạn thảo văn bản cung cấp cho ứng dụng một bộ xem và soạn thảo văn bản. Các ứng dụng KDE mà cung cấp khả năng soạn thảo văn bản nên dùng dịch vụ này.
+Comment[vi]=Dịch vụ soạn thảo văn bản cung cấp cho các ứng dụng một trình xem và soạn thảo văn bản. Các ứng dụng KDE cung cấp khả năng soạn thảo văn bản nên sử dụng dịch vụ này.
Comment[wa]=Li siervice aspougneu d' tecse dene åzès programes on håyneu et èn aspougneu d' tecses. Les programes KDE ki dnèt des fonccionålités d' aspougnaedje di tecse divèt eployî ç' siervice ci.
-Comment[x-test]=xxThe text editor service provides applications with a text viewer and editor. KDE applications that provide text editing facilities should use this service.xx
Comment[xh]=Inkonzo yomhleli wombhalo onika izicelo ngombonisi wombhalo nomhleli Izicelo ze KDE ezinikezela ngohlelo lombhalo ekufuneka isebenzise lenkonzo.
+Comment[x-test]=xxThe text editor service provides applications with a text viewer and editor. KDE applications that provide text editing facilities should use this service.xx
Comment[zh_CN]=文本编辑器服务提供了文本查看器和编辑器的应用程序。提供文本编辑功能的 KDE 应用程序都应该使用此服务。
Comment[zh_HK]=文字編輯服務為各種程式提供一個檢視和編輯文字的介面。任何提供文字編輯功能的 KDE 程式都應該使用這項服務。
Comment[zh_TW]=文字編輯服務提供程式一個文字檢視器以及編輯器。提供文字編輯功能的 KDE 程式擁該使用這項服務。
ServiceTypeToConfigure=KTextEditor/Document
defaultImplementation=katepart
storeInFile=default_components
valueSection=KTextEditor
valueName=embeddedEditor
configurationType=component
diff --git a/interfaces/ktexteditor/ktexteditor.desktop b/interfaces/ktexteditor/ktexteditor.desktop
index b597a97718..279ee2d4b6 100644
--- a/interfaces/ktexteditor/ktexteditor.desktop
+++ b/interfaces/ktexteditor/ktexteditor.desktop
@@ -1,95 +1,95 @@
[Desktop Entry]
Type=ServiceType
X-KDE-ServiceType=KTextEditor/Document
X-KDE-Derived=KParts/ReadWritePart
Comment=Embeddable Text Editor Component (with Doc/View Separation)
Comment[af]=Inlegbare Teksredigeerderkomponent (met Dok/Besigtig Seperasie)
Comment[ar]=مكوّن تحرير النصوص قابل للدمج (مع Doc/View Separation)
Comment[as]=প্ৰোথিত কৰিব পৰা লিপি সম্পাদনৰ অংশ (Doc/View Separation ৰ সৈতে)
Comment[ast]=Componente encrustable d'edición de testu (con dixebra documentu/vista)
Comment[be]=Унутраны тэкставы рэдактар (з падзелам Дакумент/Прагляд)
Comment[be@latin]=Unutrany kampanent tekstavaha redaktara (z padziełam na dakumenty j prahlady)
Comment[bg]=Текстов редактор (с разделение между Doc/View)
Comment[bn]=অভ্যন্তরীণ টেক্সট সম্পাদক কম্পোনেন্ট (পৃথক ডক/ভিউ সহ)
Comment[bn_IN]=এমবেড করা টেক্সট এডিটেরের সামগ্রী (Doc/View পার্থক্যসহ)
Comment[bs]=Ugnezdiva komponenta uređivača teksta (uz razdvajanje dokument-prikaz)
Comment[ca]=Component encastable de l'editor de text (amb separació Doc/Vista)
Comment[ca@valencia]=Component encastable de l'editor de text (amb separació Doc/Vista)
Comment[cs]=Pohltitelná komponenta textového editoru (s oddělením Doc/View)
Comment[csb]=Dzél editora tekstu (do òbsôdzaniô, z paradygmatã Dokùment/Wëzdrzatk)
Comment[cy]=Cydran Golygydd Testun Mewnadeiladwy (wrth Wahanu Dogfen/Golwg)
Comment[da]=Teksteditorkomponent som kan indlejres (med dok./visning-adskillelse)
Comment[de]=Einbettungsfähige Editorkomponente (mit Text/Ansicht-Aufteilung)
Comment[el]=Ενσωματώσιμο στοιχείο επεξεργαστή κειμένου (με διαχωρισμό Doc/View)
Comment[en_GB]=Embeddable Text Editor Component (with Doc/View Separation)
Comment[eo]=Enkorpigita redaktilo (kun apartigo de dokumento kaj rigardo)
Comment[es]=Componente empotrable de editor de textos (con separación Doc/Vista)
Comment[et]=Põimitav tekstiredaktori komponent (dokument/vaade eraldamisega)
Comment[eu]=Testu-editorearen kapsulatutako osagaia (Dok/Ikusi bereizketarekin)
Comment[fa]=مولفه ویرایشگر متن نهفته )با سند/نمای مجزا(
Comment[fi]=Upotettava tekstimuokkauskomponentti (Asiakirja/Näkymä-jaolla)
Comment[fr]=Composant d'édition de texte intégrable (avec séparation doc / vue)
Comment[fy]=Yn te sluten tekstbewurkerkomponint (mei skieding fan tekst/werjefte)
Comment[ga]=Comhpháirt eagarthóireacht téacs inleabaithe (le deighilt idir cáipéis agus amharc)
Comment[gl]=Compoñente integrábel de edición de texto (cunha Separación Doc/Vista)
Comment[gu]=જડિત લખાણ સંપાદક ભાગ (Doc/View અલગ પાડેલ સાથે)
Comment[he]=רכיב עורך טקסט הניתן לשיבוץ (עם הפרדה בין מסמך לתצוגה)
Comment[hi]=अंतर्निर्मित पाठ संपादक अवयव (डॉक/दृश्य विभाजन के साथ)
Comment[hne]=भीतर मं बने पाठ संपादक अवयव (डाक/दृस्य विभाजन के साथ)
Comment[hr]=Ugradiva komponenta obrade teksta (s Doc/View razdvajanjem)
Comment[hsb]=Komponenta za integrowane wobdźěłanje teksta
Comment[hu]=Beágyazható szövegszerkesztő (dokumentum/nézet modellel)
Comment[ia]=Componente del editor interne de texto (con separation Doc/Vista)
Comment[id]=Komponen Penyunting Teks Dapat Dibenamkan (dengan Pemisahan Dok/Tampilan)
Comment[is]=Ívafinn textaritill (með skjal/sýn aðskilnaði)
Comment[it]=Componente integrabile per l'elaborazione di testi (con separazione documento/vista)
Comment[ja]=埋め込み可能なテキストエディタコンポーネント (Doc/View 分離)
Comment[kk]=Ендірілетін мәтін өңдеу компоненті (Құжат/көрініс үлгіні қолдайтын)
Comment[km]=សមាសភាគ​កម្មវិធីនិពន្ធ​អត្ថបទ​ដែល​អាចបង្កប់ (ដោយ​ប្រើ​ការ​បំបែក Doc/View)
Comment[kn]=ಹುದುಗಿಸಬಹುದಾದ (ಎಂಬೆಡಬಲ್) ಪಠ್ಯ-ಸಂಪಾದಕದ ಅಂಶ (ದಸ್ತಾವೇಜು/ನೋಟ ಬೇರ್ಪಡೆಯೊಂದಿಗೆ)
Comment[ko]=끼워넣는 텍스트 편집기 구성 요소 (문서/보기 구분)
Comment[ku]=Perçe ya Edîtora Nivîsê yê Jixwe Heyî (bi Doc/Dîtina Cuda kirinê)
Comment[lb]=Abettbar Texteditor-Komponent (mat Dokument/Usiicht Trennung)
Comment[lt]=Įdedamas tekstų redaktoriaus komponentas (su Doc/View atskyrimu)
Comment[lv]=Iegulstama tekstu redaktora komponente (ar Dok/Skata atdalīšanu)
Comment[mai]=अंतर्निर्मित पाठ संपादक अवयव (डाक/दृश्य विभाजन केर सँग)
Comment[mk]=Вгнездлива компонента за уредување на текст (со Док/Приказ раздвојување)
Comment[ml]=എംബഡ് ചെയ്യാവുന്ന ടെക്സ്റ്റ് എഴുത്തിടമെന്ന ഘടകം (ഡോക്/വ്യൂ വ്യത്യാസത്തോടെ)
Comment[mr]=अंतर्भूतीत पाठ्य संपादक घटक (दस्तऐवज/प्रदर्शन विभाजन सह)
Comment[ms]=Komponen Penyunting Teks Boleh Selit (Dokumentasi/Pelihat berasingan)
Comment[nb]=Innebygget skriveprogram-komponent (med Doc/View-skille)
Comment[nds]=Inbettbor Texteditor-Komponent (mit Dokment/Ansicht-Trennen)
Comment[ne]=सम्मिलित पाठ सम्पादक अवयव (Doc/View Separation बाट)
Comment[nl]=Ingebed tekstinvoercomponent (met scheiding van tekst/weergave)
Comment[nn]=Innebyggbar skriveprogramkomponent (med Doc/View-skilje)
Comment[or]=Embeddable Text Editor Component (with Doc/View Separation)
Comment[pa]=ਇੰਬੈੱਡਯੋਗ ਟੈਕਸਟ ਐਡੀਟਰ ਭਾਗ (Doc/ਝਲਕ ਵੱਖ ਕਰਨ ਨਾਲ)
Comment[pl]=Składnik edytora tekstu (do osadzania, z paradygmatem Dokument/Widok)
Comment[pt]=Componente Incorporado do Editor de Texto (com Separação entre Documentos)
Comment[pt_BR]=Componente de edição de textos integrado (com separação de documentação/visualização)
Comment[ro]=Componentă de editare text (cu separare Doc/Vizualizare)
Comment[ru]=Встраиваемый компонент редактора текста (с поддержкой модели документ/вид)
Comment[se]=Vuojuhanláhkái čállinprográmmaoassi (Doc/View-sirremiin)
Comment[sk]=Komponent textového editora (s oddelením Dokument/Zobrazenie)
Comment[sl]=Vgradljiva komponenta urejevalnika besedil (z ločevanjem pogleda in dokumenta)
Comment[sr]=Угнездива компонента уређивача текста (уз раздвајање документ-приказ)
Comment[sr@ijekavian]=Угњездива компонента уређивача текста (уз раздвајање документ-приказ)
Comment[sr@ijekavianlatin]=Ugnjezdiva komponenta uređivača teksta (uz razdvajanje dokument-prikaz)
Comment[sr@latin]=Ugnezdiva komponenta uređivača teksta (uz razdvajanje dokument-prikaz)
Comment[sv]=Inbäddningsbar texteditor (med dokument/vy-separation)
Comment[ta]=உட்பொதிந்த உரைதிருத்தி பாகம் (ஆவண/ காட்சி பிரிவுகளுடன்)
Comment[te]=పొదగబడె వాచకం సరిచేయు అంశం (పత్ర/వీక్షణ విభజన వున్నది)
Comment[tg]=Компоненти таҳриргари матни дарунсохт (бо ҷудокунандаи Санад/Намоиш)
Comment[th]=คอมโพเนนท์แก้ไขข้อความแบบฝังตัวได้ (โดยการแยกเอกสาร/มุมมอง)
Comment[tr]=Gömülebilir Metin Düzenleyici Bileşeni (Doc/View ayrımı dahil)
Comment[ug]=سىڭدۈرۈشچان تېكىست تەھرىرلىگۈچ بۆلىكى(پۈتۈك/كۆرۈنۈش ئايرىلىدۇ)
Comment[uk]=Компонент редактора текстів, який можна вбудовувати (з розділенням документ/вигляд)
Comment[uz]=Ichiga oʻrnatib boʻladigan matn tahrirchi komponenti (hujjat/koʻrinish imkoniyati bilan)
Comment[uz@cyrillic]=Ичига ўрнатиб бўладиган матн таҳрирчи компоненти (ҳужжат/кўриниш имконияти билан)
Comment[vi]=Thành phần Soạn thảo Văn bản có nhúng được (có khả năng phân cách tài liệu/khung xem)
Comment[wa]=Ravalé compôzant aspougneu d' tecse (avou dispårtaedje documint/vuwe)
-Comment[x-test]=xxEmbeddable Text Editor Component (with Doc/View Separation)xx
Comment[xh]=Inxenye Yomhleli Wombhalo Olungiselelweyo (ngo Xwebhu/Ulwahlulo Lwemboniselo)
+Comment[x-test]=xxEmbeddable Text Editor Component (with Doc/View Separation)xx
Comment[zh_CN]=可嵌入的文本编辑器部件(文档和视图分离)
Comment[zh_HK]=可嵌入的文字編輯器元件 (Doc/View 分開)
Comment[zh_TW]=可嵌入的文字編輯器元件 (Doc/View 分開)
diff --git a/interfaces/ktexteditor/ktexteditor_loadsavefiltercheckplugin.desktop b/interfaces/ktexteditor/ktexteditor_loadsavefiltercheckplugin.desktop
index 68ec1909c1..d3519fab4f 100644
--- a/interfaces/ktexteditor/ktexteditor_loadsavefiltercheckplugin.desktop
+++ b/interfaces/ktexteditor/ktexteditor_loadsavefiltercheckplugin.desktop
@@ -1,76 +1,77 @@
[Desktop Entry]
Type=ServiceType
X-KDE-ServiceType=KTextEditor/LoadSaveFilterCheckPlugin
X-KDE-Derived=
Comment=KTextEditor load/save filter/check plugin
Comment[ar]=ملحق KTextEditor لتحميل/حفظ تدقيق/ترشيح
Comment[as]=KTextEditor load/save filter/check প্লাগ-ইন
Comment[ast]=Complementu de peñera/comprobación p'abrir/guardar de KTextEditor
Comment[be@latin]=Plugin adčynieńnia/zapisu filtra/pravierki dla słužby „KTextEditor”
Comment[bg]=Приставка за KTextEditor за филтриране и проверка при зареждане и записване
Comment[bn]=কে-টেক্সট-এডিটর load/save filter/check প্লাগ-ইন
Comment[bs]=Priključak za filtriranje i provjeravanje na učitavanju i upisivanju za KTextEditor
Comment[ca]=Connector del KTextEditor de filtratge/comprovació de càrrega/desat
Comment[ca@valencia]=Connector del KTextEditor de filtratge/comprovació de càrrega/alçat
Comment[cs]=Modul načtení/uložení filtrování/kontroly KTextEditoru
Comment[da]=KTextEditor-plugin til at filtrere/tjekke ved indlæsning/gemning
Comment[de]=KTextEditor-Modul zu Filtern/Prüfen beim Laden/Speichern
Comment[el]=Φίλτρο φόρτωσης/αποθήκευσης πρόσθετο ελέγχου του KTextEditor
Comment[en_GB]=KTextEditor load/save filter/check plugin
Comment[es]=Complemento de filtrado/comprobación para abrir/guardar de KTextEditor
Comment[et]=KTextEditori laadimise/salvestamise filtreerimise/kontrollimise plugin
Comment[eu]=KTextEditor-en ireki/gorde iragazi/egiaztatu plugina-a
Comment[fi]=KTextEditorin avaamisen/tallentamisen suodattamis-/tarkistusliitännäinen
Comment[fr]=Module de chargement / enregistrement et filtrage / vérification pour KTextEditor
Comment[fy]=KTextEditor-plugin foar laden/bewarjen en filterje/kontrôle
Comment[ga]=Breiseán scagaire luchtú/sábháil KTextEditor
Comment[gl]=Engadido de filtro/comprobación ao cargar/gardar para KTextEditor
Comment[gu]=KTextEditor લાવવા/સંગ્રહ ગાળક/ચકાસણી પ્લગઇન
Comment[he]=תוסף לשמירה וטעינה או בדיקה של תוסף עבור KTextEditor
Comment[hne]=के-टैक्स्ट-एडीटर लोड/सहेज फिल्टर/जांच प्लगइन
Comment[hr]=KTextEditor priključak za učitavanje/spremanje i filtriranje/provjeru
Comment[hsb]=KTextEditor plugin za wočinjenje/zawěsćenje
Comment[hu]=KTextEditor betöltési/mentési/szűrési/ellenőrzési bővítmény
Comment[ia]=KTextEditor plugin per cargar/salvar filtrar/controlar
Comment[id]=Plugin muat/simpan filter/cek KTextEditor
Comment[is]=KTextEditor hlaða/vista sía/prófa íforrit
Comment[it]=Plugin carica/salva, filtra/controlla per KTextEditor
Comment[ja]=KTextEditor 読み込み/フィルタ保存/チェックプラグイン
Comment[kk]=KTextEditor жүктеу/сақтау сүзгілеу/тексеру плагині
Comment[km]=កម្មវិធី​ជំនួយ​ត្រួតពិនិត្យ/ត្រង ផ្ទុក/រក្សាទុក​របស់ KTextEditor
Comment[kn]=ಕೆಟೆಕ್ಸ್ಟ್ ಎಡಿಟರ್ ಉತ್ಥಾಪಿಸು/ಉಳಿಸು ಶೋಧಿಸು/ಪರಿಶೀಲಿಸಿ ಮಿಳಿತಾನ್ವಯ (ಪ್ಲಗಿನ್)
Comment[ko]=KTextEditor 필터/검사 불러오기/저장 플러그인
Comment[ku]=KEdîtoraNivîsê pêveka barbike/tomarbike parzûnbike/kontrolbike
Comment[lt]=KTextEditor įkėlimo/įrašymo filtro/tikrinimo priedas
Comment[lv]=KTextEditor ielādēšanas/saglabāšanas filtrs/pārbaudīšanas spraudnis
Comment[mai]=KTextEditor लोड/सहेज फिल्टर/जाँच प्लगइन
Comment[ml]=കെടെക്സ്റ്റ്എഡിറ്റര്‍ ചേര്‍ക്കുക/സൂക്ഷിയ്ക്കുക ഫില്‍ടര്‍/പരിശോദിയ്ക്കുക എന്നതിനുള്ള സംയോജകം
Comment[ms]=Plugin muat/simpan tapis/periksa KTextEditor
Comment[nb]=KTextEditor programtillegg for laste/lagre filter/sjekk
Comment[nds]=KTextEditor-Moduul för't Filtern/Pröven bi't Laden un Sekern
Comment[nl]=KTextEditor-plugin voor laden/opslaan filteren/controleren
Comment[nn]=Tillegg for lasting, lagring, filtrering og sjekk til KTextEditor
Comment[pa]=KTextEditor ਲੋਡ/ਸੰਭਾਲਣ ਫਿਲਟਰ/ਪਲੱਗਇਨ ਚੈੱਕ
Comment[pl]=Wtyczka edytora tekstu do wczytywania/zapisywania filtrów i sprawdzania
Comment[pt]='Plugin' de filtragem/verificação do carregamento/gravação do KTextEditor
Comment[pt_BR]=Plug-in de carregamento/gravação e filtro/verificação do KTextEditor
Comment[ro]=Modul de încărcare/salvare filtrare/verificare pentru KTextEditor
Comment[ru]=Загрузка и сохранение фильтров для KTextEditor
Comment[se]=KDE-čállinprográmma raba/vurke sillen/iskan-lassemodula
Comment[sk]=Modul načítania/uloženia filtrovania/kontroly textového editora
Comment[sl]=Vstavek KTextEditor za nalaganje/shranjevanje in filtriranje/preverjanje
Comment[sr]=Прикључак за филтрирање и проверавање на учитавању и уписивању за KTextEditor
Comment[sr@ijekavian]=Прикључак за филтрирање и провјеравање на учитавању и уписивању за KTextEditor
Comment[sr@ijekavianlatin]=Priključak za filtriranje i provjeravanje na učitavanju i upisivanju za KTextEditor
Comment[sr@latin]=Priključak za filtriranje i proveravanje na učitavanju i upisivanju za KTextEditor
Comment[sv]=Texteditor-insticksprogram för ladda/spara filter/kontrollera
Comment[ta]=KTextEditor load/save filter/check செருகி
Comment[tg]=Васлкунаки KTextEditor барои баркунӣ/захиракунӣ, филтр/санҷиш
Comment[th]=ส่วนเสริมของ KTextEditor สำหรับตรวจสอบ/กรอง การโหลด/การบันทึก
Comment[tr]=KTextEditor yükleme/kaydetme filtreleme/denetleme eklentisi
Comment[ug]=KTextEditor يۈكلەش/ساقلاش سۈزگۈچ/تەكشۈرۈش قىستۇرمىسى
Comment[uk]=Додаток для завантаження/збереження фільтрування/перевірки KTextEditor
+Comment[vi]=Phần bổ sung nạp/lưu lọc/kiểm tra KTextEditor
Comment[wa]=Tchôke-divins di KTexteditor po tcherdjî/schaper passer al passete/verifyî
Comment[x-test]=xxKTextEditor load/save filter/check pluginxx
Comment[zh_CN]=KTextEditor 读写过滤/检查插件
Comment[zh_TW]=KTextEditor 載入/儲存、過濾/檢查外掛程式
diff --git a/interfaces/ktexteditor/ktexteditorplugin.desktop b/interfaces/ktexteditor/ktexteditorplugin.desktop
index a9f23235ad..9bdcadcebf 100644
--- a/interfaces/ktexteditor/ktexteditorplugin.desktop
+++ b/interfaces/ktexteditor/ktexteditorplugin.desktop
@@ -1,102 +1,102 @@
[Desktop Entry]
Type=ServiceType
X-KDE-ServiceType=KTextEditor/Plugin
X-KDE-Derived=
Comment=KTextEditor Plugin
Comment[af]=KTextEditor Inpropmodule
Comment[ar]=ملحق KTextEditor
Comment[as]=KTextEditor Plugin
Comment[ast]=Complementu KTextEditor
Comment[be]=Модуль KTextEditor
Comment[be@latin]=Plugin dla KTextEditor
Comment[bg]=Приставка KTextEditor
Comment[bn]=কে-টেক্সট-এডিটর প্লাগ-ইন
Comment[bn_IN]=KTextEditor প্লাগ-ইন
Comment[br]=Lugent KTextEditor
Comment[bs]=Priključak za KTextEditor
Comment[ca]=Connector del KTextEditor
Comment[ca@valencia]=Connector del KTextEditor
Comment[cs]=Modul textového editoru
Comment[csb]=Wtëkôcz editora tekstu
Comment[cy]=Atodyn KTextEditor
Comment[da]=KTextEditor-plugin
Comment[de]=KTextEditor-Erweiterung
Comment[el]=Πρόσθετο KTextEditor
Comment[en_GB]=KTextEditor Plugin
Comment[eo]=Tekstredaktila kromprogramo
Comment[es]=Complemento de KTextEditor
Comment[et]=KTextEditori plugin
Comment[eu]=KTextEditor plugin-a
Comment[fa]=وصله KTextEditor
Comment[fi]=KTextEditor-liitännäinen
Comment[fr]=Module externe KTextEditor
Comment[fy]=KTextFerwurker-plugin
Comment[ga]=Breiseán KTextEditor
Comment[gl]=Engadido de KTextEditor
Comment[gu]=KTextEditor પ્લગઇન
Comment[he]=תוסף KTextEditor
Comment[hi]=के-टैक्स्ट-एडीटर प्लगइन
Comment[hne]=के-टैक्स्ट-एडीटर प्लगइन
Comment[hr]=KTextEditor priključak
Comment[hsb]=KTextEditor zašćěpka
Comment[hu]=KTextEditor-bővítőmodul
Comment[ia]=KTextEditor Plugin
Comment[id]=Plugin KTextEditor
Comment[is]=KTextEditor-íforrit
Comment[it]=Plugin KTextEditor
Comment[ja]=KTextEditor プラグイン
Comment[kk]=KTextEditor модулі
Comment[km]=កម្មវិធី​ជំនួយ KTextEditor
Comment[kn]=ಕೆಟೆಕ್ಸ್ಟ ಎಡಿಟರ್ ಮಿಳಿತಾನ್ವಯ (ಪ್ಲಗಿನ್)
Comment[ko]=KTextEditor 플러그인
Comment[ku]=Pêveka KEdîtoraNivîsê
Comment[lb]=KTextEditor-Plugin
Comment[lt]=KTextEditor priedas
Comment[lv]=KTextEditor spraudnis
Comment[mai]=के-टैक्स्ट-एडीटर प्लगइन
Comment[mk]=KTextEditor приклучок
Comment[ml]=കെടെക്സ്റ്റ് എഴുത്തിടമെന്ന സംയോജകം
Comment[mr]=KTextEditor प्लगइन
Comment[ms]=Plugmasuk KTextEditor
Comment[nb]=Programtillegg for KTextEditor
Comment[nds]=KTextEditor-Moduul
Comment[ne]=केडीई पाठ सम्पादक प्लगइन
Comment[nl]=KTextEditor-plugin
Comment[nn]=KTextEditor-tillegg
Comment[or]=KTextEditor Plugin
Comment[pa]=KTextEditor ਪਲੱਗਇਨ
Comment[pl]=Wtyczka edytora tekstu
Comment[ps]=لګون Kليکسمونګر
Comment[pt]='Plugin' do KTextEditor
Comment[pt_BR]=Plug-in do KTextEditor
Comment[ro]=Modul editor de text
Comment[ru]=Расширение KTextEditor
Comment[se]=KDE-čállinprográmma lassemodula
Comment[si]=KTextEditor ප්ලගීනය
Comment[sk]=Modul textového editora
Comment[sl]=Vstavek KTextEditor
Comment[sq]=KTextEditor Plugin
Comment[sr]=Прикључак за KTextEditor
Comment[sr@ijekavian]=Прикључак за KTextEditor
Comment[sr@ijekavianlatin]=Priključak za KTextEditor
Comment[sr@latin]=Priključak za KTextEditor
Comment[sv]=Insticksprogram för texteditor
Comment[ta]=KTextEditor செருகி
Comment[te]=కెటెక్స్ట్ ఎడిటర్ ప్లగిన్
Comment[tg]=Васлкунаки KTextEditor
Comment[th]=ส่วนเสริม KTextEditor
Comment[tr]=KTextEditor Eklentisi
Comment[ug]=KTextEditor قىستۇرما
Comment[uk]=Додаток KTextEditor
Comment[uz]=KTextEditor plagini
Comment[uz@cyrillic]=KTextEditor плагини
-Comment[vi]=Bổ sung Soạn thảo Văn bản
+Comment[vi]=Phần bổ sung KtextEditor
Comment[wa]=Tchôke-divins KTextEditor
-Comment[x-test]=xxKTextEditor Pluginxx
Comment[xh]=KTextEditor ye Plagi efakiweyo
+Comment[x-test]=xxKTextEditor Pluginxx
Comment[zh_CN]=KTextEditor 插件
Comment[zh_HK]=KTextEditor 外掛程式
Comment[zh_TW]=KTextEditor 外掛程式
[PropertyDef::X-KDE-Version]
Type=double
diff --git a/kdecore/config/kconfigbackend.desktop b/kdecore/config/kconfigbackend.desktop
index 658f53293d..1aa3741516 100644
--- a/kdecore/config/kconfigbackend.desktop
+++ b/kdecore/config/kconfigbackend.desktop
@@ -1,83 +1,84 @@
[Desktop Entry]
Type=ServiceType
X-KDE-ServiceType=KConfigBackend
Comment=Storage backend for KConfig
Comment[ar]=خلفية الحفظ لـ KConfig
Comment[as]=KConfig ৰ বাবে ভঁৰালৰ বেকএন্ড
Comment[ast]=Infraestructura d'atroxamientu pa KConfig
Comment[be@latin]=Słužba schovišča dla systemy „KConfig”
Comment[bg]=Storage backend for KConfig
Comment[bn]=KConfig-এর স্টোরেজ ব্যাকেন্ড
Comment[bn_IN]=KConfig-র জন্য ব্যবহৃত ব্যাক-এন্ড সংগ্রহস্থল
Comment[bs]=Skladišna pozadina za K‑konfig
Comment[ca]=Dorsal d'emmagatzematge per al KConfig
Comment[ca@valencia]=Dorsal d'emmagatzematge per al KConfig
Comment[cs]=Úložiště pro KConfig
Comment[csb]=Zôpisownô zbiérnica dlô KConfig
Comment[da]=Lagringsmotor til KConfig
Comment[de]=Speicher-Unterstützung für KConfig
Comment[el]=Σύστημα υποστήριξης αποθήκευσης για το KConfig
Comment[en_GB]=Storage backend for KConfig
Comment[es]=Motor de almacenamiento para KConfig
Comment[et]=KConfigi salvestamise taustaprogramm
Comment[eu]=KConfig-en biltegiratze euskarria
Comment[fi]=Asetusvaraston taustaosa
Comment[fr]=Méthode de stockage pour KConfig
Comment[fy]=Opslach efterein foar KConfig
Comment[ga]=Inneall stórais KConfig
Comment[gl]=Infraestrutura de almacenaxe para KConfig
Comment[gu]=KConfig માટે સંગ્રહ પાશ્ર્વભાગ
Comment[he]=מנוע שמירה עבור KConfig
Comment[hne]=के-कानफिग बर भंडार बैकएण्ड
Comment[hr]=Skladišna pozadina za KConfig
Comment[hsb]=składowanski backend za KConfig
Comment[hu]=Tároló a KConfighoz
Comment[ia]=Retro-administration de immagazinage (storage) pro Kconfig
Comment[id]=Backend penyimpanan untuk KConfig
Comment[is]=Geymslubakendi fyrir KConfig
Comment[it]=Backend di archiviazione per KConfig
Comment[ja]=KConfig のストレージバックエンド
Comment[kk]=KConfig үшін сақтау тетігі
Comment[km]=កម្មវិធី​ខាងក្រោយ​ការ​ផ្ទុក​សម្រាប់ KConfig
Comment[kn]=ಕೆಕಾನ್ಫಿಗ್ ಗೆ ಸಂಗ್ರಹಣಾ ಹಿಂಬದಿ (ಬಾಕೆಂಡ್)
Comment[ko]=KConfig의 저장소 백엔드
Comment[ku]=Embara ser-dawî ji bo KVeavakirin
Comment[lt]=KConfig saugojimo sąsaja
Comment[lv]=KConfig glabāšanas aizmugure
Comment[mai]=KConfig क' लेल भंडारक बैकेंड
Comment[ml]=കെകോണ്‍ഫിഗിനുളള സ്റ്റോറേജ് ബാക്കെന്‍ഡ്
Comment[mr]=KConfig करीता संचयन बॅकएन्ड
Comment[ms]=Storan belakang untuk KConfig
Comment[nb]=Bakgrunnslagring for KConfig
Comment[nds]=Spieker-Hülpprogramm för KConfig
Comment[nl]=Opslagbackend voor KConfig
Comment[nn]=Lagringsmotor for KConfig
Comment[or]=KConfig ପାଇଁ ଭଣ୍ଡାର ପଛ ପାଖ
Comment[pa]=KConfig ਲਈ ਸਟੋਰੇਜ਼ ਬੈਕਐਂਡ
Comment[pl]=Przechowywanie danych dla KConfig
Comment[pt]=Armazenamento da infra-estrutura do KConfig
Comment[pt_BR]=Infraestrutura de armazenamento para o KConfig
Comment[ro]=Suport de stocare pentru KConfig
Comment[ru]=Модуль хранения параметров KConfig
Comment[se]=KConfig vurkenduogáš
Comment[si]=KConfig සඳහා ගබඩා පසුඈදුම
Comment[sk]=Úložisko pre KConfig
Comment[sl]=Ozadje za shranjevanje v KConfigu
Comment[sq]=Mbështetëse Ruajtëse për KConfig
Comment[sr]=Складишна позадина за К‑конфиг
Comment[sr@ijekavian]=Складишна позадина за К‑конфиг
Comment[sr@ijekavianlatin]=Skladišna pozadina za KConfig
Comment[sr@latin]=Skladišna pozadina za KConfig
Comment[sv]=Lagringsgränssnitt för KConfig
Comment[ta]=கேவடிவமைப்பிற்கான பின்னணி சேமிப்பகம்
Comment[tg]=Пуштибонии захирагоҳ барои KConfig
Comment[th]=โปรแกรมเบื้องหลังพื้นที่จัดเก็บข้อมูลสำหรับ KConfig
Comment[tr]=KConfig için Depolama Arka Ucu
Comment[ug]=KConfig نىڭ ساقلاش ئارقا ئۇچى
Comment[uk]=Засіб збереження для KConfig
+Comment[vi]=Hậu trường lưu trữ cho KConfig
Comment[wa]=Bouye di fond di stocaedje po KConfig
Comment[x-test]=xxStorage backend for KConfigxx
Comment[zh_CN]=KConfig 存储后端
Comment[zh_TW]=KConfig 儲存後端介面
diff --git a/kdecore/io/kurl.h b/kdecore/io/kurl.h
index 92d3c4ca27..e2881b9258 100644
--- a/kdecore/io/kurl.h
+++ b/kdecore/io/kurl.h
@@ -1,1188 +1,1190 @@
// -*- c-basic-offset: 2 -*-
/* This file is part of the KDE libraries
* Copyright (C) 1999 Torben Weis <weis@kde.org>
* Copyright (C) 2005-2006 David Faure <faure@kde.org>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library 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
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public License
* along with this library; see the file COPYING.LIB. If not, write to
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
#ifndef kurl_h
#define kurl_h
#include <kdecore_export.h>
#include <QtCore/QVariant>
#include <QtCore/QUrl>
#include <QtCore/QMap>
class QStringList;
class QMimeData;
class KUrlPrivate;
// maybe we should encapsulate QUrl instead of inheriting from it.
// this would even allow us to inherit from KUri instead.
// and this way hacks like setPath() would be less ugly, and we could avoid
// half KDE code using setScheme() and the other half using setProtocol(), etc.
// (DF)
/**
* \class KUrl kurl.h <KUrl>
*
* Represents and parses a URL.
*
* A prototypical URL looks like:
* \code
* protocol://user:password\@hostname:port/path/to/file.ext#reference
* \endcode
*
* KUrl handles escaping of URLs. This means that the specification
* of a full URL will differ from the corresponding string that would specify a
* local file or directory in file-operations like fopen. This is because an URL
* doesn't allow certain characters and escapes them. (e.g. '#'->"%23", space->"%20")
* (In a URL the hash-character '#' is used to specify a "reference", i.e. the position
* within a document).
*
* The constructor KUrl(const QString&) expects a string properly escaped,
* or at least non-ambiguous.
* If you have the absolute path you should use KUrl::fromPath(const QString&).
* \code
* KUrl kurl = KUrl::fromPath("/bar/#foo#");
* QString url = kurl.url(); // -> "file:///bar/%23foo%23"
* \endcode
*
* If you have the URL of a local file or directory and need the absolute path,
* you would use toLocalFile().
* \code
* KUrl url( "file:///bar/%23foo%23" );
* ...
* if ( url.isLocalFile() )
* QString path = url.toLocalFile(); // -> "/bar/#foo#"
* \endcode
*
* This must also be considered when you have separated directory and file
* strings and need to put them together.
* While you can simply concatenate normal path strings, you must take care if
* the directory-part is already an escaped URL.
* (This might be needed if the user specifies a relative path, and your
* program supplies the rest from elsewhere.)
*
* Wrong:
* \code
* QString dirUrl = "file:///bar/";
* QString fileName = "#foo#";
* QString invalidURL = dirUrl + fileName; // -> "file:///bar/#foo#" won't behave like you would expect.
* \endcode
* Instead you should use addPath():
* Right:
* \code
* KUrl url( "file:///bar/" );
* QString fileName = "#foo#";
* url.addPath( fileName );
* QString validURL = url.url(); // -> "file:///bar/%23foo%23"
* \endcode
*
* Also consider that some URLs contain the password, but this shouldn't be
* visible. Your program should use prettyUrl() every time it displays a
* URL, whether in the GUI or in debug output or...
*
* \code
* KUrl url( "ftp://name:password@ftp.faraway.org/bar/%23foo%23");
* QString visibleURL = url.prettyUrl(); // -> "ftp://name@ftp.faraway.org/bar/%23foo%23"
* \endcode
* Note that prettyUrl() doesn't change the character escapes (like "%23").
* Otherwise the URL would be invalid and the user wouldn't be able to use it in another
* context.
*
*/
class KDECORE_EXPORT KUrl : public QUrl // krazy:exclude=dpointer,qclasses (krazy can't deal with embedded classes)
{
public:
typedef QMap<QString, QString> MetaDataMap;
enum MimeDataFlags { DefaultMimeDataFlags = 0, NoTextExport = 1 };
/**
* Options to be used in adjustPath
*/
enum AdjustPathOption
{
/**
* strips a trailing '/', except when the path is already just "/".
*/
RemoveTrailingSlash,
/**
* Do not change the path.
*/
LeaveTrailingSlash,
/**
* adds a trailing '/' if there is none yet
*/
AddTrailingSlash
};
/**
* \class List kurl.h <KUrl>
*
* KUrl::List is a QList that contains KUrls with a few
* convenience methods.
* @see KUrl
* @see QList
*/
class KDECORE_EXPORT List : public QList<KUrl> //krazy:exclude=dpointer (just some convenience methods)
{
public:
/**
* Creates an empty List.
*/
List() { }
/**
* Creates a list that contains the given URL as only
* item.
* @param url the url to add.
*/
List(const KUrl &url);
/**
* Creates a list that contains the URLs from the given
* list of strings.
* @param list the list containing the URLs as strings
*/
List(const QStringList &list);
/**
* Creates a list that contains the URLs from the given QList<KUrl>.
* @param list the list containing the URLs
*/
List(const QList<KUrl> &list);
/**
* Creates a list that contains the URLs from the given QList<KUrl>.
* @param list the list containing the URLs
* @since 4.7
*/
List(const QList<QUrl> &list);
/**
* Converts the URLs of this list to a list of strings.
* @return the list of strings
*/
QStringList toStringList() const;
/**
* Converts the URLs of this list to a list of strings.
*
* @param trailing use to add or remove a trailing slash to/from the path.
*
* @return the list of strings
*
* @since 4.6
*/
QStringList toStringList(KUrl::AdjustPathOption trailing) const;
/**
* Converts this KUrl::List to a QVariant, this allows to use KUrl::List
* in QVariant() constructor
*/
operator QVariant() const;
/**
* Converts this KUrl::List into a list of QUrl instances.
* @since 4.7
*/
operator QList<QUrl>() const;
/**
* Adds URLs data into the given QMimeData.
*
* By default, populateMimeData also exports the URLs as plain text, for e.g. dropping
* onto a text editor.
* But in some cases this might not be wanted, e.g. if adding other mime data
* which provides better plain text data.
*
* WARNING: do not call this method multiple times on the same mimedata object,
* you can add urls only once. But you can add other things, e.g. images, XML...
*
* @param mimeData the QMimeData instance used to drag or copy this URL
* @param metaData KIO metadata shipped in the mime data, which is used for instance to
* set a correct HTTP referrer (some websites require it for downloading e.g. an image)
* @param flags set NoTextExport to prevent setting plain/text data into @p mimeData
* In such a case, setExportAsText( false ) should be called.
*/
void populateMimeData( QMimeData* mimeData,
const KUrl::MetaDataMap& metaData = MetaDataMap(),
MimeDataFlags flags = DefaultMimeDataFlags ) const;
/**
* Adds URLs into the given QMimeData.
*
* This should add both the KDE-style URLs (eg: desktop:/foo) and
* the "most local" version of the URLs (eg:
* file:///home/jbloggs/Desktop/foo) to the mimedata.
*
* This method should be called on the KDE-style URLs.
*
* @code
* QMimeData* mimeData = new QMimeData();
*
* KUrl::List kdeUrls;
* kdeUrls << "desktop:/foo";
* kdeUrls << "desktop:/bar";
*
* KUrl::List normalUrls;
* normalUrls << "file:///home/jbloggs/Desktop/foo";
* normalUrls << "file:///home/jbloggs/Desktop/bar";
*
* kdeUrls.populateMimeData(normalUrls, mimeData);
* @endcode
*
* @param mostLocalUrls the "most local" urls
* @param mimeData the mime data object to populate
* @param metaData KIO metadata shipped in the mime data, which is
* used for instance to set a correct HTTP referrer
* (some websites require it for downloading e.g. an
* image)
* @param flags set NoTextExport to prevent setting plain/text
* data into @p mimeData. In such a case,
* <code>setExportAsText(false)</code> should be called.
* @since 4.2
*/
void populateMimeData(const KUrl::List& mostLocalUrls,
QMimeData* mimeData,
const KUrl::MetaDataMap& metaData = MetaDataMap(),
MimeDataFlags flags = DefaultMimeDataFlags) const;
/**
* Return true if @p mimeData contains URI data
*/
static bool canDecode( const QMimeData *mimeData );
/**
* Return the list of mimeTypes that can be decoded by fromMimeData
*/
static QStringList mimeDataTypes();
/**
* Extract a list of KUrls from the contents of @p mimeData.
* Decoding will fail if @p mimeData does not contain any URLs, or if at
* least one extracted URL is not valid.
* @param mimeData the mime data to extract from; cannot be 0
* @param metaData optional pointer to a map holding the metadata
* @return the list of urls
*/
static KUrl::List fromMimeData( const QMimeData *mimeData, KUrl::MetaDataMap* metaData = 0 );
/**
* Flags to be used in fromMimeData.
* @since 4.2.3
*/
enum DecodeOptions {
/**
* When the mimedata contains both KDE-style URLs (eg: desktop:/foo) and
* the "most local" version of the URLs (eg: file:///home/dfaure/Desktop/foo),
* decode it as local urls. Useful in paste/drop operations that end up calling KIO,
* so that urls from other users work as well.
*/
PreferLocalUrls,
/**
* When the mimedata contains both KDE-style URLs (eg: desktop:/foo) and
* the "most local" version of the URLs (eg: file:///home/dfaure/Desktop/foo),
* decode it as the KDE-style URL. Useful in DnD code e.g. when moving icons,
* and the kde-style url is used as identifier for the icons.
*/
PreferKdeUrls
};
/**
* Extract a list of KUrls from the contents of @p mimeData.
* Decoding will fail if @p mimeData does not contain any URLs, or if at
* least one extracted URL is not valid.
* @param mimeData the mime data to extract from; cannot be 0
* @param decodeOptions options for decoding
* @param metaData optional pointer to a map holding the metadata
* @return the list of urls
* @since 4.2.3
*/
static KUrl::List fromMimeData( const QMimeData *mimeData,
DecodeOptions decodeOptions, // TODO KDE5: = PreferKdeUrls, and merge with above
KUrl::MetaDataMap* metaData = 0 );
};
/**
* Constructs an empty URL.
*/
KUrl();
/**
* Destructs the KUrl object.
*/
~KUrl();
/**
* Usual constructor, to construct from a string.
* @param urlOrPath An encoded URL or a path.
*/
KUrl( const QString& urlOrPath );
/**
* Constructor taking a char * @p urlOrPath, which is an _encoded_ representation
* of the URL, exactly like the usual constructor. This is useful when
* the URL, in its encoded form, is strictly ascii.
* @param urlOrPath An encoded URL, or a path.
*/
explicit KUrl( const char * urlOrPath );
/**
* Constructor taking a QByteArray @p urlOrPath, which is an _encoded_ representation
* of the URL, exactly like the usual constructor. This is useful when
* the URL, in its encoded form, is strictly ascii.
* @param urlOrPath An encoded URL, or a path.
*/
explicit KUrl( const QByteArray& urlOrPath );
/**
* Copy constructor.
* @param u the KUrl to copy
*/
KUrl( const KUrl& u );
/**
* Converts from a QUrl.
* @param u the QUrl
*/
KUrl( const QUrl &u ); //krazy:exclude=qclasses
/**
* Constructor allowing relative URLs.
*
* @param _baseurl The base url.
* @param _rel_url A relative or absolute URL.
* If this is an absolute URL then @p _baseurl will be ignored.
* If this is a relative URL it will be combined with @p _baseurl.
* Note that _rel_url should be encoded too, in any case.
* So do NOT pass a path here (use setPath or addPath instead).
*/
KUrl( const KUrl& _baseurl, const QString& _rel_url );
/**
* Returns the protocol for the URL (i.e., file, http, etc.), lowercased.
* @see QUrl::scheme
*/
QString protocol() const;
/**
* Sets the protocol for the URL (i.e., file, http, etc.)
* @param proto the new protocol of the URL (without colon)
*/
void setProtocol( const QString& proto );
/**
* Returns the decoded user name (login, user id, ...) included in the URL.
* @return the user name or QString() if there is no user name
*/
QString user() const;
/**
* Sets the user name (login, user id, ...) included in the URL.
*
* Special characters in the user name will appear encoded in the URL.
* @param user the name of the user or QString() to remove the user
*/
void setUser( const QString& user );
/**
* Test to see if this URL has a user name included in it.
* @return true if the URL has an non-empty user name
*/
bool hasUser() const;
/**
* Returns the decoded password (corresponding to user()) included in the URL.
* @return the password or QString() if it does not exist
**/
QString pass() const;
/**
* Sets the password (corresponding to user()) included in the URL.
*
* Special characters in the password will appear encoded in the URL.
* Note that a password can only appear in a URL string if you also set
* a user.
* @param pass the password to set or QString() to remove the password
* @see setUser
* @see hasUser
**/
void setPass( const QString& pass );
/**
* Test to see if this URL has a password included in it.
* @return true if there is a non-empty password set
**/
bool hasPass() const;
/**
* Test to see if this URL has a hostname included in it.
* @return true if the URL has a host
**/
bool hasHost() const;
/**
* @param trailing use to add or remove a trailing slash to/from the path. see adjustPath
* @return The current decoded path. This does not include the query. Can
* be QString() if no path is set.
*/
QString path( AdjustPathOption trailing = LeaveTrailingSlash ) const;
/**
* @param trailing use to add or remove a trailing slash to/from the local path. see adjustPath
* @return The current local path. Can
* be QString() if no path is set.
*/
QString toLocalFile( AdjustPathOption trailing = LeaveTrailingSlash ) const;
/// \reimp so that KUrl u; u.setPath(path); implies "file" protocol.
void setPath( const QString& path );
/**
* Test to see if this URL has a path is included in it.
* @return true if there is a path
**/
bool hasPath() const;
/**
* Options to be used in cleanPath
*/
enum CleanPathOption
{
/**
* if set, occurrences of consecutive directory separators
* (e.g. /foo//bar) are cleaned up as well. (set by default)
*/
SimplifyDirSeparators = 0x00,
/**
* The opposite of SimplifyDirSeparators.
*/
KeepDirSeparators = 0x01
};
Q_DECLARE_FLAGS(CleanPathOptions,CleanPathOption)
/**
* Resolves "." and ".." components in path.
* Some servers seem not to like the removal of extra '/'
* even though it is against the specification in RFC 2396.
*
* @param options use KeepDirSeparators if you don't want to remove consecutive
* occurrences of directory separator
*/
void cleanPath(const CleanPathOption& options = SimplifyDirSeparators);
/**
* Add or remove a trailing slash to/from the path.
*
* If the URL has no path, then no '/' is added
* anyway. And on the other side: If the path is "/", then this
* character won't be stripped. Reason: "ftp://weis\@host" means something
* completely different than "ftp://weis\@host/". So adding or stripping
* the '/' would really alter the URL, while "ftp://host/path" and
* "ftp://host/path/" mean the same directory.
*
* @param trailing RemoveTrailingSlash strips any trailing '/' and
* AddTrailingSlash adds a trailing '/' if there is none yet
*/
void adjustPath(AdjustPathOption trailing);
/**
* This is useful for HTTP. It looks first for '?' and decodes then.
* The encoded path is the concatenation of the current path and the query.
* @param _txt the new path and query.
*/
void setEncodedPathAndQuery( const QString& _txt );
#if 0
/**
* Sets the (already encoded) path
* @param _txt the new path
* @see QTextCodec::mibEnum()
*/
void setEncodedPath(const QString& _txt );
#endif
/**
* Option to be used in encodedPathAndQuery
**/
enum EncodedPathAndQueryOption
{
/**
* Permit empty path (default)
*/
PermitEmptyPath=0x00,
/**
* If set to true then an empty path is substituted by "/"
* (this is the opposite of PermitEmptyPath)
*/
AvoidEmptyPath=0x01
};
Q_DECLARE_FLAGS( EncodedPathAndQueryOptions, EncodedPathAndQueryOption)
/**
* Returns the encoded path and the query.
*
* @param trailing add or remove a trailing '/', see adjustPath
* @param options a set of flags from EncodedPathAndQueryOption
* @return The concatenation of the encoded path , '?' and the encoded query.
*
*/
QString encodedPathAndQuery( AdjustPathOption trailing = LeaveTrailingSlash, const EncodedPathAndQueryOptions &options = PermitEmptyPath ) const;
/**
* @param query This is considered to be encoded. This has a good reason:
* The query may contain the 0 character.
*
* The query should start with a '?'. If it doesn't '?' is prepended.
*/
void setQuery( const QString& query );
/**
* Returns the query of the URL.
* The query may contain the 0 character.
* If a query is present it always starts with a '?'.
* A single '?' means an empty query.
* An empty string means no query.
* @return The encoded query, or QString() if there is none.
*/
QString query() const;
/**
* Returns the reference (or "fragment") of the URL.
* The reference is @em never decoded automatically.
* @return the undecoded reference, or QString() if there is none
*/
QString ref() const;
/**
* Sets the reference/fragment part (everything after '#').
* If you have an encoded fragment already (as a QByteArray), you can call setFragment directly.
* @param fragment the unencoded reference (or QString() to remove it).
*/
void setRef( const QString& fragment );
/**
* Checks whether the URL has a reference/fragment part.
* @return true if the URL has a reference part. In a URL like
* http://www.kde.org/kdebase.tar#tar:/README it would
* return true, too.
*/
bool hasRef() const;
/**
* Returns the HTML reference (the part of the URL after "#").
* @return The HTML-style reference.
* @see split
* @see hasSubUrl
* @see encodedHtmlRef
*/
QString htmlRef() const;
/**
* Returns the HTML reference (the part of the URL after "#") in
* encoded form.
* @return The HTML-style reference in its original form.
*/
QString encodedHtmlRef() const;
/**
* Sets the HTML-style reference.
*
* @param _ref The new reference. This is considered to be @em not encoded in
* contrast to setRef(). Use QString() to remove it.
* @see htmlRef()
*/
void setHTMLRef( const QString& _ref );
/**
* Checks whether there is a HTML reference.
* @return true if the URL has an HTML-style reference.
* @see htmlRef()
*/
bool hasHTMLRef() const;
/**
* Checks whether the file is local.
- * @return true if the file is a plain local file and has no filter protocols
- * attached to it.
+ * @return true if the file is a plain local file (i.e. uses the file protocol
+ * and no hostname, or the local hostname).
+ * When isLocalFile returns true, you can use toLocalFile to read the file contents.
+ * Otherwise you need to use KIO (e.g. KIO::get).
*/
bool isLocalFile() const;
/**
* Adds encoding information to url by adding a "charset" parameter. If there
* is already a charset parameter, it will be replaced.
* @param encoding the encoding to add or QString() to remove the
* encoding.
*/
void setFileEncoding(const QString &encoding);
/**
* Returns encoding information from url, the content of the "charset"
* parameter.
* @return An encoding suitable for QTextCodec::codecForName()
* or QString() if not encoding was specified.
*/
QString fileEncoding() const;
/**
* Checks whether the URL has any sub URLs. See split()
* for examples for sub URLs.
* @return true if the file has at least one sub URL.
* @see split
*/
bool hasSubUrl() const;
/**
* Adds to the current path.
* Assumes that the current path is a directory. @p txt is appended to the
* current path. The function adds '/' if needed while concatenating.
* This means it does not matter whether the current path has a trailing
* '/' or not. If there is none, it becomes appended. If @p txt
* has a leading '/' then this one is stripped.
*
* @param txt The text to add. It is considered to be decoded.
*/
void addPath( const QString& txt );
/**
* Options for queryItems. Currently, only one option is
* defined:
*
* @param CaseInsensitiveKeys normalize query keys to lowercase.
**/
enum QueryItemsOption { CaseInsensitiveKeys = 1 };
Q_DECLARE_FLAGS(QueryItemsOptions,QueryItemsOption)
/**
* Returns the list of query items as a map mapping keys to values.
*
* This does the same as QUrl::queryItems(), except that it
* decodes "+" into " " in the value, supports CaseInsensitiveKeys,
* and returns a different data type.
*
* @param options any of QueryItemsOption <em>or</em>ed together.
*
* @return the map of query items or the empty map if the url has no
* query items.
*/
QMap< QString, QString > queryItems( const QueryItemsOptions& options = 0 ) const;
// #### TODO port the above queryItems to look more like QUrl's
//using QUrl::queryItems; // temporary
/**
* Returns the value of a certain query item.
*
* This does the same as QUrl::queryItemValue(), except that it
* decodes "+" into " " in the value.
*
* @param item Item whose value we want
*
* @return the value of the given query item name or QString() if the
* specified item does not exist.
*/
QString queryItem(const QString &item) const;
/**
* Add an additional query item.
* To replace an existing query item, the item should first be
* removed with removeQueryItem()
*
* @param _item Name of item to add
* @param _value Value of item to add
*/
void addQueryItem( const QString& _item, const QString& _value );
/**
* Sets the filename of the path.
* In comparison to addPath() this function does not assume that the current
* path is a directory. This is only assumed if the current path ends with '/'.
*
* Any reference is reset.
*
* @param _txt The filename to be set. It is considered to be decoded. If the
* current path ends with '/' then @p _txt int just appended, otherwise
* all text behind the last '/' in the current path is erased and
* @p _txt is appended then. It does not matter whether @p _txt starts
* with '/' or not.
*/
void setFileName( const QString&_txt );
/**
* option to be used in fileName and directory
*/
enum DirectoryOption
{
/**
* This tells whether a trailing '/' should be ignored.
*
* If the flag is not set, for both <tt>file:///hallo/torben/</tt> and <tt>file:///hallo/torben</tt>
* the fileName is "torben" and the path is "hallo"
*
* If the flag is set, then everything behind the last '/'is considered to be the filename.
* So "hallo/torben" will be the path and the filename will be empty.
*/
ObeyTrailingSlash = 0x02,
/**
* tells whether the returned result should end with '/' or not.
* If the flag is set, '/' is added to the end of the path
*
* If the path is empty or just "/" then this flag has no effect.
*
* This option should only be used in directory(), it has no effect in fileName()
*/
AppendTrailingSlash = 0x04,
/**
* Opposite of ObeyTrailingSlash (default)
* fileName("file:/foo/") and fileName("file:/foo") is "foo" in both cases.
*/
IgnoreTrailingSlash = 0x01
};
Q_DECLARE_FLAGS(DirectoryOptions,DirectoryOption)
/**
* Returns the filename of the path.
* @param options a set of DirectoryOption flags. (StripTrailingSlashFromResult has no effect)
* @return The filename of the current path. The returned string is decoded. Null
* if there is no file (and thus no path).
*/
QString fileName( const DirectoryOptions& options = IgnoreTrailingSlash ) const;
/**
* Returns the directory of the path.
* @param options a set of DirectoryOption flags
* @return The directory part of the current path. Everything between the last and the second last '/'
* is returned. For example <tt>file:///hallo/torben/</tt> would return "/hallo/torben/" while
* <tt>file:///hallo/torben</tt> would return "hallo/". The returned string is decoded.
* QString() is returned when there is no path.
*/
QString directory( const DirectoryOptions& options = IgnoreTrailingSlash ) const;
/**
* Set the directory to @p dir, leaving the filename empty.
*/
void setDirectory(const QString &dir);
/**
* Changes the directory by descending into the given directory.
* It is assumed the current URL represents a directory.
* If @p dir starts with a "/" the
* current URL will be "protocol://host/dir" otherwise @p _dir will
* be appended to the path. @p _dir can be ".."
* This function won't strip protocols. That means that when you are in
* file:///dir/dir2/my.tgz#tar:/ and you do cd("..") you will
* still be in file:///dir/dir2/my.tgz#tar:/
*
* @param _dir the directory to change to
* @return true if successful
*/
bool cd( const QString& _dir );
/**
* Returns the URL as string, with all escape sequences intact,
* encoded in a given charset.
* This is used in particular for encoding URLs in UTF-8 before using them
* in a drag and drop operation.
* Please note that the string returned by url() will include
* the password of the URL. If you want to show the URL to the
* user, use prettyUrl().
*
* @param trailing use to add or remove a trailing slash to/from the path. See adjustPath
* @return The complete URL, with all escape sequences intact, encoded
* in a given charset.
* @see prettyUrl()
*/
QString url( AdjustPathOption trailing = LeaveTrailingSlash ) const;
/**
* Returns the URL as string in human-friendly format.
* Example:
* \code
* http://localhost:8080/test.cgi?test=hello world&name=fred
* \endcode
* @param trailing use to add or remove a trailing slash to/from the path. see adjustPath.
*
* @return A human readable URL, with no non-necessary encodings/escaped
* characters. Password will not be shown.
* @see url()
*/
QString prettyUrl( AdjustPathOption trailing = LeaveTrailingSlash ) const;
/**
* Return the URL as a string, which will be either the URL (as prettyUrl
* would return) or, when the URL is a local file without query or ref,
* the path.
* Use this method, to display URLs to the user.
* You can give the result of pathOrUrl back to the KUrl constructor, it accepts
* both paths and urls.
*
* @return the new KUrl
*/
QString pathOrUrl() const;
/**
* Overload with @p trailing parameter
* @param trailing use to add or remove a trailing slash to/from the path. see adjustPath.
* @since 4.2
*/
QString pathOrUrl(AdjustPathOption trailing) const; // KDE5: merge with above. Rename to toUrlOrLocalFile?
/**
* Returns the URL as a string, using the standard conventions for mime data
* (drag-n-drop or copy-n-paste).
* Internally used by KUrl::List::fromMimeData, which is probably what you want to use instead.
*/
QString toMimeDataString() const;
/**
* This function is useful to implement the "Up" button in a file manager for example.
* cd() never strips a sub-protocol. That means that if you are in
* file:///home/x.tgz#gzip:/#tar:/ and hit the up button you expect to see
* file:///home. The algorithm tries to go up on the right-most URL. If that is not
* possible it strips the right most URL. It continues stripping URLs.
* @return a URL that is a level higher
*/
KUrl upUrl( ) const;
KUrl& operator=( const KUrl& _u );
// Define those, since the constructors are explicit
KUrl& operator=( const char * _url ) { *this = KUrl(_url); return *this; }
KUrl& operator=( const QByteArray& _url ) { *this = KUrl(_url); return *this; }
KUrl& operator=( const QString& _url ) { *this = KUrl(_url); return *this; }
bool operator==( const KUrl& _u ) const;
bool operator==( const QString& _u ) const;
bool operator!=( const KUrl& _u ) const { return !( *this == _u ); }
bool operator!=( const QString& _u ) const { return !( *this == _u ); }
/**
* Converts this KUrl to a QVariant, this allows to use KUrl
* in QVariant() constructor
*/
operator QVariant() const;
/**
* The same as equals(), just with a less obvious name.
* Compares this url with @p u.
* @param u the URL to compare this one with.
* @param ignore_trailing set to true to ignore trailing '/' characters.
* @return True if both urls are the same. If at least one of the urls is invalid,
* false is returned.
* @see operator==. This function should be used if you want to
* ignore trailing '/' characters.
* @deprecated Use equals() instead.
*/
#ifndef KDE_NO_DEPRECATED
KDE_DEPRECATED bool cmp( const KUrl &u, bool ignore_trailing = false ) const;
#endif
/**
* Flags to be used in URL comparison functions like equals, or urlcmp
*/
enum EqualsOption
{
/**
* ignore trailing '/' characters. The paths "dir" and "dir/" are treated the same.
* Note however, that by default, the paths "" and "/" are not the same
* (For instance ftp://user@host redirects to ftp://user@host/home/user (on a linux server),
* while ftp://user@host/ is the root dir).
* This is also why path(RemoveTrailingSlash) for "/" returns "/" and not "".
*
* When dealing with web pages however, you should also set AllowEmptyPath so that
* no path and "/" are considered equal.
*/
CompareWithoutTrailingSlash = 0x01,
/**
* disables comparison of HTML-style references.
*/
CompareWithoutFragment = 0x02,
/**
* Treat a URL with no path as equal to a URL with a path of "/",
* when CompareWithoutTrailingSlash is set.
* Example:
* KUrl::urlcmp("http://www.kde.org", "http://www.kde.org/", KUrl::CompareWithoutTrailingSlash | KUrl::AllowEmptyPath)
* returns true.
* This option is ignored if CompareWithoutTrailingSlash isn't set.
* @since 4.5
*/
AllowEmptyPath = 0x04
};
Q_DECLARE_FLAGS(EqualsOptions,EqualsOption)
/**
* Compares this url with @p u.
* @param u the URL to compare this one with.
* @param options a set of EqualsOption flags
* @return True if both urls are the same. If at least one of the urls is invalid,
* false is returned.
* @see operator==. This function should be used if you want to
* set additional options, like ignoring trailing '/' characters.
*/
bool equals( const KUrl &u, const EqualsOptions& options=0 ) const;
/**
* Checks whether the given URL is parent of this URL.
* For instance, ftp://host/dir/ is a parent of ftp://host/dir/subdir/subsubdir/.
* @return true if this url is a parent of @p u (or the same URL as @p u)
*
*/
bool isParentOf( const KUrl& u ) const;
// (this overload of the QUrl method allows to use the implicit KUrl constructors)
// but also the equality test
/**
* Splits nested URLs like file:///home/weis/kde.tgz#gzip:/#tar:/kdebase
* A URL like http://www.kde.org#tar:/kde/README.hml#ref1 will be split in
* http://www.kde.org and tar:/kde/README.html#ref1.
* That means in turn that "#ref1" is an HTML-style reference and not a new sub URL.
* Since HTML-style references mark
* a certain position in a document this reference is appended to every URL.
* The idea behind this is that browsers, for example, only look at the first URL while
* the rest is not of interest to them.
*
*
* @param _url The URL that has to be split.
* @return An empty list on error or the list of split URLs.
* @see hasSubUrl
*/
static List split( const QString& _url );
/**
* Splits nested URLs like file:///home/weis/kde.tgz#gzip:/#tar:/kdebase
* A URL like http://www.kde.org#tar:/kde/README.hml#ref1 will be split in
* http://www.kde.org and tar:/kde/README.html#ref1.
* That means in turn that "#ref1" is an HTML-style reference and not a new sub URL.
* Since HTML-style references mark
* a certain position in a document this reference is appended to every URL.
* The idea behind this is that browsers, for example, only look at the first URL while
* the rest is not of interest to them.
*
* @return An empty list on error or the list of split URLs.
*
* @param _url The URL that has to be split.
* @see hasSubUrl
*/
static List split( const KUrl& _url );
/**
* Reverses split(). Only the first URL may have a reference. This reference
* is considered to be HTML-like and is appended at the end of the resulting
* joined URL.
* @param _list the list to join
* @return the joined URL
*/
static KUrl join( const List& _list );
/**
* Creates a KUrl object from a QString representing an absolute path.
* KUrl url( somePath ) is almost the same, but this method is more explicit,
* avoids the path-or-url detection in the KUrl constructor, and parses
* "abc:def" as a filename, not as URL.
*
* @param text the path
* @return the new KUrl
*/
static KUrl fromPath( const QString& text );
/**
* \deprecated
* Since KDE4 you can pass both urls and paths to the KUrl constructors.
* Use KUrl(text) instead.
*/
#ifndef KDE_NO_DEPRECATED
static KDE_DEPRECATED KUrl fromPathOrUrl( const QString& text );
#endif
/**
* Creates a KUrl from a string, using the standard conventions for mime data
* (drag-n-drop or copy-n-paste).
* Internally used by KUrl::List::fromMimeData, which is probably what you want to use instead.
*/
static KUrl fromMimeDataByteArray( const QByteArray& str );
/**
* Adds URL data into the given QMimeData.
*
* By default, populateMimeData also exports the URL as plain text, for e.g. dropping
* onto a text editor.
* But in some cases this might not be wanted, e.g. if adding other mime data
* which provides better plain text data.
*
* WARNING: do not call this method multiple times, use KUrl::List::populateMimeData instead.
*
* @param mimeData the QMimeData instance used to drag or copy this URL
* @param metaData KIO metadata shipped in the mime data, which is used for instance to
* set a correct HTTP referrer (some websites require it for downloading e.g. an image)
* @param flags set NoTextExport to prevent setting plain/text data into @p mimeData
* In such a case, setExportAsText( false ) should be called.
*/
void populateMimeData( QMimeData* mimeData,
const MetaDataMap& metaData = MetaDataMap(),
MimeDataFlags flags = DefaultMimeDataFlags ) const;
/**
* Convert unicoded string to local encoding and use %-style
* encoding for all common delimiters / non-ascii characters.
* @param str String to encode (can be QString()).
* @return the encoded string
*
* @deprecated use QUrl::toPercentEncoding instead, but note that it
* returns a QByteArray and not a QString. Which makes sense since
* everything is 7 bit (ascii) after being percent-encoded.
*/
#ifndef KDE_NO_DEPRECATED
static KDE_DEPRECATED QString encode_string(const QString &str) {
return QString::fromLatin1( QUrl::toPercentEncoding( str ).constData() ); //krazy:exclude=qclasses
}
#endif
/**
* Convert unicoded string to local encoding and use %-style
* encoding for all common delimiters / non-ascii characters
* as well as the slash '/'.
* @param str String to encode
*
* @deprecated use QUrl::toPercentEncoding(str,"/") instead, but note that it
* returns a QByteArray and not a QString. Which makes sense since
* everything is 7 bit (ascii) after being percent-encoded.
*
*/
#ifndef KDE_NO_DEPRECATED
static KDE_DEPRECATED QString encode_string_no_slash(const QString &str) {
return QString::fromLatin1( QUrl::toPercentEncoding( str, "/" ).constData() ); //krazy:exclude=qclasses
}
#endif
/**
* Decode %-style encoding and convert from local encoding to unicode.
* Reverse of encode_string()
* @param str String to decode (can be QString()).
*
* @deprecated use QUrl::fromPercentEncoding(encodedURL) instead, but
* note that it takes a QByteArray and not a QString. Which makes sense since
* everything is 7 bit (ascii) when being percent-encoded.
*
*/
#ifndef KDE_NO_DEPRECATED
static KDE_DEPRECATED QString decode_string(const QString &str) {
return QUrl::fromPercentEncoding( str.toLatin1() ); //krazy:exclude=qclasses
}
#endif
/**
* Convenience function.
*
* Returns whether '_url' is likely to be a "relative" URL instead of
* an "absolute" URL.
*
* This is mostly meant for KUrl(url, relativeUrl).
*
* If you are looking for the notion of "relative path" (foo) vs "absolute path" (/foo),
* use QUrl::isRelative() instead.
* Indeed, isRelativeUrl() returns true for the string "/foo" since it doesn't contain a protocol,
* while KUrl("/foo").isRelative() is false since the KUrl constructor turns it into file:///foo.
* The two methods basically test the same thing, but this one takes a string (which is faster)
* while the class method requires a QUrl/KUrl which gives a more expected result, given
* the "magic" in the KUrl constructor.
*
* @param _url URL to examine
* @return true when the URL is likely to be "relative", false otherwise.
*/
static bool isRelativeUrl(const QString &_url);
/**
* Convenience function
*
* Returns a "relative URL" based on @p base_url that points to @p url.
*
* If no "relative URL" can be created, e.g. because the protocol
* and/or hostname differ between @p base_url and @p url an absolute
* URL is returned.
* Note that if @p base_url represents a directory, it should contain
* a trailing slash.
* @param base_url the URL to derive from
* @param url new URL
* @see adjustPath()
*/
static QString relativeUrl(const KUrl &base_url, const KUrl &url);
/**
* Convenience function
*
* Returns a relative path based on @p base_dir that points to @p path.
* @param base_dir the base directory to derive from
* @param path the new target directory
* @param isParent A pointer to a boolean which, if provided, will be set to reflect
* whether @p path has @p base_dir is a parent dir.
*/
static QString relativePath(const QString &base_dir, const QString &path, bool *isParent=0);
private:
void _setQuery( const QString& query );
void _setEncodedUrl(const QByteArray& url);
QString toString() const; // forbidden, use url(), prettyUrl(), or pathOrUrl() instead.
operator QString() const; // forbidden, use url(), prettyUrl(), or pathOrUrl() instead.
private:
KUrlPrivate* const d; // Don't ever use this, it would break clear() (which is in QUrl)
};
Q_DECLARE_OPERATORS_FOR_FLAGS(KUrl::EncodedPathAndQueryOptions)
Q_DECLARE_OPERATORS_FOR_FLAGS(KUrl::CleanPathOptions)
Q_DECLARE_OPERATORS_FOR_FLAGS(KUrl::QueryItemsOptions)
Q_DECLARE_OPERATORS_FOR_FLAGS(KUrl::EqualsOptions)
Q_DECLARE_OPERATORS_FOR_FLAGS(KUrl::DirectoryOptions)
Q_DECLARE_METATYPE(KUrl)
Q_DECLARE_METATYPE(KUrl::List)
/**
* \relates KUrl
* Compares URLs. They are parsed, split and compared.
* Two malformed URLs with the same string representation
* are nevertheless considered to be unequal.
* That means no malformed URL equals anything else.
* @deprecated use KUrl(_url1).equals(KUrl(_url2)) instead.
*/
#ifndef KDE_NO_DEPRECATED
KDECORE_EXPORT_DEPRECATED bool urlcmp( const QString& _url1, const QString& _url2 ); // KDE5: remove, KUrl::equals is better API
#endif
/**
* \relates KUrl
* Compares URLs. They are parsed, split and compared.
* Two malformed URLs with the same string representation
* are nevertheless considered to be unequal.
* That means no malformed URL equals anything else.
*
* @param _url1 A reference URL
* @param _url2 A URL that will be compared with the reference URL
* @param options a set of KUrl::EqualsOption flags
* @deprecated use KUrl(_url1).equals(KUrl(_url2), options) instead.
*/
#ifndef KDE_NO_DEPRECATED
KDECORE_EXPORT_DEPRECATED bool urlcmp( const QString& _url1, const QString& _url2, const KUrl::EqualsOptions& options ); // KDE5: remove, KUrl::equals is better API
#endif
KDECORE_EXPORT uint qHash(const KUrl& kurl);
#endif
diff --git a/kdecore/localization/all_languages.desktop b/kdecore/localization/all_languages.desktop
index bc2bc94483..5d46d6a879 100644
--- a/kdecore/localization/all_languages.desktop
+++ b/kdecore/localization/all_languages.desktop
@@ -1,17867 +1,17885 @@
[aa]
Name=Afar
Name[af]=Afar
Name[ar]=عفرية
Name[as]=আফাৰ
Name[ast]=Afar
Name[be]=Афарская
Name[be@latin]=Afarskaja
Name[bg]=Афар
Name[bn]=আফার
Name[bn_IN]=আফার
Name[br]=Afar
Name[bs]=Afarski
Name[ca]=Àfar
Name[ca@valencia]=Àfar
Name[cs]=Afar
Name[csb]=Afarsczi
Name[cy]=Afareg
Name[da]=Afar
Name[de]=Afar
Name[el]=Afar
Name[en_GB]=Afar
Name[eo]=Afara
Name[es]=Afar
Name[et]=Afari
Name[eu]=Afar
Name[fa]=افار
Name[fi]=Afar
Name[fr]=Afar
Name[fy]=Afar
Name[ga]=Afárais
Name[gl]=Afar
Name[gu]=અફર
Name[he]=אפאר
Name[hi]=अफ्र
Name[hne]=अफ्र
Name[hr]=Afarski
Name[hsb]=Afar
Name[hu]=Afar
Name[ia]=Afar
Name[id]=Afar
Name[is]=Afar
Name[it]=Afar
Name[ja]=アファル語
Name[kk]=Афарша
Name[km]=អាហ្វារ
Name[kn]=ಅಫಾರ್
Name[ko]=아파르어
Name[ku]=Afar
Name[lb]=Afar
Name[lt]=Afarų
Name[lv]=Afāru
Name[mai]=अफ्र
Name[mk]=Афар
Name[ml]=അഭര്‍
Name[mr]=अफार
Name[ms]=Afar
Name[nb]=Afar
Name[nds]=Afaarsch
Name[ne]=अफार
Name[nl]=Afar
Name[nn]=Afar
Name[oc]=Afar
Name[or]=Afar
Name[pa]=ਅਫਾਰ
Name[pl]=Afarski
Name[ps]=افار
Name[pt]=Afar
Name[pt_BR]=Afar
Name[ro]=Afară
Name[ru]=Афарский
Name[se]=Afárgiella
Name[si]=අෆාර්
Name[sk]=Afarčina
Name[sl]=afarsko
Name[sq]=Afar
Name[sr]=афарски
Name[sr@ijekavian]=афарски
Name[sr@ijekavianlatin]=afarski
Name[sr@latin]=afarski
Name[sv]=Afar
Name[ta]=அபார்
Name[te]=ఎఫార్
Name[tg]=Афарӣ
Name[th]=ภาษาอะฟาร์
Name[tr]=Afar
Name[ug]=ئافارچە
Name[uk]=Афар
Name[uz]=Afar
Name[uz@cyrillic]=Афар
-Name[vi]=Ă-pha
+Name[vi]=Afar
Name[wa]=Afar
-Name[x-test]=xxAfarxx
Name[xh]=Afar
+Name[x-test]=xxAfarxx
Name[zh_CN]=阿法尔语
Name[zh_HK]=阿發爾
Name[zh_TW]=阿發爾
[ab]
Name=Abkhazian
Name[af]=Abkhazian
Name[ar]=أبخازية
Name[as]=আব্‌খাজিয়ান
Name[ast]=Abxazianu
Name[be]=Абхазская
Name[be@latin]=Abchazkaja
Name[bg]=Абхазки
Name[bn]=আবখাজিয়ান
Name[bn_IN]=আভকাজিয়ান
Name[br]=Abkhazieg
Name[bs]=Abkhazijski
Name[ca]=Abkhaz
Name[ca@valencia]=Abkhaz
Name[cs]=Abcházský
Name[csb]=Abchasczi
Name[cy]=Abkhazeg
Name[da]=Abkhaziansk
Name[de]=Abhasisch
Name[el]=Αμπχαζιανά
Name[en_GB]=Abkhazian
Name[eo]=Abĥaza
Name[es]=Abjaso
Name[et]=Abhaasia
Name[eu]=Abkhazian
Name[fa]=ابخازیان
Name[fi]=Abhaasi
Name[fr]=Abkhaze
Name[fy]=Abkhasysk
Name[ga]=Abcáisis
Name[gl]=Abxasio
Name[gu]=અબ્ખાઝીઅન
Name[he]=אבחזית
Name[hi]=अबकाजियन
Name[hne]=अबकाजियन
Name[hr]=Abhaški
Name[hsb]=Abchazisce
Name[hu]=Abház
Name[ia]=Abkhaziano
Name[id]=Abkhazian
Name[is]=Abkhazian
Name[it]=Abcaso
Name[ja]=アブハズ語
Name[kk]=Ахбазша
Name[km]=អាប់ខាហ្ស៊ាន
Name[kn]=ಅಬ್ಕಾಜಿಯನ್
Name[ko]=아브하지아어
Name[ku]=Abxazî
Name[lb]=Abhasesch
Name[lt]=Abhazų
Name[lv]=Abhāzu
Name[mai]=अबकाजियन
Name[mk]=Абхаски
Name[ml]=അബ്ഖാസിയന്‍
Name[mr]=अब्काजीयन
Name[ms]=Abkhazia
Name[nb]=Abkhasisk
Name[nds]=Abchaassch
Name[ne]=अब्खाजियन
Name[nl]=Abkhazian
Name[nn]=Abkhasisk
Name[oc]=Turc
Name[or]=Abkhazian
Name[pa]=ਅਬਖਾਜ਼ੀਨ
Name[pl]=Abchaski
Name[ps]=ابکازين
Name[pt]=Abkhazian
Name[pt_BR]=Abcázio
Name[ro]=Abhaziană
Name[ru]=Абхазский
Name[se]=Abhásiagiella
Name[si]=අබ්ඛාසියන්
Name[sk]=Abcházština
Name[sl]=abkazijansko
Name[sq]=Abkhaziane
Name[sr]=абхазијски
Name[sr@ijekavian]=абхазијски
Name[sr@ijekavianlatin]=abhazijski
Name[sr@latin]=abhazijski
Name[sv]=Abkhasiska
Name[ta]=அப்காசியன்
Name[te]=అబ్ఖజియన్
Name[tg]=Абхозӣ
Name[th]=ภาษาแอบคาเซียน
Name[tr]=Abkhazian
-Name[ug]=ئابخازچە
+Name[ug]=ئابغازچە
Name[uk]=Абхазька
Name[uz]=Abxazcha
Name[uz@cyrillic]=Абхазча
-Name[vi]=Ap-kha-xi-an
+Name[vi]=Abkhazian
Name[wa]=Abxhaze
-Name[x-test]=xxAbkhazianxx
Name[xh]=Abkhazian
+Name[x-test]=xxAbkhazianxx
Name[zh_CN]=阿布哈西亚语
Name[zh_HK]=阿布哈西亞語
Name[zh_TW]=阿布哈西亞語
[ae]
Name=Avestan
Name[af]=Avestan
Name[ar]=أفستانية
Name[as]=আভেষ্টান
Name[ast]=Avestanu
Name[be]=Авестанская
Name[be@latin]=Avestanskaja
Name[bg]=Авестийски
Name[bn]=আভেস্তান
Name[bn_IN]=আভেস্তান
Name[br]=Avestan
Name[bs]=Avesta
Name[ca]=Avèstic
Name[ca@valencia]=Avèstic
Name[cs]=Avestánský
Name[csb]=Awestańsczi (irańsczi)
Name[cy]=Afestaneg
Name[da]=Avestansk
Name[de]=Avestisch
Name[el]=Avestan
Name[en_GB]=Avestan
Name[eo]=Avesta
Name[es]=Avéstico
Name[et]=Vanapärsia
Name[eu]=Avestan
Name[fa]=اوستایی
Name[fi]=Avesta
Name[fr]=Avestan
Name[fy]=Avestaansk
Name[ga]=Aivéistis
Name[gl]=Avestaní
Name[gu]=અવેસ્ટાન
Name[he]=אווסטית
Name[hi]=अवेस्तन
Name[hne]=अवेस्तन
Name[hr]=Avestanski
Name[hsb]=Awestisce
Name[hu]=Avesztáni
Name[ia]=Avestan
Name[id]=Avestan
Name[is]=Avestan
Name[it]=Avestano
Name[ja]=アベスタ語
Name[kk]=Авестша
Name[km]=អាវែស្តង់
Name[kn]=ಅವೆಸ್ತನ್
Name[ko]=아베스탄어
Name[ku]=Avestayî
Name[lb]=Avestan
Name[lt]=Avestan
Name[lv]=Avesta
Name[mai]=अवेस्तन
Name[mk]=Авестан
Name[ml]=അവെസ്തന്‍
Name[mr]=अवेस्तन
Name[ms]=Avestan
Name[nb]=Avestisk
Name[nds]=Avesta
Name[ne]=अभेस्टन
Name[nl]=Avestan
Name[nn]=Avestisk
Name[or]=Avestan
Name[pa]=ਅਵਸਟਅਨ
Name[pl]=Awestański (Irański)
Name[ps]=اوستايي
Name[pt]=Avestan
Name[pt_BR]=Avéstico
Name[ro]=Avestană
Name[ru]=Авестийский
Name[se]=Avestánagiella
Name[si]=අවෙස්ටන්
Name[sk]=Avestčina
Name[sl]=avestansko
Name[sq]=Avestane
Name[sr]=авестански
Name[sr@ijekavian]=авестански
Name[sr@ijekavianlatin]=avestanski
Name[sr@latin]=avestanski
Name[sv]=Avestiska
Name[ta]=அவெஸ்டன்
Name[te]=అవెస్థన్
Name[tg]=Авастоӣ
Name[th]=ภาษาอะเวสแทน
Name[tr]=Avestan
-Name[ug]=ئاۋېستاچە
+Name[ug]=ئاۋىستانچە
Name[uk]=Авестан
Name[uz]=Avesta
Name[uz@cyrillic]=Авеста
-Name[vi]=Ă-ve-x-tanh
+Name[vi]=Avestan
Name[wa]=Avestan
-Name[x-test]=xxAvestanxx
Name[xh]=Avestan
+Name[x-test]=xxAvestanxx
Name[zh_CN]=阿维斯陀语
Name[zh_HK]=阿維斯陀語
Name[zh_TW]=阿維斯陀語
[af]
Name=Afrikaans
Name[af]=Afrikaans
Name[ar]=أفريكانس
Name[as]=আফ্ৰিকান্স
Name[ast]=Afrikaans
Name[be]=Афрыканская
Name[be@latin]=Afrykaans
Name[bg]=Африкаанс
Name[bn]=আফ্রিকান্‌স
Name[bn_IN]=আফ্রিকান্স
Name[br]=Afrikaans
Name[bs]=Afrikaans
Name[ca]=Afrikaans
Name[ca@valencia]=Afrikaans
Name[cs]=Afrikánský
Name[csb]=Afrikanersczi
Name[cy]=Affricaneg
Name[da]=Afrikaans
Name[de]=Afrikaans
Name[el]=Αφρικανικά
Name[en_GB]=Afrikaans
Name[eo]=Afrikansa
Name[es]=Afrikaans
Name[et]=Afrikaani
Name[eu]=Afrikaansa
Name[fa]=آفریکانس
Name[fi]=Afrikaans
Name[fr]=Afrikaans
Name[fy]=Afrikaansk
Name[ga]=Afracáinis
Name[gl]=Africáner
Name[gu]=આફ્રિકાન્સ
Name[he]=אפריקנס
Name[hi]=अफ्रीकी
Name[hne]=अफ्रीकी
Name[hr]=Afrikaans
Name[hsb]=Afrikaans
Name[hu]=Afrikaans
Name[ia]=Afrikaans
Name[id]=Afrikaans
Name[is]=Afrikaans
Name[it]=Afrikaans
Name[ja]=アフリカーンス語
Name[kk]=Африкаанс
Name[km]=អាហ្វ្រីកាអាន
Name[kn]=ಆಫ್ರಿಕಾನಾಸ್
Name[ko]=아프리칸스어
Name[ku]=Afrîkans
Name[lb]=Afrikaans
Name[lt]=Afrikanso
Name[lv]=Afrikandu
Name[mai]=अफ्रीकी
Name[mk]=Африкански
Name[ml]=ആഫ്രികാന്‍സ്
Name[mr]=अफ्रीकी
Name[ms]=Afrika
Name[nb]=Afrikaans
Name[nds]=Afrikaansch
Name[ne]=अफ्रिकी
Name[nl]=Afrikaans
Name[nn]=Afrikaans
Name[oc]=Afrikaans
Name[or]=ଆଫ୍ରିକାନ
Name[pa]=ਅਫਰੀਕੀ
Name[pl]=Afrykanerski
Name[ps]=افريکانس
Name[pt]=Afrikaans
Name[pt_BR]=Africâner
Name[ro]=Africană
Name[ru]=Африкаанс
Name[se]=Afrikánsgiella
Name[si]=ඇෆ්‍රිකාන්ස්
Name[sk]=Afrikánčina
Name[sl]=afrikansko
Name[sq]=Afrikaans
Name[sr]=африканерски
Name[sr@ijekavian]=африканерски
Name[sr@ijekavianlatin]=afrikanerski
Name[sr@latin]=afrikanerski
Name[sv]=Afrikaans
Name[ta]=ஆப்பிரிகான்ஸ்
Name[te]=ఆఫ్రికాన్స్
Name[tg]=Африкоӣ
Name[th]=ภาษาแอฟริคานส์
Name[tr]=Afrika Dili
Name[ug]=ئافرىكانچە
Name[uk]=Африкаанс
Name[uz]=Afrikancha
Name[uz@cyrillic]=Африканча
-Name[vi]=Hoà Nam Phi
+Name[vi]=Afrikaans
Name[wa]=Afrikaans
-Name[x-test]=xxAfrikaansxx
Name[xh]=Isibhulu
+Name[x-test]=xxAfrikaansxx
Name[zh_CN]=南非荷兰语
Name[zh_HK]=南非荷蘭語
Name[zh_TW]=南非荷蘭語
[am]
Name=Amharic
Name[af]=Amharic
Name[ar]=أمهرية
Name[as]=আম্‌হাৰিক
Name[ast]=Amháricu
Name[be]=Амхарская
Name[be@latin]=Amharskaja
Name[bg]=Амхарски
Name[bn]=আমহারিক
Name[bn_IN]=আমহারিক
Name[br]=Amhareg
Name[bs]=Amharski
Name[ca]=Amhàric
Name[ca@valencia]=Amhàric
Name[cs]=Amharský
Name[csb]=Etiopsczi
Name[cy]=Amhareg
Name[da]=Amharisk
Name[de]=Amharisch
Name[el]=Amharic
Name[en_GB]=Amharic
Name[eo]=Amhara
Name[es]=Amárico
Name[et]=Amhaara
Name[eu]=Amharic
Name[fa]=امهری
Name[fi]=Amhara
Name[fr]=Amharique
Name[fy]=Amhaarsk
Name[ga]=Amáiris
Name[gl]=Amhárico
Name[gu]=અમ્હારિક
Name[he]=אמהרית
Name[hi]=अम्हारिक
Name[hne]=अम्हारिक
Name[hr]=Amarski
Name[hsb]=Amharisce
Name[hu]=Amhár
Name[ia]=Amharico
Name[id]=Amharic
Name[is]=Amharic
Name[it]=Amarico
Name[ja]=アムハラ語
Name[kk]=Ахмарша
Name[km]=អាមហារិក
Name[kn]=ಅಮ್ಹಾರಿಕ್
Name[ko]=암하라어
Name[ku]=Amharî
Name[lb]=Amharesch
Name[lt]=Amhari
Name[lv]=Amharu
Name[mai]=अम्हारिक
Name[mk]=Амхарски
Name[ml]=അമ്ഹാരിക്
Name[mr]=अम्हारिक
Name[ms]=Amharic
Name[nb]=Amharisk
Name[nds]=Amhaarsch
Name[ne]=अम्हारिक
Name[nl]=Amharisch
Name[nn]=Amharisk
Name[oc]=Amaric
Name[or]=ଆମ୍ହାରିକ
Name[pa]=ਅਮਹਾਰਿਕ
Name[pl]=Etiopski
Name[ps]=امهارېک
Name[pt]=Amárico
Name[pt_BR]=Amárico
Name[ro]=Amarică
Name[ru]=Амхарский
Name[se]=Ambháriagiella
Name[si]=අමාරික්
Name[sk]=Amharčina
Name[sl]=amharik
Name[sq]=Amharike
Name[sr]=амарски
Name[sr@ijekavian]=амарски
Name[sr@ijekavianlatin]=amarski
Name[sr@latin]=amarski
Name[sv]=Amarinja
Name[ta]=அம்ஹாரிக்
Name[te]=అమ్హరిక్
Name[tg]=Амхарикӣ
Name[th]=ภาษาอัมฮาริค
Name[tr]=Amharic
Name[ug]=ئامخاراچە
Name[uk]=Амхарська
Name[uz]=Amxarik
Name[uz@cyrillic]=Амхарик
-Name[vi]=Am-ha-ri
+Name[vi]=Amharic
Name[wa]=Amarike
-Name[x-test]=xxAmharicxx
Name[xh]=Amharic
+Name[x-test]=xxAmharicxx
Name[zh_CN]=阿比西尼亚语
Name[zh_HK]=衣索比亞官方語
Name[zh_TW]=衣索比亞官方語
[ar]
Name=Arabic
Name[af]=Arabies
Name[ar]=عربية
Name[as]=আৰবীয়
Name[ast]=Árabe
Name[be]=Арабская
Name[be@latin]=Arabskaja
Name[bg]=Арабски
Name[bn]=আরবী
Name[bn_IN]=আরবি
Name[br]=Arabeg
Name[bs]=Arapski
Name[ca]=Àrab
Name[ca@valencia]=Àrab
Name[cs]=Arabský
Name[csb]=Arabsczi
Name[cy]=Arabeg
Name[da]=Arabisk
Name[de]=Arabisch
Name[el]=Αραβικά
Name[en_GB]=Arabic
Name[eo]=Araba
Name[es]=Árabe
Name[et]=Araabia
Name[eu]=Arabiera
Name[fa]=عربی
Name[fi]=Arabia
Name[fr]=Arabe
Name[fy]=Arabysk
Name[ga]=Araibis
Name[gl]=Árabe
Name[gu]=અરેબિક
Name[he]=ערבית
Name[hi]=अरबी
Name[hne]=अरबी
Name[hr]=Arapski
Name[hsb]=Arabsce
Name[hu]=Arab
Name[hy]=Արաբերեն
Name[ia]=Arabe
Name[id]=Arab
Name[is]=Arabíska
Name[it]=Arabo
Name[ja]=アラビア語
Name[kk]=Арабша
Name[km]=អារ៉ាប់
Name[kn]=ಅರೇಬಿಕ್
Name[ko]=아랍어
Name[ku]=Erebî
Name[lb]=Arabesch
Name[lt]=Arabų
Name[lv]=Arābu
Name[mai]=अरबी
Name[mk]=Арапски
Name[ml]=അറബി
Name[mr]=अरेबिक
Name[ms]=Arab
Name[nb]=Arabisk
Name[nds]=Araabsch
Name[ne]=अरबी
Name[nl]=Arabisch
Name[nn]=Arabisk
Name[oc]=Arab
Name[or]=Arabic
Name[pa]=ਅਰਬੀ
Name[pl]=Arabski
Name[ps]=عربي
Name[pt]=Árabe
Name[pt_BR]=Árabe
Name[ro]=Arabă
Name[ru]=Арабский
Name[se]=Arábiagiella
Name[si]=අරාබි
Name[sk]=Arabčina
Name[sl]=arabsko
Name[sq]=Arabisht
Name[sr]=арапски
Name[sr@ijekavian]=арапски
Name[sr@ijekavianlatin]=arapski
Name[sr@latin]=arapski
Name[sv]=Arabiska
Name[ta]=அராபிக்
Name[te]=అరబిక్
Name[tg]=Арабӣ
Name[th]=ภาษาอารบิก
Name[tr]=Arapça
Name[ug]=ئەرەبچە
Name[uk]=Арабська
Name[uz]=Arabcha
Name[uz@cyrillic]=Арабча
-Name[vi]=A-rập
+Name[vi]=Ả Rập
Name[wa]=Arabe
-Name[x-test]=xxArabicxx
Name[xh]=Arabic
+Name[x-test]=xxArabicxx
Name[zh_CN]=阿拉伯语
Name[zh_HK]=阿拉伯語
Name[zh_TW]=阿拉伯語
[as]
Name=Assamese
Name[af]=Assamese
Name[ar]=أسامية
Name[as]=অসমীয়া
Name[ast]=Asamés
Name[be]=Асамская
Name[be@latin]=Asameskaja
Name[bg]=Асами
Name[bn]=আসামী
Name[bn_IN]=অসমীয়া
Name[br]=Assamese
Name[bs]=Asamski
Name[ca]=Assamès
Name[ca@valencia]=Assamés
Name[cs]=Asamský
Name[csb]=Assamijsczi
Name[cy]=Assameg
Name[da]=Assamese
Name[de]=Assamesisch
Name[el]=Assamese
Name[en_GB]=Assamese
Name[eo]=Asama
Name[es]=Asamés
Name[et]=Assami
Name[eu]=Assamese
Name[fa]=آسامی
Name[fi]=Assami
Name[fr]=Assamais
Name[fy]=Assameesk
Name[ga]=Asaimis
Name[gl]=Asamixa
Name[gu]=આસામીઝ
Name[he]=אסאמית
Name[hi]=असमी
Name[hne]=असमी
Name[hr]=Asamski
Name[hsb]=Asamezisce
Name[hu]=Asszámi
Name[ia]=Assamese
Name[id]=Assamese
Name[is]=Assamese
Name[it]=Assamese
Name[ja]=アッサム語
Name[kk]=Ассамша
Name[km]=អាសាមីស
Name[kn]=ಅಸ್ಸಾಮಿ
Name[ko]=아삼어
Name[ku]=Asamî
Name[lb]=Assamesesch
Name[lt]=Asamesų
Name[lv]=Asamiešu
Name[mai]=असामी
Name[mk]=Асамески
Name[ml]=അസ്സാമീസ്
Name[mr]=असमी
Name[ms]=Assamese
Name[nb]=Assamesisk
Name[nds]=Assameesch
Name[ne]=आसामी
Name[nl]=Assamees
Name[nn]=Assami
Name[oc]=Assamés
Name[or]=Assamese
Name[pa]=ਆਸਾਮੀ
Name[pl]=Assamijski
Name[ps]=اسامي
Name[pt]=Assamese
Name[pt_BR]=Assamês
Name[ro]=Asameză
Name[ru]=Ассамский
Name[se]=Assamesegiella
Name[si]=ඇසමීස්
Name[sk]=Asámčina
Name[sl]=asamese
Name[sq]=Asameze
Name[sr]=асамејски
Name[sr@ijekavian]=асамејски
Name[sr@ijekavianlatin]=asamejski
Name[sr@latin]=asamejski
Name[sv]=Assamesiska
Name[ta]=அஸ்ஸாமிய
Name[te]=అస్సామీ
Name[tg]=Ассамӣ
Name[th]=ภาษาอัสสัม
Name[tr]=Assamese
Name[ug]=ئاسسامچە
Name[uk]=Асамійська
Name[uz]=Assamese
Name[uz@cyrillic]=Ассамесе
-Name[vi]=A-xam
+Name[vi]=Assam
Name[wa]=Assamès
-Name[x-test]=xxAssamesexx
Name[xh]=Assamese
+Name[x-test]=xxAssamesexx
Name[zh_CN]=阿萨姆语
Name[zh_HK]=阿薩姆語
Name[zh_TW]=阿薩姆語
[ast]
Name=Asturian
Name[ar]=أستريان
Name[ast]=Asturianu
Name[bg]=Астурийски
Name[bs]=Asturski
Name[ca]=Asturià
Name[ca@valencia]=Asturià
Name[cs]=Asturijský
Name[da]=Asturiansk
Name[de]=Asturisch
Name[el]=Asturian
Name[en_GB]=Asturian
Name[es]=Asturiano
Name[et]=Astuuria
Name[eu]=Asturiera
+Name[fa]=اتریشی
Name[fi]=Asturia
Name[fr]=Asturien
Name[ga]=Astúiris
Name[gl]=Asturiano
Name[hr]=Asturijanski
Name[hu]=Asztúriai
Name[ia]=Asturian
Name[id]=Asturia
Name[is]=Astúríska
Name[it]=Asturiano
Name[ja]=アストゥリアス語
Name[kk]=Астурианша
Name[km]=អូស្តូរៀន
Name[kn]=ಆಸ್ಚೂರಿಯನ್
Name[ko]=아스투리아스어
Name[ku]=Astûrî
Name[lt]=Asturų
Name[lv]=Astūriešu
Name[ms]=Asturian
Name[nb]=Asturisk
Name[nds]=Astuursch
Name[nl]=Asturisch
Name[nn]=Asturleonesisk
Name[pa]=ਅਸਟੁਰੀਆਈ
Name[pl]=Asturyjski
Name[pt]=Asturiano
Name[pt_BR]=Asturiano
Name[ro]=Asturiană
Name[ru]=Астурийский
Name[se]=Asturialagiella
Name[si]=ඇස්ටරියන්
Name[sk]=Astúrčina
Name[sl]=asturijsko
Name[sr]=астуријски
Name[sr@ijekavian]=астуријски
Name[sr@ijekavianlatin]=asturijski
Name[sr@latin]=asturijski
Name[sv]=Asturiska
Name[ta]=அஸ்டூரியன்
Name[tg]=Асториан
Name[th]=ภาษาอัสตูเรียส
Name[tr]=Avusturya Dili
Name[ug]=ئاستۇرىيەچە
Name[uk]=Астурійська
+Name[vi]=Asturian
Name[wa]=Asturyin
Name[x-test]=xxAsturianxx
Name[zh_CN]=阿斯图里亚斯语
Name[zh_TW]=Asturian
[ay]
Name=Aymara
Name[af]=Aymara
Name[ar]=أيمرا
Name[as]=আইমাৰা
Name[ast]=Aymara
Name[be]=Аймарская
Name[be@latin]=Aymara
Name[bg]=Аймара
Name[bn]=আইমারা
Name[bn_IN]=আয়মারা
Name[br]=Aymara
Name[bs]=ajmarski
Name[ca]=Aymara
Name[ca@valencia]=Aymara
Name[cs]=Aymara
Name[csb]=Aymara
Name[cy]=Aimareg
Name[da]=Aymara
Name[de]=Aimara
Name[el]=Aymara
Name[en_GB]=Aymara
Name[eo]=Ajmara
Name[es]=Aymara
Name[et]=Aimaraa
Name[eu]=Aymara
Name[fa]=آیمارایی
Name[fi]=Aimara
Name[fr]=Aymara
Name[fy]=Aymara
Name[ga]=Adhmarais
Name[gl]=Aimará
Name[gu]=અયમારા
Name[he]=איימרה
Name[hi]=अयमारा
Name[hne]=अयमारा
Name[hr]=Ajmarski
Name[hsb]=Aymara
Name[hu]=Ajmara
Name[ia]=Aymara
Name[id]=Aymara
Name[is]=Aymara
Name[it]=Aymara
Name[ja]=アイマラ語
Name[kk]=Аймарша
Name[km]=អេយ៍ម៉ារ៉ា
Name[kn]=ಅಯಮಾರಾ
Name[ko]=아이마라어
Name[ku]=Aymara
Name[lb]=Aimara
Name[lt]=Aymara
Name[lv]=Aimaru
Name[mai]=अयमारा
Name[mk]=Ајмара
Name[ml]=അരാമ്യ
Name[mr]=अयमारा
Name[ms]=Aymara
Name[nb]=Aymara
Name[nds]=Aymara
Name[ne]=एमरा
Name[nl]=Aymara
Name[nn]=Aymara
Name[oc]=Aymarà
Name[or]=Aymara
Name[pa]=ਅਯਮਾਰਾ
Name[pl]=Aymara
Name[ps]=اېمارا
Name[pt]=Aymara
Name[pt_BR]=Aimará
Name[ro]=Aymară
Name[ru]=Аймарский
Name[se]=Aimáragiella
Name[si]=අයිමාරා
Name[sk]=Aymarčina
Name[sl]=ajmarsko
Name[sq]=Aymara
Name[sr]=ајмарски
Name[sr@ijekavian]=ајмарски
Name[sr@ijekavianlatin]=ajmarski
Name[sr@latin]=ajmarski
Name[sv]=Aymara
Name[ta]=அய்மாரா
Name[te]=అయ్మరా
Name[tg]=Аймарагӣ
Name[th]=ภาษาอัยมารา
Name[tr]=Aymara
Name[ug]=ئايماراچە
Name[uk]=Аймарська
Name[uz]=Aymara
Name[uz@cyrillic]=Аймара
-Name[vi]=Ay-ma-ra
+Name[vi]=Aymara
Name[wa]=Aymara
-Name[x-test]=xxAymaraxx
Name[xh]=Aymara
+Name[x-test]=xxAymaraxx
Name[zh_CN]=艾马拉语
Name[zh_HK]=愛瑪拉語
Name[zh_TW]=愛瑪拉語
[az]
Name=Azerbaijani
Name[af]=Azerbaijani
Name[ar]=أذربيجانية
Name[as]=আজাৰ্বাইজানী
Name[ast]=Azerbaiyanu
Name[be]=Азербайджанская
Name[be@latin]=Azerbajdžanskaja
Name[bg]=Азербайджански
Name[bn]=আজেরবাইজানি
Name[bn_IN]=আজারবাইজানি
Name[br]=Azerbaidjanek
Name[bs]=Azerbejdžanski
Name[ca]=Àzeri
Name[ca@valencia]=Àzeri
Name[cs]=Ázerbajdžánský
Name[csb]=Azerbejdżańsczi
Name[cy]=Azerbaijaneg
Name[da]=Azerbaijansk
Name[de]=Aserbaidschanisch
Name[el]=Αζερμπαϊτζανικά
Name[en_GB]=Azerbaijani
Name[eo]=Azerbajĝana
Name[es]=Azerbayano
Name[et]=Aserbaidžaani
Name[eu]=Azerbaijanera
Name[fa]=آذربایجانی
Name[fi]=Azeri
Name[fr]=Azerbaïdjanais
Name[fy]=Azerbeidzjaansk
Name[ga]=Asarbaiseáinis
Name[gl]=Azerí
Name[gu]=અઝરબાયજાની
Name[he]=אזרית
Name[hi]=अजरबेजानी
Name[hne]=अजरबेजानी
Name[hr]=Azerbejdžanski
Name[hsb]=Azerbajdźansce
Name[hu]=Azerbajdzsán
Name[hy]=Ադրբեջաներեն
Name[ia]=Azerbaijano
Name[id]=Azerbaijani
Name[is]=Adzerbadjanska
Name[it]=Azero
Name[ja]=アゼルバイジャン語
Name[kk]=Азербайжанша
Name[km]=អាហ្ស៊ែរបែហ្សង់
Name[kn]=ಅಜರ್ಬೈಜಾನಿ
Name[ko]=아제르바이잔어
Name[ku]=Azerî
Name[lb]=Asserbaidschanesch
Name[lt]=Azerbaidžaniečių
Name[lv]=Azerbaidžāņu
Name[mai]=अज़रबैजानी
Name[mk]=Азербејџански
Name[ml]=അസര്‍ബെയ്ജാനി
Name[mr]=अजरबेजानी
Name[ms]=Azerbaijan
Name[nb]=Aserbajdsjansk
Name[nds]=Aserbaidschaansch
Name[ne]=अजरबैजानी
Name[nl]=Azerbeidjaans
Name[nn]=Aserbajdsjansk
Name[oc]=Aseri
Name[or]=Azerbaijani
Name[pa]=ਅਜ਼ਰਬਾਈਜਾਨੀ
Name[pl]=Azerbejdżański
Name[ps]=ازربايجاني
Name[pt]=Azerbaijano
Name[pt_BR]=Azeri
Name[ro]=Azerbaijană
Name[ru]=Азербайджанский
Name[se]=Azerbaižánagiella
Name[si]=අසර්බයිජානි
Name[sk]=Azerbajdžančina
Name[sl]=azerbajdžansko
Name[sq]=Azerbaixhani
Name[sr]=азербејџански
Name[sr@ijekavian]=азербејџански
Name[sr@ijekavianlatin]=azerbejdžanski
Name[sr@latin]=azerbejdžanski
Name[sv]=Azerbajdzjanska
Name[ta]=அசர்பைசானி
Name[te]=అజెర్ బైజాని
Name[tg]=Озарбойҷонӣ
Name[th]=ภาษาอาเซอร์ไบจัน
Name[tr]=Azerbeycanca
Name[ug]=ئەزەربەيجانچە
Name[uk]=Азербайджанська
Name[uz]=Ozarbayjoncha
Name[uz@cyrillic]=Озарбайжонча
-Name[vi]=A-xợ-bai-gianh
+Name[vi]=A-zéc-bai-zan
Name[wa]=Azeri
-Name[x-test]=xxAzerbaijanixx
Name[xh]=Azerbaijani
+Name[x-test]=xxAzerbaijanixx
Name[zh_CN]=阿塞拜疆语
Name[zh_HK]=亞塞拜彊語
Name[zh_TW]=亞塞拜然語
[ba]
Name=Bashkir
Name[af]=Bashkir
Name[ar]=بشكيرية
Name[as]=বাস্কিৰ
Name[ast]=Bashkir
Name[be]=Башкірская
Name[be@latin]=Baškirskaja
Name[bg]=Башкирски
Name[bn]=বাশকীর
Name[bn_IN]=বাশকির
Name[br]=Bashkir
Name[bs]=Baškirski
Name[ca]=Baixkir
Name[ca@valencia]=Baixkir
Name[cs]=Baškirský
Name[csb]=Baszkirsczi
Name[cy]=Bashkireg
Name[da]=Bashkir
Name[de]=Baschkirisch
Name[el]=Bashkir
Name[en_GB]=Bashkir
Name[eo]=Baŝkira
Name[es]=Baskir
Name[et]=Baškiiri
Name[eu]=Bashkir
Name[fa]=بشکیری
Name[fi]=Baškiiri
Name[fr]=Bachkir
Name[fy]=Bashkir
Name[ga]=Baiscíris
Name[gl]=Bashquir
Name[gu]=બાસ્કિર
Name[he]=בשקירית
Name[hi]=बाशकिर
Name[hne]=बासकिर
Name[hr]=Baškirski
Name[hsb]=Baškirsce
Name[hu]=Baskír
Name[ia]=Bashkir
Name[id]=Bashkir
Name[is]=Bashkir
Name[it]=Baškiro
Name[ja]=バシュキール語
Name[kk]=Башкұртша
Name[km]=បាសគៀរ
Name[kn]=ಬಾಶ್ಕಿರ್
Name[ko]=바슈키르어
Name[ku]=Başkir
Name[lb]=Baschkiresch
Name[lt]=Baškirų
Name[lv]=Baškīru
Name[mai]=बाशकिर
Name[mk]=Башкир
Name[ml]=ബാഷ്കിര്‍
Name[mr]=बाशकिर
Name[ms]=Bashkir
Name[nb]=Bashkir
Name[nds]=Baschkiirsch
Name[ne]=बास्खिर
Name[nl]=Bashkir
Name[nn]=Basjkirsk
Name[oc]=Bachkir
Name[or]=Bashkir
Name[pa]=ਬਸਕੀਰ
Name[pl]=Baszkirski
Name[ps]=بشکير
Name[pt]=Bashkir
Name[pt_BR]=Basquir
Name[ro]=Bașchiră
Name[ru]=Башкирский
Name[se]=Baškiriagiella
Name[si]=බෂ්කීර්
Name[sk]=Baškirčina
Name[sl]=baškirsko
Name[sq]=Bashkire
Name[sr]=башкирски
Name[sr@ijekavian]=башкирски
Name[sr@ijekavianlatin]=baškirski
Name[sr@latin]=baškirski
Name[sv]=Bashkir
Name[ta]=பஷ்கீர்
Name[te]=బాష్కిర్
Name[tg]=Бошқирдӣ
Name[th]=ภาษาแบชเคียร์
Name[tr]=Bashkir
Name[ug]=باشقىرتچە
Name[uk]=Башкирська
Name[uz]=Boshqircha
Name[uz@cyrillic]=Бошқирча
-Name[vi]=Ba-x-kia
+Name[vi]=Bashkir
Name[wa]=Bashkir
-Name[x-test]=xxBashkirxx
Name[xh]=Bashkir
+Name[x-test]=xxBashkirxx
Name[zh_CN]=巴什基尔语
Name[zh_HK]=Bashkir語
Name[zh_TW]=Bashkir語
[be]
Name=Belarusian
Name[af]=Belarusian
Name[ar]=بلاروسية
Name[as]=বেলাৰুচীয়
Name[ast]=Bielorrusu
Name[be]=Беларуская
Name[be@latin]=Biełaruskaja
Name[bg]=Белоруски
Name[bn]=বেলারুশিয়
Name[bn_IN]=বেলারুশিয়ান
Name[br]=Belarusieg
Name[bs]=Bjeloruski
Name[ca]=Bielorús
Name[ca@valencia]=Bielorús
Name[cs]=Běloruský
Name[csb]=Białorusczi
Name[cy]=Belarwsieg
Name[da]=Hviderussisk
Name[de]=Weißrussisch
Name[el]=Λευκορωσικά
Name[en_GB]=Belarusian
Name[eo]=Belorusa
Name[es]=Bielorruso
Name[et]=Valgevene
Name[eu]=Bielorrusiera
Name[fa]=بلاروسی
Name[fi]=Valkovenäjä
Name[fr]=Biélorusse
Name[fy]=Wyt-Russysk
Name[ga]=Bealarúisis
Name[gl]=Bielorruso
Name[gu]=બેલારશિયન
Name[he]=בלרוסית
Name[hi]=बेलारूसी
Name[hne]=बेलारूसी
Name[hr]=Bjeloruski
Name[hsb]=Běłorusce
Name[hu]=Belorusz
Name[ia]=Bielorusso
Name[id]=Belarusia
Name[is]=Hvít-Rússneska
Name[it]=Bielorusso
Name[ja]=ベラルーシ語
Name[kk]=Белорусша
Name[km]=បេឡារុស្ស
Name[kn]=ಬೆಲರೂಸಿಯನ್
Name[ko]=벨라루스어
Name[ku]=Belarusî
Name[lb]=Wéisrussesch
Name[lt]=Baltarusių
Name[lv]=Baltkrievu
Name[mai]=बेलारूसी
Name[mk]=Белоруски
Name[ml]=ബെലാറൂഷ്യന്‍
Name[mr]=बेलारूसी
Name[ms]=Belarusia
Name[nb]=Hviterussisk
Name[nds]=Wittruss'sch
Name[ne]=बेलारूसी
Name[nl]=Wit-Rusland
Name[nn]=Kviterussisk
Name[oc]=Bielorus
Name[or]=Belarusian
Name[pa]=ਬੇਲਾਰੂਸੀ
Name[pl]=Białoruski
Name[ps]=بېلاروسي
Name[pt]=Bielorrusso
Name[pt_BR]=Bielorrusso
Name[ro]=Belarusă
Name[ru]=Белорусский
Name[se]=Vilgesruoššagiella
Name[si]=බෙලරුසියානු
Name[sk]=Bieloruština
Name[sl]=belorusko
Name[sq]=Bjelloruse
Name[sr]=белоруски
Name[sr@ijekavian]=бјелоруски
Name[sr@ijekavianlatin]=bjeloruski
Name[sr@latin]=beloruski
Name[sv]=Vitryska
Name[ta]=பெலாரூசியன்
Name[te]=బెలరషియన్
Name[tg]=Белорусӣ
Name[th]=ภาษาเบลารุสเซีย
Name[tr]=Belarus Dili
Name[ug]=بېلارۇسچە
Name[uk]=Білоруська
Name[uz]=Beloruscha
Name[uz@cyrillic]=Белорусча
-Name[vi]=Be-la-ru-xợ
+Name[vi]=Bê-la-rút
Name[wa]=Bielorûsse
-Name[x-test]=xxBelarusianxx
Name[xh]=Belarusian
+Name[x-test]=xxBelarusianxx
Name[zh_CN]=白俄罗斯语
Name[zh_HK]=白俄羅斯語
Name[zh_TW]=白俄羅斯語
[be@latin]
Name=Belarusian (Latin)
Name[ar]=بلاروسية (لاتينية)
Name[as]=বেলাৰুচীয় (লেটিন)
Name[ast]=Bielorrusu (Llatinu)
Name[be@latin]=Biełaruskaja łacinka
Name[bg]=Белоруски (латиница)
Name[bn]=বেলারুশিয় (লাতিন)
Name[bn_IN]=বেলারুশিয়ান (লাতিন)
Name[bs]=Bjeloruski(Latinica)
Name[ca]=Bielorús (llatí)
Name[ca@valencia]=Bielorús (llatí)
Name[cs]=Běloruský (latinka)
Name[csb]=Białorusczi (łacëzniany)
Name[da]=Hviderussisk (latin)
Name[de]=Weißrussisch (lat. Alphabet)
Name[el]=Λευκορωσικά (Λατινικά)
Name[en_GB]=Belarusian (Latin)
Name[eo]=Belorusa (Latina)
Name[es]=Bielorruso (Latino)
Name[et]=Valgevene (ladina)
Name[eu]=Bielorrusiera (Latinoa)
+Name[fa]=بلاروسی (لاتین)
Name[fi]=Valkovenäjä (Latin)
Name[fr]=Biélorusse (Latin)
Name[fy]=Wyt-Russysk (latynsk)
Name[ga]=Bealarúisis (aibítir Laidineach)
Name[gl]=Bielorruso (latino)
Name[gu]=બેલારશિયન (લેટિન)
Name[he]=בלרוסית (לטינית)
Name[hi]=बेलारूसी (लातिन)
Name[hne]=बेलारूसी (लेटिन)
Name[hr]=Bjeloruski (latinica)
Name[hsb]=Běłorusce (z łaćonskim pismom)
Name[hu]=Belorusz (latin betűs)
Name[ia]=Bielorusso (Latin)
Name[id]=Belarusia (Latin)
Name[is]=Hvít-Rússneska latnesk
Name[it]=Bielorusso (Latino)
Name[ja]=ベラルーシ語 (ラテン文字)
Name[kk]=Латындағы белорусша
Name[km]=បេឡារុស្ស៊ី (ឡាតាំង)
Name[kn]=ಬೆಲರೂಸಿಯನ್ (ಲಾಟಿನ್)
Name[ko]=벨라루스어 (라틴 문자)
Name[ku]=Belarusî (Latin)
Name[lt]=Baltarusių (lotynų)
Name[lv]=Baltkrievu (Latīņu)
Name[mai]=बेलारूसी (लातिन)
Name[ml]=ബെലാറൂഷ്യന്‍ (ലാറ്റിന്‍)
Name[ms]=Belarus (Latin)
Name[nb]=Hviterussisk (latinsk)
Name[nds]=Wittruss'sch (Latiensch)
Name[nl]=Wit-Rusland (Latijn)
Name[nn]=Kviterussisk (romanisert)
Name[pa]=ਬੇਲਾਰੂਸੀ (ਲੈਟਿਨ)
Name[pl]=Białoruski (alfabet łaciński)
Name[pt]=Bielorrusso (Latino)
Name[pt_BR]=Bielorrusso (latino)
Name[ro]=Bielorusă (latin)
Name[ru]=Белорусский (латиница)
Name[se]=Vilgesruoššagiella (Latiidna)
Name[si]=බෙලරුසියානු (ලතින්)
Name[sk]=Bieloruština (latinka)
Name[sl]=belorusko (latinica)
Name[sq]=Bjelloruse (Latine)
Name[sr]=белоруски (латиница)
Name[sr@ijekavian]=бјелоруски (латиница)
Name[sr@ijekavianlatin]=bjeloruski (latinica)
Name[sr@latin]=beloruski (latinica)
Name[sv]=Vitryska (latinsk)
Name[ta]=பெலாரூசியன் (இலத்தீன்)
Name[tg]=Белорусӣ (Лотинӣ)
Name[th]=ภาษาเบลารุสเซีย (ละติน)
Name[tr]=Belarus Dili (Latin)
Name[ug]=بېلارۇسىيەچە(لاتىن)
Name[uk]=Білоруська (латиниця)
+Name[vi]=Belarusian (Latin)
Name[wa]=Bielorûsse (Latén)
Name[x-test]=xxBelarusian (Latin)xx
Name[zh_CN]=白俄罗斯语(拉丁语系)
Name[zh_TW]=白俄羅斯語(拉丁)
[bg]
Name=Bulgarian
Name[af]=Bulgaars
Name[ar]=بلغارية
Name[as]=বুলগেৰীয়
Name[ast]=Búlgaru
Name[be]=Балгарская
Name[be@latin]=Baŭharskaja
Name[bg]=Български
Name[bn]=বুলগেরিয়
Name[bn_IN]=বুলগেরিয়ান
Name[br]=Bulgareg
Name[bs]=Bugarski
Name[ca]=Búlgar
Name[ca@valencia]=Búlgar
Name[cs]=Bulharský
Name[csb]=Bùlgarsczi
Name[cy]=Bwlgareg
Name[da]=Bulgarsk
Name[de]=Bulgarisch
Name[el]=Βουλγαρικά
Name[en_GB]=Bulgarian
Name[eo]=Bulgara
Name[es]=Búlgaro
Name[et]=Bulgaaria
Name[eu]=Bulgariera
Name[fa]=بلغاری
Name[fi]=Bulgaria
Name[fr]=Bulgare
Name[fy]=Bulgaarsk
Name[ga]=Bulgáiris
Name[gl]=Búlgaro
Name[gu]=બલ્ગેરીયન
Name[he]=בולגרית
Name[hi]=बुल्गारियाई
Name[hne]=बुल्गारियाई
Name[hr]=Bugarski
Name[hsb]=Bołharsce
Name[hu]=Bolgár
Name[ia]=Bulgaro
Name[id]=Bulgaria
Name[is]=Búlgarska
Name[it]=Bulgaro
Name[ja]=ブルガリア語
Name[kk]=Болғарша
Name[km]=ប៊ុលហ្គារី
Name[kn]=ಬಲ್ಗೇರಿಯನ್
Name[ko]=불가리아어
Name[ku]=Bulgarî
Name[lb]=Bulgaresch
Name[lt]=Bulgarų
Name[lv]=Bulgāru
Name[mai]=बुल्गारियाइ
Name[mk]=Бугарски
Name[ml]=ബള്‍ഗേറിയന്‍
Name[mr]=बुल्गारियाई
Name[ms]=Bulgaria
Name[nb]=Bulgarsk
Name[nds]=Bulgaarsch
Name[ne]=बुल्गेरियाली
Name[nl]=Bulgaars
Name[nn]=Bulgarsk
Name[oc]=Bulgar
Name[or]=Bulgarian
Name[pa]=ਬੁਲਗਾਰੀਆਈ
Name[pl]=Bułgarski
Name[ps]=بلګريايي
Name[pt]=Búlgaro
Name[pt_BR]=Búlgaro
Name[ro]=Bulgară
Name[ru]=Болгарский
Name[se]=Bulgáriagiella
Name[si]=බල්ගේරියානු
Name[sk]=Bulharčina
Name[sl]=bolgarsko
Name[sq]=Bullgare
Name[sr]=бугарски
Name[sr@ijekavian]=бугарски
Name[sr@ijekavianlatin]=bugarski
Name[sr@latin]=bugarski
Name[sv]=Bulgariska
Name[ta]=பல்கேரியன்
Name[te]=బల్గెరియన్
Name[tg]=Булғорӣ
Name[th]=ภาษาบัลแกเรีย
Name[tr]=Bulgarca
Name[ug]=بۇلغارچە
Name[uk]=Болгарська
Name[uz]=Bolgarcha
Name[uz@cyrillic]=Болгарча
-Name[vi]=Bảo-gia-lơi
+Name[vi]=Bun-ga-ry
Name[wa]=Bulgåre
-Name[x-test]=xxBulgarianxx
Name[xh]=Bulgarian
+Name[x-test]=xxBulgarianxx
Name[zh_CN]=保加利亚语
Name[zh_HK]=保加利亞語
Name[zh_TW]=保加利亞語
[bh]
Name=Bihari
Name[af]=Bihari
Name[ar]=بهارية
Name[as]=বিহাৰী
Name[ast]=Biharí
Name[be]=Біхарская
Name[be@latin]=Biharskaja
Name[bg]=Бихари
Name[bn]=বিহারী
Name[bn_IN]=বিহারি
Name[br]=Bihari
Name[bs]=Biharski
Name[ca]=Bihari
Name[ca@valencia]=Bihari
Name[cs]=Bihari
Name[csb]=Bihari
Name[cy]=Bihareg
Name[da]=Bihari
Name[de]=Biharisch
Name[el]=Bihari
Name[en_GB]=Bihari
Name[eo]=Bihari
Name[es]=Bihari
Name[et]=Bihari
Name[eu]=Bihari
Name[fa]=بیهاری
Name[fi]=Bihari
Name[fr]=Bihari
Name[fy]=Bihary
Name[ga]=Bihairis
Name[gl]=Bihari
Name[gu]=બિહારી
Name[he]=ביהרי
Name[hi]=बिहारी
Name[hne]=बिहारी
Name[hr]=Biharski
Name[hsb]=Biharisce
Name[hu]=Bihari
Name[ia]=Bihari
Name[id]=Bihari
Name[is]=Bihari
Name[it]=Bihari
Name[ja]=ビハール語
Name[kk]=Бихарша
Name[km]=ប៊ិហារី
Name[kn]=ಬಿಹಾರಿ
Name[ko]=비하르어
Name[ku]=Biharî
Name[lb]=Biharesch
Name[lt]=Bihari
Name[lv]=Biharu
Name[mai]=बिहारी
Name[mk]=Бихари
Name[ml]=ബീഹാരി
Name[mr]=बिहारी
Name[ms]=Bihari
Name[nb]=Bihari
Name[nds]=Bihari
Name[ne]=बिहारी
Name[nl]=Bihari
Name[nn]=Bihari
Name[oc]=Bihari
Name[or]=Bihari
Name[pa]=ਬਿਹਾਰੀ
Name[pl]=Bihari
Name[ps]=بېهاري
Name[pt]=Bihari
Name[pt_BR]=Bihari
Name[ro]=Bihari
Name[ru]=Бихарский
Name[se]=Biháragiella
Name[si]=බිහාරි
Name[sk]=Bihárčina
Name[sl]=bihari
Name[sq]=Bihari
Name[sr]=бихарски
Name[sr@ijekavian]=бихарски
Name[sr@ijekavianlatin]=biharski
Name[sr@latin]=biharski
Name[sv]=Bihari
Name[ta]=பிகாரி
Name[te]=బిహారి
Name[tg]=Бихарӣ
Name[th]=ภาษาบิฮาริ
Name[tr]=Bihari
Name[ug]=بىخارىچە
Name[uk]=Біхарі
Name[uz]=Bixari
Name[uz@cyrillic]=Бихари
-Name[vi]=Bi-ha-ri
+Name[vi]=Bihari
Name[wa]=Bihari
-Name[x-test]=xxBiharixx
Name[xh]=Bihari
+Name[x-test]=xxBiharixx
Name[zh_CN]=比哈尔语
Name[zh_HK]=比哈爾語
Name[zh_TW]=比哈爾語
[bi]
Name=Bislama
Name[af]=Bislama
Name[ar]=بيسلاما
Name[as]=বিস্লামা
Name[ast]=Bislama
Name[be]=Бісламская
Name[be@latin]=Biślama
Name[bg]=Бислама
Name[bn]=বিসলামা
Name[bn_IN]=বিসলামা
Name[br]=Bislama
Name[bs]=Bislama
Name[ca]=Bislama
Name[ca@valencia]=Bislama
Name[cs]=Bislama
Name[csb]=Bislama
Name[cy]=Bislameg
Name[da]=Bislama
Name[de]=Bislama
Name[el]=Bislama
Name[en_GB]=Bislama
Name[eo]=Bislama
Name[es]=Bislama
Name[et]=Bislama
Name[eu]=Bislama
Name[fa]=بیسلاما
Name[fi]=Bislama
Name[fr]=Bichlamar
Name[fy]=Bislama
Name[ga]=Bioslamais
Name[gl]=Bislama
Name[gu]=બિસલામા
Name[he]=ביסלמה
Name[hi]=बिस्लामा
Name[hne]=बिस्लामा
Name[hr]=Bislamski
Name[hsb]=Bislamisce
Name[hu]=Biszlama
Name[ia]=Bislama
Name[id]=Bislama
Name[is]=Bislama
Name[it]=Bislama
Name[ja]=ビスラマ語
Name[kk]=Бисамша
Name[km]=ប៊ីសឡាម៉ា
Name[kn]=ಬಿಸ್ಲಾಮ
Name[ko]=비슬라마어
Name[ku]=Bislama
Name[lb]=Bislama
Name[lt]=Bislama
Name[lv]=Bišlamā
Name[mai]=बिस्लामा
Name[mk]=Бислама
Name[ml]=ബിസ്ലാമാ
Name[mr]=बिस्लामा
Name[ms]=Bislama
Name[nb]=Bislama
Name[nds]=Bislama
Name[ne]=बिस्लामा
Name[nl]=Bislama
Name[nn]=Bislama
Name[oc]=Bislamà
Name[or]=Bislama
Name[pa]=ਬਿਸਲਾਮਾ
Name[pl]=Bislama
Name[ps]=بېسلاما
Name[pt]=Bislama
Name[pt_BR]=Bislama
Name[ro]=Bislama
Name[ru]=Бислама
Name[se]=Bislamagiella
Name[si]=බිස්ලාමා
Name[sk]=Bislama
Name[sl]=bislama
Name[sq]=Bislama
Name[sr]=бисламски
Name[sr@ijekavian]=бисламски
Name[sr@ijekavianlatin]=bislamski
Name[sr@latin]=bislamski
Name[sv]=Bislama
Name[ta]=பிஸ்லாமா
Name[te]=బిస్లమా
Name[tg]=Бисламавӣ
Name[th]=ภาษาบิสลามา
Name[tr]=Bislama
Name[ug]=بىسلاماچە
Name[uk]=Біслама
Name[uz]=Bislama
Name[uz@cyrillic]=Бислама
-Name[vi]=Bit-la-ma
+Name[vi]=Bislama
Name[wa]=Bislama
-Name[x-test]=xxBislamaxx
Name[xh]=Bislama
+Name[x-test]=xxBislamaxx
Name[zh_CN]=比斯拉马语
Name[zh_HK]=Bislama語
Name[zh_TW]=Bislama語
[bn]
Name=Bengali
Name[af]=Bengali
Name[ar]=بنغالية
Name[as]=বঙালী
Name[ast]=Bengalí
Name[be]=Бенгальская
Name[be@latin]=Bengalskaja
Name[bg]=Бенгали
Name[bn]=বাংলা
Name[bn_IN]=বাংলা
Name[br]=Bangali
Name[bs]=Bengalski
Name[ca]=Bengalí
Name[ca@valencia]=Bengalí
Name[cs]=Bengálský
Name[csb]=Bengalsczi
Name[cy]=Bengaleg
Name[da]=Bengali
Name[de]=Bengalisch
Name[el]=Bengali
Name[en_GB]=Bengali
Name[eo]=Bengala
Name[es]=Bengalí
Name[et]=Bengali
Name[eu]=Bengalera
Name[fa]=بنگلادشی
Name[fi]=Bengali
Name[fr]=Bengalî
Name[fy]=Bengaalsk
Name[ga]=Beangáilis
Name[gl]=Bengalí
Name[gu]=બંગાળી
Name[he]=בנגלית
Name[hi]=बंगाली
Name[hne]=बंगाली
Name[hr]=Bengalski
Name[hsb]=Bengalsce
Name[hu]=Bengáli
Name[ia]=Bengali
Name[id]=Bengali
Name[is]=Bengalst
Name[it]=Bengalese
Name[ja]=ベンガル語
Name[kk]=Бенгали
Name[km]=​បេន្កាលី
Name[kn]=ಬಂಗಾಳಿ
Name[ko]=벵갈어
Name[ku]=Bengalî
Name[lb]=Bengalesch
Name[lt]=Bengalų
Name[lv]=Bengāļu
Name[mai]=बंगाली
Name[mk]=Бенгалски
Name[ml]=ബംഗാളി
Name[mr]=बंगाली
Name[ms]=Bengali
Name[nb]=Bengali
Name[nds]=Bengaalsch
Name[ne]=बङ्गाली
Name[nl]=Bengali
Name[nn]=Bengali
Name[oc]=Bengalí
Name[or]=Bengali
Name[pa]=ਬੰਗਾਲੀ
Name[pl]=Bengalski
Name[ps]=بنګالي
Name[pt]=Bengali
Name[pt_BR]=Bengali
Name[ro]=Bengali
Name[ru]=Бенгальский
Name[se]=Bengalagiella
Name[si]=බෙංගාලි
Name[sk]=Bengálčina
Name[sl]=bengalsko
Name[sq]=Bengali
Name[sr]=бенгалски
Name[sr@ijekavian]=бенгалски
Name[sr@ijekavianlatin]=bengalski
Name[sr@latin]=bengalski
Name[sv]=Bengali
Name[ta]=பெங்காலி
Name[te]=బెంగాలి
Name[tg]=Банголӣ
Name[th]=ภาษาเบงกาลี
Name[tr]=Bengalce
Name[ug]=بېنگالچە
Name[uk]=Бенгальська
Name[uz]=Bengalcha
Name[uz@cyrillic]=Бенгалча
-Name[vi]=Ben-ga-li
+Name[vi]=Băng-gan
Name[wa]=Bengali
-Name[x-test]=xxBengalixx
Name[xh]=Bengali
+Name[x-test]=xxBengalixx
Name[zh_CN]=孟加拉语
Name[zh_HK]=孟加拉語
Name[zh_TW]=孟加拉語
[bn_IN]
Name=Bengali (India)
Name[ar]=بنغالية (الهند)
Name[as]=বঙালী (ভাৰত)
Name[ast]=Bengalí (India)
Name[be@latin]=Bengalskaja (Indyja)
Name[bg]=Бенгали (Индия)
Name[bn]=বাংলা (ভারত)
Name[bn_IN]=বাংলা (ভারত)
Name[bs]=Bengalski(Indija)
Name[ca]=Bengalí (Índia)
Name[ca@valencia]=Bengalí (Índia)
Name[cs]=Bengálský (Indie)
Name[csb]=Bengalsczi (Indie)
Name[da]=Bengali (Indien)
Name[de]=Bengalisch (Indien)
Name[el]=Bengali (Ινδία)
Name[en_GB]=Bengali (India)
Name[eo]=Bengala (Hindio)
Name[es]=Bengalí (India)
Name[et]=Bengali (India)
Name[eu]=Bengalera (India)
Name[fa]=بنگلادشی (هند)
Name[fi]=Bengali (Intia)
Name[fr]=Bengali (Inde)
Name[fy]=Bengaalsk (india)
Name[ga]=Beangáilis (An India)
Name[gl]=Bengalí (India)
Name[gu]=બંગાળી (ભારત)
Name[he]=בנגלית (הודו)
Name[hi]=बंगाली (भारत)
Name[hne]=बंगाली (भारत)
Name[hr]=Bengalski (Indija)
Name[hsb]=Bengalsce (Indiska)
Name[hu]=Bengáli (India)
Name[ia]=Bengali (India)
Name[id]=Bengali (India)
Name[is]=Bengalst (Indland)
Name[it]=Bengalese (India)
Name[ja]=ベンガル語 (インド)
Name[kk]=Бенгали (Үндістан)
Name[km]=​បេន្កាលី (ឥណ្ឌា)
Name[kn]=ಬಂಗಾಳಿ (ಭಾರತ)
Name[ko]=벵갈어 (인도)
Name[ku]=Bengalî (Hindistan)
Name[lt]=Bengalų (Indija)
Name[lv]=Bengāļu (Indijas)
Name[mai]=बंगाली (भारत)
Name[mk]=Бенгалски (Индија)
Name[ml]=ബംഗാളി (ഇന്ത്യ)
Name[mr]=बंगाली (भारत)
Name[ms]=Bengali (India)
Name[nb]=Bengali (India)
Name[nds]=Bengaalsch (Indien)
Name[nl]=Bengali (India)
Name[nn]=Bengali (India)
Name[oc]=Bengalin (Índia)
Name[or]=Bengali (India)
Name[pa]=ਬੰਗਾਲੀ (ਭਾਰਤ)
Name[pl]=Bengalski (Indie)
Name[ps]=بنګالي (انډيا)
Name[pt]=Bengali (Índia)
Name[pt_BR]=Bengali (Índia)
Name[ro]=Bengali (India)
Name[ru]=Бенгальский (Индия)
Name[se]=Bengalagiella (India)
Name[si]=බෙංගාලි (ඉන්දියා)
Name[sk]=Bengálčina (India)
Name[sl]=bengalsko (Indija)
Name[sq]=Bengali (India)
Name[sr]=бенгалски (Индија)
Name[sr@ijekavian]=бенгалски (Индија)
Name[sr@ijekavianlatin]=bengalski (Indija)
Name[sr@latin]=bengalski (Indija)
Name[sv]=Bengali (Indien)
Name[ta]=பெங்காலி (இந்தியா)
Name[te]=బెంగాలి (భారతీయ)
Name[tg]=Банголӣ (Ҳиндӣ)
Name[th]=ภาษาเบงกาลี (อินเดีย)
Name[tr]=Bengalce (Hindistan)
Name[ug]=بېنگالچە (ھىندىستان)
Name[uk]=Бенгальська (Індія)
+Name[vi]=Bengali (Ấn độ)
Name[wa]=Bengali (Inde)
Name[x-test]=xxBengali (India)xx
Name[zh_CN]=孟加拉语(印度)
Name[zh_TW]=孟加拉語(印度)
[bo]
Name=Tibetan
Name[af]=Tibetan
Name[ar]=تبتية
Name[as]=টিব্বটীয়
Name[ast]=Tibetanu
Name[be]=Тыбецкая
Name[be@latin]=Tybeckaja
Name[bg]=Тибетски
Name[bn]=তিব্বতী
Name[bn_IN]=তিব্বতি
Name[br]=Yezh an Tibet
Name[bs]=Tibetski
Name[ca]=Tibetà
Name[ca@valencia]=Tibetà
Name[cs]=Tibetský
Name[csb]=Tibetańsczi
Name[cy]=Tibeteg
Name[da]=Tibetansk
Name[de]=Tibetisch
Name[el]=Θιβετιανά
Name[en_GB]=Tibetan
Name[eo]=Tibeta
Name[es]=Tibetano
Name[et]=Tiibeti
Name[eu]=Tibetera
Name[fa]=تیبوتیایی
Name[fi]=Tiibet
Name[fr]=Tibétain
Name[fy]=Tibetaansk
Name[ga]=Tibéidis
Name[gl]=Tibetano
Name[gu]=તિબેટીયન
Name[he]=טיבטית
Name[hi]=तिब्बती
Name[hne]=तिब्बती
Name[hr]=Tibetanski
Name[hsb]=Tibetisce
Name[hu]=Tibeti
Name[ia]=Tibetano
Name[id]=Tibet
Name[is]=Tíbeska
Name[it]=Tibetano
Name[ja]=チベット語
Name[kk]=Тибетше
Name[km]=ទីបេ
Name[kn]=ಟಿಬೆಟನ್
Name[ko]=티베트어
Name[ku]=Tîbetî
Name[lb]=Tibetanesch
Name[lt]=Tibetiečių
Name[lv]=Tibetiešu
Name[mai]=तिब्बती
Name[mk]=Тибетански
Name[ml]=ടിബറ്റന്‍
Name[mr]=टिबेटियन
Name[ms]=Tibet
Name[nb]=Tibetansk
Name[nds]=Tibeetsch
Name[ne]=तिब्बती
Name[nl]=Tibetaans
Name[nn]=Tibetansk
Name[oc]=Tibetan
Name[or]=Tibetan
Name[pa]=ਤਿੱਬਤੀ
Name[pl]=Tybetański
Name[ps]=ټېبېټي
Name[pt]=Tibetano
Name[pt_BR]=Tibetano
Name[ro]=Tibetană
Name[ru]=Тибетский
Name[se]=Tibehtagiella
Name[si]=ටිබෙටියානු
Name[sk]=Tibetčina
Name[sl]=tibetansko
Name[sq]=Tibetiane
Name[sr]=тибетански
Name[sr@ijekavian]=тибетански
Name[sr@ijekavianlatin]=tibetanski
Name[sr@latin]=tibetanski
Name[sv]=Tibetanska
Name[ta]=திபெத்தியன்
Name[te]=టిబెటియన్
Name[tg]=Тибетӣ
Name[th]=ภาษาฑิเบต
Name[tr]=Tibetan
Name[ug]=تىبەتچە
Name[uk]=Тибетська
Name[uz]=Tibetcha
Name[uz@cyrillic]=Тибетча
-Name[vi]=Tây-tạng
+Name[vi]=Tây Tạng
Name[wa]=Tibetyin
-Name[x-test]=xxTibetanxx
Name[xh]=Tibetan
+Name[x-test]=xxTibetanxx
Name[zh_CN]=藏语
Name[zh_HK]=藏語
Name[zh_TW]=藏語
[br]
Name=Breton
Name[af]=Breton
Name[ar]=بريتونية
Name[as]=ব্ৰেট'ন
Name[ast]=Bretón
Name[be]=Брэтонская
Name[be@latin]=Bretonskaja
Name[bg]=Бретонски
Name[bn]=ব্রেটন
Name[bn_IN]=ব্রেটন
Name[br]=Brezhoneg
Name[bs]=Bretonski
Name[ca]=Bretó
Name[ca@valencia]=Bretó
Name[cs]=Bretonský
Name[csb]=Bretońsczi
Name[cy]=Llydaweg
Name[da]=Bretonsk
Name[de]=Bretonisch
Name[el]=Βρετονικά
Name[en_GB]=Breton
Name[eo]=Bretona
Name[es]=Bretón
Name[et]=Bretooni
Name[eu]=Bretoiera
Name[fa]=برتونیایی
Name[fi]=Bretoni
Name[fr]=Breton
Name[fy]=Bretonsk
Name[ga]=Briotáinis
Name[gl]=Bretón
Name[gu]=બ્રેટોન
Name[he]=ברטונית
Name[hi]=ब्रेटन
Name[hne]=ब्रेटन
Name[hr]=Bretonski
Name[hsb]=Bretonisce
Name[hu]=Breton
Name[ia]=Bretone
Name[id]=Breton
Name[is]=Bretánska
Name[it]=Bretone
Name[ja]=ブルトン語
Name[kk]=Бретонша
Name[km]=ប្រេតុង
Name[kn]=ಬ್ರೆಟನ್
Name[ko]=브르타뉴어
Name[ku]=Bretonî
Name[lb]=Britesch
Name[lt]=Bretonų
Name[lv]=Bretoņu
Name[mai]=ब्रेटन
Name[mk]=Бретонски
Name[ml]=ബ്രെട്ടോണ്‍
Name[mr]=ब्रेटन
Name[ms]=Breton
Name[nb]=Bretonsk
Name[nds]=Bretoonsch
Name[ne]=बेलायती
Name[nl]=Bretons
Name[nn]=Bretonsk
Name[oc]=Breton
Name[or]=Breton
Name[pa]=ਬਰੀਟੋਨ
Name[pl]=Bretoński
Name[ps]=برېټون
Name[pt]=Bretão
Name[pt_BR]=Bretão
Name[ro]=Bretonă
Name[ru]=Бретонский
Name[se]=Bretonagiella
Name[si]=බ්‍රෙටන්
Name[sk]=Bretónčina
Name[sl]=bretonsko
Name[sq]=Bretone
Name[sr]=бретонски
Name[sr@ijekavian]=бретонски
Name[sr@ijekavianlatin]=bretonski
Name[sr@latin]=bretonski
Name[sv]=Bretonska
Name[ta]=பிரெடான்
Name[te]=బ్రెటన్
Name[tg]=Бритонӣ
Name[th]=ภาษาเบรทตัน
Name[tr]=Britanya Dili
-Name[ug]=بىرېتونچە
+Name[ug]=برېتونچە
Name[uk]=Бретонська
Name[uz]=Bretoncha
Name[uz@cyrillic]=Бретонча
-Name[vi]=Bợ-re-ton
+Name[vi]=Breton
Name[wa]=Burton
-Name[x-test]=xxBretonxx
Name[xh]=Breton
+Name[x-test]=xxBretonxx
Name[zh_CN]=布里多尼语
Name[zh_HK]=不列塔尼語
Name[zh_TW]=不列塔尼語
[bs]
Name=Bosnian
Name[af]=Bosnies
Name[ar]=بوسنية
Name[as]=বোস্নীয়
Name[ast]=Bosniu
Name[be]=Баснійская
Name[be@latin]=Baśnijskaja
Name[bg]=Босненски
Name[bn]=বসনীয়
Name[bn_IN]=বসনিয়ান
Name[br]=Bosnieg
Name[bs]=Bosanski
Name[ca]=Bosnià
Name[ca@valencia]=Bosnià
Name[cs]=Bosenský
Name[csb]=Bósniany
Name[cy]=Bosneg
Name[da]=Bosnisk
Name[de]=Bosnisch
Name[el]=Βοσνιακά
Name[en_GB]=Bosnian
Name[eo]=Bosnia
Name[es]=Bosnio
Name[et]=Bosnia
Name[eu]=Bosniera
Name[fa]=بوسنیایی
Name[fi]=Bosnia
Name[fr]=Bosniaque
Name[fy]=Bosnysk
Name[ga]=Boisnis
Name[gl]=Bosnio
Name[gu]=બોસ્નીયન
Name[he]=בוסנית
Name[hi]=बोस्नियाई
Name[hne]=बोस्नियाई
Name[hr]=Bošnjački
Name[hsb]=Bosnisce
Name[hu]=Bosnyák
Name[ia]=Bosniano
Name[id]=Bosnia
Name[is]=Bosníska
Name[it]=Bosniaco
Name[ja]=ボスニア語
Name[kk]=Боснаша
Name[km]=បូស្នី
Name[kn]=ಬೋಸ್ನಿಯನ್
Name[ko]=보스니아어
Name[ku]=Bosnî
Name[lb]=Bosnesch
Name[lt]=Bosnių
Name[lv]=Bosniešu
Name[mai]=बोस्नियाइ
Name[mk]=Босански
Name[ml]=ബോസ്നിയന്‍
Name[mr]=बोस्नियाई
Name[ms]=Bosnia
Name[nb]=Bosnisk
Name[nds]=Bosnisch
Name[ne]=बोस्नियाली
Name[nl]=Bosnisch
Name[nn]=Bosnisk
Name[oc]=Bosniac
Name[or]=Bosnian
Name[pa]=ਬੋਸਨੀਆ
Name[pl]=Bośniacki
Name[ps]=بوسنيايي
Name[pt]=Bósnio
Name[pt_BR]=Bósnio
Name[ro]=Bosniacă
Name[ru]=Боснийский
Name[se]=Bosniagiella
Name[si]=බොස්නියානු
Name[sk]=Bosniačtina
Name[sl]=bosansko
Name[sq]=Boshnjake
Name[sr]=бошњачки
Name[sr@ijekavian]=бошњачки
Name[sr@ijekavianlatin]=bošnjački
Name[sr@latin]=bošnjački
Name[sv]=Bosniska
Name[ta]=பொஸ்னியன்
Name[te]=బొస్నియన్
Name[tg]=Босниявӣ
Name[th]=ภาษาบอสเนีย
Name[tr]=Boşnakça
Name[ug]=بوسنىيەچە
Name[uk]=Боснійська
Name[uz]=Bosniyacha
Name[uz@cyrillic]=Боснияча
-Name[vi]=Bo-x-ni-a
+Name[vi]=Bosnia
Name[wa]=Bosnyin
-Name[x-test]=xxBosnianxx
Name[xh]=Bosnian
+Name[x-test]=xxBosnianxx
Name[zh_CN]=波斯尼亚语
Name[zh_HK]=波斯尼亞語
Name[zh_TW]=波士尼亞語
[ca]
Name=Catalan
Name[af]=Katelaans
Name[ar]=كتلونية
Name[as]=কাটালান
Name[ast]=Catalán
Name[be]=Каталонская
Name[be@latin]=Katalanskaja
Name[bg]=Каталонски
Name[bn]=ক্যাটালান
Name[bn_IN]=ক্যাটালান
Name[br]=Katalaneg
Name[bs]=Katalonski
Name[ca]=Català
Name[ca@valencia]=Català
Name[cs]=Katalánský
Name[csb]=Katalońsczi
Name[cy]=Catalaneg
Name[da]=Catalansk
Name[de]=Katalanisch
Name[el]=Καταλανικά
Name[en_GB]=Catalan
Name[eo]=Kataluna
Name[es]=Catalán
Name[et]=Katalaani
Name[eu]=Katalaniera
Name[fa]=کاتالانی
Name[fi]=Katalaani
Name[fr]=Catalan
Name[fy]=Katalaansk
Name[ga]=Catalóinis
Name[gl]=Catalán
Name[gu]=કેટેલાન
Name[he]=קטלונית
Name[hi]=केटेलन
Name[hne]=केटेलन
Name[hr]=Katalonski
Name[hsb]=Katalansce
Name[hu]=Katalán
Name[ia]=Catalan
Name[id]=Catalan
Name[is]=Katalánska
Name[it]=Catalano
Name[ja]=カタロニア語
Name[kk]=Каталанша
Name[km]=កាតាឡាន
Name[kn]=ಕ್ಯಾಟಲಾನ್
Name[ko]=카탈루냐어
Name[ku]=Katalan
Name[lb]=Katalanesch
Name[lt]=Katalonų
Name[lv]=Kataloņu
Name[mai]=केटालान
Name[mk]=Каталонски
Name[ml]=കറ്റാലന്‍
Name[mr]=केटेलन
Name[ms]=Catalan
Name[nb]=Katalansk
Name[nds]=Katalaansch
Name[ne]=क्यातालान
Name[nl]=Catalaans
Name[nn]=Katalansk
Name[oc]=Catalan
Name[or]=Catalan
Name[pa]=ਕਾਟਾਲਾਨ
Name[pl]=Kataloński
Name[ps]=کېټېلېن
Name[pt]=Catalão
Name[pt_BR]=Catalão
Name[ro]=Catalană
Name[ru]=Каталонский
Name[se]=Katalánagiella
Name[si]=කැටලන්
Name[sk]=Katalánčina
Name[sl]=katalonsko
Name[sq]=Katalane
Name[sr]=каталонски
Name[sr@ijekavian]=каталонски
Name[sr@ijekavianlatin]=katalonski
Name[sr@latin]=katalonski
Name[sv]=Katalanska
Name[ta]=கடலான்
Name[te]=కెటలన్
Name[tg]=Каталанӣ
Name[th]=ภาษาคาตะลาน
Name[tr]=Katalan Dili
Name[ug]=كاتالانچە
Name[uk]=Каталонська
Name[uz]=Katalancha
Name[uz@cyrillic]=Каталанча
-Name[vi]=Ca-ta-lan
+Name[vi]=Catalan
Name[wa]=Catalan
-Name[x-test]=xxCatalanxx
Name[xh]=Catalan
+Name[x-test]=xxCatalanxx
Name[zh_CN]=加泰罗尼亚语
Name[zh_HK]=嘉泰羅尼亞語
Name[zh_TW]=嘉泰羅尼亞語
[ca@valencia]
Name=Catalan (Valencian)
Name[bg]=Каталонски (Валенсиански)
Name[bs]=Katalonski(Valensijski)
Name[ca]=Català (Valencià)
Name[ca@valencia]=Català (Valencià)
Name[cs]=Katalánský (Valencie)
Name[da]=Catalansk (Valenciansk)
Name[de]=Katalanisch (Valenciana)
Name[el]=Καταλανικά (Βαλένθια)
Name[en_GB]=Catalan (Valencian)
Name[es]=Catalán (Valenciano)
Name[et]=Katalaani (valencia)
Name[eu]=Katalana (Valentziera)
Name[fi]=Katalaani (Valencia)
Name[fr]=Catalan (Valence)
Name[ga]=Catalóinis (Vaileinsis)
Name[gl]=Catalán (valenciano)
Name[hr]=Katalonski (valencijski)
Name[hu]=Katalán (valenciai)
Name[ia]=Catalan (Valencian)
Name[id]=Catalan (Valencia)
Name[is]=Katalónska (Valensía)
Name[it]=Catalano (Valenziano)
Name[ja]=バレンシア語
Name[kk]=Каталанша (Валенсиянша)
Name[km]=កាតាឡាំង (វ៉ាឡេនស៊ៀន)
Name[kn]=ಕೆಟಲಾನ್ (ವೆಲೆನ್ಶಿಯನ್)
Name[ko]=카탈루냐어 (발렌시아)
Name[ku]=Katalan (Valensî)
Name[lt]=Katalonų (Valencijos)
Name[lv]=Kataloņu (Valensijas)
Name[ms]=Catalan (Valencia)
Name[nb]=Katalansk (Valenciansk)
Name[nds]=Katalaansch (valenziaansch)
Name[nl]=Catalaans (Valentiaans)
Name[nn]=Katalansk (Valencia)
Name[pa]=ਕਾਟਾਲਾਨ (ਵਾਲਿਨਸੀਆਈ)
Name[pl]=Kataloński (walencki)
Name[pt]=Catalão (Valenciano)
Name[pt_BR]=Catalão (valenciano)
Name[ro]=Catalană (Valenciană)
Name[ru]=Каталонский (Валенсия)
Name[se]=Kataluniagiella (Valensalaš)
Name[sk]=Katalánčina (Valencia)
Name[sl]=katalonsko (valencijsko)
Name[sr]=каталонски (валенсијски)
Name[sr@ijekavian]=каталонски (валенсијски)
Name[sr@ijekavianlatin]=katalonski (valensijski)
Name[sr@latin]=katalonski (valensijski)
Name[sv]=Katalanska (valenciska)
Name[ta]=கடலான் (வேலன்சியன்)
Name[tg]=Каталан (Валенсӣ)
Name[th]=ภาษาคาตะลาน (วาเลนเซีย)
Name[tr]=Katalan (Valencia)
Name[ug]=كاتالانچە(ۋالىنسىيە)
Name[uk]=Каталонська (валенсійський діалект)
+Name[vi]=Catalan (Valencian)
Name[wa]=Catalan (Valince)
Name[x-test]=xxCatalan (Valencian)xx
Name[zh_CN]=加泰罗尼亚(瓦伦西亚)语
Name[zh_TW]=加泰羅尼亞(瓦倫西亞)語
[ce]
Name=Chechen
Name[af]=Chechen
Name[ar]=شيشانية
Name[as]=ছেছেন্‌
Name[ast]=Chechenu
Name[be]=Чачэнская
Name[be@latin]=Čačenskaja
Name[bg]=Чеченски
Name[bn]=চেচেন
Name[bn_IN]=চেচেন
Name[br]=Tchetcheneg
Name[bs]=Čečenski
Name[ca]=Txetxè
Name[ca@valencia]=Txetxè
Name[cs]=Čečenský
Name[csb]=Czeczeńsczi
Name[cy]=Checheneg
Name[da]=Chechen
Name[de]=Tschetschenisch
Name[el]=Τσετσενικά
Name[en_GB]=Chechen
Name[eo]=Ĉeĉena
Name[es]=Checheno
Name[et]=Tšetšeeni
Name[eu]=Chechen
Name[fa]=چچنی
Name[fi]=Tšetšeeni
Name[fr]=Tchétchène
Name[fy]=Tsjechysk
Name[ga]=Seisnis
Name[gl]=Checheno
Name[gu]=ચેચેન
Name[he]=צ'צ'נית
Name[hi]=चेचेन
Name[hne]=चेचेन
Name[hr]=Čečenski
Name[hsb]=Čečenisce
Name[hu]=Csecsen
Name[ia]=Checheno
Name[id]=Chechen
Name[is]=Tékkneska
Name[it]=Ceceno
Name[ja]=チェチェン語
Name[kk]=Шешенше
Name[km]=ចេចេន
Name[kn]=ಚೆಚೆನ್
Name[ko]=체첸어
Name[ku]=Çeçenî
Name[lb]=Tschetschenesch
Name[lt]=Čėčėnų
Name[lv]=Čečenu
Name[mai]=चेचेन
Name[mk]=Чеченски
Name[ml]=ചെച്ചന്‍
Name[mr]=चेचेन
Name[ms]=Chechen
Name[nb]=Tsjetsjensk
Name[nds]=Tschetscheensch
Name[ne]=चेचेन
Name[nl]=Chechen
Name[nn]=Tsjetsjensk
Name[oc]=Chechen
Name[or]=Chechen
Name[pa]=ਚੇਚਨ
Name[pl]=Czeczeński
Name[ps]=چيچنيايي
Name[pt]=Checheno
Name[pt_BR]=Checheno
Name[ro]=Cecenă
Name[ru]=Чеченский
Name[se]=Čečeniagiella
Name[si]=චෙචන්
Name[sk]=Čečenčina
Name[sl]=čečensko
Name[sq]=Çeçene
Name[sr]=чеченски
Name[sr@ijekavian]=чеченски
Name[sr@ijekavianlatin]=čečenski
Name[sr@latin]=čečenski
Name[sv]=Tjetjenska
Name[ta]=செச்சென்
Name[te]=చెచన్
Name[tg]=Чеченӣ
Name[th]=ภาษาเชเชน
Name[tr]=Çeçen
-Name[ug]=چېچېنچە
+Name[ug]=چېچەنچە
Name[uk]=Чеченська
Name[uz]=Chechencha
Name[uz@cyrillic]=Чеченча
-Name[vi]=Che-chen
+Name[vi]=Chechen
Name[wa]=Tchetchene
-Name[x-test]=xxChechenxx
Name[xh]=Chechen
+Name[x-test]=xxChechenxx
Name[zh_CN]=车臣语
Name[zh_HK]=Chechen語
Name[zh_TW]=車臣語
[ch]
Name=Chamorro
Name[af]=Chamorro
Name[ar]=شامورو
Name[as]=কেমোৰো
Name[ast]=Chamorru
Name[be]=Чаморская
Name[be@latin]=Čamora
Name[bg]=Чаморо
Name[bn]=চামোরো
Name[bn_IN]=চামোরো
Name[br]=Chamorro
Name[bs]=Čamoro
Name[ca]=Chamorro
Name[ca@valencia]=Chamorro
Name[cs]=Chamorro
Name[csb]=Chamorro
Name[cy]=Chamorreg
Name[da]=Chamorro
Name[de]=Chamorro
Name[el]=Chamorro
Name[en_GB]=Chamorro
Name[eo]=Ĉamora
Name[es]=Chamorro
Name[et]=Chamorro
Name[eu]=Chamorro
Name[fa]=کاماروئی
Name[fi]=Tšamorro
Name[fr]=Chamorro
Name[fy]=Chamorro
Name[ga]=Seamóróis
Name[gl]=Chamorro
Name[gu]=ચામોરો
Name[he]=צ'מורו
Name[hi]=केमोरो
Name[hne]=केमोरो
Name[hr]=Čamorski
Name[hsb]=Chamorrisce
Name[hu]=Chamorro
Name[ia]=Chamorro
Name[id]=Chamorro
Name[is]=Chamorró
Name[it]=Chamorro
Name[ja]=チャモロ語
Name[kk]=Чаморро
Name[km]=ចាម៉ូរ៉ូ
Name[kn]=ಚಾಮೊರೊ
Name[ko]=차모로어
Name[ku]=Xamoro
Name[lb]=Chamorro
Name[lt]=Chamorro
Name[lv]=Čamorru
Name[mai]=केमोरो
Name[mk]=Чаморо
Name[ml]=ഷമരോ
Name[mr]=केमोरो
Name[ms]=Chamorro
Name[nb]=Chamorro
Name[nds]=Chamorro
Name[ne]=क्यामोरो
Name[nl]=Chamorro
Name[nn]=Chamorro
Name[oc]=Chamorrá
Name[or]=Chamorro
Name[pa]=ਚਾਮੂਰੂ
Name[pl]=Chamorro
Name[ps]=چمورو
Name[pt]=Chamorro
Name[pt_BR]=Chamorro
Name[ro]=Camoro
Name[ru]=Чаморро
Name[se]=Chamorrogiella
Name[si]=චැමොරෝ
Name[sk]=Čamorčina
Name[sl]=chamorro
Name[sq]=Chamorro
Name[sr]=чаморски
Name[sr@ijekavian]=чаморски
Name[sr@ijekavianlatin]=čamorski
Name[sr@latin]=čamorski
Name[sv]=Chamorro
Name[ta]=சமொரோ
Name[te]=చమొర్రొ
Name[tg]=Чаморроӣ
Name[th]=ภาษาชามอโร
Name[tr]=Chamorro
Name[ug]=چامورروچە
Name[uk]=Чаморо
Name[uz]=Chamorro
Name[uz@cyrillic]=Чаморро
-Name[vi]=Cha-mo-rô
+Name[vi]=Chamorro
Name[wa]=Chamorro
-Name[x-test]=xxChamorroxx
Name[xh]=Chamorro
+Name[x-test]=xxChamorroxx
Name[zh_CN]=查莫罗语
Name[zh_HK]=查摩洛語
Name[zh_TW]=查摩洛語
[co]
Name=Corsican
Name[af]=Corsican
Name[ar]=كورسيكي
Name[as]=ক'ৰ্চিয়ান
Name[ast]=Corsicanu
Name[be]=Карсіканская
Name[be@latin]=Karsikanskaja
Name[bg]=Корсикански
Name[bn]=কর্সিকান
Name[bn_IN]=কোর্সিকান
Name[br]=Korseg
Name[bs]=Korzikanski
Name[ca]=Cors
Name[ca@valencia]=Cors
Name[cs]=Korsický
Name[csb]=Kòrsykańsczi
Name[cy]=Corsiceg
Name[da]=Korsikansk
Name[de]=Korsisch
Name[el]=Κορσικανικά
Name[en_GB]=Corsican
Name[eo]=Korsika
Name[es]=Corso
Name[et]=Korsika
Name[eu]=Korsiera
Name[fa]=کورسیکانی
Name[fi]=Korsika
Name[fr]=Corse
Name[fy]=Korsikaansk
Name[ga]=Corsaicis
Name[gl]=Corso
Name[gu]=કોર્સિકન
Name[he]=קורסיקנית
Name[hi]=कॉर्सियन
Name[hne]=कार्सियन
Name[hr]=Korzikanski
Name[hsb]=Korsisce
Name[hu]=Korzikai
Name[ia]=Corsicano
Name[id]=Corsican
Name[is]=Korsíkanska
Name[it]=Corso
Name[ja]=コルシカ語
Name[kk]=Корсиканша
Name[km]=កូសីកា
Name[kn]=ಕೋರ್ಸಿಯನ್
Name[ko]=코르시카어
Name[ku]=Korsî
Name[lb]=Korsesch
Name[lt]=Korsikiečių
Name[lv]=Korsikāņu
Name[mai]=कार्सियन
Name[mk]=Корзикански
Name[ml]=കോര്‍സികന്‍
Name[mr]=कॉर्सियन
Name[ms]=Corsican
Name[nb]=Korsikansk
Name[nds]=Korssch
Name[ne]=कोर्सिकन
Name[nl]=Corsicaans
Name[nn]=Korsikansk
Name[oc]=Còrse
Name[or]=Corsican
Name[pa]=ਕੁਰਸੀਕੇਨ
Name[pl]=Korsykański
Name[ps]=کورسېکن
Name[pt]=Corso
Name[pt_BR]=Corso
Name[ro]=Corsicană
Name[ru]=Корсиканский
Name[se]=Korsikagiella
Name[si]=කෝසිකන්
Name[sk]=Korzičtina
Name[sl]=korzijško
Name[sq]=Korsikane
Name[sr]=корзикански
Name[sr@ijekavian]=корзикански
Name[sr@ijekavianlatin]=korzikanski
Name[sr@latin]=korzikanski
Name[sv]=Korsikanska
Name[ta]=கோர்சிகன்
Name[te]=కొర్సికన్
Name[tg]=Корсиканӣ
Name[th]=ภาษาคอร์ซิกัน
Name[tr]=Korsikaca
Name[ug]=كورسىكاچە
Name[uk]=Корсиканська
Name[uz]=Korsikancha
Name[uz@cyrillic]=Корсиканча
-Name[vi]=Coa-xi-ca
+Name[vi]=Corsica
Name[wa]=Corse
-Name[x-test]=xxCorsicanxx
Name[xh]=Corsican
+Name[x-test]=xxCorsicanxx
Name[zh_CN]=科西嘉语
Name[zh_HK]=科西嘉語
Name[zh_TW]=科西嘉語
[crh]
Name=Crimean Tatar
Name[ar]=تتارية القرم
Name[as]=ক্ৰিমিয়ান টাটাৰ
Name[ast]=Tatar de Crimea
Name[be@latin]=Krymskich tataraŭ
Name[bg]=Кримейски татарски
Name[bn]=ক্রিমিয়ান টাটার
Name[bn_IN]=ক্রিমিয়ান তাতার
Name[bs]=Krimsko Tatarski
Name[ca]=Tàtar de Crimea
Name[ca@valencia]=Tàtar de Crimea
Name[cs]=Krymská tatarština
Name[csb]=Tatarsczi (krimsczi)
Name[da]=Krimsk tatar
Name[de]=Krimtatarisch
Name[el]=Ταταρικά Κριμαίας
Name[en_GB]=Crimean Tatar
Name[es]=Tártaro de Crimea
Name[et]=Krimmitatari
Name[eu]=Tatariera
Name[fi]=Krimin tataari
Name[fr]=Tatars de Crimée
Name[fy]=Crimean Tatar
Name[ga]=Tatairis na Crimé
Name[gl]=Tártaro da Crimea
Name[gu]=ક્રિમીઅન તાતાર
Name[he]=טטרית של קרים
Name[hi]=क्रिमियन तातर
Name[hne]=क्रिमियन तातर
Name[hr]=Krimsko-tatarski
Name[hsb]=Krimtatarsce
Name[hu]=Krími tatár
Name[ia]=Crimean Tatar
Name[id]=Crimean Tatar
Name[is]=Tataríska frá Krím
Name[it]=Tataro di Crimea
Name[ja]=クリミア・タタール語
Name[kk]=Қырым татарша
Name[km]=Crimean Tatar
Name[kn]=ಕ್ರಮಿಯನ್ ಟಟಾರ್
Name[ko]=크림 타타르어
Name[ku]=Tatarî ya Kirimî
Name[lt]=Krymo totorių
Name[lv]=Krimas tatāru
Name[mai]=क्रिमियन तातर
Name[mk]=Кримски татарски
Name[ml]=ക്രിമിയന്‍ ടട്ടാര്‍
Name[mr]=क्रिमीयन तातार
Name[ms]=Crimean Tatar
Name[nb]=Krimtatarsk
Name[nds]=Krimtataarsch
Name[nl]=Krimtartaar
Name[nn]=Krimtatarsk
Name[pa]=ਕਰੀਮੀਨ ਤਾਤਾਰ
Name[pl]=Tatarski (Krymski)
Name[ps]=کريمين ټاټار
Name[pt]=Tatar da Crimeia
Name[pt_BR]=Tártaro da Crimeia
Name[ro]=Tătară din Crimeea
Name[ru]=Крымско-татарский
Name[se]=Krimtataralašgiella
Name[si]=ක්‍රිමීන් ටටාර්
Name[sk]=Krymská tatárčina
Name[sl]=Krimsko tatarsko
Name[sq]=Krimease Tatare
Name[sr]=кримски татарски
Name[sr@ijekavian]=кримски татарски
Name[sr@ijekavianlatin]=krimski tatarski
Name[sr@latin]=krimski tatarski
Name[sv]=Krimtatariska
Name[ta]=கிரீமியன் டாடர்
Name[tg]=Тоторӣ
Name[th]=ภาษาทาทาร์
Name[tr]=Kırım Tatarcası
Name[ug]=قىرىم تاتارچە
Name[uk]=Кримсько-татарська
+Name[vi]=Crimean Tatar
Name[wa]=Tatår del Crimêye
Name[x-test]=xxCrimean Tatarxx
Name[zh_CN]=克里米亚鞑靼语
Name[zh_TW]=Crimean Tatar
[cs]
Name=Czech
Name[af]=Tsjeggië
Name[ar]=تشيكية
Name[as]=ছেক
Name[ast]=Checu
Name[be]=Чэшская
Name[be@latin]=Českaja
Name[bg]=Чешки
Name[bn]=চেক
Name[bn_IN]=চেক
Name[br]=Tchekeg
Name[bs]=Češki
Name[ca]=Txec
Name[ca@valencia]=Txec
Name[cs]=Český
Name[csb]=Czesczi
Name[cy]=Tsiec
Name[da]=Tjekkisk
Name[de]=Tschechisch
Name[el]=Τσέχικα
Name[en_GB]=Czech
Name[eo]=Ĉeĥa
Name[es]=Checo
Name[et]=Tšehhi
Name[eu]=Txekiera
Name[fa]=چک
Name[fi]=Tšekki
Name[fr]=Tchèque
Name[fy]=Tsjechysk
Name[ga]=Seicis
Name[gl]=Checo
Name[gu]=ચેક
Name[he]=צ'כית
Name[hi]=चेक
Name[hne]=चेक
Name[hr]=Češki
Name[hsb]=Čěsce
Name[hu]=Cseh
Name[ia]=Tchech
Name[id]=Ceko
Name[is]=Tékkneska
Name[it]=Ceco
Name[ja]=チェコ語
Name[kk]=Чехше
Name[km]=ឆេក
Name[kn]=ಚೆಕ್
Name[ko]=체코어
Name[ku]=Çekî
Name[lb]=Tschechesch
Name[lt]=Čekų
Name[lv]=Čehu
Name[mai]=चेक
Name[mk]=Чешки
Name[ml]=ചെക്ക്
Name[mr]=चेक
Name[ms]=Czech
Name[nb]=Tsjekkisk
Name[nds]=Tschechsch
Name[ne]=चेक
Name[nl]=Tsjechisch
Name[nn]=Tsjekkisk
Name[oc]=Chèc
Name[or]=Czech
Name[pa]=ਚੈੱਕ
Name[pl]=Czeski
Name[ps]=چېک
Name[pt]=Checo
Name[pt_BR]=Tcheco
Name[ro]=Cehă
Name[ru]=Чешский
Name[se]=Čehkagiella
Name[si]=චෙච්
Name[sk]=Čeština
Name[sl]=češko
Name[sq]=Çeke
Name[sr]=чешки
Name[sr@ijekavian]=чешки
Name[sr@ijekavianlatin]=češki
Name[sr@latin]=češki
Name[sv]=Tjeckiska
Name[ta]=செக்
Name[te]=చెక్
Name[tg]=Чехӣ
Name[th]=ภาษาเชค
Name[tr]=Çekçe
Name[ug]=چېخچە
Name[uk]=Чеська
Name[uz]=Chexcha
Name[uz@cyrillic]=Чехча
Name[vi]=Séc
Name[wa]=Tcheke
-Name[x-test]=xxCzechxx
Name[xh]=Czech
+Name[x-test]=xxCzechxx
Name[zh_CN]=捷克语
Name[zh_HK]=捷克語
Name[zh_TW]=捷克語
[csb]
Name=Kashubian
Name[af]=Kashubian
Name[ar]=لغة الكاشبيان
Name[as]=কাছুবিয়ান
Name[ast]=Kashubianu
Name[be@latin]=Kašubskaja
Name[bg]=Кашуби
Name[bn]=কাশুবিয়ান
Name[bn_IN]=কাশুবিয়ান
Name[bs]=Kašupski
Name[ca]=Caixubi
Name[ca@valencia]=Caixubi
Name[cs]=Kašubský
Name[csb]=Kaszëbsczi
Name[da]=Kashubiansk
Name[de]=Kaschubisch
Name[el]=Kασουβιανά
Name[en_GB]=Kashubian
Name[eo]=Kaŝuba
Name[es]=Casubio
Name[et]=Kašuubi
Name[eu]=Kaxubiera
Name[fi]=Kašubi
Name[fr]=Kachoube
Name[fy]=Kashubian
Name[ga]=Caisiúibis
Name[gl]=Kashubí
Name[gu]=કોસુબિન
Name[he]=קאשובית
Name[hi]=काशुबियन
Name[hne]=कासुबियन
Name[hr]=Kašupski
Name[hsb]=Kašubsce
Name[hu]=Kasub
Name[ia]=Kashubian
Name[id]=Kashubian
Name[is]=Kashubian
Name[it]=Casciubico
Name[ja]=カシューブ語
Name[kk]=Кашубша
Name[km]=កាស៊ូបៀន
Name[kn]=ಕಷುಬಿಯನ್
Name[ko]=카슈비아어
Name[ku]=Kaşûbî
Name[lt]=Kašubų
Name[lv]=Kašubāņu
Name[mai]=काशुबिनयन
Name[mk]=Кашубски
Name[ml]=കശൂബ്യന്‍
Name[mr]=कासुबियाई
Name[ms]=Kashubian
Name[nb]=Kasjubisk
Name[nds]=Kaschuubsch
Name[nl]=Kashubian
Name[nn]=Kasjubisk
Name[oc]=Kashbian
Name[or]=Kashubian
Name[pa]=ਕਾਸ਼ੂਬੀਅਨ
Name[pl]=Kaszubski
Name[ps]=کشوبي
Name[pt]=Kashubian
Name[pt_BR]=Cassúbia
Name[ro]=Kashubian
Name[ru]=Кашубский
Name[se]=Kašubiagiella
Name[si]=කෂුබියන්
Name[sk]=Kašubčina
Name[sl]=kašubijsko
Name[sq]=Kashubian
Name[sr]=кашупски
Name[sr@ijekavian]=кашупски
Name[sr@ijekavianlatin]=kašupski
Name[sr@latin]=kašupski
Name[sv]=Kasjubiska
Name[ta]=கஷுபியன்
Name[tg]=Кошубиянӣ
Name[th]=ภาษาคาชูเบียน
Name[tr]=Kashubian
Name[ug]=كاشۇبىچە
Name[uk]=Кашубська
+Name[vi]=Kashubian
Name[wa]=Cachoube
Name[x-test]=xxKashubianxx
Name[zh_CN]=卡舒比语
Name[zh_TW]=Kashubian
[cu]
Name=Church Slavic
Name[af]=Church Slavic
Name[ar]=سلافية الكنيسة
Name[as]=চাৰ্চ স্লাভিক
Name[ast]=Eslavu eclesiásticu
Name[be]=Царкоўна-славянская
Name[be@latin]=Carkoŭna-słavianskaja
Name[bg]=Църковнославянски
Name[bn]=চার্চ স্লাভিক
Name[bn_IN]=চার্চ স্লাভিক
Name[br]=Slaveg an iliz
Name[bs]=Crkvenoslavenski
Name[ca]=Eslau eclesiàstic
Name[ca@valencia]=Eslau eclesiàstic
Name[cs]=Staroslověnský
Name[csb]=Stôrôcerwiowò-słowiańsczi
Name[cy]=Slaveg Eglwysol
Name[da]=Kirkeslavisk
Name[de]=Kirchenslawisch
Name[el]=Εκκλησιαστικά Σλαβικά (Σλαβονικά)
Name[en_GB]=Church Slavic
Name[eo]=Eklezia Slava
Name[es]=Eslavo eclesiástico
Name[et]=Kirikuslaavi
Name[eu]=Church Eslaviera
Name[fa]=یوگوسلاویایی
Name[fi]=Kirkkoslaavi
Name[fr]=Vieux-slave liturgique
Name[fy]=Tsjerk-slavysk
Name[ga]=Slaivis Eaglaise
Name[gl]=Eslavo eclesiástico
Name[gu]=ચર્ચ સાલ્વિક
Name[he]=סלבית כנסייתית
Name[hi]=चर्च स्लाविक
Name[hne]=चर्च स्लाविक
Name[hr]=Crkveni pravoslavni
Name[hsb]=Cyrkwinosłowjansce
Name[hu]=Szláv (egyházi)
Name[ia]=Slavo Ecclesial
Name[id]=Church Slavic
Name[is]=Kirkju-slavneska
Name[it]=Slavo ecclesiastico
Name[ja]=教会スラブ語
Name[kk]=Шірке славянша
Name[km]=ឆឺច​ស្លាវិច
Name[kn]=ಚರ್ಚ್ ಸ್ಲಾವಿಕ್
Name[ko]=교회 슬라브어
Name[ku]=Slavikiya Kilîseyî
Name[lb]=Kiircheslawesch
Name[lt]=Bažnytinė slavų
Name[lv]=Slāvu baznīcas
Name[mai]=चर्च स्लाविक
Name[mk]=Црковнословенски
Name[ml]=ചര്‍ച്ച് സ്ലാവിക്
Name[mr]=चर्च स्लाविक
Name[ms]=Church Slavic
Name[nb]=Kirkeslavisk
Name[nds]=Ooltslaawsch
Name[ne]=चर्च स्लाभिक
Name[nl]=Kerk Slavisch
Name[nn]=Kyrkjeslavisk
Name[or]=Church Slavic
Name[pa]=ਚੂਰਚ ਸਲਾਵਿਨ
Name[pl]=Starocerkiewno-słowiański
Name[ps]=چرچ سلاويکي
Name[pt]=Igreja Eslava
Name[pt_BR]=Eslavo eclesiástico
Name[ro]=Slavă bisericească
Name[ru]=Церковнославянский
Name[se]=Slávagiella
Name[si]=චර්ච් ස්ලැවික්
Name[sk]=Cirkevná slovančina
Name[sl]=cerkvena slovanščina
Name[sq]=Sllave Kishtare
Name[sr]=црквенословенски
Name[sr@ijekavian]=црквенословенски
Name[sr@ijekavianlatin]=crkvenoslovenski
Name[sr@latin]=crkvenoslovenski
Name[sv]=Kyrkoslaviska
Name[ta]=சர்ச் ஸ்லாவிக்
Name[te]=చర్చి స్లావిక్
Name[tg]=Славянии динӣ
Name[th]=ภาษาเชิร์ชสลาฟ
Name[tr]=Church Slavic
Name[ug]=چېركاۋ سلاۋيانچە
Name[uk]=Церковнослов'янська
Name[uz]=Cherkov-slovyancha
Name[uz@cyrillic]=Черков-словянча
-Name[vi]=Xla-vơ nhà thơ
+Name[vi]=Nhà thờ Slavic
Name[wa]=Eslave d' eglijhe
-Name[x-test]=xxChurch Slavicxx
Name[xh]=Church Slavic
+Name[x-test]=xxChurch Slavicxx
Name[zh_CN]=古教会斯拉夫语
Name[zh_HK]=教堂斯拉夫語
Name[zh_TW]=教堂斯拉夫語
[cv]
Name=Chuvash
Name[af]=Chuvash
Name[ar]=شوفاش
Name[as]=ছুভাশ্ব
Name[ast]=Chuvash
Name[be]=Чувашская
Name[be@latin]=Čuvaskaja
Name[bg]=Чувашки
Name[bn]=চুভাশ
Name[bn_IN]=চুভাশ
Name[br]=Tchuvasheg
Name[bs]=Čuvaški
Name[ca]=Chuvash
Name[ca@valencia]=Chuvash
Name[cs]=Čuvašský
Name[csb]=Czuwasczi
Name[cy]=Chuvasheg
Name[da]=Chuvash
Name[de]=Tschuwaschisch
Name[el]=Chuvash
Name[en_GB]=Chuvash
Name[eo]=Ĉuvaŝa
Name[es]=Chuvasio
Name[et]=Tšuvaši
Name[eu]=Chuvash
Name[fa]=چواش
Name[fi]=Tšuvassi
Name[fr]=Tchouvache
Name[fy]=Chuvash
Name[ga]=Suvaisis
Name[gl]=Chuvash
Name[gu]=ચુવાસ
Name[he]=צ'ובשית
Name[hi]=चाउवेश
Name[hne]=चाउवेस
Name[hr]=Čuvaški
Name[hsb]=Čuwašisce
Name[hu]=Csuvas
Name[ia]=Chuvash
Name[id]=Chuvash
Name[is]=Chuvash
Name[it]=Ciuvascio
Name[ja]=チュワシュ語
Name[kk]=Шуашша
Name[km]=ចូវ៉ាស
Name[kn]=ಚುವಾಷ್
Name[ko]=추바시어
Name[ku]=Çuvaş
Name[lb]=Chuvas
Name[lt]=Čiuvašų
Name[lv]=Čuvašu
Name[mai]=चुवाश
Name[mk]=Чуваш
Name[ml]=ഷുവാഷ്
Name[mr]=चाउवेश
Name[ms]=Chuvash
Name[nb]=Chuvash
Name[nds]=Tschuwasch
Name[ne]=चुभास
Name[nl]=Chuvash
Name[nn]=Tsjuvasjisk
Name[oc]=Chuvash
Name[or]=Chuvash
Name[pa]=ਚੂਵਸ਼
Name[pl]=Czuwaski
Name[ps]=چووېش
Name[pt]=Chuvash
Name[pt_BR]=Tchuvache
Name[ro]=Ciuvașă
Name[ru]=Чувашский
Name[se]=Chuvashgiella
Name[si]=චුවෑෂ්
Name[sk]=Čuvaština
Name[sl]=chuvash
Name[sq]=Çuvashe
Name[sr]=чувашки
Name[sr@ijekavian]=чувашки
Name[sr@ijekavianlatin]=čuvaški
Name[sr@latin]=čuvaški
Name[sv]=Tjuvasjiska
Name[ta]=சுவாஷ்
Name[te]=చువాష్
Name[tg]=Чувашӣ
Name[th]=ภาษาชูวาช
Name[tr]=Çuvaşça
Name[ug]=چۇۋاشچە
Name[uk]=Чуваська
Name[uz]=Chuvashcha
Name[uz@cyrillic]=Чувашча
-Name[vi]=Chu-va-xợ
+Name[vi]=Chuvash
Name[wa]=Tchouvache
-Name[x-test]=xxChuvashxx
Name[xh]=Chuvash
+Name[x-test]=xxChuvashxx
Name[zh_CN]=楚瓦什语
Name[zh_HK]=楚瓦士語
Name[zh_TW]=楚瓦士語
[cy]
Name=Welsh
Name[af]=Wallies
Name[ar]=غالية
Name[as]=ৱেল্‌শ্ব
Name[ast]=Galés
Name[be]=Уэльская
Name[be@latin]=Valijskaja
Name[bg]=Уелски
Name[bn]=ওয়েল্‌শ
Name[bn_IN]=ওয়েলশ
Name[br]=Kembraeg
Name[bs]=Velški
Name[ca]=Gal·lès
Name[ca@valencia]=Gal·lès
Name[cs]=Welšský
Name[csb]=Walijsczi
Name[cy]=Cymraeg
Name[da]=Walisisk
Name[de]=Walisisch
Name[el]=Ουαλικά
Name[en_GB]=Welsh
Name[eo]=Kimra
Name[es]=Galés
Name[et]=Uelsi
Name[eu]=Galesa
Name[fa]=ولزی
Name[fi]=Kymri
Name[fr]=Gallois
Name[fy]=Welsk
Name[ga]=Breatnais
Name[gl]=Galés
Name[gu]=વેલ્સ
Name[he]=וולשית
Name[hi]=वेल्श
Name[hne]=वेल्स
Name[hr]=Velški
Name[hsb]=Kymrisce
Name[hu]=Velszi
Name[ia]=Gallese
Name[id]=Welsh
Name[is]=Velska
Name[it]=Gallese
Name[ja]=ウェールズ語
Name[kk]=Уэлсше
Name[km]=វែល
Name[kn]=ವೆಲ್ಷ್
Name[ko]=웨일스어
Name[ku]=Galî
Name[lb]=Walisesch
Name[lt]=Velsiečių
Name[lv]=Velsiešu
Name[mai]=वेल्श
Name[mk]=Велшки
Name[ml]=വെല്‍ഷ്
Name[mr]=वेल्श
Name[ms]=Wales
Name[nb]=Walisisk
Name[nds]=Waliessch
Name[ne]=वेल्स
Name[nl]=Welsh
Name[nn]=Walisisk
Name[oc]=Galés
Name[or]=Welsh
Name[pa]=ਵਾਲਿਸ਼
Name[pl]=Walijski
Name[ps]=وېلش
Name[pt]=Galês
Name[pt_BR]=Galês
Name[ro]=Velșă
Name[ru]=Валлийский
Name[se]=Walesagiella
Name[si]=වෙල්ෂ්
Name[sk]=Waleština
Name[sl]=valižansko
Name[sq]=Uellsiane
Name[sr]=велшки
Name[sr@ijekavian]=велшки
Name[sr@ijekavianlatin]=velški
Name[sr@latin]=velški
Name[sv]=Walesiska
Name[ta]=வெல்ஷ்
Name[te]=వెల్ష్
Name[tg]=Уэлсӣ
Name[th]=ภาษาเวลช์
Name[tr]=Gallerce
-Name[ug]=ۋېلشچە
+Name[ug]=ۋېلىشچە
Name[uk]=Уельська
Name[uz]=Uelscha
Name[uz@cyrillic]=Уэлсча
-Name[vi]=Ouen-x
+Name[vi]=Welsh
Name[wa]=Walès
-Name[x-test]=xxWelshxx
Name[xh]=Welsh
+Name[x-test]=xxWelshxx
Name[zh_CN]=威尔士语
Name[zh_HK]=威爾斯語
Name[zh_TW]=威爾斯語
[da]
Name=Danish
Name[af]=Deens
Name[ar]=دنماركية
Name[as]=ডেনিশ্ব
Name[ast]=Danés
Name[be]=Дацкая
Name[be@latin]=Dackaja
Name[bg]=Датски
Name[bn]=ড্যানিশ
Name[bn_IN]=ডেনিশ
Name[br]=Daneg
Name[bs]=Danski
Name[ca]=Danès
Name[ca@valencia]=Danés
Name[cs]=Dánský
Name[csb]=Dëńsczi
Name[cy]=Daneg
Name[da]=Dansk
Name[de]=Dänisch
Name[el]=Δανέζικα
Name[en_GB]=Danish
Name[eo]=Dana
Name[es]=Danés
Name[et]=Taani
Name[eu]=Daniera
Name[fa]=دانمارکی
Name[fi]=Tanska
Name[fr]=Danois
Name[fy]=Deensk
Name[ga]=Danmhairgis
Name[gl]=Dinamarqués
Name[gu]=ડેનિશ
Name[he]=דנית
Name[hi]=दानिश
Name[hne]=दानिस
Name[hr]=Danski
Name[hsb]=Dansce
Name[hu]=Dán
Name[ia]=Danese
Name[id]=Denmark
Name[is]=Danska
Name[it]=Danese
Name[ja]=デンマーク語
Name[kk]=Датша
Name[km]=ដាណឺម៉ាក
Name[kn]=ಡ್ಯಾನಿಷ್
Name[ko]=덴마크어
Name[ku]=Danmarkî
Name[lb]=Dänesch
Name[lt]=Danų
Name[lv]=Dāņu
Name[mai]=डैनिश
Name[mk]=Дански
Name[ml]=ഡാനിഷ്
Name[mr]=दानिश
Name[ms]=Danish
Name[nb]=Dansk
Name[nds]=Däänsch
Name[ne]=डेनिश
Name[nl]=Deens
Name[nn]=Dansk
Name[oc]=Danés
Name[or]=Danish
Name[pa]=ਡੈਨਿਸ਼
Name[pl]=Duński
Name[ps]=ډېنېش
Name[pt]=Dinamarquês
Name[pt_BR]=Dinamarquês
Name[ro]=Daneză
Name[ru]=Датский
Name[se]=Dánskkagiella
Name[si]=ඩැනිෂ්
Name[sk]=Dánčina
Name[sl]=dansko
Name[sq]=Daneze
Name[sr]=дански
Name[sr@ijekavian]=дански
Name[sr@ijekavianlatin]=danski
Name[sr@latin]=danski
Name[sv]=Danska
Name[ta]=டேனிஷ்
Name[te]=డెనిష్
Name[tg]=Даниявӣ
Name[th]=ภาษาเดนมาร์ค
Name[tr]=Danimarka Dili
Name[ug]=دانىشچە
Name[uk]=Данська
Name[uz]=Daniyacha
Name[uz@cyrillic]=Данияча
-Name[vi]=Đan-mạch
+Name[vi]=Đan Mạch
Name[wa]=Daenwès
-Name[x-test]=xxDanishxx
Name[xh]=Danish
+Name[x-test]=xxDanishxx
Name[zh_CN]=丹麦语
Name[zh_HK]=丹麥語
Name[zh_TW]=丹麥語
[de]
Name=German
Name[af]=Duits
Name[ar]=ألمانية
Name[as]=জাৰ্মান
Name[ast]=Alemán
Name[be]=Нямецкая
Name[be@latin]=Niamieckaja
Name[bg]=Немски
Name[bn]=জার্মান
Name[bn_IN]=জার্মান
Name[br]=Alamaneg
Name[bs]=Njemački
Name[ca]=Alemany
Name[ca@valencia]=Alemany
Name[cs]=Německý
Name[csb]=Miemiecczi
Name[cy]=Almaeneg
Name[da]=Tysk
Name[de]=Deutsch
Name[el]=Γερμανικά
Name[en_GB]=German
Name[eo]=Germana
Name[es]=Alemán
Name[et]=Saksa
Name[eu]=Alemaniera
Name[fa]=آلمانی
Name[fi]=Saksa
Name[fr]=Allemand
Name[fy]=Dútsk
Name[ga]=Gearmáinis
Name[gl]=Alemán
Name[gu]=જર્મન
Name[he]=גרמנית
Name[hi]=जर्मन
Name[hne]=जर्मन
Name[hr]=Njemački
Name[hsb]=Němsce
Name[hu]=Német
Name[hy]=Գերմաներեն
Name[ia]=Germano
Name[id]=Jerman
Name[is]=Þýska
Name[it]=Tedesco
Name[ja]=ドイツ語
Name[kk]=Немісше
Name[km]=អាល្លឺម៉ង់
Name[kn]=ಜರ್ಮನ್
Name[ko]=독일어
Name[ku]=Almanî
Name[lb]=Däitsch
Name[lt]=Vokiečių
Name[lv]=Vācu
Name[mai]=जर्मन
Name[mk]=Германски
Name[ml]=ജര്‍മ്മന്‍
Name[mr]=जर्मन
Name[ms]=Jerman
Name[nb]=Tysk
Name[nds]=Hoochdüütsch
Name[ne]=जर्मन
Name[nl]=Duits
Name[nn]=Tysk
Name[oc]=Aleman
Name[or]=German
Name[pa]=ਜਰਮਨ
Name[pl]=Niemiecki
Name[ps]=جرمن
Name[pt]=Alemão
Name[pt_BR]=Alemão
Name[ro]=Germană
Name[ru]=Немецкий
Name[se]=Duiskkagiella
Name[si]=ජර්මානු
Name[sk]=Nemčina
Name[sl]=nemško
Name[sq]=Gjermane
Name[sr]=немачки
Name[sr@ijekavian]=њемачки
Name[sr@ijekavianlatin]=njemački
Name[sr@latin]=nemački
Name[sv]=Tyska
Name[ta]=ஜெர்மன்
Name[te]=జెర్మన్
Name[tg]=Немисӣ
Name[th]=ภาษาเยอรมัน
Name[tr]=Almanca
Name[ug]=گېرمانچە
Name[uk]=Німецька
Name[uz]=Olmoncha
Name[uz@cyrillic]=Олмонча
Name[vi]=Đức
Name[wa]=Almand
-Name[x-test]=xxGermanxx
Name[xh]=Isijamani
+Name[x-test]=xxGermanxx
Name[zh_CN]=德语
Name[zh_HK]=德語
Name[zh_TW]=德語
[dsb]
Name=Lower Sorbian
Name[ar]=صوربية منخفضة
Name[as]=লোৱাৰ ছৰ্বিয়ান
Name[ast]=Baxu Sorbiu
Name[be@latin]=Nižnie-łužyckaja
Name[bg]=Долносорбийски
Name[bn]=নিম্ন সার্বীয়
Name[bn_IN]=লোয়ার সোর্বিয়ান
Name[bs]=Donjolužičkosrpski
Name[ca]=Baix sòrab
Name[ca@valencia]=Baix sòrab
Name[cs]=Dolnolužicko srbský
Name[csb]=Dolnosorbsczi
Name[da]=Nedre sorbisk
Name[de]=Niedersorbisch
Name[el]=Κάτω Σορβικά
Name[en_GB]=Lower Sorbian
Name[eo]=Malsuprasoraba
Name[es]=Bajo sorabo
Name[et]=Alamsorbi
Name[eu]=Behe Serbiera
+Name[fa]=صربی پایینی
Name[fi]=Alasorbi
Name[fr]=Bas-Sorabe
Name[fy]=Leech Sorbysk
Name[ga]=Sorbais Íochtarach
Name[gl]=Baixo sórabo
Name[gu]=લોઅર સોર્બિયન
Name[he]=סורבית תחתית
Name[hi]=निचला सॉर्बियाई
Name[hne]=लोअर सार्बियाई
Name[hr]=Donjesrpski
Name[hu]=Alsó szorb
Name[ia]=Alto Sorbiano
Name[id]=Sorbian Bawah
Name[is]=Lág-sorbian
Name[it]=Basso sorabo
Name[ja]=下ソルブ語
Name[kk]=Төменгі сорбше
Name[km]=សូបៀន ក្រោម
Name[kn]=ಕೆಳಗಿಲಿನ ಸೋರ್ಬಿಯನ್
Name[ko]=저지대 소르비아어
Name[ku]=Sorbiya Jêrîn
Name[lt]=Lower Sorbian
Name[lv]=Apakšsorbu
Name[mai]=नीच्चाँक सोर्बियन
Name[ml]=ലോവര്‍ സോര്‍ബിയന്‍
Name[ms]=Lower Sorbian
Name[nb]=Nedresorbisk
Name[nds]=Neddersorbsch
Name[nl]=Nedersorbisch
Name[nn]=Lågsorbisk
Name[pa]=ਲੋਅਰ ਸਰਬੀਆਈ
Name[pl]=Dolnołużycki
Name[pt]=Sérvio de Baixo
Name[pt_BR]=Baixo Sorábio
Name[ro]=Sîrbă de Jos
Name[ru]=Нижнелужицкий
Name[se]=Vuolle Sorbiagiella
Name[si]=පහළ සෝබියානු
Name[sk]=Dolnolužická srbčina
Name[sl]=Zgornjesorbijsko
Name[sq]=Sorbiane e Ulët
Name[sr]=доњолужичкосрпски
Name[sr@ijekavian]=доњолужичкосрпски
Name[sr@ijekavianlatin]=donjolužičkosrpski
Name[sr@latin]=donjolužičkosrpski
Name[sv]=Lågsorbiska
Name[ta]=சொர்பியன் சிற்றெழுத்து
Name[tg]=Сербияи Поён
Name[th]=ภาษาซอร์เบียนตอนล่าง
Name[tr]=Aşağı Sırpça
Name[ug]=تۆۋەن سوربىيانچە
Name[uk]=Нижньолужицька
+Name[vi]=Lower Sorbian
Name[wa]=Bas sorbyin
Name[x-test]=xxLower Sorbianxx
Name[zh_CN]=下索布语
Name[zh_TW]=下塞爾維亞語
[dz]
Name=Dzongkha
Name[af]=Dzongkha
Name[ar]=جونغا
Name[as]=জঙ্কা
Name[ast]=Dzongkha
Name[be]=Цонга
Name[be@latin]=Dzongkha
Name[bg]=Джонкгха
Name[bn]=জঙখা
Name[bn_IN]=জোংগা
Name[br]=Dzongkha
Name[bs]=Džongka
Name[ca]=Dzongkha
Name[ca@valencia]=Dzongkha
Name[cs]=Dzongkha
Name[csb]=Dzongkha
Name[cy]=Dzongkhaeg
Name[da]=Dzongkha
Name[de]=Dzongkha
Name[el]=Dzongkha
Name[en_GB]=Dzongkha
Name[eo]=Dzonka
Name[es]=Dzongkha
Name[et]=Dzongkha
Name[eu]=Dzongkha
Name[fa]=زونگخا
Name[fi]=Dzongkha
Name[fr]=Dzongkha
Name[fy]=Dzongkha
Name[ga]=Dzongkha
Name[gl]=Dzongca
Name[gu]=ઝોન્ખા
Name[he]=ג'ונקה
Name[hi]=झोंखा
Name[hne]=झोंखा
Name[hr]=Dzongkha
Name[hsb]=Dzongkhisce
Name[hu]=Dzongkha
Name[ia]=Dzongkha
Name[id]=Dzongkha
Name[is]=Dzongkha
Name[it]=Dzongkha
Name[ja]=ゾンカ語
Name[kk]=(Дзонгха) Бутанша
Name[km]=ដុងហ្កា
Name[kn]=ಡ್ಸೋಂಖಾ
Name[ko]=존카어
Name[ku]=Dzongxa
Name[lb]=Dzongkha
Name[lt]=Dzongkha
Name[lv]=Dzongke
Name[mai]=ड्जोंग्खा
Name[mk]=Џонгха
Name[ml]=സോങ്കാ
Name[mr]=झोंखा
Name[ms]=Dzongkha
Name[nb]=Dzongkha
Name[nds]=Dzongkha
Name[ne]=जोङ्खा
Name[nl]=Dzongkha
Name[nn]=Dzongkha
Name[oc]=Dzongkha
Name[or]=Dzongkha
Name[pa]=ਡਜ਼ੋਨਗਖਾ
Name[pl]=Dzongkha
Name[pt]=Dzongkha
Name[pt_BR]=Dzongkha
Name[ro]=Dzongkha
Name[ru]=Дзонгка (Бутан)
Name[se]=Dzongkhagiella
Name[si]=සොංඛා
Name[sk]=Dzongkä
Name[sl]=dzonkha
Name[sq]=Xonga
Name[sr]=џонка
Name[sr@ijekavian]=џонка
Name[sr@ijekavianlatin]=džonka
Name[sr@latin]=džonka
Name[sv]=Dzongkha
Name[ta]=டிசொங்க்ஹா
Name[te]=జొంగ్ఖ
Name[tg]=Дзонгка
Name[th]=ภาษาจงข่า
Name[tr]=Dzongkha
Name[ug]=بۇتانچە
Name[uk]=Дзонг-ке
Name[uz]=Dzongxa
Name[uz@cyrillic]=Дзонгха
-Name[vi]=Đ-xong-kha
+Name[vi]=Dzongkha
Name[wa]=Boutanès
-Name[x-test]=xxDzongkhaxx
Name[xh]=Dzongkha
+Name[x-test]=xxDzongkhaxx
Name[zh_CN]=不丹语
Name[zh_HK]=Dzongkha語
Name[zh_TW]=Dzongkha語
[el]
Name=Greek
Name[af]=Grieks
Name[ar]=يونانية
Name[as]=গ্ৰীক
Name[ast]=Griegu
Name[be]=Грэцкая
Name[be@latin]=Hreckaja
Name[bg]=Гръцки
Name[bn]=গ্রীক
Name[bn_IN]=গ্রিক
Name[br]=Gresianeg
Name[bs]=Grčki
Name[ca]=Grec
Name[ca@valencia]=Grec
Name[cs]=Řecký
Name[csb]=Grecczi
Name[cy]=Groeg
Name[da]=Græsk
Name[de]=Griechisch
Name[el]=Ελληνικά
Name[en_GB]=Greek
Name[eo]=Greka
Name[es]=Griego
Name[et]=Kreeka
Name[eu]=Grekoa
Name[fa]=یونانی
Name[fi]=Kreikka
Name[fr]=Grec
Name[fy]=Gryks
Name[ga]=Gréigis
Name[gl]=Grego
Name[gu]=ગ્રીક
Name[he]=יוונית
Name[hi]=यूनानी
Name[hne]=यूनानी
Name[hr]=Grčki
Name[hsb]=Grjeksce
Name[hu]=Görög
Name[hy]=Հուներեն
Name[ia]=Greco
Name[id]=Yunani
Name[is]=Gríska
Name[it]=Greco
Name[ja]=ギリシャ語
Name[kk]=Грекше
Name[km]=ក្រិក
Name[kn]=ಗ್ರೀಕ್
Name[ko]=그리스어
Name[ku]=Yewnanî
Name[lb]=Griichesch
Name[lt]=Graikų
Name[lv]=Grieķu
Name[mai]=ग्रीक
Name[mk]=Грчки
Name[ml]=ഗ്രീക്ക്
Name[mr]=ग्रीक
Name[ms]=Greek
Name[nb]=Gresk
Name[nds]=Greeksch
Name[ne]=ग्रीक
Name[nl]=Grieks
Name[nn]=Gresk
Name[oc]=Grèc
Name[or]=Greek
Name[pa]=ਗਰੀਕ
Name[pl]=Grecki
Name[ps]=يوناني
Name[pt]=Grego
Name[pt_BR]=Grego
Name[ro]=Greacă
Name[ru]=Греческий
Name[se]=Greikkagiella
Name[si]=ග්‍රීක
Name[sk]=Gréčtina
Name[sl]=grško
Name[sq]=Greke
Name[sr]=грчки
Name[sr@ijekavian]=грчки
Name[sr@ijekavianlatin]=grčki
Name[sr@latin]=grčki
Name[sv]=Grekiska
Name[ta]=கிரேக்கம்
Name[te]=గ్రీక్
Name[tg]=Юнонӣ
Name[th]=ภาษากรีก
Name[tr]=Yunanca
Name[ug]=گىرېكچە
Name[uk]=Грецька
Name[uz]=Yunoncha
Name[uz@cyrillic]=Юнонча
-Name[vi]=Hy-lạp
+Name[vi]=Hy Lạp
Name[wa]=Grek
-Name[x-test]=xxGreekxx
Name[xh]=isigrike
+Name[x-test]=xxGreekxx
Name[zh_CN]=希腊语
Name[zh_HK]=希臘語
Name[zh_TW]=希臘語
[en]
Name=English
Name[af]=Engels
Name[ar]=إنجليزية
Name[as]=ইংৰাজী
Name[ast]=Inglés
Name[be]=Англійская
Name[be@latin]=Anhielskaja
Name[bg]=Английски
Name[bn]=ইংরেজ
Name[bn_IN]=ইংরেজি
Name[br]=Saozneg
Name[bs]=Engleski
Name[ca]=Anglès
Name[ca@valencia]=Anglés
Name[cs]=Anglický
Name[csb]=Anielsczi
Name[cy]=Saesneg
Name[da]=Engelsk
Name[de]=Englisch
Name[el]=Αγγλικά
Name[en_GB]=English
Name[eo]=Angla
Name[es]=Inglés
Name[et]=Inglise
Name[eu]=Ingelesa
Name[fa]=انگلیسی
Name[fi]=Englanti
Name[fr]=Anglais
Name[fy]=Ingelsk
Name[ga]=Béarla
Name[gl]=Inglés
Name[gu]=અંગ્રેજી
Name[he]=אנגלית
Name[hi]=अंग्रेज़ी
Name[hne]=अंगरेजी
Name[hr]=Engleski
Name[hsb]=Jendźelsce
Name[hu]=Angol
Name[hy]=Անգլերեն
Name[ia]=Anglese
Name[id]=Inggris
Name[is]=Enska
Name[it]=Inglese
Name[ja]=英語
Name[kk]=Ағылшынша
Name[km]=អង់គ្លេស
Name[kn]=ಇಂಗ್ಲೀಷ್
Name[ko]=영어
Name[ku]=Îngilîzî
Name[lb]=Englesch
Name[lt]=Anglų
Name[lv]=Angļu
Name[mai]=अंग्रेजी
Name[mk]=Англиски
Name[ml]=ഇംഗ്ലീഷ്
Name[mr]=अंग्रेज़ी
Name[ms]=Inggeris
Name[nb]=Engelsk
Name[nds]=Engelsch
Name[ne]=अङ्ग्रेजी
Name[nl]=Engels
Name[nn]=Engelsk
Name[oc]=Anglés
Name[or]=English
Name[pa]=ਅੰਗਰੇਜ਼ੀ
Name[pl]=Angielski
Name[ps]=انګريزي
Name[pt]=Inglês
Name[pt_BR]=Inglês
Name[ro]=Engleză
Name[ru]=Английский
Name[se]=Eŋgelasgiella
Name[si]=ඉංග්‍රීසි
Name[sk]=Angličtina
Name[sl]=angleško
Name[sq]=Anglisht
Name[sr]=енглески
Name[sr@ijekavian]=енглески
Name[sr@ijekavianlatin]=engleski
Name[sr@latin]=engleski
Name[sv]=Engelska
Name[ta]=ஆங்கிலம்
Name[te]=ఆంగ్లం
Name[tg]=Англисӣ
Name[th]=ภาษาอังกฤษ
Name[tr]=İngilizce
Name[ug]=ئىنگلىزچە
Name[uk]=Англійська
Name[uz]=Inglizcha
Name[uz@cyrillic]=Инглизча
Name[vi]=Anh
Name[wa]=Inglès
-Name[x-test]=xxEnglishxx
Name[xh]=Isingesi
+Name[x-test]=xxEnglishxx
Name[zh_CN]=英语
Name[zh_HK]=英語
Name[zh_TW]=英語
[en_GB]
Name=British English
Name[af]=Britse Engels
Name[ar]=إنجليزية بريطانية
Name[as]=বিটিশ্ব ইংৰাজী
Name[ast]=Inglés Británicu
Name[be]=Англійская брытанская
Name[be@latin]=Brytanskaja anhielskaja
Name[bg]=Британски английски
Name[bn]=বৃটিশ ইংরেজি
Name[bn_IN]=ব্রিটিশ ইংরাজি
Name[br]=Saozneg eus Bro Saoz
Name[bs]=Engleski(Britanski)
Name[ca]=Anglès britànic
Name[ca@valencia]=Anglés britànic
Name[cs]=Britská angličtina
Name[csb]=Britijsczi anielsczi
Name[cy]=Saesneg Prydain
Name[da]=Britisk engelsk
Name[de]=Englisch (UK)
Name[el]=Αγγλικά (Μ. Βρετανίας)
Name[en_GB]=British English
Name[eo]=Angla (Brita)
Name[es]=Inglés británico
Name[et]=Briti inglise
Name[eu]=Ingelesa (britainiarra)
Name[fa]=انگلیسی بریتانیایی
Name[fi]=Britannianenglanti
Name[fr]=Anglais britannique
Name[fy]=Britsk Ingelsk
Name[ga]=Béarla na Breataine
Name[gl]=Inglés británico
Name[gu]=બ્રિટિશ અંગ્રેજી
Name[he]=אנגלית בריטית
Name[hi]=ब्रितानी अंग्रेज़ी
Name[hne]=ब्रितानी अंगरेजी
Name[hr]=Britanski Engleski
Name[hsb]=Jendźelsce (WB)
Name[hu]=Angol (brit)
Name[hy]=Բրիտանական Անգլերեն
Name[ia]=Anglese Britannic
Name[id]=Inggris Britania
Name[is]=Bresk enska
Name[it]=Inglese britannico
Name[ja]=イギリス英語
Name[kk]=Британдық ағылшынша
Name[km]=អង់គ្លេស (អង់គ្លេស)
Name[kn]=ಬ್ರಿಟಿಷ್ ಇಂಗ್ಲಿಷ್
Name[ko]=영국 영어
Name[ku]=Îngilîziya Brîtanyayê
Name[lb]=Britescht Englesch
Name[lt]=Anglų (D.Britanijos)
Name[lv]=Britu angļu
Name[mai]=ब्रिटिश अंग्रेजी
Name[mk]=Англиски (британски)
Name[ml]=ബ്രിട്ടീഷ് ഇംഗ്ലീഷ്
Name[mr]=ब्रितानी अंग्रेज़ी
Name[ms]=British English
Name[nb]=Britisk engelsk
Name[nds]=Britsch Engelsch
Name[ne]=बेलायती अङ्ग्रेजी
Name[nl]=Engels (Brits)
Name[nn]=Engelsk (Storbritannia)
Name[oc]=Anglés britanic
Name[or]=British English
Name[pa]=ਅੰਗਰੇਜ਼ੀ ਬਰਤਾਨੀਆ
Name[pl]=Angielski brytyjski
Name[ps]=برېټانوي انګريزي
Name[pt]=Inglês da Grã-Bretanha
Name[pt_BR]=Inglês Britânico
Name[ro]=Engleză britanică
Name[ru]=Английский (Великобритания)
Name[se]=Eŋgelasgiella (Stuorra Brittania)
Name[si]=බ්‍රිතාන්‍ය ඉංග්‍රීසි
Name[sk]=Britská angličtina
Name[sl]=britansko angleško
Name[sq]=Anglishte Britanike
Name[sr]=британски енглески
Name[sr@ijekavian]=британски енглески
Name[sr@ijekavianlatin]=britanski engleski
Name[sr@latin]=britanski engleski
Name[sv]=Brittisk engelska
Name[ta]=பிரிட்டிஷ் ஆங்கிலம்
Name[te]=బ్రిటిష్ ఆంగ్లం
Name[tg]=Англисӣ (Бритонӣ)
Name[th]=ภาษาอังกฤษ บริติช
Name[tr]=İngiliz İngilizcesi
Name[ug]=ئەنگلىيە ئىنگلىزچە
Name[uk]=Англійська (Великобританія)
Name[uz]=Inglizcha (Angliya)
Name[uz@cyrillic]=Инглизча (Англия)
-Name[vi]=Anh (quốc Anh)
+Name[vi]=Vương quốc Anh
Name[wa]=Inglès britanike
Name[x-test]=xxBritish Englishxx
Name[zh_CN]=英国英语
Name[zh_HK]=英式英語
Name[zh_TW]=(英式)英語
[en_US]
Name=American English
Name[af]=Amerikaanse Engels
Name[ar]=إنجليزية أمريكية
Name[as]=আমেৰিকান ইংৰাজী
Name[ast]=nglés americanu
Name[be]=Англійская амерыканская
Name[be@latin]=Amerykanskaja anhielskaja
Name[bg]=Американски английски
Name[bn]=মার্কিন ইংরেজি
Name[bn_IN]=আমেরিকান ইংরেজি
Name[br]=Saozneg eus SUA
Name[bs]=Engleski(Američki)
Name[ca]=Anglès americà
Name[ca@valencia]=Anglés americà
Name[cs]=Americká angličtina
Name[csb]=Amerikańsczi anielsczi
Name[da]=Amerikansk engelsk
Name[de]=Englisch (US)
Name[el]=Αγγλικά (Αμερικής)
Name[en_GB]=American English
Name[eo]=Angla (Usona)
Name[es]=Inglés americano
Name[et]=Ameerika inglise
Name[eu]=Ingelesa (amerikarra)
Name[fa]=انگلیسی امریکایی
Name[fi]=Amerikanenglanti
Name[fr]=Anglais américain
Name[fy]=Amerikaansk Ingelsk
Name[ga]=Béarla Mheiriceá
Name[gl]=Inglés americano
Name[gu]=અમેરિકન અંગ્રેજી
Name[he]=אנגלית ארה"ב
Name[hi]=अमरीकी अंग्रेज़ी
Name[hne]=अमरीकी अंगरेजी
Name[hr]=Američki Engleski
Name[hsb]=Jendźelsce (USA)
Name[hu]=Angol (amerikai)
Name[hy]=Ամերիկյան Անգլերեն
Name[ia]=Anglese Americano
Name[id]=Inggris Amerika
Name[is]=Bandarísk enska
Name[it]=Inglese americano
Name[ja]=アメリカ英語
Name[kk]=Американдық ағылшынша
Name[km]=អង់គ្លេស អាមេរិក
Name[kn]=ಅಮೆರಿಕನ್ ಇಂಗ್ಲೀಷ್
Name[ko]=미국 영어
Name[ku]=Îngilîziya Amerîkayî
Name[lb]=Amerikanescht Englesch
Name[lt]=Anglų (JAV)
Name[lv]=Amerikāņu angļu
Name[mai]=अमरीकी अंग्रेजी
Name[mk]=Англиски (американски)
Name[ml]=അമേരിക്കന്‍ ഇംഗ്ലീഷ്
Name[mr]=अमेरिकन इंग्लिश
Name[ms]=American English
Name[nb]=Amerikansk engelsk
Name[nds]=Amerikaansch Engelsch
Name[ne]=अमेरेकी अङ्ग्रेजी
Name[nl]=Engels (Amerikaans)
Name[nn]=Engelsk (USA)
Name[oc]=Anglés american
Name[or]=American English
Name[pa]=ਅੰਗਰੇਜ਼ੀ ਅਮਰੀਕੀ
Name[pl]=Angielski amerykański
Name[ps]=امريکايي انګريزي
Name[pt]=Inglês Americano
Name[pt_BR]=Inglês Americano
Name[ro]=Engleză americană
Name[ru]=Английский (США)
Name[se]=Eŋgelasgiella (Amerihkáhlaš)
Name[si]=ඇමරිකානු ඉංග්‍රීසි
Name[sk]=Americká angličtina
Name[sl]=ameriško angleško
Name[sq]=Anglishte Amerikane
Name[sr]=амерички енглески
Name[sr@ijekavian]=амерички енглески
Name[sr@ijekavianlatin]=američki engleski
Name[sr@latin]=američki engleski
Name[sv]=Amerikansk engelska
Name[ta]=அமெரிக்கன் ஆங்கிலம்
Name[te]=అమెరికన్ ఆంగ్లం
Name[tg]=Англисӣ (Амрикоӣ)
Name[th]=ภาษาอังกฤษ อเมริกัน
Name[tr]=Amerikan İngilizcesi
Name[ug]=ئامېرىكا ئىنگلىزچە
Name[uk]=Англійська (США)
Name[uz]=Inglizcha (AQSH)
Name[uz@cyrillic]=Инглизча (АҚШ)
Name[vi]=Anh (Mỹ)
Name[wa]=Inglès des Estats-Unis
Name[x-test]=xxAmerican Englishxx
Name[zh_CN]=美国英语
Name[zh_HK]=美式英語
Name[zh_TW]=美語
[eo]
Name=Esperanto
Name[af]=Esperanto
Name[ar]=إسبرانتو
Name[as]=এস্পেৰান্টো
Name[ast]=Esperanto
Name[be]=Эсперанта
Name[be@latin]=Esperanta
Name[bg]=Есперанто
Name[bn]=এস্পারান্তো
Name[bn_IN]=এসপারান্তো
Name[br]=Esperanteg
Name[bs]=Esperanto
Name[ca]=Esperanto
Name[ca@valencia]=Esperanto
Name[cs]=Esperanto
Name[csb]=Esperanto
Name[cy]=Esperanto
Name[da]=Esperanto
Name[de]=Esperanto
Name[el]=Εσπεράντο
Name[en_GB]=Esperanto
Name[eo]=Esperanto
Name[es]=Esperanto
Name[et]=Esperanto
Name[eu]=Esperantoa
Name[fa]=اسپرانتور
Name[fi]=Esperanto
Name[fr]=Espéranto
Name[fy]=Esperanto
Name[ga]=Esperanto
Name[gl]=Esperanto
Name[gu]=એસ્પ્રાન્ટો
Name[he]=אספרנטו
Name[hi]=एस्परेन्तो
Name[hne]=एस्परेन्तो
Name[hr]=Esperanto
Name[hsb]=Esperantisce
Name[hu]=Eszperantó
Name[hy]=Էսպերանտո
Name[ia]=Esperanto
Name[id]=Esperanto
Name[is]=Esperanto
Name[it]=Esperanto
Name[ja]=エスペラント語
Name[kk]=Эсперанто
Name[km]=អេស្ពេរ៉ាន់តូ
Name[kn]=ಎಸ್ಪರಾನ್ಟೊ
Name[ko]=에스페란토
Name[ku]=Esperanto
Name[lb]=Esperanto
Name[lt]=Esperanto
Name[lv]=Esperanto
Name[mai]=एस्पेरांटो
Name[mk]=Есперанто
Name[ml]=എസ്പരാണ്ടോ
Name[mr]=एस्परेन्तो
Name[ms]=Esperanto
Name[nb]=Esperanto
Name[nds]=Esperanto
Name[ne]=इस्पेरान्तो
Name[nl]=Esperanto
Name[nn]=Esperanto
Name[oc]=Esperanto
Name[or]=Esperanto
Name[pa]=ਇਸਪੀਰਨਟੋ
Name[pl]=Esperanto
Name[ps]=اېسپېرېنټو
Name[pt]=Esperanto
Name[pt_BR]=Esperanto
Name[ro]=Esperanto
Name[ru]=Эсперанто
Name[se]=Esperanto
Name[si]=එස්පෙරැන්ටෝ
Name[sk]=Esperanto
Name[sl]=esperanto
Name[sq]=Esperanto
Name[sr]=есперанто
Name[sr@ijekavian]=есперанто
Name[sr@ijekavianlatin]=esperanto
Name[sr@latin]=esperanto
Name[sv]=Esperanto
Name[ta]=எஸ்பரான்டோ
Name[te]=ఎస్పరాన్టొ
Name[tg]=Эсперанто
Name[th]=ภาษาเอสเปอร์รันโต
Name[tr]=Esperanto
Name[ug]=ئېسپېرانتو (دۇنيا تىلى)
Name[uk]=Есперанто
Name[uz]=Esperanto
Name[uz@cyrillic]=Эсперанто
-Name[vi]=Ét-pe-ran-tô
+Name[vi]=Esperanto
Name[wa]=Esperanto
-Name[x-test]=xxEsperantoxx
Name[xh]=Esperanto
+Name[x-test]=xxEsperantoxx
Name[zh_CN]=世界语
Name[zh_HK]=世界語
Name[zh_TW]=世界語
[es]
Name=Spanish
Name[af]=Spaans
Name[ar]=إسبانية
Name[as]=স্পেনিশ্ব
Name[ast]=Castellanu
Name[be]=Іспанская
Name[be@latin]=Hišpanskaja
Name[bg]=Испански
Name[bn]=স্প্যানিশ
Name[bn_IN]=স্প্যানিশ
Name[br]=Spagnoleg
Name[bs]=Španski
Name[ca]=Espanyol
Name[ca@valencia]=Espanyol
Name[cs]=Španělský
Name[csb]=Szpańsczi
Name[cy]=Sbaeneg
Name[da]=Spansk
Name[de]=Spanisch
Name[el]=Ισπανικά
Name[en_GB]=Spanish
Name[eo]=Hispana
Name[es]=Español
Name[et]=Hispaania
Name[eu]=Gaztelera
Name[fa]=اسپانیایی
Name[fi]=Espanja
Name[fr]=Espagnol
Name[fy]=Spaansk
Name[ga]=Spáinnis
Name[gl]=Castelán
Name[gu]=સ્પેનીશ
Name[he]=ספרדית
Name[hi]=स्पेनी
Name[hne]=स्पेनी
Name[hr]=Španjolski
Name[hsb]=Španisce
Name[hu]=Spanyol
Name[hy]=Իսպաներեն
Name[ia]=Espaniol
Name[id]=Spanyol
Name[is]=Spánska
Name[it]=Spagnolo
Name[ja]=スペイン語
Name[kk]=Испанша
Name[km]=អេស្ប៉ាញ
Name[kn]=ಸ್ಪ್ಯಾನಿಷ್
Name[ko]=스페인어
Name[ku]=Spanî
Name[lb]=Spuenesch
Name[lt]=Ispanų
Name[lv]=Spāņu
Name[mai]=स्पेनी
Name[mk]=Шпански
Name[ml]=സ്പാനിഷ്
Name[mr]=स्पॅनिश
Name[ms]=Sepanyol
Name[nb]=Spansk
Name[nds]=Spaansch
Name[ne]=स्पेनिश
Name[nl]=Spaans
Name[nn]=Spansk
Name[oc]=Castelhan
Name[or]=Spanish
Name[pa]=ਸਪੇਨੀ
Name[pl]=Hiszpański
Name[ps]=سپېنش
Name[pt]=Espanhol
Name[pt_BR]=Espanhol
Name[ro]=Spaniolă
Name[ru]=Испанский
Name[se]=Spánskkagiella
Name[si]=ස්පාඤ්ඤ
Name[sk]=Španielčina
Name[sl]=špansko
Name[sq]=Spanjolle
Name[sr]=шпански
Name[sr@ijekavian]=шпански
Name[sr@ijekavianlatin]=španski
Name[sr@latin]=španski
Name[sv]=Spanska
Name[ta]=ஸ்பானிய
Name[te]=స్పెనిష్
Name[tg]=Испанӣ
Name[th]=ภาษาสเปน
Name[tr]=İspanyolca
Name[ug]=ئىسپانچە
Name[uk]=Іспанська
Name[uz]=Ispancha
Name[uz@cyrillic]=Испанча
-Name[vi]=Tây-ban-nha
+Name[vi]=Tây Ban Nha
Name[wa]=Castiyan
-Name[x-test]=xxSpanishxx
Name[xh]=Isipanishi
+Name[x-test]=xxSpanishxx
Name[zh_CN]=西班牙语
Name[zh_HK]=西班牙語
Name[zh_TW]=西班牙語
[et]
Name=Estonian
Name[af]=Estonianse
Name[ar]=إستونية
Name[as]=এস্টোনিয়ান
Name[ast]=Estoniu
Name[be]=Эстонская
Name[be@latin]=Estonskaja
Name[bg]=Естонски
Name[bn]=এস্টোনীয়
Name[bn_IN]=এস্তোনিয়ান
Name[br]=Estoneg
Name[bs]=Estonski
Name[ca]=Estonià
Name[ca@valencia]=Estonià
Name[cs]=Estonský
Name[csb]=Estońsczi
Name[cy]=Estoneg
Name[da]=Estisk
Name[de]=Estnisch
Name[el]=Εσθονικά
Name[en_GB]=Estonian
Name[eo]=Estona
Name[es]=Estonio
Name[et]=Eesti
Name[eu]=Estoniera
Name[fa]=استونیایی
Name[fi]=Viro
Name[fr]=Estonien
Name[fy]=Estsk
Name[ga]=Eastóinis
Name[gl]=Estoniano
Name[gu]=ઇસ્ટોનિઅન
Name[he]=אסטונית
Name[hi]=एस्तोनियाई
Name[hne]=एस्तोनियाई
Name[hr]=Estonski
Name[hsb]=Estnisce
Name[hu]=Észt
Name[hy]=Եստոներեն
Name[ia]=Estonian
Name[id]=Estonia
Name[is]=Eistneska
Name[it]=Estone
Name[ja]=エストニア語
Name[kk]=Эстонша
Name[km]=អេស្តូនី
Name[kn]=ಎಸ್ಚೋನಿಯನ್
Name[ko]=에스토니아어
Name[ku]=Estonî
Name[lb]=Estnesch
Name[lt]=Estų
Name[lv]=Igauņu
Name[mai]=एस्तोनियाइ
Name[mk]=Естонски
Name[ml]=എസ്തോണിയന്‍
Name[mr]=एस्तोनियाई
Name[ms]=Estonia
Name[nb]=Estisk
Name[nds]=Eestlannsch
Name[ne]=इस्टोनियाली
Name[nl]=Ests
Name[nn]=Estisk
Name[oc]=Estonian
Name[or]=Estonian
Name[pa]=ਇਸਟੋਨੀਆ
Name[pl]=Estoński
Name[ps]=اېسټونيايي
Name[pt]=Estónio
Name[pt_BR]=Estoniano
Name[ro]=Estoniană
Name[ru]=Эстонский
Name[se]=Esttegiella
Name[si]=එස්තෝනියානු
Name[sk]=Estónčina
Name[sl]=estonsko
Name[sq]=Estoneze
Name[sr]=естонски
Name[sr@ijekavian]=естонски
Name[sr@ijekavianlatin]=estonski
Name[sr@latin]=estonski
Name[sv]=Estniska
Name[ta]=எஸ்டோனியன்
Name[te]=ఎస్టొనియన్
Name[tg]=Эстонӣ
Name[th]=ภาษาเอสโทเนีย
Name[tr]=Estonya Dili
Name[ug]=ئېستونچە
Name[uk]=Естонська
Name[uz]=Estoncha
Name[uz@cyrillic]=Эстонча
-Name[vi]=E-x-tô-ni-a
+Name[vi]=Estonia
Name[wa]=Estonyin
-Name[x-test]=xxEstonianxx
Name[xh]=Estonian
+Name[x-test]=xxEstonianxx
Name[zh_CN]=爱沙尼亚语
Name[zh_HK]=愛沙尼亞語
Name[zh_TW]=愛沙尼亞語
[eu]
Name=Basque
Name[af]=Basque
Name[ar]=باسكية
Name[as]=বাস্ক
Name[ast]=Vascu
Name[be]=Басцкая
Name[be@latin]=Baskaŭskaja
Name[bg]=Баскийски
Name[bn]=বাস্ক
Name[bn_IN]=বাস্ক
Name[br]=Euskareg
Name[bs]=Baskijski
Name[ca]=Basc
Name[ca@valencia]=Basc
Name[cs]=Baskický
Name[csb]=Baskijsczi
Name[cy]=Basgeg
Name[da]=Baskisk
Name[de]=Baskisch
Name[el]=Βασκικά
Name[en_GB]=Basque
Name[eo]=Eŭska
Name[es]=Euskera
Name[et]=Baski
Name[eu]=Euskara
Name[fa]=باسکی
Name[fi]=Baski
Name[fr]=Basque
Name[fy]=Baskysk
Name[ga]=Bascais
Name[gl]=Basco
Name[gu]=બાસ્ક
Name[he]=בסקית
Name[hi]=बास्क
Name[hne]=बास्क
Name[hr]=Baskijski
Name[hsb]=Baskisce
Name[hu]=Baszk
Name[ia]=Basco
Name[id]=Basque
Name[is]=Baskamál
Name[it]=Basco
Name[ja]=バスク語
Name[kk]=Баскша
Name[km]=​​បាស្កេ
Name[kn]=ಬಾಸ್ಕ್
Name[ko]=바스크어
Name[ku]=Baskî
Name[lb]=Baskesch
Name[lt]=Baskų
Name[lv]=Basku
Name[mai]=बास्क
Name[mk]=Баскиски
Name[ml]=ബാസ്ക്
Name[mr]=बास्क
Name[ms]=Basque
Name[nb]=Baskisk
Name[nds]=Basksch
Name[ne]=बास्क
Name[nl]=Baskisch
Name[nn]=Baskisk
Name[oc]=Basc
Name[or]=Basque
Name[pa]=ਬਸਕਿਉ
Name[pl]=Baskijski
Name[ps]=بېسک
Name[pt]=Basco
Name[pt_BR]=Basco
Name[ro]=Bască
Name[ru]=Баскский
Name[se]=Baskalašgiella
Name[si]=බැස්ක්
Name[sk]=Baskičtina
Name[sl]=baskovsko
Name[sq]=Baske
Name[sr]=баскијски
Name[sr@ijekavian]=баскијски
Name[sr@ijekavianlatin]=baskijski
Name[sr@latin]=baskijski
Name[sv]=Baskiska
Name[ta]=பாஸ்க்
Name[te]=బాస్క్
Name[tg]=Баскӣ
Name[th]=ภาษาบาสก์
Name[tr]=Bask Dili
Name[ug]=باسكىچە
Name[uk]=Баскська
Name[uz]=Baskcha
Name[uz@cyrillic]=Баскча
-Name[vi]=Ba-x-quợ
+Name[vi]=Basque
Name[wa]=Basse
-Name[x-test]=xxBasquexx
Name[xh]=Basque
+Name[x-test]=xxBasquexx
Name[zh_CN]=巴斯克语
Name[zh_HK]=巴斯克語
Name[zh_TW]=巴斯克語
[fa]
Name=Farsi (Persian)
Name[af]=Farsi (Persies)
Name[ar]=فارسية
Name[as]=ফাৰ্চী (পাৰ্চিয়ান)
Name[ast]=Farsi (Persa)
Name[be]=Персідская
Name[be@latin]=Farsi (persydzkaja)
Name[bg]=Фарси
Name[bn]=ফার্সি (পার্সিয়ান)
Name[bn_IN]=ফার্সি
Name[br]=Farsieg (Persieg)
Name[bs]=Farski(Perzijski)
Name[ca]=Farsi (Persa)
Name[ca@valencia]=Farsi (Persa)
Name[cs]=Farsi (Perský)
Name[csb]=Farsi (persczi)
Name[cy]=Farsi (Perseg)
Name[da]=Farsi (Persisk)
Name[de]=Farsi (Persisch)
Name[el]=Farsi (Περσικά)
Name[en_GB]=Farsi (Persian)
Name[eo]=Frisa (Persa)
Name[es]=Persa
Name[et]=Farsi (pärsia)
Name[eu]=Farsiera (Persiera)
Name[fa]=فارسی
Name[fi]=Farsi (persia)
Name[fr]=Persan
Name[fy]=Farsysk (Persysk)
Name[ga]=Fairsis (Peirsis)
Name[gl]=Frisón (Parsi)
Name[gu]=ફારસી (પર્શીયન)
Name[he]=פרסית
Name[hi]=फारसी (पर्सियाई)
Name[hne]=फारसी (पर्सियाई)
Name[hr]=Farsi (Perzijski)
Name[hsb]=Farsisce (Persisce)
Name[hu]=Fárszi (perzsa)
Name[ia]=Farsi (Perse)
Name[id]=Farsi (Persia)
Name[is]=Farsi (Persneska)
Name[it]=Farsi (Persiano)
Name[ja]=ペルシア語
Name[kk]=Фарси
Name[km]=ហ្វាស៊ី (ពឺស៊ាន)
Name[kn]=ಫಾರ್ಸಿ (ಪರ್ಶಿಯನ್)
Name[ko]=페르시아어
Name[ku]=Farsî
Name[lb]=Farsi (Persesch)
Name[lt]=Farsi (persų)
Name[lv]=Persiešu (Farsi)
Name[mai]=फारसी (पर्सियाइ)
Name[mk]=Фарси (персиски)
Name[ml]=പാര്‍സി (പേര്‍ഷ്യന്‍)
Name[mr]=फारसी (पर्शियन)
Name[ms]=Parsi
Name[nb]=Farsi (Persisk)
Name[nds]=Farsi (Persisch)
Name[ne]=फारसी (पर्सियन)
Name[nl]=Farsi (Perzisch)
Name[nn]=Persisk
Name[or]=Farsi (Persian)
Name[pa]=ਫਾਰਸੀ (ਪਰਸ਼ੀਆਈ)
Name[pl]=Farsi (Perski)
Name[ps]=پاړسي
Name[pt]=Farsi (Persa)
Name[pt_BR]=Farsi (Persa)
Name[ro]=Farsi (Persană)
Name[ru]=Персидский
Name[se]=Farsigiella (Persialaš)
Name[si]=ෆාර්සි (පර්සියානු)
Name[sk]=Fársí (perzština)
Name[sl]=Farsi (perzijsko)
Name[sq]=Farsi (Persiane)
Name[sr]=фарси (персијски)
Name[sr@ijekavian]=фарси (персијски)
Name[sr@ijekavianlatin]=farsi (persijski)
Name[sr@latin]=farsi (persijski)
Name[sv]=Persiska
Name[ta]=பார்சி (பெர்சியன்)
Name[te]=ఫార్సి (పెర్షియన్)
Name[tg]=Форсӣ
Name[th]=ภาษาฟาร์ซี (เปอร์เซียน)
Name[tr]=Farsça (İran)
Name[ug]=پارىسچە
Name[uk]=Фризька (Перська)
Name[uz]=Forscha (Perscha)
Name[uz@cyrillic]=Форсча (Персча)
-Name[vi]=Pha-xi
+Name[vi]=Farsi (Ba Tư)
Name[wa]=Farsi
Name[x-test]=xxFarsi (Persian)xx
Name[zh_CN]=波斯语
Name[zh_HK]=波斯語
Name[zh_TW]=波斯語
[fi]
Name=Finnish
Name[af]=Feense
Name[ar]=فنلندية
Name[as]=ফিনিশ্ব
Name[ast]=Finlandés
Name[be]=Фінская
Name[be@latin]=Finskaja
Name[bg]=Фински
Name[bn]=ফিনিশ
Name[bn_IN]=ফিনিশ
Name[br]=Finneg
Name[bs]=Finski
Name[ca]=Finès
Name[ca@valencia]=Finés
Name[cs]=Finský
Name[csb]=Finsczi
Name[cy]=Ffineg
Name[da]=Finsk
Name[de]=Finnisch
Name[el]=Φιλανδικά
Name[en_GB]=Finnish
Name[eo]=Fina
Name[es]=Finés
Name[et]=Soome
Name[eu]=Finlandiera
Name[fa]=فنلاندی
Name[fi]=Suomi
Name[fr]=Finnois
Name[fy]=Finsk
Name[ga]=Fionlainnis
Name[gl]=Finlandés
Name[gu]=ફિનિશ
Name[he]=פינית
Name[hi]=फिनिश
Name[hne]=फिनिस
Name[hr]=Finski
Name[hsb]=Finsce
Name[hu]=Finn
Name[hy]=Ֆիներեն
Name[ia]=Finnese
Name[id]=Finlandia
Name[is]=Finnska
Name[it]=Finlandese
Name[ja]=フィンランド語
Name[kk]=Финнша
Name[km]=ហ្វាំងឡង់
Name[kn]=ಫಿನ್ನಿಷ್
Name[ko]=핀란드어
Name[ku]=Finkî
Name[lb]=Finnesch
Name[lt]=Suomių
Name[lv]=Somu
Name[mai]=फिनिश
Name[mk]=Фински
Name[ml]=ഫിന്നിഷ്
Name[mr]=फिनिश
Name[ms]=Finnish
Name[nb]=Finsk
Name[nds]=Finnsch
Name[ne]=फिनिश
Name[nl]=Fins
Name[nn]=Finsk
Name[oc]=Finés
Name[or]=Finnish
Name[pa]=ਫੈਨਿਸ਼
Name[pl]=Fiński
Name[ps]=فېنېش
Name[pt]=Finlandês
Name[pt_BR]=Finlandês
Name[ro]=Finlandeză
Name[ru]=Финский
Name[se]=Suomagiella
Name[si]=ෆින්ලන්තානු
Name[sk]=Fínčina
Name[sl]=finsko
Name[sq]=Finlandeze
Name[sr]=фински
Name[sr@ijekavian]=фински
Name[sr@ijekavianlatin]=finski
Name[sr@latin]=finski
Name[sv]=Finska
Name[ta]=பின்னிஷ்
Name[te]=ఫిన్నిష్
Name[tg]=Финӣ
Name[th]=ภาษาฟินแลนด์
Name[tr]=Fince
Name[ug]=فىنچە
Name[uk]=Фінська
Name[uz]=Fincha
Name[uz@cyrillic]=Финча
-Name[vi]=Phần-lan
+Name[vi]=Phần Lan
Name[wa]=Finwès
-Name[x-test]=xxFinnishxx
Name[xh]=Finnish
+Name[x-test]=xxFinnishxx
Name[zh_CN]=芬兰语
Name[zh_HK]=芬蘭語
Name[zh_TW]=芬蘭語
[fj]
Name=Fijian
Name[af]=Fijian
Name[ar]=فيجية
Name[as]=ফিজিয়ান
Name[ast]=Fijianu
Name[be]=Фіджыйская
Name[be@latin]=Fidžyjskaja
Name[bg]=Фиджи
Name[bn]=ফিজিয়ান
Name[bn_IN]=ফিজিয়ান
Name[br]=Fidjeg
Name[bs]=Fidžijski
Name[ca]=Fijià
Name[ca@valencia]=Fijià
Name[cs]=Fidžijský
Name[csb]=z Fiji
Name[cy]=Fijieg
Name[da]=Fijiansk
Name[de]=Fidschi
Name[el]=Fijian
Name[en_GB]=Fijian
Name[eo]=Fiĝia
Name[es]=Fiyiano
Name[et]=Fidži
Name[eu]=Fijiera
Name[fa]=فیجیایی
Name[fi]=Fidži
Name[fr]=Fidjien
Name[fy]=Fijdzjysk
Name[ga]=Fidsis
Name[gl]=Fixiano
Name[gu]=ફિજીઅન
Name[he]=פיגי'ת
Name[hi]=फिज़ी
Name[hne]=फिजी
Name[hr]=Fidžijski
Name[hsb]=Fidźisce
Name[hu]=Fidzsi
Name[ia]=Fijian
Name[id]=Fijian
Name[is]=Fijian
Name[it]=Figiano
Name[ja]=フィジー語
Name[kk]=Фиджише
Name[km]=ហ្វ៊ីហ្ស៊ី
Name[kn]=ಫಿಜಿಯನ್
Name[ko]=피지어
Name[ku]=Fîcî
Name[lb]=Fidschi-Sprooch
Name[lt]=Fidži
Name[lv]=Fidžiešu
Name[mai]=फिजियन
Name[mk]=Фиџиски
Name[ml]=ഫിജിയന്‍
Name[mr]=फिज़ी
Name[ms]=Fijian
Name[nb]=Fijisk
Name[nds]=Fidschi
Name[ne]=फिजियन
Name[nl]=Fijisch
Name[nn]=Fijiansk
Name[oc]=Fijian
Name[or]=Fijian
Name[pa]=ਫਿਜੀਨ
Name[pl]=z Fiji
Name[ps]=فيجي
Name[pt]=Fidjiano
Name[pt_BR]=Fijiano
Name[ro]=Fijiană
Name[ru]=Фиджи
Name[se]=Fižigiella
Name[si]=ෆීජි
Name[sk]=Fidžijčina
Name[sl]=fidžijsko
Name[sq]=Fixhiane
Name[sr]=фиџијски
Name[sr@ijekavian]=фиџијски
Name[sr@ijekavianlatin]=fidžijski
Name[sr@latin]=fidžijski
Name[sv]=Fijianska
Name[ta]=பிஜியன்
Name[te]=ఫిజియన్
Name[tg]=Фиҷӣ
Name[th]=ภาษาฟิจิ
Name[tr]=Fijian
Name[ug]=فىجىچە
Name[uk]=Фіджійська
Name[uz]=Fijicha
Name[uz@cyrillic]=Фижича
-Name[vi]=Phi-gi
+Name[vi]=Fijian
Name[wa]=Fidjyin
-Name[x-test]=xxFijianxx
Name[xh]=Fijian
+Name[x-test]=xxFijianxx
Name[zh_CN]=斐济语
Name[zh_HK]=斐濟語
Name[zh_TW]=斐濟語
[fo]
Name=Faroese
Name[af]=Faroese
Name[ar]=فروية
Name[as]=ফাৰোইছ
Name[ast]=Faroés
Name[be]=Фароская
Name[be@latin]=Faroskaja
Name[bg]=Фарьорски
Name[bn]=ফারোইস
Name[bn_IN]=ফেরোইজ
Name[br]=Faroeseg
Name[bs]=Farski
Name[ca]=Feroès
Name[ca@valencia]=Feroés
Name[cs]=Faerský
Name[csb]=z Òwczëch Òstrowów
Name[cy]=Faroeg
Name[da]=Færøsk
Name[de]=Färöisch
Name[el]=Faroese
Name[en_GB]=Faroese
Name[eo]=Feroa
Name[es]=Feroés
Name[et]=Fääri
Name[eu]=Faroera
Name[fa]=فاروسی
Name[fi]=Fääri
Name[fr]=Féroïen
Name[fy]=Faeroersk
Name[ga]=Faróis
Name[gl]=Feroés
Name[gu]=ફોરોસી
Name[he]=פארואית
Name[hi]=फारसी
Name[hne]=फारसी
Name[hr]=Farski
Name[hsb]=Ferejsce
Name[hu]=Faröei
Name[ia]=Faroese
Name[id]=Faroese
Name[is]=Færeyska
Name[it]=Faroese
Name[ja]=フェーロー語
Name[kk]=Фароэзше
Name[km]=ហ្វារ៉ូស
Name[kn]=ಫರೊಈಸ್
Name[ko]=페로어
Name[ku]=Faroyî
Name[lb]=Faröesch
Name[lt]=Farerų
Name[lv]=Fēru
Name[mai]=फारसी
Name[mk]=Фарски
Name[ml]=ഫരൂസ്
Name[mr]=फारसी
Name[ms]=Faroese
Name[nb]=Færøyisk
Name[nds]=Färöösch
Name[ne]=फारोसी
Name[nl]=Faroese
Name[nn]=Færøysk
Name[oc]=Feroés
Name[or]=Faroese
Name[pa]=ਫਾਰੋਇਸੀ
Name[pl]=z Wysp Owczych
Name[pt]=Faroês
Name[pt_BR]=Feroês
Name[ro]=Faroeză
Name[ru]=Фарерский
Name[se]=Fearagiella
Name[si]=ෆැරෝසි
Name[sk]=Faerčina
Name[sl]=fersko
Name[sq]=Faroeze
Name[sr]=фарски
Name[sr@ijekavian]=фарски
Name[sr@ijekavianlatin]=farski
Name[sr@latin]=farski
Name[sv]=Färöiska
Name[ta]=பாரோவீஸ்
Name[te]=ఫారొఈస్
Name[tg]=Фароесӣ
Name[th]=ภาษาฟาโรอีส
Name[tr]=Faroese
Name[ug]=فاروئىسچە
Name[uk]=Фарерська
Name[uz]=Farercha
Name[uz@cyrillic]=Фарерча
-Name[vi]=Pha-rô
+Name[vi]=Faroe
Name[wa]=Faeroyès
-Name[x-test]=xxFaroesexx
Name[xh]=Faroese
+Name[x-test]=xxFaroesexx
Name[zh_CN]=法罗群岛语
Name[zh_HK]=法羅語
Name[zh_TW]=法羅語
[fr]
Name=French
Name[af]=Franse
Name[ar]=فرنسية
Name[as]=ফৰাচী
Name[ast]=Francés
Name[be]=Французская
Name[be@latin]=Francuskaja
Name[bg]=Френски
Name[bn]=ফরাসী
Name[bn_IN]=ফ্রেঞ্চ
Name[br]=Galleg
Name[bs]=Francuski
Name[ca]=Francès
Name[ca@valencia]=Francés
Name[cs]=Francouzský
Name[csb]=Francësczi
Name[cy]=Frangeg
Name[da]=Fransk
Name[de]=Französisch
Name[el]=Γαλλικά
Name[en_GB]=French
Name[eo]=Franca
Name[es]=Francés
Name[et]=Prantsuse
Name[eu]=Frantsesa
Name[fa]=فرانسوی
Name[fi]=Ranska
Name[fr]=Français
Name[fy]=Frânsk
Name[ga]=Fraincis
Name[gl]=Francés
Name[gu]=ફ્રેંચ
Name[he]=צרפתית
Name[hi]=फ्रांसीसी
Name[hne]=फ्रांसीसी
Name[hr]=Francuski
Name[hsb]=Francosce
Name[hu]=Francia
Name[hy]=Ֆրանսերեն
Name[ia]=Francese
Name[id]=Prancis
Name[is]=Franska
Name[it]=Francese
Name[ja]=フランス語
Name[kk]=Французша
Name[km]=បារាំង
Name[kn]=ಫ್ರೆಂಚ್
Name[ko]=프랑스어
Name[ku]=Fransî
Name[lb]=Franzéisch
Name[lt]=Prancūzų
Name[lv]=Franču
Name[mai]=फ्रेंच
Name[mk]=Француски
Name[ml]=ഫ്രഞ്ച്
Name[mr]=फ्रेंच
Name[ms]=Perancis
Name[nb]=Fransk
Name[nds]=Franzöösch
Name[ne]=फ्रेन्च
Name[nl]=Frans
Name[nn]=Fransk
Name[oc]=Francés
Name[or]=French
Name[pa]=ਫਰੈਂਚ
Name[pl]=Francuski
Name[ps]=فرانسوي
Name[pt]=Francês
Name[pt_BR]=Francês
Name[ro]=Franceză
Name[ru]=Французский
Name[se]=Fránskkagiella
Name[si]=ප්‍රංශ
Name[sk]=Francúzština
Name[sl]=francosko
Name[sq]=Franceze
Name[sr]=француски
Name[sr@ijekavian]=француски
Name[sr@ijekavianlatin]=francuski
Name[sr@latin]=francuski
Name[sv]=Franska
Name[ta]=பிரென்சு
Name[te]=ఫ్రెంచ్
Name[tg]=Франсавӣ
Name[th]=ภาษาฝรั่งเศส
Name[tr]=Fransızca
Name[ug]=فىرانسۇزچە
Name[uk]=Французька
Name[uz]=Fransuzcha
Name[uz@cyrillic]=Французча
Name[vi]=Pháp
Name[wa]=Francès
-Name[x-test]=xxFrenchxx
Name[xh]=Isifrentshi
+Name[x-test]=xxFrenchxx
Name[zh_CN]=法语
Name[zh_HK]=法語
Name[zh_TW]=法語
[fy]
Name=Frisian
Name[af]=Frisian
Name[ar]=فريسية
Name[as]=ফ্ৰিচিয়ান
Name[ast]=Frisón
Name[be]=Фрысійская
Name[be@latin]=Fryskaja
Name[bg]=Фризийски
Name[bn]=ফ্রিসিয়ান
Name[bn_IN]=ফ্রিসিয়ান
Name[br]=Frisianeg
Name[bs]=Frizijski
Name[ca]=Frisó
Name[ca@valencia]=Frisó
Name[cs]=Fríský
Name[csb]=Frizëjsczi
Name[cy]=Frisieg
Name[da]=Frisisk
Name[de]=Friesisch
Name[el]=Frisian
Name[en_GB]=Frisian
Name[eo]=Frisa
Name[es]=Frisio
Name[et]=Friisi
Name[eu]=Frisiera
Name[fa]=فریسی
Name[fi]=Friisi
Name[fr]=Frison
Name[fy]=Frysk
Name[ga]=Freaslainnis
Name[gl]=Frisio
Name[gu]=ફ્રિસિયન
Name[he]=פריזית
Name[hi]=फ्रिसियन
Name[hne]=फ्रिसियन
Name[hr]=Frizijski
Name[hsb]=Frizisce
Name[hu]=Fríz
Name[ia]=Frisian
Name[id]=Frisian
Name[is]=Frísneska
Name[it]=Frisone
Name[ja]=フリジア語
Name[kk]=Фризше
Name[km]=ហ្វ្រីស៊ាន
Name[kn]=ಫ್ರಿಷಿಯನ್
Name[ko]=프리지아어
Name[ku]=Frîsî
Name[lb]=Friesesch
Name[lt]=Fryzų
Name[lv]=Frīzu
Name[mai]=फ्रिसियन
Name[mk]=Фризиски
Name[ml]=ഫ്രിഷ്യന്‍
Name[mr]=फ्रिसियन
Name[ms]=Frisia
Name[nb]=Frisisk
Name[nds]=Freesch
Name[ne]=फ्रिसियन
Name[nl]=Frysk
Name[nn]=Frisisk
Name[oc]=Frisian
Name[or]=Frisian
Name[pa]=ਫਰੀਸੀਨਿਸ
Name[pl]=Fryzyjski
Name[ps]=فرېشين
Name[pt]=Frísio
Name[pt_BR]=Frisão
Name[ro]=Frisiană
Name[ru]=Фризский
Name[se]=Frisagiella
Name[si]=ෆ්‍රිසියන්
Name[sk]=Frízština
Name[sl]=frizijsko
Name[sq]=Friziane
Name[sr]=фризијски
Name[sr@ijekavian]=фризијски
Name[sr@ijekavianlatin]=frizijski
Name[sr@latin]=frizijski
Name[sv]=Frisiska
Name[ta]=பிரிசியன்
Name[te]=ఫ్రిసియన్
Name[tg]=Фризианӣ
Name[th]=ภาษาฟรีเชียน
Name[tr]=Frisian
Name[ug]=فرىسونچە
Name[uk]=Фризька
Name[uz]=Frizcha
Name[uz@cyrillic]=Фризча
-Name[vi]=Ph-ri-xi
+Name[vi]=Frisia
Name[wa]=Frizon
-Name[x-test]=xxFrisianxx
Name[xh]=Frisian
+Name[x-test]=xxFrisianxx
Name[zh_CN]=弗里斯兰语
Name[zh_HK]=弗利然語
Name[zh_TW]=弗利然語
[ga]
Name=Irish Gaelic
Name[af]=Ierse Gaelic
Name[ar]=غايلية إرلاندية
Name[as]=আইৰিশ্ব গেলিক
Name[ast]=Gaélicu irlandés
Name[be]=Ірландская гальская
Name[be@latin]=Irlandzkaja gaelskaja
Name[bg]=Ирландски
Name[bn]=আইরিশ গেলিক
Name[bn_IN]=আইরিশ গেলিক
Name[br]=Iwerzhoneg eus Bro Iwerzhon
Name[bs]=Irski
Name[ca]=Gaèlic irlandès
Name[ca@valencia]=Gaèlic irlandés
Name[cs]=Galský (irština)
Name[csb]=Irlandzczi Gaelic
Name[da]=Irsk gælisk
Name[de]=Irisches Gälisch
Name[el]=Ιρλανδική (Gaeilge)
Name[en_GB]=Irish Gaelic
Name[eo]=Gaela (Irlanda)
Name[es]=Gaélico irlandés
Name[et]=Iiri gaeli
Name[eu]=Irlandar gaelikoa
Name[fa]=اسکاتلندی ایرلندی
Name[fi]=Iiri
Name[fr]=Gaélique irlandais
Name[fy]=Iersk Gaelic
Name[ga]=Gaeilge
Name[gl]=Gaélico irlandés
Name[gu]=આઈરીશ ગેલિક
Name[he]=גאלית אירית
Name[hi]=आइरिश गैलिक
Name[hne]=आइरिस गैलिक
Name[hr]=Irski Galski
Name[hsb]=Gaelisce (Irska)
Name[hu]=Gall (ír)
Name[ia]=Irlandese Gaelic
Name[id]=Gaelic Irlandia
Name[is]=Írsk gelíska
Name[it]=Gaelico irlandese
Name[ja]=アイルランド系ゲール語
Name[kk]=Ирланд галлша
Name[km]=អៀរឡង់ ហ្គាអេលិក
Name[kn]=ಐರಿಷ್ ಗ್ಯಾಲಿಕ್
Name[ko]=아일랜드 게일어
Name[ku]=Galiya Îrlandayê
Name[lb]=Irescht Gällesch
Name[lt]=Irish Gaelic
Name[lv]=Īru gēlu
Name[mai]=आइरिश गैलिक
Name[mk]=Ирски галски
Name[ml]=ഐറിഷ് ഗാലിക്
Name[mr]=आइरिश गैलिक
Name[ms]=Irish Gaelic
Name[nb]=Irsk gælisk
Name[nds]=Irsch Gäälsch
Name[ne]=आइरिस ग्यालिक
Name[nl]=Gaelic (Iers)
Name[nn]=Gælisk (Irland)
Name[or]=Irish Gaelic
Name[pa]=ਆਈਰਿਸ਼ ਗਾਈਲਿਕ
Name[pl]=Irlandzki Gaelic
Name[pt]=Galês da Irlanda
Name[pt_BR]=Gaélico Irlandês
Name[ro]=Galeză irlandeză
Name[ru]=Ирландский
Name[se]=Irlánddalaš gaelagiella
Name[si]=අයිරිෂ් ගේලික්
Name[sk]=Írska gaelčina
Name[sl]=irsko galsko
Name[sq]=Irlandeze Gale
Name[sr]=ирски гелски
Name[sr@ijekavian]=ирски гелски
Name[sr@ijekavianlatin]=irski gelski
Name[sr@latin]=irski gelski
Name[sv]=Iriska
Name[ta]=ஐரிஷ் காலிக்
Name[te]=ఐరిష్ గెలిక్
Name[tg]=Ирландӣ (Галикӣ)
Name[th]=ภาษาไอริชเกลิค
Name[tr]=İrlanda Galik
Name[ug]=ئىرېلاندىيە گالىكچە
Name[uk]=Гаельська (Ірландія)
-Name[vi]=Xen-tợ Ái-nhĩ-lan
+Name[vi]=Irish Gaelic
Name[wa]=Irlandès
Name[x-test]=xxIrish Gaelicxx
Name[zh_CN]=爱尔兰盖尔语
Name[zh_TW]=(愛爾蘭)蓋爾語
[gd]
Name=Gaelic
Name[af]=Gaelic
Name[ar]=غايلية
Name[as]=গেলিক
Name[ast]=Gaélicu
Name[be]=Гальская
Name[be@latin]=Gaelskaja
Name[bg]=Гаелски
Name[bn]=গেলিক
Name[bn_IN]=গেলিক
Name[br]=Iwerzhoneg
Name[bs]=Keltski
Name[ca]=Gaèlic
Name[ca@valencia]=Gaèlic
Name[cs]=Galský
Name[csb]=Celtycczi (gaelic)
Name[cy]=Gaeleg
Name[da]=Gælisk
Name[de]=Gälisch
Name[el]=Σκωτική (Gaelic)
Name[en_GB]=Gaelic
Name[eo]=Gaela
Name[es]=Gaélico
Name[et]=Gaeli
Name[eu]=Gaelikoa
Name[fa]=اسکاتلندی
Name[fi]=Gaeli
Name[fr]=Gaélique
Name[fy]=Gaelic
Name[ga]=Gàidhlig
Name[gl]=Gaélico
Name[gu]=ગેલિક
Name[he]=גאלית
Name[hi]=गैलिक
Name[hne]=गैलिक
Name[hr]=Galski
Name[hsb]=Gaelisce
Name[hu]=Gall
Name[ia]=Gaelic
Name[id]=Gaelic
Name[is]=Gelíska
Name[it]=Gaelico
Name[ja]=ゲール語
Name[kk]=Галлша
Name[km]=ហ្គាអេលិក
Name[kn]=ಗ್ಯಾಲಿಕ್
Name[ko]=게일어
Name[ku]=Gaelî
Name[lb]=Gällesch
Name[lt]=Galų
Name[lv]=Gēlu
Name[mai]=गैलिक
Name[mk]=Галски
Name[ml]=ഗാലിക്
Name[mr]=गैलिक
Name[ms]=Gaelic
Name[nb]=Gælisk
Name[nds]=Gäälsch
Name[ne]=ग्यालिक
Name[nl]=Gaelic
Name[nn]=Gælisk
Name[oc]=Gaelic
Name[or]=Gaelic
Name[pa]=ਗਾਈਲਿਕ
Name[pl]=celtycki (gaelic)
Name[ps]=ګاېلېک
Name[pt]=Galês
Name[pt_BR]=Gaélico
Name[ro]=Galeză
Name[ru]=Шотландский
Name[se]=Gaelagiella
Name[si]=ගේලික්
Name[sk]=Gaelčina
Name[sl]=galsko
Name[sq]=Gale
Name[sr]=гелски
Name[sr@ijekavian]=гелски
Name[sr@ijekavianlatin]=gelski
Name[sr@latin]=gelski
Name[sv]=Gäliska
Name[ta]=கேலிக்
Name[te]=గెలిక్
Name[tg]=Галикӣ
Name[th]=ภาษาเกลิค
Name[tr]=Galik
Name[ug]=گالىكچە
Name[uk]=Гаельська
Name[uz]=Galikcha
Name[uz@cyrillic]=Галикча
-Name[vi]=Xen-tợ
+Name[vi]=Gaelic
Name[wa]=Gayel
-Name[x-test]=xxGaelicxx
Name[xh]=Gaelic
+Name[x-test]=xxGaelicxx
Name[zh_CN]=盖尔语
Name[zh_HK]=蓋爾語
Name[zh_TW]=蓋爾語
[gl]
Name=Galician
Name[af]=Galician
Name[ar]=جلقية
Name[as]=গেলিচিয়ান
Name[ast]=Gallegu
Name[be]=Галіцыйская
Name[be@latin]=Galisijskaja
Name[bg]=Галисийски
Name[bn]=গেলিসিয়ান
Name[bn_IN]=গেলিশিয়ান
Name[br]=Galiseg
Name[bs]=Galicijski
Name[ca]=Gallec
Name[ca@valencia]=Gallec
Name[cs]=Haličský
Name[csb]=Galicëjsczi
Name[cy]=Galiseg
Name[da]=Galicisk
Name[de]=Galicisch
Name[el]=Γαλικιανά (Ισπανία)
Name[en_GB]=Galician
Name[eo]=Galega
Name[es]=Gallego
Name[et]=Galeegi
Name[eu]=Galiziera
Name[fa]=اسکاتلندی
Name[fi]=Gallicia
Name[fr]=Galicien
Name[fy]=Galiciaansk
Name[ga]=Gailísis
Name[gl]=Galego
Name[gu]=ગેલિસીયન
Name[he]=גליסית
Name[hi]=गैलिसियाई
Name[hne]=गैलिसियाई
Name[hr]=Galicijski
Name[hsb]=Galicisce
Name[hu]=Galíciai
Name[ia]=Galleco
Name[id]=Galician
Name[is]=Gelíska
Name[it]=Gallego
Name[ja]=ガリシア語
Name[kk]=Галицияша
Name[km]=ហ្កាលីស៊ី
Name[kn]=ಗ್ಯಾಲಿಷಿಯನ್
Name[ko]=갈리시아어
Name[ku]=Galîkî
Name[lb]=Galizesch
Name[lt]=Galiciečių
Name[lv]=Galisiešu
Name[mai]=गेलिसियन
Name[mk]=Галски
Name[ml]=ഗലീഷ്യന്‍
Name[mr]=गैलिसियाई
Name[ms]=Galician
Name[nb]=Galicisk
Name[nds]=Galizsch
Name[ne]=ग्यालिसियन
Name[nl]=Galicisch
Name[nn]=Galisisk
Name[oc]=Galician
Name[or]=Galician
Name[pa]=ਗਾਈਲੀਆਈ
Name[pl]=Galicyjski
Name[ps]=ګېلېشين
Name[pt]=Galego
Name[pt_BR]=Galego
Name[ro]=Galiciană
Name[ru]=Галисийский
Name[se]=Galisiagiella
Name[si]=ගැලීසියානු
Name[sk]=Galícijčina
Name[sl]=galicijsko
Name[sq]=Galiciane
Name[sr]=галицијски
Name[sr@ijekavian]=галицијски
Name[sr@ijekavianlatin]=galicijski
Name[sr@latin]=galicijski
Name[sv]=Galiciska
Name[ta]=காலிசியன்
Name[te]=గలిచియన్
Name[tg]=Галлӣ
Name[th]=ภาษาแกลิเซีย
Name[tr]=Galce
-Name[ug]=گالىتسىيانچە
+Name[ug]=گالىسىيچە
Name[uk]=Галісійська
Name[uz]=Galikcha
Name[uz@cyrillic]=Галикча
-Name[vi]=Ga-li-ci
+Name[vi]=Galicia
Name[wa]=Galicyin
-Name[x-test]=xxGalicianxx
Name[xh]=isiGalacian
+Name[x-test]=xxGalicianxx
Name[zh_CN]=加利西亚语
Name[zh_TW]=加利西亞語
[gn]
Name=Guarani
Name[af]=Guarani
Name[ar]=غوراني
Name[as]=গুৱাৰানি
Name[ast]=Guaraní
Name[be]=Гуярані
Name[be@latin]=Guarani
Name[bg]=Гуарани
Name[bn]=গুয়ারানি
Name[bn_IN]=গুয়ারানি
Name[br]=Guarani
Name[bs]=Guaranski
Name[ca]=Guaraní
Name[ca@valencia]=Guaraní
Name[cs]=Guarani
Name[csb]=Guarani
Name[cy]=Guarani
Name[da]=Guarani
Name[de]=Guarani
Name[el]=Γκουαράνι
Name[en_GB]=Guarani
Name[eo]=Gvarania
Name[es]=Guaraní
Name[et]=Guaranii
Name[eu]=Guaraniera
Name[fa]=گوارانی
Name[fi]=Guarani
Name[fr]=Guarani
Name[fy]=Guarani
Name[ga]=Guaráinis
Name[gl]=Guaraní
Name[gu]=ગુઆરાની
Name[he]=גוארני
Name[hi]=गौरानी
Name[hne]=गौरानी
Name[hr]=Gvaranski
Name[hsb]=Guarani
Name[hu]=Guarani
Name[ia]=Guarani
Name[id]=Guarani
Name[is]=Guarani
Name[it]=Guaraní
Name[ja]=グァラニ語
Name[kk]=Гуарани
Name[km]=ហ្គារ៉ានី
Name[kn]=ಗುವಾರಾನಿ
Name[ko]=과라니어
Name[ku]=Guaranî
Name[lb]=Guarani
Name[lt]=Guarani
Name[lv]=Gvaranu
Name[mai]=गौरानी
Name[mk]=Гуарани
Name[ml]=ഗുരാണി
Name[mr]=गौरानी
Name[ms]=Guarani
Name[nb]=Guarani
Name[nds]=Guarani
Name[ne]=गुवारानी
Name[nl]=Guarani
Name[nn]=Guarani
Name[oc]=Guarari
Name[or]=Guarani
Name[pa]=ਗੁਜਰਾਨੀ
Name[pl]=Guarani
Name[ps]=ګوراني
Name[pt]=Guarani
Name[pt_BR]=Guarani
Name[ro]=Guarană
Name[ru]=Гуарани
Name[se]=Guaránagiella
Name[si]=ගුවාරානි
Name[sk]=Guaraníjčina
Name[sl]=guarani
Name[sq]=Guarani
Name[sr]=гварани
Name[sr@ijekavian]=гварани
Name[sr@ijekavianlatin]=gvarani
Name[sr@latin]=gvarani
Name[sv]=Guarani
Name[ta]=குவரானி
Name[te]=గువారాని
Name[tg]=Гуаранӣ
Name[th]=ภาษากวารานี
Name[tr]=Guarani
Name[ug]=گۇئارانىچە
Name[uk]=Гуарані
Name[uz]=Guarani
Name[uz@cyrillic]=Гуарани
-Name[vi]=Gua-ra-ni
+Name[vi]=Guarani
Name[wa]=Gwarani
-Name[x-test]=xxGuaranixx
Name[xh]=Guarani
+Name[x-test]=xxGuaranixx
Name[zh_CN]=瓜拉尼语
Name[zh_HK]=瓜拉尼語
Name[zh_TW]=瓜拉尼語
[gu]
Name=Gujarati
Name[af]=Gujarati
Name[ar]=كوجراتي
Name[as]=গুজ্ৰাটি
Name[ast]=Gujaratí
Name[be]=Гуяраці
Name[be@latin]=Gujarati
Name[bg]=Гуджарати
Name[bn]=গুজরাতী
Name[bn_IN]=গুজরাতি
Name[br]=Gujaratieg
Name[bs]=Guđaratski
Name[ca]=Gujarati
Name[ca@valencia]=Gujarati
Name[cs]=Gujarati
Name[csb]=Gujarati
Name[cy]=Gujarati
Name[da]=Gujarati
Name[de]=Gujarati
Name[el]=Gujarati
Name[en_GB]=Gujarati
Name[eo]=Guĝarata
Name[es]=Gujarati
Name[et]=Gudžarati
Name[eu]=Gujaratera
Name[fa]=گجراتی
Name[fi]=Gudžarati
Name[fr]=Gujarati
Name[fy]=Gujarati
Name[ga]=Gúisearáitis
Name[gl]=Guxarati
Name[gu]=ગુજરાતી
Name[he]=גוג'ראטית
Name[hi]=गुजराती
Name[hne]=गुजराती
Name[hr]=Gudžaratski
Name[hsb]=Gujarati
Name[hu]=Gudzsarati
Name[ia]=Gujarati
Name[id]=Gujarati
Name[is]=Gujarati
Name[it]=Gujarati
Name[ja]=グジャラート語
Name[kk]=Гуджарати
Name[km]=ហ្គុយ៉ារ៉ាទី
Name[kn]=ಗುಜರಾತಿ
Name[ko]=구자라트어
Name[ku]=Guyaratî
Name[lb]=Gujarati
Name[lt]=Gudžarati
Name[lv]=Gudžarati
Name[mai]=गुजराती
Name[mk]=Гујарати
Name[ml]=ഗുജറാത്തി
Name[mr]=गुजराती
Name[ms]=Gujarati
Name[nb]=Gujarati
Name[nds]=Gudscharati
Name[ne]=गुजराती
Name[nl]=Gujarati
Name[nn]=Gujarati
Name[oc]=Gujarati
Name[or]=Gujarati
Name[pa]=ਗੁਜਰਾਤੀ
Name[pl]=Gujarati
Name[ps]=ګجراتي
Name[pt]=Gujarati
Name[pt_BR]=Gujerati
Name[ro]=Gujarati
Name[ru]=Гуджарати
Name[se]=Gujaratigiella
Name[si]=ගුජරාටි
Name[sk]=Gudžarátčina
Name[sl]=gujarati
Name[sq]=Gujarati
Name[sr]=гуџарати
Name[sr@ijekavian]=гуџарати
Name[sr@ijekavianlatin]=gudžarati
Name[sr@latin]=gudžarati
Name[sv]=Gujarati
Name[ta]=குஜராத்தி
Name[te]=గుజరాతీ
Name[tg]=Гӯҷаратӣ
Name[th]=ภาษากูจาราตี
Name[tr]=Gujarati
Name[ug]=گۇجاراتچە
Name[uk]=Гуджараті
Name[uz]=Gujarati
Name[uz@cyrillic]=Гужарати
-Name[vi]=Gu-gia-ra-ti
+Name[vi]=Gujarati
Name[wa]=Goudjarati
-Name[x-test]=xxGujaratixx
Name[xh]=Gujarati
+Name[x-test]=xxGujaratixx
Name[zh_CN]=古吉拉特语
Name[zh_HK]=古吉拉特語
Name[zh_TW]=古吉拉特語
[gv]
Name=Manx
Name[af]=Manx
Name[ar]=مانكس
Name[as]=মানক্স
Name[ast]=Manés
Name[be]=Мэнкс
Name[be@latin]=Manx
Name[bg]=Манкски
Name[bn]=মানক্স
Name[bn_IN]=ম্যাঙ্গস
Name[br]=Manav
Name[bs]=Manski(Keltski)
Name[ca]=Manx
Name[ca@valencia]=Manx
Name[cs]=Manx
Name[csb]=Manx
Name[cy]=Manneg
Name[da]=Mansk
Name[de]=Manx
Name[el]=Manx (Gaelg)
Name[en_GB]=Manx
Name[eo]=Manksa
Name[es]=Manés
Name[et]=Mänksi
Name[eu]=Manera
Name[fa]=مانکسی
Name[fi]=Manx
Name[fr]=Mannois
Name[fy]=Manx
Name[ga]=Manainnis
Name[gl]=Manés
Name[gu]=માન્ક્ષ
Name[he]=מאנית
Name[hi]=मांक्स
Name[hne]=मांक्स
Name[hr]=Manx
Name[hsb]=Manxowsce
Name[hu]=Manx
Name[ia]=Manx
Name[id]=Manx
Name[is]=Manx
Name[it]=Mannese
Name[ja]=マン島語
Name[kk]=Манксша
Name[km]=ម៉ង
Name[kn]=ಮಾನ್ಕ್ಸ್
Name[ko]=망스어
Name[ku]=Manks
Name[lb]=Manx
Name[lt]=Manx
Name[lv]=Meniešu
Name[mai]=मांक्स
Name[mk]=Манкс
Name[ml]=മാന്‍ക്സ്
Name[mr]=मांक्स
Name[ms]=Manx
Name[nb]=Manx
Name[nds]=Manx
Name[ne]=म्याङ्क्स
Name[nl]=Manx
Name[nn]=Manx
Name[or]=Manx
Name[pa]=ਮਾਲਸ
Name[pl]=Manx
Name[ps]=مېنکس
Name[pt]=Manx
Name[pt_BR]=Manês
Name[ro]=Manxă
Name[ru]=Мэнский
Name[se]=Mánksagiella
Name[si]=මැන්ක්ස්
Name[sk]=Mančina
Name[sl]=manx
Name[sq]=Manks
Name[sr]=манкс
Name[sr@ijekavian]=манкс
Name[sr@ijekavianlatin]=manks
Name[sr@latin]=manks
Name[sv]=Manx
Name[ta]=மான்க்ஸ்
Name[te]=మేన్క్స్
Name[tg]=Манксӣ
Name[th]=ภาษาแมงซ์
Name[tr]=Manx
Name[ug]=مانكىسچە
Name[uk]=Манкс
Name[uz]=Manks
Name[uz@cyrillic]=Манкс
-Name[vi]=Man-xợ
+Name[vi]=Manx
Name[wa]=Gayel del Iye di Man
-Name[x-test]=xxManxxx
Name[xh]=Manx
+Name[x-test]=xxManxxx
Name[zh_CN]=马恩语
Name[zh_HK]=曼島語
Name[zh_TW]=曼島語
[ha]
Name=Hausa
Name[af]=Hausa
Name[ar]=هوس
Name[as]=হাউছা
Name[ast]=Hausa
Name[be]=Хаўса
Name[be@latin]=Hausa
Name[bg]=Хауса
Name[bn]=হাউসা
Name[bn_IN]=হাওসা
Name[br]=Haousa
Name[bs]=Hausa
Name[ca]=Haussa
Name[ca@valencia]=Haussa
Name[cs]=Hausa
Name[csb]=Hausa
Name[cy]=Hausa
Name[da]=Hausa
Name[de]=Hausa
Name[el]=Hausa
Name[en_GB]=Hausa
Name[eo]=Haŭsa
Name[es]=Hausa
Name[et]=Hausa
Name[eu]=Hausa
Name[fa]=هوسا
Name[fi]=Hausa
Name[fr]=Haoussa
Name[fy]=Hausa
Name[ga]=Hásais
Name[gl]=Hausa
Name[gu]=હુસા
Name[he]=האוסה
Name[hi]=हौसा
Name[hne]=हौसा
Name[hr]=Hausa
Name[hsb]=Hausasce
Name[hu]=Hausa
Name[ia]=Hausa
Name[id]=Hausa
Name[is]=Hausa
Name[it]=Hausa
Name[ja]=ハウサ語
Name[kk]=Хауса
Name[km]=ហូសា
Name[kn]=ಹೌಸಾ
Name[ko]=하우사어
Name[ku]=Hawsa
Name[lb]=Haussa-Sprooch
Name[lt]=Hausa
Name[lv]=Hausu
Name[mai]=हौसा
Name[mk]=Хауса
Name[ml]=ഹൌസാ
Name[mr]=हौसा
Name[ms]=Hausa
Name[nb]=Hausa
Name[nds]=Haussa
Name[ne]=हउसा
Name[nl]=Hausa
Name[nn]=Hausa
Name[oc]=Hausa
Name[or]=Hausa
Name[pa]=ਹਾਉਸਾ
Name[pl]=Hausa
Name[ps]=هاوسا
Name[pt]=Hausa
Name[pt_BR]=Haússa
Name[ro]=Hausă
Name[ru]=Хауса
Name[se]=Hausagiella
Name[si]=හවුසා
Name[sk]=Hauština
Name[sl]=hausa
Name[sq]=Hausa
Name[sr]=хауса
Name[sr@ijekavian]=хауса
Name[sr@ijekavianlatin]=hausa
Name[sr@latin]=hausa
Name[sv]=Hausa
Name[ta]=ஹவுசா
Name[te]=హౌసా
Name[tg]=Хаусагӣ
Name[th]=ภาษาเฮาซา
Name[tr]=Hausa
Name[ug]=خائۇساچە
Name[uk]=Гауса
Name[uz]=Xausa
Name[uz@cyrillic]=Хауса
-Name[vi]=Hau-sa
+Name[vi]=Hausa
Name[wa]=Hawsa
-Name[x-test]=xxHausaxx
Name[xh]=Hausa
+Name[x-test]=xxHausaxx
Name[zh_CN]=豪撒语
Name[zh_HK]=豪薩語
Name[zh_TW]=豪薩語
[he]
Name=Hebrew
Name[af]=Hibreüs
Name[ar]=عبرية
Name[as]=হিব্ৰিউ
Name[ast]=Hebreu
Name[be]=Габрэйская
Name[be@latin]=Habrejskaja
Name[bg]=Иврит
Name[bn]=হীব্রু
Name[bn_IN]=হিব্রু
Name[br]=Hebreeg
Name[bs]=Hebrejski
Name[ca]=Hebreu
Name[ca@valencia]=Hebreu
Name[cs]=Hebrejský
Name[csb]=Hebrejsczi
Name[cy]=Iddeweg
Name[da]=Hebraisk
Name[de]=Hebräisch
Name[el]=Εβραϊκά
Name[en_GB]=Hebrew
Name[eo]=Hebrea
Name[es]=Hebreo
Name[et]=Heebrea
Name[eu]=Hebreera
Name[fa]=عبری
Name[fi]=Heprea
Name[fr]=Hébreu
Name[fy]=Hebrieuwsk
Name[ga]=Eabhrais
Name[gl]=Hebreu
Name[gu]=હિબ્રુ
Name[he]=עברית
Name[hi]=हिब्रू
Name[hne]=हिब्रू
Name[hr]=Hebrejski
Name[hsb]=Hebrejsce
Name[hu]=Héber
Name[ia]=Hebreo
Name[id]=Ibrani
Name[is]=Hebreska
Name[it]=Ebraico
Name[ja]=ヘブライ語
Name[kk]=Ивритше
Name[km]=ហេប្រ៊ូ
Name[kn]=ಹೀಬ್ರೂ
Name[ko]=히브리어
Name[ku]=Îbranî
Name[lb]=Hebräesch
Name[lt]=Hebrajų
Name[lv]=Ivrits
Name[mai]=हिब्रू
Name[mk]=Еврејски
Name[ml]=ഹീബ്രു
Name[mr]=हिब्रू
Name[ms]=Hebrew
Name[nb]=Hebraisk
Name[nds]=Hebrääsch
Name[ne]=हिब्रु
Name[nl]=Hebreeuws
Name[nn]=Hebraisk
Name[oc]=Ebrèu
Name[or]=Hebrew
Name[pa]=ਹੈਬਰਿਊ
Name[pl]=Hebrajski
Name[ps]=هېبرو
Name[pt]=Hebreu
Name[pt_BR]=Hebraico
Name[ro]=Ebraică
Name[ru]=Иврит
Name[se]=Hebreagiella
Name[si]=හීබෲ
Name[sk]=Hebrejčina
Name[sl]=hebrejsko
Name[sq]=Hebraike
Name[sr]=хебрејски
Name[sr@ijekavian]=хебрејски
Name[sr@ijekavianlatin]=hebrejski
Name[sr@latin]=hebrejski
Name[sv]=Hebreiska
Name[ta]=எபிரேயம்
Name[te]=హీబ్రూ
Name[tg]=Яҳудӣ
Name[th]=ภาษาฮิบรู
Name[tr]=İbranice
Name[ug]=ئىبرانىچە
Name[uk]=Єврейська
Name[uz]=Yahudiycha
Name[uz@cyrillic]=Яҳудийча
-Name[vi]=Do-thái
+Name[vi]=Do Thái
Name[wa]=Ebreu
-Name[x-test]=xxHebrewxx
Name[xh]=Isihebhere
+Name[x-test]=xxHebrewxx
Name[zh_CN]=希伯来语
Name[zh_HK]=希伯來語
Name[zh_TW]=希伯來語
[hi]
Name=Hindi
Name[af]=Hindi
Name[ar]=هندية
Name[as]=হিন্দী
Name[ast]=Hindí
Name[be]=Хіндзі
Name[be@latin]=Hindzi
Name[bg]=Хинди
Name[bn]=হিন্দী
Name[bn_IN]=হিন্দি
Name[br]=Hindi
Name[bs]=Hindu
Name[ca]=Hindi
Name[ca@valencia]=Hindi
Name[cs]=Hindský
Name[csb]=Hindi
Name[cy]=Hindw^
Name[da]=Hindi
Name[de]=Hindi
Name[el]=Hindi
Name[en_GB]=Hindi
Name[eo]=Hinda
Name[es]=Hindi
Name[et]=Hindi
Name[eu]=Hindi
Name[fa]=هندی
Name[fi]=Hindi
Name[fr]=Hindi
Name[fy]=Hindy
Name[ga]=Hiondúis
Name[gl]=Hindi
Name[gu]=હિન્દી
Name[he]=הינדית
Name[hi]=हिन्दी
Name[hne]=हिन्दी
Name[hr]=Hinduski
Name[hsb]=Hindisce
Name[hu]=Hindi
Name[hy]=Հինդի
Name[ia]=Hindi
Name[id]=Hindi
Name[is]=Hindi
Name[it]=Hindi
Name[ja]=ヒンディー語
Name[kk]=Хинди
Name[km]=ហិណ្ឌូ
Name[kn]=ಹಿಂದಿ
Name[ko]=힌디어
Name[ku]=Hîndî
Name[lb]=Hindi
Name[lt]=Hindi
Name[lv]=Hindu
Name[mai]=हिन्दी
Name[mk]=Хинди
Name[ml]=ഹിന്ദി
Name[mr]=हिंदी
Name[ms]=Hindi
Name[nb]=Hindi
Name[nds]=Hindi
Name[ne]=हिन्दी
Name[nl]=Hindi
Name[nn]=Hindi
Name[oc]=Indi
Name[or]=Hindi
Name[pa]=ਹਿੰਦੀ
Name[pl]=Hindi
Name[ps]=هندي
Name[pt]=Hindu
Name[pt_BR]=Hindi
Name[ro]=Hindusă
Name[ru]=Хинди
Name[se]=Hindigiella
Name[si]=හින්දි
Name[sk]=Hindčina
Name[sl]=hindujsko
Name[sq]=Hindi
Name[sr]=хинду
Name[sr@ijekavian]=хинду
Name[sr@ijekavianlatin]=hindu
Name[sr@latin]=hindu
Name[sv]=Hindi
Name[ta]=ஹிந்தி
Name[te]=హింది
Name[tg]=Ҳиндӣ
Name[th]=ภาษาฮินดี
Name[tr]=Hintçe
Name[ug]=ھىندىچە
Name[uk]=Хінді
Name[uz]=Hindcha
Name[uz@cyrillic]=Ҳиндча
-Name[vi]=Hin-đi
+Name[vi]=Hindi
Name[wa]=Hindi
-Name[x-test]=xxHindixx
Name[xh]=Hindi
+Name[x-test]=xxHindixx
Name[zh_CN]=印度语
Name[zh_HK]=北印度語
Name[zh_TW]=北印度語
[hne]
Name=Chhattisgarhi
Name[ar]=تشهتسجريا
Name[ast]=Chhattisgarhi
Name[be@latin]=Chhattisgarhi
Name[bg]=Чхатисгархи
Name[bn]=ছত্তিসগড়ি
Name[bs]=Čatigarski
Name[ca]=Chattisgarbi
Name[ca@valencia]=Chattisgarbi
Name[cs]=Chhattisgarhi
Name[da]=Chhattisgarhi
Name[de]=Chhattisgarhi
Name[el]=Χατισγκαρχί
Name[en_GB]=Chhattisgarhi
Name[eo]=Chhattisgarhi
Name[es]=Chhattisgarhi
Name[et]=Chhattisgarhi
Name[eu]=Chhattisgarhi
Name[fi]=Chhattisgarhi
Name[fr]=Chhattisgarhi
Name[fy]=Chhattisgarhi
Name[ga]=Chaitisgharhís
Name[gl]=Chhattisgarhi
Name[gu]=છત્તિસગઢી
Name[he]=צ'האטיסגארי
Name[hr]=Chhattisgarhi
Name[hu]=Cshattíszgarhi
Name[ia]=Chhattisgarhi
Name[id]=Chhattisgarhi
Name[is]=Chhattisgarhi
Name[it]=Chhattisgarhi
Name[ja]=チャッティースガリー語
Name[kk]=Чхаттисгарти
Name[km]=ឆាយទីសហ្គាស៊ី
Name[kn]=ಛತ್ತೀಸ್ಗರ್ಹಿ
Name[ko]=차티스가르어
Name[ku]=Şattisgarî
Name[lv]=Čatisgari
Name[ml]=ചത്തീസ്ഗരി
Name[ms]=Chhattisgarhi
Name[nb]=Chhattisgarhi
Name[nds]=Chhattisgarhi
Name[nl]=Chhattisgarhi
Name[nn]=Tsjhattisgarhi
Name[pa]=ਛੱਤੀਸਗੜ੍ਹੀ
Name[pl]=Chhattisgarhi
Name[pt]=Chhattisgarhi
Name[pt_BR]=Chhattisgarhi
Name[ro]=Chhattisgarhi
Name[ru]=Чхаттисгархи
Name[se]=Čattisgarhigiella
Name[sk]=Čatísgarh
Name[sq]=Chhattisgarhi
Name[sr]=чатисгархи
Name[sr@ijekavian]=чатисгархи
Name[sr@ijekavianlatin]=čatisgarhi
Name[sr@latin]=čatisgarhi
Name[sv]=Chhattisgarhi
Name[ta]=சத்தீஸ்கரி
Name[tg]=Chhattisgarhi
Name[th]=ภาษาฉัตติสครห์
Name[tr]=Chhattisgarhi
Name[ug]=چاتتىسگارھىچە
Name[uk]=Чхатісгарі
+Name[vi]=Chhattisgarhi
Name[wa]=Chhattisgarhi
Name[x-test]=xxChhattisgarhixx
Name[zh_CN]=恰蒂斯加尔语
Name[zh_TW]=Chhattisgarhi
[ho]
Name=Hiri Motu
Name[af]=Hiri Motu
Name[ar]=هيري موتو
Name[as]=হিৰি মোটু
Name[ast]=Hiri Motu
Name[be]=Хірымоту
Name[be@latin]=Hiri Motu
Name[bg]=Хири Моту
Name[bn]=হিরি মোটু
Name[bn_IN]=হিরি মোটু
Name[br]=Hiri Motu
Name[bs]=Hiri Motu
Name[ca]=Hiri Motu
Name[ca@valencia]=Hiri Motu
Name[cs]=Hiri Motu
Name[csb]=Hiri Motu
Name[cy]=Hiri Motu
Name[da]=Hiri Motu
Name[de]=Hiri Motu
Name[el]=Hiri Motu
Name[en_GB]=Hiri Motu
Name[eo]=Hirimotua
Name[es]=Hiri Motu
Name[et]=Hiri Motu
Name[eu]=Hiri Motu
Name[fa]=هیری موتو
Name[fi]=Hiri-motu
Name[fr]=Hiri motu
Name[fy]=Hiri Motu
Name[ga]=Hírí-Mótúis
Name[gl]=Hiri Motu
Name[gu]=હીરી મોટુ
Name[he]=הירי מוטו
Name[hi]=हिरी मोतू
Name[hne]=हिरी मोतू
Name[hr]=Hiri Motu
Name[hsb]=Hiri Motusce
Name[hu]=Hiri motu
Name[ia]=Hiri Motu
Name[id]=Hiri Motu
Name[is]=Hiri Motu
Name[it]=Hiri motu
Name[ja]=ヒリモトゥ語
Name[kk]=Хири Моту
Name[km]=ហ៊ីរី ម៉ូទូ
Name[kn]=ಹೀರೀ ಮೋಟೂ
Name[ko]=히리 모투어
Name[ku]=Hîrî Motu
Name[lb]=Hiri-Motu
Name[lt]=Hiri Motu
Name[lv]=Hirimotu
Name[mai]=हिरी मोतू
Name[mk]=Хири Моту
Name[ml]=ഹിരി മൊട്ടു
Name[mr]=हिरी मोतू
Name[ms]=Hiri Motu
Name[nb]=Hiri Motu
Name[nds]=Hiri Motu
Name[ne]=हिरी मोतु
Name[nl]=Hiri Motu
Name[nn]=Hiri motu
Name[oc]=Iri Motu
Name[or]=Hiri Motu
Name[pa]=ਹੀਰੀ ਮੋਟੂ
Name[pl]=Hiri Motu
Name[ps]=هيري موټو
Name[pt]=Hiri Motu
Name[pt_BR]=Hiri Motu
Name[ro]=Hiri Motu
Name[ru]=Хири-моту
Name[se]=Hiri Motu-giella
Name[si]=හිරි මොටු
Name[sk]=Hiri Motu
Name[sl]=hiri motu
Name[sq]=Hiri Motu
Name[sr]=хири‑моту
Name[sr@ijekavian]=хири‑моту
Name[sr@ijekavianlatin]=hiri‑motu
Name[sr@latin]=hiri‑motu
Name[sv]=Hirimotu
Name[ta]=ஹிரி மோடு
Name[te]=హిరి మోటు
Name[tg]=Хири Моту
Name[th]=ภาษาฮิริโมตู
Name[tr]=Hiri Motu
Name[ug]=خىرى موتۇچە
Name[uk]=Хірімоту
Name[uz]=Xiri Motu
Name[uz@cyrillic]=Хири Моту
-Name[vi]=Hi-ri-mô-tu
+Name[vi]=Hiri Motu
Name[wa]=Hiri Motu
-Name[x-test]=xxHiri Motuxx
Name[xh]=Hiri Motu
+Name[x-test]=xxHiri Motuxx
Name[zh_CN]=希里莫图语
Name[zh_HK]=Hiri Motu語
Name[zh_TW]=Hiri Motu語
[hr]
Name=Croatian
Name[af]=Kroatiese
Name[ar]=كرواتية
Name[as]=ক্ৰোয়েচিয়ান
Name[ast]=Croata
Name[be]=Харвацкая
Name[be@latin]=Charvackaja
Name[bg]=Хърватски
Name[bn]=ক্রোয়েশীয়
Name[bn_IN]=ক্রোয়েশিয়ান
Name[br]=Kroateg
Name[bs]=Hrvatski
Name[ca]=Croat
Name[ca@valencia]=Croat
Name[cs]=Chorvatský
Name[csb]=Chòrwacczi
Name[cy]=Croatieg
Name[da]=Kroatisk
Name[de]=Kroatisch
Name[el]=Κροατικά
Name[en_GB]=Croatian
Name[eo]=Kroata
Name[es]=Croata
Name[et]=Horvaadi
Name[eu]=Kroaziera
Name[fa]=کروواسیایی
Name[fi]=Kroatia
Name[fr]=Croate
Name[fy]=Kroatysk
Name[ga]=Cróitis
Name[gl]=Croata
Name[gu]=ક્રોએશિયન
Name[he]=קרואטית
Name[hi]=क्रोएशियाई
Name[hne]=क्रोएसियाई
Name[hr]=Hrvatski
Name[hsb]=Chorwatsce
Name[hu]=Horvát
Name[ia]=Croato
Name[id]=Kroatia
Name[is]=Króatíska
Name[it]=Croato
Name[ja]=クロアチア語
Name[kk]=Хорватша
Name[km]=ក្រូអាត
Name[kn]=ಕ್ರೊಯೇಶಿಯನ್
Name[ko]=크로아티아어
Name[ku]=Kroatî
Name[lb]=Kroatesch
Name[lt]=Kroatų
Name[lv]=Horvātu
Name[mai]=क्रोएशियाइ
Name[mk]=Хрватски
Name[ml]=ക്രോയേഷ്യന്‍
Name[mr]=क्रोएशीयन
Name[ms]=Croatia
Name[nb]=Kroatisk
Name[nds]=Kroaatsch
Name[ne]=क्रोयसियाली
Name[nl]=Kroatisch
Name[nn]=Kroatisk
Name[oc]=Croat
Name[or]=Croatian
Name[pa]=ਕਰੋਟੀਅਨ
Name[pl]=Chorwacki
Name[ps]=کروټيايي
Name[pt]=Croata
Name[pt_BR]=Croata
Name[ro]=Croată
Name[ru]=Хорватский
Name[se]=Kroatiagiella
Name[si]=ක්‍රොඒෂියානු
Name[sk]=Chorvátčina
Name[sl]=hrvaško
Name[sq]=Kroate
Name[sr]=хрватски
Name[sr@ijekavian]=хрватски
Name[sr@ijekavianlatin]=hrvatski
Name[sr@latin]=hrvatski
Name[sv]=Kroatiska
Name[ta]=குரொயேசியன்
Name[te]=క్రొయెషియన్
Name[tg]=Хорватӣ
Name[th]=ภาษาโครเอเชีย
Name[tr]=Hırvatça
Name[ug]=خورۋاتچە
Name[uk]=Хорватська
Name[uz]=Xorvatcha
Name[uz@cyrillic]=Хорватча
-Name[vi]=Cợ-rô-a-ti-a
+Name[vi]=Croatia
Name[wa]=Crowåte
-Name[x-test]=xxCroatianxx
Name[xh]=Croatian
+Name[x-test]=xxCroatianxx
Name[zh_CN]=克罗地亚语
Name[zh_HK]=克羅地亞語
Name[zh_TW]=克羅埃西亞語
[hsb]
Name=Upper Sorbian
Name[af]=Hoog Serbiese
Name[ar]=صوربية مرتفعة
Name[as]=আপাৰ ছৰ্বিয়ান
Name[ast]=Altu Sorbiu
Name[be]=Верхнялужыцкая
Name[be@latin]=Vierchnie-łužyckaja
Name[bg]=Горносорбийски
Name[bn]=উচ্চ সার্বীয়
Name[bn_IN]=আপার সোর্বিয়ান
Name[br]=Sorab uhel
Name[bs]=Gornjolužičkosrpski
Name[ca]=Alt sòrab
Name[ca@valencia]=Alt sòrab
Name[cs]=Hornolužicko srbský
Name[csb]=Górnosorbsczi
Name[cy]=Sorbieg Uchaf
Name[da]=Øvre sorbisk
Name[de]=Obersorbisch
Name[el]=Άνω Σορβικά
Name[en_GB]=Upper Sorbian
Name[eo]=Alta soraba
Name[es]=Alto sorabo
Name[et]=Ülemsorbi
Name[eu]=Goi Serbiera
Name[fa]=صربستان شمالی
Name[fi]=Yläsorbi
Name[fr]=Haut-Sorabe
Name[fy]=Heech Sorbysk
Name[ga]=Sorbais Uachtarach
Name[gl]=Alto sórabo
Name[gu]=અપર સોર્બિયન
Name[he]=סורבית עילית
Name[hi]=ऊपरी सॉर्बियाई
Name[hne]=ऊपरी सार्बियाई
Name[hr]=Gornjosrpski
Name[hsb]=Hornjoserbsce
Name[hu]=Felső szorb
Name[ia]=Alto Sorbiano
Name[id]=Sorbian Atas
Name[is]=Upper Sorbian
Name[it]=Alto sorabo
Name[ja]=上ソルブ語
Name[kk]=Жоғары сорбше
Name[km]=សូបៀន លើ
Name[kn]=ಮೇಲಿನ ಸೋರ್ಬಿಯನ್
Name[ko]=고지대 소르비아어
Name[ku]=Sorbiya Jorîn
Name[lb]=Uewersorbesch
Name[lt]=Upper Sorbian
Name[lv]=Augšsorbu
Name[mai]=ऊपरी सॉर्बियाइ
Name[mk]=Јужно лужички
Name[ml]=അപ്പര്‍ സോര്‍ബിയന്‍
Name[mr]=अप्पर सोर्बीयन
Name[ms]=Upper Sorbian
Name[nb]=Øvresorbisk
Name[nds]=Böversorbsch
Name[ne]=माथिल्लो सोर्बियाली
Name[nl]=Opper Sorbian
Name[nn]=Høgsorbisk
Name[or]=Upper Sorbian
Name[pa]=ਉੱਪਰੀ ਸਰਬੀਆਈ
Name[pl]=Górnołużycki
Name[ps]=بره سربي
Name[pt]=Sérvio de Cima
Name[pt_BR]=Alto Sorábio
Name[ro]=Sîrbă de Sus
Name[ru]=Верхнелужицкий
Name[se]=Bajil Sorbiagiella
Name[si]=ඉහළ සෝබියානු
Name[sk]=Hornolužická srbčina
Name[sl]=zgornjesorbijsko
Name[sq]=Sorbiane e Sipërme
Name[sr]=горњолужичкосрпски
Name[sr@ijekavian]=горњолужичкосрпски
Name[sr@ijekavianlatin]=gornjolužičkosrpski
Name[sr@latin]=gornjolužičkosrpski
Name[sv]=Högsorbiska
Name[ta]=செர்பியன் பெரியெழுத்து
Name[te]=అప్పర్ సొర్బియన్
Name[tg]=Сербияи Болоӣ
Name[th]=ภาษาซอร์เบียนตอนบน
Name[tr]=Yukarı Sırpça
Name[ug]=ئۈستى سوربىيانچە
Name[uk]=Верхньолужицька
Name[uz]=Yuqori Sorbcha
Name[uz@cyrillic]=Юқори Сорбча
-Name[vi]=Xoa-bi muộn
Name[wa]=Hôt sorbyin
Name[x-test]=xxUpper Sorbianxx
Name[zh_CN]=上索布语
Name[zh_TW]=塞爾維亞語
[hu]
Name=Hungarian
Name[af]=Hongaars
Name[ar]=مجرية
Name[as]=হাঙ্গেৰীয়
Name[ast]=Húngaru
Name[be]=Венгерская
Name[be@latin]=Vuhorskaja
Name[bg]=Унгарски
Name[bn]=হাঙ্গারীয়
Name[bn_IN]=হাঙ্গেরিয়ান
Name[br]=Hungareg
Name[bs]=Mađarski
Name[ca]=Hongarès
Name[ca@valencia]=Hongarés
Name[cs]=Maďarský
Name[csb]=Madżarsczi
Name[cy]=Hwngareg
Name[da]=Ungarsk
Name[de]=Ungarisch
Name[el]=Ουγγρικά
Name[en_GB]=Hungarian
Name[eo]=Hungara
Name[es]=Húngaro
Name[et]=Ungari
Name[eu]=Hungariera
Name[fa]=مجارستانی
Name[fi]=Unkari
Name[fr]=Hongrois
Name[fy]=Hongaarsk
Name[ga]=Ungáiris
Name[gl]=Húngaro
Name[gu]=હંગેરિયન
Name[he]=הונגרית
Name[hi]=हंगेरियाई
Name[hne]=हंगेरियाई
Name[hr]=Mađarski
Name[hsb]=Madźarsce
Name[hu]=Magyar
Name[ia]=Hungaro
Name[id]=Hungaria
Name[is]=Ungverska
Name[it]=Ungherese
Name[ja]=ハンガリー語
Name[kk]=Мажарша
Name[km]=ហុងគ្រី
Name[kn]=ಹಂಗೇರಿಯನ್
Name[ko]=헝가리어
Name[ku]=Macarî
Name[lb]=Ungaresch
Name[lt]=Vengrų
Name[lv]=Ungāru
Name[mai]=हंगेरियाई
Name[mk]=Унгарски
Name[ml]=ഹംഗേറിയന്‍
Name[mr]=हंगेरियाई
Name[ms]=Hungaria
Name[nb]=Ungarsk
Name[nds]=Ungaarsch
Name[ne]=हङ्गेरियन
Name[nl]=Hongaars
Name[nn]=Ungarsk
Name[oc]=Ongrés
Name[or]=Hungarian
Name[pa]=ਹੰਗਰੀਆਈ
Name[pl]=Węgierski
Name[ps]=هنګريايي
Name[pt]=Húngaro
Name[pt_BR]=Húngaro
Name[ro]=Maghiară
Name[ru]=Венгерский
Name[se]=Ungárgiella
Name[si]=හංගේරියානු
Name[sk]=Maďarčina
Name[sl]=madžarsko
Name[sq]=Hungareze
Name[sr]=мађарски
Name[sr@ijekavian]=мађарски
Name[sr@ijekavianlatin]=mađarski
Name[sr@latin]=mađarski
Name[sv]=Ungerska
Name[ta]=ஹங்கேரியன்
Name[te]=హంగెరియన్
Name[tg]=Венгерӣ
Name[th]=ภาษาฮังการี
Name[tr]=Macarca
Name[ug]=ماجارچە
Name[uk]=Угорська
Name[uz]=Vengrcha
Name[uz@cyrillic]=Венгрча
-Name[vi]=Hung-gia-lợi
+Name[vi]=Hung-ga-ry
Name[wa]=Hongrwès
-Name[x-test]=xxHungarianxx
Name[xh]=Hungarian
+Name[x-test]=xxHungarianxx
Name[zh_CN]=匈牙利语
Name[zh_HK]=匈牙利語
Name[zh_TW]=匈牙利語
[hy]
Name=Armenian
Name[af]=Armeens
Name[ar]=أرمنية
Name[as]=আৰ্মেনিয়ান
Name[ast]=Armeniu
Name[be]=Армянская
Name[be@latin]=Armianskaja
Name[bg]=Арменски
Name[bn]=আর্মেনীয়
Name[bn_IN]=আর্মেনিয়ান
Name[br]=Armenieg
Name[bs]=Jermenski
Name[ca]=Armeni
Name[ca@valencia]=Armeni
Name[cs]=Arménský
Name[csb]=Armeńsczi
Name[cy]=Armeineg
Name[da]=Armensk
Name[de]=Armenisch
Name[el]=Αρμενικά
Name[en_GB]=Armenian
Name[eo]=Armena
Name[es]=Armenio
Name[et]=Armeenia
Name[eu]=Armeniera
Name[fa]=ارمنی
Name[fi]=Armenia
Name[fr]=Arménien
Name[fy]=Armeensk
Name[ga]=Airméinis
Name[gl]=Armenio
Name[gu]=અર્મેનિયન
Name[he]=ארמנית
Name[hi]=आर्मेनियाई
Name[hne]=आर्मेनियाई
Name[hr]=Armenski
Name[hsb]=Armensce
Name[hu]=Örmény
Name[hy]=Հայերեն
Name[ia]=Armenio
Name[id]=Armenia
Name[is]=Armeskt
Name[it]=Armeno
Name[ja]=アルメニア語
Name[kk]=Арменше
Name[km]=អារមេនី
Name[kn]=ಅರ್ಮೇನಿಯನ್
Name[ko]=아르메니아어
Name[ku]=Ermenî
Name[lb]=Armenesch
Name[lt]=Armėnų
Name[lv]=Armēņu
Name[mai]=आर्मेनियाइ
Name[mk]=Ерменски
Name[ml]=അര്‍മീനിയന്‍
Name[mr]=आर्मेनिअन
Name[ms]=Armenia
Name[nb]=Armensk
Name[nds]=Armeensch
Name[ne]=आर्मेनियाली
Name[nl]=Armeens
Name[nn]=Armensk
Name[oc]=Armenian
Name[or]=Armenian
Name[pa]=ਅਰਮੀਆਈ
Name[pl]=Ormiański
Name[ps]=ارمينيايي
Name[pt]=Arménio
Name[pt_BR]=Armênio
Name[ro]=Armeană
Name[ru]=Армянский
Name[se]=Armeniagiella
Name[si]=ආමේනියානු
Name[sk]=Arménčina
Name[sl]=armensko
Name[sq]=Armenisht
Name[sr]=јерменски
Name[sr@ijekavian]=јерменски
Name[sr@ijekavianlatin]=jermenski
Name[sr@latin]=jermenski
Name[sv]=Armenska
Name[ta]=ஆர்மீனியன்
Name[te]=అర్మెనియన్
Name[tg]=Арманӣ
Name[th]=ภาษาอาร์เมเนีย
Name[tr]=Ermenice
Name[ug]=ئەرمەنچە
Name[uk]=Вірменська
Name[uz]=Armancha
Name[uz@cyrillic]=Арманча
-Name[vi]=Ác-mê-ni
+Name[vi]=Ác-mê-ni-a
Name[wa]=Årmenyin
-Name[x-test]=xxArmenianxx
Name[xh]=Armenian
+Name[x-test]=xxArmenianxx
Name[zh_CN]=亚美尼亚语
Name[zh_HK]=亞美尼亞語
Name[zh_TW]=亞美尼亞語
[hz]
Name=Herero
Name[af]=Herero
Name[ar]=هيريرو
Name[as]=হেৰেৰো
Name[ast]=Herero
Name[be]=Хэрэра
Name[be@latin]=Herero
Name[bg]=Хереро
Name[bn]=হেরেরো
Name[bn_IN]=হেরেরো
Name[br]=Herero
Name[bs]=Herero
Name[ca]=Herero
Name[ca@valencia]=Herero
Name[cs]=Herero
Name[csb]=Herero
Name[cy]=Hausa
Name[da]=Herero
Name[de]=Herero
Name[el]=Herero
Name[en_GB]=Herero
Name[eo]=Herera
Name[es]=Herero
Name[et]=Herero
Name[eu]=Herero
Name[fa]=هررو
Name[fi]=Herero
Name[fr]=Herero
Name[fy]=Herero
Name[ga]=Heiréiróis
Name[gl]=Herero
Name[gu]=હિરેરો
Name[he]=הררו
Name[hi]=हेरेरो
Name[hne]=हेरेरो
Name[hr]=Herero
Name[hsb]=Hererosce
Name[hu]=Hereró
Name[ia]=Herero
Name[id]=Herero
Name[is]=Herero
Name[it]=Herero
Name[ja]=ヘレロ語
Name[kk]=Хереро
Name[km]=ហេរេអូ
Name[kn]=ಹೆರೆರೊ
Name[ko]=헤레로어
Name[ku]=Herero
Name[lb]=Herero
Name[lt]=Herero
Name[lv]=Hereru
Name[mai]=हेरेरो
Name[mk]=Хереро
Name[ml]=ഹിരീരോ
Name[mr]=हेरेरो
Name[ms]=Herero
Name[nb]=Herero
Name[nds]=Herero
Name[ne]=हेरेरो
Name[nl]=Herero
Name[nn]=Herero
Name[oc]=Ebrèu
Name[or]=Herero
Name[pa]=ਹੀਰੀਰੋ
Name[pl]=Herero
Name[ps]=هېرېرو
Name[pt]=Herero
Name[pt_BR]=Hereró
Name[ro]=Hereră
Name[ru]=Эреро
Name[se]=Hererogiella
Name[si]=හෙරිරෝ
Name[sk]=Hererčina
Name[sl]=herero
Name[sq]=Herero
Name[sr]=хереро
Name[sr@ijekavian]=хереро
Name[sr@ijekavianlatin]=herero
Name[sr@latin]=herero
Name[sv]=Herero
Name[ta]=ஹெரெரோ
Name[te]=హెరెరో
Name[tg]=Херэро
Name[th]=ภาษาเฮอเรโร
Name[tr]=Herero
Name[ug]=خېرېروچە
Name[uk]=Гереро
Name[uz]=Xerero
Name[uz@cyrillic]=Хереро
-Name[vi]=He-re-rô
+Name[vi]=Herero
Name[wa]=Herero
-Name[x-test]=xxHereroxx
Name[xh]=Herero
+Name[x-test]=xxHereroxx
Name[zh_CN]=赫雷罗语
Name[zh_HK]=Herero語
Name[zh_TW]=Herero語
[ia]
Name=Interlingua
Name[af]=Interlingua
Name[ar]=إنترلينغوا
Name[as]=ইন্টাৰ্লিঙ্গুৱা
Name[ast]=Interlingua
Name[be]=Інтэрлінгуа
Name[be@latin]=Interlingua
Name[bg]=Интерлингва
Name[bn]=ইন্টারলিঙ্গুয়া
Name[bn_IN]=ইন্টারলিঙ্গুয়া
Name[br]=Interlingua
Name[bs]=Interlingua
Name[ca]=Interlingua
Name[ca@valencia]=Interlingua
Name[cs]=Interlingua
Name[csb]=Interlingua
Name[cy]=Interlingua
Name[da]=Interlingua
Name[de]=Interlingua
Name[el]=Interlingua
Name[en_GB]=Interlingua
Name[eo]=Interlingvao
Name[es]=Interlingua
Name[et]=Interlingua
Name[eu]=Interlingua
Name[fa]=میان زبانی
Name[fi]=Interlingua
Name[fr]=Interlingua
Name[fy]=Interlingua
Name[ga]=Idirtheanga
Name[gl]=Interlingua
Name[gu]=ઈન્ટરલીગુઆ
Name[he]=אינטרלינגואָה
Name[hi]=अंतरभाषी
Name[hne]=इंटरलिंगुआ
Name[hr]=Interlingua
Name[hsb]=Interlingua
Name[hu]=Interlingua
Name[ia]=Interlingua
Name[id]=Interlingua
Name[is]=Interlingua
Name[it]=Interlingua
Name[ja]=インターリンガ
Name[kk]=Интерлингва
Name[km]=អ៊ីងតឺលីងគ័រ
Name[kn]=ಇಂಟರ್ಲಿಂಗ್ಯುವಾ
Name[ko]=국제어 (Interlingua)
Name[ku]=înterlîngua
Name[lb]=Interlingua
Name[lt]=Interlingua
Name[lv]=Interlingva
Name[mai]=अंतरभाषायी
Name[mk]=Интерлингва
Name[ml]=എല്ലാ ഭാഷകളിലും
Name[mr]=अंतरभाषी
Name[ms]=Interlingua
Name[nb]=Interlingua
Name[nds]=Interlingua
Name[ne]=इन्टरलिङ्गुवा
Name[nl]=Interlingua
Name[nn]=Interlingua
Name[oc]=Interlinguà
Name[or]=Interlingua
Name[pa]=ਇੰਟਰਲੀਗੂਆ
Name[pl]=Interlingua
Name[ps]=اېنټرلېنګوا
Name[pt]=Interlingua
Name[pt_BR]=Interlíngua
Name[ro]=Interlingua
Name[ru]=Интерлингва
Name[se]=Interlingua
Name[sk]=Interlingua
Name[sl]=interlingua
Name[sq]=Interlingua
Name[sr]=интерлингва
Name[sr@ijekavian]=интерлингва
Name[sr@ijekavianlatin]=interlingva
Name[sr@latin]=interlingva
Name[sv]=Interlingua
Name[ta]=இன்டெர்லிங்குவா
Name[te]=ఇంటర్ లింగువా
Name[tg]=Забони миёнрав
Name[th]=ภาษานานาชาติ
Name[tr]=Interlingua
Name[ug]=خەلقئارا تىل
Name[uk]=Інтерлінгва
Name[uz]=Interlingua
Name[uz@cyrillic]=Интерлингуа
-Name[vi]=In-tợ-lin-gua
+Name[vi]=Interlingua
Name[wa]=Interlingua (noû latén)
-Name[x-test]=xxInterlinguaxx
Name[xh]=Interlingua
+Name[x-test]=xxInterlinguaxx
Name[zh_CN]=拉丁国际语
Name[zh_HK]=科技共通語
Name[zh_TW]=科技共通語
[id]
Name=Indonesian
Name[af]=Indonesië
Name[ar]=إندونيسية
Name[as]=ইন্ডোনেচীয়
Name[ast]=Indonesiu
Name[be]=Інданэзійская
Name[be@latin]=Indanezijskaja
Name[bg]=Индонезийски
Name[bn]=ইন্দোনেশীয়
Name[bn_IN]=ইন্দোনেশিয়ান
Name[br]=Indoneseg
Name[bs]=Indonezijski
Name[ca]=Indonesi
Name[ca@valencia]=Indonesi
Name[cs]=Indonéský
Name[csb]=Indonezëjsczi
Name[cy]=Indonesieg
Name[da]=Indonesisk
Name[de]=Indonesisch
Name[el]=Ινδονησιακά
Name[en_GB]=Indonesian
Name[eo]=Indonezia
Name[es]=Indonesio
Name[et]=Indoneesia
Name[eu]=Indonesiera
Name[fa]=اندونزیایی
Name[fi]=Indonesia
Name[fr]=Indonésien
Name[fy]=Yndonesysk
Name[ga]=Indinéisis
Name[gl]=Indonesio
Name[gu]=ઈન્ડોનેશિયન
Name[he]=אינדונזית
Name[hi]=इंडोनेशियाई
Name[hne]=इंडोनेसियाई
Name[hr]=Indonezijski
Name[hsb]=Indonezisce
Name[hu]=Indonéz
Name[ia]=Indonesiano
Name[id]=Indonesia
Name[is]=Indónesíska
Name[it]=Indonesiano
Name[ja]=インドネシア語
Name[kk]=Индонезияша
Name[km]=ឥណ្ឌូនេស៊ី
Name[kn]=ಇಂಡೋನೇಷಿಯನ್
Name[ko]=인도네시아어
Name[ku]=Endonezî
Name[lb]=Indonesesch
Name[lt]=Indoneziečių
Name[lv]=Indonēziešu
Name[mai]=इंडोनेशियन
Name[mk]=Индонезиски
Name[ml]=ഇന്തോനേഷ്യന്‍
Name[mr]=इंडोनेशियाई
Name[ms]=Indonesia
Name[nb]=Indonesisk
Name[nds]=Indoneesch
Name[ne]=इन्डोनेसियाली
Name[nl]=Indonesisch
Name[nn]=Indonesisk
Name[oc]=Indonesian
Name[or]=Indonesian
Name[pa]=ਇੰਡੋਨੇਸ਼ੀਆਈ
Name[pl]=Indonezyjski
Name[ps]=انډونيشيايي
Name[pt]=Indonésio
Name[pt_BR]=Indonésio
Name[ro]=Indoneziană
Name[ru]=Индонезийский
Name[se]=Indonesiagiella
Name[si]=ඉන්දුනීසියානු
Name[sk]=Indonézština
Name[sl]=indonezijsko
Name[sq]=Indoneziane
Name[sr]=индонезијски
Name[sr@ijekavian]=индонезијски
Name[sr@ijekavianlatin]=indonezijski
Name[sr@latin]=indonezijski
Name[sv]=Indonesiska
Name[ta]=இந்தோனீசியன்
Name[te]=ఇన్డొనెషియన్
Name[tg]=Индонезӣ
Name[th]=ภาษาอินโดนีเซีย
Name[tr]=İndonezya Dili
Name[ug]=ھىندونېزىيەچە
Name[uk]=Індонезійська
Name[uz]=Indonezcha
Name[uz@cyrillic]=Индонезча
-Name[vi]=Nam-dương
+Name[vi]=Indonesia
Name[wa]=Indonezyin
-Name[x-test]=xxIndonesianxx
Name[xh]=Indonesian
+Name[x-test]=xxIndonesianxx
Name[zh_CN]=印度尼西亚语
Name[zh_HK]=印尼語
Name[zh_TW]=印尼語
[ie]
Name=Interlingue
Name[af]=Interlingue
Name[ar]=إنترلينغوي
Name[as]=ইন্টাৰলিঙ্গ
Name[ast]=Interlingue
Name[be]=Інтэрлінг
Name[be@latin]=Interlingue
Name[bg]=Оксидентал
Name[bn]=ইন্টারলিং
Name[bn_IN]=ইন্টারলিঙ্গুই
Name[br]=Interlingeg
Name[bs]=Interlingva
Name[ca]=Interlingue
Name[ca@valencia]=Interlingue
Name[cs]=Interlingue
Name[csb]=Interlingue
Name[cy]=Interlingue
Name[da]=Interlingue
Name[de]=Interlingue
Name[el]=Interlingue
Name[en_GB]=Interlingue
Name[eo]=Interlingveo
Name[es]=Idioma occidental
Name[et]=Interlingue
Name[eu]=Interlingue
Name[fa]=میان زبانی
Name[fi]=Interlingue
Name[fr]=Interlingue
Name[fy]=Interlingua
Name[ga]=Idirtheanga iartharach
Name[gl]=Interlingua
Name[gu]=ઈન્ટરલીંગ
Name[he]=אינטרלינגואֶה
Name[hi]=इंटरलिंग
Name[hne]=इंटरलिंग
Name[hr]=Interlingue
Name[hsb]=Interlingue
Name[hu]=Interlingue
Name[ia]=Interlingue
Name[id]=Interlingue
Name[is]=Interlingue
Name[it]=Interlingue
Name[ja]=インターリング
Name[kk]=Интерлигве
Name[km]=អ៊ីងតឺលីង
Name[kn]=ಇಂಟರ್ಲಿಂಗ್ಯುವೇ
Name[ko]=국제어 (Interlingue)
Name[ku]=Înterlîngue
Name[lb]=Interlingua
Name[lt]=Interlingue
Name[lv]=Interlingve
Name[mai]=इंटरलिंग
Name[mk]=Интерлингва
Name[ml]=എല്ലാ ഭാഷയിലും
Name[mr]=अंतरभाषी
Name[ms]=Interlingue
Name[nb]=Interlingue
Name[nds]=Interlingue
Name[ne]=इन्टरलिङ्गुवा
Name[nl]=Interlingue
Name[nn]=Interlingue
Name[or]=Interlingue
Name[pa]=ਇੰਟਰਈਨੂਗੂਈ
Name[pl]=Interlingue
Name[ps]=اېنټرلېنګ
Name[pt]=Interlingue
Name[pt_BR]=Interlingue
Name[ro]=Interlingue
Name[ru]=Окциденталь
Name[se]=Interlingue
Name[sk]=Interlingue
Name[sl]=interlingue
Name[sq]=Interlingue
Name[sr]=интерлингве
Name[sr@ijekavian]=интерлингве
Name[sr@ijekavianlatin]=interlingve
Name[sr@latin]=interlingve
Name[sv]=Interlingua
Name[ta]=இன்டெர்லிங்குவே
Name[te]=ఇంటర్ లింగె
Name[tg]=Забони миёнрав
Name[th]=ภาษาอินเทอร์ลิงก์
Name[tr]=Interlingue
Name[ug]=خەلقئارا تىل
Name[uk]=Окциденталь
Name[uz]=Interlingue
Name[uz@cyrillic]=Интерлингуе
-Name[vi]=In-tợ-lin-guợ
+Name[vi]=Interlingue
Name[wa]=Interlingue
-Name[x-test]=xxInterlinguexx
Name[xh]=Interlingue
+Name[x-test]=xxInterlinguexx
Name[zh_CN]=国际语
Name[zh_HK]=Interlingue語
Name[zh_TW]=Interlingue語
[ik]
Name=Inupiaq
Name[af]=Inupiaq
Name[ar]=إنوبياك
Name[as]=ইনুপিয়াক
Name[ast]=Inupiaq
Name[be]=Інупіцкая
Name[be@latin]=Inupiaq
Name[bg]=Инупиак
Name[bn]=ইনুপিয়াক
Name[bn_IN]=ইনুপিয়াক
Name[br]=Inupiak
Name[bs]=Inupijski
Name[ca]=Inupiaq
Name[ca@valencia]=Inupiaq
Name[cs]=Inupiaq
Name[csb]=Inupiaq
Name[cy]=Inupiaq
Name[da]=Inupiaq
Name[de]=Inupiaq
Name[el]=Inupiaq
Name[en_GB]=Inupiaq
Name[eo]=Inupiaka
Name[es]=Inupiaq
Name[et]=Inupiaq
Name[eu]=Inupiaq
Name[fa]=اینوپیاک
Name[fi]=Inupiatun
Name[fr]=Inupiaq
Name[fy]=Inupiaq
Name[ga]=Iniúipiacais
Name[gl]=Inupiaq
Name[gu]=ઇનુપીઆક
Name[he]=אינופיאק
Name[hi]=इनुपिआक
Name[hne]=इनुपिआक
Name[hr]=Inupiaq
Name[hsb]=Inupiaksce
Name[hu]=Inupiak
Name[ia]=Inupiaq
Name[id]=Inupiaq
Name[is]=Inupiaq
Name[it]=Inupiak
Name[ja]=イヌピアック語
Name[kk]=Инупиакша
Name[km]=អ៊ីនូពីយ៉ាក
Name[kn]=ಇನೂಪಿಯಾಕ್
Name[ko]=이누피아크어
Name[ku]=Înupiyaq
Name[lb]=Inupiaq
Name[lt]=Inupiaq
Name[lv]=Inupiaku
Name[mai]=इनुपिआक
Name[mk]=Инупиак
Name[ml]=ഇനൂപിയാക്
Name[mr]=इनुपिआक
Name[ms]=Inupiaq
Name[nb]=Inupiaq
Name[nds]=Inupiak
Name[ne]=इनुपियाक
Name[nl]=Inupiaq
Name[nn]=Inupiak
Name[or]=Inupiaq
Name[pa]=ਇਨਪੀਕਾਉ
Name[pl]=Inupiaq
Name[ps]=اېنوپيک
Name[pt]=Inupiaq
Name[pt_BR]=Inupiaq
Name[ro]=Inupiacă
Name[ru]=Инупиак
Name[se]=Inupiaqgiella
Name[si]=ඉනුපියැක්
Name[sk]=Inupiakčina
Name[sl]=inupiaq
Name[sq]=Inupiaq
Name[sr]=инупијак
Name[sr@ijekavian]=инупијак
Name[sr@ijekavianlatin]=inupijak
Name[sr@latin]=inupijak
Name[sv]=Inupiaq
Name[ta]=இனுபியாக்
Name[te]=ఇనుపియాక్
Name[tg]=Инупиакӣ
Name[th]=ภาษาอินุพิอัค
Name[tr]=Inupiaq
-Name[ug]=ئىنۇپىكچە
+Name[ug]=ئىنۇپىئاقچە
Name[uk]=Інупіак
Name[uz]=Inupiak
Name[uz@cyrillic]=Инупиак
-Name[vi]=I-nu-piac
+Name[vi]=Inupiaq
Name[wa]=Inyupiak
-Name[x-test]=xxInupiaqxx
Name[xh]=Inupiaq
+Name[x-test]=xxInupiaqxx
Name[zh_CN]=因纽皮特语
Name[zh_HK]=Inupiaq語
Name[zh_TW]=Inupiaq語
[io]
Name=Ido
Name[af]=Ido
Name[ar]=إيدو
Name[as]=ইদো
Name[ast]=Ido
Name[be]=Ідо
Name[be@latin]=Ido
Name[bg]=Идо
Name[bn]=ইডো
Name[bn_IN]=আইডো
Name[br]=Ido
Name[bs]=Ido
Name[ca]=Ido
Name[ca@valencia]=Ido
Name[cs]=Ido
Name[csb]=Ido
Name[cy]=Ido
Name[da]=Ido
Name[de]=Ido
Name[el]=Ido
Name[en_GB]=Ido
Name[eo]=Ido
Name[es]=Ido
Name[et]=Ido
Name[eu]=Ido
Name[fa]=ایدو
Name[fi]=Ido
Name[fr]=Ido
Name[fy]=Ido
Name[ga]=Ido
Name[gl]=Ido
Name[gu]=ઈડો
Name[he]=אידו
Name[hi]=इदो
Name[hne]=इदो
Name[hr]=Ido
Name[hsb]=Idosce
Name[hu]=Ido
Name[ia]=Ido
Name[id]=Ido
Name[is]=Ido
Name[it]=Ido
Name[ja]=イド語
Name[kk]=Идо
Name[km]=អ៊ីឌូ
Name[kn]=ಇಡೋ
Name[ko]=이도어
Name[ku]=Îdo
Name[lb]=Ido
Name[lt]=Ido
Name[lv]=Ido
Name[mai]=इदो
Name[mk]=Идо
Name[ml]=എയ്ഡോ
Name[mr]=इदो
Name[ms]=Ido
Name[nb]=Ido
Name[nds]=Ido
Name[ne]=इडो
Name[nl]=Ido
Name[nn]=Ido
Name[oc]=Ido
Name[or]=Ido
Name[pa]=ਆਈਡੋ
Name[pl]=Ido
Name[ps]=اېډو
Name[pt]=Ido
Name[pt_BR]=Ido
Name[ro]=Ido
Name[ru]=Идо
Name[se]=Idogiella
Name[si]=ඉඩෝ
Name[sk]=Ido
Name[sl]=ido
Name[sq]=Ido
Name[sr]=идо
Name[sr@ijekavian]=идо
Name[sr@ijekavianlatin]=ido
Name[sr@latin]=ido
Name[sv]=Ido
Name[ta]=ஈடோ
Name[te]=ఇడొ
Name[tg]=Идо
Name[th]=ภาษาอิโด
Name[tr]=Ido
Name[ug]=ئىدوچە
Name[uk]=Ідо
Name[uz]=Ido
Name[uz@cyrillic]=Идо
-Name[vi]=I-đô
+Name[vi]=Ido
Name[wa]=Ido
-Name[x-test]=xxIdoxx
Name[xh]=Ido
+Name[x-test]=xxIdoxx
Name[zh_CN]=伊多语
Name[zh_HK]=伊多語
Name[zh_TW]=伊多語
[is]
Name=Icelandic
Name[af]=Yslandies
Name[ar]=آيسلندية
Name[as]=আইচ্‌লেন্ডিক
Name[ast]=Islandés
Name[be]=Ісландская
Name[be@latin]=Iślandzkaja
Name[bg]=Исландски
Name[bn]=আইসল্যান্ডিক
Name[bn_IN]=আইসল্যান্ডিক
Name[br]=Islandeg
Name[bs]=Islandski
Name[ca]=Islandès
Name[ca@valencia]=Islandés
Name[cs]=Islandský
Name[csb]=Islandzczi
Name[cy]=Islandeg
Name[da]=Islandsk
Name[de]=Isländisch
Name[el]=Ισλανδικά
Name[en_GB]=Icelandic
Name[eo]=Islanda
Name[es]=Islandés
Name[et]=Islandi
Name[eu]=Islandiera
Name[fa]=ایسلندی
Name[fi]=Islanti
Name[fr]=Islandais
Name[fy]=Iislânsk
Name[ga]=Íoslainnis
Name[gl]=Islandés
Name[gu]=આઈલેન્ડિક
Name[he]=איסלנדית
Name[hi]=आइसलैंडिक
Name[hne]=आइसलैंडिक
Name[hr]=Islandski
Name[hsb]=Islandsce
Name[hu]=Izlandi
Name[ia]=Islandese
Name[id]=Icelandic
Name[is]=Íslenska
Name[it]=Islandese
Name[ja]=アイスランド語
Name[kk]=Исландша
Name[km]=អ៊ីស្លង់
Name[kn]=ಐಸ್ಲ್ಯಾಂಡಿಕ್
Name[ko]=아이슬란드어
Name[ku]=Îzlandî
Name[lb]=Islännesch
Name[lt]=Islandų
Name[lv]=Islandiešu
Name[mai]=आइसलैंडिक
Name[mk]=Исландски
Name[ml]=ഐസ്ലാന്‍ഡിക്
Name[mr]=आयलॅंडिक
Name[ms]=Icelandic
Name[nb]=Islandsk
Name[nds]=Islannsch
Name[ne]=आइसल्यान्डिक
Name[nl]=IJslands
Name[nn]=Islandsk
Name[oc]=Islandés
Name[or]=Icelandic
Name[pa]=ਆਇਸਲੈਂਡ
Name[pl]=Islandzki
Name[ps]=اېسلېنډي
Name[pt]=Islandês
Name[pt_BR]=Islandês
Name[ro]=Islandeză
Name[ru]=Исландский
Name[se]=Islánddagiella
Name[si]=අයිස්ලන්තානු
Name[sk]=Islandčina
Name[sl]=islandsko
Name[sq]=Islandeze
Name[sr]=исландски
Name[sr@ijekavian]=исландски
Name[sr@ijekavianlatin]=islandski
Name[sr@latin]=islandski
Name[sv]=Isländska
Name[ta]=ஐஸ்லாந்தியம்
Name[te]=ఐస్ లేండిక్
Name[tg]=Исландӣ
Name[th]=ภาษาไอซ์แลนด์
Name[tr]=İzlanda Dili
Name[ug]=ئىسلاندچە
Name[uk]=Ісландська
Name[uz]=Islandcha
Name[uz@cyrillic]=Исландча
-Name[vi]=Băng-đảo
+Name[vi]=Iceland
Name[wa]=Izlandès
-Name[x-test]=xxIcelandicxx
Name[xh]=Icelandic
+Name[x-test]=xxIcelandicxx
Name[zh_CN]=冰岛语
Name[zh_HK]=冰島語
Name[zh_TW]=冰島語
[it]
Name=Italian
Name[af]=Italiaans
Name[ar]=إيطالية
Name[as]=ইটালীয়
Name[ast]=Italianu
Name[be]=Італьянская
Name[be@latin]=Italjanskaja
Name[bg]=Италиански
Name[bn]=ইতালীয়
Name[bn_IN]=ইটালিয়ান
Name[br]=Italianeg
Name[bs]=Italijanski
Name[ca]=Italià
Name[ca@valencia]=Italià
Name[cs]=Italský
Name[csb]=Italsczi
Name[cy]=Eidaleg
Name[da]=Italiensk
Name[de]=Italienisch
Name[el]=Ιταλικά
Name[en_GB]=Italian
Name[eo]=Itala
Name[es]=Italiano
Name[et]=Itaalia
Name[eu]=Italiera
Name[fa]=ایتالیایی
Name[fi]=Italia
Name[fr]=Italien
Name[fy]=Italiaansk
Name[ga]=Iodáilis
Name[gl]=Italiano
Name[gu]=ઈટાલીયન
Name[he]=איטלקית
Name[hi]=इतालवी
Name[hne]=इतालवी
Name[hr]=Talijanski
Name[hsb]=Italsce
Name[hu]=Olasz
Name[hy]=Իտալերեն
Name[ia]=Italiano
Name[id]=Italia
Name[is]=Ítalska
Name[it]=Italiano
Name[ja]=イタリア語
Name[kk]=Итальянша
Name[km]=អ៊ីតាលី
Name[kn]=ಇಟಾಲಿಯನ್
Name[ko]=이탈리아어
Name[ku]=Îtalî
Name[lb]=Italienesch
Name[lt]=Italų
Name[lv]=Itāļu
Name[mai]=इतालवी
Name[mk]=Италијански
Name[ml]=ഇറ്റാലിയന്‍
Name[mr]=इतालवी
Name[ms]=Italia
Name[nb]=Italiensk
Name[nds]=Italieensch
Name[ne]=इटालियन
Name[nl]=Italiaans
Name[nn]=Italiensk
Name[oc]=Italian
Name[or]=Italian
Name[pa]=ਇਤਾਲਵੀ
Name[pl]=Włoski
Name[ps]=اېټالوي
Name[pt]=Italiano
Name[pt_BR]=Italiano
Name[ro]=Italiană
Name[ru]=Итальянский
Name[se]=Itáliagiella
Name[si]=ඉතාලි
Name[sk]=Taliančina
Name[sl]=italijansko
Name[sq]=Italiane
Name[sr]=италијански
Name[sr@ijekavian]=италијански
Name[sr@ijekavianlatin]=italijanski
Name[sr@latin]=italijanski
Name[sv]=Italienska
Name[ta]=இத்தாலியன்
Name[te]=ఇటాలియన్
Name[tg]=Итолиёӣ
Name[th]=ภาษาอิตาเลียน
Name[tr]=İtalyanca
Name[ug]=ئىتاليانچە
Name[uk]=Італійська
Name[uz]=Italyancha
Name[uz@cyrillic]=Италянча
Name[vi]=Ý
Name[wa]=Itålyin
-Name[x-test]=xxItalianxx
Name[xh]=isitaliyane
+Name[x-test]=xxItalianxx
Name[zh_CN]=意大利语
Name[zh_HK]=意大利語
Name[zh_TW]=義大利語
[iu]
Name=Inuktitut
Name[af]=Inuktitut
Name[ar]=إنكتيتوت
Name[as]=ইনুক্টিটুট
Name[ast]=Inuktitut
Name[be]=Інуктытут
Name[be@latin]=Inuktitut
Name[bg]=Инуктитут
Name[bn]=ইনাক্টিটুট
Name[bn_IN]=ইনুকটিটুট
Name[br]=Inuktitut
Name[bs]=Inuktitut
Name[ca]=Inuktitut
Name[ca@valencia]=Inuktitut
Name[cs]=Inuktitut
Name[csb]=Inuktitut
Name[cy]=Inuktitut
Name[da]=Inuktitut
Name[de]=Inuktitut
Name[el]=Inuktitut
Name[en_GB]=Inuktitut
Name[eo]=Inuktituta
Name[es]=Inuktitut
Name[et]=Inuktitut
Name[eu]=Inuktitut
Name[fa]=اینوکتیتوت
Name[fi]=Inuktitut
Name[fr]=Inuktitut
Name[fy]=Inuktitut
Name[ga]=Ionúitis
Name[gl]=Inuktitut
Name[gu]=ઈનુક્ટિટુટ
Name[he]=אינוקטיטוט
Name[hi]=इनुक्तितुत
Name[hne]=इनुक्तितुत
Name[hr]=Inuktitut
Name[hsb]=Inuktitutsce
Name[hu]=Inuktitut
Name[ia]=Inuktitut
Name[id]=Inuktitut
Name[is]=Inuktitut
Name[it]=Inuktitut
Name[ja]=イヌイット語
Name[kk]=Инуктиут
Name[km]=អ៊ីនូកទីទូត
Name[kn]=ಇನುಕ್ಟಿಟುಟ್
Name[ko]=이눅티툿어
Name[ku]=Înûktîtut
Name[lb]=Inuktitut
Name[lt]=Inuktitut
Name[lv]=Inuītu
Name[mai]=इनुक्तितुत
Name[mk]=Инуктитут
Name[ml]=ഇന്‍കുട്ടിടുട്ട്
Name[mr]=इनुक्तितुत
Name[ms]=Inuktitut
Name[nb]=Inuktitut
Name[nds]=Inuktitut
Name[ne]=इनक्टिटुट
Name[nl]=Inuktitut
Name[nn]=Inuittisk
Name[oc]=Inuktitut
Name[or]=Inuktitut
Name[pa]=ਇਨੂਕਟੀਟੂਟ
Name[pl]=Inuktitut
Name[pt]=Inuktitut
Name[pt_BR]=Inuktitut
Name[ro]=Inuktitut
Name[ru]=Инуктитут
Name[se]=Inuhkagiella
Name[si]=ඉනුක්ටිටුට්
Name[sk]=Inuktitut
Name[sl]=inuktitut
Name[sq]=Inuktitut
Name[sr]=инуктитут
Name[sr@ijekavian]=инуктитут
Name[sr@ijekavianlatin]=inuktitut
Name[sr@latin]=inuktitut
Name[sv]=Inuktitut
Name[ta]=இனுக்டிடுட்
Name[te]=ఇనుక్తిటుట్
Name[tg]=Инуктитут
Name[th]=ภาษาอินุคทิทุท
Name[tr]=Inuktitut
Name[ug]=ئىنۇكتىتۇتچە
Name[uk]=Інуктітут
Name[uz]=Inuktitut
Name[uz@cyrillic]=Инуктитут
-Name[vi]=I-nuc-ti-túc
+Name[vi]=Inuktitut
Name[wa]=Inuktitut
-Name[x-test]=xxInuktitutxx
Name[xh]=Inuktitut
+Name[x-test]=xxInuktitutxx
Name[zh_CN]=因纽特语
Name[zh_HK]=Inuktitut語
Name[zh_TW]=因紐特語
[ja]
Name=Japanese
Name[af]=Japanees
Name[ar]=يابانية
Name[as]=জাপানী
Name[ast]=Xaponés
Name[be]=Японская
Name[be@latin]=Japonskaja
Name[bg]=Японски
Name[bn]=জাপানী
Name[bn_IN]=জাপানি
Name[br]=Japaneg
Name[bs]=Japanski
Name[ca]=Japonès
Name[ca@valencia]=Japonés
Name[cs]=Japonský
Name[csb]=Japòńsczi
Name[cy]=Japaneg
Name[da]=Japansk
Name[de]=Japanisch
Name[el]=Ιαπωνικά
Name[en_GB]=Japanese
Name[eo]=Japana
Name[es]=Japonés
Name[et]=Jaapani
Name[eu]=Japoniera
Name[fa]=ژاپنی
Name[fi]=Japani
Name[fr]=Japonais
Name[fy]=Japansk
Name[ga]=Seapáinis
Name[gl]=Xaponés
Name[gu]=જાપાનીઝ
Name[he]=יפנית
Name[hi]=जापानी
Name[hne]=जापानी
Name[hr]=Japanski
Name[hsb]=Japansce
Name[hu]=Japán
Name[ia]=Japonese
Name[id]=Jepang
Name[is]=Japanska
Name[it]=Giapponese
Name[ja]=日本語
Name[kk]=Жапонша
Name[km]=ជប៉ុន
Name[kn]=ಜಪಾನೀ
Name[ko]=일본어
Name[ku]=Japanese
Name[lb]=Japanesch
Name[lt]=Japonų
Name[lv]=Japāņu
Name[mai]=जापानी
Name[mk]=Јапонски
Name[ml]=ജാപ്പനീസ്
Name[mr]=जपानी
Name[ms]=Jepun
Name[nb]=Japansk
Name[nds]=Japaansch
Name[ne]=जापानी
Name[nl]=Japans
Name[nn]=Japansk
Name[oc]=Japonés
Name[or]=ଜାପାନୀ
Name[pa]=ਜਾਪਾਨੀ
Name[pl]=Japoński
Name[ps]=جاپاني
Name[pt]=Japonês
Name[pt_BR]=Japonês
Name[ro]=Japoneză
Name[ru]=Японский
Name[se]=Jáhpangiella
Name[si]=ජපන්
Name[sk]=Japončina
Name[sl]=japonsko
Name[sq]=Japoneze
Name[sr]=јапански
Name[sr@ijekavian]=јапански
Name[sr@ijekavianlatin]=japanski
Name[sr@latin]=japanski
Name[sv]=Japanska
Name[ta]=ஜப்பானியம்
Name[te]=జపనీస్
Name[tg]=Ҷопонӣ
Name[th]=ภาษาญี่ปุ่น
Name[tr]=Japonca
Name[ug]=ياپونچە
Name[uk]=Японська
Name[uz]=Yaponcha
Name[uz@cyrillic]=Японча
Name[vi]=Nhật
Name[wa]=Djaponès
-Name[x-test]=xxJapanesexx
Name[xh]=Isijapani
+Name[x-test]=xxJapanesexx
Name[zh_CN]=日语
Name[zh_HK]=日語
Name[zh_TW]=日語
[jv]
Name=Javanese
Name[af]=Javanees
Name[ar]=جاوية
Name[as]=জাভানী
Name[ast]=Xavanés
Name[be]=Яванская
Name[be@latin]=Javanskaja
Name[bg]=Явайски
Name[bn]=জাভানিস
Name[bn_IN]=জাভানিস
Name[br]=Javaneg
Name[bs]=Javanski
Name[ca]=Javanès
Name[ca@valencia]=Javanés
Name[cs]=Jávský
Name[csb]=Jawańsczi
Name[cy]=Javaneg
Name[da]=Javansk
Name[de]=Javanisch
Name[el]=Javanese
Name[en_GB]=Javanese
Name[eo]=Java
Name[es]=Javanés
Name[et]=Jaava
Name[eu]=Javera
Name[fa]=جاوانیز
Name[fi]=Jaava
Name[fr]=Javanais
Name[fy]=Javaansk
Name[ga]=Iávais
Name[gl]=Xavanés
Name[gu]=જાવાનીઝ
Name[he]=ג'אווה
Name[hi]=जावानी
Name[hne]=जावानी
Name[hr]=Javanski
Name[hsb]=Jawanisce
Name[hu]=Jávai
Name[ia]=Javanese
Name[id]=Jawa
Name[is]=Javanese
Name[it]=Giavanese
Name[ja]=ジャワ語
Name[kk]=Ява
Name[km]=យ៉ាវា
Name[kn]=ಜಾವನೀಸ್
Name[ko]=자바어
Name[ku]=Javayî
Name[lb]=Javanesesch
Name[lt]=Javiečių
Name[lv]=Javiešu
Name[mai]=जावानी
Name[mk]=Јавански
Name[ml]=ജാവനീസ്
Name[mr]=जावानी
Name[ms]=Jawa
Name[nb]=Javanesisk
Name[nds]=Javaneesch
Name[ne]=जाभानिज
Name[nl]=Javaans
Name[nn]=Javanesisk
Name[oc]=Javanés
Name[or]=Javanese
Name[pa]=ਜਾਵਾਨੀਆਈ
Name[pl]=Jawański
Name[ps]=جاواني
Name[pt]=Javanês
Name[pt_BR]=Javanês
Name[ro]=Iavaneză
Name[ru]=Яванский
Name[se]=Jávagiella
Name[si]=ජාවා
Name[sk]=Jávčina
Name[sl]=javansko
Name[sq]=Javaneze
Name[sr]=јавански
Name[sr@ijekavian]=јавански
Name[sr@ijekavianlatin]=javanski
Name[sr@latin]=javanski
Name[sv]=Javanesiska
Name[ta]=ஜாவானீயம்
Name[te]=జావానీస్
Name[tg]=Ёвонӣ
Name[th]=ภาษาชวา
Name[tr]=Javanese
Name[ug]=ياۋاچە
Name[uk]=Яванська
Name[uz]=Yaavanez
Name[uz@cyrillic]=Яаванез
-Name[vi]=Gia-va
+Name[vi]=Java
Name[wa]=Djavanès
-Name[x-test]=xxJavanesexx
Name[xh]=Javanese
+Name[x-test]=xxJavanesexx
Name[zh_CN]=爪哇语
Name[zh_HK]=爪哇語
Name[zh_TW]=爪哇語
[ka]
Name=Georgian
Name[af]=Georgiën
Name[ar]=جورجية
Name[as]=জৰ্জিয়ান
Name[ast]=Xorxanu
Name[be]=Грузінская
Name[be@latin]=Hruzinskaja
Name[bg]=Грузински
Name[bn]=জর্জিয়ান
Name[bn_IN]=জর্জিয়ান
Name[br]=Jeorjieg
Name[bs]=Gruzijski
Name[ca]=Georgià
Name[ca@valencia]=Georgià
Name[cs]=Gruzínský
Name[csb]=Grëzóńsczi
Name[cy]=Georgeg
Name[da]=Georgisk
Name[de]=Georgisch
Name[el]=Γεωργιανά
Name[en_GB]=Georgian
Name[eo]=Kartvela
Name[es]=Georgiano
Name[et]=Gruusia
Name[eu]=Georgiera
Name[fa]=گرجی
Name[fi]=Georgia
Name[fr]=Géorgien
Name[fy]=Georgysk
Name[ga]=Seoirsis
Name[gl]=Xeorxiano
Name[gu]=જ્યોર્જિયન
Name[he]=גאורגית
Name[hi]=ज्यॉर्जियाई
Name[hne]=ज्यार्जियाई
Name[hr]=Gruzijski
Name[hsb]=Georgisce
Name[hu]=Grúz
Name[ia]=Georgian
Name[id]=Georgia
Name[is]=Georgíska
Name[it]=Georgiano
Name[ja]=グルジア語
Name[kk]=Гүржіше
Name[km]=ហ្សកហ្ស៊ី
Name[kn]=ಜೋರ್ಜಿಯನ್
Name[ko]=조지아어
Name[ku]=Gurcî
Name[lb]=Georgesch
Name[lt]=Gruzinų
Name[lv]=Gruzīnu
Name[mai]=ज्यॉर्जियाइ
Name[mk]=Грузиски
Name[ml]=ജോര്‍ജ്ജിയന്‍
Name[mr]=जॉर्जियन
Name[ms]=Georgia
Name[nb]=Georgisk
Name[nds]=Georgsch
Name[ne]=जर्जियाली
Name[nl]=Georgisch
Name[nn]=Georgisk
Name[oc]=Georgian
Name[or]=Georgian
Name[pa]=ਜਾਰਜੀਆਈ
Name[pl]=Gruziński
Name[ps]=ګورجين
Name[pt]=Geórgio
Name[pt_BR]=Georgiano
Name[ro]=Georgiană
Name[ru]=Грузинский
Name[se]=Grusiagiella
Name[si]=ජෝර්ජියානු
Name[sk]=Gruzínčina
Name[sl]=gruzijsko
Name[sq]=Gjeorgjiane
Name[sr]=грузијски
Name[sr@ijekavian]=грузијски
Name[sr@ijekavianlatin]=gruzijski
Name[sr@latin]=gruzijski
Name[sv]=Georgiska
Name[ta]=ஜார்ஜியன்
Name[te]=జార్జియన్
Name[tg]=Гурҷӣ
Name[th]=ภาษาจอร์เจีย
Name[tr]=Gürcüce
Name[ug]=گىرۇزىنچە
Name[uk]=Грузинська
Name[uz]=Gruzincha
Name[uz@cyrillic]=Грузинча
-Name[vi]=Gi-oa-gi-ạ
+Name[vi]=Georgia
Name[wa]=Djeyordjyin
-Name[x-test]=xxGeorgianxx
Name[xh]=Georgian
+Name[x-test]=xxGeorgianxx
Name[zh_CN]=乔治亚语
Name[zh_HK]=喬治亞語
Name[zh_TW]=喬治亞語
[ki]
Name=Kikuyu
Name[af]=Kikuyu
Name[ar]=كيكويو
Name[as]=কিকুয়ু
Name[ast]=Kikuyu
Name[be]=Кікую
Name[be@latin]=Kikuyu
Name[bg]=Кикю
Name[bn]=কিকুয়ু
Name[bn_IN]=কিকুয়ু
Name[br]=Kikuyu
Name[bs]=Kikuju
Name[ca]=Kikuyu
Name[ca@valencia]=Kikuyu
Name[cs]=Kikuyu
Name[csb]=Kikuyu
Name[cy]=Kikuyu
Name[da]=Kikuyu
Name[de]=Kikuyu
Name[el]=Kikuyu
Name[en_GB]=Kikuyu
Name[eo]=Gikuja
Name[es]=Kikuyu
Name[et]=Kikuju
Name[eu]=Kikuyu
Name[fa]=کیکویا
Name[fi]=Kikuju
Name[fr]=Kikuyu
Name[fy]=Kikuyu
Name[ga]=Ciocúis
Name[gl]=Kikuyu
Name[gu]=કિકુયુ
Name[he]=קיקויו
Name[hi]=किकूयू
Name[hne]=किकूयू
Name[hr]=Kikuyu
Name[hsb]=Kikuyu
Name[hu]=Kikuju
Name[ia]=Kikuyu
Name[id]=Kikuyu
Name[is]=Kikuyu
Name[it]=Kikuyu
Name[ja]=キクユ語
Name[kk]=Кикую
Name[km]=គីគូយូ
Name[kn]=ಕಿಯುಕು
Name[ko]=키쿠유어
Name[ku]=Kîkuyu
Name[lb]=Kikuyu-Sprooch
Name[lt]=Kikuyu
Name[lv]=Kikuju
Name[mai]=किकूयू
Name[mk]=Кикују
Name[ml]=കികുയു
Name[mr]=किकूयू
Name[ms]=Kikuyu
Name[nb]=Kikuyu
Name[nds]=Kikuyu
Name[ne]=किकुयु
Name[nl]=Kikuyu
Name[nn]=Kikuyu
Name[oc]=Kikuyu
Name[or]=Kikuyu
Name[pa]=ਕਿਕੂਯੂ
Name[pl]=Kikuyu
Name[ps]=کېکويو
Name[pt]=Kikuyu
Name[pt_BR]=Kikuyu
Name[ro]=Kikuyu
Name[ru]=Кикуйю
Name[se]=Kikujugiella
Name[si]=කිකුයු
Name[sk]=Kikuju
Name[sl]=kikuyu
Name[sq]=Kikuyu
Name[sr]=кикују
Name[sr@ijekavian]=кикују
Name[sr@ijekavianlatin]=kikuju
Name[sr@latin]=kikuju
Name[sv]=Kikuyu
Name[ta]=கிகுயு
Name[te]=కికుయు
Name[tg]=Кикуягӣ
Name[th]=ภาษาคิคุยุ
Name[tr]=Kikuyu
Name[ug]=كىكۇيۇچە
Name[uk]=Кікуйю
Name[uz]=Kikuyu
Name[uz@cyrillic]=Кикуйу
-Name[vi]=Ki-ku-yu
+Name[vi]=Kikuyu
Name[wa]=Kikuyu
-Name[x-test]=xxKikuyuxx
Name[xh]=Kikuyu
+Name[x-test]=xxKikuyuxx
Name[zh_CN]=基库尤语
Name[zh_HK]=吉庫猶語
Name[zh_TW]=吉庫猶語
[kk]
Name=Kazakh
Name[af]=Kazakh
Name[ar]=قزقية
Name[as]=কাজাখ
Name[ast]=Kazaxu
Name[be]=Казахская
Name[be@latin]=Kazaskaja
Name[bg]=Казахски
Name[bn]=কাজাখ
Name[bn_IN]=কাজাখ
Name[br]=Kazakstaneg
Name[bs]=Kazaški
Name[ca]=Kazakh
Name[ca@valencia]=Kazakh
Name[cs]=Kazašský
Name[csb]=Kazachsczi
Name[cy]=Kazakh
Name[da]=Kazakh
Name[de]=Kasachisch
Name[el]=Καζαχικά
Name[en_GB]=Kazakh
Name[eo]=Kazaĥa
Name[es]=Kazajo
Name[et]=Kasahhi
Name[eu]=Kazakhera
Name[fa]=قزاق
Name[fi]=Kazakki
Name[fr]=Kazakh
Name[fy]=Kazakh
Name[ga]=Casaicis
Name[gl]=Cazaxo
Name[gu]=કઝાખ
Name[he]=קזחית
Name[hi]=कज़ाख
Name[hne]=कजाख
Name[hr]=Kazački
Name[hsb]=Kazachisce
Name[hu]=Kazah
Name[ia]=Kazako
Name[id]=Kazakh
Name[is]=Kazakh
Name[it]=Kazako
Name[ja]=カザフ語
Name[kk]=Қазақша
Name[km]=កាហ្សាក់ស្ថាន
Name[kn]=ಕಝಾಕ್
Name[ko]=카자흐어
Name[ku]=Kazakî
Name[lb]=Kasachesch
Name[lt]=Kazachų
Name[lv]=Kazahu
Name[mai]=कजाख
Name[mk]=Казахстански
Name[ml]=ഖസാഖ്
Name[mr]=कज़ाख
Name[ms]=Kazakh
Name[nb]=Kazakh
Name[nds]=Kasachsch
Name[ne]=कजाक
Name[nl]=Kazakh
Name[nn]=Kasakhisk
Name[oc]=Kazakh
Name[or]=Kazakh
Name[pa]=ਕਾਜ਼ਾਖ
Name[pl]=Kazachski
Name[ps]=کزاکي
Name[pt]=Cazaque
Name[pt_BR]=Cazaque
Name[ro]=Cazacă
Name[ru]=Казахский
Name[se]=Kazakhagiella
Name[si]=කසාඛ්
Name[sk]=Kazaština
Name[sl]=kazaško
Name[sq]=Kazake
Name[sr]=казашки
Name[sr@ijekavian]=казашки
Name[sr@ijekavianlatin]=kazaški
Name[sr@latin]=kazaški
Name[sv]=Kazakiska
Name[ta]=கசாக்
Name[te]=కజాఖ్
Name[tg]=Қазоқӣ
Name[th]=ภาษาคาซัคสถาน
Name[tr]=Kazakça
Name[ug]=قازاقچە
Name[uk]=Казахська
Name[uz]=Qozoqcha
Name[uz@cyrillic]=Қозоқча
-Name[vi]=Kha-xakh
+Name[vi]=Kazakh
Name[wa]=Kazaxh
-Name[x-test]=xxKazakhxx
Name[xh]=Kazakh
+Name[x-test]=xxKazakhxx
Name[zh_CN]=哈萨克语
Name[zh_HK]=哈薩克語
Name[zh_TW]=哈薩克語
[kl]
Name=Kalaallisut
Name[af]=Kalaallisut
Name[ar]=كلاليسوت
Name[as]=কালালিছুট
Name[ast]=Groenlandés
Name[be]=Калаалісут
Name[be@latin]=Kalaallisut
Name[bg]=Калисути
Name[bn]=কালালিসুট
Name[bn_IN]=কালালিসুট
Name[br]=Kalaallisut
Name[bs]=Kalalisut
Name[ca]=Kalaallisut
Name[ca@valencia]=Kalaallisut
Name[cs]=Kalaallisut
Name[csb]=Kalaallisut
Name[cy]=Kalaallisut
Name[da]=Kalaallisut
Name[de]=Kalaallisut
Name[el]=Kalaallisut
Name[en_GB]=Kalaallisut
Name[eo]=Gronlanda
Name[es]=Kalaallisut
Name[et]=Kalaallisut
Name[eu]=Kalaallisut
Name[fa]=کالالیسوت
Name[fi]=Kalaallisut (grönlanti)
Name[fr]=Kalaallisut
Name[fy]=Kalaallisut
Name[ga]=Graonlainnis
Name[gl]=Groenlandés
Name[gu]=કાલાલ્લિસુટ
Name[he]=קלאליסוט
Name[hi]=कलालिसुत
Name[hne]=कलालिसुत
Name[hr]=Kalaallisut
Name[hsb]=Kalaallisut
Name[hu]=Kalaalliszut
Name[ia]=Kalaallisut
Name[id]=Kalaallisut
Name[is]=Kalaallisut
Name[it]=Groenlandese
Name[ja]=グリーンランド語
Name[kk]=Калаалисутша
Name[km]=កាឡាអាលីសាត់
Name[kn]=ಕಲಾಲ್ಲಿಸುತ್
Name[ko]=그린란드어
Name[ku]=Kalaallîsut
Name[lb]=Kalaallisut
Name[lt]=Kalaallisut
Name[lv]=Grenlandiešu
Name[mai]=कालालिसुत
Name[mk]=Калалисут
Name[ml]=കലാല്ലിസട്ട്
Name[mr]=कलालिसुत
Name[ms]=Kalaallisut
Name[nb]=Kalaallisut
Name[nds]=Kalaallisut
Name[ne]=कलाल्लिसुट
Name[nl]=Kalaallisut
Name[nn]=Grønlandsk
Name[or]=Kalaallisut
Name[pa]=ਕਾਲਾਆਲਿਸੂਟ
Name[pl]=Kalaallisut
Name[pt]=Kalaallisut
Name[pt_BR]=Groenlandês
Name[ro]=Calalisută
Name[ru]=Гренландский
Name[se]=Kalállisutgiella
Name[si]=කලාලිසුට්
Name[sk]=Grónčina
Name[sl]=kalaallisut
Name[sq]=Kalaallisut
Name[sr]=калалисут
Name[sr@ijekavian]=калалисут
Name[sr@ijekavianlatin]=kalalisut
Name[sr@latin]=kalalisut
Name[sv]=Grönländska
Name[ta]=கலாலிசட்
Name[te]=కలాల్లిసుత్
Name[tg]=Калалисутӣ
Name[th]=ภาษาคาลัทลิซุท
Name[tr]=Kalaallisut
Name[ug]=كالائاللىسۇت
Name[uk]=Калаалісут
Name[uz]=Kalaallisut
Name[uz@cyrillic]=Калааллисут
-Name[vi]=Ka-lă-li-sút
+Name[vi]=Kalaallisut
Name[wa]=Kalaallisut
-Name[x-test]=xxKalaallisutxx
Name[xh]=Kalaallisut
+Name[x-test]=xxKalaallisutxx
Name[zh_CN]=格陵兰语
Name[zh_HK]=Kalaallisut語
Name[zh_TW]=Kalaallisut語
[km]
Name=Khmer
Name[af]=Khmer
Name[ar]=خمرية
Name[as]=খ্‌মেৰ
Name[ast]=Khmer
Name[be]=Хмерская
Name[be@latin]=Chmerskaja
Name[bg]=Кхмерски
Name[bn]=খমের
Name[bn_IN]=খমের
Name[br]=Kmereg
Name[bs]=Kmerski
Name[ca]=Khmer
Name[ca@valencia]=Khmer
Name[cs]=Kmérský
Name[csb]=Khmersczi
Name[cy]=Khmer
Name[da]=Khmer
Name[de]=Khmer
Name[el]=Khmer
Name[en_GB]=Khmer
Name[eo]=Kmera
Name[es]=Camboyano
Name[et]=Khmeeri
Name[eu]=Khmer
Name[fa]=خمری
Name[fi]=Khmer
Name[fr]=Khmer
Name[fy]=Khmer
Name[ga]=Ciméiris
Name[gl]=Khmer
Name[gu]=ખ્મેર
Name[he]=חמר
Name[hi]=ख्मेर
Name[hne]=ख्मेर
Name[hr]=Kmerski
Name[hsb]=Khmer
Name[hu]=Khmer
Name[ia]=Khmer
Name[id]=Khmer
Name[is]=Khmer
Name[it]=Khmer
Name[ja]=クメール語
Name[kk]=Кхмерше
Name[km]=ខ្មែរ
Name[kn]=ಖ್ಮೇರ್
Name[ko]=크메르어
Name[ku]=Khmer
Name[lb]=Khmer
Name[lt]=Khmerų
Name[lv]=Khmeru
Name[mai]=ख्मेर
Name[mk]=Кмерски
Name[ml]=ഖമര്‍
Name[mr]=ख्मेर
Name[ms]=Khmer
Name[nb]=Khmer
Name[nds]=Khmer
Name[ne]=खमेर
Name[nl]=Khmer
Name[nn]=Khmer
Name[oc]=Khmer
Name[or]=Khmer
Name[pa]=ਖਮੀਰ
Name[pl]=Khmerski
Name[ps]=کمير
Name[pt]=Khmer
Name[pt_BR]=Cambojano
Name[ro]=Kmeră
Name[ru]=Кхмерский
Name[se]=Khmeragiella
Name[si]=ඛමිර්
Name[sk]=Khmérčina
Name[sl]=kmersko
Name[sq]=Khmer
Name[sr]=кмерски
Name[sr@ijekavian]=кмерски
Name[sr@ijekavianlatin]=kmerski
Name[sr@latin]=kmerski
Name[sv]=Kambodjanska
Name[ta]=கெமர்
Name[te]=ఖ్మెర్
Name[tg]=Хмерӣ
Name[th]=ภาษาเขมร
Name[tr]=Khmer
Name[ug]=كېخمېرچە
Name[uk]=Кхмерська
Name[uz]=Kxmercha
Name[uz@cyrillic]=Кхмерча
Name[vi]=Khơ-me
Name[wa]=Xhmer
-Name[x-test]=xxKhmerxx
Name[xh]=Khmer
+Name[x-test]=xxKhmerxx
Name[zh_CN]=高棉语
Name[zh_HK]=高棉語
Name[zh_TW]=高棉語
[kn]
Name=Kannada
Name[af]=Kanadees
Name[ar]=كنادا
Name[as]=কন্নড়
Name[ast]=Canaresu
Name[be]=Канадская
Name[be@latin]=Kannada
Name[bg]=Каннада
Name[bn]=কন্নাডা
Name[bn_IN]=কন্নড়
Name[br]=Kanada
Name[bs]=Kannada
Name[ca]=Kanarès
Name[ca@valencia]=Kanarés
Name[cs]=Kannada
Name[csb]=Kannada
Name[cy]=Kannada
Name[da]=Kannada
Name[de]=Kannada
Name[el]=Kannada
Name[en_GB]=Kannada
Name[eo]=Kanara
Name[es]=Kannada
Name[et]=Kannada
Name[eu]=Kannada
Name[fa]=کانادایی
Name[fi]=Kannada
Name[fr]=Kannada
Name[fy]=Kannada
Name[ga]=Cannadais
Name[gl]=Kannada
Name[gu]=કન્નડ
Name[he]=קנאדה
Name[hi]=कन्नड
Name[hne]=कन्नड
Name[hr]=Kannada
Name[hsb]=Kannada
Name[hu]=Kannada
Name[ia]=Kannada
Name[id]=Kannada
Name[is]=Kannada
Name[it]=Kannada
Name[ja]=カンナダ語
Name[kk]=Каннада
Name[km]=កាណាដា
Name[kn]=ಕನ್ನಡ
Name[ko]=칸나다어
Name[ku]=Kannada
Name[lb]=Kannada
Name[lt]=Kannada
Name[lv]=Kannadu
Name[mai]=कन्नड
Name[mk]=Канада
Name[ml]=കന്നഡ
Name[mr]=कन्नड
Name[ms]=Kannada
Name[nb]=Kannada
Name[nds]=Kannada
Name[ne]=कन्नडा
Name[nl]=Kannada
Name[nn]=Kannada
Name[oc]=Kannadà
Name[or]=Kannada
Name[pa]=ਕੰਨੜ
Name[pl]=Kannada
Name[ps]=کناډا
Name[pt]=Kannada
Name[pt_BR]=Canarês
Name[ro]=Kanada
Name[ru]=Каннада
Name[se]=Kannadagiella
Name[si]=කන්නදා
Name[sk]=Kannadčina
Name[sl]=kannada
Name[sq]=Kannada
Name[sr]=канадски
Name[sr@ijekavian]=канадски
Name[sr@ijekavianlatin]=kanadski
Name[sr@latin]=kanadski
Name[sv]=Kanaresiska
Name[ta]=கன்னடம்
Name[te]=కన్నడ
Name[tg]=Канадӣ
Name[th]=ภาษากัณณาท
Name[tr]=Kannada
Name[ug]=كانناداچە
Name[uk]=Каннада
Name[uz]=Kannada
Name[uz@cyrillic]=Каннада
-Name[vi]=Ka-na-đa
+Name[vi]=Kannada
Name[wa]=Kannada
-Name[x-test]=xxKannadaxx
Name[xh]=Kannada
+Name[x-test]=xxKannadaxx
Name[zh_CN]=卡纳达语
Name[zh_HK]=坎那達語
Name[zh_TW]=坎那達語
[ko]
Name=Korean
Name[af]=Koriaanse
Name[ar]=كورية
Name[as]=কোৰীয়
Name[ast]=Coreanu
Name[be]=Карэйская
Name[be@latin]=Karejskaja
Name[bg]=Корейски
Name[bn]=কোরীয়
Name[bn_IN]=কোরিয়ান
Name[br]=Koreeg
Name[bs]=Korejski
Name[ca]=Coreà
Name[ca@valencia]=Coreà
Name[cs]=Korejský
Name[csb]=Kòrejańsczi
Name[cy]=Koreëg
Name[da]=Koreansk
Name[de]=Koreanisch
Name[el]=Κορεάτικα
Name[en_GB]=Korean
Name[eo]=Korea
Name[es]=Coreano
Name[et]=Korea
Name[eu]=Koreera
Name[fa]=کره‌ای
Name[fi]=Korea
Name[fr]=Coréen
Name[fy]=Koareaansk
Name[ga]=Cóiréis
Name[gl]=Coreano
Name[gu]=કોરીયન
Name[he]=קוריאנית
Name[hi]=कोरियाई
Name[hne]=कोरियाई
Name[hr]=Korejski
Name[hsb]=Koreansce
Name[hu]=Koreai
Name[ia]=Coreano
Name[id]=Korea
Name[is]=Kóreska
Name[it]=Coreano
Name[ja]=韓国語・朝鮮語
Name[kk]=Корейше
Name[km]=កូរ៉េ
Name[kn]=ಕೊರಿಯನ್
Name[ko]=한국어
Name[ku]=Koreyî
Name[lb]=Koreanesch
Name[lt]=Korėjiečių
Name[lv]=Korejiešu
Name[mai]=कोरियाइ
Name[mk]=Корејски
Name[ml]=കൊറിയന്‍
Name[mr]=कोरियन
Name[ms]=Korea
Name[nb]=Koreansk
Name[nds]=Koreaansch
Name[ne]=कोरियाली
Name[nl]=Koreaans
Name[nn]=Koreansk
Name[oc]=Corean
Name[or]=Korean
Name[pa]=ਕੋਰੀਆਈ
Name[pl]=Koreański
Name[ps]=کوريايي
Name[pt]=Coreano
Name[pt_BR]=Coreano
Name[ro]=Coreană
Name[ru]=Корейский
Name[se]=Koreagiella
Name[si]=කොරියානු
Name[sk]=Kórejčina
Name[sl]=korejsko
Name[sq]=Koreane
Name[sr]=корејски
Name[sr@ijekavian]=корејски
Name[sr@ijekavianlatin]=korejski
Name[sr@latin]=korejski
Name[sv]=Koreanska
Name[ta]=கொரியன்
Name[te]=కొరియన్
Name[tg]=Кореягӣ
Name[th]=ภาษาเกาหลี
Name[tr]=Korece
Name[ug]=كورېيەچە
Name[uk]=Корейська
Name[uz]=Koreyscha
Name[uz@cyrillic]=Корейсча
-Name[vi]=Triều-tiên
+Name[vi]=Hàn Quốc
Name[wa]=Coreyin
-Name[x-test]=xxKoreanxx
Name[xh]=Isikorea
+Name[x-test]=xxKoreanxx
Name[zh_CN]=韩语
Name[zh_HK]=韓國語
Name[zh_TW]=韓國語
[ks]
Name=Kashmiri
Name[af]=Kashmiri
Name[ar]=كشميرية
Name[as]=কাশ্মীৰি
Name[ast]=Cachemiranu
Name[be]=Кашмірская
Name[be@latin]=Kašmirskaja
Name[bg]=Кашмири
Name[bn]=কাশ্মীরি
Name[bn_IN]=কাশমিরী
Name[br]=Kashmiri
Name[bs]=Kašmirski
Name[ca]=Caixmiri
Name[ca@valencia]=Caixmiri
Name[cs]=Kašmírský
Name[csb]=Kaszmirsczi
Name[cy]=Kashmiri
Name[da]=Kashmirsk
Name[de]=Kashmiri
Name[el]=Kashmiri
Name[en_GB]=Kashmiri
Name[eo]=Kaŝmira
Name[es]=Kashmiri
Name[et]=Kašmiiri
Name[eu]=Kaxmirera
Name[fa]=کشمیری
Name[fi]=Kašmiri
Name[fr]=Kashmiri
Name[fy]=Kashmiri
Name[ga]=Caismíris
Name[gl]=Caxemir
Name[gu]=કાશ્મીરી
Name[he]=קשמירית
Name[hi]=कश्मीरी
Name[hne]=कस्मीरी
Name[hr]=Kašmirski
Name[hsb]=Kašmirsce
Name[hu]=Kasmír
Name[ia]=Kashmiri
Name[id]=Kashmiri
Name[is]=Kashmiri
Name[it]=Kašmiro
Name[ja]=カシュミール語
Name[kk]=Кашмирше
Name[km]=កាស្មៀរ
Name[kn]=ಕಶ್ಮೀರಿ
Name[ko]=카슈미르어
Name[ku]=Keşmîrî
Name[lb]=Kashmiri
Name[lt]=Kašmiro
Name[lv]=Kašmiriešu
Name[mai]=कश्मीरी
Name[mk]=Кашмирски
Name[ml]=കാഷ്മീരി
Name[mr]=कश्मीरी
Name[ms]=Kashmiri
Name[nb]=Kashmiri
Name[nds]=Kaschmiirsch
Name[ne]=काश्मिरी
Name[nl]=Kashmiri
Name[nn]=Kasjmiri
Name[oc]=Kashmiri
Name[or]=Kashmiri
Name[pa]=ਕਸ਼ਮੀਰੀ
Name[pl]=Kaszmirski
Name[ps]=کشميري
Name[pt]=Caxemir
Name[pt_BR]=Caxemira
Name[ro]=Cașmiră
Name[ru]=Кашмирский
Name[se]=Kašmirgiella
Name[si]=කාෂ්මීරි
Name[sk]=Kašmírčina
Name[sl]=kašmirsko
Name[sq]=Kashmiri
Name[sr]=кашмирски
Name[sr@ijekavian]=кашмирски
Name[sr@ijekavianlatin]=kašmirski
Name[sr@latin]=kašmirski
Name[sv]=Kashmiri
Name[ta]=காஷ்மீரி
Name[te]=కష్మీరీ
Name[tg]=Кашмирӣ
Name[th]=ภาษากัศมิรี
Name[tr]=Kashmiri
Name[ug]=كەشمىرچە
Name[uk]=Кашмірська
Name[uz]=Kashmircha
Name[uz@cyrillic]=Кашмирча
-Name[vi]=Ka-x-mi-ri
+Name[vi]=Kashmiri
Name[wa]=Cachmiri
-Name[x-test]=xxKashmirixx
Name[xh]=Kashmiri
+Name[x-test]=xxKashmirixx
Name[zh_CN]=克什米尔语
Name[zh_HK]=喀什米爾語
Name[zh_TW]=喀什米爾語
[ku]
Name=Kurdish
Name[af]=Kurdish
Name[ar]=كردية
Name[as]=কুৰ্ডিশ্ব
Name[ast]=Kurdu
Name[be]=Курдская
Name[be@latin]=Kurdzkaja
Name[bg]=Кюрдски
Name[bn]=কুর্দিশ
Name[bn_IN]=কুর্ডিশ
Name[br]=Kurdeg
Name[bs]=Kurdski
Name[ca]=Kurd
Name[ca@valencia]=Kurd
Name[cs]=Kurdský
Name[csb]=Kùrdijsczi
Name[cy]=Kwrdeg
Name[da]=Kurdisk
Name[de]=Kurdisch
Name[el]=Κουρδικά
Name[en_GB]=Kurdish
Name[eo]=Kurda
Name[es]=Kurdo
Name[et]=Kurdi
Name[eu]=Turkiera
Name[fa]=کردی
Name[fi]=Kurdi
Name[fr]=Kurde
Name[fy]=Koerdysk
Name[ga]=Coirdis
Name[gl]=Kurdo
Name[gu]=કુર્દીશ
Name[he]=כורדית
Name[hi]=कुर्दिश
Name[hne]=कुर्दिस
Name[hr]=Kurdski
Name[hsb]=Kurdisce
Name[hu]=Kurd
Name[ia]=Kurdo
Name[id]=Kurdish
Name[is]=Kúrdíska
Name[it]=Curdo
Name[ja]=クルド語
Name[kk]=Курдше
Name[km]=ឃឺដ
Name[kn]=ಕುರ್ದಿಷ್
Name[ko]=쿠르드어
Name[ku]=Kurdî
Name[lb]=Kurdesch
Name[lt]=Kurdų
Name[lv]=Kurdu
Name[mai]=कुर्दिश
Name[mk]=Курдски
Name[ml]=കുര്‍ദ്ദിഷ്
Name[mr]=कुर्दिश
Name[ms]=Kurdish
Name[nb]=Kurdisk
Name[nds]=Kurdsch
Name[ne]=कुर्दिश
Name[nl]=Koerdisch
Name[nn]=Kurdisk
Name[oc]=Curd
Name[or]=Kurdish
Name[pa]=ਕੁਰਦ
Name[pl]=Kurdyjski
Name[ps]=کوردي
Name[pt]=Curdo
Name[pt_BR]=Curdo
Name[ro]=Curdă
Name[ru]=Курдский
Name[se]=Kurdigiella
Name[si]=කුර්දිෂ්
Name[sk]=Kurdčina
Name[sl]=kurdsko
Name[sq]=Kurde
Name[sr]=курдски
Name[sr@ijekavian]=курдски
Name[sr@ijekavianlatin]=kurdski
Name[sr@latin]=kurdski
Name[sv]=Kurdiska
Name[ta]=குர்திஷ்
Name[te]=కుర్దిష్
Name[tg]=Курдиш
Name[th]=ภาษาเคอร์ดิช
Name[tr]=Kürtçe
Name[ug]=كۇردچە
Name[uk]=Курдська
Name[uz]=Kurdcha
Name[uz@cyrillic]=Курдча
-Name[vi]=Kuổ-đị
+Name[vi]=Kurd
Name[wa]=Kurdi
-Name[x-test]=xxKurdishxx
Name[xh]=Kurdish
+Name[x-test]=xxKurdishxx
Name[zh_CN]=库尔德语
Name[zh_HK]=庫德語
Name[zh_TW]=庫德語
[kv]
Name=Komi
Name[af]=Komi
Name[ar]=كومي
Name[as]=কোমি
Name[ast]=Komi
Name[be]=Комі
Name[be@latin]=Komi
Name[bg]=Комизирянски
Name[bn]=কোমি
Name[bn_IN]=কোমি
Name[br]=Komi
Name[bs]=Komi
Name[ca]=Komi
Name[ca@valencia]=Komi
Name[cs]=Komi
Name[csb]=z Komi
Name[cy]=Komi
Name[da]=Komi
Name[de]=Komi
Name[el]=Komi
Name[en_GB]=Komi
Name[eo]=Komia
Name[es]=Komi
Name[et]=Komi
Name[eu]=Komoreera
Name[fa]=کمی
Name[fi]=Komi
Name[fr]=Komi
Name[fy]=Komi
Name[ga]=Coimí
Name[gl]=Komi
Name[gu]=કોમી
Name[he]=קומי
Name[hi]=कोमी
Name[hne]=कोमी
Name[hr]=Komi
Name[hsb]=Komi
Name[hu]=Komi
Name[ia]=Komi
Name[id]=Komi
Name[is]=Komi
Name[it]=Komi
Name[ja]=コミ語
Name[kk]=Коми
Name[km]=កូមី
Name[kn]=ಕೋಮಿ
Name[ko]=코미어
Name[ku]=Komî
Name[lb]=Komi-Sprooch
Name[lt]=Komi
Name[lv]=Komiešu
Name[mai]=कोमी
Name[mk]=Коми
Name[ml]=കോമി
Name[mr]=कोमी
Name[ms]=Komi
Name[nb]=Komi
Name[nds]=Komi
Name[ne]=कोमी
Name[nl]=Komi
Name[nn]=Komi
Name[oc]=Komi
Name[or]=Komi
Name[pa]=ਕੋਮੀ
Name[pl]=z Komi
Name[ps]=کومي
Name[pt]=Komi
Name[pt_BR]=Komi
Name[ro]=Komi
Name[ru]=Коми
Name[se]=Komigiella
Name[si]=කොමි
Name[sk]=Komijčina
Name[sl]=komi
Name[sq]=Komi
Name[sr]=коми
Name[sr@ijekavian]=коми
Name[sr@ijekavianlatin]=komi
Name[sr@latin]=komi
Name[sv]=Komi
Name[ta]=கோமி
Name[te]=కోమి
Name[tg]=Комӣ
Name[th]=ภาษาคอมี
Name[tr]=Komi
Name[ug]=كومىچە
Name[uk]=Комі
Name[uz]=Komi
Name[uz@cyrillic]=Коми
-Name[vi]=Khô-mi
+Name[vi]=Komi
Name[wa]=Komi
-Name[x-test]=xxKomixx
Name[xh]=Komi
+Name[x-test]=xxKomixx
Name[zh_CN]=科米语
Name[zh_HK]=Komi語
Name[zh_TW]=Komi語
[kw]
Name=Cornish
Name[af]=Cornish
Name[ar]=كورنية
Name[as]=ক'ৰ্নিশ্ব
Name[ast]=Córnicu
Name[be]=Корнская
Name[be@latin]=Karnijskaja
Name[bg]=Корнуълски
Name[bn]=কর্নিশ
Name[bn_IN]=কর্নিশ
Name[br]=Korneveg
Name[bs]=Korniški
Name[ca]=Còrnic
Name[ca@valencia]=Còrnic
Name[cs]=Kornišský
Name[csb]=Kòrnwalijsczi
Name[cy]=Cernyweg
Name[da]=Kornisk
Name[de]=Kornisch
Name[el]=Κορνουαλικά
Name[en_GB]=Cornish
Name[eo]=Kornvala
Name[es]=Cornuallés
Name[et]=Korni
Name[eu]=Cornish
Name[fa]=کرنیشی
Name[fi]=Korni
Name[fr]=Cornique
Name[fy]=Cornysk
Name[ga]=Coirnis
Name[gl]=Córnico
Name[gu]=કોર્નિશ
Name[he]=קורנית
Name[hi]=कॉर्निश
Name[hne]=कार्निस
Name[hr]=Kornski
Name[hsb]=Kornisce
Name[hu]=Korn
Name[ia]=Cornish
Name[id]=Cornish
Name[is]=Cornish
Name[it]=Cornico
Name[ja]=コーンウォール語
Name[kk]=Корнуолше
Name[km]=កូនីស
Name[kn]=ಕೋರ್ನಿಷ್
Name[ko]=콘월어
Name[ku]=Korniş
Name[lb]=Kornesch
Name[lt]=Kornų
Name[lv]=Korniešu
Name[mai]=कॉर्निश
Name[mk]=Корниш
Name[ml]=കോര്‍ണിഷ്
Name[mr]=कॉर्निश
Name[ms]=Cornish
Name[nb]=Cornisk
Name[nds]=Kornisch
Name[ne]=कर्निस
Name[nl]=Cornish
Name[nn]=Kornisk
Name[oc]=Cornic
Name[or]=Cornish
Name[pa]=ਕੋਰਨਿਸ਼
Name[pl]=Kornwalijski
Name[ps]=کورني
Name[pt]=Cornualho
Name[pt_BR]=Córnico
Name[ro]=Corneză
Name[ru]=Корнский
Name[se]=Kornagiella
Name[si]=කෝර්නිෂ්
Name[sk]=Kornčina
Name[sl]=cornish
Name[sq]=Kornish
Name[sr]=корнвалски
Name[sr@ijekavian]=корнвалски
Name[sr@ijekavianlatin]=kornvalski
Name[sr@latin]=kornvalski
Name[sv]=Korniska
Name[ta]=கோர்னிஷ்
Name[te]=కొర్నిష్
Name[tg]=Корниягӣ
Name[th]=ภาษาคอร์นิช
Name[tr]=Cornish
Name[ug]=كورنىشچە
Name[uk]=Корнійська
Name[uz]=Korn
Name[uz@cyrillic]=Корн
-Name[vi]=Xen-tợ Coanh-ouặn
+Name[vi]=Cornwall
Name[wa]=Cornike
-Name[x-test]=xxCornishxx
Name[xh]=Cornish
+Name[x-test]=xxCornishxx
Name[zh_CN]=康沃尔语
Name[zh_HK]=康瓦耳語
Name[zh_TW]=康瓦耳語
[ky]
Name=Kirghiz
Name[af]=Kirghiz
Name[ar]=قرغيزية
Name[as]=কিৰ্গিজ
Name[ast]=Kirguisu
Name[be]=Кіргізская
Name[be@latin]=Kirhiskaja
Name[bg]=Киргизки
Name[bn]=কার্ঘিস
Name[bn_IN]=কির্গিজ
Name[br]=Kirgistaneg
Name[bs]=Kirgiski
Name[ca]=Kirguís
Name[ca@valencia]=Kirguís
Name[cs]=Kyrgizský
Name[csb]=Kirgijsczi
Name[cy]=Kirghiz
Name[da]=Kirghiz
Name[de]=Kirgisisch
Name[el]=Kirghiz
Name[en_GB]=Kirghiz
Name[eo]=Kirgiza
Name[es]=Kirguiz
Name[et]=Kirgiisi
Name[eu]=Kirgiera
Name[fa]=قرقیزی
Name[fi]=Kirgiisi
Name[fr]=Kirghize
Name[fy]=Kirgizysk
Name[ga]=Cirgisis
Name[gl]=Quirguiz
Name[gu]=કિર્ગીઝ
Name[he]=קירגיזית
Name[hi]=किर्गिज
Name[hne]=किर्गिज
Name[hr]=Kirgiški
Name[hsb]=Kirgisce
Name[hu]=Kirgiz
Name[ia]=Kirghizo
Name[id]=Kirghiz
Name[is]=Kirgíska
Name[it]=Kirghiso
Name[ja]=キルギス語
Name[kk]=Қырғызша
Name[km]=គៀរហ្គីស្តង់
Name[kn]=ಕಿರ್ಘಿಜ್
Name[ko]=키르키즈어
Name[ku]=Kirgîzî
Name[lb]=Kirghisesch
Name[lt]=Kirgizų
Name[lv]=Kirgīzu
Name[mai]=खिरगिज
Name[mk]=Киргизтански
Name[ml]=കിര്‍ഗ്ഗിഷ്
Name[mr]=किर्गिज
Name[ms]=Kirghiz
Name[nb]=Kirgisisk
Name[nds]=Kirgiisch
Name[ne]=क्रिगिज
Name[nl]=Kirghizisch
Name[nn]=Kirgisisk
Name[oc]=Kirghiz
Name[or]=Kirghiz
Name[pa]=ਕਿਰਘੀਜ਼
Name[pl]=Kirgiski
Name[ps]=کرګزي
Name[pt]=Quirguistanês
Name[pt_BR]=Quirguiz
Name[ro]=Chirghiză
Name[ru]=Киргизский
Name[se]=Kirgisiagiella
Name[si]=කිර්ඝිස්
Name[sk]=Kirgizština
Name[sl]=kirgizijsko
Name[sq]=Kirgize
Name[sr]=киргиски
Name[sr@ijekavian]=киргиски
Name[sr@ijekavianlatin]=kirgiski
Name[sr@latin]=kirgiski
Name[sv]=Kirghiziska
Name[ta]=கிர்கிஸ்
Name[te]=కిర్ఘిజ్
Name[tg]=Қирғизӣ
Name[th]=ภาษาเคอร์กิซ
Name[tr]=Kırgız
Name[ug]=قىرغىزچە
Name[uk]=Киргизька
Name[uz]=Qirgʻizcha
Name[uz@cyrillic]=Қирғизча
-Name[vi]=Kia-gi-x
+Name[vi]=Kirghiz
Name[wa]=Kirguize
-Name[x-test]=xxKirghizxx
Name[xh]=Kirghiz
+Name[x-test]=xxKirghizxx
Name[zh_CN]=吉尔吉斯语
Name[zh_HK]=吉爾吉斯語
Name[zh_TW]=吉爾吉斯語
[la]
Name=Latin
Name[af]=Latyn
Name[ar]=لاتينية
Name[as]=লেটিন
Name[ast]=Llatín
Name[be]=Лацінская
Name[be@latin]=Łacinskaja
Name[bg]=Латински
Name[bn]=লাতিন
Name[bn_IN]=লাতিন
Name[br]=Latin
Name[bs]=Latinski
Name[ca]=Llatí
Name[ca@valencia]=Llatí
Name[cs]=Latina
Name[csb]=Łacëzna
Name[cy]=Lladin
Name[da]=Latin
Name[de]=Latein
Name[el]=Λατινικά
Name[en_GB]=Latin
Name[eo]=Latino
Name[es]=Latín
Name[et]=Ladina
Name[eu]=Latina
Name[fa]=لاتین
Name[fi]=Latina
Name[fr]=Latin
Name[fy]=Latyn
Name[ga]=Laidin
Name[gl]=Latín
Name[gu]=લેટિન
Name[he]=לטינית
Name[hi]=लातिन
Name[hne]=लातिन
Name[hr]=Latinski
Name[hsb]=Łaćonsce
Name[hu]=Latin
Name[hy]=Լատիներեն
Name[ia]=Latino
Name[id]=Latin
Name[is]=Latína
Name[it]=Latino
Name[ja]=ラテン語
Name[kk]=Латынша
Name[km]=ឡាតាំង
Name[kn]=ಲ್ಯಾಟಿನ್
Name[ko]=라틴어
Name[ku]=Latînî
Name[lb]=Latäin
Name[lt]=Lotynų
Name[lv]=Latīņu
Name[mai]=लैटिन
Name[mk]=Латински
Name[ml]=ലത്തീന്‍
Name[mr]=लॅटिन
Name[ms]=Latin
Name[nb]=Latin
Name[nds]=Latiensch
Name[ne]=ल्याटिन
Name[nl]=Latijn
Name[nn]=Latin
Name[oc]=Latin
Name[or]=Latin
Name[pa]=ਲੈਟਿਨ
Name[pl]=Łaciński
Name[ps]=لاټيني
Name[pt]=Latim
Name[pt_BR]=Latim
Name[ro]=Latină
Name[ru]=Латинский
Name[se]=Láhtengiella
Name[si]=ලතින්
Name[sk]=Latinčina
Name[sl]=latinsko
Name[sq]=Latine
Name[sr]=латински
Name[sr@ijekavian]=латински
Name[sr@ijekavianlatin]=latinski
Name[sr@latin]=latinski
Name[sv]=Latin
Name[ta]=இலத்தீன்
Name[te]=లాటిన్
Name[tg]=Лотинӣ
Name[th]=ภาษาละติน
Name[tr]=Latin
Name[ug]=لاتىنچە
Name[uk]=Латинська
Name[uz]=Lotincha
Name[uz@cyrillic]=Лотинча
-Name[vi]=La-tinh
+Name[vi]=Latin
Name[wa]=Latén
-Name[x-test]=xxLatinxx
Name[xh]=Latin
+Name[x-test]=xxLatinxx
Name[zh_CN]=拉丁语
Name[zh_HK]=拉丁語
Name[zh_TW]=拉丁語
[lb]
Name=Luxembourgish
Name[af]=Luxembourgish
Name[ar]=لوكسمبورغية
Name[as]=লাক্সেম্বৰ্গিছ
Name[ast]=Lluxemburgués
Name[be]=Люксембургская
Name[be@latin]=Luksemburskaja
Name[bg]=Люксембургски
Name[bn]=লাক্সেমবার্গিশ
Name[bn_IN]=লাক্সেমবুর্গিশ
Name[br]=Luksembourgeg
Name[bs]=Luksemburški
Name[ca]=Luxemburguès
Name[ca@valencia]=Luxemburgués
Name[cs]=Lucemburský
Name[csb]=Luksembùrsczi
Name[cy]=Luxembwrgeg
Name[da]=Luxembourgish
Name[de]=Luxemburgisch
Name[el]=Λουξεμβουργικά
Name[en_GB]=Luxembourgish
Name[eo]=Luksemburga
Name[es]=Luxemburgués
Name[et]=Luksemburgi
Name[eu]=Luxenburgera
Name[fa]=لوکزامبورگ
Name[fi]=Luxemburg
Name[fr]=Luxembourgeois
Name[fy]=Luksemboarchsk
Name[ga]=Lucsambuirgis
Name[gl]=Luxemburgués
Name[gu]=લક્ઝેમ્બર્ગીઝ
Name[he]=לוקסמבורגית
Name[hi]=लक्जमबर्गिश
Name[hne]=लक्जमबर्गिस
Name[hr]=Luksemburški
Name[hsb]=Luksemburgsce
Name[hu]=Luxemburgi
Name[ia]=Luxemburgese
Name[id]=Luxembourgish
Name[is]=Lúxemborgiska
Name[it]=Lussemburghese
Name[ja]=ルクセンブルク語
Name[kk]=Люксимбургша
Name[km]=លុចហ្សំបួរ
Name[kn]=ಲಕ್ಝೆಂಬರ್ಗಿಷ್
Name[ko]=룩셈부르크어
Name[ku]=Luksemburgî
Name[lb]=Lëtzebuergesch
Name[lt]=Liuksemburgiečių
Name[lv]=Luksemburgiešu
Name[mai]=लक्समबर्ग
Name[mk]=Луксембургски
Name[ml]=ലക്സംബര്‍ഗ്ഗിഷ്
Name[mr]=लक्जमबर्गिश
Name[ms]=Luxembourgish
Name[nb]=Luxemburgisk
Name[nds]=Luxemborgsch
Name[ne]=लग्जेम्बर्गिस
Name[nl]=Letzenburgs
Name[nn]=Luxembourgsk
Name[oc]=Luxemborgés
Name[or]=Luxembourgish
Name[pa]=ਲਕਸ਼ਬਰਗਸ਼
Name[pl]=Luksemburski
Name[ps]=لګسېمبرګيايي
Name[pt]=Luxemburguês
Name[pt_BR]=Luxemburguês
Name[ro]=Luxemburgheză
Name[ru]=Люксембургский
Name[se]=Luksenburggagiella
Name[si]=ලක්සම්බර්ගිෂ්
Name[sk]=Luxemburčina
Name[sl]=luksemburško
Name[sq]=Luksemburgeze
Name[sr]=луксембуршки
Name[sr@ijekavian]=луксембуршки
Name[sr@ijekavianlatin]=luksemburški
Name[sr@latin]=luksemburški
Name[sv]=Luxemburgiska
Name[ta]=லக்சம்போர்கிஷ்
Name[te]=లక్సెంబర్గిష్
Name[tg]=Люксембургӣ
Name[th]=ภาษาลักเซมเบอร์ก
Name[tr]=Luxembourgish
Name[ug]=لىيۇكسېمبۇرگچە
Name[uk]=Люксембурзька
Name[uz]=Lyuksemburgcha
Name[uz@cyrillic]=Люксембургча
-Name[vi]=Lúc-xăm-buac
+Name[vi]=Luxembourg
Name[wa]=Lussimbordjwès
-Name[x-test]=xxLuxembourgishxx
Name[xh]=Luxembourgish
+Name[x-test]=xxLuxembourgishxx
Name[zh_CN]=卢森堡语
Name[zh_HK]=盧森堡語
Name[zh_TW]=盧森堡語
[li]
Name=Limburgan
Name[af]=Limburgan
Name[ar]=لمبرغية
Name[as]=লিম্বুৰ্গান
Name[ast]=Limburganu
Name[be]=Лімбургская
Name[be@latin]=Limburskaja
Name[bg]=Лимбургански
Name[bn]=লিমবার্গান
Name[bn_IN]=লিমবুর্গান
Name[br]=Limburgeg
Name[bs]=Limburški
Name[ca]=Limburguès
Name[ca@valencia]=Limburgués
Name[cs]=Limburgan
Name[csb]=Limbùrgańsczi
Name[cy]=Limbwrgeg
Name[da]=Limburgansk
Name[de]=Limburgisch
Name[el]=Limburgan
Name[en_GB]=Limburgan
Name[eo]=Limburga
Name[es]=Limburgano
Name[et]=Limburgi
Name[eu]=Limburgan
Name[fa]=لیمبرگان
Name[fi]=Limburg
Name[fr]=Limbourgeois
Name[fy]=Limburgsk
Name[ga]=Liombuirgis
Name[gl]=Limburgano
Name[gu]=લિમ્બુર્ગી
Name[he]=לימבורגית
Name[hi]=लिम्बर्गन
Name[hne]=लिम्बर्गन
Name[hr]=Limburški
Name[hsb]=Limburgsce
Name[hu]=Limburgi
Name[ia]=Limburgano
Name[id]=Limburgan
Name[is]=Limburgian
Name[it]=Limburghese
Name[ja]=リグリア語
Name[kk]=Лимбургша
Name[km]=លីបួគ
Name[kn]=ಲಿಂಬುರ್ಗನ್
Name[ko]=림부르크어
Name[ku]=Lîmburgî
Name[lb]=Limburgesch
Name[lt]=Limburgan
Name[lv]=Limburgiešu
Name[mai]=लिम्बर्गन
Name[mk]=Лимбургански
Name[ml]=ലിമ്ബ്ബൂര്‍ഗ്ഗന്‍
Name[mr]=लिम्बर्गन
Name[ms]=Limburgan
Name[nb]=Limburgisk
Name[nds]=Limborgsch
Name[ne]=लिम्बुरगन
Name[nl]=Limburgs
Name[nn]=Limburgsk
Name[or]=Limburgan
Name[pa]=ਲੀਮਬੁਰਗਾਨ
Name[pl]=Limburgiański
Name[pt]=Limburguês
Name[pt_BR]=Limburguês
Name[ro]=Limburgană
Name[ru]=Лимбуржский
Name[se]=Limburggagiella
Name[si]=ලිම්බර්ගන්
Name[sk]=Limburčina
Name[sl]=limburgan
Name[sq]=Limburgan
Name[sr]=лимбуршки
Name[sr@ijekavian]=лимбуршки
Name[sr@ijekavianlatin]=limburški
Name[sr@latin]=limburški
Name[sv]=Limburgiska
Name[ta]=லிம்பர்கன்
Name[te]=లింబర్గన్
Name[tg]=Лимбурганӣ
Name[th]=ภาษาลิมเบอร์กัน
Name[tr]=Limburgan
Name[ug]=لىمبۇرگانچە
Name[uk]=Лімбурганська
Name[uz]=Limburgan
Name[uz@cyrillic]=Лимбурган
-Name[vi]=Lim-bua-ga
+Name[vi]=Limburg
Name[wa]=Limbordjwès
-Name[x-test]=xxLimburganxx
Name[xh]=Limburgan
+Name[x-test]=xxLimburganxx
Name[zh_CN]=林堡语
Name[zh_HK]=Limburgan語
Name[zh_TW]=Limburgan語
[ln]
Name=Lingala
Name[af]=Lingala
Name[ar]=لينغالا
Name[as]=লিঙ্গালা
Name[ast]=Lingala
Name[be]=Лінгальская
Name[be@latin]=Lingala
Name[bg]=Лингала
Name[bn]=লিঙ্গালা
Name[bn_IN]=লিঙ্গালা
Name[br]=Lingaleg
Name[bs]=Lingala
Name[ca]=Lingala
Name[ca@valencia]=Lingala
Name[cs]=Lingala
Name[csb]=Lingala
Name[cy]=Lingala
Name[da]=Lingala
Name[de]=Lingala
Name[el]=Lingala
Name[en_GB]=Lingala
Name[eo]=Lingala
Name[es]=Lingala
Name[et]=Lingala
Name[eu]=Lingala
Name[fa]=لینگالا
Name[fi]=Lingala
Name[fr]=Lingala
Name[fy]=Lingala
Name[ga]=Liongáilis
Name[gl]=Lingala
Name[gu]=લિંગાલા
Name[he]=לינגאלה
Name[hi]=लिंगला
Name[hne]=लिंगला
Name[hr]=Lingalski
Name[hsb]=Lingala
Name[hu]=Lingala
Name[ia]=Lingala
Name[id]=Lingala
Name[is]=Lingala
Name[it]=Lingala
Name[ja]=リンガラ語
Name[kk]=Лингата
Name[km]=លីនហ្គាឡា
Name[kn]=ಲಿಂಗಾಲ
Name[ko]=링갈라어
Name[ku]=Lîngala
Name[lb]=Lingala
Name[lt]=Lingala
Name[lv]=Lingala
Name[mai]=लिंगाला
Name[mk]=Лингала
Name[ml]=ലിന്‍ഗാല
Name[mr]=लिंगला
Name[ms]=Lingala
Name[nb]=Lingala
Name[nds]=Lingala
Name[ne]=लिङ्गाला
Name[nl]=Lingala
Name[nn]=Lingala
Name[oc]=Lingalà
Name[or]=Lingala
Name[pa]=ਲੀਨਗਾਲਾ
Name[pl]=Lingala
Name[ps]=لېنګالا
Name[pt]=Lingala
Name[pt_BR]=Lingala
Name[ro]=Lingală
Name[ru]=Лингала
Name[se]=Lingalagiella
Name[si]=ලින්ගලා
Name[sk]=Lingalčina
Name[sl]=lingala
Name[sq]=Lingala
Name[sr]=лингала
Name[sr@ijekavian]=лингала
Name[sr@ijekavianlatin]=lingala
Name[sr@latin]=lingala
Name[sv]=Lingala
Name[ta]=லிங்காலா
Name[te]=లింగాలా
Name[tg]=Лингалӣ
Name[th]=ภาษาลิงกาลา
Name[tr]=Lingala
Name[ug]=لىنگالاچە
Name[uk]=Лінгала
Name[uz]=Lingala
Name[uz@cyrillic]=Лингала
-Name[vi]=Lin-ga-la
+Name[vi]=Lingala
Name[wa]=Lingala
-Name[x-test]=xxLingalaxx
Name[xh]=Lingala
+Name[x-test]=xxLingalaxx
Name[zh_CN]=林加拉语
Name[zh_HK]=Lingala語
Name[zh_TW]=Lingala語
[lo]
Name=Lao
Name[af]=Lao
Name[ar]=لاوية
Name[as]=লাও
Name[ast]=Laosianu
Name[be]=Лаоская
Name[be@latin]=Laoskaja
Name[bg]=Лао
Name[bn]=লাও
Name[bn_IN]=লাও
Name[br]=Lao
Name[bs]=Lao
Name[ca]=Laosià
Name[ca@valencia]=Laosià
Name[cs]=Laoský
Name[csb]=Lao
Name[cy]=Lao
Name[da]=Lao
Name[de]=Laotisch
Name[el]=Lao
Name[en_GB]=Lao
Name[eo]=Laosa
Name[es]=Laosiano
Name[et]=Lao
Name[eu]=Laosera
Name[fa]=لائویی
Name[fi]=Lao
Name[fr]=Lao
Name[fy]=Lao
Name[ga]=Láóis
Name[gl]=Lao
Name[gu]=લાઓ
Name[he]=לאו
Name[hi]=लाओ
Name[hne]=लाओ
Name[hr]=Lao
Name[hsb]=Lao
Name[hu]=Lao
Name[ia]=Lao
Name[id]=Lao
Name[is]=Lao
Name[it]=Lao
Name[ja]=ラオ語
Name[kk]=Лаосша
Name[km]=ឡាវ
Name[kn]=ಲಾಓ
Name[ko]=라오어
Name[ku]=Lao
Name[lb]=Lao
Name[lt]=Laosiečių
Name[lv]=Laosiešu
Name[mai]=लाओ
Name[mk]=Лао
Name[ml]=ലാവോ
Name[mr]=लाओ
Name[ms]=Lao
Name[nb]=Lao
Name[nds]=Laootsch
Name[ne]=लाओ
Name[nl]=Lao
Name[nn]=Laotisk
Name[oc]=Laossian
Name[or]=Lao
Name[pa]=ਲਿਓ
Name[pl]=Laotański
Name[ps]=لاو
Name[pt]=Lao
Name[pt_BR]=Laociano
Name[ro]=Lao
Name[ru]=Лаосский
Name[se]=Laogiella
Name[si]=ලාඕ
Name[sk]=Laoština
Name[sl]=laoško
Name[sq]=Lao
Name[sr]=лаоћански
Name[sr@ijekavian]=лаоћански
Name[sr@ijekavianlatin]=laoćanski
Name[sr@latin]=laoćanski
Name[sv]=Laotiska
Name[ta]=லாவோ
Name[te]=లావో
Name[tg]=Лаосӣ
Name[th]=ภาษาลาว
Name[tr]=Lao
Name[ug]=لائوسچە
Name[uk]=Лаоська
Name[uz]=Laoscha
Name[uz@cyrillic]=Лаосча
Name[vi]=Lào
Name[wa]=Lawocyin
-Name[x-test]=xxLaoxx
Name[xh]=Lao
+Name[x-test]=xxLaoxx
Name[zh_CN]=老挝语
Name[zh_HK]=寮國語
Name[zh_TW]=寮國語
[lt]
Name=Lithuanian
Name[af]=Lithuaniese
Name[ar]=ليتوانية
Name[as]=লিথুৱেনিয়ান
Name[ast]=Llituanu
Name[be]=Літоўская
Name[be@latin]=Litoŭskaja
Name[bg]=Литовски
Name[bn]=লিথুয়েনীয়
Name[bn_IN]=লিথুয়েনিয়ান
Name[br]=Lituaneg
Name[bs]=Litvanski
Name[ca]=Lituà
Name[ca@valencia]=Lituà
Name[cs]=Litevský
Name[csb]=Litewsczi
Name[cy]=Lithuaneg
Name[da]=Litauisk
Name[de]=Litauisch
Name[el]=Λιθουανικά
Name[en_GB]=Lithuanian
Name[eo]=Litova
Name[es]=Lituano
Name[et]=Leedu
Name[eu]=Lituaniera
Name[fa]=لیتوانی
Name[fi]=Liettua
Name[fr]=Lituanien
Name[fy]=Litouwsk
Name[ga]=Liotuáinis
Name[gl]=Lituano
Name[gu]=લિથુઆનિઅન
Name[he]=ליטאית
Name[hi]=लिथुआनियाई
Name[hne]=लिथुआनियाई
Name[hr]=Litvanski
Name[hsb]=Litawsce
Name[hu]=Litván
Name[hy]=Լիտվերեն
Name[ia]=Lituano
Name[id]=Lithuania
Name[is]=Litháíska
Name[it]=Lituano
Name[ja]=リトアニア語
Name[kk]=Литваша
Name[km]=លីទុយអានី
Name[kn]=ಲಿಥುವೇನಿಯನ್
Name[ko]=리투아니아어
Name[ku]=Lîtuwanî
Name[lb]=Litauesch
Name[lt]=Lietuvių
Name[lv]=Lietuviešu
Name[mai]=लिथुआनियाइ
Name[mk]=Литвански
Name[ml]=ലിത്തുവേനിയന്‍
Name[mr]=लिथुआनियाई
Name[ms]=Lithuania
Name[nb]=Litauisk
Name[nds]=Litausch
Name[ne]=लिथुनियाली
Name[nl]=Litouws
Name[nn]=Litauisk
Name[oc]=Lituanian
Name[or]=Lithuanian
Name[pa]=ਲੀਥੂਨੀਆਨ
Name[pl]=Litewski
Name[ps]=لېټوانيايي
Name[pt]=Lituano
Name[pt_BR]=Lituano
Name[ro]=Lituaniană
Name[ru]=Литовский
Name[se]=Lietuvagiella
Name[si]=ලිතුවේනියානු
Name[sk]=Litovčina
Name[sl]=litvansko
Name[sq]=Lituaneze
Name[sr]=литвански
Name[sr@ijekavian]=литвански
Name[sr@ijekavianlatin]=litvanski
Name[sr@latin]=litvanski
Name[sv]=Litauiska
Name[ta]=லிதுவேனியன்
Name[te]=లితువెనియన్
Name[tg]=Литвонӣ
Name[th]=ภาษาลิธัวเนีย
Name[tr]=Litvanya Dili
Name[ug]=لىتۋاچە
Name[uk]=Литовська
Name[uz]=Litvacha
Name[uz@cyrillic]=Литвача
-Name[vi]=Li-tu-a-ni
+Name[vi]=Lithuani
Name[wa]=Litwanyin
-Name[x-test]=xxLithuanianxx
Name[xh]=Lithuanian
+Name[x-test]=xxLithuanianxx
Name[zh_CN]=立陶宛语
Name[zh_HK]=立陶宛語
Name[zh_TW]=立陶宛語
[lv]
Name=Latvian
Name[af]=Latvian
Name[ar]=لاتفية
Name[as]=লাট্‌ভিয়ান
Name[ast]=Letón
Name[be]=Латвійская
Name[be@latin]=Łatyskaja
Name[bg]=Латвийски
Name[bn]=লাটভিয়ান
Name[bn_IN]=লাটভিয়ান
Name[br]=Latvieg
Name[bs]=Latvijski
Name[ca]=Letó
Name[ca@valencia]=Letó
Name[cs]=Lotyšský
Name[csb]=Łotewsczi
Name[cy]=Latfieg
Name[da]=Lettisk
Name[de]=Lettisch
Name[el]=Λεττονικά
Name[en_GB]=Latvian
Name[eo]=Latvia
Name[es]=Letón
Name[et]=Läti
Name[eu]=Letoniera
Name[fa]=لاتوینی
Name[fi]=Latvia
Name[fr]=Letton
Name[fy]=Letsk
Name[ga]=Laitvis
Name[gl]=Letón
Name[gu]=લેટવિયન
Name[he]=לטבית
Name[hi]=लातवियाई
Name[hne]=लातवियाई
Name[hr]=Latvijski
Name[hsb]=Letisce
Name[hu]=Lett
Name[ia]=Letton
Name[id]=Latvia
Name[is]=Lettneska
Name[it]=Lettone
Name[ja]=ラトビア語
Name[kk]=Латвияша
Name[km]=ឡាតវៀ
Name[kn]=ಲಾಟ್ವಿಯನ್
Name[ko]=라트비아어
Name[ku]=Letonî
Name[lb]=Lettesch
Name[lt]=Latvių
Name[lv]=Latviešu
Name[mai]=लातवियाइ
Name[mk]=Латвиски
Name[ml]=ലാത്വിയന്‍
Name[mr]=लातवियाई
Name[ms]=Latvia
Name[nb]=Latvisk
Name[nds]=Lettsch
Name[ne]=लाट्भियन
Name[nl]=Lets
Name[nn]=Latvisk
Name[oc]=Leton
Name[or]=Latvian
Name[pa]=ਲਾਟਵੀਨ
Name[pl]=Łotewski
Name[ps]=لېټوين
Name[pt]=Letão
Name[pt_BR]=Letão
Name[ro]=Letonă
Name[ru]=Латышский
Name[se]=Látviagiella
Name[si]=ලැට්වියානු
Name[sk]=Lotyština
Name[sl]=latvijsko
Name[sq]=Letone
Name[sr]=летонски
Name[sr@ijekavian]=летонски
Name[sr@ijekavianlatin]=letonski
Name[sr@latin]=letonski
Name[sv]=Lettiska
Name[ta]=இலட்வியன்
Name[te]=లాటివ్యన్
Name[tg]=Латвиягӣ
Name[th]=ภาษาลัทเวีย
Name[tr]=Litvanya Dili
Name[ug]=لاتۋىيەچە
Name[uk]=Латвійська
Name[uz]=Latishcha
Name[uz@cyrillic]=Латишча
Name[vi]=Lát-vi-a
Name[wa]=Letonyin
-Name[x-test]=xxLatvianxx
Name[xh]=Isilatvian
+Name[x-test]=xxLatvianxx
Name[zh_CN]=拉脱维亚语
Name[zh_HK]=拉脫維亞語
Name[zh_TW]=拉脫維亞語
[mai]
Name=Maithili
Name[ar]=مايثيلي
Name[as]=মৈথিলি
Name[ast]=Maithili
Name[be@latin]=Maithili
Name[bg]=Майтили
Name[bn]=মৈথিলী
Name[bn_IN]=মৈথিলি
Name[bs]=Maithili
Name[ca]=Maithili
Name[ca@valencia]=Maithili
Name[cs]=Maithili
Name[csb]=Maithili
Name[da]=Maithili
Name[de]=Maithili
Name[el]=Μαϊθίλι
Name[en_GB]=Maithili
Name[eo]=Maithili
Name[es]=Maithili
Name[et]=Maithili
Name[eu]=Maithiliera
Name[fi]=Maithili
Name[fr]=Maïthili
Name[fy]=Maithili
Name[ga]=Maitilis
Name[gl]=Maithili
Name[gu]=મૈથિલિ
Name[hi]=मैथिली
Name[hr]=Maithilski
Name[hu]=Maithili
Name[ia]=Maithili
Name[id]=Maithili
Name[is]=Maithili
Name[it]=Maithili
Name[ja]=マイティリー語
Name[kk]=Майтили
Name[km]=ម៉ារ៉ាទី
Name[kn]=ಮೈಥಿಲಿ
Name[ko]=마이틸리어
Name[ku]=Maratî
Name[lt]=Maithili
Name[lv]=Maithilu
Name[ml]=മൈഥിലി
Name[ms]=Maithili
Name[nb]=Maithili
Name[nds]=Maithili
Name[nl]=Maithili
Name[nn]=Maithili
Name[pa]=ਮੈਥਲੀ
Name[pl]=Maithili
Name[pt]=Maithili
Name[pt_BR]=Maithili
Name[ro]=Maithili
Name[ru]=Майтхили
Name[se]=Maitiligiella
Name[si]=මයිතිලි
Name[sk]=Maithilčina
Name[sl]=Maithili
Name[sq]=Maithili
Name[sr]=маитхили
Name[sr@ijekavian]=маитхили
Name[sr@ijekavianlatin]=maithili
Name[sr@latin]=maithili
Name[sv]=Maithili
Name[ta]=மைதிலி
Name[tg]=Майтифил
Name[th]=ภาษาไมถิลี
Name[tr]=Maithili
Name[ug]=مايتىلىچە
Name[uk]=Майтхілі
+Name[vi]=Maithili
Name[wa]=Maithili
Name[x-test]=xxMaithilixx
Name[zh_CN]=迈蒂利语
Name[zh_TW]=Maithili語
[mg]
Name=Malagasy
Name[af]=Malagasy
Name[ar]=ملغاسي
Name[as]=মালাগাছি
Name[ast]=Malgache
Name[be]=Малагасійская
Name[be@latin]=Malagasy
Name[bg]=Малагашки
Name[bn]=মালাগাসি
Name[bn_IN]=মালাগাসি
Name[br]=Malagacheg
Name[bs]=Malagaški
Name[ca]=Malgaix
Name[ca@valencia]=Malgaix
Name[cs]=Malagasy
Name[csb]=Madagarsczi
Name[cy]=Malagasy
Name[da]=Malagasy
Name[de]=Madagassisch
Name[el]=Μαλγασικά
Name[en_GB]=Malagasy
Name[eo]=Malagasa
Name[es]=Malagasio
Name[et]=Malagassi
Name[eu]=Madagaskarera
Name[fa]=مالاگازی
Name[fi]=Malagassi
Name[fr]=Malgache
Name[fy]=Malagasysk
Name[ga]=Malagásais
Name[gl]=Malgaxe
Name[gu]=માલાગાસી
Name[he]=מלגשית
Name[hi]=मलागासी
Name[hne]=मलागासी
Name[hr]=Malagaski
Name[hsb]=Malagasy
Name[hu]=Malagazi
Name[ia]=Malagasy
Name[id]=Malagasy
Name[is]=Malagasy
Name[it]=Malgascio
Name[ja]=マラガシ語
Name[kk]=Мальгашша
Name[km]=ម៉ាដាហ្កាសការ
Name[kn]=ಮಲಗೆಸಿ
Name[ko]=말라가시어
Name[ku]=Malagasî
Name[lb]=Madagassesch
Name[lt]=Malagasių
Name[lv]=Malagasu
Name[mai]=मलागासी
Name[mk]=Малагаси
Name[ml]=മലഗാസി
Name[mr]=मलागासी
Name[ms]=Malagasy
Name[nb]=Malagasy
Name[nds]=Madagass'sch
Name[ne]=मालागासे
Name[nl]=Malagasy
Name[nn]=Gassisk
Name[or]=Malagasy
Name[pa]=ਮਾਲਾਗਾਸਆ
Name[pl]=Madagaskarski
Name[ps]=ملاګاسي
Name[pt]=Malgaxe
Name[pt_BR]=Malgaxe
Name[ro]=Malgașă
Name[ru]=Мальгашский
Name[se]=Malagasigiella
Name[si]=මලගසි
Name[sk]=Malgaština
Name[sl]=malagaško
Name[sq]=Malagasy
Name[sr]=малагаси
Name[sr@ijekavian]=малагаси
Name[sr@ijekavianlatin]=malagasi
Name[sr@latin]=malagasi
Name[sv]=Malagassiska
Name[ta]=மலகாசி
Name[te]=మలగాసి
Name[tg]=Малагасӣ
Name[th]=ภาษามาลากาซี
Name[tr]=Malagasy
Name[ug]=ماداغاسقارچە
Name[uk]=Малагасійська
Name[uz]=Malagasi
Name[uz@cyrillic]=Малагаси
-Name[vi]=Ma-la-ga-xị
+Name[vi]=Malagasy
Name[wa]=Malgache
-Name[x-test]=xxMalagasyxx
Name[xh]=Malagasy
+Name[x-test]=xxMalagasyxx
Name[zh_CN]=马尔加什语
Name[zh_HK]=馬拉加西語
Name[zh_TW]=馬拉加西語
[mh]
Name=Marshallese
Name[af]=Marshallese
Name[ar]=مارشالية
Name[as]=মাৰ্ছালিশ্ব
Name[ast]=Marshalés
Name[be]=Маршальская
Name[be@latin]=Maršaleskaja
Name[bg]=Ебон
Name[bn]=মার্শালিস
Name[bn_IN]=মার্শালিস
Name[br]=Yezh an enez Marshall
Name[bs]=Maršalski
Name[ca]=Marshallès
Name[ca@valencia]=Marshallés
Name[cs]=Marshallský
Name[csb]=z Òstrowów Marshalla
Name[cy]=Marshalleg
Name[da]=Marshallesisk
Name[de]=Marshallisch
Name[el]=Marshallese
Name[en_GB]=Marshallese
Name[eo]=Marŝala
Name[es]=Marshalés
Name[et]=Maršalli
Name[eu]=Marshallera
Name[fa]=مارشالی
Name[fi]=Marshall
Name[fr]=Marshall
Name[fy]=Marshalleesk
Name[ga]=Marascailis
Name[gl]=Marshalés
Name[gu]=માર્શલીઝ
Name[he]=מרשלית
Name[hi]=मार्शलीज
Name[hne]=मार्सलीज
Name[hr]=Maršaleski
Name[hsb]=Maršalesce
Name[hu]=Marsalli
Name[ia]=Marshallese
Name[id]=Marshallese
Name[is]=Maltneska
Name[it]=Marsciallese
Name[ja]=マーシャル語
Name[kk]=Маршаллша
Name[km]=ម៉ាស្យាលីស
Name[kn]=ಮಾರ್ಶಲ್ಲೀಸ್
Name[ko]=마셜어
Name[ku]=Marşalî
Name[lb]=Marschallesesch
Name[lt]=Maršaliečių
Name[lv]=Māršaliešu
Name[mai]=मार्शलीज
Name[mk]=Маршалски
Name[ml]=മാര്‍ഷാലീസ്
Name[mr]=मार्शलीज
Name[ms]=Marshallese
Name[nb]=Marshallesisk
Name[nds]=Marschalleesch
Name[ne]=मार्शलिज
Name[nl]=Marshallees
Name[nn]=Marshallesisk
Name[or]=Marshallese
Name[pa]=ਮਾਰਸ਼ਲੀਈਸੀ
Name[pl]=z Wysp Marshalla
Name[ps]=مارشالي
Name[pt]=Marselhês
Name[pt_BR]=Marchalês
Name[ro]=Marșaleză
Name[ru]=Маршалльский
Name[se]=Marshallagiella
Name[si]=මාෂලීස්
Name[sk]=Maršalčina
Name[sl]=maršalsko
Name[sq]=Marshalleze
Name[sr]=маршалески
Name[sr@ijekavian]=маршалески
Name[sr@ijekavianlatin]=maršaleski
Name[sr@latin]=maršaleski
Name[sv]=Marshall
Name[ta]=மார்ஷலீஸ்
Name[te]=మార్షలీస్
Name[tg]=Маршалезӣ
Name[th]=ภาษามาร์แชล
Name[tr]=Marshallese
Name[ug]=مارشالچە
Name[uk]=Маршальська
Name[uz]=Marshallez
Name[uz@cyrillic]=Маршаллез
-Name[vi]=Mă-xăn
+Name[vi]=Marshall
Name[wa]=Marshalès
-Name[x-test]=xxMarshallesexx
Name[xh]=Marshallese
+Name[x-test]=xxMarshallesexx
Name[zh_CN]=马绍尔语
Name[zh_HK]=馬紹爾語
Name[zh_TW]=馬紹爾語
[mi]
Name=Maori
Name[af]=Maori
Name[ar]=ماوري
Name[as]=মাওৰি
Name[ast]=Maorí
Name[be]=Маорская
Name[be@latin]=Maory
Name[bg]=Маори
Name[bn]=মাওরি
Name[bn_IN]=মাওরি
Name[br]=Maorieg
Name[bs]=Maorski
Name[ca]=Maori
Name[ca@valencia]=Maori
Name[cs]=Maorský
Name[csb]=Maòrëjsczi
Name[cy]=Maori
Name[da]=Maori
Name[de]=Maori
Name[el]=Μαορί
Name[en_GB]=Maori
Name[eo]=Maoria
Name[es]=Maorí
Name[et]=Maoori
Name[eu]=Maoria
Name[fa]=مائوری
Name[fi]=Maori
Name[fr]=Maori
Name[fy]=Maori
Name[ga]=Maorais
Name[gl]=Maorí
Name[gu]=માઓરી
Name[he]=מאורית
Name[hi]=माओरी
Name[hne]=माओरी
Name[hr]=Maori
Name[hsb]=Maori
Name[hu]=Maori
Name[ia]=Maori
Name[id]=Maori
Name[is]=Maori
Name[it]=Maori
Name[ja]=マオリ語
Name[kk]=Маори
Name[km]=ម៉ោរី
Name[kn]=ಮವೋರಿ
Name[ko]=마오리어
Name[ku]=Maorî
Name[lb]=Maoresch
Name[lt]=Maorių
Name[lv]=Maoru
Name[mai]=माओरी
Name[mk]=Маорски
Name[ml]=മൌറി
Name[mr]=माओरी
Name[ms]=Maori
Name[nb]=Maori
Name[nds]=Maori
Name[ne]=माओरी
Name[nl]=Maori
Name[nn]=Maori
Name[oc]=Maòri
Name[or]=Maori
Name[pa]=ਮਾਓਰੀ
Name[pl]=Maoryjski
Name[ps]=ماوري
Name[pt]=Maori
Name[pt_BR]=Maori
Name[ro]=Maură
Name[ru]=Маори
Name[se]=Maoragiella
Name[si]=මඕරි
Name[sk]=Maorčina
Name[sl]=maorsko
Name[sq]=Maori
Name[sr]=маорски
Name[sr@ijekavian]=маорски
Name[sr@ijekavianlatin]=maorski
Name[sr@latin]=maorski
Name[sv]=Maoriska
Name[ta]=மாவோரி
Name[te]=మావొరి
Name[tg]=Маори
Name[th]=ภาษาเมารี
Name[tr]=Maori Dili
Name[ug]=ماۋرىچە
Name[uk]=Маорі
Name[uz]=Maori
Name[uz@cyrillic]=Маори
-Name[vi]=Mao-ri
+Name[vi]=Maori
Name[wa]=Mawori
-Name[x-test]=xxMaorixx
Name[xh]=Maori
+Name[x-test]=xxMaorixx
Name[zh_CN]=毛利语
Name[zh_HK]=毛利語
Name[zh_TW]=毛利語
[mk]
Name=Macedonian
Name[af]=Macedonian
Name[ar]=مقدونية
Name[as]=মেচিডোনীয়
Name[ast]=Macedoniu
Name[be]=Македонская
Name[be@latin]=Makiedonskaja
Name[bg]=Македонски
Name[bn]=মাসিডোনীয়
Name[bn_IN]=মেসিডোনিয়ান
Name[br]=Makedoneg
Name[bs]=Makedonski
Name[ca]=Macedoni
Name[ca@valencia]=Macedoni
Name[cs]=Makedonský
Name[csb]=Macedońsczi
Name[cy]=Macedoneg
Name[da]=Makedonisk
Name[de]=Mazedonisch
Name[el]=Σλαβομακεδονικά
Name[en_GB]=Macedonian
Name[eo]=Makedona
Name[es]=Macedonio
Name[et]=Makedoonia
Name[eu]=Mazedoniera
Name[fa]=مقدونی
Name[fi]=Makedonia
Name[fr]=Macédonien
Name[fy]=Masedoanysk
Name[ga]=Macadóinis
Name[gl]=Macedonio
Name[gu]=મેસેડોનિયન
Name[he]=מקדונית
Name[hi]=मकदूनियाई
Name[hne]=मकदूनियाई
Name[hr]=Makedonski
Name[hsb]=Makedonsce
Name[hu]=Macedón
Name[ia]=Macedone
Name[id]=Macedonia
Name[is]=Makedóníska
Name[it]=Macedone
Name[ja]=マケドニア語
Name[kk]=Македонша
Name[km]=ម៉ាសេដូនី
Name[kn]=ಮೆಸಡೋನಿಯನ್
Name[ko]=마케도니아어
Name[ku]=Makedonî
Name[lb]=Mazedonesch
Name[lt]=Makedoniečių
Name[lv]=Maķedoniešu
Name[mai]=मेसिडोनियाइ
Name[mk]=Македонски
Name[ml]=മാസിഡോണിയന്‍
Name[mr]=मेसीडोनियन
Name[ms]=Macedonia
Name[nb]=Makedonsk
Name[nds]=Makedoonsch
Name[ne]=म्यासेडोनियाली
Name[nl]=Macedonisch
Name[nn]=Makedonsk
Name[oc]=Macedonian
Name[or]=Macedonian
Name[pa]=ਮੈਕਡੋਨੀਆ
Name[pl]=Macedoński
Name[ps]=مېسېډونين
Name[pt]=Macedónio
Name[pt_BR]=Macedônio
Name[ro]=Macedoneană
Name[ru]=Македонский
Name[se]=Makedoniagiella
Name[si]=මැසිඩෝනියානු
Name[sk]=Macedónčina
Name[sl]=makedonsko
Name[sq]=Maqedone
Name[sr]=македонски
Name[sr@ijekavian]=македонски
Name[sr@ijekavianlatin]=makedonski
Name[sr@latin]=makedonski
Name[sv]=Makedonska
Name[ta]=மாசிடோனியன்
Name[te]=మసిడొనియన్
Name[tg]=Мақдунӣ
Name[th]=ภาษามาเซโดเนีย
Name[tr]=Makedonca
Name[ug]=ماكېدونچە
Name[uk]=Македонська
Name[uz]=Makedoniyacha
Name[uz@cyrillic]=Македонияча
-Name[vi]=Ma-xê-đô-ni
+Name[vi]=Macedonia
Name[wa]=Macedonyin
-Name[x-test]=xxMacedonianxx
Name[xh]=Macedonian
+Name[x-test]=xxMacedonianxx
Name[zh_CN]=马其顿语
Name[zh_HK]=馬其頓語
Name[zh_TW]=馬其頓語
[ml]
Name=Malayalam
Name[af]=Malayalam
Name[ar]=مالايالام
Name[as]=মলয়ালম
Name[ast]=Malayalam
Name[be]=Малаяламская
Name[be@latin]=Malayalam
Name[bg]=Малаялам
Name[bn]=মালয়লম
Name[bn_IN]=মালায়ালম
Name[br]=Malayalam
Name[bs]=Malajalam
Name[ca]=Malaiàlam
Name[ca@valencia]=Malaiàlam
Name[cs]=Malayalam
Name[csb]=Drawidańsczi (hindusczi)
Name[cy]=Malayalam
Name[da]=Malayalam
Name[de]=Malayalam
Name[el]=Malayalam
Name[en_GB]=Malayalam
Name[eo]=Malajala
Name[es]=Malabar
Name[et]=Malajalami
Name[eu]=Malayalam
Name[fa]=مالی
Name[fi]=Malajalam
Name[fr]=Malayalam
Name[fy]=Malayalam
Name[ga]=Mailéalaimis
Name[gl]=Malaialam
Name[gu]=મલયાલમ
Name[he]=מליאלאם
Name[hi]=मलयालम
Name[hne]=मलयालम
Name[hr]=Malajamski
Name[hsb]=Malayalam
Name[hu]=Malajalam
Name[ia]=Malayalam
Name[id]=Malayalam
Name[is]=Malayalam
Name[it]=Malayalam
Name[ja]=マラヤーラム語
Name[kk]=Малайамша
Name[km]=ម៉ាឡាយ៉ាឡាម
Name[kn]=ಮಲಯಾಳಂ
Name[ko]=말라얄람어
Name[ku]=Malayalam
Name[lb]=Malajalam
Name[lt]=Malajiečių
Name[lv]=Malajalu
Name[mai]=मलयालम
Name[mk]=Малајалам
Name[ml]=മലയാളം
Name[mr]=मल्यालम
Name[ms]=Malayalam
Name[nb]=Malayalam
Name[nds]=Malayalam
Name[ne]=मलेयालम
Name[nl]=Malayalam
Name[nn]=Malayalam
Name[oc]=Malayalam
Name[or]=Malayalam
Name[pa]=ਮਲਿਆਲਮ
Name[pl]=Malajalam
Name[ps]=ملايالم
Name[pt]=Malayalam
Name[pt_BR]=Malaiala
Name[ro]=Malailamă
Name[ru]=Малаялам
Name[se]=Malajalamagiella
Name[si]=මලයාලම්
Name[sk]=Malajálamčina
Name[sl]=malayalam
Name[sq]=Malajalam
Name[sr]=малајалам
Name[sr@ijekavian]=малајалам
Name[sr@ijekavianlatin]=malajalam
Name[sr@latin]=malajalam
Name[sv]=Malayalam
Name[ta]=மலையாளம்
Name[te]=మలయాళం
Name[tg]=Малаямӣ
Name[th]=ภาษามะละยาลัม
Name[tr]=Malayalam
-Name[ug]=مالايامچە
+Name[ug]=مالايالامچە
Name[uk]=Малайська
Name[uz]=Malayalam
Name[uz@cyrillic]=Малайалам
-Name[vi]=Ma-lay-am
+Name[vi]=Malayalam
Name[wa]=Malayalam
-Name[x-test]=xxMalayalamxx
Name[xh]=Malayalam
+Name[x-test]=xxMalayalamxx
Name[zh_CN]=马拉亚拉姆语
Name[zh_HK]=馬來亞拉姆語
Name[zh_TW]=馬來亞拉姆語
[mn]
Name=Mongolian
Name[af]=Mongolees
Name[ar]=منغولية
Name[as]=মঙ্গোলীয়
Name[ast]=Mongol
Name[be]=Мангольская
Name[be@latin]=Manholskaja
Name[bg]=Монголски
Name[bn]=মোঙ্গল
Name[bn_IN]=মঙ্গোলিয়ান
Name[br]=Mongolieg
Name[bs]=Mongolski
Name[ca]=Mongol
Name[ca@valencia]=Mongol
Name[cs]=Mongolský
Name[csb]=Mòngolsczi
Name[cy]=Mongoleg
Name[da]=Mongolsk
Name[de]=Mongolisch
Name[el]=Μογγολικά
Name[en_GB]=Mongolian
Name[eo]=Mongola
Name[es]=Mongol
Name[et]=Mongoolia
Name[eu]=Mongoliera
Name[fa]=مغول
Name[fi]=Mongoli
Name[fr]=Mongol
Name[fy]=Moangoalsk
Name[ga]=Mongóilis
Name[gl]=Mongol
Name[gu]=મોંગોલિયન
Name[he]=מונגולית
Name[hi]=मंगोलियन
Name[hne]=मंगोलियन
Name[hr]=Mongolski
Name[hsb]=Mongolsce
Name[hu]=Mongol
Name[ia]=Mongolico
Name[id]=Mongolia
Name[is]=Bosníska
Name[it]=Mongolo
Name[ja]=モンゴル語
Name[kk]=Моңғолша
Name[km]=ម៉ុងហ្គោលី
Name[kn]=ಮಂಗೋಲಿಯನ್
Name[ko]=몽골어
Name[ku]=Mongolî
Name[lb]=Mongolesch
Name[lt]=Mongolų
Name[lv]=Mongoļu
Name[mai]=मंगोलियाइ
Name[mk]=Монголски
Name[ml]=മംഗോളിയ
Name[mr]=मंगोलीयन
Name[ms]=Mongolia
Name[nb]=Mongolsk
Name[nds]=Mongoolsch
Name[ne]=मङ्गोलियन
Name[nl]=Mongolisch
Name[nn]=Mongolsk
Name[oc]=Mongolian
Name[or]=Mongolian
Name[pa]=ਮੰਗੋਲੀਆਈ
Name[pl]=Mongolski
Name[ps]=مغلي
Name[pt]=Mongol
Name[pt_BR]=Mongol
Name[ro]=Mongolă
Name[ru]=Монгольский
Name[se]=Mongoliagiella
Name[si]=මොංගෝලියානු
Name[sk]=Mongolčina
Name[sl]=mongolsko
Name[sq]=Mongole
Name[sr]=монголски
Name[sr@ijekavian]=монголски
Name[sr@ijekavianlatin]=mongolski
Name[sr@latin]=mongolski
Name[sv]=Mongoliska
Name[ta]=மங்கோலியன்
Name[te]=మంగోలియన్
Name[tg]=Муғулӣ
Name[th]=ภาษามองโกล
Name[tr]=Moğolca
Name[ug]=موڭغۇلچە
Name[uk]=Монгольська
Name[uz]=Mugʻulcha
Name[uz@cyrillic]=Муғулча
-Name[vi]=Mông-cổ
+Name[vi]=Mông Cổ
Name[wa]=Mongol
-Name[x-test]=xxMongolianxx
Name[xh]=Mongolian
+Name[x-test]=xxMongolianxx
Name[zh_CN]=蒙古语
Name[zh_HK]=蒙古語
Name[zh_TW]=蒙古語
[mo]
Name=Moldavian
Name[af]=Moldavian
Name[ar]=مولدافية
Name[as]=মোল্দাভিয়ান
Name[ast]=Moldavu
Name[be]=Малдаўская
Name[be@latin]=Małdaŭskaja
Name[bg]=Молдовски
Name[bn]=মলডেভীয়
Name[bn_IN]=মোল্ডাভিয়ান
Name[br]=Moldaveg
Name[bs]=Moldavski
Name[ca]=Moldau
Name[ca@valencia]=Moldau
Name[cs]=Moldavský
Name[csb]=Mòłdawsczi
Name[cy]=Moldafeg
Name[da]=Moldovisk
Name[de]=Moldawisch
Name[el]=Μολδαβικά
Name[en_GB]=Moldavian
Name[eo]=Moldava
Name[es]=Moldavo
Name[et]=Moldaavia
Name[eu]=Moldabiera
Name[fa]=مولداوی
Name[fi]=Moldavia
Name[fr]=Moldave
Name[fy]=Moldavysk
Name[ga]=Moldávais
Name[gl]=Moldavo
Name[gu]=મોલ્ડેવિયન
Name[he]=מולדבית
Name[hi]=मोल्दावियन
Name[hne]=मोल्दावियन
Name[hr]=Moldavski
Name[hsb]=Moldawsce
Name[hu]=Moldáv
Name[ia]=Moldaviano
Name[id]=Moldavian
Name[is]=Moldóvíska
Name[it]=Moldavo
Name[ja]=モルダビア語
Name[kk]=Молдовша
Name[km]=ម៉ុលដាវី
Name[kn]=ಮಾಲ್ಡೇವಿಯನ್
Name[ko]=몰도바어
Name[ku]=Moldavî
Name[lb]=Moldawesch
Name[lt]=Moldavų
Name[lv]=Moldāvu
Name[mai]=मोल्दावियन
Name[mk]=Молдавски
Name[ml]=മാള്‍ഡോവിയന്‍
Name[mr]=मोल्दावियन
Name[ms]=Moldavia
Name[nb]=Moldavisk
Name[nds]=Moldaawsch
Name[ne]=मोल्डाभियन
Name[nl]=Moldavisch
Name[nn]=Moldovsk
Name[oc]=Croacia
Name[or]=Moldavian
Name[pa]=ਮੋਲਡਾਵੀਆਈ
Name[pl]=Mołdawski
Name[ps]=مالډيوي
Name[pt]=Moldavo
Name[pt_BR]=Moldavo
Name[ro]=Moldovenească
Name[ru]=Молдавский
Name[se]=Moldáviagiella
Name[si]=මෝල්දාවියන්
Name[sk]=Moldavčina
Name[sl]=moldavsko
Name[sq]=Moldave
Name[sr]=молдавски
Name[sr@ijekavian]=молдавски
Name[sr@ijekavianlatin]=moldavski
Name[sr@latin]=moldavski
Name[sv]=Moldaviska
Name[ta]=மோல்டாவியன்
Name[te]=మొల్దావియన్
Name[tg]=Молдаванӣ
Name[th]=ภาษามอลดาเวียน
Name[tr]=Moldavya Dili
Name[ug]=مولداۋىيىچە
Name[uk]=Молдовська
Name[uz]=Moldavcha
Name[uz@cyrillic]=Молдавча
-Name[vi]=Mon-đa-vi
+Name[vi]=Moldava
Name[wa]=Moldåve
-Name[x-test]=xxMoldavianxx
Name[xh]=Moldavian
+Name[x-test]=xxMoldavianxx
Name[zh_CN]=摩尔多瓦语
Name[zh_HK]=摩爾達維亞語
Name[zh_TW]=摩爾達維亞語
[mr]
Name=Marathi
Name[af]=Marathi
Name[ar]=ماراثية
Name[as]=মাৰাথি
Name[ast]=Marathi
Name[be]=Мараўская
Name[be@latin]=Marathi
Name[bg]=Маратхи
Name[bn]=মরাঠী
Name[bn_IN]=মারাঠি
Name[br]=Marateg
Name[bs]=Marati
Name[ca]=Marathi
Name[ca@valencia]=Marathi
Name[cs]=Marathi
Name[csb]=Marathi (hindusczi)
Name[cy]=Marathi
Name[da]=Marathi
Name[de]=Marathi
Name[el]=Marathi
Name[en_GB]=Marathi
Name[eo]=Marata
Name[es]=Maratí
Name[et]=Marathi
Name[eu]=Marathera
Name[fa]=ماراتی
Name[fi]=Marathi
Name[fr]=Marathe
Name[fy]=Marathi
Name[ga]=Maraitis
Name[gl]=Marata
Name[gu]=મરાઠી
Name[he]=מאראתי
Name[hi]=मराठी
Name[hne]=मराठी
Name[hr]=Marathi
Name[hsb]=Marati
Name[hu]=Marati
Name[ia]=Marathi
Name[id]=Marathi
Name[is]=Marathi
Name[it]=Marathi
Name[ja]=マラーティー語
Name[kk]=Марати
Name[km]=ម៉ារ៉ាទី
Name[kn]=ಮರಾಠಿ
Name[ko]=마라티어
Name[ku]=Maratî
Name[lb]=Marathi
Name[lt]=Marathi
Name[lv]=Marathu
Name[mai]=मराठी
Name[mk]=Марати
Name[ml]=മറാത്തി
Name[mr]=मराठी
Name[ms]=Marathi
Name[nb]=Marathi
Name[nds]=Marathi
Name[ne]=मराठी
Name[nl]=Marathi
Name[nn]=Marathi
Name[oc]=Marati
Name[or]=ମରାଠି
Name[pa]=ਮਰਾਠੀ
Name[pl]=Marathi (Hinduski)
Name[ps]=مراټي
Name[pt]=Marathi
Name[pt_BR]=Marata
Name[ro]=Marathi
Name[ru]=Маратхи
Name[se]=Marathagiella
Name[si]=මරාති
Name[sk]=Maráthčina
Name[sl]=marathi
Name[sq]=Marathi
Name[sr]=марати
Name[sr@ijekavian]=марати
Name[sr@ijekavianlatin]=marati
Name[sr@latin]=marati
Name[sv]=Marathi
Name[ta]=மராத்தி
Name[te]=మరాఠి
Name[tg]=Маравӣ
Name[th]=ภาษามราฐี
Name[tr]=Marathi
Name[ug]=ماراتىچە
Name[uk]=Мараті
Name[uz]=Marati
Name[uz@cyrillic]=Марати
-Name[vi]=Ma-ra-ti
+Name[vi]=Marathi
Name[wa]=Marati
-Name[x-test]=xxMarathixx
Name[xh]=Marathi
+Name[x-test]=xxMarathixx
Name[zh_CN]=马拉提语
Name[zh_HK]=馬拉地語
Name[zh_TW]=馬拉地語
[ms]
Name=Malay
Name[af]=Malay
Name[ar]=مالوية
Name[as]=মালায়
Name[ast]=Malayu
Name[be]=Малайская
Name[be@latin]=Malajskaja
Name[bg]=Малайски
Name[bn]=মালয়
Name[bn_IN]=মালায়
Name[br]=Maya
Name[bs]=Malajski
Name[ca]=Malai
Name[ca@valencia]=Malai
Name[cs]=Malajský
Name[csb]=Malajsczi
Name[cy]=Malay
Name[da]=Malay
Name[de]=Malaiisch
Name[el]=Malay
Name[en_GB]=Malay
Name[eo]=Malaja
Name[es]=Malayo
Name[et]=Malaisia
Name[eu]=Malaysiera
Name[fa]=مالی
Name[fi]=Malaiji
Name[fr]=Malais
Name[fy]=Maleisk
Name[ga]=Malaeis
Name[gl]=Malaio
Name[gu]=મલય
Name[he]=מלאית
Name[hi]=मलय
Name[hne]=मलय
Name[hr]=Malajski
Name[hsb]=Malajsce
Name[hu]=Maláj
Name[ia]=Malay
Name[id]=Melayu
Name[is]=Malay
Name[it]=Malese
Name[ja]=マレー語
Name[kk]=Малайша
Name[km]=ម៉ាឡេស៊ី
Name[kn]=ಮಲೇಯ್
Name[ko]=말레이어
Name[ku]=Malayî
Name[lb]=Malaiesch
Name[lt]=Malajų
Name[lv]=Malajiešu
Name[mai]=मलय
Name[mk]=Малајски
Name[ml]=മലയ്
Name[mr]=मलय
Name[ms]=Malay
Name[nb]=Malaiisk
Name[nds]=Malaiisch
Name[ne]=मले
Name[nl]=Malay
Name[nn]=Malayisk
Name[oc]=Malés
Name[or]=Malay
Name[pa]=ਮਾਲਿਆ
Name[pl]=Malajski
Name[ps]=ملای
Name[pt]=Malaio
Name[pt_BR]=Malaio
Name[ro]=Malaeză
Name[ru]=Малайский
Name[se]=Malaigiella
Name[si]=මැලේ
Name[sk]=Malajčina
Name[sl]=malajsko
Name[sq]=Malaj
Name[sr]=малајски
Name[sr@ijekavian]=малајски
Name[sr@ijekavianlatin]=malajski
Name[sr@latin]=malajski
Name[sv]=Malajiska
Name[ta]=மலாய்
Name[te]=మలయ
Name[tg]=Малайӣ
Name[th]=ภาษามลายู
Name[tr]=Malay
Name[ug]=مالايچە
Name[uk]=Малайська
Name[uz]=Malaycha
Name[uz@cyrillic]=Малайча
-Name[vi]=Mã-lai
+Name[vi]=Mã lai
Name[wa]=Malay
-Name[x-test]=xxMalayxx
Name[xh]=Malay
+Name[x-test]=xxMalayxx
Name[zh_CN]=马来语
Name[zh_HK]=馬來語
Name[zh_TW]=馬來語
[mt]
Name=Maltese
Name[af]=Maltees
Name[ar]=مالطية
Name[as]=মাল্টিছ
Name[ast]=Maltés
Name[be]=Мальтыйская
Name[be@latin]=Maltyjskaja
Name[bg]=Малтийски
Name[bn]=মল্টিস
Name[bn_IN]=মল্টিস
Name[br]=Malteg
Name[bs]=Malteški
Name[ca]=Maltès
Name[ca@valencia]=Maltés
Name[cs]=Maltézský
Name[csb]=Maltajsczi
Name[cy]=Malteg
Name[da]=Maltesisk
Name[de]=Maltesisch
Name[el]=Μαλτέζικα
Name[en_GB]=Maltese
Name[eo]=Malta
Name[es]=Maltés
Name[et]=Malta
Name[eu]=Maltera
Name[fa]=مالتز
Name[fi]=Malta
Name[fr]=Maltais
Name[fy]=Malteesk
Name[ga]=Máltais
Name[gl]=Maltés
Name[gu]=માલ્ટીઝ
Name[he]=מלטזית
Name[hi]=माल्टी
Name[hne]=माल्टी
Name[hr]=Malteški
Name[hsb]=Maltesce
Name[hu]=Máltai
Name[ia]=Maltese
Name[id]=Maltese
Name[is]=Maltneska
Name[it]=Maltese
Name[ja]=マルタ語
Name[kk]=Мальташа
Name[km]=ម៉ាល់តា
Name[kn]=ಮಾಲ್ಟೀಸ್
Name[ko]=몰타어
Name[ku]=Maltayî
Name[lb]=Maltesesch
Name[lt]=Maltiečių
Name[lv]=Maltiešu
Name[mai]=माल्टीज
Name[mk]=Малтешки
Name[ml]=മാള്‍ടീസ്
Name[mr]=माल्टी
Name[ms]=Maltese
Name[nb]=Maltesisk
Name[nds]=Malteesch
Name[ne]=माल्तिस
Name[nl]=Maltees
Name[nn]=Maltesisk
Name[oc]=Maltés
Name[or]=Maltese
Name[pa]=ਮਾਲਟੀਸੀ
Name[pl]=Maltański
Name[ps]=مالټي
Name[pt]=Maltês
Name[pt_BR]=Maltês
Name[ro]=Malteză
Name[ru]=Мальтийский
Name[se]=Maltagiella
Name[si]=මෝල්ටීස්
Name[sk]=Maltčina
Name[sl]=maltežansko
Name[sq]=Malteze
Name[sr]=малтешки
Name[sr@ijekavian]=малтешки
Name[sr@ijekavianlatin]=malteški
Name[sr@latin]=malteški
Name[sv]=Maltesiska
Name[ta]=மால்டீசு
Name[te]=మాల్టీస్
Name[tg]=Малтесӣ
Name[th]=ภาษามอลตีส
Name[tr]=Malta Dili
Name[ug]=مالتاچە
Name[uk]=Мальтійська
Name[uz]=Maltacha
Name[uz@cyrillic]=Малтача
-Name[vi]=Man-tợ
+Name[vi]=Malta
Name[wa]=Maltès
-Name[x-test]=xxMaltesexx
Name[xh]=Maltese
+Name[x-test]=xxMaltesexx
Name[zh_CN]=马耳他语
Name[zh_HK]=馬爾他語
Name[zh_TW]=馬爾他語
[my]
Name=Burmese
Name[af]=Burmees
Name[ar]=بورمية
Name[as]=বাৰ্মিছ
Name[ast]=Birmanu
Name[be]=Бурмеская
Name[be@latin]=Burmeskaja
Name[bg]=Бирмански
Name[bn]=বর্মী
Name[bn_IN]=বার্মিজ
Name[br]=Birmaneg
Name[bs]=Burmanski
Name[ca]=Birmà
Name[ca@valencia]=Birmà
Name[cs]=Burmský
Name[csb]=Birmańsczi
Name[cy]=Burmeg
Name[da]=Burmese
Name[de]=Burmesisch
Name[el]=Βιρμανικά
Name[en_GB]=Burmese
Name[eo]=Birma
Name[es]=Burmés
Name[et]=Birma
Name[eu]=Birmaniera
Name[fa]=برمس
Name[fi]=Burma
Name[fr]=Birman
Name[fy]=Burmeesk
Name[ga]=Burmais
Name[gl]=Burmés
Name[gu]=બર્મીઝ
Name[he]=בורמזית
Name[hi]=बर्मी
Name[hne]=बर्मी
Name[hr]=Burmanski
Name[hsb]=Burmesce
Name[hu]=Burmai
Name[ia]=Burmese
Name[id]=Burmese
Name[is]=Búrmenska
Name[it]=Birmano
Name[ja]=ビルマ語
Name[kk]=Бирманша
Name[km]=ភូមា
Name[kn]=ಬರ್ಮೀಸ್
Name[ko]=버마어
Name[ku]=Burmayî
Name[lb]=Burmesesch
Name[lt]=Birmiečių
Name[lv]=Birmiešu
Name[mai]=बर्मीज
Name[mk]=Бурмански
Name[ml]=ബര്‍മ്മീസ്
Name[mr]=बर्मी
Name[ms]=Burma
Name[nb]=Burmesisk
Name[nds]=Burmeesch
Name[ne]=बर्मेली
Name[nl]=Burmees
Name[nn]=Burmesisk
Name[oc]=Birman
Name[or]=Burmese
Name[pa]=ਬੁਰਮੀਸੀ
Name[pl]=Birmański
Name[ps]=برمي
Name[pt]=Birmanês
Name[pt_BR]=Birmanês
Name[ro]=Burmeză
Name[ru]=Бирманский
Name[se]=Burmagiella
Name[si]=බුරුම
Name[sk]=Barmčina
Name[sl]=burmansko
Name[sq]=Burmeze
Name[sr]=бурмански
Name[sr@ijekavian]=бурмански
Name[sr@ijekavianlatin]=burmanski
Name[sr@latin]=burmanski
Name[sv]=Burmesiska
Name[ta]=பர்மியம்
Name[te]=బర్మీస్
Name[tg]=Бурмезӣ
Name[th]=ภาษาพม่า
Name[tr]=Burmese
Name[ug]=بىرمىچە
Name[uk]=Бірманська
Name[uz]=Burmezcha
Name[uz@cyrillic]=Бурмезча
-Name[vi]=Miến-điện
+Name[vi]=Miến Điện
Name[wa]=Birman
-Name[x-test]=xxBurmesexx
Name[xh]=Burmese
+Name[x-test]=xxBurmesexx
Name[zh_CN]=缅甸语
Name[zh_HK]=緬甸語
Name[zh_TW]=緬甸語
[na]
Name=Nauru
Name[af]=Nauru
Name[ar]=ناورو
Name[as]=নাউৰু
Name[ast]=Nauru
Name[be]=Наурскі
Name[be@latin]=Nauru
Name[bg]=Науру
Name[bn]=নাউরু
Name[bn_IN]=নাউরু
Name[br]=Naurueg
Name[bs]=Nauru
Name[ca]=Nauruà
Name[ca@valencia]=Nauruà
Name[cs]=Nauru
Name[csb]=Nauru
Name[cy]=Nauru
Name[da]=Nauru
Name[de]=Nauruisch
Name[el]=Ναουρού
Name[en_GB]=Nauru
Name[eo]=Naura
Name[es]=Nauru
Name[et]=Nauru
Name[eu]=Nauruera
Name[fa]=نائورو
Name[fi]=Nauru
Name[fr]=Nauruan
Name[fy]=Naurûaansk
Name[ga]=Nárúis
Name[gl]=Nauru
Name[gu]=નાઉરુ
Name[he]=נאורו
Name[hi]=नौरू
Name[hne]=नौरू
Name[hr]=Nauru
Name[hsb]=Nauru
Name[hu]=Nauru
Name[ia]=Nauru
Name[id]=Nauru
Name[is]=Nauru
Name[it]=Nauruano
Name[ja]=ナウル語
Name[kk]=Науру
Name[km]=ណូរុ
Name[kn]=ನೌರು
Name[ko]=나우루어
Name[ku]=Naûrû
Name[lb]=Nauruesch
Name[lt]=Nauru
Name[lv]=Nauruiešu
Name[mai]=नौरू
Name[mk]=Науру
Name[ml]=നൌറു
Name[mr]=नौरु
Name[ms]=Nauru
Name[nb]=Nauru
Name[nds]=Nauru
Name[ne]=नाउरू
Name[nl]=Nauru
Name[nn]=Nauru
Name[oc]=Nauru
Name[or]=Nauru
Name[pa]=ਨਾਉਰੂ
Name[pl]=Nauru
Name[ps]=ناورو
Name[pt]=Nauru
Name[pt_BR]=Nauruano
Name[ro]=Naură
Name[ru]=Науру
Name[se]=Naurugiella
Name[si]=නවුරු
Name[sk]=Nauruština
Name[sl]=nauru
Name[sq]=Nauru
Name[sr]=науру
Name[sr@ijekavian]=науру
Name[sr@ijekavianlatin]=nauru
Name[sr@latin]=nauru
Name[sv]=Nauru
Name[ta]=நவுரு
Name[te]=నౌరు
Name[tg]=Науру
Name[th]=ภาษานาอุรุ
Name[tr]=Nauru
Name[ug]=ناۋرۇ
Name[uk]=Науру
Name[uz]=Nauru
Name[uz@cyrillic]=Науру
-Name[vi]=Nau-ru
+Name[vi]=Nauru
Name[wa]=Nawouro
-Name[x-test]=xxNauruxx
Name[xh]=Nauru
+Name[x-test]=xxNauruxx
Name[zh_CN]=瑙鲁语
Name[zh_HK]=諾魯語
Name[zh_TW]=諾魯語
[nb]
Name=Norwegian Bokmål
Name[af]=Noorweegs Bokmål
Name[ar]=نرويجية بوكمال
Name[as]=নোৰ্ৱেইয়ান বকমাল
Name[ast]=Noruegu Bokmål
Name[be]=Нарвежская (бокмаль)
Name[be@latin]=Narveskaja (Bokmål)
Name[bg]=Норвежки (букмол)
Name[bn]=নরওয়েজীয় বোকমাল
Name[bn_IN]=নরওয়েজিয়ান বোকমাল
Name[br]=Norvegeg Bokmål
Name[bs]=Norveški(Bukmol)
Name[ca]=Noruec Bokmal
Name[ca@valencia]=Noruec Bokmal
Name[cs]=Norský (Bokmål)
Name[csb]=Norwesczi Bokmål
Name[cy]=Bokmal Norwyeg
Name[da]=Norsk bokmål
Name[de]=Norwegisch (Bokmål)
Name[el]=Νορβηγικά Bokmål
Name[en_GB]=Norwegian Bokmål
Name[eo]=Norvega (Bokmal)
Name[es]=Noruego Bokmål
Name[et]=Norra bokmål
Name[eu]=Norvegiera (Bokmål)
Name[fa]=نروژی بوکمال
Name[fi]=Norjan bokmål
Name[fr]=Norvégien Bokmaal
Name[fy]=Noarsk, Bokmål
Name[ga]=Ioruais (Bokmål)
Name[gl]=Noruegués Bokmål
Name[gu]=નોર્વેયન બોકમલ
Name[he]=נורבגית Bokmål
Name[hi]=नार्वेजियाई बोकमाल
Name[hne]=नार्वेजियाई बोकमाल
Name[hr]=Norveški Bokmål
Name[hsb]=Norwegsce (Bokmål)
Name[hu]=Norvég (bokmal)
Name[ia]=Norvegiano Bokmål
Name[id]=Norwegian Bokmål
Name[is]=Norska (bókmál)
Name[it]=Norvegese bokmål
Name[ja]=ノルウェー語 (ブークモール)
Name[kk]=Норвег букмалша
Name[km]=ន័រវែស បុកម៉ាល់
Name[kn]=ನಾರ್ವೆಯ ಬೋಕ್ಮಾಲ್
Name[ko]=노르웨이어 (복말)
Name[ku]=Norwêcî Bokmal
Name[lb]=Norwegesch (Bokmål)
Name[lt]=Norvegų Bokmål
Name[lv]=Norvēģu (bukmols)
Name[mai]=नार्वेजियाई बोकमाल
Name[mk]=Норвешки Bokmål
Name[ml]=നോര്‍വ്വീജിയന്‍ ബോക്മാല്
Name[mr]=नार्वेजियन बोकमल
Name[ms]=Norwegian Bokmål
Name[nb]=Norsk (bokmål)
Name[nds]=Norweegsch (Bokmål)
Name[ne]=नर्वेली बोकमल
Name[nl]=Noors Bokmål
Name[nn]=Norsk (bokmål)
Name[oc]=Norvegian Bokmål
Name[or]=Norwegian Bokmål
Name[pa]=ਨੋਰਵਿਗੀਆਨ ਬੋਕਮਾਲ
Name[pl]=Norweski Bokmaal
Name[ps]=ناروېجني بوکمل
Name[pt]=Norueguês Bokmål
Name[pt_BR]=Dano-norueguês
Name[ro]=Norvegiană Bokmål
Name[ru]=Норвежский (литературный)
Name[se]=Girjedárogiella
Name[si]=නෝවීජියානු බොක්මැල්
Name[sk]=Nórčina (Bokmål)
Name[sl]=norveško (bokmaal)
Name[sq]=Norvegjeze Bokmål
Name[sr]=норвешки (књижевни)
Name[sr@ijekavian]=норвешки (књижевни)
Name[sr@ijekavianlatin]=norveški (književni)
Name[sr@latin]=norveški (književni)
Name[sv]=Norskt bokmål
Name[ta]=நார்வீஜியன் பொக்மால்
Name[te]=నార్వీజియన్ బోక్మాల్
Name[tg]=Норвегиягии Боқмалӣ
Name[th]=ภาษานอร์เวย์ (บ็อคมัล)
Name[tr]=Norveççe Bokmål
Name[ug]=نورۋېگىيە بوكمالچە
Name[uk]=Норвезька (Bokmål)
Name[uz]=Norvegcha (Bokmaal)
Name[uz@cyrillic]=Норвегча (Бокмаал)
-Name[vi]=Na-uy (Bóc-mặn)
+Name[vi]=Na Uy - Bokmål
Name[wa]=Norvedjin (Bokmål)
-Name[x-test]=xxNorwegian Bokmålxx
Name[xh]=Norwegian Bokmål
+Name[x-test]=xxNorwegian Bokmålxx
Name[zh_CN]=挪威语(博克马尔语)
Name[zh_TW]=挪威 Bokmål
[nd]
Name=Ndebele, North
Name[af]=Ndebele, Noord
Name[ar]=نديبيلية شمالية
Name[as]=ডেবেল, নৰ্থ
Name[ast]=Ndebele, Norte
Name[be]=Ндэбель (поўнач)
Name[be@latin]=Ndebele (poŭnač)
Name[bg]=Северен Ндебеле
Name[bn]=ন্‌দেবেলে, উত্তর
Name[bn_IN]=এন্ডেবিলি, উত্তর
Name[br]=Ndebele, Norzh
Name[bs]=Ndebele, sjeverni
Name[ca]=Ndebele Nord
Name[ca@valencia]=Ndebele Nord
Name[cs]=Ndebele, Severní
Name[csb]=Ndebele, Norda
Name[cy]=Ndebele, Gogledd
Name[da]=Ndebele, nord
Name[de]=Ndebele (nördliches)
Name[el]=Ndebele, North
Name[en_GB]=Ndebele, North
Name[eo]=Ndebela, norda
Name[es]=Ndebele del norte
Name[et]=Põhja-ndebele
Name[eu]=Ndebelera (iparraldekoa)
Name[fa]=اندبل شمالی
Name[fi]=Pohjois-ndebele
Name[fr]=Ndébélé du Nord
Name[fy]=Ndebele, Noard
Name[ga]=Ndebele Thuaidh
Name[gl]=Ndebele do norte
Name[gu]=ડેબેલે, ઉત્તરી
Name[he]=נדבלה צפונית
Name[hi]=नेदेबेले, उत्तर
Name[hne]=नेदेबेले, उत्तर
Name[hr]=Ndebele, Sjeverni
Name[hsb]=Ndebele, Sewjerne
Name[hu]=Ndebele (északi)
Name[ia]=Ndebele Septentrional
Name[id]=Ndebele, Utara
Name[is]=Ndebele, norður
Name[it]=Ndebele settentrionale
Name[ja]=北ンデベレ語
Name[kk]=Солтүсік Ндебеле
Name[km]=អ៊ែនដិបិលិ ​ជើង
Name[kn]=ನೆಬೆಲೇ, ಉತ್ತರ
Name[ko]=북부 은데벨레어
Name[ku]=Ndebele, Bakur
Name[lb]=Ndebele (nördlech)
Name[lt]=Ndebele, Šiaurės
Name[lv]=Ziemeļndebelu
Name[mai]=नेदेबेले, उत्तर
Name[mk]=Ндебеле, северен
Name[ml]=വടക്കന്‍ ഡെബെലി
Name[mr]=एनडेबेले, उत्तर
Name[ms]=Ndebele, North
Name[nb]=Ndebele, Nord
Name[nds]=Ndebele, Noord
Name[ne]=डेबेले, उत्तर
Name[nl]=Ndebele, Noord
Name[nn]=Ndebele, nord
Name[or]=Ndebele, North
Name[pa]=ਨਡੀਬੀਲੀ, ਉੱਤਰੀ
Name[pl]=Ndebele, Północ
Name[pt]=Ndebele do Norte
Name[pt_BR]=Ndebele do norte
Name[ro]=Ndebelă nordică
Name[ru]=Северный ндебеле
Name[se]=Ndebelegiella, davvi
Name[sk]=Ndebelčina, severná
Name[sl]=ndebele, severno
Name[sq]=Ndebele, Veriore
Name[sr]=ндебеле, северни
Name[sr@ijekavian]=ндебеле, сјеверни
Name[sr@ijekavianlatin]=ndebele, sjeverni
Name[sr@latin]=ndebele, severni
Name[sv]=Nordndebele
Name[ta]=வட டெபெலே
Name[te]=నెబేలె, ఉత్తర
Name[tg]=Ндебелии Шимолӣ
Name[th]=ภาษาอึนเดเบเล ตอนเหนือ
Name[tr]=Ndebele, North
Name[ug]=ندىبېلې، شىمالىي
Name[uk]=Ндебелє, Північна
Name[uz]=Ndebele, Shimol
Name[uz@cyrillic]=Ндебеле, Шимол
-Name[vi]=N-đe-be-lê (Bắc)
+Name[vi]=Ndebele, Bắc
Name[wa]=Ndebele (bijhe)
-Name[x-test]=xxNdebele, Northxx
Name[xh]=Isindebele, Emntla
+Name[x-test]=xxNdebele, Northxx
Name[zh_CN]=恩德贝莱语(北部)
Name[zh_HK]=Ndebele語,北部
Name[zh_TW]=Ndebele語,北部
[nds]
Name=Low Saxon
Name[af]=Lae Saxon
Name[ar]=ساكسونية منخفضة
Name[as]=লো' ছেক্সন
Name[ast]=Saxón baxu
Name[be]=Ніжнесаксонская
Name[be@latin]=Nižnie-saksonskaja
Name[bg]=Долносаксонски
Name[bn]=নিম্ন স্যাক্সন
Name[bn_IN]=লো স্যাক্সন
Name[br]=Saozeg izel
Name[bs]=Donjosaksonski
Name[ca]=Baix saxó
Name[ca@valencia]=Baix saxó
Name[cs]=Dolnosaský
Name[csb]=Dolnosaksońsczi
Name[cy]=Sacsoneg Isel
Name[da]=Nedersaksisk
Name[de]=Niederdeutsch
Name[el]=Κάτω Σαξωνικά
Name[en_GB]=Low Saxon
Name[eo]=Malalta saksa
Name[es]=Bajo sajón
Name[et]=Alamsaksi
Name[eu]=Beheko Sajoniera
Name[fa]=ساکسونی سفلی
Name[fi]=Alasaksa
Name[fr]=Bas saxon
Name[fy]=Neder Saksysk
Name[ga]=Sacsainis Íochtarach
Name[gl]=Baixo saxón
Name[gu]=નીચું સેક્સોન
Name[he]=סקסונית תחתית
Name[hi]=लो सेक्सन
Name[hne]=लो सेक्सन
Name[hr]=Donjosaksonski
Name[hsb]=Delnjosaksce
Name[hu]=Alsószász
Name[ia]=Basso Saxone
Name[id]=Low Saxon
Name[is]=Low Saxon
Name[it]=Basso sassone
Name[ja]=低ザクセン語
Name[kk]=Төмен саксонша
Name[km]=ឡូសាក់សុង
Name[kn]=ಕೆಳಗಿನ ಸಾಕ್ಸನ್
Name[ko]=저지대 색슨어
Name[ku]=Saksoniya Jêrîn
Name[lb]=Niddersächsesch
Name[lt]=Žemutinių saksonų
Name[lv]=Lejasvācu
Name[mai]=लो सेक्सन
Name[mk]=Долносаксонски
Name[ml]=ലോ സാക്സന്‍
Name[mr]=लो सॅक्सन
Name[ms]=Low Saxon
Name[nb]=Nedersaksisk
Name[nds]=Plattdüütsch
Name[ne]=लो साक्सोन
Name[nl]=Nedersaksisch
Name[nn]=Lågtysk
Name[or]=Low Saxon
Name[pa]=ਲੋਅ ਸਾਕੋਨ
Name[pl]=Dolnosaksoński
Name[ps]=ښکته سېګسن
Name[pt]=Baixo-Saxão
Name[pt_BR]=Baixo Saxão
Name[ro]=Saxona de Jos
Name[ru]=Нижнесаксонский
Name[se]=Vuolil Sáksonagiella
Name[si]=ලෝ සැක්සන්
Name[sk]=Dolná saština
Name[sl]=spodnjesaško
Name[sq]=Saksone e Ulët
Name[sr]=доњосаксонски
Name[sr@ijekavian]=доњосаксонски
Name[sr@ijekavianlatin]=donjosaksonski
Name[sr@latin]=donjosaksonski
Name[sv]=Lågsaxiska
Name[ta]=லோ சாக்ஸான்
Name[te]=లో సాక్సన్
Name[tg]=Саксонии Поёнӣ
Name[th]=ภาษาเยอรมัน ระดับล่าง
Name[tr]=Aşağı Saksonca
Name[ug]=تۆۋەن ساكسونچە
Name[uk]=Нижньосаксонська
Name[uz]=Past Saksoncha
Name[uz@cyrillic]=Паст Саксонча
-Name[vi]=Xác-xọnh thấp
Name[wa]=Bas sacson
Name[x-test]=xxLow Saxonxx
Name[zh_CN]=下撒克逊语
Name[zh_TW]=薩克遜語
[ne]
Name=Nepali
Name[af]=Nepalees
Name[ar]=نيبالية
Name[as]=নেপালী
Name[ast]=Nepalinu
Name[be]=Непальская
Name[be@latin]=Nepalskaja
Name[bg]=Непали
Name[bn]=নেপালী
Name[bn_IN]=নেপালি
Name[br]=Nepaleg
Name[bs]=Nepalski
Name[ca]=Nepalès
Name[ca@valencia]=Nepalés
Name[cs]=Nepálský
Name[csb]=Nepalsczi
Name[cy]=Nepali
Name[da]=Nepali
Name[de]=Nepali
Name[el]=Nepali
Name[en_GB]=Nepali
Name[eo]=Nepala
Name[es]=Nepalí
Name[et]=Nepaali
Name[eu]=Nepalera
Name[fa]=نپالی
Name[fi]=Nepali
Name[fr]=Népalais
Name[fy]=Nepaleesk
Name[ga]=Neipealais
Name[gl]=Nepalí
Name[gu]=નેપાળી
Name[he]=נפאלית
Name[hi]=नेपाली
Name[hne]=नेपाली
Name[hr]=Nepalski
Name[hsb]=Nepalesce
Name[hu]=Nepáli
Name[ia]=Nepali
Name[id]=Nepali
Name[is]=Nepali
Name[it]=Nepalese
Name[ja]=ネパール語
Name[kk]=Непалша
Name[km]=នេប៉ាល់
Name[kn]=ನೇಪಾಲಿ
Name[ko]=네팔어
Name[ku]=Nepalî
Name[lb]=Nepalesesch
Name[lt]=Nepaliečių
Name[lv]=Nepāliešu
Name[mai]=नेपाली
Name[mk]=Непалски
Name[ml]=നേപ്പാളി
Name[mr]=नेपाली
Name[ms]=Nepali
Name[nb]=Nepali
Name[nds]=Nepaleesch
Name[ne]=नेपाली
Name[nl]=Nepalees
Name[nn]=Nepali
Name[oc]=Nepali
Name[or]=Nepali
Name[pa]=ਨੇਪਾਲੀ
Name[pl]=Nepalski
Name[ps]=نيپالي
Name[pt]=Nepalês
Name[pt_BR]=Nepalês
Name[ro]=Nepaleză
Name[ru]=Непальский
Name[se]=Nepálagiella
Name[si]=නේපාල
Name[sk]=Nepálčina
Name[sl]=nepalsko
Name[sq]=Nepaleze
Name[sr]=непалски
Name[sr@ijekavian]=непалски
Name[sr@ijekavianlatin]=nepalski
Name[sr@latin]=nepalski
Name[sv]=Nepali
Name[ta]=நேபாளி
Name[te]=నేపాలి
Name[tg]=Непалӣ
Name[th]=ภาษาเนปาล
Name[tr]=Nepalce
Name[ug]=نېپالچە
Name[uk]=Непальська
Name[uz]=Nepalcha
Name[uz@cyrillic]=Непалча
-Name[vi]=Ne-pa-li
+Name[vi]=Nê pan
Name[wa]=Nepalès
-Name[x-test]=xxNepalixx
Name[xh]=Nepali
+Name[x-test]=xxNepalixx
Name[zh_CN]=尼泊尔语
Name[zh_HK]=尼泊爾語
Name[zh_TW]=尼泊爾語
[ng]
Name=Ndonga
Name[af]=Ndonga
Name[ar]=ندونغا
Name[as]=ডঙ্গা
Name[ast]=Ndonga
Name[be]=Ндонга
Name[be@latin]=Ndonga
Name[bg]=Ндонга
Name[bn]=নডোঙ্গা
Name[bn_IN]=এনডোঙ্গা
Name[br]=Ndonga
Name[bs]=Ndonga
Name[ca]=Ndonga
Name[ca@valencia]=Ndonga
Name[cs]=Ndonga
Name[csb]=Ndonga
Name[cy]=Ndonga
Name[da]=Ndonga
Name[de]=Oshivambo
Name[el]=Ndonga
Name[en_GB]=Ndonga
Name[eo]=Ndonga
Name[es]=Ndonga
Name[et]=Ndonga
Name[eu]=Ndonga
Name[fa]=اندونگا
Name[fi]=Ndonga
Name[fr]=Ndonga
Name[fy]=Ndonga
Name[ga]=Ndongais
Name[gl]=Ndonga
Name[gu]=ડોંગા
Name[he]=נדונגה
Name[hi]=नदोन्गा
Name[hne]=नदोन्गा
Name[hr]=Ndonga
Name[hsb]=Ndonga
Name[hu]=Ndonga
Name[ia]=Ndonga
Name[id]=Ndonga
Name[is]=Ndonga
Name[it]=Ndonga
Name[ja]=ンドゥンガ語
Name[kk]=Ндонга
Name[km]=អ៊ែនដុងហ្កា
Name[kn]=ಡೋಂಗಾ
Name[ko]=은동가어
Name[ku]=Ndonga
Name[lb]=Ndonga
Name[lt]=Ndonga
Name[lv]=Ndongu
Name[mai]=नदोन्गा
Name[mk]=Ндонга
Name[ml]=ഡോങ്കാ
Name[mr]=नदोन्गा
Name[ms]=Ndonga
Name[nb]=Ndonga
Name[nds]=Ndonga
Name[ne]=डोङ्गा
Name[nl]=Ndonga
Name[nn]=Ndonga
Name[oc]=Ndonga
Name[or]=Ndonga
Name[pa]=ਨਡੋਨਗਾ
Name[pl]=Ndonga
Name[pt]=Ndonga
Name[pt_BR]=Ndonga
Name[ro]=Ndongă
Name[ru]=Ндонга
Name[se]=Ndongagiella
Name[si]=එන්ඩොංගා
Name[sk]=Ndonga
Name[sl]=ndonga
Name[sq]=Ndonga
Name[sr]=ндонга
Name[sr@ijekavian]=ндонга
Name[sr@ijekavianlatin]=ndonga
Name[sr@latin]=ndonga
Name[sv]=Ndonga
Name[ta]=டொங்கா
Name[te]=డొంగా
Name[tg]=Ндонга
Name[th]=ภาษาอึนดองกา
Name[tr]=Ndonga
Name[ug]=ندونگا
Name[uk]=Ндонга
Name[uz]=Ndonga
Name[uz@cyrillic]=Ндонга
-Name[vi]=N-đon-ga
+Name[vi]=Ndonga
Name[wa]=Ndonga
-Name[x-test]=xxNdongaxx
Name[xh]=Ndonga
+Name[x-test]=xxNdongaxx
Name[zh_CN]=恩东加语
Name[zh_HK]=Ndonga語
Name[zh_TW]=Ndonga語
[nl]
Name=Dutch
Name[af]=Nederlands
Name[ar]=هولندية
Name[as]=ডাচ
Name[ast]=Holandés
Name[be]=Галандская
Name[be@latin]=Halandzkaja
Name[bg]=Холандски
Name[bn]=ওলন্দাজ
Name[bn_IN]=ডাচ
Name[br]=Nederlandeg
Name[bs]=Holandski
Name[ca]=Holandès
Name[ca@valencia]=Holandés
Name[cs]=Holandský
Name[csb]=Hòlandzczi
Name[cy]=Iseldireg
Name[da]=Hollandsk
Name[de]=Niederländisch
Name[el]=Ολλανδικά
Name[en_GB]=Dutch
Name[eo]=Nederlanda
Name[es]=Holandés
Name[et]=Hollandi
Name[eu]=Nederlandera
Name[fa]=هلندی
Name[fi]=Hollanti
Name[fr]=Hollandais
Name[fy]=Nederlânsk
Name[ga]=Ollainnis
Name[gl]=Holandés
Name[gu]=ડચ
Name[he]=הולנדית
Name[hi]=डच
Name[hne]=डच
Name[hr]=Nizozemski
Name[hsb]=Nižozemsce
Name[hu]=Holland
Name[ia]=Hollandese
Name[id]=Belanda
Name[is]=Hollenska
Name[it]=Nederlandese
Name[ja]=オランダ語
Name[kk]=Нидреландша
Name[km]=ហុល្លង់
Name[kn]=ಡಚ್
Name[ko]=네덜란드어
Name[ku]=Holendî
Name[lb]=Hollännesch
Name[lt]=Olandų
Name[lv]=Holandiešu
Name[mai]=डच
Name[mk]=Холандски
Name[ml]=ഡച്ച്
Name[mr]=डच
Name[ms]=Belanda
Name[nb]=Nederlandsk
Name[nds]=Nedderlannsch
Name[ne]=डच
Name[nl]=Nederlands
Name[nn]=Nederlandsk
Name[oc]=Olandés
Name[or]=Dutch
Name[pa]=ਡੱਚ
Name[pl]=Holenderski
Name[ps]=ډچ
Name[pt]=Holandês
Name[pt_BR]=Holandês
Name[ro]=Olandeză
Name[ru]=Голландский
Name[se]=Hollánddagiella
Name[si]=ඩච්
Name[sk]=Holandčina
Name[sl]=nizozemsko
Name[sq]=Hollandeze
Name[sr]=холандски
Name[sr@ijekavian]=холандски
Name[sr@ijekavianlatin]=holandski
Name[sr@latin]=holandski
Name[sv]=Holländska
Name[ta]=டச்சு
Name[te]=డచ్
Name[tg]=Олмонӣ
Name[th]=ภาษาดัทช์
Name[tr]=Flamanca
Name[ug]=گوللاندىيەچە
Name[uk]=Голландська
Name[uz]=Gollandcha
Name[uz@cyrillic]=Голландча
-Name[vi]=Hoà-lan
+Name[vi]=Hà Lan
Name[wa]=Neyerlandès
-Name[x-test]=xxDutchxx
Name[xh]=Isidatshi
+Name[x-test]=xxDutchxx
Name[zh_CN]=荷兰语
Name[zh_HK]=荷蘭語
Name[zh_TW]=荷蘭語
[nn]
Name=Norwegian Nynorsk
Name[af]=Noörweegse Nynorsk
Name[ar]=نرويجية نينورسك
Name[as]=ন'ৰ্ৱেইয়ান নিন'ৰ্স্ক
Name[ast]=Nynorsk de Noruega
Name[be]=Нарвежская (нюнорск)
Name[be@latin]=Narveskaja (Nynorsk)
Name[bg]=Норвежки (нюнорск)
Name[bn]=নরওয়েজীয় নাইনর্স্ক
Name[bn_IN]=নরওয়েজিয়ান নিনোরস্ক
Name[br]=Norvegeg Nynorsk
Name[bs]=Norveški (Ninorsk)
Name[ca]=Noruec Nynorsk
Name[ca@valencia]=Noruec Nynorsk
Name[cs]=Norský (Nynorsk)
Name[csb]=Norwesczi Nynorsk
Name[cy]=Nynorsk Norwyeg
Name[da]=Nynorsk
Name[de]=Norwegisch (Nynorsk)
Name[el]=Νορβηγικά Nynorsk
Name[en_GB]=Norwegian Nynorsk
Name[eo]=Norvega (Nynorsk)
Name[es]=Noruego Nynorsk
Name[et]=Norra nynorsk
Name[eu]=Norvegiera (Nynorsk)
Name[fa]=نرس جدید نروژی
Name[fi]=Norjan nynorsk
Name[fr]=Norvégien Nynorsk
Name[fy]=Noarsk, Nynorsk
Name[ga]=Ioruais (Nynorsk)
Name[gl]=Noruegués Nynorsk
Name[gu]=નોર્વેયન નોર્સક
Name[he]=נורבגית Nynorsk
Name[hi]=नारवेजियाई नायनोर्सक
Name[hne]=नारवेजियाई नायनोर्सक
Name[hr]=Norveški Nynorsk
Name[hsb]=Norwegsce (Nynorsk)
Name[hu]=Norvég (nynorsk)
Name[ia]=Norvegiano Nynorsk
Name[id]=Norwegian Nynorsk
Name[is]=Norska (nýnorska)
Name[it]=Norvegese nynorsk
Name[ja]=ノルウェー語 (ニーノシュク)
Name[kk]=Новег нунорскша
Name[km]=ន័រវែស នីនូស
Name[kn]=ನಾರ್ವೆಯ ನೈನೋರ್ಕ್
Name[ko]=노르웨이어 (뉘노르스크)
Name[ku]=Norwêcî Nynorsk
Name[lb]=Norwegesch (Nynorsk)
Name[lt]=Norvegų Nynorsk
Name[lv]=Jaunnorvēģu
Name[mai]=नार्वेजियन न्योनोर्स्क
Name[mk]=Норвешки Nynorsk
Name[ml]=നോര്‍വ്വീജിയന്‍ നെയ്നോര്‍സ്ക്
Name[mr]=नारवेजियाई नायनोर्सक
Name[ms]=Norwegian Nynorsk
Name[nb]=Norsk (nynorsk)
Name[nds]=Norweegsch Nynorsk
Name[ne]=नर्वेली नाइनोर्सक
Name[nl]=Noors, Nynorsk
Name[nn]=Norsk (nynorsk)
Name[oc]=Nòrvegian (Nynorsk)
Name[or]=Norwegian Nynorsk
Name[pa]=ਨੋਰਵਿਗੀਆਨ ਨਯਾਨੋਰਸਕ
Name[pl]=Norweski Nynorsk
Name[ps]=ناروېجني نېنورسک
Name[pt]=Norueguês Nynorsk
Name[pt_BR]=Novo Norueguês
Name[ro]=Norvegiană Nynorsk
Name[ru]=Норвежский (нюнорск)
Name[se]=Ođđadárogiella
Name[sk]=Nórčina (Nynorsk)
Name[sl]=norveško (nyorsk)
Name[sq]=Norvegjeze Nynorsk
Name[sr]=новонорвешки
Name[sr@ijekavian]=новонорвешки
Name[sr@ijekavianlatin]=novonorveški
Name[sr@latin]=novonorveški
Name[sv]=Nynorska
Name[ta]=நார்வீஜியன் (நையோர்ஸ்க்)
Name[te]=నార్వీజియన్ న్యోర్స్క్
Name[tg]=Норвегиягии Нюнорсӣ
Name[th]=ภาษานอร์เวย์ (นูนอร์สคฺ)
Name[tr]=Norveççe Nynorsk
Name[ug]=نورۋېگىيە ناينوركس
Name[uk]=Норвезька (Nynorsk)
Name[uz]=Norvegiyacha (Nynorsk)
Name[uz@cyrillic]=Норвегияча (Нйнорск)
-Name[vi]=Na-uy (Ny-noạ-x-kh)
+Name[vi]=Na Uy - Nynorsk
Name[wa]=Noû-Norvedjyin (Nynorsk)
-Name[x-test]=xxNorwegian Nynorskxx
Name[xh]=Norwegian Nynorsk
+Name[x-test]=xxNorwegian Nynorskxx
Name[zh_CN]=挪威语(尼诺斯克语)
Name[zh_HK]=挪威 Nynorsk 語
Name[zh_TW]=挪威 Nynorsk 語
[nr]
Name=Ndebele, South
Name[af]=Ndebele, Suid
Name[ar]=نديبيلي جنوبية
Name[as]=ডেবেলে,ছাউথ
Name[ast]=Ndebele, Sur
Name[be]=Ндэбель (поўдзень)
Name[be@latin]=Ndebele (poŭdzień)
Name[bg]=Южен Ндебеле
Name[bn]=ন্‌দেবেলে, দক্ষিণ
Name[bn_IN]=এন্ডেবিলি, দক্ষিণ
Name[br]=Ndebele, Su
Name[bs]=Ndebele, južni
Name[ca]=Ndebele Sud
Name[ca@valencia]=Ndebele Sud
Name[cs]=Ndebele, Jižní
Name[csb]=Ndebele, Pôłnie
Name[cy]=Ndebele, De
Name[da]=Ndebele, syd
Name[de]=Ndebele (südliches)
Name[el]=Ndebele, South
Name[en_GB]=Ndebele, South
Name[eo]=Ndebela, suda
Name[es]=Ndebele del sur
Name[et]=Lõuna-ndebele
Name[eu]=Ndebelera (hegoaldekoa)
Name[fa]=اندبل جنوبی
Name[fi]=Etelä-ndebele
Name[fr]=Ndébélé du Sud
Name[fy]=Ndebele, Súd
Name[ga]=Ndebele Theas
Name[gl]=Ndebele do sur
Name[gu]=ડેબેલે, દક્ષિણી
Name[he]=נדבלה דרומית
Name[hi]=नेदेबेले,दक्षिण
Name[hne]=नेदेबेले,दक्छिन
Name[hr]=Ndebele, Južni
Name[hsb]=Ndebele, Južne
Name[hu]=Ndebele (déli)
Name[ia]=Ndebele Meridional
Name[id]=Ndebele, Utara
Name[is]=Ndebele, suður
Name[it]=Ndebele meridionale
Name[ja]=南ンデベレ語
Name[kk]=Оңтүстік ндебеле
Name[km]=អ៊ែនដិបិលិ ត្បូង
Name[kn]=ನೆಬೆಲೇ, ದಕ್ಷಿಣ
Name[ko]=남부 은데벨레어
Name[ku]=Ndebele, Başûr
Name[lb]=Ndebele (südlecht)
Name[lt]=Ndebele, Pietų
Name[lv]=Dienvidndebelu
Name[mai]=न्डेबेले, दक्षिण
Name[mk]=Ндебеле, јужен
Name[ml]=തെക്കന്‍ ഡെബെലി
Name[mr]=एनडेबेले, दक्षिण
Name[ms]=Ndebele, South
Name[nb]=Ndebele, Sør
Name[nds]=Ndebele, Sööd
Name[ne]=डेबेले, दक्षिण
Name[nl]=Ndebele, Zuid
Name[nn]=Ndebele, sør
Name[or]=Ndebele, South
Name[pa]=ਨਡੀਬੀਲੀ, ਦੱਖਣੀ
Name[pl]=Ndebele, Południe
Name[pt]=Ndebele do Sul
Name[pt_BR]=Ndebele do Sul
Name[ro]=Ndebelă sudică
Name[ru]=Южный ндебеле
Name[se]=Ndebelegiella, lulli
Name[si]=එන්බෙලෙ, දකුණු
Name[sk]=Ndebelčina, južná
Name[sl]=ndebele, južno
Name[sq]=Ndebele, Jugore
Name[sr]=ндебеле, јужни
Name[sr@ijekavian]=ндебеле, јужни
Name[sr@ijekavianlatin]=ndebele, južni
Name[sr@latin]=ndebele, južni
Name[sv]=Sydndebele
Name[ta]=தென் டெபெலே
Name[te]=నెబేలె, దక్షిణ
Name[tg]=Ндебелии Ҷанубӣ
Name[th]=ภาษาอึนเดเบเล ตอนใต้
Name[tr]=Ndebele, South
Name[ug]=ندېبېلې، جەنۇبى
Name[uk]=Ндебелє, Південна
Name[uz]=Ndebele, Janub
Name[uz@cyrillic]=Ндебеле, Жануб
-Name[vi]=N-đe-be-lê (Nam)
+Name[vi]=Ndebele, Nam
Name[wa]=Ndebele (nonne)
-Name[x-test]=xxNdebele, Southxx
Name[xh]=Isindebele, Emazantsi
+Name[x-test]=xxNdebele, Southxx
Name[zh_CN]=恩德贝莱语(南部)
Name[zh_HK]=Ndebele語,南部
Name[zh_TW]=Ndebele語,南部
[nso]
Name=Northern Sotho
Name[af]=Noord Sotho
Name[ar]=سوتو شمالية
Name[as]=নৰ্দাৰ্ণ ছ'থ'
Name[ast]=Sotho del Norte
Name[be]=Паўночнае Сота
Name[be@latin]=Paŭnočnaje Sota
Name[bg]=Северен Сото
Name[bn]=উত্তর সোথো
Name[bn_IN]=উত্তর সোথো
Name[br]=Soto, Norzh
Name[bs]=Soto(sjeverni)
Name[ca]=Sotho nord
Name[ca@valencia]=Sotho nord
Name[cs]=Severní Sotho
Name[csb]=Nordowé Sotho
Name[cy]=Sotho'r Gogledd
Name[da]=Nord Sotho
Name[de]=Nord-Sotho
Name[el]=Northern Sotho
Name[en_GB]=Northern Sotho
Name[eo]=Sota, norda
Name[es]=Sotho del norte
Name[et]=Põhja-sotho
Name[eu]=Sothoera (iparraldekoa)
Name[fa]=سوتوی شمالی
Name[fi]=Pohjoissotho
Name[fr]=Sotho du Nord
Name[fy]=Noard Sotho
Name[ga]=Seipidis
Name[gl]=Sotho do norte
Name[gu]=ઉત્તરી સોથો
Name[he]=סותו צפונית
Name[hi]=उत्तरी सोथो
Name[hne]=उत्तरी सोथो
Name[hr]=Sjeverni Sotho
Name[hsb]=Sewjerne Sotho
Name[hu]=Északi sotho
Name[ia]=Sotho Septentrional
Name[id]=Sotho Bagian Utara
Name[is]=Norður Sotho
Name[it]=Sesotho del nord
Name[ja]=北ソト語
Name[kk]=Солтүстік сото
Name[km]=សូធូ​ខាង​ជើង
Name[kn]=ಉತ್ತರ ಸೋಥೋ
Name[ko]=북부 소토어
Name[ku]=Sothoya Bakûrî
Name[lb]=Nördlecht Sotho
Name[lt]=Šiaurės Sotho
Name[lv]=Ziemeļsotu
Name[mai]=उत्तरी सोथो
Name[mk]=Северен Сото
Name[ml]=വടക്കന്‍ സോതോ
Name[mr]=उत्तरी सोथो
Name[ms]=Sotho Utara
Name[nb]=Nord-Sotho
Name[nds]=Noord-Sotho
Name[ne]=उत्तरी सोथो
Name[nl]=Noord-Sotho
Name[nn]=Nord-Sotho
Name[oc]=Sotho del Nòrd
Name[or]=Northern Sotho
Name[pa]=ਉੱਤਰੀ ਸੋਥੋ
Name[pl]=Północne Sotho
Name[ps]=شمالي سوټو
Name[pt]=Sotho do Norte
Name[pt_BR]=Sotho Setentrional
Name[ro]=Soto nordică
Name[ru]=Северный сото
Name[se]=Davvi-sothogiella
Name[si]=උතුරු සෝලෝ
Name[sk]=Severná sothčina
Name[sl]=severni sotho
Name[sq]=Sotho Veriore
Name[sr]=сото, северни
Name[sr@ijekavian]=сото, сјеверни
Name[sr@ijekavianlatin]=soto, sjeverni
Name[sr@latin]=soto, severni
Name[sv]=Nordsotho
Name[ta]=நார்தன் சோத்தோ
Name[te]=ఉత్తర సొతొ
Name[tg]=Сотоии Шимолӣ
Name[th]=ภาษาโซโธ ตอนเหนือ
Name[tr]=Northern Sotho
Name[ug]=شىمالىي سوتوچە
Name[uk]=Північне Сото
Name[uz]=Shimoliy Sotocha
Name[uz@cyrillic]=Шимолий Соточа
-Name[vi]=Xô-tô (Bắc)
Name[wa]=Soto (bijhe)
Name[x-test]=xxNorthern Sothoxx
Name[zh_CN]=北索托语
Name[zh_TW]=Northern Sotho
[nv]
Name=Navajo
Name[af]=Navajo
Name[ar]=ناباهو
Name[as]=নাভাজো
Name[ast]=Navaxu
Name[be]=Наваё
Name[be@latin]=Navajo
Name[bg]=Навахо
Name[bn]=নাভায়ো
Name[bn_IN]=নাভাজো
Name[br]=Navajo
Name[bs]=Navaho
Name[ca]=Navaho
Name[ca@valencia]=Navaho
Name[cs]=Navajo
Name[csb]=Navajo
Name[cy]=Navajo
Name[da]=Navajo
Name[de]=Navajo
Name[el]=Νάβαχο
Name[en_GB]=Navajo
Name[eo]=Navaha
Name[es]=Navajo
Name[et]=Navaho
Name[eu]=Navajo
Name[fa]=ناواجو
Name[fi]=Navajo
Name[fr]=Navaho
Name[fy]=Navajo
Name[ga]=Navachóis
Name[gl]=Navaxo
Name[gu]=નાવાજો
Name[he]=נבאחו
Name[hi]=नवाजो
Name[hne]=नवाजो
Name[hr]=Navaho
Name[hsb]=Navajo
Name[hu]=Navajo
Name[ia]=Navajo
Name[id]=Navajo
Name[is]=Navajo
Name[it]=Navajo
Name[ja]=ナバホ語
Name[kk]=Навахо
Name[km]=ណាវាហ្សូ
Name[kn]=ನಾವಾಜೋ
Name[ko]=나바호어
Name[ku]=Navajo
Name[lb]=Navajo
Name[lt]=Navajo
Name[lv]=Navahu
Name[mai]=नवाजो
Name[mk]=Навахо
Name[ml]=നവാജോ
Name[mr]=नवाजो
Name[ms]=Navajo
Name[nb]=Navajo
Name[nds]=Navajo
Name[ne]=नेभाजो
Name[nl]=Navajo
Name[nn]=Navaho
Name[or]=Navajo
Name[pa]=ਨਾਵਾਜੋ
Name[pl]=Navajo
Name[ps]=نواجو
Name[pt]=Navajo
Name[pt_BR]=Navajo
Name[ro]=Navajo
Name[ru]=Навахо
Name[se]=Naváhogiella
Name[si]=නවාජෝ
Name[sk]=Navajo
Name[sl]=navajo
Name[sq]=Navajo
Name[sr]=навахо
Name[sr@ijekavian]=навахо
Name[sr@ijekavianlatin]=navaho
Name[sr@latin]=navaho
Name[sv]=Navaho
Name[ta]=நவாஜோ
Name[te]=నవాజొ
Name[tg]=Наваҷо
Name[th]=ภาษานาวาโฮ
Name[tr]=Navajo
Name[ug]=ناۋاجوچە
Name[uk]=Навахо
Name[uz]=Navajo
Name[uz@cyrillic]=Наважо
-Name[vi]=Na-va-cộ
+Name[vi]=Navajo
Name[wa]=Navaxho
-Name[x-test]=xxNavajoxx
Name[xh]=Navajo
+Name[x-test]=xxNavajoxx
Name[zh_CN]=纳瓦霍语
Name[zh_HK]=納瓦伙語
Name[zh_TW]=納瓦伙語
[ny]
Name=Chichewa
Name[af]=Chichewa
Name[ar]=تشيشيوا
Name[as]=ছিছেৱা
Name[ast]=Chichewa
Name[be]=Чычэва
Name[be@latin]=Čyčeva
Name[bg]=Чеуа
Name[bn]=চিচেওয়া
Name[bn_IN]=চিচেওয়া
Name[br]=Chichewa
Name[bs]=Čičeva
Name[ca]=Chewa
Name[ca@valencia]=Chewa
Name[cs]=Chichewa
Name[csb]=Chichewa
Name[cy]=Chichewa
Name[da]=Chichewa
Name[de]=Nyanja
Name[el]=Chichewa
Name[en_GB]=Chichewa
Name[eo]=Njanĝa
Name[es]=Chichewa
Name[et]=Chichewa
Name[eu]=Chichewa
Name[fa]=چیچوا
Name[fi]=Njandža
Name[fr]=Chichewa
Name[fy]=Chichewa
Name[ga]=Siseivis
Name[gl]=Chichewa
Name[gu]=ચિકેવા
Name[he]=צ'יצ'ווה
Name[hi]=चिचेवा
Name[hne]=चिचेवा
Name[hr]=Chichewa
Name[hsb]=Chichewa
Name[hu]=Csicseva
Name[ia]=Chichewa
Name[id]=Chichewa
Name[is]=Chichewa
Name[it]=Chichewa
Name[ja]=チェワ語
Name[kk]=Чичева
Name[km]=ឈិចិវា
Name[kn]=ಚಿಚೇಛೇವಾ
Name[ko]=치체와어
Name[ku]=Çîçewa
Name[lb]=Nyanja
Name[lt]=Chichewa
Name[lv]=Čičeva
Name[mai]=चिचेवा
Name[mk]=Чичева
Name[ml]=ചിച്ചാവെ
Name[mr]=चिचेवा
Name[ms]=Chichewa
Name[nb]=Chichewa
Name[nds]=Chichewa
Name[ne]=चिचेवा
Name[nl]=Chichewa
Name[nn]=Chichewa
Name[or]=Chichewa
Name[pa]=ਚਿਚੀਵਾ
Name[pl]=Chichewa
Name[ps]=چېچيوا
Name[pt]=Chichewa
Name[pt_BR]=Cinianja
Name[ro]=Ciceuă
Name[ru]=Чичева
Name[se]=Chichevagiella
Name[si]=චිචෙවා
Name[sk]=Čičewa
Name[sl]=chichewa
Name[sq]=Chichewa
Name[sr]=чичева
Name[sr@ijekavian]=чичева
Name[sr@ijekavianlatin]=čičeva
Name[sr@latin]=čičeva
Name[sv]=Chewa
Name[ta]=சிச்செவா
Name[te]=చిచెవా
Name[tg]=Чичевагӣ
Name[th]=ภาษาชิเชวา
Name[tr]=Chichewa
Name[ug]=چىچېۋاچە
Name[uk]=Чічеванська
Name[uz]=Chicheva
Name[uz@cyrillic]=Чичева
-Name[vi]=Chi-che-ouă
+Name[vi]=Chichewa
Name[wa]=Tchitchewa
-Name[x-test]=xxChichewaxx
Name[xh]=Chichewa
+Name[x-test]=xxChichewaxx
Name[zh_CN]=齐佩瓦语
Name[zh_HK]=Chichewa語
Name[zh_TW]=Chichewa語
[oc]
Name=Occitan
Name[af]=Okkitaan
Name[ar]=أكستانية
Name[as]=অকিটান
Name[ast]=Occitanu
Name[be]=Акітанская
Name[be@latin]=Akitanskaja
Name[bg]=Окситански
Name[bn]=ওক্সিটান
Name[bn_IN]=অকসিটান
Name[br]=Oksitaneg
Name[bs]=Okcitanski
Name[ca]=Occità
Name[ca@valencia]=Occità
Name[cs]=Okcitánský
Name[csb]=Òkcitańsczi
Name[cy]=Occitaneg
Name[da]=Occitan
Name[de]=Okzitanisch
Name[el]=Occitan
Name[en_GB]=Occitan
Name[eo]=Okcitana
Name[es]=Occitano
Name[et]=Oktsitaani
Name[eu]=Okzitaniera
Name[fa]=اُکیتان
Name[fi]=Oksitaani
Name[fr]=Occitan
Name[fy]=Oksitaansk
Name[ga]=Ocatáinis
Name[gl]=Occitano
Name[gu]=ઓશિન
Name[he]=אוקסיטנית
Name[hi]=ओकितन
Name[hne]=ओकितन
Name[hr]=Occitan
Name[hsb]=Okcitansce
Name[hu]=Okcitán
Name[ia]=Occitano
Name[id]=Occitan
Name[is]=Occitan
Name[it]=Occitano
Name[ja]=オック語
Name[kk]=Осситанша
Name[km]=អុកស៊ីតង់
Name[kn]=ಒಸಿಟಾನ್
Name[ko]=오크어
Name[ku]=Oksîtan
Name[lb]=Okzitanesch
Name[lt]=Occitan
Name[lv]=Oksitāņu
Name[mai]=ओकितन
Name[mk]=Очитан
Name[ml]=ഒക്സിറ്റന്‍
Name[mr]=ओकितन
Name[ms]=Occitan
Name[nb]=Oksitansk
Name[nds]=Okzitaansch
Name[ne]=ओक्सिटान
Name[nl]=Occitan
Name[nn]=Oksitansk
Name[oc]=Occitan
Name[or]=Occitan
Name[pa]=ਓਸੀਟਾਨ
Name[pl]=Okcytański
Name[ps]=اوسيټي
Name[pt]=Occitano
Name[pt_BR]=Occitano
Name[ro]=Occitană
Name[ru]=Окситанский
Name[se]=Oksitánagiella
Name[si]=ඔක්සිටන්
Name[sk]=Okcitánčina
Name[sl]=očitansko
Name[sq]=Oçitane
Name[sr]=окситански
Name[sr@ijekavian]=окситански
Name[sr@ijekavianlatin]=oksitanski
Name[sr@latin]=oksitanski
Name[sv]=Occitanska
Name[ta]=ஒக்சிட்டான்
Name[te]=ఒస్సిటాన్
Name[tg]=Окитанӣ
Name[th]=ภาษาออคซิทัน
Name[tr]=Oksitan dili
Name[ug]=ئوكسىتانچە
Name[uk]=Оксітанська
Name[uz]=Fransuzcha (Ossitan shevasi)
Name[uz@cyrillic]=Французча (Осситан шеваси)
-Name[vi]=Óc-ci-tan
+Name[vi]=Occitan
Name[wa]=Occitan
-Name[x-test]=xxOccitanxx
Name[xh]=Occitan
+Name[x-test]=xxOccitanxx
Name[zh_CN]=欧西坦语
Name[zh_HK]=Occitan語
Name[zh_TW]=Occitan語
[om]
Name=Oromo
Name[af]=Oromo
Name[ar]=أورومو
Name[as]=অ'ৰ'মো'
Name[ast]=Oromo
Name[be]=Арома
Name[be@latin]=Oromo
Name[bg]=Афан Оромо
Name[bn]=ওরোমো
Name[bn_IN]=ওরোমো
Name[br]=Oromo
Name[bs]=Oromo
Name[ca]=Oromo
Name[ca@valencia]=Oromo
Name[cs]=Oromo
Name[csb]=Oromo
Name[cy]=Oromo
Name[da]=Oromo
Name[de]=Oromo
Name[el]=Oromo
Name[en_GB]=Oromo
Name[eo]=Oroma
Name[es]=Oromo
Name[et]=Oromo
Name[eu]=Oromo
Name[fa]=اورومو
Name[fi]=Oromo
Name[fr]=Oromo
Name[fy]=Oromo
Name[ga]=Oraimis
Name[gl]=Oromo
Name[gu]=ઓરોમો
Name[he]=אורומו
Name[hi]=ओरोमो
Name[hne]=ओरोमो
Name[hr]=Oromski
Name[hsb]=Oromo
Name[hu]=Oromo
Name[ia]=Oromo
Name[id]=Oromo
Name[is]=Oromo
Name[it]=Oromo
Name[ja]=オロモ語
Name[kk]=Оромо
Name[km]=អូរ៉ូម៉ូ​
Name[kn]=ಓರೋಮೋ
Name[ko]=오로모어
Name[ku]=Oromo
Name[lb]=Oromo
Name[lt]=Oromo
Name[lv]=Oromu
Name[mai]=ओरोमो
Name[mk]=Оромо
Name[ml]=ഒരോമോ
Name[mr]=ओरोमो
Name[ms]=Oromo
Name[nb]=Oromo
Name[nds]=Oromo
Name[ne]=ओरोमो
Name[nl]=Oromo
Name[nn]=Oromo
Name[or]=Oromo
Name[pa]=ਓਰੋਮੋ
Name[pl]=Oromo
Name[ps]=اورومو
Name[pt]=Oromo
Name[pt_BR]=Oromo
Name[ro]=Oromă
Name[ru]=Оромо
Name[se]=Oromogiella
Name[si]=ඔරොමො
Name[sk]=Oromčina
Name[sl]=oromo
Name[sq]=Oromo
Name[sr]=оромо
Name[sr@ijekavian]=оромо
Name[sr@ijekavianlatin]=oromo
Name[sr@latin]=oromo
Name[sv]=Oromo
Name[ta]=ஒரோமோ
Name[te]=ఒరొమొ
Name[tg]=Оромо
Name[th]=ภาษาโอโรโม
Name[tr]=Oromo
Name[ug]=ئوروموچە
Name[uk]=Оромо
Name[uz]=Oromo
Name[uz@cyrillic]=Оромо
-Name[vi]=O-ro-mô
+Name[vi]=Oromo
Name[wa]=Oromo
-Name[x-test]=xxOromoxx
Name[xh]=Oromo
+Name[x-test]=xxOromoxx
Name[zh_CN]=奥罗莫语
Name[zh_HK]=Oromo語
Name[zh_TW]=Oromo語
[or]
Name=Oriya
Name[af]=Oriya
Name[ar]=أوريا
Name[as]=ৱৰীয়
Name[ast]=Oriya
Name[be]=Орыя
Name[be@latin]=Oriya
Name[bg]=Ория
Name[bn]=ওড়িয়া
Name[bn_IN]=ওরিয়া
Name[br]=Oriya
Name[bs]=Oriya
Name[ca]=Oriya
Name[ca@valencia]=Oriya
Name[cs]=Oriya
Name[csb]=Oriya
Name[cy]=Oriya
Name[da]=Oriya
Name[de]=Oriya
Name[el]=Oriya
Name[en_GB]=Oriya
Name[eo]=Orijo
Name[es]=Oriya
Name[et]=Orija
Name[eu]=Oriya
Name[fa]=اوریا
Name[fi]=Orija
Name[fr]=Oriya
Name[fy]=Oriya
Name[ga]=Oirísis
Name[gl]=Orisa
Name[gu]=ઓરીયા
Name[he]=אורייה
Name[hi]=उड़िया
Name[hne]=उड़िया
Name[hr]=Oriya
Name[hsb]=Oriya
Name[hu]=Orija
Name[ia]=Oriya
Name[id]=Oriya
Name[is]=Oriya
Name[it]=Oriya
Name[ja]=オリヤー語
Name[kk]=Ория
Name[km]=អូរីយ៉ា
Name[kn]=ಒರಿಯಾ
Name[ko]=오리야어
Name[ku]=Oriya
Name[lb]=Orija
Name[lt]=Oriya
Name[lv]=Oriju
Name[mai]=उड़िया
Name[mk]=Орија
Name[ml]=ഒറിയന്‍
Name[mr]=ओरिया
Name[ms]=Oriya
Name[nb]=Oriya
Name[nds]=Oriya
Name[ne]=ओरिया
Name[nl]=Oriya
Name[nn]=Oriya
Name[oc]=Oriyà
Name[or]=Oriya
Name[pa]=ਉੜੀਆ
Name[pl]=Oriya
Name[ps]=وريا
Name[pt]=Oriya
Name[pt_BR]=Oriá
Name[ro]=Oriană
Name[ru]=Ория
Name[se]=Orijagiella
Name[si]=ඔරියා
Name[sk]=Uríjčina
Name[sl]=oriya
Name[sq]=Oriya
Name[sr]=оријски
Name[sr@ijekavian]=оријски
Name[sr@ijekavianlatin]=orijski
Name[sr@latin]=orijski
Name[sv]=Oriya
Name[ta]=ஒரியா
Name[te]=ఒరియా
Name[tg]=Ориёӣ
Name[th]=ภาษาโอริยา
Name[tr]=Oriya
Name[ug]=ئورىياچە
Name[uk]=Орія
Name[uz]=Oriya
Name[uz@cyrillic]=Ория
-Name[vi]=Ô-ri-yạ
+Name[vi]=Oriya
Name[wa]=Oriya
-Name[x-test]=xxOriyaxx
Name[xh]=Oriya
+Name[x-test]=xxOriyaxx
Name[zh_CN]=奥利亚语
Name[zh_HK]=Oriya語
Name[zh_TW]=Oriya語
[os]
Name=Ossetian
Name[af]=Ossetian
Name[ar]=أوسيتية
Name[as]=অচেটিয়ান
Name[ast]=Osetianu
Name[be]=Асетынская
Name[be@latin]=Asetynskaja
Name[bg]=Осетински
Name[bn]=ওসেটিয়ান
Name[bn_IN]=ওসেনশিয়ান
Name[br]=Ossetieg
Name[bs]=Osetski
Name[ca]=Osset
Name[ca@valencia]=Osset
Name[cs]=Osetský
Name[csb]=Òsetańsczi
Name[cy]=Oseteg
Name[da]=Ossetian
Name[de]=Ossetisch
Name[el]=Ossetian
Name[en_GB]=Ossetian
Name[eo]=Oseta
Name[es]=Osetio
Name[et]=Osseedi
Name[eu]=Osetiera
Name[fa]=اوستی قفقاز
Name[fi]=Osseetti
Name[fr]=Ossète
Name[fy]=Ossetysk
Name[ga]=Óiséitis
Name[gl]=Oseto
Name[gu]=ઓસેશિયન
Name[he]=אוסטית
Name[hi]=ओसेशियन
Name[hne]=ओसेसियन
Name[hr]=Osetski
Name[hsb]=Osetisce
Name[hu]=Oszét
Name[ia]=Ossetiano
Name[id]=Ossetian
Name[is]=Ossetian
Name[it]=Osseto
Name[ja]=オセット語
Name[kk]=Осетинше
Name[km]=អូសសិត្យង់
Name[kn]=ಓಸೆಟ್ಟಿಯಾನ್
Name[ko]=오세티안어
Name[ku]=Osetî
Name[lb]=Ossetesch
Name[lt]=Osetinų
Name[lv]=Osetīnu
Name[mai]=ओसेशियन
Name[mk]=Осетиски
Name[ml]=ഒസ്സെഷിയന്‍
Name[mr]=ओसेशियन
Name[ms]=Ossetian
Name[nb]=Ossetisk
Name[nds]=Osseetsch
Name[ne]=ओसेसियन
Name[nl]=Ossetisch
Name[nn]=Ossetisk
Name[or]=Ossetian
Name[pa]=ਓਸੀਟੀਅਨ
Name[pl]=Osetański
Name[ps]=اوسيټي
Name[pt]=Osseta
Name[pt_BR]=Osseto
Name[ro]=Osetiană
Name[ru]=Осетинский
Name[se]=Ossetiagiella
Name[si]=ඔසෙටියන්
Name[sk]=Osetčina
Name[sl]=osetijsko
Name[sq]=Ossetiane
Name[sr]=осетски
Name[sr@ijekavian]=осетски
Name[sr@ijekavianlatin]=osetski
Name[sr@latin]=osetski
Name[sv]=Ossetsiska
Name[ta]=ஒசெட்டியன்
Name[te]=ఒస్సెషియన్
Name[tg]=Осетинӣ
Name[th]=ภาษาโอซิเชียน
Name[tr]=Ossetian
Name[ug]=ئوسسېتىكچە
Name[uk]=Осетинська
Name[uz]=Ossetincha
Name[uz@cyrillic]=Оссетинча
-Name[vi]=Óc-xe-ti-an
+Name[vi]=Ossetian
Name[wa]=Ossete
-Name[x-test]=xxOssetianxx
Name[xh]=Ossetian
+Name[x-test]=xxOssetianxx
Name[zh_CN]=奥塞梯语
Name[zh_HK]=Ossetian語
Name[zh_TW]=Ossetian語
[pa]
Name=Punjabi/Panjabi
Name[ar]=بنجابية
Name[as]=পাঞ্জাবী/পঞ্জাবী
Name[ast]=Punjabi/Panjabi
Name[be]=Панджабі
Name[be@latin]=Pandžabi
Name[bg]=Пенджаб
Name[bn]=পাঞ্জাবী
Name[bn_IN]=পাঞ্জাবি
Name[br]=Pendjabieg
Name[bs]=Pandžabi/Pandžabi
Name[ca]=Panjabi
Name[ca@valencia]=Panjabi
Name[cs]=Pandžábský
Name[csb]=Punjabi/Panjabi
Name[da]=Punjabi/Panjabi
Name[de]=Pandschabi
Name[el]=Punjabi/Panjabi
Name[en_GB]=Punjabi/Panjabi
Name[eo]=Panĝaba
Name[es]=Punjabi
Name[et]=Pandžabi
Name[eu]=Punjabi/Panjabi
Name[fa]=پنجابی/پنجابی
Name[fi]=Pandžabi
Name[fr]=Panjabi / Punjabi
Name[fy]=Panjabi/Panjabi
Name[ga]=Painseáibis
Name[gl]=Punxabí/Panxabí
Name[gu]=પંજાબી/પંજાબી
Name[he]=פנג'אבית
Name[hi]=पंजाबी
Name[hne]=पंजाबी
Name[hr]=Punjabi/Panjabi
Name[hsb]=Punjabi/Panjabi
Name[hu]=Pandzsabi
Name[ia]=Punjabi
Name[id]=Punjabi/Panjabi
Name[is]=Punjabi/Panjabi
Name[it]=Panjabi
Name[ja]=パンジャーブ語
Name[kk]=Пунджаби/Панждаби
Name[km]=ពូនយ៉ាប៊ី
Name[kn]=ಪಂಜಾಬಿ
Name[ko]=펀자브어
Name[ku]=Pêncabî
Name[lt]=Punjabi/Panjabi
Name[lv]=Pandžabu
Name[mai]=पंजाबी
Name[mk]=Пунџаби/Панџаби
Name[ml]=പഞ്ചാബി
Name[mr]=पंजाबी/पँजाबी
Name[ms]=Punjabi/Panjabi
Name[nb]=Punjabi/Panjabi
Name[nds]=Pandschaabsch
Name[ne]=पन्जाबी/पन्जाबी
Name[nl]=Panjabi
Name[nn]=Panjabi
Name[or]=Punjabi/Panjabi
Name[pa]=ਪੰਜਾਬੀ
Name[pl]=Pendżabski
Name[ps]=پنجابي
Name[pt]=Panjabi/Punjabi
Name[pt_BR]=Panjabi
Name[ro]=Punjabi
Name[ru]=Панджаби
Name[se]=Punjabi/Panjabi
Name[si]=පුන්ජාබි/පන්ජාබි
Name[sk]=Pandžábčina
Name[sl]=pandžabsko
Name[sq]=Punjabi/Panjabi
Name[sr]=панџаби/панџаби
Name[sr@ijekavian]=панџаби/панџаби
Name[sr@ijekavianlatin]=pandžabi/pandžabi
Name[sr@latin]=pandžabi/pandžabi
Name[sv]=Punjabi/Panjabi
Name[ta]=பஞ்சாபி
Name[te]=పంజాబి
Name[tg]=Пунҷабӣ/Панҷабӣ
Name[th]=ภาษาปัญจาบี/ปัญจาบ
Name[tr]=Punjabi/Panjabi
Name[ug]=پەنجابچە
Name[uk]=Панджабська
-Name[vi]=Pan-gia-bi
+Name[vi]=Punjabi/Panjabi
Name[wa]=Pundjabi
Name[x-test]=xxPunjabi/Panjabixx
Name[zh_CN]=旁遮普语
Name[zh_TW]=Punjabi/Panjabi
[pi]
Name=Pali
Name[af]=Pali
Name[ar]=بالية
Name[as]=পালি
Name[ast]=Pali
Name[be]=Палі
Name[be@latin]=Pali
Name[bg]=Пали
Name[bn]=পালি
Name[bn_IN]=পালি
Name[br]=Palieg
Name[bs]=Pali
Name[ca]=Pali
Name[ca@valencia]=Pali
Name[cs]=Pali
Name[csb]=Pali
Name[cy]=Pali
Name[da]=Pali
Name[de]=Pali
Name[el]=Pali
Name[en_GB]=Pali
Name[eo]=Palia
Name[es]=Palí
Name[et]=Paali
Name[eu]=Pali
Name[fa]=پالی
Name[fi]=Paali
Name[fr]=Pali
Name[fy]=Pali
Name[ga]=Páilis
Name[gl]=Pali
Name[gu]=પાલી
Name[he]=פאלי
Name[hi]=पाली
Name[hne]=पाली
Name[hr]=Pali
Name[hsb]=Pali
Name[hu]=Pali
Name[ia]=Pali
Name[id]=Pali
Name[is]=Pali
Name[it]=Pali
Name[ja]=パーリ語
Name[kk]=Пали
Name[km]=ប៉ាលី
Name[kn]=ಪಾಲಿ
Name[ko]=팔리어
Name[ku]=Palî
Name[lb]=Pali
Name[lt]=Pali
Name[lv]=Pāli
Name[mai]=पाली
Name[mk]=Пали
Name[ml]=പാലി
Name[mr]=पाली
Name[ms]=Pali
Name[nb]=Pali
Name[nds]=Pali
Name[ne]=पाली
Name[nl]=Pali
Name[nn]=Pali
Name[oc]=Pòlònès
Name[or]=Pali
Name[pa]=ਪਾਲੀ
Name[pl]=Pali
Name[ps]=پالي
Name[pt]=Pali
Name[pt_BR]=Pali
Name[ro]=Pali
Name[ru]=Пали
Name[se]=Páligiella
Name[si]=පාලි
Name[sk]=Pálí
Name[sl]=pali
Name[sq]=Pali
Name[sr]=пали
Name[sr@ijekavian]=пали
Name[sr@ijekavianlatin]=pali
Name[sr@latin]=pali
Name[sv]=Pali
Name[ta]=பாலி
Name[te]=పాళి
Name[tg]=Палӣ
Name[th]=ภาษาบาลี
Name[tr]=Pali
Name[ug]=پالىچە
Name[uk]=Палі
Name[uz]=Pali
Name[uz@cyrillic]=Пали
Name[vi]=Pa-li
Name[wa]=Pâli
-Name[x-test]=xxPalixx
Name[xh]=Pali
+Name[x-test]=xxPalixx
Name[zh_CN]=巴利语
Name[zh_HK]=巴利語
Name[zh_TW]=巴利語
[pl]
Name=Polish
Name[af]=Poolse
Name[ar]=بولندية
Name[as]=প'লিশ্ব
Name[ast]=Polacu
Name[be]=Польская
Name[be@latin]=Polskaja
Name[bg]=Полски
Name[bn]=পোলিশ
Name[bn_IN]=পোলিশ
Name[br]=Poloneg
Name[bs]=Poljski
Name[ca]=Polonès
Name[ca@valencia]=Polonés
Name[cs]=Polský
Name[csb]=Pòlsczi
Name[cy]=Pwyleg
Name[da]=Polsk
Name[de]=Polnisch
Name[el]=Πολωνικά
Name[en_GB]=Polish
Name[eo]=Pola
Name[es]=Polaco
Name[et]=Poola
Name[eu]=Poloniera
Name[fa]=لهستانی
Name[fi]=Puola
Name[fr]=Polonais
Name[fy]=Poalsk
Name[ga]=Polainnis
Name[gl]=Polaco
Name[gu]=પોલિશ
Name[he]=פולנית
Name[hi]=पोलिश
Name[hne]=पोलिस
Name[hr]=Poljski
Name[hsb]=Pólsce
Name[hu]=Lengyel
Name[ia]=Polonese
Name[id]=Polandia
Name[is]=Pólska
Name[it]=Polacco
Name[ja]=ポーランド語
Name[kk]=Полякша
Name[km]=ប៉ូឡូញ
Name[kn]=ಪೋಲಿಷ್
Name[ko]=폴란드어
Name[ku]=Polish
Name[lb]=Polnesch
Name[lt]=Lenkų
Name[lv]=Poļu
Name[mai]=पोलिश
Name[mk]=Полски
Name[ml]=പോളിഷ്
Name[mr]=पोलिश
Name[ms]=Polish
Name[nb]=Polsk
Name[nds]=Poolsch
Name[ne]=पोलीस
Name[nl]=Pools
Name[nn]=Polsk
Name[oc]=Polonés
Name[or]=Polish
Name[pa]=ਪੋਲੈਂਡੀ
Name[pl]=Polski
Name[ps]=پولېش
Name[pt]=Polaco
Name[pt_BR]=Polonês
Name[ro]=Poloneză
Name[ru]=Польский
Name[se]=Polskkagiella
Name[si]=පෝලන්ත
Name[sk]=Poľština
Name[sl]=poljsko
Name[sq]=Polake
Name[sr]=пољски
Name[sr@ijekavian]=пољски
Name[sr@ijekavianlatin]=poljski
Name[sr@latin]=poljski
Name[sv]=Polska
Name[ta]=போலிஷ்
Name[te]=పోలిష్
Name[tg]=Полякӣ
Name[th]=ภาษาโปแลนด์
Name[tr]=Lehçe
Name[ug]=پولەكچە
Name[uk]=Польська
Name[uz]=Polyakcha
Name[uz@cyrillic]=Полякча
-Name[vi]=Ba-lan
+Name[vi]=Ba Lan
Name[wa]=Polonès
-Name[x-test]=xxPolishxx
Name[xh]=Polish
+Name[x-test]=xxPolishxx
Name[zh_CN]=波兰语
Name[zh_HK]=波蘭語
Name[zh_TW]=波蘭語
[ps]
Name=Pushto
Name[af]=Pushto
Name[ar]=باشتو
Name[as]=পুষ্টো
Name[ast]=Pushto
Name[be]=Пушту
Name[be@latin]=Puštu
Name[bg]=Пущу
Name[bn]=পুস্ত
Name[bn_IN]=পুস্তু
Name[br]=Pushto
Name[bs]=Paštu
Name[ca]=Paixtu
Name[ca@valencia]=Paixtu
Name[cs]=Pushto
Name[csb]=Pushto
Name[cy]=Pushto
Name[da]=Pushto
Name[de]=Paschtu
Name[el]=Pushto
Name[en_GB]=Pushto
Name[eo]=Paŝtua
Name[es]=Pastún
Name[et]=Puštu
Name[eu]=Paxtuera
Name[fa]=پشتو
Name[fi]=Paštu
Name[fr]=Pushto
Name[fy]=Pushto
Name[ga]=Paistis
Name[gl]=Pushto
Name[gu]=પુશ્ટો
Name[he]=פאשטו
Name[hi]=पश्तो
Name[hne]=पस्तो
Name[hr]=Pushto
Name[hsb]=Pušto
Name[hu]=Pusto
Name[ia]=Pushto
Name[id]=Pushto
Name[is]=Pushto
Name[it]=Paštu
Name[ja]=パシュトー語
Name[kk]=Пушту
Name[km]=ពុហ្សតូ
Name[kn]=ಪುಷ್ತೋ
Name[ko]=파슈토어
Name[ku]=Paşto
Name[lb]=Paschtu
Name[lt]=Puštūnų
Name[lv]=Puštu
Name[mai]=पश्तो
Name[mk]=Пушто
Name[ml]=പുഷ്ട്ടോ
Name[mr]=पश्तो
Name[ms]=Pushto
Name[nb]=Pushto
Name[nds]=Paschtuunsch
Name[ne]=पुस्तो
Name[nl]=Pushto
Name[nn]=Pashto
Name[or]=Pushto
Name[pa]=ਪੁਸ਼ਤੋ
Name[pl]=Pushto
Name[ps]=پښتو
Name[pt]=Pushto
Name[pt_BR]=Afegão
Name[ro]=Puștă
Name[ru]=Пушту
Name[se]=Puštugiella
Name[si]=පුෂ්ටො
Name[sk]=Paštčina
Name[sl]=pushto
Name[sq]=Pushto
Name[sr]=паштунски
Name[sr@ijekavian]=паштунски
Name[sr@ijekavianlatin]=paštunski
Name[sr@latin]=paštunski
Name[sv]=Pashto
Name[ta]=பாஷ்டுன்
Name[te]=పుష్తొ
Name[tg]=Пушту
Name[th]=ภาษาพาชโต
Name[tr]=Pushto
Name[ug]=پوشتۇچە
Name[uk]=Пуштунська
Name[uz]=Pushtuncha
Name[uz@cyrillic]=Пуштунча
-Name[vi]=Pu-x-tô
+Name[vi]=Pushto
Name[wa]=Pashto
-Name[x-test]=xxPushtoxx
Name[xh]=Pushto
+Name[x-test]=xxPushtoxx
Name[zh_CN]=普什图语
Name[zh_HK]=普什圖語
Name[zh_TW]=普什圖語
[pt]
Name=Portuguese
Name[af]=Portugese
Name[ar]=برتغالية
Name[as]=প'ৰ্টুগিছ
Name[ast]=Portugués
Name[be]=Партугальская
Name[be@latin]=Partuhalskaja
Name[bg]=Португалски
Name[bn]=পর্তুগীজ
Name[bn_IN]=পোর্তুগিস
Name[br]=Portugaleg
Name[bs]=Portugalski
Name[ca]=Portuguès
Name[ca@valencia]=Portugués
Name[cs]=Portugalský
Name[csb]=Pòrtugalsczi
Name[cy]=Portiwgaleg
Name[da]=Portugisisk
Name[de]=Portugiesisch
Name[el]=Πορτογαλικά
Name[en_GB]=Portuguese
Name[eo]=Portugala
Name[es]=Portugués
Name[et]=Portugali
Name[eu]=Portugesa
Name[fa]=پرتغالی
Name[fi]=Portugali
Name[fr]=Portugais
Name[fy]=Portugeesk
Name[ga]=Portaingéilis
Name[gl]=Portugués
Name[gu]=પોર્ટુગીઝ
Name[he]=פורטוגזית
Name[hi]=पुर्तगाली
Name[hne]=पुर्तगाली
Name[hr]=Portugalski
Name[hsb]=Portugalsce
Name[hu]=Portugál
Name[ia]=Portugese
Name[id]=Portugis
Name[is]=Portúgalska
Name[it]=Portoghese
Name[ja]=ポルトガル語
Name[kk]=Португалша
Name[km]=ព័រទុយហ្គាល់
Name[kn]=ಪೋರ್ಚುಗೀಸ್
Name[ko]=포르투갈어
Name[ku]=Portûgalî
Name[lb]=Portugisesch
Name[lt]=Portugalų
Name[lv]=Portugāļu
Name[mai]=पुर्तगाली
Name[mk]=Португалски
Name[ml]=പോര്‍ച്ചുഗീസ്
Name[mr]=पुर्तगाली
Name[ms]=Portugis
Name[nb]=Portugisisk
Name[nds]=Portugeesch
Name[ne]=पोर्चुगाली
Name[nl]=Portugees
Name[nn]=Portugisisk
Name[oc]=Portugués
Name[or]=Portuguese
Name[pa]=ਪੁਰਤਗਾਲੀ
Name[pl]=Portugalski
Name[ps]=پورټګيز
Name[pt]=Português
Name[pt_BR]=Português
Name[ro]=Portugheză
Name[ru]=Португальский
Name[se]=Portugálagiella
Name[si]=පෘතුගීසි
Name[sk]=Portugalčina
Name[sl]=portugalsko
Name[sq]=Portugeze
Name[sr]=португалски
Name[sr@ijekavian]=португалски
Name[sr@ijekavianlatin]=portugalski
Name[sr@latin]=portugalski
Name[sv]=Portugisiska
Name[ta]=போர்த்துக்கீசிய
Name[te]=పోర్ట్యుగీస్
Name[tg]=Португалӣ
Name[th]=ภาษาโปรตุเกส
Name[tr]=Portekizce
Name[ug]=پورتۇگالچە
Name[uk]=Португальська
Name[uz]=Portugalcha
Name[uz@cyrillic]=Португалча
-Name[vi]=Bồ-đào-nha
+Name[vi]=Bồ Đào Nha
Name[wa]=Portuguès
-Name[x-test]=xxPortuguesexx
Name[xh]=Portuguese
+Name[x-test]=xxPortuguesexx
Name[zh_CN]=葡萄牙语
Name[zh_HK]=葡萄牙語
Name[zh_TW]=葡萄牙語
[pt_BR]
Name=Brazilian Portuguese
Name[af]=Brazilian Portuguese
Name[ar]=برتغالية البرازيل
Name[as]=ব্ৰাজিলীয় প'ৰ্টুগিছ
Name[ast]=Portugués de Brasil
Name[be]=Партугальская бразільская
Name[be@latin]=Brazylskaja partuhalskaja
Name[bg]=Бразилски португалски
Name[bn]=ব্রাজিলীয় পর্তুগীজ
Name[bn_IN]=ব্রাজিলিয়ান পোর্তুগিজ
Name[br]=Portugaleg Brazil
Name[bs]=Brazilski portugalski
Name[ca]=Portuguès Brasiler
Name[ca@valencia]=Portugués Brasiler
Name[cs]=Portugalský (Brazílie)
Name[csb]=Brazylsczi pòrtugalsczi
Name[cy]=Portiwgaleg Brasil
Name[da]=Brasiliansk portugisisk
Name[de]=Brasilianisches Portugiesisch
Name[el]=Πορτογαλικά Βραζιλίας
Name[en_GB]=Brazilian Portuguese
Name[eo]=Portugala (Brazilo)
Name[es]=Portugués brasileño
Name[et]=Brasiilia portugali
Name[eu]=Portugesa (Brasilgoa)
Name[fa]=پرتغالی برزیلی
Name[fi]=Brasilianportugali
Name[fr]=Portugais Brésilien
Name[fy]=Braziliaansk Portugeesk
Name[ga]=Portaingéilis na Brasaíle
Name[gl]=Portugués do Brasil
Name[gu]=બ્રાઝીલીયન પોર્ટુગીઝ
Name[he]=פורטוגזית ברזילאית
Name[hi]=पुर्तगाली (ब्राजीलीयाई)
Name[hne]=पुर्तगाली (ब्राजीलीयाई)
Name[hr]=Brazilski portugalski
Name[hsb]=Portugalsce (Brazilska)
Name[hu]=Portugál (brazil)
Name[ia]=Portugese Brasiliano
Name[id]=Portugis Brazil
Name[is]=Brasílísk Portúgalska
Name[it]=Portoghese brasiliano
Name[ja]=ブラジル ポルトガル語
Name[kk]=Бразилиялық португалша
Name[km]=ប្រេស៊ីល ព័រទុយហ្គាល់
Name[kn]=ಬ್ರೆಜಿಲಿಯನ್ ಪೋರ್ಚುಗೀಸ್
Name[ko]=브라질식 포르투갈어
Name[ku]=Portûgaliya Brezîl
Name[lb]=Brazilianescht Portugisesch
Name[lt]=Brazilijos portugalų
Name[lv]=Brazīlijas portugāļu
Name[mai]=पुर्तगाली (ब्राजीलीयाई)
Name[mk]=Бразилски португалски
Name[ml]=ബ്രസീലിലെപോര്‍ച്ചുഗീസ്
Name[mr]=ब्राजील पुर्तगाली
Name[ms]=Portugis Brazil
Name[nb]=Brasil-portugisisk
Name[nds]=Brasiliaansch Portugeesch
Name[ne]=ब्राजिली पोर्चुगाली
Name[nl]=Braziliaans Portugees
Name[nn]=Brasil-portugisisk
Name[oc]=Portugués de Brasil
Name[or]=Brazilian Portuguese
Name[pa]=ਬਰਾਜ਼ੀਲ ਪੁਰਤਗਾਲੀ
Name[pl]=Portugalski (brazylijski)
Name[ps]=برازيلي پرټګيز
Name[pt]=Português do Brasil
Name[pt_BR]=Português do Brasil
Name[ro]=Portugheză braziliană
Name[ru]=Португальский (Бразилия)
Name[se]=Brasilialaš portugálagiella
Name[si]=බ්‍රසීල පෘතුගීසි
Name[sk]=Portugalčina (Brazília)
Name[sl]=brazilska portugalščina
Name[sq]=Portugeze Braziliane
Name[sr]=бразилски португалски
Name[sr@ijekavian]=бразилски португалски
Name[sr@ijekavianlatin]=brazilski portugalski
Name[sr@latin]=brazilski portugalski
Name[sv]=Brasiliansk portugisiska
Name[ta]=பிரேஸிலிய போர்த்துக்கீசிய
Name[te]=బ్రాజిలియన్ పోర్ట్యుగీస్
Name[tg]=Бразилиявии Португалӣ
Name[th]=ภาษาโปรตุเกสบราซิล
Name[tr]=Brezilya Portekizcesi
Name[ug]=بىرازىلىيە پورتۇگالچىسى
Name[uk]=Бразильська португальська
Name[uz]=Portugalcha (Braziliya)
Name[uz@cyrillic]=Португалча (Бразилия)
-Name[vi]=Bồ-đào-nha (Bra-xin)
+Name[vi]=Bồ Đào Nha - Braxin
Name[wa]=Portuguès do Braezi
Name[x-test]=xxBrazilian Portuguesexx
Name[zh_CN]=巴西葡萄牙语
Name[zh_HK]=巴西葡萄牙語
Name[zh_TW]=巴西葡萄牙語
[qu]
Name=Quechua
Name[af]=Quechua
Name[ar]=كويتشيوا
Name[as]=কেছুৱা
Name[ast]=Quechua
Name[be]=Кэчуа
Name[be@latin]=Čečua
Name[bg]=Кечуа
Name[bn]=কেচুয়া
Name[bn_IN]=কেচুওয়া
Name[br]=Kechuaeg
Name[bs]=Kečuanski
Name[ca]=Quítxua
Name[ca@valencia]=Quítxua
Name[cs]=Quechua
Name[csb]=Quechua
Name[cy]=Quechua
Name[da]=Quechua
Name[de]=Quechua
Name[el]=Quechua
Name[en_GB]=Quechua
Name[eo]=Keĉua
Name[es]=Quechua
Name[et]=Ketšua
Name[eu]=Kitxua
Name[fa]=کوچوا
Name[fi]=Ketšua
Name[fr]=Quechua
Name[fy]=Quechua
Name[ga]=Ceatsuais
Name[gl]=Quechua
Name[gu]=ક્વેચા
Name[he]=קצ'ואה
Name[hi]=क्वेचुआ
Name[hne]=क्वेचुआ
Name[hr]=Quechua
Name[hsb]=Quechua
Name[hu]=Kecsua
Name[ia]=Quechua
Name[id]=Quechua
Name[is]=Quechua
Name[it]=Quechua
Name[ja]=ケチュア語
Name[kk]=Кечуа
Name[km]=កេច្វា
Name[kn]=ಕ್ವೆಚುವಾ
Name[ko]=케추아어
Name[ku]=Kweçua
Name[lb]=Quechua-Sprooch
Name[lt]=Quechua
Name[lv]=Keāvu
Name[mai]=क्वेचुआ
Name[mk]=Кечуа
Name[ml]=ക്യുച്ചുവ
Name[mr]=क्वेचुआ
Name[ms]=Quechua
Name[nb]=Quechua
Name[nds]=Ketschua
Name[ne]=क्वेचउ
Name[nl]=Quechua
Name[nn]=Quechua
Name[oc]=Quechua
Name[or]=Quechua
Name[pa]=ਕਿਉਚੁਆ
Name[pl]=Quechua
Name[ps]=کوېچوا
Name[pt]=Quechua
Name[pt_BR]=Quíchua
Name[ro]=Quechua
Name[ru]=Кечуа
Name[se]=Keččuagiella
Name[si]=ක්වෙචුවා
Name[sk]=Kečuánčina
Name[sl]=quechua
Name[sq]=Keçua
Name[sr]=квечва
Name[sr@ijekavian]=квечва
Name[sr@ijekavianlatin]=kvečva
Name[sr@latin]=kvečva
Name[sv]=Quechua
Name[ta]=குவெச்சா
Name[te]=క్వెచువా
Name[tg]=Квечуа
Name[th]=ภาษาเคชัว
Name[tr]=Quechua
Name[ug]=كۇچۇاچە
Name[uk]=Кечуа
Name[uz]=Kvechua
Name[uz@cyrillic]=Квечуа
-Name[vi]=Quê-chua
+Name[vi]=Quechua
Name[wa]=Kitchwa
-Name[x-test]=xxQuechuaxx
Name[xh]=Quechua
+Name[x-test]=xxQuechuaxx
Name[zh_CN]=盖丘亚语
Name[zh_HK]=蓋楚瓦語
Name[zh_TW]=蓋楚瓦語
[rn]
Name=Rundi
Name[af]=Rundi
Name[ar]=روندية
Name[as]=ৰান্ডী
Name[ast]=Rundí
Name[be]=Рундзі
Name[be@latin]=Rundzi
Name[bg]=Руанда
Name[bn]=রুণ্ডি
Name[bn_IN]=রুন্ডি
Name[br]=Rundi
Name[bs]=Rundi
Name[ca]=Rundi
Name[ca@valencia]=Rundi
Name[cs]=Rundi
Name[csb]=Rundi
Name[cy]=Rwndi
Name[da]=Rundi
Name[de]=Rundi
Name[el]=Rundi
Name[en_GB]=Rundi
Name[eo]=Burunda
Name[es]=Rundi
Name[et]=Rundi
Name[eu]=Rundi
Name[fa]=روندی
Name[fi]=Rundi
Name[fr]=Rundi
Name[fy]=Rûandeesk
Name[ga]=Rundais
Name[gl]=Rundi
Name[gu]=રુન્ડી
Name[he]=רונדי
Name[hi]=रून्डी
Name[hne]=रून्डी
Name[hr]=Rundi
Name[hsb]=Rundi
Name[hu]=Rundi
Name[ia]=Rundi
Name[id]=Rundi
Name[is]=Rundi
Name[it]=Kirundi
Name[ja]=ルンディ語
Name[kk]=Рунди
Name[km]=រុន្ឌី
Name[kn]=ರುಂಡಿ
Name[ko]=룬디어
Name[ku]=Rundî
Name[lb]=Rundi-Sprooch
Name[lt]=Rundi
Name[lv]=Rundu
Name[mai]=रून्डी
Name[mk]=Рунди
Name[ml]=റന്‍ഡി
Name[mr]=रून्डी
Name[ms]=Rundi
Name[nb]=Rundi
Name[nds]=Rundi
Name[ne]=रुन्डी
Name[nl]=Rundi
Name[nn]=Rundi
Name[or]=Rundi
Name[pa]=ਰੂਡੀ
Name[pl]=Rundi
Name[ps]=رونډي
Name[pt]=Rundi
Name[pt_BR]=Rundi
Name[ro]=Rundi
Name[ru]=Рунди
Name[se]=Rundigiella
Name[si]=රුන්දි
Name[sk]=Rundčina
Name[sl]=rundi
Name[sq]=Rundi
Name[sr]=рунди
Name[sr@ijekavian]=рунди
Name[sr@ijekavianlatin]=rundi
Name[sr@latin]=rundi
Name[sv]=Rundi
Name[ta]=ருண்டி
Name[te]=రుండి
Name[tg]=Рундӣ
Name[th]=ภาษารุนดิ
Name[tr]=Rundi
Name[ug]=روندىچە
Name[uk]=Рунді
Name[uz]=Rundi
Name[uz@cyrillic]=Рунди
-Name[vi]=Run-đi
+Name[vi]=Rundi
Name[wa]=Kirundi
-Name[x-test]=xxRundixx
Name[xh]=Rundi
+Name[x-test]=xxRundixx
Name[zh_CN]=隆迪语
Name[zh_HK]=Rundi語
Name[zh_TW]=Rundi語
[ro]
Name=Romanian
Name[af]=Romeens
Name[ar]=رومانية
Name[as]=ৰোমানিয়
Name[ast]=Rumanu
Name[be]=Румынская
Name[be@latin]=Rumynskaja
Name[bg]=Румънски
Name[bn]=রোমানীয়
Name[bn_IN]=রোমেনিয়ান
Name[br]=Roumaneg
Name[bs]=Rumunski
Name[ca]=Romanès
Name[ca@valencia]=Romanés
Name[cs]=Rumunský
Name[csb]=Rumùńsczi
Name[cy]=Romaneg
Name[da]=Rumænsk
Name[de]=Rumänisch
Name[el]=Ρουμανικά
Name[en_GB]=Romanian
Name[eo]=Rumana
Name[es]=Rumano
Name[et]=Rumeenia
Name[eu]=Errumaniera
Name[fa]=رومانیایی
Name[fi]=Romania
Name[fr]=Roumain
Name[fy]=Roemeensk
Name[ga]=Rómáinis
Name[gl]=Romanés
Name[gu]=રોમેનિયન
Name[he]=רומנית
Name[hi]=रोमानियाई
Name[hne]=रोमानियाई
Name[hr]=Rumunjski
Name[hsb]=Rumunsce
Name[hu]=Román
Name[ia]=Romaniano
Name[id]=Rumania
Name[is]=Rúmenska
Name[it]=Rumeno
Name[ja]=ルーマニア語
Name[kk]=Румынша
Name[km]=រូម៉ានី
Name[kn]=ರೊಮೇನಿಯನ್
Name[ko]=루마니아어
Name[ku]=Romanî
Name[lb]=Rumänesch
Name[lt]=Rumunų
Name[lv]=Rumāņu
Name[mai]=रोमानियाइ
Name[mk]=Романски
Name[ml]=റൊമേനിയന്‍
Name[mr]=रोमानियन
Name[ms]=Romania
Name[nb]=Rumensk
Name[nds]=Rumäänsch
Name[ne]=रोमनियाली
Name[nl]=Roemeens
Name[nn]=Rumensk
Name[oc]=Romanian
Name[or]=Romanian
Name[pa]=ਰੋਮਾਨੀਆਈ
Name[pl]=Rumuński
Name[ps]=رومانيايي
Name[pt]=Romeno
Name[pt_BR]=Romeno
Name[ro]=Română
Name[ru]=Румынский
Name[se]=Romániagiella
Name[si]=රුමේනියානු
Name[sk]=Rumunčina
Name[sl]=romunsko
Name[sq]=Rumune
Name[sr]=румунски
Name[sr@ijekavian]=румунски
Name[sr@ijekavianlatin]=rumunski
Name[sr@latin]=rumunski
Name[sv]=Rumänska
Name[ta]=உருமேனியன்
Name[te]=రొమేనియన్
Name[tg]=Романӣ
Name[th]=ภาษาโรมาเนีย
Name[tr]=Romence
Name[ug]=رۇمىنىيەچە
Name[uk]=Румунська
Name[uz]=Rumincha
Name[uz@cyrillic]=Руминча
-Name[vi]=Rô-ma-ni-a
+Name[vi]=Romania
Name[wa]=Roumin
-Name[x-test]=xxRomanianxx
Name[xh]=Romanian
+Name[x-test]=xxRomanianxx
Name[zh_CN]=罗马尼亚语
Name[zh_HK]=羅馬尼亞語
Name[zh_TW]=羅馬尼亞語
[rom]
Name=Romany
Name[ar]=رومانيا
Name[as]=ৰোমানি
Name[ast]=Romaní
Name[be]=Раманская
Name[be@latin]=Cyhanskaja
Name[bg]=Ромски
Name[bn]=রোমানী
Name[bn_IN]=রোমেনি
Name[br]=Jipsianek
Name[bs]=Romski
Name[ca]=Caló
Name[ca@valencia]=Caló
Name[cs]=Romský
Name[csb]=Rumùńsczi
Name[da]=Romany
Name[de]=Romani
Name[el]=Ρομάνι
Name[en_GB]=Romany
Name[eo]=Romaa
Name[es]=Rumaní
Name[et]=Mustlaskeel
Name[eu]=Errumaniera
Name[fa]=رومانی
Name[fi]=Romani
Name[fr]=Rromani
Name[fy]=Romany
Name[ga]=Romainis
Name[gl]=Romaní
Name[gu]=રોમાનિ
Name[he]=צוענית
Name[hi]=रोमन
Name[hne]=रोमन
Name[hr]=Romanski
Name[hsb]=Romany
Name[hu]=Lovári cigány
Name[ia]=Romany
Name[id]=Romany
Name[is]=Rúmenía
Name[it]=Romaní
Name[ja]=ロマ語
Name[kk]=Цыганша
Name[km]=រូម៉ានី
Name[kn]=ರೋಮನೀ
Name[ko]=로마니어
Name[ku]=Romî
Name[lb]=Romani
Name[lt]=Romany
Name[lv]=Čigānu
Name[mai]=रोमन
Name[mk]=Ромски
Name[ml]=റൊമാനി
Name[mr]=रोमन
Name[ms]=Romania
Name[nb]=Romani
Name[nds]=Romaneesch
Name[ne]=रोमानी
Name[nl]=Roma
Name[nn]=Romani
Name[oc]=Romanian
Name[or]=Romany
Name[pa]=ਰੋਮੇ
Name[pl]=Romski
Name[ps]=روماني
Name[pt]=Romani
Name[pt_BR]=Romani
Name[ro]=Țigănească
Name[ru]=Цыганский
Name[se]=Románigiella
Name[si]=රොමනි
Name[sk]=Rómčina
Name[sl]=romsko
Name[sq]=Romani
Name[sr]=ромски
Name[sr@ijekavian]=ромски
Name[sr@ijekavianlatin]=romski
Name[sr@latin]=romski
Name[sv]=Romanés
Name[ta]=உருமேனியன்
Name[te]=రొమని
Name[tg]=Романӣ
Name[th]=ภาษาโรมานี
Name[tr]=Çingene Dili
Name[ug]=سىگانچە
Name[uk]=Циганська
-Name[vi]=Rô-ma-ny
+Name[vi]=Romany
Name[wa]=Romani
Name[x-test]=xxRomanyxx
Name[zh_CN]=吉普赛语
Name[zh_TW]=吉普賽語
[ru]
Name=Russian
Name[af]=Russies
Name[ar]=روسية
Name[as]=ৰুচীয়
Name[ast]=Rusu
Name[be]=Расійская
Name[be@latin]=Rasiejskaja
Name[bg]=Руски
Name[bn]=রুশ
Name[bn_IN]=রুশি
Name[br]=Rusianeg
Name[bs]=Ruski
Name[ca]=Rus
Name[ca@valencia]=Rus
Name[cs]=Ruský
Name[csb]=Rusczi
Name[cy]=Rwsieg
Name[da]=Russisk
Name[de]=Russisch
Name[el]=Ρωσικά
Name[en_GB]=Russian
Name[eo]=Rusa
Name[es]=Ruso
Name[et]=Vene
Name[eu]=Errusiera
Name[fa]=روسی
Name[fi]=Venäjä
Name[fr]=Russe
Name[fy]=Russysk
Name[ga]=Rúisis
Name[gl]=Ruso
Name[gu]=રશિયન
Name[he]=רוסית
Name[hi]=रूसी
Name[hne]=रूसी
Name[hr]=Ruski
Name[hsb]=Rusce
Name[hu]=Orosz
Name[hy]=Ռուսերեն
Name[ia]=Russo
Name[id]=Rusia
Name[is]=Rússneska
Name[it]=Russo
Name[ja]=ロシア語
Name[kk]=Орысша
Name[km]=រុស្ស៊ី
Name[kn]=ರಷಿಯನ್
Name[ko]=러시아어
Name[ku]=Rûsî
Name[lb]=Russesch
Name[lt]=Rusų
Name[lv]=Krievu
Name[mai]=रूसी
Name[mk]=Руски
Name[ml]=റഷ്യന്‍
Name[mr]=रूसी
Name[ms]=Russia
Name[nb]=Russisk
Name[nds]=Russ'sch
Name[ne]=रसियाली
Name[nl]=Russisch
Name[nn]=Russisk
Name[oc]=Rus
Name[or]=Russian
Name[pa]=ਰੂਸੀ
Name[pl]=Rosyjski
Name[ps]=روسي
Name[pt]=Russo
Name[pt_BR]=Russo
Name[ro]=Rusă
Name[ru]=Русский
Name[se]=Ruoššagiella
Name[si]=රුසියානු
Name[sk]=Ruština
Name[sl]=rusko
Name[sq]=Ruse
Name[sr]=руски
Name[sr@ijekavian]=руски
Name[sr@ijekavianlatin]=ruski
Name[sr@latin]=ruski
Name[sv]=Ryska
Name[ta]=இரஷியன்
Name[te]=రషియన్
Name[tg]=Русӣ
Name[th]=ภาษารัสเซีย
Name[tr]=Rusça
Name[ug]=رۇسچە
Name[uk]=Російська
Name[uz]=Ruscha
Name[uz@cyrillic]=Русча
Name[vi]=Nga
Name[wa]=Rûsse
-Name[x-test]=xxRussianxx
Name[xh]=Isirashiya
+Name[x-test]=xxRussianxx
Name[zh_CN]=俄语
Name[zh_HK]=俄語
Name[zh_TW]=俄語
[rw]
Name=Kinyarwanda
Name[af]=Kinyarwanda
Name[ar]=كينيارواندا
Name[as]=কিন্যাৰ্বান্ডা
Name[ast]=Kinyarwanda
Name[be]=Кіньярванда
Name[be@latin]=Kinyarwanda
Name[bg]=Кинияруанда
Name[bn]=কিন্যারওয়াণ্ডা
Name[bn_IN]=কিনয়ারুয়ান্ডা
Name[br]=Kinyarwanda
Name[bs]=Kinjaruanda
Name[ca]=Ruanda
Name[ca@valencia]=Ruanda
Name[cs]=Kinyarwanda
Name[csb]=Kinyarwanda
Name[cy]=Kinyarwanda
Name[da]=Kinyarwanda
Name[de]=Kinyarwanda
Name[el]=Kinyarwanda
Name[en_GB]=Kinyarwanda
Name[eo]=Ruanda
Name[es]=Kinyarwanda
Name[et]=Ruanda
Name[eu]=Kinyaruanda
Name[fa]=کینیارواندایی
Name[fi]=Ruanda
Name[fr]=Kinyarwanda
Name[fy]=Kinyarwanda
Name[ga]=Cinearuáindis
Name[gl]=Quiñaruanda
Name[gu]=કિન્યારવાન્ડા
Name[he]=קיניירואנדה
Name[hi]=किन्यारवान्डा
Name[hne]=किन्यारवान्डा
Name[hr]=Kinidžaruandski
Name[hsb]=Kinyarwanda
Name[hu]=Kinjarvanda
Name[ia]=Kinyarwanda
Name[id]=Kinyarwanda
Name[is]=Kinyarwanda
Name[it]=Kinyarwanda
Name[ja]=ルワンダ語
Name[kk]=Киньяруанда
Name[km]=គីនយ៉ាវ៉ាន់ដា
Name[kn]=ಕಿನ್ಯರ್ವಾಂಡ
Name[ko]=키냐르완다어
Name[ku]=Kînyarwanda
Name[lb]=Ruanda-Sprooch
Name[lt]=Kinyarwanda
Name[lv]=Kiņaruanda
Name[mai]=किनयरवंडा
Name[mk]=Кинјарванда
Name[ml]=കിന്യാര്‍വാന്‍ഡാ
Name[mr]=किन्यारवान्डा
Name[ms]=Kinyarwanda
Name[nb]=Kinyarwanda
Name[nds]=Kinyarwanda
Name[ne]=किन्यरवान्डा
Name[nl]=Kinyarwanda
Name[nn]=Kinyarwanda
Name[oc]=Kinyarwandà
Name[or]=Kinyarwanda
Name[pa]=ਕਿਨਯਾਰਵਾਡਾਂ
Name[pl]=Kinyarwanda
Name[ps]=کينيارونډا
Name[pt]=Kinyarwanda
Name[pt_BR]=Kinyarwanda
Name[ro]=Chiniaruandeză
Name[ru]=Киньяруанда
Name[se]=Kinyarwandagiella
Name[si]=කින්යාවන්ඩා
Name[sk]=Rwandčina
Name[sl]=kinyarwanda
Name[sq]=Kinyarwanda
Name[sr]=кинијарванда
Name[sr@ijekavian]=кинијарванда
Name[sr@ijekavianlatin]=kinijarvanda
Name[sr@latin]=kinijarvanda
Name[sv]=Rwanda
Name[ta]=கின்யார்வாண்டா
Name[te]=కిన్న్యార్వాండా
Name[tg]=Кинуарвандӣ
Name[th]=ภาษาคินยาร์วันดา
Name[tr]=Kinyarwanda
Name[ug]=كىنيارۋانداچە
Name[uk]=Кіньяруанда
Name[uz]=Kinyarvanda
Name[uz@cyrillic]=Кинярванда
-Name[vi]=Ki-nyă-ouanh-đa
+Name[vi]=Kinyarwanda
Name[wa]=Kiniarwanda
-Name[x-test]=xxKinyarwandaxx
Name[xh]=Kinyarwanda
+Name[x-test]=xxKinyarwandaxx
Name[zh_CN]=基尼亚卢旺达语
Name[zh_HK]=Kinyarwanda語
Name[zh_TW]=Kinyarwanda語
[sa]
Name=Sanskrit
Name[af]=Sanskrit
Name[ar]=سنسكريتية
Name[as]=সংস্কৃত
Name[ast]=Sánscritu
Name[be]=Санскрыт
Name[be@latin]=Sanskryt
Name[bg]=Санскрит
Name[bn]=সংস্কৃত
Name[bn_IN]=সংস্কৃত
Name[br]=Sanskrit
Name[bs]=Sanskrt
Name[ca]=Sànscrit
Name[ca@valencia]=Sànscrit
Name[cs]=Sanskrit
Name[csb]=Sanskrit
Name[cy]=Sansgrit
Name[da]=Sanskrit
Name[de]=Sanskrit
Name[el]=Σανσκριτικά
Name[en_GB]=Sanskrit
Name[eo]=Sanskrito
Name[es]=Sánscrito
Name[et]=Sanskriti
Name[eu]=Sanskritoa
Name[fa]=سانسکریت
Name[fi]=Sanskrit
Name[fr]=Sanskrit
Name[fy]=Sanskryt
Name[ga]=Sanscrait
Name[gl]=Sánscrito
Name[gu]=સંસ્કૃત
Name[he]=סנסקריט
Name[hi]=संस्कृत
Name[hne]=संस्कृत
Name[hr]=Sanskrit
Name[hsb]=Sanskrit
Name[hu]=Szanszkrit
Name[ia]=Sanscrito
Name[id]=Sanskerta
Name[is]=Sanskrít
Name[it]=Sanscrito
Name[ja]=サンスクリット語
Name[kk]=Санскрит
Name[km]=សំស្ក្រឹត
Name[kn]=ಸಂಸ್ಕೃತ
Name[ko]=산스크리트어
Name[ku]=Sanskrît
Name[lb]=Sanskrit
Name[lt]=Sanskritas
Name[lv]=Sanskrits
Name[mai]=संस्कृत
Name[mk]=Санскрит
Name[ml]=സംസ്കൃതം
Name[mr]=संस्कृत
Name[ms]=Sanskrit
Name[nb]=Sanskrit
Name[nds]=Sanskrit
Name[ne]=संस्कृत
Name[nl]=Sanskrit
Name[nn]=Sanskrit
Name[oc]=Sanscrit
Name[or]=Sanskrit
Name[pa]=ਸੰਸਕ੍ਰਿਤ
Name[pl]=Sanskryt
Name[ps]=سانسکرېټ
Name[pt]=Sanscrito
Name[pt_BR]=Sânscrito
Name[ro]=Sanscrită
Name[ru]=Санскрит
Name[se]=Sanskrihtagiella
Name[si]=සංස්කෘත
Name[sk]=Sanskrit
Name[sl]=sanskrt
Name[sq]=Sanskrite
Name[sr]=санскрт
Name[sr@ijekavian]=санскрт
Name[sr@ijekavianlatin]=sanskrt
Name[sr@latin]=sanskrt
Name[sv]=Sanskrit
Name[ta]=சமஸ்கிருதம்
Name[te]=సంస్క్రుతం
Name[tg]=Санскрит
Name[th]=ภาษาสันสกฤต
Name[tr]=Sanskrit
Name[ug]=سانسكرىتچە
Name[uk]=Санскрит
Name[uz]=Sanskrit
Name[uz@cyrillic]=Санскрит
-Name[vi]=Xan-s-cợ-ríth
+Name[vi]=Sanskrit
Name[wa]=Sanskrit
-Name[x-test]=xxSanskritxx
Name[xh]=Sanskrit
+Name[x-test]=xxSanskritxx
Name[zh_CN]=梵文
Name[zh_HK]=梵語
Name[zh_TW]=梵語
[sc]
Name=Sardinian
Name[af]=Sardinian
Name[ar]=ساردينية
Name[as]=চাৰ্ডিনিয়ান
Name[ast]=Sardu
Name[be]=Сардынская
Name[be@latin]=Sardynskaja
Name[bg]=Сардински
Name[bn]=সার্ডিনিয়ান
Name[bn_IN]=সার্ডিনিয়ান
Name[br]=Sardinieg
Name[bs]=Sardinijski
Name[ca]=Sard
Name[ca@valencia]=Sard
Name[cs]=Sardinský
Name[csb]=Sardińsczi
Name[cy]=Sardinieg
Name[da]=Sardinsk
Name[de]=Sardisch
Name[el]=Σαρδηνιακά
Name[en_GB]=Sardinian
Name[eo]=Sarda
Name[es]=Sardo
Name[et]=Sardiinia
Name[eu]=Sardiera
Name[fa]=ساردینی
Name[fi]=Sardi
Name[fr]=Sarde
Name[fy]=Sardinysk
Name[ga]=Sairdínis
Name[gl]=Sardo
Name[gu]=સાર્ડિનિયન
Name[he]=סרדינית
Name[hi]=सारदिनी
Name[hne]=सारदिनी
Name[hr]=Sardinijski
Name[hsb]=Sardisce
Name[hu]=Szardíniai
Name[ia]=Sardo
Name[id]=Sardinian
Name[is]=Sardíníska
Name[it]=Sardo
Name[ja]=サルデーニャ語
Name[kk]=Сардинше
Name[km]=សារឌីណង់
Name[kn]=ಸಾರ್ಡೀನಿಯನ್
Name[ko]=사르디니아어
Name[ku]=Sardunî
Name[lb]=Sardinesch
Name[lt]=Sardinijos
Name[lv]=Sardīniešu
Name[mai]=सारडिनी
Name[mk]=Сардиниски
Name[ml]=സര്‍ഡീനിയന്‍
Name[mr]=सारदिनी
Name[ms]=Sardinian
Name[nb]=Sardisk
Name[nds]=Sardiensch
Name[ne]=सर्दिनियन
Name[nl]=Sardinisch
Name[nn]=Sardisk
Name[oc]=Sard
Name[or]=Sardinian
Name[pa]=ਸਾਰਡੀਨੀਆਈ
Name[pl]=Sardyński
Name[ps]=سارډينيايي
Name[pt]=Sardenho
Name[pt_BR]=Sardo
Name[ro]=Sardiniană
Name[ru]=Сардинский
Name[se]=Sardiniagiella
Name[si]=සාර්ඩිනියන්
Name[sk]=Sardínčina
Name[sl]=sardinsko
Name[sq]=Sardiniane
Name[sr]=сардинијски
Name[sr@ijekavian]=сардинијски
Name[sr@ijekavianlatin]=sardinijski
Name[sr@latin]=sardinijski
Name[sv]=Sardinska
Name[ta]=சார்டீனியன்
Name[te]=సార్డినియన్
Name[tg]=Сардиниягӣ
Name[th]=ภาษาซาร์ดิเนียน
Name[tr]=Sardinian
Name[ug]=ساردىنىيەچە
Name[uk]=Сардинська
Name[uz]=Sardincha
Name[uz@cyrillic]=Сардинча
-Name[vi]=Xa-đi-ni-a
+Name[vi]=Sardinia
Name[wa]=Sardinyin
-Name[x-test]=xxSardinianxx
Name[xh]=Sardinian
+Name[x-test]=xxSardinianxx
Name[zh_CN]=撒丁语
Name[zh_HK]=薩丁尼亞語
Name[zh_TW]=薩丁尼亞語
[sd]
Name=Sindhi
Name[af]=Sindhi
Name[ar]=سندية
Name[as]=ছিন্ধি
Name[ast]=Sindhi
Name[be]=Сіндхі
Name[be@latin]=Sindhi
Name[bg]=Синдхи
Name[bn]=সিন্ধি
Name[bn_IN]=সিন্ধি
Name[br]=Sindhieg
Name[bs]=Sindi
Name[ca]=Sindhi
Name[ca@valencia]=Sindhi
Name[cs]=Sindhi
Name[csb]=Sindhi
Name[cy]=Sindhi
Name[da]=Sindhi
Name[de]=Sindhi
Name[el]=Sindhi
Name[en_GB]=Sindhi
Name[eo]=Sinda
Name[es]=Sindhi
Name[et]=Sindhi
Name[eu]=Sindhi
Name[fa]=سیندهی
Name[fi]=Sindhi
Name[fr]=Sindhi
Name[fy]=Sindhi
Name[ga]=Sindis
Name[gl]=Sindhi
Name[gu]=સિંધી
Name[he]=סינדהי
Name[hi]=सिंधी
Name[hne]=सिंधी
Name[hr]=Sindhi
Name[hsb]=Sindhi
Name[hu]=Szindi
Name[ia]=Sindi
Name[id]=Sindhi
Name[is]=Shindi
Name[it]=Sindhi
Name[ja]=シンド語
Name[kk]=Синдхи
Name[km]=ស៊ីនឌី
Name[kn]=ಸಿಂಧಿ
Name[ko]=신디어
Name[ku]=Sîndhî
Name[lb]=Sindhi-Sprooch
Name[lt]=Sindhi
Name[lv]=Sindhu
Name[mai]=सिन्धी
Name[mk]=Синди
Name[ml]=സിന്ധി
Name[mr]=सिंधी
Name[ms]=Sindhi
Name[nb]=Sindhi
Name[nds]=Sindhi
Name[ne]=सिन्धी
Name[nl]=Sindhi
Name[nn]=Sindhi
Name[or]=Sindhi
Name[pa]=ਸਿੰਧੀ
Name[pl]=Sindhi
Name[ps]=سندهي
Name[pt]=Sindhi
Name[pt_BR]=Sindi
Name[ro]=Sindi
Name[ru]=Синдхи
Name[se]=Sindhigiella
Name[si]=සින්දි
Name[sk]=Sindhčina
Name[sl]=sindijsko
Name[sq]=Sindhi
Name[sr]=синди
Name[sr@ijekavian]=синди
Name[sr@ijekavianlatin]=sindi
Name[sr@latin]=sindi
Name[sv]=Sindhi
Name[ta]=சிந்தி
Name[te]=సింధి
Name[tg]=Синдхӣ
Name[th]=ภาษาสินธุ
Name[tr]=Sindhi
Name[ug]=سىندىچە
Name[uk]=Синдхі
Name[uz]=Sindxi
Name[uz@cyrillic]=Синдхи
-Name[vi]=Xin-đi
+Name[vi]=Sindhi
Name[wa]=Sindi
-Name[x-test]=xxSindhixx
Name[xh]=Sindhi
+Name[x-test]=xxSindhixx
Name[zh_CN]=信德语
Name[zh_HK]=Sindhi語
Name[zh_TW]=Sindhi語
[se]
Name=Northern Sami
Name[af]=Noordelike Sami
Name[ar]=صامية شمالية
Name[as]=ন'ৰ্দাৰ্ণ ছামি
Name[ast]=Sami del Norte
Name[be]=Самі (поўнач)
Name[be@latin]=Paŭnočnaje Sami
Name[bg]=Северен Сами
Name[bn]=উত্তর সামি
Name[bn_IN]=উত্তর সামি
Name[br]=Sami, Norzh
Name[bs]=Sjeverni sami
Name[ca]=Sami nord
Name[ca@valencia]=Sami nord
Name[cs]=Severní Sami
Name[csb]=Nordowi Sami
Name[cy]=Sami'r Gogledd
Name[da]=Nordsamisk
Name[de]=Nördliches Sami
Name[el]=Northern Sami
Name[en_GB]=Northern Sami
Name[eo]=Norda Samea
Name[es]=Samí del norte
Name[et]=Põhjasaami
Name[eu]=Samia (iparrekoa)
Name[fa]=سامی شمالی
Name[fi]=Pohjoissaame
Name[fr]=Sami du Nord
Name[fy]=Noard-Koreaansk
Name[ga]=Sáimis Thuaidh
Name[gl]=Sami do norte
Name[gu]=ઉત્તરી સામી
Name[he]=סאמית צפונית
Name[hi]=उत्तरी सामी
Name[hne]=उत्तरी सामी
Name[hr]=Sjeverni Sami
Name[hsb]=Sewjernosamisce
Name[hu]=Északi szami
Name[ia]=Sami Septentrional
Name[id]=Sami Bagian Utara
Name[is]=Norður Sami
Name[it]=Sami settentrionale
Name[ja]=北サーミ語
Name[kk]=Солтүстік саами
Name[km]=សាមី​ខាងជើង
Name[kn]=ಉತ್ತರ ಸಾಮೀ
Name[ko]=북부 사미어
Name[ku]=Samiya Bakûrî
Name[lb]=Nördlecht Sami
Name[lt]=Šiaurės Sami
Name[lv]=Ziemeļsāmu
Name[mai]=उत्तरी सामी
Name[mk]=Северен Сами
Name[ml]=വടക്കന്‍ സാമി
Name[mr]=उत्तरी सामी
Name[ms]=Sami Utara
Name[nb]=Nordsamisk
Name[nds]=Noord-Saamsch
Name[ne]=उत्तरी सामी
Name[nl]=Noord Sami
Name[nn]=Nordsamisk
Name[or]=Northern Sami
Name[pa]=ਉੱਤਰੀ ਸਾਮੀ
Name[pl]=Północny Sami
Name[ps]=شمالي سامي
Name[pt]=Sami do Norte
Name[pt_BR]=Sami setentrional
Name[ro]=Sami nordică
Name[ru]=Северносаамский
Name[se]=Davvisámegiella
Name[si]=උතුරු සැමි
Name[sk]=Lapončina (severná)
Name[sl]=severno sami
Name[sq]=Sami Veriore
Name[sr]=северни сами
Name[sr@ijekavian]=сјеверни сами
Name[sr@ijekavianlatin]=sjeverni sami
Name[sr@latin]=severni sami
Name[sv]=Samiska
Name[ta]=வடக்கு சாமி
Name[te]=ఉత్తర సమి
Name[tg]=Саамаи Шимолӣ
Name[th]=ภาษาซามี ตอนเหนือ
Name[tr]=Northern Sami
Name[ug]=شىمالىي سامىچە
Name[uk]=Північна Саамі
Name[uz]=Shimoliy Sami
Name[uz@cyrillic]=Шимолий Сами
-Name[vi]=Xa-mi (Bắc)
+Name[vi]=Bắc Sami
Name[wa]=Bijhe såmi
-Name[x-test]=xxNorthern Samixx
Name[xh]=Sami Yasemntla
+Name[x-test]=xxNorthern Samixx
Name[zh_CN]=北萨米语
Name[zh_HK]=北薩米語
Name[zh_TW]=北薩米語
[sg]
Name=Sango
Name[af]=Sango
Name[ar]=سانغو
Name[as]=ছাঙ্গো
Name[ast]=Sango
Name[be]=Санга
Name[be@latin]=Sango
Name[bg]=Сангро
Name[bn]=সাংগো
Name[bn_IN]=সাঙ্গো
Name[br]=Sango
Name[bs]=Sango
Name[ca]=Sango
Name[ca@valencia]=Sango
Name[cs]=Sango
Name[csb]=Sango
Name[cy]=Sango
Name[da]=Sango
Name[de]=Sango
Name[el]=Sango
Name[en_GB]=Sango
Name[eo]=Sangoa
Name[es]=Sango
Name[et]=Sango
Name[eu]=Sango
Name[fa]=سانگو
Name[fi]=Sango
Name[fr]=Sango
Name[fy]=Sango
Name[ga]=Sangóis
Name[gl]=Sango
Name[gu]=સાન્ગો
Name[he]=סאנגו
Name[hi]=सैन्गो
Name[hne]=सैन्गो
Name[hr]=Sango
Name[hsb]=Sango
Name[hu]=Szangó
Name[ia]=Sango
Name[id]=Sango
Name[is]=Sango
Name[it]=Sango
Name[ja]=サンゴ語
Name[kk]=Санго
Name[km]=សង់ហ្គោ
Name[kn]=ಸಾಂಗೋ
Name[ko]=상고어
Name[ku]=Sango
Name[lb]=Sango-Sprooch
Name[lt]=Sango
Name[lv]=Sangu
Name[mai]=सैंगो
Name[mk]=Санго
Name[ml]=സാന്‍ഗോ
Name[mr]=सैन्गो
Name[ms]=Sango
Name[nb]=Sango
Name[nds]=Sango
Name[ne]=साङ्गो
Name[nl]=Sango
Name[nn]=Sango
Name[or]=Sango
Name[pa]=ਸਾਂਗੋ
Name[pl]=Sango
Name[ps]=سانګو
Name[pt]=Sango
Name[pt_BR]=Sango
Name[ro]=Sangă
Name[ru]=Санго
Name[se]=Sangogiella
Name[si]=සැන්ගෝ
Name[sk]=Sango
Name[sl]=sango
Name[sq]=Sango
Name[sr]=санго
Name[sr@ijekavian]=санго
Name[sr@ijekavianlatin]=sango
Name[sr@latin]=sango
Name[sv]=Sango
Name[ta]=சாங்கோ
Name[te]=సాంగొ
Name[tg]=Санго
Name[th]=ภาษาแซงโก
Name[tr]=Sango
Name[ug]=سانگوچە
Name[uk]=Санго
Name[uz]=Sango
Name[uz@cyrillic]=Санго
-Name[vi]=Xan-gô
+Name[vi]=Sango
Name[wa]=Sango
-Name[x-test]=xxSangoxx
Name[xh]=Sango
+Name[x-test]=xxSangoxx
Name[zh_CN]=桑戈语
Name[zh_HK]=Sango語
Name[zh_TW]=Sango語
[si]
Name=Sinhala
Name[ar]=صنهالية
Name[ast]=Sinhala
Name[be@latin]=Sinhaleskaja
Name[bg]=Сингалски
Name[bn]=সিংহল
Name[bs]=Sinhalski
Name[ca]=Singalès
Name[ca@valencia]=Singalés
Name[cs]=Sinhalský
Name[csb]=Sinhala
Name[da]=Sinhala
Name[de]=Singhalesisch
Name[el]=Σινχάλα
Name[en_GB]=Sinhala
Name[es]=Cingalés
Name[et]=Singali
Name[eu]=Sinhala
Name[fa]=Sinhala
Name[fi]=Sinhala
Name[fr]=Cingalais
Name[fy]=Singhale
Name[ga]=Siolóinis
Name[gl]=Sinhala
Name[gu]=સિંહાલા
Name[he]=סינהלזית
Name[hi]=सिंहला
Name[hr]=Sinhalski
Name[hu]=Szingaléz
Name[ia]=Sinhala
Name[id]=Sinhala
Name[is]=Sinhalíska
Name[it]=Singalese
Name[ja]=シンハラ語
Name[kk]=Сингалша
Name[km]=ស៊ីនហាឡា
Name[kn]=ಸಿಂಹಳ
Name[ko]=신할라어
Name[ku]=Sinhala
Name[lt]=Sinhala
Name[lv]=Singāļu
Name[ml]=സിംഹള
Name[ms]=Sinhala
Name[nb]=Singalesisk
Name[nds]=Singaleesch
Name[nl]=Singalees
Name[nn]=Sinhala
Name[pa]=ਸਿੰਹਾਲਾ
Name[pl]=Sinhala
Name[pt]=Sinhala
Name[pt_BR]=Cingalês
Name[ro]=Sinhala
Name[ru]=Сингальский
Name[se]=Sinhalagiella
Name[si]=සිංහල
Name[sk]=Sinhalčina
Name[sl]=sinhalsko
Name[sq]=Sinhala
Name[sr]=синхалески
Name[sr@ijekavian]=синхалески
Name[sr@ijekavianlatin]=sinhaleski
Name[sr@latin]=sinhaleski
Name[sv]=Singalesiska
Name[ta]=சிங்களம்
Name[tg]=Синхала
Name[th]=ภาษาสิงหล
Name[tr]=Sinhala
Name[ug]=سىنگالچە
Name[uk]=Сингала
+Name[vi]=Sinhala
Name[wa]=Sinhala
Name[x-test]=xxSinhalaxx
Name[zh_CN]=僧伽罗语
Name[zh_TW]=Sinhala
[sk]
Name=Slovak
Name[af]=Slovakies
Name[ar]=سلوفاكية
Name[as]=স্লোভাক
Name[ast]=Eslovacu
Name[be]=Славацкая
Name[be@latin]=Słavackaja
Name[bg]=Словашки
Name[bn]=স্লোভাক
Name[bn_IN]=স্লোভাক
Name[br]=Sloveg
Name[bs]=Slovački
Name[ca]=Eslovac
Name[ca@valencia]=Eslovac
Name[cs]=Slovenský
Name[csb]=Słowacczi
Name[cy]=Sloveg
Name[da]=Slovakisk
Name[de]=Slowakisch
Name[el]=Σλοβακικά
Name[en_GB]=Slovak
Name[eo]=Slovaka
Name[es]=Eslovaco
Name[et]=Slovaki
Name[eu]=Eslovakiera
Name[fa]=اسلواکی
Name[fi]=Slovakki
Name[fr]=Slovaque
Name[fy]=Slovaaks
Name[ga]=Slóvaicis
Name[gl]=Eslovaco
Name[gu]=સ્લોવેક
Name[he]=סלובקית
Name[hi]=स्लोवाक
Name[hne]=स्लोवाक
Name[hr]=Slovački
Name[hsb]=Słowaksce
Name[hu]=Szlovák
Name[ia]=Slovaco
Name[id]=Slovak
Name[is]=Slóvenska
Name[it]=Slovacco
Name[ja]=スロバキア語
Name[kk]=Словакша
Name[km]=ស្លូវ៉ាគី
Name[kn]=ಸ್ಲೋವಾಕ್
Name[ko]=슬로바키아어
Name[ku]=Slowakî
Name[lb]=Slowakesch
Name[lt]=Slovakų
Name[lv]=Slovāku
Name[mai]=स्लोवाक
Name[mk]=Словачки
Name[ml]=സ്ലൊവാക്യന്‍
Name[mr]=स्लोवाक
Name[ms]=Slovak
Name[nb]=Slovakisk
Name[nds]=Slowaaksch
Name[ne]=स्लोभाकी
Name[nl]=Slowaaks
Name[nn]=Slovakisk
Name[oc]=Eslovac
Name[or]=Slovak
Name[pa]=ਸਲੋਵਾਕ
Name[pl]=Słowacki
Name[ps]=سلواک
Name[pt]=Eslovaco
Name[pt_BR]=Eslovaco
Name[ro]=Slovacă
Name[ru]=Словацкий
Name[se]=Slovákagiella
Name[si]=ස්ලෝවැක්
Name[sk]=Slovenčina
Name[sl]=slovaško
Name[sq]=Sllovake
Name[sr]=словачки
Name[sr@ijekavian]=словачки
Name[sr@ijekavianlatin]=slovački
Name[sr@latin]=slovački
Name[sv]=Slovakiska
Name[ta]=சுலோவாக்
Name[te]=స్లొవాక్
Name[tg]=Словакӣ
Name[th]=ภาษาสโลวัค
Name[tr]=Slovakça
-Name[ug]=سىلوۋاكچە
+Name[ug]=سلوۋاكچە
Name[uk]=Словацька
Name[uz]=Slovakcha
Name[uz@cyrillic]=Словакча
-Name[vi]=Xlô-vák
+Name[vi]=Slovak
Name[wa]=Eslovake
-Name[x-test]=xxSlovakxx
Name[xh]=isiSlovak
+Name[x-test]=xxSlovakxx
Name[zh_CN]=斯洛伐克语
Name[zh_HK]=斯洛伐克語
Name[zh_TW]=斯洛伐克語
[sl]
Name=Slovenian
Name[af]=Sloveniese
Name[ar]=سلوفينية
Name[as]=স্লোভেনিয়ান
Name[ast]=Eslovenu
Name[be]=Славенская
Name[be@latin]=Słavienskaja
Name[bg]=Словенски
Name[bn]=স্লোভেনীয়
Name[bn_IN]=স্লোভেনিয়ান
Name[br]=Slovenieg
Name[bs]=Slovenački
Name[ca]=Eslovè
Name[ca@valencia]=Eslovè
Name[cs]=Slovinský
Name[csb]=Slowensczi
Name[cy]=Sloveneg
Name[da]=Slovensk
Name[de]=Slowenisch
Name[el]=Σλοβενικά
Name[en_GB]=Slovenian
Name[eo]=Slovena
Name[es]=Esloveno
Name[et]=Sloveeni
Name[eu]=Esloveniera
Name[fa]=اسلونیایی
Name[fi]=Sloveeni
Name[fr]=Slovène
Name[fy]=Sloveensk
Name[ga]=Slóivéinis
Name[gl]=Esloveno
Name[gu]=સ્લોવેનિયન
Name[he]=סלובנית
Name[hi]=स्लोवेनियाई
Name[hne]=स्लोवेनियाई
Name[hr]=Slovenski
Name[hsb]=Słowjensce
Name[hu]=Szlovén
Name[ia]=Sloveno
Name[id]=Slovenia
Name[is]=Slóvenska
Name[it]=Sloveno
Name[ja]=スロベニア語
Name[kk]=Словенше
Name[km]=ស្លូវ៉ានី
Name[kn]=ಸ್ಲೋವೇನಿಯನ್
Name[ko]=슬로베니아어
Name[ku]=Slovênî
Name[lb]=Slowenesch
Name[lt]=Slovėnų
Name[lv]=Slovēņu
Name[mai]=स्लोवानियाइ
Name[mk]=Словенечки
Name[ml]=സ്ലൊവേനിയന്‍
Name[mr]=स्लोवेनियन
Name[ms]=Slovenia
Name[nb]=Slovensk
Name[nds]=Sloweensch
Name[ne]=स्लोभेनियन
Name[nl]=Sloweens
Name[nn]=Slovensk
Name[oc]=Eslovèn
Name[or]=Slovenian
Name[pa]=ਸਲੋਵੀਨੀਆਈ
Name[pl]=Słoweński
Name[ps]=سلووېنين
Name[pt]=Esloveno
Name[pt_BR]=Esloveno
Name[ro]=Slovenă
Name[ru]=Словенский
Name[se]=Slovenagiella
Name[si]=ස්ලෝවීනියානු
Name[sk]=Slovinčina
Name[sl]=slovensko
Name[sq]=Sllovene
Name[sr]=словеначки
Name[sr@ijekavian]=словеначки
Name[sr@ijekavianlatin]=slovenački
Name[sr@latin]=slovenački
Name[sv]=Slovenska
Name[ta]=சுலோவீனியன்
Name[te]=స్లొవేనియన్
Name[tg]=Словенӣ
Name[th]=ภาษาสโลเวเนีย
Name[tr]=Slovence
Name[ug]=سىلوۋېنىيەچە
Name[uk]=Словенська
Name[uz]=Sloveniancha
Name[uz@cyrillic]=Словенианча
-Name[vi]=Xlô-ven
+Name[vi]=Slovenia
Name[wa]=Eslovenyin
-Name[x-test]=xxSlovenianxx
Name[xh]=Slovenian
+Name[x-test]=xxSlovenianxx
Name[zh_CN]=斯洛文尼亚语
Name[zh_HK]=斯洛維尼亞語
Name[zh_TW]=斯洛維尼亞語
[sm]
Name=Samoan
Name[af]=Samoan
Name[ar]=ساموية
Name[as]=চামোৱান
Name[ast]=Samoanu
Name[be]=Самоа
Name[be@latin]=Samoa
Name[bg]=Самоански
Name[bn]=সামোয়ান
Name[bn_IN]=সামোয়ান
Name[br]=Samoan
Name[bs]=Samoanski
Name[ca]=Samoà
Name[ca@valencia]=Samoà
Name[cs]=Samojský
Name[csb]=Samoańsczi
Name[cy]=Samoeg
Name[da]=Samoansk
Name[de]=Samoanisch
Name[el]=Σαμοανικά
Name[en_GB]=Samoan
Name[eo]=Samoa
Name[es]=Samoano
Name[et]=Samoa
Name[eu]=Samoera
Name[fa]=ساموان
Name[fi]=Samoa
Name[fr]=Samoan
Name[fy]=Samoaansk
Name[ga]=Samóis
Name[gl]=Samoano
Name[gu]=સામોન
Name[he]=סמואית
Name[hi]=सामोन
Name[hne]=सामोन
Name[hr]=Samoanski
Name[hsb]=Samoasce
Name[hu]=Szamoai
Name[ia]=Samoano
Name[id]=Samoa
Name[is]=Samoan
Name[it]=Samoano
Name[ja]=サモア語
Name[kk]=Самоа
Name[km]=សាមូអា
Name[kn]=ಸಮೋವನ್
Name[ko]=사모아어
Name[ku]=Samoyî
Name[lb]=Samoanesch
Name[lt]=Samoa
Name[lv]=Samoāņu
Name[mai]=सामोन
Name[mk]=Самоански
Name[ml]=സമോവന്‍
Name[mr]=सामोन
Name[ms]=Samoan
Name[nb]=Samoansk
Name[nds]=Samoaansch
Name[ne]=सामोआन
Name[nl]=Samoaans
Name[nn]=Samoansk
Name[or]=Samoan
Name[pa]=ਸਾਮੋਆਨ
Name[pl]=Samoański
Name[ps]=سموان
Name[pt]=Samoano
Name[pt_BR]=Samoano
Name[ro]=Samoană
Name[ru]=Самоанский
Name[se]=Samoagiella
Name[si]=සැමෝවන්
Name[sk]=Samojčina
Name[sl]=samojsko
Name[sq]=Samoane
Name[sr]=самоански
Name[sr@ijekavian]=самоански
Name[sr@ijekavianlatin]=samoanski
Name[sr@latin]=samoanski
Name[sv]=Samoanska
Name[ta]=சமோவன்
Name[te]=సమొవన్
Name[tg]=Самоанӣ
Name[th]=ภาษาซาโมน
Name[tr]=Samoan
-Name[ug]=ساموئاچە
+Name[ug]=ساموئانچە
Name[uk]=Самоанська
Name[uz]=Samoacha
Name[uz@cyrillic]=Самоача
-Name[vi]=Xa-mô-a
+Name[vi]=Samoan
Name[wa]=Samowan
-Name[x-test]=xxSamoanxx
Name[xh]=Samoan
+Name[x-test]=xxSamoanxx
Name[zh_CN]=萨摩亚语
Name[zh_HK]=薩摩牙語
Name[zh_TW]=薩摩亞語
[sn]
Name=Shona
Name[af]=Shona
Name[ar]=شونا
Name[as]=ছোনা
Name[ast]=Shona
Name[be]=Шона
Name[be@latin]=Šona
Name[bg]=Шона
Name[bn]=শোনা
Name[bn_IN]=শোনা
Name[br]=Shona
Name[bs]=Šona
Name[ca]=Shona
Name[ca@valencia]=Shona
Name[cs]=Shona
Name[csb]=Shona
Name[cy]=Shona
Name[da]=Shona
Name[de]=Shona
Name[el]=Shona
Name[en_GB]=Shona
Name[eo]=Ŝona
Name[es]=Shona
Name[et]=Shona
Name[eu]=Shona
Name[fa]=شوها
Name[fi]=Šona
Name[fr]=Shona
Name[fy]=Shona
Name[ga]=Seoinis
Name[gl]=Shona
Name[gu]=શોના
Name[he]=שונה
Name[hi]=शोना
Name[hne]=सोना
Name[hr]=Shona
Name[hsb]=Shona
Name[hu]=Sona
Name[ia]=Shona
Name[id]=Shona
Name[is]=Shona
Name[it]=Shona
Name[ja]=ショナ語
Name[kk]=Схона
Name[km]=សូណា
Name[kn]=ಶೋನಾ
Name[ko]=쇼나어
Name[ku]=Şona
Name[lb]=Shona
Name[lt]=Shona
Name[lv]=Šonu
Name[mai]=शोना
Name[mk]=Шона
Name[ml]=ഷോണാ
Name[mr]=शोना
Name[ms]=Shona
Name[nb]=Shona
Name[nds]=Schona
Name[ne]=शोना
Name[nl]=Shona
Name[nn]=Shona
Name[oc]=XChat
Name[or]=Shona
Name[pa]=ਸ਼ੋਨਾ
Name[pl]=Shona
Name[ps]=شونا
Name[pt]=Shona
Name[pt_BR]=Chona
Name[ro]=Șonă
Name[ru]=Шона
Name[se]=Šonagiella
Name[si]=ෂොනා
Name[sk]=Šona
Name[sl]=shona
Name[sq]=Shona
Name[sr]=шона
Name[sr@ijekavian]=шона
Name[sr@ijekavianlatin]=šona
Name[sr@latin]=šona
Name[sv]=Shona
Name[ta]=ஷோனா
Name[te]=షొనా
Name[tg]=Шонӣ
Name[th]=ภาษาโชนา
Name[tr]=Shona
Name[ug]=شوناچە
Name[uk]=Шона
Name[uz]=Shona
Name[uz@cyrillic]=Шона
-Name[vi]=Sô-na
+Name[vi]=Shona
Name[wa]=Shona
-Name[x-test]=xxShonaxx
Name[xh]=Isishona
+Name[x-test]=xxShonaxx
Name[zh_CN]=修纳语
Name[zh_HK]=Shona語
Name[zh_TW]=Shona語
[so]
Name=Somali
Name[af]=Somali
Name[ar]=صومالية
Name[as]=চোমালি
Name[ast]=Somalí
Name[be]=Самалійская
Name[be@latin]=Samalijskaja
Name[bg]=Сомали
Name[bn]=সোমালীয়
Name[bn_IN]=সোমালি
Name[br]=Somalieg
Name[bs]=Somalijski
Name[ca]=Somalí
Name[ca@valencia]=Somalí
Name[cs]=Somálský
Name[csb]=Somalijsczi
Name[cy]=Somali
Name[da]=Somalisk
Name[de]=Somali
Name[el]=Σομαλικά
Name[en_GB]=Somali
Name[eo]=Somala
Name[es]=Somalí
Name[et]=Somaali
Name[eu]=Somaliera
Name[fa]=سومالی
Name[fi]=Somali
Name[fr]=Somali
Name[fy]=Somalysk
Name[ga]=Somáilis
Name[gl]=Somalí
Name[gu]=સોમાલી
Name[he]=סומלית
Name[hi]=सोमाली
Name[hne]=सोमाली
Name[hr]=Somalijski
Name[hsb]=Somalisce
Name[hu]=Szomáli
Name[ia]=Somali
Name[id]=Somali
Name[is]=Sómalska
Name[it]=Somalo
Name[ja]=ソマリ語
Name[kk]=Сомали
Name[km]=សូម៉ាលី
Name[kn]=ಸೋಮಾಲಿ
Name[ko]=소말리아어
Name[ku]=Somalî
Name[lb]=Somalesch
Name[lt]=Somaliečių
Name[lv]=Somāļu
Name[mai]=सोमाली
Name[mk]=Сомалиски
Name[ml]=സോമാലി
Name[mr]=सोमाली
Name[ms]=Somali
Name[nb]=Somali
Name[nds]=Somali
Name[ne]=सोमाली
Name[nl]=Somalisch
Name[nn]=Somali
Name[oc]=Somali
Name[or]=Somali
Name[pa]=ਸੋਮਾਲੀ
Name[pl]=Somalijski
Name[ps]=سومالي
Name[pt]=Somálio
Name[pt_BR]=Somali
Name[ro]=Somaleză
Name[ru]=Сомалийский
Name[se]=Somálagiella
Name[si]=සෝමාලි
Name[sk]=Somálčina
Name[sl]=somalsko
Name[sq]=Somali
Name[sr]=сомалијски
Name[sr@ijekavian]=сомалијски
Name[sr@ijekavianlatin]=somalijski
Name[sr@latin]=somalijski
Name[sv]=Somali
Name[ta]=சோமாலி
Name[te]=సొమాలి
Name[tg]=Сомалӣ
Name[th]=ภาษาโซมาลี
Name[tr]=Somalice
Name[ug]=سومالىچە
Name[uk]=Сомалійська
Name[uz]=Somalicha
Name[uz@cyrillic]=Сомалича
-Name[vi]=Xô-ma-li
+Name[vi]=Somali
Name[wa]=Somalyin
-Name[x-test]=xxSomalixx
Name[xh]=Somali
+Name[x-test]=xxSomalixx
Name[zh_CN]=索马里语
Name[zh_HK]=索馬利語
Name[zh_TW]=索馬利語
[sq]
Name=Albanian
Name[af]=Albanees
Name[ar]=ألبانية
Name[as]=আল্বানিয়ান
Name[ast]=Albanés
Name[be]=Албанская
Name[be@latin]=Albanskaja
Name[bg]=Албански
Name[bn]=আলবেনীয়
Name[bn_IN]=আলবেনিয়ান
Name[br]=Albanieg
Name[bs]=Albanski
Name[ca]=Albanès
Name[ca@valencia]=Albanés
Name[cs]=Albánský
Name[csb]=Albańsczi
Name[cy]=Albaneg
Name[da]=Albansk
Name[de]=Albanisch
Name[el]=Αλβανικά
Name[en_GB]=Albanian
Name[eo]=Albana
Name[es]=Albanés
Name[et]=Albaania
Name[eu]=Albaniera
Name[fa]=آلبانی
Name[fi]=Albania
Name[fr]=Albanais
Name[fy]=Albaansk
Name[ga]=Albáinis
Name[gl]=Albanés
Name[gu]=અલ્બેનિયન
Name[he]=אלבנית
Name[hi]=अल्बानियाई
Name[hne]=अल्बानियाई
Name[hr]=Albanski
Name[hsb]=Albansce
Name[hu]=Albán
Name[ia]=Albanese
Name[id]=Albania
Name[is]=Albanskur
Name[it]=Albanese
Name[ja]=アルバニア語
Name[kk]=Албанша
Name[km]=អាល់បានី
Name[kn]=ಅಲ್ಬೇನಿಯನ್
Name[ko]=알바니아어
Name[ku]=Albanî
Name[lb]=Albanesch
Name[lt]=Albanų
Name[lv]=Albāņu
Name[mai]=अल्बानियाइ
Name[mk]=Албански
Name[ml]=അല്ബേനിയന്‍
Name[mr]=अल्बानियाई
Name[ms]=Albania
Name[nb]=Albansk
Name[nds]=Albaansch
Name[ne]=अल्बानियाली
Name[nl]=Albanisch
Name[nn]=Albansk
Name[oc]=Albanés
Name[or]=Albanian
Name[pa]=ਅਲਬਾਨੀਆਈ
Name[pl]=Albański
Name[ps]=الباني
Name[pt]=Albanês
Name[pt_BR]=Albanês
Name[ro]=Albaneză
Name[ru]=Албанский
Name[se]=Albániagiella
Name[si]=ඇල්බේනියානු
Name[sk]=Albánčina
Name[sl]=albansko
Name[sq]=Shqipe
Name[sr]=албански
Name[sr@ijekavian]=албански
Name[sr@ijekavianlatin]=albanski
Name[sr@latin]=albanski
Name[sv]=Albanska
Name[ta]=அல்பேனியன்
Name[te]=అల్బేనియన్
Name[tg]=Албанӣ
Name[th]=ภาษาอัลเบเนีย
Name[tr]=Albanian
Name[ug]=ئالبانچە
Name[uk]=Албанська
Name[uz]=Albancha
Name[uz@cyrillic]=Албанча
-Name[vi]=An-ba-ni
+Name[vi]=Albania
Name[wa]=Albanyin
-Name[x-test]=xxAlbanianxx
Name[xh]=Albanian
+Name[x-test]=xxAlbanianxx
Name[zh_CN]=阿尔巴尼亚语
Name[zh_HK]=阿爾巴尼亞語
Name[zh_TW]=阿爾巴尼亞語
[sr]
Name=Serbian
Name[af]=Serbiese
Name[ar]=صربية
Name[as]=ছাৰ্বিয়ান
Name[ast]=Serbiu
Name[be]=Сербская
Name[be@latin]=Serbskaja
Name[bg]=Сръбски
Name[bn]=সার্বীয়
Name[bn_IN]=সার্বিয়ান
Name[br]=Serbeg
Name[bs]=Srpski
Name[ca]=Serbi
Name[ca@valencia]=Serbi
Name[cs]=Srbský
Name[csb]=Serbsczi
Name[cy]=Serbieg
Name[da]=Serbisk
Name[de]=Serbisch
Name[el]=Σερβικά
Name[en_GB]=Serbian
Name[eo]=Serba
Name[es]=Serbio
Name[et]=Serbia
Name[eu]=Serbiera
Name[fa]=صربستانی
Name[fi]=Serbia
Name[fr]=Serbe
Name[fy]=Servysk
Name[ga]=Seirbis
Name[gl]=Serbio
Name[gu]=સર્બિયન
Name[he]=סרבית
Name[hi]=सर्बियाई
Name[hne]=सर्बियाई
Name[hr]=Srpski
Name[hsb]=Serbisce
Name[hu]=Szerb
Name[ia]=Serbo
Name[id]=Serbia
Name[is]=Serbneska
Name[it]=Serbo
Name[ja]=セルビア語
Name[kk]=Сербше
Name[km]=សែប៊ី
Name[kn]=ಸರ್ಬಿಯನ್
Name[ko]=세르비아어
Name[ku]=Sirbî
Name[lb]=Serbesch
Name[lt]=Serbų
Name[lv]=Serbu
Name[mai]=सर्बियन
Name[mk]=Српски
Name[ml]=സെര്‍ബിയന്‍
Name[mr]=सर्बियाई
Name[ms]=Serbia
Name[nb]=Serbisk
Name[nds]=Serbsch
Name[ne]=सर्बियाली
Name[nl]=Servisch
Name[nn]=Serbisk
Name[oc]=Serbian
Name[or]=Serbian
Name[pa]=ਸਰਬੀਆਈ
Name[pl]=Serbski
Name[ps]=سربين
Name[pt]=Sérvio
Name[pt_BR]=Sérvio
Name[ro]=Sîrbă
Name[ru]=Сербский
Name[se]=Serbiagiella
Name[si]=සරිබියානු
Name[sk]=Srbčina
Name[sl]=srbsko
Name[sq]=Serbe
Name[sr]=српски
Name[sr@ijekavian]=српски
Name[sr@ijekavianlatin]=srpski
Name[sr@latin]=srpski
Name[sv]=Serbiska
Name[ta]=செர்பியன்
Name[te]=సెర్బియన్
Name[tg]=Сербӣ
Name[th]=ภาษาเซอร์เบีย
Name[tr]=Sırpça
Name[ug]=سېربچە
Name[uk]=Сербська
Name[uz]=Serbcha
Name[uz@cyrillic]=Сербча
-Name[vi]=Xéc-bi
+Name[vi]=Serbia
Name[wa]=Siebe
-Name[x-test]=xxSerbianxx
Name[xh]=Serbian
+Name[x-test]=xxSerbianxx
Name[zh_CN]=塞尔维亚语
Name[zh_HK]=塞爾維亞語
Name[zh_TW]=塞爾維亞語
[sr@ijekavian]
Name=Serbian Ijekavian
Name[bg]=Сръбски йекавски
Name[bn]=সার্বীয় ইজেকাভিয়ান
Name[bs]=Srpski(ijekavski)
Name[ca]=Serbi ijekavski
Name[ca@valencia]=Serbi ijekavski
Name[cs]=Srbský Ijekavský
Name[da]=Serbisk Ijekaviansk
Name[de]=Štokavisch
Name[el]=Σερβικά Ijekavian
Name[en_GB]=Serbian Ijekavian
Name[es]=Serbio ijekaviano
Name[et]=Serbia ijekavi
Name[eu]=Serbiera ijekaviera
+Name[fa]=صربی Ijekavian
Name[fi]=Serbia Ijekavian
Name[fr]=Serbe Ijékavien
Name[ga]=Seirbis Ijekavach
Name[gl]=Serbio ixtocavio
Name[hr]=Srpska ijekavica
Name[hu]=Szerb (ijekavica)
Name[ia]=Serbo Ljekavian
Name[id]=Ijekavian Serbia
Name[is]=Serbneska Ijekavian
Name[it]=Serbo ijekavo
Name[ja]=セルビア語イェ方言
Name[kk]=Иекав сербше
Name[km]=សែប៊ីយេកាវៀន
Name[ko]=세르비아어 (이예카비아)
Name[ku]=Sirbiya Ijekavian
Name[ms]=Serbian Ijekavian
Name[nb]=Serbisk ljekavisk
Name[nds]=Štokavisch
Name[nl]=Servisch Ijekavian
Name[nn]=Serbisk (ijekavisk)
Name[pa]=ਸਰਬੀਆਈ ਲਜੀਕਾਵਿਅਨ
Name[pl]=Serbski ijekawski
Name[pt]=Sérvio Ijekavian
Name[pt_BR]=Sérvio ijekavian
Name[ro]=Sîrbă jekaviană
Name[ru]=Сербский (иекавский)
Name[se]=Serbialaš ljekávagiella
Name[si]=සරිබියානු ල්ජෙකවියන්
Name[sk]=Srbčina (ijekavština)
Name[sr]=српски ијекавски
Name[sr@ijekavian]=српски ијекавски
Name[sr@ijekavianlatin]=srpski ijekavski
Name[sr@latin]=srpski ijekavski
Name[sv]=Ijekavisk serbiska
Name[ta]=செர்பியன் ஜெகாவியன்
Name[tg]=Сербиявӣ
Name[th]=ภาษาเซอร์เบียอิเจ็คคาเวีย
Name[tr]=Sırpça Ijekavian
Name[ug]=سېربچە ئىجېكاۋىيان
Name[uk]=Сербська (ієкавиця)
+Name[vi]=Serbian Ijekavian
Name[wa]=Siebe Ijekavyin
Name[x-test]=xxSerbian Ijekavianxx
Name[zh_CN]=塞尔维亚 Ijekavian 口音语言
Name[zh_TW]=賽爾維亞耶卡語
[sr@ijekavianlatin]
Name=Serbian Ijekavian Latin
Name[bg]=Сръбски йекавски (латиница)
Name[bn]=সার্বীয় ইজেকাভিয়ান লাতিন
Name[bs]=Srpski(ijekavski latinica)
Name[ca]=Serbi ijekavski llatí
Name[ca@valencia]=Serbi ijekavski llatí
Name[cs]=Srbský (Ijekavská latinka)
Name[da]=Serbisk Ijekaviansk latin
Name[de]=Štokavisch (lat. Alphabet)
Name[el]=Σερβικά Ijekavian (Λατινικά)
Name[en_GB]=Serbian Ijekavian Latin
Name[es]=Serbio latino ijekaviano
Name[et]=Serbia ijekavi (ladina)
Name[eu]=Serbiera ijekaviera latindarra
+Name[fa]=صربی Ijekavian لاتین
Name[fi]=Serbia Ijekavian latinalainen
Name[fr]=Serbe Ijékavien Latin
Name[ga]=Seirbis Ijekavach (aibítir Laidineach)
Name[gl]=Serbio ishtocavio Latino
Name[hr]=Srpska ijekavica, latinica
Name[hu]=Szerb (ijekavica, latin betűs)
Name[ia]=Serbo Latino Ljekavian
Name[id]=Latin Ijekavian Serbia
Name[is]=Serbneska Ijekavian latneskt
Name[it]=Serbo ijekavo latino
Name[ja]=セルビア語イェ方言 (ラテン文字)
Name[kk]=Иекав сербше (Латын)
Name[km]=សែប៊ី​យេកាវៀន (ឡាតាំង)
Name[ko]=세르비아어 (이예카비아, 라틴 문자)
Name[ku]=Sirbiya Ijekavian ya Latînî
Name[ms]=Serbian Ijekavian Latin
Name[nb]=Serbisk ljekavisk latinsk
Name[nds]=Štokavisch (latiensch Schrift)
Name[nl]=Servisch Ijekavian Latijn
Name[nn]=Serbisk (ijekavisk – romanisert)
Name[pa]=ਸਰਬੀਆਈ ਲਜੀਕਾਵਿਅਨ ਲੈਟਿਨ
Name[pl]=Serbski ijekawski łaciński
Name[pt]=Sérvio Latino Ijekavian
Name[pt_BR]=Sérvio latino ijekavian
Name[ro]=Sîrbă jekaviană latină
Name[ru]=Сербский (иекавский, латиница)
Name[se]=Serbialaš ljekávagiella (Latiinnalaš čállinvuohki)
Name[si]=සරිබියානු ල්ජෙකවියන් ලතින්
Name[sk]=Srbčina (ijekavština - latinka)
Name[sr]=српски ијекавски (латиница)
Name[sr@ijekavian]=српски ијекавски (латиница)
Name[sr@ijekavianlatin]=srpski ijekavski (latinica)
Name[sr@latin]=srpski ijekavski (latinica)
Name[sv]=Latinsk ijekavisk serbiska
Name[ta]=செர்பியன் ஜெகாவியன் இலத்தீன்
Name[tg]=Лотинии Сербиявӣ
Name[th]=ภาษาละตินเซอร์เบียอิเจ็คคาเวีย
Name[tr]=Sırpça Ijekavian Latin
Name[ug]=سېربچە ئىجېكاۋىيان لاتىن
Name[uk]=Сербська (ієкавиця, латинь)
+Name[vi]=Serbian Ijekavian Latin
Name[wa]=Siebe Ijekavyin èn alfabet latén
Name[x-test]=xxSerbian Ijekavian Latinxx
Name[zh_CN]=塞尔维亚 Ijekavian 口音拉丁语
Name[zh_TW]=賽爾維亞耶卡拉丁語
[sr@latin]
Name=Serbian Latin
Name[ar]=صربية لاتينية
Name[as]=ছাৰ্বিয়ান লেটিন
Name[ast]=Serbiu Llatinu
Name[be]=Сербская (лацініца)
Name[be@latin]=Serbskaja łacinka
Name[bg]=Сръбски (латиница)
Name[bn]=সার্বীয় লাতিন
Name[bn_IN]=সার্বিয়ান লাতিন
Name[br]=Serbeg latin
Name[bs]=Srpski(latinica)
Name[ca]=Serbi llatí
Name[ca@valencia]=Serbi llatí
Name[cs]=Srbský (latinka)
Name[csb]=Serbsczi (łacëńsczi)
Name[cy]=Serbieg Lladin
Name[da]=Serbisk latin
Name[de]=Serbisch (lat. Alphabet)
Name[el]=Σερβικά (Λατινικά)
Name[en_GB]=Serbian Latin
Name[eo]=Serba-Latina
Name[es]=Serbio latino
Name[et]=Serbia (ladina)
Name[eu]=Serbiera latindarra
Name[fa]=صربستانی
Name[fi]=Serbia latinanalainen
Name[fr]=Serbe Latin
Name[fy]=Servysk Latijnsk
Name[ga]=Seirbis (aibítir Laidineach)
Name[gl]=Serbio latino
Name[gu]=સર્બિયન લેટિન
Name[he]=סרבית לטינית
Name[hi]=सर्बियाई लातिनी
Name[hne]=सर्बियाई लातिनी
Name[hr]=Srpski latinica
Name[hsb]=Serbisce (z łaćonskim pismom)
Name[hu]=Szerb (latin betűs)
Name[ia]=Serbo Latino
Name[id]=Latin Serbia
Name[is]=Serbnesk latína
Name[it]=Serbo latino
Name[ja]=セルビア語 (ラテン文字)
Name[kk]=Сербше (Латын)
Name[km]=សែប៊ី (ឡាតាំង)
Name[kn]=ಸರ್ಬಿಯನ್ ಲಾಟಿನ್
Name[ko]=세르비아어 (라틴 문자)
Name[ku]=Sirbî bi tîpên latînî
Name[lb]=Latäinescht Serbesch
Name[lt]=Serbų lotynų
Name[lv]=Serbu latīņu
Name[mai]=सर्बियाई लातिनी
Name[mk]=Српски (латиница)
Name[ml]=സെര്‍ബിയന്‍ ലത്തീന്‍
Name[mr]=सर्बीयन लॅटिन
Name[ms]=Latin Serbia
Name[nb]=Serbisk (latinsk)
Name[nds]=Serbsch (latiensch Schrift)
Name[ne]=सर्बियाली ल्याटिन
Name[nl]=Servisch Latijn
Name[nn]=Serbisk (romanisert)
Name[or]=Serbian Latin
Name[pa]=ਸਰਬੀਆਈ ਲੈਟਿਨ
Name[pl]=Serbski łaciński
Name[ps]=سربيايي لاټيني
Name[pt]=Sérvio Latino
Name[pt_BR]=Sérvio latino
Name[ro]=Sîrbă latină
Name[ru]=Сербский (латиница)
Name[se]=Serbialaš latiidnagiella
Name[si]=සරිබියානු ලතින්
Name[sk]=Srbčina (latinka)
Name[sl]=srbsko latinsko
Name[sq]=Serbe Latine
Name[sr]=српски (латиница)
Name[sr@ijekavian]=српски (латиница)
Name[sr@ijekavianlatin]=srpski (latinica)
Name[sr@latin]=srpski (latinica)
Name[sv]=Latinsk serbiska
Name[ta]=செர்பியன் இலத்தீன்
Name[te]=సెర్బియన్ లాటిన్
Name[tg]=Лотинии Сербиявӣ
Name[th]=ภาษาละตินเซอร์เบีย
Name[tr]=Sırpça Latin
Name[ug]=سېربچە لاتىن
Name[uk]=Сербська (латинь)
Name[uz]=Serbcha (Lotin)
Name[uz@cyrillic]=Сербча (Лотин)
Name[vi]=Xéc-bi (La-tinh)
Name[wa]=Siebe en alfabet latén
Name[x-test]=xxSerbian Latinxx
Name[zh_CN]=塞尔维亚拉丁语
Name[zh_TW]=賽爾維亞拉丁語
[ss]
Name=Swati
Name[af]=Swati
Name[ar]=سواتي
Name[as]=ছ্বাটি
Name[ast]=Swatí
Name[be]=Сваці
Name[be@latin]=Swati
Name[bg]=Суази
Name[bn]=সোয়াতি
Name[bn_IN]=সোয়াতি
Name[br]=Swati
Name[bs]=Svati
Name[ca]=Swati
Name[ca@valencia]=Swati
Name[cs]=Swati
Name[csb]=Swati
Name[cy]=Swati
Name[da]=Swati
Name[de]=Swati
Name[el]=Swati
Name[en_GB]=Swati
Name[eo]=Svazia
Name[es]=Swati
Name[et]=Svaasi
Name[eu]=Swati
Name[fa]=سواتی
Name[fi]=Swazi
Name[fr]=Swati
Name[fy]=Swati
Name[ga]=Suaisis
Name[gl]=Swati
Name[gu]=સ્વાતિ
Name[he]=סוואטי
Name[hi]=स्वाती
Name[hne]=स्वाती
Name[hr]=Swati
Name[hsb]=Swati
Name[hu]=Szvati
Name[ia]=Swati
Name[id]=Swati
Name[is]=Swati
Name[it]=Swati
Name[ja]=スワティ語
Name[kk]=Свати
Name[km]=ស្វាទី
Name[kn]=ಸ್ವಾಟಿ
Name[ko]=스와티어
Name[ku]=Swatî
Name[lb]=Swazi
Name[lt]=Swati
Name[lv]=Svatu
Name[mai]=स्वाती
Name[mk]=Свати
Name[ml]=സ്വാതി
Name[mr]=स्वाती
Name[ms]=Swati
Name[nb]=Swati
Name[nds]=Swati
Name[ne]=स्वाती
Name[nl]=Swati
Name[nn]=Swati
Name[oc]=Swati
Name[or]=Swati
Name[pa]=ਸਵਾਟੀ
Name[pl]=Swati
Name[ps]=سواټي
Name[pt]=Swati
Name[pt_BR]=Suázi
Name[ro]=Suată
Name[ru]=Свати
Name[se]=Svatigiella
Name[si]=ස්වැටි
Name[sk]=Swati
Name[sl]=swati
Name[sq]=Swati
Name[sr]=свати
Name[sr@ijekavian]=свати
Name[sr@ijekavianlatin]=svati
Name[sr@latin]=svati
Name[sv]=Swazi
Name[ta]=சுவாடி
Name[te]=స్వాతి
Name[tg]=Сватӣ
Name[th]=ภาษาสวาตี
Name[tr]=Swati
Name[ug]=سىۋاتىچە
Name[uk]=Свазі
Name[uz]=Svati
Name[uz@cyrillic]=Свати
-Name[vi]=Xouă-ti
+Name[vi]=Swati
Name[wa]=Suwati
-Name[x-test]=xxSwatixx
Name[xh]=Isiswati
+Name[x-test]=xxSwatixx
Name[zh_CN]=斯瓦蒂语
Name[zh_HK]=Swati語
Name[zh_TW]=Swati語
[st]
Name=Sotho, Southern
Name[af]=Sotho, Suid
Name[ar]=سوتو شمالية
Name[as]=ছো'থো', ছাউদাৰ্ণ
Name[ast]=Sotho del Sur
Name[be]=Сота (поўдзень)
Name[be@latin]=Sota (poŭdzień)
Name[bg]=Южен Сото
Name[bn]=সোথো, দক্ষিণ
Name[bn_IN]=সোথো, দক্ষিণ
Name[br]=Soto, Su
Name[bs]=Soto, južni
Name[ca]=Sotho sud
Name[ca@valencia]=Sotho sud
Name[cs]=Sotho, Jižní
Name[csb]=Sotho, Pôłniowi
Name[cy]=Sotho, De
Name[da]=Sotho, syd
Name[de]=Südliches Sotho
Name[el]=Sotho, Southern
Name[en_GB]=Sotho, Southern
Name[eo]=Sota, suda
Name[es]=Sotho del sur
Name[et]=Lõuna-sotho
Name[eu]=Sothoera (egoaldekoa)
Name[fa]=سوتوی جنوبی
Name[fi]=Eteläsotho
Name[fr]=Sotho du Sud
Name[fy]=Sotho, Súd
Name[ga]=Sótó Theas
Name[gl]=Sotho do sur
Name[gu]=સોથા, દક્ષિણી
Name[he]=סותו דרומית
Name[hi]=सोथो, दक्षिणी
Name[hne]=सोथो, दक्छिनी
Name[hr]=Sotho, Južni
Name[hsb]=Sotho (juh)
Name[hu]=Sotho (déli)
Name[ia]=Sotho Meridional
Name[id]=Sotho, Bagian Selatan
Name[is]=Sotho, suður
Name[it]=Sesotho meridionale
Name[ja]=南ソト語
Name[kk]=Оңтүстік сото
Name[km]=សូធូ​ ​ត្បូង
Name[kn]=ಸೋಥೋ, ದಕ್ಷಿಣ
Name[ko]=남부 소토어
Name[ku]=Sotho, Başûrî
Name[lb]=Südlecht Sotho
Name[lt]=Sotho, Pietų
Name[lv]=Dienvidsotu
Name[mai]=सोथो, दक्षिणी
Name[mk]=Сото, јужен
Name[ml]=തെക്കന്‍ സോതോ
Name[mr]=सोथो, दक्षिणी
Name[ms]=Sotho, Selatan
Name[nb]=Sotho, Sørlig
Name[nds]=Sotho, Sööd
Name[ne]=सोथो, दक्षिणी
Name[nl]=Sotho, Zuid
Name[nn]=Sør-Sotho
Name[or]=Sotho, Southern
Name[pa]=ਸੋਥੋ, ਦੱਖਣੀ
Name[pl]=Sotho, Południowy
Name[ps]=سوټو، سهېلي
Name[pt]=Sotho do Sul
Name[pt_BR]=Sotho meridional
Name[ro]=Soto sudică
Name[ru]=Южный сото
Name[se]=Sothogiella, lulli
Name[si]=සෝතෝ, දකුණු
Name[sk]=Sothčina, južná
Name[sl]=sotho, južni
Name[sq]=Sotho, Jugore
Name[sr]=сото, јужни
Name[sr@ijekavian]=сото, јужни
Name[sr@ijekavianlatin]=soto, južni
Name[sr@latin]=soto, južni
Name[sv]=Sydsotho
Name[ta]=தென்சோத்தோ
Name[te]=సోతొ, దక్షిణ
Name[tg]=Соттоии Ҷанубӣ
Name[th]=ภาษาโซโธ ตอนใต้
Name[tr]=Sotho, Southern
Name[ug]=سوتوچە، شىمالىي
Name[uk]=Сото, Південна
Name[uz]=Sotxo, Janubiy
Name[uz@cyrillic]=Сотхо, Жанубий
-Name[vi]=Xô-tô (nam)
+Name[vi]=Sotho, Nam
Name[wa]=Soto (nonne)
-Name[x-test]=xxSotho, Southernxx
Name[xh]=Isisuthu, Sasemzantsi
+Name[x-test]=xxSotho, Southernxx
Name[zh_CN]=索托语(南部)
Name[zh_HK]=梭托語,南部
Name[zh_TW]=梭托語,南部
[su]
Name=Sundanese
Name[af]=Sundanese
Name[ar]=سندانية
Name[as]=ছান্দানিছ
Name[ast]=Sundanés
Name[be]=Сунданская
Name[be@latin]=Sundaneskaja
Name[bg]=Сундански
Name[bn]=সুন্দানিজ
Name[bn_IN]=সুদানিজ
Name[br]=Soudaneg
Name[bs]=Sundski
Name[ca]=Sundanès
Name[ca@valencia]=Sundanés
Name[cs]=Sundanský
Name[csb]=Sudańsczi
Name[cy]=Sundaneg
Name[da]=Sundansk
Name[de]=Sundanesisch
Name[el]=Sundanese
Name[en_GB]=Sundanese
Name[eo]=Sunda
Name[es]=Sudanés
Name[et]=Sunda
Name[eu]=Sundanera
Name[fa]=ساندانیز
Name[fi]=Sunda
Name[fr]=Soudanais
Name[fy]=Soendaneesk
Name[ga]=Sundais
Name[gl]=Sudanés
Name[gu]=સુદાનિઝ
Name[he]=סודנית
Name[hi]=सूडानी
Name[hne]=सूडानी
Name[hr]=Sundanese
Name[hsb]=Sundanesce
Name[hu]=Szundanéz
Name[ia]=Sundanese
Name[id]=Sunda
Name[is]=Sundanese
Name[it]=Sondanese
Name[ja]=スンダ語
Name[kk]=Суданша
Name[km]=ស៊ូដង់
Name[kn]=ಸುಡಾನೀಸ್
Name[ko]=수단어
Name[ku]=Sundî
Name[lb]=Sudanesesch
Name[lt]=Sudaniečių
Name[lv]=Zundu
Name[mai]=सूडानी
Name[mk]=Сундански
Name[ml]=സുഡാനീസ്
Name[mr]=सूडानी
Name[ms]=Sundanese
Name[nb]=Sundanesisk
Name[nds]=Sundaneesch
Name[ne]=सुडानी
Name[nl]=Sundanees
Name[nn]=Sundanesisk
Name[or]=Sundanese
Name[pa]=ਸੂਡਾਨੀਅਸ
Name[pl]=Sudański
Name[ps]=سوډاني
Name[pt]=Sudanês
Name[pt_BR]=Sudanês
Name[ro]=Sudaneză
Name[ru]=Сунданский
Name[se]=Sundanesagiella
Name[si]=සුන්දනීස්
Name[sk]=Sundčina
Name[sl]=sudansko
Name[sq]=Sundaneze
Name[sr]=сундански
Name[sr@ijekavian]=сундански
Name[sr@ijekavianlatin]=sundanski
Name[sr@latin]=sundanski
Name[sv]=Sundanesiska
Name[ta]=சூடானீயம்
Name[te]=సన్దనీస్
Name[tg]=Санданизӣ
Name[th]=ภาษาซูดาน
Name[tr]=Sundanese
-Name[ug]=سۇنداچە
+Name[ug]=ساندانىسچە
Name[uk]=Сунданська
Name[uz]=Sundancha
Name[uz@cyrillic]=Сунданча
-Name[vi]=Xun-đa-ni
+Name[vi]=Sundan
Name[wa]=Soudanès
-Name[x-test]=xxSundanesexx
Name[xh]=Sundanese
+Name[x-test]=xxSundanesexx
Name[zh_CN]=巽他语
Name[zh_HK]=Sundanese語
Name[zh_TW]=Sundanese語
[sv]
Name=Swedish
Name[af]=Sweeds
Name[ar]=سويدية
Name[as]=ছুইদিশ্ব
Name[ast]=Suecu
Name[be]=Шведская
Name[be@latin]=Švedzkaja
Name[bg]=Шведски
Name[bn]=সুইডিশ
Name[bn_IN]=সুইডিশ
Name[br]=Svedeg
Name[bs]=Švedski
Name[ca]=Suec
Name[ca@valencia]=Suec
Name[cs]=Švédský
Name[csb]=Szwedzczi
Name[cy]=Swedeg
Name[da]=Svensk
Name[de]=Schwedisch
Name[el]=Σουηδικά
Name[en_GB]=Swedish
Name[eo]=Sveda
Name[es]=Sueco
Name[et]=Rootsi
Name[eu]=Suediera
Name[fa]=سوئدی
Name[fi]=Ruotsi
Name[fr]=Suédois
Name[fy]=Sweedsk
Name[ga]=Sualainnis
Name[gl]=Sueco
Name[gu]=સ્વિડિશ
Name[he]=שבדית
Name[hi]=स्वीडिश
Name[hne]=स्वीडिस
Name[hr]=Švedski
Name[hsb]=Šwedsce
Name[hu]=Svéd
Name[ia]=Svedo
Name[id]=Swedia
Name[is]=Sænska
Name[it]=Svedese
Name[ja]=スウェーデン語
Name[kk]=Шведше
Name[km]=ស៊ុយអែដ
Name[kn]=ಸ್ವೀಡಿಷ್
Name[ko]=스웨덴어
Name[ku]=Swêdî
Name[lb]=Schwedesch
Name[lt]=Švedų
Name[lv]=Zviedru
Name[mai]=स्वीडिश
Name[mk]=Шведски
Name[ml]=സ്വീഡിഷ്
Name[mr]=स्वीडिश
Name[ms]=Swedish
Name[nb]=Svensk
Name[nds]=Sweedsch
Name[ne]=स्विडेनी
Name[nl]=Zweeds
Name[nn]=Svensk
Name[oc]=Suedés
Name[or]=Swedish
Name[pa]=ਸਵੀਡਿਸ਼
Name[pl]=Szwedzki
Name[ps]=سوېډېش
Name[pt]=Sueco
Name[pt_BR]=Sueco
Name[ro]=Suedeză
Name[ru]=Шведский
Name[se]=Ruoŧagiella
Name[si]=ස්වීඩන්
Name[sk]=Švédčina
Name[sl]=švedsko
Name[sq]=Suedeze
Name[sr]=шведски
Name[sr@ijekavian]=шведски
Name[sr@ijekavianlatin]=švedski
Name[sr@latin]=švedski
Name[sv]=Svenska
Name[ta]=சுவீடிஷ்
Name[te]=స్వీడిష్
Name[tg]=Шведӣ
Name[th]=ภาษาสวีเดน
Name[tr]=İsveççe
Name[ug]=شۋېدچە
Name[uk]=Шведська
Name[uz]=Shvedcha
Name[uz@cyrillic]=Шведча
-Name[vi]=Thuỵ-điển
+Name[vi]=Thụy Điển
Name[wa]=Suwedwès
-Name[x-test]=xxSwedishxx
Name[xh]=Swedish
+Name[x-test]=xxSwedishxx
Name[zh_CN]=瑞典语
Name[zh_HK]=瑞典語
Name[zh_TW]=瑞典語
[sw]
Name=Swahili
Name[af]=Swahili
Name[ar]=سواحيلية
Name[as]=ছ্বাহিলি
Name[ast]=Suaḥili
Name[be]=Суахілі
Name[be@latin]=Suahili
Name[bg]=Суахили
Name[bn]=সোয়াহিলি
Name[bn_IN]=সোয়াহিলি
Name[br]=Swahili
Name[bs]=Svahili
Name[ca]=Suahili
Name[ca@valencia]=Suahili
Name[cs]=Svahilský
Name[csb]=Swahili
Name[cy]=Swahili
Name[da]=Swahili
Name[de]=Swahili
Name[el]=Σουαχίλι
Name[en_GB]=Swahili
Name[eo]=Svahila
Name[es]=Suahili
Name[et]=Suahiili
Name[eu]=Swahiliera
Name[fa]=سواهیلی
Name[fi]=Swahili
Name[fr]=Swahili
Name[fy]=Swahili
Name[ga]=Svahaílis
Name[gl]=Swahili
Name[gu]=સ્વાહિલિ
Name[he]=סוואהילי
Name[hi]=स्वाहिली
Name[hne]=स्वाहिली
Name[hr]=Svahili
Name[hsb]=Swahili
Name[hu]=Szvahili
Name[ia]=Swahili
Name[id]=Swahili
Name[is]=Swahili
Name[it]=Swahili
Name[ja]=スワヒリ語
Name[kk]=Суахили
Name[km]=ស្វាហ៊ីលី
Name[kn]=ಸ್ವಾಹಿಲಿ
Name[ko]=스와힐리어
Name[ku]=Swahîlî
Name[lb]=Swahili
Name[lt]=Suahili
Name[lv]=Svahili
Name[mai]=स्वाहिली
Name[mk]=Свахили
Name[ml]=സ്വാഹിലി
Name[mr]=स्वाहिली
Name[ms]=Swahili
Name[nb]=Swahili
Name[nds]=Swahili
Name[ne]=स्वाहिली
Name[nl]=Swahili
Name[nn]=Swahili
Name[oc]=Swahili
Name[or]=Swahili
Name[pa]=ਸਵਾਹਿਲੀ
Name[pl]=Swahili
Name[ps]=سواهيلي
Name[pt]=Swahili
Name[pt_BR]=Suaíli
Name[ro]=Suahileză
Name[ru]=Суахили
Name[se]=Svahilagiella
Name[si]=ස්වාහිලි
Name[sk]=Svahilčina
Name[sl]=svahili
Name[sq]=Swahili
Name[sr]=свахили
Name[sr@ijekavian]=свахили
Name[sr@ijekavianlatin]=svahili
Name[sr@latin]=svahili
Name[sv]=Swahili
Name[ta]=ஸ்வாஹிலி
Name[te]=స్వాహిలి
Name[tg]=Свахилӣ
Name[th]=ภาษาสวาฮิลี
Name[tr]=Swahili
Name[ug]=سۋاھىلىچە
Name[uk]=Суахілі
Name[uz]=Svaxili
Name[uz@cyrillic]=Свахили
-Name[vi]=Xouă-hi-li
+Name[vi]=Swahili
Name[wa]=Suwahili
-Name[x-test]=xxSwahilixx
Name[xh]=Swahili
+Name[x-test]=xxSwahilixx
Name[zh_CN]=斯瓦希里语
Name[zh_HK]=斯華西里語
Name[zh_TW]=斯華西里語
[ta]
Name=Tamil
Name[af]=Tamilies
Name[ar]=تاميلية
Name[as]=তামিল
Name[ast]=Tamil
Name[be]=Тамільская
Name[be@latin]=Tamilskaja
Name[bg]=Тамилски
Name[bn]=তামিল
Name[bn_IN]=তামিল
Name[br]=Tamouleg
Name[bs]=Tamilski
Name[ca]=Tàmil
Name[ca@valencia]=Tàmil
Name[cs]=Tamilský
Name[csb]=Tamilsczi
Name[cy]=Tamil
Name[da]=Tamil
Name[de]=Tamil
Name[el]=Tamil
Name[en_GB]=Tamil
Name[eo]=Tamila
Name[es]=Tamil
Name[et]=Tamili
Name[eu]=Tamilera
Name[fa]=تامیل
Name[fi]=Tamil
Name[fr]=Tamoul
Name[fy]=Tamil
Name[ga]=Tamailis
Name[gl]=Tamil
Name[gu]=તમિલ
Name[he]=טמילית
Name[hi]=तमिल
Name[hne]=तमिल
Name[hr]=Tamilski
Name[hsb]=Tamilsce
Name[hu]=Tamil
Name[ia]=Tamil
Name[id]=Tamil
Name[is]=Tamílska
Name[it]=Tamil
Name[ja]=タミル語
Name[kk]=Тамилша
Name[km]=តាមីល
Name[kn]=ತಮಿಳು
Name[ko]=타밀어
Name[ku]=Tamîl
Name[lb]=Tamil
Name[lt]=Tamilų
Name[lv]=Tamilu
Name[mai]=तमिल
Name[mk]=Тамилски
Name[ml]=തമിഴ്
Name[mr]=तामिळ
Name[ms]=Tamil
Name[nb]=Tamil
Name[nds]=Tamielsch
Name[ne]=तामिल
Name[nl]=Tamil
Name[nn]=Tamil
Name[oc]=Tamil
Name[or]=Tamil
Name[pa]=ਤਾਮਿਲ
Name[pl]=Tamiljski
Name[ps]=ټامېل
Name[pt]=Tamil
Name[pt_BR]=Tâmil
Name[ro]=Tamilă
Name[ru]=Тамильский
Name[se]=Tamilgiella
Name[si]=දෙමළ
Name[sk]=Tamilčina
Name[sl]=tamilsko
Name[sq]=Tamileze
Name[sr]=тамилски
Name[sr@ijekavian]=тамилски
Name[sr@ijekavianlatin]=tamilski
Name[sr@latin]=tamilski
Name[sv]=Tamil
Name[ta]=தமிழ்
Name[te]=తమిళం
Name[tg]=Тамилӣ
Name[th]=ภาษาทมิฬ
Name[tr]=Tamil Dili
Name[ug]=تامىلچە
Name[uk]=Тамільська
Name[uz]=Tamilcha
Name[uz@cyrillic]=Тамилча
-Name[vi]=Ta-min
+Name[vi]=Tamil
Name[wa]=Tamoul
-Name[x-test]=xxTamilxx
Name[xh]=Tamil
+Name[x-test]=xxTamilxx
Name[zh_CN]=泰米尔语
Name[zh_HK]=坦米爾語
Name[zh_TW]=坦米爾語
[te]
Name=Telugu
Name[af]=Telugu
Name[ar]=تلوغو
Name[as]=তেলুগু
Name[ast]=Telugu
Name[be]=Тэлугу
Name[be@latin]=Telugu
Name[bg]=Телугу
Name[bn]=তেলেগু
Name[bn_IN]=তেলুগু
Name[br]=Telegu
Name[bs]=Telugu
Name[ca]=Telugu
Name[ca@valencia]=Telugu
Name[cs]=Telugu
Name[csb]=Telugu
Name[cy]=Telugu
Name[da]=Telugu
Name[de]=Telugu
Name[el]=Telugu
Name[en_GB]=Telugu
Name[eo]=Telugua
Name[es]=Telugu
Name[et]=Telugu
Name[eu]=Telugu
Name[fa]=تلوگو
Name[fi]=Telugu
Name[fr]=Télougou
Name[fy]=Telûgû
Name[ga]=Teileagúis
Name[gl]=Telugu
Name[gu]=તેલુગુ
Name[he]=טלוגו
Name[hi]=तेलुगु
Name[hne]=तेलुगु
Name[hr]=Telugu
Name[hsb]=Telugu
Name[hu]=Telugu
Name[ia]=Telugu
Name[id]=Telugu
Name[is]=Telugu
Name[it]=Telugu
Name[ja]=テルグ語
Name[kk]=Телугу
Name[km]=តេលូហ្គូ
Name[kn]=ತೆಲುಗು
Name[ko]=텔루구어
Name[ku]=Telugu
Name[lb]=Telugu
Name[lt]=Telugu
Name[lv]=Telugu
Name[mai]=तेलुगु
Name[mk]=Телугу
Name[ml]=തെലുങ്ക്
Name[mr]=तेलुगु
Name[ms]=Telugu
Name[nb]=Telugu
Name[nds]=Telugu
Name[ne]=तेलुगु
Name[nl]=Telugu
Name[nn]=Telugu
Name[oc]=Telugu
Name[or]=Telugu
Name[pa]=ਤੇਲਗੂ
Name[pl]=Telugu
Name[ps]=ټېلوګو
Name[pt]=Telugu
Name[pt_BR]=Telugu
Name[ro]=Telugă
Name[ru]=Телугу
Name[se]=Telugugiella
Name[si]=තෙළිඟු
Name[sk]=Telugčina
Name[sl]=telugu
Name[sq]=Telugu
Name[sr]=телугу
Name[sr@ijekavian]=телугу
Name[sr@ijekavianlatin]=telugu
Name[sr@latin]=telugu
Name[sv]=Telugu
Name[ta]=தெலுங்கு
Name[te]=తెలుగు
Name[tg]=Телугуягӣ
Name[th]=ภาษาเตลูกู
Name[tr]=Telugu
Name[ug]=تېلۇگۇچە
Name[uk]=Телугу
Name[uz]=Telugu
Name[uz@cyrillic]=Телугу
-Name[vi]=Te-lu-gu
+Name[vi]=Telugu
Name[wa]=Telougou
-Name[x-test]=xxTeluguxx
Name[xh]=Telugu
+Name[x-test]=xxTeluguxx
Name[zh_CN]=泰卢固语
Name[zh_HK]=特拉古語
Name[zh_TW]=特拉古語
[tg]
Name=Tajik
Name[af]=Tajikees
Name[ar]=طاجيكية
Name[as]=টাজিক
Name[ast]=Tayicu
Name[be]=Таджыцкая
Name[be@latin]=Tadžyckaja
Name[bg]=Таджикски
Name[bn]=তাজিক
Name[bn_IN]=তাজিক
Name[br]=Tajiek
Name[bs]=Tadžički
Name[ca]=Tadjik
Name[ca@valencia]=Tadjik
Name[cs]=Tádžikský
Name[csb]=Tadżëcczi
Name[cy]=Tajik
Name[da]=Tajik
Name[de]=Tadschikisch
Name[el]=Τατζικικά
Name[en_GB]=Tajik
Name[eo]=Taĝika
Name[es]=Tayiko
Name[et]=Tadžiki
Name[eu]=Tadjikera
Name[fa]=تاجیک
Name[fi]=Tadžikki
Name[fr]=Tadjik
Name[fy]=Tadzjyksk
Name[ga]=Táidsícis
Name[gl]=Taxico
Name[gu]=તાજીક
Name[he]=טג'יקית
Name[hi]=ताजिक
Name[hne]=ताजिक
Name[hr]=Tadžik
Name[hsb]=Tadźikisce
Name[hu]=Tádzsik
Name[ia]=Tadzhiko
Name[id]=Tajik
Name[is]=Tajik
Name[it]=Tagico
Name[ja]=タジク語
Name[kk]=Тәжікше
Name[km]=តាដហ្ស៊ីគីស្តង់
Name[kn]=ಟಾಜಿಕ್
Name[ko]=타지크어
Name[ku]=Tacîkî
Name[lb]=Tadschikesch
Name[lt]=Tadžikų
Name[lv]=Tadžiku
Name[mai]=ताजिक
Name[mk]=Таџикистански
Name[ml]=താജിക്ക്
Name[mr]=ताजिक
Name[ms]=Tajik
Name[nb]=Tadsjikisk
Name[nds]=Tadschiiksch
Name[ne]=ताजिक
Name[nl]=Tajiks
Name[nn]=Tadsjikisk
Name[oc]=Tajik
Name[or]=Tajik
Name[pa]=ਤਾਜਿਕ
Name[pl]=Tadżycki
Name[ps]=تاجکي
Name[pt]=Tajique
Name[pt_BR]=Tajique
Name[ro]=Tadjică
Name[ru]=Таджикский
Name[se]=Tažihkagiella
Name[si]=ටජික්
Name[sk]=Tadžičtina
Name[sl]=tadžiško
Name[sq]=Taxhike
Name[sr]=таџички
Name[sr@ijekavian]=таџички
Name[sr@ijekavianlatin]=tadžički
Name[sr@latin]=tadžički
Name[sv]=Tadzjikiska
Name[ta]=தஜிக்
Name[te]=తాజిక్
Name[tg]=Тоҷикӣ
Name[th]=ภาษาทาจิกิสถาน
Name[tr]=Tajik
Name[ug]=تاجىكچە
Name[uk]=Таджицька
Name[uz]=Tojikcha
Name[uz@cyrillic]=Тожикча
-Name[vi]=Ta-gíc
+Name[vi]=Tajik
Name[wa]=Tadjik
-Name[x-test]=xxTajikxx
Name[xh]=Tajik
+Name[x-test]=xxTajikxx
Name[zh_CN]=塔吉克语
Name[zh_HK]=塔吉克語
Name[zh_TW]=塔吉克語
[th]
Name=Thai
Name[af]=Thaïs
Name[ar]=تيلندية
Name[as]=থাই
Name[ast]=Tailandés
Name[be]=Тайская
Name[be@latin]=Tajskaja
Name[bg]=Тайски
Name[bn]=থাই
Name[bn_IN]=থাই
Name[br]=Tailh
Name[bs]=Tajlandski
Name[ca]=Tai
Name[ca@valencia]=Tai
Name[cs]=Thajský
Name[csb]=Tajsczi
Name[cy]=Thai
Name[da]=Thailandsk
Name[de]=Thailändisch
Name[el]=Ταϊλανδικά
Name[en_GB]=Thai
Name[eo]=Taja
Name[es]=Tailandés
Name[et]=Tai
Name[eu]=Thailandiera
Name[fa]=تایلندی
Name[fi]=Thai
Name[fr]=Thaïlandais
Name[fy]=Taaisk
Name[ga]=Téalainnis
Name[gl]=Tailandés
Name[gu]=થાઈ
Name[he]=תאילנדית
Name[hi]=थाई
Name[hne]=थाई
Name[hr]=Tajlandski
Name[hsb]=Thai
Name[hu]=Thai
Name[ia]=Thai
Name[id]=Thai
Name[is]=Tælenska
Name[it]=Thailandese
Name[ja]=タイ語
Name[kk]=Тайша
Name[km]=ថៃ
Name[kn]=ಥಾಯ್
Name[ko]=타이어
Name[ku]=Tayî
Name[lb]=Thai
Name[lt]=Tailandiečių
Name[lv]=Taju
Name[mai]=थाइ
Name[mk]=Тајландски
Name[ml]=തായ്
Name[mr]=थाई
Name[ms]=Thai
Name[nb]=Thai
Name[nds]=Thai
Name[ne]=थाई
Name[nl]=Thais
Name[nn]=Thai
Name[oc]=Tailandés
Name[or]=Thai
Name[pa]=ਥਾਈ
Name[pl]=Tajski
Name[ps]=ټهايي
Name[pt]=Tailandês
Name[pt_BR]=Tailandês
Name[ro]=Tailandeză
Name[ru]=Тайский
Name[se]=Thaigiella
Name[si]=තායි
Name[sk]=Thajčina
Name[sl]=tajsko
Name[sq]=Tailandeze
Name[sr]=тајландски
Name[sr@ijekavian]=тајландски
Name[sr@ijekavianlatin]=tajlandski
Name[sr@latin]=tajlandski
Name[sv]=Thailändska
Name[ta]=தாய்
Name[te]=థాయి
Name[tg]=Тайландӣ
Name[th]=ภาษาไทย
Name[tr]=Thai
Name[ug]=تايلاندچە
Name[uk]=Тайська
Name[uz]=Taycha
Name[uz@cyrillic]=Тайча
Name[vi]=Thái
Name[wa]=Taylandès
-Name[x-test]=xxThaixx
Name[xh]=Thai
+Name[x-test]=xxThaixx
Name[zh_CN]=泰语
Name[zh_HK]=泰國語
Name[zh_TW]=泰國語
[ti]
Name=Tigrinya
Name[af]=Tigrinya
Name[ar]=تيغرينيا
Name[as]=টিগ্ৰিন্যা
Name[ast]=Tigrinya
Name[be]=Тыгрынья
Name[be@latin]=Tigrinya
Name[bg]=Тигриня
Name[bn]=টিগ্রিন্যা
Name[bn_IN]=টিগ্রিনিয়া
Name[br]=Tigrinya
Name[bs]=Tigrinija
Name[ca]=Tigrinya
Name[ca@valencia]=Tigrinya
Name[cs]=Tigrinya
Name[csb]=Tigrinya
Name[cy]=Tigrinya
Name[da]=Tigrinya
Name[de]=Tigrinja
Name[el]=Tigrinya
Name[en_GB]=Tigrinya
Name[eo]=Tigraja
Name[es]=Tigrinya
Name[et]=Tigrinja
Name[eu]=Tigrinya
Name[fa]=تیگرینیا
Name[fi]=Tigrinja
Name[fr]=Tigrigna
Name[fy]=Tigrysk
Name[ga]=Tigrínis
Name[gl]=Tigrignan
Name[gu]=તીજ્રીન્યા
Name[he]=טיגרינית
Name[hi]=टिग्रिन्या
Name[hne]=टिग्रिन्या
Name[hr]=Tigrinya
Name[hsb]=Tigrinya
Name[hu]=Tigrinja
Name[ia]=Tigrinya
Name[id]=Tigrinya
Name[is]=Tigrinya
Name[it]=Tigrino
Name[ja]=ティグリニア語
Name[kk]=Тигринья
Name[km]=ទីគ្រីនយ៉ា
Name[kn]=ಟಿಗ್ರಿನ್ಯಾ
Name[ko]=티그리냐어
Name[ku]=Tîngrînya
Name[lb]=Tigrinja-Sprooch
Name[lt]=Tigrinya
Name[lv]=Tigrinja
Name[mai]=टिग्रिंया
Name[mk]=Тигринја
Name[ml]=ടൈഗ്രിനിയ
Name[mr]=टिग्रिन्या
Name[ms]=Tigrinya
Name[nb]=Tigrinya
Name[nds]=Tigrinya
Name[ne]=तिग्रिन्य
Name[nl]=Tigrinya
Name[nn]=Tigrinja
Name[oc]=Tigrinya
Name[or]=Tigrinya
Name[pa]=ਤਿਗਰੀਅਨ
Name[pl]=Tigrinya
Name[ps]=ټېګرينيا
Name[pt]=Tigrinya
Name[pt_BR]=Tigrino
Name[ro]=Tigrină
Name[ru]=Тигринья
Name[se]=Tigrinjágiella
Name[si]=ටිග්‍රින්යා
Name[sk]=Tigriňa
Name[sl]=tigrinya
Name[sq]=Tigrinya
Name[sr]=тигрињи
Name[sr@ijekavian]=тигрињи
Name[sr@ijekavianlatin]=tigrinji
Name[sr@latin]=tigrinji
Name[sv]=Tigrinja
Name[ta]=திகிரின்யா
Name[te]=టిగ్రిన్యా
Name[tg]=Тигринягӣ
Name[th]=ภาษาทิกรินยา
Name[tr]=Tigrinya
Name[ug]=تىگرىنياچە
Name[uk]=Тигринійська
Name[uz]=Tigrinya
Name[uz@cyrillic]=Тигриня
-Name[vi]=Ti-gợ-ri-nia
+Name[vi]=Tigrinya
Name[wa]=Tigrinia
-Name[x-test]=xxTigrinyaxx
Name[xh]=Tigrinya
+Name[x-test]=xxTigrinyaxx
Name[zh_CN]=提格里尼亚语
Name[zh_HK]=提格利尼亞語
Name[zh_TW]=提格利尼亞語
[tk]
Name=Turkmen
Name[af]=Turkmen
Name[ar]=تركمانية
Name[as]=টুৰ্কমেন
Name[ast]=Turkmenu
Name[be]=Туркменская
Name[be@latin]=Turkmenskaja
Name[bg]=Туркменски
Name[bn]=তুর্কমেন
Name[bn_IN]=তুর্কমেন
Name[br]=Turkmen
Name[bs]=Turkmenski
Name[ca]=Turcman
Name[ca@valencia]=Turcman
Name[cs]=Turkmenský
Name[csb]=Turkmeńsczi
Name[cy]=Twrcmeneg
Name[da]=Turkmen
Name[de]=Turkmenisch
Name[el]=Τουρκμενικά
Name[en_GB]=Turkmen
Name[eo]=Turkmena
Name[es]=Turkmenio
Name[et]=Turkmeeni
Name[eu]=Turkmeniera
Name[fa]=ترکمنی
Name[fi]=Turkmeeni
Name[fr]=Turkmène
Name[fy]=Turkmeensk
Name[ga]=Tuircméinis
Name[gl]=Turquemeno
Name[gu]=તુર્કમેન
Name[he]=טורקמנית
Name[hi]=तुर्कमेन
Name[hne]=तुर्कमेन
Name[hr]=Turkmenski
Name[hsb]=Turkmensce
Name[hu]=Türkmén
Name[ia]=Turkmeno
Name[id]=Turkmen
Name[is]=Turkmen
Name[it]=Turkmeno
Name[ja]=トルクメン語
Name[kk]=Түркменше
Name[km]=ទួគមេនីស្តង់
Name[kn]=ಟುರ್ಕಮೆನ್
Name[ko]=투르크멘어
Name[ku]=Tirkmenî
Name[lb]=Turkmenesch
Name[lt]=Turkmėnų
Name[lv]=Turkmēņu
Name[mai]=तुर्कमेन
Name[mk]=Туркменистански
Name[ml]=തുര്‍ക്കുമെന്‍
Name[mr]=तुर्कमेन
Name[ms]=Turkmen
Name[nb]=Turkmensk
Name[nds]=Turkmeensch
Name[ne]=टर्कम्यान
Name[nl]=Turkmeens
Name[nn]=Turkmensk
Name[or]=Turkmen
Name[pa]=ਤੁਰਕਮੀਨ
Name[pl]=Turkmeński
Name[ps]=ترکمني
Name[pt]=Turquemeno
Name[pt_BR]=Turcomeno
Name[ro]=Turcmenă
Name[ru]=Туркменский
Name[se]=Turkmenagiella
Name[si]=ටර්ක්මෙන්
Name[sk]=Turkménčina
Name[sl]=turkmensko
Name[sq]=Turkmene
Name[sr]=туркменски
Name[sr@ijekavian]=туркменски
Name[sr@ijekavianlatin]=turkmenski
Name[sr@latin]=turkmenski
Name[sv]=Turkmenska
Name[ta]=துருக்மென்
Name[te]=తుర్క్మెన్
Name[tg]=Туркманӣ
Name[th]=ภาษาเติร์กเมน
Name[tr]=Türkmence
Name[ug]=تۈركمەنچە
Name[uk]=Туркменська
Name[uz]=Turkmancha
Name[uz@cyrillic]=Туркманча
-Name[vi]=Tuổc-men
+Name[vi]=Turkmen
Name[wa]=Turkmene
-Name[x-test]=xxTurkmenxx
Name[xh]=Turkmen
+Name[x-test]=xxTurkmenxx
Name[zh_CN]=土库曼语
Name[zh_HK]=土庫曼語
Name[zh_TW]=土庫曼語
[tn]
Name=Tswana
Name[af]=Tswana
Name[ar]=تسوانا
Name[as]=ছ্বানা
Name[ast]=Tswana
Name[be]=Цвана
Name[be@latin]=Tswana
Name[bg]=Тсуана
Name[bn]=তসওয়ানা
Name[bn_IN]=সোওয়ানা
Name[br]=Tswana
Name[bs]=Cvana
Name[ca]=Tswana
Name[ca@valencia]=Tswana
Name[cs]=Tswana
Name[csb]=Tswana
Name[cy]=Tswana
Name[da]=Tswana
Name[de]=Tswana
Name[el]=Tswana
Name[en_GB]=Tswana
Name[eo]=Cvana
Name[es]=Tswana
Name[et]=Tsvana
Name[eu]=Tswanera
Name[fa]=تی سوانا
Name[fi]=Tswana
Name[fr]=Tswana
Name[fy]=Tswanaansk
Name[ga]=Suáinis
Name[gl]=Tswana
Name[gu]=ત્સવાના
Name[he]=צוואנה
Name[hi]=तस्वाना
Name[hne]=तस्वाना
Name[hr]=Tswana
Name[hsb]=Tswana
Name[hu]=Tszvana
Name[ia]=Tswana
Name[id]=Tswana
Name[is]=Tswana
Name[it]=Tswana
Name[ja]=ツワナ語
Name[kk]=Тсвана
Name[km]=ស្វាណា
Name[kn]=ಟ್ಸ್ವಾನಾ
Name[ko]=츠와나어
Name[ku]=Tswana
Name[lb]=Tswana-Sprooch
Name[lt]=Tswana
Name[lv]=Cvanu
Name[mai]=त्स्वाना
Name[mk]=Цвана
Name[ml]=സ്വാന
Name[mr]=तस्वाना
Name[ms]=Tswana
Name[nb]=Tswana
Name[nds]=Tswana
Name[ne]=स्वाना
Name[nl]=Tswana
Name[nn]=Setswana
Name[oc]=Tswana
Name[or]=Tswana
Name[pa]=ਤਸਵਾਨਾ
Name[pl]=Tswana
Name[ps]=ټسوانا
Name[pt]=Tswana
Name[pt_BR]=Tswana
Name[ro]=Țuană
Name[ru]=Тсвана
Name[se]=Tswanagiella
Name[si]=ට්ස්වානා
Name[sk]=Tswančina
Name[sl]=tswana
Name[sq]=Tswana
Name[sr]=цвана
Name[sr@ijekavian]=цвана
Name[sr@ijekavianlatin]=cvana
Name[sr@latin]=cvana
Name[sv]=Tswana
Name[ta]=ஸ்வானா
Name[te]=స్వానా
Name[tg]=Сванавӣ
Name[th]=ภาษาสวานา
Name[tr]=Tswana
Name[ug]=تىسۋاناچە
Name[uk]=Тсвана
Name[uz]=Tsvana
Name[uz@cyrillic]=Тсвана
-Name[vi]=T-xouă-nă
+Name[vi]=Tswana
Name[wa]=Tswana
-Name[x-test]=xxTswanaxx
Name[xh]=Isitswana
+Name[x-test]=xxTswanaxx
Name[zh_CN]=茨瓦纳语
Name[zh_HK]=班圖語
Name[zh_TW]=班圖語
[to]
Name=Tonga
Name[af]=Tonga
Name[ar]=تونغا
Name[as]=টঙ্গা
Name[ast]=Tonga
Name[be]=Тонга
Name[be@latin]=Tonga
Name[bg]=Тонга
Name[bn]=টংগা
Name[bn_IN]=টোঙ্গা
Name[br]=Inizi Tonga
Name[bs]=Tonga
Name[ca]=Tonga
Name[ca@valencia]=Tonga
Name[cs]=Tonga
Name[csb]=Tonga
Name[cy]=Tonga
Name[da]=Tonga
Name[de]=Tonga
Name[el]=Τόνγκα
Name[en_GB]=Tonga
Name[eo]=Tonga
Name[es]=Tonga
Name[et]=Tonga
Name[eu]=Tongera
Name[fa]=تونگا
Name[fi]=Tonga
Name[fr]=Tonga
Name[fy]=Tongaansk
Name[ga]=Tongais
Name[gl]=Tonga
Name[gu]=ટોન્ગા
Name[he]=טונגה
Name[hi]=टोन्गा
Name[hne]=टोन्गा
Name[hr]=Tonga
Name[hsb]=Tonga
Name[hu]=Tonga
Name[ia]=Tonga
Name[id]=Tonga
Name[is]=Tonga
Name[it]=Tonga
Name[ja]=トンガ語
Name[kk]=Тонга
Name[km]=តុងហ្គា
Name[kn]=ಟೊಂಗಾ
Name[ko]=통가어
Name[ku]=Tonga
Name[lb]=Tonga
Name[lt]=Tonga
Name[lv]=Tongiešu
Name[mai]=टोन्गा
Name[mk]=Тонга
Name[ml]=ട്വോങ്ങ
Name[mr]=टोन्गा
Name[ms]=Tonga
Name[nb]=Tonga
Name[nds]=Tonga
Name[ne]=टोङ्गा
Name[nl]=Tonga
Name[nn]=Tongansk
Name[oc]=Tònga
Name[or]=Tonga
Name[pa]=ਤੋਂਗਾ
Name[pl]=Tonga
Name[ps]=ټونګا
Name[pt]=Tonga
Name[pt_BR]=Tonganês
Name[ro]=Tongă
Name[ru]=Тонганский
Name[se]=Tongagiella
Name[si]=ටොන්ගා
Name[sk]=Tongčina
Name[sl]=tongaško
Name[sq]=Tonga
Name[sr]=тонга
Name[sr@ijekavian]=тонга
Name[sr@ijekavianlatin]=tonga
Name[sr@latin]=tonga
Name[sv]=Tonga
Name[ta]=டோங்கா
Name[te]=టొన్గా
Name[tg]=Тонгавӣ
Name[th]=ภาษาทองกา
Name[tr]=Tonga
Name[ug]=تونگا
Name[uk]=Тонга
Name[uz]=Tonga
Name[uz@cyrillic]=Тонга
-Name[vi]=Tông-ga
+Name[vi]=Tonga
Name[wa]=Tonga
-Name[x-test]=xxTongaxx
Name[xh]=Tonga
+Name[x-test]=xxTongaxx
Name[zh_CN]=汤加语
Name[zh_HK]=東加語
Name[zh_TW]=東加語
[tr]
Name=Turkish
Name[af]=Turks
Name[ar]=تركية
Name[as]=টুৰ্কিশ্ব
Name[ast]=Turcu
Name[be]=Турэцкая
Name[be@latin]=Tureckaja
Name[bg]=Турски
Name[bn]=তুর্কী
Name[bn_IN]=তুর্কি
Name[br]=Turkeg
Name[bs]=Turski
Name[ca]=Turc
Name[ca@valencia]=Turc
Name[cs]=Turecký
Name[csb]=Tërecczi
Name[cy]=Twrceg
Name[da]=Tyrkisk
Name[de]=Türkisch
Name[el]=Τουρκικά
Name[en_GB]=Turkish
Name[eo]=Turka
Name[es]=Turco
Name[et]=Türgi
Name[eu]=Turkiera
Name[fa]=ترکی
Name[fi]=Turkki
Name[fr]=Turc
Name[fy]=Turks
Name[ga]=Tuircis
Name[gl]=Turco
Name[gu]=તુર્કી
Name[he]=טורקית
Name[hi]=तुर्की
Name[hne]=तुर्की
Name[hr]=Turski
Name[hsb]=Turkowsce
Name[hu]=Török
Name[hy]=Թուրքերեն
Name[ia]=Turco
Name[id]=Turki
Name[is]=Tyrkneska
Name[it]=Turco
Name[ja]=トルコ語
Name[kk]=Түрікше
Name[km]=ទួរគី
Name[kn]=ತುರ್ಕಿಶ್
Name[ko]=터키어
Name[ku]=Tirkî
Name[lb]=Türkesch
Name[lt]=Turkų
Name[lv]=Turku
Name[mai]=तुर्की
Name[mk]=Турски
Name[ml]=തുര്‍ക്കി
Name[mr]=तुर्किश
Name[ms]=Turki
Name[nb]=Tyrkisk
Name[nds]=Törksch
Name[ne]=टर्किश
Name[nl]=Turks
Name[nn]=Tyrkisk
Name[oc]=Turc
Name[or]=Turkish
Name[pa]=ਤੁਰਕਿਸ਼
Name[pl]=Turecki
Name[ps]=ترکي
Name[pt]=Turco
Name[pt_BR]=Turco
Name[ro]=Turcă
Name[ru]=Турецкий
Name[se]=Turkiijagiella
Name[si]=තුර්කි
Name[sk]=Turečtina
Name[sl]=turško
Name[sq]=Turke
Name[sr]=турски
Name[sr@ijekavian]=турски
Name[sr@ijekavianlatin]=turski
Name[sr@latin]=turski
Name[sv]=Turkiska
Name[ta]=துருக்கிய
Name[te]=టర్కిష్
Name[tg]=Туркӣ
Name[th]=ภาษาตุรกี
Name[tr]=Türkçe
Name[ug]=تۈركچە
Name[uk]=Турецька
Name[uz]=Turkcha
Name[uz@cyrillic]=Туркча
-Name[vi]=Thổ-nhĩ-kỳ
+Name[vi]=Thổ Nhĩ Kỳ
Name[wa]=Turk
-Name[x-test]=xxTurkishxx
Name[xh]=Turkish
+Name[x-test]=xxTurkishxx
Name[zh_CN]=土耳其语
Name[zh_HK]=土耳其語
Name[zh_TW]=土耳其語
[ts]
Name=Tsonga
Name[af]=Tsonga
Name[ar]=تسونغا
Name[as]=ছ'ঙ্গা
Name[ast]=Tsonga
Name[be]=Цонга
Name[be@latin]=Tsonga
Name[bg]=Тсонга
Name[bn]=তসংগা
Name[bn_IN]=সোঙ্গা
Name[br]=Tsonga
Name[bs]=Conga
Name[ca]=Tsonga
Name[ca@valencia]=Tsonga
Name[cs]=Tsonga
Name[csb]=Tsonga
Name[cy]=Tsonga
Name[da]=Tsonga
Name[de]=Tsonga
Name[el]=Tsonga
Name[en_GB]=Tsonga
Name[eo]=Conga
Name[es]=Tsonga
Name[et]=Tsonga
Name[eu]=Tsongera
Name[fa]=تی سوانگا
Name[fi]=Tsonga
Name[fr]=Tsonga
Name[fy]=Tsongaansk
Name[ga]=Songais
Name[gl]=Tsonga
Name[gu]=સોંગા
Name[he]=צונגה
Name[hi]=त्सोन्गा
Name[hne]=त्सोन्गा
Name[hr]=Tsonga
Name[hsb]=Tsonga
Name[hu]=Tsonga
Name[ia]=Tsonga
Name[id]=Tsonga
Name[is]=Tsonga
Name[it]=Tsonga
Name[ja]=ツォンガ語
Name[kk]=Тсонга
Name[km]=សុងហ្កា
Name[kn]=ಟ್ಸೋಂಗಾ
Name[ko]=총가어
Name[ku]=Tsonga
Name[lb]=Tsonga-Sprooch
Name[lt]=Tsonga
Name[lv]=Congu
Name[mai]=त्सोंगा
Name[mk]=Цонга
Name[ml]=സോങ്ങ
Name[mr]=त्सोन्गा
Name[ms]=Tsonga
Name[nb]=Tsonga
Name[nds]=Tsonga
Name[ne]=सोङ्गा
Name[nl]=Tsonga
Name[nn]=Tsonga
Name[oc]=Tsonga
Name[or]=Tsonga
Name[pa]=ਤਸੋਂਗਾ
Name[pl]=Tsonga
Name[ps]=ټسونګا
Name[pt]=Tsonga
Name[pt_BR]=Tsonga
Name[ro]=Tsongă
Name[ru]=Тсонга
Name[se]=Tsongagiella
Name[si]=ට්සොන්ගා
Name[sk]=Tsongčina
Name[sl]=tsonga
Name[sq]=Tsonga
Name[sr]=цонга
Name[sr@ijekavian]=цонга
Name[sr@ijekavianlatin]=conga
Name[sr@latin]=conga
Name[sv]=Tsonga
Name[ta]=டிசோங்கா
Name[te]=సొంగా
Name[tg]=Сонгавӣ
Name[th]=ภาษาซองกา
Name[tr]=Tsonga
Name[ug]=سونگاچە
Name[uk]=Цонґа
Name[uz]=Songa
Name[uz@cyrillic]=Цонга
-Name[vi]=T-xông-ga
+Name[vi]=Tsonga
Name[wa]=Tsonga
-Name[x-test]=xxTsongaxx
Name[xh]=Tsonga
+Name[x-test]=xxTsongaxx
Name[zh_CN]=聪加语
Name[zh_HK]=Tsonga語
Name[zh_TW]=Tsonga語
[tt]
Name=Tatar
Name[af]=Tatar
Name[ar]=تاترية
Name[as]=টাটাৰ
Name[ast]=Tatar
Name[be]=Татарская
Name[be@latin]=Tatarskaja
Name[bg]=Татарски
Name[bn]=তাতার
Name[bn_IN]=তাতার
Name[br]=Tatareg
Name[bs]=Tatarski
Name[ca]=Tàtar
Name[ca@valencia]=Tàtar
Name[cs]=Tatarský
Name[csb]=Tatarsczi
Name[cy]=Tatar
Name[da]=Tatar
Name[de]=Tatarisch
Name[el]=Tatar
Name[en_GB]=Tatar
Name[eo]=Tatara
Name[es]=Tatar
Name[et]=Tatari
Name[eu]=Tatariera
Name[fa]=تاتاری
Name[fi]=Tataari
Name[fr]=Tatar
Name[fy]=Tataarsk
Name[ga]=Tatairis
Name[gl]=Tártaro
Name[gu]=તાતાર
Name[he]=טאטרית
Name[hi]=तातार
Name[hne]=तातार
Name[hr]=Tatarski
Name[hsb]=Tatarsce
Name[hu]=Tatár
Name[ia]=Tataro
Name[id]=Tatar
Name[is]=Tatar
Name[it]=Tataro
Name[ja]=タタール語
Name[kk]=Татарша
Name[km]=តាតារ
Name[kn]=ಟಟಾರ್
Name[ko]=타타르어
Name[ku]=Tatarî
Name[lb]=Tataresch
Name[lt]=Totorių
Name[lv]=Tatāru
Name[mai]=ततार
Name[mk]=Татарски
Name[ml]=തത്തര്‍
Name[mr]=तातार
Name[ms]=Tatar
Name[nb]=Tatar
Name[nds]=Tartaarsch
Name[ne]=टाटर
Name[nl]=Tatar
Name[nn]=Tatarisk
Name[oc]=Tatar
Name[or]=Tatar
Name[pa]=ਤਾਟਾਰ
Name[pl]=Tatarski
Name[ps]=ټاټار
Name[pt]=Tatar
Name[pt_BR]=Tártaro
Name[ro]=Tătară
Name[ru]=Татарский
Name[se]=Tatáragiella
Name[si]=ටටාර්
Name[sk]=Tatárčina
Name[sl]=tatarsko
Name[sq]=Tatare
Name[sr]=татарски
Name[sr@ijekavian]=татарски
Name[sr@ijekavianlatin]=tatarski
Name[sr@latin]=tatarski
Name[sv]=Tatariska
Name[ta]=டாடார்
Name[te]=తతర్
Name[tg]=Тоторӣ
Name[th]=ภาษาทาทาร์
Name[tr]=Tatar
Name[ug]=تاتارچە
Name[uk]=Татарська
Name[uz]=Totarcha
Name[uz@cyrillic]=Тотарча
-Name[vi]=Ta-tă
+Name[vi]=Tatar
Name[wa]=Tatår
-Name[x-test]=xxTatarxx
Name[xh]=Tatar
+Name[x-test]=xxTatarxx
Name[zh_CN]=鞑靼语
Name[zh_HK]=韃靼語
Name[zh_TW]=韃靼語
[tw]
Name=Twi
Name[af]=Twi
Name[ar]=توي
Name[as]=ট্বি
Name[ast]=Twi
Name[be]=Тві
Name[be@latin]=Twi
Name[bg]=Тви
Name[bn]=টুয়ি
Name[bn_IN]=টুই
Name[br]=Twi
Name[bs]=Tvi
Name[ca]=Twi
Name[ca@valencia]=Twi
Name[cs]=Twi
Name[csb]=Twi
Name[cy]=Twi
Name[da]=Twi
Name[de]=Twi
Name[el]=Twi
Name[en_GB]=Twi
Name[eo]=Tvia
Name[es]=Twi
Name[et]=Tvii
Name[eu]=Twi
Name[fa]=توی
Name[fi]=Twi
Name[fr]=Twi
Name[fy]=Twi
Name[ga]=Tiuíais
Name[gl]=Twi
Name[gu]=ત્વી
Name[he]=צ'ווי
Name[hi]=त्वी
Name[hne]=त्वी
Name[hr]=Twi
Name[hsb]=Twi
Name[hu]=Tvi
Name[ia]=Twi
Name[id]=Twi
Name[is]=Twi
Name[it]=Twi
Name[ja]=チュイ語
Name[kk]=Тви
Name[km]=ទ្វី
Name[kn]=ಟ್ವಿ
Name[ko]=트위어
Name[ku]=Twî
Name[lb]=Akan-Sprooch
Name[lt]=Twi
Name[lv]=Tvī
Name[mai]=त्वी
Name[mk]=Тви
Name[ml]=ട്വി
Name[mr]=त्वी
Name[ms]=Twi
Name[nb]=Twi
Name[nds]=Twi
Name[ne]=तुइ
Name[nl]=Twi
Name[nn]=Twi
Name[or]=Twi
Name[pa]=ਤਵੀ
Name[pl]=Twi
Name[ps]=ټوي
Name[pt]=Twi
Name[pt_BR]=Twi
Name[ro]=Twi
Name[ru]=Тви
Name[se]=Twigiella
Name[si]=ටිවි
Name[sk]=Twi
Name[sl]=twi
Name[sq]=Twi
Name[sr]=тви
Name[sr@ijekavian]=тви
Name[sr@ijekavianlatin]=tvi
Name[sr@latin]=tvi
Name[sv]=Twi
Name[ta]=த்வீ
Name[te]=ట్వి
Name[tg]=Твиягӣ
Name[th]=ภาษาทรี
Name[tr]=Twi
Name[ug]=تۋىچە
Name[uk]=Тві
Name[uz]=Tvi
Name[uz@cyrillic]=Тви
-Name[vi]=Tui
+Name[vi]=Twi
Name[wa]=Twi
-Name[x-test]=xxTwixx
Name[xh]=Twi
+Name[x-test]=xxTwixx
Name[zh_CN]=特威语
Name[zh_HK]=契維語
Name[zh_TW]=契維語
[ty]
Name=Tahitian
Name[af]=Tahitian
Name[ar]=تاهيتية
Name[as]=টাহিটিয়ান
Name[ast]=Tahitianu
Name[be]=Таіцкая
Name[be@latin]=Tahickaja
Name[bg]=Таитски
Name[bn]=তাহিশিয়ান
Name[bn_IN]=তাহিশিয়ান
Name[br]=Tahitieg
Name[bs]=Tahićanski
Name[ca]=Tahitià
Name[ca@valencia]=Tahitià
Name[cs]=Tahitský
Name[csb]=Tahitańsczi
Name[cy]=Tahitieg
Name[da]=Tahitisk
Name[de]=Tahitianisch
Name[el]=Tahitian
Name[en_GB]=Tahitian
Name[eo]=Tahitia
Name[es]=Tahitiano
Name[et]=Tahiti
Name[eu]=Tahitiera
Name[fa]=تاهیتی
Name[fi]=Tahiti
Name[fr]=Tahitien
Name[fy]=Tahitiaansk
Name[ga]=Taihítis
Name[gl]=Tahitiano
Name[gu]=તાહિટિયન
Name[he]=טהיטית
Name[hi]=ताहितियन
Name[hne]=ताहितियन
Name[hr]=Tahićanski
Name[hsb]=Tahitisce
Name[hu]=Tahiti
Name[ia]=Tahitiano
Name[id]=Tahiti
Name[is]=Tahitian
Name[it]=Tahitiano
Name[ja]=タヒチ語
Name[kk]=Таитише
Name[km]=តាហ៊ិតង់
Name[kn]=ತಹೀಟಿಯನ್
Name[ko]=타히티어
Name[ku]=Tahîtî
Name[lb]=Tahitesch
Name[lt]=Tahiti
Name[lv]=Taitiešu
Name[mai]=ताहितियन
Name[mk]=Тахитски
Name[ml]=താഹിതിയന്‍
Name[mr]=ताहितियन
Name[ms]=Tahiti
Name[nb]=Tahitisk
Name[nds]=Tahiitsch
Name[ne]=ताहितियन
Name[nl]=Tahitiaans
Name[nn]=Tahitisk
Name[oc]=Taician
Name[or]=Tahitian
Name[pa]=ਤਾਹੀਟੀਅਨ
Name[pl]=Tahitański
Name[pt]=Tahitiano
Name[pt_BR]=Taitiano
Name[ro]=Tahitiană
Name[ru]=Таитянский
Name[se]=Tahitigiella
Name[si]=තහිටියානු
Name[sk]=Tahitčina
Name[sl]=tahitijsko
Name[sq]=Tahitiane
Name[sr]=тахићански
Name[sr@ijekavian]=тахићански
Name[sr@ijekavianlatin]=tahićanski
Name[sr@latin]=tahićanski
Name[sv]=Tahitiska
Name[ta]=தஹிடியன்
Name[te]=టహితియన్
Name[tg]=Таитиягӣ
Name[th]=ภาษาตาฮิติ
Name[tr]=Tahitian
Name[ug]=تاخىتىيانچە
Name[uk]=Таїтянська
Name[uz]=Taxitian
Name[uz@cyrillic]=Тахитиан
-Name[vi]=Ta-hi-ti
+Name[vi]=Tahitia
Name[wa]=Tahityin
-Name[x-test]=xxTahitianxx
Name[xh]=Tahitian
+Name[x-test]=xxTahitianxx
Name[zh_CN]=塔希提语
Name[zh_HK]=大溪地語
Name[zh_TW]=大溪地語
[ug]
Name=Uyghur
Name[bg]=Уйгурски
Name[bs]=Uyghur
Name[ca]=Uigur
Name[ca@valencia]=Uigur
Name[cs]=Ujgurský
Name[da]=Uyghur
Name[de]=Uigurisch
Name[el]=Uyghur
Name[en_GB]=Uyghur
Name[es]=Uigur
Name[et]=Uiguuri
Name[eu]=Uigurrera
+Name[fa]=یوگر
Name[fi]=Uiguuri
Name[fr]=Ouïghour
Name[gl]=Uigur
Name[hr]=Ujgurski
Name[hu]=Ujgur
Name[ia]=Uighuro
Name[is]=Uyghur
Name[it]=Uiguro
Name[ja]=ウイグル語
Name[kk]=Ұйғырша
Name[km]=អ៊ុយ​ហ្គៀរ
Name[ko]=위구르어
Name[lt]=Uigurų
Name[lv]=Uiguru
Name[ms]=Uighur
Name[nb]=Uigursk
Name[nds]=Uighuursch
Name[nl]=Oeigoers
Name[pa]=ਉਘੂਰ
Name[pl]=Ujgurski
Name[pt]=Uyghur
Name[pt_BR]=Uigur
Name[ro]=Uigură
Name[ru]=Уйгурский
Name[se]=Uiguragiella
Name[si]=උයිගුර්
Name[sk]=Ujgurčina
Name[sr]=ујгурски
Name[sr@ijekavian]=ујгурски
Name[sr@ijekavianlatin]=ujgurski
Name[sr@latin]=ujgurski
Name[sv]=Uiguriska
Name[th]=ภาษาอุยกูร์
Name[tr]=Uygurca
Name[ug]=ئۇيغۇرچە
Name[uk]=Уйгурська
+Name[vi]=Uyghur
Name[wa]=Ouygour
Name[x-test]=xxUyghurxx
Name[zh_CN]=维吾尔语
Name[zh_TW]=Uyghur
[uk]
Name=Ukrainian
Name[af]=Ukraïnies
Name[ar]=أوكرانية
Name[as]=ইউক্ৰেনিয়ান
Name[ast]=Ucranianu
Name[be]=Украінская
Name[be@latin]=Ukrainskaja
Name[bg]=Украински
Name[bn]=ইউক্রেনীয়
Name[bn_IN]=ইউক্রেনিয়ান
Name[br]=Ukrainiek
Name[bs]=Ukrajinski
Name[ca]=Ucraïnès
Name[ca@valencia]=Ucraïnés
Name[cs]=Ukrajinský
Name[csb]=Ùkrajińsczi
Name[cy]=Ukraineg
Name[da]=Ukrainsk
Name[de]=Ukrainisch
Name[el]=Ουκρανικά
Name[en_GB]=Ukrainian
Name[eo]=Ukraina
Name[es]=Ucraniano
Name[et]=Ukraina
Name[eu]=Ukrainiera
Name[fa]=اکراینی
Name[fi]=Ukraina
Name[fr]=Ukrainien
Name[fy]=Oekraïnsk
Name[ga]=Úcráinis
Name[gl]=Ucraíno
Name[gu]=યુક્રેનિયન
Name[he]=אוקראינית
Name[hi]=उक्रेनियाई
Name[hne]=उक्रेनियाई
Name[hr]=Ukrajinski
Name[hsb]=Ukrainsce
Name[hu]=Ukrán
Name[ia]=Ucrainiano
Name[id]=Ukrainia
Name[is]=Úkraínska
Name[it]=Ucraino
Name[ja]=ウクライナ語
Name[kk]=Украинша
Name[km]=អ៊ុយក្រែន
Name[kn]=ಯುಕ್ರೇನಿಯನ್
Name[ko]=우크라이나어
Name[ku]=Ûkraynayî
Name[lb]=Ukrainesch
Name[lt]=Ukrainiečių
Name[lv]=Ukraiņu
Name[mai]=युक्रेनियन
Name[mk]=Украински
Name[ml]=ഉക്രേനിയന്‍
Name[mr]=यूक्रेनियन
Name[ms]=Ukrainia
Name[nb]=Ukrainsk
Name[nds]=Ukrainsch
Name[ne]=युक्रेनी
Name[nl]=Oekraïns
Name[nn]=Ukrainsk
Name[oc]=Ucraïnian
Name[or]=Ukrainian
Name[pa]=ਯੂਕਰੇਨ
Name[pl]=Ukraiński
Name[ps]=اکرېني
Name[pt]=Ucraniano
Name[pt_BR]=Ucraniano
Name[ro]=Ucrainiană
Name[ru]=Украинский
Name[se]=Ukrainagiella
Name[si]=යුක්රේනියානු
Name[sk]=Ukrajinčina
Name[sl]=ukrajinsko
Name[sq]=Ukrainase
Name[sr]=украјински
Name[sr@ijekavian]=украјински
Name[sr@ijekavianlatin]=ukrajinski
Name[sr@latin]=ukrajinski
Name[sv]=Ukrainska
Name[ta]=உக்ரேனியன்
Name[te]=ఉక్రేనియన్
Name[tg]=Украинӣ
Name[th]=ภาษายูเครน
Name[tr]=Ukrayna Dili
Name[ug]=ئۇكرائىنچە
Name[uk]=Українська
Name[uz]=Ukraincha
Name[uz@cyrillic]=Украинча
-Name[vi]=U-cợ-rainh
+Name[vi]=Ukraine
Name[wa]=Oucrinnyin
-Name[x-test]=xxUkrainianxx
Name[xh]=Ukranian
+Name[x-test]=xxUkrainianxx
Name[zh_CN]=乌克兰语
Name[zh_HK]=烏克蘭語
Name[zh_TW]=烏克蘭語
[ur]
Name=Urdu
Name[af]=Urdu
Name[ar]=أردو
Name[as]=উৰ্দু
Name[ast]=Urdu
Name[be]=Урду
Name[be@latin]=Urdu
Name[bg]=Урду
Name[bn]=উর্দু
Name[bn_IN]=উর্দু
Name[br]=Urdu
Name[bs]=Urdu
Name[ca]=Urdú
Name[ca@valencia]=Urdú
Name[cs]=Urdu
Name[csb]=Urdu
Name[cy]=Wrdw
Name[da]=Urdu
Name[de]=Urdu
Name[el]=Urdu
Name[en_GB]=Urdu
Name[eo]=Urdua
Name[es]=Urdu
Name[et]=Urdu
Name[eu]=Urdu
Name[fa]=اردو
Name[fi]=Urdu
Name[fr]=Urdu
Name[fy]=Urdû
Name[ga]=Urdais
Name[gl]=Urdú
Name[gu]=ઉર્દુ
Name[he]=אורדו
Name[hi]=उर्दू
Name[hne]=उर्दू
Name[hr]=Urdu
Name[hsb]=Urdu
Name[hu]=Urdu
Name[ia]=Hurdu
Name[id]=Urdu
Name[is]=Urdu
Name[it]=Urdu
Name[ja]=ウルドゥー語
Name[kk]=Урду
Name[km]=អ៊ូរ្ឌូ
Name[kn]=ಉರ್ದು
Name[ko]=우르두어
Name[ku]=Ûrdû
Name[lb]=Urdu
Name[lt]=Urdu
Name[lv]=Urdu
Name[mai]=उर्दू
Name[mk]=Урду
Name[ml]=ഉര്‍ദ്ദു
Name[mr]=उर्दू
Name[ms]=Urdu
Name[nb]=Urdu
Name[nds]=Urdu
Name[ne]=उर्दु
Name[nl]=Urdu
Name[nn]=Urdu
Name[oc]=Ordo
Name[or]=Urdu
Name[pa]=ਉਰਦੂ
Name[pl]=Urdu
Name[ps]=اردو
Name[pt]=Urdu
Name[pt_BR]=Urdu
Name[ro]=Urdu
Name[ru]=Урду
Name[se]=Urdugiella
Name[si]=උර්දු
Name[sk]=Urdčina
Name[sl]=urdu
Name[sq]=Urdu
Name[sr]=урду
Name[sr@ijekavian]=урду
Name[sr@ijekavianlatin]=urdu
Name[sr@latin]=urdu
Name[sv]=Urdu
Name[ta]=உருது
Name[te]=ఉర్దు
Name[tg]=Урду
Name[th]=ภาษาอูร์ดู
Name[tr]=Urdu
Name[ug]=ئوردۇچە
Name[uk]=Урду
Name[uz]=Urdu
Name[uz@cyrillic]=Урду
-Name[vi]=Uổ-đu
+Name[vi]=Urdu
Name[wa]=Ourdou
-Name[x-test]=xxUrduxx
Name[xh]=Urdu
+Name[x-test]=xxUrduxx
Name[zh_CN]=乌尔都语
Name[zh_HK]=烏都語
Name[zh_TW]=烏都語
[uz]
Name=Uzbek
Name[af]=Uzbek
Name[ar]=الأوزبكية
Name[as]=উজ্‌বেক
Name[ast]=Uzbecu
Name[be]=Узбецкая
Name[be@latin]=Uzbeckaja
Name[bg]=Узбекски
Name[bn]=উজবেক
Name[bn_IN]=উজবেক
Name[br]=Ouzbeg
Name[bs]=Uzbečki
Name[ca]=Usbec
Name[ca@valencia]=Usbec
Name[cs]=Uzbecký
Name[csb]=Ùzbecczi
Name[cy]=Wzbec
Name[da]=Uzbek
Name[de]=Usbekisch
Name[el]=Ουζμπεκικά
Name[en_GB]=Uzbek
Name[eo]=Uzbeka
Name[es]=Uzbeko
Name[et]=Usbeki
Name[eu]=Uzbekera
Name[fa]=ازبکی
Name[fi]=Uzbekki
Name[fr]=Ouzbek
Name[fy]=Oezbeeksk
Name[ga]=Úisbéicis
Name[gl]=Usbeco
Name[gu]=ઉઝબેક
Name[he]=אוזבקית
Name[hi]=उज्बेक
Name[hne]=उज्बेक
Name[hr]=Uzbečki
Name[hsb]=Uzbekisce
Name[hu]=Üzbég
Name[ia]=Uzbeko
Name[id]=Uzbek
Name[is]=Úsbekíska
Name[it]=Usbeco
Name[ja]=ウズベク語
Name[kk]=Өзбекше
Name[km]=អ៊ូហ្សបេគីស្តង់
Name[kn]=ಉಝ್ಬೆಕ್
Name[ko]=우즈베크어
Name[ku]=Ozbekî
Name[lb]=Usbekesch
Name[lt]=Uzbekų
Name[lv]=Uzbeku
Name[mai]=उज्बेक
Name[mk]=Узбекистански
Name[ml]=ഉസ്ബെക്
Name[mr]=उज्बेक
Name[ms]=Uzbek
Name[nb]=Usbekisk
Name[nds]=Usbeeksch
Name[ne]=उज्बेक
Name[nl]=Oezbeeks
Name[nn]=Usbekisk
Name[oc]=Ozbèc
Name[or]=Uzbek
Name[pa]=ਊਜੇਬਕ
Name[pl]=Uzbecki
Name[ps]=ازبکي
Name[pt]=Usbequistanês
Name[pt_BR]=Uzbeque
Name[ro]=Uzbecă
Name[ru]=Узбекский
Name[se]=Uzbehkagiella
Name[si]=උස්බෙක්
Name[sk]=Uzbečtina
Name[sl]=uzbeško
Name[sq]=Uzbeke
Name[sr]=узбечки
Name[sr@ijekavian]=узбечки
Name[sr@ijekavianlatin]=uzbečki
Name[sr@latin]=uzbečki
Name[sv]=Uzbekiska
Name[ta]=உஸ்பெக்
Name[te]=ఉజ్బెక్
Name[tg]=Ӯзбакӣ
Name[th]=ภาษาอุซเบกิสถาน
Name[tr]=Özbek
Name[ug]=ئۆزبېكچە
Name[uk]=Узбецька
Name[uz]=Oʻzbekcha
Name[uz@cyrillic]=Ўзбекча
-Name[vi]=U-x-béc
+Name[vi]=Uzbek
Name[wa]=Ouzbeke
-Name[x-test]=xxUzbekxx
Name[xh]=Uzbek
+Name[x-test]=xxUzbekxx
Name[zh_CN]=乌兹别克语
Name[zh_HK]=烏茲別克語
Name[zh_TW]=烏茲別克語
[uz@cyrillic]
Name=Uzbek (Cyrillic)
Name[ar]=الأوزبكية (سريالية)
Name[as]=উজ্‌বেক (ছিৰিলিক)
Name[ast]=Uzbecu (Cirílicu)
Name[be@latin]=Uzbeckaja kirylica
Name[bg]=Узбекски (кирилица)
Name[bn]=উজবেক (কিরিলিক)
Name[bn_IN]=উজবেক (সিরিলিক)
Name[bs]=Uzbečki (ćirilica)
Name[ca]=Usbec (ciríl·lic)
Name[ca@valencia]=Usbec (ciríl·lic)
Name[cs]=Uzbecký (azbuka)
Name[csb]=Ùzbecczi (cërëlica)
Name[da]=Uzbek (Kyrillisk)
Name[de]=Usbekisch (Kyrillisch)
Name[el]=Ουζμπεκικά (Κυριλλικά)
Name[en_GB]=Uzbek (Cyrillic)
Name[eo]=Uzbeka (Cirila)
Name[es]=Uzbeko (Cirílico)
Name[et]=Usbeki (kirillitsa)
Name[eu]=Uzbekera (Zirilikoa)
Name[fi]=Uzbekki (kyrillinen)
Name[fr]=Ouzbek (Cyrillique)
Name[fy]=Uzbeesk (Cyrillysk)
Name[ga]=Úisbéicis (Coireallach)
Name[gl]=Usbeco (cirílico)
Name[gu]=ઉઝબેક (સિરીલિક)
Name[he]=אוזבקית (קירילית)
Name[hi]=उज़बैक (सिरिलिक)
Name[hne]=उजबैक (सिरिलिक)
Name[hr]=Uzbečki (ćirilica)
Name[hsb]=Uzbekisce (z kyriliskim pismom)
Name[hu]=Üzbég (cirill)
Name[ia]=Uzbeko (Cirillico)
Name[id]=Uzbek (Cyrillic)
Name[is]=Úsbekíska (Kyrilísk)
Name[it]=Usbeco (cirillico)
Name[ja]=ウズベク語 (キリル文字)
Name[kk]=Өзбекше (Кирилл жазуы)
Name[km]=អ៊ូហ្សបេគីស្តង់ (ស៊ីលីរីក)
Name[kn]=ಉಝ್ಬೆಕ್ (ಸಿರಿಲಿಕ್)
Name[ko]=우즈베크어 (키릴 문자)
Name[ku]=Ozbekî (Kîrîl)
Name[lt]=Uzbekų (Kirilica)
Name[lv]=Uzbeku (Kirilica)
Name[mai]=उस्बेक (सिरिलिक)
Name[mk]=Узбекистански (кириличен)
Name[ml]=ഉസ്ബെക്ക് (സിറിലിക്ക്)
Name[mr]=उज्बेक (सिरीलिक)
Name[ms]=Uzbek (Cyrillic)
Name[nb]=Usbekisk (Kyrillisk)
Name[nds]=Usbeeksch (kyrillsch)
Name[nl]=Oezbeeks (Cyrilisch)
Name[nn]=Usbekisk (kyrillisk)
Name[oc]=Ozbèc (cirillic)
Name[or]=Uzbek (Cyrillic)
Name[pa]=ਯੂਜ਼ਬਿਕ (ਸਿਰਲਿਕ)
Name[pl]=Uzbecki (cyrlica)
Name[ps]=ازبکي (سېرېلېک)
Name[pt]=Uzbeque (Cirílico)
Name[pt_BR]=Uzbeque (Cirílico)
Name[ro]=Uzbekă (Chirilic)
Name[ru]=Узбекский (кириллица)
Name[se]=Usbekalaš (Kyrillalaš)
Name[si]=උස්බෙක් (සිරිලික්)
Name[sk]=Uzbečtina (cyrilika)
Name[sl]=Uzbeško (cirilica)
Name[sq]=Uzbeke (Cirilike)
Name[sr]=узбечки (ћирилица)
Name[sr@ijekavian]=узбечки (ћирилица)
Name[sr@ijekavianlatin]=uzbečki (ćirilica)
Name[sr@latin]=uzbečki (ćirilica)
Name[sv]=Kyrillisk Uzbekiska
Name[ta]=உஸ்பெக் (சைரிலிக்)
Name[tg]=Ӯзбакӣ (Кирилликӣ)
Name[th]=ภาษาอุซเบกิสถาน (ไซริลลิค)
Name[tr]=Özbekçe (Kiril)
Name[ug]=ئۆزبېكچە(سلاۋيان)
Name[uk]=Узбецька (Кирилиця)
+Name[vi]=Uzbek (Cyrillic)
Name[wa]=Ouzbeke (cirilike)
Name[x-test]=xxUzbek (Cyrillic)xx
Name[zh_CN]=乌兹别克语(西里尔语系)
Name[zh_TW]=烏茲別克(斯拉夫)
[ven]
Name=Venda
Name[af]=Venda
Name[ar]=فندا
Name[as]=ভেন্ডা
Name[ast]=Venda
Name[be]=Венда
Name[be@latin]=Venda
Name[bg]=Венда
Name[bn]=ভেণ্ডা
Name[bn_IN]=ভেন্ডা
Name[br]=Venda
Name[bs]=Venda
Name[ca]=Venda
Name[ca@valencia]=Venda
Name[cs]=Venda
Name[csb]=Venda
Name[cy]=Venda
Name[da]=Venda
Name[de]=Tshivenda
Name[el]=Venda
Name[en_GB]=Venda
Name[eo]=Vendaa
Name[es]=Venda
Name[et]=Venda
Name[eu]=Venda
Name[fa]=وندا
Name[fi]=Venda
Name[fr]=Venda
Name[fy]=Venda
Name[ga]=Veindis
Name[gl]=Venda
Name[gu]=વેન્ડા
Name[he]=ונדה
Name[hi]=वेंदा
Name[hne]=वेंदा
Name[hr]=Venda
Name[hsb]=Venda
Name[hu]=Venda
Name[ia]=Venda
Name[id]=Venda
Name[is]=Venda
Name[it]=Venda
Name[ja]=ベンダ語
Name[kk]=Венда
Name[km]=វង់ដា
Name[kn]=ವಂಡಾ
Name[ko]=벤다어
Name[ku]=Venda
Name[lb]=Venda
Name[lt]=Venda
Name[lv]=Vendu
Name[mai]=वेंडा
Name[mk]=Венда
Name[ml]=വെന്‍ഡാ
Name[mr]=वेंदा
Name[ms]=Venda
Name[nb]=Venda
Name[nds]=Venda
Name[ne]=भेन्डा
Name[nl]=Venda
Name[nn]=Venda
Name[oc]=Vendà
Name[or]=Venda
Name[pa]=ਵਾਂਡਾ
Name[pl]=Venda
Name[ps]=وېنډا
Name[pt]=Venda
Name[pt_BR]=Venda
Name[ro]=Venda
Name[ru]=Венда
Name[se]=Vendagiella
Name[si]=වෙන්ඩා
Name[sk]=Venda
Name[sl]=venda
Name[sq]=Venda
Name[sr]=венда
Name[sr@ijekavian]=венда
Name[sr@ijekavianlatin]=venda
Name[sr@latin]=venda
Name[sv]=Venda
Name[ta]=வெண்டா
Name[te]=వెండా
Name[tg]=Вендагӣ
Name[th]=ภาษาเวนดา
Name[tr]=Venda
Name[ug]=ۋېنداچە
Name[uk]=Венда
Name[uz]=Venda
Name[uz@cyrillic]=Венда
-Name[vi]=Ven-đa
+Name[vi]=Venda
Name[wa]=Venda
-Name[x-test]=xxVendaxx
Name[xh]=Venda
+Name[x-test]=xxVendaxx
Name[zh_CN]=文达语
Name[zh_TW]=Venda
[vi]
Name=Vietnamese
Name[af]=Viëtnamees
Name[ar]=فيتنامية
Name[as]=ভিয়েট্নামি
Name[ast]=Vietnamita
Name[be]=В'етнамская
Name[be@latin]=Vietnamskaja
Name[bg]=Виетнамски
Name[bn]=ভিয়েতনামী
Name[bn_IN]=ভিয়েতনামিস
Name[br]=Viet-Nameg
Name[bs]=Vijetnamski
Name[ca]=Vietnamita
Name[ca@valencia]=Vietnamita
Name[cs]=Vietnamský
Name[csb]=Wietnamsczi
Name[cy]=Vietnameg
Name[da]=Vietnamesisk
Name[de]=Vietnamesisch
Name[el]=Βιετναμέζικα
Name[en_GB]=Vietnamese
Name[eo]=Vjetnama
Name[es]=Vietnamita
Name[et]=Vietnami
Name[eu]=Vietnamera
Name[fa]=ویتنامی
Name[fi]=Vietnam
Name[fr]=Vietnamien
Name[fy]=Vietnameesk
Name[ga]=Vítneamais
Name[gl]=Vietnamita
Name[gu]=વિયેટનામીઝ
Name[he]=וייטנאמית
Name[hi]=विएतनामी
Name[hne]=विएतनामी
Name[hr]=Vijetnamski
Name[hsb]=Vietnamsce
Name[hu]=Vietnami
Name[ia]=Vietnamese
Name[id]=Vietnam
Name[is]=Víetnamska
Name[it]=Vietnamita
Name[ja]=ベトナム語
Name[kk]=Вьетнамша
Name[km]=វៀតណាម
Name[kn]=ವಿಯೆಟ್ನಾಮೀಸ್
Name[ko]=베트남어
Name[ku]=Viyetnamî
Name[lb]=Vietnamesesch
Name[lt]=Vietnamiečių
Name[lv]=Vjetnamiešu
Name[mai]=विएतनामी
Name[mk]=Виетнамски
Name[ml]=വിയറ്റ്നാമീസ്
Name[mr]=वियेतनामी
Name[ms]=Vietnam
Name[nb]=Vietnamesisk
Name[nds]=Vietnameesch
Name[ne]=भियतनामी
Name[nl]=Vietnamees
Name[nn]=Vietnamesisk
Name[oc]=Vietnamés
Name[or]=Vietnamese
Name[pa]=ਵੀਅਤਨਾਮੀ
Name[pl]=Wietnamski
Name[ps]=وېټنامي
Name[pt]=Vietnamita
Name[pt_BR]=Vietnamita
Name[ro]=Vietnameză
Name[ru]=Вьетнамский
Name[se]=Vietnamagiella
Name[si]=වියට්නාම
Name[sk]=Vietnamčina
Name[sl]=vietnamsko
Name[sq]=Vietnameze
Name[sr]=вијетнамски
Name[sr@ijekavian]=вијетнамски
Name[sr@ijekavianlatin]=vijetnamski
Name[sr@latin]=vijetnamski
Name[sv]=Vietnamesiska
Name[ta]=வியட்னாமிய
Name[te]=వియత్నామీస్
Name[tg]=Ветнамӣ
Name[th]=ภาษาเวียดนาม
Name[tr]=Vietnamca
Name[ug]=ۋىيېتنامچە
Name[uk]=В'єтнамська
Name[uz]=Vetnamcha
Name[uz@cyrillic]=Ветнамча
-Name[vi]=Việt
+Name[vi]=Việt Nam
Name[wa]=Vietnamyin
-Name[x-test]=xxVietnamesexx
Name[xh]=Vietnamese
+Name[x-test]=xxVietnamesexx
Name[zh_CN]=越南语
Name[zh_HK]=越南語
Name[zh_TW]=越南語
[vo]
Name=Volapük
Name[af]=Volapük
Name[ar]=فولابوك
Name[as]=ভ'লাপুক
Name[ast]=Volapük
Name[be]=Валапук
Name[be@latin]=Volapük
Name[bg]=Волапюк
Name[bn]=ভোলাপুক
Name[bn_IN]=ভোলাপুক
Name[br]=Volapuk
Name[bs]=Volapik
Name[ca]=Volapük
Name[ca@valencia]=Volapük
Name[cs]=Volapük
Name[csb]=Volapük
Name[cy]=Volapuk
Name[da]=Volapyk
Name[de]=Volapük
Name[el]=Volapük
Name[en_GB]=Volapük
Name[eo]=Volapuko
Name[es]=Volapük
Name[et]=Volapük
Name[eu]=Volapük
Name[fa]=ولاپوک
Name[fi]=Volapük
Name[fr]=Volapük
Name[fy]=Volapük
Name[ga]=Volapük
Name[gl]=Volapük
Name[gu]=વોલ્પુક
Name[he]=וולאפיק
Name[hi]=वोलापक
Name[hne]=वोलापक
Name[hr]=Volapük
Name[hsb]=Volapük
Name[hu]=Volapük
Name[ia]=Volapuk
Name[id]=Volapük
Name[is]=Volapük
Name[it]=Volapük
Name[ja]=ボラピューク語
Name[kk]=Волапюк
Name[km]=វ៉ូឡាភូក
Name[kn]=ವೋಲಾಪ್ಕ್
Name[ko]=볼라퓌크
Name[ku]=Volapük
Name[lb]=Volapük
Name[lt]=Volapük
Name[lv]=Volapiks
Name[mai]=वोलापक
Name[mk]=Волапук
Name[ml]=വോളാപുക്
Name[mr]=वोलापक
Name[ms]=Volapük
Name[nb]=Volapük
Name[nds]=Volapük
Name[ne]=भोलापुक
Name[nl]=Volapúk
Name[nn]=Volapyk
Name[or]=Volapük
Name[pa]=ਵੂਲਾਉਕ
Name[pl]=Volapük
Name[pt]=Volapük
Name[pt_BR]=Volapuque
Name[ro]=Volapucă
Name[ru]=Волапюк
Name[se]=Volapükgiella
Name[si]=වොලුපුක්
Name[sk]=Volapük
Name[sl]=volapük
Name[sq]=Volapük
Name[sr]=волапик
Name[sr@ijekavian]=волапик
Name[sr@ijekavianlatin]=volapik
Name[sr@latin]=volapik
Name[sv]=Volapük
Name[ta]=வொல்புக்
Name[te]=వొలపుక్
Name[tg]=Волапёкӣ
Name[th]=ภาษาวอลาพุค
Name[tr]=Volapük
Name[ug]=ۋولاپۇكچە
Name[uk]=Волапюк
Name[uz]=Volapuk
Name[uz@cyrillic]=Волапук
-Name[vi]=Vo-la-puc
+Name[vi]=Volapük
Name[wa]=Volapük
-Name[x-test]=xxVolapükxx
Name[xh]=Volapük
+Name[x-test]=xxVolapükxx
Name[zh_CN]=沃拉普克语
Name[zh_TW]=Volapük
[wa]
Name=Walloon
Name[af]=Walloon
Name[ar]=والونية
Name[as]=ৱেলুন
Name[ast]=Valón
Name[be]=Валонская
Name[be@latin]=Valonskaja
Name[bg]=Валонски
Name[bn]=ওয়ালুন
Name[bn_IN]=ওয়ালুন
Name[br]=Walloneg
Name[bs]=Valonski
Name[ca]=Való
Name[ca@valencia]=Való
Name[cs]=Wallonský
Name[csb]=Walońsczi
Name[cy]=Walloon
Name[da]=Vallonsk
Name[de]=Wallonisch
Name[el]=Walloon
Name[en_GB]=Walloon
Name[eo]=Valona
Name[es]=Walloon
Name[et]=Vallooni
Name[eu]=Waloiera
Name[fa]=والونی
Name[fi]=Valloni
Name[fr]=Wallon
Name[fy]=Waalsk
Name[ga]=Vallúnais
Name[gl]=Valón
Name[gu]=વોલુન
Name[he]=וולונית
Name[hi]=वालून
Name[hne]=वालून
Name[hr]=Valonski
Name[hsb]=Walloon
Name[hu]=Vallon
Name[ia]=Valloniano
Name[id]=Walloon
Name[is]=Vallónska
Name[it]=Vallone
Name[ja]=ワロン語
Name[kk]=Валонша
Name[km]=វ៉ាឡុង
Name[kn]=ವಾಲ್ಲೂನ್
Name[ko]=왈론어
Name[ku]=Walûn
Name[lb]=Wallounesch
Name[lt]=Valonų
Name[lv]=Valoņu
Name[mai]=वालून
Name[mk]=Валонски
Name[ml]=വലൂണ്‍
Name[mr]=वालून
Name[ms]=Walloon
Name[nb]=Vallonsk
Name[nds]=Walloonsch
Name[ne]=वालोन
Name[nl]=Waals
Name[nn]=Vallonsk
Name[oc]=Valon
Name[or]=Walloon
Name[pa]=ਵਾਲੂਨ
Name[pl]=Waloński
Name[ps]=والون
Name[pt]=Valão
Name[pt_BR]=Valão
Name[ro]=Valonă
Name[ru]=Валлонский
Name[se]=Vallonagiella
Name[si]=වැලූන්
Name[sk]=Valónčina
Name[sl]=walloonsko
Name[sq]=Valone
Name[sr]=валонски
Name[sr@ijekavian]=валонски
Name[sr@ijekavianlatin]=valonski
Name[sr@latin]=valonski
Name[sv]=Vallonska
Name[ta]=வாலூன்
Name[te]=వాలూన్
Name[tg]=Валунӣ
Name[th]=ภาษาวัลลูน
Name[tr]=Valonca
-Name[ug]=ۋاللۇنچە
+Name[ug]=ۋاللونچە
Name[uk]=Валлонська
Name[uz]=Valloncha
Name[uz@cyrillic]=Валлонча
-Name[vi]=Oua-lunh
+Name[vi]=Walloon
Name[wa]=Walon
-Name[x-test]=xxWalloonxx
Name[xh]=Walloon
+Name[x-test]=xxWalloonxx
Name[zh_CN]=瓦龙语
Name[zh_HK]=華隆語
Name[zh_TW]=華隆語
[wo]
Name=Wolof
Name[af]=Wolof
Name[ar]=وولوف
Name[as]=ৱ'ল'ফ
Name[ast]=Wolof
Name[be]=Волаф
Name[be@latin]=Wolof
Name[bg]=Уолоф
Name[bn]=ওয়োলফ
Name[bn_IN]=ওলুফ
Name[br]=Wolof
Name[bs]=Volof
Name[ca]=Wolof
Name[ca@valencia]=Wolof
Name[cs]=Wolof
Name[csb]=Wolof
Name[cy]=Woloff
Name[da]=Wolof
Name[de]=Wolof
Name[el]=Wolof
Name[en_GB]=Wolof
Name[eo]=Volofa
Name[es]=Wolof
Name[et]=Volofi
Name[eu]=Wolofera
Name[fa]=ولوف
Name[fi]=Wolof
Name[fr]=Wolof
Name[fy]=Wolof
Name[ga]=Volaifis
Name[gl]=Wolof
Name[gu]=વોલોફ
Name[he]=וולוף
Name[hi]=वालाफ़
Name[hne]=वालाफ
Name[hr]=Volofski
Name[hsb]=Wolof
Name[hu]=Volof
Name[ia]=Wolof
Name[id]=Wolof
Name[is]=Wolof
Name[it]=Wolof
Name[ja]=ウォロフ語
Name[kk]=Волофша
Name[km]=វូឡុហ្វ
Name[kn]=ವೋಲೋಫ್
Name[ko]=월로프어
Name[ku]=Wolof
Name[lb]=Wolof-Sprooch
Name[lt]=Wolof
Name[lv]=Volofu
Name[mai]=वालाफ़
Name[mk]=Волоф
Name[ml]=വൊലോ
Name[mr]=वालाफ़
Name[ms]=Wolof
Name[nb]=Wolof
Name[nds]=Wolof
Name[ne]=वलोफ
Name[nl]=Wolof
Name[nn]=Wolof
Name[oc]=Wolof
Name[or]=Wolof
Name[pa]=ਵੂਲੂਫ
Name[pl]=Wolof
Name[ps]=ولوف
Name[pt]=Wolof
Name[pt_BR]=Jalofo
Name[ro]=Volofă
Name[ru]=Волоф
Name[se]=Volofagiella
Name[si]=වොලොෆ්
Name[sk]=Wolof
Name[sl]=wolof
Name[sq]=Wolof
Name[sr]=волоф
Name[sr@ijekavian]=волоф
Name[sr@ijekavianlatin]=volof
Name[sr@latin]=volof
Name[sv]=Wolof
Name[ta]=வொலொப்
Name[te]=వొలొఫ్
Name[tg]=Волофӣ
Name[th]=ภาษาวอลอฟ
Name[tr]=Wolof
Name[ug]=ۋولوفچە
Name[uk]=Волоф
Name[uz]=Volof
Name[uz@cyrillic]=Волоф
-Name[vi]=Ouo-lo-ph
+Name[vi]=Wolof
Name[wa]=Wolof
-Name[x-test]=xxWolofxx
Name[xh]=Wolof
+Name[x-test]=xxWolofxx
Name[zh_CN]=沃洛夫语
Name[zh_HK]=Wolof語
Name[zh_TW]=Wolof語
[xh]
Name=Xhosa
Name[af]=Xhosa
Name[ar]=بهوسا
Name[as]=জ'ছা
Name[ast]=Xhosa
Name[be]=Кшоса
Name[be@latin]=Xhosa
Name[bg]=Ксоса
Name[bn]=জোসা
Name[bn_IN]=জোসা
Name[br]=Xhosa
Name[bs]=Ksosa
Name[ca]=Xosa
Name[ca@valencia]=Xosa
Name[cs]=Xhosa
Name[csb]=Xhosa
Name[cy]=Xhosa
Name[da]=Xhosa
Name[de]=Xhosa
Name[el]=Xhosa
Name[en_GB]=Xhosa
Name[eo]=Kosa
Name[es]=Xhosa
Name[et]=Xhosa
Name[eu]=Xhosera
Name[fa]=زسایی
Name[fi]=Xhosa
Name[fr]=Xhosa
Name[fy]=Xhosa
Name[ga]=Cóisis
Name[gl]=Xhosa
Name[gu]=હોસા
Name[he]=קוזה
Name[hi]=झ़ोसा
Name[hne]=झ़ोसा
Name[hr]=Xhosa
Name[hsb]=Xhosa
Name[hu]=Xhosza
Name[ia]=Xhosa
Name[id]=Xhosa
Name[is]=Xhosa
Name[it]=Xhosa
Name[ja]=コサ語
Name[kk]=Кхоса
Name[km]=ឃូសា
Name[kn]=ಗ್ಝೋಸಾ
Name[ko]=코사어
Name[ku]=hosa
Name[lb]=Xhosa
Name[lt]=Xhosa
Name[lv]=Khosu
Name[mai]=झ़ोसा
Name[mk]=Ксоса
Name[ml]=ഖോസ
Name[mr]=झ़ोसा
Name[ms]=Xhosa
Name[nb]=Xhosa
Name[nds]=Xhosa
Name[ne]=होसा
Name[nl]=Xhosa
Name[nn]=Xhosa
Name[oc]=Xhosa
Name[or]=Xhosa
Name[pa]=ਝੋਸਾ
Name[pl]=Xhosa
Name[ps]=کوسا
Name[pt]=Xhosa
Name[pt_BR]=Xhosa
Name[ro]=Xhosa
Name[ru]=Коса
Name[se]=Xhosagiella
Name[si]=ෂොසා
Name[sk]=Xhoština
Name[sl]=xhosa
Name[sq]=Xhosa
Name[sr]=кхоса
Name[sr@ijekavian]=кхоса
Name[sr@ijekavianlatin]=khosa
Name[sr@latin]=khosa
Name[sv]=Xhosa
Name[ta]=சோசா
Name[te]=క్జొసా
Name[tg]=Хоса
Name[th]=ภาษาโคซา
Name[tr]=Xhosa
Name[ug]=كوساچە
Name[uk]=Хоза
Name[uz]=Xhosa
Name[uz@cyrillic]=Хҳоса
-Name[vi]=Xô-xa
+Name[vi]=Xhosa
Name[wa]=Xhossa
-Name[x-test]=xxXhosaxx
Name[xh]=isixhosa
+Name[x-test]=xxXhosaxx
Name[zh_CN]=科萨语
Name[zh_HK]=科薩語
Name[zh_TW]=科薩語
[x-test]
Name=KDE Test Language
Name[bg]=Пробен език за KDE
Name[bs]=KDE Test jezik
Name[ca]=Idioma de proves del KDE
Name[ca@valencia]=Idioma de proves del KDE
Name[cs]=Testovací jazyk KDE
Name[da]=KDE-testsprog
Name[de]=KDE-Testsprache
Name[el]=Δοκιμαστική γλώσσα του KDE
Name[en_GB]=KDE Test Language
Name[es]=Idioma de pruebas de KDE
Name[et]=KDE testkeel
Name[eu]=KDE-ren proba hizkuntza
Name[fa]=آزمون زبان KDE
Name[fi]=KDE:n testikieli
Name[fr]=Langue de test de KDE
Name[gl]=Lingua de probas de KDE
Name[hr]=KDE-ov pokusni jezik
Name[hu]=KDE tesztnyelv
Name[ia]=Linguage de essayo de KDE
Name[is]=KDE prófunartungumál
Name[it]=Lingua di prova KDE
Name[ja]=KDE テスト言語
Name[kk]=KDE сынақ тілі
Name[km]=ភាសា​សាកល្បង​របស់ KDE
Name[ko]=KDE 테스트 언어
Name[lt]=KDE bandomoji kalba
Name[lv]=KDE testēšanas valoda
Name[nb]=KDE test-språk
Name[nds]=KDE-Utprobeerspraak
Name[nl]=KDE-testtaal
Name[pa]=KDE ਟੈਸਟ ਭਾਸ਼ਾ
Name[pl]=Język testowy KDE
Name[pt]=Língua de Testes do KDE
Name[pt_BR]=Idioma de teste do KDE
Name[ro]=Limbă de test KDE
Name[ru]=Тестовый язык KDE
Name[se]=KDE-geahččalangiella
Name[sk]=Testovací jazyk KDE
Name[sr]=пробни језик
Name[sr@ijekavian]=пробни језик
Name[sr@ijekavianlatin]=probni jezik
Name[sr@latin]=probni jezik
Name[sv]=KDE testspråk
Name[th]=ภาษาทดสอบ KDE
Name[tr]=KDE Test Dili
Name[ug]=KDE سىناق تىل
Name[uk]=Тестова мова KDE
+Name[vi]=Ngôn ngữ kiểm tra KDE
Name[wa]=Saye di lingaedje KDE
Name[x-test]=xxKDE Test Languagexx
Name[zh_CN]=KDE 测试语言
Name[zh_TW]=KDE 測試語言
[yi]
Name=Yiddish
Name[af]=Yiddish
Name[ar]=يديش
Name[as]=যিদ্দিশ্ব
Name[ast]=Yidis
Name[be]=Ідыш
Name[be@latin]=Idyš
Name[bg]=Идиш
Name[bn]=য়িড্ডিশ
Name[bn_IN]=ইড্ডিশ
Name[br]=Yiddish
Name[bs]=Jidiš
Name[ca]=Jiddisch
Name[ca@valencia]=Jiddisch
Name[cs]=Jidiš
Name[csb]=Jidisz
Name[cy]=Yideg
Name[da]=Jiddisch
Name[de]=Jiddish
Name[el]=Yiddish
Name[en_GB]=Yiddish
Name[eo]=Jida
Name[es]=Yiddish
Name[et]=Jidiš
Name[eu]=Jiddish
Name[fa]=عبری
Name[fi]=Jiddiš
Name[fr]=Yiddish
Name[fy]=Jiddysk
Name[ga]=Giúdais
Name[gl]=Iídiche
Name[gu]=યિદ્દિશ
Name[he]=יידיש
Name[hi]=यिड्डिष
Name[hne]=यिड्डिस
Name[hr]=Jidiš
Name[hsb]=Jidisce
Name[hu]=Jiddis
Name[ia]=Yiddish
Name[id]=Yiddish
Name[is]=Jiddíska
Name[it]=Yiddish
Name[ja]=イディッシュ語
Name[kk]=Идиш
Name[km]=យីឌីហ្ស
Name[kn]=ಯಿದ್ದಿಷ್
Name[ko]=이디시어
Name[ku]=Yidî
Name[lb]=Jiddesch
Name[lt]=Jidiš
Name[lv]=Jidišs
Name[mai]=यिड्डिश
Name[mk]=Еврејски
Name[ml]=യിദ്ദിഷ്
Name[mr]=यिड्डिष
Name[ms]=Yiddish
Name[nb]=Jiddisk
Name[nds]=Jiddsch
Name[ne]=यीडिस
Name[nl]=Yiddish
Name[nn]=Jiddisch
Name[oc]=Yiddish
Name[or]=Yiddish
Name[pa]=ਯੀਡਿਸ਼
Name[pl]=Jidysz
Name[ps]=يډېش
Name[pt]=Yiddish
Name[pt_BR]=Iídiche
Name[ro]=Idiș
Name[ru]=Идиш
Name[se]=Jiddišgiella
Name[si]=යිඩිෂ්
Name[sk]=Jidiš
Name[sl]=yiddish
Name[sq]=Jidish
Name[sr]=јидиш
Name[sr@ijekavian]=јидиш
Name[sr@ijekavianlatin]=jidiš
Name[sr@latin]=jidiš
Name[sv]=Yiddish
Name[ta]=யிட்டிஷ்
Name[te]=యిడ్డిష్
Name[tg]=Юйдишӣ
Name[th]=ภาษายิดดิช
Name[tr]=Yiddish
Name[ug]=يىددىشچە
Name[uk]=Ідиш
Name[uz]=Yiddish
Name[uz@cyrillic]=Йиддиш
-Name[vi]=Y-đít
+Name[vi]=Yiddish
Name[wa]=Yidish
-Name[x-test]=xxYiddishxx
Name[xh]=Yiddish
+Name[x-test]=xxYiddishxx
Name[zh_CN]=依地语
Name[zh_HK]=意第緒語
Name[zh_TW]=意第緒語
[yo]
Name=Yoruba
Name[af]=Yoruba
Name[ar]=يوروبا
Name[as]=য'ৰুবা
Name[ast]=Yoruba
Name[be]=Яруба
Name[be@latin]=Yoruba
Name[bg]=Йоруба
Name[bn]=য়োরুবা
Name[bn_IN]=ইওরুবা
Name[br]=Yoruba
Name[bs]=Joruba
Name[ca]=Ioruba
Name[ca@valencia]=Ioruba
Name[cs]=Yoruba
Name[csb]=Yoruba
Name[cy]=Yoruba
Name[da]=Yoruba
Name[de]=Yoruba
Name[el]=Yoruba
Name[en_GB]=Yoruba
Name[eo]=Joruba
Name[es]=Yoruba
Name[et]=Joruba
Name[eu]=Jorubera
Name[fa]=یوروبا
Name[fi]=Joruba
Name[fr]=Yoruba
Name[fy]=Yoruba
Name[ga]=Iarúibis
Name[gl]=Yorubá
Name[gu]=યોરુબા
Name[he]=יורובה
Name[hi]=योरुबा
Name[hne]=योरुबा
Name[hr]=Yoruba
Name[hsb]=Yoruba
Name[hu]=Joruba
Name[ia]=Yoruba
Name[id]=Yoruba
Name[is]=Yoruba
Name[it]=Yoruba
Name[ja]=ヨルバ語
Name[kk]=Йоруба
Name[km]=យរូបា
Name[kn]=ಯೋರುಬಾ
Name[ko]=요루바어
Name[ku]=Yoruba
Name[lb]=Yoruba-Sprooch
Name[lt]=Yoruba
Name[lv]=Jorubu
Name[mai]=योरुबा
Name[mk]=Јоруба
Name[ml]=യോറൂബ
Name[mr]=योरुबा
Name[ms]=Yoruba
Name[nb]=Yoruba
Name[nds]=Yoruba
Name[ne]=योरुबा
Name[nl]=Yoruba
Name[nn]=Joruba
Name[or]=Yoruba
Name[pa]=ਯੂਰੋਬਾ
Name[pl]=Yoruba
Name[ps]=يوروبا
Name[pt]=Yoruba
Name[pt_BR]=Iorubá
Name[ro]=Iorubă
Name[ru]=Йоруба
Name[se]=Jorubagiella
Name[si]=යොරුබා
Name[sk]=Jorubčina
Name[sl]=yoruba
Name[sq]=Joruba
Name[sr]=јоруба
Name[sr@ijekavian]=јоруба
Name[sr@ijekavianlatin]=joruba
Name[sr@latin]=joruba
Name[sv]=Yoruba
Name[ta]=யொரூபா
Name[te]=యొరుబా
Name[tg]=Ёрубавӣ
Name[th]=ภาษาโยรูบา
Name[tr]=Yoruba
Name[ug]=يورۇباچە
Name[uk]=Йоруба
Name[uz]=Yoruba
Name[uz@cyrillic]=Ёруба
-Name[vi]=Yô-ru-ba
+Name[vi]=Yoruba
Name[wa]=Yorouba
-Name[x-test]=xxYorubaxx
Name[xh]=Yoruba
+Name[x-test]=xxYorubaxx
Name[zh_CN]=约鲁巴语
Name[zh_HK]=優魯巴語
Name[zh_TW]=優魯巴語
[za]
Name=Zhuang
Name[af]=Zhuang
Name[ar]=جوانغ
Name[as]=ঝুৱাঙ
Name[ast]=Zhuang
Name[be]=Цванг
Name[be@latin]=Zhuang
Name[bg]=Жуанг
Name[bn]=ঝুয়াং
Name[bn_IN]=জুয়াং
Name[br]=Zhuang
Name[bs]=Žuang
Name[ca]=Zhuang
Name[ca@valencia]=Zhuang
Name[cs]=Zhuang
Name[csb]=Zhuang
Name[cy]=Zhuang
Name[da]=Zhuang
Name[de]=Zhuang
Name[el]=Zhuang
Name[en_GB]=Zhuang
Name[eo]=Ĝuanga
Name[es]=Zhuang
Name[et]=Zhuangi
Name[eu]=Zhuang
Name[fa]=هونگ
Name[fi]=Zhuang
Name[fr]=Zhuang
Name[fy]=Zhuang
Name[ga]=Siuáingis
Name[gl]=Chuan
Name[gu]=હુઆંગ
Name[he]=ג'ואנג
Name[hi]=झुआंग
Name[hne]=झुआंग
Name[hr]=Zhuang
Name[hsb]=Zhuang
Name[hu]=Zhuang
Name[ia]=Zhuang
Name[id]=Zhuang
Name[is]=Zhuang
Name[it]=Zhuang
Name[ja]=チュワン語
Name[kk]=Зуангша
Name[km]=ចួង
Name[kn]=ಝುವಾಂಗ್
Name[ko]=좡어
Name[ku]=Zhuang
Name[lb]=Zhuang
Name[lt]=Zhuang
Name[lv]=Džuanu
Name[mai]=झुआंग
Name[mk]=Жуанг
Name[ml]=ഹുവാങ്
Name[mr]=झुआंग
Name[ms]=Zhuang
Name[nb]=Zhuang
Name[nds]=Zhuang
Name[ne]=झिआङ
Name[nl]=Zhuang
Name[nn]=Zhuang
Name[or]=Zhuang
Name[pa]=ਜ਼ੂੰਗ
Name[pl]=Zhuang
Name[pt]=Zhuang
Name[pt_BR]=Zhuang
Name[ro]=Zhuang
Name[ru]=Чжуанский
Name[se]=Zhuangagiella
Name[si]=ෂුවෑං
Name[sk]=Čuangčina
Name[sl]=zhuang
Name[sq]=Zhuang
Name[sr]=жуанг
Name[sr@ijekavian]=жуанг
Name[sr@ijekavianlatin]=žuang
Name[sr@latin]=žuang
Name[sv]=Zhuang
Name[ta]=சுவாங்
Name[te]=జువాంగ్
Name[tg]=Ҷуангӣ
Name[th]=ภาษาจ้วง
Name[tr]=Zhuang
Name[ug]=جۇاڭچە
Name[uk]=Чжуань
Name[uz]=Zxuang
Name[uz@cyrillic]=Зхуанг
-Name[vi]=Xuang
+Name[vi]=Zhuang
Name[wa]=Zhuang
-Name[x-test]=xxZhuangxx
Name[xh]=Zhuang
+Name[x-test]=xxZhuangxx
Name[zh_CN]=壮语
Name[zh_HK]=Zhuang語
Name[zh_TW]=Zhuang語
[zh]
Name=Chinese
Name[af]=Sjinees
Name[ar]=صينية
Name[as]=চীনা
Name[ast]=Chinu
Name[be]=Кітайская
Name[be@latin]=Kitajskaja
Name[bg]=Китайски
Name[bn]=চৈনিক
Name[bn_IN]=চিনা
Name[br]=Sinaeg
Name[bs]=Kineski
Name[ca]=Xinès
Name[ca@valencia]=Xinés
Name[cs]=Čínský
Name[csb]=Chińsczi
Name[cy]=Tseineeg
Name[da]=Kinesisk
Name[de]=Chinesisch
Name[el]=Κινέζικα
Name[en_GB]=Chinese
Name[eo]=Ĉina
Name[es]=Chino
Name[et]=Hiina
Name[eu]=Txinera
Name[fa]=چینی
Name[fi]=Kiina
Name[fr]=Chinois
Name[fy]=Sjineesk
Name[ga]=Sínis
Name[gl]=Chinés
Name[gu]=ચાઇનિઝ
Name[he]=סינית
Name[hi]=चीनी
Name[hne]=चीनी
Name[hr]=Kineski
Name[hsb]=Chinsce
Name[hu]=Kínai
Name[ia]=Chinese
Name[id]=China
Name[is]=Kínverska
Name[it]=Cinese
Name[ja]=中国語
Name[kk]=Қытайша
Name[km]=ចិន
Name[kn]=ಚೀನೀ
Name[ko]=중국어
Name[ku]= Çînî
Name[lb]=Chinesesch
Name[lt]=Kiniečių
Name[lv]=Ķīniešu
Name[mai]=चीनी
Name[mk]=Кинески
Name[ml]=ചൈനീസ്
Name[mr]=चायनिज
Name[ms]=China
Name[nb]=Kinesisk
Name[nds]=Chineesch
Name[ne]=चिनियाँ
Name[nl]=Chinees
Name[nn]=Kinesisk
Name[oc]=Chinés
Name[or]=Chinese
Name[pa]=ਚੀਨੀ
Name[pl]=Chiński
Name[ps]=چينايي
Name[pt]=Chinês
Name[pt_BR]=Chinês
Name[ro]=Chineză
Name[ru]=Китайский
Name[se]=Kiinnágiella
Name[si]=චීන
Name[sk]=Čínština
Name[sl]=kitajsko
Name[sq]=Kineze
Name[sr]=кинески
Name[sr@ijekavian]=кинески
Name[sr@ijekavianlatin]=kineski
Name[sr@latin]=kineski
Name[sv]=Kinesiska
Name[ta]=சீனம்
Name[te]=చైనీస్
Name[tg]=Хитоӣ
Name[th]=ภาษาจีน
Name[tr]=Çince
Name[ug]=خەنزۇچە
Name[uk]=Китайська
Name[uz]=Xitoycha
Name[uz@cyrillic]=Хитойча
-Name[vi]=Hoa
+Name[vi]=Trung Quốc
Name[wa]=Chinwès
-Name[x-test]=xxChinesexx
Name[xh]=Isitshayina
+Name[x-test]=xxChinesexx
Name[zh_CN]=中文
Name[zh_HK]=中文
Name[zh_TW]=中文
[zh_CN]
Name=Chinese Simplified
Name[af]=Sjinees vereenvoudig
Name[ar]=صينية مبسطة
Name[as]=চীনা সৰল কৰা
Name[ast]=Chinu simplificáu
Name[be]=Кітайская спрошчаная
Name[be@latin]=Kitajskaja sproščanaja
Name[bg]=Китайски опростен
Name[bn]=সরলীকৃত চৈনিক
Name[bn_IN]=চিনা (সরলীকৃত)
Name[br]=Sineg eeun
Name[bs]=Kineski pojednostavljeni
Name[ca]=Xinès simplificat
Name[ca@valencia]=Xinés simplificat
Name[cs]=Čínský (zjednodušená)
Name[csb]=Chińsczi Prosti
Name[cy]=Tseineeg Syml
Name[da]=Kinesisk simplificeret
Name[de]=Chinesisch (Kurzzeichen)
Name[el]=Κινέζικα απλά
Name[en_GB]=Chinese Simplified
Name[eo]=Ĉina, simpligita
Name[es]=Chino simplificado
Name[et]=Hiina (lihtsustatud)
Name[eu]=Txinatar soildua
Name[fa]=زبان چینی ساده‌شده
Name[fi]=Yksinkertaistettu kiina
Name[fr]=Chinois simplifié
Name[fy]=Sjineesk (ynfaldich)
Name[ga]=Sínis Simplithe
Name[gl]=Chinés simplificado
Name[gu]=સરળ ચાઇનિઝ
Name[he]=סינית מפושטת
Name[hi]=चीनी सरल
Name[hne]=चीनी सरल
Name[hr]=Kineski pojednostavljen
Name[hsb]=Chinsce (zjednorjene)
Name[hu]=Kínai (egyszerűsített)
Name[ia]=Chinese Simplificate
Name[id]=China Disederhanakan
Name[is]=Einfölduð kínverska
Name[it]=Cinese semplificato
Name[ja]=中国語 簡体字
Name[kk]=Жеңілдеткен қытайша
Name[km]=ចិនសាមញ្ញ
Name[kn]=ಸರಳ ಚಿನೀ
Name[ko]=중국어 간체
Name[ku]=Çîniya Hêsankirî
Name[lb]=Einfacht Chinesesch
Name[lt]=Kinų supaprastinta
Name[lv]=Ķīniešu vienkāršotā
Name[mai]=चीनी (सरल)
Name[mk]=Кинески поедноставен
Name[ml]=ലളിതമായ ചൈനീസ്
Name[mr]=विश्लेषीत चिनी
Name[ms]=Chinese Simplified
Name[nb]=Forenklet kinesisk
Name[nds]=Vereenfacht Chineesch
Name[ne]=सरलीकृत चिनियाँ
Name[nl]=Chinees (Vereenvoudigd)
Name[nn]=Kinesisk (forenkla)
Name[oc]=Chinés simplificat
Name[or]=Chinese Simplified
Name[pa]=ਚੀਨੀ ਸਧਾਰਨ
Name[pl]=Chiński uproszczony
Name[ps]=چينايي ساده
Name[pt]=Chinês Simplificado
Name[pt_BR]=Chinês simplificado
Name[ro]=Chineză simplificată
Name[ru]=Китайский (Китай)
Name[se]=Álkiduvvon kiinnágiella
Name[si]=චීන සරළ
Name[sk]=Čínština (zjednodušená)
Name[sl]=poenostavljeno kitajsko
Name[sq]=Kineze e Thjeshtëzuar
Name[sr]=кинески, поједностављени
Name[sr@ijekavian]=кинески, поједностављени
Name[sr@ijekavianlatin]=kineski, pojednostavljeni
Name[sr@latin]=kineski, pojednostavljeni
Name[sv]=Förenklad kinesiska
Name[ta]=எளியமையான சீனம்
Name[te]=సరళికరించిన చైనీస్
Name[tg]=Хитоии Оддӣ
Name[th]=ภาษาจีนประยุกต์
Name[tr]=Basitleştirilmiş Çince
Name[ug]=ئاددىي خەنزۇچە
Name[uk]=Китайська (спрощена)
Name[uz]=Soddalashtirilgan Xitoycha
Name[uz@cyrillic]=Соддалаштирилган Хитойча
-Name[vi]=Hoa (phổ thông)
+Name[vi]=Trung Quốc giản thể
Name[wa]=Chinwès simplifyî
Name[x-test]=xxChinese Simplifiedxx
Name[zh_CN]=简体中文
Name[zh_HK]=簡體中文
Name[zh_TW]=簡體中文
[zh_HK]
Name=Chinese (Hong Kong)
Name[af]=Sjinees (Hong Kong)
Name[ar]=صينية (هونغ كونغ)
Name[as]=চীনা (হং কং)
Name[ast]=Chinu (Hong Kong)
Name[be]=Кітайская (Гонг-Конг)
Name[be@latin]=Kitajskaja (Hong Kong)
Name[bg]=Китайски (Хонг Конг)
Name[bn]=চৈনিক (হংকং)
Name[bn_IN]=চিনা (হং কং)
Name[br]=Sinaeg (Hong Kong)
Name[bs]=Kineski(Hong Kong)
Name[ca]=Xinès (Hong Kong)
Name[ca@valencia]=Xinés (Hong Kong)
Name[cs]=Čínský (Hong Kong)
Name[csb]=Chińsczi (Hong Kong)
Name[da]=Kinesisk (Hong Kong)
Name[de]=Chinesisch (Hongkong)
Name[el]=Κινέζικα (Χονγκ Κονγκ)
Name[en_GB]=Chinese (Hong Kong)
Name[eo]=Ĉina (Honkongo)
Name[es]=Chino (Hong Kong)
Name[et]=Hiina (Hong Kong)
Name[eu]=Txinera (Hong Kong)
Name[fa]=چینی)هنگ کنگ(
Name[fi]=Kiina (Hongkong)
Name[fr]=Chinois (Hong Kong)
Name[fy]=Sjineesk (Hong Kong)
Name[ga]=Sínis (Hong Cong)
Name[gl]=Chinés (Hong Kong)
Name[gu]=ચાઇનિઝ (હોંગ કોંગ)
Name[he]=סינית (הונג קונג)
Name[hi]=चीनी (हांग कांग)
Name[hne]=चीनी (हांग कांग)
Name[hr]=Kineski (Hong Kong)
Name[hsb]=Chinsce (Hong Kong)
Name[hu]=Kínai (hongkongi)
Name[ia]=Chinese (Hong Kong)
Name[id]=China (Hong Kong)
Name[is]=Kínverska (Hong Kong)
Name[it]=Cinese (Hong Kong)
Name[ja]=中国語 (香港)
Name[kk]=Қытайша (Сянган)
Name[km]=ចិន (ហុងកុង)
Name[kn]=ಹಾಂಗ್ ಕಾಂಗ್ ಚೀನೀ
Name[ko]=중국어 (홍콩)
Name[ku]=Çînî (Hong Kong)
Name[lb]=Chinesesch (Hong Kong)
Name[lt]=Kiniečių (Honkongo)
Name[lv]=Ķīniešu (Honkongas)
Name[mai]=चीनी (हाँगकाँग)
Name[mk]=Кинески (Хонг Конг)
Name[ml]=ചൈനീസ് (ഹോങ് കോങ്)
Name[mr]=चायनिज (हॉन्ग कॉन्ग)
Name[ms]=China (Hong Kong)
Name[nb]=Kinesisk (Hong kong)
Name[nds]=Chineesch (Hong Kong)
Name[ne]=चिनियाँ (हङकङ)
Name[nl]=Chinees (Hong Kong)
Name[nn]=Kinesisk (Hong Kong)
Name[oc]=Chinés (Hong Kong)
Name[or]=Chinese (Hong Kong)
Name[pa]=ਚੀਨੀ (ਹਾਂਗਕਾਂਗ)
Name[pl]=Chiński (Hong Kong)
Name[ps]=چينايي (هانګ کانګ)
Name[pt]=Chinês (Hong Kong)
Name[pt_BR]=Chinês (Hong Kong)
Name[ro]=Chineză (Hong Kong)
Name[ru]=Китайский (Гонконг)
Name[se]=Kiinnágiella (Hong Kong)
Name[si]=චීන (හොං කොං)
Name[sk]=Čínština (Hongkong)
Name[sl]=kitajsko (Hong Kong)
Name[sq]=Kineze (Hong Kong)
Name[sr]=кинески (хонконшки)
Name[sr@ijekavian]=кинески (хонконшки)
Name[sr@ijekavianlatin]=kineski (honkonški)
Name[sr@latin]=kineski (honkonški)
Name[sv]=Kinesiska (Hong Kong)
Name[ta]=சீனம் (ஹாங் காங்)
Name[te]=చైనీస్ (హాంగ్ కాంగ్)
Name[tg]=Хитоии Гон Конгӣ
Name[th]=ภาษาจีน (ฮ่องกง)
Name[tr]=Çince (Hong Kong)
Name[ug]=خەنزۇچە (شياڭگاڭ)
Name[uk]=Китайська (Гонконг)
Name[uz]=Xitoycha (Gongkong)
Name[uz@cyrillic]=Хитойча (Гонгконг)
-Name[vi]=Hoa (Hồng Kông)
+Name[vi]=Tiếng Trung (Hồng Kông)
Name[wa]=Chinwès (Hong Kong)
Name[x-test]=xxChinese (Hong Kong)xx
Name[zh_CN]=繁体中文(香港)
Name[zh_TW]=正體中文(香港)
[zh_TW]
Name=Chinese Traditional
Name[af]=Sjinees tradisioneel
Name[ar]=صينية تقليدية
Name[as]=চীনা পাৰম্পৰিক
Name[ast]=Chinu tradicional
Name[be]=Кітайская традыцыйная
Name[be@latin]=Kitajskaja tradycyjnaja
Name[bg]=Китайски традиционен
Name[bn]=পারম্পরিক চৈনিক
Name[bn_IN]=চিনা(পারম্পরিক)
Name[br]=Sinaeg da gustum
Name[bs]=Kineski(tradicionalni)
Name[ca]=Xinès tradicional
Name[ca@valencia]=Xinés tradicional
Name[cs]=Čínský (tradiční)
Name[csb]=Chińsczi Tradicëjny
Name[cy]=Tsieineeg Traddodiadol
Name[da]=Kinesisk traditionel
Name[de]=Chinesisch (Langzeichen)
Name[el]=Κινέζικα παραδοσιακά
Name[en_GB]=Chinese Traditional
Name[eo]=Ĉina, tradicia
Name[es]=Chino tradicional
Name[et]=Hiina (traditsiooniline)
Name[eu]=Txinatar tradizionala
Name[fa]=چینی سنتی
Name[fi]=Perinteinen kiina
Name[fr]=Chinois traditionnel
Name[fy]=Sjineesk (tradisjoniel)
Name[ga]=Sínis Thraidisiúnta
Name[gl]=Chinés tradicional
Name[gu]=પરંપરાગત ચાઇનિઝ
Name[he]=סינית מסורתית
Name[hi]=चीनी परम्परिक
Name[hne]=चीनी परम्परिक
Name[hr]=Kineski tradicionalan
Name[hsb]=Chinsce (tradicionalnje)
Name[hu]=Kínai (hagyományos)
Name[ia]=Chinese Traditional
Name[id]=China Tradisional
Name[is]=Hefðbundin kínverska
Name[it]=Cinese tradizionale
Name[ja]=中国語 繁体字
Name[kk]=Дәстүрлі қытайша
Name[km]=ចិន​បុរាណ
Name[kn]=ಸಾಂಪ್ರದಾಯಿಕ ಚಿನೀ
Name[ko]=중국어 번체
Name[ku]=Çîniya Kevneşopî
Name[lb]=Traditionellt Chinesesch
Name[lt]=Kinų tradicinė
Name[lv]=Ķīniešu tradicionālā
Name[mai]=चीनी पारम्परिक
Name[mk]=Кинески традиционален
Name[ml]=പുരാതന ചൈനീസ്
Name[mr]=पारंपारिक चिनी
Name[ms]=Chinese Traditional
Name[nb]=Tradisjonell kinesisk
Name[nds]=Traditschonell Chineesch
Name[ne]=चिनियाँ परम्परागत
Name[nl]=Chinees (Traditioneel)
Name[nn]=Kinesisk (tradisjonell)
Name[oc]=Chinés tradicional
Name[or]=Chinese Traditional
Name[pa]=ਚੀਨੀ ਮੂਲ
Name[pl]=Chiński tradycyjny
Name[ps]=چينايي هڅوبي
Name[pt]=Chinês Tradicional
Name[pt_BR]=Chinês tradicional
Name[ro]=Chineză tradițională
Name[ru]=Китайский (Тайвань)
Name[se]=Árbevirolaš kiinnágiella
Name[si]=චීන සාම්ප්‍රදායික
Name[sk]=Čínština (tradičná)
Name[sl]=tradicionalno kitajsko
Name[sq]=Kineze Tradicionale
Name[sr]=кинески, традиционални
Name[sr@ijekavian]=кинески, традиционални
Name[sr@ijekavianlatin]=kineski, tradicionalni
Name[sr@latin]=kineski, tradicionalni
Name[sv]=Traditionell kinesiska
Name[ta]=பழஞ்சீனம்
Name[te]=సాంప్రదాయక చైనీస్
Name[tg]=Хитоии Анъанавӣ
Name[th]=ภาษาจีนดั้งเดิม
Name[tr]=Geleneksel Çince
Name[ug]=مۇرەككەپ خەنزۇچە
Name[uk]=Китайська (традиційна)
Name[uz]=Anʼanaviy Xitoycha
Name[uz@cyrillic]=Анъанавий Хитойча
-Name[vi]=Hoa (truyền thống)
+Name[vi]=Trung Quốc phồn thể
Name[wa]=Chinwès tradicionel
Name[x-test]=xxChinese Traditionalxx
Name[zh_CN]=繁体中文
Name[zh_HK]=繁體中文
Name[zh_TW]=正體中文
[zu]
Name=Zulu
Name[af]=Zoeloe
Name[ar]=زولو
Name[as]=জুলু
Name[ast]=Zulú
Name[be]=Зулуская
Name[be@latin]=Zuluskaja
Name[bg]=Зулу
Name[bn]=জুলু
Name[bn_IN]=জুলু
Name[br]=Zouloued
Name[bs]=Zulu
Name[ca]=Zulu
Name[ca@valencia]=Zulu
Name[cs]=Zulu
Name[csb]=Zulusczi
Name[cy]=Zulu
Name[da]=Zulu
Name[de]=Zulu
Name[el]=Zulu
Name[en_GB]=Zulu
Name[eo]=Zulua
Name[es]=Zulú
Name[et]=Suulu
Name[eu]=Zuluera
Name[fa]=ناتالی
Name[fi]=Zulu
Name[fr]=Zoulou
Name[fy]=Zulu
Name[ga]=Súlúis
Name[gl]=Zulú
Name[gu]=ઝુલુ
Name[he]=זולו
Name[hi]=ज़ुलु
Name[hne]=जुलु
Name[hr]=Zulu
Name[hsb]=Zulu
Name[hu]=Zulu
Name[ia]=Zulu
Name[id]=Zulu
Name[is]=Zúlú
Name[it]=Zulu
Name[ja]=ズールー語
Name[kk]=Зулу
Name[km]=ហ្ស៊ូលូ
Name[kn]=ಜುಲು
Name[ko]=줄루어
Name[ku]=Zûlû
Name[lb]=Zulu
Name[lt]=Zulu
Name[lv]=Zulu
Name[mai]=जूलु
Name[mk]=Зулу
Name[ml]=സുലു
Name[mr]=ज़ुलु
Name[ms]=Zulu
Name[nb]=Zulu
Name[nds]=Zulu
Name[ne]=जुलु
Name[nl]=Zulu
Name[nn]=Zulu
Name[oc]=Zolo
Name[or]=ଜୁଲୁ
Name[pa]=ਜ਼ੂਲੂ
Name[pl]=Zuluski
Name[ps]=زولو
Name[pt]=Zulu
Name[pt_BR]=Zulu
Name[ro]=Zulu
Name[ru]=Зулусский
Name[se]=Zulugiella
Name[si]=සූලු
Name[sk]=Zuluština
Name[sl]=zulu
Name[sq]=Zulu
Name[sr]=зулу
Name[sr@ijekavian]=зулу
Name[sr@ijekavianlatin]=zulu
Name[sr@latin]=zulu
Name[sv]=Zulu
Name[ta]=சுலு
Name[te]=జూలు
Name[tg]=Зулу
Name[th]=ภาษาซูลู
Name[tr]=Zulu
Name[ug]=زۇلۇچە
Name[uk]=Зулуська
Name[uz]=Zulucha
Name[uz@cyrillic]=Зулуча
-Name[vi]=Xu-lu
+Name[vi]=Zulu
Name[wa]=Zoulou
-Name[x-test]=xxZuluxx
Name[xh]=Isizulu
+Name[x-test]=xxZuluxx
Name[zh_CN]=祖鲁语
Name[zh_HK]=袓魯語
Name[zh_TW]=袓魯語
diff --git a/kdecore/localization/entry.desktop b/kdecore/localization/entry.desktop
index 5cedf795da..d1b143d0f5 100644
--- a/kdecore/localization/entry.desktop
+++ b/kdecore/localization/entry.desktop
@@ -1,54 +1,55 @@
[KCM Locale]
Name=US English
Name[bg]=Американски английски
Name[bs]=Američki engleski
Name[ca]=Anglès US
Name[ca@valencia]=Anglés US
Name[cs]=Anglický (US)
Name[da]=Engelsk (US)
Name[de]=US-Englisch
Name[el]=Αγγλική ΗΠΑ
Name[en_GB]=US English
Name[es]=Inglés de EE. UU.
Name[et]=USA inglise
Name[eu]=AEBetako Ingelesa
Name[fa]=انگلیسی امریکایی
Name[fi]=Amerikanenglanti
Name[fr]=Anglais américain
Name[gl]=Inglés americano
Name[hr]=Američki engleski
Name[hu]=Angol (amerikai)
Name[ia]=Anglese de SU
Name[is]=Bandarísk enska (en-us
Name[it]=Inglese americano
Name[ja]=米語
Name[kk]=Ағылшынша (АҚШ)
Name[km]=អង់គ្លេស សហរដ្ឋអាមេរិក
Name[ko]=미국 영어
Name[lt]=JAV anglų
Name[lv]=ASV angļu
Name[nb]=Engelsk (USA)
Name[nds]=Engelsch (US)
Name[nl]=VS Engels
Name[pa]=ਅਮਰੀਕੀ ਅੰਗਰੇਜ਼ੀ
Name[pl]=Angielski amerykański
Name[pt]=Inglês (EUA)
Name[pt_BR]=Inglês dos EUA
Name[ro]=Engleză SUA
Name[ru]=Английский (США)
Name[se]=Amerihkálaš eŋgelasgiella
Name[si]=එ.ජ. ඉංග්‍රීසි
Name[sk]=Americká angličtina
Name[sr]=амерички енглески
Name[sr@ijekavian]=амерички енглески
Name[sr@ijekavianlatin]=američki engleski
Name[sr@latin]=američki engleski
Name[sv]=Amerikansk engelska
Name[th]=ภาษาอังกฤษ อเมริกัน
Name[tr]=Amerikan İngilizcesi
Name[ug]=ئامېرىكا ئىنگلىزچە
Name[uk]=Англійська (США)
+Name[vi]=Tiếng Anh (Mỹ)
Name[wa]=Inglès des Estats-Unis
Name[x-test]=xxUS Englishxx
Name[zh_CN]=美国英语
Name[zh_TW]=美式英語
diff --git a/kdecore/network/kssld/kssld.desktop b/kdecore/network/kssld/kssld.desktop
index 05890ee522..c3fa3fff01 100644
--- a/kdecore/network/kssld/kssld.desktop
+++ b/kdecore/network/kssld/kssld.desktop
@@ -1,123 +1,125 @@
[Desktop Entry]
Type=Service
X-KDE-ServiceTypes=KDEDModule
X-KDE-Library=kssld
X-KDE-DBus-ModuleName=kssld
X-KDE-Kded-autoload=false
X-KDE-Kded-load-on-demand=true
Name=SSL Certificate Policy
Name[bg]=Политика за SSL-сертификати
Name[bs]=SSL certifikat o privatnosti
Name[ca]=Política de certificats SSL
Name[ca@valencia]=Política de certificats SSL
Name[cs]=Chování SSL certifikátů
Name[da]=Politik for SSL-certifikat
Name[de]=SSL-Zertifikat-Regel
Name[el]=Πολιτική πιστοποιητικών SSL
Name[en_GB]=SSL Certificate Policy
Name[es]=Política de certificados SSL
Name[et]=SSL sertifikadi reegel
Name[eu]=SSL ziurtagiri politika
Name[fi]=SSL-varmennekäytäntö
Name[fr]=Politique de certificats SSL
Name[ga]=Polasaí Teastas SSL
Name[gl]=Política de certificados de SSL
Name[hr]=SSL certificirana pravila
Name[hu]=SSL tanúsítvány-házirend
Name[ia]=Politica del certificato SSL
Name[id]=Kebijakan Sertifikat SSL
Name[is]=SSL skilríkjastefna
Name[it]=Regole certificati SSL
Name[ja]=SSL 証明書のポリシー
Name[kk]=SSL күәлік ережесі
Name[km]=គោលនយោបាយ​វិញ្ញាបនបត្រ SSL
Name[kn]=SSL ಪ್ರಮಾಣಪತ್ರ ನೀತಿ
Name[ko]=SSL 인증서 정책
Name[ku]=Polîçeya Bawernameya SSL
Name[lt]=SSL liudijimų politika
Name[lv]=SSL sertifikātu politika
Name[ms]=Polisi Sijil SSL
Name[nb]=SSL-sertifikatpraksis
Name[nds]=SSL-Zertifikatregel
Name[nl]=SSL-certificaat-beleid
Name[pa]=SSL ਸਰਟੀਫਿਕੇਟ ਪਾਲਸੀ
Name[pl]=Polityka certyfikatów SSL
Name[pt]=Política de Certificados SSL
Name[pt_BR]=Política de certificados SSL
Name[ro]=Politică de certificate SSL
Name[ru]=Политика сертификатов SSL
Name[se]=SSL-sertifikáhttanjuolggadusat
Name[si]=SSL සහතික ප්‍රතිපත්තිය
Name[sk]=Politika SSL certifikátov
Name[sl]=Pravila za potrdila SSL
Name[sr]=Смернице ССЛ сертификата
Name[sr@ijekavian]=Смјернице ССЛ сертификата
Name[sr@ijekavianlatin]=Smjernice SSL sertifikata
Name[sr@latin]=Smernice SSL sertifikata
Name[sv]=SSL-certifikatpolicy
Name[ta]=SSL சான்று கொள்கை
Name[tg]=Сиёсати иҷозатномаи SSL
Name[th]=นโยบายสำหรับใบรับรอง SSL
Name[tr]=SSL Sertifika Politikası
Name[ug]=SSL گۇۋاھنامە تەدبىرى
Name[uk]=Правила для сертифікатів SSL
+Name[vi]=Chế độ chứng chỉ SSL
Name[wa]=Politike d' acertinaedje SSL
Name[x-test]=xxSSL Certificate Policyxx
Name[zh_CN]=SSL 证书策略
Name[zh_TW]=SSL 憑證政策
Comment=Provides SSL certificate policy to applications
Comment[bg]=Осигурява управление на SSL-сертификати за приложения
Comment[bs]=Pruža programima smjernice za SSL sertifikate
Comment[ca]=Proporciona la política de certificats SSL a les aplicacions
Comment[ca@valencia]=Proporciona la política de certificats SSL a les aplicacions
Comment[cs]=Poskytuje politiky SSL certifikátů pro aplikace
Comment[da]=Leverer politik for SSL-certifikat til programmer
Comment[de]=SSL-Zertifikat-Regel den Anwendungen zur Verfügung stellen
Comment[el]=Παρέχει την πολιτική πιστοποιητικών SSL στις εφαρμογές
Comment[en_GB]=Provides SSL certificate policy to applications
Comment[es]=Proporciona a las aplicaciones una política de certificados SSL
Comment[et]=SSL sertifikaadi reegli edastamine rakendustele
Comment[eu]=Aplikazioei SSL ziurtagiri politika hornitzen die
Comment[fi]=Tarjoaa SSL-varmennekäytännön sovelluksille
Comment[fr]=Fournit une politique de certificats SSL aux applications
Comment[ga]=Soláthraíonn sé polasaí teastas SSL d'fheidhmchláir
Comment[gl]=Fornece a política de certificados de SSL para os programas
Comment[hr]=Pruža SSL certificirana pravila aplikacijama
Comment[hu]=SSL tanúsítvány-házirend biztosítása alkalmazásokhoz
Comment[ia]=Il forni le politica de certification SSL pro le applicationes
Comment[id]=Menyediakan kebijakan sertifikat SSL bagi aplikasi
Comment[is]=Gefur út stefnu fyrir SSL-skilríki til forrita
Comment[it]=Fornisce alle applicazioni regole per i certificati SSL
Comment[ja]=アプリケーションに SSL 証明書のポリシーを提供
Comment[kk]=Қолданбалар үшін SSL күәлік ережелерін орнату
Comment[km]=ផ្ដល់​គោលនយោបាយ​វិញ្ញាបនបត្រ​ SSL ដល់​កម្មវិធី
Comment[ko]=프로그램에 SSL 인증서 정책을 알려 줍니다
Comment[ku]=Ji bo sepanan plîçeya bawernameya SSL peyde dike
Comment[lv]=Nodrošina programmas ar SSL politiku
Comment[nb]=Forsyner programmer med praksis for SSL-sertifikater
Comment[nds]=Stellt SSL-Zertifikaatregeln för Programmen praat.
Comment[nl]=Levert het SSL-certificaat-beleid aan applicaties
Comment[pa]=ਐਪਲੀਕੇਸ਼ਨਾਂ ਲਈ SSL ਸਰਟੀਫਿਕੇਟ ਪਾਲਸੀ ਦਿੰਦਾ ਹੈ
Comment[pl]=Udostępnia politykę certyfikatów SSL programom
Comment[pt]=Fornece uma política de certificados SSL às aplicações
Comment[pt_BR]=Fornece uma política de certificados SSL aos aplicativos
Comment[ro]=Oferă applicațiilor politică de certificate SSL
Comment[ru]=Политика сертификатов SSL для приложений
Comment[se]=Addá sertifikáhttanjuolggadusaid prográmmaide
Comment[sk]=Poskytuje politiku SSL certifikátov pre aplikácie
Comment[sl]=Programom ponuja dostop do pravil za potrdila SSL
Comment[sr]=Пружа програмима смернице за ССЛ сертификате
Comment[sr@ijekavian]=Пружа програмима смјернице за ССЛ сертификате
Comment[sr@ijekavianlatin]=Pruža programima smjernice za SSL sertifikate
Comment[sr@latin]=Pruža programima smernice za SSL sertifikate
Comment[sv]=Tillhandahåller SSL-certifikatpolicyn till program
Comment[ta]=பயன்பாடுகளுக்கு SSL சான்று கொள்கை வழங்குகிறது
Comment[tg]=Сиёсати иҷозатномаи SSL-ро ба барномаҳо дастрас мекунад
-Comment[th]=กำหนดนโยบายการใช้ใบรับรอง SSL ให้กับโปรแกรมต่างๆ
+Comment[th]=กำหนดนโยบายการใช้ใบรับรอง SSL ให้กับโปรแกรมต่าง ๆ
Comment[tr]=Uygulamalar için SSL sertifika politikası sağlar
Comment[ug]=پروگراممىغا SSL گۇۋاھنامە تەدبىرى تەمىنلەيدۇ
Comment[uk]=Правила роботи з сертифікатами SSL для програм
+Comment[vi]=Cung cấp các chế độ chứng chỉ SSL cho ứng dụng
Comment[wa]=Dene li politike d' acertinaedje SSL ås programes
Comment[x-test]=xxProvides SSL certificate policy to applicationsxx
Comment[zh_CN]=向应用程序提供 SSL 证书策略
Comment[zh_TW]=提供 SSL 憑證政策給應用程式
diff --git a/kdecore/services/kplugininfo.desktop b/kdecore/services/kplugininfo.desktop
index 4cb787e601..b3f1db9563 100644
--- a/kdecore/services/kplugininfo.desktop
+++ b/kdecore/services/kplugininfo.desktop
@@ -1,130 +1,130 @@
[Desktop Entry]
Type=ServiceType
X-KDE-ServiceType=KPluginInfo
Name=KDE Plugin Information
Name[af]=KDE inpropmodule Informasie
Name[ar]=معلومات ملحقات كيدي
Name[as]=KDE প্লাগ-ইনৰ তথ্য
Name[ast]=Información del complementu de KDE
Name[be]=Звесткі пра ўтулкі KDE
Name[be@latin]=Źviestki pra plugin dla KDE
Name[bg]=Информация за приставките в KDE
Name[bn]=কে.ডি.ই. প্লাগ-ইন তথ্য
Name[bn_IN]=KDE প্লাগ-ইন সংক্রান্ত তথ্য
Name[br]=Titouroù al lugent KDE
Name[bs]=Podaci o KDE priključku
Name[ca]=Connector informatiu de KDE
Name[ca@valencia]=Connector informatiu de KDE
Name[cs]=Informace o modulech KDE
Name[csb]=Wëdowiédzô ò pluginsach KDE
Name[cy]=Gwybodaeth Ategynnau KDE
Name[da]=KDE's plugin-information
Name[de]=KDE-Modul-Information
Name[el]=Πληροφορίες πρόσθετου KDE
Name[en_GB]=KDE Plugin Information
Name[eo]=KDE-kromprogramaj informoj
Name[es]=Información de los complementos de KDE
Name[et]=KDE plugina info
Name[eu]=KDEren plugin-en informazioa
Name[fa]=اطلاعات وصله KDE
Name[fi]=KDE:n lisäosatiedot
Name[fr]=Information sur le module KDE
Name[fy]=KDE Plugin ynformaasje
Name[ga]=Eolas Bhreiseán KDE
Name[gl]=Información sobre os engadidos de KDE
Name[gu]=KDE પ્લગઈન જાણકારી
Name[he]=מידע על תוסף של KDE
Name[hi]=केडीई प्लगइन जानकारी
Name[hne]=केडीई प्लगइन जानकारी
Name[hr]=Podaci o KDE priključku
Name[hsb]=KDE Informacija wo zašćěpkach
Name[hu]=A KDE bővítőmodulok áttekintése
Name[ia]=Information de Plugin de KDE
Name[id]=Informasi Plugin KDE
Name[is]=KDE íforritsupplýsingar
Name[it]=Informazioni plugin KDE
Name[ja]=KDE プラグイン情報
Name[kk]=KDE плагин мәліметі
Name[km]=ព័ត៌មាន​កម្មវិធី​ជំនួយ​របស់ KDE
Name[kn]=KDE ಮಿಲಿತಾನ್ವಯ (plugin) ಮಾಹಿತಿ
Name[ko]=KDE 플러그인 정보
Name[ku]=Agahiyên Pêveka KDE
Name[lb]=KDE-Plugininformatioun
Name[lt]=KDE priedų informacija
Name[lv]=KDE spraudņa informācija
Name[mai]=केडीई प्लगइन जानकारी
Name[mk]=KDE Информација за приклучок
Name[ml]=കെഡിഇയിലെ സംയോജകത്തെപ്പറ്റിയുള്ള വിവരങ്ങള്‍
Name[mr]=KDE प्लगइन माहिती
Name[ms]=Maklumat Plugmasuk KDE
Name[nb]=Informasjon om KDE-programtillegg
Name[nds]=Plugin-Informatschoon
Name[ne]=केडीई प्लगइन सूचना
Name[nl]=KDE-plugininformatie
Name[nn]=Informasjon om KDE-programtillegg
Name[or]=KDE Plugin ସୂଚନା
Name[pa]=KDE ਪਲੱਗਇਨ ਜਾਣਕਾਰੀ
Name[pl]=Informacja o wtyczkach KDE
Name[ps]=کډي لګون خبرتياوې
Name[pt]=Informação do 'Plugin' do KDE
Name[pt_BR]=Informações sobre os plug-ins do KDE
Name[ro]=Informații modul KDE
Name[ru]=Сведения о расширении KDE
Name[se]=Dieđut KDE-moduvlla birra
Name[si]=KDE ප්ලගීන තොරතුරු
Name[sk]=Informácia o module KDE
Name[sl]=Informacija o vstavkih v KDE
Name[sq]=Informacion Plugini KDE
Name[sr]=Подаци о КДЕ прикључку
Name[sr@ijekavian]=Подаци о КДЕ прикључку
Name[sr@ijekavianlatin]=Podaci o KDE priključku
Name[sr@latin]=Podaci o KDE priključku
Name[sv]=KDE-insticksinformation
Name[ta]=KDE செருகி தகவல்
Name[te]=కెడిఈ ప్లగిన్ సమాచారం
Name[tg]=Иттилооти васлкунаки KDE
Name[th]=ข้อมูลโปรแกรมเสริมของ KDE
Name[tr]=KDE Eklenti Bilgisi
Name[ug]=KDE قىستۇرما ئۇچۇرى
Name[uk]=Інформація про додаток до KDE
Name[uz]=KDE plagin haqida maʼlumot
Name[uz@cyrillic]=KDE плагин ҳақида маълумот
-Name[vi]=Thông tin bổ sung KDE
+Name[vi]=Thông tin phần bổ sung KDE
Name[wa]=Infôrmåcion sol tchôke-divins di KDE
Name[x-test]=xxKDE Plugin Informationxx
Name[zh_CN]=KDE 插件信息
Name[zh_HK]=KDE 外掛資訊
Name[zh_TW]=KDE 外掛資訊
[PropertyDef::X-KDE-PluginInfo-Author]
Type=QString
[PropertyDef::X-KDE-PluginInfo-Email]
Type=QString
[PropertyDef::X-KDE-PluginInfo-Name]
Type=QString
[PropertyDef::X-KDE-PluginInfo-Version]
Type=QString
[PropertyDef::X-KDE-PluginInfo-Website]
Type=QString
[PropertyDef::X-KDE-PluginInfo-Category]
Type=QString
[PropertyDef::X-KDE-PluginInfo-Depends]
Type=QStringList
[PropertyDef::X-KDE-PluginInfo-License]
Type=QString
[PropertyDef::X-KDE-PluginInfo-EnabledByDefault]
Type=bool
[PropertyDef::X-KDE-PluginInfo-Immutable]
Type=bool
[PropertyDef::X-KDE-PluginInfo-AllowEmptySettings]
Type=bool
diff --git a/kdecore/tests/kurltest.cpp b/kdecore/tests/kurltest.cpp
index 6a592a910d..b659512854 100644
--- a/kdecore/tests/kurltest.cpp
+++ b/kdecore/tests/kurltest.cpp
@@ -1,2112 +1,2115 @@
// krazy:excludeall=qclasses
/* This file is part of the KDE libraries
Copyright (c) 1999-2005 Waldo Bastian <bastian@kde.org>
Copyright (c) 2000-2005 David Faure <faure@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License version 2 as published by the Free Software Foundation.
This library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
// -*- mode: c++; c-basic-offset: 2 -*-
#include "kurltest.h"
#include "qtest_kde.h"
#include "kurltest.moc"
QTEST_KDEMAIN_CORE( KUrlTest )
#include <config.h>
#include <kcmdlineargs.h>
#include "kurl.h"
#include <kdebug.h>
#include <kglobal.h>
#include <kcharsets.h>
#include <kuser.h>
#include <QtCore/QTextCodec>
#include <QtCore/QDataStream>
#include <QtCore/QMap>
#include <stdio.h>
#include <stdlib.h>
//QCOMPARE cannot be used to strictly check for empty or null QString as it treats QString("") == QString()
#define QSTREMPTY(_str) QVERIFY(!_str.isNull() && _str.isEmpty())
void KUrlTest::testEmptyURL()
{
KUrl emptyURL;
QVERIFY( !emptyURL.isValid() );
QVERIFY( emptyURL.isEmpty() );
QVERIFY( emptyURL.prettyUrl().isEmpty() );
QCOMPARE( emptyURL.url(), QString() );
QVERIFY( emptyURL.url().isEmpty() );
QVERIFY( !emptyURL.url().isNull() ); // well, a null string would be correct too...
QVERIFY(!emptyURL.isLocalFile());
KUrl emptyStringURL("");
QVERIFY( !emptyStringURL.isValid() );
QVERIFY( emptyStringURL.isEmpty() );
QVERIFY( emptyStringURL.url().isEmpty() );
QVERIFY( !emptyStringURL.url().isNull() );
QCOMPARE( emptyURL, emptyStringURL );
// Roundtrip via .url()
KUrl emptyCopy( emptyURL.url() );
QCOMPARE( emptyURL, emptyCopy );
KUrl emptyStringCopy = KUrl( emptyStringURL.url() );
QCOMPARE( emptyStringURL, emptyCopy );
KUrl fileURL( "file:/" );
QVERIFY( !fileURL.isEmpty() );
fileURL = "file:///";
QVERIFY( !fileURL.isEmpty() );
KUrl udir;
QCOMPARE( udir.url(), QString() );
QVERIFY( udir.isEmpty() );
QVERIFY( !udir.isValid() );
udir = udir.upUrl();
QVERIFY( udir.upUrl().isEmpty() );
}
void KUrlTest::testIsValid()
{
KUrl url1( "gg:www.kde.org" );
QVERIFY( url1.isValid() );
url1 = "KDE";
QVERIFY( url1.isValid() ); // KDE3 difference: was FALSE
url1 = "$HOME/.kde/share/config";
QVERIFY( url1.isValid() ); // KDE3 difference: was FALSE
}
void KUrlTest::testSetQuery()
{
KUrl url1 = KUrl( QByteArray( "http://www.kde.org/foo.cgi?foo=bar" ) );
QCOMPARE( url1.query(), QString("?foo=bar") );
url1.setQuery( "toto=titi&kde=rocks" );
QCOMPARE( url1.query(), QString("?toto=titi&kde=rocks") );
url1.setQuery( "?kde%20rocks&a=b" ); // must be encoded already, as documented
QCOMPARE( url1.query(), QString("?kde%20rocks&a=b") ); // encoded, as documented
url1.setQuery( "?" );
QCOMPARE( url1.query(), QString("?") );
url1.setQuery( "" );
QCOMPARE( url1.query(), QString("?") );
url1.setQuery( QString() );
QCOMPARE( url1.query(), QString() );
}
void KUrlTest::testEmptyNullReference()
{
KUrl url1 = KUrl("http://www.kde.org");
QVERIFY( !url1.hasRef() );
QVERIFY( !url1.hasHTMLRef() );
QVERIFY( url1.ref().isNull() );
QVERIFY( url1.htmlRef().isNull() );
QVERIFY( url1.encodedHtmlRef().isNull() );
url1 = "http://www.kde.org#";
QVERIFY( url1.hasRef() );
QVERIFY( url1.hasHTMLRef() );
QSTREMPTY( url1.ref() );
QSTREMPTY( url1.htmlRef() );
QSTREMPTY( url1.encodedHtmlRef() );
}
void KUrlTest::testSetRef()
{
KUrl url1 = KUrl( QByteArray( "http://www.kde.org/foo.cgi#foo=bar" ) );
QCOMPARE( url1.ref(), QString("foo%3Dbar" ) ); // KDE3 difference: was foo=bar
#if 0// ditto (TODO)
url1.setRef( "toto=titi&kde=rocks" );
QCOMPARE( url1.ref(), QString("toto=titi&kde=rocks" ) );
url1.setRef( "kde=rocks&a=b" );
QCOMPARE( url1.ref(), QString("kde=rocks&a=b" ) );
url1.setRef( "#" );
QCOMPARE( url1.ref(), QString("#" ) );
#endif
url1.setRef( "" );
QSTREMPTY( url1.ref() );
QCOMPARE( url1.url(), QString("http://www.kde.org/foo.cgi#") );
url1.setRef( QString() );
QVERIFY( url1.ref().isNull() );
QCOMPARE( url1.url(), QString("http://www.kde.org/foo.cgi") );
}
void KUrlTest::testSetHTMLRef()
{
KUrl url1 = KUrl( QByteArray( "http://www.kde.org/foo.cgi#foo=bar" ) );
QCOMPARE( url1.htmlRef(), QString("foo=bar") );
url1.setHTMLRef( "toto=titi&kde=rocks" );
QCOMPARE( url1.htmlRef(), QString("toto=titi&kde=rocks") );
url1.setHTMLRef( "kde=rocks&a=b" );
QCOMPARE( url1.htmlRef(), QString("kde=rocks&a=b") );
url1.setHTMLRef( "#" );
QCOMPARE( url1.htmlRef(), QString("#") );
QCOMPARE( url1.ref(), QString("%23") ); // it's encoded
url1.setHTMLRef( "" );
QSTREMPTY( url1.htmlRef() );
QCOMPARE( url1.url(), QString("http://www.kde.org/foo.cgi#") );
url1.setHTMLRef( QString() );
QVERIFY( url1.htmlRef().isNull() );
QCOMPARE( url1.url(), QString("http://www.kde.org/foo.cgi") );
}
void KUrlTest::testQUrl()
{
QUrl url1( "file:///home/dfaure/my#%2f" );
QCOMPARE( url1.toString(), QString( "file:///home/dfaure/my#%2f" ) );
#ifdef Q_WS_WIN
QUrl url2( "file:///c:/home/dfaure/my#%2f" );
QCOMPARE( url2.toString(), QString( "file:///c:/home/dfaure/my#%2f" ) );
#endif
// Show how toString() is confusing
QUrl url3 = QUrl::fromLocalFile( "/home/dfaure/hash#file" );
QCOMPARE( url3.toString(), QString( "file:///home/dfaure/hash#file" ) ); // ouch
QString url3Str = url3.toString();
QUrl url4(url3Str);
QCOMPARE( url4.toString(), url3Str );
QVERIFY( url3 != url4 ); // unexpected, huh?
//QCOMPARE( QString::fromLatin1(url4.toEncoded()), QString::fromLatin1(url3.toEncoded()) ); // fails
}
void KUrlTest::testIsLocalFile()
{
+ KUrl trash("trash:/");
+ QVERIFY(!trash.isLocalFile());
+
KUrl local_file_1("file://localhost/my/file");
QVERIFY( local_file_1.isLocalFile() );
KUrl local_file_2("file://www.kde.org/my/file");
QVERIFY( !local_file_2.isLocalFile() );
KUrl local_file_3;
local_file_3.setHost(getenv("HOSTNAME"));
local_file_3.setPath("/my/file");
//qDebug("URL=%s\n", qPrintable( local_file_3.url() ));
QVERIFY( local_file_3.isLocalFile() );
KUrl local_file_4("file:///my/file");
QVERIFY( local_file_4.isLocalFile() );
#ifdef Q_WS_WIN
KUrl local_file_4a("file:///c:/my/file");
QVERIFY( local_file_4a.isLocalFile() );
#endif
KUrl local_file_5;
local_file_5.setPath("/foo?bar");
QCOMPARE( local_file_5.url(), QString("file:///foo%3Fbar") );
#ifdef Q_WS_WIN
KUrl local_file_5a;
local_file_5a.setPath("c:/foo?bar");
QCOMPARE( local_file_5a.url(), QString("file:///c:/foo%3Fbar") );
#endif
}
void KUrlTest::testSimpleMethods() // to test parsing, mostly
{
KUrl kde( "http://www.kde.org" );
QVERIFY( kde.isValid() );
QCOMPARE( kde.port(), -1 ); // KDE3 DIFFERENCE: was 0.
KUrl mlc( "http://mlc:80/" );
QVERIFY( mlc.isValid() );
QCOMPARE( mlc.port(), 80 );
QCOMPARE( mlc.path(), QString("/") );
KUrl ulong("https://swww.gad.de:443/servlet/CookieAccepted?MAIL=s@gad.de&VER=25901");
QCOMPARE(ulong.host(),QString("swww.gad.de") );
QCOMPARE(ulong.path(),QString("/servlet/CookieAccepted") );
KUrl fileURL( "file:///home/dfaure/myfile" );
QCOMPARE( fileURL.url(), QString("file:///home/dfaure/myfile") );
QCOMPARE( fileURL.path(), QString("/home/dfaure/myfile") );
QVERIFY( !fileURL.hasRef() );
QString u1 = "file:/home/dfaure/my#myref";
KUrl url1(u1);
// KDE3 difference: QUrl doesn't resolve file:/ into file:///
QCOMPARE( url1.url(), QString("file:///home/dfaure/my#myref") );
QVERIFY( url1.hasRef() );
QVERIFY( url1.hasHTMLRef() );
QVERIFY( !url1.hasSubUrl() );
QCOMPARE( url1.htmlRef(), QString("myref") );
QCOMPARE( url1.upUrl().url(), QString("file:///home/dfaure/") );
#if 0
QUrl qurl = QUrl::fromEncoded( "file:///home/dfaure/my#%23" );
printf( "toString = %s\n", qurl.toString().toLatin1().constData() );
printf( "toEncoded = %s\n", qurl.toEncoded().data() );
qurl = QUrl::fromEncoded( "file:///home/dfaure/my#%2f" );
printf( "toString = %s\n", qurl.toString().toLatin1().constData() );
printf( "toEncoded = %s\n", qurl.toEncoded().data() );
qurl = QUrl::fromEncoded( "file:///home/dfaure/my#/" );
printf( "toString = %s\n", qurl.toString().toLatin1().constData() );
printf( "toEncoded = %s\n", qurl.toEncoded().data() );
#endif
u1 = "file:///home/dfaure/my#%2f";
url1 = u1;
// KDE3: was %2f, Qt-4.0 to 4.4: #/, bad. 4.5: %2f again, good
#if QT_VERSION < 0x040500
QCOMPARE( url1.url(), QString("file:///home/dfaure/my#/") );
#else
QCOMPARE( url1.url(), QString("file:///home/dfaure/my#%2f") );
#endif
QVERIFY( url1.hasRef() );
QVERIFY( url1.hasHTMLRef() );
QVERIFY( !url1.hasSubUrl() );
QCOMPARE( url1.ref().toLower(), QString("%2f") );
QCOMPARE( url1.encodedHtmlRef().toLower(), QString("%2f") );
QCOMPARE( url1.htmlRef(), QString("/") );
u1 = "file:///home/dfaure/my#%23";
url1 = u1;
QCOMPARE( url1.url(), QString("file:///home/dfaure/my#%23") );
QVERIFY( url1.hasRef() );
QVERIFY( url1.hasHTMLRef() );
QVERIFY( !url1.hasSubUrl() );
QCOMPARE( url1.ref(), QString("%23") );
QCOMPARE( url1.encodedHtmlRef(), QString("%23") );
QCOMPARE( url1.htmlRef(), QString("#") );
#if 0 // TODO
url1 = KUrl(url1, "#%6a");
QCOMPARE( url1.url(), QString("file:///home/dfaure/my#%6a") );
QVERIFY( url1.hasRef() );
QVERIFY( url1.hasHTMLRef() );
QVERIFY( !url1.hasSubUrl() );
QCOMPARE( url1.ref(), QString("j") );
QCOMPARE( url1.encodedHtmlRef().toLower(), QString("%6a") );
QCOMPARE( url1.htmlRef(), QString("j") );
#endif
u1 = "file:///home/dfaure/my#myref";
url1 = u1;
QCOMPARE( url1.url(), QString("file:///home/dfaure/my#myref") );
QVERIFY( url1.hasRef() );
QVERIFY( url1.hasHTMLRef() );
QVERIFY( !url1.hasSubUrl() );
QCOMPARE( url1.htmlRef(), QString("myref") );
QCOMPARE( url1.upUrl().url(), QString("file:///home/dfaure/") );
u1 = "file:/opt/kde2/qt2/doc/html/showimg-main-cpp.html#QObject::connect";
url1 = u1;
QCOMPARE( url1.url(), QString("file:///opt/kde2/qt2/doc/html/showimg-main-cpp.html#QObject::connect") );
QVERIFY( url1.hasRef() );
QVERIFY( url1.hasHTMLRef() );
QVERIFY( !url1.hasSubUrl() );
QCOMPARE( url1.ref(), QString("QObject%3A%3Aconnect") );
QCOMPARE( url1.htmlRef(), QString("QObject::connect") );
QCOMPARE( url1.upUrl().url(), QString("file:///opt/kde2/qt2/doc/html/") );
u1 = "file:///opt/kde2/qt2/doc/html/showimg-main-cpp.html#QObject::connect";
url1 = u1;
QCOMPARE( url1.url(), QString("file:///opt/kde2/qt2/doc/html/showimg-main-cpp.html#QObject::connect") );
QVERIFY( url1.hasRef() );
QVERIFY( url1.hasHTMLRef() );
QVERIFY( !url1.hasSubUrl() );
QCOMPARE( url1.ref(), QString("QObject%3A%3Aconnect") );
QCOMPARE( url1.htmlRef(), QString("QObject::connect") );
QCOMPARE( url1.upUrl().url(), QString("file:///opt/kde2/qt2/doc/html/") );
u1 = "file:/opt/kde2/qt2/doc/html/showimg-main-cpp.html#QObject:connect";
url1 = u1;
QCOMPARE( url1.url(), QString("file:///opt/kde2/qt2/doc/html/showimg-main-cpp.html#QObject:connect") );
QVERIFY( url1.hasRef() );
QVERIFY( url1.hasHTMLRef() );
QVERIFY( !url1.hasSubUrl() );
QCOMPARE( url1.ref(), QString("QObject%3Aconnect") );
QCOMPARE( url1.htmlRef(), QString("QObject:connect") );
QCOMPARE( url1.upUrl().url(), QString("file:///opt/kde2/qt2/doc/html/") );
KUrl carsten;
carsten.setPath("/home/gis/src/kde/kdelibs/kfile/.#kfiledetailview.cpp.1.18");
QCOMPARE( carsten.path(), QString("/home/gis/src/kde/kdelibs/kfile/.#kfiledetailview.cpp.1.18") );
KUrl longUserName("http://thisisaverylongusername@foobar.com/");
QCOMPARE(longUserName.prettyUrl(), QString("http://thisisaverylongusername@foobar.com/"));
QCOMPARE(KUrl(longUserName.prettyUrl()).url(), QString("http://thisisaverylongusername@foobar.com/"));
KUrl whitespaceInUser("http://www.google.com%20%20%20%20%20@foobar.com/");
QCOMPARE(whitespaceInUser.prettyUrl(), QString("http://www.google.com%20%20%20%20%20@foobar.com/"));
KUrl whitespaceInPath("http://www.google.com/foo%20bar/");
QCOMPARE(whitespaceInPath.prettyUrl(), QString("http://www.google.com/foo bar/"));
KUrl whitespaceInPath2("http://www.google.com/foo%20%20%20%20%20%20%20bar/");
QCOMPARE(whitespaceInPath2.prettyUrl(), QString("http://www.google.com/foo%20%20%20%20%20%20 bar/"));
KUrl charles;
charles.setPath( "/home/charles/foo%20moo" );
QCOMPARE( charles.path(), QString("/home/charles/foo%20moo") );
KUrl charles2("file:/home/charles/foo%20moo");
QCOMPARE( charles2.path(), QString("/home/charles/foo moo") );
//NOTE this test should be ran in UTF8 locale
KUrl percentEncodedQuery( "http://mail.yandex.ru/message_part/%D0%9A%D1%80%D0%B8%D1%82%D0%B5%D1%80%D0%B8%D0%B8%20%D0%BE%D1%86%D0%B5%D0%BD%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F%20%D0%BE%D1%80%D0%BB%D0%BE%D0%B2%D0%BE%D0%B9.rar?hid=1.1&mid=391.56424458.99241672611486679803334485488&name=%D0%9A%D1%80%D0%B8%D1%82%D0%B5%D1%80%D0%B8%D0%B8%20%D0%BE%D1%86%D0%B5%D0%BD%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F%20%D0%BE%D1%80%D0%BB%D0%BE%D0%B2%D0%BE%D0%B9.rar" );
QCOMPARE( percentEncodedQuery.prettyUrl(), QString::fromUtf8("http://mail.yandex.ru/message_part/Критерии оценивания орловой.rar?hid=1.1&mid=391.56424458.99241672611486679803334485488&name=%D0%9A%D1%80%D0%B8%D1%82%D0%B5%D1%80%D0%B8%D0%B8%20%D0%BE%D1%86%D0%B5%D0%BD%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F%20%D0%BE%D1%80%D0%BB%D0%BE%D0%B2%D0%BE%D0%B9.rar"));
#ifdef Q_WS_WIN
#ifdef Q_CC_MSVC
#pragma message ("port KUser")
#else
#warning port KUser
#endif
#else
KUrl tilde;
KUser currentUser;
const QString userName = currentUser.loginName();
QVERIFY( !userName.isEmpty() );
tilde.setPath( QString::fromUtf8( "~%1/Matériel" ).arg( userName ) );
QString homeDir = currentUser.homeDir();
QCOMPARE( tilde.url(), QString("file://%1/Mat%C3%A9riel").arg(homeDir));
tilde = KUrl("http://foo.bar/index.html");
tilde.setPath( "~slajsjdlsjd/test.html" );
QCOMPARE( tilde.url(), QString("http://foo.bar/~slajsjdlsjd/test.html"));
#endif
}
void KUrlTest::testHostName()
{
KUrl u1("http://www.Abc.de/FR");
QCOMPARE(u1.host(), QString("www.abc.de")); // lowercase
QCOMPARE(u1.path(), QString("/FR")); // lowercase
QCOMPARE(u1.url(), QString("http://www.abc.de/FR")); // hostname is lowercase
QCOMPARE(u1.prettyUrl(), QString("http://www.abc.de/FR")); // hostname is lowercase
KUrl u2;
u2.setProtocol("http");
u2.setHost("www.Abc.de");
QCOMPARE(u2.host(), QString("www.abc.de")); // lowercase
QCOMPARE(u2.url(), QString("http://www.abc.de")); // lowercase
KUrl u3("donkey://Abc/DE");
QCOMPARE(u3.host(), QString("abc")); // lowercase
QCOMPARE(u3.url(), QString("donkey://abc/DE")); // lowercase
}
void KUrlTest::testEmptyQueryOrRef()
{
QUrl url = QUrl::fromEncoded( "http://www.kde.org" );
QCOMPARE( url.toEncoded(), QByteArray( "http://www.kde.org" ) );
QCOMPARE( url.encodedQuery(), QByteArray() );
url = QUrl::fromEncoded( "http://www.kde.org?" );
QCOMPARE( url.toEncoded(), QByteArray( "http://www.kde.org?" ) );
QCOMPARE( url.encodedQuery(), QByteArray() ); // note that QByteArray() == QByteArray("")
url = QUrl::fromEncoded( "http://www.kde.org" );
QVERIFY( url.encodedQuery().isEmpty() );
QVERIFY( !url.hasQuery() );
url = QUrl::fromEncoded( "http://www.kde.org?" );
QVERIFY( !url.encodedQuery().isNull() );
QVERIFY( url.encodedQuery().isEmpty() );
QVERIFY( url.hasQuery() );
KUrl noQuery( "http://www.kde.org");
QCOMPARE( noQuery.query(), QString() ); // query at all
QVERIFY( !noQuery.hasQuery() );
QVERIFY( !noQuery.hasRef());
QVERIFY( noQuery.ref().isNull() );
// Empty queries should be preserved!
QUrl qurl = QUrl::fromEncoded("http://www.kde.org/cgi/test.cgi?", QUrl::TolerantMode);
QCOMPARE( qurl.toEncoded(), QByteArray("http://www.kde.org/cgi/test.cgi?"));
KUrl waba1( "http://www.kde.org/cgi/test.cgi?");
QCOMPARE( waba1.url(), QString( "http://www.kde.org/cgi/test.cgi?" ) );
QCOMPARE( waba1.query(), QString( "?" ) ); // empty query
QVERIFY( waba1.hasQuery() );
// Empty references should be preserved
waba1 = "http://www.kde.org/cgi/test.cgi#";
QCOMPARE( waba1.url(), QString("http://www.kde.org/cgi/test.cgi#") );
QVERIFY( waba1.hasRef() );
QVERIFY( waba1.hasFragment() );
QVERIFY( waba1.hasHTMLRef() );
QSTREMPTY( waba1.encodedHtmlRef() );
//qurl = QUrl::fromEncoded("http://www.kde.org/cgi/test.cgi#", QUrl::TolerantMode);
//QCOMPARE( qurl.toEncoded(), QByteArray("http://www.kde.org/cgi/test.cgi#") );
KUrl tobi1( "http://host.net/path/?#http://broken-adsfk-poij31-029mu-2890zupyc-*!*'O-+-0i" );
QCOMPARE(tobi1.query(), QString("?")); // query is empty
QVERIFY( tobi1.hasQuery() );
tobi1 = "http://host.net/path/#no-query";
QCOMPARE(tobi1.query(), QString("")); // no query
QVERIFY( !tobi1.hasQuery() );
}
void KUrlTest::testParsingTolerance()
{
// URLs who forgot to encode spaces in the query - the QUrl version first
QUrl incorrectEncoded = QUrl::fromEncoded( "http://www.kde.org/cgi/qurl.cgi?hello=My Value" );
QVERIFY( incorrectEncoded.isValid() );
QVERIFY( !incorrectEncoded.toEncoded().isEmpty() );
//qDebug( "%s", incorrectEncoded.toEncoded().data() );
QCOMPARE( incorrectEncoded.toEncoded(),
QByteArray("http://www.kde.org/cgi/qurl.cgi?hello=My%20Value") );
// URLs who forgot to encode spaces in the query.
KUrl waba1( "http://www.kde.org/cgi/test.cgi?hello=My Value" );
//QVERIFY( waba1.isValid() );
QCOMPARE( waba1.url(), QString("http://www.kde.org/cgi/test.cgi?hello=My%20Value") );
// URL with ':' in query (':' should NOT be encoded!)
waba1 = "http://www.kde.org/cgi/test.cgi?hello:My Value";
QCOMPARE( waba1.url(), QString("http://www.kde.org/cgi/test.cgi?hello:My%20Value") );
QCOMPARE( waba1.upUrl().url(), QString("http://www.kde.org/cgi/test.cgi") );
// URLs who forgot to encode spaces in the query.
waba1 = "http://www.kde.org/cgi/test.cgi?hello=My Value+20";
QCOMPARE( waba1.url(), QString("http://www.kde.org/cgi/test.cgi?hello=My%20Value+20") );
}
void KUrlTest::testNewLine()
{
QUrl qurl_newline_1 = QUrl::fromEncoded( "http://www.foo.bar/foo/bar\ngnork", QUrl::TolerantMode );
QVERIFY( qurl_newline_1.isValid() );
QCOMPARE( qurl_newline_1.toEncoded(), QByteArray("http://www.foo.bar/foo/bar%0Agnork") );
KUrl url_newline_1("http://www.foo.bar/foo/bar\ngnork");
QCOMPARE( url_newline_1.url(), QLatin1String("http://www.foo.bar/foo/bar%0Agnork") );
KUrl url_newline_2("http://www.foo.bar/foo?bar\ngnork");
QCOMPARE( url_newline_2.url(), QLatin1String("http://www.foo.bar/foo?bar%0Agnork") );
}
void KUrlTest::testQueryParsing()
{
KUrl ldap( "ldap://host.com:6666/o=University%20of%20Michigan,c=US??sub?(cn=Babs%20Jensen)" );
QCOMPARE( ldap.host(), QString("host.com") );
QCOMPARE( ldap.port(), 6666 );
QCOMPARE( ldap.path(), QString("/o=University of Michigan,c=US") );
QCOMPARE( ldap.query(), QString("??sub?(cn=Babs%20Jensen)") );
QCOMPARE( ldap.url(), QString("ldap://host.com:6666/o=University%20of%20Michigan,c=US??sub?(cn=Babs%20Jensen)") );
ldap.setQuery("??sub?(cn=Karl%20Marx)");
QCOMPARE( ldap.query(), QString("??sub?(cn=Karl%20Marx)") );
QCOMPARE( ldap.url(), QString("ldap://host.com:6666/o=University%20of%20Michigan,c=US??sub?(cn=Karl%20Marx)") );
}
void KUrlTest::testURLsWithoutPath()
{
// Urls without path (BR21387)
KUrl waba1( "http://meine.db24.de?link=home_c_login_login" ); // has query
QCOMPARE( waba1.url(), QString("http://meine.db24.de?link=home_c_login_login") );
QCOMPARE( waba1.path(), QString("") );
QCOMPARE( waba1.query(), QString("?link=home_c_login_login") );
waba1 = "http://a:389?b=c"; // has port and query
QCOMPARE( waba1.url(), QString( "http://a:389?b=c" ) );
QCOMPARE( waba1.host(), QString( "a" ) );
QCOMPARE( waba1.port(), 389 );
QCOMPARE( waba1.path(), QString( "" ) );
QCOMPARE( waba1.query(), QString( "?b=c" ) );
// Urls without path (BR21387)
waba1 = "http://meine.db24.de#link=home_c_login_login"; // has fragment
QCOMPARE( waba1.url(), QString("http://meine.db24.de#link=home_c_login_login") );
QCOMPARE( waba1.path(), QString(""));
waba1 = "http://a:389#b=c"; // has port and fragment
//qDebug( "%s", qPrintable( waba1.url() ) );
QCOMPARE( waba1.scheme(), QString( "http" ) );
QCOMPARE( waba1.url(), QString( "http://a:389#b=c" ) );
QCOMPARE( waba1.host(), QString( "a" ) );
QCOMPARE( waba1.port(), 389 );
QCOMPARE( waba1.path(), QString( "" ) );
QCOMPARE( waba1.ref(), QString( "b%3Dc" ) ); // was b=c with KDE3, but the docu says encoded, so encoding the = is ok
QCOMPARE( waba1.htmlRef(), QString( "b=c" ) );
QCOMPARE( waba1.query(), QString() );
QUrl schemeOnly( "ftp:" );
QVERIFY( schemeOnly.isValid() );
QCOMPARE( schemeOnly.scheme(), QString( "ftp" ) );
}
void KUrlTest::testPathAndQuery()
{
#if 0
// this KDE3 test fails, but Tobias Anton didn't say where it came from, and Andreas Hanssen (TT) says:
// "I can't see any reason to support this; it looks like a junk artifact from older days.
// Everything after # is the fragment. Parsing what comes after # is broken; tolerant or not."
KUrl tobi0("http://some.host.net/path/to/file#fragmentPrecedes?theQuery");
QCOMPARE( tobi0.ref(), QString("fragmentPrecedes") );
QCOMPARE( tobi0.query(), QString("?theQuery") );
#else
// So we treat it as part of the fragment
KUrl tobi0("http://some.host.net/path/to/file#foo?bar");
QCOMPARE( tobi0.ref(), QString("foo%3Fbar") );
QCOMPARE( tobi0.query(), QString() );
QCOMPARE( tobi0.prettyUrl(), QString("http://some.host.net/path/to/file#foo?bar") );
#endif
KUrl tobi1( "http://host.net/path?myfirstquery#andsomeReference" );
tobi1.setEncodedPathAndQuery("another/path/?another&query");
QCOMPARE( tobi1.query(), QString("?another&query") );
QCOMPARE( tobi1.path(), QString("another/path/") ); // with trailing slash
QCOMPARE( tobi1.encodedPathAndQuery(), QString( "another/path/?another&query" ) );
tobi1.setEncodedPathAndQuery("another/path?another&query");
QCOMPARE( tobi1.query(), QString("?another&query") );
QCOMPARE( tobi1.path(), QString("another/path") ); // without trailing slash
QCOMPARE( tobi1.encodedPathAndQuery(), QString( "another/path?another&query" ) );
tobi1.setEncodedPathAndQuery("and%20another%2Bpath%2E?bug=%2B258301&query%2Bword");
QCOMPARE( tobi1.query(), QString("?bug=%2B258301&query%2Bword") ); // encoded
QCOMPARE( tobi1.queryItem("bug"), QString("+258301") ); // decoded
QCOMPARE( tobi1.path(), QString("and another+path.") ); // decoded
QCOMPARE( tobi1.encodedPath().constData(), "and%20another+path." ); // from QUrl. It only encodes the space.
QCOMPARE( tobi1.encodedPathAndQuery(), QString( "and%20another+path.?bug=%2B258301&query%2Bword" ) );
tobi1 = "http://host.net/path/#no-query";
QCOMPARE( tobi1.encodedPathAndQuery(), QString( "/path/" ) );
KUrl kde( "http://www.kde.org" );
QCOMPARE( kde.encodedPathAndQuery(), QString( "" ) );
QCOMPARE( kde.encodedPathAndQuery( KUrl::LeaveTrailingSlash, KUrl::AvoidEmptyPath ), QString( "/" ) );
KUrl theKow( "http://www.google.de/search?q=frerich&hlx=xx&hl=de&empty=&lr=lang+de&test=%2B%20%3A%25" );
QCOMPARE( theKow.encodedPathAndQuery(), QString( "/search?q=frerich&hlx=xx&hl=de&empty=&lr=lang+de&test=%2B%20%3A%25" ) );
KUrl uloc( "file:///home/dfaure/konqtests/Mat%C3%A9riel" );
QCOMPARE( uloc.encodedPathAndQuery(), QString( "/home/dfaure/konqtests/Mat%C3%A9riel" ) );
KUrl urlWithAccent( "file:///home/dfaure/konqtests/Matériel" );
QCOMPARE(urlWithAccent.encodedPathAndQuery(), QString("/home/dfaure/konqtests/Mat%C3%A9riel"));
KUrl urlWithUnicodeChar(QString::fromUtf8("file:///home/dfaure/konqtests/Matériel"));
QCOMPARE(urlWithUnicodeChar.encodedPathAndQuery(), QString("/home/dfaure/konqtests/Mat%C3%A9riel"));
KUrl maelcum(QString::fromUtf8("http://a.b.c/äöu"));
QCOMPARE(maelcum.encodedPathAndQuery(), QString("/%C3%A4%C3%B6u"));
KUrl gof("file:%2Ftmp%2Fkde-ogoffart%2Fkmail"); // weird URL, but well ;)
QCOMPARE(gof.path(), QString("/tmp/kde-ogoffart/kmail"));
}
void KUrlTest::testUpUrl()
{
KUrl url1( "ftp://user%40host.com@ftp.host.com/var/www/" );
QCOMPARE( url1.user(), QString("user@host.com" ) );
QCOMPARE( url1.host(), QString("ftp.host.com" ) );
KUrl up = url1.upUrl();
QCOMPARE( up.url(), QString("ftp://user%40host.com@ftp.host.com/var/") );
up = up.upUrl();
QCOMPARE( up.url(), QString("ftp://user%40host.com@ftp.host.com/") );
up = up.upUrl();
QCOMPARE( up.url(), QString("ftp://user%40host.com@ftp.host.com/") ); // unchanged
// Going up from a relative url is not supported (#170695)
KUrl invalid("tmp");
QVERIFY(invalid.isValid());
up = invalid.upUrl();
QVERIFY(!up.isValid());
}
void KUrlTest::testSetFileName() // and addPath
{
KUrl u2( "file:/home/dfaure/my%20tar%20file.tgz#gzip:/#tar:/README" );
//qDebug( "* URL is %s", qPrintable( u2.url() ) );
u2.setFileName( "myfile.txt" );
QCOMPARE( u2.url(), QString("file:///home/dfaure/myfile.txt") );
u2.setFileName( "myotherfile.txt" );
QCOMPARE( u2.url(), QString("file:///home/dfaure/myotherfile.txt") );
// more tricky, renaming a directory (kpropertiesdialog.cc)
QString tmpurl = "file:/home/dfaure/myolddir/";
if ( tmpurl.at(tmpurl.length() - 1) == '/')
// It's a directory, so strip the trailing slash first
tmpurl.truncate( tmpurl.length() - 1);
KUrl newUrl(tmpurl);
newUrl.setFileName( "mynewdir" );
QCOMPARE( newUrl.url(), QString("file:///home/dfaure/mynewdir") );
// addPath tests
newUrl.addPath( "subdir" );
QCOMPARE( newUrl.url(), QString("file:///home/dfaure/mynewdir/subdir") );
newUrl.addPath( "/foo/" );
QCOMPARE( newUrl.url(), QString("file:///home/dfaure/mynewdir/subdir/foo/") );
u2 = "http://www.kde.org"; // no path
u2.addPath( "subdir" );
QCOMPARE( u2.url(), QString("http://www.kde.org/subdir") );
u2.addPath( "" );
QCOMPARE( u2.url(), QString("http://www.kde.org/subdir") ); // unchanged
QUrl qurl2 = QUrl::fromEncoded( "print:/specials/Print%20To%20File%20(PDF%252FAcrobat)", QUrl::TolerantMode );
QCOMPARE( qurl2.path(), QString::fromLatin1("/specials/Print To File (PDF%2FAcrobat)") );
QCOMPARE( qurl2.toEncoded(), QByteArray("print:/specials/Print%20To%20File%20(PDF%252FAcrobat)") );
// even more tricky
u2 = "print:/specials/Print%20To%20File%20(PDF%252FAcrobat)";
QCOMPARE( u2.path(), QString("/specials/Print To File (PDF%2FAcrobat)") );
QCOMPARE( u2.fileName(), QString("Print To File (PDF%2FAcrobat)") );
u2.setFileName( "" );
QCOMPARE( u2.url(), QString("print:/specials/") );
u2 = "file:/specials/Print";
QCOMPARE( u2.path(), QString("/specials/Print") );
QCOMPARE( u2.fileName(), QString("Print") );
u2.setFileName( "" );
QCOMPARE( u2.url(), QString("file:///specials/") );
const char * u3 = "ftp://host/dir1/dir2/myfile.txt";
QVERIFY( !KUrl(u3).hasSubUrl() );
KUrl::List lst = KUrl::split( KUrl(u3) );
QCOMPARE( lst.count(), 1 );
QCOMPARE( lst.first().url(), QString("ftp://host/dir1/dir2/myfile.txt") );
// cdUp code
KUrl lastUrl = lst.last();
QString dir = lastUrl.directory();
QCOMPARE( dir, QString("/dir1/dir2") );
// files without directories
KUrl singleFile( "foo.txt" );
QCOMPARE( singleFile.path(), QString("foo.txt") );
QCOMPARE( singleFile.pathOrUrl(), QString("foo.txt") );
QString pre;
#ifdef Q_OS_WIN
// On Windows we explicitly prepend a slash, see KUrl::setPath
pre = '/';
#endif
singleFile.setFileName( "bar.bin" );
QCOMPARE( singleFile.path(), QString(pre + "bar.bin") );
QCOMPARE( singleFile.pathOrUrl(), QString(pre + "bar.bin") );
}
void KUrlTest::testDirectory()
{
KUrl udir;
udir.setPath("/home/dfaure/file.txt");
//qDebug( "URL is %s", qPrintable( udir.url() ) );
QCOMPARE( udir.path(), QString("/home/dfaure/file.txt") );
QCOMPARE( udir.url(), QString("file:///home/dfaure/file.txt") );
QCOMPARE( udir.directory(KUrl::AppendTrailingSlash|KUrl::ObeyTrailingSlash), QString("/home/dfaure/") );
QCOMPARE( udir.directory(KUrl::ObeyTrailingSlash), QString("/home/dfaure") );
KUrl u2( QByteArray("file:///home/dfaure/") );
// not ignoring trailing slash
QCOMPARE( u2.directory(KUrl::AppendTrailingSlash|KUrl::ObeyTrailingSlash), QString("/home/dfaure/") );
QCOMPARE( u2.directory(KUrl::ObeyTrailingSlash), QString("/home/dfaure") );
// ignoring trailing slash
QCOMPARE( u2.directory(KUrl::AppendTrailingSlash), QString("/home/") );
QCOMPARE( u2.directory(), QString("/home") );
// cleanPath() tests (before cd() since cd uses that)
u2.cleanPath();
QCOMPARE( u2.url(), QString("file:///home/dfaure/") );
u2.addPath( "/..//foo" );
QCOMPARE( u2.url(), QString("file:///home/dfaure/..//foo") );
u2.cleanPath(KUrl::KeepDirSeparators);
QCOMPARE( u2.url(), QString("file:///home//foo") );
u2.cleanPath(KUrl::SimplifyDirSeparators);
QCOMPARE( u2.url(), QString("file:///home/foo") );
// cd() tests
u2.cd("..");
QCOMPARE( u2.url(), QString("file:///home") );
u2.cd("thomas");
QCOMPARE( u2.url(), QString("file:///home/thomas") );
u2.cd("../");
QCOMPARE( u2.url(), QString("file:///home/") );
u2.cd("/opt/kde/bin/");
QCOMPARE( u2.url(), QString("file:///opt/kde/bin/") );
u2 = "ftp://ftp.kde.org/";
u2.cd("pub");
QCOMPARE( u2.url(), QString("ftp://ftp.kde.org/pub") );
u2 = u2.upUrl();
QCOMPARE( u2.url(), QString("ftp://ftp.kde.org/") );
}
void KUrlTest::testPrettyURL()
{
KUrl tildeInPath("http://ferret.lmh.ox.ac.uk/%7Ekdecvs/");
QCOMPARE(tildeInPath.prettyUrl(), QString("http://ferret.lmh.ox.ac.uk/~kdecvs/"));
// Tilde should not be re-encoded, see end of 2.3 in rfc3986
QCOMPARE(KUrl(tildeInPath.prettyUrl()).url(), QString("http://ferret.lmh.ox.ac.uk/~kdecvs/"));
KUrl spaceInPath("file:/home/test/directory%20with%20spaces");
QCOMPARE(spaceInPath.prettyUrl(), QString("file:///home/test/directory with spaces"));
QCOMPARE(KUrl(spaceInPath.prettyUrl()).url(), QString("file:///home/test/directory%20with%20spaces"));
KUrl plusInPath("http://slashdot.org/~RAMMS%2BEIN/"); // #232008
QCOMPARE(plusInPath.prettyUrl(), QString::fromLatin1("http://slashdot.org/~RAMMS+EIN/"));
QCOMPARE(KUrl(plusInPath.prettyUrl()).url(), QString::fromLatin1("http://slashdot.org/~RAMMS+EIN/"));
KUrl notPretty3("fish://foo/%23README%23");
QCOMPARE( notPretty3.prettyUrl(), QString("fish://foo/%23README%23") );
KUrl url15581("http://alain.knaff.linux.lu/bug-reports/kde/spaces in url.html");
QCOMPARE( url15581.prettyUrl(), QString("http://alain.knaff.linux.lu/bug-reports/kde/spaces in url.html") );
QCOMPARE( url15581.url(), QString("http://alain.knaff.linux.lu/bug-reports/kde/spaces%20in%20url.html") );
KUrl newLineInQuery("http://localhost/?a=foo%0A%0Abar%20baz&b=foo%0Abar%21%3F");
QCOMPARE( newLineInQuery.prettyUrl(), QString("http://localhost/?a=foo%0A%0Abar%20baz&b=foo%0Abar%21%3F") );
KUrl nonUtf8Query("http://kde.org/?a=test%C2%A0foo%A0%A0%A0%A0bar");
QCOMPARE( nonUtf8Query.prettyUrl(), QString("http://kde.org/?a=test%C2%A0foo%A0%A0%A0%A0bar") );
// KDE3 test was for parsing "percentage%in%url.html", but this is not supported; too broken.
KUrl url15581bis("http://alain.knaff.linux.lu/bug-reports/kde/percentage%25in%25url.html");
QCOMPARE( url15581bis.prettyUrl(), QString("http://alain.knaff.linux.lu/bug-reports/kde/percentage%25in%25url.html") );
QCOMPARE( url15581bis.url(), QString("http://alain.knaff.linux.lu/bug-reports/kde/percentage%25in%25url.html") );
KUrl urlWithPass("ftp://user:password@ftp.kde.org/path");
QCOMPARE( urlWithPass.pass(), QString::fromLatin1( "password" ) );
QCOMPARE( urlWithPass.prettyUrl(), QString::fromLatin1( "ftp://user@ftp.kde.org/path" ) );
KUrl urlWithPassAndNoUser("ftp://:password@ftp.kde.org/path");
QCOMPARE( urlWithPassAndNoUser.pass(), QString::fromLatin1( "password" ) );
QCOMPARE( urlWithPassAndNoUser.prettyUrl(), QString::fromLatin1( "ftp://ftp.kde.org/path" ) );
KUrl xmppUri("xmpp:ogoffart@kde.org");
QCOMPARE( xmppUri.prettyUrl(), QString::fromLatin1( "xmpp:ogoffart@kde.org" ) );
QUrl offEagleqUrl;
offEagleqUrl.setEncodedUrl("http://www.sejlsport.dk/Pr%F8v%20noget%20nyt%20dokumenter.pdf", QUrl::TolerantMode);
const QString offEaglePath = offEagleqUrl.path();
QCOMPARE((int)offEaglePath.at(2).unicode(), (int)'r');
#if 0 // CURRENTLY BROKEN, PENDING PRETTYURL REWRITE AND QT-4.5 (in thiago's hands)
QCOMPARE((int)offEaglePath.at(3).unicode(), (int)0xf8);
KUrl offEagle("http://www.sejlsport.dk/graphics/ds/DSUngdom/PDF/Pr%F8v%20noget%20nyt%20dokumenter/Invitation_Kerteminde_11.07.08.pdf");
QCOMPARE(offEagle.path(), QString::fromLatin1("/graphics/ds/DSUngdom/PDF/Pr%F8v noget nyt dokumenter/Invitation_Kerteminde_11.07.08.pdf"));
QCOMPARE(offEagle.url(), QString::fromLatin1("http://www.sejlsport.dk/graphics/ds/DSUngdom/PDF/Pr%F8v%20noget%20nyt%20dokumenter/Invitation_Kerteminde_11.07.08.pdf"));
QCOMPARE(offEagle.prettyUrl(), QString::fromLatin1("http://www.sejlsport.dk/graphics/ds/DSUngdom/PDF/Pr%F8v noget nyt dokumenter/Invitation_Kerteminde_11.07.08.pdf"));
#endif
KUrl openWithUrl("kate --use %25U");
QCOMPARE(openWithUrl.url(), QString::fromLatin1("kate%20--use%20%25U"));
QCOMPARE(openWithUrl.prettyUrl(), QString::fromLatin1("kate --use %25U"));
QCOMPARE(openWithUrl.path(), QString::fromLatin1("kate --use %U"));
QCOMPARE(openWithUrl.pathOrUrl(), QString::fromLatin1("kate --use %25U")); // caused #153894; better not use KUrl for this.
KUrl ipv6Address( "http://[::ffff:129.144.52.38]:81/index.html" );
QCOMPARE( ipv6Address.prettyUrl(), QString::fromLatin1( "http://[::ffff:129.144.52.38]:81/index.html" ) );
}
void KUrlTest::testIsRelative()
{
QVERIFY( !KUrl::isRelativeUrl("man:mmap") );
QVERIFY( !KUrl::isRelativeUrl("javascript:doSomething()") );
QVERIFY( !KUrl::isRelativeUrl("file:///blah") );
// arguable, but necessary for KUrl( baseURL, "//www1.foo.bar" );
QVERIFY( KUrl::isRelativeUrl("/path") );
QVERIFY( KUrl::isRelativeUrl("something") );
KUrl something("something");
QCOMPARE(something.url(), QString("something"));
QCOMPARE(something.protocol(), QString());
QVERIFY(!something.isLocalFile());
// Now let's test QUrl::isRelative.
QVERIFY(!KUrl("file:///blah").isRelative());
QVERIFY(!KUrl("/blah").isRelative());
QVERIFY(KUrl("blah").isRelative());
QVERIFY(!KUrl("http://www.kde.org").isRelative());
QVERIFY(KUrl("foo/bar").isRelative());
}
void KUrlTest::testRelativePath()
{
QString basePath = "/home/bastian";
QCOMPARE( KUrl::relativePath(basePath, "/home/bastian"), QString("./") );
bool b;
QCOMPARE( KUrl::relativePath(basePath, "/home/bastian/src/plugins", &b), QString("./src/plugins"));
QVERIFY( b );
QCOMPARE( KUrl::relativePath(basePath, "./src/plugins"), QString("./src/plugins") );
QCOMPARE( KUrl::relativePath(basePath, "/home/waba/src/plugins", &b), QString("../waba/src/plugins") );
QVERIFY( !b );
QCOMPARE( KUrl::relativePath(basePath, "/"), QString("../../"));
QCOMPARE( KUrl::relativePath("/", "/"), QString("./") );
QCOMPARE( KUrl::relativePath("/", "/home/bastian"), QString("./home/bastian") );
QCOMPARE( KUrl::relativePath("", "/home/bastian"), QString("/home/bastian") );
}
void KUrlTest::testRelativeURL()
{
KUrl baseURL( "http://www.kde.org/index.html" );
QCOMPARE( KUrl::relativeUrl(baseURL, KUrl("http://www.kde.org/index.html#help") ), QString("#help") );
QCOMPARE( KUrl::relativeUrl(baseURL, KUrl("http://www.kde.org/index.html?help=true") ), QString("index.html?help=true") );
QCOMPARE( KUrl::relativeUrl(baseURL, KUrl("http://www.kde.org/contact.html") ), QString("contact.html") );
QCOMPARE( KUrl::relativeUrl(baseURL, KUrl("ftp://ftp.kde.org/pub/kde") ), QString("ftp://ftp.kde.org/pub/kde") );
QCOMPARE( KUrl::relativeUrl(baseURL, KUrl("http://www.kde.org/index.html") ), QString("./") );
baseURL = "http://www.kde.org/info/index.html";
QCOMPARE( KUrl::relativeUrl(baseURL, KUrl("http://www.kde.org/bugs/contact.html") ), QString( "../bugs/contact.html") );
}
void KUrlTest::testAdjustPath()
{
KUrl url0("file:///");
QCOMPARE( url0.url( KUrl::RemoveTrailingSlash ), QString("file:///") );
url0.adjustPath( KUrl::RemoveTrailingSlash );
QCOMPARE( url0.url(), QString("file:///") );
KUrl url1("file:///home/kde/");
url1.adjustPath( KUrl::LeaveTrailingSlash );
QCOMPARE( url1.path(), QString("/home/kde/" ) );
url1.adjustPath(KUrl::RemoveTrailingSlash);
QCOMPARE( url1.path(), QString("/home/kde" ) );
url1.adjustPath(KUrl::RemoveTrailingSlash);
QCOMPARE( url1.path(), QString("/home/kde" ) );
url1.adjustPath(KUrl::AddTrailingSlash);
QCOMPARE( url1.path(), QString("/home/kde/" ) );
KUrl url2("file:///home/kde//");
url2.adjustPath(KUrl::LeaveTrailingSlash);
QCOMPARE( url2.path(), QString("/home/kde//" ) );
url2.adjustPath(KUrl::RemoveTrailingSlash);
QCOMPARE( url2.path(), QString("/home/kde" ) );
url2.adjustPath(KUrl::AddTrailingSlash);
QCOMPARE( url2.path(), QString("/home/kde/" ) );
KUrl ftpurl1("ftp://ftp.kde.org/");
ftpurl1.adjustPath(KUrl::LeaveTrailingSlash);
QCOMPARE( ftpurl1.path(), QString("/" ) );
ftpurl1.adjustPath(KUrl::RemoveTrailingSlash);
QCOMPARE( ftpurl1.path(), QString("/" ) );
KUrl ftpurl2("ftp://ftp.kde.org///");
ftpurl2.adjustPath(KUrl::LeaveTrailingSlash);
QCOMPARE( ftpurl2.path(), QString("///" ) );
ftpurl2.adjustPath(KUrl::RemoveTrailingSlash); // should remove all but trailing slash
QCOMPARE( ftpurl2.path(), QString("/" ) );
ftpurl2.adjustPath(KUrl::AddTrailingSlash);
QCOMPARE( ftpurl2.path(), QString("/" ) );
// Equivalent tests written by the KDirLister maintainer :)
KUrl u3( QByteArray("ftp://brade@ftp.kde.org///") );
u3.adjustPath(KUrl::RemoveTrailingSlash);
QCOMPARE( u3.url(), QString("ftp://brade@ftp.kde.org/") );
KUrl u4( QByteArray("ftp://brade@ftp.kde.org/kde///") );
u4.adjustPath(KUrl::RemoveTrailingSlash);
QCOMPARE( u4.url(), QString("ftp://brade@ftp.kde.org/kde") );
// applying adjustPath(KUrl::RemoveTrailingSlash) twice should not yield two different urls
// (follows from the above test)
KUrl u5 = u4;
u5.adjustPath(KUrl::RemoveTrailingSlash);
QCOMPARE( u5.url(), u4.url() );
{
KUrl remote("remote:/");
QCOMPARE( remote.url(KUrl::RemoveTrailingSlash ), QString("remote:/") );
remote.adjustPath( KUrl::RemoveTrailingSlash );
QCOMPARE( remote.url(), QString("remote:/") );
remote.adjustPath( KUrl::RemoveTrailingSlash );
QCOMPARE( remote.url(), QString("remote:/") );
}
{
KUrl remote2("remote://");
QCOMPARE( remote2.url(), QString("remote:") );
QCOMPARE( remote2.url(KUrl::RemoveTrailingSlash ), QString("remote:") );
}
}
void KUrlTest::testIPV6()
{
// IPV6
KUrl waba1( "http://[::FFFF:129.144.52.38]:81/index.html" );
QCOMPARE( waba1.host(), QString("::ffff:129.144.52.38") );
QCOMPARE( waba1.port(), 81 );
// IPV6
waba1 = "http://waba:pass@[::FFFF:129.144.52.38]:81/index.html";
QCOMPARE( waba1.host(), QString("::ffff:129.144.52.38") );
QCOMPARE( waba1.user(), QString("waba") );
QCOMPARE( waba1.pass(), QString("pass") );
QCOMPARE( waba1.port(), 81 );
// IPV6
waba1 = "http://www.kde.org/cgi/test.cgi";
waba1.setHost("::ffff:129.144.52.38");
QCOMPARE( waba1.url(), QString("http://[::ffff:129.144.52.38]/cgi/test.cgi") );
waba1 = "http://[::ffff:129.144.52.38]/cgi/test.cgi";
QVERIFY( waba1.isValid() );
// IPV6 without path
waba1 = "http://[::ffff:129.144.52.38]?query";
QVERIFY( waba1.isValid() );
QCOMPARE( waba1.url(), QString("http://[::ffff:129.144.52.38]?query") );
QCOMPARE( waba1.query(), QString("?query") );
waba1 = "http://[::ffff:129.144.52.38]#ref";
QVERIFY( waba1.isValid() );
QCOMPARE( waba1.url(), QString("http://[::ffff:129.144.52.38]#ref") );
QCOMPARE( waba1.ref(), QString("ref") );
// IPV6 without path but with a port
waba1 = "http://[::ffff:129.144.52.38]:81?query";
QVERIFY( waba1.isValid() );
QCOMPARE( waba1.url(), QString("http://[::ffff:129.144.52.38]:81?query") );
QCOMPARE( waba1.port(), 81 );
QCOMPARE( waba1.query(), QString("?query") );
waba1 = "http://[::ffff:129.144.52.38]:81#ref";
QVERIFY( waba1.isValid() );
QCOMPARE( waba1.url(), QString("http://[::ffff:129.144.52.38]:81#ref") );
QCOMPARE( waba1.port(), 81 );
QCOMPARE( waba1.ref(), QString("ref") );
KUrl weird( "http://[::fff:1:23]/" );
QVERIFY( weird.isValid() );
QCOMPARE( weird.host(), QString("::fff:1:23") );
}
void KUrlTest::testBaseURL() // those are tests for the KUrl(base,relative) constructor
{
KUrl com1(KUrl("http://server.com/dir/"), ".");
QCOMPARE( com1.url(), QString("http://server.com/dir/") );
KUrl com2(KUrl("http://server.com/dir/blubb/") , "blah/");
QCOMPARE( com2.url(), QString("http://server.com/dir/blubb/blah/") );
KUrl baseURL("http://www.foo.bar:80" );
QVERIFY( baseURL.isValid() );
QCOMPARE( baseURL.protocol(), QString( "http" ) ); // lowercase
QCOMPARE( baseURL.port(), 80 );
QString relativeUrl = "//www1.foo.bar";
QVERIFY( KUrl::isRelativeUrl( relativeUrl ) );
// Mimick what KUrl(2 urls) does:
QUrl qurl;
qurl = "http://www.foo.bar:80";
QCOMPARE( qurl.toEncoded(), QByteArray("http://www.foo.bar:80") );
qurl.setHost( QString() );
qurl.setPath( QString() );
QCOMPARE( qurl.toEncoded(), QByteArray("http://:80") );
qurl.setPort( -1 );
QCOMPARE( qurl.toEncoded(), QByteArray("http:") ); // hmm we have no '//' anymore
KUrl url1 ( baseURL, relativeUrl );
QCOMPARE( url1.url(), QString("http://www1.foo.bar"));
QCOMPARE( url1.host(), QString("www1.foo.bar"));
baseURL = "http://www.foo.bar";
KUrl rel_url( baseURL, "/top//test/../test1/file.html" );
QCOMPARE( rel_url.url(), QString("http://www.foo.bar/top//test1/file.html" ));
baseURL = "http://www.foo.bar/top//test2/file2.html";
QCOMPARE( baseURL.url(), QString("http://www.foo.bar/top//test2/file2.html" ));
baseURL = "file:/usr/local/src/kde2/////kdelibs/kio";
QCOMPARE( baseURL.url(), QString("file:///usr/local/src/kde2/////kdelibs/kio" ));
baseURL = "http://www.foo.bar";
KUrl rel_url2( baseURL, "mailto:bastian@kde.org" );
QCOMPARE( rel_url2.url(), QString("mailto:bastian@kde.org" ));
baseURL = "file:/usr/local/src/kde2/kdelibs/kio/";
KUrl url2( baseURL, "../../////kdebase/konqueror" );
QCOMPARE( url2.url(), QString("file:///usr/local/src/kde2/////kdebase/konqueror" ));
// WABA: The following tests are to test the handling of relative URLs as
// found on web-pages.
KUrl waba1( "http://www.website.com/directory/?hello#ref" );
{
KUrl waba2( waba1, "relative.html");
QCOMPARE( waba2.url(), QString("http://www.website.com/directory/relative.html") );
}
{
KUrl waba2( waba1, "../relative.html");
QCOMPARE( waba2.url(), QString("http://www.website.com/relative.html") );
}
{
KUrl waba2( waba1, "down/relative.html");
QCOMPARE( waba2.url(), QString("http://www.website.com/directory/down/relative.html") );
}
{
KUrl waba2( waba1, "/down/relative.html");
QCOMPARE( waba2.url(), QString("http://www.website.com/down/relative.html") );
}
{
KUrl waba2( waba1, "//www.kde.org/relative.html");
QCOMPARE( waba2.url(), QString("http://www.kde.org/relative.html") );
}
{
KUrl waba2( waba1, "relative.html?query=test&name=harry");
QCOMPARE( waba2.url(), QString("http://www.website.com/directory/relative.html?query=test&name=harry") );
waba2.removeQueryItem("query");
QCOMPARE( waba2.url(), QString("http://www.website.com/directory/relative.html?name=harry") );
waba2.addQueryItem("age", "18");
QCOMPARE( waba2.url(), QString("http://www.website.com/directory/relative.html?name=harry&age=18") );
waba2.addQueryItem("age", "21");
QCOMPARE( waba2.url(), QString("http://www.website.com/directory/relative.html?name=harry&age=18&age=21") );
waba2.addQueryItem("fullname", "Harry Potter");
QCOMPARE( waba2.url(), QString("http://www.website.com/directory/relative.html?name=harry&age=18&age=21&fullname=Harry%20Potter") );
}
{
KUrl waba2( waba1, "?query=test&name=harry");
QCOMPARE( waba2.url(), QString("http://www.website.com/directory/?query=test&name=harry") );
}
{
KUrl waba2( waba1, "relative.html#with_reference");
QCOMPARE( waba2.url(), QString("http://www.website.com/directory/relative.html#with_reference") );
}
{
KUrl waba2( waba1, "#");
QCOMPARE( waba2.url(), QString("http://www.website.com/directory/?hello#") );
}
{
KUrl waba2( waba1, "");
QCOMPARE( waba2.url(), QString("http://www.website.com/directory/?hello#ref") );
}
{
KUrl waba2( waba1, "#%72%22method"); // #243217
QCOMPARE( waba2.url(), QString("http://www.website.com/directory/?hello#%72%22method") );
}
{
KUrl base( "http://faure@www.kde.org" ); // no path
KUrl waba2( base, "filename.html");
QCOMPARE( waba2.url(), QString("http://faure@www.kde.org/filename.html") );
}
{
KUrl base( "http://faure:pass@www.kde.org:81?query" );
KUrl rel1( base, "http://www.kde.org/bleh/"); // same host
QCOMPARE( rel1.url(), QString("http://faure:pass@www.kde.org/bleh/") );
KUrl rel2( base, "http://www.yahoo.org"); // different host
QCOMPARE( rel2.url(), QString("http://www.yahoo.org") );
}
waba1 = "http://www.website.com/directory/filename?bla#blub";
{
KUrl waba2( waba1, "relative.html");
QCOMPARE( waba2.url(), QString("http://www.website.com/directory/relative.html") );
}
{
KUrl waba2( waba1, "./relative.html");
QCOMPARE( waba2.url(), QString("http://www.website.com/directory/relative.html") );
}
{
KUrl waba2( waba1, "../relative.html");
QCOMPARE( waba2.url(), QString("http://www.website.com/relative.html") );
}
{
KUrl waba2( waba1, "down/relative.html");
QCOMPARE( waba2.url(), QString("http://www.website.com/directory/down/relative.html") );
}
{
KUrl waba2( waba1, "down/./relative.html");
QCOMPARE( waba2.url(), QString("http://www.website.com/directory/down/relative.html") );
}
{
KUrl waba2( waba1, "/down/relative.html");
QCOMPARE( waba2.url(), QString("http://www.website.com/down/relative.html") );
}
{
KUrl waba2( waba1, "relative.html?query=test&name=harry");
QCOMPARE( waba2.url(), QString("http://www.website.com/directory/relative.html?query=test&name=harry") );
}
{
KUrl waba2( waba1, "?query=test&name=harry");
QCOMPARE( waba2.url(), QString("http://www.website.com/directory/filename?query=test&name=harry") );
}
{
KUrl waba2( waba1, "relative.html#with_reference");
QCOMPARE( waba2.url(), QString("http://www.website.com/directory/relative.html#with_reference") );
}
{
KUrl waba2( waba1, "http:/relative.html"); // "rfc 1606 loophole"
QCOMPARE( waba2.url(), QString("http://www.website.com/relative.html") );
}
waba1.setUser("waldo");
QCOMPARE( waba1.url(), QString("http://waldo@www.website.com/directory/filename?bla#blub") );
waba1.setUser("waldo/bastian");
QCOMPARE( waba1.url(), QString("http://waldo%2Fbastian@www.website.com/directory/filename?bla#blub") );
waba1.setRef( QString() );
waba1.setPass( "pass" );
waba1.setDirectory( "/foo" );
waba1.setProtocol( "https" );
waba1.setHost( "web.com" );
waba1.setPort( 881 );
QCOMPARE( waba1.url(), QString("https://waldo%2Fbastian:pass@web.com:881/foo/?bla") );
waba1.setDirectory( "/foo/" );
QCOMPARE( waba1.url(), QString("https://waldo%2Fbastian:pass@web.com:881/foo/?bla") );
QUrl sadEagleTest;
sadEagleTest.setEncodedUrl( "http://www.calorieking.com/foo.php?P0=[2006-3-8]", QUrl::TolerantMode );
QVERIFY( sadEagleTest.isValid() );
KUrl sadEagleExpectedResult( "http://www.calorieking.com/personal/diary/rpc.php?C=jsrs1&F=getDiaryDay&P0=[2006-3-8]&U=1141858921458" );
QVERIFY( sadEagleExpectedResult.isValid() );
KUrl sadEagleBase( "http://www.calorieking.com/personal/diary/" );
QVERIFY( sadEagleBase.isValid() );
KUrl sadEagleCombined( sadEagleBase, "/personal/diary/rpc.php?C=jsrs1&F=getDiaryDay&P0=[2006-3-8]&U=1141858921458" );
QCOMPARE( sadEagleCombined.url(), sadEagleExpectedResult.url() );
KUrl dxOffEagle( KUrl("http://something/other.html"), "newpage.html?[{\"foo: bar\"}]" );
//QEXPECT_FAIL("","Issue N183630, task ID 183874", Continue); // Fixed by _setEncodedUrl
QVERIFY(dxOffEagle.isValid());
//QEXPECT_FAIL("","Issue N183630, task ID 183874", Continue); // Fixed by _setEncodedUrl
QCOMPARE(dxOffEagle.url(), QString("http://something/newpage.html?%5B%7B%22foo:%20bar%22%7D%5D") );
QCOMPARE(dxOffEagle.prettyUrl(), QString("http://something/newpage.html?%5B%7B%22foo:%20bar%22%7D%5D") );
// QtSw issue 243557
QByteArray tsdgeos("http://google.com/c?c=Translation+%C2%BB+trunk|");
QUrl tsdgeosQUrl;
tsdgeosQUrl.setEncodedUrl(tsdgeos, QUrl::TolerantMode);
QVERIFY(tsdgeosQUrl.isValid()); // failed in Qt-4.4, works in Qt-4.5
QByteArray tsdgeosExpected("http://google.com/c?c=Translation+%C2%BB+trunk%7C");
//QCOMPARE(tsdgeosQUrl.toEncoded(), tsdgeosExpected); // unusable output from qtestlib...
QCOMPARE(QString(tsdgeosQUrl.toEncoded()), QString(tsdgeosExpected));
KUrl tsdgeosUrl(tsdgeos);
QCOMPARE(tsdgeosUrl.url(), QString(tsdgeosExpected));
QByteArray pipesAgain("http://translate.google.com/translate_t#en|uk|demo");
QUrl pipesUrl;
pipesUrl.setEncodedUrl(pipesAgain, QUrl::TolerantMode);
QVERIFY(pipesUrl.isValid());
QCOMPARE(QString(pipesUrl.toEncoded()), QString("http://translate.google.com/translate_t#en%7Cuk%7Cdemo"));
// Shows up in nspluginviewer/flash
QString flashRel = "javascript:window.location+\"__flashplugin_unique__\"";
KUrl flashUrl(flashRel);
QVERIFY(flashUrl.isValid());
KUrl flashBase("http://www.youtube.com/?v=JvOSnRD5aNk");
KUrl flashComposed(flashBase, flashRel);
QCOMPARE(flashComposed.url(), QString("javascript:window.location+%22__flashplugin_unique__%22"));
}
void KUrlTest::testSetEncodedFragment_data()
{
QTest::addColumn<QByteArray>("base");
QTest::addColumn<QByteArray>("fragment");
QTest::addColumn<QByteArray>("expected");
typedef QByteArray BA;
QTest::newRow("basic test") << BA("http://www.kde.org") << BA("abc") << BA("http://www.kde.org#abc");
QTest::newRow("initial url has fragment") << BA("http://www.kde.org#old") << BA("new") << BA("http://www.kde.org#new");
QTest::newRow("encoded fragment") << BA("http://www.kde.org") << BA("a%20c") << BA("http://www.kde.org#a%20c");
QTest::newRow("with #") << BA("http://www.kde.org") << BA("a#b") << BA("http://www.kde.org#a#b");
QTest::newRow("empty") << BA("http://www.kde.org") << BA("") << BA("http://www.kde.org#");
}
void KUrlTest::testSetEncodedFragment()
{
// Bug fixed in 4.5.1 by Thiago
#if QT_VERSION < 0x040501
QSKIP("Bug in Qt-4.4/4.5-rc1: setEncodedFragment doesn't work if the initial url has no fragment", SkipAll);
#endif
QFETCH(QByteArray, base);
QFETCH(QByteArray, fragment);
QFETCH(QByteArray, expected);
QUrl u;
u.setEncodedUrl(base, QUrl::TolerantMode);
QVERIFY(u.isValid());
u.setEncodedFragment(fragment);
QVERIFY(u.isValid());
QCOMPARE(QString::fromLatin1(u.toEncoded()), QString::fromLatin1(expected));
}
void KUrlTest::testSubURL()
{
QString u1 = "file:/home/dfaure/my%20tar%20file.tgz#gzip:/#tar:/#myref";
KUrl url1(u1);
// KDE3: was #,#,#, Qt-4.0 to 4.4: #,%23,%23 . 4.5: #,#,#, good
#if QT_VERSION < 0x040500
QCOMPARE( url1.url(), QString("file:///home/dfaure/my%20tar%20file.tgz#gzip:/%23tar:/%23myref") );
#else
QCOMPARE( url1.url(), QString("file:///home/dfaure/my%20tar%20file.tgz#gzip:/#tar:/#myref") );
#endif
QVERIFY( url1.hasRef() );
QVERIFY( !url1.isLocalFile() ); // Not strictly local!
QVERIFY( url1.hasSubUrl() );
//QCOMPARE( url1.htmlRef(), QString("myref") );
QCOMPARE( url1.upUrl().url(), QString("file:///home/dfaure/") );
const KUrl::List splitList = KUrl::split( url1 );
QCOMPARE( splitList.count(), 3 );
//kDebug() << splitList.toStringList();
QCOMPARE( splitList[0].url(), QString("file:///home/dfaure/my%20tar%20file.tgz#myref") );
QCOMPARE( splitList[1].url(), QString("gzip:/#myref") );
QCOMPARE( splitList[2].url(), QString("tar:/#myref") );
#if QT_VERSION < 0x040500
QSKIP( "Multiple sub urls not supported with Qt < 4.5", SkipSingle );
#endif
KUrl rejoined = KUrl::join(splitList);
QCOMPARE(rejoined.url(), url1.url());
u1 = "error:/?error=14&errText=Unknown%20host%20asdfu.adgi.sdfgoi#http://asdfu.adgi.sdfgoi";
url1 = u1;
QCOMPARE( url1.url(), QString("error:/?error=14&errText=Unknown%20host%20asdfu.adgi.sdfgoi#http://asdfu.adgi.sdfgoi") );
QVERIFY( url1.hasSubUrl() );
QVERIFY( url1.hasRef() );
QVERIFY( !url1.isLocalFile() );
QVERIFY( !url1.hasHTMLRef() );
u1 = "file:/home/dfaure/my%20tar%20file.tgz#gzip:/#tar:/";
url1 = u1;
QCOMPARE( url1.url(), QString("file:///home/dfaure/my%20tar%20file.tgz#gzip:/#tar:/") );
QVERIFY( url1.hasRef() );
QVERIFY( !url1.hasHTMLRef() );
QVERIFY( url1.hasSubUrl() );
QVERIFY( url1.htmlRef().isNull() );
QCOMPARE( url1.upUrl().url(), QString("file:///home/dfaure/") );
u1 = "file:///home/dfaure/my%20tar%20file.tgz#gzip:/#tar:/";
url1 = u1;
QCOMPARE( url1.url(), QString("file:///home/dfaure/my%20tar%20file.tgz#gzip:/#tar:/") );
QVERIFY( url1.hasRef() );
QVERIFY( !url1.hasHTMLRef() );
QVERIFY( url1.hasSubUrl() );
QVERIFY( url1.htmlRef().isNull() );
QCOMPARE( url1.upUrl().url(), QString("file:///home/dfaure/") );
#if 0
// This URL is broken, '#' should be escaped.
u1 = "file:/home/dfaure/cdrdao-1.1.5/dao/#CdrDriver.cc#";
url1 = u1;
QCOMPARE( url1.url(), QString("file:///home/dfaure/cdrdao-1.1.5/dao/#CdrDriver.cc#") );
QVERIFY( !url1.hasRef() );
QVERIFY( !url1.hasHTMLRef() );
QVERIFY( url1.hasSubUrl() );
QVERIFY( url1.htmlRef().isNull() );
QCOMPARE( url1.upUrl().url(), QString("file:///home/dfaure/cdrdao-1.1.5/dao/#CdrDriver.cc#") );
#endif
u1 = "file:/home/dfaure/my%20tar%20file.tgz#gzip:/#tar:/README";
url1 = u1;
QCOMPARE( url1.url(), QString("file:///home/dfaure/my%20tar%20file.tgz#gzip:/#tar:/README") );
QVERIFY( url1.hasRef() );
QVERIFY( !url1.hasHTMLRef() );
QVERIFY( url1.hasSubUrl() );
QVERIFY( url1.htmlRef().isNull() );
const KUrl::List url1Splitted = KUrl::split( url1 );
QCOMPARE( url1Splitted.count(), 3 );
//kDebug() << url1Splitted.toStringList();
QCOMPARE(url1Splitted[0].url(), QString("file:///home/dfaure/my%20tar%20file.tgz"));
QCOMPARE(url1Splitted[1].url(), QString("gzip:/"));
QCOMPARE(url1Splitted[2].url(), QString("tar:/README"));
const KUrl url1Rejoined = KUrl::join(url1Splitted);
// Bug fixed in 4.5.1 by Thiago
#if QT_VERSION < 0x040501
QSKIP("Bug in Qt-4.4/4.5-rc1: setEncodedFragment doesn't work if the initial url has no fragment", SkipAll);
#endif
QCOMPARE(url1Rejoined.url(), url1.url());
QCOMPARE(url1.upUrl().url(), QString("file:///home/dfaure/my%20tar%20file.tgz#gzip:/#tar:/"));
}
void KUrlTest::testSetUser()
{
// The KUrl equality test below works because in Qt4 null == empty.
QString str1;
QString str2 = "";
QVERIFY( str1 == str2 );
KUrl emptyUserTest1( "http://www.foobar.com/");
QVERIFY( emptyUserTest1.user().isEmpty() );
QVERIFY( emptyUserTest1.user().isNull() ); // Expected result. This was fixed in Qt-4.4
KUrl emptyUserTest2( "http://www.foobar.com/");
emptyUserTest2.setUser( "" );
//QVERIFY( emptyUserTest2.user().isNull() );
QCOMPARE( emptyUserTest1==emptyUserTest2?"TRUE":"FALSE","TRUE" );
emptyUserTest2.setPass( "" );
QCOMPARE( emptyUserTest1==emptyUserTest2?"TRUE":"FALSE","TRUE" );
emptyUserTest2.setUser( "foo" );
QCOMPARE( emptyUserTest2.user(), QString::fromLatin1( "foo" ) );
emptyUserTest2.setUser( QString() );
QCOMPARE( emptyUserTest1==emptyUserTest2, true );
KUrl uga("ftp://ftp.kde.org");
uga.setUser("foo@bar");
QCOMPARE(uga.user(), QString::fromLatin1("foo@bar"));
QCOMPARE(uga.url(), QString::fromLatin1("ftp://foo%40bar@ftp.kde.org"));
}
void KUrlTest::testComparisons()
{
/* QUrl version of urlcmp */
QUrl u1( "ftp://ftp.de.kde.org/dir" );
QUrl u2( "ftp://ftp.de.kde.org/dir/" );
QUrl::FormattingOptions options = QUrl::None;
options |= QUrl::StripTrailingSlash;
QString str1 = u1.toString(options);
QString str2 = u2.toString(options);
QCOMPARE( str1, u1.toString() );
QCOMPARE( str2, u1.toString() );
bool same = str1 == str2;
QVERIFY( same );
QString ucmp1 = "ftp://ftp.de.kde.org/dir";
QString ucmp2 = "ftp://ftp.de.kde.org/dir/";
#ifndef KDE_NO_DEPRECATED
QVERIFY(!urlcmp(ucmp1, ucmp2));
QVERIFY(urlcmp(ucmp1, ucmp2, KUrl::CompareWithoutTrailingSlash)); //only slash difference, ignore_trailing
#endif
{
KUrl u1(ucmp1);
KUrl u2(ucmp2);
QVERIFY(!u1.equals(u2));
QVERIFY(u1.equals(u2, KUrl::CompareWithoutTrailingSlash));
QVERIFY(u1.equals(u2, KUrl::CompareWithoutTrailingSlash|KUrl::AllowEmptyPath));
}
// Special case: no path vs '/'.
{
QString str1 = QString::fromLatin1( "ftp://ftp.de.kde.org" );
QString str2 = QString::fromLatin1( "ftp://ftp.de.kde.org/" );
#ifndef KDE_NO_DEPRECATED
QVERIFY(!urlcmp(str1, str2));
QVERIFY(!urlcmp(str1, str2, KUrl::CompareWithoutTrailingSlash)); // empty path != '/'
QVERIFY(urlcmp(str1, str2, KUrl::CompareWithoutTrailingSlash|KUrl::AllowEmptyPath));
#endif
KUrl u1(str1);
KUrl u2(str2);
QVERIFY(!u1.equals(u2));
QVERIFY(!u1.equals(u2, KUrl::CompareWithoutTrailingSlash));
QVERIFY(u1.equals(u2, KUrl::CompareWithoutTrailingSlash|KUrl::AllowEmptyPath));
}
QString ucmp3 = "ftp://ftp.de.kde.org/dir/#";
#ifndef KDE_NO_DEPRECATED
QVERIFY( !urlcmp(ucmp2,ucmp3) ); // (only hash difference)
QVERIFY( urlcmp(ucmp2,ucmp3,KUrl::CompareWithoutFragment) ); // (only hash difference, ignore_ref)
QVERIFY( urlcmp(ucmp2,ucmp3,KUrl::CompareWithoutTrailingSlash | KUrl::CompareWithoutFragment) ); // (slash and hash difference, ignore_trailing, ignore_ref)
QVERIFY( urlcmp("","",KUrl::CompareWithoutFragment) ); // (empty, empty)
QVERIFY( urlcmp("","") ); // (empty, empty)
QVERIFY( !urlcmp("",ucmp1) ); // (empty, not empty)
QVERIFY( !urlcmp("",ucmp1,KUrl::CompareWithoutFragment) ); // (empty, not empty)
QVERIFY( !urlcmp("file",ucmp1) ); // (malformed, not empty)
QVERIFY( !urlcmp("file",ucmp1,KUrl::CompareWithoutFragment) ); // (malformed, not empty)
#endif
KUrl ftpUrl( "ftp://ftp.de.kde.org" );
QCOMPARE( ftpUrl.path(), QString());
ftpUrl = "ftp://ftp.de.kde.org/";
QVERIFY( ftpUrl.isParentOf( KUrl("ftp://ftp.de.kde.org/host/subdir/") ) );
ftpUrl = "ftp://ftp/host/subdir/";
QVERIFY( ftpUrl.isParentOf( KUrl("ftp://ftp/host/subdir/") ) );
QVERIFY( ftpUrl.isParentOf( KUrl("ftp://ftp/host/subdir") ) );
QVERIFY( !ftpUrl.isParentOf( KUrl("ftp://ftp/host/subdi") ) );
QVERIFY( ftpUrl.isParentOf( KUrl("ftp://ftp/host/subdir/blah/") ) );
QVERIFY( !ftpUrl.isParentOf( KUrl("ftp://ftp/blah/subdir") ) );
QVERIFY( !ftpUrl.isParentOf( KUrl("file:////ftp/host/subdir/") ) );
QVERIFY( ftpUrl.isParentOf( KUrl("ftp://ftp/host/subdir/subsub") ) );
}
void KUrlTest::testStreaming()
{
// Streaming operators
KUrl origURL( "http://www.website.com/directory/?#ref" );
KUrl urlWithPassAndNoUser("ftp://:password@ftp.kde.org/path");
KUrl accentuated(QString::fromUtf8("trash:/été"));
KUrl empty( "" );
KUrl invalid( "ptal://mlc:usb" );
QVERIFY( !invalid.isValid() );
KUrl waba1( "http://[::ffff:129.144.52.38]:81?query" );
QByteArray buffer;
{
QDataStream stream( &buffer, QIODevice::WriteOnly );
stream << origURL
<< urlWithPassAndNoUser
<< accentuated
<< empty
<< invalid
<< waba1; // the IPv6 one
}
{
QDataStream stream( buffer );
KUrl restoredURL;
stream >> restoredURL; // streaming valid url
QCOMPARE( restoredURL.url(), origURL.url() );
stream >> restoredURL; // streaming url with pass an no user
QCOMPARE( restoredURL.url(), urlWithPassAndNoUser.url() );
stream >> restoredURL; // streaming valid url with accents
QCOMPARE( restoredURL.url(), accentuated.url() );
stream >> restoredURL; // streaming empty url
QVERIFY( !restoredURL.isValid() );
QVERIFY( restoredURL.isEmpty() );
QCOMPARE( restoredURL.url(), QString("") );
stream >> restoredURL; // streaming invalid url
QVERIFY( !restoredURL.isValid() );
// note that this doesn't say what url() returns, that's for testBrokenStuff
QCOMPARE( restoredURL.url(), invalid.url() );
stream >> restoredURL; // streaming ipv6 url with query
QCOMPARE( restoredURL.url(), waba1.url() );
}
}
void KUrlTest::testBrokenStuff()
{
// Broken stuff
KUrl waba1( "file:a" );
QCOMPARE( waba1.path(), QString("a") );
QCOMPARE( waba1.fileName(KUrl::ObeyTrailingSlash), QString("a") );
QCOMPARE( waba1.fileName(), QString("a") );
QCOMPARE( waba1.directory(KUrl::AppendTrailingSlash|KUrl::ObeyTrailingSlash), QString("") );
QCOMPARE( waba1.directory(KUrl::ObeyTrailingSlash), QString("") );
QCOMPARE( waba1.directory(), QString("") );
waba1 = "file:a/";
QCOMPARE( waba1.path(), QString("a/") );
QCOMPARE( waba1.fileName(KUrl::ObeyTrailingSlash), QString("") );
QCOMPARE( waba1.fileName(), QString("a") );
QCOMPARE( waba1.directory(KUrl::ObeyTrailingSlash | KUrl::AppendTrailingSlash), QString("a/") );
QCOMPARE( waba1.directory(KUrl::ObeyTrailingSlash), QString("a") );
QCOMPARE( waba1.directory(), QString("") );
waba1 = "file:";
QVERIFY( !waba1.isEmpty() );
QVERIFY( waba1.isValid() ); // KDE3: was invalid. Now it's qurl with scheme="file".
QCOMPARE( waba1.path(), QString("") );
QCOMPARE( waba1.fileName(KUrl::ObeyTrailingSlash), QString("") );
QCOMPARE( waba1.fileName(), QString("") );
QCOMPARE( waba1.directory(KUrl::ObeyTrailingSlash | KUrl::AppendTrailingSlash), QString("") );
QCOMPARE( waba1.directory(KUrl::AppendTrailingSlash), QString("") );
QCOMPARE( waba1.directory(), QString("") );
KUrl broken;
broken.setPath( QString() );
QVERIFY( !broken.isEmpty() );
// It's valid: because isValid refers to parsing, not to what happens afterwards.
QVERIFY( broken.isValid() );
QCOMPARE( broken.path(), QString("") );
broken = "file://"; // just because coolo wondered
QVERIFY( !broken.isEmpty() );
QVERIFY( broken.isValid() ); // KDE3: was invalid; same as above
QCOMPARE( broken.path(), QString("") );
broken = "file";
QVERIFY( broken.isValid() ); // KDE3: was invalid; now it's path="file"
#if 0
// KUrl has a Q_ASSERT on this now, so we can't test it.
broken = "/";
QVERIFY( broken.isValid() );
QCOMPARE( broken.path(), QString("/") );
QCOMPARE( broken.url(), QString("/") ); // KDE3: was resolved to "file:///". QUrl supports urls without a protocol.
QCOMPARE( broken.protocol(), QString("") ); // KDE3: was "file"
#endif
{
QUrl url;
url.setEncodedUrl("LABEL=USB_STICK", QUrl::TolerantMode);
QVERIFY( url.isValid() );
QCOMPARE( url.path(), QString("LABEL=USB_STICK") );
QVERIFY( !url.isEmpty() );
}
{
QUrl url;
url.setEncodedUrl("LABEL=USB_STICK", QUrl::TolerantMode);
QVERIFY( url.isValid() );
QVERIFY( !url.isEmpty() ); // Qt-4.4-snapshot20080213 bug, reported to TT
QCOMPARE( url.path(), QString("LABEL=USB_STICK") );
}
broken = "LABEL=USB_STICK"; // 71430, can we use KUrl for this?
QVERIFY( broken.isValid() ); // KDE3 difference: QUrl likes this one too
QVERIFY( !broken.isEmpty() );
QCOMPARE( broken.path(), QString("LABEL=USB_STICK") ); // was "" in KDE3
}
void KUrlTest::testMoreBrokenStuff()
{
#if 0 // BROKEN?
// UNC like names
KUrl unc1("FILE://localhost/home/root");
QCOMPARE( unc1.path(), QString("/home/root") );
QCOMPARE( unc1.url(), QString("file:///home/root") );
#endif
KUrl unc2("file:///home/root"); // with empty host
QCOMPARE( unc2.path(), QString("/home/root") );
QCOMPARE( unc2.url(), QString("file:///home/root") );
{
KUrl unc3("FILE://remotehost/home/root");
#if 0 // BROKEN?
QCOMPARE( unc3.path(), QString("//remotehost/home/root") );
#endif
QCOMPARE( unc3.url(), QString("FILE://remotehost/home/root") ); // KDE3: file:// (lowercase)
KUrl url2("file://atlas/dfaure");
QCOMPARE( url2.host(), QString("atlas") );
QCOMPARE( url2.path(), QString("/dfaure") );
//QCOMPARE( url3.path(), QString("//atlas/dfaure")); // says Waba
//KUrl url3("file:////atlas/dfaure");
//QCOMPARE( url3.path(), QString("//atlas/dfaure")); // says Waba
KUrl url4(url2, "//remotehost/home/root");
QCOMPARE( url4.host(), QString("remotehost") );
QCOMPARE( url4.path(), QString("/home/root") );
}
KUrl weird;
weird = "http://strange<hostname>/";
QVERIFY( !weird.isValid() );
weird = "http://strange<username>@strange<hostname>/";
QVERIFY( !weird.isValid() );
{
QUrl url;
url.setUrl("http://strange<username>@hostname/", QUrl::TolerantMode);
QVERIFY(url.isValid());
}
weird = "http://strange<username>@hostname/";
QVERIFY( weird.isValid() ); // KDE3: was valid. Fixed by _setEncodedUrl.
QCOMPARE( weird.host(), QString("hostname") );
weird = "http://strange;hostname/";
QVERIFY( !weird.isValid() );
weird = "http://strange;username@strange;hostname/";
QVERIFY( !weird.isValid() );
weird = "http://strange;username@hostname/";
QVERIFY( weird.isValid() );
QCOMPARE( weird.host(), QString("hostname") );
weird = "http://strange;username:password@strange;hostname/";
QVERIFY( !weird.isValid() );
weird = "http://strange;username:password@hostname/";
QVERIFY( weird.isValid() );
QCOMPARE( weird.host(), QString("hostname") );
weird = "http://[strange;hostname]/";
QVERIFY( !weird.isValid() );
weird = "ssh://user@machine?cmd='echo $HOSTNAME'";
QVERIFY( weird.isValid() );
QCOMPARE( weird.host(), QString("machine") );
//qDebug("%s",qPrintable( weird.query() ) );
QCOMPARE( weird.queryItem("cmd"), QString("'echo $HOSTNAME'") );
weird = ":pictures"; // for KFileDialog's startDir
QVERIFY( weird.isValid() );
QVERIFY( weird.protocol().isEmpty() );
QVERIFY( weird.host().isEmpty() );
QCOMPARE( weird.path(), QString( "pictures" ) );
QCOMPARE( weird.url(), QString( "pictures" ) ); // # BUG: the : is missing
weird = "::keyword"; // for KFileDialog's startDir
QVERIFY( weird.isValid() );
QVERIFY( weird.protocol().isEmpty() );
QVERIFY( weird.host().isEmpty() );
QCOMPARE( weird.path(), QString( ":keyword" ) );
QCOMPARE( weird.url(), QString( ":keyword" ) ); // # BUG: the : is missing
KUrl broken;
broken = "ptal://mlc:usb:PC_970";
QVERIFY( !broken.isValid() );
QVERIFY (!broken.errorString().isEmpty());
//QCOMPARE( broken.url(), QString("ptal://mlc:usb:PC_970") ); // QUrl doesn't provide the initial string if it's an invalid url
QUrl brokenUrl( "ptal://mlc:usb:PC_970" );
QVERIFY( !brokenUrl.isValid() );
QUrl dxOffEagle( "http://something/newpage.html?[{\"foo: bar\"}]", QUrl::TolerantMode);
QVERIFY(dxOffEagle.isValid());
QCOMPARE(QString(dxOffEagle.toEncoded()), QString("http://something/newpage.html?%5B%7B%22foo:%20bar%22%7D%5D"));
QUrl dxOffEagle2;
dxOffEagle2.setUrl( "http://something/newpage.html?[{\"foo: bar\"}]", QUrl::TolerantMode);
QVERIFY(dxOffEagle2.isValid());
QCOMPARE(dxOffEagle.toEncoded(), dxOffEagle2.toEncoded());
QUrl dxOffEagle3;
dxOffEagle3.setEncodedUrl( "http://something/newpage.html?[{\"foo: bar\"}]", QUrl::TolerantMode);
#if QT_VERSION < 0x040500
QEXPECT_FAIL("","Issue N183630, task ID 183874; works with setUrl so we do that in _setEncodedUrl now", Continue);
#endif
QVERIFY(dxOffEagle3.isValid());
QCOMPARE(dxOffEagle.toEncoded(), dxOffEagle3.toEncoded());
QUrl javascript;
javascript.setUrl("javascript:window.location+\"__flashplugin_unique__\"", QUrl::TolerantMode);
QVERIFY(javascript.isValid());
javascript.setEncodedUrl("javascript:window.location+\"__flashplugin_unique__\"", QUrl::TolerantMode);
#if QT_VERSION < 0x040500
QEXPECT_FAIL("","Issue N183630, task ID 183874", Continue);
#endif
QVERIFY(javascript.isValid());
}
void KUrlTest::testMailto()
{
const QString faure = "faure@kde.org";
const QString mailtoFaure = "mailto:" + faure;
KUrl umail1 ( mailtoFaure );
QCOMPARE( umail1.protocol(), QString("mailto") );
QCOMPARE( umail1.path(), QString(faure) );
QVERIFY( !KUrl::isRelativeUrl(mailtoFaure) );
// Make sure populateMimeData() works correct:
// 1. the text/plain part of the mimedata should not contain the mailto: part
// 2. the uri-list part of the mimedata should contain the mailto: part
QMimeData md;
umail1.populateMimeData(&md);
QCOMPARE(md.text(), faure);
KUrl::List uriList = KUrl::List::fromMimeData(&md);
QCOMPARE(uriList.size(), 1);
KUrl first = uriList.first();
QCOMPARE(first.protocol(), QString("mailto"));
QCOMPARE(first.path(), faure);
KUrl mailtoOnly( "mailto:" );
QVERIFY( mailtoOnly.isValid() ); // KDE3 said invalid, QUrl is more tolerant
KUrl url1( "mailto:user@host.com" );
QCOMPARE( url1.url(), QString("mailto:user@host.com") );
QCOMPARE( url1.url(KUrl::LeaveTrailingSlash), QString("mailto:user@host.com") );
KUrl mailtoUrl("mailto:null@kde.org?subject=hello");
QCOMPARE( mailtoUrl.url(), QString("mailto:null@kde.org?subject=hello" ));
QUrl qurl("mailto:null@kde.org?subject=hello#world"); // #80165: is #world part of fragment or query? RFC-3986 says: fragment.
QCOMPARE(QString::fromLatin1(qurl.encodedQuery()), QString("subject=hello"));
{
KUrl mailtoUrl;
mailtoUrl.setProtocol("mailto");
mailtoUrl.setPath("a%b");
QCOMPARE(mailtoUrl.path(), QString("a%b"));
QCOMPARE(mailtoUrl.url(), QString("mailto:a%25b"));
}
#if 0
// I wrote this test in the very first kurltest, but there's no proof that it's actually valid.
// Andreas says this is broken, i.e. against rfc2368.
// Let's see if the need ever comes up.
KUrl umail2 ( "mailto:Faure David <faure@kde.org>" );
QCOMPARE( umail2.protocol(), QString("mailto") );
QCOMPARE( umail2.path(), QString("Faure David <faure@kde.org>") );
QVERIFY( !KUrl::isRelativeUrl("mailto:faure@kde.org") );
#endif
KUrl url183433("mailto:test[at]gmail[dot]com");
QCOMPARE(url183433.prettyUrl(), QString("mailto:test[at]gmail[dot]com"));
QCOMPARE(url183433.url(), QString("mailto:test[at]gmail[dot]com"));
}
void KUrlTest::testSmb()
{
KUrl smb("smb://domain;username:password@server/share");
QVERIFY( smb.isValid() );
QCOMPARE( smb.user(), QString("domain;username") );
smb = "smb:/";
QVERIFY( smb.isValid() );
smb = "smb://"; // KDE3: kurl.cpp rev 1.106 made it invalid. Valid again with QUrl.
QVERIFY( smb.isValid() );
smb = "smb://host";
QVERIFY( smb.isValid() );
smb = "smb:///";
QVERIFY( smb.isValid() );
KUrl implicitSmb("file://host/path");
QVERIFY(!implicitSmb.isLocalFile()); // -> kio_file will redirect to smb (by default)
QCOMPARE(implicitSmb.host(), QString("host"));
KUrl noImplicitSmb("//path1/path2");
QVERIFY(noImplicitSmb.isLocalFile());
QCOMPARE(noImplicitSmb.path(), QString("//path1/path2"));
}
void KUrlTest::testOtherProtocols()
{
KUrl about("about:");
QCOMPARE(about.path(), QString());
QCOMPARE(about.protocol(), QString("about"));
KUrl aboutKonqueror("about:konqueror");
QCOMPARE(aboutKonqueror.path(), QString("konqueror"));
KUrl leo( "data:text/html,http://www.invalid/" );
QVERIFY( leo.isValid() );
QCOMPARE( leo.protocol(), QString("data" ) );
QCOMPARE( leo.url(), QString("data:text/html,http://www.invalid/" ) );
QCOMPARE( leo.path(), QString("text/html,http://www.invalid/" ) );
KUrl ptal( "ptal://mlc:usb@PC_970" ); // User=mlc, password=usb, host=PC_970
#if QT_VERSION >= 0x040600 && QT_VERSION <= 0x040602 // Hostnames with underscores were invalid in 4.6.0 to 4.6.2, then allowed again in e301c82693c33c0f96c6a756d15fe35a9d877443
QCOMPARE(ptal.url(), QString("ptal://mlc:usb@")); // The host "PC_970" is invalid according to STD3 validation
KUrl ptalSimpler("ptal://mlc:usb@pc123");
QCOMPARE(ptalSimpler.url(), QString("ptal://mlc:usb@pc123"));
#else
QUrl ptal_qurl;
ptal_qurl.setUrl("ptal://mlc:usb@PC_970", QUrl::TolerantMode);
QVERIFY(ptal_qurl.isValid());
QCOMPARE(QString::fromLatin1(ptal_qurl.toEncoded()), QString::fromLatin1("ptal://mlc:usb@pc_970"));
QCOMPARE( ptal_qurl.host(), QString("pc_970") );
QVERIFY( ptal.isValid() );
QCOMPARE( ptal.host(), QString("pc_970") );
QCOMPARE( ptal.user(), QString("mlc") );
QCOMPARE( ptal.pass(), QString("usb") );
#endif
}
void KUrlTest::testUtf8()
{
QTextCodec* codec = QTextCodec::codecForName( "ISO-8859-1" );
QVERIFY( codec != 0 );
QTextCodec::setCodecForLocale( codec );
#if 0
{
QUrl utest;
utest.setScheme( "file" );
utest.setPath( QString::fromUtf8( "/home/dfaure/Matériel" ) );
printf( "utest.toString()=%s\n", utest.toString().toLatin1().constData() );
printf( "utest.path()=%s\n", utest.path().toLatin1().constData() );
printf( "utest.toEncoded()=%s\n", utest.toEncoded().data() );
}
#endif
// UTF8 tests
KUrl uloc;
uloc.setPath( QString::fromUtf8( "/home/dfaure/Matériel" ) );
QCOMPARE( uloc.url(), QString( "file:///home/dfaure/Mat%C3%A9riel") ); // KDE3 would say %E9 here; but from now on URLs are always utf8 encoded.
QCOMPARE( uloc.path(), QString::fromUtf8( "/home/dfaure/Matériel") );
QCOMPARE( uloc.prettyUrl(), QString::fromUtf8( "file:///home/dfaure/Matériel") );
QCOMPARE( uloc.pathOrUrl(), QString::fromUtf8( "/home/dfaure/Matériel") ); // ... but that's why pathOrUrl is nicer.
QCOMPARE( uloc.url(), QString( "file:///home/dfaure/Mat%C3%A9riel") );
uloc = KUrl("file:///home/dfaure/Mat%C3%A9riel");
QCOMPARE( uloc.path(), QString::fromUtf8("/home/dfaure/Matériel") );
QCOMPARE( uloc.url(), QString("file:///home/dfaure/Mat%C3%A9riel") );
KUrl umlaut1("http://www.clever-tanken.de/liste.asp?ort=N%FCrnberg&typ=Diesel");
QCOMPARE(umlaut1.url(), QString("http://www.clever-tanken.de/liste.asp?ort=N%FCrnberg&typ=Diesel"));
KUrl umlaut2("http://www.clever-tanken.de/liste.asp?ort=N%FCrnberg&typ=Diesel"); // was ,106
QCOMPARE(umlaut2.url(), QString("http://www.clever-tanken.de/liste.asp?ort=N%FCrnberg&typ=Diesel"));
KUrl urlWithUnicodeChar( QString::fromUtf8("file:///home/dfaure/Matériel") );
QCOMPARE( uloc.url(), QString("file:///home/dfaure/Mat%C3%A9riel") );
KUrl wkai(QString::fromUtf8("/tmp/魔"));
QCOMPARE(wkai.url(), QString("file:///tmp/%E9%AD%94"));
QCOMPARE(wkai.prettyUrl(), QString::fromUtf8("file:///tmp/魔"));
// Show that the character "fraction slash" (U+2044) cannot appear in url(),
// so it's ok to use that to encode urls as filenames (e.g. in kio_http cache)
KUrl fractionSlash(QString("http://kde.org/a")+QChar(0x2044)+"b");
QCOMPARE(fractionSlash.url(), QString("http://kde.org/a%E2%81%84b"));
QCOMPARE(fractionSlash.prettyUrl(), QString(QString("http://kde.org/a")+QChar(0x2044)+"b"));
}
void KUrlTest::testOtherEncodings()
{
QTextCodec::setCodecForLocale( KGlobal::charsets()->codecForName( "koi8-r" ) );
KUrl baseURL( "file:/home/coolo" );
KUrl russian = KUrl::fromPath( baseURL.directory(KUrl::AppendTrailingSlash) + QString::fromUtf8( "фгн7" ) );
//QCOMPARE( russian.url(), QString("file:///home/%C6%C7%CE7" ) ); // KDE3: was not using utf8
QCOMPARE( russian.url(), QString("file:///home/%D1%84%D0%B3%D0%BD7") ); // QUrl uses utf8
KUrl utf8_1("audiocd:/By%20Name/15%20Geantra%C3%AE.wav");
QCOMPARE( utf8_1.fileName(), QString::fromUtf8("15 Geantraî.wav") );
// KDE3: url had %2F, and fileName had '/'. But this is wrong, %2F means '/',
// and filenames have to use %2F, so the url needs to have %252F.
// KIO::encodeFileName takes care of that.
KUrl utf8_2("audiocd:/By%20Name/15%252FGeantra%C3%AE.wav");
QCOMPARE( utf8_2.path(), QString::fromUtf8( "/By Name/15%2FGeantraî.wav" ) );
QCOMPARE( utf8_2.fileName(), QString::fromUtf8("15%2FGeantraî.wav") );
}
void KUrlTest::testPathOrURL()
{
// passing path or url to the constructor: both work
KUrl uloc( "/home/dfaure/konqtests/Mat%C3%A9riel" );
QCOMPARE( uloc.path(), QString("/home/dfaure/konqtests/Mat%C3%A9riel") );
uloc = KUrl( "http://www.kde.org" );
QCOMPARE( uloc.pathOrUrl(), uloc.url() );
QCOMPARE( uloc.pathOrUrl(KUrl::AddTrailingSlash), QString("http://www.kde.org/") );
uloc = KUrl( QString("www.kde.org" ) );
QVERIFY( uloc.isValid() ); // KDE3: was invalid. But it's now a url with path="www.kde.org", ok.
uloc = KUrl( "index.html" );
QVERIFY( uloc.isValid() ); // KDE3: was invalid; same as above
uloc = KUrl( "" );
QVERIFY( !uloc.isValid() );
#ifdef Q_WS_WIN
#ifdef Q_CC_MSVC
#pragma message ("port KUser")
#else
#warning port KUser
#endif
#else
KUser currentUser;
const QString userName = currentUser.loginName();
QVERIFY( !userName.isEmpty() );
uloc = KUrl(QString::fromUtf8("~%1/konqtests/Matériel").arg(userName));
QCOMPARE( uloc.path(), QString::fromUtf8("%1/konqtests/Matériel").arg(currentUser.homeDir()) );
#endif
// pathOrUrl tests
uloc = KUrl( "/home/dfaure/konqtests/Mat%C3%A9riel" );
QCOMPARE( uloc.pathOrUrl(), uloc.path() );
uloc = "http://www.kde.org";
QCOMPARE( uloc.url(), QString("http://www.kde.org") );
uloc = "file:///home/dfaure/konq%20tests/Mat%C3%A9riel#ref";
QCOMPARE( uloc.pathOrUrl(), QString::fromUtf8("file:///home/dfaure/konq tests/Matériel#ref" ) );
uloc = "file:///home/dfaure/konq%20tests/Mat%C3%A9riel?query";
QCOMPARE( uloc.pathOrUrl(), QString::fromUtf8("file:///home/dfaure/konq tests/Matériel?query" ) );
uloc = KUrl( "/home/dfaure/file#with#hash" );
QCOMPARE( uloc.pathOrUrl(), QString("/home/dfaure/file#with#hash" ) );
// test creation of url from pathOrUrl
uloc = KUrl( QString::fromUtf8("http://www.kde.org/home/andreas/täst") );
QCOMPARE( KUrl( uloc.pathOrUrl() ), uloc );
uloc = KUrl( "http://www.kde.org/home/andreas/t%C3%A4st");
QCOMPARE( KUrl( uloc.pathOrUrl() ), uloc );
uloc = KUrl( QString::fromUtf8("file:///home/andreas/täst") );
QCOMPARE( KUrl( uloc.pathOrUrl() ), uloc );
uloc = KUrl( "file:///home/andreas/t%C3%A4st");
QCOMPARE( KUrl( uloc.pathOrUrl() ), uloc );
uloc = KUrl( "http://www.kde.org/home/kde?foobar#test" );
QCOMPARE( KUrl( uloc.pathOrUrl() ), uloc );
uloc = KUrl( "http://www.kde.org/home/%andreas");
QCOMPARE( KUrl( uloc.pathOrUrl() ), uloc );
}
void KUrlTest::testAssignment()
{
// passing path or url to the constructor: both work
KUrl uloc;
uloc = "/home/dfaure/konqtests/Mat%C3%A9riel";
QCOMPARE( uloc.path(), QString("/home/dfaure/konqtests/Mat%C3%A9riel") );
KUrl u2;
u2 = uloc;
QCOMPARE( u2.path(), QString("/home/dfaure/konqtests/Mat%C3%A9riel") );
uloc = "http://www.kde.org";
QCOMPARE( uloc.pathOrUrl(), uloc.url() );
uloc = QString("www.kde.org" );
QVERIFY( uloc.isValid() );
uloc = KUrl( "index.html" );
QVERIFY( uloc.isValid() );
uloc = KUrl( "" );
QVERIFY( !uloc.isValid() );
#ifdef Q_WS_WIN
#ifdef Q_CC_MSVC
#pragma message ("port KUser")
#else
#warning port KUser
#endif
#else
KUser currentUser;
const QString userName = currentUser.loginName();
QVERIFY( !userName.isEmpty() );
uloc = QString::fromUtf8("~%1/konqtests/Matériel").arg(userName);
QCOMPARE( uloc.path(), QString::fromUtf8("%1/konqtests/Matériel").arg(currentUser.homeDir()) );
uloc = QByteArray('~' + userName.toUtf8() + "/konqtests/Matériel");
QCOMPARE( uloc.path(), QString::fromUtf8("%1/konqtests/Matériel").arg(currentUser.homeDir()) );
// Assigning a KUrl to a QUrl and back
QUrl qurl = uloc;
QCOMPARE( qurl.toEncoded(), uloc.toEncoded() );
uloc = KUrl(qurl);
QCOMPARE( qurl.toEncoded(), uloc.toEncoded() );
QCOMPARE( uloc.path(), QString::fromUtf8("%1/konqtests/Matériel").arg(currentUser.homeDir()) );
#endif
}
void KUrlTest::testQueryItem()
{
KUrl theKow( "http://www.google.de/search?q=frerich&hlx=xx&hl=de&empty=&lr=lang+de&test=%2B%20%3A%25" );
QCOMPARE( theKow.queryItem("q"), QString("frerich") );
QCOMPARE( theKow.queryItem("hl"), QString("de") );
QCOMPARE( theKow.queryItem("lr"), QString("lang de") ); // the '+' got decoded
QCOMPARE( theKow.queryItem("InterstellarCounselor"), QString() );
QCOMPARE( theKow.queryItem("empty"), QString("") );
QCOMPARE( theKow.queryItem("test"), QString("+ :%") );
theKow.addQueryItem("a", "b+c" );
QCOMPARE( theKow.url(), QString("http://www.google.de/search?q=frerich&hlx=xx&hl=de&empty=&lr=lang+de&test=%2B%20%3A%25&a=b%2Bc") ); // KDE3 would use b%2Bc, but this is more correct
QCOMPARE( theKow.queryItem("a"), QString("b+c") ); // note that the '+' remained
// checks for queryItems(), which returns a QMap<QString,QString>:
KUrl queryUrl( "mailto:Marc%20Mutz%20%3cmutz@kde.org%3E?"
"Subject=subscribe+me&"
"body=subscribe+mutz%40kde.org&"
"Cc=majordomo%40lists.kde.org" );
QCOMPARE(QStringList(queryUrl.queryItems(0).keys()).join(", "),
QString( "Cc, Subject, body" ) );
QCOMPARE(QStringList(queryUrl.queryItems(KUrl::CaseInsensitiveKeys).keys()).join(", "),
QString( "body, cc, subject" ) );
QCOMPARE(QStringList(queryUrl.queryItems(0).values()).join(", "),
QString( "majordomo@lists.kde.org, subscribe me, subscribe mutz@kde.org" ) );
QCOMPARE(QStringList(queryUrl.queryItems(KUrl::CaseInsensitiveKeys).values()).join(", "),
QString( "subscribe mutz@kde.org, majordomo@lists.kde.org, subscribe me" ) );
// TODO check for QUrl::queryItems
}
void KUrlTest::testEncodeString()
{
// Needed for #49616
QCOMPARE( QUrl::toPercentEncoding( "C++" ), QByteArray("C%2B%2B") );
QCOMPARE( QUrl::fromPercentEncoding( "C%2B%2B" ), QString("C++") );
QString output = QUrl::fromPercentEncoding( "C%00%0A" );
QString expected = QString::fromLatin1("C\0\n", 3); // no reason to stop at %00, in fact
QCOMPARE( output.size(), expected.size() );
QCOMPARE( output, expected );
QCOMPARE( QUrl::fromPercentEncoding( "C%A" ), QString("C%A") ); // % A is not percent-encoding (pct-encoded = "%" HEXDIG HEXDIG)
QCOMPARE( QUrl::toPercentEncoding( "%" ), QByteArray("%25") );
QCOMPARE( QUrl::toPercentEncoding( ":" ), QByteArray("%3A") );
}
void KUrlTest::testIdn()
{
//qDebug( "trying QUrl with fromPercentEncoding" );
QUrl qurltest( QUrl::fromPercentEncoding( "http://\303\244.de" ) ); // a+trema in utf8
QVERIFY( qurltest.isValid() );
//qDebug( "trying QUrl with fromEncoded" );
QUrl qurl = QUrl::fromEncoded( "http://\303\244.de" ); // a+trema in utf8
QVERIFY( qurl.isValid() );
QCOMPARE( qurl.toEncoded(), QByteArray( "http://xn--4ca.de" ) );
//qDebug( "and now trying KUrl" );
KUrl thiago( QString::fromUtf8( "http://\303\244.de" ) ); // a+trema in utf8
QVERIFY( thiago.isValid() );
QCOMPARE( thiago.url(), QString("http://xn--4ca.de") ); // Non-ascii is allowed in IDN domain names.
#if 0
// A broken test - not using utf8. and amantia forgot the real-world testcase.
KUrl amantia( "http://%E1.foo.de" );
QVERIFY( amantia.isValid() );
QCOMPARE( amantia.url(), QString("http://xn--80a.foo.de") ); // Non-ascii is allowed in IDN domain names.
#endif
// A more valid test for % in hostnames:
KUrl uwp( "http://%C3%A4.de" );
QVERIFY( uwp.isValid() );
QCOMPARE( thiago.url(), QString("http://xn--4ca.de") ); // as above
}
void KUrlTest::testUriMode()
{
KUrl url1;
#if 0 // ###### TODO KUri
url1 = "http://www.foobar.com/";
QCOMPARE(url1.uriMode(), KUrl::URL);
url1 = "mailto:user@host.com";
QCOMPARE(url1.uriMode(), KUrl::Mailto);
url1 = "data:text/plain,foobar?gazonk=flarp";
QCOMPARE(url1.uriMode(), KUrl::RawURI);
QCOMPARE( url1.path(), QString("text/plain,foobar?gazonk=flarp") );
#endif
url1 = "mailto:User@Host.COM?subject=Hello";
QCOMPARE( url1.path(), QString("User@Host.COM") ); // KDE3: "User@host.com". Does it matter?
}
void KUrlTest::testToLocalFile()
{
const QString localFile( "/tmp/print.pdf" );
const KUrl urlWithHost( "file://localhost/tmp/print.pdf" );
const KUrl urlWithoutHost( "file:///tmp/print.pdf" );
QCOMPARE( urlWithHost.toLocalFile(), localFile );
QCOMPARE( urlWithoutHost.toLocalFile(), localFile );
}
void KUrlTest::testUrl_data()
{
QTest::addColumn<KUrl>( "url" );
QTest::addColumn<QString>( "urlLTS" );
QTest::addColumn<QString>( "urlRTS" );
QTest::addColumn<QString>( "urlATS" );
QTest::newRow("local file 1")
<< KUrl("file:///")
<< QString::fromLatin1("file:///")
<< QString::fromLatin1("file:///")
<< QString::fromLatin1("file:///");
QTest::newRow("local file 2")
<< KUrl("file:///home/kde/")
<< QString::fromLatin1("file:///home/kde/")
<< QString::fromLatin1("file:///home/kde")
<< QString::fromLatin1("file:///home/kde/");
QTest::newRow("local file 3")
<< KUrl("file:///home/kde//")
<< QString::fromLatin1("file:///home/kde//")
<< QString::fromLatin1("file:///home/kde")
<< QString::fromLatin1("file:///home/kde//");
QTest::newRow("ftp url")
<< KUrl("ftp://ftp.kde.org/")
<< QString::fromLatin1("ftp://ftp.kde.org/")
<< QString::fromLatin1("ftp://ftp.kde.org/")
<< QString::fromLatin1("ftp://ftp.kde.org/");
QTest::newRow("ftp url - 3 trailing slashes")
<< KUrl("ftp://ftp.kde.org///")
<< QString::fromLatin1("ftp://ftp.kde.org///")
<< QString::fromLatin1("ftp://ftp.kde.org/")
<< QString::fromLatin1("ftp://ftp.kde.org///");
}
void KUrlTest::testUrl()
{
QFETCH( KUrl, url );
QFETCH( QString, urlLTS );
QFETCH( QString, urlRTS );
QFETCH( QString, urlATS );
QCOMPARE( url.url(KUrl::LeaveTrailingSlash), urlLTS );
QCOMPARE( url.url(KUrl::RemoveTrailingSlash), urlRTS );
QCOMPARE( url.url(KUrl::AddTrailingSlash), urlATS );
}
void KUrlTest::testToStringList()
{
KUrl::List urls;
urls << KUrl("file:///")
<< KUrl("file:///home/kde/")
<< KUrl("file:///home/kde//")
<< KUrl("ftp://ftp.kde.org/")
<< KUrl("ftp://ftp.kde.org///");
//kDebug() << urls.toStringList(KUrl::LeaveTrailingSlash);
QCOMPARE( urls.toStringList(KUrl::LeaveTrailingSlash),
QStringList()
<< QLatin1String("file:///")
<< QLatin1String("file:///home/kde/")
<< QLatin1String("file:///home/kde//")
<< QLatin1String("ftp://ftp.kde.org/")
<< QLatin1String("ftp://ftp.kde.org///") );
//kDebug() << urls.toStringList(KUrl::RemoveTrailingSlash);
QCOMPARE( urls.toStringList(KUrl::RemoveTrailingSlash),
QStringList()
<< QLatin1String("file:///")
<< QLatin1String("file:///home/kde")
<< QLatin1String("file:///home/kde")
<< QLatin1String("ftp://ftp.kde.org/")
<< QLatin1String("ftp://ftp.kde.org/") );
//kDebug() << urls.toStringList(KUrl::AddTrailingSlash);
QCOMPARE( urls.toStringList(KUrl::AddTrailingSlash),
QStringList()
<< QLatin1String("file:///")
<< QLatin1String("file:///home/kde/")
<< QLatin1String("file:///home/kde//")
<< QLatin1String("ftp://ftp.kde.org/")
<< QLatin1String("ftp://ftp.kde.org///") );
}
diff --git a/kded/kdedmodule.desktop b/kded/kdedmodule.desktop
index aa488d45cd..1fe5e2b28c 100644
--- a/kded/kdedmodule.desktop
+++ b/kded/kdedmodule.desktop
@@ -1,106 +1,106 @@
[Desktop Entry]
Type=ServiceType
X-KDE-ServiceType=KDEDModule
Comment=KDED Module
Comment[af]=KDED Module
Comment[ar]=وحدة KDED
Comment[as]=KDED অংশ
Comment[ast]=Módulu KDED
Comment[be]=Модуль KDED
Comment[be@latin]=Modul KDED
Comment[bg]=Модул KDED
Comment[bn]=KDED মডিইল
Comment[bn_IN]=KDED মডিউল
Comment[br]=Mollad KDED
Comment[bs]=KDED modul
Comment[ca]=Mòdul per al KDED
Comment[ca@valencia]=Mòdul per al KDED
Comment[cs]=KDED modul
Comment[csb]=Mòdul KDED
Comment[cy]=Modiwl KDED
Comment[da]=KDED-modul
Comment[de]=KDED-Modul
Comment[el]=Άρθρωμα KDED
Comment[en_GB]=KDED Module
Comment[eo]=KDED-modulo
Comment[es]=Módulo de KDED
Comment[et]=KDED moodul
Comment[eu]=KDED modulua
Comment[fa]=پیمانه KDED
Comment[fi]=KDED-moduuli
Comment[fr]=Module KDED
Comment[fy]=KDED-module
Comment[ga]=Modúl KDED
Comment[gl]=Módulo de KDED
Comment[gu]=KDED મોડ્યુલ
Comment[he]=מודול KDED
Comment[hi]=केडीईडी मॉड्यूल
Comment[hne]=केडीईडी माड्यूल
Comment[hr]=Modul KDED
Comment[hsb]=KDED modul
Comment[hu]=KDED modul
Comment[ia]=Modulo KDED
Comment[id]=Modul KDED
Comment[is]=KDED eining
Comment[it]=Modulo di KDED
Comment[ja]=KDED モジュール
Comment[kk]=KDED модулі
Comment[km]=ម៉ូឌុល KDED
Comment[kn]=KDED ಘಟಕ
Comment[ko]=KDED 모듈
Comment[ku]=Modûla KDED
Comment[lb]=KDED-Modul
Comment[lt]=KDED modulis
Comment[lv]=KDED modulis
Comment[mai]=केडीईडी मोड्यूल
Comment[mk]=KDED модул
Comment[ml]=കെഡിഇഡിയിലെ മൊഡ്യൂള്‍
Comment[mr]=KDED विभाग
Comment[ms]=Modul KDED
Comment[nb]=KDED-modul
Comment[nds]=KDED-Moduul
Comment[ne]=KDED मोड्युल
Comment[nl]=KDED Module
Comment[nn]=KDED-modul
Comment[or]=KDED ଏକକାଂଶ
Comment[pa]=KDED ਮੋਡੀਊਲ
Comment[pl]=Moduł KDED
Comment[ps]=بېلګه KDED
Comment[pt]=Módulo do KDED
Comment[pt_BR]=Módulo KDED
Comment[ro]=Modul KDED
Comment[ru]=Модуль KDED
Comment[se]=KDED-moduvla
Comment[si]=KDED මොඩියුලය
Comment[sk]=KDED modul
Comment[sl]=Modul KDED
Comment[sq]=KDED Modul
Comment[sr]=КДЕД модул
Comment[sr@ijekavian]=КДЕД модул
Comment[sr@ijekavianlatin]=KDED modul
Comment[sr@latin]=KDED modul
Comment[sv]=KDED-modul
Comment[ta]=KDED பாகம்
Comment[te]=కెడిఈడి మాడ్యూల్
Comment[tg]=Модули KDED
Comment[th]=มอดูล KDED
Comment[tr]=KDED Modülü
Comment[ug]=KDED بۆلىكى
Comment[uk]=Модуль KDED
Comment[uz]=KDED moduli
Comment[uz@cyrillic]=KDED модули
Comment[vi]=Mô-đun KDED
Comment[wa]=Module po KDED
-Comment[x-test]=xxKDED Modulexx
Comment[xh]=KDED Isichatshulwa
+Comment[x-test]=xxKDED Modulexx
Comment[zh_CN]=KDED 模块
Comment[zh_HK]=KDED 模組
Comment[zh_TW]=KDED 模組
[PropertyDef::X-KDE-FactoryName]
Type=QString
[PropertyDef::X-KDE-DBus-ModuleName]
Type=QString
[PropertyDef::X-KDE-Kded-autoload]
Type=bool
[PropertyDef::X-KDE-Kded-load-on-demand]
Type=bool
diff --git a/kdeui/about/body-background.jpg b/kdeui/about/body-background.jpg
index 7b37cc4b5b..9b79f35165 100644
Binary files a/kdeui/about/body-background.jpg and b/kdeui/about/body-background.jpg differ
diff --git a/kdeui/about/kde_infopage.css b/kdeui/about/kde_infopage.css
index af65476ac5..183385d09e 100644
--- a/kdeui/about/kde_infopage.css
+++ b/kdeui/about/kde_infopage.css
@@ -1,256 +1,256 @@
/*
* text styles
*/
img {margin: 0px; padding: 0px}
-body {margin: 0px; padding: 0px; background-color: #87AEBC; background-image: url(body-background.jpg); color: #111111; height="100%"; width="100%"}
+body {margin: 0px; padding: 0px; background-color: #98A6AB; background-image: url(body-background.jpg); color: #111111; height="100%"; width="100%"}
a { color: #1A2C36; text-decoration: none; font-weight: bold; }
a:hover {
color: #003B5A;
text-decoration: none;
- text-shadow: #45A4BC 0px 0px 6px;
+ text-shadow: #FFFFFF 0px 0px 6px;
}
<!-- .bar_text a {color: #FFFFFF;} -->
#subtext {
font-size: 10pt;
font-style: italic;
}
#nextlink {
margin: 0px;
padding-top: 1em;
text-align: center;
font-size: 10pt;
}
/*
* the header
*/
#header {
background-image: url(top-middle.png);
width: 100%;
height: 131px;
}
#headerL {
position: absolute;
left: 0px;
height: 131px;
width: 147px;
z-index: 1;
}
#headerR {
position: absolute;
right: 0px;
width: 430px;
height: 131px;
/*background-image: url(top-right.png);*/
}
/* title and tagline are part of the header diff */
#title {
position: absolute;
top: 63px;
right: 0px;
margin-top: -1em;
margin-right: 5%;
text-align: right;
font-size: xx-large;
font-weight: bold;
- text-shadow: #A6EAF9 0px 0px 5px;
+ text-shadow: #FFFFFF 0px 0px 5px;
color: #151515;
z-index: 5;
}
#tagline {
position: absolute;
top: 70px;
right: 0px;
margin-right: 5%;
text-align: right;
font-size: large;
font-weight: bold;
- text-shadow: #A6EAF9 0px 0px 5px;
+ text-shadow: #FFFFFF 0px 0px 5px;
color: #151515;
z-index: 5;
}
/*
* the nav bar
*/
#bar {
width: 100%;
}
#barCenter {
text-align: center;
/*background-color: #F5F5F4;*/
color: #111111;
padding-top: 0.5ex;
padding-bottom: 0.5ex;
font-weight: bold;
font-size: small;
}
#barCenter a.selected, #barCenter a.selected:hover {
color: #111111;
text-decoration: none;
text-shadow: #CDE1FF 0px 0px 5px;
}
#barCenter li a:link, #barCenter li a:visited, #barCenter li a:active {
color: #111111;
text-decoration: none;
text-shadow: none;
}
#barCenter li a:hover {
color: #111111;
text-decoration: none;
text-shadow: #CDE1FF 0px 0px 6px;
}
#barCenter ul {
margin: 0;
padding: 0;
}
#barCenter li {
display: inline;
}
#barCenter li:not(:first-child):before { /* Aren't css3 selectors great? */
content: " \0387 "; /* unicode for · */
}
/*
* the main box
*/
#box {
width: 90%;
margin-left: 5%;
margin-right: 5%;
margin-top: 10px;
margin-bottom: 10px;
}
#boxT {
width: 100%;
height: 16px;
}
#boxTL {
width: 16px;
height: 16px;
float: left;
background-image: url(box-top-left.png);
}
#boxTR {
width: 16px;
height: 16px;
float: right;
background-image: url(box-top-right.png);
}
#boxTC {
height: 16px;
margin-left: 16px;
margin-right: 16px;
background-image: url(box-top-middle.png);
-khtml-background-size: 100%;
}
#boxL {
background-image: url(box-middle-left.png);
background-repeat: repeat-y;
-khtml-background-size: 16px 100%;
background-position: left;
padding-left: 16px;
}
#boxCenter {
background-image: url(box-center.png);
background-position: center;
background-repeat: no-repeat;
-khtml-background-size: 100%;
text-align: left;
}
#boxR {
background-image: url(box-middle-right.png);
background-repeat: repeat-y;
-khtml-background-size: 16px 100%;
background-position: right;
padding-right: 16px;
}
#boxB {
width: 100%;
height: 49px;
}
#boxBL {
width: 16px;
height: 16px;
float: left;
background-image: url(box-bottom-left.png);
}
#boxBR {
width: 16px;
height: 16px;
float: right;
background-image: url(box-bottom-right.png);
}
#boxBC {
height: 16px;
margin-left: 16px;
margin-right: 16px;
background-image: url(box-bottom-middle.png);
-khtml-background-size: 100%;
background-repeat: no-repeat;
}
/*
* the footer
*/
/*
#footer {
position: fixed;
background-image: url(bottom-middle.png);
width: 100%;
height: 100px;
z-index: -2;
bottom:0;
}
#footerL {
position: fixed;
background-image: url(bottom-left.png);
left: 0px;
width: 155px;
height: 100px;
z-index: -2;
}
#footerR {
position: fixed;
background-image: url(bottom-right.png);
right: 0px;
width: 429px;
height: 100px;
z-index: -1;
}
*/
/* vim:set sw=2 et nocindent smartindent: */
diff --git a/kdeui/util/kaccelgen.h b/kdeui/util/kaccelgen.h
index 6b79539714..a7decd766c 100644
--- a/kdeui/util/kaccelgen.h
+++ b/kdeui/util/kaccelgen.h
@@ -1,280 +1,277 @@
/* This file is part of the KDE project
Copyright (C) 2000 Keunwoo Lee <klee@cs.washington.edu>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) 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 Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef KACCELGEN_H
#define KACCELGEN_H
#include <kdeui_export.h>
#include <QtCore/QMap>
#include <QtCore/QString>
#include <QtCore/QStringList>
/**
* Provides functions that, given a collection of QStrings, will
* automatically and intelligently assign menu accelerators to the
* QStrings in the collection.
*
* NOTE: When this file speaks of "accelerators", we really mean
* accelerators as defined by the KDE User Interface Guidelines. We
* do NOT mean "shortcuts", which are what's handled by most other KDE
* libraries with "accel" in the name.
*
* In the Qt library, the mechanism for adding a keyboard accelerator
* to a menu item is to insert an '&' before the letter. Since we
* usually don't want to disturb the original collection, the idiom in
* these functions is to populate a "target" QStringList parameter
* with the input collectin's QStrings, plus possibly some added '&'
* characters.
*
* That is the mechanism. Here is the policy, in order of decreasing
* importance (it may seem like these are implementation details, but
* IMHO the policy is an important part of the interface):
*
* 1. If the string already contains an '&' character, skip this
* string, because we consider such strings to be "user-specified"
* accelerators.
*
* 2. No accelerator may clash with a previously defined accelerator,
* including any legal (alphanumeric) user-specified accelerator
* anywhere in the collection
*
* 3. Prefer alphanumerics at the start of the string.
*
* 4. Otherwise, prefer alphanumerics at the start of a word.
*
* 5. Otherwise, choose any alphanumeric character not already
* taken. If no such character is available, give up & skip this
* string.
*
* A typical use of these functions would be to automatically assign
* accelerators to a dynamically populated popup menu. For example,
* the core code was written to automatically set accelerators for the
* "Load View Profile" popup menu for Konqueror. We quickly realized
* that it would be useful to make this facility more generally
* available, so I abstracted it out into a set of templates.
*
* TODO:
*
* + Add sugar functions for more collections.
*
* + Add more Deref classes so that we can access a wider variety of
* collections.
* */
namespace KAccelGen
{
// HELPERS
/**
* Static dereference class, for use as a template parameter.
*/
template <class Iter>
class Deref
{
public:
static QString deref(Iter i) { return *i; }
};
/**
* Static dereference class that calls the key() method on its
* target; for use as a template parameter.
*/
template <class Iter>
class Deref_Key
{
public:
static QString deref(Iter i) { return i.key(); }
};
/**
* Helper to determine if the given offset in the string could be a
* legal alphanumeric accelerator.
*
* @param str base string
* @param index offset to check
*/
inline bool
isLegalAccelerator(const QString& str, int index)
{
return index >= 0 && index < str.length()
&& str[index].isLetterOrNumber();
}
/**
* Loads all legal predefined accelerators in the (implicitly
* specified) collection into the given QMap.
*
* @param begin start iterator
* @param end (last+1) iterator
* @param keys map to store output
*/
template <class Iter, class Deref>
inline void
loadPredefined(Iter begin, Iter end, QMap<QChar,bool>& keys)
{
for (Iter i = begin; i != end; ++i) {
QString item = Deref::deref(i);
int user_ampersand = item.indexOf(QLatin1Char('&'));
if( user_ampersand >= 0 ) {
// Sanity check. Note that we don't try to find an
// accelerator if the user shoots him/herself in the foot
// by adding a bad '&'.
if( isLegalAccelerator(item, user_ampersand+1) ) {
keys.insert(item[user_ampersand+1], true);
}
}
}
}
// ///////////////////////////////////////////////////////////////////
// MAIN USER FUNCTIONS
/**
* Main, maximally flexible template function that assigns
* accelerators to the elements of a collection of QStrings. Clients
* will seldom use this directly, as it's usually easier to use one of
* the wrapper functions that simply takes a collection (see below).
*
* The Deref template parameter is a class containing a static
* dereferencing function, modeled after the comparison class C in
* Stroustrup 13.4.
*
* @param begin (you know)
* @param end (you know)
* @param target collection to store generated strings
*/
template <class Iter, class Iter_Deref >
void
generate(Iter begin, Iter end, QStringList& target)
{
// Will keep track of used accelerator chars
QMap<QChar,bool> used_accels;
// Prepass to detect manually user-coded accelerators
loadPredefined<Iter,Iter_Deref>(begin, end, used_accels);
// Main pass
for (Iter i = begin; i != end; ++i) {
QString item = Iter_Deref::deref(i);
// Attempt to find a good accelerator, but only if the user
// has not manually hardcoded one.
int user_ampersand = item.indexOf(QLatin1Char('&'));
if( user_ampersand < 0 || item[user_ampersand+1] == QLatin1Char('&')) {
bool found = false;
- int found_idx;
int j;
// Check word-starting letters first.
for( j=0; j < item.length(); ++j ) {
if( isLegalAccelerator(item, j)
&& !used_accels.contains(item[j])
&& (0 == j || (j > 0 && item[j-1].isSpace())) ) {
found = true;
- found_idx = j;
break;
}
}
if( !found ) {
// No word-starting letter; search for any letter.
for( j=0; j < item.length(); ++j ) {
if( isLegalAccelerator(item, j)
&& !used_accels.contains(item[j]) ) {
found = true;
- found_idx = j;
break;
}
}
}
if( found ) {
// Both upper and lower case marked as used
used_accels.insert(item[j].toUpper(),true);
used_accels.insert(item[j].toLower(),true);
item.insert(j,QLatin1Char('&'));
}
}
target.append( item );
}
}
/**
* Another convenience function; looks up the key instead of
* dereferencing directly for the given iterator.
*
* @param begin
* @param end
* @param target
*/
template <class Iter>
inline void
generateFromKeys(Iter begin, Iter end, QStringList& target)
{
generate< Iter, Deref_Key<Iter> >(begin, end, target);
}
/**
* Convenience function; generates accelerators for all the items in
* a QStringList.
*
* @param source Strings for which to generate accelerators
* @param target Output for accelerator-added strings */
inline void
generate(const QStringList& source, QStringList& target)
{
generate<QStringList::ConstIterator, Deref<QStringList::ConstIterator> >(source.begin(), source.end(), target);
}
/**
* Convenience function; generates accelerators for all the values in
* a QMap<T,QString>.
*
* @param source Map with input strings as VALUES.
* @param target Output for accelerator-added strings */
template <class Key>
inline void
generateFromValues(const QMap<Key,QString>& source, QStringList& target)
{
generate<typename QMap<Key,QString>::ConstIterator, Deref_Key<typename QMap<Key,QString>::ConstIterator> >(source.begin(), source.end(), target);
}
/**
* Convenience function; generates an accelerator mapping from all the
* keys in a QMap<QString,T>
*
* @param source Map with input strings as KEYS.
* @param target Output for accelerator-added strings */
template <class Data>
inline void
generateFromKeys(const QMap<QString,Data>& source, QStringList& target)
{
generateFromKeys(source.begin(), source.end(), target);
}
} // end namespace KAccelGen
#endif
diff --git a/kdoctools/customization/ru/catalog.xml b/kdoctools/customization/ru/catalog.xml
index a4d7f1d457..1093312bab 100644
--- a/kdoctools/customization/ru/catalog.xml
+++ b/kdoctools/customization/ru/catalog.xml
@@ -1,40 +1,42 @@
<?xml version="1.0"?>
<!DOCTYPE catalog PUBLIC "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN" "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd">
<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
<public publicId="-//KDE//ENTITIES Russian Documentation V1.0//RU"
uri="lang.entities"/>
<public publicId="-//KDE//DOCUMENT GNU Free Documentation Notice//RU"
uri="entities/fdl-notice.docbook"/>
<public publicId="-//KDE//DOCUMENT GNU General Public License Notice//RU"
uri="entities/gpl-notice.docbook"/>
<public publicId="-//KDE//DOCUMENT GNU Lesser General Public License Notice//RU"
uri="entities/lgpl-notice.docbook"/>
<public publicId="-//GNU//DOCUMENT GNU General Public License V2//RU"
uri="common/gpl-translated"/>
<public publicId="-//GNU//DOCUMENT GNU Lesser General Public License V2.1//RU"
uri="common/lgpl-translated"/>
<public publicId="-//GNU//DOCUMENT GNU Free Documentation License V1.1//RU"
uri="common/fdl-translated"/>
<public publicId="-//KDE//DOCUMENT GPL Licence Declaration//RU"
uri="entities/underGPL.docbook"/> />
+ <public publicId="-//KDE//DOCUMENT LGPL Licence Declaration//RU"
+ uri="entities/underLGPL.docbook"/>
<public publicId="-//KDE//DOCUMENT FDL Licence Declaration//RU"
uri="entities/underFDL.docbook"/>
<public publicId="-//KDE//DOCUMENT BSD Licence Declaration//RU"
uri="entities/underBSDLicense.docbook"/>
<public publicId="-//KDE//DOCUMENT Artistic Licence Declaration//RU"
uri="entities/underArtisticLicense.docbook"/>
<public publicId="-//KDE//DOCUMENT X11 Licence Declaration//RU"
uri="entities/underX11License.docbook"/>
<public publicId="-//KDE//DOCUMENT Report Bugs//RU"
uri="entities/report-bugs.docbook"/>
<public publicId="-//KDE//DOCUMENT Updating Documentation//RU"
uri="entities/update-doc.docbook"/>
<public publicId="-//KDE//DOCUMENT Help Menu Documentation//RU"
uri="entities/help-menu.docbook"/>
<public publicId="-//KDE//DOCUMENT Installation General Information//RU"
uri="entities/install-intro.docbook"/>
<public publicId="-//KDE//DOCUMENT Compilation Instructions//RU"
uri="entities/install-compile.docbook"/>
</catalog>
diff --git a/kdoctools/customization/ru/entities/underLGPL.docbook b/kdoctools/customization/ru/entities/underLGPL.docbook
new file mode 100644
index 0000000000..c2b1b59311
--- /dev/null
+++ b/kdoctools/customization/ru/entities/underLGPL.docbook
@@ -0,0 +1,2 @@
+<para>Программа распространяется на условиях лицензии <ulink
+url="common/lgpl-license.html">GNU Lesser General Public License</ulink>.</para>
diff --git a/kdoctools/customization/ru/lang.entities b/kdoctools/customization/ru/lang.entities
index 74974ca5eb..0555ab4962 100644
--- a/kdoctools/customization/ru/lang.entities
+++ b/kdoctools/customization/ru/lang.entities
@@ -1,46 +1,48 @@
<!ENTITY language "ru">
<!-- These entities should be translated, should therefore be stored
separately. -->
<!ENTITY % kde.translated
SYSTEM "strings.entities" >
%kde.translated;
<!-- The following entities should only use &kappname; in their
text -->
<!-- Licence links -->
<!ENTITY underGPL PUBLIC "-//KDE//DOCUMENT GPL Licence Declaration//RU"
"entities/underGPL.docbook" ><!-- level: para -->
+<!ENTITY underLGPL PUBLIC "-//KDE//DOCUMENT LGPL Licence Declaration//RU"
+ "entities/underLGPL.docbook" ><!-- level: para -->
<!ENTITY underFDL PUBLIC "-//KDE//DOCUMENT FDL Licence Declaration//RU"
"entities/underFDL.docbook" ><!-- level: para -->
<!ENTITY underBSDLicense PUBLIC "-//KDE//DOCUMENT BSD Licence Declaration//RU"
"entities/underBSDLicense.docbook" ><!-- level: para -->
<!ENTITY underArtisticLicense PUBLIC "-//KDE//DOCUMENT Artistic Licence Declaration//RU"
"entities/underArtisticLicense.docbook" ><!-- level: para -->
<!ENTITY underX11License PUBLIC "-//KDE//DOCUMENT X11 Licence Declaration//RU"
"entities/underX11License.docbook" ><!-- level: para -->
<!ENTITY reporting.bugs PUBLIC "-//KDE//DOCUMENT Report Bugs//RU"
"entities/report-bugs.docbook" ><!-- level: ? -->
<!ENTITY updating.documentation PUBLIC "-//KDE//DOCUMENT Updating Documentation//RU"
"entities/update-doc.docbook" ><!-- level: para -->
<!ENTITY help.menu.documentation PUBLIC "-//KDE//DOCUMENT Help Menu Documentation//RU"
"entities/help-menu.docbook" ><!-- level: variablelist -->
<!ENTITY install.intro.documentation PUBLIC "-//KDE//DOCUMENT Installation General Information//RU"
"entities/install-intro.docbook" ><!-- level: para -->
<!ENTITY install.compile.documentation PUBLIC "-//KDE//DOCUMENT Compilation Instructions//RU"
"entities/install-compile.docbook" ><!-- level: para -->
<!-- FDL notice -->
<!ENTITY FDLNotice PUBLIC "-//KDE//DOCUMENT GNU Free Documentation Notice//RU"
"entities/fdl-notice.docbook">
<!-- meant to be included, so no NDATA or CDATA (why?) -->
<!-- These entities may be extended by the authors and translators.
They should therefore be stored separately. Moreover, they MUST
come last, to avoid overriding problems. -->
<!ENTITY % kde.language.specific
SYSTEM "user.entities" >
%kde.language.specific;
diff --git a/kfile/kfilemodule.desktop b/kfile/kfilemodule.desktop
index f1728da5cc..5b2733b2e5 100644
--- a/kfile/kfilemodule.desktop
+++ b/kfile/kfilemodule.desktop
@@ -1,129 +1,131 @@
[Desktop Entry]
Name=KFileModule
Name[ar]=KFileModule
Name[ast]=KFileModule
Name[bg]=Модул KFile
Name[bn]=কে-ফাইল মডিইল
Name[bs]=KFileModule
Name[ca]=KFileModule
Name[ca@valencia]=KFileModule
Name[cs]=Modul KFile
Name[da]=KFileModule
Name[de]=KFile-Modul
Name[el]=Άρθρωμα KFile
Name[en_GB]=KFileModule
Name[es]=KFileModule
Name[et]=KFileModule
Name[eu]=KFileModulua
Name[fa]=KFileModule
Name[fi]=KFileModule
Name[fr]=KFileModule
Name[ga]=KFileModule
Name[gl]=KFileModule
Name[hr]=KModulDatoteke
Name[hu]=KFileModule
Name[ia]=Modulo KFile
Name[id]=KFileModule
Name[is]=KFile eining
Name[it]=Modulo KFile
Name[ja]=KFile モジュール
Name[kk]=KFileModule
Name[km]=KFileModule
Name[kn]=KFileModule
Name[ko]=KFileModule
Name[ku]=ModûlaKFile
Name[lt]=KFileModulis
Name[lv]=KFileModule
Name[ms]=KFileModule
Name[nb]=KFileModule
Name[nds]=K-Dateimoduul
Name[nl]=KFileModule
Name[nn]=KFileModule
Name[pa]=KFileModule
Name[pl]=Moduł KFile
Name[pt]=KFileModule
Name[pt_BR]=KFileModule
Name[ro]=KFileModule
Name[ru]=KFileModule
Name[se]=KFileModule
Name[si]=KDED මොඩියුලය
Name[sk]=KFile modul
Name[sl]=Modul KFile
Name[sr]=Модул к‑фајла
Name[sr@ijekavian]=Модул к‑фајла
Name[sr@ijekavianlatin]=Modul KFilea
Name[sr@latin]=Modul KFilea
Name[sv]=Kfil-modul
Name[ta]=KFileModule
Name[tg]=KFileModule
Name[th]=KFileModule
Name[tr]=KFile Modülü
Name[ug]=KFile بۆلىكى
Name[uk]=KFileModule
+Name[vi]=KFileModule
Name[wa]=Module KFile
Name[x-test]=xxKFileModulexx
Name[zh_CN]=KFile 模块
Name[zh_TW]=KFile 模組
Comment=The default KDE file module providing the standard file dialog
Comment[ar]=وحدة ملف كدي الافتراضية التي تعطي مربع الملف القياسي
Comment[bg]=Подразбиращият се файлов модул на KDE, осигуряващ стандартния диалогов прозорец за файлове
Comment[bs]=Podrazumijevani KDE‑ov modul datoteka koji daje standardnu datoteku dijalog
Comment[ca]=El mòdul de fitxers per defecte del KDE que proporciona el diàleg de fitxer estàndard
Comment[ca@valencia]=El mòdul de fitxers per defecte del KDE que proporciona el diàleg de fitxer estàndard
Comment[cs]=Výchozí souborový modul poskytující standardní souborový dialog
Comment[da]=KDE's standard filmodul som giver standard fildialogen
Comment[de]=Das Standard-KDE-Dateimodul, das den Standard-Dateidialog bereitstellt
Comment[el]=Το προεπιλεγμένο άρθρωμα KDE που παρέχει τον τυπικό διάλογο αρχείων
Comment[en_GB]=The default KDE file module providing the standard file dialogue
Comment[es]=El módulo de archivos por omisión de KDE que proporciona el diálogo de archivos estándar
Comment[et]=KDE vaikimisi failimoodul, mis pakub standardset failidialoogi
Comment[eu]=Fitxategi elkarrizketa koadro estandarra eskeintzen duen KDE fitxategi modulu lehenetsia
Comment[fi]=KDE:n oletustiedostoikkunan toteuttava moduuli
Comment[fr]=Le module de fichiers KDE par défaut fournit la fenêtre d'ouverture de fichiers standard
Comment[ga]=Modúl réamhshocraithe comhad KDE a sholáthraíonn an gnáthdhialóg comhad
Comment[gl]=O módulo predeterminado de KDE para ficheiros, que fornece o diálogo normal de ficheiros
Comment[hr]=Uobičajeni KDE modul za datoteke koji pruža standardni dijalog
Comment[hu]=A KDE alapértelmezett, standard fájlkezelő ablakait tartalmazó modul
Comment[ia]=Le modulo KDEFile predefinite que forni le file standard de dialogo
Comment[id]=Modul berkas KDE standar menyediakan dialog berkas standar
Comment[is]=Sjálfgefna KDE skráareiningin sem sér um staðlaða skráagluggann
Comment[it]=Il modulo file standard di KDE che fornisce la finestra di dialogo per i file
Comment[ja]=標準のファイル選択ダイアログを提供する KDE の標準ファイルモジュール
Comment[kk]=Стандартты файл диалогын қамтамасыз ететін KDE файл модулі
Comment[km]=ម៉ូឌុល​ឯកសារ KDE លំនាំដើម​ផ្ដល់​នូវ​ប្រអប់​ឯកសារ​ស្តង់ដារ
Comment[ko]=표준 파일 대화상자를 제공하는 기본 KDE 파일 모듈
Comment[ku]=KDE modula pelê ya standard, paceya pelê ya standard peyde dike
Comment[lt]=Numatytasis KDE failų dialogo modulis
Comment[lv]=Noklusētais KDE failu modulis, kas nodrošina standarta failu dialogu
Comment[nb]=KDE standard filmodul som skaffer standard fildialog
Comment[nds]=Dat KDE-Standarddateimoduul, dat den Standard-Dateidialoog praatstellt
Comment[nl]=De standaard KDE-bestandsmodule die de standaard bestandsdialoog levert
Comment[nn]=Standard KDE-filmodul for opna/lagra-vindauge
Comment[pa]=ਡਿਫਾਲਟ KDE ਫਾਇਲ ਮੋਡੀਊਲ ਸਟੈਂਡਰਡ ਫਾਇਲ ਡਾਈਲਾਗ ਦਿੰਦਾ ਹੈ
Comment[pl]=Domyślny moduł plików KDE dostarczający standardowe okno dialogowe plików
Comment[pt]=O módulo de ficheiros predefinido do KDE, que fornece a janela de ficheiros normal
Comment[pt_BR]=O módulo de arquivos padrão do KDE, que fornece o diálogo de arquivos padronizado
Comment[ro]=Modulul de fișier KDE implicit, furnizînd dialogul standard de fișiere
Comment[ru]=Модуль по умолчанию диалогового окна выбора файла
Comment[se]=Standárda KDE-fiilamodula mii sisttisdoallá standárdafiilaláseža
Comment[sk]=Štandardný súborový modul KDE, ktorý poskytuje štandardný súborový dialóg
Comment[sl]=Privzeti modul KDE za datoteke, ki ponuja običajno pogovorno okno za datoteke
Comment[sr]=Подразумевани КДЕ‑ов модул фајлова који даје стандардни фајл дијалог
Comment[sr@ijekavian]=Подразумијевани КДЕ‑ов модул фајлова који даје стандардни фајл дијалог
Comment[sr@ijekavianlatin]=Podrazumijevani KDE‑ov modul fajlova koji daje standardni fajl dijalog
Comment[sr@latin]=Podrazumevani KDE‑ov modul fajlova koji daje standardni fajl dijalog
Comment[sv]=KDE:s standardmodul för filer som tillhandahåller standarddialogrutan för filer
Comment[ta]=வழக்கமான கோப்பு பலகத்தை தரும் கேடீயீயின் இயல்பிருப்பு கோப்பு பாகம்
Comment[tg]=Файли стандартии модули KDE барои намоиши диалогҳо
-Comment[th]=มอดูลแฟ้มโดยปริยายของ KDE ที่ให้การใช้งานกล่องแฟ้มต่างๆ ที่เป็นมาตรฐาน
+Comment[th]=มอดูลแฟ้มโดยปริยายของ KDE ที่ให้การใช้งานกล่องแฟ้มต่าง ๆ ที่เป็นมาตรฐาน
Comment[tr]=Standart dosya penceresini sağlayan KDE öntanımlı dosya modülü
Comment[ug]=سۈكۈتتىكى KDE ھۆججەت بۆلىكى ئۆلچەملىك ھۆججەت سۆزلەشكۈ تەمىنلىدى
Comment[uk]=Типовий модуль KDE, що забезпечує роботу стандартного діалогового вікна роботи з файлами
+Comment[vi]=Mô-đun tập tin KDE mặc định cung cấp hộp thoại tập tin chuẩn
Comment[wa]=Li module fitchî prémetou di KDE et ki dene li dvize di fitchî standård
Comment[x-test]=xxThe default KDE file module providing the standard file dialogxx
Comment[zh_CN]=默认 KDE 文件模块提供了标准的文件对话框
Comment[zh_TW]=預設的 KDE 檔案模組,提供標準檔案對話框
X-KDE-ServiceTypes=KIO/FileModule
Type=Service
X-KDE-Library=kfilemodule
diff --git a/khtml/khtml.desktop b/khtml/khtml.desktop
index 2062904144..e54a87434c 100644
--- a/khtml/khtml.desktop
+++ b/khtml/khtml.desktop
@@ -1,198 +1,198 @@
[Desktop Entry]
Type=Service
Comment=Embeddable HTML viewing component
Comment[af]=Inlegbare HTML aansigkomponent
Comment[ar]=مكون عرض HTML المضمن
Comment[as]=Embeddable HTML চাব পৰা অংশ
Comment[ast]=Componente encrustable de vista de HTML
Comment[be]=Унутраны праглядальнік HTML
Comment[be@latin]=Unutrany kampanent dla prahladu HTML
Comment[bg]=Компонент за вграждане за преглед на HTML файлове
Comment[bn]=অভ্যন্তরীণ এইচ-টি-এম-এল প্রদর্শক উপাদান
Comment[bn_IN]=এমবেড করার যোগ্য HTML প্রদর্শনের সামগ্রী
Comment[br]=Parzh HTML gweler enframmus
Comment[bs]=Ugnezdiva komponenta za prikaz HTML‑a
Comment[ca]=Component encastable per a visualitzar HTML
Comment[ca@valencia]=Component encastable per a visualitzar HTML
Comment[cs]=Komponenta pro zobrazování HTML
Comment[csb]=Kòmpònent do przezeraniô lopków HTML
Comment[cy]=Cydran gweld HTML mewnadeiladadwy
Comment[da]=HTML-visningskomponent som kan indlejres
Comment[de]=Einbettungsfähige HTML-Betrachtungskomponente
Comment[el]=Ενσωματώσιμο στοιχείο προβολής HTML
Comment[en_GB]=Embeddable HTML viewing component
Comment[eo]=HTML-rigarda komponanto
Comment[es]=Componente empotrable para visualizar HTML
Comment[et]=Põimitav HTML-i näitamise komponent
Comment[eu]=Kapsulatutako HTML ikustailea
Comment[fa]=مولفه مشاهده زنگام نهفته
Comment[fi]=Upotettava HTML-katselukomponentti
Comment[fr]=Composant d'affichage HTML intégrable
Comment[fy]=Yn te sluten HTML-werjeftekomponint
Comment[ga]=Comhpháirt inleabaithe amharctha HTML
Comment[gl]=Compoñente integrábel de visualización de HTML
Comment[gu]=જડિત HTML દર્શક ભાગ
Comment[he]=רכיב בר־שיבוץ לתצוגת HTML
Comment[hi]=अंतर्निर्मित एचटीएमएल प्रदर्शक अवयव
Comment[hne]=भीतर मं बने एचटीएमएल प्रदर्सक अवयव
Comment[hr]=Ugrađena komponenta za pregledavanje HTML
Comment[hsb]=Integrowana HTML-komponenta
Comment[hu]=Beágyazható HTML-néző komponens
Comment[ia]=Componente incorporabile pro vision HTML
Comment[id]=Komponen menampilkan HTML dapat dibenamkan
Comment[is]=Ívafin HTML-skoðunar eining
Comment[it]=Componente integrabile per la visualizzazione di HTML
Comment[ja]=埋め込み可能な HTML ビューアコンポーネント
Comment[kk]=Ендірілетін HTML қарау компоненті
Comment[km]=សមាសភាគ​មើល HTML ដែល​អាច​បង្កប់បាន
Comment[kn]=ಹುದುಗಿಸಬಹುದಾದ (ಎಂಬೆಡಬಲ್) HTML ವೀಕ್ಷಣಾ ಅಂಗ
Comment[ko]=끼워넣은 HTML 보기 구성 요소
Comment[ku]=Perçe ya nîşanderê HTML yê jixwe heyî
Comment[lb]=Abettbar HTML-Uweisungskomponent
Comment[lt]=Įdedamas HTML peržiūros komponentas
Comment[lv]=Iegultā HTML skatīšanas komponente
Comment[mai]=अंतर्निर्मित एचटीएमएल प्रदर्शक अवयव
Comment[mk]=Вгнездлива компонента за гледање HTML
Comment[ml]=എംബഡബിള്‍ ആയിട്ടുള്ള എച്ച്ടിഎംഎല്‍ കാണാനുള്ള ഘടകം
Comment[mr]=अंतर्भूतीत HTML प्रदर्शक विभाग
Comment[ms]=Komponen pelihat HTML boleh-serta
Comment[nb]=Innebygget komponent for HTML-visning
Comment[nds]=Inbettbor Kieker-Komponent för HTML
Comment[ne]=सम्मिलित गर्न सकिने एचटीएमएल दृश्य अवयव
Comment[nl]=Ingebed HTML-weergavecomponent
Comment[nn]=Innebyggbar komponent for HTML-vising
Comment[or]=ସନ୍ନିବେଶଯୋଗ୍ୟ HTML ପ୍ରଦର୍ଶନୀୟ ଉପାଦାନ
Comment[pa]=ਸ਼ਾਮਲ HTML ਵੇਖਣਯੋਗ ਹਿੱਸਾ
Comment[pl]=Składnik do przeglądania plików HTML
Comment[ps]=ليدانی رغتوک HTML راتاوېدونکی
Comment[pt]=Componente de visualização de HTML incorporada
Comment[pt_BR]=Componente integrado de visualização HTML
Comment[ro]=Componentă înglobată de vizualizare HTML
Comment[ru]=Компонент просмотра HTML
Comment[se]=Vuojuhanláhkái HTML-čájehanoassi
Comment[sk]=Komponent pre zobrazenie HTML
Comment[sl]=Integrirani pregled besedila HTML
Comment[sq]=Përbërës Shfaqjeje i Bashkangjitur në HTML
Comment[sr]=Угнездива компонента за приказ ХТМЛ‑а
Comment[sr@ijekavian]=Угњездива компонента за приказ ХТМЛ‑а
Comment[sr@ijekavianlatin]=Ugnjezdiva komponenta za prikaz HTML‑a
Comment[sr@latin]=Ugnezdiva komponenta za prikaz HTML‑a
Comment[sv]=Inbäddningsbar HTML-visande komponent
Comment[ta]=உட்பொதிக்கவல்ல HTML காட்சிப் பாகம்
Comment[te]=పొదగదగ్గ HTML విక్షణాంశం
Comment[tg]=Қисми намоиши HTML-и дарунсохт
Comment[th]=ส่วนประกอบสำหรับแสดงผล HTML ที่ฝังได้
Comment[tr]=Gömülebilir HTML görüntüleme aracı
Comment[ug]=سىڭدۈرمە HTML كۆرۈش بۆلىكى
Comment[uk]=Вбудований компонент «переглядач HTML»
Comment[uz]=Ichiga oʻrnatib boʻladigan HTML koʻruvchi komponent
Comment[uz@cyrillic]=Ичига ўрнатиб бўладиган HTML кўрувчи компонент
Comment[vi]=Thành phần xem HTML có khả năng nhúng.
Comment[wa]=Ravalé compôzant di håynaedje HTML
-Comment[x-test]=xxEmbeddable HTML viewing componentxx
Comment[xh]=Inxenye yemboniselo elungisiweyo ye HTML
+Comment[x-test]=xxEmbeddable HTML viewing componentxx
Comment[zh_CN]=可嵌入的 HTML 查看组件
Comment[zh_HK]=可嵌入的 HTML 檢視元件
Comment[zh_TW]=可嵌入的 HTML 檢視元件
MimeType=text/html;application/xml;application/xhtml+xml;
Icon=konqueror
Name=KHTML
Name[af]=KHTML
Name[ar]=KHTML
Name[as]=KHTML
Name[ast]=KHTML
Name[be]=KHTML
Name[be@latin]=KHTML
Name[bg]=KHTML
Name[bn]=KHTML
Name[bn_IN]=KHTML
Name[br]=KHTML
Name[bs]=KHTML
Name[ca]=KHTML
Name[ca@valencia]=KHTML
Name[cs]=KHTML
Name[csb]=KHTML
Name[cy]=KHTML
Name[da]=KHTML
Name[de]=KHTML
Name[el]=KHTML
Name[en_GB]=KHTML
Name[eo]=KHTML
Name[es]=KHTML
Name[et]=KHTML
Name[eu]=KHTML
Name[fa]=KHTML
Name[fi]=KHTML
Name[fr]=KHTML
Name[fy]=KHTML
Name[ga]=KHTML
Name[gl]=KHTML
Name[gu]=KHTML
Name[he]=KHTML
Name[hi]=के-एचटीएमएल
Name[hne]=के-एचटीएमएल
Name[hr]=KHTML
Name[hsb]=KHTML
Name[hu]=KHTML
Name[hy]=KHTML
Name[ia]=KHTML
Name[id]=KHTML
Name[is]=KHTML
Name[it]=KHTML
Name[ja]=KHTML
Name[kk]=KHTML
Name[km]=KHTML
Name[kn]=ಕೆಹೆಚ್ ಟಿ ಎಮ್ ಎಲ್
Name[ko]=KHTML
Name[ku]=KHTML
Name[lb]=KHTML
Name[lt]=KHTML
Name[lv]=KHTML
Name[mai]=के-एचटीएमएल
Name[mk]=KHTML
Name[ml]=കെഎച്ച്ടിഎംഎല്‍
Name[mr]=KHTML
Name[ms]=KHTML
Name[nb]=KHTML
Name[nds]=KHTML
Name[ne]=KHTML
Name[nl]=KHTML
Name[nn]=KHTML
Name[oc]=KHTML
Name[or]=KHTML
Name[pa]=KHTML
Name[pl]=KHTML
Name[ps]=KHTML
Name[pt]=KHTML
Name[pt_BR]=KHTML
Name[ro]=KHTML
Name[ru]=KHTML
Name[se]=KHTML
Name[si]=KHTML
Name[sk]=KHTML
Name[sl]=KHTML
Name[sq]=KHTML
Name[sr]=КХТМЛ
Name[sr@ijekavian]=КХТМЛ
Name[sr@ijekavianlatin]=KHTML
Name[sr@latin]=KHTML
Name[sv]=KHTML
Name[ta]=KHTML
Name[te]=కెహెచ్ టి ఎమ్ ఎల్
Name[tg]=KHTML
Name[th]=KHTML
Name[tr]=KHTML
Name[ug]=KHTML
Name[uk]=KHTML
Name[uz]=KHTML
Name[uz@cyrillic]=KHTML
Name[vi]=KHTML
Name[wa]=KHTML
-Name[x-test]=xxKHTMLxx
Name[xh]=KHTML
+Name[x-test]=xxKHTMLxx
Name[zh_CN]=KHTML
Name[zh_HK]=KHTML
Name[zh_TW]=KHTML
X-KDE-ServiceTypes=KParts/ReadOnlyPart,Browser/View
X-KDE-Library=libkhtmlpart
InitialPreference=10
diff --git a/khtml/khtmladaptorpart.desktop b/khtml/khtmladaptorpart.desktop
index 7952b549b1..58284d60e8 100644
--- a/khtml/khtmladaptorpart.desktop
+++ b/khtml/khtmladaptorpart.desktop
@@ -1,87 +1,88 @@
[Desktop Entry]
Name=KHTML Extension Adaptor
Name[af]=KHTML uitbreidingaanpasser
Name[ar]=مهيئ امتدادات KHTML
Name[as]=KHTML সম্প্ৰসাৰণৰ এডাপ্টৰ
Name[ast]=Adautador d'estensiones KHTML
Name[be@latin]=Adaptar dla pašyreńniaŭ KHTML
Name[bg]=Адаптор за KHTML разширения
Name[bn]=KHTML এক্সটেনশন অ্যাডাপ্টর
Name[bn_IN]=KHTML Extension Adaptor
Name[bs]=Adapter proširenja za KHTML
Name[ca]=Adaptador d'extensió KHTML
Name[ca@valencia]=Adaptador d'extensió KHTML
Name[cs]=Adaptér pro KHTML rozšíření
Name[csb]=KHTML Extension Adaptor
Name[da]=Udvidelsestilpasning for KHTML
Name[de]=Adapter für KHTML-Erweiterungen
Name[el]=Προσαρμογέας επέκτασης KHTML
Name[en_GB]=KHTML Extension Adaptor
Name[eo]=KHTML-finaĵa adaptilo
Name[es]=Adaptador de extensiones KHTML
Name[et]=KHTML-i laiendi adapter
Name[eu]=KHTML luzapenen moldatzailea
Name[fa]=سازوارگر گسترش‌های KHTML
Name[fi]=KHTML lisäosien sovitin
Name[fr]=Adaptateur de l'extension KHTML
Name[fy]=KHTML taheaksel adaptor
Name[ga]=Cuibheoir Eisínteacht KHTML
Name[gl]=Adaptador de extensión de KHTML
Name[gu]=KHTML એક્સટેન્સન સ્વિકારનાર
Name[he]=מתאם הרחבה של KHTML
Name[hne]=केएचटीएमएल विस्तार एडाप्टर
Name[hr]=Prilagodnik proširenja za KHTML
Name[hsb]=KHTML Extension Adaptor
Name[hu]=KHTML kiterjesztésadapter
Name[ia]=Adaptator pro KHTML Extension
Name[id]=Adaptor Tambahan KHTML
Name[is]=Aðlögun KHTML-endinga
Name[it]=Adattatore estensione KHTML
Name[ja]=KHTML エクステンションアダプタ
Name[kk]=KHTML кеңейту адапторы
Name[km]=អាដាប់ទ័រ​ផ្នែក​បន្ថែម KHTML
Name[kn]=KHTML ವಿಸ್ತರಣಾ ಅನುವರ್ತಕ (ಅಡಾಪ್ಟಾರ್)
Name[ko]=KHTML 확장 기능 어댑터
Name[ku]=Pêveka Adeptora KHTML
Name[lt]=KHTML praplėtimų adapteris
Name[lv]=KHTML paplašinājumu adapteris
Name[mai]=KHTML विस्तारक एडाप्टर
Name[mk]=Адаптер за KHTML-екстензија
Name[ml]=കെഎച്ച്ടിഎംഎല്‍ എക്സ്റ്റന്‍ഷന്‍ അഡാപ്റ്റര്‍
Name[mr]=KHTML विस्तारन एडॅप्टर
Name[nb]=KHTML-filutvidelsesadapter
Name[nds]=Koppelsteed för KHTML-Verwiedern
Name[ne]=केडीई एचटीएमएल विस्तार समायोजक
Name[nl]=KHTML Extension Adaptor
Name[nn]=KHTML-utvidingstilpassar
Name[or]=KHTML ଅନୁଲଗ୍ନ ଉପଯୋଜକ
Name[pa]=KHTML ਇਕਸਟੈਨਸ਼ਨ ਅਡੋਪਟਰ
Name[pl]=Adapter rozszerzeń KHTML
Name[pt]=Adaptação da Extensão KHTML
Name[pt_BR]=Adaptador de extensões do KHTML
Name[ro]=Adaptor de extensii KHTML
Name[ru]=Адаптер расширений KHTML
Name[se]=KHTML-viiddádusheiveheaddji
Name[si]=KHTML දිගු ඇඩැප්ටරය
Name[sk]=Adaptér pre KHTML rozšírenia
Name[sl]=Prilagodilnik razširitve KHTML
Name[sr]=Адаптор проширења за КХТМЛ
Name[sr@ijekavian]=Адаптор проширења за КХТМЛ
Name[sr@ijekavianlatin]=Adaptor proširenja za KHTML
Name[sr@latin]=Adaptor proširenja za KHTML
Name[sv]=KHTML-utökningsanpassning
Name[ta]=KHTML விரிவு அடாப்டர்
Name[tg]=Созгори пасванди KHTML
Name[th]=ตัวแปลงส่วนขยาย KHTML
Name[tr]=KHTML Eklenti Bağdaştırıcısı
Name[ug]=KHTML كېڭەيتىلمە ماسلاشتۇرغۇچ
Name[uk]=Адаптер розширень KHTML
+Name[vi]=Bộ tiếp hợp mở rộng KHTML
Name[wa]=Adapteu d' sitindaedje KHTML
Name[x-test]=xxKHTML Extension Adaptorxx
Name[zh_CN]=KHTML 扩展适配器
Name[zh_TW]=KHTML 延伸裝置
X-KDE-Library=khtmladaptorpart
MimeType=application/x-khtml-adaptor;
X-KDE-ServiceTypes=KParts/ReadOnlyPart,Browser/View
Type=Service
InitialPreference=4
diff --git a/khtml/khtmlimage.desktop b/khtml/khtmlimage.desktop
index 5249b7c0b2..3f8effef9d 100644
--- a/khtml/khtmlimage.desktop
+++ b/khtml/khtmlimage.desktop
@@ -1,192 +1,192 @@
[Desktop Entry]
Type=Service
Comment=Embeddable Image Viewing Component
Comment[af]=Inlegbare Beeld Aansig Komponent
Comment[ar]=مكون عرض صور مضمن
Comment[as]=প্ৰোথিত কৰিব পৰা প্ৰতিমূৰ্ত্তি প্ৰদৰ্শনৰ অংশ
Comment[ast]=Componente encrustable de vista d'imaxes
Comment[be]=Унутраны праглядальнік відарысаў
Comment[be@latin]=Unutrany kampanent dla prahladu vyjavaŭ
Comment[bg]=Компонент за вграждане за преглед на изображения
Comment[bn]=অভ্যন্তরীণ চিত্র প্রদর্শক উপাদান
Comment[bn_IN]=এমবেড করার যোগ্য ছবি প্রদর্শনের সামগ্রী
Comment[br]=Parzh skeudenn gweler enframmus
Comment[bs]=Ugnezdiva komponenta za prikaz slika
Comment[ca]=Component encastable per a visualitzar imatges
Comment[ca@valencia]=Component encastable per a visualitzar imatges
Comment[cs]=Komponenta pro zobrazování obrázků
Comment[csb]=Kòmpònent do przezeraniô òbrôzów
Comment[cy]=Cydran Gweld Delwedd Mewnadeiladadwy
Comment[da]=Billedvisningskomponent som kan indlejres
Comment[de]=Einbettungsfähige Bildbetrachter-Komponente
Comment[el]=Ενσωματώσιμο στοιχείο προβολής εικόνων
Comment[en_GB]=Embeddable Image Viewing Component
Comment[eo]=Enkorpigebla bildorigardila komponanto
Comment[es]=Componente empotrable para visualizar imágenes
Comment[et]=Põimitav pildifailide näitamise komponent
Comment[eu]=Kapsulatutako irudi-ikustailea
Comment[fa]=مولفه مشاهده تصویر نهفته
Comment[fi]=Upotettava kuviennäyttökomponentti
Comment[fr]=Composant d'affichage d'images intégrable
Comment[fy]=Yn te sluten komponint foar byldwerjefte
Comment[ga]=Comhpháirt inleabaithe amharctha íomhá
Comment[gl]=Compoñente integrábel de visualización de imaxes
Comment[gu]=જડિત ચિત્ર દર્શક ભાગ
Comment[he]=רכיב בר־שיבוץ לתצוגת תמונות
Comment[hi]=अंतर्निर्मित छवि प्रदर्शक अवयव
Comment[hne]=भीतर मं बने फोटू प्रदर्सक अवयव
Comment[hr]=Ugradiva komponenta za pregledavanje slika
Comment[hsb]=Integrujomna komponenta za wobrazy
Comment[hu]=Beágyazható képnéző komponens
Comment[ia]=Componente Incorporabile pro vision de imagine
Comment[id]=Komponen Menampilkan Citra Dapat Dibenamkan
Comment[is]=Ívefjanleg myndsjáreining
Comment[it]=Componente integrabile per la visualizzazione di immagini
Comment[ja]=埋め込み可能な画像ビューアコンポーネント
Comment[kk]=Ендірілетін кескін қарау компоненті
Comment[km]=សមាសភាគ​មើល​រូបភាព​ដែល​អាច​បង្កប់បាន
Comment[kn]=ಹುದುಗಿಸಬಹುದಾದ (ಎಂಬೆಡಬಲ್) ಚಿತ್ರ ವೀಕ್ಷಣಾ ಅಂಗ
Comment[ko]=끼워넣은 그림 보기 구성 요소
Comment[ku]=Perçe ya Nîşanderê Wêne yê Jixwe Heyî
Comment[lb]=Abettbar Bild-Uweisungskomponent
Comment[lt]=Įdedamas piešinių peržiūros komponentas
Comment[lv]=Iegultā attēlu skatīšanas komponente
Comment[mai]=अंतर्निर्मित छवि प्रदर्शक अवयव
Comment[mk]=Вгнездлива компонента за гледање слики
Comment[ml]=എംബഡ് ചെയ്യാവുന്ന ചിത്രം കാണിക്കുന്ന ഘടകം
Comment[mr]=अंतर्भूतीत प्रतिमा प्रदर्शक विभाग
Comment[ms]=Komponen Pelihat Imej Boleh-serta
Comment[nb]=Innebygget bildevisningskomponent
Comment[nds]=Inbettbor Kieker-Komponent för Biller
Comment[ne]=सम्मिलित गर्न सकिने छवि हेर्ने अवयव
Comment[nl]=Ingebed afbeeldingenweergavecomponent
Comment[nn]=Innebyggbar komponent for biletvising
Comment[or]=ସନ୍ନିବେଶଯୋଗ୍ୟ ପ୍ରତିଛବି ପ୍ରଦର୍ଶନୀୟ ଉପାଦାନ
Comment[pa]=ਸ਼ਾਮਿਲ ਚਿੱਤਰ ਦਰਸ਼ਕ ਹਿੱਸਾ
Comment[pl]=Składnik do przeglądania obrazków
Comment[ps]=راتاوېدونکی انځور ليدانی رغتوک
Comment[pt]=Componente incorporada para visualizar imagens
Comment[pt_BR]=Componente integrado de visualização de imagens
Comment[ro]=Componentă înglobată de vizualizare imagini
Comment[ru]=Компонент просмотра изображений
Comment[se]=Vuojuhanláhkái govvačájehanoassi
Comment[sk]=Komponent pre zobrazenie obrázkov
Comment[sl]=Integrirana komponenta za ogledovanje slik
Comment[sr]=Угнездива компонента за приказ слика
Comment[sr@ijekavian]=Угњездива компонента за приказ слика
Comment[sr@ijekavianlatin]=Ugnjezdiva komponenta za prikaz slika
Comment[sr@latin]=Ugnezdiva komponenta za prikaz slika
Comment[sv]=Inbäddningsbar bildvisande komponent
Comment[ta]=உட்பொதிந்த பிம்பக் காட்டி பாகம்
Comment[te]=పొదగదగ్గ ప్రతిబింబాల విక్షణాంశం
Comment[tg]=Қисми намоиши тасвири дарунсохт
Comment[th]=คอมโพเนนท์แสดงภาพแบบฝังตัวได้
Comment[tr]=Gömülebilir Resim Görüntüleme Aracı
Comment[ug]=سىڭدۈرۈشچان سۈرەت كۆرۈش بۆلىكى
Comment[uk]=Вбудований компонент переглядача зображень
Comment[uz]=Ichiga oʻrnatib boʻladigan rasm koʻruvchi komponent
Comment[uz@cyrillic]=Ичига ўрнатиб бўладиган расм кўрувчи компонент
Comment[vi]=Thành phần xem ảnh có khả năng nhúng.
Comment[wa]=Ravalé compôzant håyneu d' imådjes
-Comment[x-test]=xxEmbeddable Image Viewing Componentxx
Comment[xh]=Ingxenye Yemboniselo Yomfanekiso Olungisiweyo
+Comment[x-test]=xxEmbeddable Image Viewing Componentxx
Comment[zh_CN]=可嵌入的图像查看组件
Comment[zh_HK]=可嵌入的圖檔檢視元件
Comment[zh_TW]=可嵌入的影像檢視元件
MimeType=image/gif;image/x-xpixmap;image/x-xbitmap;image/jpeg;image/bmp;image/png;image/x-jng;image/x-ico;image/x-portable-bitmap;image/x-portable-pixmap;image/x-portable-graymap;image/tiff;video/x-mng;image/x-tga;
Name=Embeddable Image Viewer
Name[af]=Inlegbare Beeldbekyker
Name[ar]=عارض صور مضمن
Name[as]=প্ৰোথিত কৰিব পৰা প্ৰতিমূৰ্ত্তিৰ প্ৰদৰ্শক
Name[ast]=Visor d'imaxes encrustable
Name[be]=Унутраны праглядальнік відарысаў
Name[be@latin]=Unutrany prahladnik vyjavaŭ
Name[bg]=Компонент за вграждане за преглед на изображения
Name[bn]=অভ্যন্তরীণ চিত্র প্রদর্শক
Name[bn_IN]=এমবেড করার যোগ্য ছবি প্রদর্শন ব্যবস্থা
Name[br]=Gweler Skeudennoù Enklozet
Name[bs]=Ugradivi prikazivač slika
Name[ca]=Visor encastable d'imatges
Name[ca@valencia]=Visor encastable d'imatges
Name[cs]=Zabudovaný prohlížeč obrázků
Name[csb]=Wbùdowóny przezérnik òbrôzów
Name[cy]=Gwelydd Delweddau Mewnadeiladadwy
Name[da]=Billedfremviser som kan indlejres
Name[de]=Eingebetteter Bildbetrachter
Name[el]=Ενσωματώσιμος προβολέας εικόνων
Name[en_GB]=Embeddable Image Viewer
Name[eo]=Enkorpigebla bildorigardilo
Name[es]=Visor empotrable de imágenes
Name[et]=Põimitav pildifailide näitaja
Name[eu]=Kapsulatutako irudi-ikustailea
Name[fa]=مشاهده‌گر تصویر نهفته
Name[fi]=Upotettava kuvannäyttäjä
Name[fr]=Afficheur d'images intégrable
Name[fy]=Yn te sluten byldwerjefte
Name[ga]=Amharcán Íomhánna Inleabaithe
Name[gl]=Visualizador de imaxes integrábel
Name[gu]=જડિત ચિત્ર દર્શક
Name[he]=מציג תמונות הניתן לשיבוץ
Name[hi]=अंतर्निर्मित छवि प्रदर्शक
Name[hne]=भीतर मं बने फोटू प्रदर्सक
Name[hr]=Ugradivi preglednik slika
Name[hsb]=Integrowany wobhladowar za wobrazy
Name[hu]=Beágyazható képnézegető
Name[ia]=Visor Incorporate de Imagine
Name[id]=Penampil Citra Dapat Dibenamkan
Name[is]=Ívefjanleg myndsjá
Name[it]=Visualizzatore integrabile di immagini
Name[ja]=埋め込み画像ビューア
Name[kk]=Ендірілетін кескін қарау құралы
Name[km]=កម្មវិធី​មើល​រូបភាព​ដែល​អាច​បង្កប់​បាន
Name[kn]=ಹುದುಗಿಸಬಹುದಾದ (ಎಂಬೆಡಬಲ್) ಚಿತ್ರ ವೀಕ್ಷಕ
Name[ko]=끼워넣은 그림 표시기
Name[ku]=Nîşanderê Wêne yê Jixwe Heyî
Name[lb]=Abettbare Bild-Uweiser
Name[lt]=Įdedamas piešinių žiūriklis
Name[lv]=Iegultais attēlu skatītājs
Name[mai]=अंतर्निर्मित छवि प्रदर्शक
Name[mk]=Вгнездлив гледач на слики
Name[ml]=എംബഡ് ചെയ്യാവുന്ന ചിത്ര ദര്‍ശിനി
Name[mr]=अंतर्भूतीत प्रतिमा प्रदर्शक
Name[ms]=Pelihat Imej Boleh-serta
Name[nb]=Innebygget bildeviser
Name[nds]=Inbettbor Bildkieker
Name[ne]=सम्मिलित गर्न सकिने छवि दर्शक
Name[nl]=Ingebedde afbeeldingenweergave
Name[nn]=Innebyggbar biletvisar
Name[or]=ସନ୍ନିବେଶଯୋଗ୍ୟ ପ୍ରତିଛବି ପ୍ରଦର୍ଶକ
Name[pa]=ਸ਼ਾਮਿਲ ਚਿੱਤਰ ਦਰਸ਼ਕ
Name[pl]=Wbudowana przeglądarka obrazków
Name[ps]=راتاوېدونکی انځور ليدانی
Name[pt]=Visualizador de Imagens Incorporado
Name[pt_BR]=Visualizador de imagens integrado
Name[ro]=Vizualizor înglobat de imagini
Name[ru]=Просмотр изображений
Name[se]=Vuojuhanláhkái govvačájeheaddji
Name[sk]=Zabudovaný prehliadač obrázkov
Name[sl]=Vgrajeni pregledovalnik slik
Name[sr]=Угнездиви приказивач слика
Name[sr@ijekavian]=Угњездиви приказивач слика
Name[sr@ijekavianlatin]=Ugnjezdivi prikazivač slika
Name[sr@latin]=Ugnezdivi prikazivač slika
Name[sv]=Inbäddningsbar bildvisare
Name[ta]=உட்பொதிந்த பிம்பங் காட்டி
Name[te]=పొదిగిన ప్రతిబింబ చూపరి
Name[tg]=Намоишгари тасвири дарунсохт
Name[th]=ตัวแสดงภาพแบบฝังตัวได้
Name[tr]=Gömülü Resim Görüntüleyici
Name[ug]=سىڭدۈرۈشچان سۈرەت كۆرگۈچ
Name[uk]=Вмонтований переглядач зображень
Name[uz]=Rasm koʻruvchi
Name[uz@cyrillic]=Расм кўрувчи
Name[vi]=Bộ xem ảnh có khả năng nhúng
Name[wa]=Ravalé håyneu d' imådjes
-Name[x-test]=xxEmbeddable Image Viewerxx
Name[xh]=Umboniseli Womfanekiso Olungisiweyo
+Name[x-test]=xxEmbeddable Image Viewerxx
Name[zh_CN]=可嵌入的图像查看器
Name[zh_HK]=可嵌入的圖檔檢視器
Name[zh_TW]=可嵌入的影像檢視器
X-KDE-ServiceTypes=KParts/ReadOnlyPart,Browser/View
InitialPreference=4
X-KDE-Library=khtmlimagepart
diff --git a/kio/application.desktop b/kio/application.desktop
index 06076648c6..af06ba14a0 100644
--- a/kio/application.desktop
+++ b/kio/application.desktop
@@ -1,142 +1,142 @@
[Desktop Entry]
Type=ServiceType
X-KDE-ServiceType=Application
Name=Application
Name[af]=Program
Name[ar]=تطبيق
Name[as]=অনুপ্ৰয়োগ
Name[ast]=Aplicación
Name[be]=Праграма
Name[be@latin]=Aplikacyja
Name[bg]=Програма
Name[bn]=অ্যাপলিকেশন
Name[bn_IN]=অ্যাপ্লিকেশন
Name[br]=Arload
Name[bs]=Aplikacija
Name[ca]=Aplicació
Name[ca@valencia]=Aplicació
Name[cs]=Aplikace
Name[csb]=Programa
Name[cy]=Cymhwysiad
Name[da]=Program
Name[de]=Programm
Name[el]=Εφαρμογή
Name[en_GB]=Application
Name[eo]=Aplikaĵo
Name[es]=Aplicación
Name[et]=Rakendus
Name[eu]=Aplikazioa
Name[fa]=کاربرد
Name[fi]=Sovellus
Name[fr]=Application
Name[fy]=Applikaasje
Name[ga]=Feidhmchlár
Name[gl]=Aplicación
Name[gu]=કાર્યક્રમ
Name[he]=תוכנית
Name[hi]=अनुप्रयोग
Name[hne]=अनुपरयोग
Name[hr]=Aplikacija
Name[hsb]=aplikacija
Name[hu]=alkalmazás
Name[ia]=Application
Name[id]=Aplikasi
Name[is]=Forrit
Name[it]=Applicazione
Name[ja]=アプリケーション
Name[kk]=Қолданба
Name[km]=កម្មវិធី
Name[kn]=ಅನ್ವಯ
Name[ko]=응용 프로그램
Name[ku]=Sepan
Name[lb]=Programm
Name[lt]=Programa
Name[lv]=Programma
Name[mai]=अनुप्रयोग
Name[mk]=Апликација
Name[ml]=പ്രയോഗം
Name[mr]=अनुप्रयोग
Name[ms]=Aplikasi
Name[nb]=Program
Name[nds]=Programm
Name[ne]=अनुप्रयोग
Name[nl]=Toepassing
Name[nn]=Program
Name[oc]=Aplicacion
Name[or]=ପ୍ରୟୋଗ
Name[pa]=ਐਪਲੀਕੇਸ਼ਨ
Name[pl]=Program
Name[ps]=کاريال
Name[pt]=Aplicação
Name[pt_BR]=Aplicativo
Name[ro]=Aplicație
Name[ru]=Приложение
Name[se]=Prográmma
Name[si]=යෙදුම්
Name[sk]=Aplikácia
Name[sl]=Program
Name[sq]=Programi
Name[sr]=Програм
Name[sr@ijekavian]=Програм
Name[sr@ijekavianlatin]=Program
Name[sr@latin]=Program
Name[sv]=Program
Name[ta]=பயன்பாடு
Name[te]=కార్యక్రమం
Name[tg]=Барнома
Name[th]=โปรแกรม
Name[tr]=Uygulama
Name[ug]=پروگرامما
Name[uk]=Програма
Name[uz]=Dastur
Name[uz@cyrillic]=Дастур
Name[vi]=Ứng dụng
Name[wa]=Programe
-Name[x-test]=xxApplicationxx
Name[xh]=Isicelo
+Name[x-test]=xxApplicationxx
Name[zh_CN]=应用程序
Name[zh_HK]=應用程式
Name[zh_TW]=應用程式
[PropertyDef::NoDisplay]
Type=bool
[PropertyDef::DocPath]
Type=QString
[PropertyDef::X-DocPath]
Type=QString
[PropertyDef::X-KDE-SubstituteUID]
Type=bool
[PropertyDef::X-KDE-Username]
Type=QString
[PropertyDef::StartupWMClass]
Type=QString
[PropertyDef::StartupNotify]
Type=bool
[PropertyDef::X-KDE-WMClass]
Type=QString
[PropertyDef::X-KDE-StartupNotify]
Type=bool
[PropertyDef::X-DBUS-ServiceName]
Type=QString
[PropertyDef::X-DBUS-StartupType]
Type=QString
[PropertyDef::X-KDE-ParentApp]
Type=QString
[PropertyDef::X-KDE-HasTempFileOption]
Type=bool
[PropertyDef::X-KDE-Protocols]
Type=QStringList
diff --git a/kio/data.protocol b/kio/data.protocol
index 0e7e4d2382..cf884ec536 100644
--- a/kio/data.protocol
+++ b/kio/data.protocol
@@ -1,98 +1,98 @@
[Protocol]
protocol=data
input=stream
output=none
reading=true
Icon=applications-internet
Class=:internet
Description=A kioslave for data URIs (rfc2397)
Description[af]= ´n kioslave vir data URIs (rfc2397)
Description[ar]=برنامج kioslave للمسالك البيانية (rfc2397)
Description[as]=তথ্য URI সমূহৰ বাবে এটা kioslave (rfc2397)
Description[ast]=Un kioslave pa URIs de datos (rfc2397)
Description[be]=Модуль kioslave для URI з даннямі (rfc2397)
Description[be@latin]=Modul „kioslave” dla adrasoŭ sa źviestkami (RFC-2397)
Description[bg]=Kioslave за URI (rfc2397)
Description[bn]=তথ্য URI-এর জন্য একটি kioslave (rfc2397)
Description[bn_IN]=ডাটা URI-র জন্য একটি kioslave (rfc2397)
Description[br]=Ur kioslave evit an URIoù roadoù (rfc2397)
Description[bs]=U/I zahvat za URI‑je podataka (RFC 2397)
Description[ca]=Un «kioslave» per a URI de dades (RFC2397)
Description[ca@valencia]=Un «kioslave» per a URI de dades (RFC2397)
Description[cs]=Kioslave pro datová URI (rfc2397)
Description[csb]=Wtëkôcz protokółu pòdôwków URI (rfc2397)
Description[da]=En kioslave for data-URI'er (rfc2397)
Description[de]=Ein-/Ausgabemodul für Daten-URIs (rfc2397)
Description[el]=Ένα kioslave για URI δεδομένων (rfc2397)
Description[en_GB]=A kioslave for data URIs (rfc2397)
Description[eo]=Enelsklavo por URI-datumoj (rfc2397)
Description[es]=Un kioslave para URI de datos (rfc2397)
Description[et]=Andme-URI-de I/O-moodul (rfc2397)
Description[eu]=Datuen URLen (rfc2397) kioslave-a
Description[fa]=یک kioslave برای URIهای داده )rfc2397(
Description[fi]=kioslave data URI:lle (rfc2397)
Description[fr]=Un module d'entrées / sorties pour les URI de données (rfc2397)
Description[fy]=In kioslave foar data-URI-adresse (rfc2397)
Description[ga]=Sclábhaí KIO le haghaidh URLanna sonraí (rfc2397)
Description[gl]=Un kioslave para os URI de datos (rfc2397)
Description[gu]=માહિતી URIs (rfc2397) માટે kioslave
Description[he]=פרוטוקול לכתובות נתונים (RFC 2397)
Description[hi]=डाटा यूआरआई (rfc2397) के लिए एक केआईओस्लेव
Description[hne]=डाटा यूआरआई (rfc2397) बर एक केआईओस्लेव
Description[hr]=kioslave za podatkovne URI-ije (rfc2397)
Description[hsb]=kioslave za datowe URL (rfc2397)
Description[hu]=KDE-protokoll adat-URI-k használataához (RFC 2397)
Description[ia]=Un kioslave pro le datos URIs (rfc2397)
Description[id]=Kioslave untuk URI data (rfc2397)
Description[is]=kioslave fyrir gagnaslóðir (rfc2397)
Description[it]=Un kioslave per il protocollo di URI di dati (rfc2397)
Description[ja]=データ URIs (rfc2397) の kioslave
Description[kk]=URI деректерді өңдеу kioslave модулі (rfc2397)
Description[km]=kioslave សម្រាប់​ទិន្នន័យ URIs (rfc2397)
Description[kn]=ದತ್ತ URI ಗಳಿಗೆ (rfc2397) kio ಅಧೀನಾನ್ವಯ (ಸ್ಲೇವ್)
Description[ko]=데이터 URI를 위한 KIO 슬레이브 (RFC 2397)
Description[ku]=Kioslave ji bo dane ya URIyan (rfc2397)
Description[lb]=E kioslave fir Donnéen-URIs (rfc2397)
Description[lt]=Antrinė KDE programa duomenų URI (rfc2397)
Description[lv]=Datu URI asptrādātājs (rfc2397)
Description[mai]=डाटा यूआरआई (rfc2397) क' लेल एकटा केआईओस्लेव
Description[mk]=kio-служител за податочни URI (rfc2397)
Description[ml]=ഒരു കിയൊസ്ലേവ് ഡാറ്റ യൂആര്‍ഐ (rfc2397)
Description[mr]=URIs (rfc2397) करीता kioslave
Description[ms]=Kioslave untuk URI data (rfc2397)
Description[nb]=kioslave for data URI-er (rfc2397)
Description[nds]=In-/Utgaavmoduul för Daten-URIs (rfc2397)
Description[ne]=डेटा URIs (rfc2397) का लागि किओस्लेभ
Description[nl]=Een kioslave voor data-URI-adressen (rfc2397)
Description[nn]=Ein KIO-slave for data-URI-ar (RFC 2397)
Description[or]=ତଥ୍ୟ URI ଗୁଡିକ ପାଇଁ ଗୋଟିଏ kioslave (rfc2397)
Description[pa]=ਡਾਟਾ URI ਲਈ kioslave(rfc2397)
Description[pl]=Wtyczka protokołu URI danych (rfc2397)
Description[pt]=Um 'kioslave' para URIs data (rfc2397)
Description[pt_BR]=Um kioslave para URIs de dados (rfc2397)
Description[ro]=Un dispozitiv de I/E pentru URI-urile de date (rfc2397)
Description[ru]=Открытие URI по rfc2397
Description[se]=kiošláva dáhta-URI:aid várás (rfc2397)
Description[sk]=IO klient pre dátové URI (RFC 2397)
Description[sl]=kioslave za podatkovne URI-je (rfc2397)
Description[sr]=У/И захват за УРИ‑је података (РФЦ 2397)
Description[sr@ijekavian]=У/И захват за УРИ‑је података (РФЦ 2397)
Description[sr@ijekavianlatin]=U/I zahvat za URI‑je podataka (RFC 2397)
Description[sr@latin]=U/I zahvat za URI‑je podataka (RFC 2397)
Description[sv]=En I/O-slav för datawebbadresser (RFC 2397)
Description[ta]=தரவு URIs (rfc2397) களுக்கான ஒரு kioslave
Description[te]=దత్తాంశం యుఆరైల కొరకు కెఐఓబానిస (rfc2397)
Description[tg]=kioslave барои маълумоти URIs (rfc2397)
Description[th]=kioslave สำหรับข้อมูล URIs (rfc2397)
Description[tr]=Veri adresleri için bir kioslave (rfc2397)
-Description[ug]=سانلىق-مەلۇمات URI ئۈچۈن بىر kioslave (rfc2397)
+Description[ug]=سانلىق مەلۇمات URI ئۈچۈن بىر kioslave (rfc2397)
Description[uk]=Підлеглий В/В для адрес (URI) даних (rfc2397)
Description[vi]=Một kioslave cho các địa điểm URI kiểu dữ liệu (rfc2397).
Description[wa]=On vårlet d' I/R po les hårdêyes di dnêyes (rfc2397)
Description[x-test]=xxA kioslave for data URIs (rfc2397)xx
Description[zh_CN]=用于数据 URI(rfc2397) 的 kioslave
Description[zh_TW]=A kioslave for data URIs (rfc2397)
X-DocPath=kioslave/data/index.html
URIMode=rawuri
defaultMimetype=application/octet-stream
determineMimetypeFromExtension=false
diff --git a/kio/kcmoduleinit.desktop b/kio/kcmoduleinit.desktop
index ae4f06114b..3ab7df3f3f 100644
--- a/kio/kcmoduleinit.desktop
+++ b/kio/kcmoduleinit.desktop
@@ -1,98 +1,98 @@
[Desktop Entry]
Type=ServiceType
X-KDE-ServiceType=KCModuleInit
Name=KDE Configuration Initialization
Name[af]=KDE konfigurasie opstelling
Name[ar]=تمهيد إعدادات كيدي
Name[as]=KDE বিন্যাস আৰম্ভ কৰা
Name[ast]=Aniciu de la configuración de KDE
Name[be@latin]=Inicyjalizacyja naładžvańnia KDE
Name[bg]=Стартиране настройването на KDE
Name[bn]=কে.ডি.ই. কনফিগারেশন সূচনা
Name[bn_IN]=KDE কনফিগারেশন প্রারম্ভকরণ
Name[bs]=Pripremanje postave KDE‑a
Name[ca]=Inicialització de la configuració del KDE
Name[ca@valencia]=Inicialització de la configuració del KDE
Name[cs]=Inicializace nastavení KDE
Name[csb]=Inicjalëzacëjô kònfigùracëji KDE
Name[da]=Konfigurationsinitialisering for KDE
Name[de]=Kontrollmodul-Initialisierung
Name[el]=Αρχικοποίηση ρυθμίσεων του KDE
Name[en_GB]=KDE Configuration Initialisation
Name[eo]=Pravalorizo de KDE-agordo
Name[es]=Inicialización de la configuración de KDE
Name[et]=KDE seadistamise initsialiseerimine
Name[eu]=KDE konfigurazio hasierapena
Name[fa]=مقداردهی اولیه پیکربندی KDE
Name[fi]=KDE:n asetusten alustus
Name[fr]=Initialisation de la configuration de KDE
Name[fy]=KDE-konfiguraasje tarieding
Name[ga]=Túsú Cumraíochta KDE
Name[gl]=Inicialización da configuración do KDE
Name[gu]=KDE રૂપરેખાંકન શરૂઆત
Name[he]=איתחול ההגדרות של KDE
Name[hi]=केडीई कॉन्फ़िगरेशन इनिशिअलाइज़ेशन
Name[hne]=केडीई कान्फिगरेसन इनिसिअलाइजेसन
Name[hr]=Inicijalizacija KDE-ove konfiguracije
Name[hsb]=Inicializacija za konfiguraciju KDE
Name[hu]=KDE konfigurációkészítő
Name[ia]=Initialization de le configuration de KDE
Name[id]=Inisialisasi Konfigurasi KDE
Name[is]=Ræsing KDE stillinga
Name[it]=Inizializzazione della configurazione KDE
Name[ja]=KDE 設定の初期化
Name[kk]=KDE баптауын бастау күйіне келтіру
Name[km]=ការ​ចាប់​ផ្តើម​ការ​កំណត់​រចនាសម្ព័ន្ធ​ KDE
Name[kn]=ಕೆಡಿಇ ಸಂರಚನಾ ಮೊದಲುಗೊಳಿಸುವಿಕೆ
Name[ko]=KDE 설정 초기화
Name[ku]=Destpêka Veavakirina KDE
Name[lt]=KDE konfigūravimo inicijavimas
Name[lv]=KDE konfigurācijas inicializācija
Name[mai]=केडीई बिन्यास आरंभीकरण
Name[mk]=Иницијализација на конфигурација за KDE
Name[ml]=കെഡിഇയിലെ സജ്ജീകരണങ്ങളുടെ തുടക്കം
Name[mr]=KDE व्यूहरचना प्रारंभ
Name[nb]=Klargjøring av KDE-oppsett
Name[nds]=KDE-Instellentorechtmaken
Name[ne]=केडीई कन्फिगरेसन सुरुआत
Name[nl]=KDE-configuratie initialiseren
Name[nn]=KDE-oppsettsklargjering
Name[or]=KDE ବିନ୍ୟାସ ପ୍ରାରମ୍ଭିକରଣ
Name[pa]=KDE ਸੰਰਚਨਾ ਸ਼ੁਰੂਆਤ
Name[pl]=Inicjacja konfiguracji KDE
Name[ps]=کډي سازونې پېلونه
Name[pt]=Inicialização da Configuração do KDE
Name[pt_BR]=Inicialização da configuração do KDE
Name[ro]=Inițializare configurare KDE
Name[ru]=Открытие конфигурации KDE
Name[se]=KDE-heivehusgárvvisteapmi
Name[sk]=Inicializácia konfigurácie KDE
Name[sl]=Začetno nastavljanje KDE-ja
Name[sr]=Припремање поставе КДЕ‑а
Name[sr@ijekavian]=Припремање поставе КДЕ‑а
Name[sr@ijekavianlatin]=Pripremanje postave KDE‑a
Name[sr@latin]=Pripremanje postave KDE‑a
Name[sv]=Initiering av KDE-inställningar
Name[ta]=கேபசூ வடிவமைப்பு தொடங்கி
Name[tg]=Омодасозии танзимшавандаи KDE
Name[th]=เริ่มการปรับแต่งค่า KDE
Name[tr]=KDE Yapılandırma İlklendirmesi
Name[ug]=KDE سەپلىمە دەسلەپلەشتۈرۈش
Name[uk]=Ініціалізація налаштувань KDE
-Name[vi]=Sở khởi cấu hình KDE
+Name[vi]=Khởi tạo cấu hình KDE
Name[wa]=Inicialijhaedje di l' apontiaedje di KDE
Name[x-test]=xxKDE Configuration Initializationxx
Name[zh_CN]=KDE 配置初始化
Name[zh_TW]=KDE 控制初始化
# the symbol (with or without the kcminit_ prefix) used by kcminit
[PropertyDef::X-KDE-Init-Symbol]
Type=QString
# the library (with or without the kcminit_ prefix) used by kcminit (if it's not specified it defaults to X-KDE-Library with kcm_ prefix)
[PropertyDef::X-KDE-Init-Library]
Type=QString
# the startup phase in which the kcminit code should be called
[PropertyDef::X-KDE-Init-Phase]
Type=Int
diff --git a/kio/kdatatool.desktop b/kio/kdatatool.desktop
index b989fb7780..28b94187ec 100644
--- a/kio/kdatatool.desktop
+++ b/kio/kdatatool.desktop
@@ -1,110 +1,110 @@
[Desktop Entry]
Type=ServiceType
X-KDE-ServiceType=KDataTool
Comment=KDE Data Tool
Comment[af]=KDE Data nutsprogram
Comment[ar]=أداة كيدي للبيانات
Comment[as]=KDE তথ্যৰ সৰঞ্জাম
Comment[ast]=Ferramienta de datos de KDE
Comment[be]=Інструмент працы з даннямі KDE
Comment[be@latin]=Infarmacyjnaja pryłada KDE
Comment[bg]=Текстообработващ инструмент
Comment[bn]=কে.ডি.ই তথ্য টুল
Comment[bn_IN]=KDE ডাটা সংক্রান্ত সামগ্রী
Comment[br]=Ostilh roadoù evit KDE
Comment[bs]=KDE‑ova alatka za podatke
Comment[ca]=Eina per a la gestió de dades per al KDE
Comment[ca@valencia]=Eina per a la gestió de dades per al KDE
Comment[cs]=Datový nástroj KDE
Comment[csb]=Nôrzãdze pòdôwków KDE
Comment[cy]=Erfyn Data KDE
Comment[da]=KDE-dataværktøj
Comment[de]=KDE-Datenprogramm
Comment[el]=Εργαλείο δεδομένων του KDE
Comment[en_GB]=KDE Data Tool
Comment[eo]=KDE-datumilo
Comment[es]=Herramienta de datos de KDE
Comment[et]=KDE andmete rakendus
Comment[eu]=KDEren datuen tresna
Comment[fa]=ابزار داده KDE
Comment[fi]=KDE:n datatyökalu
Comment[fr]=Outil de données KDE
Comment[fy]=KDE data-helpprogramma
Comment[ga]=Uirlis Sonraí KDE
Comment[gl]=Ferramenta de datos do KDE
Comment[gu]=KDE માહિતી સાધન
Comment[he]=כלי נתונים של KDE
Comment[hi]=केडीई डाटा औजार
Comment[hne]=केडीई डाटा औजार
Comment[hr]=KDE-ov alat za podatke
Comment[hsb]=Datowy nastroj za KDE
Comment[hu]=KDE adatkezelő segédprogram
Comment[ia]=Instrumento pro datos de KDE
Comment[id]=Alat Data KDE
Comment[is]=KDE gagnatól
Comment[it]=Strumenti dati di KDE
Comment[ja]=KDE データツール
Comment[kk]=KDE дерек өңдеу құралы
Comment[km]=ឧបករណ៍​ទិន្នន័យ​របស់ KDE
Comment[kn]=ಕೆಡಿಇ ದತ್ತ ಸಲಕರಣೆ
Comment[ko]=KDE 데이터 도구
Comment[ku]=Amûra Daneyan a KDE
Comment[lb]=KDE-Donnéen-Hëllefsprogramm
Comment[lt]=KDE duomenų priemonė
Comment[lv]=KDE datu rīks
Comment[mai]=केडीई डाटा अओजार
Comment[mk]=KDE податочна алатка
Comment[ml]=കെഡിഇയിലെ ഡാറ്റയൊടൊപ്പമുപയോഗിയ്ക്കാനുള്ള ഉപകരണം
Comment[mr]=KDE माहिती साधन
Comment[ms]=Alatan Data KDE
Comment[nb]=KDE dataverktøy
Comment[nds]=KDE-Datenwarktüüch
Comment[ne]=केडीई डेटा उपकरण
Comment[nl]=KDE Data-hulpprogramma
Comment[nn]=KDE-dataverktøy
Comment[or]=KDE ତଥ୍ୟ ଉପକରଣ
Comment[pa]=KDE ਡਾਟਾ ਟੂਲ
Comment[pl]=Narzędzie danych KDE
Comment[ps]=کډي اومتوک توکی
Comment[pt]=Ferramenta de Dados do KDE
Comment[pt_BR]=Ferramenta de dados do KDE
Comment[ro]=Utilitar de date KDE
Comment[ru]=Обработка данных KDE
Comment[se]=KDE dáhtareaidu
Comment[si]=KDE දත්ත මෙවලම
Comment[sk]=Dátový nástroj KDE
Comment[sl]=Podatkovno orodje za KDE
Comment[sq]=Mjeti i të Dhënave KDE
Comment[sr]=КДЕ‑ова алатка за податке
Comment[sr@ijekavian]=КДЕ‑ова алатка за податке
Comment[sr@ijekavianlatin]=KDE‑ova alatka za podatke
Comment[sr@latin]=KDE‑ova alatka za podatke
Comment[sv]=KDE-dataverktyg
Comment[ta]=KDE தரவு கருவி
Comment[te]=కెడిఈ దత్తాంశం పనిముట్టు
Comment[tg]=Асбобҳои Маълумоти KDE
Comment[th]=เครื่องมือข้อมูลของ KDE
Comment[tr]=KDE Veri Aracı
-Comment[ug]=KDE سانلىق-مەلۇمات قورالى
+Comment[ug]=KDE سانلىق مەلۇمات قورالى
Comment[uk]=Засіб роботи з даними KDE
Comment[uz]=KDE maʼlumot vositasi
Comment[uz@cyrillic]=KDE маълумот воситаси
Comment[vi]=Công cụ dữ liệu KDE.
Comment[wa]=Usteyes po les dnêyes di KDE
-Comment[x-test]=xxKDE Data Toolxx
Comment[xh]=Isihluzi se Data ye KDE
+Comment[x-test]=xxKDE Data Toolxx
Comment[zh_CN]=KDE 数据工具
Comment[zh_HK]=KDE 資料工具
Comment[zh_TW]=KDE 資料工具
[PropertyDef::Commands]
Type=QStringList
[PropertyDef::DataType]
Type=QString
[PropertyDef::DataMimeTypes]
Type=QStringList
[PropertyDef::ExcludeFrom]
Type=QStringList
diff --git a/kio/kfile/kiofilemodule.desktop b/kio/kfile/kiofilemodule.desktop
index f7f0294d3e..c471a67d90 100644
--- a/kio/kfile/kiofilemodule.desktop
+++ b/kio/kfile/kiofilemodule.desktop
@@ -1,127 +1,129 @@
[Desktop Entry]
Type=ServiceType
X-KDE-ServiceType=KIO/FileModule
Name=filemodule
Name[ar]=filemodule
Name[ast]=filemodule
Name[bg]=файлов модул
Name[bn]=filemodule
Name[bs]=Modul datoteke
Name[ca]=filemodule
Name[ca@valencia]=filemodule
Name[cs]=filemodule
Name[da]=filmodul
Name[de]=Dateimodul
Name[el]=άρθρωμα
Name[en_GB]=filemodule
Name[es]=filemodule
Name[et]=Failimoodul
Name[eu]=fitxategi modulua
Name[fi]=filemodule
Name[fr]=filemodule
Name[ga]=filemodule
Name[gl]=filemodule
Name[hr]=moduldatoteke
Name[hu]=fájlmodul
Name[ia]=Modulo de file
Name[id]=filemodule
Name[is]=skráaeining
Name[it]=modulofile
Name[ja]=ファイルモジュール
Name[kk]= filemodule
Name[km]=ម៉ូឌុល​ឯកសារ
Name[ko]=filemodule
Name[ku]=filemodule
Name[lt]=filemodule
Name[lv]=filemodule
Name[nb]=filmodul
Name[nds]=Dateimoduul
Name[nl]=bestandsmodule
Name[nn]=filmodul
Name[pa]=ਫਾਇਲ ਮੋਡੀਊਲ
Name[pl]=filemodule
Name[pt]=módulo de ficheiros
Name[pt_BR]=filemodule
Name[ro]=filemodule
Name[ru]=filemodule
Name[se]=fiilamodula
Name[si]=ගොනුමොඩියුලය
Name[sk]=filemodule
Name[sl]=filemodule
Name[sr]=Фајл модул
Name[sr@ijekavian]=Фајл модул
Name[sr@ijekavianlatin]=Fajl modul
Name[sr@latin]=Fajl modul
Name[sv]=filmodul
Name[ta]=கோப்புபாகம்
Name[tg]=filemodule
Name[th]=มอดูลแฟ้ม
Name[tr]=dosya modülü
Name[ug]=ھۆججەت بۆلىكى
Name[uk]=filemodule
+Name[vi]=filemodule
Name[wa]=module fitchî
Name[x-test]=xxfilemodulexx
Name[zh_CN]=文件模块
Name[zh_TW]=檔案模組
Comment=KIO File Module
Comment[ar]=وحدة ملف KIO
Comment[ast]=KIO File Module
Comment[bg]=Файлов модул за KIO
Comment[bn]=KIO ফাইল মডিইল
Comment[bs]=K‑U/I datotečni modul
Comment[ca]=Mòdul KIO de fitxer
Comment[ca@valencia]=Mòdul KIO de fitxer
Comment[cs]=Modul KIO File
Comment[da]=KIO filmodul
Comment[de]=KIO-Dateimodul
Comment[el]=Άρθρωμα KIO
Comment[en_GB]=KIO File Module
Comment[eo]=KIO dosiera modulo
Comment[es]=Módulo de archivos KIO
Comment[et]=KIO failimoodul
Comment[eu]=KIO fitxategi modulua
Comment[fi]=KDE File -moduuli
Comment[fr]=Module de fichiers KIO
Comment[ga]=Modúl Comhaid KIO
Comment[gl]=Módulo de ficheiros de KIO
Comment[hr]=KIO Modul Datoteke
Comment[hu]=KIO fájlmodul
Comment[ia]=Modulo de file de KIO
Comment[id]=Modul Berkas KIO
Comment[is]=KIO skráaeining
Comment[it]=Modulo file KIO
Comment[ja]=KIO ファイルモジュール
Comment[kk]=KIO файл модулі
Comment[km]=ម៉ូឌុល​ឯកសារ KIO
Comment[ko]=KIO 파일 모듈
Comment[ku]=Modûla KIO File
Comment[lv]=KIO failu modulis
Comment[nb]=KIO filmodul
Comment[nds]=KIO-Dateimoduul
Comment[nl]=KIO bestandsmodule
Comment[nn]=KIO-filmodul
Comment[pa]=KIO ਫਾਇਲ ਮੋਡੀਊਲ
Comment[pl]=Moduł plików KIO
Comment[pt]=Módulo de Ficheiros KIO
Comment[pt_BR]=Módulo de arquivos KIO
Comment[ro]=Modul de fișiere KIO
Comment[ru]=Модуль работы с файлами KIO
Comment[se]=KIO-fiilamodula
Comment[si]=KIO ගොනු මොඩියුලය
Comment[sk]=Modul KIO File
Comment[sl]=Modul KIO za datoteke
Comment[sr]=К‑У/И фајл модул
Comment[sr@ijekavian]=К‑У/И фајл модул
Comment[sr@ijekavianlatin]=K‑U/I fajl modul
Comment[sr@latin]=K‑U/I fajl modul
Comment[sv]=KIO-filmodul
Comment[ta]=KIO கோப்பு பாகம்
Comment[tg]=Модули файли KIO
Comment[th]=มอดูลแฟ้มของ KIO
Comment[tr]=KIO File Modülü
Comment[ug]=KIO ھۆججەت بۆلىكى
Comment[uk]=Модуль файлів KIO
+Comment[vi]=Mô-đun tập tin KIO
Comment[wa]=Module di fitchî KIO
Comment[x-test]=xxKIO File Modulexx
Comment[zh_CN]=KIO 文件模块
Comment[zh_TW]=KIO 檔案模組
diff --git a/kio/kfile/kpropertiesdialogplugin.desktop b/kio/kfile/kpropertiesdialogplugin.desktop
index a91443f22a..f5687d54a6 100644
--- a/kio/kfile/kpropertiesdialogplugin.desktop
+++ b/kio/kfile/kpropertiesdialogplugin.desktop
@@ -1,100 +1,100 @@
[Desktop Entry]
Type=ServiceType
X-KDE-ServiceType=KPropertiesDialog/Plugin
Comment=Plugin for the Properties Dialog
Comment[af]=Inprop module vir die Eienskappedialoog
Comment[ar]=ملحق لحوار الخصائص
Comment[as]=গুণৰ সম্বাদৰ বাবে প্লাগ-ইন
Comment[ast]=Complementu pal diálogu de propiedaes
Comment[be]=Дадатак да дыялогу ўласцівасцяў
Comment[be@latin]=Plugin dla akna ŭłaścivaściaŭ fajła
Comment[bg]=Приставка за диалога Информация
Comment[bn]=বৈশিষ্ট্যাবলী ডায়ালগ-এর জন্য প্লাগ-ইন
Comment[bn_IN]=বৈশিষ্ট্য বিশিষ্ট ডায়লগের জন্য একটি প্লাগ-ইন
Comment[br]=Adveziant evit kendiviz ar perzhioù
Comment[bs]=Priključak za dijalog svojstava
Comment[ca]=Connector per al diàleg de les propietats
Comment[ca@valencia]=Connector per al diàleg de les propietats
Comment[cs]=Modul pro dialog vlastností
Comment[csb]=Wtëkôcz dialogòwégò òkna Swòjiznë
Comment[cy]=Ategyn am yr Ymgom Priodweddau
Comment[da]=Plugin til egenskabsdialog
Comment[de]=Erweiterung für den Dialog „Eigenschaften“
Comment[el]=Πρόσθετο για το Διάλογο ιδιοτήτων
Comment[en_GB]=Plugin for the Properties Dialogue
Comment[eo]=Kromprogramo por la eco-dialogo
Comment[es]=Complemento para el diálogo de propiedades
Comment[et]=Omaduste dialoogi plugin
Comment[eu]=Propietateen elkarrizketa-koadroaren plugin-a
Comment[fa]=وصله برای محاوره ویژگیها
Comment[fi]=Lisäosa asetusikkunalle
Comment[fr]=Module externe pour la boîte de dialogue des propriétés
Comment[fy]=Plugin foar de 'Eigenskippen'-dialooch
Comment[ga]=Breiseán don Dialóg Airíonna
Comment[gl]=Engadido para o diálogo de propiedades
Comment[gu]=પ્લગઈન માટે ગુણધર્મો સંવાદ
Comment[he]=תוסף לדו־שיח המאפיינים
Comment[hi]=गुण संवाद के लिए प्लगइन
Comment[hne]=गुन गोठ बर प्लगइन
Comment[hr]=Priključak za dijalog 'Svojstva'
Comment[hsb]=Zašćěpka za swójstwowy dialog
Comment[hu]=Beépülő modul a tulajdonságok párbeszédablakhoz
Comment[ia]=Plugin pro le dialogo de proprietates
Comment[id]=Plugin untuk Dialog Properti
Comment[is]=Íforrit fyrir stillingarforrit
Comment[it]=Plugin per la finestra delle proprietà
Comment[ja]=プロパティダイアログのためのプラグイン
Comment[kk]=Қасиеттер диалогтың модулі
Comment[km]=កម្មវិធី​ជំនួយ​សម្រាប់​ប្រអប់​លក្ខណៈ​សម្បត្តិ
Comment[kn]=ಗುಣಗಳ ಸಂವಾದಕ್ಕೆ (ಡೈಲಾಗ್) ಮಿಳಿತಾನ್ವಯ (ಪ್ಲಗಿನ್)
Comment[ko]=속성 대화 상자를 위한 플러그인
Comment[ku]=Pêvek ji bo Gotûbêja Taybetiyan
Comment[lb]=Plugin fir den Eegeschaften-Dialog
Comment[lt]=Priedas savybių dialogui
Comment[lv]=Īpašību dialoga spraudnis
Comment[mai]=गुण समाद क' लेल प्लगइन
Comment[mk]=Приклучок за дијалогот за својства
Comment[ml]=വിശേഷതാ ജാലകത്തിനു് വേണ്ടിയുള്ള സംയോജകം
Comment[mr]=गुणधर्म संवाद करीता प्लगइन
Comment[ms]=Plugmasuk untuk Dialog Ciri-ciri
Comment[nb]=Programtillegg for dialogvinduet for egenskaper
Comment[nds]=Moduul för den Egenschappen-Dialoog
Comment[ne]=गुण संवादका लागि प्लगइन
Comment[nl]=Plugin voor de 'Eigenschappen'-dialoog
Comment[nn]=Tillegg til dialogvindauget «Eigenskapar»
Comment[or]=ଗୁଣଧର୍ମ ସଂଳାପ ପାଇଁ ପ୍ଲଗଇନ
Comment[pa]=ਵਿਸ਼ੇਸ਼ਤਾ ਡਾਈਲਾਗ ਲਈ ਪਲੱਗਇਨ
Comment[pl]=Wtyczka do okna dialogowego Właściwości
Comment[ps]=د ځانتياوې کړکۍ لپاره لګون
Comment[pt]='Plugin' para a Janela de Propriedades
Comment[pt_BR]=Plug-in para a janela de propriedades
Comment[ro]=Modul pentru dialogul de proprietăți
Comment[ru]=Расширение диалога настройки
Comment[se]=Lassemoduvla iešvuođahtaláseža várás
Comment[si]=වත්කම් සංවාද කොටුව සඳහා ප්ලගීනය
Comment[sk]=Modul pre dialóg vlastností
Comment[sl]=Vstavek za pogovorno okno z lastnostmi
Comment[sr]=Прикључак за дијалог својстава
Comment[sr@ijekavian]=Прикључак за дијалог својстава
Comment[sr@ijekavianlatin]=Priključak za dijalog svojstava
Comment[sr@latin]=Priključak za dijalog svojstava
Comment[sv]=Insticksprogram för egenskapsdialogen
Comment[ta]=பண்புகள் பலகத்திற்கான செருகி
Comment[te]=లక్షణాల సంభాషణ కొరకు ప్లగిన్
Comment[tg]=Васлкунак барои хосияти диалог
Comment[th]=โปรแกรมเสริมสำหรับกล่องคุณสมบัติ
Comment[tr]=Özellikler İletişim Kutusu İçin Eklenti
Comment[ug]=خاسلىق سۆزلەشكۈ قىستۇرمىسى
Comment[uk]=Додаток для створення діалогових вікон властивостей
Comment[uz]=Xossalar dialogi uchun plagin
Comment[uz@cyrillic]=Хоссалар диалоги учун плагин
-Comment[vi]=Bổ sung cho hộp thoại đặc tả.
+Comment[vi]=Phần bổ sung cho Hộp thoại thuộc tính
Comment[wa]=Tchôke-divins pol purnea di prôpietés
-Comment[x-test]=xxPlugin for the Properties Dialogxx
Comment[xh]=Iplagi yangaphakathi Yezinto zobumnini Zencoko yababini
+Comment[x-test]=xxPlugin for the Properties Dialogxx
Comment[zh_CN]=属性对话框插件
Comment[zh_HK]=屬性對話盒的外掛程式
Comment[zh_TW]=屬性對話盒的外掛程式
[PropertyDef::X-KDE-Protocol]
Type=QString
diff --git a/kio/kfileplugin.desktop b/kio/kfileplugin.desktop
index edf8dbcb83..8153156c46 100644
--- a/kio/kfileplugin.desktop
+++ b/kio/kfileplugin.desktop
@@ -1,103 +1,103 @@
[Desktop Entry]
Type=ServiceType
X-KDE-ServiceType=KFilePlugin
Name=KFile Meta Data Plugin
Name[af]=KFile Metadata inpropmodule
Name[ar]=ملحق KFile Meta Data
Name[as]=KFile মেটা ডাটা প্লাগ-ইন
Name[ast]=Complementu pa metadatos de KFile
Name[be@latin]=Plugin metaźviestak dla KFile
Name[bg]=Приставка за мета данни
Name[bn]=কে-ফাইল মেটা-ডেটা প্লাগ-ইন
Name[bn_IN]=KFile মিটা ডাটা প্লাগ-ইন
Name[bs]=Priključak za metapodatke (KFile)
Name[ca]=Connector de meta dades KFile
Name[ca@valencia]=Connector de meta dades KFile
Name[cs]=Modul KFile pro metadata
Name[csb]=Wtëkôcz do sprôwianiô pòdôwkama nieznónegò fòrmatu
Name[cy]=Ategyn Meta-ddata KFfeil
Name[da]=KFile Metadata-plugin
Name[de]=KFile: Metadaten-Modul
Name[el]=Πρόσθετο μετα-δεδομένων του KFile
Name[en_GB]=KFile Meta Data Plugin
Name[eo]=KFile-metadatuma kromprogramo
Name[es]=Complemento de meta datos KFile
Name[et]=KFile'i metaandmete plugin
Name[eu]=KFile metadatuen plugin-a
Name[fa]=وصله فراداده KFile
Name[fi]=KFile-metatietolisäosa
Name[fr]=Module externe de métadonnées KFile
Name[fy]=KFile Meta Data Plugin
Name[ga]=Breiseán meiteashonraí do KFile
Name[gl]=Engadido de metadatos para KFile
Name[gu]=Meta માહિતી પ્લગઈન
Name[he]=תוסף מידע קובץ עבור KFile
Name[hi]=के-फ़ाइल मेटा डाटा प्लगइन
Name[hne]=के-फाइल मेटा डाटा प्लगइन
Name[hr]=KFile priključak za meta-podatke
Name[hsb]=KFile-zašćěpka za Meta-Data
Name[hu]=KFile metaadat-modul
Name[ia]=Plugin de Meta datos de KFile
Name[id]=Plugin Data Meta KFile
Name[is]=KFile metagagna-íforrit
Name[it]=Plugin informazioni aggiuntive per KFile
Name[ja]=KFile メタデータプラグイン
Name[kk]=KFile метадеректер модулі
Name[km]=កម្មវិធី​ជំនួយ​ទិន្នន័យ​មេតា KFile
Name[kn]=ಕೆಫೈಲ್ ಪ್ರದತ್ತ (ಮೆಟಾಡಾಟಾ) ಮಿಳಿತಾನ್ವಯ (ಪ್ಲಗಿನ್)
Name[ko]=KFile 메타 데이터 플러그인
Name[ku]=Pêveka KPel Ser Dane
Name[lb]=KFile-Metadonnéeë-Plugin
Name[lt]=KFile Meta duomenų priedas
Name[lv]=KFile metadatu spraudnis
Name[mai]=के-फाइल मेटा डाटा प्लगइन
Name[mk]=KFile приклучок за мета податоци
Name[ml]=കെഫയല്‍ മെറ്റാ ഡാറ്റയ്ക്കായുള്ള സംയോജകം
Name[mr]=KFile मेटा माहिती प्लगइन
Name[ms]=Plug masuk Data Meta KFile
Name[nb]=KFile-programtillegg for metadata
Name[nds]=KFile, Metadaten-Plugin
Name[ne]=केडीई फाइल मेटाडेटा प्लगइन
Name[nl]=KFile Meta Data Plugin
Name[nn]=KFile-tillegg for metadata
Name[or]=KFile ଅଧିତଥ୍ୟ ପ୍ଲଗଇନ
Name[pa]=KFile ਮੈਟਾ ਡਾਟਾ ਪਲੱਗਇਨ
Name[pl]=Wtyczka do obsługi danych nieznanego formatu
Name[pt]='Plugin' de Meta-Dados do KFile
Name[pt_BR]=Plug-in de metadados KFile
Name[ro]=Modul metadate KFile
Name[ru]=Расширение метаданных для KFile
Name[se]=KFile lassemoduvla metadieđuid várás
Name[si]=KFile මෙටා දත්ත ප්ලගීනය
Name[sk]=Modul KFile pre metadáta
Name[sl]=Vstavek za meta podatke pri KFile
Name[sr]=Прикључак за метаподатке (к‑фајл)
Name[sr@ijekavian]=Прикључак за метаподатке (к‑фајл)
Name[sr@ijekavianlatin]=Priključak za metapodatke (KFile)
Name[sr@latin]=Priključak za metapodatke (KFile)
Name[sv]=Kfil-metadata-insticksprogram
Name[ta]=KFile அடிப்படை தகவல் சொருகி
Name[te]=కెదస్త్రం మెటా దత్తాంసం ప్లగిన్
Name[tg]=Васлкунаки маълумоти KFile Meta
Name[th]=โปรแกรมเสริมข้อมูลกำกับ KFile
Name[tr]=KFile Meta Verisi Eklentisi
-Name[ug]=KFile مېتا سانلىق-مەلۇمات قىستۇرمىسى
+Name[ug]=KFile مېتا سانلىق مەلۇمات قىستۇرمىسى
Name[uk]=Додаток роботи з метаданими KFile
Name[uz]=KFile meta maʼlumot uchun plagin
Name[uz@cyrillic]=KFile мета маълумот учун плагин
-Name[vi]=Bổ sung siêu dữ liệu KFile
+Name[vi]=Phần bổ sung dữ liệu lý lịch KFile
Name[wa]=Tchôke-divins meta-dnêyes des fitchîs
-Name[x-test]=xxKFile Meta Data Pluginxx
Name[xh]=Iplagi yangaphakathi ye KFile Meta Data
+Name[x-test]=xxKFile Meta Data Pluginxx
Name[zh_CN]=KFile 元数据插件
Name[zh_HK]=KFile 元資料外掛程式
Name[zh_TW]=KFile 資料定義外掛程式
[PropertyDef::PreferredItems]
Type=QStringList
[PropertyDef::PreferredGroups]
Type=QStringList
[PropertyDef::SupportsThumbnail]
Type=bool
diff --git a/kio/kio/accessmanagerreply_p.cpp b/kio/kio/accessmanagerreply_p.cpp
index 83f7f71875..942f0e5caf 100644
--- a/kio/kio/accessmanagerreply_p.cpp
+++ b/kio/kio/accessmanagerreply_p.cpp
@@ -1,419 +1,437 @@
/*
* This file is part of the KDE project.
*
* Copyright (C) 2008 Alex Merry <alex.merry @ kdemail.net>
* Copyright (C) 2008 - 2009 Urs Wolfer <uwolfer @ kde.org>
* Copyright (C) 2009 - 2010 Dawit Alemayehu <adawit @ kde.org>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library 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
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public License
* along with this library; see the file COPYING.LIB. If not, write to
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*
*/
#include "accessmanagerreply_p.h"
#include "accessmanager.h"
#include "job.h"
#include "scheduler.h"
#include <kdebug.h>
#include <kauthorized.h>
#include <kprotocolinfo.h>
+#include <kmimetype.h>
#include <QtNetwork/QSslConfiguration>
#define QL1S(x) QLatin1String(x)
#define QL1C(x) QLatin1Char(x)
namespace KDEPrivate {
AccessManagerReply::AccessManagerReply(const QNetworkAccessManager::Operation &op,
const QNetworkRequest &request,
KIO::SimpleJob *kioJob,
bool emitReadyReadOnMetaDataChange,
QObject *parent)
:QNetworkReply(parent),
m_metaDataRead(false),
m_ignoreContentDisposition(false),
m_emitReadyReadOnMetaDataChange(emitReadyReadOnMetaDataChange),
m_kioJob(kioJob)
{
setRequest(request);
setOpenMode(QIODevice::ReadOnly);
setUrl(request.url());
setOperation(op);
setError(NoError, QString());
if (!request.sslConfiguration().isNull())
setSslConfiguration(request.sslConfiguration());
if (kioJob) {
connect(kioJob, SIGNAL(redirection(KIO::Job*, const KUrl&)), SLOT(slotRedirection(KIO::Job*, const KUrl&)));
connect(kioJob, SIGNAL(percent(KJob*, unsigned long)), SLOT(slotPercent(KJob*, unsigned long)));
if (qobject_cast<KIO::StatJob*>(kioJob)) {
connect(kioJob, SIGNAL(result(KJob *)), SLOT(slotStatResult(KJob *)));
} else {
connect(kioJob, SIGNAL(result(KJob *)), SLOT(slotResult(KJob *)));
connect(kioJob, SIGNAL(data(KIO::Job *, const QByteArray &)),
SLOT(slotData(KIO::Job *, const QByteArray &)));
connect(kioJob, SIGNAL(mimetype(KIO::Job *, const QString&)),
SLOT(slotMimeType(KIO::Job *, const QString&)));
}
}
}
AccessManagerReply::~AccessManagerReply()
{
}
void AccessManagerReply::abort()
{
- if (m_kioJob)
- m_kioJob->kill();
+ if (m_kioJob) {
+ m_kioJob.data()->kill();
+ m_kioJob.clear();
+ }
m_data.clear();
m_metaDataRead = false;
}
qint64 AccessManagerReply::bytesAvailable() const
{
return (QNetworkReply::bytesAvailable() + m_data.length());
}
qint64 AccessManagerReply::readData(char *data, qint64 maxSize)
{
const qint64 length = qMin(qint64(m_data.length()), maxSize);
if (length) {
qMemCopy(data, m_data.constData(), length);
m_data.remove(0, length);
}
return length;
}
bool AccessManagerReply::ignoreContentDisposition (KIO::Job* job)
{
if (m_ignoreContentDisposition) {
return true;
}
if (job->queryMetaData(QL1S("content-disposition-type")).isEmpty()) {
return true;
}
bool ok = false;
const int statusCode = attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(&ok);
if (!ok || statusCode < 200 || statusCode > 299) {
return true;
}
return false;
}
void AccessManagerReply::setIgnoreContentDisposition(bool on)
{
// kDebug(7044) << on;
m_ignoreContentDisposition = on;
}
void AccessManagerReply::setStatus(const QString& message, QNetworkReply::NetworkError code)
{
setError(code, message);
if (code != QNetworkReply::NoError) {
QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection, Q_ARG(QNetworkReply::NetworkError, code));
}
QMetaObject::invokeMethod(this, "finished", Qt::QueuedConnection);
}
void AccessManagerReply::putOnHold()
{
if (!m_kioJob || isFinished())
return;
// kDebug(7044) << m_kioJob << m_data;
- m_kioJob->disconnect(this);
- m_kioJob->putOnHold();
- m_kioJob = 0;
+ m_kioJob.data()->disconnect(this);
+ m_kioJob.data()->putOnHold();
+ m_kioJob.clear();
KIO::Scheduler::publishSlaveOnHold();
}
bool AccessManagerReply::isLocalRequest (const KUrl& url)
{
const QString scheme (url.protocol());
return (KProtocolInfo::isKnownProtocol(scheme) &&
KProtocolInfo::protocolClass(scheme).compare(QL1S(":local"), Qt::CaseInsensitive) == 0);
}
void AccessManagerReply::readHttpResponseHeaders(KIO::Job *job)
{
if (!job || m_metaDataRead)
return;
- const KIO::MetaData& metaData = job->metaData();
+ KIO::MetaData metaData (job->metaData());
if (metaData.isEmpty()) {
// Allow handling of local resources such as man pages and file url...
if (isLocalRequest(url())) {
setHeader(QNetworkRequest::ContentLengthHeader, job->totalAmount(KJob::Bytes));
setAttribute(QNetworkRequest::HttpStatusCodeAttribute, "200");
emit metaDataChanged();
}
return;
}
// Set the encryption attribute and values...
QSslConfiguration sslConfig;
const bool isEncrypted = KIO::Integration::sslConfigFromMetaData(metaData, sslConfig);
setAttribute(QNetworkRequest::ConnectionEncryptedAttribute, isEncrypted);
if (isEncrypted)
setSslConfiguration(sslConfig);
- // Set the returned meta data as attribute...
- setAttribute(static_cast<QNetworkRequest::Attribute>(KIO::AccessManager::MetaData),
- metaData.toVariant());
-
// Set the raw header information...
const QStringList httpHeaders (metaData.value(QL1S("HTTP-Headers")).split(QL1C('\n'), QString::SkipEmptyParts));
if (httpHeaders.isEmpty()) {
if (metaData.contains(QL1S("charset"))) {
QString mimeType = header(QNetworkRequest::ContentTypeHeader).toString();
mimeType += QL1S(" ; charset=");
mimeType += metaData.value(QL1S("charset"));
kDebug(7044) << "changed content-type to" << mimeType;
setHeader(QNetworkRequest::ContentTypeHeader, mimeType.toUtf8());
}
} else {
Q_FOREACH(const QString& httpHeader, httpHeaders) {
int index = httpHeader.indexOf(QL1C(':'));
// Handle HTTP status line...
if (index == -1) {
// Except for the status line, all HTTP header must be an nvpair of
// type "<name>:<value>"
if (!httpHeader.startsWith(QL1S("HTTP/"), Qt::CaseInsensitive)) {
continue;
}
QStringList statusLineAttrs (httpHeader.split(QL1C(' '), QString::SkipEmptyParts));
if (statusLineAttrs.count() > 1) {
setAttribute(QNetworkRequest::HttpStatusCodeAttribute, statusLineAttrs.at(1));
}
if (statusLineAttrs.count() > 2) {
setAttribute(QNetworkRequest::HttpReasonPhraseAttribute, statusLineAttrs.at(2));
}
continue;
}
const QString headerName = httpHeader.left(index);
QString headerValue = httpHeader.mid(index+1);
// Ignore cookie header since it is handled by the http ioslave.
if (headerName.startsWith(QL1S("set-cookie"), Qt::CaseInsensitive)) {
continue;
}
if (headerName.startsWith(QL1S("content-disposition"), Qt::CaseInsensitive) &&
ignoreContentDisposition(job)) {
continue;
}
// Without overridding the corrected mime-type sent by kio_http, add
// back the "charset=" portion of the content-type header if present.
if (headerName.startsWith(QL1S("content-type"), Qt::CaseInsensitive)) {
- const QString mimeType = header(QNetworkRequest::ContentTypeHeader).toString();
+
+ QString mimeType (header(QNetworkRequest::ContentTypeHeader).toString());
+
+ if (m_ignoreContentDisposition) {
+ // If the server returned application/octet-stream, try to determine the
+ // real content type from the disposition filename.
+ if (mimeType == KMimeType::defaultMimeType()) {
+ int accuracy = 0;
+ const QString fileName (metaData.value(QL1S("content-disposition-filename")));
+ KMimeType::Ptr mime = KMimeType::findByUrl((fileName.isEmpty() ? url().path() : fileName), 0, false, true, &accuracy);
+ if (!mime->isDefault() && accuracy == 100) {
+ mimeType = mime->name();
+ }
+ }
+ metaData.remove(QL1S("content-disposition-type"));
+ metaData.remove(QL1S("content-disposition-filename"));
+ }
+
if (!headerValue.contains(mimeType, Qt::CaseInsensitive)) {
index = headerValue.indexOf(QL1C(';'));
if (index == -1) {
headerValue = mimeType;
} else {
headerValue.replace(0, index, mimeType);
}
- kDebug(7044) << "Changed mime-type from" << mimeType << "to" << headerValue;
+ //kDebug(7044) << "Changed mime-type from" << mimeType << "to" << headerValue;
}
}
-
setRawHeader(headerName.trimmed().toUtf8(), headerValue.trimmed().toUtf8());
}
}
+ // Set the returned meta data as attribute...
+ setAttribute(static_cast<QNetworkRequest::Attribute>(KIO::AccessManager::MetaData), metaData.toVariant());
+
m_metaDataRead = true;
emit metaDataChanged();
}
int AccessManagerReply::jobError(KJob* kJob)
{
const int errCode = kJob->error();
switch (errCode)
{
case 0:
break; // No error;
case KIO::ERR_SLAVE_DEFINED:
case KIO::ERR_NO_CONTENT: // Sent by a 204 response is not an error condition.
setError(QNetworkReply::NoError, kJob->errorText());
//kDebug(7044) << "0 -> QNetworkReply::NoError";
break;
case KIO::ERR_IS_DIRECTORY:
// This error condition can happen if you click on an ftp link that points
// to a directory instead of a file, e.g. ftp://ftp.kde.org/pub
setHeader(QNetworkRequest::ContentTypeHeader, "inode/directory");
setError(QNetworkReply::NoError, kJob->errorText());
break;
case KIO::ERR_COULD_NOT_CONNECT:
setError(QNetworkReply::ConnectionRefusedError, kJob->errorText());
kDebug(7044) << "KIO::ERR_COULD_NOT_CONNECT -> QNetworkReply::ConnectionRefusedError";
break;
case KIO::ERR_UNKNOWN_HOST:
setError(QNetworkReply::HostNotFoundError, kJob->errorText());
kDebug(7044) << "KIO::ERR_UNKNOWN_HOST -> QNetworkReply::HostNotFoundError";
break;
case KIO::ERR_SERVER_TIMEOUT:
setError(QNetworkReply::TimeoutError, kJob->errorText());
kDebug(7044) << "KIO::ERR_SERVER_TIMEOUT -> QNetworkReply::TimeoutError";
break;
case KIO::ERR_USER_CANCELED:
case KIO::ERR_ABORTED:
setError(QNetworkReply::OperationCanceledError, kJob->errorText());
kDebug(7044) << "KIO::ERR_ABORTED -> QNetworkReply::OperationCanceledError";
break;
case KIO::ERR_UNKNOWN_PROXY_HOST:
setError(QNetworkReply::ProxyNotFoundError, kJob->errorText());
kDebug(7044) << "KIO::UNKNOWN_PROXY_HOST -> QNetworkReply::ProxyNotFoundError";
break;
case KIO::ERR_ACCESS_DENIED:
setError(QNetworkReply::ContentAccessDenied, kJob->errorText());
kDebug(7044) << "KIO::ERR_ACCESS_DENIED -> QNetworkReply::ContentAccessDenied";
break;
case KIO::ERR_WRITE_ACCESS_DENIED:
setError(QNetworkReply::ContentOperationNotPermittedError, kJob->errorText());
kDebug(7044) << "KIO::ERR_WRITE_ACCESS_DENIED -> QNetworkReply::ContentOperationNotPermittedError";
break;
case KIO::ERR_DOES_NOT_EXIST:
setError(QNetworkReply::ContentNotFoundError, kJob->errorText());
kDebug(7044) << "KIO::ERR_DOES_NOT_EXIST -> QNetworkReply::ContentNotFoundError";
break;
case KIO::ERR_COULD_NOT_AUTHENTICATE:
setError(QNetworkReply::AuthenticationRequiredError, kJob->errorText());
kDebug(7044) << "KIO::ERR_COULD_NOT_AUTHENTICATE -> QNetworkReply::AuthenticationRequiredError";
break;
case KIO::ERR_UNSUPPORTED_PROTOCOL:
case KIO::ERR_NO_SOURCE_PROTOCOL:
setError(QNetworkReply::ProtocolUnknownError, kJob->errorText());
kDebug(7044) << "KIO::ERR_UNSUPPORTED_PROTOCOL -> QNetworkReply::ProtocolUnknownError";
break;
case KIO::ERR_CONNECTION_BROKEN:
setError(QNetworkReply::RemoteHostClosedError, kJob->errorText());
kDebug(7044) << "KIO::ERR_CONNECTION_BROKEN -> QNetworkReply::RemoteHostClosedError";
break;
case KIO::ERR_UNSUPPORTED_ACTION:
setError(QNetworkReply::ProtocolInvalidOperationError, kJob->errorText());
kDebug(7044) << "KIO::ERR_UNSUPPORTED_ACTION -> QNetworkReply::ProtocolInvalidOperationError";
break;
default:
setError(QNetworkReply::UnknownNetworkError, kJob->errorText());
kDebug(7044) << KIO::rawErrorDetail(errCode, QString()) << "-> QNetworkReply::UnknownNetworkError";
}
return errCode;
}
void AccessManagerReply::slotData(KIO::Job *kioJob, const QByteArray &data)
{
Q_UNUSED (kioJob);
m_data += data;
if (!data.isEmpty())
emit readyRead();
}
void AccessManagerReply::slotMimeType(KIO::Job *kioJob, const QString &mimeType)
{
//kDebug(7044) << kioJob << mimeType;
setHeader(QNetworkRequest::ContentTypeHeader, mimeType.toUtf8());
readHttpResponseHeaders(kioJob);
if (m_emitReadyReadOnMetaDataChange) {
emit readyRead();
}
}
void AccessManagerReply::slotResult(KJob *kJob)
{
const int errcode = jobError(kJob);
const QUrl redirectUrl = attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl();
if (!redirectUrl.isValid()) {
setAttribute(static_cast<QNetworkRequest::Attribute>(KIO::AccessManager::KioError), errcode);
if (errcode && errcode != KIO::ERR_NO_CONTENT)
emit error(error());
}
// Make sure HTTP response headers are always set.
if (!m_metaDataRead) {
readHttpResponseHeaders(qobject_cast<KIO::Job*>(kJob));
}
emit finished();
}
void AccessManagerReply::slotStatResult(KJob* kJob)
{
if (jobError(kJob)) {
emit error (error());
emit finished();
return;
}
KIO::StatJob* statJob = qobject_cast<KIO::StatJob*>(kJob);
Q_ASSERT(statJob);
KIO::UDSEntry entry = statJob->statResult();
QString mimeType = entry.stringValue(KIO::UDSEntry::UDS_MIME_TYPE);
if (mimeType.isEmpty() && entry.isDir())
mimeType = QL1S("inode/directory");
if (!mimeType.isEmpty())
setHeader(QNetworkRequest::ContentTypeHeader, mimeType.toUtf8());
emit finished();
}
void AccessManagerReply::slotRedirection(KIO::Job* job, const KUrl& u)
{
Q_UNUSED(job);
if (!KAuthorized::authorizeUrlAction(QLatin1String("redirect"), url(), u)) {
kWarning(7007) << "Redirection from" << url() << "to" << u << "REJECTED by policy!";
setError(QNetworkReply::ContentAccessDenied, u.url());
emit error(error());
return;
}
setAttribute(QNetworkRequest::RedirectionTargetAttribute, QUrl(u));
}
void AccessManagerReply::slotPercent(KJob *job, unsigned long percent)
{
qulonglong bytesTotal = job->totalAmount(KJob::Bytes);
qulonglong bytesProcessed = bytesTotal * (percent / 100);
if (operation() == QNetworkAccessManager::PutOperation ||
operation() == QNetworkAccessManager::PostOperation) {
emit uploadProgress(bytesProcessed, bytesTotal);
return;
}
emit downloadProgress(bytesProcessed, bytesTotal);
}
}
#include "accessmanagerreply_p.moc"
diff --git a/kio/kio/accessmanagerreply_p.h b/kio/kio/accessmanagerreply_p.h
index 0dc8ea83c1..1842a82878 100644
--- a/kio/kio/accessmanagerreply_p.h
+++ b/kio/kio/accessmanagerreply_p.h
@@ -1,95 +1,95 @@
/*
* This file is part of the KDE project.
*
* Copyright (C) 2008 - 2009 Urs Wolfer <uwolfer @ kde.org>
* Copyright (C) 2009 - 2010 Dawit Alemayehu <adawit @ kde.org>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library 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
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public License
* along with this library; see the file COPYING.LIB. If not, write to
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*
*/
#ifndef KIO_ACCESSMANAGERREPLY_P_H
#define KIO_ACCESSMANAGERREPLY_P_H
-#include <QtCore/QPointer>
+#include <QtCore/QWeakPointer>
#include <QtNetwork/QNetworkReply>
namespace KIO
{
class Job;
class SimpleJob;
}
class KJob;
class KUrl;
namespace KDEPrivate {
/**
* Used for KIO::AccessManager; KDE implementation of QNetworkReply.
*
* @since 4.3
* @author Urs Wolfer \<uwolfer @ kde.org\>
*/
class AccessManagerReply : public QNetworkReply
{
Q_OBJECT
public:
AccessManagerReply(const QNetworkAccessManager::Operation &op,
const QNetworkRequest &request,
KIO::SimpleJob *kioJob,
bool emitReadyReadOnMetaDataChange = false,
QObject *parent = 0);
virtual ~AccessManagerReply();
virtual qint64 bytesAvailable() const;
virtual void abort();
void setIgnoreContentDisposition(bool on);
void setStatus(const QString& message, QNetworkReply::NetworkError);
void putOnHold();
static bool isLocalRequest(const KUrl& url);
protected:
virtual qint64 readData(char *data, qint64 maxSize);
void readHttpResponseHeaders(KIO::Job *);
int jobError(KJob *kJob);
bool ignoreContentDisposition(KIO::Job* job);
private Q_SLOTS:
void slotData(KIO::Job *kioJob, const QByteArray &data);
void slotMimeType(KIO::Job *kioJob, const QString &mimeType);
void slotResult(KJob *kJob);
void slotStatResult(KJob *kJob);
void slotRedirection(KIO::Job *job, const KUrl &url);
void slotPercent(KJob *job, unsigned long percent);
private:
QByteArray m_data;
bool m_metaDataRead;
bool m_ignoreContentDisposition;
bool m_emitReadyReadOnMetaDataChange;
- QPointer<KIO::SimpleJob> m_kioJob;
+ QWeakPointer<KIO::SimpleJob> m_kioJob;
};
bool AccessManager_isLocalRequest(const KUrl&);
}
#endif // KIO_ACCESSMANAGERREPLY_P_H
diff --git a/kio/kio/copyjob.cpp b/kio/kio/copyjob.cpp
index eff7825145..e3ace00337 100644
--- a/kio/kio/copyjob.cpp
+++ b/kio/kio/copyjob.cpp
@@ -1,2176 +1,2217 @@
/* This file is part of the KDE libraries
Copyright 2000 Stephan Kulow <coolo@kde.org>
Copyright 2000-2006 David Faure <faure@kde.org>
Copyright 2000 Waldo Bastian <bastian@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#include "copyjob.h"
#include <errno.h>
#include "kdirlister.h"
#include "kfileitem.h"
#include "deletejob.h"
#include <klocale.h>
#include <kdesktopfile.h>
#include <kdebug.h>
#include <kde_file.h>
#include "slave.h"
#include "scheduler.h"
#include "kdirwatch.h"
#include "kprotocolmanager.h"
#include "jobuidelegate.h"
#include <kdirnotify.h>
#include <ktemporaryfile.h>
#ifdef Q_OS_UNIX
#include <utime.h>
#endif
#include <assert.h>
#include <QtCore/QTimer>
#include <QtCore/QFile>
#include <sys/stat.h> // mode_t
#include <QPointer>
#include "job_p.h"
+#include <kdiskfreespaceinfo.h>
+#include <kfilesystemtype_p.h>
using namespace KIO;
//this will update the report dialog with 5 Hz, I think this is fast enough, aleXXX
#define REPORT_TIMEOUT 200
enum DestinationState {
DEST_NOT_STATED,
DEST_IS_DIR,
DEST_IS_FILE,
DEST_DOESNT_EXIST
};
/**
* States:
* STATE_STATING for the dest
* statCurrentSrc then does, for each src url:
* STATE_RENAMING if direct rename looks possible
* (on already exists, and user chooses rename, TODO: go to STATE_RENAMING again)
* STATE_STATING
* and then, if dir -> STATE_LISTING (filling 'd->dirs' and 'd->files')
* STATE_CREATING_DIRS (createNextDir, iterating over 'd->dirs')
* if conflict: STATE_CONFLICT_CREATING_DIRS
* STATE_COPYING_FILES (copyNextFile, iterating over 'd->files')
* if conflict: STATE_CONFLICT_COPYING_FILES
* STATE_DELETING_DIRS (deleteNextDir) (if moving)
* STATE_SETTING_DIR_ATTRIBUTES (setNextDirAttribute, iterating over d->m_directoriesCopied)
* done.
*/
enum CopyJobState {
STATE_STATING,
STATE_RENAMING,
STATE_LISTING,
STATE_CREATING_DIRS,
STATE_CONFLICT_CREATING_DIRS,
STATE_COPYING_FILES,
STATE_CONFLICT_COPYING_FILES,
STATE_DELETING_DIRS,
STATE_SETTING_DIR_ATTRIBUTES
};
/** @internal */
class KIO::CopyJobPrivate: public KIO::JobPrivate
{
public:
CopyJobPrivate(const KUrl::List& src, const KUrl& dest,
CopyJob::CopyMode mode, bool asMethod)
: m_globalDest(dest)
, m_globalDestinationState(DEST_NOT_STATED)
, m_defaultPermissions(false)
, m_bURLDirty(false)
, m_mode(mode)
, m_asMethod(asMethod)
, destinationState(DEST_NOT_STATED)
, state(STATE_STATING)
+ , m_freeSpace(-1)
, m_totalSize(0)
, m_processedSize(0)
, m_fileProcessedSize(0)
, m_processedFiles(0)
, m_processedDirs(0)
, m_srcList(src)
, m_currentStatSrc(m_srcList.constBegin())
, m_bCurrentOperationIsLink(false)
, m_bSingleFileCopy(false)
, m_bOnlyRenames(mode==CopyJob::Move)
, m_dest(dest)
, m_bAutoRenameFiles(false)
, m_bAutoRenameDirs(false)
, m_bAutoSkipFiles( false )
, m_bAutoSkipDirs( false )
, m_bOverwriteAllFiles( false )
, m_bOverwriteAllDirs( false )
, m_conflictError(0)
, m_reportTimer(0)
{
}
// This is the dest URL that was initially given to CopyJob
// It is copied into m_dest, which can be changed for a given src URL
// (when using the RENAME dialog in slotResult),
// and which will be reset for the next src URL.
KUrl m_globalDest;
// The state info about that global dest
DestinationState m_globalDestinationState;
// See setDefaultPermissions
bool m_defaultPermissions;
// Whether URLs changed (and need to be emitted by the next slotReport call)
bool m_bURLDirty;
// Used after copying all the files into the dirs, to set mtime (TODO: and permissions?)
// after the copy is done
QLinkedList<CopyInfo> m_directoriesCopied;
QLinkedList<CopyInfo>::const_iterator m_directoriesCopiedIterator;
CopyJob::CopyMode m_mode;
bool m_asMethod;
DestinationState destinationState;
CopyJobState state;
+
+ KIO::filesize_t m_freeSpace;
+
KIO::filesize_t m_totalSize;
KIO::filesize_t m_processedSize;
KIO::filesize_t m_fileProcessedSize;
int m_processedFiles;
int m_processedDirs;
QList<CopyInfo> files;
QList<CopyInfo> dirs;
KUrl::List dirsToRemove;
KUrl::List m_srcList;
KUrl::List m_successSrcList; // Entries in m_srcList that have successfully been moved
KUrl::List::const_iterator m_currentStatSrc;
bool m_bCurrentSrcIsDir;
bool m_bCurrentOperationIsLink;
bool m_bSingleFileCopy;
bool m_bOnlyRenames;
KUrl m_dest;
KUrl m_currentDest; // set during listing, used by slotEntries
//
QStringList m_skipList;
- QStringList m_overwriteList;
+ QSet<QString> m_overwriteList;
bool m_bAutoRenameFiles;
bool m_bAutoRenameDirs;
bool m_bAutoSkipFiles;
bool m_bAutoSkipDirs;
bool m_bOverwriteAllFiles;
bool m_bOverwriteAllDirs;
int m_conflictError;
QTimer *m_reportTimer;
// The current src url being stat'ed or copied
// During the stat phase, this is initially equal to *m_currentStatSrc but it can be resolved to a local file equivalent (#188903).
KUrl m_currentSrcURL;
KUrl m_currentDestURL;
QSet<QString> m_parentDirs;
void statCurrentSrc();
void statNextSrc();
// Those aren't slots but submethods for slotResult.
void slotResultStating( KJob * job );
void startListing( const KUrl & src );
void slotResultCreatingDirs( KJob * job );
void slotResultConflictCreatingDirs( KJob * job );
void createNextDir();
void slotResultCopyingFiles( KJob * job );
void slotResultConflictCopyingFiles( KJob * job );
// KIO::Job* linkNextFile( const KUrl& uSource, const KUrl& uDest, bool overwrite );
KIO::Job* linkNextFile( const KUrl& uSource, const KUrl& uDest, JobFlags flags );
void copyNextFile();
void slotResultDeletingDirs( KJob * job );
void deleteNextDir();
void sourceStated(const UDSEntry& entry, const KUrl& sourceUrl);
void skip(const KUrl & sourceURL, bool isDir);
void slotResultRenaming( KJob * job );
void slotResultSettingDirAttributes( KJob * job );
void setNextDirAttribute();
void startRenameJob(const KUrl &slave_url);
bool shouldOverwriteDir( const QString& path ) const;
bool shouldOverwriteFile( const QString& path ) const;
bool shouldSkip( const QString& path ) const;
void skipSrc(bool isDir);
void slotStart();
void slotEntries( KIO::Job*, const KIO::UDSEntryList& list );
void addCopyInfoFromUDSEntry(const UDSEntry& entry, const KUrl& srcUrl, bool srcIsDir, const KUrl& currentDest);
/**
* Forward signal from subjob
*/
void slotProcessedSize( KJob*, qulonglong data_size );
/**
* Forward signal from subjob
* @param size the total size
*/
void slotTotalSize( KJob*, qulonglong size );
void slotReport();
Q_DECLARE_PUBLIC(CopyJob)
static inline CopyJob *newJob(const KUrl::List& src, const KUrl& dest,
CopyJob::CopyMode mode, bool asMethod, JobFlags flags)
{
CopyJob *job = new CopyJob(*new CopyJobPrivate(src,dest,mode,asMethod));
job->setUiDelegate(new JobUiDelegate);
if (!(flags & HideProgressInfo))
KIO::getJobTracker()->registerJob(job);
if (flags & KIO::Overwrite) {
job->d_func()->m_bOverwriteAllDirs = true;
job->d_func()->m_bOverwriteAllFiles = true;
}
return job;
}
};
CopyJob::CopyJob(CopyJobPrivate &dd)
: Job(dd)
{
setProperty("destUrl", d_func()->m_dest.url());
QTimer::singleShot(0, this, SLOT(slotStart()));
}
CopyJob::~CopyJob()
{
}
KUrl::List CopyJob::srcUrls() const
{
return d_func()->m_srcList;
}
KUrl CopyJob::destUrl() const
{
return d_func()->m_dest;
}
void CopyJobPrivate::slotStart()
{
Q_Q(CopyJob);
/**
We call the functions directly instead of using signals.
Calling a function via a signal takes approx. 65 times the time
compared to calling it directly (at least on my machine). aleXXX
*/
m_reportTimer = new QTimer(q);
q->connect(m_reportTimer,SIGNAL(timeout()),q,SLOT(slotReport()));
m_reportTimer->start(REPORT_TIMEOUT);
// Stat the dest
KIO::Job * job = KIO::stat( m_dest, StatJob::DestinationSide, 2, KIO::HideProgressInfo );
//kDebug(7007) << "CopyJob:stating the dest " << m_dest;
q->addSubjob(job);
}
// For unit test purposes
KIO_EXPORT bool kio_resolve_local_urls = true;
void CopyJobPrivate::slotResultStating( KJob *job )
{
Q_Q(CopyJob);
//kDebug(7007);
// Was there an error while stating the src ?
if (job->error() && destinationState != DEST_NOT_STATED )
{
const KUrl srcurl = static_cast<SimpleJob*>(job)->url();
if ( !srcurl.isLocalFile() )
{
// Probably : src doesn't exist. Well, over some protocols (e.g. FTP)
// this info isn't really reliable (thanks to MS FTP servers).
// We'll assume a file, and try to download anyway.
kDebug(7007) << "Error while stating source. Activating hack";
q->removeSubjob( job );
assert ( !q->hasSubjobs() ); // We should have only one job at a time ...
struct CopyInfo info;
info.permissions = (mode_t) -1;
info.mtime = (time_t) -1;
info.ctime = (time_t) -1;
info.size = (KIO::filesize_t)-1;
info.uSource = srcurl;
info.uDest = m_dest;
// Append filename or dirname to destination URL, if allowed
if ( destinationState == DEST_IS_DIR && !m_asMethod )
info.uDest.addPath( srcurl.fileName() );
files.append( info );
statNextSrc();
return;
}
// Local file. If stat fails, the file definitely doesn't exist.
// yes, q->Job::, because we don't want to call our override
q->Job::slotResult( job ); // will set the error and emit result(this)
return;
}
// Keep copy of the stat result
const UDSEntry entry = static_cast<StatJob*>(job)->statResult();
if ( destinationState == DEST_NOT_STATED ) {
+ if ( m_dest.isLocalFile() ) //works for dirs as well
+ {
+ QString path = m_dest.toLocalFile();
+ KFileSystemType::Type fsType = KFileSystemType::fileSystemType( path );
+ if ( fsType != KFileSystemType::Nfs && fsType != KFileSystemType::Smb )
+ {
+ m_freeSpace = KDiskFreeSpaceInfo::freeSpaceInfo( path ).available();
+ }
+ //TODO actually preliminary check is even more valuable for slow NFS/SMB mounts,
+ //but we need to find a way to report connection errors to user
+ }
+
const bool isGlobalDest = m_dest == m_globalDest;
const bool isDir = entry.isDir();
// we were stating the dest
if (job->error()) {
destinationState = DEST_DOESNT_EXIST;
//kDebug(7007) << "dest does not exist";
} else {
// Treat symlinks to dirs as dirs here, so no test on isLink
destinationState = isDir ? DEST_IS_DIR : DEST_IS_FILE;
//kDebug(7007) << "dest is dir:" << isDir;
const QString sLocalPath = entry.stringValue( KIO::UDSEntry::UDS_LOCAL_PATH );
if ( !sLocalPath.isEmpty() && kio_resolve_local_urls && destinationState != DEST_DOESNT_EXIST ) {
m_dest = KUrl();
m_dest.setPath(sLocalPath);
if ( isGlobalDest )
m_globalDest = m_dest;
}
}
if ( isGlobalDest )
m_globalDestinationState = destinationState;
q->removeSubjob( job );
assert ( !q->hasSubjobs() );
// After knowing what the dest is, we can start stat'ing the first src.
statCurrentSrc();
} else {
sourceStated(entry, static_cast<SimpleJob*>(job)->url());
q->removeSubjob( job );
}
}
void CopyJobPrivate::sourceStated(const UDSEntry& entry, const KUrl& sourceUrl)
{
const QString sLocalPath = entry.stringValue( KIO::UDSEntry::UDS_LOCAL_PATH );
const bool isDir = entry.isDir();
// We were stating the current source URL
// Is it a file or a dir ?
// There 6 cases, and all end up calling addCopyInfoFromUDSEntry first :
// 1 - src is a dir, destination is a directory,
// slotEntries will append the source-dir-name to the destination
// 2 - src is a dir, destination is a file -- will offer to overwrite, later on.
// 3 - src is a dir, destination doesn't exist, then it's the destination dirname,
// so slotEntries will use it as destination.
// 4 - src is a file, destination is a directory,
// slotEntries will append the filename to the destination.
// 5 - src is a file, destination is a file, m_dest is the exact destination name
// 6 - src is a file, destination doesn't exist, m_dest is the exact destination name
KUrl srcurl;
if (!sLocalPath.isEmpty() && destinationState != DEST_DOESNT_EXIST) {
kDebug() << "Using sLocalPath. destinationState=" << destinationState;
// Prefer the local path -- but only if we were able to stat() the dest.
// Otherwise, renaming a desktop:/ url would copy from src=file to dest=desktop (#218719)
srcurl.setPath(sLocalPath);
} else {
srcurl = sourceUrl;
}
addCopyInfoFromUDSEntry(entry, srcurl, false, m_dest);
m_currentDest = m_dest;
m_bCurrentSrcIsDir = false;
if ( isDir
// treat symlinks as files (no recursion)
&& !entry.isLink()
&& m_mode != CopyJob::Link ) // No recursion in Link mode either.
{
//kDebug(7007) << "Source is a directory";
if (srcurl.isLocalFile()) {
const QString parentDir = srcurl.toLocalFile(KUrl::RemoveTrailingSlash);
m_parentDirs.insert(parentDir);
}
m_bCurrentSrcIsDir = true; // used by slotEntries
if ( destinationState == DEST_IS_DIR ) // (case 1)
{
if ( !m_asMethod )
{
// Use <desturl>/<directory_copied> as destination, from now on
QString directory = srcurl.fileName();
const QString sName = entry.stringValue( KIO::UDSEntry::UDS_NAME );
KProtocolInfo::FileNameUsedForCopying fnu = KProtocolManager::fileNameUsedForCopying(srcurl);
if (fnu == KProtocolInfo::Name) {
if (!sName.isEmpty())
directory = sName;
} else if (fnu == KProtocolInfo::DisplayName) {
const QString dispName = entry.stringValue( KIO::UDSEntry::UDS_DISPLAY_NAME );
if (!dispName.isEmpty())
directory = dispName;
else if (!sName.isEmpty())
directory = sName;
}
m_currentDest.addPath( directory );
}
}
else // (case 3)
{
// otherwise dest is new name for toplevel dir
// so the destination exists, in fact, from now on.
// (This even works with other src urls in the list, since the
// dir has effectively been created)
destinationState = DEST_IS_DIR;
if ( m_dest == m_globalDest )
m_globalDestinationState = destinationState;
}
startListing( srcurl );
}
else
{
//kDebug(7007) << "Source is a file (or a symlink), or we are linking -> no recursive listing";
if (srcurl.isLocalFile()) {
const QString parentDir = srcurl.directory(KUrl::ObeyTrailingSlash);
m_parentDirs.insert(parentDir);
}
statNextSrc();
}
}
bool CopyJob::doSuspend()
{
Q_D(CopyJob);
d->slotReport();
return Job::doSuspend();
}
void CopyJobPrivate::slotReport()
{
Q_Q(CopyJob);
if ( q->isSuspended() )
return;
// If showProgressInfo was set, progressId() is > 0.
switch (state) {
case STATE_RENAMING:
q->setTotalAmount(KJob::Files, m_srcList.count());
// fall-through intended
case STATE_COPYING_FILES:
q->setProcessedAmount( KJob::Files, m_processedFiles );
if (m_bURLDirty)
{
// Only emit urls when they changed. This saves time, and fixes #66281
m_bURLDirty = false;
if (m_mode==CopyJob::Move)
{
emitMoving(q, m_currentSrcURL, m_currentDestURL);
emit q->moving( q, m_currentSrcURL, m_currentDestURL);
}
else if (m_mode==CopyJob::Link)
{
emitCopying( q, m_currentSrcURL, m_currentDestURL ); // we don't have a delegate->linking
emit q->linking( q, m_currentSrcURL.path(), m_currentDestURL );
}
else
{
emitCopying( q, m_currentSrcURL, m_currentDestURL );
emit q->copying( q, m_currentSrcURL, m_currentDestURL );
}
}
break;
case STATE_CREATING_DIRS:
q->setProcessedAmount( KJob::Directories, m_processedDirs );
if (m_bURLDirty)
{
m_bURLDirty = false;
emit q->creatingDir( q, m_currentDestURL );
emitCreatingDir( q, m_currentDestURL );
}
break;
case STATE_STATING:
case STATE_LISTING:
if (m_bURLDirty)
{
m_bURLDirty = false;
if (m_mode==CopyJob::Move)
{
emitMoving( q, m_currentSrcURL, m_currentDestURL );
}
else
{
emitCopying( q, m_currentSrcURL, m_currentDestURL );
}
}
q->setTotalAmount(KJob::Bytes, m_totalSize);
q->setTotalAmount(KJob::Files, files.count());
q->setTotalAmount(KJob::Directories, dirs.count());
break;
default:
break;
}
}
void CopyJobPrivate::slotEntries(KIO::Job* job, const UDSEntryList& list)
{
//Q_Q(CopyJob);
UDSEntryList::ConstIterator it = list.constBegin();
UDSEntryList::ConstIterator end = list.constEnd();
for (; it != end; ++it) {
const UDSEntry& entry = *it;
addCopyInfoFromUDSEntry(entry, static_cast<SimpleJob *>(job)->url(), m_bCurrentSrcIsDir, m_currentDest);
}
}
void CopyJobPrivate::addCopyInfoFromUDSEntry(const UDSEntry& entry, const KUrl& srcUrl, bool srcIsDir, const KUrl& currentDest)
{
struct CopyInfo info;
info.permissions = entry.numberValue(KIO::UDSEntry::UDS_ACCESS, -1);
info.mtime = (time_t) entry.numberValue(KIO::UDSEntry::UDS_MODIFICATION_TIME, -1);
info.ctime = (time_t) entry.numberValue(KIO::UDSEntry::UDS_CREATION_TIME, -1);
info.size = (KIO::filesize_t) entry.numberValue(KIO::UDSEntry::UDS_SIZE, -1);
if (info.size != (KIO::filesize_t) -1)
m_totalSize += info.size;
// recursive listing, displayName can be a/b/c/d
const QString fileName = entry.stringValue(KIO::UDSEntry::UDS_NAME);
const QString urlStr = entry.stringValue(KIO::UDSEntry::UDS_URL);
KUrl url;
if (!urlStr.isEmpty())
url = urlStr;
QString localPath = entry.stringValue(KIO::UDSEntry::UDS_LOCAL_PATH);
const bool isDir = entry.isDir();
info.linkDest = entry.stringValue(KIO::UDSEntry::UDS_LINK_DEST);
if (fileName != QLatin1String("..") && fileName != QLatin1String(".")) {
const bool hasCustomURL = !url.isEmpty() || !localPath.isEmpty();
if (!hasCustomURL) {
// Make URL from displayName
url = srcUrl;
if (srcIsDir) { // Only if src is a directory. Otherwise uSource is fine as is
//kDebug(7007) << "adding path" << displayName;
url.addPath(fileName);
}
}
//kDebug(7007) << "displayName=" << displayName << "url=" << url;
if (!localPath.isEmpty() && kio_resolve_local_urls && destinationState != DEST_DOESNT_EXIST) {
url = KUrl(localPath);
}
info.uSource = url;
info.uDest = currentDest;
//kDebug(7007) << "uSource=" << info.uSource << "uDest(1)=" << info.uDest;
// Append filename or dirname to destination URL, if allowed
if (destinationState == DEST_IS_DIR &&
// "copy/move as <foo>" means 'foo' is the dest for the base srcurl
// (passed here during stating) but not its children (during listing)
(! (m_asMethod && state == STATE_STATING)))
{
QString destFileName;
KProtocolInfo::FileNameUsedForCopying fnu = KProtocolManager::fileNameUsedForCopying(url);
if (hasCustomURL &&
fnu == KProtocolInfo::FromUrl) {
//destFileName = url.fileName(); // Doesn't work for recursive listing
// Count the number of prefixes used by the recursive listjob
int numberOfSlashes = fileName.count('/'); // don't make this a find()!
QString path = url.path();
int pos = 0;
for (int n = 0; n < numberOfSlashes + 1; ++n) {
pos = path.lastIndexOf('/', pos - 1);
if (pos == -1) { // error
kWarning(7007) << "kioslave bug: not enough slashes in UDS_URL" << path << "- looking for" << numberOfSlashes << "slashes";
break;
}
}
if (pos >= 0) {
destFileName = path.mid(pos + 1);
}
} else if ( fnu == KProtocolInfo::Name ) { // destination filename taken from UDS_NAME
destFileName = fileName;
} else { // from display name (with fallback to name)
const QString displayName = entry.stringValue(KIO::UDSEntry::UDS_DISPLAY_NAME);
destFileName = displayName.isEmpty() ? fileName : displayName;
}
// Here we _really_ have to add some filename to the dest.
// Otherwise, we end up with e.g. dest=..../Desktop/ itself.
// (This can happen when dropping a link to a webpage with no path)
if (destFileName.isEmpty()) {
destFileName = KIO::encodeFileName(info.uSource.prettyUrl());
}
//kDebug(7007) << " adding destFileName=" << destFileName;
info.uDest.addPath(destFileName);
}
//kDebug(7007) << " uDest(2)=" << info.uDest;
//kDebug(7007) << " " << info.uSource << "->" << info.uDest;
if (info.linkDest.isEmpty() && isDir && m_mode != CopyJob::Link) { // Dir
dirs.append(info); // Directories
if (m_mode == CopyJob::Move) {
dirsToRemove.append(info.uSource);
}
} else {
files.append(info); // Files and any symlinks
}
}
}
void CopyJobPrivate::skipSrc(bool isDir)
{
m_dest = m_globalDest;
destinationState = m_globalDestinationState;
skip(*m_currentStatSrc, isDir);
++m_currentStatSrc;
statCurrentSrc();
}
void CopyJobPrivate::statNextSrc()
{
/* Revert to the global destination, the one that applies to all source urls.
* Imagine you copy the items a b and c into /d, but /d/b exists so the user uses "Rename" to put it in /foo/b instead.
* d->m_dest is /foo/b for b, but we have to revert to /d for item c and following.
*/
m_dest = m_globalDest;
destinationState = m_globalDestinationState;
++m_currentStatSrc;
statCurrentSrc();
}
void CopyJobPrivate::statCurrentSrc()
{
Q_Q(CopyJob);
if (m_currentStatSrc != m_srcList.constEnd()) {
m_currentSrcURL = (*m_currentStatSrc);
m_bURLDirty = true;
if (m_mode == CopyJob::Link) {
// Skip the "stating the source" stage, we don't need it for linking
m_currentDest = m_dest;
struct CopyInfo info;
info.permissions = -1;
info.mtime = (time_t) -1;
info.ctime = (time_t) -1;
info.size = (KIO::filesize_t)-1;
info.uSource = m_currentSrcURL;
info.uDest = m_currentDest;
// Append filename or dirname to destination URL, if allowed
if (destinationState == DEST_IS_DIR && !m_asMethod) {
if (
(m_currentSrcURL.protocol() == info.uDest.protocol()) &&
(m_currentSrcURL.host() == info.uDest.host()) &&
(m_currentSrcURL.port() == info.uDest.port()) &&
(m_currentSrcURL.user() == info.uDest.user()) &&
(m_currentSrcURL.pass() == info.uDest.pass()) ) {
// This is the case of creating a real symlink
info.uDest.addPath( m_currentSrcURL.fileName() );
} else {
// Different protocols, we'll create a .desktop file
// We have to change the extension anyway, so while we're at it,
// name the file like the URL
info.uDest.addPath(KIO::encodeFileName(m_currentSrcURL.prettyUrl()) + ".desktop");
}
}
files.append( info ); // Files and any symlinks
statNextSrc(); // we could use a loop instead of a recursive call :)
return;
}
// Let's see if we can skip stat'ing, for the case where a directory view has the info already
const KFileItem cachedItem = KDirLister::cachedItemForUrl(m_currentSrcURL);
KIO::UDSEntry entry;
if (!cachedItem.isNull()) {
entry = cachedItem.entry();
if (destinationState != DEST_DOESNT_EXIST) { // only resolve src if we could resolve dest (#218719)
bool dummyIsLocal;
m_currentSrcURL = cachedItem.mostLocalUrl(dummyIsLocal); // #183585
}
}
if (m_mode == CopyJob::Move && (
// Don't go renaming right away if we need a stat() to find out the destination filename
KProtocolManager::fileNameUsedForCopying(m_currentSrcURL) == KProtocolInfo::FromUrl ||
destinationState != DEST_IS_DIR || m_asMethod)
) {
// If moving, before going for the full stat+[list+]copy+del thing, try to rename
// The logic is pretty similar to FileCopyJobPrivate::slotStart()
if ( (m_currentSrcURL.protocol() == m_dest.protocol()) &&
(m_currentSrcURL.host() == m_dest.host()) &&
(m_currentSrcURL.port() == m_dest.port()) &&
(m_currentSrcURL.user() == m_dest.user()) &&
(m_currentSrcURL.pass() == m_dest.pass()) )
{
startRenameJob( m_currentSrcURL );
return;
}
else if ( m_currentSrcURL.isLocalFile() && KProtocolManager::canRenameFromFile( m_dest ) )
{
startRenameJob( m_dest );
return;
}
else if ( m_dest.isLocalFile() && KProtocolManager::canRenameToFile( m_currentSrcURL ) )
{
startRenameJob( m_currentSrcURL );
return;
}
}
// if the file system doesn't support deleting, we do not even stat
if (m_mode == CopyJob::Move && !KProtocolManager::supportsDeleting(m_currentSrcURL)) {
QPointer<CopyJob> that = q;
emit q->warning( q, buildErrorString(ERR_CANNOT_DELETE, m_currentSrcURL.prettyUrl()) );
if (that)
statNextSrc(); // we could use a loop instead of a recursive call :)
return;
}
m_bOnlyRenames = false;
// Testing for entry.count()>0 here is not good enough; KFileItem inserts
// entries for UDS_USER and UDS_GROUP even on initially empty UDSEntries (#192185)
if (entry.contains(KIO::UDSEntry::UDS_NAME)) {
kDebug(7007) << "fast path! found info about" << m_currentSrcURL << "in KDirLister";
sourceStated(entry, m_currentSrcURL);
return;
}
// Stat the next src url
Job * job = KIO::stat( m_currentSrcURL, StatJob::SourceSide, 2, KIO::HideProgressInfo );
//kDebug(7007) << "KIO::stat on" << m_currentSrcURL;
state = STATE_STATING;
q->addSubjob(job);
m_currentDestURL = m_dest;
m_bURLDirty = true;
}
else
{
// Finished the stat'ing phase
// First make sure that the totals were correctly emitted
state = STATE_STATING;
m_bURLDirty = true;
slotReport();
+
+ kDebug(7007)<<"Stating finished. To copy:"<<m_totalSize<<", available:"<<m_freeSpace;
+ //TODO warn user beforehand if space is not enough
+
if (!dirs.isEmpty())
emit q->aboutToCreate( q, dirs );
if (!files.isEmpty())
emit q->aboutToCreate( q, files );
// Check if we are copying a single file
m_bSingleFileCopy = ( files.count() == 1 && dirs.isEmpty() );
// Then start copying things
state = STATE_CREATING_DIRS;
createNextDir();
}
}
void CopyJobPrivate::startRenameJob( const KUrl& slave_url )
{
Q_Q(CopyJob);
// Silence KDirWatch notifications, otherwise performance is horrible
if (m_currentSrcURL.isLocalFile()) {
const QString parentDir = m_currentSrcURL.directory(KUrl::ObeyTrailingSlash);
if (!m_parentDirs.contains(parentDir)) {
KDirWatch::self()->stopDirScan(parentDir);
m_parentDirs.insert(parentDir);
}
}
KUrl dest = m_dest;
// Append filename or dirname to destination URL, if allowed
if ( destinationState == DEST_IS_DIR && !m_asMethod )
dest.addPath( m_currentSrcURL.fileName() );
m_currentDestURL = dest;
kDebug(7007) << m_currentSrcURL << "->" << dest << "trying direct rename first";
state = STATE_RENAMING;
struct CopyInfo info;
info.permissions = -1;
info.mtime = (time_t) -1;
info.ctime = (time_t) -1;
info.size = (KIO::filesize_t)-1;
info.uSource = m_currentSrcURL;
info.uDest = dest;
QList<CopyInfo> files;
files.append(info);
emit q->aboutToCreate( q, files );
KIO_ARGS << m_currentSrcURL << dest << (qint8) false /*no overwrite*/;
SimpleJob * newJob = SimpleJobPrivate::newJobNoUi(slave_url, CMD_RENAME, packedArgs);
Scheduler::setJobPriority(newJob, 1);
q->addSubjob( newJob );
if ( m_currentSrcURL.directory() != dest.directory() ) // For the user, moving isn't renaming. Only renaming is.
m_bOnlyRenames = false;
}
void CopyJobPrivate::startListing( const KUrl & src )
{
Q_Q(CopyJob);
state = STATE_LISTING;
m_bURLDirty = true;
ListJob * newjob = listRecursive(src, KIO::HideProgressInfo);
newjob->setUnrestricted(true);
q->connect(newjob, SIGNAL(entries(KIO::Job*,KIO::UDSEntryList)),
SLOT(slotEntries(KIO::Job*,KIO::UDSEntryList)));
q->addSubjob( newjob );
}
void CopyJobPrivate::skip(const KUrl & sourceUrl, bool isDir)
{
KUrl dir = sourceUrl;
if (!isDir) {
// Skipping a file: make sure not to delete the parent dir (#208418)
dir.setPath(dir.directory());
}
while (dirsToRemove.removeAll(dir) > 0) {
// Do not rely on rmdir() on the parent directories aborting.
// Exclude the parent dirs explicitly.
dir.setPath(dir.directory());
}
}
bool CopyJobPrivate::shouldOverwriteDir( const QString& path ) const
{
if ( m_bOverwriteAllDirs )
return true;
return m_overwriteList.contains(path);
}
bool CopyJobPrivate::shouldOverwriteFile( const QString& path ) const
{
if ( m_bOverwriteAllFiles )
return true;
return m_overwriteList.contains(path);
}
bool CopyJobPrivate::shouldSkip( const QString& path ) const
{
Q_FOREACH(const QString& skipPath, m_skipList) {
if ( path.startsWith(skipPath) )
return true;
}
return false;
}
void CopyJobPrivate::slotResultCreatingDirs( KJob * job )
{
Q_Q(CopyJob);
// The dir we are trying to create:
QList<CopyInfo>::Iterator it = dirs.begin();
// Was there an error creating a dir ?
if ( job->error() )
{
m_conflictError = job->error();
if ( (m_conflictError == ERR_DIR_ALREADY_EXIST)
|| (m_conflictError == ERR_FILE_ALREADY_EXIST) ) // can't happen?
{
KUrl oldURL = ((SimpleJob*)job)->url();
// Should we skip automatically ?
if ( m_bAutoSkipDirs ) {
// We don't want to copy files in this directory, so we put it on the skip list
m_skipList.append( oldURL.path( KUrl::AddTrailingSlash ) );
skip(oldURL, true);
dirs.erase( it ); // Move on to next dir
} else {
// Did the user choose to overwrite already?
const QString destDir = (*it).uDest.path();
if ( shouldOverwriteDir( destDir ) ) { // overwrite => just skip
emit q->copyingDone( q, (*it).uSource, (*it).uDest, (*it).mtime, true /* directory */, false /* renamed */ );
dirs.erase( it ); // Move on to next dir
} else {
if (m_bAutoRenameDirs) {
QString oldPath = (*it).uDest.path(KUrl::AddTrailingSlash);
KUrl destDirectory((*it).uDest);
destDirectory.setPath(destDirectory.directory());
QString newName = KIO::RenameDialog::suggestName(destDirectory, (*it).uDest.fileName());
KUrl newUrl((*it).uDest);
newUrl.setFileName(newName);
emit q->renamed(q, (*it).uDest, newUrl); // for e.g. kpropsdlg
// Change the current one and strip the trailing '/'
(*it).uDest.setPath(newUrl.path(KUrl::RemoveTrailingSlash));
QString newPath = newUrl.path(KUrl::AddTrailingSlash); // With trailing slash
QList<CopyInfo>::Iterator renamedirit = it;
++renamedirit;
// Change the name of subdirectories inside the directory
for(; renamedirit != dirs.end() ; ++renamedirit) {
QString path = (*renamedirit).uDest.path();
if (path.startsWith(oldPath)) {
QString n = path;
n.replace(0, oldPath.length(), newPath);
kDebug(7007) << "dirs list:" << (*renamedirit).uSource.path()
<< "was going to be" << path
<< ", changed into" << n;
(*renamedirit).uDest.setPath(n);
}
}
// Change filenames inside the directory
QList<CopyInfo>::Iterator renamefileit = files.begin();
for(; renamefileit != files.end() ; ++renamefileit) {
QString path = (*renamefileit).uDest.path();
if (path.startsWith(oldPath)) {
QString n = path;
n.replace(0, oldPath.length(), newPath);
kDebug(7007) << "files list:" << (*renamefileit).uSource.path()
<< "was going to be" << path
<< ", changed into" << n;
(*renamefileit).uDest.setPath(n);
}
}
if (!dirs.isEmpty()) {
emit q->aboutToCreate(q, dirs);
}
if (!files.isEmpty()) {
emit q->aboutToCreate(q, files);
}
}
else {
if (!q->isInteractive()) {
q->Job::slotResult(job); // will set the error and emit result(this)
return;
}
assert(((SimpleJob*)job)->url().url() == (*it).uDest.url());
q->removeSubjob(job);
assert (!q->hasSubjobs()); // We should have only one job at a time ...
// We need to stat the existing dir, to get its last-modification time
KUrl existingDest((*it).uDest);
SimpleJob * newJob = KIO::stat(existingDest, StatJob::DestinationSide, 2, KIO::HideProgressInfo);
Scheduler::setJobPriority(newJob, 1);
kDebug(7007) << "KIO::stat for resolving conflict on " << existingDest;
state = STATE_CONFLICT_CREATING_DIRS;
q->addSubjob(newJob);
return; // Don't move to next dir yet !
}
}
}
}
else
{
// Severe error, abort
q->Job::slotResult( job ); // will set the error and emit result(this)
return;
}
}
else // no error : remove from list, to move on to next dir
{
//this is required for the undo feature
emit q->copyingDone( q, (*it).uSource, (*it).uDest, (*it).mtime, true, false );
m_directoriesCopied.append( *it );
dirs.erase( it );
}
m_processedDirs++;
//emit processedAmount( this, KJob::Directories, m_processedDirs );
q->removeSubjob( job );
assert( !q->hasSubjobs() ); // We should have only one job at a time ...
createNextDir();
}
void CopyJobPrivate::slotResultConflictCreatingDirs( KJob * job )
{
Q_Q(CopyJob);
// We come here after a conflict has been detected and we've stated the existing dir
// The dir we were trying to create:
QList<CopyInfo>::Iterator it = dirs.begin();
const UDSEntry entry = ((KIO::StatJob*)job)->statResult();
// Its modification time:
const time_t destmtime = (time_t) entry.numberValue( KIO::UDSEntry::UDS_MODIFICATION_TIME, -1 );
const time_t destctime = (time_t) entry.numberValue( KIO::UDSEntry::UDS_CREATION_TIME, -1 );
const KIO::filesize_t destsize = entry.numberValue( KIO::UDSEntry::UDS_SIZE );
const QString linkDest = entry.stringValue( KIO::UDSEntry::UDS_LINK_DEST );
q->removeSubjob( job );
assert ( !q->hasSubjobs() ); // We should have only one job at a time ...
// Always multi and skip (since there are files after that)
RenameDialog_Mode mode = (RenameDialog_Mode)( M_MULTI | M_SKIP | M_ISDIR );
// Overwrite only if the existing thing is a dir (no chance with a file)
if ( m_conflictError == ERR_DIR_ALREADY_EXIST )
{
if( (*it).uSource == (*it).uDest ||
((*it).uSource.protocol() == (*it).uDest.protocol() &&
(*it).uSource.path( KUrl::RemoveTrailingSlash ) == linkDest) )
mode = (RenameDialog_Mode)( mode | M_OVERWRITE_ITSELF);
else
mode = (RenameDialog_Mode)( mode | M_OVERWRITE );
}
QString existingDest = (*it).uDest.path();
QString newPath;
if (m_reportTimer)
m_reportTimer->stop();
RenameDialog_Result r = q->ui()->askFileRename( q, i18n("Folder Already Exists"),
(*it).uSource.url(),
(*it).uDest.url(),
mode, newPath,
(*it).size, destsize,
(*it).ctime, destctime,
(*it).mtime, destmtime );
if (m_reportTimer)
m_reportTimer->start(REPORT_TIMEOUT);
switch ( r ) {
case R_CANCEL:
q->setError( ERR_USER_CANCELED );
q->emitResult();
return;
case R_AUTO_RENAME:
m_bAutoRenameDirs = true;
// fall through
case R_RENAME:
{
QString oldPath = (*it).uDest.path( KUrl::AddTrailingSlash );
KUrl newUrl( (*it).uDest );
newUrl.setPath( newPath );
emit q->renamed( q, (*it).uDest, newUrl ); // for e.g. kpropsdlg
// Change the current one and strip the trailing '/'
(*it).uDest.setPath( newUrl.path( KUrl::RemoveTrailingSlash ) );
newPath = newUrl.path( KUrl::AddTrailingSlash ); // With trailing slash
QList<CopyInfo>::Iterator renamedirit = it;
++renamedirit;
// Change the name of subdirectories inside the directory
for( ; renamedirit != dirs.end() ; ++renamedirit )
{
QString path = (*renamedirit).uDest.path();
if ( path.startsWith( oldPath ) ) {
QString n = path;
n.replace( 0, oldPath.length(), newPath );
kDebug(7007) << "dirs list:" << (*renamedirit).uSource.path()
<< "was going to be" << path
<< ", changed into" << n;
(*renamedirit).uDest.setPath( n );
}
}
// Change filenames inside the directory
QList<CopyInfo>::Iterator renamefileit = files.begin();
for( ; renamefileit != files.end() ; ++renamefileit )
{
QString path = (*renamefileit).uDest.path();
if ( path.startsWith( oldPath ) ) {
QString n = path;
n.replace( 0, oldPath.length(), newPath );
kDebug(7007) << "files list:" << (*renamefileit).uSource.path()
<< "was going to be" << path
<< ", changed into" << n;
(*renamefileit).uDest.setPath( n );
}
}
if (!dirs.isEmpty())
emit q->aboutToCreate( q, dirs );
if (!files.isEmpty())
emit q->aboutToCreate( q, files );
}
break;
case R_AUTO_SKIP:
m_bAutoSkipDirs = true;
// fall through
case R_SKIP:
m_skipList.append( existingDest );
skip((*it).uSource, true);
// Move on to next dir
dirs.erase( it );
m_processedDirs++;
break;
case R_OVERWRITE:
- m_overwriteList.append( existingDest );
+ m_overwriteList.insert( existingDest );
emit q->copyingDone( q, (*it).uSource, (*it).uDest, (*it).mtime, true /* directory */, false /* renamed */ );
// Move on to next dir
dirs.erase( it );
m_processedDirs++;
break;
case R_OVERWRITE_ALL:
m_bOverwriteAllDirs = true;
emit q->copyingDone( q, (*it).uSource, (*it).uDest, (*it).mtime, true /* directory */, false /* renamed */ );
// Move on to next dir
dirs.erase( it );
m_processedDirs++;
break;
default:
assert( 0 );
}
state = STATE_CREATING_DIRS;
//emit processedAmount( this, KJob::Directories, m_processedDirs );
createNextDir();
}
void CopyJobPrivate::createNextDir()
{
Q_Q(CopyJob);
KUrl udir;
if ( !dirs.isEmpty() )
{
// Take first dir to create out of list
QList<CopyInfo>::Iterator it = dirs.begin();
// Is this URL on the skip list or the overwrite list ?
while( it != dirs.end() && udir.isEmpty() )
{
const QString dir = (*it).uDest.path();
if ( shouldSkip( dir ) ) {
dirs.erase( it );
it = dirs.begin();
} else
udir = (*it).uDest;
}
}
if ( !udir.isEmpty() ) // any dir to create, finally ?
{
// Create the directory - with default permissions so that we can put files into it
// TODO : change permissions once all is finished; but for stuff coming from CDROM it sucks...
KIO::SimpleJob *newjob = KIO::mkdir( udir, -1 );
Scheduler::setJobPriority(newjob, 1);
if (shouldOverwriteFile(udir.path())) { // if we are overwriting an existing file or symlink
newjob->addMetaData("overwrite", "true");
}
m_currentDestURL = udir;
m_bURLDirty = true;
q->addSubjob(newjob);
return;
}
else // we have finished creating dirs
{
q->setProcessedAmount( KJob::Directories, m_processedDirs ); // make sure final number appears
if (m_mode == CopyJob::Move) {
// Now we know which dirs hold the files we're going to delete.
// To speed things up and prevent double-notification, we disable KDirWatch
// on those dirs temporarily (using KDirWatch::self, that's the instanced
// used by e.g. kdirlister).
for ( QSet<QString>::const_iterator it = m_parentDirs.constBegin() ; it != m_parentDirs.constEnd() ; ++it )
KDirWatch::self()->stopDirScan( *it );
}
state = STATE_COPYING_FILES;
m_processedFiles++; // Ralf wants it to start at 1, not 0
copyNextFile();
}
}
void CopyJobPrivate::slotResultCopyingFiles( KJob * job )
{
Q_Q(CopyJob);
// The file we were trying to copy:
QList<CopyInfo>::Iterator it = files.begin();
if ( job->error() )
{
// Should we skip automatically ?
if ( m_bAutoSkipFiles )
{
skip((*it).uSource, false);
m_fileProcessedSize = (*it).size;
files.erase( it ); // Move on to next file
}
else
{
m_conflictError = job->error(); // save for later
// Existing dest ?
if ( ( m_conflictError == ERR_FILE_ALREADY_EXIST )
|| ( m_conflictError == ERR_DIR_ALREADY_EXIST )
|| ( m_conflictError == ERR_IDENTICAL_FILES ) )
{
if (m_bAutoRenameFiles) {
KUrl destDirectory((*it).uDest);
destDirectory.setPath(destDirectory.directory());
const QString newName = KIO::RenameDialog::suggestName(destDirectory, (*it).uDest.fileName());
KUrl newUrl((*it).uDest);
newUrl.setFileName(newName);
emit q->renamed(q, (*it).uDest, newUrl); // for e.g. kpropsdlg
(*it).uDest = newUrl;
QList<CopyInfo> files;
files.append(*it);
emit q->aboutToCreate(q, files);
}
else {
if ( !q->isInteractive() ) {
q->Job::slotResult( job ); // will set the error and emit result(this)
return;
}
q->removeSubjob(job);
assert (!q->hasSubjobs());
// We need to stat the existing file, to get its last-modification time
KUrl existingFile((*it).uDest);
SimpleJob * newJob = KIO::stat(existingFile, StatJob::DestinationSide, 2, KIO::HideProgressInfo);
Scheduler::setJobPriority(newJob, 1);
kDebug(7007) << "KIO::stat for resolving conflict on " << existingFile;
state = STATE_CONFLICT_COPYING_FILES;
q->addSubjob(newJob);
return; // Don't move to next file yet !
}
}
else
{
if ( m_bCurrentOperationIsLink && qobject_cast<KIO::DeleteJob*>( job ) )
{
// Very special case, see a few lines below
// We are deleting the source of a symlink we successfully moved... ignore error
m_fileProcessedSize = (*it).size;
files.erase( it );
} else {
if ( !q->isInteractive() ) {
q->Job::slotResult( job ); // will set the error and emit result(this)
return;
}
// Go directly to the conflict resolution, there is nothing to stat
slotResultConflictCopyingFiles( job );
return;
}
}
}
} else // no error
{
// Special case for moving links. That operation needs two jobs, unlike others.
if ( m_bCurrentOperationIsLink && m_mode == CopyJob::Move
&& !qobject_cast<KIO::DeleteJob *>( job ) // Deleting source not already done
)
{
q->removeSubjob( job );
assert ( !q->hasSubjobs() );
// The only problem with this trick is that the error handling for this del operation
// is not going to be right... see 'Very special case' above.
KIO::Job * newjob = KIO::del( (*it).uSource, HideProgressInfo );
q->addSubjob( newjob );
return; // Don't move to next file yet !
}
if ( m_bCurrentOperationIsLink )
{
QString target = ( m_mode == CopyJob::Link ? (*it).uSource.path() : (*it).linkDest );
//required for the undo feature
emit q->copyingLinkDone( q, (*it).uSource, target, (*it).uDest );
}
else {
//required for the undo feature
emit q->copyingDone( q, (*it).uSource, (*it).uDest, (*it).mtime, false, false );
if (m_mode == CopyJob::Move)
+ {
org::kde::KDirNotify::emitFileMoved( (*it).uSource.url(), (*it).uDest.url() );
+ }
m_successSrcList.append((*it).uSource);
+ if ( m_freeSpace != -1 )
+ {
+ m_freeSpace -= (*it).size;
+ }
+
}
// remove from list, to move on to next file
files.erase( it );
}
m_processedFiles++;
// clear processed size for last file and add it to overall processed size
m_processedSize += m_fileProcessedSize;
m_fileProcessedSize = 0;
//kDebug(7007) << files.count() << "files remaining";
// Merge metadata from subjob
KIO::Job* kiojob = dynamic_cast<KIO::Job*>(job);
Q_ASSERT(kiojob);
m_incomingMetaData += kiojob->metaData();
q->removeSubjob( job );
assert( !q->hasSubjobs() ); // We should have only one job at a time ...
copyNextFile();
}
void CopyJobPrivate::slotResultConflictCopyingFiles( KJob * job )
{
Q_Q(CopyJob);
// We come here after a conflict has been detected and we've stated the existing file
// The file we were trying to create:
QList<CopyInfo>::Iterator it = files.begin();
RenameDialog_Result res;
QString newPath;
if (m_reportTimer)
m_reportTimer->stop();
if ( ( m_conflictError == ERR_FILE_ALREADY_EXIST )
|| ( m_conflictError == ERR_DIR_ALREADY_EXIST )
|| ( m_conflictError == ERR_IDENTICAL_FILES ) )
{
// Its modification time:
const UDSEntry entry = ((KIO::StatJob*)job)->statResult();
const time_t destmtime = (time_t) entry.numberValue( KIO::UDSEntry::UDS_MODIFICATION_TIME, -1 );
const time_t destctime = (time_t) entry.numberValue( KIO::UDSEntry::UDS_CREATION_TIME, -1 );
const KIO::filesize_t destsize = entry.numberValue( KIO::UDSEntry::UDS_SIZE );
const QString linkDest = entry.stringValue( KIO::UDSEntry::UDS_LINK_DEST );
// Offer overwrite only if the existing thing is a file
// If src==dest, use "overwrite-itself"
RenameDialog_Mode mode;
bool isDir = true;
if( m_conflictError == ERR_DIR_ALREADY_EXIST )
mode = M_ISDIR;
else
{
if ( (*it).uSource == (*it).uDest ||
((*it).uSource.protocol() == (*it).uDest.protocol() &&
(*it).uSource.path( KUrl::RemoveTrailingSlash ) == linkDest) )
mode = M_OVERWRITE_ITSELF;
else
mode = M_OVERWRITE;
isDir = false;
}
if ( !m_bSingleFileCopy )
mode = (RenameDialog_Mode) ( mode | M_MULTI | M_SKIP );
res = q->ui()->askFileRename( q, !isDir ?
i18n("File Already Exists") : i18n("Already Exists as Folder"),
(*it).uSource.url(),
(*it).uDest.url(),
mode, newPath,
(*it).size, destsize,
(*it).ctime, destctime,
(*it).mtime, destmtime );
}
else
{
if ( job->error() == ERR_USER_CANCELED )
res = R_CANCEL;
else if ( !q->isInteractive() ) {
q->Job::slotResult( job ); // will set the error and emit result(this)
return;
}
else
{
SkipDialog_Result skipResult = q->ui()->askSkip( q, files.count() > 1,
job->errorString() );
// Convert the return code from SkipDialog into a RenameDialog code
res = ( skipResult == S_SKIP ) ? R_SKIP :
( skipResult == S_AUTO_SKIP ) ? R_AUTO_SKIP :
R_CANCEL;
}
}
if (m_reportTimer)
m_reportTimer->start(REPORT_TIMEOUT);
q->removeSubjob( job );
assert ( !q->hasSubjobs() );
switch ( res ) {
case R_CANCEL:
q->setError( ERR_USER_CANCELED );
q->emitResult();
return;
case R_AUTO_RENAME:
m_bAutoRenameFiles = true;
// fall through
case R_RENAME:
{
KUrl newUrl( (*it).uDest );
newUrl.setPath( newPath );
emit q->renamed( q, (*it).uDest, newUrl ); // for e.g. kpropsdlg
(*it).uDest = newUrl;
QList<CopyInfo> files;
files.append(*it);
emit q->aboutToCreate( q, files );
}
break;
case R_AUTO_SKIP:
m_bAutoSkipFiles = true;
// fall through
case R_SKIP:
// Move on to next file
skip((*it).uSource, false);
m_processedSize += (*it).size;
files.erase( it );
m_processedFiles++;
break;
case R_OVERWRITE_ALL:
m_bOverwriteAllFiles = true;
break;
case R_OVERWRITE:
// Add to overwrite list, so that copyNextFile knows to overwrite
- m_overwriteList.append( (*it).uDest.path() );
+ m_overwriteList.insert( (*it).uDest.path() );
break;
default:
assert( 0 );
}
state = STATE_COPYING_FILES;
copyNextFile();
}
KIO::Job* CopyJobPrivate::linkNextFile( const KUrl& uSource, const KUrl& uDest, JobFlags flags )
{
//kDebug(7007) << "Linking";
if (
(uSource.protocol() == uDest.protocol()) &&
(uSource.host() == uDest.host()) &&
(uSource.port() == uDest.port()) &&
(uSource.user() == uDest.user()) &&
(uSource.pass() == uDest.pass()) )
{
// This is the case of creating a real symlink
KIO::SimpleJob *newJob = KIO::symlink( uSource.path(), uDest, flags|HideProgressInfo /*no GUI*/ );
Scheduler::setJobPriority(newJob, 1);
//kDebug(7007) << "Linking target=" << uSource.path() << "link=" << uDest;
//emit linking( this, uSource.path(), uDest );
m_bCurrentOperationIsLink = true;
m_currentSrcURL=uSource;
m_currentDestURL=uDest;
m_bURLDirty = true;
//Observer::self()->slotCopying( this, uSource, uDest ); // should be slotLinking perhaps
return newJob;
} else {
Q_Q(CopyJob);
//kDebug(7007) << "Linking URL=" << uSource << "link=" << uDest;
if ( uDest.isLocalFile() ) {
// if the source is a devices url, handle it a littlebit special
QString path = uDest.toLocalFile();
//kDebug(7007) << "path=" << path;
QFile f( path );
if ( f.open( QIODevice::ReadWrite ) )
{
f.close();
KDesktopFile desktopFile( path );
KConfigGroup config = desktopFile.desktopGroup();
KUrl url = uSource;
url.setPass( "" );
config.writePathEntry( "URL", url.url() );
config.writeEntry( "Name", url.url() );
config.writeEntry( "Type", QString::fromLatin1("Link") );
QString protocol = uSource.protocol();
if ( protocol == QLatin1String("ftp") )
config.writeEntry( "Icon", QString::fromLatin1("folder-remote") );
else if ( protocol == QLatin1String("http") )
config.writeEntry( "Icon", QString::fromLatin1("text-html") );
else if ( protocol == QLatin1String("info") )
config.writeEntry( "Icon", QString::fromLatin1("text-x-texinfo") );
else if ( protocol == QLatin1String("mailto") ) // sven:
config.writeEntry( "Icon", QString::fromLatin1("internet-mail") ); // added mailto: support
else
config.writeEntry( "Icon", QString::fromLatin1("unknown") );
config.sync();
files.erase( files.begin() ); // done with this one, move on
m_processedFiles++;
//emit processedAmount( this, KJob::Files, m_processedFiles );
copyNextFile();
return 0;
}
else
{
kDebug(7007) << "ERR_CANNOT_OPEN_FOR_WRITING";
q->setError( ERR_CANNOT_OPEN_FOR_WRITING );
q->setErrorText( uDest.toLocalFile() );
q->emitResult();
return 0;
}
} else {
// Todo: not show "link" on remote dirs if the src urls are not from the same protocol+host+...
q->setError( ERR_CANNOT_SYMLINK );
q->setErrorText( uDest.prettyUrl() );
q->emitResult();
return 0;
}
}
}
void CopyJobPrivate::copyNextFile()
{
Q_Q(CopyJob);
bool bCopyFile = false;
//kDebug(7007);
// Take the first file in the list
QList<CopyInfo>::Iterator it = files.begin();
// Is this URL on the skip list ?
while (it != files.end() && !bCopyFile)
{
const QString destFile = (*it).uDest.path();
bCopyFile = !shouldSkip( destFile );
if ( !bCopyFile ) {
files.erase( it );
it = files.begin();
}
}
if (bCopyFile) // any file to create, finally ?
{
+ //kDebug()<<"preparing to copy"<<(*it).uSource<<(*it).size<<m_freeSpace;
+ if ( m_freeSpace != -1 )
+ {
+ if ( m_freeSpace < (*it).size )
+ {
+ q->setError( ERR_DISK_FULL );
+ q->emitResult();
+ return;
+ }
+ //TODO check if dst mount is msdos and (*it).size exceeds it's limits
+ }
+
const KUrl& uSource = (*it).uSource;
const KUrl& uDest = (*it).uDest;
// Do we set overwrite ?
bool bOverwrite;
const QString destFile = uDest.path();
// kDebug(7007) << "copying" << destFile;
if ( uDest == uSource )
bOverwrite = false;
else
bOverwrite = shouldOverwriteFile( destFile );
m_bCurrentOperationIsLink = false;
KIO::Job * newjob = 0;
if ( m_mode == CopyJob::Link ) {
// User requested that a symlink be made
const JobFlags flags = bOverwrite ? Overwrite : DefaultFlags;
newjob = linkNextFile(uSource, uDest, flags);
if (!newjob)
return;
} else if ( !(*it).linkDest.isEmpty() &&
(uSource.protocol() == uDest.protocol()) &&
(uSource.host() == uDest.host()) &&
(uSource.port() == uDest.port()) &&
(uSource.user() == uDest.user()) &&
(uSource.pass() == uDest.pass()))
// Copying a symlink - only on the same protocol/host/etc. (#5601, downloading an FTP file through its link),
{
const JobFlags flags = bOverwrite ? Overwrite : DefaultFlags;
KIO::SimpleJob *newJob = KIO::symlink( (*it).linkDest, uDest, flags | HideProgressInfo /*no GUI*/ );
Scheduler::setJobPriority(newJob, 1);
newjob = newJob;
//kDebug(7007) << "Linking target=" << (*it).linkDest << "link=" << uDest;
m_currentSrcURL = KUrl( (*it).linkDest );
m_currentDestURL = uDest;
m_bURLDirty = true;
//emit linking( this, (*it).linkDest, uDest );
//Observer::self()->slotCopying( this, m_currentSrcURL, uDest ); // should be slotLinking perhaps
m_bCurrentOperationIsLink = true;
// NOTE: if we are moving stuff, the deletion of the source will be done in slotResultCopyingFiles
} else if (m_mode == CopyJob::Move) // Moving a file
{
JobFlags flags = bOverwrite ? Overwrite : DefaultFlags;
KIO::FileCopyJob * moveJob = KIO::file_move( uSource, uDest, (*it).permissions, flags | HideProgressInfo/*no GUI*/ );
moveJob->setSourceSize( (*it).size );
if ((*it).mtime != -1) {
moveJob->setModificationTime( QDateTime::fromTime_t( (*it).mtime ) ); // #55804
}
newjob = moveJob;
//kDebug(7007) << "Moving" << uSource << "to" << uDest;
//emit moving( this, uSource, uDest );
m_currentSrcURL=uSource;
m_currentDestURL=uDest;
m_bURLDirty = true;
//Observer::self()->slotMoving( this, uSource, uDest );
}
else // Copying a file
{
// If source isn't local and target is local, we ignore the original permissions
// Otherwise, files downloaded from HTTP end up with -r--r--r--
bool remoteSource = !KProtocolManager::supportsListing(uSource);
int permissions = (*it).permissions;
if ( m_defaultPermissions || ( remoteSource && uDest.isLocalFile() ) )
permissions = -1;
JobFlags flags = bOverwrite ? Overwrite : DefaultFlags;
KIO::FileCopyJob * copyJob = KIO::file_copy( uSource, uDest, permissions, flags | HideProgressInfo/*no GUI*/ );
copyJob->setParentJob( q ); // in case of rename dialog
copyJob->setSourceSize( (*it).size );
if ((*it).mtime != -1) {
copyJob->setModificationTime( QDateTime::fromTime_t( (*it).mtime ) );
}
newjob = copyJob;
//kDebug(7007) << "Copying" << uSource << "to" << uDest;
m_currentSrcURL=uSource;
m_currentDestURL=uDest;
m_bURLDirty = true;
}
q->addSubjob(newjob);
q->connect( newjob, SIGNAL( processedSize( KJob*, qulonglong ) ),
SLOT( slotProcessedSize( KJob*, qulonglong ) ) );
q->connect( newjob, SIGNAL( totalSize( KJob*, qulonglong ) ),
SLOT( slotTotalSize( KJob*, qulonglong ) ) );
}
else
{
// We're done
//kDebug(7007) << "copyNextFile finished";
deleteNextDir();
}
}
void CopyJobPrivate::deleteNextDir()
{
Q_Q(CopyJob);
if ( m_mode == CopyJob::Move && !dirsToRemove.isEmpty() ) // some dirs to delete ?
{
state = STATE_DELETING_DIRS;
m_bURLDirty = true;
// Take first dir to delete out of list - last ones first !
KUrl::List::Iterator it = --dirsToRemove.end();
SimpleJob *job = KIO::rmdir( *it );
Scheduler::setJobPriority(job, 1);
dirsToRemove.erase(it);
q->addSubjob( job );
}
else
{
// This step is done, move on
state = STATE_SETTING_DIR_ATTRIBUTES;
m_directoriesCopiedIterator = m_directoriesCopied.constBegin();
setNextDirAttribute();
}
}
void CopyJobPrivate::setNextDirAttribute()
{
Q_Q(CopyJob);
while (m_directoriesCopiedIterator != m_directoriesCopied.constEnd() &&
(*m_directoriesCopiedIterator).mtime == -1) {
++m_directoriesCopiedIterator;
}
if ( m_directoriesCopiedIterator != m_directoriesCopied.constEnd() ) {
const KUrl url = (*m_directoriesCopiedIterator).uDest;
const time_t mtime = (*m_directoriesCopiedIterator).mtime;
const QDateTime dt = QDateTime::fromTime_t(mtime);
++m_directoriesCopiedIterator;
KIO::SimpleJob *job = KIO::setModificationTime( url, dt );
Scheduler::setJobPriority(job, 1);
q->addSubjob( job );
#if 0 // ifdef Q_OS_UNIX
// TODO: can be removed now. Or reintroduced as a fast path for local files
// if launching even more jobs as done above is a performance problem.
//
QLinkedList<CopyInfo>::const_iterator it = m_directoriesCopied.constBegin();
for ( ; it != m_directoriesCopied.constEnd() ; ++it ) {
const KUrl& url = (*it).uDest;
if ( url.isLocalFile() && (*it).mtime != (time_t)-1 ) {
KDE_struct_stat statbuf;
if (KDE::lstat(url.path(), &statbuf) == 0) {
struct utimbuf utbuf;
utbuf.actime = statbuf.st_atime; // access time, unchanged
utbuf.modtime = (*it).mtime; // modification time
utime( path, &utbuf );
}
}
}
m_directoriesCopied.clear();
// but then we need to jump to the else part below. Maybe with a recursive call?
#endif
} else {
if (m_reportTimer)
m_reportTimer->stop();
--m_processedFiles; // undo the "start at 1" hack
slotReport(); // display final numbers, important if progress dialog stays up
q->emitResult();
}
}
void CopyJob::emitResult()
{
Q_D(CopyJob);
// Before we go, tell the world about the changes that were made.
// Even if some error made us abort midway, we might still have done
// part of the job so we better update the views! (#118583)
if (!d->m_bOnlyRenames) {
KUrl url(d->m_globalDest);
if (d->m_globalDestinationState != DEST_IS_DIR || d->m_asMethod)
url.setPath(url.directory());
//kDebug(7007) << "KDirNotify'ing FilesAdded" << url;
org::kde::KDirNotify::emitFilesAdded( url.url() );
if (d->m_mode == CopyJob::Move && !d->m_successSrcList.isEmpty()) {
kDebug(7007) << "KDirNotify'ing FilesRemoved" << d->m_successSrcList.toStringList();
org::kde::KDirNotify::emitFilesRemoved(d->m_successSrcList.toStringList());
}
// Re-enable watching on the dirs that held the deleted files
if (d->m_mode == CopyJob::Move) {
for (QSet<QString>::const_iterator it = d->m_parentDirs.constBegin() ; it != d->m_parentDirs.constEnd() ; ++it)
KDirWatch::self()->restartDirScan( *it );
}
}
Job::emitResult();
}
void CopyJobPrivate::slotProcessedSize( KJob*, qulonglong data_size )
{
Q_Q(CopyJob);
//kDebug(7007) << data_size;
m_fileProcessedSize = data_size;
q->setProcessedAmount(KJob::Bytes, m_processedSize + m_fileProcessedSize);
if ( m_processedSize + m_fileProcessedSize > m_totalSize )
{
// Example: download any attachment from bugs.kde.org
m_totalSize = m_processedSize + m_fileProcessedSize;
//kDebug(7007) << "Adjusting m_totalSize to" << m_totalSize;
q->setTotalAmount(KJob::Bytes, m_totalSize); // safety
}
//kDebug(7007) << "emit processedSize" << (unsigned long) (m_processedSize + m_fileProcessedSize);
q->setProcessedAmount(KJob::Bytes, m_processedSize + m_fileProcessedSize);
}
void CopyJobPrivate::slotTotalSize( KJob*, qulonglong size )
{
Q_Q(CopyJob);
//kDebug(7007) << size;
// Special case for copying a single file
// This is because some protocols don't implement stat properly
// (e.g. HTTP), and don't give us a size in some cases (redirection)
// so we'd rather rely on the size given for the transfer
if ( m_bSingleFileCopy && size != m_totalSize)
{
//kDebug(7007) << "slotTotalSize: updating totalsize to" << size;
m_totalSize = size;
q->setTotalAmount(KJob::Bytes, size);
}
}
void CopyJobPrivate::slotResultDeletingDirs( KJob * job )
{
Q_Q(CopyJob);
if (job->error()) {
// Couldn't remove directory. Well, perhaps it's not empty
// because the user pressed Skip for a given file in it.
// Let's not display "Could not remove dir ..." for each of those dir !
} else {
m_successSrcList.append(static_cast<KIO::SimpleJob*>(job)->url());
}
q->removeSubjob( job );
assert( !q->hasSubjobs() );
deleteNextDir();
}
void CopyJobPrivate::slotResultSettingDirAttributes( KJob * job )
{
Q_Q(CopyJob);
if (job->error())
{
// Couldn't set directory attributes. Ignore the error, it can happen
// with inferior file systems like VFAT.
// Let's not display warnings for each dir like "cp -a" does.
}
q->removeSubjob( job );
assert( !q->hasSubjobs() );
setNextDirAttribute();
}
// We were trying to do a direct renaming, before even stat'ing
void CopyJobPrivate::slotResultRenaming( KJob* job )
{
Q_Q(CopyJob);
int err = job->error();
const QString errText = job->errorText();
// Merge metadata from subjob
KIO::Job* kiojob = dynamic_cast<KIO::Job*>(job);
Q_ASSERT(kiojob);
m_incomingMetaData += kiojob->metaData();
q->removeSubjob( job );
assert ( !q->hasSubjobs() );
// Determine dest again
KUrl dest = m_dest;
if ( destinationState == DEST_IS_DIR && !m_asMethod )
dest.addPath( m_currentSrcURL.fileName() );
if ( err )
{
// Direct renaming didn't work. Try renaming to a temp name,
// this can help e.g. when renaming 'a' to 'A' on a VFAT partition.
// In that case it's the _same_ dir, we don't want to copy+del (data loss!)
if ( m_currentSrcURL.isLocalFile() && m_currentSrcURL.url(KUrl::RemoveTrailingSlash) != dest.url(KUrl::RemoveTrailingSlash) &&
m_currentSrcURL.url(KUrl::RemoveTrailingSlash).toLower() == dest.url(KUrl::RemoveTrailingSlash).toLower() &&
( err == ERR_FILE_ALREADY_EXIST ||
err == ERR_DIR_ALREADY_EXIST ||
err == ERR_IDENTICAL_FILES ) )
{
kDebug(7007) << "Couldn't rename directly, dest already exists. Detected special case of lower/uppercase renaming in same dir, try with 2 rename calls";
const QString _src( m_currentSrcURL.toLocalFile() );
const QString _dest( dest.toLocalFile() );
const QString _tmpPrefix = m_currentSrcURL.directory(KUrl::ObeyTrailingSlash|KUrl::AppendTrailingSlash);
KTemporaryFile tmpFile;
tmpFile.setPrefix(_tmpPrefix);
const bool openOk = tmpFile.open();
if (!openOk) {
kWarning(7007) << "Couldn't open temp file in" << _tmpPrefix;
} else {
const QString _tmp( tmpFile.fileName() );
tmpFile.close();
tmpFile.remove();
kDebug(7007) << "KTemporaryFile using" << _tmp << "as intermediary";
if (KDE::rename( _src, _tmp ) == 0) {
//kDebug(7007) << "Renaming" << _src << "to" << _tmp << "succeeded";
if (!QFile::exists( _dest ) && KDE::rename(_tmp, _dest) == 0) {
err = 0;
org::kde::KDirNotify::emitFileRenamed(m_currentSrcURL.url(), dest.url());
} else {
kDebug(7007) << "Didn't manage to rename" << _tmp << "to" << _dest << ", reverting";
// Revert back to original name!
if (KDE::rename( _tmp, _src ) != 0) {
kError(7007) << "Couldn't rename" << _tmp << "back to" << _src << '!';
// Severe error, abort
q->Job::slotResult(job); // will set the error and emit result(this)
return;
}
}
} else {
kDebug(7007) << "mv" << _src << _tmp << "failed:" << strerror(errno);
}
}
}
}
if ( err )
{
// This code is similar to CopyJobPrivate::slotResultConflictCopyingFiles
// but here it's about the base src url being moved/renamed
// (m_currentSrcURL) and its dest (m_dest), not about a single file.
// It also means we already stated the dest, here.
// On the other hand we haven't stated the src yet (we skipped doing it
// to save time, since it's not necessary to rename directly!)...
// Existing dest?
if ( err == ERR_DIR_ALREADY_EXIST ||
err == ERR_FILE_ALREADY_EXIST ||
err == ERR_IDENTICAL_FILES )
{
// Should we skip automatically ?
bool isDir = (err == ERR_DIR_ALREADY_EXIST); // ## technically, isDir means "source is dir", not "dest is dir" #######
if ((isDir && m_bAutoSkipDirs) || (!isDir && m_bAutoSkipFiles)) {
// Move on to next source url
skipSrc(isDir);
return;
} else if ((isDir && m_bOverwriteAllDirs) || (!isDir && m_bOverwriteAllFiles)) {
; // nothing to do, stat+copy+del will overwrite
} else if ((isDir && m_bAutoRenameDirs) || (!isDir && m_bAutoRenameFiles)) {
KUrl destDirectory(m_currentDestURL); // dest including filename
destDirectory.setPath(destDirectory.directory());
const QString newName = KIO::RenameDialog::suggestName(destDirectory, m_currentDestURL.fileName());
m_dest.setPath(m_currentDestURL.path());
m_dest.setFileName(newName);
KIO::Job* job = KIO::stat(m_dest, StatJob::DestinationSide, 2, KIO::HideProgressInfo);
state = STATE_STATING;
destinationState = DEST_NOT_STATED;
q->addSubjob(job);
return;
} else if ( q->isInteractive() ) {
QString newPath;
// we lack mtime info for both the src (not stated)
// and the dest (stated but this info wasn't stored)
// Let's do it for local files, at least
KIO::filesize_t sizeSrc = (KIO::filesize_t) -1;
KIO::filesize_t sizeDest = (KIO::filesize_t) -1;
time_t ctimeSrc = (time_t) -1;
time_t ctimeDest = (time_t) -1;
time_t mtimeSrc = (time_t) -1;
time_t mtimeDest = (time_t) -1;
bool destIsDir = err == ERR_DIR_ALREADY_EXIST;
// ## TODO we need to stat the source using KIO::stat
// so that this code is properly network-transparent.
KDE_struct_stat stat_buf;
if ( m_currentSrcURL.isLocalFile() &&
KDE::stat(m_currentSrcURL.toLocalFile(), &stat_buf) == 0 ) {
sizeSrc = stat_buf.st_size;
ctimeSrc = stat_buf.st_ctime;
mtimeSrc = stat_buf.st_mtime;
isDir = S_ISDIR(stat_buf.st_mode);
}
if ( dest.isLocalFile() &&
KDE::stat(dest.toLocalFile(), &stat_buf) == 0 ) {
sizeDest = stat_buf.st_size;
ctimeDest = stat_buf.st_ctime;
mtimeDest = stat_buf.st_mtime;
destIsDir = S_ISDIR(stat_buf.st_mode);
}
// If src==dest, use "overwrite-itself"
RenameDialog_Mode mode = ( m_currentSrcURL == dest ) ? M_OVERWRITE_ITSELF : M_OVERWRITE;
if (!isDir && destIsDir) {
// We can't overwrite a dir with a file.
mode = (RenameDialog_Mode) 0;
}
if ( m_srcList.count() > 1 )
mode = (RenameDialog_Mode) ( mode | M_MULTI | M_SKIP );
if (destIsDir)
mode = (RenameDialog_Mode) ( mode | M_ISDIR );
if (m_reportTimer)
m_reportTimer->stop();
RenameDialog_Result r = q->ui()->askFileRename(
q,
err != ERR_DIR_ALREADY_EXIST ? i18n("File Already Exists") : i18n("Already Exists as Folder"),
m_currentSrcURL.url(),
dest.url(),
mode, newPath,
sizeSrc, sizeDest,
ctimeSrc, ctimeDest,
mtimeSrc, mtimeDest );
if (m_reportTimer)
m_reportTimer->start(REPORT_TIMEOUT);
switch ( r )
{
case R_CANCEL:
{
q->setError( ERR_USER_CANCELED );
q->emitResult();
return;
}
case R_AUTO_RENAME:
if (isDir) {
m_bAutoRenameDirs = true;
}
else {
m_bAutoRenameFiles = true;
}
// fall through
case R_RENAME:
{
// Set m_dest to the chosen destination
// This is only for this src url; the next one will revert to m_globalDest
m_dest.setPath( newPath );
KIO::Job* job = KIO::stat( m_dest, StatJob::DestinationSide, 2, KIO::HideProgressInfo );
state = STATE_STATING;
destinationState = DEST_NOT_STATED;
q->addSubjob(job);
return;
}
case R_AUTO_SKIP:
if (isDir)
m_bAutoSkipDirs = true;
else
m_bAutoSkipFiles = true;
// fall through
case R_SKIP:
// Move on to next url
skipSrc(isDir);
return;
case R_OVERWRITE_ALL:
if (destIsDir)
m_bOverwriteAllDirs = true;
else
m_bOverwriteAllFiles = true;
break;
case R_OVERWRITE:
// Add to overwrite list
// Note that we add dest, not m_dest.
// This ensures that when moving several urls into a dir (m_dest),
// we only overwrite for the current one, not for all.
// When renaming a single file (m_asMethod), it makes no difference.
kDebug(7007) << "adding to overwrite list: " << dest.path();
- m_overwriteList.append( dest.path() );
+ m_overwriteList.insert( dest.path() );
break;
default:
//assert( 0 );
break;
}
} else if ( err != KIO::ERR_UNSUPPORTED_ACTION ) {
// Dest already exists, and job is not interactive -> abort with error
q->setError( err );
q->setErrorText( errText );
q->emitResult();
return;
}
} else if ( err != KIO::ERR_UNSUPPORTED_ACTION ) {
kDebug(7007) << "Couldn't rename" << m_currentSrcURL << "to" << dest << ", aborting";
q->setError( err );
q->setErrorText( errText );
q->emitResult();
return;
}
kDebug(7007) << "Couldn't rename" << m_currentSrcURL << "to" << dest << ", reverting to normal way, starting with stat";
//kDebug(7007) << "KIO::stat on" << m_currentSrcURL;
KIO::Job* job = KIO::stat( m_currentSrcURL, StatJob::SourceSide, 2, KIO::HideProgressInfo );
state = STATE_STATING;
q->addSubjob(job);
m_bOnlyRenames = false;
}
else
{
kDebug(7007) << "Renaming succeeded, move on";
++m_processedFiles;
emit q->copyingDone( q, *m_currentStatSrc, dest, -1 /*mtime unknown, and not needed*/, true, true );
m_successSrcList.append(*m_currentStatSrc);
statNextSrc();
}
}
void CopyJob::slotResult( KJob *job )
{
Q_D(CopyJob);
//kDebug(7007) << "d->state=" << (int) d->state;
// In each case, what we have to do is :
// 1 - check for errors and treat them
// 2 - removeSubjob(job);
// 3 - decide what to do next
switch ( d->state ) {
case STATE_STATING: // We were trying to stat a src url or the dest
d->slotResultStating( job );
break;
case STATE_RENAMING: // We were trying to do a direct renaming, before even stat'ing
{
d->slotResultRenaming( job );
break;
}
case STATE_LISTING: // recursive listing finished
//kDebug(7007) << "totalSize:" << (unsigned int) d->m_totalSize << "files:" << d->files.count() << "d->dirs:" << d->dirs.count();
// Was there an error ?
if (job->error())
{
Job::slotResult( job ); // will set the error and emit result(this)
return;
}
removeSubjob( job );
assert ( !hasSubjobs() );
d->statNextSrc();
break;
case STATE_CREATING_DIRS:
d->slotResultCreatingDirs( job );
break;
case STATE_CONFLICT_CREATING_DIRS:
d->slotResultConflictCreatingDirs( job );
break;
case STATE_COPYING_FILES:
d->slotResultCopyingFiles( job );
break;
case STATE_CONFLICT_COPYING_FILES:
d->slotResultConflictCopyingFiles( job );
break;
case STATE_DELETING_DIRS:
d->slotResultDeletingDirs( job );
break;
case STATE_SETTING_DIR_ATTRIBUTES:
d->slotResultSettingDirAttributes( job );
break;
default:
assert( 0 );
}
}
void KIO::CopyJob::setDefaultPermissions( bool b )
{
d_func()->m_defaultPermissions = b;
}
KIO::CopyJob::CopyMode KIO::CopyJob::operationMode() const
{
return d_func()->m_mode;
}
void KIO::CopyJob::setAutoSkip(bool autoSkip)
{
d_func()->m_bAutoSkipFiles = autoSkip;
d_func()->m_bAutoSkipDirs = autoSkip;
}
void KIO::CopyJob::setAutoRename(bool autoRename)
{
d_func()->m_bAutoRenameFiles = autoRename;
d_func()->m_bAutoRenameDirs = autoRename;
}
void KIO::CopyJob::setWriteIntoExistingDirectories(bool overwriteAll) // #65926
{
d_func()->m_bOverwriteAllDirs = overwriteAll;
}
CopyJob *KIO::copy(const KUrl& src, const KUrl& dest, JobFlags flags)
{
//kDebug(7007) << "src=" << src << "dest=" << dest;
KUrl::List srcList;
srcList.append( src );
return CopyJobPrivate::newJob(srcList, dest, CopyJob::Copy, false, flags);
}
CopyJob *KIO::copyAs(const KUrl& src, const KUrl& dest, JobFlags flags)
{
//kDebug(7007) << "src=" << src << "dest=" << dest;
KUrl::List srcList;
srcList.append( src );
return CopyJobPrivate::newJob(srcList, dest, CopyJob::Copy, true, flags);
}
CopyJob *KIO::copy( const KUrl::List& src, const KUrl& dest, JobFlags flags )
{
//kDebug(7007) << src << dest;
return CopyJobPrivate::newJob(src, dest, CopyJob::Copy, false, flags);
}
CopyJob *KIO::move(const KUrl& src, const KUrl& dest, JobFlags flags)
{
//kDebug(7007) << src << dest;
KUrl::List srcList;
srcList.append( src );
return CopyJobPrivate::newJob(srcList, dest, CopyJob::Move, false, flags);
}
CopyJob *KIO::moveAs(const KUrl& src, const KUrl& dest, JobFlags flags)
{
//kDebug(7007) << src << dest;
KUrl::List srcList;
srcList.append( src );
return CopyJobPrivate::newJob(srcList, dest, CopyJob::Move, true, flags);
}
CopyJob *KIO::move( const KUrl::List& src, const KUrl& dest, JobFlags flags)
{
//kDebug(7007) << src << dest;
return CopyJobPrivate::newJob(src, dest, CopyJob::Move, false, flags);
}
CopyJob *KIO::link(const KUrl& src, const KUrl& destDir, JobFlags flags)
{
KUrl::List srcList;
srcList.append( src );
return CopyJobPrivate::newJob(srcList, destDir, CopyJob::Link, false, flags);
}
CopyJob *KIO::link(const KUrl::List& srcList, const KUrl& destDir, JobFlags flags)
{
return CopyJobPrivate::newJob(srcList, destDir, CopyJob::Link, false, flags);
}
CopyJob *KIO::linkAs(const KUrl& src, const KUrl& destDir, JobFlags flags )
{
KUrl::List srcList;
srcList.append( src );
return CopyJobPrivate::newJob(srcList, destDir, CopyJob::Link, false, flags);
}
CopyJob *KIO::trash(const KUrl& src, JobFlags flags)
{
KUrl::List srcList;
srcList.append( src );
return CopyJobPrivate::newJob(srcList, KUrl( "trash:/" ), CopyJob::Move, false, flags);
}
CopyJob *KIO::trash(const KUrl::List& srcList, JobFlags flags)
{
return CopyJobPrivate::newJob(srcList, KUrl( "trash:/" ), CopyJob::Move, false, flags);
}
#include "copyjob.moc"
diff --git a/kio/kio/kfileitemactionplugin.desktop b/kio/kio/kfileitemactionplugin.desktop
index a0a8aff6c9..ffc9436393 100644
--- a/kio/kio/kfileitemactionplugin.desktop
+++ b/kio/kio/kfileitemactionplugin.desktop
@@ -1,52 +1,53 @@
[Desktop Entry]
Type=ServiceType
X-KDE-ServiceType=KFileItemAction/Plugin
Comment=Plugin for the KIO file item context menu
Comment[bg]=Приставка за контекстно файлово меню
Comment[bs]=Dodatak za kontekstni meni KIO datotečni objekt
Comment[ca]=Connector per a l'element KIO de fitxers del menú contextual
Comment[ca@valencia]=Connector per a l'element KIO de fitxers del menú contextual
Comment[cs]=Zásuvný modul pro kontextové menu položek KIO file
Comment[da]=Plugin til kontekstmenuen for KIO-filelementer
Comment[de]=Erweiterung für das Kontextmenü eines KIO-Datei-Elements
Comment[el]=Πρόσθετο για το αρχείο KIO αντικείμενο του σχετικού μενού
Comment[en_GB]=Plugin for the KIO file item context menu
Comment[es]=Complemento para el menú de contexto de elementos de archivo KIO
Comment[et]=KIO-failielemendi kontekstimenüü plugin
Comment[eu]=KIO fitxategi elementuen testuinguru menuarentzako plugina
Comment[fi]=KIO-tiedostotietueen kontekstivalikkoliitännäinen
Comment[fr]=Module pour les éléments du menu contextuel KIO
Comment[gl]=Engadido para o menú de contexto do elemento ficheiro de KIO
Comment[hr]=Priključak za kontekstni izbornik KIO datoteke
Comment[hu]=Bővítmény a KIO fájlelem helyi menühöz
Comment[ia]=Plugin pro le menu de contexto de elemento de file de KIO
Comment[is]=Íforrit fyrir samhengisvalmynd KIO-skjalhluta
Comment[it]=Estensione per l'elemento file KIO del menu contestuale
Comment[kk]=KIO файл контекст мәзірінің плагині
Comment[km]=កម្មវិធី​ជំនួយ​សម្រាប់​​ម៉ឺនុយ​បរិបទ​ធាតុ​​ឯកសារ KIO
Comment[ko]=KIO 파일 항목 컨텍스트 메뉴 플러그인
Comment[lv]=KIO failu vienuma konteksta izvēlens spraudnis
Comment[nb]=Programtillegg for KIO filelements kontekstmeny
Comment[nds]=Moduul för dat Dateiindrag-Rechtsklickmenü vun KDE sien In-/Utgaavmoduul
Comment[nl]=Plugin voor het contextmenu van het KIO-bestandsitem
Comment[pa]=KIO ਫਾਇਲ ਆਈਟਮ ਸਮੱਗਰੀ ਮੇਨੂ ਲਈ ਪਲੱਗਇਨ
Comment[pl]=Wtyczka do menu kontekstowego elementu pliku KIO
Comment[pt]='Plugin' para o menu de contexto do item de ficheiros do KIO
Comment[pt_BR]=Plug-in para o menu de contexto do item de arquivos do KIO
Comment[ro]=Modul pentru meniul contextual al fișierelor KIO
Comment[ru]=Расширение контекстного меню файла KIO
Comment[se]=Lassemodula KIO-fiilamerkoša konteakstafállui
Comment[sk]=Modul pre položku kontextového menu pre KIO súbor
Comment[sr]=Прикључак за К‑У/И радњу над фајловима у контекстном менију
Comment[sr@ijekavian]=Прикључак за К‑У/И радњу над фајловима у контекстном менију
Comment[sr@ijekavianlatin]=Priključak za K‑U/I radnju nad fajlovima u kontekstnom meniju
Comment[sr@latin]=Priključak za K‑U/I radnju nad fajlovima u kontekstnom meniju
Comment[sv]=Insticksprogram för KIO-filobjektets sammanhangsberoende meny
Comment[th]=ส่วนเสริม KIO สำหรับเมนูเมื่อคลิกขวาบนแฟ้ม
Comment[tr]=KIO dosya ögesi sağlık menüsü için eklenti
Comment[ug]=KIO ھۆججەت تۈرىنىڭ تىل مۇھىت قىستۇرمىسى
Comment[uk]=Додаток пункту контекстного меню KIO
+Comment[vi]=Phần bổ sung cho trình đơn ngữ cảnh mục tập tin KIO
Comment[wa]=Tchôke-divins pol KIO dressêye di contecse do cayet d' fitchî
Comment[x-test]=xxPlugin for the KIO file item context menuxx
Comment[zh_CN]=KIO 文件项的上下文菜单插件
Comment[zh_TW]=KIO 檔案項目內文選單的外掛程式
diff --git a/kio/kio/kfilewrite.desktop b/kio/kio/kfilewrite.desktop
index aad114e0df..96cd1b1e1b 100644
--- a/kio/kio/kfilewrite.desktop
+++ b/kio/kio/kfilewrite.desktop
@@ -1,94 +1,94 @@
[Desktop Entry]
Type=ServiceType
X-KDE-ServiceType=KFileWrite
Comment=KFileWrite plugin
Comment[af]=KFileWrite inpropmodule
Comment[ar]=ملحق KFileWrite
Comment[as]=KFileWrite প্লাগ-ইন
Comment[ast]=Complementu KFileWrite
Comment[be@latin]=Plugin dla KFileWrite
Comment[bg]=Приставка за KFileWrite
Comment[bn]=KFileWrite প্লাগ-ইন
Comment[bn_IN]=KFileWrite প্লাগ-ইন
Comment[bs]=Priključak za zapis datoteka (KFile)
Comment[ca]=Connector del KFileWrite
Comment[ca@valencia]=Connector del KFileWrite
Comment[cs]=Modul KFileWrite
Comment[csb]=Wtëkôcz KFileWrite
Comment[da]=KFileWrite-plugin
Comment[de]=KFileWrite-Modul
Comment[el]=Πρόσθετο KFileWrite
Comment[en_GB]=KFileWrite plugin
Comment[eo]=KFileWrite-kromprogramo
Comment[es]=Complemento KFileWrite
Comment[et]=KFileWrite'i plugin
Comment[eu]=KFileWrite plugin-a
Comment[fa]=وصله KFileWrite
Comment[fi]=KFileWrite-liitännäinen
Comment[fr]=Module externe KFileWrite
Comment[fy]=KFileWrite plugin
Comment[ga]=Breiseán KFileWrite
Comment[gl]=Engadido KFileWrite
Comment[gu]=KFileWrite પ્લગઈન
Comment[he]=תוסף KFileWrite
Comment[hi]=के-फ़ाइल-राइट प्लगइन
Comment[hne]=के-फाइल-राइट प्लगइन
Comment[hr]=KFileWrite priključak
Comment[hsb]=KFileWrite-zašćěpka
Comment[hu]=KFileWrite modul
Comment[ia]=Plugin de KFileWrite
Comment[id]=Plugin KFileWrite
Comment[is]=KFileWrite íforrit
Comment[it]=Plugin KFileWrite
Comment[ja]=KFileWrite プラグイン
Comment[kk]=KFileWrite плагині
Comment[km]=កម្មវិធី​ជំនួយ KFileWrite
Comment[kn]=ಕೆಫೈಲ್ರೈಟ್ ಮಿಳಿತಾನ್ವಯ (ಪ್ಲಗಿನ್)
Comment[ko]=KFileWrite 플러그인
Comment[ku]=Pêveka KPelBinivîse
Comment[lt]=KFileWrite priedas
Comment[lv]=KFileWrite spraudnis
Comment[mai]=के-फाइल-राइट प्लगइन
Comment[mk]=Приклучок за KFileWrite
Comment[ml]=കെഫയല്‍റൈറ്റ് സംയോജകം
Comment[mr]=KFileWrite प्लगइन
Comment[nb]=KFileWrite-programtillegg
Comment[nds]=KFile-Schriefmoduul
Comment[ne]=केडीई फाइल राइट प्लगइन
Comment[nl]=KFileWrite-plugin
Comment[nn]=KFileWrite-tillegg
Comment[or]=KFileWrite ପ୍ଲଗଇନ
Comment[pa]=KFileWrite ਪਲੱਗਇਨ
Comment[pl]=Wtyczka do obsługi danych KFileWrite
Comment[ps]=لګون KFileWrite
Comment[pt]='Plugin' do KFileWrite
Comment[pt_BR]=Plug-in do KFileWrite
Comment[ro]=Modul KFileWrite
Comment[ru]=Расширение KFileWrite
Comment[se]=KFileWrite-lassemodula
Comment[si]=KFileWrite ප්ලගීනය
Comment[sk]=Modul KFileWrite
Comment[sl]=Vstavek KFileWrite
Comment[sq]=KFileWrite plugin
Comment[sr]=Прикључак за запис фајлова (к‑фајл)
Comment[sr@ijekavian]=Прикључак за запис фајлова (к‑фајл)
Comment[sr@ijekavianlatin]=Priključak za zapis fajlova (KFile)
Comment[sr@latin]=Priključak za zapis fajlova (KFile)
Comment[sv]=KFileWrite-insticksprogram
Comment[ta]=KFileWrite செருகி
Comment[te]=కెఫైల్ వ్రైట్ ప్లగిన్
Comment[tg]=Васлкунаки навишти KFile
Comment[th]=โปรแกรมเสริมสำหรับเขียน KFileWrite
Comment[tr]=KFileWrite Eklentisi
Comment[ug]=KFileWrite قىستۇرما
Comment[uk]=Додаток KFileWrite
-Comment[vi]=Bổ sung KFileWrite
+Comment[vi]=Phần bổ sung KFileWrite
Comment[wa]=Tchôke-divins sicrijhaedje di fitchîs
Comment[x-test]=xxKFileWrite pluginxx
Comment[zh_CN]=KFileWrite 插件
Comment[zh_TW]=KFileWrite 外掛程式
[PropertyDef::MetaDataKeys]
Type=QStringList
diff --git a/kio/kscan.desktop b/kio/kscan.desktop
index fca59107c8..126e44ff8e 100644
--- a/kio/kscan.desktop
+++ b/kio/kscan.desktop
@@ -1,98 +1,98 @@
[Desktop Entry]
Type=ServiceType
X-KDE-ServiceType=KScan/KScanDialog
Name=KScan
Name[af]=KScan
Name[ar]=KScan
Name[as]=KScan
Name[ast]=KScan
Name[be]=KScan
Name[be@latin]=KScan
Name[bg]=KScan
Name[bn]=কে-স্ক্যান
Name[bn_IN]=KScan
Name[br]=KScan
Name[bs]=KScan
Name[ca]=KScan
Name[ca@valencia]=KScan
Name[cs]=KScan
Name[csb]=KScan
Name[cy]=KSgan
Name[da]=KScan
Name[de]=KScan
Name[el]=KScan
Name[en_GB]=KScan
Name[eo]=Bildciferecigo
Name[es]=KScan
Name[et]=KScan
Name[eu]=KScan
Name[fa]=KScan
Name[fi]=KScan
Name[fr]=KScan
Name[fy]=KScan
Name[ga]=KScan
Name[gl]=KScan
Name[gu]=KScan
Name[he]=KScan
Name[hi]=के-स्कैन
Name[hne]=के-स्कैन
Name[hr]=KScan
Name[hsb]=KScan
Name[hu]=KScan
Name[ia]=Kscan
Name[id]=KScan
Name[is]=KScan myndlesari
Name[it]=KScan
Name[ja]=KScan
Name[kk]=KScan
Name[km]=KScan
Name[kn]=ಕೆಸ್ಕ್ಯಾನ್
Name[ko]=KScan
Name[ku]=KScan
Name[lb]=KScan
Name[lt]=KScan
Name[lv]=KScan
Name[mai]=के-स्कैन
Name[mk]=KScan
Name[ml]=കെസ്കാന്‍
Name[mr]=KScan
Name[ms]=KScan
Name[nb]=KScan
Name[nds]=KScan
Name[ne]=केडीई स्क्यान
Name[nl]=KScan
Name[nn]=KScan
Name[or]=KScan
Name[pa]=KScan
Name[pl]=Skan
Name[ps]=Kځېرل
Name[pt]=KScan
Name[pt_BR]=KScan
Name[ro]=KScan
Name[ru]=KScan
Name[se]=KScan
Name[si]=KScan
Name[sk]=KScan
Name[sl]=KScan
Name[sq]=KScan
Name[sr]=К‑скен
Name[sr@ijekavian]=К‑скен
Name[sr@ijekavianlatin]=KScan
Name[sr@latin]=KScan
Name[sv]=Kscan
Name[ta]=KScan
Name[te]=కేస్కేన్
Name[tg]=KScan
Name[th]=KScan
Name[tr]=KScan
Name[ug]=KScan
Name[uk]=KScan
Name[uz]=KScan
Name[uz@cyrillic]=KScan
Name[vi]=KScan
Name[wa]=KScan
-Name[x-test]=xxKScanxx
Name[xh]=KScan
+Name[x-test]=xxKScanxx
Name[zh_CN]=KScan
Name[zh_HK]=KScan
Name[zh_TW]=KScan
diff --git a/kio/kssl/kcm/kcm_ssl.desktop b/kio/kssl/kcm/kcm_ssl.desktop
index 0a5f0b846b..7199c87948 100644
--- a/kio/kssl/kcm/kcm_ssl.desktop
+++ b/kio/kssl/kcm/kcm_ssl.desktop
@@ -1,113 +1,136 @@
[Desktop Entry]
Exec=kcmshell4 kcm_ssl
Icon=preferences-system-ssl
Type=Service
X-KDE-ServiceTypes=KCModule
X-KDE-Library=kcm_ssl
X-KDE-ParentApp=kcontrol
X-KDE-System-Settings-Parent-Category=network-and-connectivity
Name=SSL Preferences
Name[bg]=Настройки на SSL
Name[bs]=SSL postavke
Name[ca]=Preferències SSL
Name[ca@valencia]=Preferències SSL
Name[cs]=Nastavení SSL
Name[da]=SSL-indstillinger
Name[de]=SSL-Einstellungen
Name[el]=Προτιμήσεις SSL
Name[en_GB]=SSL Preferences
Name[es]=Preferencias de SSL
Name[et]=SSL-i seadistused
Name[eu]=SSL hobespenak
Name[fi]=SSL:n asetukset
Name[fr]=Préférences SSL
Name[gl]=Preferencias de SSL
Name[hr]=Postavke SSL-a
Name[hu]=SSL-beállítások
Name[ia]=Preferentias de SSL
Name[is]=Stillingar SSL
Name[it]=Preferenze SSL
Name[ja]=SSL 設定
Name[kk]=SSL параметрлері
Name[km]=ចំណូល​ចិត្ត SSL
Name[ko]=SSL 설정
Name[lt]=SSL nustatymai
Name[lv]=SSL iestatījumi
Name[nb]=SSL-innstillinger
Name[nds]=SSL-Instellen
Name[nl]=SSL-voorkeuren
Name[pa]=SSL ਪਸੰਦ
Name[pl]=Ustawienia SSL
Name[pt]=Preferências do SSL
Name[pt_BR]=Preferências do SSL
Name[ro]=Preferințe SSL
Name[ru]=Настройка SSL
Name[se]=SSL-oidimat
Name[sk]=Nastavenie SSL
Name[sr]=Поставке ССЛ‑а
Name[sr@ijekavian]=Поставке ССЛ‑а
Name[sr@ijekavianlatin]=Postavke SSL‑a
Name[sr@latin]=Postavke SSL‑a
Name[sv]=SSL-inställningar
Name[th]=ปรับแต่ง SSL
Name[tr]=SSL Tercihleri
Name[ug]=SSL مايىللىق
Name[uk]=Параметри SSL
+Name[vi]=Tùy thích SSL
Name[wa]=Preferinces SSL
Name[x-test]=xxSSL Preferencesxx
Name[zh_CN]=SSL 首选项
Name[zh_TW]=SSL 喜好設定
Comment=SSL Versions and Certificates
Comment[bg]=Версии и сертификати на SSL
Comment[bs]=SSL verzije i certifikati
Comment[ca]=Versions i certificats SSL
Comment[ca@valencia]=Versions i certificats SSL
Comment[cs]=SSL verze a certifikáty
Comment[da]=SSL-versioner og -certifikater
Comment[de]=SSL-Versionen und -Zertifikate
Comment[el]=Εκδόσεις και πιστοποιητικά SSL
Comment[en_GB]=SSL Versions and Certificates
Comment[es]=Versiones y certificados SSL
Comment[et]=SSL-i versioonid ja sertifikaadid
Comment[eu]=SSL bertsioak eta ziurtagiriak
Comment[fi]=SSL:n versiot ja varmenteet
Comment[fr]=Certificats et versions SSL
Comment[gl]=Versións e certificados de SSL
Comment[hr]=Inačice i certifikati SSL-a
Comment[hu]=SSL-verziók és tanúsítványok
Comment[ia]=Versiones de SSL e Certificatos
Comment[is]=Útgáfur og skilríki SSL
Comment[it]=Versioni SSL e certificati
Comment[kk]=SSL нұсқалары мен куәліктері
Comment[km]=វិញ្ញាបនបត្រ និង​កំណែ​របស់ SSL
Comment[ko]=SSL 버전과 인증서
Comment[lt]=SSL versijos ir liudijimai
Comment[lv]=SSL versijas un sertifikāti
Comment[nb]=SSL-versjoner og sertifikater
Comment[nds]=SSL-Verschonen un Zertifikaten
Comment[nl]=SSL-versies en certificaten
Comment[pa]=SSL ਵਰਜਨ ਤੇ ਸਰਟੀਫਿਕੇਟ
Comment[pl]=Wersje SSL i certyfikaty
Comment[pt]=Versões e Certificados de SSL
Comment[pt_BR]=Versões e certificados de SSL
Comment[ro]=Certificate și versiuni SSL partener
Comment[ru]=Версии и сертификаты SSL
Comment[se]=SSL-veršuvnnat ja -duođaštusat
Comment[sk]=SSL verzie a certifikáty
Comment[sr]=Сертификати и верзије ССЛ‑а
Comment[sr@ijekavian]=Сертификати и верзије ССЛ‑а
Comment[sr@ijekavianlatin]=Sertifikati i verzije SSL‑a
Comment[sr@latin]=Sertifikati i verzije SSL‑a
Comment[sv]=SSL-versioner och -certifikat
Comment[th]=รุ่นของ SSL และใบรับรอง
Comment[tr]=SSL Sürümleri ve Sertifikaları
Comment[ug]=SSL نەشر ۋە گۇۋاھنامە
Comment[uk]=Версія і сертифікати SSL
+Comment[vi]=Các phiên bản và chứng chỉ SSL
Comment[wa]=Modêyes eyet acertineures SSL
Comment[x-test]=xxSSL Versions and Certificatesxx
Comment[zh_CN]=SSL 版本和证书
Comment[zh_TW]=SSL 版本與憑證
X-KDE-Keywords=SSL,Security,Network,Protocol,Certificates,Encryption,HTTPS
+X-KDE-Keywords[bg]=SSL,Security,Network,Protocol,Certificates,Encryption,HTTPS,Сигурност,Мрежа,Протокол,Удостоверение,Сертификат,Шифриране
+X-KDE-Keywords[ca]=SSL,Seguretat,Xarxa,Protocol,Certificats,Encriptatge,HTTPS
+X-KDE-Keywords[es]=SSL,Seguridad,Red,Protocolo,Certificados,Cifrado,HTTPS
+X-KDE-Keywords[et]=SSL,turvalisus,võrk,protokoll,sertifikaadid,serdid,krüptimine,krüpto,HTTPS
+X-KDE-Keywords[gl]=SSL,Seguridade,Rede,Protocolo,Certificados,Cifrado,HTTPS
+X-KDE-Keywords[hu]=SSL,Biztonság,Hálózat,Protokoll,Tanúsítványok,Titkosítás,HTTPS
+X-KDE-Keywords[ia]=SSL,Securitate,Rete,Protocollo,Certificatos,Cryptation,HTTPS
+X-KDE-Keywords[kk]=SSL,Security,Network,Protocol,Certificates,Encryption,HTTPS
+X-KDE-Keywords[km]=SSL,មូលប័ត្រ​,​បណ្ដាញ​,​ពិធីការ​,វិញ្ញាបនបត្រ,​ការ​អ៊ិនគ្រីប​​,HTTPS
+X-KDE-Keywords[nb]=SSL,Sikkerhet,Nettverk,Protokoll,Sertifikater,Kryptering,HTTPS
+X-KDE-Keywords[nds]=SSL,Sekerheit,Nettwark,Protokoll,Zertifikaten,Verslöteln,HTTPS
+X-KDE-Keywords[nl]=SSL,beveiliging,netwerk,protocol,certificaten,versleuteling,HTTPS
+X-KDE-Keywords[pa]=SSL,ਸੁਰੱਖਿਆ,ਨੈੱਟਵਰਕ,ਪ੍ਰੋਟੋਕਾਲ,ਸਰਟੀਫਿਕੇਟ,ਇੰਕ੍ਰਿਪਸ਼ਨ,HTTPS
+X-KDE-Keywords[pt]=SSL,Segurança,Rede,Protocolo,Certificados,Encriptação,HTTPS
+X-KDE-Keywords[pt_BR]=SSL,segurança,rede,protocolo,certificados,criptografia,HTTPS
+X-KDE-Keywords[ro]=SSL,Securitate,Rețea,Protocol,Certificate,Criptare,HTTPS
+X-KDE-Keywords[sv]=SSL,Säkerhet,Nätverk,Protokoll,Certifikat,Kryptering,HTTPS
+X-KDE-Keywords[uk]=SSL,Security,Network,Protocol,Certificates,Encryption,HTTPS,захист,мережа,протокол,сертифікат,сертифікати,шифрування,криптографія
+X-KDE-Keywords[vi]=SSL,Bảo mật,Mạng,Giao thức,Chứng thực,Mã hóa,HTTPS,Security,Network,Protocol,Certificates,Encryption
+X-KDE-Keywords[x-test]=xxSSL,Security,Network,Protocol,Certificates,Encryption,HTTPSxx
+X-KDE-Keywords[zh_TW]=SSL,Security,Network,Protocol,Certificates,Encryption,HTTPS
diff --git a/kio/kurifilterplugin.desktop b/kio/kurifilterplugin.desktop
index 3917e9c752..47b3a99910 100644
--- a/kio/kurifilterplugin.desktop
+++ b/kio/kurifilterplugin.desktop
@@ -1,97 +1,97 @@
[Desktop Entry]
Type=ServiceType
X-KDE-ServiceType=KUriFilter/Plugin
Name=Enhanced Browsing Plugin
Name[af]=Verbeterde Blaaiïng inpropmodule
Name[ar]=ملحق التصفح المحسن
Name[as]=উন্নত চৰকৰ প্লাগ-ইন
Name[ast]=Complementu de ñavegación ameyorada
Name[be]=Палепшаны дадатак агляду
Name[be@latin]=Lepšy plugin dla prahladu
Name[bg]=Разширена приставка за преглед
Name[bn]=উন্নত ব্রাউজিং প্লাগ-ইন
Name[bn_IN]=উন্নত ব্রাউজিং-এ সহায়ক প্লাগ-ইন
Name[br]=Lugant Furchal Gwellaet
Name[bs]=Priključak za poboljšano pregledanje
Name[ca]=Connector de navegació millorada
Name[ca@valencia]=Connector de navegació millorada
Name[cs]=Modul rozšířeného procházení
Name[csb]=Mòduł do rozszérzónégò przezéraniô
Name[cy]=Ategyn Pori Hwylusach
Name[da]=Plugin til udvidet browsing
Name[de]=Erweitertes Browser-Modul
Name[el]=Πρόσθετο βελτιωμένης εξερεύνησης
Name[en_GB]=Enhanced Browsing Plugin
Name[eo]=Progresinta retumila kromprogramo
Name[es]=Complemento de navegación mejorada
Name[et]=Täiustatud brausimise plugin
Name[eu]=Arakatze plugin hobetua
Name[fa]=وصله مرور افزوده
Name[fi]=Laajennettu selauslisäosa
Name[fr]=Module externe de navigation avancée
Name[fy]=Plugin foar effisjinter browsen
Name[ga]=Breiseán le haghaidh Brabhsála Feabhsaithe
Name[gl]=Engadido de navegación mellorada
Name[gu]=સુધારો શોધખોળ પ્લગઈન
Name[he]=תוסף לגלישה משופרת
Name[hi]=एनहैंस्ड ब्राउज़िंग प्लगइन
Name[hne]=एन हैस्ड ब्राउजिंग प्लगइन
Name[hr]=Priključak za pojačano pretraživanje
Name[hsb]=Zašćěpka za polěpšenje browsowanje
Name[hu]=Továbbfejlesztett böngészés bővítőmodul
Name[ia]=Plugin de navigation avantiate
Name[id]=Plugin Peramban Dipercanggih
Name[is]=Íforrit fyrir vafraendurbætur
Name[it]=Plugin di navigazione avanzata
Name[ja]=拡張ブラウズプラグイン
Name[kk]=Жетілдірген шарлау плагині
Name[km]=កម្មវិធី​ជំនួយ​ការ​រុករក​ដែល​បាន​បន្ថែម
Name[kn]=ಉನ್ನತ ವೀಕ್ಷಣಾ ಮಿಳಿತಾನ್ವಯ (ಪ್ಲಗಿನ್)
Name[ko]=고급 탐색 플러그인
Name[ku]=Pêveka Nihêrîna Pêşketî
Name[lb]=Erweiderte Browser-Plugin
Name[lt]=Išplėstinio naršymo priedas
Name[lv]=Uzlabotas pārlūkošanas spraudnis
Name[mai]=बढ़ाएल ब्राउजिंग प्लगइन
Name[mk]=Приклучок за напредно разгледување
Name[ml]=പുതുക്കിയ ബ്രൌസര്‍ സംയോജകം
Name[mr]=प्रगत संचारन प्लगइन
Name[ms]=Plug masuk Pelayar Ekstra
Name[nb]=Programtillegg for utvidet nettlesing
Name[nds]=Nettkiekverwiedern-Plugin
Name[ne]=विस्तारित ब्राउजिङ प्लगइन
Name[nl]=Verbeterd Browsen Plugin
Name[nn]=Programtillegg for nettlesarforbetringar
Name[or]=ବର୍ଦ୍ଧିତ ବ୍ରାଉଜିଙ୍ଗ ପ୍ଲଗଇନ
Name[pa]=ਇੰਹਾਂਸਡ ਬਰਾਊਜ਼ਿੰਗ ਪਲੱਗਇਨ
Name[pl]=Moduł do rozszerzonego przeglądania
Name[ps]=پرمختللی لټوونی لګون
Name[pt]='Plugin' de Navegação Melhorada
Name[pt_BR]=Plug-in de navegação melhorada
Name[ro]=Modul de navigare avansată
Name[ru]=Расширение просмотра
Name[se]=Njuovžilut fierbmádatlogadeami lassemoduvla
Name[si]=දියුණු කළ ගවේෂණ ප්ලගීනය
Name[sk]=Modul rozšíreného prehliadania
Name[sl]=Vstavek za izboljšano brskanje
Name[sr]=Прикључак за побољшано прегледање
Name[sr@ijekavian]=Прикључак за побољшано прегледање
Name[sr@ijekavianlatin]=Priključak za poboljšano pregledanje
Name[sr@latin]=Priključak za poboljšano pregledanje
Name[sv]=Utökad webbläsning
Name[ta]=மேம்பட்ட உலாவி செருகி
Name[te]=అభివ్రుద్దిపరచిన బ్రౌజింగ్ ప్లగిన్
Name[tg]=Васлкунаки намоишгари пурзӯр
Name[th]=โปรแกรมเสริมการเบราว์แบบเสริมความสามารถ
Name[tr]=Gelişmiş Tarayıcı Eklentisi
Name[ug]=كۈچەيتىلگەن كۆرگۈ قىستۇرمىسى
Name[uk]=Додаток розширеної навігації
Name[uz]=Tezlashtirilgan veb-koʻrish plagini
Name[uz@cyrillic]=Тезлаштирилган веб-кўриш плагини
-Name[vi]=Bổ sung duyệt tăng cường
+Name[vi]=Phần bổ sung duyệt nâng cao
Name[wa]=Tchôke-divins sipepieus betchtaedje
-Name[x-test]=xxEnhanced Browsing Pluginxx
Name[xh]=Iplagi yangaphakathi Ekhangela iincwadi Enyusiweyo
+Name[x-test]=xxEnhanced Browsing Pluginxx
Name[zh_CN]=增强的浏览插件
Name[zh_HK]=增強功能的瀏覽外掛程式
Name[zh_TW]=增強的瀏覽外掛程式
diff --git a/kio/misc/kmailservice.desktop b/kio/misc/kmailservice.desktop
index 65b862078d..59705940ae 100644
--- a/kio/misc/kmailservice.desktop
+++ b/kio/misc/kmailservice.desktop
@@ -1,63 +1,64 @@
[Desktop Entry]
Type=Application
Exec=kmailservice %u
Icon=mail-message-new
MimeType=x-scheme-handler/mailto;
X-DocPath=kioslave/mailto/index.html
NoDisplay=true
# KMailService is the handler for mailto URLs
Name=KMailService
Name[bg]=KMailService
Name[bs]=KMailService
Name[ca]=KMailService
Name[ca@valencia]=KMailService
Name[cs]=Poštovní služba
Name[da]=KMailService
Name[de]=KMailService
Name[el]=Υπηρεσία Kmail
Name[en_GB]=KMailService
Name[es]=KMailService
Name[et]=KMailService
Name[eu]=KMailService
Name[fa]=KMailService
Name[fi]=KMailService
Name[fr]=KMailService
Name[gl]=KMailService
Name[hr]=KMailService
Name[hu]=KMailService
Name[ia]=KMailService (Servicio de KMail)
Name[is]=KMailÞjónusta
Name[it]=KMailService
Name[ja]=KMailService
Name[kk]=KMailService
Name[km]=KMailService
Name[ko]=KMailService
Name[lt]=KMail tarnyba
Name[lv]=KMailService
Name[nb]=KMail-posttjeneste
Name[nds]=KMailService
Name[nl]=KMailService
Name[pa]=KMailService
Name[pl]=Usługa KMail
Name[pt]=KMailService
Name[pt_BR]=KMailService
Name[ro]=Serviciu KMail
Name[ru]=KMailService
Name[se]=KMailService
Name[si]=KMailService
Name[sk]=KMailService
Name[sr]=Сервис за пошту
Name[sr@ijekavian]=Сервис за пошту
Name[sr@ijekavianlatin]=Servis za poštu
Name[sr@latin]=Servis za poštu
Name[sv]=Kmail-tjänst
Name[th]=KMailService
Name[tr]=KMailService
Name[ug]=KMailService
Name[uk]=Служба пошти KMail
+Name[vi]=KMailService
Name[wa]=KMailService
Name[x-test]=xxKMailServicexx
Name[zh_CN]=KMailService
Name[zh_TW]=KMail服務
diff --git a/kio/misc/kpac/proxyscout.desktop b/kio/misc/kpac/proxyscout.desktop
index f05873e817..8005b67c71 100644
--- a/kio/misc/kpac/proxyscout.desktop
+++ b/kio/misc/kpac/proxyscout.desktop
@@ -1,159 +1,160 @@
[Desktop Entry]
Type=Service
Name=Network Proxy Configuration
Name[bg]=Настройки на мрежови посредник
Name[bn]=নেটওয়ার্ক প্রক্সি কনফিগারেশন
Name[bs]=Podešavanje proksija za mrežu
Name[ca]=Configuració del servidor intermediari de xarxa
Name[ca@valencia]=Configuració del servidor intermediari de xarxa
Name[cs]=Nastavení proxy sítě
Name[da]=Indstilling af netværksproxy
Name[de]=Netzwerk-Proxy-Einrichtung
Name[el]=Ρύθμιση διαμεσολαβητή δικτύου
Name[en_GB]=Network Proxy Configuration
Name[es]=Configuración del proxy de la red
Name[et]=Võrgupuhverserveri seadistamine
Name[eu]=Sareko ordezkariaren konfigurazioa
Name[fi]=Verkon välityspalvelinasetukset
Name[fr]=Configuration du réseau mandataire
Name[ga]=Cumraíocht an tSeachfhreastalaí
Name[gl]=Configuración do proxy de rede
Name[hr]=Podešavanje mrežnog proxyja
Name[hu]=Hálózati proxybeállítások
Name[ia]=Configuration de proxy de rete
Name[id]=Konfigurasi Proxy Jaringan
Name[is]=Stillingar milliþjóna (proxy)
Name[it]=Configurazione proxy di rete
Name[ja]=ネットワークプロキシ設定
Name[kk]=Желі проксиін баптау
Name[km]=ការ​កំណត់​រចនាសម្ព័ន្ធ​ប្រូកស៊ី​បណ្ដាញ
Name[ko]=네트워크 프록시 설정
Name[ku]=Veavakirina Proxy ya Torê
Name[lt]=Tinklo įgaliotųjų serverių konfigūravimas
Name[lv]=Starpniekserveru konfigurēšana
Name[nb]=Oppsett for mellomtjener
Name[nds]=Nettwark-Proxy instellen
Name[nl]=Configuratie voor netwerk-proxy
Name[pa]=ਨੈੱਟਵਰਕ ਪਰਾਕਸੀ ਸੰਰਚਨਾ
Name[pl]=Konfiguracja pośrednika sieciowego
Name[pt]=Configuração do 'Proxy' de Rede
Name[pt_BR]=Configuração do proxy de rede
Name[ro]=Configurare proxy rețea
Name[ru]=Настройка прокси-серверов
Name[se]=Fierpmádatgaskabálvvá heivehus
Name[si]=ජාල ප්‍රොක්සි සැකසීම
Name[sk]=Nastavenie sieťového proxy
Name[sl]=Nastavitev omrežnega posrednika
Name[sr]=Подешавање проксија за мрежу
Name[sr@ijekavian]=Подешавање проксија за мрежу
Name[sr@ijekavianlatin]=Podešavanje proksija za mrežu
Name[sr@latin]=Podešavanje proksija za mrežu
Name[sv]=Inställning av nätverksproxy
Name[ta]=பிணைய மாற்று வடிவமைப்பு
Name[tg]=Танзимоти шабакаи Proxy
Name[th]=การปรับแต่งพร็อกซีของเครือข่าย
Name[tr]=Vekil Sunucu Yapılandırması
Name[ug]=تور ۋاكالەتچى سەپلىمە
Name[uk]=Налаштування проксі-сервера мережі
+Name[vi]=Cấu hình proxy mạng
Name[wa]=Apontiaedje do procsi del rantoele
Name[x-test]=xxNetwork Proxy Configurationxx
Name[zh_CN]=网络代理配置
Name[zh_TW]=網路代理組態
Comment=Automatic proxy configuration
Comment[af]=Outomatiese proksie opstelling
Comment[ar]=تهيئة آلية للخادم الوكيل
Comment[as]=স্বয়ংক্ৰিয় নিযুক্তকৰ বিন্যাস
Comment[ast]=Configuración automática del proxy
Comment[be]=Аўтаматычнае настаўленне проксі
Comment[be@latin]=Aŭtamatyčnaje naładžvańnie proxy
Comment[bg]=Автоматично настройване на мрежови посредник
Comment[bn]=স্বয়ংক্রিয় প্রক্সি কনফিগারেশন
Comment[bn_IN]=স্বয়ংক্রিয় প্রক্সি কনফিগারেশন ব্যবস্থা
Comment[br]=Kefluniadur emgefreekh ar proksi
Comment[bs]=Automatsko podešavanje proksija
Comment[ca]=Configuració automàtica de l'intermediari
Comment[ca@valencia]=Configuració automàtica de l'intermediari
Comment[cs]=Automatické nastavení proxy
Comment[csb]=Aùtokònfigùracëjô pòstrzédnika
Comment[cy]=Ffurweddiad Awtomatig o'r Dirprwy
Comment[da]=Automatisk proxy-indstilling
Comment[de]=Sucht nach einem Proxy-Server und richtet ihn ein
Comment[el]=Αυτόματη ρύθμιση διαμεσολαβητή
Comment[en_GB]=Automatic proxy configuration
Comment[eo]=Aŭtomata prokuragordo
Comment[es]=Configuración automática del proxy
Comment[et]=Automaatne puhverserveri seadistamine
Comment[eu]=Ordezkariaren konfigurazio automatikoa
Comment[fa]=پیکربندی خودکار پیشکار
Comment[fi]=Automaattiset välityspalvelinasetukset
Comment[fr]=Configuration automatique du serveur mandataire
Comment[fy]=Automatyske proxy ynstelling
Comment[ga]=Uathchumraíocht an tseachfhreastalaí
Comment[gl]=Configuración automática do proxy
Comment[gu]=આપમેળે પ્રોક્સી રુપરેખાંકન
Comment[he]=קביעת הגדרות מתווכים באופן אוטומטי
Comment[hi]=स्वचालित प्रॉक्सी कॉन्फ़िगरेशन
Comment[hne]=अपने अपन प्राक्सी कान्फिगरेसन
Comment[hr]=Automatsko konfiguriranje proxyja
Comment[hsb]=Awtomatiska konfiguracija proxyja
Comment[hu]=Automatikus proxybeállítás
Comment[ia]=Configuration automatic de proxy
Comment[id]=Konfigurasi proxy otomatis
Comment[is]=Sjálfvirkar stillingar vefsels
Comment[it]=Configurazione automatica proxy
Comment[ja]=自動プロキシ設定
Comment[kk]=Проксиді автоматты түрде бапату
Comment[km]=ការ​កំណត់​រចនាសម្ព័ន្ធ​ប្រូកស៊ី​ដោយ​ស្វ័យប្រវត្តិ
Comment[kn]=ಸ್ವಯಂಚಾಲಿತ ಪ್ರಾತಿನಿಧಿಕ (ಪ್ರಾಕ್ಸಿ) ಸಂರಚನೆ
Comment[ko]=자동 프록시 설정
Comment[ku]=Veavakirina bixweber yê proxy
Comment[lb]=Automatesch Proxy-Configuratioun
Comment[lt]=Automatinis proxy derinimas
Comment[lv]=Automātiska starpniekserveru konfigurēšana
Comment[mai]=स्वचालित प्राक्सी बिन्यास
Comment[mk]=Автоматска конфигурација на прокси
Comment[ml]=പ്രോക്സിയുടെ സ്വയം ക്രമീകരണം
Comment[mr]=स्वयंचलित प्रॉक्सी व्यूहरचना
Comment[ms]=Penyelarasan Proksi Automatik
Comment[nb]=Automatisk mellomtjeneroppsett
Comment[nds]=Proxy automaatsch instellen
Comment[ne]=स्वचालित प्रोक्सी कन्फिगरेसन
Comment[nl]=Automatische proxy-configuratie
Comment[nn]=Automatisk mellomtenaroppsett
Comment[or]=ସ୍ୱୟଂଚାଳିତ ଛାୟା ବିନ୍ୟାସ
Comment[pa]=ਆਟੋਮੈਟਿਕ ਪਰਾਕਸੀ ਸੰਰਚਨਾ
Comment[pl]=Autokonfiguracja pośrednika
Comment[ps]=خپلکارې ګوډاګي سازونه
Comment[pt]=Configuração automática do 'proxy'
Comment[pt_BR]=Configuração automática do proxy
Comment[ro]=Configurare automată pentru proxy
Comment[ru]=Автоматическая настройка прокси-сервера
Comment[se]=Automáhtalaš gaskabálváheiveheapmi
Comment[si]=ස්වයංක්‍රීය ප්‍රොක්සි සැකසීම
Comment[sk]=Automatické nastavenie proxy
Comment[sl]=Samodejne nastavitve posrednika
Comment[sr]=Аутоматско подешавање проксија
Comment[sr@ijekavian]=Аутоматско подешавање проксија
Comment[sr@ijekavianlatin]=Automatsko podešavanje proksija
Comment[sr@latin]=Automatsko podešavanje proksija
Comment[sv]=Automatisk proxyinställning
Comment[ta]=தானியக்க மாற்று வடிவமைப்பு
Comment[te]=స్వయంచాలక ప్రాక్సీ రూపకరణం
Comment[tg]=Танзимоти худкории proxy
Comment[th]=การปรับแต่งพร็อกซีอัตโนมัติ
Comment[tr]=Otomatik vekil sunucu yapılandırması
Comment[ug]=ئاپتوماتىك ۋاكالەتچى سەپلىمىسى
Comment[uk]=Автоматичне визначення проксі-сервера
Comment[uz]=Proksini avtomatik ravishda moslash
Comment[uz@cyrillic]=Проксини автоматик равишда мослаш
-Comment[vi]=Cấu hình ủy nhiệm tự động.
+Comment[vi]=Cấu hình proxy tự động
Comment[wa]=Apontiaedje otomatike do procsi
Comment[x-test]=xxAutomatic proxy configurationxx
Comment[zh_CN]=自动代理配置
Comment[zh_HK]=自動代理伺服器組態
Comment[zh_TW]=自動代理組態
X-KDE-ServiceTypes=KDEDModule
X-KDE-Library=proxyscout
X-KDE-DBus-ModuleName=proxyscout
X-KDE-Kded-autoload=false
X-KDE-Kded-load-on-demand=true
diff --git a/kio/misc/kpac/proxyscout.notifyrc b/kio/misc/kpac/proxyscout.notifyrc
index af1b93552e..5f53d23f4f 100644
--- a/kio/misc/kpac/proxyscout.notifyrc
+++ b/kio/misc/kpac/proxyscout.notifyrc
@@ -1,595 +1,602 @@
[Global]
IconName=preferences-system-network-proxy
Comment=Network Proxy Configuration
Comment[bg]=Настройки на мрежови посредник
Comment[bn]=নেটওয়ার্ক প্রক্সি কনফিগারেশন
Comment[bs]=Podešavanje proksija za mrežu
Comment[ca]=Configuració del servidor intermediari de la xarxa
Comment[ca@valencia]=Configuració del servidor intermediari de la xarxa
Comment[cs]=Nastavení proxy sítě
Comment[da]=Indstilling af netværksproxy
Comment[de]=Netzwerk-Proxy-Einrichtung
Comment[el]=Ρύθμιση διαμεσολαβητή δικτύου
Comment[en_GB]=Network Proxy Configuration
Comment[es]=Configuración del proxy de la red
Comment[et]=Võrgupuhverserveri seadistamine
Comment[eu]=Sareko ordezkariaren konfigurazioa
Comment[fi]=Verkon välityspalvelinasetukset
Comment[fr]=Configuration du réseau mandataire
Comment[ga]=Cumraíocht an tSeachfhreastalaí
Comment[gl]=Configuración do proxy de rede
Comment[hr]=Podešavanje mrežnog proxyja
Comment[hu]=Hálózati proxybeállítások
Comment[ia]=Configuration de proxy de rete
Comment[id]=Konfigurasi Proxy Jaringan
Comment[is]=Stillingar milliþjóna (proxy)
Comment[it]=Configurazione proxy di rete
Comment[ja]=ネットワークプロキシ設定
Comment[kk]=Желі проксиін баптау
Comment[km]=ការ​កំណត់​រចនាសម្ព័ន្ធ​ប្រូកស៊ី​បណ្ដាញ
Comment[ko]=네트워크 프록시 설정
Comment[ku]=Veavakirina Proxy ya Torê
Comment[lt]=Tinklo įgaliotųjų serverių konfigūravimas
Comment[lv]=Konfigurē tīkla starpniekserveru iestatījumus
Comment[nb]=Oppsett for mellomtjener
Comment[nds]=Nettwark-Proxy instellen
Comment[nl]=Configuratie voor netwerk-proxy
Comment[pa]=ਆਟੋਮੈਟਿਕ ਪਰਾਕਸੀ ਸੰਰਚਨਾ
Comment[pl]=Konfiguracja pośrednika sieciowego
Comment[pt]=Configuração do 'Proxy' de Rede
Comment[pt_BR]=Configuração do proxy de rede
Comment[ro]=Configurare proxy rețea
Comment[ru]=Настройка прокси-серверов
Comment[se]=Fierpmádatgaskabálvvá heivehus
Comment[si]=ජාල ප්‍රොක්සි සැකසීම
Comment[sk]=Nastavenie sieťového proxy
Comment[sl]=Nastavitev omrežnega posrednika
Comment[sr]=Подешавање проксија за мрежу
Comment[sr@ijekavian]=Подешавање проксија за мрежу
Comment[sr@ijekavianlatin]=Podešavanje proksija za mrežu
Comment[sr@latin]=Podešavanje proksija za mrežu
Comment[sv]=Inställning av nätverksproxy
Comment[ta]=பிணைய மாற்று வடிவமைப்பு
Comment[tg]=Танзимоти шабкаи Proxy
Comment[th]=การปรับแต่งพร็อกของเครือข่าย
Comment[tr]=Vekil Sunucu Yapılandırması
Comment[ug]=تور ۋاكالەتچى سەپلىمە
Comment[uk]=Налаштування проксі-сервера мережі
+Comment[vi]=Cấu hình proxy mạng
Comment[wa]=Apontiaedje do procsi del rantoele
Comment[x-test]=xxNetwork Proxy Configurationxx
Comment[zh_CN]=网络代理配置
Comment[zh_TW]=網路代理組態
[Event/script-error]
Name=Invalid Proxy Script
Name[ar]=سكربت الوكيل غير صالح
Name[as]=অবৈধ নিয়ুক্তকৰ স্ক্ৰিপ্ট
Name[ast]=Guión de proxy inválidu
Name[be]=Няправільны сцэнар проксі
Name[be@latin]=Niapravilny proksi-skrypt
Name[bg]=Невалиден скрипт за посредник
Name[bn]=অবৈধ প্রক্সি স্ক্রিপ্ট
Name[bn_IN]=অবৈধ প্রক্সি স্ক্রিপ্ট
Name[bs]=Neispravna skripta proksija
Name[ca]=Script de l'intermediari no vàlid
Name[ca@valencia]=Script de l'intermediari no vàlid
Name[cs]=Neplatný proxy skript
Name[csb]=Zmiłkòwi skrip pòstrzédnika
Name[da]=Ugyldigt proxy-script
Name[de]=Ungültiges Proxy-Skript
Name[el]=Μη έγκυρο σενάριο διαμεσολαβητή
Name[en_GB]=Invalid Proxy Script
Name[eo]=Nevalida prokura skripto
Name[es]=Script de proxy no válido
Name[et]=Vigane puhverserveri skript
Name[eu]=Ordezkariaren script baliogabea
Name[fa]=دست‌نوشتهٔ نامعتبر پیشکار
Name[fi]=Virheellinen välityspalvelinskripti
Name[fr]=Script pour serveur mandataire non valable
Name[fy]=Unjildich proksy skript
Name[ga]=Script Neamhbhailí Seachfhreastalaí
Name[gl]=O script de proxy non é válido
Name[gu]=અયોગ્ય પ્રોક્સી સ્ક્રિપ્ટ
Name[he]=תסריט מתווך לא תקין
Name[hi]=अवैध प्रॉक्सी स्क्रिप्ट
Name[hne]=अवैध प्राक्सी स्क्रिप्ट
Name[hr]=Neispravna proxy skripta
Name[hsb]=Njekorektny proxyjowy skript
Name[hu]=Érvénytelen proxyszkript
Name[ia]=Script de proxy invalide
Name[id]=Skrip Proxy Tidak Sah
Name[is]=Ógild vefselsskrifta
Name[it]=Script proxy non valido
Name[ja]=無効なプロキシスクリプト
Name[kk]=Жарамсыз прокси скрипті
Name[km]=ស្គ្រីប​ប្រូកស៊ី​មិនត្រឹមត្រូវ
Name[kn]=ಅಮಾನ್ಯ ಪ್ರಾತಿನಿಧಿಕ (ಪ್ರಾಕ್ಸಿ) ವಿಧಿಗುಚ್ಛ (ಸ್ಕ್ರಿಪ್ಟ್)
Name[ko]=잘못된 프록시 스크립트
Name[ku]=Skrîpta Proxy yê Ne Derbasdar
Name[lt]=Blogas proxy scenarijus
Name[lv]=Nederīgs starpniekservera skripts
Name[mai]=अवैध प्राक्सी स्क्रिप्ट
Name[mk]=Невалидна прокси-скрипта
Name[ml]=അസാധുവായ പ്രോക്സി സ്ക്രിപ്റ്റ്
Name[mr]=अवैध प्रॉक्सी लिपी
Name[nb]=Ugyldig mellomtjenerskript
Name[nds]=Leeg Proxy-Skript
Name[ne]=अवैध प्रोक्सी स्क्रिप्ट
Name[nl]=Ongeldig proxyscript
Name[nn]=Ugyldig mellomtenarskript
Name[or]=ଅବୈଧ ଛାୟା ସ୍କ୍ରିପ୍ଟ
Name[pa]=ਗਲਤ ਪਰਾਕਸੀ ਸਕ੍ਰਿਪਟ
Name[pl]=Niepoprawny skrypt pośrednika
Name[ps]=ناسم ګوډاګی سکرېپټ
Name[pt]=Programa de 'Proxy' Inválido
Name[pt_BR]=Script de proxy inválido
Name[ro]=Script proxy invalid
Name[ru]=Недопустимый сценарий настройки прокси-сервера
Name[se]=Gustohis gaskabálvaskripta
Name[si]=සාවද්‍ය ප්‍රොක්සි ස්ක්‍රිප්ටය
Name[sk]=Neplatný proxy skript
Name[sl]=Neveljaven posredniški skript
Name[sr]=Неисправна скрипта проксија
Name[sr@ijekavian]=Неисправна скрипта проксија
Name[sr@ijekavianlatin]=Neispravna skripta proksija
Name[sr@latin]=Neispravna skripta proksija
Name[sv]=Ogiltigt proxyskript
Name[ta]=செல்லாத மாற்று குறுநிரல்
Name[te]=చెల్లని ప్రాక్సీ స్క్రిప్ట్
Name[tg]=Дастнависи Proxy нодуруст
Name[th]=สคริปต์พร็อกซีไม่ถูกต้อง
Name[tr]=Geçersiz Vekil Sunucu Betiği
Name[ug]=ئىناۋەتسىز ۋاكالەتچى قوليازمىسى
Name[uk]=Некоректний скрипт проксі
+Name[vi]=Mã proxy không hợp lệ
Name[wa]=Scripe do procsi nén valåbe
Name[x-test]=xxInvalid Proxy Scriptxx
Name[zh_CN]=无效的代理脚本
Name[zh_TW]=不合法的代理文稿
Comment=The downloaded proxy configuration script is invalid
Comment[af]=Die proksie skrip wat afgelaai is, is ongeldig
Comment[ar]=سكربت إعدادات الوكيل المنزل غير صالح
Comment[as]=ডাউন্‌লোড কৰা নিযুক্তক বিন্যাসৰ স্ক্ৰিপ্ট অবৈধ
Comment[ast]=El guión de configuración del proxy descargáu ye inválidu
Comment[be]=Сцягнуты сцэнар настаўлення проксі-сервера няправільны
Comment[be@latin]=Atrymany niapravilny skrypt naładžvańnia proxy
Comment[bg]=Сваленият скрипт за настройка на посредник е невалиден
Comment[bn]=ডাউনলোড করা প্রক্সি কনফিগারেশন স্ক্রিপ্টটি অবৈধ
Comment[bn_IN]=ডাউনলোড করা প্রক্সি কনফিগারেশন স্ক্রিপ্ট বৈধ নয়
Comment[br]=N'eo ket mat urzhiaoug kefluniadur ar proksi
Comment[bs]=Preuzeta skripta postave proksija nije ispravna
Comment[ca]=L'script descarregat de configuració de l'intermediari no és vàlid
Comment[ca@valencia]=L'script descarregat de configuració de l'intermediari no és vàlid
Comment[cs]=Stažený konfigurační skript pro proxy je neplatný
Comment[csb]=Zladowóny skrip kònfigùracëji pòstrzédnika je zmiłkòwi
Comment[cy]=Mae'r sgript ffurfweddu'r dirprwy a chafodd ei lawrlwytho yn annilys
Comment[da]=Det hentede proxy-indstillingsscript er ugyldigt
Comment[de]=Das heruntergeladene Konfigurationsskript für den Proxy ist ungültig.
Comment[el]=Το ληφθέν σενάριο ρύθμισης διαμεσολαβητή δεν είναι έγκυρο
Comment[en_GB]=The downloaded proxy configuration script is invalid
Comment[eo]=La elŝutita prokura agordoskripto estas nevalida
Comment[es]=El script de configuración del proxy descargado no es válido
Comment[et]=Allalaaditud puhverserveri seadistuse skript on vigane
Comment[eu]=Jaitsitako ordezkaria konfiguratzeko script-a baliogabea da
Comment[fa]=دست‌نوشتهٔ پیکربندی پیشکار بارگیری شده نامعتبر است
Comment[fi]=Ladattu välityspalvelin asetusskripti on virheellinen
Comment[fr]=Le script téléchargé de configuration du serveur mandataire n'est pas valable
Comment[fy]=It ynladen proxy ynstellings skript is ûnjildich
Comment[ga]=Is neamhbhailí í script chumraíocht an tseachfhreastalaí a íosluchtaíodh
Comment[gl]=O script de configuración do proxy que se descargou non é válido
Comment[gu]=ડાઉનલોડ કરેલ પ્રોક્સી રૂપરેખાંકન સ્ક્રિપ્ટ અયોગ્ય છે
Comment[he]=תסריט ההגדרות של השרת המתווך שהורד לא תקין
Comment[hi]=डाउनलोड किया गया प्रॉक्सी कॉन्फ़िगरेशन स्क्रिप्ट अवैध है
Comment[hne]=डाउनलोड करे गे प्राक्सी कान्फिगरेसन स्क्रिप्ट अवैध हे
Comment[hr]=Preuzeta skripta za konfiguriranje proxyja je neispravna
Comment[hsb]=Sćehnjeny konfiguraciski skript za proxy je njekorektny.
Comment[hu]=A letöltött proxyszkript érvénytelen
Comment[ia]=Le script de configuration de proxy discargate es invalide
Comment[id]=Skrip konfigurasi proxy yang diunduh tidak sah
Comment[is]=Sótt vefselsskrifta er ógild
Comment[it]=Lo script di configurazione proxy scaricato non è valido
Comment[ja]=ダウンロードされたプロキシ設定スクリプトは無効です
Comment[kk]=Жүктеп алынған проксиді баптау скрипті жарамсыз
Comment[km]=ស្គ្រីប​កំណត់​រចនា​សម្ព័ន្ធ​ប្រូកស៊ី​ដែល​បាន​ទាញយក​គឺ​មិនត្រឹមត្រូវ
Comment[kn]=ನಕಲಿಳಿಸಲಾದ ಪ್ರಾತಿನಿಧಿಕದ (ಪ್ರಾಕ್ಸಿ) ಸಂರಚನಾ ವಿಧಿಗುಚ್ಛ (ಸ್ಕ್ರಿಪ್ಟ್) ಅಮಾನ್ಯವಾದದ್ದಾಗಿದೆ
Comment[ko]=다운로드한 프록시 설정 스크립트가 잘못되었습니다
Comment[ku]=Skrîpta veavakirina proxy yê daxistî ne derbasdar e
Comment[lb]=D'Proxy-Configuratiounsskript, dat erofgelude gouf, ass ongülteg
Comment[lt]=Atsisiųstas proxy derinimo scenarijus yra blogas
Comment[lv]=Lejupielādētais starpniekservera skripts ir nederīgs
Comment[mai]=डाउनलोड कएल गेल प्राक्सी बिन्यास स्क्रिप्ट अवैध अछि
Comment[mk]=Симнатата скрипта за конфигурација на прокси е навалидна
Comment[ml]=ഡൌണ്‍ലോഡ് ചെയ്ത പ്രോക്സി സജ്ജീകരിക്കുന്ന സ്ക്രിപ്റ്റ് ശരിയല്ല
Comment[mr]=डाउनलोड केलेले व्यूहरचना स्क्रीप्ट अवैध
Comment[ms]=Skrip penyelarasan proksi yang dimuat turun tidak sah
Comment[nb]=Mellomtjenerskriptet som ble lastet ned er ugyldig
Comment[nds]=Dat daallaadte Proxy-Instellskript is leeg
Comment[ne]=डाउनलोड गरिएका प्रोक्सी कन्फिगरेसन स्क्रिप्ट अवैध छ
Comment[nl]=Het gedownloade script met de proxyconfiguratie is ongeldig
Comment[nn]=Det nedlasta skriptet for automatisk mellomtenaroppsett er ugyldig
Comment[or]=ଆହରଣ କୃତ ଛାୟା ବିନ୍ୟାସ ସ୍କ୍ରିପ୍ଟ ଟି ଅବୈଧ
Comment[pa]=ਡਾਊਨਲੋਡ ਕੀਤੀ ਪਰਾਕਸੀ ਸੰਰਚਨਾ ਸਕ੍ਰਿਪਟ ਗਲਤ ਹੈ
Comment[pl]=Pobrany skrypt konfiguracji pośrednika jest nieprawidłowy
Comment[ps]=رالېښل شوی ګوډاګي سازونې سکرېپټ ناسم دی
Comment[pt]=O programa obtido de configuração do 'proxy' é inválido
Comment[pt_BR]=O script de configuração do proxy obtido é inválido
Comment[ro]=Scriptul de configurare proxy este eronat
Comment[ru]=Загруженный сценарий настройки прокси-сервера содержит ошибки
Comment[se]=Vižžon gaskabálvaskripta ii gusto
Comment[sk]=Stiahnutý konfiguračný skript pre proxy je neplatný
Comment[sl]=Naložen nastavitveni skript posrednika je neveljaven
Comment[sr]=Преузета скрипта поставе проксија није исправна
Comment[sr@ijekavian]=Преузета скрипта поставе проксија није исправна
Comment[sr@ijekavianlatin]=Preuzeta skripta postave proksija nije ispravna
Comment[sr@latin]=Preuzeta skripta postave proksija nije ispravna
Comment[sv]=Det nerladdade proxyinställningsskriptet är ogiltigt
Comment[ta]=இறக்கப்பட்ட மாற்று வடிவமைப்பு குறிநிரல் செல்லாது
Comment[te]=డౌన్ లోడ్ చేయబడిన్ ప్రాక్సీ రూపకరణపు స్క్రిప్ట్ చెల్లదు
Comment[tg]=Дастнависи proxy боршуда нодуруст аст
Comment[th]=สคริปต์ปรับแต่งพร็อกซีที่ดาวน์โหลดมาใช้ไม่ได้
Comment[tr]=İndirilen vekil sunucu yapılandırma betiği geçersiz
Comment[ug]=چۈشۈرگەن ۋاكالەتچى سەپلىمە قوليازمىسى ئىناۋەتسىز
Comment[uk]=Звантажено некоректний скрип проксі
Comment[uz]=Proksini moslash uchun yozib olingan skript haqiqiy emas
Comment[uz@cyrillic]=Проксини мослаш учун ёзиб олинган скрипт ҳақиқий эмас
+Comment[vi]=Mã cấu hình proxy đã tải không hợp lệ
Comment[wa]=Li scripe d' apontiaedje do procsi aberweté n' est nén valåbe
Comment[x-test]=xxThe downloaded proxy configuration script is invalidxx
Comment[zh_CN]=下载的代理配置脚本无效
Comment[zh_HK]=剛下載的代理伺服器組態 script 語法有誤
Comment[zh_TW]=下載的代理組態文稿不合法
Action=Popup
[Event/download-error]
Name=Script Download Error
Name[af]=Skrip aflaaifout
Name[ar]=خطأ في تنزيل السكربت
Name[as]=স্ক্ৰিপ্ট ডাউন্‌লোড কৰোঁতে ভুল
Name[ast]=Error na descarga de guión
Name[be]=Памылка сцягвання сцэнара
Name[be@latin]=Pamyłka atrymańnia skrypta
Name[bg]=Грешка при сваляне на скрипт
Name[bn]=স্ক্রিপ্ট ডাউনলোডে সমস্যা
Name[bn_IN]=স্ক্রিপ্ট ডাউনলোড সংক্রান্ত ত্রুটি
Name[bs]=Greška u preuzimanju skripte
Name[ca]=Error de descàrrega de l'script
Name[ca@valencia]=Error de descàrrega de l'script
Name[cs]=Chyba ve stažení skriptu
Name[csb]=Fela zladowaniô skriptu
Name[da]=Fejl under download af Script
Name[de]=Fehler beim Herunterladen des Skripts
Name[el]=Σφάλμα λήψης σεναρίου
Name[en_GB]=Script Download Error
Name[eo]=Eraro pri elŝuto de skripto
Name[es]=Error de descarga del script
Name[et]=Viga skripti allalaadimisel
Name[eu]=Errorea script-a deskargatzean
Name[fa]=خطا در بارگیری دست‌نوشته
Name[fi]=Skriptin latausvirhe
Name[fr]=Erreur de téléchargement du script
Name[fy]=Skript ynlaad flater
Name[ga]=Earráid Íosluchtaithe Scripte
Name[gl]=Erro na descarga do script
Name[gu]=સ્ક્રિપ્ટ ડાઉનલોડ ક્ષતિ
Name[he]=שגיאת הורדת תסריט
Name[hi]=स्क्रिप्ट डाउनलोड त्रुटि
Name[hne]=स्क्रिप्ट डाउनलोड गलती
Name[hr]=Pogreška pri preuzimanju skripte
Name[hsb]=Zmylk sćehnjenja skripta
Name[hu]=Szkriptletöltési hiba
Name[ia]=Error de discarga del script
Name[id]=Galat Unduh Skrip
Name[is]=Villa við niðurhal skriftu
Name[it]=Errore scaricamento script
Name[ja]=スクリプトのダウンロードエラー
Name[kk]=Скриптті жүктеу қатесі
Name[km]=កំហុស​ក្នុង​ការ​ទាញយក​ស្គ្រីប
Name[kn]=ವಿಧಿಗುಚ್ಛ (ಸ್ಕ್ರಿಪ್ಟ್ ) ನಕಲಿಳಿಸು ದೋಷ
Name[ko]=스크립트 다운로드 오류
Name[ku]=Çewtiya Daxistina Skrîptê
Name[lt]=Scenarijaus atsisiuntimo klaida
Name[lv]=Skripta lejupielādes kļūda
Name[mai]=स्क्रिप्ट डाउनलोडक त्रुटि
Name[mk]=Грешка при симнување на скриптата
Name[ml]=സ്ക്രിപ്റ്റ് ഡൌണ്‍ലോഡില്‍ തെറ്റുണ്ടു്
Name[mr]=लिपी डाउनलोड त्रुटी
Name[nb]=Feil ved skriptnedlasting
Name[nds]=Skript-Daallaadfehler
Name[ne]=स्क्रिप्टले त्रुटि डाउनलोड गर्यो
Name[nl]=Fout bij scriptdownload
Name[nn]=Feil ved skriptnedlasting
Name[or]=ସ୍କ୍ରିପ୍ଟ ଆହରଣ ତ୍ରୁଟି
Name[pa]=ਸਕ੍ਰਿਪਟ ਡਾਊਨਲੋਡ ਗਲਤੀ
Name[pl]=Błąd pobierania skryptu
Name[ps]=د سکرېپټ رالېښنې تېروتنه
Name[pt]=Erro de Transferência do Programa
Name[pt_BR]=Erro no download do script
Name[ro]=Eroare de descărcare a scriptului
Name[ru]=Ошибка загрузки скрипта
Name[se]=Filtii skripta viežžamis
Name[si]=ස්ක්‍රිප්ට් ලබාගැනීමේ දෝෂය
Name[sk]=Chyba počas sťahovania skriptu
Name[sl]=Napaka nalaganju skripta
Name[sr]=Грешка у преузимању скрипте
Name[sr@ijekavian]=Грешка у преузимању скрипте
Name[sr@ijekavianlatin]=Greška u preuzimanju skripte
Name[sr@latin]=Greška u preuzimanju skripte
Name[sv]=Nerladdningsfel för skript
Name[ta]=குறுநிரல் இறக்கத்தில் பிழை
Name[te]=స్క్రిప్ట్ డౌన్ లోడ్ దోషం
Name[tg]=Хатои боркунии дастнавис
Name[th]=การดาวน์โหลดสคริปต์เกิดข้อผิดพลาด
Name[tr]=Betik İndirme Hatası
Name[ug]=قوليازما چۈشۈرۈش خاتالىقى
Name[uk]=Помилка звантаження проксі
+Name[vi]=Lỗi tải mã
Name[wa]=Aroke d' aberwetaedje do scripe
Name[x-test]=xxScript Download Errorxx
Name[zh_CN]=脚本下载错误
Name[zh_TW]=文稿下載錯誤
Comment=The proxy configuration script could not be downloaded
Comment[af]=Die proksie opstellingskrip kon nie afgelaai word nie
Comment[ar]=لا يمكن تنزيل سكربت إعدادات الوكيل
Comment[as]=নিযুক্তক বিন্যাসৰ স্ক্ৰিপ্ট ডাউন্‌লোড কৰিব পৰা ন'গ'ল
Comment[ast]=Nun pudo descargase'l guión de configuración del proxy
Comment[be]=Немагчыма сцягнуць сцэнар настаўлення проксі
Comment[be@latin]=Nie ŭdałosia atrymać skrypt naładžvańnia proxy
Comment[bg]=Скриптът за настройка на посредник не беше свален
Comment[bn]=প্রক্সি কনফিগারেশন স্ক্রিপ্ট ডাউনলোড করা যায়নি
Comment[bn_IN]=প্রক্সি কনফিগারেশনের স্ক্রিপ্ট ডাউনলোড করা যায়নি
Comment[br]=Ne m'eus ket enkargañ urzhiaoug kefluniadur ar proksi
Comment[bs]=Skripta postave proksija ne može biti preuzeta
Comment[ca]=L'script de configuració de l'intermediari no es pot descarregar
Comment[ca@valencia]=L'script de configuració de l'intermediari no es pot descarregar
Comment[cs]=Nelze stáhnout konfigurační skript pro proxy
Comment[csb]=Skript kònfigùracëji pòstrzédnika ni mòże bëc zladowóny
Comment[cy]=Y sgript ffurfweddu'r dirprwy
Comment[da]=Proxy-indstillingsscriptet kunne ikke hentes
Comment[de]=Das Konfigurationsskript für den Proxy kann nicht heruntergeladen werden.
Comment[el]=Αδύνατη η λήψη του σεναρίου ρύθμισης διαμεσολαβητή
Comment[en_GB]=The proxy configuration script could not be downloaded
Comment[eo]=Ne povis elŝuti la prokuran agordoskripton
Comment[es]=No se puede descargar el script de configuración del proxy
Comment[et]=Puhverserveri seadistuse skripti allalaadimine nurjus
Comment[eu]=Ordezkaria konfiguratzeko script-a ezin izan da deskargatu
Comment[fa]=دست‌نوشتهٔ پیکربندی پیشکار نتوانست بارگیری شود
Comment[fi]=Välityspalvelimen asetusskriptin lataaminen ei onnistunut
Comment[fr]=Le script de configuration du serveur mandataire (proxy) n'a pas pu être téléchargé
Comment[fy]=It ynladen fan de proxy ynstellings skript is net slagge
Comment[ga]=Níorbh fhéidir script chumraíochta an tseachfhreastalaí a íosluchtú
Comment[gl]=Non foi posíbel descargar o script de configuración do proxy
Comment[gu]=પ્રોક્સી રૂપરેખાંકન સ્ક્રિપ્ટ ડાઉનલોડ કરી શકાતી નથી
Comment[he]=אין אפשרות להוריד את תסריט הגדרות שרת המתווך
Comment[hi]=प्रॉक्सी कॉन्फ़िगरेशन स्क्रिप्ट को डाउनलोड नहीं किया जा सका
Comment[hne]=प्राक्सी कान्फिगरेसन स्क्रिप्ट ल डाउनलोड नइ कर सकिस
Comment[hr]=Skripta za konfiguraciju proxyja nije mogla biti preuzeta
Comment[hsb]=Konfiguraciski skript za proxy njehodźi so sćahnyć
Comment[hu]=A proxyszkriptet nem sikerült letölteni
Comment[ia]=Le configuration del script poterea non esser discargate
Comment[id]=Skrip konfigurasi proxy tak dapat diunduh
Comment[is]=Gat ekki sótt stillingaskriftu vefsels
Comment[it]=Impossibile scaricare lo script di configurazione proxy
Comment[ja]=プロキシ設定スクリプトをダウンロードできませんでした
Comment[kk]=Проксиді баптау скрипті жүктеп алынбайды
Comment[km]=មិន​អាច​ទាញយក​ស្គ្រីប​កំណត់រចនា​សម្ព័ន្ធ​ប្រូកស៊ី​បាន​ឡើយ
Comment[kn]=ಪ್ರಾತಿನಿಧಿಕದ (ಪ್ರಾಕ್ಸಿ) ಸಂರಚನಾ ವಿಧಿಗುಚ್ಛವನ್ನು (ಸ್ಕ್ರಿಪ್ಟ್) ನಕಲಿಳಿಸಲಾಗಲಿಲ್ಲ
Comment[ko]=프록시 구성 스크립트를 다운로드할 수 없습니다
Comment[ku]=Skrîpta veavakirina proxy nayê daxistin
Comment[lb]=D'Proxy-Konfiguratiounsskript konnt net erofgeluede ginn
Comment[lt]=Proxy derinimo scenarijus negali būti atsisiųstas
Comment[lv]=Neizdevās lejupielādēt starpniekservera konfigurācijas skriptu
Comment[mai]=प्राक्सी बिन्यास स्क्रिप्ट केँ डाउनलोड नहि कएल जाए सकल
Comment[mk]=Скриптата за конфигурација на прокси не можеше да се симне
Comment[ml]=പ്രോക്സി സജ്ജീകരിക്കുന്ന സ്ക്രിപ്റ്റ് ഡൌണ്‍ലോഡ് ചെയ്യാന്‍ പറ്റുന്നില്ല
Comment[mr]=प्रॉक्सी व्यूहरचना स्क्रीप्ट डाऊनलोड होऊ शकले नाही
Comment[ms]=Skrip penyelarasan proksi tidak boleh dimuat turun
Comment[nb]=Klarte ikke å laste ned skript for mellomtjeneroppsett
Comment[nds]=Dat Proxy-Instellskript lett sik nich daalladen
Comment[ne]=प्रोक्सी कन्फिगरेसन स्क्रिप्ट डाउनलोड गर्न सकेन
Comment[nl]=Het script met de proxyconfiguratie kon niet worden gedownload
Comment[nn]=Klarte ikkje lasta ned skript for automatisk mellomtenaroppsett
Comment[or]=ଛାୟା ବିନ୍ୟାସ ସ୍କ୍ରିପ୍ଟ ଆହରଣ କରିହେଲା ନାହିଁ
Comment[pa]=ਪਰਾਕਸੀ ਸੰਰਚਨਾ ਸਕ੍ਰਿਪਟ ਡਾਊਨਲੋਡ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ
Comment[pl]=Nie można pobrać skryptu konfiguracji pośrednika
Comment[ps]=د ګوډاګي د سازونې سکرېپټ رالېښل کېدی نه شي
Comment[pt]=O programa de configuração do 'proxy' não pôde ser transferido
Comment[pt_BR]=O script de configuração do proxy não pôde ser transferido
Comment[ro]=Nu am putut descărca scriptul de configurare proxy
Comment[ru]=Невозможно загрузить сценарий настройки прокси-сервера
Comment[se]=Ii sáhttán viežžat skripta automáhtalaš gaskabálvaheivehusa várás
Comment[sk]=Nepodarilo sa stiahnuť konfiguračný skript pre proxy
Comment[sl]=Nastavitveni skript posrednika ni mogel biti naložen
Comment[sr]=Скрипта поставе проксија не може бити преузета
Comment[sr@ijekavian]=Скрипта поставе проксија не може бити преузета
Comment[sr@ijekavianlatin]=Skripta postave proksija ne može biti preuzeta
Comment[sr@latin]=Skripta postave proksija ne može biti preuzeta
Comment[sv]=Proxyinställningsskriptet kunde inte laddas ner
Comment[ta]=மாற்று வடிவமைப்பு குறுநிரலை இறக்க முடியவில்லை
Comment[te]=ప్రాక్సీ రూపకరణపు స్క్రిప్ట్ ని డౌన్ లోడ్ చేయలేకపోయాం
Comment[tg]=Дастнависи танзимшавандаи proxy бор карда намешавад
Comment[th]=ไม่สามารถดาวน์โหลดสคริปต์ปรับแต่งพร็อกซีได้
Comment[tr]=Vekil sunucu yapılandırma dosyası indirilemedi
Comment[ug]=ۋاكالەتچى سەپلىمە قوليازمىسىنى چۈشۈرەلمىدى
Comment[uk]=Неможливо звантажити скрипт налаштування проксі
Comment[uz]=Proksini moslash uchun skriptni yozib olib boʻlmadi
Comment[uz@cyrillic]=Проксини мослаш учун скриптни ёзиб олиб бўлмади
+Comment[vi]=Không thể tải mã lệnh cấu hình proxy
Comment[wa]=Dji n' a savou aberweter l' sicripe d' apontiaedje do procsi
Comment[x-test]=xxThe proxy configuration script could not be downloadedxx
Comment[zh_CN]=无法下载代理配置脚本
Comment[zh_HK]=無法取得代理伺服器組態 script 檔案
Comment[zh_TW]=代理組態文稿無法下載
Action=Popup
[Event/evaluation-error]
Name=Script Evaluation Error
Name[af]=Skrip evaluasiefout
Name[ar]=خطأ في تقييم السكربت
Name[as]=স্ক্ৰিপ্টৰ পৰীক্ষাত ভুল
Name[ast]=Error d'evaluación del guión
Name[be]=Памылка выканання сцэнару
Name[be@latin]=Pamyłka ŭ vykanańni skrypta
Name[bg]=Грешка при оценка на скрипт
Name[bn]=স্ক্রিপ্ট চালানোয় সমস্যা
Name[bn_IN]=স্ক্রিপ্ট বিশ্লেষণ সংক্রান্ত ত্রুটি
Name[bs]=Greška u izvršavanju skripte
Name[ca]=Error d'avaluació de l'script
Name[ca@valencia]=Error d'avaluació de l'script
Name[cs]=Chyba v analýze skriptu
Name[csb]=Fela ewaluacëji skriptu
Name[da]=Fejl under evaluering af script
Name[de]=Fehler bei der Auswertung des Skripts
Name[el]=Σφάλμα αποτίμησης σεναρίου
Name[en_GB]=Script Evaluation Error
Name[eo]=Eraro pri takso de skripto
Name[es]=Error de evaluación del script
Name[et]=Viga skripti hindamisel
Name[eu]=Script ebaluazioko errorea
Name[fa]=خطا در ارزیابی دست‌نوشته
Name[fi]=Skriptinsuoritusvirhe
Name[fr]=Erreur d'évaluation du script
Name[fy]=Skript beoardiel flater
Name[ga]=Earráid agus Script á Luacháil
Name[gl]=Erro na avaliación do script
Name[gu]=સ્ક્રિપ્ટ ચકાસણી ક્ષતિ
Name[he]=שגיאה בעת פיענוח התסריט
Name[hi]=स्क्रिप्ट परीक्षण त्रुटि
Name[hne]=स्क्रिप्ट परीक्छन गलती
Name[hr]=Pogreška pri procjenjivanju skripte
Name[hsb]=Zmylk při wuwjedźenju skripta
Name[hu]=Szkriptkiértékelési hiba
Name[ia]=Error de evalutation del script
Name[id]=Galat Evaluasi Skrip
Name[is]=Villa við túlkun skriftu
Name[it]=Errore di valutazione script
Name[ja]=スクリプト評価エラー
Name[kk]=Скриптті орындау қатесі
Name[km]=កំហុស​ក្នុង​ការ​វាយ​តម្លៃ​ស្គ្រីប
Name[kn]=ವಿಧಿಗುಚ್ಛ (ಸ್ಕ್ರಿಪ್ಟ್ ) ಮೌಲ್ಯಮಾಪನ ದೋಷ
Name[ko]=스크립트 계산 오류
Name[ku]=Çewtiya Nirxandina Skrîptê
Name[lt]=Scenarijaus analizės klaida
Name[lv]=Skripta izpildes kļūda
Name[mai]=स्क्रिप्ट परीक्षण त्रुटि
Name[mk]=Грешка при евалуација на скриптата
Name[ml]=സ്ക്രിപ്റ്റിന്റെ മൂല്യനിര്‍ണ്ണയത്തില്‍ തെറ്റുണ്ടു്
Name[mr]=स्क्रीप्ट विश्लेषन त्रुटी
Name[nb]=Feil ved evaluering av skript
Name[nds]=Skript-Utföhrfehler
Name[ne]=स्क्रिप्ट मूल्याङ्कन त्रुटि
Name[nl]=Fout bij evalueren van script
Name[nn]=Feil ved skriptevaluering
Name[or]=ସ୍କ୍ରିପ୍ଟ ମୁଲ୍ୟାଙ୍କନ ତ୍ରୁଟି
Name[pa]=ਸਕ੍ਰਿਪਟ ਜਾਂਚ ਗਲਤੀ
Name[pl]=Błąd wykonywania skryptu
Name[pt]=Erro de Avaliação do Programa
Name[pt_BR]=Erro de avaliação do script
Name[ro]=Eroare de evaluare a scriptului
Name[ru]=Ошибка выполнения скрипта
Name[se]=Skriptadulkonmeattáhus
Name[sk]=Chyba vykonávania skriptu
Name[sl]=Napaka pri ovrednotenju skripta
Name[sr]=Грешка у извршавању скрипте
Name[sr@ijekavian]=Грешка у извршавању скрипте
Name[sr@ijekavianlatin]=Greška u izvršavanju skripte
Name[sr@latin]=Greška u izvršavanju skripte
Name[sv]=Utvärderingsfel för skript
Name[ta]=குறுநிரல் மதிப்பீட்டுப் பிழை
Name[te]=స్క్రిప్ట్ నిర్వహణ దోషం
Name[tg]=Хатои арзёбии дастнавис
Name[th]=การเรียกใช้สคริปต์เกิดข้อผิดพลาด
Name[tr]=Betik Çalıştırma Hatası
Name[ug]=قوليازما ئىجرا قىلىش خاتالىقى
Name[uk]=Помилка оцінки скрипту
+Name[vi]=Lỗi thử đúng mã lệnh
Name[wa]=Aroke di préjhaedje do scripe
Name[x-test]=xxScript Evaluation Errorxx
Name[zh_CN]=脚本执行错误
Name[zh_TW]=文稿執行錯誤
Comment=There was an error executing the proxy configuration script
Comment[af]=Daar was 'n fout met die uitvoer van die proksie opstelskrip
Comment[ar]=يوجد خطأ في تنفيذ سكربت إعدادات الوكيل
Comment[as]=নিযুক্তক বিন্যাসৰ স্ক্ৰিপ্ট চলাওঁতে ভুল
Comment[ast]=Hebo un error executando'l guión de configuración del proxy
Comment[be]=Адбылася памылка выканання сцэнару настаўлення проксі
Comment[be@latin]=Padčas vykanańnia skrypta naładžvańnia proxy ŭźnikła pamyłka.
Comment[bg]=Възникна грешка при изпълнение на скрипта за настройка на посредник
Comment[bn]=প্রক্সি কনফিগারেশন স্ক্রিপ্ট চালাতে সমস্যা দেখা দিয়েছে
Comment[bn_IN]=প্রক্সি কনফিগারেশনের স্ক্রিপ্ট সঞ্চালনে সমস্যা
Comment[br]=Degouezhet ez eus ur fazi en ur seveniñ urzhiaoug kefluniadur ar proksi
Comment[bs]=Greška tokom izvršavanja skripte postave proksija
Comment[ca]=Hi ha hagut un error en executar l'script de configuració de l'intermediari
Comment[ca@valencia]=Hi ha hagut un error en executar l'script de configuració de l'intermediari
Comment[cs]=Nastala chyba při spouštění konfiguračního skriptu proxy
Comment[csb]=Wëstąpiła fela przë zrëszaniém skriptu kònfigùracëji pòstrzédnika
Comment[cy]=Digwyddodd gwall wrth weithredu'r sgript ffurfweddu'r dirprwy
Comment[da]=Der opstod en fejl ved kørslen af proxy-indstillingsscriptet
Comment[de]=Beim Ausführen des Skripts zur Proxy-Konfiguration ist ein Fehler aufgetreten.
Comment[el]=Παρουσιάστηκε σφάλμα κατά την εκτέλεση του σεναρίου ρύθμισης του διαμεσολαβητή
Comment[en_GB]=There was an error executing the proxy configuration script
Comment[eo]=Eraro okazis pri plenumo de la prokura agordoskripto
Comment[es]=Ocurrió un error al ejecutar el script de configuración del proxy
Comment[et]=Ilmnes tõsine viga puhverserveri seadistuse skripti käivitamisel
Comment[eu]=Errorea gertatu da ordezkaria konfiguratzeko script-a exekutatzerakoan
Comment[fa]=خطایی در اجرای دست‌نوشتهٔ پیکربندی پیشکار وجود داشت
Comment[fi]=Välityspalvelimen asetuskriptin suorittamisessa tapahtui virhe
Comment[fr]=Une erreur s'est produite lors de l'exécution du script de configuration du serveur mandataire (proxy)
Comment[fy]=Der wie in flater by it útfoeren fan de proxy ynstellings skript
Comment[ga]=Tharla earráid agus script chumraíocht an tseachfhreastalaí á rith
Comment[gl]=Aconteceu un erro ao executar o script de configuración do proxy
Comment[gu]=પ્રોક્સી રૂપરેખાંકન સ્ક્રિપ્ટ ચલાવવામાં ક્ષતિ હતી
Comment[he]=ארעה שגיאה בעת ההפעלה של תסריט הגדרת השרת המתווך
Comment[hi]=प्रॉक्सी कॉन्फ़िगरेशन स्क्रिप्ट को चलाने के दौरान एक त्रुटि हुई
Comment[hne]=प्राक्सी कान्फिगरेसन स्क्रिप्ट ल चलाय के समय एक गलती होइस
Comment[hr]=Došlo je do pogreške pri izvršavanju skripte za konfiguraciju proxyja
Comment[hsb]=Při wuwjedźenju konfiguraciskeho skripta za proxy je so zmylk stał
Comment[hu]=Hiba történt a proxyszkript végrehajtása közben
Comment[ia]=Il esseva un error durante que il executava le proxy de configuration del script
Comment[id]=Ada galat ketika mengeksekusi skrip konfigurasi proxy
Comment[is]=Það kom upp villa við keyrslu stillingaskriftu vefsels
Comment[it]=Si è verificato un errore durante l'esecuzione dello script di configurazione proxy
Comment[ja]=プロキシ設定スクリプトの実行でエラーが発生しました
Comment[kk]=Проксиді баптау скриптін орындау қатесі
Comment[km]=មាន​កំហុស​ក្នុង​ការ​ប្រតិបត្តិ​ស្គ្រីប​កំណត់​រចនា​សម្ព័ន្ធ​ប្រូកស៊ី
Comment[kn]=ಪ್ರಾತಿನಿಧಿಕದ (ಪ್ರಾಕ್ಸಿ) ಸಂರಚನಾ ವಿಧಿಗುಚ್ಛವನ್ನು (ಸ್ಕ್ರಿಪ್ಟ್) ಅನ್ನು ಚಾಲಯಿಸುವಾಗ ದೋಷ ಕಂಡುಬಂದಿತು
Comment[ko]=프록시 설정 스크립트를 실행하는 중 오류가 발생했습니다
Comment[ku]=Di sepandina skrîpta veavakirina proxy de çewtiyek çê bû
Comment[lb]=Et gouf e Feeler beim Ausféiere vum Proxy-Konfiguratiounsskript
Comment[lt]=Paleidžiant proxy derinimo scenarijų įvyko klaida
Comment[lv]=Gadījās kļūda izpildot starpniekservera konfigurēšanas skriptu
Comment[mai]=प्राक्सी बिन्यास स्क्रिप्ट केँ चलाबै केर काले एकटा त्रुटि भेल
Comment[mk]=Имаше грешка при извршувањето на скриптата за конфигурација на прокси
Comment[ml]=പ്രോക്സി സജ്ജീകരിക്കുന്ന സ്ക്രിപ്റ്റ് പ്രവര്‍ത്തിപ്പിയ്ക്കുമ്പോള്‍ തെറ്റുണ്ടായി
Comment[mr]=प्रॉक्सी व्यूहरचना स्क्रिप्ट चालवितेवेळी त्रुटी आढळली
Comment[ms]=Terdapat ralat melaksanakan skrip penyelarasan proksi
Comment[nb]=Det oppsto en feil ved kjøring av skriptet for mellomtjeneroppsett
Comment[nds]=Bi't Utföhren vun't Proxy-Instellskript geev dat en Fehler
Comment[ne]=त्यहाँ प्रोक्सी कन्फिगरेसन स्क्रिप्ट कार्यान्वयन गर्दा एउटा त्रुटि थियो
Comment[nl]=Er deed zich een fout voor tijdens het uitvoeren van het script met de proxyconfiguratie
Comment[nn]=Det oppstod ein feil ved køyring av skriptet for automatisk mellomtenaroppsett
Comment[or]=ଛାୟା ବିନ୍ୟାସ ସ୍କ୍ରିପ୍ଟ ନିଷ୍ପାଦନ କରିବା ସମୟରେ ତ୍ରୁଟି
Comment[pa]=ਪਰਾਕਸੀ ਸੰਰਚਨਾ ਸਕ੍ਰਿਪਟ ਚਲਾਉਣ ਦੌਰਾਨ ਗਲਤੀ ਹੈ
Comment[pl]=Wystąpił błąd w czasie wykonywania skryptu konfiguracji pośrednika
Comment[ps]=د ګوډاګي سازونې سکرېپټ په چلولو کې ستونزه رامنځته شوه
Comment[pt]=Ocorreu um problema ao executar o programa de configuração do 'proxy'
Comment[pt_BR]=Houve um erro ao executar o script de configuração do proxy
Comment[ro]=A apărut o eroare la execuția scriptului de configurare proxy
Comment[ru]=Ошибка при выполнении сценария настройки прокси-сервера
Comment[se]=Meattáhus čuožžilii go vujii gaskabálváheivehanskripta
Comment[sk]=Nastala chyba pri spúšťaní konfiguračného skriptu pre proxy
Comment[sl]=Prišlo je do napake pri izvajanju nastavitvenega skripta posrednika
Comment[sr]=Грешка током извршавања скрипте поставе проксија
Comment[sr@ijekavian]=Грешка током извршавања скрипте поставе проксија
Comment[sr@ijekavianlatin]=Greška tokom izvršavanja skripte postave proksija
Comment[sr@latin]=Greška tokom izvršavanja skripte postave proksija
Comment[sv]=Fel uppstod vid körning av proxyinställningsskriptet
Comment[ta]=மாற்று வடிவமைப்பு குறுநிரலை செயல்படுத்தும்போது பிழை நேர்ந்தது
Comment[te]=ప్రాక్సీ రూపకరణపు స్క్రిప్ట్ నిర్వహణలొ దోషం వున్నది
Comment[tg]=Ҳангоми иҷрокунии дастнависи танзимшавандаи proxy хато пайдо шуд
Comment[th]=เกิดข้อผิดพลาดขึ้นในการเรียกประมวลผลสคริปต์ปรับแต่งพร็อกซี
Comment[tr]=Vekil sunucu yapılandırma dosyası çalıştırılamadı
Comment[ug]=ۋاكالەتچى سەپلىمە قوليازمىسىنى ئىجرا قىلغاندا خاتالىق كۆرۈلدى
Comment[uk]=Помилка запуску скрипту налаштування проксі
Comment[uz]=Proksini moslash uchun skriptni ishga tushirishda xato roʻy berdi
Comment[uz@cyrillic]=Проксини мослаш учун скриптни ишга туширишда хато рўй берди
+Comment[vi]=Có lỗi khi thực thi mã lệnh cấu hình proxy
Comment[wa]=Åk n' a nén stî come dj' enondéve li scripe d' apontiaedje do procsi
Comment[x-test]=xxThere was an error executing the proxy configuration scriptxx
Comment[zh_CN]=执行代理配置脚本时出错
Comment[zh_HK]=代理伺服器組態檔案執行錯誤
Comment[zh_TW]=執行代理組態文稿時發生錯誤
diff --git a/kio/misc/ktelnetservice.desktop b/kio/misc/ktelnetservice.desktop
index 389806ecf3..58d5d5a545 100644
--- a/kio/misc/ktelnetservice.desktop
+++ b/kio/misc/ktelnetservice.desktop
@@ -1,61 +1,62 @@
[Desktop Entry]
Type=Application
Exec=ktelnetservice %u
Icon=utilities-terminal
MimeType=x-scheme-handler/telnet;x-scheme-handler/rlogin;x-scheme-handler/ssh;
X-DocPath=kioslave/telnet/index.html
NoDisplay=true
Name=KTelnetService
Name[bg]=KTelnetService
Name[bs]=KTelnetService
Name[ca]=KTelnetService
Name[ca@valencia]=KTelnetService
Name[cs]=KTelnetService
Name[da]=KTelnetService
Name[de]=KTelnetService
Name[el]=Υπηρεσία KTelnet
Name[en_GB]=KTelnetService
Name[es]=KTelnetService
Name[et]=KTelnetService
Name[eu]=KTelnetService
Name[fi]=KTelnetService
Name[fr]=KTelnetService
Name[gl]=KTelnetService
Name[hr]=KTelnetService
Name[hu]=KTelnetService
Name[ia]=KTelnetService (Servicio de KTelnet)
Name[is]=KTelnetÞjónusta
Name[it]=KTelnetService
Name[ja]=KTelnetService
Name[kk]=KTelnetService
Name[km]=KTelnetService
Name[ko]=KTelnetService
Name[lt]=KTelnetTarnyba
Name[lv]=KTelnetService
Name[nb]=KTelnetService
Name[nds]=KTelnetService
Name[nl]=KTelnetService
Name[pa]=KTelnetService
Name[pl]=Usługa KTelnet
Name[pt]=KTelnetService
Name[pt_BR]=KTelnetService
Name[ro]=Serviciu KTelnet
Name[ru]=Служба telnet KTelnetService
Name[se]=KTelnetService
Name[si]=KTelnetService
Name[sk]=KTelnetService
Name[sr]=KMailService
Name[sr@ijekavian]=KMailService
Name[sr@ijekavianlatin]=KMailService
Name[sr@latin]=KMailService
Name[sv]=Ktelnet-tjänst
Name[th]=KTelnetService
Name[tr]=KTelnetService
Name[ug]=KTelnetService
Name[uk]=Служба telnet KTelnet
+Name[vi]=KTelnetService
Name[wa]=KTelnetService
Name[x-test]=xxKTelnetServicexx
Name[zh_CN]=KTelnetService
Name[zh_TW]=KTelnet服務
diff --git a/kio/misc/mms.protocol b/kio/misc/mms.protocol
index 5eec02e370..ee9af2d959 100644
--- a/kio/misc/mms.protocol
+++ b/kio/misc/mms.protocol
@@ -1,99 +1,99 @@
[Protocol]
helper=true
exec=
defaultMimetype=uri/mms
protocol=mms
input=none
output=none
reading=false
Icon=www
Class=:internet
Description=Microsoft Media Server Protocol
Description[af]=Microsoft Media bedienerprotokol
Description[ar]=بروتوكول خادم وسائط ميكروسوفت
Description[as]=Microsoft Media Server Protocol
Description[ast]=Protocolu Microsoft Media Server
Description[be]=Пратакол Microsoft Media Server
Description[be@latin]=Pratakoł „Microsoft Media Server”
Description[bg]=Прогокол Microsoft Media Server
Description[bn]=মাইক্রোসফ্‌ট মিডিয়া সার্ভার প্রোটোকল
Description[bn_IN]=Microsoft Media Server Protocol
Description[bs]=Protokol Majkrosoftovog medija-servera
Description[ca]=Protocol Microsoft Media Server
Description[ca@valencia]=Protocol Microsoft Media Server
Description[cs]=Microsoft Media Server protokol
Description[csb]=Protokól Microsoft Media Server
Description[da]=Microsoft Medieserver-protokol
Description[de]=Microsoft Media-Server-Protokoll
Description[el]=Πρωτόκολλο για τον Microsoft Media Server
Description[en_GB]=Microsoft Media Server Protocol
Description[eo]=Microsoft-aŭdvida servila protokolo
Description[es]=Protocolo Microsoft Media Server
Description[et]=Microsoft Media Serveri protokoll
Description[eu]=Microsoft Media Server protokoloa
Description[fa]=قرارداد کارساز رسانه میکروسافت
Description[fi]=Microsoft Media -palvelinyhteyskäytäntö
Description[fr]=Protocole Microsoft Média Server
Description[fy]=Microsoft Media Server Protocol
Description[ga]=Prótacal Fhreastalaí Meán Microsoft
Description[gl]=Protocolo Media Server da Microsoft
Description[gu]=માઇક્રોસોફ્ટ મીડીઆ સર્વર પ્રોટોકોલ
Description[he]=פרוטוקול Microsoft Media Server
Description[hi]=माइक्रोसॉफ़्ट मीडिया सर्वर प्रोटोकॉल
Description[hne]=माइक्रोसाफ्ट मीडिया सर्वर प्रोटोकाल
Description[hr]=Protokol Microsoft Media poslužitelja
Description[hsb]=Microsoft Media Server protokol
Description[hu]=MMS protokoll
Description[ia]=Protocollo de servitor de Microsoft Media
Description[id]=Protokol Microsoft Media Server
Description[is]=Microsoft Media Server samskiptaregla
Description[it]=Protocollo Microsoft Media Server
Description[ja]=MMS (Microsoft Media Server) プロトコル
Description[kk]=Microsoft Media Server протоколы
Description[km]=ពិធីកា​ម៉ាស៊ីន​បម្រើ​មេឌៀ​របស់ Microsoft
Description[kn]=ಮೈಕ್ರೋಸಾಫ್ಟ್ ಮಾಧ್ಯಮ ಪರಿಚಾರಕ (ಸರ್ವರ್) ಪ್ರಕ್ರಮ (ಪ್ರೋಟೋಕಾಲ್)
Description[ko]=마이크로소프트 미디어 서버 프로토콜
Description[ku]=Protokola Pêşkêşkerê Microsoft Media
Description[lb]=Microsoft-Media Server-Protokoll
Description[lt]=Microsoft media serverio protokolas
Description[lv]=Microsoft Media Server protokols
Description[mai]=माइक्रोसाफ्ट मीडिया सर्वर प्रोटोकाल
Description[mk]=Microsoft Media Server-протокол
Description[ml]=മൈക്രോസോഫ്റ്റ് മീഡിയ സെര്‍വര്‍ പ്രോട്ടോക്കോള്‍
Description[mr]=Microsoft Media Server शिष्टाचार
Description[ms]=Protokol Pelayan Media Microsoft
Description[nb]=Microsoft Media Server Protocol
Description[nds]=Microsoft-Medienserverprotokoll
Description[ne]=माइक्रोसफ्ट मिडिया सर्भर प्रोटोकल
Description[nl]=Microsoft Media Server-protocol
Description[nn]=Microsoft Media Server-protokoll
Description[or]=Microsoft ସଞ୍ଚାରମାଧ୍ୟମ ସର୍ଭର ପ୍ରୋଟୋକଲ
Description[pa]=Microsoft Media ਸਰਵਰ ਪ੍ਰੋਟੋਕਾਲ
Description[pl]=Protokół Microsoft Media Server
Description[pt]=Protocolo do Microsoft Media Server
Description[pt_BR]=Protocolo do Microsoft Media Server
Description[ro]=Protocol Microsoft Media Server
Description[ru]=Протокол Microsoft Media Server
Description[se]=Microsoft Media Server-protokolla
Description[sk]=Protokol Microsoft Media Server
Description[sl]=Protokol Microsoft Media Server
Description[sq]=Microsoft Media Server Protokoll
Description[sr]=Протокол Мајкрософтовог медија-сервера
Description[sr@ijekavian]=Протокол Мајкрософтовог медија-сервера
Description[sr@ijekavianlatin]=Protokol Microsoftovog medija-servera
Description[sr@latin]=Protokol Microsoftovog medija-servera
Description[sv]=Microsoft mediaserver-protokoll
Description[ta]=மைக்ரோசாப்ட் ஊடக வழங்கி நெறிமுறை
Description[te]=మైక్రొసాఫ్ట్ మీడియా సెర్వర్ ప్రొటొకాల్
Description[tg]=Протоколи хидматгоҳи Microsoft Media
Description[th]=โปรโตคอลสำหรับเซิรฟเวอร์จัดการสื่อของไมโครซอฟต์ (MMS)
Description[tr]=Microsoft Media Server Protokolü
Description[ug]=مىكروسوفت ۋاسىتە مۇلازىمېتىر كېلىشىمى
Description[uk]=Протокол медіа сервера Microsoft
-Description[vi]=Giao thức trình phục vụ phương tiện Microsoft™.
+Description[vi]=Giao thức máy chủ đa phương tiện Microsoft
Description[wa]=Protocole Microsoft Media Server
Description[x-test]=xxMicrosoft Media Server Protocolxx
Description[zh_CN]=微软媒体服务器协议
Description[zh_HK]=Microsoft Media Server 協定
Description[zh_TW]=Microsoft Media Server 協定
URIMode=url
diff --git a/kio/renamedialogplugin.desktop b/kio/renamedialogplugin.desktop
index 45e7b987b1..b5605a4781 100644
--- a/kio/renamedialogplugin.desktop
+++ b/kio/renamedialogplugin.desktop
@@ -1,95 +1,95 @@
[Desktop Entry]
Type=ServiceType
X-KDE-ServiceType=RenameDialog/Plugin
Comment=Plugin for the Rename Dialog
Comment[af]=Inplak vir die herbenaamdialoog
Comment[ar]=ملحق لمربع حوار إعادة التسمية
Comment[as]=পুনঃ নামকৰণ সম্বাদৰ বাবে প্লাগ-ইন
Comment[ast]=Complementu pal diálogu de renomáu
Comment[be]=Дадатак да дыялогу змены назвы
Comment[be@latin]=Plugin dla akna źmieny nazvy
Comment[bg]=Приставка за диалога за преименуване
Comment[bn]=পরিবর্তন
Comment[bn_IN]=নাম পরিবর্তনের ডায়লগের জন্য প্লাগ-ইন
Comment[bs]=Priključak za dijalog preimenovanja
Comment[ca]=Connector per al diàleg de reanomenar
Comment[ca@valencia]=Connector per al diàleg de reanomenar
Comment[cs]=Modul pro přejmenovávací dialog
Comment[csb]=Wtëkôcz dialogòwegò òkna Zmiana miona
Comment[cy]=Ategyn am yr Ymgom Ail-enwi
Comment[da]=Plugin til omdøbningsdialog
Comment[de]=Erweiterung für den Dialog „Umbenennen“
Comment[el]=Πρόσθετο για το διάλογο μετονομασίας
Comment[en_GB]=Plugin for the Rename Dialogue
Comment[eo]=Kromprogramo por la renoma dialogo
Comment[es]=Complemento para la ventana de cambio de nombre
Comment[et]=Ümbernimetamise dialoogi plugin
Comment[eu]=Berrizendatze elkarrizketa-koadroen plugin-a
Comment[fa]=وصله برای محاوره تغییر نام
Comment[fi]=Lisäosa nimenmuuttamisikkunalle
Comment[fr]=Module externe pour la boîte de dialogue de renommage
Comment[fy]=Plugin foar it 'Omneame'-dialooch
Comment[ga]=Breiseán le haghaidh na dialóige athainmnithe
Comment[gl]=Engadido para o diálogo de mudanzas de nomes
Comment[gu]=નામબદલી સંવાદ માટે પ્લગઈન
Comment[he]=תוסף לדו־שיח שינוי שם
Comment[hi]=नाम बदलने वाले संवाद के लिए प्लगइन
Comment[hne]=नाम बदले वाले गोठ बर प्लगइन
Comment[hr]=Priključak za dijalog preimenovanja
Comment[hsb]=Zašćěpka za přemjenowanski dialog
Comment[hu]=Bővítőmodul az átnevezési párbeszédablakhoz
Comment[ia]=Plugin pro le dialogo de re-denomination
Comment[id]=Plugin untuk Dialog Ganti Nama
Comment[is]=Íforrit fyrir 'endurnefna' gluggann
Comment[it]=Plugin per la finestra di dialogo «Rinomina»
Comment[ja]=名前変更ダイアログ用プラグイン
Comment[kk]=Атауын өзгерту диалогтың модулі
Comment[km]=កម្មវិធីជំនួយ​សម្រាប់​ប្រអប់​ប្តូរឈ្មោះ
Comment[kn]=ಮರುಹೆಸರಿಸುವಿಕೆಯ ಸಂವಾದಕ್ಕೆ ಮಿಳಿತಾನ್ವಯ (ಪ್ಲಗಿನ್)
Comment[ko]=이름 바꾸기 대화상자용 플러그인
Comment[ku]=Pêvek ji bo Gotûbêja Nû ve Nav Bike
Comment[lb]=Plugin fir den Ëmbenennen-Dialog
Comment[lt]=Priedas pervadinimo dialogui
Comment[lv]=Spraudnis pārdēvēšanas dialogam
Comment[mai]=नाम बदलबाक लेल समाद क' लेल प्लगइन
Comment[mk]=Приклучок за дијалогот за преименување
Comment[ml]=പേരുമാറ്റല്‍ ചോദ്യത്തിനായുള്ള സംയോജകം
Comment[mr]=पुन्हनामांकन संवाद करीता प्लगइन
Comment[ms]=Plug masuk untuk namakan semula Dialog
Comment[nb]=Programtillegg for omnavningsdialogen
Comment[nds]=Moduul för den Ümnömen-Dialoog
Comment[ne]=पुन: नामकरण संवादका लागि प्लगइन
Comment[nl]=Plugin voor de 'Hernoemen'-dialoog
Comment[nn]=Tillegg til dialogvindauget «Endra namn»
Comment[or]=ପୁନଃ ନାମକରଣ ସଂଳାପ ପାଇଁ ପ୍ଲଗଇନ
Comment[pa]=ਨਾਂ-ਬਦਲਣ ਡਾਈਲਾਗ ਲਈ ਪਲੱਗਇਨ
Comment[pl]=Wtyczka do okna dialogowego Zmiana nazwy
Comment[ps]=د بيانومولو کړکۍ لپاره لګون
Comment[pt]='Plugin' para a Janela de Mudança do Nome
Comment[pt_BR]=Plug-in para a janela renomear
Comment[ro]=Modul pentru dialogul de redenumire
Comment[ru]=Расширение диалога переименования
Comment[se]=Lassemoduvla nammarievdadanláseža várás
Comment[sk]=Modul pre dialóg premenovania
Comment[sl]=Vstavek za pogovorno okno za preimenovanje
Comment[sr]=Прикључак за дијалог преименовања
Comment[sr@ijekavian]=Прикључак за дијалог преименовања
Comment[sr@ijekavianlatin]=Priključak za dijalog preimenovanja
Comment[sr@latin]=Priključak za dijalog preimenovanja
Comment[sv]=Insticksprogram för Byt namn-dialogrutan
Comment[ta]=மறுபெயரிடல் பலகத்துக்கான செருகி
Comment[te]=పేరు మార్చు సంభాషణ కొరకు ప్లగిన్
Comment[tg]=Васлкунак барои номивази диалог
Comment[th]=โปรแกรมเสริมสำหรับกล่องเปลี่ยนชื่อ
Comment[tr]=Yeniden İsimlendir Penceresi İçin Eklenti
Comment[ug]=ئات ئۆزگەرتىش سۆزلەشكۈ ئۈچۈن قىستۇرما
Comment[uk]=Додаток для створення діалогового вікна перейменування
Comment[uz]=Nomini oʻzgartirish dialogi uchun plagin
Comment[uz@cyrillic]=Номини ўзгартириш диалоги учун плагин
-Comment[vi]=Bổ sung cho hộp thoại thay đổi tên.
+Comment[vi]=Phần bổ sung cho Hộp thoại đổi tên
Comment[wa]=Tchôke-divins pol purnea di rlomaedje
-Comment[x-test]=xxPlugin for the Rename Dialogxx
Comment[xh]=Iplagi yangaphakathi Yencoko yababini Yokunika igama elitsha
+Comment[x-test]=xxPlugin for the Rename Dialogxx
Comment[zh_CN]=重命名对话框插件
Comment[zh_HK]=更名對話盒的外掛程式
Comment[zh_TW]=更名對話盒的外掛程式
diff --git a/kio/tests/dummymeta.desktop b/kio/tests/dummymeta.desktop
index 1a6b874a06..722358abb5 100644
--- a/kio/tests/dummymeta.desktop
+++ b/kio/tests/dummymeta.desktop
@@ -1,97 +1,97 @@
[Desktop Entry]
Type=Service
Name=Dummy Meta
Name[af]=Fop Meta
Name[ar]=بيانات وهمية
Name[as]=Dummy Meta
Name[ast]=Falsu Meta
Name[be]=Парожнія звесткі
Name[be@latin]=Pustyja metaźviestki
Name[bg]=Dummy Meta
Name[bn]=ডামি মেটা
Name[bn_IN]=ডামি মিটা
Name[bs]=Lažni meta
Name[ca]=Dummy Meta
Name[ca@valencia]=Dummy Meta
Name[cs]=Prázdné meta
Name[csb]=Testowé pòdôwczi
Name[cy]=Meta Dymi
Name[da]=Dummy-meta
Name[de]=Dummy Meta
Name[el]=Εικονικό Meta
Name[en_GB]=Dummy Meta
Name[eo]=Ŝajnaj metadatumoj
Name[es]=Dummy Meta
Name[et]=Dummy meta
Name[eu]=Dummy Meta
Name[fa]=فراساختگی
Name[fi]=Tyhjä meta
Name[fr]=Données factices
Name[fy]=Dummy Meta
Name[ga]=Meitea Caoch
Name[gl]=Dummy Meta
Name[gu]=નકલી મેટા
Name[he]=Dummy Meta
Name[hi]=डमी मेटा
Name[hne]=डमी मेटा
Name[hr]=Ogledni meta podatak
Name[hsb]=Dummy Meta
Name[hu]=Üres (dummy) metaadat
Name[ia]=Dummy Meta
Name[id]=Meta Rekaan
Name[is]=Dummy Meta
Name[it]=Informazioni aggiuntive posticce
Name[ja]=Dummy Meta
Name[kk]=Метадерек үлгісі
Name[km]=មេតា Dummy
Name[kn]=ಸೋಗಿನ (ಡಮ್ಮಿ) ಘನದತ್ತ
Name[ko]=가짜 메타
Name[ku]=Meta Çêkirîtî
Name[lb]=Dummy-Meta
Name[lt]=Netikras Meta
Name[lv]=Testa metadati
Name[mai]=डमी मेटा
Name[ml]=വെറുതെയുള്ള മെറ്റാ
Name[mr]=नक्कली मेटा
Name[ms]=Meta Olok-olok
Name[nb]=Dummy Meta
Name[nds]=Dummy Meta
Name[ne]=डमी मेटा
Name[nl]=Dummy Meta
Name[nn]=Eksempelmeta
Name[or]=ନକଲି ମେଟା
Name[pa]=ਫ਼ਰਜੀ ਮੈਟਾ
Name[pl]=Dane testowe
Name[pt]=Dummy Meta
Name[pt_BR]=Metadado fictício
Name[ro]=Test Meta
Name[ru]=Пустые метаданные
Name[se]=Dummy Meta
Name[sk]=Prázdne meta
Name[sl]=Slepi Meta
Name[sq]=Dummy Meta
Name[sr]=Лажни мета
Name[sr@ijekavian]=Лажни мета
Name[sr@ijekavianlatin]=Lažni meta
Name[sr@latin]=Lažni meta
Name[sv]=Testmeta
Name[ta]=வெற்று மெட்டா
Name[te]=డమ్మి మెటా
Name[tg]=Dummy Meta
Name[th]=ข้อมูลกำกับเทียม
Name[tr]=Kukla Meta
Name[ug]=مۆلچەر مېتا
Name[uk]=Макет метаданих
Name[uz]=Maʼnosiz meta
Name[uz@cyrillic]=Маъносиз мета
Name[vi]=Siêu giả
Name[wa]=Biesse meta-dnêye
-Name[x-test]=xxDummy Metaxx
Name[xh]=Dummy Meta
+Name[x-test]=xxDummy Metaxx
Name[zh_CN]=哑元
Name[zh_HK]=空的資料定義
Name[zh_TW]=空的資料定義
X-KDE-ServiceTypes=KFilePlugin
X-KDE-Library=dummymeta
MimeType=text/plain;
PreferredItems=Author,Title,Date
diff --git a/kioslave/http/http_cache_cleaner.desktop b/kioslave/http/http_cache_cleaner.desktop
index 7a1f5b211e..16b78df27c 100644
--- a/kioslave/http/http_cache_cleaner.desktop
+++ b/kioslave/http/http_cache_cleaner.desktop
@@ -1,191 +1,191 @@
[Desktop Entry]
Type=Service
Name=HTTP Cache Cleaner
Name[af]=HTTP Kasskoonmaker
Name[ar]=منظف مخبأ HTTP
Name[as]=HTTP কেছে পৰিষ্কাৰ কৰা সৰঞ্জাম
Name[ast]=Llimpiador de la caché HTTP
Name[be]=Ачыстка кэшу HTTP
Name[be@latin]=Vyčyščeńnie padručnaj pamiaci HTTP
Name[bg]=Изчистване на кеш-паметта на HTTP
Name[bn]=এইচ-টি-টি-পি ক্যাশ ক্লীনার
Name[bn_IN]=HTTP ক্যাশে পরিশ্রুতি ব্যবস্থা
Name[br]=Naeter Krubuilh HTTP
Name[bs]=Čistač HTTP keša
Name[ca]=Neteja la memòria cau del HTTP
Name[ca@valencia]=Neteja la memòria cau del HTTP
Name[cs]=Nástroj pro vyprázdnění cache protokolu HTTP
Name[csb]=Czëszczenié cache HTTP
Name[cy]=Glanhauwr Storfa HTTP
Name[da]=HTTP-cache-rydder
Name[de]=Aufräumprogramm für den HTTP-Zwischenspeicher
Name[el]=Καθαριστής λανθάνουσας μνήμης HTTP
Name[en_GB]=HTTP Cache Cleaner
Name[eo]=HTTP-kaŝmemora purigilo
Name[es]=Limpiador de la caché de HTTP
Name[et]=HTTP vahemälu puhastaja
Name[eu]=HTTP cache-garbitzailea
Name[fa]=پاک‌کننده نهانگاه قام
Name[fi]=HTTP-välimuistin tyhjentäjä
Name[fr]=Nettoyage du cache HTTP
Name[fy]=HTTP Cache oprommer
Name[ga]=Glantóir Taisce HTTP
Name[gl]=Limpador da caché de HTTP
Name[gu]=HTTP કૅશ સાફ કરનાર
Name[he]=מנקה מטמון ה־HTTP
Name[hi]=एचटीटीपी कैच क्लीनर
Name[hne]=एचटीटीपी कैच क्लीनर
Name[hr]=Brisač HTTP-ove međumemorije
Name[hsb]=HTTP Cache Cleaner
Name[hu]=HTTP gyorstártisztító
Name[ia]=Mundator de le HTTP Cache
Name[id]=Pembersih Tembolok HTTP
Name[is]=Hreinsiforrit HTTP skyndiminnis
Name[it]=Ripulitore della cache HTTP
Name[ja]=HTTP キャッシュマネージャ
Name[kk]=HTTP кэшін босату
Name[km]=កម្មវិធី​សម្អាត​ឃ្លាំង​សម្ងាត់ HTTP
Name[kn]=HTTP ಸಿದ್ಧಸ್ಮೃತಿ (ಕಾಶೆ) ಶುಚಿಕಾರ (ಕ್ಲೀನರ್)
Name[ko]=HTTP 캐시 청소기
Name[ku]=Jê bira Nav-bîra HTTP
Name[lb]=Opraumer fir den HTTP-Zwëschespäicher
Name[lt]=HTTP krepšio ištuštintojas
Name[lv]=HTTP kešatmiņas tīrītājs
Name[mai]=एचटीटीपी कैच क्लीनर
Name[mk]=Бришење на HTTP-кешот
Name[ml]=എച്ച്ടിടിപി കാഷ് വൃത്തിയാക്കുന്നത്
Name[mr]=HTTP कॅशे क्लीनर
Name[ms]=Pembersih Penyimpan HTTP
Name[nb]=HTTP-hurtiglagerrenser
Name[nds]=Reenmaker för HTTP-Twischenspieker
Name[ne]=एचटीटीपी क्यास क्लिनर
Name[nl]=HTTP Cache opschonen
Name[nn]=Opprydding av HTTP-mellomlager
Name[or]=HTTP ଗୁପ୍ତ ଭଣ୍ଡାର ମାର୍ଜକ
Name[pa]=HTTP ਕੈਸ਼ ਸਾਫ਼ ਕਰੋ
Name[pl]=Czyszczenie bufora HTTP
Name[ps]=پټياد پاکوونکی HTTP
Name[pt]=Limpeza da Cache de HTTP
Name[pt_BR]=Limpador de cache HTTP
Name[ro]=Curățător cache HTTP
Name[ru]=Очистка кэша HTTP
Name[se]=HTTP gaskarádjosa buhtisteaddji
Name[si]=HTTP කැච් මකනය
Name[sk]=Čistič vyrovnávacej pamäte HTTP
Name[sl]=Čistilnik predpomnilnika HTTP
Name[sr]=Чистач ХТТП кеша
Name[sr@ijekavian]=Чистач ХТТП кеша
Name[sr@ijekavianlatin]=Čistač HTTP keša
Name[sr@latin]=Čistač HTTP keša
Name[sv]=HTTP-cache-rensare
Name[ta]=HTTP நினைவு போக்கி
Name[te]=హెచ్ టిటిపి కోశం శుభ్రంచేసేది
Name[tg]=Тозакунаки HTTP Cache
Name[th]=ตัวล้างแคช HTTP
Name[tr]=HTTP Önbellek Temizleyici
Name[ug]=HTTP غەملەك تازىلىغۇچ
Name[uk]=Очищувач кешу HTTP
Name[uz]=HTTP kesh boʻshatgich
Name[uz@cyrillic]=HTTP кэш бўшатгич
Name[vi]=Bộ làm sạch bộ nhớ tạm HTTP
Name[wa]=Netieu del muchete HTTP
-Name[x-test]=xxHTTP Cache Cleanerxx
Name[xh]=Umcoci wendawo efihlakeleyo yokugcina we HTTP
+Name[x-test]=xxHTTP Cache Cleanerxx
Name[zh_CN]=HTTP 缓存清除程序
Name[zh_HK]=HTTP 快取清除程式
Name[zh_TW]=HTTP 快取清除程式
Exec=kio_http_cache_cleaner
Comment=Cleans up old entries from the HTTP cache
Comment[af]=Skoonmaak begin ou inskrywings van die Http kas
Comment[ar]=يزيل المدخلات القديمة من مخبأ HTTP
Comment[as]=HTTP কেছেৰ পৰা পূৰণা নিবেশ পৰিষ্কাৰ কৰে
Comment[ast]=Llimpia entráes antigües de la caché HTTP
Comment[be]=Выдаляе старыя запісы з кэшу HTTP
Comment[be@latin]=Vyčyščaje staryja zapisy z padručnaj pamiaci HTTP
Comment[bg]=Изчистване на старите данни в кеш-паметта на HTTP
Comment[bn]=HTTP ক্যাশ থেকে পুরনো তথ্য মুছে ফেলে
Comment[bn_IN]=HTTP ক্যাশে থেকে পুরোনো তথ্য মুছে ফেলা হয়
Comment[br]=Skarañ enmontoù kozh diwar ar grubuilh HTTP
Comment[bs]=Čisti stare stavke iz HTTP keša
Comment[ca]=Neteja les entrades antigues de la memòria cau del HTTP
Comment[ca@valencia]=Neteja les entrades antigues de la memòria cau del HTTP
Comment[cs]=Odstraňuje staré položky z HTTP cache
Comment[csb]=Rëmô stôré wpisënczi z cache HTTP
Comment[cy]=Glanhau'r hen gofnodion o'r storfa HTTP
Comment[da]=Rydder op i gamle indgange fra HTTP-cachen
Comment[de]=Löscht alte Einträge aus dem HTTP-Zwischenspeicher
Comment[el]=Καθαρίζει παλιές καταχωρήσεις από τη λανθάνουσα μνήμη HTTP
Comment[en_GB]=Cleans up old entries from the HTTP cache
Comment[eo]=Forigas malnovajn erojn el HTTP-kaŝmemoro
Comment[es]=Elimina las entradas antiguas de la caché de HTTP
Comment[et]=Puhastab HTTP vahemälu vanadest kirjetest
Comment[eu]=HTTP cachearen sarrera zaharrak garbitzen ditu
Comment[fa]=مدخلهای قدیمی را از نهانگاه قام پاک می‌کند
Comment[fi]=Puhdistaa vanhat tiedot HTTP-välimuistista
Comment[fr]=Efface les anciennes entrées du cache HTTP
Comment[fy]=Ferwidert âlde items út de HTTP-cache
Comment[ga]=Glanann seaniontrálacha ón taisce HTTP
Comment[gl]=Elimina as entradas antigas da caché de HTTP
Comment[gu]=HTTP કૅશમાંથી જૂનાં દાખલાઓ દૂર કરે છે
Comment[he]=מנקה רשומות ישנות ממטמון ה־HTTP
Comment[hi]=एचटीटीपी कैच से पुरानी प्रविष्टियों को साफ करता है
Comment[hne]=एचटीटीपी कैच से जुन्ना प्रविस्टि मन ल साफ करथे
Comment[hr]=Uklanjanje starih unosa iz HTTP-ove međumemorije
Comment[hsb]=Wumaza stare zapisy z temporerneho pomjatka HTTP
Comment[hu]=Kitörli a régi bejegyzéseket a HTTP gyorstárból
Comment[ia]=Il munda le vetere entratas ab le cache HTTP
Comment[id]=Membersihkan entri lama dari tembolok HTTP
Comment[is]=Hreinsar gamlar færslur úr HTTP skyndiminninu
Comment[it]=Ripulisce la cache HTTP dalle voci vecchie
Comment[ja]=HTTP キャッシュから古いエントリを削除します
Comment[kk]=HTTP кэшін ескі жазулардан тазалау
Comment[km]=សម្អាត​ធាតុ​ចាស់ៗ​ពី​ឃ្លាំង​សម្ងាត់ HTTP
Comment[kn]=HTTP ಸಿದ್ಧಸ್ಮೃತಿ (ಕಾಶೆ) ಯಲ್ಲಿನ ಹಳೇ ನಮೂದುಗಳನ್ನು ತೆಗೆದು ಶುಚಿಗೊಳಿಸುತ್ತದೆ
Comment[ko]=HTTP 캐시의 오래 된 항목을 정리합니다
Comment[ku]=Têketin ên kevn jê nav-bîra HTTP dibe
Comment[lb]=Entfernt al Entréen aus dem HTTP-Zwëschespäicher
Comment[lt]=Išvalo senus įrašus iš HTTP krepšio
Comment[lv]=Iztīra vecos ierakstus no HTTP kešatmiņas
Comment[mai]=एचटीटीपी कैच सँ पुरान प्रविष्टिसभकेँ साफ करैत अछि
Comment[mk]=Ги брише старите работи од HTTP кешот
Comment[ml]=പഴയവ മാറ്റി എച്ച്ടിടിപി കാഷ് വൃത്തിയാക്കുന്നു
Comment[mr]=HTTP कॅशे पासून जुण्या नोंदणी काढूण टाकतो
Comment[ms]=Membersihkan masukan lama daripada penyimpan HTTP
Comment[nb]=Fjerner gamle oppføringer fra hurtiglageret for HTTP
Comment[nds]=Smitt ole Indrääg ut den HTTP-Twischenspieker rut
Comment[ne]=एचटीटीपी क्यासबाट पुराना प्रविष्टि सफा गर्दछ
Comment[nl]=Verwijdert oude items uit de HTTP-cache
Comment[nn]=Reinskar opp i gamle oppføringar i HTTP-mellomlageret
Comment[or]=HTTP ଗୁପ୍ତ ଭଣ୍ଡାର ରୁ ପୁରୁଣା ନିବେଶ ଗୁଡିକୁ ସଫାକରନ୍ତୁ
Comment[pa]=HTTP ਕੈਸ਼ ਤੋਂ ਪੁਰਾਣੀਆਂ ਐਂਟਰੀਆਂ ਸਾਫ਼ ਕਰੋ
Comment[pl]=Usuwa stare wpisy z bufora HTTP
Comment[ps]=پټياد څخه زړې ننوتنې پاکوي HTTP د
Comment[pt]=Limpa o conteúdo desactualizado da cache do HTTP
Comment[pt_BR]=Limpa itens antigos do cache HTTP
Comment[ro]=Elimină înregistrările vechi din cache-ul HTTP
Comment[ru]=Удаление устаревших элементов из кэша HTTP
Comment[se]=Buhtista boares merkošiid HTTP gaskarádjosis
Comment[sk]=Vyčistí staré položky z vyrovnávacej pamäte HTTP
Comment[sl]=Zbriše stare vnose iz pomnilnika HTTP
Comment[sr]=Чисти старе ставке из ХТТП кеша
Comment[sr@ijekavian]=Чисти старе ставке из ХТТП кеша
Comment[sr@ijekavianlatin]=Čisti stare stavke iz HTTP keša
Comment[sr@latin]=Čisti stare stavke iz HTTP keša
Comment[sv]=Rensar bort gamla poster från HTTP-cachen
Comment[ta]=HTTP நினைவிலிருந்து பழையவற்றை போக்குகிறது
Comment[te]=హెచ్ టిటిపి కోశం నుంచి పాత ఆరొపములను శుభ్రం చేసేది
Comment[tg]=Воридҳои кӯҳна аз HTTP cache тоза мекунад
Comment[th]=ล้างรายการเก่าออกจากแคช HTTP
Comment[tr]=HTTP önbelleğinden eski girdileri siler
Comment[ug]=HTTP غەملەكتىن كونا تۈرلەرنى تازىلايدۇ
Comment[uk]=Вичищає старі елементи з кешу HTTP
Comment[uz]=HTTP keshidagi eski elementlarni oʻchiradi
Comment[uz@cyrillic]=HTTP кэшидаги эски элементларни ўчиради
-Comment[vi]=Xoá sạch các mục nhập cũ ra bộ nhớ tạm HTTP.
+Comment[vi]=Xóa các mục cũ khỏi bộ đệm HTTP
Comment[wa]=Neteye les viyès intrêyes del muchete HTTP
-Comment[x-test]=xxCleans up old entries from the HTTP cachexx
Comment[xh]=Icoca amangeno amadala asuka kwindawo efihlakeleyo yokugcina ye HTTP
+Comment[x-test]=xxCleans up old entries from the HTTP cachexx
Comment[zh_CN]=从 HTTP 缓存中清除旧条目
Comment[zh_HK]=從 HTTP 快取中清除舊的項目
Comment[zh_TW]=從 HTTP 快取中清除舊的項目
X-KDE-StartupNotify=false
diff --git a/kioslave/http/kcookiejar/kcookiejar.desktop b/kioslave/http/kcookiejar/kcookiejar.desktop
index 93b1a2737e..3c8846bb69 100644
--- a/kioslave/http/kcookiejar/kcookiejar.desktop
+++ b/kioslave/http/kcookiejar/kcookiejar.desktop
@@ -1,123 +1,125 @@
[Desktop Entry]
Type=Service
Name=Cookie Jar
Name[bg]=Буркан за бисквитки
Name[bn]=কুকি জার
Name[bs]=Kolekcija kolačića
Name[ca]=Repositori de galetes
Name[ca@valencia]=Repositori de galetes
Name[cs]=Cookie Jar
Name[da]=Cookie Jar
Name[de]=Cookie-Behälter
Name[el]=Cookie Jar
Name[en_GB]=Cookie Jar
Name[es]=Almacén de cookies
Name[et]=Küpsisekarp
Name[eu]=Cookie ontzia
+Name[fa]=ظرف کوکی
Name[fi]=Evästeiden säilytys
Name[fr]=Boîte à cookies
Name[ga]=Crúiscín Fianán
Name[gl]=Bote de cookies
Name[hr]=Cookie Jar
Name[hu]=Cookie-tároló
Name[ia]=Cookie Jar
Name[id]=Jar Kuki
Name[is]=Smákökukrukka
Name[it]=Modulo Jar dei cookie
Name[ja]=クッキー Jar
Name[kk]=Cookie сауыты
Name[km]=ខូឃី Jar
Name[ko]=쿠키 병
Name[ku]=Cookie Jar
Name[lv]=Sīkdatņu trauks
Name[nb]=Lager for informasjonskapsler
Name[nds]=Kookjepleeg
Name[nl]=Cookie-depot
Name[pa]=ਕੂਕੀਜ਼ ਜ਼ਾਰ
Name[pl]=Przechowywanie ciasteczek
Name[pt]=Repositório de 'Cookies'
Name[pt_BR]=Repositório de cookies
Name[ro]=Modul Cookie JAR
Name[ru]=Служба cookie
Name[se]=Diehtočoahkorádju
Name[sk]=Úložisko cookie
Name[sl]=Posoda s piškotki
Name[sr]=Тегла за колачиће
Name[sr@ijekavian]=Тегла за колачиће
Name[sr@ijekavianlatin]=Tegla za kolačiće
Name[sr@latin]=Tegla za kolačiće
Name[sv]=Kakburk
Name[ta]=Cookie Jar
Name[tg]=Cookie Jar
Name[th]=โถคุกกี้
Name[tr]=Cookie Jar
Name[ug]=Cookie Jar
Name[uk]=Глечик з куками
Name[wa]=Coûke Jar
Name[x-test]=xxCookie Jarxx
Name[zh_CN]=Cookie Jar 模块
Name[zh_TW]=Cookie Jar
Comment=Stores network cookies
Comment[bg]=Съхранява мрежовите бисквитки
Comment[bs]=Skladišti mrežne kolačiće
Comment[ca]=Emmagatzema les galetes de la xarxa
Comment[ca@valencia]=Emmagatzema les galetes de la xarxa
Comment[cs]=Ukládá síťová cookie
Comment[da]=Gemmer netværkscookies
Comment[de]=Netzwerk-Cookies speichern
Comment[el]=Αποθήκευση δικτυακών cookies
Comment[en_GB]=Stores network cookies
Comment[es]=Almacena cookies de la red
Comment[et]=Võrguküpsiste salvestamine
Comment[eu]=Sareko cookie-ak biltegiratzen ditu
Comment[fi]=Säilyttää verkkoevästeitä
Comment[fr]=Enregistre les cookies réseaux
Comment[ga]=Stórálann sé seo fianáin líonra
Comment[gl]=Garda cookies da rede
Comment[hr]=Sprema mrežne kolačiće
Comment[hu]=Hálózati sütik tárolása
Comment[ia]=Il immagazina le cookies de rete
Comment[id]=Simpan kuki jaringan
Comment[is]=Geymir smákökur af netum
Comment[it]=Salva cookie di rete
Comment[ja]=ネットワーククッキーを保存
Comment[kk]=Желі cookie сақтайтын орын
Comment[km]=រក្សាទុក​ខូឃី​បណ្ដាញ
Comment[ko]=네트워크 쿠키를 저장합니다
Comment[ku]=Çerezên torê tomar dike
Comment[lv]=Galbā tīkla sīkdatnes
Comment[nb]=Lagrer informasjonskapsler fra nettverket
Comment[nds]=Wohrt Nettwark-Kookjes
Comment[nl]=Slaat netwerk-cookies op
Comment[pa]=ਨੈੱਟਵਰਕ ਕੂਕੀਜ਼ ਸਟੋਰ ਕਰੋ
Comment[pl]=Przechowuje ciasteczka sieciowe
Comment[pt]=Guarda os 'cookies' da rede
Comment[pt_BR]=Armazena os cookies da rede
Comment[ro]=Stochează cookie-uri de rețea
Comment[ru]=Сохранение сетевых cookie
Comment[se]=Vurke fierpmádatdiehtočoahkuid
Comment[sk]=Ukladá sieťové cookies
Comment[sl]=Hrani omrežne piškotke
Comment[sr]=Складишти мрежне колачиће
Comment[sr@ijekavian]=Складишти мрежне колачиће
Comment[sr@ijekavianlatin]=Skladišti mrežne kolačiće
Comment[sr@latin]=Skladišti mrežne kolačiće
Comment[sv]=Lagrar nätverkskakor
Comment[ta]=பிணைய நினைவிகளை சேமிக்கிறது
Comment[tg]=Нигоҳдории хусиятҳои шабака
-Comment[th]=จัดเก็บคุกกี้ต่างๆ ที่ได้จากเครือข่าย
+Comment[th]=จัดเก็บคุกกี้ต่าง ๆ ที่ได้จากเครือข่าย
Comment[tr]=Ağ çerezlerini saklar
Comment[ug]=تور cookie نى ساقلايدۇ
Comment[uk]=Зберігання кук мережі
+Comment[vi]=Lưu cookies mạng
Comment[wa]=Wåde les coûkes del rantoele
Comment[x-test]=xxStores network cookiesxx
Comment[zh_CN]=存储网络 cookie
Comment[zh_TW]=儲存網路 cookie
X-KDE-ServiceTypes=KDEDModule
Exec=kcookiejar4
X-DBUS-StartupType=Unique
X-KDE-StartupNotify=false
X-KDE-Library=kcookiejar
X-KDE-DBus-ModuleName=kcookiejar
X-KDE-Kded-autoload=false
X-KDE-Kded-load-on-demand=true
diff --git a/knotify/tests/knotifytest.notifyrc b/knotify/tests/knotifytest.notifyrc
index f8d467405d..7c4439e8b9 100644
--- a/knotify/tests/knotifytest.notifyrc
+++ b/knotify/tests/knotifytest.notifyrc
@@ -1,606 +1,613 @@
[Global]
IconName=knotifytest
Comment=Test for Knotify
Comment[af]=Toets vir Knotify
Comment[ar]=اختبار لـ Knotify
Comment[as]=Knotify ৰ বাবে পৰীক্ষা
Comment[ast]=Prueba pa KNotify
Comment[be@latin]=Test dla słužby „Knotify”
Comment[bg]=Тест за Knotify
Comment[bn]=কে-নোটিফাই-এর জন্য পরীক্ষা
Comment[bn_IN]=Knotify সংক্রান্ত পরীক্ষা
Comment[bs]=Proba za K‑obaveštenja
Comment[ca]=Prova pel Knotify
Comment[ca@valencia]=Prova pel Knotify
Comment[cs]=Test pro KNotify
Comment[csb]=Test dlô Knotify
Comment[da]=Test for Knotify
Comment[de]=Test für KNotify
Comment[el]=Δοκιμή του Knotify
Comment[en_GB]=Test for Knotify
Comment[eo]=Testo por Knotify
Comment[es]=Prueba para Knotify
Comment[et]=Knotify test
Comment[eu]=Knotify-rendako testua
Comment[fa]=آزمون برای Knotify
Comment[fi]=Testi ilmoitusjärjestelmälle
Comment[fr]=Test pour Knotify
Comment[fy]=Test foar Knotify
Comment[ga]=Tástáil Knotify
Comment[gl]=Proba do KNotify
Comment[gu]=Knotify માટે ચકાસણી
Comment[he]=בדיקה עבור Knotify
Comment[hi]=के-नोटिफ़ाई के लिए जाँच
Comment[hne]=के-नोटिफाई बर जांच
Comment[hr]=Proba za Knotify
Comment[hsb]=Test za Knotify
Comment[hu]=A KNotify tesztelése
Comment[ia]=Essayo pro Knotify
Comment[id]=Tes Knotify
Comment[is]=Prófun á Knotify
Comment[it]=Prova per Knotify
Comment[ja]=Knotify のためのテスト
Comment[kk]=Knotify-дің сынағы
Comment[km]=សាកល្បង​សម្រាប់ Knotify
Comment[kn]=ಕೆನೋಟಿಫೈ ಗೆ ಪರೀಕ್ಷೆ
Comment[ko]=Knotify 테스트
Comment[ku]=Ceribandin ji bo Khişyarî
Comment[lt]=Knotify testas
Comment[lv]=Knotify tests
Comment[mai]=के-नोटिफ़ाई क' लेल जाँच
Comment[mk]=Тест за Knotify
Comment[ml]=കെനോടിഫൈയുടെ പരിശോധന
Comment[mr]=Knotify करीता चाचणी
Comment[nb]=Test for Knotify
Comment[nds]=Na KNotify kieken
Comment[ne]=केडीई सूचनाका लागि परीक्षण
Comment[nl]=Test voor KNotify
Comment[nn]=Test for KNotify
Comment[or]=Knotify ପାଇଁ ପରୀକ୍ଷଣ
Comment[pa]=ਕੇ-ਨੋਟੀਫਾਈ ਲਈ ਟੈਸਟ
Comment[pl]=Test Knotify
Comment[ps]=لپاره ازموېنه Knotify د
Comment[pt]=Teste do KNotify
Comment[pt_BR]=Teste do KNotify
Comment[ro]=Test pentru Knotify
Comment[ru]=Проверка работы Knotify
Comment[se]=Knotify-geahččaleapmi
Comment[sk]=Test pre Knotify
Comment[sl]=Test za Knotify
Comment[sr]=Проба за К‑обавештења
Comment[sr@ijekavian]=Проба за К‑обавјештења
Comment[sr@ijekavianlatin]=Proba za K‑obavještenja
Comment[sr@latin]=Proba za K‑obaveštenja
Comment[sv]=Test av Knotify
Comment[ta]=Knotifyக்கான சோதனை
Comment[tg]=Санҷиши Knotify
Comment[th]=การทดสอบสำหรับ KNotify
Comment[tr]=Knotify için Test
Comment[ug]=Knotify ئۈچۈن سىناق
Comment[uk]=Тест для Knotify
+Comment[vi]=Kiểm tra Knotify
Comment[wa]=Asprouvaedje po KNotify
Comment[x-test]=xxTest for Knotifyxx
Comment[zh_CN]=Knotify 测试
Comment[zh_TW]=測試 Knotify
Version=4
[Context/group]
Name=Group
Name[af]=Groep
Name[ar]=المجموعة
Name[as]=সমষ্টি
Name[ast]=Agrupar
Name[be]=Група
Name[be@latin]=Hrupa
Name[bg]=Група
Name[bn]=গ্রুপ
Name[bn_IN]=দল
Name[bs]=Grupa
Name[ca]=Grup
Name[ca@valencia]=Grup
Name[cs]=Skupina
Name[csb]=Grëpa
Name[da]=Gruppe
Name[de]=Gruppe
Name[el]=Ομάδα
Name[en_GB]=Group
Name[eo]=Grupo
Name[es]=Grupo
Name[et]=Grupp
Name[eu]=Taldea
Name[fa]=گروه
Name[fi]=Ryhmä
Name[fr]=Groupe
Name[fy]=Groep
Name[ga]=Grúpa
Name[gl]=Grupo
Name[gu]=જૂથ
Name[he]=קבוצה
Name[hi]=समूह
Name[hne]=समूह
Name[hr]=Grupa
Name[hsb]=Skupina
Name[hu]=Csoport
Name[ia]=Gruppo
Name[id]=Grup
Name[is]=Hópur
Name[it]=Gruppo
Name[ja]=グループ
Name[kk]=Топ
Name[km]=ក្រុម
Name[kn]=ಸಮೂಹ
Name[ko]=그룹
Name[ku]=Kom
Name[lt]=Grupė
Name[lv]=Grupa
Name[mai]=समूह
Name[mk]=Група
Name[ml]=കൂട്ടം
Name[mr]=समुह
Name[ms]=Kumpulan
Name[nb]=Gruppe
Name[nds]=Koppel
Name[ne]=समूह
Name[nl]=Groep
Name[nn]=Gruppe
Name[oc]=Grop
Name[or]=ସମୂହ
Name[pa]=ਗਰੁੱਪ
Name[pl]=Grupa
Name[ps]=ډله
Name[pt]=Grupo
Name[pt_BR]=Grupo
Name[ro]=Grup
Name[ru]=Группа
Name[se]=Joavku
Name[si]=සමූහය
Name[sk]=Skupina
Name[sl]=Skupina
Name[sq]=Grupi
Name[sr]=Група
Name[sr@ijekavian]=Група
Name[sr@ijekavianlatin]=Grupa
Name[sr@latin]=Grupa
Name[sv]=Grupp
Name[ta]=குழுமம்
Name[tg]=Гурӯҳ
Name[th]=กลุ่ม
Name[tr]=Grup
Name[ug]=گۇرۇپپا
Name[uk]=Група
+Name[vi]=Nhóm
Name[wa]=Groupe
Name[x-test]=xxGroupxx
Name[zh_CN]=组
Name[zh_TW]=群組
Comment=The group
Comment[af]=Die groep
Comment[ar]=المجموعة
Comment[as]=সমষ্টিটো
Comment[ast]=El grupu
Comment[be@latin]=Hrupa
Comment[bg]=Група
Comment[bn]=গ্রুপটি
Comment[bn_IN]=দল
Comment[bs]=Grupa
Comment[ca]=El grup
Comment[ca@valencia]=El grup
Comment[cs]=Skupina
Comment[csb]=Grëpa
Comment[da]=Gruppen
Comment[de]=Die Gruppe
Comment[el]=Η ομάδα
Comment[en_GB]=The group
Comment[eo]=La grupo
Comment[es]=El grupo
Comment[et]=Grupp
Comment[eu]=Taldea
Comment[fa]=گروه
Comment[fi]=Ryhmä
Comment[fr]=Le groupe
Comment[fy]=De groep
Comment[ga]=An grúpa
Comment[gl]=O grupo
Comment[gu]=સમૂહ
Comment[he]=הקבוצה
Comment[hi]=समूह
Comment[hne]=समूह
Comment[hr]=Grupa
Comment[hsb]=Skupina
Comment[hu]=A csoport
Comment[ia]=Le gruppo
Comment[id]=Grup
Comment[is]=Hópurinn
Comment[it]=Il gruppo
Comment[ja]=グループ
Comment[kk]=Тобы
Comment[km]=ក្រុម
Comment[kn]=ಸಮೂಹ
Comment[ko]=그룹
Comment[ku]=Kom
Comment[lt]=Grupė
Comment[lv]=Grupa
Comment[mai]=समूह
Comment[mk]=Групата
Comment[ml]=കൂട്ടം
Comment[mr]=समुह
Comment[nb]=Gruppa
Comment[nds]=De Koppel
Comment[ne]=समूह
Comment[nl]=De groep
Comment[nn]=Gruppa
Comment[or]=ଏହି ସମୂହ
Comment[pa]=ਗਰੁੱਪ
Comment[pl]=Grupa
Comment[ps]=ډله
Comment[pt]=O grupo
Comment[pt_BR]=O grupo
Comment[ro]=Grupul
Comment[ru]=Группа
Comment[se]=Joavku
Comment[si]=සමූහය
Comment[sk]=Skupina
Comment[sl]=Skupina
Comment[sr]=Група
Comment[sr@ijekavian]=Група
Comment[sr@ijekavianlatin]=Grupa
Comment[sr@latin]=Grupa
Comment[sv]=Gruppen
Comment[ta]=குழுமம்
Comment[tg]=Гурӯҳ
Comment[th]=กลุ่ม
Comment[tr]=Grup
Comment[ug]=گۇرۇپپا
Comment[uk]=Група
+Comment[vi]=Nhóm
Comment[wa]=Li groupe
Comment[x-test]=xxThe groupxx
Comment[zh_CN]=组
Comment[zh_TW]=群組
Icon=folder
[Event/online]
Name=Online
Name[af]=Aanlyn
Name[ar]=متصل
Name[as]=অন-লাইন
Name[ast]=En llinia
Name[be]=У сеціве
Name[be@latin]=U siecivie
Name[bg]=Включен
Name[bn]=অনলাইন
Name[bn_IN]=অনলাইন অবস্থা
Name[bs]=Na vezi
Name[ca]=Connectat
Name[ca@valencia]=Connectat
Name[cs]=Online
Name[csb]=Online
Name[da]=Online
Name[de]=Online
Name[el]=Σε σύνδεση
Name[en_GB]=Online
Name[eo]=Enreta
Name[es]=Conectado
Name[et]=Võrgus
Name[eu]=Linean
Name[fa]=برخط
Name[fi]=Paikalla
Name[fr]=Connecté(e)
Name[fy]=Ferbining
Name[ga]=Ar Líne
Name[gl]=En liña
Name[gu]=ઓનલાઈન
Name[he]=מחובר
Name[hi]=ऑनलाइन
Name[hne]=आनलाइन
Name[hr]=Povezan
Name[hsb]=Online
Name[hu]=Online
Name[ia]=In linea
Name[id]=Tersambung
Name[is]=Tengd(ur)
Name[it]=In linea
Name[ja]=オンライン
Name[kk]=Онлайн
Name[km]=លើ​បណ្ដាញ
Name[kn]=ಜಾಲಮುಖೇನ
Name[ko]=온라인
Name[ku]=Girêdayî
Name[lt]=Prisijungę
Name[lv]=Tiešsaistē
Name[mai]=आनलाइन
Name[mk]=На мрежа
Name[ml]=ഓണ്‍ലൈന്‍
Name[mr]=ऑनलाइन
Name[nb]=Tilkoblet
Name[nds]=Tokoppelt
Name[ne]=अनलाइन
Name[nl]=Online
Name[nn]=Tilkopla
Name[oc]=En linha
Name[or]=ସଂଯୁକ୍ତ
Name[pa]=ਆਨਲਾਇਨ
Name[pl]=Online
Name[ps]=پرليکه
Name[pt]=Ligado
Name[pt_BR]=Online
Name[ro]=Conectat
Name[ru]=В сети
Name[se]=Láktašuvvon
Name[si]=සබැඳි
Name[sk]=Online
Name[sl]=Na zvezi
Name[sq]=Lidhur
Name[sr]=На вези
Name[sr@ijekavian]=На вези
Name[sr@ijekavianlatin]=Na vezi
Name[sr@latin]=Na vezi
Name[sv]=Uppkopplad
Name[ta]=இணைப்பில்
Name[tg]=Дар шабака
Name[th]=ออนไลน์
Name[tr]=Çevrim içi
Name[ug]=توردا
Name[uk]=В мережі
+Name[vi]=Trực tuyến
Name[wa]=Raloyî
Name[x-test]=xxOnlinexx
Name[zh_CN]=在线
Name[zh_TW]=上線
Comment=The contact is now connected
Comment[af]=Die kontak is nou gekoppel
Comment[ar]=المُراسَل متصل
Comment[as]=সংযোগৰ সৈতে এতিয়া সম্পৰ্ক কৰা হ'ল
Comment[ast]=Coneutóse'l contautu
Comment[be@latin]=Asoba ciapier spałučyłasia
Comment[bg]=Контактът е свързан
Comment[bn]=কনট্যাক্ট এখন সংযুক্ত
Comment[bn_IN]=পরিচিতির সাথে সংযোগ স্থাপিত হয়েছে
Comment[bs]=Kontakt je sada povezan
Comment[ca]=El contacte ara està connectat
Comment[ca@valencia]=El contacte ara està connectat
Comment[cs]=Kontakt je nyní připojen
Comment[csb]=Kòntakt je terô pòdłączony
Comment[da]=Kontakten er nu forbundet
Comment[de]=Der Kontakt ist jetzt verbunden
Comment[el]=Η επαφή είναι τώρα συνδεδεμένη
Comment[en_GB]=The contact is now connected
Comment[eo]=Konektiĝis al kontakto
Comment[es]=El contacto está ahora conectado
Comment[et]=Kontakt on nüüd võrgus
Comment[eu]=Kontaktua liinean dago
Comment[fa]=تماس، اکنون متصل است
Comment[fi]=Yhteystieto on nyt paikalla
Comment[fr]=Le contact est désormais connecté
Comment[fy]=De kontaktpersoan is no ferbûn
Comment[ga]=Tá an teagmháil ceangailte anois
Comment[gl]=O contacto está conectado
Comment[gu]=સંપર્ક હવે જોડાયેલ છે
Comment[he]=איש הקשר מחובר כעת
Comment[hi]=संपर्क जुड़ गया है
Comment[hne]=संपर्क जुड़ गे हे
Comment[hr]=Kontakt je sada spojen
Comment[hsb]=Kontakt je nětko nawjazany
Comment[hu]=A partner csatlakozott (online állapotú)
Comment[ia]=Le contacto nunc es connectite
Comment[id]=Kontak sekarang tersambung
Comment[is]=Tengiliðurinn er tengdur núna
Comment[it]=Il contatto è ora connesso
Comment[ja]=連絡先がオンラインになりました
Comment[kk]=Контакт қосылды
Comment[km]=ឥឡូវ ទំនាក់ទំនង​ត្រូវ​បាន​តភ្ជាប់
Comment[kn]=ಸಂಪರ್ಕವ್ಯಕ್ತಿ ಈಗ ಸಂಪರ್ಕಗೊಂಡಿದ್ದಾನೆ
Comment[ko]=대화 상대가 연결됨
Comment[ku]=Gehînek niha hate girêdan
Comment[lt]=Kontaktas dabar prisijungęs
Comment[lv]=Kontakts ir pieslēdzies
Comment[mai]=संपर्क जुड़ि गेल अछि
Comment[mk]=Контактот е сега на мрежа
Comment[ml]=പരിചയമുള്ളയാള്‍ ഇപ്പോള്‍ ബന്ധപ്പെട്ടിട്ടുണ്ട്
Comment[mr]=संपर्काशी आता जुळवणी झाली आहे
Comment[nb]=Kontakten er nå tilkoblet
Comment[nds]=De Kontakt is nu tokoppelt
Comment[ne]=सम्पर्क अहिले जडान गरिएको छ
Comment[nl]=De contact is nu verbonden
Comment[nn]=Kontakten er no kopla til
Comment[or]=ସମ୍ପର୍କ ଟି ବର୍ତ୍ତମାନ ସଂଯୋଗ ହୋଇଗଲା
Comment[pa]=ਸੰਪਰਕ ਹੁਣ ਕੁਨੈਕਟ ਹੋ ਗਿਆ ਹੈ
Comment[pl]=Kontakt jest obecnie dostępny
Comment[ps]=اړيکنيو اوس نښتې دی
Comment[pt]=O contacto ligou-se agora
Comment[pt_BR]=O contato está conectado agora
Comment[ro]=Contactul este acum conectat
Comment[ru]=Контакт сейчас подключён
Comment[se]=Oktavuohta lea dál láktašuvvon
Comment[si]=සබධතාව දැන් සම්බන්ධ වී ඇත
Comment[sk]=Kontakt sa práve pripojil
Comment[sl]=Stik je sedaj povezan
Comment[sr]=Контакт је сада повезан
Comment[sr@ijekavian]=Контакт је сада повезан
Comment[sr@ijekavianlatin]=Kontakt je sada povezan
Comment[sr@latin]=Kontakt je sada povezan
Comment[sv]=Kontakten är nu uppkopplad
Comment[ta]=தொடர்புடையவருடன் இணைக்கப்பட்டது
Comment[tg]=Алоқа ҳозир пайваст шуд
Comment[th]=ขณะนี้ได้เชื่อมต่อกับรายชื่อติดต่อแล้ว
Comment[tr]=Kişi şimdi bağlı
Comment[ug]=ئالاقەداش باغلاندى
Comment[uk]=Контакт тепер з'єднаний
+Comment[vi]=Hiện đã kết nối liên lạc
Comment[wa]=Li soçon est asteure raloyî
Comment[x-test]=xxThe contact is now connectedxx
Comment[zh_CN]=联系人现已上线
Comment[zh_TW]=聯絡人已上線
Contexts=group
Action=Popup
[Event/message]
Name=Message Received
Name[af]=Boodkap ontvang
Name[ar]=وصلت رسالة
Name[as]=সম্বাদ পোৱা গ'ল
Name[ast]=Mensaxe recibíu
Name[be@latin]=Novaje paviedamleńnie
Name[bg]=Съобшението е получено
Name[bn]=বার্তা এসেছে
Name[bn_IN]=বার্তা প্রাপ্ত হয়েছে
Name[bs]=Poruka primljena
Name[ca]=Missatge rebut
Name[ca@valencia]=Missatge rebut
Name[cs]=Obdržena zpráva
Name[csb]=Òtrzëmóno wiadło
Name[da]=Besked modtaget
Name[de]=Nachricht empfangen
Name[el]=Λήφθηκε μήνυμα
Name[en_GB]=Message Received
Name[eo]=Ricevis mesaĵon
Name[es]=Mensaje recibido
Name[et]=Saadi sõnum
Name[eu]=Mezua jaso da
Name[fa]=پیغام دریافت شد
Name[fi]=Uusi viesti
Name[fr]=Message reçu
Name[fy]=Berjocht ûntfongen
Name[ga]=Fuarthas Teachtaireacht
Name[gl]=Recibiuse unha mensaxe
Name[gu]=સંદેશો મળ્યો છે
Name[he]=ההודעה התקבלה
Name[hi]=संदेश प्राप्त
Name[hne]=संदेस प्राप्त
Name[hr]=Primljena poruka
Name[hsb]=Powěsć dóstata
Name[hu]=Üzenet érkezett
Name[hy]=Հաղորդագրությունը ստացված է
Name[ia]=Message recipite
Name[id]=Pesan Diterima
Name[is]=Skilaboð móttekin
Name[it]=Messaggio ricevuto
Name[ja]=メッセージを受信
Name[kk]=Хабарлама келді
Name[km]=បាន​ទទួល​សារ
Name[kn]=ಸಂದೇಶ ಸ್ವೀಕರಿಸಲಾಗಿದೆ
Name[ko]=메시지 받음
Name[ku]=Peyam Hat Standin
Name[lt]=Žinutė gauta
Name[lv]=Saņemts ziņojums
Name[mai]=संदेश प्राप्त
Name[mk]=Примена е порака
Name[ml]=സന്ദേശം ലഭിച്ചു
Name[mr]=संदेश प्राप्त झाले
Name[nb]=Melding mottatt
Name[nds]=Bescheed kregen
Name[ne]=सन्देश प्राप्त भयो
Name[nl]=Bericht ontvangen
Name[nn]=Melding motteken
Name[oc]=Messatge recebut
Name[or]=ସନ୍ଦେଶ ପ୍ରାପ୍ତ ହେଲା
Name[pa]=ਸੁਨੇਹਾ ਮਿਲਿਆ
Name[pl]=Otrzymano wiadomość
Name[ps]=استوزه ترلاسه شوه
Name[pt]=Mensagem Recebida
Name[pt_BR]=Mensagem recebida
Name[ro]=Mesaj primit
Name[ru]=Получено сообщение
Name[se]=Diehtu bođii
Name[si]=පණිවිඩය ලැබුනා
Name[sk]=Prijatá správa
Name[sl]=Sporočilo je prejeto
Name[sr]=Примљена порука
Name[sr@ijekavian]=Примљена порука
Name[sr@ijekavianlatin]=Primljena poruka
Name[sr@latin]=Primljena poruka
Name[sv]=Meddelande mottaget
Name[ta]=தகவல் பெறப்பட்டது
Name[tg]=Паём қабул шуд
Name[th]=ได้รับข้อความ
Name[tr]=İleti Alındı
Name[ug]=ئۇچۇر قوبۇللىدى
Name[uk]=Повідомлення отримано
+Name[vi]=Đã nhận tin nhắn
Name[wa]=Messaedje riçî
Name[x-test]=xxMessage Receivedxx
Name[zh_CN]=收到了消息
Name[zh_TW]=接到訊息
Comment=A Message has been received
Comment[af]='n Boodskap is ontvang
Comment[ar]=وصلت رسالة
Comment[as]=এটা সম্বাদ পোৱা হৈছে
Comment[ast]=Recibióse un mensaxe
Comment[be]=Была атрымана паведамленне
Comment[be@latin]=Atrymanaje novaje paviedamleńnie
Comment[bg]=Получено е съобщение
Comment[bn]=একটি বার্তা এসেছে
Comment[bn_IN]=একটি বার্তা প্রাপ্ত হয়েছে
Comment[bs]=Poruka je upravo primljena
Comment[ca]=S'ha rebut un missatge
Comment[ca@valencia]=S'ha rebut un missatge
Comment[cs]=Byla obdržena zpráva
Comment[csb]=Òstało òtrzëmóné wiadło
Comment[da]=En besked er blevet modtaget
Comment[de]=Es ist eine Nachricht empfangen worden
Comment[el]=Ένα μήνυμα λήφθηκε
Comment[en_GB]=A Message has been received
Comment[eo]=Ricevis mesaĵon
Comment[es]=Se ha recibido un mensaje
Comment[et]=Saadi sõnum
Comment[eu]=Mezu bat jaso da
Comment[fa]=پیغامی دریافت شده‌است
Comment[fi]=Uusi viesti on saapunut
Comment[fr]=Vous avez reçu un message
Comment[fy]=In berjocht is ûntfongen
Comment[ga]=Fuarthas teachtaireacht
Comment[gl]=Foi recibida unha mensaxe
Comment[gu]=સંદેશો મેળવવામાં આવ્યો છે
Comment[he]=ההודעה נשלחה
Comment[hi]=संदेश प्राप्त हो गया है
Comment[hne]=संदेस प्राप्त हो गे हे
Comment[hr]=Poruka je primljena
Comment[hsb]=Powěsć je so dóstała
Comment[hu]=Üzenet érkezett
Comment[ia]=Un message ha essite recipite
Comment[id]=Sebuah pesan telah diterima
Comment[is]=Tekið hefur verið á móti skilaboðum
Comment[it]=È stato ricevuto un messaggio
Comment[ja]=メッセージを受信しました
Comment[kk]=Хабарлама келді
Comment[km]=សារ​ត្រូវ​បាន​ទទួល
Comment[kn]=ಒಂದು ಸಂದೇಶವನ್ನು ಸ್ವೀಕರಿಸಲಾಗಿದೆ
Comment[ko]=메시지를 받았음
Comment[ku]=Peyamek hat standin
Comment[lt]=Gauta žinutė
Comment[lv]=Ir saņemts ziņojums
Comment[mai]=संदेश प्राप्त भए गेल अछि
Comment[mk]=Беше примена порака
Comment[ml]=ഒരു സന്ദേശം ലഭിച്ചു
Comment[mr]=संदेश प्राप्त झाले आहे
Comment[nb]=En melding er mottatt
Comment[nds]=Dat en Bescheed geven
Comment[ne]=सन्देश प्राप्त गरियो
Comment[nl]=Er is een bericht ontvangen
Comment[nn]=Ei melding er motteken
Comment[or]=ଗୋଟିଏ ସନ୍ଦେଶ ପ୍ରାପ୍ତ ହେଲା
Comment[pa]=ਇੱਕ ਸੁਨੇਹਾ ਮਿਲਿਆ ਹੈ
Comment[pl]=Otrzymano wiadomość
Comment[ps]=يوه استوزه ترلاسه شوه
Comment[pt]=Foi recebida uma mensagem
Comment[pt_BR]=Uma mensagem foi recebida
Comment[ro]=A fost primit un mesaj
Comment[ru]=Было получено сообщение
Comment[se]=Diehtu bođii
Comment[sk]=Správa bola prijatá
Comment[sl]=Sporočilo je bilo prejeto
Comment[sr]=Порука је управо примљена
Comment[sr@ijekavian]=Порука је управо примљена
Comment[sr@ijekavianlatin]=Poruka je upravo primljena
Comment[sr@latin]=Poruka je upravo primljena
Comment[sv]=Ett meddelande har tagits emot
Comment[ta]=தகவலொன்று பெறப்பட்டுள்ளது
Comment[te]=సందేశం వచ్చింది
Comment[tg]=Як паём қабул карда шуд
Comment[th]=ได้รับข้อความแล้ว
Comment[tr]=Bir ileti alındı
Comment[ug]=بىر ئۇچۇر قوبۇللىدى
Comment[uk]=Повідомлення було отримано
+Comment[vi]=Đã nhận được một tin nhắn
Comment[wa]=On messaedje a stî rçî
Comment[x-test]=xxA Message has been receivedxx
Comment[zh_CN]=收到了一条消息
Comment[zh_TW]=訊息已接收
Contexts=group
Action=Popup
diff --git a/kparts/browserview.desktop b/kparts/browserview.desktop
index 027fa05f25..0fbb823017 100644
--- a/kparts/browserview.desktop
+++ b/kparts/browserview.desktop
@@ -1,157 +1,157 @@
[Desktop Entry]
Type=ServiceType
X-KDE-ServiceType=Browser/View
X-KDE-Derived=KParts/ReadOnlyPart
Name=Browser View
Name[af]=Blaaier-aansig
Name[ar]=عرض تصفحي
Name[as]=চৰকৰ প্ৰদৰ্শন
Name[ast]=Vista de restolador
Name[be]=Выгляд аглядальніка
Name[be@latin]=Vyhlad hartača
Name[bg]=Изглед браузър
Name[bn]=ব্রাউজার দৃশ্য
Name[bn_IN]=ব্রাউজার অনুসারে প্রদর্শন
Name[br]=Gwel Furchal
Name[bs]=Pregledački prikaz
Name[ca]=Vista del navegador
Name[ca@valencia]=Vista del navegador
Name[cs]=Prohlížeč
Name[csb]=Wëzdrzatk przezérnika
Name[cy]=Golwg Porydd
Name[da]=Browservisning
Name[de]=Browser-Ansicht
Name[el]=Προβολή εξερευνητή
Name[en_GB]=Browser View
Name[eo]=Rigardo de TTT-legilo
Name[es]=Vista de navegador
Name[et]=Brauseri vaade
Name[eu]=Arakatzailearen ikuspegia
Name[fa]=نمای مرورگر
Name[fi]=Selainnäkymä
Name[fr]=Affichage du navigateur
Name[fy]=Browserwerjefte
Name[ga]=Amharc Brabhsálaí
Name[gl]=Vista de navegador
Name[gu]=બ્રાઉઝર દેખાવ
Name[he]=תצוגת דפדפן
Name[hi]=ब्राउज़र दृश्य
Name[hne]=ब्राउजर दृस्य
Name[hr]=Prikaz pretraživača
Name[hsb]=Browserowy napohlad
Name[hu]=Böngészőnézet
Name[ia]=Vista de navigator
Name[id]=Tampilan Peramban
Name[is]=Vafrasýn
Name[it]=Vista browser
Name[ja]=ブラウズビュー
Name[kk]=Шолғыш көрнісі
Name[km]=ទិដ្ឋភាព​កម្មវិធី​រុករក
Name[kn]=ವೀಕ್ಷಕ ನೋಟ
Name[ko]=탐색기 보기
Name[ku]=Dîmena Gerokê
Name[lb]=Browser-Siicht
Name[lt]=Rodyti naršyklėje
Name[lv]=Pārlūka skatījums
Name[mai]=ब्राउजर दृश्य
Name[mk]=Разгледување
Name[ml]=ബ്രൌസറിലെ കാഴ്ച
Name[mr]=ब्राउजर दृश्य
Name[ms]=Pelihat Pelayar
Name[nb]=Nettleservisning
Name[nds]=Kieker-Ansicht
Name[ne]=ब्राउजर दृश्य
Name[nl]=Browserweergave
Name[nn]=Nettlesarvising
Name[or]=ବ୍ରାଉଜର ଦୃଶ୍ୟ
Name[pa]=ਝਲਕਾਰਾ ਝਲਕ
Name[pl]=Widok przeglądarki
Name[ps]=لټوونی کوت
Name[pt]=Navegador
Name[pt_BR]=Visualização navegador
Name[ro]=Vizualizare navigator
Name[ru]=Вид страницы
Name[se]=Fierpmádatlogana čájeheapmi
Name[si]=ගවේෂක දසුන
Name[sk]=Prehliadač
Name[sl]=Pogled brskalnika
Name[sr]=Прегледачки приказ
Name[sr@ijekavian]=Прегледачки приказ
Name[sr@ijekavianlatin]=Pregledački prikaz
Name[sr@latin]=Pregledački prikaz
Name[sv]=Surfvy
Name[ta]=உலாவிக் காட்சி
Name[te]=అన్వేషి వీక్షణం
Name[tg]=Намуди намоишгар
Name[th]=มุมมองแบบเบราว์เซอร์
Name[tr]=Tarayıcı Görünümü
Name[ug]=توركۆرگۈ كۆرۈنۈش
Name[uk]=Перегляд «Навігація»
Name[uz]=Brauzerning koʻrinishi
Name[uz@cyrillic]=Браузернинг кўриниши
Name[vi]=Xem duyệt
Name[wa]=Vuwe foyteuse
-Name[x-test]=xxBrowser Viewxx
Name[xh]=Imboniselo Yomkhangeli zincwadi
+Name[x-test]=xxBrowser Viewxx
Name[zh_CN]=浏览器视图
Name[zh_HK]=瀏覽器視圖
Name[zh_TW]=瀏覽器視圖
# Arguments passed to the factory (e.g. view sub-type)
[PropertyDef::X-KDE-BrowserView-Args]
Type=QString
# If false, this component won't be used when clicking on a file,
# the user will have to use "Embed in..." to use it (or the application
# will have to explicitly embed this particular service, like for the sidebar)
[PropertyDef::X-KDE-BrowserView-AllowAsDefault]
Type=bool
# If true, this component won't appear in the "Embed in..." popupmenu
[PropertyDef::X-KDE-BrowserView-HideFromMenus]
Type=bool
# If true, the view will have its "linked" checkbox checked in Konqueror
# (Was initially for the sidebar, but it's a FollowActive nowadays)
[PropertyDef::X-KDE-BrowserView-LinkedView]
Type=bool
# If true, this view shows a hierarchical view, i.e. more than one dir at a time
# This is used by KonqPopupMenu to know whether to offer "Create Directory"
# in the RMB menu on a directory (since it depends on whether the user would
# see that new dir).
[PropertyDef::X-KDE-BrowserView-HierarchicalView]
Type=bool
# If true, the view is passive (can't be made the current active view)
[PropertyDef::X-KDE-BrowserView-PassiveMode]
Type=bool
# If true, the view can only be there 0 or 1 time in a given window,
# and a toggle action for it will be created (examples: sidebar, konsolepart)
[PropertyDef::X-KDE-BrowserView-Toggable]
Type=bool
# If the view is toggable, this defines its orientation (Horizontal or Vertical)
[PropertyDef::X-KDE-BrowserView-ToggableView-Orientation]
Type=QString
# If true, this view will always "follow the active view" (and vice versa:
# when the active view goes to another url, this view will follow).
# Mostly used by the sidebar.
[PropertyDef::X-KDE-BrowserView-FollowActive]
Type=bool
# If this property is set, this view is "builtin" to the application using it
# The value of the property is the application in question (e.g. "konqueror").
# This is used to set the active instance to the app's (so the bugs
# go to "konqueror" and not to "konqiconview").
[PropertyDef::X-KDE-BrowserView-Built-Into]
Type=QString
# If the part has a plugin for KHTML Javascript's window.navigator.plugins
# array, it should create a plugin info file and set this propery to the
# file path here. The path should be relative to KDE's data dir
# ($KDEDIR/share/apps)
[PropertyDef::X-KDE-BrowserView-PluginsInfo]
Type=QString
diff --git a/kparts/kpart.desktop b/kparts/kpart.desktop
index 96998e4d70..de8d382c1d 100644
--- a/kparts/kpart.desktop
+++ b/kparts/kpart.desktop
@@ -1,97 +1,97 @@
[Desktop Entry]
Type=ServiceType
X-KDE-ServiceType=KPart
Comment=KDE Component
Comment[af]=KDE Komponent
Comment[ar]=مكون كيدي
Comment[as]=KDE অংশ
Comment[ast]=Componente de KDE
Comment[be]=Кампанент KDE
Comment[be@latin]=Kampanent KDE
Comment[bg]=Компонент на KDE
Comment[bn]=কে.ডি.ই. উপাদান
Comment[bn_IN]=KDE-র অংশ
Comment[br]=Parzhioù KDE
Comment[bs]=KDE komponenta
Comment[ca]=Component del KDE
Comment[ca@valencia]=Component del KDE
Comment[cs]=Komponenta KDE
Comment[csb]=Kòmpònent KDE
Comment[cy]=Cydran KDE
Comment[da]=KDE-komponent
Comment[de]=KDE-Komponente
Comment[el]=Στοιχείο του KDE
Comment[en_GB]=KDE Component
Comment[eo]=KDE-komponanto
Comment[es]=Componente de KDE
Comment[et]=KDE komponent
Comment[eu]=KDEren osagaia
Comment[fa]=مؤلفه KDE
Comment[fi]=KDE-komponentti
Comment[fr]=Composant de KDE
Comment[fy]=KDE-komponint
Comment[ga]=Comhpháirt KDE
Comment[gl]=Compoñente de KDE
Comment[gu]=KDE ભાગ
Comment[he]=רכיב של KDE
Comment[hi]=केडीई अवयव
Comment[hne]=केडीई अवयव
Comment[hr]=KDE-ova komponenta
Comment[hsb]=KDE-komponenta
Comment[hu]=KDE-komponens
Comment[ia]=Componente de KDE
Comment[id]=Komponen KDE
Comment[is]=KDE eining
Comment[it]=Componente KDE
Comment[ja]=KDE コンポーネント
Comment[kk]=KDE компоненті
Comment[km]=សមាសភាគ KDE
Comment[kn]=ಕೆಡಿಇ ಅಂಗ
Comment[ko]=KDE 구성 요소
Comment[ku]=Parçeya KDE'yê
Comment[lb]=KDE-Komponent
Comment[lt]=KDE komponentas
Comment[lv]=KDE komponente
Comment[mai]=केडीई अवयव
Comment[mk]=KDE компонента
Comment[ml]=കെഡിഇയുടെ ഘടകം
Comment[mr]=KDE घटक
Comment[ms]=Komponen KDE
Comment[nb]=KDE-komponent
Comment[nds]=KDE-Komponent
Comment[ne]=केडीई अवयव
Comment[nl]=KDE-component
Comment[nn]=KDE-komponent
Comment[or]=KDE ଉପାଦାନ
Comment[pa]=KDE ਭਾਗ
Comment[pl]=Składnik KDE
Comment[ps]=کډي رغتوک
Comment[pt]=Componente do KDE
Comment[pt_BR]=Componente do KDE
Comment[ro]=Componentă KDE
Comment[ru]=Компонент KDE
Comment[se]=KDE oassi
Comment[si]=KDE අංගය
Comment[sk]=KDE komponent
Comment[sl]=Komponenta KDE
Comment[sr]=КДЕ компонента
Comment[sr@ijekavian]=КДЕ компонента
Comment[sr@ijekavianlatin]=KDE komponenta
Comment[sr@latin]=KDE komponenta
Comment[sv]=KDE-komponent
Comment[ta]=KDE பாகம்
Comment[te]=కెడిఈ అంశం
Comment[tg]=Қисми KDE
Comment[th]=ส่วนประกอบของ KDE
Comment[tr]=KDE Bileşeni
Comment[ug]=KDE بۆلىكى
Comment[uk]=Компонент KDE
Comment[uz]=KDE komponenti
Comment[uz@cyrillic]=KDE компоненти
Comment[vi]=Thành phần KDE.
Comment[wa]=Componint di KDE
-Comment[x-test]=xxKDE Componentxx
Comment[xh]=Ingxenye ye KDE
+Comment[x-test]=xxKDE Componentxx
Comment[zh_CN]=KDE 组件
Comment[zh_HK]=KDE 元件
Comment[zh_TW]=KDE 元件
diff --git a/kparts/krop.desktop b/kparts/krop.desktop
index 588c9106a6..25275767fa 100644
--- a/kparts/krop.desktop
+++ b/kparts/krop.desktop
@@ -1,98 +1,98 @@
[Desktop Entry]
Type=ServiceType
X-KDE-ServiceType=KParts/ReadOnlyPart
X-KDE-Derived=KPart
Comment=KDE Component
Comment[af]=KDE Komponent
Comment[ar]=مكون كيدي
Comment[as]=KDE অংশ
Comment[ast]=Componente de KDE
Comment[be]=Кампанент KDE
Comment[be@latin]=Kampanent KDE
Comment[bg]=Компонент на KDE
Comment[bn]=কে.ডি.ই. উপাদান
Comment[bn_IN]=KDE-র অংশ
Comment[br]=Parzhioù KDE
Comment[bs]=KDE komponenta
Comment[ca]=Component del KDE
Comment[ca@valencia]=Component del KDE
Comment[cs]=Komponenta KDE
Comment[csb]=Kòmpònent KDE
Comment[cy]=Cydran KDE
Comment[da]=KDE-komponent
Comment[de]=KDE-Komponente
Comment[el]=Στοιχείο του KDE
Comment[en_GB]=KDE Component
Comment[eo]=KDE-komponanto
Comment[es]=Componente de KDE
Comment[et]=KDE komponent
Comment[eu]=KDEren osagaia
Comment[fa]=مؤلفه KDE
Comment[fi]=KDE-komponentti
Comment[fr]=Composant de KDE
Comment[fy]=KDE-komponint
Comment[ga]=Comhpháirt KDE
Comment[gl]=Compoñente de KDE
Comment[gu]=KDE ભાગ
Comment[he]=רכיב של KDE
Comment[hi]=केडीई अवयव
Comment[hne]=केडीई अवयव
Comment[hr]=KDE-ova komponenta
Comment[hsb]=KDE-komponenta
Comment[hu]=KDE-komponens
Comment[ia]=Componente de KDE
Comment[id]=Komponen KDE
Comment[is]=KDE eining
Comment[it]=Componente KDE
Comment[ja]=KDE コンポーネント
Comment[kk]=KDE компоненті
Comment[km]=សមាសភាគ KDE
Comment[kn]=ಕೆಡಿಇ ಅಂಗ
Comment[ko]=KDE 구성 요소
Comment[ku]=Parçeya KDE'yê
Comment[lb]=KDE-Komponent
Comment[lt]=KDE komponentas
Comment[lv]=KDE komponente
Comment[mai]=केडीई अवयव
Comment[mk]=KDE компонента
Comment[ml]=കെഡിഇയുടെ ഘടകം
Comment[mr]=KDE घटक
Comment[ms]=Komponen KDE
Comment[nb]=KDE-komponent
Comment[nds]=KDE-Komponent
Comment[ne]=केडीई अवयव
Comment[nl]=KDE-component
Comment[nn]=KDE-komponent
Comment[or]=KDE ଉପାଦାନ
Comment[pa]=KDE ਭਾਗ
Comment[pl]=Składnik KDE
Comment[ps]=کډي رغتوک
Comment[pt]=Componente do KDE
Comment[pt_BR]=Componente do KDE
Comment[ro]=Componentă KDE
Comment[ru]=Компонент KDE
Comment[se]=KDE oassi
Comment[si]=KDE අංගය
Comment[sk]=KDE komponent
Comment[sl]=Komponenta KDE
Comment[sr]=КДЕ компонента
Comment[sr@ijekavian]=КДЕ компонента
Comment[sr@ijekavianlatin]=KDE komponenta
Comment[sr@latin]=KDE komponenta
Comment[sv]=KDE-komponent
Comment[ta]=KDE பாகம்
Comment[te]=కెడిఈ అంశం
Comment[tg]=Қисми KDE
Comment[th]=ส่วนประกอบของ KDE
Comment[tr]=KDE Bileşeni
Comment[ug]=KDE بۆلىكى
Comment[uk]=Компонент KDE
Comment[uz]=KDE komponenti
Comment[uz@cyrillic]=KDE компоненти
Comment[vi]=Thành phần KDE.
Comment[wa]=Componint di KDE
-Comment[x-test]=xxKDE Componentxx
Comment[xh]=Ingxenye ye KDE
+Comment[x-test]=xxKDE Componentxx
Comment[zh_CN]=KDE 组件
Comment[zh_HK]=KDE 元件
Comment[zh_TW]=KDE 元件
diff --git a/kparts/krwp.desktop b/kparts/krwp.desktop
index 55bccf438f..69ba3578c1 100644
--- a/kparts/krwp.desktop
+++ b/kparts/krwp.desktop
@@ -1,98 +1,98 @@
[Desktop Entry]
Type=ServiceType
X-KDE-ServiceType=KParts/ReadWritePart
X-KDE-Derived=KParts/ReadOnlyPart
Comment=KDE Component
Comment[af]=KDE Komponent
Comment[ar]=مكون كيدي
Comment[as]=KDE অংশ
Comment[ast]=Componente de KDE
Comment[be]=Кампанент KDE
Comment[be@latin]=Kampanent KDE
Comment[bg]=Компонент на KDE
Comment[bn]=কে.ডি.ই. উপাদান
Comment[bn_IN]=KDE-র অংশ
Comment[br]=Parzhioù KDE
Comment[bs]=KDE komponenta
Comment[ca]=Component del KDE
Comment[ca@valencia]=Component del KDE
Comment[cs]=Komponenta KDE
Comment[csb]=Kòmpònent KDE
Comment[cy]=Cydran KDE
Comment[da]=KDE-komponent
Comment[de]=KDE-Komponente
Comment[el]=Στοιχείο του KDE
Comment[en_GB]=KDE Component
Comment[eo]=KDE-komponanto
Comment[es]=Componente de KDE
Comment[et]=KDE komponent
Comment[eu]=KDEren osagaia
Comment[fa]=مؤلفه KDE
Comment[fi]=KDE-komponentti
Comment[fr]=Composant de KDE
Comment[fy]=KDE-komponint
Comment[ga]=Comhpháirt KDE
Comment[gl]=Compoñente de KDE
Comment[gu]=KDE ભાગ
Comment[he]=רכיב של KDE
Comment[hi]=केडीई अवयव
Comment[hne]=केडीई अवयव
Comment[hr]=KDE-ova komponenta
Comment[hsb]=KDE-komponenta
Comment[hu]=KDE-komponens
Comment[ia]=Componente de KDE
Comment[id]=Komponen KDE
Comment[is]=KDE eining
Comment[it]=Componente KDE
Comment[ja]=KDE コンポーネント
Comment[kk]=KDE компоненті
Comment[km]=សមាសភាគ KDE
Comment[kn]=ಕೆಡಿಇ ಅಂಗ
Comment[ko]=KDE 구성 요소
Comment[ku]=Parçeya KDE'yê
Comment[lb]=KDE-Komponent
Comment[lt]=KDE komponentas
Comment[lv]=KDE komponente
Comment[mai]=केडीई अवयव
Comment[mk]=KDE компонента
Comment[ml]=കെഡിഇയുടെ ഘടകം
Comment[mr]=KDE घटक
Comment[ms]=Komponen KDE
Comment[nb]=KDE-komponent
Comment[nds]=KDE-Komponent
Comment[ne]=केडीई अवयव
Comment[nl]=KDE-component
Comment[nn]=KDE-komponent
Comment[or]=KDE ଉପାଦାନ
Comment[pa]=KDE ਭਾਗ
Comment[pl]=Składnik KDE
Comment[ps]=کډي رغتوک
Comment[pt]=Componente do KDE
Comment[pt_BR]=Componente do KDE
Comment[ro]=Componentă KDE
Comment[ru]=Компонент KDE
Comment[se]=KDE oassi
Comment[si]=KDE අංගය
Comment[sk]=KDE komponent
Comment[sl]=Komponenta KDE
Comment[sr]=КДЕ компонента
Comment[sr@ijekavian]=КДЕ компонента
Comment[sr@ijekavianlatin]=KDE komponenta
Comment[sr@latin]=KDE komponenta
Comment[sv]=KDE-komponent
Comment[ta]=KDE பாகம்
Comment[te]=కెడిఈ అంశం
Comment[tg]=Қисми KDE
Comment[th]=ส่วนประกอบของ KDE
Comment[tr]=KDE Bileşeni
Comment[ug]=KDE بۆلىكى
Comment[uk]=Компонент KDE
Comment[uz]=KDE komponenti
Comment[uz@cyrillic]=KDE компоненти
Comment[vi]=Thành phần KDE.
Comment[wa]=Componint di KDE
-Comment[x-test]=xxKDE Componentxx
Comment[xh]=Ingxenye ye KDE
+Comment[x-test]=xxKDE Componentxx
Comment[zh_CN]=KDE 组件
Comment[zh_HK]=KDE 元件
Comment[zh_TW]=KDE 元件
diff --git a/kparts/tests/notepad.desktop b/kparts/tests/notepad.desktop
index 9755760f0a..c11cb11707 100644
--- a/kparts/tests/notepad.desktop
+++ b/kparts/tests/notepad.desktop
@@ -1,99 +1,99 @@
[Desktop Entry]
Name=Notepad (example)
Name[af]=Notablok (voorbeeld)
Name[ar]=مفكرة (مثال)
Name[as]=Notepad (উদাহৰণ)
Name[ast]=Bloc de notes (exemplu)
Name[be]=Нататнік (узор)
Name[be@latin]=Natatnik (uzor)
Name[bg]=Notepad (пример)
Name[bn]=নোটপ্যাড (উদাহরণ)
Name[bn_IN]=Notepad (উদাহরণ)
Name[br]=Skrabvloc'h (skouer)
Name[bs]=Bilježnica (primjer)
Name[ca]=Bloc de notes (exemple)
Name[ca@valencia]=Bloc de notes (exemple)
Name[cs]=Poznámkový blok (příklad)
Name[csb]=Notownik (przëmiôr)
Name[cy]=Pad ysgrifennu (enghraifft)
Name[da]=Notepad (eksempel)
Name[de]=Notizblock-Beispiel
Name[el]=Σημειωματάριο (παράδειγμα)
Name[en_GB]=Notepad (example)
Name[eo]=Notlibro (ekzemplo)
Name[es]=Bloc de notas (ejemplo)
Name[et]=Notepad (näidis)
Name[eu]=Notepad (adibidea)
Name[fa]=دفترچه یادداشت)مثال(
Name[fi]=Muistio (esimerkki)
Name[fr]=Bloc-notes (exemple)
Name[fy]=Skriuwboekje (foarbyld)
Name[ga]=Notepad (sampla)
Name[gl]=Caderno de notas (exemplo)
Name[gu]=નોટપેડ (ઉદાહરણ)
Name[he]=פנקס רשימות (דוגמה)
Name[hi]=नोटपैड (उदाहरण)
Name[hne]=नोटपैड (उदाहरन)
Name[hr]=Notepad (primjer)
Name[hsb]=Zapisnik (přikład)
Name[hu]=Jegyzettömb (példa)
Name[ia]=Notepad (exemplo)
Name[id]=Notepad (contoh)
Name[is]=Notepad (sýnishorn)
Name[it]=Blocco note (esempio)
Name[ja]=ノートパッド (例)
Name[kk]=Блокнот (мысал)
Name[km]=Notepad (ឧទាហរណ៍)
Name[kn]=ನೋಟ್ಪಾಡ್ (ಉದಾಹರಣೆ)
Name[ko]=메모장 (예제)
Name[ku]=Notepad (mînak)
Name[lb]=Notizblock (Beispill)
Name[lt]=Notepad (pavyzdys)
Name[lv]=Notepad (piemērs)
Name[mai]=नोटपैड (उदाहरण)
Name[mk]=Тетратка (пример)
Name[ml]=നോട്ട്പാഡ് (ഉദാഹരണം)
Name[mr]=नोटपैड (उदाहरण)
Name[ms]=Notepad (contoh)
Name[nb]=Notisblokk (eksempel)
Name[nds]=Notizzeddel (Bispill)
Name[ne]=नोटप्याड (उदाहरण)
Name[nl]=Kladblok (voorbeeld)
Name[nn]=Notisblokk (eksempel)
Name[or]=ଟୀପାଖାତା (ଉଦାହରଣ)
Name[pa]=ਨੋਟਪੈਡ (ਉਦਾਹਰਨ)
Name[pl]=Notatnik (przykład)
Name[ps]=(بېلګه) Notepad
Name[pt]=Bloco de Notas (exemplo)
Name[pt_BR]=Bloco de notas (exemplo)
Name[ro]=Notepad (exemplu)
Name[ru]=Блокнот (пример)
Name[se]=Čállingirjjáš (ovdamearka)
Name[si]=සටහන්පොත (උදාහරණය)
Name[sk]=Poznámkový blok (príklad)
Name[sl]=Beležnica (zgled)
Name[sr]=Бележница (пример)
Name[sr@ijekavian]=Биљежница (примјер)
Name[sr@ijekavianlatin]=Bilježnica (primjer)
Name[sr@latin]=Beležnica (primer)
Name[sv]=Notepad (exempel)
Name[ta]=நோட்பாட் (உதாரணம்)
Name[te]=నోట్ పేడ్ (ఉదాహరణ)
Name[tg]=Notepad (қолиб)
Name[th]=โน้ตแพด (ตัวอย่าง)
Name[tr]=Not defteri (örnek)
Name[ug]=خاتىرە دەپتەر (مىسال)
Name[uk]=Записна книжка (приклад)
Name[uz]=Yon daftarcha (misol)
Name[uz@cyrillic]=Ён дафтарча (мисол)
-Name[vi]=Tập giấy (thí dụ)
+Name[vi]=Notepad (ví dụ)
Name[wa]=Blok di notes (egzimpe)
-Name[x-test]=xxNotepad (example)xx
Name[xh]=Iphetshan lokubhala (umzekelo)
+Name[x-test]=xxNotepad (example)xx
Name[zh_CN]=记事本(示例)
Name[zh_HK]=記事本(範例)
Name[zh_TW]=記事本(範例)
MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;
X-KDE-ServiceTypes=KParts/ReadOnlyPart
X-KDE-Library=notepadpart
Type=Service
diff --git a/kutils/kemoticons/providers/adium/emoticonstheme_adium.desktop b/kutils/kemoticons/providers/adium/emoticonstheme_adium.desktop
index 884faa7a57..6ceaf4beb3 100644
--- a/kutils/kemoticons/providers/adium/emoticonstheme_adium.desktop
+++ b/kutils/kemoticons/providers/adium/emoticonstheme_adium.desktop
@@ -1,158 +1,160 @@
[Desktop Entry]
Type=Service
Name=Adium Emoticons Theme
Name[ar]=سمة رموز Adium
Name[as]=Adium Emoticons থিম
Name[ast]=Tema d'emoticonos Adium
Name[be@latin]=Matyŭ smajlikaŭ dla „Adium”
Name[bg]=Тема с емоции Adium
Name[bn]=অ্যাডিয়াম ইমোট-আইকন থীম
Name[bn_IN]=Adium ইমো-আইকন থিম
Name[bs]=Adijumova tema emotikona
Name[ca]=Tema d'emoticones Adium
Name[ca@valencia]=Tema d'emoticones Adium
Name[cs]=Motiv emotikonů Adium
Name[csb]=Témë Adium emòtikónków
Name[da]=Adium emotikon-tema
Name[de]=Adium-Emoticon-Design
Name[el]=Θέμα εικονιδίων διάθεσης Adium
Name[en_GB]=Adium Emoticons Theme
Name[eo]=Adium Mien-etoso
Name[es]=Tema de emoticonos Adium
Name[et]=Adiumi emotikoniteema
Name[eu]=Adium-en aurpegiera gaiak
Name[fi]=Adium-hymiöteemat
Name[fr]=Thèmes d'émoticônes Adium
Name[fy]=Adium Emoticons tema
Name[ga]=Téama Straoiseog Adium
Name[gl]=Tema de emoticonas Adium
Name[gu]=એડિયમ ઇમોકેશન થીમ
Name[he]=ערכת פרצופונים של Adium
Name[hne]=एडियम चेहराचिनहा थीम
Name[hr]=Adiumova tema emotikona
Name[hsb]=Adium Emoticons Theme
Name[hu]=Adium emotikon-téma
Name[ia]=Thema de emoticones Adium
Name[id]=Tema Emoticon Adium
Name[is]=Adium broskallaþema
Name[it]=Tema faccine Adium
Name[ja]=Adium 感情アイコンテーマ
Name[kk]=Adium көңіл-күй белгілер нақышы
Name[km]=ស្បែក​សញ្ញា​អារម្មណ៍​របស់ Adium
Name[kn]=ಏಡಿಯಮ್ ಭಾವನಾಚಿಹ್ನೆಗಳ (ಎಮೋಟಿಕಾನ್) ಪರಿಸರವಿನ್ಯಾಸ (ಥೀಮ್)
Name[ko]=Adium 이모티콘 테마
Name[ku]=Dirba Vegotinan yê Adium
Name[lt]=Adium jaustukų tema
Name[lv]=Adium emocijzīmju tēma
Name[mai]=एडियम भावचिन्ह प्रसंग
Name[ml]=അഡിയം ഇമോട്ടിക്കോണ്‍ രംഗവിതാനം
Name[mr]=ऐडीयम भावरेषा सुत्रयोजना
Name[nb]=Adium smilefjestema
Name[nds]=Snutensett Adium
Name[nl]=Adium-emoticonsthema
Name[nn]=Adium-fjesingtema
Name[or]=Adium Emoticons ପ୍ରସଙ୍ଗ
Name[pa]=ਅਡੀਉਮ ਈਮੋਸ਼ਨ ਥੀਮ
Name[pl]=Motyw emotikon Adium
Name[pt]=Tema de Ícones Emotivos do Adium
Name[pt_BR]=Tema emoticons Adium
Name[ro]=Tematică de emoticoni Adium
Name[ru]=Набор смайликов Adium
Name[se]=Adium mojánfáddá
Name[sk]=Téma emotikonov Adium
Name[sl]=Tema ikon čustev za Adium
Name[sr]=Адијумова тема емотикона
Name[sr@ijekavian]=Адијумова тема емотикона
Name[sr@ijekavianlatin]=Adiumova tema emotikona
Name[sr@latin]=Adiumova tema emotikona
Name[sv]=Adium smilistema
Name[ta]=ஏடியம் உணர்வுருக்களுக்கான தோற்றம்
Name[tg]=Мавзӯъи Adium Emoticons
Name[th]=ภาพไอคอนสื่ออารมณ์ของ Adium
Name[tr]=Adium Duygu Simgesi Teması
-Name[ug]=Adium چىراي ئىپادە ئۆرنىكى
+Name[ug]=Adium چىراي ئىپادە تېمىسى
Name[uk]=Тема емоційок Adium
+Name[vi]=Giao diện hình biểu cảm Adium
Name[wa]=Tinme di xhinêyes Adium
Name[x-test]=xxAdium Emoticons Themexx
Name[zh_CN]=Adium 表情主题
Name[zh_TW]=Adium 表情圖示主題
Comment=Library to use Adium emoticons theme
Comment[ar]=مكتبة لاستخدام سمة رموز Adium
Comment[as]=Adium emoticons থিম ব্যৱহাৰ কৰা লাইব্ৰেৰী
Comment[ast]=Bibilioteca pa usar el tema d'emoticonos Adium
Comment[be@latin]=Biblijateka dla matyvaŭ smajlikaŭ „Adium”
Comment[bg]=Библиотека за темата с емоции Adium
Comment[bn]=অ্যাডিয়াম ইমোট-আইকন থীম ব্যবহার করার লাইব্রেরী
Comment[bn_IN]=Adium ইমো-আইকন থিম প্রয়োগ করতে ব্যবহৃত লাইব্রেরি
Comment[bs]=Biblioteka za Adijumovu temu emotikona
Comment[ca]=Biblioteca per a usar el tema d'emoticones Adium
Comment[ca@valencia]=Biblioteca per a usar el tema d'emoticones Adium
Comment[cs]=Knihovna pro použití motivu emotikonů Adium
Comment[csb]=Bibloteka do brëkòwaniô emòtikónków temë Adium
Comment[da]=Bibliotek til at bruge Adium emotikon-temaer
Comment[de]=Bibliothek zur Verwendung des Adium-Emoticon-Designs
Comment[el]=Βιβλιοθήκη για τη χρήση του θέματος εικονιδίων διάθεσης Adium
Comment[en_GB]=Library to use Adium emoticons theme
Comment[eo]=Biblioteko por uzi Adium mien-etoson
Comment[es]=Biblioteca para usar el tema de emoticonos Audium
Comment[et]=Teek Adiumi emotikoniteema kasutamiseks
Comment[eu]=Adium-en aurpegiera gaia erabiltzeko liburutegia
Comment[fi]=Kirjasto Adium-hymiöteemojen käyttämiseen
Comment[fr]=Bibliothèque permettant d'utiliser les thèmes d'émoticônes Adium
Comment[fy]=Biblioteek om Adium emoticons tema te brûken
Comment[ga]=Leabharlann le húsáid téama straoiseog Adium
Comment[gl]=Unha biblioteca para empregar o tema de emoticonas Adium
Comment[gu]=એડિયમ ઇમોકેશન થીમ ઉપયોગ કરવા માટેની લાઇબ્રેરી
Comment[he]=ספריה לשימוש בערכת הפרצופונים של Adium
Comment[hne]=एडियम चेहराचिनहा थीम उपयोग करे बर लाइब्रेरी
Comment[hr]=Biblioteka za korištenje Adiumove teme emotikona
Comment[hsb]=Biblioteka za Adium emoticons theme
Comment[hu]=Programkönyvtár az Adium emotikon-témához
Comment[ia]=Libreria per usar le thema de emoticones Adium
Comment[id]=Pustaka untuk menggunakan tema emoticon Adium
Comment[is]=Forritlingasafn til notkunar með Adium broskallaþema
Comment[it]=Libreria per usare il tema faccine Adium
Comment[ja]=Adium 感情アイコンテーマのライブラリ
Comment[kk]=Adium көңіл-күй белгілер нақышының жиыны
Comment[km]=បណ្ណាល័យ​ត្រូវ​ប្រើ​ស្បែក​សញ្ញា​អារម្មណ៍ Adium
Comment[kn]=ಏಡಿಯಮ್ ಭಾವನಾಚಿಹ್ನೆಗಳ (ಎಮೋಟಿಕಾನ್) ಪರಿಸರವಿನ್ಯಾಸವನ್ನು (ಥೀಮ್) ಬಳಸಲು ಒಂದು ಭಂಡಾರ (ಲೈಬ್ರರಿ)
Comment[ko]=Adium 이모티콘 테마를 사용할 라이브러리
Comment[ku]=Pirtûkxane ji bo bi kar anîna Dirba Vegotinan yê Adium
Comment[lt]=Biblioteka, leidžianti naudoti adium jaustukų temą
Comment[lv]=Adium emocijzīmju tēmas bibliotēka
Comment[mai]=एडियम भावचिन्ह प्रसंगक प्रयोगक लेल लाइब्रेरी
Comment[ml]=അഡിയം ഇമോട്ടിക്കോണ്‍ രംഗവിതാനം ഉപയോഗിയ്ക്കേണ്ട ലൈബ്രറി
Comment[mr]=ऐडीयम भावरेषा सुत्रयोजना वापरण्याकरीता लायब्ररी
Comment[nb]=Bibliotek for å bruke Adium smilefjestema
Comment[nds]=Bibliotheek, mit de sik dat Snutensett Adium bruken lett
Comment[nl]=Bibliotheek voor het gebruiken van het Adium-emoticonsthema
Comment[nn]=Bibliotek for å bruka fjesingtema frå Adium
Comment[or]=Adium Emoticons ପ୍ରସଙ୍ଗକୁ ବ୍ୟବହାର କରିବା ପାଇଁ ଲାଇବ୍ରେରୀ
Comment[pa]=ਅਡੀਉਮ ਈਮੋਸ਼ਨ ਥੀਮ ਲਈ ਲਾਇਬਰੇਰੀ
Comment[pl]=Biblioteka do motywu emotikon Adium
Comment[pt]=Uma biblioteca para usar os temas de ícones emotivos do Adium
Comment[pt_BR]=Biblioteca para utilização do tema emoticons Adium
Comment[ro]=Bibliotecă de utilizat tematica de emoticoni Adium
Comment[ru]=Библиотека набора смайликов Adium
Comment[se]=Bibliotehka mii dulko Adium mojánfáttáid
Comment[sk]=Knižnica na použitie témy emotikonov Adium
Comment[sl]=Knjižnica za uporabo Adiumovih tem ikon čustev
Comment[sr]=Библиотека за Адијумову тему емотикона
Comment[sr@ijekavian]=Библиотека за Адијумову тему емотикона
Comment[sr@ijekavianlatin]=Biblioteka za Adiumovu temu emotikona
Comment[sr@latin]=Biblioteka za Adiumovu temu emotikona
Comment[sv]=Bibliotek för att använda Adium smilistema
Comment[ta]=ஏடியம் உணர்வுரு தோற்றத்திற்கான நிரலகம்
Comment[tg]=Китобхонаи мавзӯъи Adium emoticons
Comment[th]=ไลบรารีที่ใช้ภาพไอคอนสื่ออารมณ์ของ Adium
Comment[tr]=Adium Duygu Simgesi Temasını kullanmak için kitaplık
-Comment[ug]=Adium چىراي ئىپادە ئۆرنىكىنى ئىشلىتىدىغان ئامبار
+Comment[ug]=Adium چىراي ئىپادە تېمىسىنى ئىشلىتىدىغان ئامبار
Comment[uk]=Бібліотека для використання теми емоційок Adium
+Comment[vi]=Thư viện để sử dụng giao diện hình biểu cảm Adium
Comment[wa]=Livreye pos eployî l' tinme di xhinêyes Adium
Comment[x-test]=xxLibrary to use Adium emoticons themexx
Comment[zh_CN]=使用 Adium 表情主题的类库
Comment[zh_TW]=使用 Adium 表情圖示主題的函式庫
X-KDE-ServiceTypes=KEmoticons
X-KDE-Library=emoticonstheme_adium
X-KDE-EmoticonsFileName=Emoticons.plist
X-KDE-Priority=8
diff --git a/kutils/kemoticons/providers/kde/emoticonstheme_kde.desktop b/kutils/kemoticons/providers/kde/emoticonstheme_kde.desktop
index 7c0b5d63f4..6366cd2874 100644
--- a/kutils/kemoticons/providers/kde/emoticonstheme_kde.desktop
+++ b/kutils/kemoticons/providers/kde/emoticonstheme_kde.desktop
@@ -1,141 +1,143 @@
[Desktop Entry]
Type=Service
Name=KDE Emoticons Theme
Name[bg]=Тема с емоции KDE
Name[bn]=কে.ডি.ই. ইমোট-আইকনস থীম
Name[bs]=KDE‑ova tema emotikona
Name[ca]=Tema d'emoticones del KDE
Name[ca@valencia]=Tema d'emoticones del KDE
Name[cs]=Motiv emotikonů KDE
Name[da]=KDE emotikon-tema
Name[de]=KDE-Emoticon-Design
Name[el]=Θέμα εικονιδίων διάθεσης KDE
Name[en_GB]=KDE Emoticons Theme
Name[es]=Tema de emoticonos de KDE
Name[et]=KDE emotikoniteema
Name[eu]=KDE emotikono gaia
Name[fi]=KDE-hymiöteemat
Name[fr]=Thèmes d'émoticônes KDE
Name[ga]=Téama Straoiseog KDE
Name[gl]=Tema de emoticonas de KDE
Name[hr]=KDE-ova tema emotikanata
Name[hu]=KDE emotikon-téma
Name[ia]=Thema de emoticones de KDE
Name[id]=Tema Emoticon KDE
Name[is]=KDE broskallaþema
Name[it]=Tema faccine di KDE
Name[ja]=KDE 感情アイコンテーマ
Name[kk]=KDE көңіл-күй белгілер нақышы
Name[km]=ស្បែក​សញ្ញា​អារម្មណ៍​របស់ KDE
Name[ko]=KDE 이모티콘 테마
Name[ku]=Dirba Vegotinan yên Kde
Name[lt]=KDE jaustukų tema
Name[lv]=KDE emocijzīmju tēma
Name[nb]=KDE smilefjestema
Name[nds]=KDE-Snutensett
Name[nl]=KDE-emoticons-thema
Name[pa]=KDE ਈਮੋਸ਼ਨ ਥੀਮ
Name[pl]=Motyw emotikon KDE
Name[pt]=Tema de Ícones Emotivos do KDE
Name[pt_BR]=Tema de emoticons do KDE
Name[ro]=Tematică de emoticoni KDE
Name[ru]=Набор смайликов для KDE
Name[se]=KDE mojánfáddá
Name[si]=KDE Emoticons තේමාව
Name[sk]=Téma emotikonov KDE
Name[sl]=Tema ikon čustev za KDE
Name[sr]=КДЕ‑ова тема емотикона
Name[sr@ijekavian]=КДЕ‑ова тема емотикона
Name[sr@ijekavianlatin]=KDE‑ova tema emotikona
Name[sr@latin]=KDE‑ova tema emotikona
Name[sv]=KDE smilistema
Name[ta]=கேடியீ உணர்வுருக்கள் தோற்றம்
Name[th]=ภาพไอคอนสื่ออารมณ์ของ KDE
Name[tr]=Kde Duygu Simgesi Teması
-Name[ug]=KDE چىراي ئىپادە ئۆرنىكى
+Name[ug]=KDE چىراي ئىپادە تېمىسى
Name[uk]=Тема емоційок KDE
+Name[vi]=Giao diện hình biểu cảm KDE
Name[wa]=Tinme di xhinêyes KDE
Name[x-test]=xxKDE Emoticons Themexx
Name[zh_CN]=KDE 表情主题
Name[zh_TW]=KDE 表情圖示主題
Comment=Library to use KDE emoticons theme
Comment[ar]=مكتبة لاستخدام سمة رموز كيدي
Comment[as]=KDE emoticons থিম ব্যৱহাৰ কৰা লাইব্ৰেৰী
Comment[ast]=Biblioteca pa usar el tema d'emoticonos KDE
Comment[be@latin]=Biblijateka dla matyvaŭ smajlikaŭ „KDE”
Comment[bg]=Библиотека за тема с емоции KDE
Comment[bn]=কে-ডি-ই ইমোট-আইকন থীম ব্যবহার করার লাইব্রেরী
Comment[bn_IN]=KDE ইমো-আইকন থিম প্রয়োগ করতে ব্যবহৃত লাইব্রেরি
Comment[bs]=Biblioteka za KDE‑ovu temu emotikona
Comment[ca]=Biblioteca per a usar el tema d'emoticones KDE
Comment[ca@valencia]=Biblioteca per a usar el tema d'emoticones KDE
Comment[cs]=Knihovna pro použití motivu emotikonů KDE
Comment[csb]=Bibloteka do brëkòwaniô emòtikónków temë KDE
Comment[da]=Bibliotek til at bruge KDE emotikon-temaer
Comment[de]=Bibliothek zur Verwendung des KDE-Emoticon-Designs
Comment[el]=Βιβλιοθήκη για τη χρήση του θέματος εικονιδίων διάθεσης KDE
Comment[en_GB]=Library to use KDE emoticons theme
Comment[eo]=Biblioteko por uzi KDE Mien-Etoson
Comment[es]=Biblioteca para usar el tema de emoticonos de KDE
Comment[et]=Teek KDE emotikoniteema kasutamiseks
Comment[eu]=KDEko aurpegiera gaia erabiltzeko liburutegia
Comment[fi]=Kirjasto KDE-hymiöteemojen käyttämiseen
Comment[fr]=Bibliothèque permettant d'utiliser les thèmes d'émoticônes KDE
Comment[fy]=Biblioteek om KDE emoticons tema te brûken
Comment[ga]=Leabharlann le húsáid téama straoiseog KDE
Comment[gl]=Unha biblioteca para empregar temas de emoticonas de KDE
Comment[gu]=KDE ઇમોકેશન થીમ ઉપયોગ કરવા માટેની લાઇબ્રેરી
Comment[he]=ספריה לשימוש בערכת הפרצופונים של KDE
Comment[hne]=केडीई चेहराचिनहा थीम ल उपयोग करे बर लाइब्रेरी
Comment[hr]=Biblioteka za korištenje KDE-ove teme emotikona
Comment[hsb]=Biblioteka za KDE emoticons theme
Comment[hu]=Programkönyvtár a KDE emotikon-témához
Comment[ia]=Libreria per usar le thema de emoticones de KDE
Comment[id]=Pustaka untuk menggunakan tema emoticon KDE
Comment[is]=Forritlingasafn til notkunar með KDE broskallaþema
Comment[it]=Libreria per usare il tema faccine di Kde
Comment[ja]=KDE 感情アイコンテーマのライブラリ
Comment[kk]=KDE көңіл-күй белгілер нақышының жиыны
Comment[km]=បណ្ណាល័យ​ត្រូវ​ប្រើ​ស្បែក​សញ្ញា​អារម្មណ៍​របស់ KDE
Comment[kn]=ಕೆಡಿಇ ಭಾವನಾಚಿಹ್ನೆಗಳ (ಎಮೋಟಿಕಾನ್) ಪರಿಸರವಿನ್ಯಾಸವನ್ನು (ಥೀಮ್) ಬಳಸಲು ಒಂದು ಭಂಡಾರ (ಲೈಬ್ರರಿ)
Comment[ko]=KDE 이모티콘 테마를 사용할 라이브러리
Comment[ku]=Pirtûkxane ji bo bi kar anîna Dirba Vegotinan yê KDE
Comment[lt]=Biblioteka, leidžianti naudoti kde jaustukų temą
Comment[lv]=KDE emocijzīmju tēmas bibliotēka
Comment[mai]=केडीई भावचिन्ह प्रसंगक प्रयोगक लेल लाइब्रेरी
Comment[ml]=കെഡിഇ ഇമോട്ടിക്കോണ്‍ രംഗവിതാനം ഉപയോഗിയ്ക്കേണ്ട ലൈബ്രറി
Comment[mr]=KDE भावरेषा सुत्रयोजना वापरण्याकरीता लायब्ररी
Comment[nb]=Bibliotek for å bruke KDE smilefjestema
Comment[nds]=Bibliotheek, mit de sik dat KDE-Snutensett bruken lett
Comment[nl]=Bibliotheek voor het gebruik van het KDE-emoticonsthema
Comment[nn]=Bibliotek for å bruka fjesingtema frå KDE
Comment[or]=Kde Emoticons ପ୍ରସଙ୍ଗକୁ ବ୍ୟବହାର କରିବା ପାଇଁ ଲାଇବ୍ରେରୀ
Comment[pa]=ਕੇਡੀਈ ਈਮੋਸ਼ਨ ਥੀਮ ਵਰਤਣ ਲਈ ਲਾਈਬਰੇਰੀ
Comment[pl]=Biblioteka do motywu emotikon KDE
Comment[pt]=Uma biblioteca para usar os temas de ícones emotivos do KDE
Comment[pt_BR]=Biblioteca para utilização do tema emoticons Adium
Comment[ro]=Bibliotecă de utilizat tematica de emoticoni KDE
Comment[ru]=Библиотека набора смайликов KDE
Comment[se]=Bibliotehka mii dulko KDE mojánfáttáid
Comment[si]=KDE emoticons තේමාව සඳහා භාවිත කළ යුතු පුස්තකාලය
Comment[sk]=Knižnica na použitie témy emotikonov KDE
Comment[sl]=Knjižnica za uporabo KDE-jevih tem ikon čustev
Comment[sr]=Библиотека за КДЕ‑ову тему емотикона
Comment[sr@ijekavian]=Библиотека за КДЕ‑ову тему емотикона
Comment[sr@ijekavianlatin]=Biblioteka za KDE‑ovu temu emotikona
Comment[sr@latin]=Biblioteka za KDE‑ovu temu emotikona
Comment[sv]=Bibliotek för att använda KDE smilistema
Comment[ta]=நிரலகம் கேடியி உணர்வுரு தோற்றத்தை பயன்படுத்தும்
Comment[tg]=Китобхонаи мавзӯъи KDE emoticons
Comment[th]=ไลบรารีที่ใช้ภาพไอคอนสื่ออารมณ์ของ KDE
Comment[tr]=Kde Duygu Simgesi Temasını kullanmak için kitaplık
-Comment[ug]=KDE چىراي ئىپادە ئۆرنىكىنى ئىشلىتىدىغان ئامبار
+Comment[ug]=KDE چىراي ئىپادە تېمىسىنى ئىشلىتىدىغان ئامبار
Comment[uk]=Бібліотека для використання теми емоційок KDE
+Comment[vi]=Thư viện để sử dụng giao diện hình biểu cảm KDE
Comment[wa]=Livreye pos eployî l' tinme di xhinêyes KDE
Comment[x-test]=xxLibrary to use KDE emoticons themexx
Comment[zh_CN]=使用 KDE 表情主题的类库
Comment[zh_TW]=使用 KDE 表情圖示主題的函式庫
X-KDE-ServiceTypes=KEmoticons
X-KDE-Library=emoticonstheme_kde
X-KDE-EmoticonsFileName=emoticons.xml
X-KDE-Priority=10
diff --git a/kutils/kemoticons/providers/pidgin/emoticonstheme_pidgin.desktop b/kutils/kemoticons/providers/pidgin/emoticonstheme_pidgin.desktop
index d1c72250ec..7e66df48dd 100644
--- a/kutils/kemoticons/providers/pidgin/emoticonstheme_pidgin.desktop
+++ b/kutils/kemoticons/providers/pidgin/emoticonstheme_pidgin.desktop
@@ -1,160 +1,162 @@
[Desktop Entry]
Type=Service
Name=Pidgin Emoticons Theme
Name[ar]=سمة رموز Pidgin
Name[as]=Pidgin Emoticons থিম
Name[ast]=Tema d'emoticonos Pidgin
Name[be@latin]=Matyŭ smajlikaŭ dla „Pidgin”
Name[bg]=Тема с емоции Pidgin
Name[bn]=পিজিন ইমোট-আইকন থীম
Name[bn_IN]=Pidgin ইমো-আইকন থিম
Name[bs]=Pidžinova tema emotikona
Name[ca]=Tema d'emoticones Pidgin
Name[ca@valencia]=Tema d'emoticones Pidgin
Name[cs]=Motiv emotikonů Pidgin
Name[csb]=Témë emòtikównków Pidgina
Name[da]=Pidgin emotikon-tema
Name[de]=Pidgin-Emoticon-Design
Name[el]=Θέμα εικονιδίων διάθεσης Pidgin
Name[en_GB]=Pidgin Emoticons Theme
Name[eo]=Pidgin Mien-Etoso
Name[es]=Tema de emoticonos Pidgin
Name[et]=Pidgini emotikoniteema
Name[eu]=Pidgin-en aurpegiera gaia
Name[fi]=Pidgin-hymiöteemat
Name[fr]=Thème d'émoticônes pour Pidgin
Name[fy]=Pidgin emoticons tema
Name[ga]=Téama Straoiseog Pidgin
Name[gl]=Tema de emoticonas de Pidgin
Name[gu]=પીડગીન ઇમોકેશન થીમ ઉપયોગ કરવા માટેની લાઇબ્રેરી
Name[he]=ערכת פרצופונים של Pidgin
Name[hne]=पिडगिन चेहराचिनहा थीम
Name[hr]=Pidginova tema emotikona
Name[hsb]=Pidgin Emoticons Theme
Name[hu]=Pidgin emotikon-téma
Name[ia]=Thema de emoticones Pidgin
Name[id]=Tema Emoticon Pidgin
Name[is]=Pidgin broskallaþema
Name[it]=Tema faccine Pidgin
Name[ja]=Pidgin 感情アイコンテーマ
Name[kk]=Pidgin көңіл-күй белгілер нақышы
Name[km]=ស្បែក​សញ្ញា​អារម្មណ៍​របស់ Pidgin
Name[kn]=ಪಿಡ್ಗಿನ್ (ಎಮೋಟಿಕಾನ್ಸ್) ಪರಿಸರವಿನ್ಯಾಸ (ಥೀಮ್)
Name[ko]=피진 이모티콘 테마
Name[ku]=Dirba Vegotinan yê Pidgin
Name[lt]=Pidgin jaustukų tema
Name[lv]=Pidgin emocijzīmju tēma
Name[mai]=पिजिन भावचिन्ह प्रसंग
Name[ml]=പിഡ്ജിന്‍ ഇമോട്ടിക്കോണ്‍ രംഗവിതാനം
Name[mr]=Pidgin भावरेषा सुत्रयोजना
Name[nb]=Pidgin smilefjestema
Name[nds]=Snutensett Pidgin
Name[nl]=Pidgin-emoticonsthema
Name[nn]=Pidgin-fjesingtema
Name[or]=Pidgin Emoticons ପ୍ରସଙ୍ଗ
Name[pa]=ਪਿਡਗਿਨ ਈਮੋਸ਼ਨ ਥੀਮ
Name[pl]=Motyw emotikon Pidgin
Name[pt]=Tema de Ícones Emotivos do Pidgin
Name[pt_BR]=Tema emoticons do Pidgin
Name[ro]=Tematică de emoticoni Pidgin
Name[ru]=Набор смайликов Pidgin
Name[se]=Piding mojánfáddá
Name[si]=Pidgin Emoticons තේමාව
Name[sk]=Téma emotikonov Pidgin
Name[sl]=Tema ikon čustev za Pidgin
Name[sr]=Пиџинова тема емотикона
Name[sr@ijekavian]=Пиџинова тема емотикона
Name[sr@ijekavianlatin]=Pidginova tema emotikona
Name[sr@latin]=Pidginova tema emotikona
Name[sv]=Pidgin smilistema
Name[ta]=பிட்கின் உணர்வுருக்கள் தோற்றம்
Name[tg]=Мавзӯъи Pidgin Emoticons
Name[th]=ภาพไอคอนสื่ออารมณ์ของ Pidgin
Name[tr]=Pidgin Duygu Simgesi Teması
-Name[ug]=Pidgin چىراي ئىپادە ئۆرنىكى
+Name[ug]=Pidgin چىراي ئىپادە تېمىسى
Name[uk]=Тема емоційок Pidgin
+Name[vi]=Giao diện hình biểu cảm Pidgin
Name[wa]=Tinme di xhinêyes Pidgin
Name[x-test]=xxPidgin Emoticons Themexx
Name[zh_CN]=Pidgin 表情主题
Name[zh_TW]=Pidgin 表情圖示主題
Comment=Library to use Pidgin emoticons theme
Comment[ar]=مكتبة لاستخدام سمة رموز Pidgin
Comment[as]=Pidgin Emoticons থিম ব্যৱহাৰ কৰা লাইব্ৰেৰী
Comment[ast]=Biblioteca pa usar el tema d'emoticonos Pidgin
Comment[be@latin]=Biblijateka dla matyvaŭ smajlikaŭ „Pidgin”
Comment[bg]=Библиотека за темата с емоции Pidgin
Comment[bn]=পিজিন ইমোট-আইকন থীম ব্যবহার করার লাইব্রেরী
Comment[bn_IN]=Pidgin ইমো-আইকন থিম প্রয়োগ করতে ব্যবহৃত লাইব্রেরি
Comment[bs]=Biblioteka za Pidžinovu temu emotikona
Comment[ca]=Biblioteca per a usar el tema d'emoticones Pidgin
Comment[ca@valencia]=Biblioteca per a usar el tema d'emoticones Pidgin
Comment[cs]=Knihovna pro použití motivu emotikonů Pidgin
Comment[csb]=Bibloteka do brëkòwaniô emòtikónków temë Pidgina
Comment[da]=Bibliotek til at bruge Pidgin emotikon-temaer
Comment[de]=Bibliothek zur Verwendung des Pidgin-Emoticon-Designs
Comment[el]=Βιβλιοθήκη για τη χρήση του θέματος εικονιδίων διάθεσης Pidgin
Comment[en_GB]=Library to use Pidgin emoticons theme
Comment[eo]=Biblioteko por uzi Pidgin Mien-Etoson
Comment[es]=Biblioteca para usar el tema de emoticonos Pidgin
Comment[et]=Teek Pidgini emotikoniteema kasutamiseks
Comment[eu]=Pidgin-en aurpegiera gaia erabiltzeko liburutegia
Comment[fi]=Kirjasto Pidgin-hymiöteemojen käyttämiseen
Comment[fr]=Bibliothèque permettant d'utiliser les thèmes d'émoticônes Pidgin
Comment[fy]=Biblioteek om Pidgin emoticons tema te brûken
Comment[ga]=Leabharlann le húsáid téama straoiseog Pidgin
Comment[gl]=Unha biblioteca para empregar temas de emoticonas de Pidgin
Comment[gu]=પીડગીન ઇમોકેશન થીમ ઉપયોગ કરવા માટેની લાઇબ્રેરી
Comment[he]=ספריה לשימוש בערכת הפרצופונים של Pidgin
Comment[hne]=पिडगिन चेहराचिनहा थीम ल उपयोग करे बर लाइब्रेरी
Comment[hr]=Biblioteka za korištenje Pidginove teme emotikona
Comment[hsb]=Biblioteka za Pidgin emoticons theme
Comment[hu]=Programkönyvtár a Pidgin emotikon-témához
Comment[ia]=Libreria per usar le thema de emoticones Pidgin
Comment[id]=Pustaka untuk menggunakan tema emoticon Pidgin
Comment[is]=Forritlingasafn til notkunar með Pidgin broskallaþema
Comment[it]=Libreria per usare il tema faccine Pidgin
Comment[ja]=Pidgin 感情アイコンテーマのライブラリ
Comment[kk]=Pidgin көңіл-күй белгілер нақышының жиыны
Comment[km]=បណ្ណាល័យ​ត្រូវ​ប្រើ​ស្បែក​សញ្ញា​អារម្មណ៍​របស់ Pidgin
Comment[kn]=ಪಿಡ್ಗಿನ್ ಭಾವನಾಚಿಹ್ನೆಗಳ (ಎಮೋಟಿಕಾನ್) ಪರಿಸರವಿನ್ಯಾಸವನ್ನು (ಥೀಮ್) ಬಳಸಲು ಒಂದು ಭಂಡಾರ (ಲೈಬ್ರರಿ)
Comment[ko]=피진 이모티콘 테마를 사용할 라이브러리
Comment[ku]=Pirtûkxane ji bo bi kar anîna Dirba Vegotinan yê Pidgin
Comment[lt]=Biblioteka, leidžianti naudoti Pidgin jaustukų temą
Comment[lv]=Pidgin emocijzīmju tēmas bibliotēka
Comment[mai]=पिजिन भावचिन्ह प्रसंगक प्रयोगक लेल लाइब्रेरी
Comment[ml]=പിഡ്ജിന്‍ ഇമോട്ടിക്കോണ്‍ രംഗവിതാനം ഉപയോഗിയ്ക്കേണ്ട ലൈബ്രറി
Comment[mr]=Pidgin भावरेषा सुत्रयोजना वापरण्याकरीता लायब्ररी
Comment[nb]=Bibliotek for å bruke Pidgin smilefjestema
Comment[nds]=Bibliotheek, mit de sik dat Snutensett Pidgin bruken lett
Comment[nl]=Bibliotheek voor het gebruik van het Pidgin-emoticonsthema
Comment[nn]=Bibliotek for å bruka fjesingtema frå Pidgin
Comment[or]=Pidgin Emoticons ପ୍ରସଙ୍ଗକୁ ବ୍ୟବହାର କରିବା ପାଇଁ ଲାଇବ୍ରେରୀ
Comment[pa]=ਪਿਡਗਿਨ ਈਮੋਸ਼ਨ ਥੀਮ ਲਈ ਲਾਇਬਰੇਰੀ
Comment[pl]=Biblioteka do motywu emotikon Pidgin
Comment[pt]=Uma biblioteca para usar os temas de ícones emotivos do Pidgin
Comment[pt_BR]=Biblioteca para utilização do tema emoticons do Pidgin
Comment[ro]=Bibliotecă de utilizat tematica de emoticoni Pidgin
Comment[ru]=Библиотека набора смайликов Pidgin
Comment[se]=Bibliotehkta mii dulko Pidgin mojánfáttáid
Comment[si]=Pidgin Emoticons තේමාව තේමාව සඳහා භාවිත කළ යුතු පුස්තකාලය
Comment[sk]=Knižnica na použitie témy emotikonov Pidgin
Comment[sl]=Knjižnica za uporabo Pidginovih tem ikon čustev
Comment[sr]=Библиотека за Пиџинову тему емотикона
Comment[sr@ijekavian]=Библиотека за Пиџинову тему емотикона
Comment[sr@ijekavianlatin]=Biblioteka za Pidginovu temu emotikona
Comment[sr@latin]=Biblioteka za Pidginovu temu emotikona
Comment[sv]=Bibliotek för att använda Pidgin smilistema
Comment[ta]=நிரலகம் பிட்கின் உணர்வுரு தோற்றத்தை பயன்படுத்தும்
Comment[tg]=Китобхонаи мавзӯъи Pidgin emoticons
Comment[th]=ไลบรารีที่ใช้ภาพไอคอนสื่ออารมณ์ของ Pidgin
Comment[tr]=Pidgin Duygu Simgesi Temasını kullanmak için kitaplık
-Comment[ug]=Pidgin چىراي ئىپادە ئۆرنىكىنى ئىشلىتىدىغان ئامبار
+Comment[ug]=Pidgin چىراي ئىپادە تېمىسىنى ئىشلىتىدىغان ئامبار
Comment[uk]=Бібліотека для використання теми емоційок Pidgin
+Comment[vi]=Thư viện để sử dụng giao diện hình biểu cảm Pidgin
Comment[wa]=Livreye pos eployî l' tinme di xhinêyes Pidgin
Comment[x-test]=xxLibrary to use Pidgin emoticons themexx
Comment[zh_CN]=使用 Pidgin 表情主题的类库
Comment[zh_TW]=使用 Pidgin 表情圖示主題的函式庫
X-KDE-ServiceTypes=KEmoticons
X-KDE-Library=emoticonstheme_pidgin
X-KDE-EmoticonsFileName=theme
X-KDE-Priority=7
diff --git a/kutils/kemoticons/providers/xmpp/emoticonstheme_xmpp.desktop b/kutils/kemoticons/providers/xmpp/emoticonstheme_xmpp.desktop
index 0800002bc5..493275c112 100644
--- a/kutils/kemoticons/providers/xmpp/emoticonstheme_xmpp.desktop
+++ b/kutils/kemoticons/providers/xmpp/emoticonstheme_xmpp.desktop
@@ -1,160 +1,162 @@
[Desktop Entry]
Type=Service
Name=XMPP Emoticons Theme
Name[ar]=سمة رموز XMPP
Name[as]=XMPP Emoticons থিম
Name[ast]=Tema d'emoticonos XMPP
Name[be@latin]=Matyŭ smajlikaŭ dla „XMPP”
Name[bg]=Тема с емоции XMPP
Name[bn]=এক্স-এম-পি-পি ইমোট-আইকন থীম
Name[bn_IN]=XMPP ইমো-আইকন থিম
Name[bs]=XMPP tema emotikona
Name[ca]=Tema d'emoticones XMPP
Name[ca@valencia]=Tema d'emoticones XMPP
Name[cs]=Motiv emotikonů XMPP
Name[csb]=Témë emòtikównków XMPP
Name[da]=XMPP emotikon-tema
Name[de]=XMPP-Emoticon-Design
Name[el]=Θέμα εικονιδίων διάθεσης XMPP
Name[en_GB]=XMPP Emoticons Theme
Name[eo]=XMPP Mien-Etoso
Name[es]=Tema de emoticonos XMPP
Name[et]=XMPP emotikoniteema
Name[eu]=XMPP-ren aurpegiera gaia
Name[fi]=XMPP-hymiöteemat
Name[fr]=Thèmes d'émoticônes XMPP
Name[fy]=XMPP emoticons theme
Name[ga]=Téama Straoiseog XMPP
Name[gl]=Tema de emoticonas de XMPP
Name[gu]=XMPP ઇમોકેશન થીમ
Name[he]=ערכת פרצופונים של XMPP
Name[hne]=एक्सएमपीपी चेहराचिनहा थीम
Name[hr]=XMPP-ova tema emotikona
Name[hsb]=XMPP Emoticons Theme
Name[hu]=XMPP emotikon-téma
Name[ia]=Thema de emoticones XMPP
Name[id]=Tema Emoticon XMPP
Name[is]=XMPP broskallaþema
Name[it]=Tema faccine XMPP
Name[ja]=XMPP 感情アイコンテーマ
Name[kk]=XMPP көңіл-күй белгілер нақышы
Name[km]=ស្បែក​សញ្ញា​អារម្មណ៍​របស់ XMPP
Name[kn]=XMPP (ಎಮೋಟಿಕಾನ್ಸ್) ಪರಿಸರವಿನ್ಯಾಸ (ಥೀಮ್)
Name[ko]=XMPP 이모티콘 테마
Name[ku]=Dirba Vegotinan yê XMPP
Name[lt]=XMPP jaustukų tema
Name[lv]=XMPP emocijzīmju tēma
Name[mai]=एक्सएमपीपी भावचिन्ह प्रसंग
Name[ml]=എക്സ്എംപിപി ഇമോട്ടിക്കോണ്‍ രംഗവിതാനം
Name[mr]=XMPP भावरेषा सुत्रयोजना
Name[nb]=XMPP smilefjestema
Name[nds]=XMPP-Snutensett
Name[nl]=XMPP-emoticonsthema
Name[nn]=XMPP-fjesingtema
Name[or]=XMPP Emoticons ପ୍ରସଙ୍ଗ
Name[pa]=XMPP Emoticons Theme
Name[pl]=Motyw emotikon XMPP
Name[pt]=Tema de Ícones Emotivos do XMPP
Name[pt_BR]=Tema emoticons XMPP
Name[ro]=Tematică de emoticoni XMPP
Name[ru]=Набор смайликов XMPP
Name[se]=XMPP mojánfáddá
Name[si]=XMPP Emoticons තේමාව
Name[sk]=Téma emotikonov XMPP
Name[sl]=Tema ikon čustev za Jabber/XMPP
Name[sr]=ИксМПП тема емотикона
Name[sr@ijekavian]=ИксМПП тема емотикона
Name[sr@ijekavianlatin]=XMPP tema emotikona
Name[sr@latin]=XMPP tema emotikona
Name[sv]=XMPP smilistema
Name[ta]=XMPP உணர்வுருக்கள் தோற்றம்
Name[tg]=Мавзӯъи XMPP Emoticons
Name[th]=ภาพไอคอนสื่ออารมณ์ของ XMPP
Name[tr]=XMPP Duygu Simgesi Teması
-Name[ug]=XMPP چىراي ئىپادە ئۆرنىكى
+Name[ug]=XMPP چىراي ئىپادە تېمىسى
Name[uk]=Тема емоційок XMPP
+Name[vi]=Giao diện hình biểu cảm XMPP
Name[wa]=Tinme di xhinêyes XMPP
Name[x-test]=xxXMPP Emoticons Themexx
Name[zh_CN]=XMPP 表情主题
Name[zh_TW]=XMPP 表情圖示主題
Comment=Library to use XMPP emoticons theme
Comment[ar]=مكتبة لاستخدام سمة رموز XMPP
Comment[as]=XMPP Emoticons থিম ব্যৱহাৰ কৰা লাইব্ৰেৰী
Comment[ast]=Biblioteca pa usar el tema d'emoticonos XMPP
Comment[be@latin]=Biblijateka dla matyvaŭ smajlikaŭ „XMPP”
Comment[bg]=Библиотека за темата с емоции XMPP
Comment[bn]=এক্স-এম-পি-পি ইমোট-আইকন থীম ব্যবহার করার লাইব্রেরী
Comment[bn_IN]=XMPP ইমো-আইকন থিম প্রয়োগ করতে ব্যবহৃত লাইব্রেরি
Comment[bs]=Biblioteka za IksMPP temu emotikona
Comment[ca]=Biblioteca per a usar el tema d'emoticones XMPP
Comment[ca@valencia]=Biblioteca per a usar el tema d'emoticones XMPP
Comment[cs]=Knihovna pro použití motivu emotikonů XMPP
Comment[csb]=Bibloteka do brëkòwaniô emòtikónków temë XMPP
Comment[da]=Bibliotek til at bruge XMPP emotikon-temaer
Comment[de]=Bibliothek zur Verwendung des XMPP-Emoticon-Designs
Comment[el]=Βιβλιοθήκη για τη χρήση του θέματος εικονιδίων διάθεσης XMPP
Comment[en_GB]=Library to use XMPP emoticons theme
Comment[eo]=Biblioteko por uzi XMPP Mien-Etoson
Comment[es]=Biblioteca para usar el tema de emoticonos XMPP
Comment[et]=Teek XMPP emotikoniteema kasutamiseks
Comment[eu]=XMPP-ren aurpegiera gaia erabiltzeko liburutegia
Comment[fi]=Kirjasto XMPP-hymiöteemojen käyttämiseen
Comment[fr]=Bibliothèque permettant d'utiliser les thèmes d'émoticônes XMPP
Comment[fy]=Biblioteek om XMPP emoticons tema te brûken
Comment[ga]=Leabharlann le húsáid téama straoiseog XMPP
Comment[gl]=Unha biblioteca para empregar temas de emoticonas de XMPP
Comment[gu]=XMPP ઇમોકેશન થીમ ઉપયોગ કરવા માટેની લાઇબ્રેરી
Comment[he]=ספריה לשימוש בערכת הפרצופונים של XMMP
Comment[hne]=एक्सएमपीपी चेहराचिनहा थीम ल उपयोग करे बर लाइब्रेरी
Comment[hr]=Biblioteka za korištenje XMPP-ove teme emotikona
Comment[hsb]=Biblioteka za XMPP emoticons theme
Comment[hu]=Programkönyvtár az XMPP emotikon-témához
Comment[ia]=Libreria per usar le thema de emoticones XMPP
Comment[id]=Pustaka untuk menggunakan tema emoticon XMPP
Comment[is]=Forritlingasafn til notkunar með XMPP broskallaþema
Comment[it]=Libreria per usare il tema faccine XMPP
Comment[ja]=XMPP 感情アイコンテーマのライブラリ
Comment[kk]=XMPP көңіл-күй белгілер нақышының жиыны
Comment[km]=បណ្ណាល័យ​ត្រូវ​ប្រើ​ស្បែក​សញ្ញា​អារម្មណ៍​របស់ XMPP
Comment[kn]=XMPP ಭಾವನಾಚಿಹ್ನೆಗಳ (ಎಮೋಟಿಕಾನ್) ಪರಿಸರವಿನ್ಯಾಸವನ್ನು (ಥೀಮ್) ಬಳಸಲು ಒಂದು ಭಂಡಾರ (ಲೈಬ್ರರಿ)
Comment[ko]=XMPP 이모티콘 테마를 사용할 라이브러리
Comment[ku]=Pirtûkxane ji bo bi kar anîna Dirba Vegotinan yê XMPP
Comment[lt]=Biblioteka, leidžianti naudoti XMPP jaustukų temą
Comment[lv]=XMPP emocijzīmju tēmas bibliotēka
Comment[mai]=एक्सएमपीपी भावचिन्ह प्रसंगक प्रयोगक लेल लाइब्रेरी
Comment[ml]=എക്സ്എംപിപി ഇമോട്ടിക്കോണ്‍ രംഗവിതാനം ഉപയോഗിയ്ക്കേണ്ട ലൈബ്രറി
Comment[mr]=XMPP भावरेषा सुत्रयोजना वापरण्याकरीता लायब्ररी
Comment[nb]=Bibliotek for å bruke XMPP smilefjestema
Comment[nds]=Bibliotheek, mit de sik dat XMPP-Snutensett bruken lett
Comment[nl]=Bibliotheek voor het gebruik van het XMPP-emoticonsthema
Comment[nn]=Bibliotek for å bruka fjesingtema frå XMPP
Comment[or]=XMPP Emoticons ପ୍ରସଙ୍ଗକୁ ବ୍ୟବହାର କରିବା ପାଇଁ ଲାଇବ୍ରେରୀ
Comment[pa]=XMPP ਈਮੋਸ਼ਨ ਥੀਮ ਵਰਤਣ ਲਈ ਲਾਇਬਰੇਰੀ
Comment[pl]=Biblioteka do motywu emotikon XMPP
Comment[pt]=Uma biblioteca para usar os temas de ícones emotivos do XMPP
Comment[pt_BR]=Biblioteca para utilização do tema emoticons XMPP
Comment[ro]=Bibliotecă de utilizat tematica de emoticoni XMPP
Comment[ru]=Библиотека набора смайликов XMPP
Comment[se]=Bibliotehka mii dulko XMPP mojánfáttáid
Comment[si]=XMPP emoticons තේමාව සඳහා භාවිත කළ යුතු පුස්තකාලය
Comment[sk]=Knižnica na použitie témy emotikonov XMPP
Comment[sl]=Knjižnica za uporabo tem ikon čustev za Jabber/XMPP
Comment[sr]=Библиотека за ИксМПП тему емотикона
Comment[sr@ijekavian]=Библиотека за ИксМПП тему емотикона
Comment[sr@ijekavianlatin]=Biblioteka za XMPP temu emotikona
Comment[sr@latin]=Biblioteka za XMPP temu emotikona
Comment[sv]=Bibliotek för att använda XMPP smilistema
Comment[ta]=நிரலகம் XMPP உணர்வுரு தோற்றத்தை பயன்படுத்தும்
Comment[tg]=Китобхонаи мавзӯъи XMPP emoticons
Comment[th]=ไลบรารีที่ใช้ภาพไอคอนสื่ออารมณ์ของ XMPP
Comment[tr]=XMPP Duygu Simgesi Temasını kullanmak için kitaplık
-Comment[ug]=XMPP چىراي ئىپادە ئۆرنىكىنى ئىشلىتىدىغان ئامبار
+Comment[ug]=XMPP چىراي ئىپادە تېمىسىنى ئىشلىتىدىغان ئامبار
Comment[uk]=Бібліотека для використання теми емоційок XMPP
+Comment[vi]=Thư viện để sử dụng giao diện hình biểu cảm XMPP
Comment[wa]=Livreye pos eployî l' tinme di xhinêyes XMPP
Comment[x-test]=xxLibrary to use XMPP emoticons themexx
Comment[zh_CN]=使用 XMPP 表情主题的类库
Comment[zh_TW]=使用 XMPP 表情圖示主題的函式庫
X-KDE-ServiceTypes=KEmoticons
X-KDE-Library=emoticonstheme_xmpp
X-KDE-EmoticonsFileName=icondef.xml
X-KDE-Priority=9
diff --git a/nepomuk/query/query.cpp b/nepomuk/query/query.cpp
index e7c5d1ec3c..971ae10e4f 100644
--- a/nepomuk/query/query.cpp
+++ b/nepomuk/query/query.cpp
@@ -1,739 +1,739 @@
/*
This file is part of the Nepomuk KDE project.
Copyright (C) 2008-2010 Sebastian Trueg <trueg@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License version 2 as published by the Free Software Foundation.
This library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#include "query.h"
#include "query_p.h"
#include "term.h"
#include "term_p.h"
#include "nie.h"
#include "nfo.h"
#include "querybuilderdata_p.h"
#include "literalterm.h"
#include "resourceterm.h"
#include "andterm.h"
#include "orterm.h"
#include "negationterm.h"
#include "comparisonterm.h"
#include "resourcetypeterm.h"
#include "resourcetypeterm_p.h"
#include "optionalterm.h"
#include "queryserializer.h"
#include "queryparser.h"
#include "util.h"
#include "filequery.h"
#include <QtCore/QDebug>
#include <QtCore/QDateTime>
#include <QtCore/QRegExp>
#include <QtCore/QVariant>
#include <QtCore/QTextStream>
#include <Soprano/Node>
#include <Soprano/Model>
#include <Soprano/QueryResultIterator>
#include <Soprano/Vocabulary/RDFS>
#include <Soprano/Vocabulary/RDF>
#include <Soprano/Vocabulary/NRL>
#include <Soprano/Vocabulary/NAO>
#include "resourcemanager.h"
#include "literal.h"
#include "property.h"
#include "class.h"
#include <kdebug.h>
/*
## Full Text Score
## Entity Rank
## Surfaced via SPARQL
SELECT ?s ?sc ( <LONG::IRI_RANK> (?s) ) as ?Rank
WHERE { ?s ?p ?o .
?o bif:contains 'NEW AND YOR' option (score ?sc). }
ORDER BY desc (?
*/
Nepomuk::Query::Term Nepomuk::Query::QueryPrivate::createFolderFilter() const
{
Term mainTerm;
if ( !m_includeFolders.isEmpty() ) {
QStringList includeFilter;
for( QHash<KUrl, bool>::ConstIterator it = m_includeFolders.constBegin();
it != m_includeFolders.constEnd(); ++it ) {
const QString urlStr = it.key().url(KUrl::AddTrailingSlash);
if( it.value() )
includeFilter.append( QString::fromLatin1("(^%1)").arg( urlStr ) );
else
includeFilter.append( QString::fromLatin1("(^%1[^/]*$)").arg( urlStr ) );
}
mainTerm = mainTerm && ComparisonTerm(
Nepomuk::Vocabulary::NIE::url(),
LiteralTerm(includeFilter.join( "|" )),
ComparisonTerm::Regexp);
}
if ( !m_excludeFolders.isEmpty() ) {
mainTerm = mainTerm && NegationTerm::negateTerm(
ComparisonTerm(
Nepomuk::Vocabulary::NIE::url(),
LiteralTerm(QString::fromLatin1("^(%1)").arg( m_excludeFolders.toStringList(KUrl::AddTrailingSlash).join( "|" ) )),
ComparisonTerm::Regexp));
}
return mainTerm;
}
Nepomuk::Query::Term Nepomuk::Query::QueryPrivate::optimizeEvenMore(const Nepomuk::Query::Term& term) const
{
using namespace Nepomuk::Query;
//
// Merge ResourceTypeTerms which are combined in an OrTerm
//
if(term.type() == Term::Or) {
QList<Term> subTerms = term.toOrTerm().subTerms();
QList<ResourceTypeTerm> typeTerms;
QList<Term>::iterator it = subTerms.begin();
while(it != subTerms.end()) {
if(it->type() == Term::ResourceType) {
typeTerms << it->toResourceTypeTerm();
it = subTerms.erase(it);
}
else {
++it;
}
}
if(typeTerms.count() > 1) {
ResourceTypeTerm newTypeTerm;
foreach(const ResourceTypeTerm& rtt, typeTerms) {
static_cast<ResourceTypeTermPrivate*>(newTypeTerm.d_ptr.data())->m_types << rtt.type();
}
subTerms << newTypeTerm;
}
else if(typeTerms.count() == 1) {
subTerms += typeTerms.first();
}
if(subTerms.count() > 1)
return OrTerm(subTerms);
else if(subTerms.count() == 1)
return subTerms.first();
else
return OrTerm();
}
//
// For AndTerms we simply need to optimize the subterms
//
else if(term.type() == Term::And) {
AndTerm newAndTerm;
//
// Another small optimization: we sort all the ComparisonTerms which have a variable name set
// at the beginning. This allows to force this variable name in other ComparisonTerms that use
// the same property (for details see QueryBuilderData::uniqueVarName)
//
QList<Term> sortedSubTerms;
foreach( const Nepomuk::Query::Term &t, term.toAndTerm().subTerms() ) {
if(t.isComparisonTerm() && !t.toComparisonTerm().variableName().isEmpty()) {
sortedSubTerms.prepend(t);
}
else {
sortedSubTerms.append(t);
}
}
foreach(const Term& subTerm, sortedSubTerms) {
newAndTerm.addSubTerm(optimizeEvenMore(subTerm));
}
return newAndTerm;
}
//
// For OptionalTerms we simply need to optimize the subterm
//
else if(term.type() == Term::Optional) {
return OptionalTerm::optionalizeTerm(optimizeEvenMore(term.toOptionalTerm().subTerm()));
}
//
// For NegationTerms we simply need to optimize the subterm
//
else if(term.type() == Term::Negation) {
return NegationTerm::negateTerm(optimizeEvenMore(term.toNegationTerm().subTerm()));
}
else {
return term;
}
}
class Nepomuk::Query::Query::RequestProperty::Private : public QSharedData
{
public:
Nepomuk::Types::Property m_property;
bool m_optional;
};
Nepomuk::Query::Query::RequestProperty::RequestProperty( const Nepomuk::Types::Property& property,
bool optional )
: d(new Private())
{
d->m_property = property;
d->m_optional = optional;
}
Nepomuk::Query::Query::RequestProperty::RequestProperty( const RequestProperty& other )
{
d = other.d;
}
Nepomuk::Query::Query::RequestProperty::~RequestProperty()
{
}
Nepomuk::Query::Query::RequestProperty& Nepomuk::Query::Query::RequestProperty::operator=( const RequestProperty& other )
{
d = other.d;
return *this;
}
Nepomuk::Types::Property Nepomuk::Query::Query::RequestProperty::property() const
{
return d->m_property;
}
bool Nepomuk::Query::Query::RequestProperty::optional() const
{
return d->m_optional;
}
bool Nepomuk::Query::Query::RequestProperty::operator==( const RequestProperty& other ) const
{
return d->m_property == other.d->m_property && d->m_optional == other.d->m_optional;
}
Nepomuk::Query::Query::Query()
: d( new QueryPrivate() )
{
}
Nepomuk::Query::Query::Query( const Query& other )
{
d = other.d;
}
Nepomuk::Query::Query::Query( const Term& term )
: d ( new QueryPrivate() )
{
d->m_term = term;
}
Nepomuk::Query::Query::~Query()
{
}
Nepomuk::Query::Query& Nepomuk::Query::Query::operator=( const Query& other )
{
d = other.d;
return *this;
}
Nepomuk::Query::Query& Nepomuk::Query::Query::operator=( const Term& term )
{
d->m_term = term;
return *this;
}
bool Nepomuk::Query::Query::isValid() const
{
return( d->m_term.isValid() || isFileQuery() );
}
bool Nepomuk::Query::Query::isFileQuery() const
{
return d->m_isFileQuery;
}
Nepomuk::Query::FileQuery Nepomuk::Query::Query::toFileQuery() const
{
return FileQuery( *this );
}
Nepomuk::Query::Term Nepomuk::Query::Query::term() const
{
return d->m_term;
}
int Nepomuk::Query::Query::limit() const
{
return d->m_limit;
}
int Nepomuk::Query::Query::offset() const
{
return d->m_offset;
}
void Nepomuk::Query::Query::setTerm( const Term& term )
{
d->m_term = term;
}
void Nepomuk::Query::Query::setLimit( int limit )
{
d->m_limit = limit;
}
void Nepomuk::Query::Query::setOffset( int offset )
{
d->m_offset = offset;
}
void Nepomuk::Query::Query::setFullTextScoringEnabled( bool enabled )
{
d->m_fullTextScoringEnabled = enabled;
}
void Nepomuk::Query::Query::setFullTextScoringSortOrder( Qt::SortOrder order )
{
d->m_fullTextScoringSortOrder = order;
}
bool Nepomuk::Query::Query::fullTextScoringEnabled() const
{
return d->m_fullTextScoringEnabled;
}
Qt::SortOrder Nepomuk::Query::Query::fullTextScoringSortOrder() const
{
return d->m_fullTextScoringSortOrder;
}
void Nepomuk::Query::Query::setQueryFlags( QueryFlags flags )
{
d->m_flags = flags;
}
Nepomuk::Query::Query::QueryFlags Nepomuk::Query::Query::queryFlags() const
{
return d->m_flags;
}
void Nepomuk::Query::Query::addRequestProperty( const RequestProperty& property )
{
d->m_requestProperties.append( property );
}
void Nepomuk::Query::Query::setRequestProperties( const QList<RequestProperty>& properties )
{
d->m_requestProperties = properties;
}
QList<Nepomuk::Query::Query::RequestProperty> Nepomuk::Query::Query::requestProperties() const
{
return d->m_requestProperties;
}
bool Nepomuk::Query::Query::operator==( const Query& other ) const
{
return( d->m_limit == other.d->m_limit &&
d->m_offset == other.d->m_offset &&
d->m_term == other.d->m_term &&
compareQList( d->m_requestProperties, other.d->m_requestProperties ) &&
compareHash( d->m_includeFolders, other.d->m_includeFolders ) &&
compareQList( d->m_excludeFolders, other.d->m_excludeFolders ) &&
d->m_isFileQuery == other.d->m_isFileQuery &&
d->m_fileMode == other.d->m_fileMode );
}
bool Nepomuk::Query::Query::operator!=( const Query& other ) const
{
return( d->m_limit != other.d->m_limit ||
d->m_offset != other.d->m_offset ||
d->m_term != other.d->m_term ||
!compareQList( d->m_requestProperties, other.d->m_requestProperties ) ||
!compareHash( d->m_includeFolders, other.d->m_includeFolders ) ||
!compareQList( d->m_excludeFolders, other.d->m_excludeFolders ) ||
d->m_isFileQuery != other.d->m_isFileQuery ||
d->m_fileMode != other.d->m_fileMode );
}
QString Nepomuk::Query::Query::toSparqlQuery( SparqlFlags sparqlFlags ) const
{
Term term = d->m_term;
// restrict to files if we are a file query
if( d->m_isFileQuery ) {
Term fileModeTerm;
ResourceTypeTerm fileTerm( Vocabulary::NFO::FileDataObject() );
ResourceTypeTerm folderTerm( Vocabulary::NFO::Folder() );
if( d->m_fileMode == FileQuery::QueryFiles )
fileModeTerm = AndTerm( fileTerm, NegationTerm::negateTerm( folderTerm ) );
else if( d->m_fileMode == FileQuery::QueryFolders )
fileModeTerm = AndTerm( folderTerm, NegationTerm::negateTerm( fileTerm ) );
else
fileModeTerm = OrTerm( fileTerm, folderTerm );
term = AndTerm( term, fileModeTerm, d->createFolderFilter() );
}
// convert request properties into ComparisonTerms
// in ask and count query mode we can omit the optional req props
for ( int i = 0; i < d->m_requestProperties.count(); ++i ) {
const RequestProperty& rp = d->m_requestProperties[i];
ComparisonTerm rpt( rp.property(), Term() );
rpt.setVariableName( QString::fromLatin1("reqProp%1").arg(i+1) );
if( rp.optional() && !( sparqlFlags&(CreateAskQuery|CreateCountQuery) ) ) {
term = term && OptionalTerm::optionalizeTerm( rpt );
}
else if( !rp.optional() ) {
term = term && rpt;
}
}
// optimize whatever we can
term = term.optimized();
// perform internal optimizations
term = d->optimizeEvenMore(term);
// actually build the SPARQL query patterns
QueryBuilderData qbd( d.constData(), sparqlFlags );
- // We restrict results to user visible types only.
+ // We restrict results to user visible types only. There is no need for this with file queries as normally all files are visible.
//
// Here we use an optimizations:
// The storage service creates "nao:userVisible 1" entries for all visible resources. This contains two optimizations:
// - We use an integer instead of a boolean because Virtuoso does not support booleans and, thus, Soprano converts
// booleans into a fake type which is stored as a string. This makes comparision much slower.
// - Instead of using crappy inference via "?r a ?t . ?t nao:userVisible true" we can directly check the resources.
// - Instead of restricting the visibility to 1 we trick the Virtuoso query optimizer so it won't try to use the visibility
// as priority. We do this with a filter that does not test for equality. Using "?r nao:userVisible 1" has a drastic
// performance impact which the filter has not.
//
QString userVisibilityRestriction;
- if( !(queryFlags()&NoResultRestrictions) ) {
+ if( !(queryFlags()&NoResultRestrictions) && !d->m_isFileQuery ) {
userVisibilityRestriction = QString::fromLatin1("?r %1 %2 . FILTER(%2>0) . ")
.arg(Soprano::Node::resourceToN3(Soprano::Vocabulary::NAO::userVisible()),
qbd.uniqueVarName());
}
QString termGraphPattern;
if( term.isValid() ) {
termGraphPattern = term.d_ptr->toSparqlGraphPattern( QLatin1String( "?r" ), 0, &qbd );
if( termGraphPattern.isEmpty() ) {
kDebug() << "Got no valid SPARQL pattern from" << term;
return QString();
}
}
// build the list of variables to select (in addition to the main result variable ?r)
QStringList selectVariables = qbd.customVariables();
// add additional scoring variable if requested
if( d->m_fullTextScoringEnabled ) {
const QString scoringExpression = qbd.buildScoringExpression();
if( !scoringExpression.isEmpty() )
selectVariables << scoringExpression;
}
// build the core of the query - the part that never changes
QString queryBase = QString::fromLatin1( "where { %1 %2 }" )
.arg( termGraphPattern,
userVisibilityRestriction );
// build the final query
QString query;
if( sparqlFlags & CreateCountQuery ) {
if( selectVariables.isEmpty() ) {
// when there are no additional variables we can perfectly use count(distinct)
query = QString::fromLatin1("select count(distinct ?r) as ?cnt %1 %2")
.arg( selectVariables.join( QLatin1String(" " ) ),
queryBase );
}
else {
// when there are additional variables we need to do some magic to count the
// number of rows instead of a list of counts
// we cannot simply leave out the additional variables since that would change
// the number of results.
query = QString::fromLatin1("select count(%1) as ?cnt %2 where { { select count(*) as %1 ?r %3 } }")
.arg(qbd.uniqueVarName(),
selectVariables.join( QLatin1String(" " ) ),
queryBase );
}
}
else if( sparqlFlags & CreateAskQuery ) {
query = QLatin1String( "ask ") + queryBase;
}
else {
QString fullTextExcerptExpression;
if( !(queryFlags()&WithoutFullTextExcerpt) ) {
fullTextExcerptExpression = qbd.buildSearchExcerptExpression();
}
query = QString::fromLatin1( "select distinct ?r %1 %2 %3" )
.arg( selectVariables.join( QLatin1String(" " ) ),
fullTextExcerptExpression,
queryBase );
query += qbd.buildOrderString();
}
// offset and limit
if ( d->m_offset > 0 )
query += QString::fromLatin1( " OFFSET %1" ).arg( d->m_offset );
if ( d->m_limit > 0 )
query += QString::fromLatin1( " LIMIT %1" ).arg( d->m_limit );
return query.simplified();
}
KUrl Nepomuk::Query::Query::toSearchUrl( SparqlFlags flags ) const
{
return toSearchUrl( QString(), flags );
}
// This is a bit dodgy: if there are sparql flags we encode the SPARQL query into the url
// otherwise the serialized query (which allows for more power in the kio slave). It would
// probably be nicer to somehow put the flags in the URL. But new query items in the URL
// would make the URL handling in the kio slave more complicated.... oh, well.
KUrl Nepomuk::Query::Query::toSearchUrl( const QString& customTitle, SparqlFlags flags ) const
{
// the nepomuksearch:/ KIO slave does not handle count or ask queries
flags &= ~CreateCountQuery;
flags &= ~CreateAskQuery;
Query q( *this );
// the nepomuksearch:/ KIO slave does not make use of full text scores. Thus, we avoid the
// overhead by disabling them
q.setFullTextScoringEnabled( false );
KUrl url( QLatin1String("nepomuksearch:/") );
if( flags == NoFlags )
url.addQueryItem( QLatin1String("encodedquery"), q.toString() );
else
url.addQueryItem( QLatin1String("sparql"), q.toSparqlQuery( flags ) );
QString title(customTitle);
if( customTitle.isEmpty() ) {
title = titleFromQueryUrl( url );
}
// replace slashes with the "fraction slash" which is the same KIO::encodeFileName does.
// however, we do not want to link to KIO.
url.addPath( title.replace('/', QChar(0x2044)) );
return url;
}
Nepomuk::Query::RequestPropertyMap Nepomuk::Query::Query::requestPropertyMap() const
{
RequestPropertyMap rpm;
for ( int i = 0; i < d->m_requestProperties.count(); ++i ) {
rpm.insert( QString( "reqProp%1" ).arg( i+1 ), d->m_requestProperties[i].property() );
}
return rpm;
}
QString Nepomuk::Query::Query::toString() const
{
return Nepomuk::Query::serializeQuery( *this );
}
Nepomuk::Query::Query Nepomuk::Query::Query::optimized() const
{
Query newQuery( *this );
newQuery.setTerm( term().optimized() );
return newQuery;
}
// static
Nepomuk::Query::Query Nepomuk::Query::Query::fromString( const QString& queryString )
{
return Nepomuk::Query::parseQuery( queryString );
}
namespace {
/**
* Returns an empty string for sparql query URLs.
*/
inline QString extractPlainQuery( const KUrl& url ) {
if( url.queryItems().contains( "query" ) ) {
return url.queryItem( "query" );
}
else if ( !url.hasQuery() ) {
return url.path().section( '/', 0, 0, QString::SectionSkipEmpty );
}
else {
return QString();
}
}
}
// static
Nepomuk::Query::Query Nepomuk::Query::Query::fromQueryUrl( const KUrl& url )
{
if( url.protocol() != QLatin1String("nepomuksearch") ) {
kDebug() << "No nepomuksearch:/ URL:" << url;
return Query();
}
if ( url.queryItems().contains( "sparql" ) ) {
kDebug() << "Cannot parse SPARQL query from:" << url;
return Query();
}
else if( url.queryItems().contains( "encodedquery" ) ) {
return fromString( url.queryItem( "encodedquery") );
}
else {
Query query = QueryParser::parseQuery( extractPlainQuery(url) );
query.setRequestProperties( QList<RequestProperty>() << Nepomuk::Query::Query::RequestProperty( Nepomuk::Vocabulary::NIE::url(), true ) );
return query;
}
}
// static
QString Nepomuk::Query::Query::sparqlFromQueryUrl( const KUrl& url )
{
if( url.protocol() != QLatin1String("nepomuksearch") ) {
kDebug() << "No nepomuksearch:/ URL:" << url;
return QString();
}
if( url.queryItems().contains( "sparql" ) ) {
return url.queryItem( "sparql" );
}
else {
Query query = fromQueryUrl( url );
if( query.isValid() ) {
query.setRequestProperties( QList<RequestProperty>() << Nepomuk::Query::Query::RequestProperty( Nepomuk::Vocabulary::NIE::url(), true ) );
return query.toSparqlQuery();
}
else {
return QString();
}
}
}
// static
QString Nepomuk::Query::Query::titleFromQueryUrl( const KUrl& url )
{
if( url.protocol() != QLatin1String("nepomuksearch") ) {
kDebug() << "No nepomuksearch:/ URL:" << url;
return QString();
}
// the title is the first section of the path, but only if we have a query
if( url.hasQuery() ) {
QString title = url.path().section( '/', 0, 0, QString::SectionSkipEmpty );
if(!title.isEmpty())
return title;
}
// no title in the path, try to get the user query, i.e. a non-encoded and non-sparql query
QString userQuery = extractPlainQuery( url );
if ( !userQuery.isEmpty() ) {
return i18nc( "@title UDS_DISPLAY_NAME for a KIO directory listing. %1 is the query the user entered.",
"Query Results from '%1'",
userQuery );
}
// fallback: generic query title
return i18nc( "@title UDS_DISPLAY_NAME for a KIO directory listing.",
"Query Results");
}
Nepomuk::Query::Query Nepomuk::Query::operator&&( const Query& query, const Term& term )
{
Query newQuery( query );
newQuery.setTerm( query.term() && term );
return newQuery;
}
Nepomuk::Query::Query Nepomuk::Query::operator||( const Query& query, const Term& term )
{
Query newQuery( query );
newQuery.setTerm( query.term() || term );
return newQuery;
}
Nepomuk::Query::Query Nepomuk::Query::operator!( const Query& query )
{
Query newQuery( query );
newQuery.setTerm( !query.term() );
return newQuery;
}
QDebug operator<<( QDebug dbg, const Nepomuk::Query::Query& query )
{
return dbg << query.toString();
}
uint Nepomuk::Query::qHash( const Nepomuk::Query::Query& query )
{
return qHash( query.term() );
}
diff --git a/nepomuk/query/standardqueries.cpp b/nepomuk/query/standardqueries.cpp
index 87bf9bf7d6..0afb738341 100644
--- a/nepomuk/query/standardqueries.cpp
+++ b/nepomuk/query/standardqueries.cpp
@@ -1,146 +1,150 @@
/*
This file is part of the Nepomuk KDE project.
Copyright (C) 2010 Sebastian Trueg <trueg@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) version 3, or any
later version accepted by the membership of KDE e.V. (or its
successor approved by the membership of KDE e.V.), which shall
act as a proxy defined in Section 6 of version 3 of the license.
This library 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
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library. If not, see <http://www.gnu.org/licenses/>.
*/
#include "standardqueries.h"
#include "filequery.h"
#include "comparisonterm.h"
#include "literalterm.h"
#include "andterm.h"
#include "orterm.h"
#include "negationterm.h"
#include "nie.h"
#include "nfo.h"
#include "nie.h"
#include "nuao.h"
#include <Soprano/Vocabulary/NAO>
#include <QtCore/QDate>
Nepomuk::Query::Query Nepomuk::Query::standardQuery( StandardQuery query, const Term& /*subterm*/ )
{
switch( query ) {
case LastModifiedFilesQuery: {
ComparisonTerm lastModifiedTerm( Nepomuk::Vocabulary::NIE::lastModified(), Term() );
lastModifiedTerm.setSortWeight( 1, Qt::DescendingOrder );
FileQuery lastModifiedQuery( lastModifiedTerm );
return lastModifiedQuery;
}
case MostImportantResourcesQuery: {
ComparisonTerm fancyTerm( Soprano::Vocabulary::NAO::score(), Term() );
fancyTerm.setSortWeight( 1, Qt::DescendingOrder );
Query fancyQuery( fancyTerm );
return fancyQuery;
}
case NeverOpenedFilesQuery: {
// there are two ways a usage count of 0 can be expressed:
// 1. property with value 0
// 2. no property at all
OrTerm usageCntTerm(
ComparisonTerm(
Nepomuk::Vocabulary::NUAO::usageCount(),
LiteralTerm( 0 ),
ComparisonTerm::Equal ),
NegationTerm::negateTerm(
ComparisonTerm(
Nepomuk::Vocabulary::NUAO::usageCount(),
Term() ) ) );
// Before we had the data management service there was no usage count
// tracking. Thus, in order not to return all files we should filter
// out all files that were created before we started tracking usage.
// However, by default we only show the top 10 results. Thus, in the
// worst case this query will return the same as lastModifiedFilesQuery().
ComparisonTerm modDateTerm(
Nepomuk::Vocabulary::NIE::lastModified(),
Term() );
modDateTerm.setSortWeight( 1, Qt::DescendingOrder );
FileQuery query( usageCntTerm && modDateTerm );
return query;
}
case ResourcesForActivityQuery: {
// FIXME
// get all resources that have some prop defined in a graph which was created in the requested activity?
// select distinct ?r where { graph ?g { ?r ?p ?o . } . ?g <activity> <A> . }
// it would be something like: MetaDataTerm( <activity>, <A> )
}
}
return Query();
}
Nepomuk::Query::Query Nepomuk::Query::dateRangeQuery( const QDate& start, const QDate& end, DateRangeFlags dateFlags )
{
// create our range
const LiteralTerm dateFrom( QDateTime( start, QTime( 0,0,0 ) ) );
const LiteralTerm dateTo( QDateTime( end, QTime( 23, 59, 59, 999 ) ) );
+ // slight optimization: no need for an end filter if the end is in the future
+ const bool needStartFilter = start.isValid();
+ const bool needEndFilter = end.isValid() && end < QDate::currentDate();
+
Query query;
if( dateFlags & ModificationDate ) {
// include files modified in our date range
ComparisonTerm lastModifiedStart = Nepomuk::Vocabulary::NIE::lastModified() > dateFrom;
ComparisonTerm lastModifiedEnd = Nepomuk::Vocabulary::NIE::lastModified() < dateTo;
- if( start.isValid() && end.isValid() )
+ if( needStartFilter && needEndFilter )
query = query || ( lastModifiedStart && lastModifiedEnd );
- else if( start.isValid() )
+ else if( needStartFilter )
query = query || lastModifiedStart;
- else if( end.isValid() )
+ else if( needEndFilter )
query = query || lastModifiedEnd;
}
if( dateFlags & ContentDate ) {
// include files created (as in photos taken) in our data range
ComparisonTerm contentCreatedStart = Nepomuk::Vocabulary::NIE::contentCreated() > dateFrom;
ComparisonTerm contentCreatedEnd = Nepomuk::Vocabulary::NIE::contentCreated() < dateTo;
- if( start.isValid() && end.isValid() )
+ if( needStartFilter && needEndFilter )
query = query || ( contentCreatedStart && contentCreatedEnd );
- else if( start.isValid() )
+ else if( needStartFilter )
query = query || contentCreatedStart;
- else if( end.isValid() )
+ else if( needEndFilter )
query = query || contentCreatedEnd;
}
if( dateFlags & UsageDate ) {
// include files opened (and optionally modified) in our date range
// TODO: also take the end of the event into account
ComparisonTerm accessEventStart = Nepomuk::Vocabulary::NUAO::start() > dateFrom;
ComparisonTerm accessEventEnd = Nepomuk::Vocabulary::NUAO::start() < dateTo;
ComparisonTerm accessEventCondition( Nepomuk::Vocabulary::NUAO::involves(), Term() );
- if( start.isValid() && end.isValid() )
+ if( needStartFilter && needEndFilter )
accessEventCondition.setSubTerm( accessEventStart && accessEventEnd );
- else if( start.isValid() )
+ else if( needStartFilter )
accessEventCondition.setSubTerm( accessEventStart );
- else if( end.isValid() )
+ else if( needEndFilter )
accessEventCondition.setSubTerm( accessEventEnd );
if( accessEventCondition.subTerm().isValid() )
query = query || accessEventCondition.inverted();
}
return query;
}
diff --git a/nepomuk/utils/facet.cpp b/nepomuk/utils/facet.cpp
index afce334085..258c583535 100644
--- a/nepomuk/utils/facet.cpp
+++ b/nepomuk/utils/facet.cpp
@@ -1,201 +1,199 @@
/*
This file is part of the Nepomuk KDE project.
Copyright (C) 2010 Sebastian Trueg <trueg@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) version 3, or any
later version accepted by the membership of KDE e.V. (or its
successor approved by the membership of KDE e.V.), which shall
act as a proxy defined in Section 6 of version 3 of the license.
This library 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
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library. If not, see <http://www.gnu.org/licenses/>.
*/
#include "facet.h"
#include "simplefacet.h"
#include "dynamicresourcefacet.h"
#include "datefacet.h"
#include "typefacet.h"
#include <Soprano/Vocabulary/NAO>
#include "standardqueries.h"
#include "andterm.h"
#include "orterm.h"
#include "comparisonterm.h"
#include "literalterm.h"
#include "resourceterm.h"
#include "resourcetypeterm.h"
#include "query.h"
#include "tag.h"
#include "property.h"
#include "tmo.h"
#include "nmo.h"
#include "nco.h"
#include "nfo.h"
#include "nie.h"
#include "kguiitem.h"
#include "kdebug.h"
using namespace Nepomuk::Query;
class Nepomuk::Utils::Facet::FacetPrivate
{
public:
Query::Query m_clientQuery;
};
Nepomuk::Utils::Facet::Facet( QObject* parent )
: QObject( parent ),
d(new FacetPrivate())
{
}
Nepomuk::Utils::Facet::~Facet()
{
delete d;
}
QString Nepomuk::Utils::Facet::text( int index ) const
{
return guiItem( index ).text();
}
KGuiItem Nepomuk::Utils::Facet::guiItem( int index ) const
{
Q_UNUSED(index);
return KGuiItem();
}
void Nepomuk::Utils::Facet::setQueryTermChanged()
{
emit queryTermChanged( this, queryTerm() );
}
void Nepomuk::Utils::Facet::setLayoutChanged()
{
emit layoutChanged( this );
}
void Nepomuk::Utils::Facet::setSelectionChanged()
{
emit selectionChanged( this );
}
void Nepomuk::Utils::Facet::setClientQuery( const Nepomuk::Query::Query& query )
{
kDebug() << query;
if( query != d->m_clientQuery ) {
d->m_clientQuery = query;
handleClientQueryChange();
}
}
Nepomuk::Query::Query Nepomuk::Utils::Facet::clientQuery() const
{
return d->m_clientQuery;
}
void Nepomuk::Utils::Facet::handleClientQueryChange()
{
// do nothing
}
// static
Nepomuk::Utils::Facet* Nepomuk::Utils::Facet::createFileTypeFacet( QObject* parent )
{
SimpleFacet* facetTypes = new SimpleFacet( parent );
facetTypes->setSelectionMode( Facet::MatchAny );
facetTypes->addTerm( i18nc("@option:check A filter on file type", "Documents"),
ResourceTypeTerm(Nepomuk::Vocabulary::NFO::Document()) );
// need to check the mimetype as well since strigi is still not perfect
facetTypes->addTerm( i18nc("@option:check A filter on file type - audio files", "Audio"),
- ResourceTypeTerm(Nepomuk::Vocabulary::NFO::Audio()) ||
ComparisonTerm(Nepomuk::Vocabulary::NIE::mimeType(), LiteralTerm(QLatin1String("audio"))) );
facetTypes->addTerm( i18nc("@option:check A filter on file type - media video", "Video"),
- ResourceTypeTerm(Nepomuk::Vocabulary::NFO::Video()) ||
ComparisonTerm(Nepomuk::Vocabulary::NIE::mimeType(), LiteralTerm(QLatin1String("video"))) );
facetTypes->addTerm( i18nc("@option:check A filter on file type", "Images"),
ResourceTypeTerm(Nepomuk::Vocabulary::NFO::Image()) );
return facetTypes;
}
// static
Nepomuk::Utils::Facet* Nepomuk::Utils::Facet::createTypeFacet( QObject* parent )
{
return new TypeFacet( parent );
}
// static
Nepomuk::Utils::Facet* Nepomuk::Utils::Facet::createDateFacet( QObject* parent )
{
return new DateFacet( parent );
}
// static
Nepomuk::Utils::Facet* Nepomuk::Utils::Facet::createTagFacet( QObject* parent )
{
DynamicResourceFacet* facetTags = new DynamicResourceFacet( parent );
facetTags->setSelectionMode( Facet::MatchAll );
facetTags->setRelation( Soprano::Vocabulary::NAO::hasTag() );
facetTags->setResourceType( Soprano::Vocabulary::NAO::Tag() );
return facetTags;
}
// static
Nepomuk::Utils::Facet* Nepomuk::Utils::Facet::createPriorityFacet( QObject* parent )
{
SimpleFacet* priorityFacet = new SimpleFacet( parent );
priorityFacet->setSelectionMode(Facet::MatchOne);
priorityFacet->addTerm( i18nc("@option:radio A filter on prioritizing/sorting a selection of resources", "No priority"), Term() );
priorityFacet->addTerm( i18nc("@option:radio A filter on prioritizing/sorting a selection of resources", "Last modified"), standardQuery( LastModifiedFilesQuery ).term() );
priorityFacet->addTerm( i18nc("@option:radio A filter on prioritizing/sorting a selection of resources", "Most important"), standardQuery( MostImportantResourcesQuery ).term() );
priorityFacet->addTerm( i18nc("@option:radio A filter on prioritizing/sorting a selection of resources", "Never opened"), standardQuery( NeverOpenedFilesQuery ).term() );
return priorityFacet;
}
// static
Nepomuk::Utils::Facet* Nepomuk::Utils::Facet::createRatingFacet( QObject* parent )
{
SimpleFacet* facet = new SimpleFacet(parent);
facet->setSelectionMode(Facet::MatchOne);
facet->addTerm( i18nc("@option:radio A filter on the rating of a resource", "Any Rating"), Term() );
facet->addTerm( i18nc("@option:radio A filter on the rating of a resource", "1 or more"), Soprano::Vocabulary::NAO::numericRating() >= LiteralTerm( 1.5 ) );
facet->addTerm( i18nc("@option:radio A filter on the rating of a resource", "2 or more"), Soprano::Vocabulary::NAO::numericRating() >= LiteralTerm( 3.5 ) );
facet->addTerm( i18nc("@option:radio A filter on the rating of a resource", "3 or more"), Soprano::Vocabulary::NAO::numericRating() >= LiteralTerm( 5.5 ) );
facet->addTerm( i18nc("@option:radio A filter on the rating of a resource", "4 or more"), Soprano::Vocabulary::NAO::numericRating() >= LiteralTerm( 7.5 ) );
facet->addTerm( i18nc("@option:radio A filter on the rating of a resource", "Max Rating"), Soprano::Vocabulary::NAO::numericRating() >= LiteralTerm( 9.5 ) );
return facet;
}
#include "facet.moc"
diff --git a/nepomuk/utils/typefacet.cpp b/nepomuk/utils/typefacet.cpp
index 5a733ea55e..fb11dc33af 100644
--- a/nepomuk/utils/typefacet.cpp
+++ b/nepomuk/utils/typefacet.cpp
@@ -1,418 +1,417 @@
/*
This file is part of the Nepomuk KDE project.
Copyright (C) 2010 Sebastian Trueg <trueg@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) version 3, or any
later version accepted by the membership of KDE e.V. (or its
successor approved by the membership of KDE e.V.), which shall
act as a proxy defined in Section 6 of version 3 of the license.
This library 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
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library. If not, see <http://www.gnu.org/licenses/>.
*/
#include "typefacet.h"
#include "filequery.h"
#include "term.h"
#include "class.h"
#include "andterm.h"
#include "orterm.h"
#include "resourcetypeterm.h"
#include "negationterm.h"
#include "literalterm.h"
#include "comparisonterm.h"
#include "nfo.h"
#include "nie.h"
#include "tmo.h"
#include "nco.h"
#include "nmo.h"
#include "kguiitem.h"
#include "kdebug.h"
#include <QtCore/QMap>
#include <QtCore/QSet>
#include <Soprano/Vocabulary/NAO>
namespace {
enum RootSelection {
None,
File,
Other
};
}
class Nepomuk::Utils::TypeFacet::Private
{
public:
Private()
: m_rootSelection(None),
m_usedTypes(0) {
//
// Default file types
//
m_fileTypes.append( qMakePair<QString, Query::Term>(i18nc("@option:check A filter on file type", "Documents"),
Query::ResourceTypeTerm(Nepomuk::Vocabulary::NFO::Document())) );
// need to check the mimetype as well since strigi is still not perfect
m_fileTypes.append( qMakePair<QString, Query::Term>(i18nc("@option:check A filter on file type - audio files", "Audio"),
Query::ComparisonTerm(Nepomuk::Vocabulary::NIE::mimeType(), Query::LiteralTerm(QLatin1String("audio")))) );
m_fileTypes.append( qMakePair<QString, Query::Term>(i18nc("@option:check A filter on file type - media video", "Video"),
- Query::ResourceTypeTerm(Nepomuk::Vocabulary::NFO::Video()) ||
Query::ComparisonTerm(Nepomuk::Vocabulary::NIE::mimeType(), Query::LiteralTerm(QLatin1String("video")))) );
m_fileTypes.append( qMakePair<QString, Query::Term>(i18nc("@option:check A filter on file type", "Images"),
Query::ResourceTypeTerm(Nepomuk::Vocabulary::NFO::Image())) );
//
// Default other types
//
m_otherTypes.append(qMakePair<QString, Query::Term>(i18nc("@option:check A filter on resource type", "Contacts"),
Query::ResourceTypeTerm(Nepomuk::Vocabulary::NCO::Contact())));
m_otherTypes.append(qMakePair<QString, Query::Term>(i18nc("@option:check A filter on resource type", "Emails"),
Query::ResourceTypeTerm(Nepomuk::Vocabulary::NMO::Email())));
m_otherTypes.append(qMakePair<QString, Query::Term>(i18nc("@option:check A filter on resource type", "Tasks"),
Query::ResourceTypeTerm(Nepomuk::Vocabulary::TMO::Task())));
m_otherTypes.append(qMakePair<QString, Query::Term>(i18nc("@option:check A filter on resource type", "Tags"),
Query::ResourceTypeTerm(Soprano::Vocabulary::NAO::Tag())));
}
bool findTerm( const Query::Term& term, int* index, RootSelection* rootSelection ) const;
void setRootSelection( RootSelection selection );
RootSelection m_rootSelection;
QList<QPair<QString, Query::Term> > m_fileTypes;
QList<QPair<QString, Query::Term> > m_otherTypes;
/// points to m_fileTypes or m_otherTypes based on m_rootSelection
QList<QPair<QString, Query::Term> >* m_usedTypes;
/// a list of custom types which is filled by selectFromTerm()
QList<Types::Class> m_customTypes;
/// indexes into m_fileTypes or m_otherTypes depending on the value of m_rootSelection
/// only used to avoid code duplication
QSet<int> m_selectedTypes;
/// indexes into m_customTypes
QSet<int> m_selectedCustomTypes;
};
bool Nepomuk::Utils::TypeFacet::Private::findTerm( const Query::Term& term, int* index, RootSelection* rootSelection ) const
{
for( int i = 0; i < m_fileTypes.count(); ++i ) {
if( term == m_fileTypes[i].second ) {
*index = i;
*rootSelection = File;
return true;
}
}
for( int i = 0; i < m_otherTypes.count(); ++i ) {
if( term == m_otherTypes[i].second ) {
*index = i;
*rootSelection = Other;
return true;
}
}
return false;
}
void Nepomuk::Utils::TypeFacet::Private::setRootSelection( RootSelection selection )
{
m_rootSelection = selection;
if( m_rootSelection == File )
m_usedTypes = &m_fileTypes;
else if( m_rootSelection == Other )
m_usedTypes = &m_otherTypes;
else
m_usedTypes = 0;
}
Nepomuk::Utils::TypeFacet::TypeFacet(QObject *parent)
: Nepomuk::Utils::Facet(parent),
d(new Private())
{
}
Nepomuk::Utils::TypeFacet::~TypeFacet()
{
delete d;
}
Nepomuk::Utils::Facet::SelectionMode Nepomuk::Utils::TypeFacet::selectionMode() const
{
return MatchAny;
}
// while we do return file/other query terms even if there is no sub-selection we do not notify this change since
// to the user it should just be a preselection
Nepomuk::Query::Term Nepomuk::Utils::TypeFacet::queryTerm() const
{
switch(d->m_rootSelection) {
case None:
return Query::Term();
case File:
if( d->m_selectedTypes.isEmpty() && d->m_selectedCustomTypes.isEmpty() ) {
return Query::ResourceTypeTerm(Nepomuk::Vocabulary::NFO::FileDataObject());
}
else {
Query::OrTerm term;
Q_FOREACH( int i, d->m_selectedTypes ) {
term.addSubTerm( d->m_fileTypes[i].second );
}
Q_FOREACH( int i, d->m_selectedCustomTypes ) {
term.addSubTerm( Query::ResourceTypeTerm( d->m_customTypes[i] ) );
}
return term.optimized();
}
case Other:
if( d->m_selectedTypes.isEmpty() && d->m_selectedCustomTypes.isEmpty() ) {
return Query::NegationTerm::negateTerm(Query::ResourceTypeTerm(Nepomuk::Vocabulary::NFO::FileDataObject()));
}
else {
Query::OrTerm term;
Q_FOREACH( int i, d->m_selectedTypes ) {
term.addSubTerm( d->m_otherTypes[i].second );
}
Q_FOREACH( int i, d->m_selectedCustomTypes ) {
term.addSubTerm( Query::ResourceTypeTerm( d->m_customTypes[i] ) );
}
return term.optimized();
}
}
// make gcc shut up
return Query::Term();
}
int Nepomuk::Utils::TypeFacet::count() const
{
if( d->m_rootSelection == None ) {
// File and Other
return 2;
}
else {
// File/Other selection + fixed types + custom types
return 1 + d->m_usedTypes->count() + d->m_customTypes.count();
}
}
KGuiItem Nepomuk::Utils::TypeFacet::guiItem(int index) const
{
if( d->m_rootSelection == None ) {
switch( index ) {
case 0:
return KGuiItem(i18nc("@option:check Do filter on type - show only files", "Files"));
case 1:
return KGuiItem(i18nc("@option:check Do filter on type - show everything but files", "Other"));
break;
}
}
else {
if( index == 0 ) {
if( d->m_rootSelection == File )
return KGuiItem(i18nc("@option:check Do filter on type - show only files", "Files"));
else
return KGuiItem(i18nc("@option:check Do filter on type - show everything but files", "Other"));
}
else {
--index;
}
if( index < d->m_usedTypes->count() ) {
return KGuiItem(d->m_usedTypes->at(index).first);
}
else if( index - d->m_usedTypes->count() < d->m_customTypes.count() ) {
return KGuiItem(d->m_customTypes[index - d->m_usedTypes->count()].label());
}
}
return KGuiItem();
}
bool Nepomuk::Utils::TypeFacet::isSelected(int index) const
{
if( d->m_rootSelection == None ) {
return false;
}
else if( index == 0 ) {
return true;
}
else {
--index;
if( index < d->m_usedTypes->count() ) {
return d->m_selectedTypes.contains(index);
}
else {
index -= d->m_usedTypes->count();
return d->m_selectedCustomTypes.contains(index);
}
}
}
void Nepomuk::Utils::TypeFacet::clearSelection()
{
kDebug();
d->m_selectedTypes.clear();
d->m_selectedCustomTypes.clear();
d->m_customTypes.clear();
d->setRootSelection(None);
setLayoutChanged();
setSelectionChanged();
setQueryTermChanged();
}
void Nepomuk::Utils::TypeFacet::setSelected(int index, bool selected)
{
kDebug() << index << selected;
if( d->m_rootSelection == None ) {
if( selected ) {
if( index == 0 ) {
d->setRootSelection(File);
setLayoutChanged();
setSelectionChanged();
}
else if( index == 1 ) {
d->setRootSelection(Other);
setLayoutChanged();
setSelectionChanged();
}
}
}
else {
if( selected ) {
if( index > 0 ) {
--index;
if( index < d->m_usedTypes->count() ) {
kDebug() << "Checking fixed type" << index;
if( !d->m_selectedTypes.contains(index) ) {
d->m_selectedTypes.insert(index);
setSelectionChanged();
setQueryTermChanged();
}
}
else {
index -= d->m_usedTypes->count();
kDebug() << "Checking custom type" << index;
if( index < d->m_customTypes.count() ) {
if( !d->m_selectedCustomTypes.contains(index) ) {
d->m_selectedCustomTypes.insert(index);
setSelectionChanged();
setQueryTermChanged();
}
}
}
}
}
else {
if( index == 0 ) {
clearSelection();
}
else {
--index;
if( index < d->m_usedTypes->count() ) {
if( d->m_selectedTypes.contains(index) ) {
d->m_selectedTypes.remove(index);
setSelectionChanged();
setQueryTermChanged();
}
}
else {
index -= d->m_usedTypes->count();
if( index < d->m_customTypes.count() ) {
if( d->m_selectedCustomTypes.contains(index) ) {
d->m_selectedCustomTypes.remove(index);
setSelectionChanged();
setQueryTermChanged();
}
}
}
}
}
}
}
bool Nepomuk::Utils::TypeFacet::selectFromTerm(const Nepomuk::Query::Term &queryTerm)
{
// 1. compare to all the terms in d->m_fileTypes and d->m_otherTypes
// 2. check if it is a ResourceTypeTerm
// 3. check if it is a negation of the file term
// 4. check if it is an OrTerm and do the above with all terms in it
// 5. do not add nfo:FileDataObject as a custom type!
int index = -1;
RootSelection rootSel = None;
if( d->findTerm( queryTerm, &index, &rootSel ) ) {
if( d->m_rootSelection == None ||
d->m_rootSelection == rootSel ) {
d->m_selectedTypes.insert(index);
setSelectionChanged();
return true;
}
}
else if( queryTerm.isResourceTypeTerm() ) {
const Types::Class type = queryTerm.toResourceTypeTerm().type();
if( type == Nepomuk::Vocabulary::NFO::FileDataObject() ) {
if( d->m_rootSelection == None ) {
setSelected(0);
return true;
}
else {
return d->m_rootSelection == File;
}
}
else {
const RootSelection reqSel = type.isSubClassOf(Nepomuk::Vocabulary::NFO::FileDataObject()) ? File : Other;
if( d->m_rootSelection == None ) {
d->setRootSelection(reqSel);
d->m_customTypes.append(type);
d->m_selectedCustomTypes.insert(d->m_customTypes.count()-1);
setLayoutChanged();
setSelectionChanged();
setQueryTermChanged();
return true;
}
else if( d->m_rootSelection == reqSel ) {
if( !d->m_customTypes.contains(type) ) {
d->m_customTypes.append(type);
setLayoutChanged();
}
d->m_selectedCustomTypes.insert(d->m_customTypes.indexOf(type));
setSelectionChanged();
setQueryTermChanged();
return true;
}
}
}
else if( queryTerm.isNegationTerm() &&
queryTerm.toNegationTerm().subTerm().isResourceTypeTerm() &&
queryTerm.toNegationTerm().subTerm().toResourceTypeTerm().type() == Nepomuk::Vocabulary::NFO::FileDataObject() ) {
if( d->m_rootSelection == None ) {
setSelected(1);
return true;
}
else {
return d->m_rootSelection == Other;
}
}
// fallback
return false;
}
#include "typefacet.moc"
diff --git a/plasma/corona.h b/plasma/corona.h
index 3e7b0f3114..6152514b78 100644
--- a/plasma/corona.h
+++ b/plasma/corona.h
@@ -1,515 +1,515 @@
/*
* Copyright 2007 Aaron Seigo <aseigo@kde.org>
* Copyright 2007 Matt Broadstone <mbroadst@gmail.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Library General Public License as
* published by the Free Software Foundation; either version 2, or
* (at your option) 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 Library 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 PLASMA_CORONA_H
#define PLASMA_CORONA_H
#include <QtGui/QGraphicsScene>
#include <plasma/applet.h>
#include <plasma/containment.h>
#include <plasma/plasma.h>
#include <plasma/plasma_export.h>
class QGraphicsGridLayout;
class QAction;
class KAction;
namespace Plasma
{
class CoronaPrivate;
class ContainmentActionsPluginsConfig;
class AbstractDialogManager;
/**
* @class Corona plasma/corona.h <Plasma/Corona>
*
* @short A QGraphicsScene for Plasma::Applets
*/
class PLASMA_EXPORT Corona : public QGraphicsScene
{
Q_OBJECT
//typedef QHash<QString, QList<Plasma::Applet*> > layouts;
public:
explicit Corona(QObject * parent = 0);
~Corona();
/**
* Sets the mimetype of Drag/Drop items. Default is
* text/x-plasmoidservicename
*/
void setAppletMimeType(const QString &mimetype);
/**
* The current mime type of Drag/Drop items.
*/
QString appletMimeType();
/**
* @return the default containment plugin type
* @since 4.7
*/
QString defaultContainmentPlugin() const;
/**
* @return all containments on this Corona
*/
QList<Containment*> containments() const;
/**
* Clear the Corona from all applets.
*/
void clearContainments();
/**
* Returns the config file used to store the configuration for this Corona
*/
KSharedConfig::Ptr config() const;
/**
* Adds a Containment to the Corona
*
* @param name the plugin name for the containment, as given by
* KPluginInfo::pluginName(). If an empty string is passed in, the default
* containment plugin will be used (usually DesktopContainment). If the
* string literal "null" is passed in, then no plugin will be loaded and
* a simple Containment object will be created instead.
* @param args argument list to pass to the containment
*
* @return a pointer to the containment on success, or 0 on failure. Failure can be
* caused by too restrictive of an Immutability type, as containments cannot be added
* when widgets are locked, or if the requested containment plugin can not be located
* or successfully loaded.
*/
Containment *addContainment(const QString &name, const QVariantList &args = QVariantList());
+ /**
+ * Loads a containment with delayed initialization, primarily useful
+ * for implementations of loadDefaultLayout. The caller is responsible
+ * for all initializating, saving and notification of a new containment.
+ *
+ * @param name the plugin name for the containment, as given by
+ * KPluginInfo::pluginName(). If an empty string is passed in, the defalt
+ * containment plugin will be used (usually DesktopContainment). If the
+ * string literal "null" is passed in, then no plugin will be loaded and
+ * a simple Containment object will be created instead.
+ * @param args argument list to pass to the containment
+ *
+ * @return a pointer to the containment on success, or 0 on failure. Failure can
+ * be caused by the Immutability type being too restrictive, as containments can't be added
+ * when widgets are locked, or if the requested containment plugin can not be located
+ * or successfully loaded.
+ * @see addContainment
+ **/
+ Containment *addContainmentDelayed(const QString &name,
+ const QVariantList &args = QVariantList());
+
/**
* Returns the Containment, if any, for a given physical screen and desktop
*
* @param screen number of the physical screen to locate
* @param desktop the virtual desktop) to locate; if < 0 then it will
* simply return the first Containment associated with screen
*/
Containment *containmentForScreen(int screen, int desktop = -1) const;
/**
* Returns the Containment for a given physical screen and desktop, creating one
* if none exists
*
* @param screen number of the physical screen to locate
* @param desktop the virtual desktop) to locate; if < 0 then it will
* simply return the first Containment associated with screen
* @param defaultPluginIfNonExistent the plugin to load by default; "null" is an empty
* Containment and "default" creates the default plugin
* @param defaultArgs optional arguments to pass in when creating a Containment if needed
* @since 4.6
*/
Containment *containmentForScreen(int screen, int desktop,
const QString &defaultPluginIfNonExistent,
const QVariantList &defaultArgs = QVariantList());
/**
* Adds a widget in the topleft quadrant in the scene. Widgets in the topleft quadrant are
* normally never shown unless you specifically aim a view at it, which makes it ideal for
* toplevel views etc.
* @param widget the widget to add.
*/
void addOffscreenWidget(QGraphicsWidget *widget);
/**
* Removes a widget from the topleft quadrant in the scene.
* @param widget the widget to remove.
*/
void removeOffscreenWidget(QGraphicsWidget *widget);
/**
* @return the list of all offscreen widgets
* @since 4.3
*/
QList <QGraphicsWidget *> offscreenWidgets() const;
/**
* Returns the number of screens available to plasma.
* Subclasses should override this method as the default
* implementation returns a meaningless value.
*/
virtual int numScreens() const;
/**
* Returns the geometry of a given screen.
* Valid screen ids are 0 to numScreen()-1, or -1 for the full desktop geometry.
* Subclasses should override this method as the default
* implementation returns a meaningless value.
*/
virtual QRect screenGeometry(int id) const;
/**
* Returns the available region for a given screen.
* The available region excludes panels and similar windows.
* Valid screen ids are 0 to numScreens()-1.
* By default this method returns a rectangular region
* equal to screenGeometry(id); subclasses that need another
* behavior should override this method.
*/
virtual QRegion availableScreenRegion(int id) const;
/**
* Recommended position for a popup window like a menu or a tooltip
* given its size
* @param item the item that the popup should appear adjacent to (an applet, say)
* @param size size of the popup
* @returns reccomended position
*/
QPoint popupPosition(const QGraphicsItem *item, const QSize &size);
/**
* @since 4.4
* Recommended position for a popup window like a menu or a tooltip
* given its size
* @param item the item that the popup should appear adjacent to (an applet, say)
* @param size size of the popup
* @param alignment alignment of the popup, valid flags are Qt::AlignLeft, Qt::AlignRight and Qt::AlignCenter
* @returns reccomended position
*/
QPoint popupPosition(const QGraphicsItem *item, const QSize &size, Qt::AlignmentFlag alignment);
/**
* This method is useful in order to retrieve the list of available
* screen edges for panel type containments.
* @param screen the id of the screen to look for free edges.
* @returns a list of free edges not filled with panel type containments.
*/
QList<Plasma::Location> freeEdges(int screen) const;
/**
* Returns the QAction with the given name from our collection
*/
QAction *action(QString name) const;
/**
* Adds the action to our collection under the given name
*/
void addAction(QString name, QAction *action);
/**
* Returns all the actions in our collection
*/
QList<QAction*> actions() const;
/**
* convenience function - enables or disables an action by name
*
* @param name the name of the action in our collection
* @param enable true to enable, false to disable
*/
void enableAction(const QString &name, bool enable);
/**
* @since 4.3
* Updates keyboard shortcuts for all the corona's actions.
* If you've added actions to the corona you'll need to
* call this for them to be configurable.
*/
void updateShortcuts();
/**
* @since 4.3
* Adds a set of actions to the shortcut config dialog.
* don't use this on actions in the corona's own actioncollection,
* those are handled automatically. this is for stuff outside of that.
*/
void addShortcuts(KActionCollection *newShortcuts);
/**
* @since 4.3
* Creates an action in our collection under the given name
* @return the new action
* FIXME I'm wrapping so much of kactioncollection API now, maybe I should just expose the
* collection itself :P
*/
KAction* addAction(QString name);
/**
* @since 4.4
* Sets the default containmentactions plugins for the given containment type
*/
void setContainmentActionsDefaults(Containment::Type containmentType, const ContainmentActionsPluginsConfig &config);
/**
* @since 4.4
* Returns the default containmentactions plugins for the given containment type
*/
ContainmentActionsPluginsConfig containmentActionsDefaults(Containment::Type containmentType);
/**
* @param the AbstractDialogManager implementaion
*
* @since 4.5
*/
void setDialogManager(AbstractDialogManager *manager);
/**
* @return the AbstractDialogManager that will show dialogs used by applets, like configuration dialogs
*
* @since 4.5
*/
AbstractDialogManager *dialogManager();
/**
* Imports an applet layout from a config file. The results will be added to the
* current set of Containments.
* @deprecated Use the 4.6 version that takes a KConfigGroup
*
* @param config the name of the config file to load from,
* or the default config file if QString()
* @return the list of containments that were loaded
* @since 4.5
*/
#ifndef KDE_NO_DEPRECATED
KDE_DEPRECATED QList<Plasma::Containment *> importLayout(const KConfigBase &config);
#endif
/**
* Returns the name of the preferred plugin to be used as containment toolboxes.
* CustomContainments and CustomPanelContainments can still override it as their liking. It's also not guaranteed that the plugin will actually exist.
*
* @param type the containment type of which we want to know the associated toolbox plugin
* @since 4.6
*/
QString preferredToolBoxPlugin(const Containment::Type type) const;
/**
* Imports an applet layout from a config file. The results will be added to the
* current set of Containments.
*
* @param config the name of the config file to load from,
* or the default config file if QString()
* @return the list of containments that were loaded
* @since 4.6
*/
QList<Plasma::Containment *> importLayout(const KConfigGroup &config);
/**
* Exports a set of containments to a config file.
*
* @param config the config group to save to
* @param containments the list of containments to save
* @since 4.6
*/
void exportLayout(KConfigGroup &config, QList<Containment*> containments);
public Q_SLOTS:
/**
* Initializes the layout from a config file. This will first clear any existing
* Containments, load a layout from the requested configuration file, request the
* default layout if needed and update immutability.
*
* @param config the name of the config file to load from,
* or the default config file if QString()
*/
void initializeLayout(const QString &config = QString());
/**
* Load applet layout from a config file. The results will be added to the
* current set of Containments.
*
* @param config the name of the config file to load from,
* or the default config file if QString()
*/
void loadLayout(const QString &config = QString());
/**
* Save applets layout to file
* @param config the file to save to, or the default config file if QString()
*/
void saveLayout(const QString &config = QString()) const;
/**
* @return The type of immutability of this Corona
*/
ImmutabilityType immutability() const;
/**
* Sets the immutability type for this Corona (not immutable,
* user immutable or system immutable)
* @param immutable the new immutability type of this applet
*/
void setImmutability(const ImmutabilityType immutable);
/**
* Schedules a flush-to-disk synchronization of the configuration state
* at the next convenient moment.
*/
void requestConfigSync();
/**
* Schedules a time sensitive flush-to-disk synchronization of the
* configuration state. Since this method does not provide any sort of
* event compression, it should only be used when an *immediate* disk
* sync is *absolutely* required. Otherwise, use @see requestConfigSync()
* which does do event compression.
*/
void requireConfigSync();
/**
* @since 4.5
* Layout the containments on this corona. The default implementation
* organizes them in a grid-like view, but subclasses can reimplement
* this slot to provide their own layout.
*/
void layoutContainments();
Q_SIGNALS:
/**
* This signal indicates a new containment has been added to
* the Corona
*/
void containmentAdded(Plasma::Containment *containment);
/**
* This signal indicates that a containment has been newly
* associated (or dissociated) with a physical screen.
*
* @param wasScreen the screen it was associated with
* @param isScreen the screen it is now associated with
* @param containment the containment switching screens
*/
void screenOwnerChanged(int wasScreen, int isScreen, Plasma::Containment *containment);
/**
* This signal indicates that an application launch, window
* creation or window focus event was triggered. This is used, for instance,
* to ensure that the Dashboard view in Plasma hides when such an event is
* triggered by an item it is displaying.
*/
void releaseVisualFocus();
/**
* This signal indicates that the configuration file was flushed to disc.
*/
void configSynced();
/**
* This signal inicates that a change in available screen goemetry occurred.
*/
void availableScreenRegionChanged();
/**
* emitted when immutability changes.
* this is for use by things that don't get contraints events, like plasmaapp.
* it's NOT for containments or applets or any of the other stuff on the scene.
* if your code's not in shells/ it probably shouldn't be using it.
*/
void immutabilityChanged(Plasma::ImmutabilityType immutability);
/**
* @since 4.3
* emitted when the user changes keyboard shortcut settings
* connect to this if you've put some extra shortcuts in your app
* that are NOT in corona's actioncollection.
* if your code's not in shells/ it probably shouldn't be using this function.
* @see addShortcuts
*/
void shortcutsChanged();
protected:
/**
* Loads the default (system wide) layout for this user
**/
virtual void loadDefaultLayout();
- /**
- * Loads a containment with delayed initialization, primarily useful
- * for implementations of loadDefaultLayout. The caller is responsible
- * for all initializating, saving and notification of a new containment.
- *
- * @param name the plugin name for the containment, as given by
- * KPluginInfo::pluginName(). If an empty string is passed in, the defalt
- * containment plugin will be used (usually DesktopContainment). If the
- * string literal "null" is passed in, then no plugin will be loaded and
- * a simple Containment object will be created instead.
- * @param args argument list to pass to the containment
- *
- * @return a pointer to the containment on success, or 0 on failure. Failure can
- * be caused by the Immutability type being too restrictive, as containments can't be added
- * when widgets are locked, or if the requested containment plugin can not be located
- * or successfully loaded.
- * @see addContainment
- **/
- Containment *addContainmentDelayed(const QString &name,
- const QVariantList &args = QVariantList());
-
/**
* Maps a stock animation to one of the semantic animations. Used to control things such
* as what animation is used to make a Plasma::Appear appear in a containment.
* @param from the animation to map a new value to
* @param to the animation value to map to from
* @since 4.5
*/
void mapAnimation(Animator::Animation from, Animator::Animation to);
/**
* Maps a loadable animation to one of the semantic animations. Used to control things such
* as what animation is used to make a Plasma::Appear appear in a containment.
* @param from the animation to map a new value to
* @param to the animation value to map to from; this must map to a Javascript animation
* @since 4.5
*/
void mapAnimation(Animator::Animation from, const QString &to);
/**
* @return The preferred toolbox plugin name for a given containment type.
* @param type the containment type of which we want to know the preferred toolbox plugin.
* @param plugin the toolbox plugin name
* @since 4.6
*/
void setPreferredToolBoxPlugin(const Containment::Type type, const QString &plugin);
/**
* Sets the default containment plugin to try and load
* @since 4.7
*/
void setDefaultContainmentPlugin(const QString &name);
//Reimplemented from QGraphicsScene
void dragEnterEvent(QGraphicsSceneDragDropEvent *event);
void dragLeaveEvent(QGraphicsSceneDragDropEvent *event);
void dragMoveEvent(QGraphicsSceneDragDropEvent *event);
private:
CoronaPrivate *const d;
Q_PRIVATE_SLOT(d, void containmentDestroyed(QObject*))
Q_PRIVATE_SLOT(d, void offscreenWidgetDestroyed(QObject *))
Q_PRIVATE_SLOT(d, void syncConfig())
Q_PRIVATE_SLOT(d, void toggleImmutability())
Q_PRIVATE_SLOT(d, void showShortcutConfig())
friend class CoronaPrivate;
friend class View;
};
} // namespace Plasma
#endif
diff --git a/plasma/data/services/plasma-applet-extenderapplet.desktop b/plasma/data/services/plasma-applet-extenderapplet.desktop
index 80206dc1fa..7df6fa0711 100644
--- a/plasma/data/services/plasma-applet-extenderapplet.desktop
+++ b/plasma/data/services/plasma-applet-extenderapplet.desktop
@@ -1,81 +1,82 @@
[Desktop Entry]
Name=Collection
Name[ar]=المجموعة
Name[ast]=Coleición
Name[be@latin]=Zbor
Name[bg]=Колекция
Name[bn]=সংকলন
Name[bs]=Kolekcija
Name[ca]=Col·lecció
Name[ca@valencia]=Col·lecció
Name[cs]=Kolekce
Name[csb]=Kòlekcëjô
Name[da]=Samling
Name[de]=Sammlung
Name[el]=Συλλογή
Name[en_GB]=Collection
Name[eo]=Kolekto
Name[es]=Colección
Name[et]=Kollektsioon
Name[eu]=Bilduma
Name[fa]=مجموعه
Name[fi]=Kokoelma
Name[fr]=Collection
Name[fy]=Kolleksje
Name[ga]=Bailiúchán
Name[gl]=Colección
Name[gu]=ભંડોળ
Name[he]=אוסף
Name[hi]=शब्द पूर्णता
Name[hr]=Kolekcija
Name[hu]=Gyűjtemény
Name[ia]=Collection
Name[id]=Koleksi
Name[is]=Safn
Name[it]=Collezione
Name[ja]=コレクション
Name[kk]=Collection
Name[km]=សម្រាំង
Name[kn]=ಸಮೂಹ
Name[ko]=모음집
Name[ku]=Berhevok
Name[lt]=Rinkinys
Name[lv]=Kolekcija
Name[ml]=കൂട്ടം
Name[ms]=Koleksi
Name[nb]=Samling
Name[nds]=Sammeln
Name[nl]=Verzameling
Name[nn]=Samling
Name[pa]=ਭੰਡਾਰ
Name[pl]=Kolekcja
Name[pt]=Colecção
Name[pt_BR]=Coleção
Name[ro]=Colecție
Name[ru]=Коллекция
Name[se]=Čoahkádus
Name[si]=එකතුව
Name[sk]=Kolekcia
Name[sl]=Zbirka
Name[sq]=Koleksioni
Name[sr]=збирка
Name[sr@ijekavian]=збирка
Name[sr@ijekavianlatin]=zbirka
Name[sr@latin]=zbirka
Name[sv]=Samling
Name[ta]=சேகரங்கள்
Name[tg]=Коллексия
Name[th]=ชุดสะสม
Name[tr]=Koleksiyon
Name[ug]=توپلام
Name[uk]=Збірка
+Name[vi]=Bộ sưu tập
Name[wa]=Ramexhnêye
Name[x-test]=xxCollectionxx
Name[zh_CN]=收藏
Name[zh_TW]=收藏
Type=Service
Icon=utilities-desktop-extra
NoDisplay=true
X-KDE-ServiceTypes=Plasma/Applet
X-KDE-PluginInfo-Name=internal:extender
X-KDE-PluginInfo-EnabledByDefault=false
diff --git a/plasma/data/services/plasma.protocol b/plasma/data/services/plasma.protocol
index 1cb84bd842..f95baf84d5 100644
--- a/plasma/data/services/plasma.protocol
+++ b/plasma/data/services/plasma.protocol
@@ -1,58 +1,59 @@
[Protocol]
protocol=plasma
exec=plasma-remote-helper %u
input=none
output=none
Icon=plasma
Description=A protocol for Plasma services
Description[bg]=Протокол за услуги Plasma
Description[bs]=Protokol Plazma usluga
Description[ca]=Un protocol pels serveis del Plasma
Description[ca@valencia]=Un protocol pels serveis del Plasma
Description[cs]=Protokol pro služby Plasma
Description[da]=En protokol til Plasma-tjenester
Description[de]=Ein Protokoll für Plasma-Dienste
Description[el]=Ένα πρωτόκολλο υπηρεσιών Plasma
Description[es]=Un protocolo para los servicios de Plasma
Description[et]=Plasma teenuste protokoll
Description[eu]=Plasma zerbitzuentzako protokolo bat
Description[fi]=Plasma-palvelujen yhteyskäytäntö
Description[fr]=Un protocole pour les services Plasma
+Description[gl]=Un protocolo para servizos do Plasma
Description[hr]=Protokol za servise u Plasmi
Description[hu]=Protokoll a Plazma-szolgáltatáshoz
Description[ia]=un protocollo per servicios de Plasma
Description[is]=Samskiptamáti fyrir Plasma-þjónustur
Description[it]=Un protocollo per servizi plasma
Description[ja]=Plasma サービスのためのプロトコル
Description[kk]=Plasma қызметінің протоколы
Description[km]=ពិធីការ​សម្រាប់​សេវា​កម្ម​ប្លាស្មា
Description[ko]=Plasma 서비스 프로토콜
Description[lv]=Plasma servisu protokols
Description[nb]=En protokoll for plasma-tjenester
Description[nds]=En Protokoll för Plasma-Deensten
Description[nl]=Een protocol voor Plasma-services
Description[pa]=ਪਲਾਜ਼ਮਾ ਸਰਵਿਸ ਲਈ ਪਰੋਟੋਕਾਲ
Description[pl]=Protokół dla usług Plazmy
Description[pt]=Um protocolo para os serviços do Plasma
Description[pt_BR]=Protocolo para os serviços do Plasma
Description[ro]=Un protocol pentru servicii Plasma
Description[ru]=Протокол для служб Plasma
Description[se]=Protokolla Plasma-bálvalusaid várás
Description[sk]=Protokol pre Plasma služby
Description[sr]=Протокол за плазма сервисе
Description[sr@ijekavian]=Протокол за плазма сервисе
Description[sr@ijekavianlatin]=Protokol za plasma servise
Description[sr@latin]=Protokol za plasma servise
Description[sv]=Ett protokoll för Plasma-tjänster
-Description[th]=โพรโทคอลสำหรับใช้กับบริการของพลาสมา
Description[tr]=Plasma servisleri için bir protokol
Description[ug]=پلازما(Plasma) مۇلازىمىتىنىڭ كېلىشىمى
Description[uk]=Протокол для служб Плазми
+Description[vi]=Một giao thức cho các dịch vụ Plasma
Description[x-test]=xxA protocol for Plasma servicesxx
Description[zh_CN]=Plasma 服务协议
Description[zh_TW]=Plasma 服務協定
helper=true
Class=:internet
diff --git a/plasma/data/servicetypes/plasma-animator.desktop b/plasma/data/servicetypes/plasma-animator.desktop
index 44fe07ea3f..45b475c586 100644
--- a/plasma/data/servicetypes/plasma-animator.desktop
+++ b/plasma/data/servicetypes/plasma-animator.desktop
@@ -1,79 +1,80 @@
[Desktop Entry]
Type=ServiceType
X-KDE-ServiceType=Plasma/Animator
Comment=Plasma Animation Engine
Comment[ar]=محرك تحريك البلازما
Comment[as]=Plasma Animation Engine
Comment[ast]=Motor d'animación Plasma
Comment[be@latin]=Systema animacyi „Plasma”
Comment[bg]=Ядро за анимации на Plasma
Comment[bn]=প্লাসমা অ্যানিমেশন ইঞ্জিন
Comment[bn_IN]=Plasma অ্যানিমেশন ইঞ্জিন
Comment[bs]=Plazma motor animacija
Comment[ca]=Motor d'animació del Plasma
Comment[ca@valencia]=Motor d'animació del Plasma
Comment[cs]=Animační nástroj Plasma
Comment[da]=Plasma-animationsmotor
Comment[de]=Plasma-Animations-Treiber
Comment[el]=Μηχανή εφέ κίνησης του Plasma
Comment[en_GB]=Plasma Animation Engine
Comment[eo]=Viviga motoro de Plasma
Comment[es]=Motor de animación para Plasma
Comment[et]=Plasma animatsiooni mootor
Comment[eu]=Plasma animazio motorra
Comment[fi]=Plasma-animointimoottori
Comment[fr]=Moteur d'animation Plasma
Comment[fy]=Plasma animaasje motor
Comment[ga]=Inneall Beochana Plasma
Comment[gl]=Motor de animación de Plasma
Comment[gu]=પ્લાઝમા એનિમેશન એન્જિન
Comment[he]=מנוע אנימציה של Plasma
Comment[hne]=प्लाज्मा एनिमेशन इंजिन
Comment[hr]=Plasmin animatorski mehanizam
Comment[hsb]=Plasma-engine za animacije
Comment[hu]=Plasma animációkezelő
Comment[ia]=Motor de animation Plasma
Comment[id]=Mesin Animasi Plasma
Comment[is]=Plasma hreyfingastjóri
Comment[it]=Motore animazione Plasma
Comment[ja]=Plasma アニメーションエンジン
Comment[kk]=Plasma анимация тетігі
Comment[km]=ម៉ាស៊ីន​ចលនា​របស់ប្លាស្មា
Comment[kn]=ಪ್ಲಾಸ್ಮಾ ಸಜೀವನ (ಅನಿಮೇಷನ್) ಯಂತ್ರ
Comment[ko]=Plasma 애니메이션 엔진
Comment[ku]=Motora Zindîkirina Plasma
Comment[lt]=Plasma animacijos varikliukas
Comment[lv]=Plasma animācijas dzinējs
Comment[mai]=प्लाजमा भावचिन्ह इंजन
Comment[ml]=പ്ലാസ്മ അനിമേഷന്‍ എഞ്ചിന്‍
Comment[nb]=Plasma animasjonsmotor
Comment[nds]=Plasma-Animeerkarn
Comment[nl]=Plasma-animatie-engine
Comment[nn]=Plasma-animasjonsmotor
Comment[pa]=ਪਲਾਜ਼ਮਾ ਐਨੀਮੇਸ਼ਨ ਇੰਜਣ
Comment[pl]=Silnik animacji Plazmy
Comment[pt]=Motor de Animação do Plasma
Comment[pt_BR]=Mecanismo de animação do Plasma
Comment[ro]=Motor de animație Plasma
Comment[ru]=Движок анимации для Plasma
Comment[se]=Plasma-animerenmohtor
Comment[si]=Plasma සජිවීකරණ එන්ජිම
Comment[sk]=Animačný nástroj Plasma
Comment[sl]=Animacijski pogon za Plasmo
Comment[sr]=Плазма мотор анимација
Comment[sr@ijekavian]=Плазма мотор анимација
Comment[sr@ijekavianlatin]=Plasma motor animacija
Comment[sr@latin]=Plasma motor animacija
Comment[sv]=Animeringsgränssnitt i Plasma
Comment[ta]=பிளாஸ்மா அசைவூட்ட இயந்திரம்
Comment[tg]=Системаи аниматсионии Plasma
Comment[th]=กลไกแสดงความเคลื่อนไหวของพลาสมา
Comment[tr]=Plasma Canlandırma Motoru
Comment[ug]=Plasma جانلاندۇرۇم ماتورى
Comment[uk]=Рушій анімації Плазми
+Comment[vi]=Cơ chế hoạt ảnh Plasma
Comment[wa]=Moteur d' animåcion di Plasma
Comment[x-test]=xxPlasma Animation Enginexx
Comment[zh_CN]=Plasma 动画引擎
Comment[zh_TW]=Plasma 動畫引擎
diff --git a/plasma/data/servicetypes/plasma-applet.desktop b/plasma/data/servicetypes/plasma-applet.desktop
index ed73c409bf..d733d0fe01 100644
--- a/plasma/data/servicetypes/plasma-applet.desktop
+++ b/plasma/data/servicetypes/plasma-applet.desktop
@@ -1,92 +1,93 @@
[Desktop Entry]
Type=ServiceType
X-KDE-ServiceType=Plasma/Applet
Comment=Plasma applet
Comment[ar]=بريمجة بلازما
Comment[as]=Plasma এপ্লেট
Comment[ast]=Miniaplicación Plasma
Comment[be@latin]=Aplet „Plasma”
Comment[bg]=Аплет за Plasma
Comment[bn]=প্লাসমা অ্যাপলেট
Comment[bn_IN]=Plasma অ্যাপ্লেট
Comment[bs]=Plazma aplet
Comment[ca]=Miniaplicació del Plasma
Comment[ca@valencia]=Miniaplicació del Plasma
Comment[cs]=Plasma applet
Comment[da]=Plasma-applet
Comment[de]=Plasma-Miniprogramm
Comment[el]=Μικροεφαρμογή plasma
Comment[en_GB]=Plasma applet
Comment[eo]=Plasma apleto
Comment[es]=Miniaplicación para Plasma
Comment[et]=Plasma aplett
Comment[eu]=Plasma appleta
Comment[fi]=Plasma-sovelma
Comment[fr]=Applet Plasma
Comment[fy]=Plasma Applet
Comment[ga]=Feidhmchláirín Plasma
Comment[gl]=Applet de Plasma
Comment[gu]=પ્લાઝમા એપ્લેટ
Comment[he]=יישומון של Plasma
Comment[hi]=प्लासमा एप्पलेट
Comment[hne]=प्लाज्मा एपलेट
Comment[hr]=Plasma applet
Comment[hsb]=Plasma applet
Comment[hu]=Plasma-kisalkalmazás
Comment[ia]=Applet Plasma
Comment[id]=Applet Plasma
Comment[is]=Plasma smáforrit
Comment[it]=Applet Plasma
Comment[ja]=Plasma アプレット
Comment[kk]=Plasma апплеті
Comment[km]=អាប់ភ្លេត​ប្លាស្មា
Comment[kn]=ಪ್ಲಾಸ್ಮಾ ಅನ್ವಯಾಂಶ (ಆಪ್ಲೆಟ್)
Comment[ko]=Plasma 애플릿
Comment[ku]=Sepanoka Plasma
Comment[lt]=Plasma įskiepis
Comment[lv]=Plasma aplets
Comment[mai]=प्लाजमा एप्पलेट
Comment[ml]=പ്ലാസ്മ ലഘുപ്രയോഗം
Comment[nb]=Plasma miniprogram
Comment[nds]=Plasma-Lüttprogramm
Comment[nl]=Plasma-applet
Comment[nn]=Plasma-element
Comment[pa]=ਪਾਲਜ਼ਮਾ ਐਪਲਿਟ
Comment[pl]=Aplet Plazmy
Comment[pt]='Applet' do Plasma
Comment[pt_BR]=Miniaplicativo do Plasma
Comment[ro]=Miniaplicație Plasma
Comment[ru]=Виджет Plasma
Comment[se]=Plasma-prográmmaš
Comment[si]=Plasma යෙදුම්පත
Comment[sk]=Plasma aplet
Comment[sl]=Plasma programček
Comment[sr]=Плазма аплет
Comment[sr@ijekavian]=Плазма аплет
Comment[sr@ijekavianlatin]=Plasma aplet
Comment[sr@latin]=Plasma aplet
Comment[sv]=Plasma-miniprogram
Comment[ta]=பிளாஸ்மா ஆப்லெட்
Comment[tg]=Барномаи Plasma
Comment[th]=แอพเพล็ตของพลาสมา
Comment[tr]=Plasma programcığı
Comment[ug]=Plasma قوللانچاق
Comment[uk]=Аплет Плазми
+Comment[vi]=Tiểu dụng Plasma
Comment[wa]=Aplikete di Plasma
Comment[x-test]=xxPlasma appletxx
Comment[zh_CN]=Plasma 小程序
Comment[zh_TW]=Plasma 小程式
[PropertyDef::X-Plasma-API]
Type=QString
[PropertyDef::X-Plasma-DropMimeTypes]
Type=QStringList
[PropertyDef::X-Plasma-DropUrlPatterns]
Type=QStringList
[PropertyDef::X-Plasma-DefaultSize]
Type=QSize
diff --git a/plasma/data/servicetypes/plasma-dataengine.desktop b/plasma/data/servicetypes/plasma-dataengine.desktop
index ab82e66a3f..13e85544e5 100644
--- a/plasma/data/servicetypes/plasma-dataengine.desktop
+++ b/plasma/data/servicetypes/plasma-dataengine.desktop
@@ -1,80 +1,81 @@
[Desktop Entry]
Type=ServiceType
X-KDE-ServiceType=Plasma/DataEngine
Comment=Plasma Data Engine
Comment[ar]=محرك بيانات بلازما
Comment[as]=Plasma Data Engine
Comment[ast]=Motor de datos Plasma
Comment[be@latin]=Systema dostupu da źviestak „Plasma”
Comment[bg]=Ядро за данни на Plasma
Comment[bn]=প্লাসমা ডাটা ইঞ্জিন
Comment[bn_IN]=Plasma ডাটা ইঞ্জিন
Comment[bs]=Plazma datomotor
Comment[ca]=Motor de dades del Plasma
Comment[ca@valencia]=Motor de dades del Plasma
Comment[cs]=Datový nástroj plasma
Comment[da]=Plasma datamotor
Comment[de]=Plasma-Daten-Treiber
Comment[el]=Μηχανή δεδομένων Plasma
Comment[en_GB]=Plasma Data Engine
Comment[eo]=Plasma Datuma Motoro
Comment[es]=Motor de datos para Plasma
Comment[et]=Plasma andmemootor
Comment[eu]=Plasmaren datu motorra
Comment[fi]=Plasma-tietomoottori
Comment[fr]=Moteur de données Plasma
Comment[fy]=Plasma gegevensmotor
Comment[ga]=Inneall Sonraí Plasma
Comment[gl]=Motor de datos de plasma
Comment[gu]=પ્લાઝમા માહિતી એન્જિન
Comment[he]=מנוע מידע עבור Plasma
Comment[hne]=प्लाज्मा डाटा इंजिन
Comment[hr]=Plasmin podaktovni mehanizam
Comment[hsb]=Datowa engine za Plasma
Comment[hu]=Plasma adatkezelő
Comment[ia]=Motor de datos de Plasma
Comment[id]=Mesin Data Plasma
Comment[is]=Plasma gagnavél
Comment[it]=Motore dati Plasma
Comment[ja]=Plasma データエンジン
Comment[kk]=Plasma деректер тетігі
Comment[km]=ម៉ាស៊ីន​ទិន្នន័យ​ប្លាស្មា
Comment[kn]=ಪ್ಲಾಸ್ಮಾ ದತ್ತ ಯಂತ್ರ
Comment[ko]=Plasma 데이터 엔진
Comment[ku]=Motora Dane ya Plasma
Comment[lt]=Plasma duomenų varikliukas
Comment[lv]=Plasma datu dzinējs
Comment[mai]=प्लाजमा डेटा इंजन
Comment[ml]=പ്ലാസ്മ ഡാറ്റ എഞ്ചിന്‍
Comment[nb]=Plasma datamotor
Comment[nds]=Plasma-Datenkarn
Comment[nl]=Plasma-gegevensengine
Comment[nn]=Plasma-datamotor
Comment[pa]=ਪਲਾਜ਼ਮਾ ਡਾਟਾ ਇੰਜਣ
Comment[pl]=Silnik danych Plazmy
Comment[pt]=Motor de Dados do Plasma
Comment[pt_BR]=Mecanismo de dados do Plasma
Comment[ro]=Motor de date Plasma
Comment[ru]=Источник данных Plasma
Comment[se]=Plasma-dáhtamohtor
Comment[si]=Plasma දත්ත එංජිම
Comment[sk]=Dátový nástroj Plasma
Comment[sl]=Podatkovni pogon za Plasmo
Comment[sq]=Motor të Dhënash Plasma
Comment[sr]=Плазма датомотор
Comment[sr@ijekavian]=Плазма датомотор
Comment[sr@ijekavianlatin]=Plasma datomotor
Comment[sr@latin]=Plasma datomotor
Comment[sv]=Plasma datagränssnitt
Comment[ta]=பிளாஸ்மா தரவு இயந்திரம்
Comment[tg]=Системаи маълумотии Plasma
Comment[th]=กลไกข้อมูลของพลาสมา
Comment[tr]=Plasma Veri Motoru
-Comment[ug]=Plasma سانلىق-مەلۇمات ماتورى
+Comment[ug]=Plasma سانلىق مەلۇمات ماتورى
Comment[uk]=Рушій даних Плазми
+Comment[vi]=Cơ chế dữ liệu Plasma
Comment[wa]=Moteur di dnêyes di Plasma
Comment[x-test]=xxPlasma Data Enginexx
Comment[zh_CN]=Plasma 数据引擎
Comment[zh_TW]=Plasma 資料引擎
diff --git a/plasma/data/servicetypes/plasma-packagestructure.desktop b/plasma/data/servicetypes/plasma-packagestructure.desktop
index 6fc56ae091..be6d3dca9c 100644
--- a/plasma/data/servicetypes/plasma-packagestructure.desktop
+++ b/plasma/data/servicetypes/plasma-packagestructure.desktop
@@ -1,84 +1,85 @@
[Desktop Entry]
Type=ServiceType
X-KDE-ServiceType=Plasma/PackageStructure
Comment=Plasma package structure definition
Comment[ar]=تعريف بنية حزمة بلازما
Comment[as]=Plasma সৰঞ্জাম আকাৰৰ সংজ্ঞা
Comment[ast]=Definición d'estructura de paquete Plasma
Comment[be@latin]=Aznačeńnie struktury pakunka „Plasma”
Comment[bg]=Структурно определение на пакет на Plasma
Comment[bs]=Definicija strukture plazma paketa
Comment[ca]=Definició de l'estructura d'un paquet Plasma
Comment[ca@valencia]=Definició de l'estructura d'un paquet Plasma
Comment[cs]=Definice struktury Plasma balíčku
Comment[da]=Definition af pakkestruktur til Plasma
Comment[de]=Plasma-Paket-Struktur-Definition
Comment[el]=Ορισμός δομής πακέτου του Plasma
Comment[en_GB]=Plasma package structure definition
Comment[es]=Definición de estructura de paquete para Plasma
Comment[et]=Plasma paketi struktuuri definitsioon
Comment[eu]=Plasma paketearen egituraren definizioa
Comment[fi]=Plasma-pakettirakenteen määritelmä
Comment[fr]=Définition de la structure des paquetages Plasma
Comment[fy]=Plasma pakket sstruktuer defenysje
Comment[ga]=Sainmhíniú ar struchtúr pacáiste Plasma
Comment[gl]=Definición da estrutura do paquete de Plasma
Comment[gu]=પ્લાઝમા પેકેજ માળખાંની વ્યાખ્યા
Comment[he]=הגדרת מבנה של חבילת Plasma
Comment[hne]=प्लाज्मा पैकेज स्ट्रक्चर परिभासा
Comment[hr]=Plasmina definicija strukture paketa
Comment[hsb]=Strukturna definicija Plasma-pakćika
Comment[hu]=Struktúraleíró Plasma-csomagokhoz
Comment[ia]=Definition del structura de pacchetto de Plasma
Comment[id]=Definisi struktur paket Plasma
Comment[is]=Skilgreiningar Plasma pakkauppbyggingar
Comment[it]=Definizione struttura pacchetto Plasma
Comment[ja]=Plasma パッケージ構造の定義
Comment[kk]=Plasma дестесінің құрамынын анықтауы
Comment[km]=កា​រកំណត់​រចនាសម្ព័ន្ធ​កញ្ចប់​របស់​ប្លាស្មា
Comment[kn]=ಪ್ಲಾಸ್ಮಾ ಕಂತೆ (ಪ್ಯಾಕೇಜ್) ರಚನಾ ಲಕ್ಷಣ (ಡೆಫೆನಿಶನ್)
Comment[ko]=Plasma 패키지 구조 정의
Comment[ku]=Daxuyaniya çêbûna pakêta Plasma
Comment[lt]=Plasma paketo struktūros aprašymas
Comment[lv]=Plasma pakotņu struktūras definīcija
Comment[mai]=प्लाजमा पैकेज संरचनाक परिभाषा
Comment[ml]=പ്ലാസ്മ പാക്കേജ് സ്ട്രക്ചര്‍ ഡെഫനിഷന്‍
Comment[nb]=Definisjon av Plasma pakkestruktur
Comment[nds]=Paketstruktuur-Fastleggen vun Plasma
Comment[nl]=Structuurdefinitie van plasmapakket
Comment[nn]=Pakkestrukturdefinisjon for Plasma
Comment[pa]=ਪਲਾਜ਼ਮਾ ਪੈਕੇਜ ਢਾਂਚਾ ਪਰਿਭਾਸ਼ਾ
Comment[pl]=Definicja struktury pakietu Plazmy
Comment[pt]=Definição da estrutura de pacotes do Plasma
Comment[pt_BR]=Definição de estrutura de pacote do Plasma
Comment[ro]=Definiție de structură a pachetului Plasma
Comment[ru]=Определение структуры пакета Plasma
Comment[se]=Plasma-páhkkaráhkadusdefinišuvdna
Comment[sk]=Definícia štruktúry Plasma balíčkov
Comment[sl]=Definicija strukture paketa za Plasmo
Comment[sr]=Дефиниција структуре плазма пакета
Comment[sr@ijekavian]=Дефиниција структуре плазма пакета
Comment[sr@ijekavianlatin]=Definicija strukture plasma paketa
Comment[sr@latin]=Definicija strukture plasma paketa
Comment[sv]=Strukturdefinition av Plasma-paket
Comment[ta]=பிளாஸ்மா பொதி வடிவமைப்பு வரையறை
Comment[tg]=Барномаи муайянкунии сохтори Plasma
Comment[th]=นิยามโครงสร้างแพกเกจของพลาสมา
Comment[tr]=Plasma paketi yapı tanımlaması
Comment[ug]=Plasma بوغچا قۇرۇلما ئېنىقلىمىسى
Comment[uk]=Опис структури пакунка плазми
+Comment[vi]=Định nghĩa cấu trúc gói Plasma
Comment[wa]=Definixha del sitructeure do pacaedje di Plasma
Comment[x-test]=xxPlasma package structure definitionxx
Comment[zh_CN]=Plasma 包结构定义
Comment[zh_TW]=Plasma 套件結構定義
[PropertyDef::X-Plasma-PackageFileFilter]
Type=QString
[PropertyDef::X-Plasma-PackageFileMimetypes]
Type=QStringList
[PropertyDef::X-Plasma-ProvidesWidgetBrowser]
Type=bool
diff --git a/plasma/data/servicetypes/plasma-runner.desktop b/plasma/data/servicetypes/plasma-runner.desktop
index 79148221f0..2ca88a865c 100644
--- a/plasma/data/servicetypes/plasma-runner.desktop
+++ b/plasma/data/servicetypes/plasma-runner.desktop
@@ -1,90 +1,92 @@
[Desktop Entry]
Type=ServiceType
X-KDE-ServiceType=Plasma/Runner
Comment=KRunner plugin
Comment[ar]=ملحق KRunner
Comment[as]=KRunner প্লাগ-ইন
Comment[ast]=Complementu KRunner
Comment[be@latin]=Plugin dla „KRunner”
Comment[bg]=Приставка за KRunner
Comment[bn]=কে-রানার প্লাগ-ইন
Comment[bn_IN]=KRunner প্লাগ-ইন
Comment[bs]=Priključak za K‑izvođač
Comment[ca]=Connector del KRunner
Comment[ca@valencia]=Connector del KRunner
Comment[cs]=KRunner modul
Comment[csb]=Wtëkôcz KRunner
Comment[da]=KRunner-plugin
Comment[de]=KRunner-Modul
Comment[el]=Πρόσθετο του KRunner
Comment[en_GB]=KRunner plugin
Comment[es]=Complemento para KRunner
Comment[et]=KRunneri plugin
Comment[eu]=KRnner plugin-a
+Comment[fa]=وصله KRunner
Comment[fi]=KRunner-liitännäinen
Comment[fr]=Module KRunner
Comment[fy]=KRunner plugin
Comment[ga]=Breiseán KRunner
Comment[gl]=Engadido KFileWrite
Comment[gu]=KRunner પ્લગઈન
Comment[he]=תוסף KRunner
Comment[hi]=केरन्नर प्लगइन
Comment[hne]=के-रनरइट प्लगइन
Comment[hr]=Priključak Krunner
Comment[hsb]=KRunner plugin
Comment[hu]=KRunner-bővítmény
Comment[ia]=Plugin KRunner
Comment[id]=Plguin KRunner
Comment[is]=KRunner íforrit
Comment[it]=Plugin KRunner
Comment[ja]=KRunner プラグイン
Comment[kk]=KRunner плагині
Comment[km]=កម្មវិធី​ជំនួយ​របស់ KRunner
Comment[kn]=ಕೆರನ್ನರ್ ಮಿಳಿತಾನ್ವಯ (ಪ್ಲಗಿನ್)
Comment[ko]=KRunner 플러그인
Comment[ku]=Pêveka KAjoker
Comment[lt]=KRunner priedas
Comment[lv]=KRunner spraudnis
Comment[mai]=केरनर प्लगइन
Comment[ml]=കെറണ്ണര്‍ സംയോജകം
Comment[nb]=KRunner-programtillegg
Comment[nds]=KRunner-Moduul
Comment[nl]=KRunner-plugin
Comment[nn]=KRunner-tillegg
Comment[pa]=ਕੇਰਨਰ ਪਲੱਗਇਨ
Comment[pl]=Wtyczka KRunnera
Comment[pt]='Plugin' do KRunner
Comment[pt_BR]=Plug-in do KRunner
Comment[ro]=Modul KRunner
Comment[ru]=Расширение KRunner
Comment[se]=KRunner-lassemodula
Comment[si]=KRunner ප්ලගීනය
Comment[sk]=KRunner modul
Comment[sl]=Vstavek za KRunner
Comment[sq]=KRunner plugin
Comment[sr]=Прикључак за К‑извођач
Comment[sr@ijekavian]=Прикључак за К‑извођач
Comment[sr@ijekavianlatin]=Priključak za K‑izvođač
Comment[sr@latin]=Priključak za K‑izvođač
Comment[sv]=Krunner-insticksprogram
Comment[ta]=கேரன்னர் செருகி
Comment[tg]=Васлкунаки KRunner
Comment[th]=โปรแกรมเสริมของ KRunner
Comment[tr]=KRunner eklentisi
Comment[ug]=KRunner قىستۇرما
Comment[uk]=Додаток до KRunner
+Comment[vi]=Phần bổ sung KRunner
Comment[wa]=Tchôke-divins KRunner
Comment[x-test]=xxKRunner pluginxx
Comment[zh_CN]=KRunner 插件
Comment[zh_TW]=KRunner 外掛程式
[PropertyDef::X-Plasma-AdvertiseSingleRunnerQueryMode]
Type=bool
[PropertyDef::TryExec]
Type=QString
[PropertyDef::X-Plasma-Args]
Type=QStringList
diff --git a/plasma/data/servicetypes/plasma-scriptengine.desktop b/plasma/data/servicetypes/plasma-scriptengine.desktop
index 97e3210efd..02b7819cf4 100644
--- a/plasma/data/servicetypes/plasma-scriptengine.desktop
+++ b/plasma/data/servicetypes/plasma-scriptengine.desktop
@@ -1,83 +1,84 @@
[Desktop Entry]
Type=ServiceType
X-KDE-ServiceType=Plasma/ScriptEngine
Comment=Scripting language extension for Plasma
Comment[ar]=إمتداد لغة سكربت للبلازما
Comment[as]=Plasma ৰ কাৰণে স্ক্ৰিপ্টিং ভাষাৰ সম্প্ৰসাৰণ
Comment[ast]=Estensión de llinguaxe de guiones pa Plasma
Comment[be@latin]=Pašyreńnie skryptavaj movy dla systemy „Plasma”
Comment[bg]=Разширение на Plasma за скриптов език
Comment[bs]=Proširenje Plazme za skriptne jezike
Comment[ca]=Extensió de llenguatge d'script per al Plasma
Comment[ca@valencia]=Extensió de llenguatge d'script per al Plasma
Comment[cs]=Rozšíření pro skriptovací jazyky Plasma
Comment[da]=Scriptsprog-udvidelse til Plasma
Comment[de]=Skriptsprachen-Erweiterung für Plasma
Comment[el]=Επέκταση γλώσσας σεναρίων για το Plasma
Comment[en_GB]=Scripting language extension for Plasma
Comment[eo]=Skriptlingva etendaĵo por Plasma
Comment[es]=Extensión de lenguaje de script para Plasma
Comment[et]=Skriptikeele laiendus Plasmale
Comment[eu]=Plasmarako script lengoaien gehigarria
Comment[fi]=Skriptauskielituki Plasmalle
Comment[fr]=Langage de script d'extension pour Plasma
Comment[fy]=Scripting taal taheaksel foar Plasma
Comment[ga]=Eisínteacht teanga scriptithe le haghaidh Plasma
Comment[gl]=Extensión de linguaxe de scripts para o Plasma
Comment[gu]=પ્લાઝમા માટે સ્ક્રિપ્ટીંગ ભાષા એક્સટેન્શન
Comment[he]=הרחבת שפת תסריטים של Plasma
Comment[hne]=प्लाज्मा बर स्क्रिप्टिंग भाखा
Comment[hr]=Proširenje Plasme za skriptne jezike
Comment[hsb]=Skriptowa rěč jako Plasma-ekstensija
Comment[hu]=Szkriptkezelő bővítmény a Plasmához
Comment[ia]=Extension del language de script de Plasma
Comment[id]=Tambahan bahasa skrip untuk Plasma
Comment[is]=Framlenging á skriftunarmál fyrir Plasma
Comment[it]=Estensione linguaggio scripting per Plasma
Comment[ja]=Plasma のためのスクリプト言語拡張
Comment[kk]=Plasma-ның скрипт тілі
Comment[km]=ផ្នែក​បន្ថែម​ភាសា​ស្គ្រីប​សម្រាប់​ប្លាស្មា
Comment[kn]=ಪ್ಲಾಸ್ಮಾ ಕ್ಕೆ ವಿಧಿಗುಚ್ಛ (ಸ್ಕ್ರಿಪ್ಟ್) ರಚನಾ ಭಾಷೆ ಯ ವಿಸ್ತರಣೆ
Comment[ko]=Plasma 스크립트 언어 확장
Comment[ku]=Pêveka zimanê skrîpt kirinê ji bo Plasma
Comment[lt]=Scenarijų kalbos praplėtimas, skirtas Plasma
Comment[lv]=Skriptēšanas valodu Plasma paplašinājums
Comment[mai]=प्लाजमाक लेल स्क्रिप्टिंग भाषाक विस्तार
Comment[ml]=പ്ലാസ്മയ്ക്കുള്ള സ്ക്രിപ്റ്റിങ്ങ് ഭാഷാ എക്സ്റ്റന്‍ഷന്‍
Comment[nb]=Skriptspråk-utvidelse for Plasma
Comment[nds]=Skriptspraak-Verwiedern för Plasma
Comment[nl]=Scripttaalextensie voor Plasma
Comment[nn]=Skriptspråkutviding for Plasma
Comment[pa]=ਪਲਾਜ਼ਮਾ ਲਈ ਸਕ੍ਰਿਪਟਿੰਗ ਭਾਸ਼ਾ ਇਕਸਟੈਨਸ਼ਨ
Comment[pl]=Rozszerzenie języka skryptów dla Plazmy
Comment[pt]=Extensão de linguagens de programação para o Plasma
Comment[pt_BR]=Extensão de linguagem de script do Plasma
Comment[ro]=Extensie de limbaj pentru scripturi Plasma
Comment[ru]=Поддержка языков сценариев для Plasma
Comment[se]=Skriptagiellaviiddádus Plasmai
Comment[si]=Plasma සඳහා ස්කටිප්ට භාෂා දිගුව
Comment[sk]=Rozšírenie pre skriptovacie jazyky Plasma
Comment[sl]=Razširitev s skriptnim jezikom za Plasmo
Comment[sr]=Проширење Плазме за скриптне језике
Comment[sr@ijekavian]=Проширење Плазме за скриптне језике
Comment[sr@ijekavianlatin]=Proširenje Plasme za skriptne jezike
Comment[sr@latin]=Proširenje Plasme za skriptne jezike
Comment[sv]=Skriptspråksutökning för Plasma
Comment[ta]=பிளாஸ்மாவிற்கான குறுநிரலாக்க மொழி விரிவாக்கம்
Comment[tg]=Скрипти забонҳои иловагӣ барои Plasma
Comment[th]=ส่วนเสริมภาษาสคริปต์สำหรับพลาสมา
Comment[tr]=Plasma için betik dili eklentisi
Comment[ug]=Plasma نىڭ قوليازما تىل كېڭەيتىلمىسى
Comment[uk]=Розширення скриптових мов для Плазми
+Comment[vi]=Phần mở rộng ngôn ngữ lệnh cho Plasma
Comment[wa]=Rawete di lingaedje di scriptaedje po Plasma
Comment[x-test]=xxScripting language extension for Plasmaxx
Comment[zh_CN]=Plasma 的脚本语言扩展
Comment[zh_TW]=Plasma 文稿語言延伸
[PropertyDef::X-Plasma-ComponentTypes]
Type=QStringList
[PropertyDef::X-Plasma-PackageFormat]
Type=QString
diff --git a/plasma/data/servicetypes/plasma-service.desktop b/plasma/data/servicetypes/plasma-service.desktop
index db21604e7e..e04e3b4376 100644
--- a/plasma/data/servicetypes/plasma-service.desktop
+++ b/plasma/data/servicetypes/plasma-service.desktop
@@ -1,56 +1,57 @@
[Desktop Entry]
Type=ServiceType
X-KDE-ServiceType=Plasma/Service
Comment=Plasma service
Comment[bg]=Услуга Plasma
Comment[bs]=Plazma usluga
Comment[ca]=Servei del Plasma
Comment[ca@valencia]=Servei del Plasma
Comment[cs]=Služba Plasma
Comment[da]=Plasma-tjeneste
Comment[de]=Plasma-Dienst
Comment[el]=Υπηρεσία plasma
Comment[en_GB]=Plasma service
Comment[es]=Servicio de Plasma
Comment[et]=Plasma teenus
Comment[eu]=Plasma zerbitzua
Comment[fi]=Plasma-palvelu
Comment[fr]=Service Plasma
Comment[gl]=Servizo do Plasma
Comment[hr]=Servis u Plasmi
Comment[hu]=Plazma-szolgáltatás
Comment[ia]=Servicio de Plasma
Comment[is]=Plasma-þjónusta
Comment[it]=Servizio plasma
Comment[ja]=Plasma サービス
Comment[kk]=Plasma қызметі
Comment[km]=សេវា​​ប្លាស្មា
Comment[ko]=Plasma 서비스
Comment[lt]=Plasma tarnyba
Comment[lv]=Plasma serviss
Comment[nb]=Plasma-tjeneste
Comment[nds]=Plasma-Deenst
Comment[nl]=Plasma-service
Comment[pa]=ਪਲਾਜ਼ਮਾ ਸਰਵਿਸ
Comment[pl]=Usługa Plazmy
Comment[pt]=Serviço do Plasma
Comment[pt_BR]=Serviço do Plasma
Comment[ro]=Servicu Plasma
Comment[ru]=Служба Plasma
Comment[se]=Plasma-bálvalus
Comment[si]=ප්ලස්මා සේවා
Comment[sk]=Služba Plasma
Comment[sr]=Плазма сервис
Comment[sr@ijekavian]=Плазма сервис
Comment[sr@ijekavianlatin]=Plasma servis
Comment[sr@latin]=Plasma servis
Comment[sv]=Plasma-tjänst
Comment[th]=บริการของพลาสมา
Comment[tr]=Plasma servisi
Comment[ug]=Plasma مۇلازىمىتى
Comment[uk]=Служба Плазми
+Comment[vi]=Dịch vụ Plasma
Comment[wa]=Siervice di Plasma
Comment[x-test]=xxPlasma servicexx
Comment[zh_CN]=Plasma 服务
Comment[zh_TW]=Plasma 服務
diff --git a/plasma/data/servicetypes/plasma-toolbox.desktop b/plasma/data/servicetypes/plasma-toolbox.desktop
index 92a5bffaa0..308ff77e8d 100644
--- a/plasma/data/servicetypes/plasma-toolbox.desktop
+++ b/plasma/data/servicetypes/plasma-toolbox.desktop
@@ -1,58 +1,59 @@
[Desktop Entry]
Type=ServiceType
X-KDE-ServiceType=Plasma/ToolBox
Comment=Plasma toolbox
Comment[bg]=Инструменти за Plasma
Comment[bs]=Plazma alatna traka
Comment[ca]=Caixa d'eines del Plasma
Comment[ca@valencia]=Caixa d'eines del Plasma
Comment[cs]=Plasma toolbox
Comment[da]=Plasma værktøjskasse
Comment[de]=Plasma-Werkzeugkasten
Comment[el]=Εργαλειοθήκη Plasma
Comment[en_GB]=Plasma toolbox
Comment[es]=Caja de herramientas de Plasma
Comment[et]=Plasma tööriistakast
Comment[eu]=Plasma tresna-kutxa
Comment[fi]=Plasma-työkalurivi
Comment[fr]=Boîte à outils Plasma
Comment[gl]=Barra de ferramentas do Plasma
Comment[hr]=Plasma alatni okvir
Comment[hu]=Plazma-eszközkészlet
Comment[ia]=Instrumentario de Plasma
Comment[is]=Plasma verkfærasafn
Comment[it]=Barra degli strumenti plasma
Comment[ja]=Plasma ツールボックス
Comment[kk]=Plasma құралдары
Comment[km]=ប្រអប់​ឧបករណ៍​ប្លាស្មា
Comment[ko]=Plasma 도구 상자
Comment[ku]=Qutiya amûrên Plasma
Comment[lt]=Pasma įrankinė
Comment[lv]=Plasma rīkkopa
Comment[nb]=Plasma-verktøykasse
Comment[nds]=Plasma-Warktüüchkist
Comment[nl]=Plasma-hulpmiddelen
Comment[pa]=ਪਲਾਜ਼ਮਾ ਟੂਲਬਾਕਸ
Comment[pl]=Przybornik Plazmy
Comment[pt]=Barra de ferramentas do Plasma
Comment[pt_BR]=Barra de ferramentas do Plasma
Comment[ro]=Cutie de unelte Plasma
Comment[ru]=Панель инструментов Plasma
Comment[se]=Plasma-reaidoboksa
Comment[si]=ප්ලස්මා මෙවලම් පෙට්ටිය
Comment[sk]=Nástroje Plasma
Comment[sr]=Плазма алатница
Comment[sr@ijekavian]=Плазма алатница
Comment[sr@ijekavianlatin]=Plasma alatnica
Comment[sr@latin]=Plasma alatnica
Comment[sv]=Plasma verktygslåda
Comment[ta]=பிளாஸ்மா கருவிப்பட்டி
Comment[th]=กล่องเครื่องมือของพลาสมา
Comment[tr]=Plasma araç kutusu
Comment[ug]=Plasma قورال ساندۇقى
Comment[uk]=Набір інструментів Плазми
+Comment[vi]=Hộp công cụ Plasma
Comment[wa]=Boesse ås usteyes di Plasma
Comment[x-test]=xxPlasma toolboxxx
Comment[zh_CN]=Plasma 工具箱
Comment[zh_TW]=Plasma 工具盒
diff --git a/plasma/data/servicetypes/plasma-wallpaper.desktop b/plasma/data/servicetypes/plasma-wallpaper.desktop
index 09acfeec43..28707a6fd0 100644
--- a/plasma/data/servicetypes/plasma-wallpaper.desktop
+++ b/plasma/data/servicetypes/plasma-wallpaper.desktop
@@ -1,81 +1,82 @@
[Desktop Entry]
Type=ServiceType
X-KDE-ServiceType=Plasma/Wallpaper
Comment=Plasma wallpaper
Comment[ar]=خلفية شاشة بلازما
Comment[as]=Plasma wallpaper
Comment[ast]=Fondu d'escritoriu de Plasma
Comment[be@latin]=Špalery „Plasma”
Comment[bg]=Тапет за Plasma
Comment[bn]=প্লাসমা ওয়ালপেপার
Comment[bn_IN]=Plasma ওয়াল-পেপার
Comment[bs]=Plazma tapet
Comment[ca]=Fons d'escriptori del Plasma
Comment[ca@valencia]=Fons d'escriptori del Plasma
Comment[cs]=Tapeta Plasma
Comment[da]=Plasma-baggrundsbillede
Comment[de]=Plasma-Hintergrundbild
Comment[el]=Ταπετσαρία plasma
Comment[en_GB]=Plasma wallpaper
Comment[es]=Fondo de escritorio para Plasma
Comment[et]=Plasma taustapilt
Comment[eu]=Plasma horma papera
Comment[fi]=Plasma-taustakuva
Comment[fr]=Fond d'écran Plasma
Comment[fy]=Plasma eftergrûnôfbylding
Comment[ga]=Cúlbhrat Plasma
Comment[gl]=Fondo de escritorio do Plasma
Comment[gu]=પ્લાઝમા વોલપેપર
Comment[he]=תמונת רקע של Plasma
Comment[hne]=प्लाज्मा वालपेपर
Comment[hr]=Plasmina pozadinska slika
Comment[hsb]=Tapeta za Plasma
Comment[hu]=Plasma háttérkép
Comment[ia]=Tapete de papiro de Plasma
Comment[id]=Gambar belakang Plasma
Comment[is]=Plasma veggfóður
Comment[it]=Sfondo Plasma
Comment[ja]=Plasma 壁紙
Comment[kk]=Plasma тұсқағазы
Comment[km]=ផ្ទាំង​រូបភាព​ប្លាស្មា
Comment[kn]=ಪ್ಲಾಸ್ಮಾ ಹಿನ್ನೆಲೆ ತೆರೆಚಿತ್ರ (ವಾಲ್ ಪೇಪರ್)
Comment[ko]=Plasma 배경 그림
Comment[ku]=Wêne-rûerdê Plasma
Comment[lt]=Plasma apmušalas
Comment[lv]=Plasma ekrāntapete
Comment[mai]=प्लाजमा वालपेपर
Comment[ml]=പ്ലാസ്മ ചുമര്‍ച്ചിത്രം
Comment[nb]=Plasma tapet
Comment[nds]=Plasma-Achtergrundbild
Comment[nl]=Plasma-bureaubladachtergrond
Comment[nn]=Plasmabakgrunn
Comment[pa]=ਪਲਾਜ਼ਮਾ ਵਾਲਪੇਪਰ
Comment[pl]=Tapeta Plazmy
Comment[pt]=Papel de parede do Plasma
Comment[pt_BR]=Papel de parede do Plasma
Comment[ro]=Fundal Plasma
Comment[ru]=Обои Plasma
Comment[se]=Plasma-duogášgovva
Comment[si]=Plasma පසුබිම්රූප
Comment[sk]=Tapeta Plasma
Comment[sl]=Tapeta za Plasmo
Comment[sr]=Плазма тапет
Comment[sr@ijekavian]=Плазма тапет
Comment[sr@ijekavianlatin]=Plasma tapet
Comment[sr@latin]=Plasma tapet
Comment[sv]=Plasma skrivbordsunderlägg
Comment[ta]=பிளாஸ்மா திரைபின்னணி
Comment[tg]=Тасвири заминаи Plasma
Comment[th]=ภาพพื้นหลังของพลาสมา
Comment[tr]=Plasma duvar kağıdı
Comment[ug]=Plasma تام قەغىزى
Comment[uk]=Тло стільниці Плазми
+Comment[vi]=Hình nền Plasma
Comment[wa]=Tapisreye di Plasma
Comment[x-test]=xxPlasma wallpaperxx
Comment[zh_CN]=Plasma 壁纸
Comment[zh_TW]=Plasma 桌布
[PropertyDef::X-Plasma-FormFactors]
Type=QStringList
diff --git a/plasma/popupapplet.cpp b/plasma/popupapplet.cpp
index dd983fd21c..9064f812b9 100644
--- a/plasma/popupapplet.cpp
+++ b/plasma/popupapplet.cpp
@@ -1,979 +1,978 @@
/*
* Copyright 2008 by Montel Laurent <montel@kde.org>
* Copyright 2008 by Marco Martin <notmart@gmail.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor,
* Boston, MA 02110-1301 USA
*/
#include "popupapplet.h"
#include "private/popupapplet_p.h"
#include "private/dialog_p.h"
#include <QApplication>
#include <QGraphicsProxyWidget>
#include <QGraphicsLinearLayout>
#include <QTimer>
#include <QVBoxLayout>
#ifdef Q_WS_X11
#include <QX11Info>
#endif
#include <kicon.h>
#include <kiconloader.h>
#include <kwindowsystem.h>
#include <kglobalsettings.h>
#include <netwm.h>
#include "plasma/private/applet_p.h"
#include "plasma/private/extenderitemmimedata_p.h"
#include "plasma/corona.h"
#include "plasma/containment.h"
#include "plasma/private/containment_p.h"
#include "plasma/dialog.h"
#include "plasma/extenders/extender.h"
#include "plasma/extenders/extenderitem.h"
#include "plasma/package.h"
#include "plasma/theme.h"
#include "plasma/scripting/appletscript.h"
#include "plasma/tooltipmanager.h"
#include "plasma/widgets/iconwidget.h"
namespace Plasma
{
PopupApplet::PopupApplet(QObject *parent, const QVariantList &args)
: Plasma::Applet(parent, args),
d(new PopupAppletPrivate(this))
{
}
PopupApplet::PopupApplet(const QString &packagePath, uint appletId, const QVariantList &args)
: Plasma::Applet(packagePath, appletId, args),
d(new PopupAppletPrivate(this))
{
}
PopupApplet::~PopupApplet()
{
delete widget();
delete d;
}
void PopupApplet::setPopupIcon(const QIcon &icon)
{
if (icon.isNull()) {
if (d->icon) {
delete d->icon;
d->icon = 0;
setLayout(0);
setAspectRatioMode(d->savedAspectRatio);
}
return;
}
d->createIconWidget();
d->icon->setIcon(icon);
}
void PopupApplet::setPopupIcon(const QString &iconName)
{
// Attempt 1: is it in the plasmoid package?
if (package()) {
const QString file = package()->filePath("images", iconName);
if (!file.isEmpty()) {
setPopupIcon(KIcon(file));
return;
}
}
// Attempt 2: is it a svg in the icons directory?
QString name = QString("icons/") + iconName.split("-").first();
if (!Plasma::Theme::defaultTheme()->imagePath(name).isEmpty()) {
d->createIconWidget();
d->icon->setSvg(name, iconName);
if (d->icon->svg().isEmpty()) {
setPopupIcon(KIcon(iconName));
}
return;
}
// Final Attempt: use KIcon
setPopupIcon(KIcon(iconName));
}
QIcon PopupApplet::popupIcon() const
{
return d->icon ? d->icon->icon() : QIcon();
}
QWidget *PopupApplet::widget()
{
return d->widget;
}
void PopupApplet::setWidget(QWidget *widget)
{
if (d->widget) {
Plasma::Dialog *dialog = d->dialogPtr.data();
if (dialog) {
dialog->setGraphicsWidget(0);
QVBoxLayout *lay = 0;
QLayout *existingLayout = dialog->layout();
if (existingLayout) {
lay = dynamic_cast<QVBoxLayout *>(existingLayout);
if (!lay) {
delete existingLayout;
}
}
if (!lay) {
lay = new QVBoxLayout;
dialog->setLayout(lay);
}
lay->removeWidget(d->widget);
lay->addWidget(widget);
} else if (d->proxy) {
d->proxy.data()->setWidget(widget);
}
}
d->widget = widget;
}
QGraphicsWidget *PopupApplet::graphicsWidget()
{
if (d->graphicsWidget) {
return d->graphicsWidget.data();
} else {
return static_cast<Applet*>(this)->d->extender.data();
}
}
void PopupApplet::setGraphicsWidget(QGraphicsWidget *graphicsWidget)
{
if (d->graphicsWidget) {
if (d->dialogPtr) {
d->dialogPtr.data()->setGraphicsWidget(graphicsWidget);
} else if (layout()) {
QGraphicsLinearLayout *lay = static_cast<QGraphicsLinearLayout *>(layout());
lay->removeAt(0);
if (graphicsWidget) {
lay->addItem(graphicsWidget);
}
}
}
d->graphicsWidget = graphicsWidget;
}
void PopupAppletPrivate::checkExtenderAppearance(Plasma::FormFactor f)
{
Extender *extender = qobject_cast<Extender*>(q->graphicsWidget());
if (extender) {
if (f != Plasma::Horizontal && f != Plasma::Vertical) {
extender->setAppearance(Extender::NoBorders);
} else if (q->location() == TopEdge) {
extender->setAppearance(Extender::TopDownStacked);
} else {
extender->setAppearance(Extender::BottomUpStacked);
}
if (dialogPtr) {
dialogPtr.data()->setGraphicsWidget(extender);
}
}
}
void PopupAppletPrivate::popupConstraintsEvent(Plasma::Constraints constraints)
{
Plasma::FormFactor f = q->formFactor();
if (constraints & Plasma::LocationConstraint) {
checkExtenderAppearance(f);
}
if (constraints & Plasma::FormFactorConstraint ||
constraints & Plasma::StartupCompletedConstraint ||
(constraints & Plasma::SizeConstraint &&
(f == Plasma::Vertical || f == Plasma::Horizontal))) {
QGraphicsLinearLayout *lay = dynamic_cast<QGraphicsLinearLayout *>(q->layout());
if (icon && lay && lay->count() > 0) {
lay->removeAt(0);
}
QSizeF minimum;
QSizeF parentSize;
QGraphicsWidget *gWidget = q->graphicsWidget();
//kDebug() << "graphics widget is" << (QObject*)gWidget;
QWidget *qWidget = q->widget();
if (gWidget) {
minimum = gWidget->minimumSize();
// our layout may have been replaced on us in the call to graphicsWidget!
lay = dynamic_cast<QGraphicsLinearLayout *>(q->layout());
if (!(constraints & LocationConstraint)) {
checkExtenderAppearance(f);
}
} else if (qWidget) {
minimum = qWidget->minimumSizeHint();
}
//99% of the times q->parentWidget() is the containment, but using it we can also manage the applet-in-applet case (i.e. systray)
//there are also cases where the parentlayoutitem is bigger than the containment (e.g. newspaper)
if (q->parentLayoutItem()) {
parentSize = q->parentLayoutItem()->geometry().size();
} else if (q->parentWidget()) {
parentSize = q->parentWidget()->size();
}
//check if someone did the nasty trick of applets in applets, in this case we always want to be collapsed
QGraphicsWidget *candidateParentApplet = q;
Plasma::Applet *parentApplet = 0;
//this loop should be executed normally a single time, at most 2-3 times for quite complex containments
while (candidateParentApplet) {
candidateParentApplet = candidateParentApplet->parentWidget();
parentApplet = qobject_cast<Plasma::Applet *>(candidateParentApplet);
if (parentApplet) {
break;
}
}
//Applet on desktop
if ((!parentApplet || parentApplet->isContainment() ) && icon && (!icon->svg().isEmpty() || !icon->icon().isNull()) && ((f != Plasma::Vertical && f != Plasma::Horizontal) ||
((f == Plasma::Vertical && parentSize.width() >= minimum.width()) ||
(f == Plasma::Horizontal && parentSize.height() >= minimum.height())))) {
//kDebug() << "we are expanding the popupapplet";
// we only switch to expanded if we aren't horiz/vert constrained and
// this applet has an icon.
// otherwise, we leave it up to the applet itself to figure it out
if (icon) {
icon->hide();
}
if (savedAspectRatio != Plasma::InvalidAspectRatioMode) {
q->setAspectRatioMode(savedAspectRatio);
}
Dialog *dialog = dialogPtr.data();
if (dialog) {
if (dialog->layout() && qWidget) {
//we don't want to delete Widget inside the dialog layout
dialog->layout()->removeWidget(qWidget);
}
if (qWidget) {
qWidget->setParent(0);
}
delete dialog;
}
if (!lay) {
lay = new QGraphicsLinearLayout();
lay->setContentsMargins(0, 0, 0, 0);
lay->setSpacing(0);
lay->setOrientation(Qt::Horizontal);
q->setLayout(lay);
}
QSize prefSize;
if (gWidget) {
if (proxy) {
proxy.data()->setWidget(0);
delete proxy.data();
}
Corona *corona = qobject_cast<Corona *>(gWidget->scene());
if (corona) {
corona->removeOffscreenWidget(gWidget);
}
lay->addItem(gWidget);
prefSize = gWidget->preferredSize().toSize();
} else if (qWidget) {
if (!proxy) {
proxy = new QGraphicsProxyWidget(q);
proxy.data()->setWidget(qWidget);
proxy.data()->show();
}
lay->addItem(proxy.data());
prefSize = qWidget->sizeHint();
}
//we could be on a big panel, but in that case we will be able to resize
//more than the natural minimum size, because we'll transform into an icon
if (f == Plasma::Horizontal) {
minimum.setHeight(0);
} else if (f == Plasma::Vertical) {
minimum.setWidth(0);
}
qreal left, top, right, bottom;
q->getContentsMargins(&left, &top, &right, &bottom);
QSizeF oldSize(q->size());
//size not saved/invalid size saved
if (oldSize.width() < q->minimumSize().width() || oldSize.height() < q->minimumSize().height()) {
q->resize(prefSize);
emit q->appletTransformedItself();
}
} else {
//Applet on popup
if (icon && lay) {
lay->addItem(icon);
}
//kDebug() << "about to switch to a popup";
if (!qWidget && !gWidget) {
delete dialogPtr.data();
return;
}
//there was already a dialog? don't make the switch again
if (dialogPtr) {
return;
}
if (proxy) {
proxy.data()->setWidget(0); // prevent it from deleting our widget!
delete proxy.data();
}
//save the aspect ratio mode in case we drag'n drop in the Desktop later
savedAspectRatio = q->aspectRatioMode();
if (icon) {
icon->show();
q->setAspectRatioMode(Plasma::ConstrainedSquare);
}
Dialog *dialog = new Dialog();
dialog->d->appletPtr = q;
dialogPtr = dialog;
if (icon) {
dialog->setAspectRatioMode(savedAspectRatio);
}
//no longer use Qt::Popup since that seems to cause a lot of problem when you drag
//stuff out of your Dialog (extenders). Monitor WindowDeactivate events so we can
//emulate the same kind of behavior as Qt::Popup (close when you click somewhere
//else.
if (gWidget) {
Corona *corona = qobject_cast<Corona *>(gWidget->scene());
if (!corona) {
corona = qobject_cast<Corona *>(q->scene());
}
if (corona) {
corona->addOffscreenWidget(gWidget);
}
gWidget->show();
dialog->setGraphicsWidget(gWidget);
dialog->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint | (gWidget->windowFlags() & Qt::X11BypassWindowManagerHint));
} else if (qWidget) {
QVBoxLayout *l_layout = new QVBoxLayout(dialog);
l_layout->setSpacing(0);
l_layout->setMargin(0);
l_layout->addWidget(qWidget);
dialog->adjustSize();
dialog->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint | (qWidget->windowFlags() & Qt::X11BypassWindowManagerHint));
} else {
dialog->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);
}
restoreDialogSize();
KWindowSystem::setState(dialog->winId(), NET::SkipTaskbar | NET::SkipPager);
dialog->installEventFilter(q);
QObject::connect(dialog, SIGNAL(dialogResized()), q, SLOT(dialogSizeChanged()));
QObject::connect(dialog, SIGNAL(dialogVisible(bool)), q, SLOT(dialogStatusChanged(bool)));
}
}
if (constraints & Plasma::PopupConstraint) {
updateDialogPosition();
}
if (icon) {
// emit the size hint changing stuff for our applet as we are handling
// the size changings
emit q->sizeHintChanged(Qt::PreferredSize);
}
}
void PopupAppletPrivate::appletActivated()
{
internalTogglePopup(true);
}
QSizeF PopupApplet::sizeHint(Qt::SizeHint which, const QSizeF & constraint) const
{
if (!d->dialogPtr || which != Qt::PreferredSize) {
return Applet::sizeHint(which, constraint);
}
switch (formFactor()) {
case Vertical:
case Horizontal: {
const int size = IconSize(KIconLoader::Panel);
return QSizeF(size, size);
}
default:
break;
}
const int size = IconSize(KIconLoader::Desktop);
return QSizeF(size, size);
}
void PopupApplet::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
if (!d->icon && !d->popupLostFocus && event->buttons() == Qt::LeftButton) {
d->clicked = scenePos().toPoint();
event->setAccepted(true);
return;
} else {
d->popupLostFocus = false;
Applet::mousePressEvent(event);
}
}
void PopupApplet::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{
if (!d->icon &&
(d->clicked - scenePos().toPoint()).manhattanLength() < KGlobalSettings::dndEventDelay()) {
d->internalTogglePopup();
} else {
Applet::mouseReleaseEvent(event);
}
}
bool PopupApplet::eventFilter(QObject *watched, QEvent *event)
{
if (!d->passive && watched == d->dialogPtr.data() && (event->type() == QEvent::WindowDeactivate)) {
d->popupLostFocus = true;
QTimer::singleShot(100, this, SLOT(clearPopupLostFocus()));
}
if (watched == d->dialogPtr.data() && event->type() == QEvent::ContextMenu) {
//pass it up to the applet
//well, actually we have to pass it to the *containment*
//because all the code for showing an applet's contextmenu is actually in Containment.
Containment *c = containment();
if (c) {
Applet *applet = this;
Dialog *dialog = d->dialogPtr.data();
if (dialog && dialog->graphicsWidget()) {
int left, top, right, bottom;
dialog->getContentsMargins(&left, &top, &right, &bottom);
const QPoint eventPos = static_cast<QContextMenuEvent*>(event)->pos() - QPoint(left, top);
QPointF pos = dialog->graphicsWidget()->mapToScene(eventPos);
if (Applet *actual = c->d->appletAt(pos)) {
applet = actual;
}
}
KMenu desktopMenu;
c->d->addAppletActions(desktopMenu, applet, event);
if (!desktopMenu.isEmpty()) {
desktopMenu.exec(static_cast<QContextMenuEvent*>(event)->globalPos());
return true;
}
return false;
}
}
return Applet::eventFilter(watched, event);
}
//FIXME: some duplication between the drag events... maybe add some simple helper function?
void PopupApplet::dragEnterEvent(QGraphicsSceneDragDropEvent *event)
{
if (event->mimeData()->hasFormat(ExtenderItemMimeData::mimeType())) {
const ExtenderItemMimeData *mimeData =
qobject_cast<const ExtenderItemMimeData*>(event->mimeData());
if (mimeData && qobject_cast<Extender*>(graphicsWidget())) {
event->accept();
showPopup();
}
}
}
void PopupApplet::dragLeaveEvent(QGraphicsSceneDragDropEvent *event)
{
if (event->mimeData()->hasFormat(ExtenderItemMimeData::mimeType())) {
const ExtenderItemMimeData *mimeData =
qobject_cast<const ExtenderItemMimeData*>(event->mimeData());
if (mimeData && qobject_cast<Extender*>(graphicsWidget())) {
//We want to hide the popup if we're not moving onto the popup AND it is not the popup
//we started.
if (d->dialogPtr && !d->dialogPtr.data()->geometry().contains(event->screenPos()) &&
mimeData->extenderItem()->extender() != qobject_cast<Extender*>(graphicsWidget())) {
//We actually try to hide the popup, with a call to showPopup, with a smal timeout,
//so if the user moves into the popup fast enough, it remains open (the extender
//will call showPopup which will cancel the timeout.
showPopup(250);
}
}
}
}
void PopupApplet::dropEvent(QGraphicsSceneDragDropEvent *event)
{
if (event->mimeData()->hasFormat(ExtenderItemMimeData::mimeType())) {
const ExtenderItemMimeData *mimeData =
qobject_cast<const ExtenderItemMimeData*>(event->mimeData());
if (mimeData && qobject_cast<Extender*>(graphicsWidget())) {
mimeData->extenderItem()->setExtender(extender());
QApplication::restoreOverrideCursor();
}
}
}
void PopupApplet::showPopup(uint popupDuration)
{
// use autohideTimer to store when the next show should be
if (popupDuration > 0 || d->autohideTimer) {
if (!d->autohideTimer) {
d->autohideTimer = new QTimer(this);
d->autohideTimer->setSingleShot(true);
connect(d->autohideTimer, SIGNAL(timeout()), this, SLOT(hideTimedPopup()));
}
d->autohideTimer->stop();
d->autohideTimer->setInterval(popupDuration);
}
//kDebug() << "starting delayed show, duration for popup is" << popupDuration;
d->delayedShowTimer.start(0, this);
}
void PopupApplet::timerEvent(QTimerEvent *event)
{
if (event->timerId() == d->delayedShowTimer.timerId()) {
d->delayedShowTimer.stop();
Dialog *dialog = d->dialogPtr.data();
if (dialog) {
// move the popup before its fist show, even if the show isn't triggered by
// a click, this should fix the first random position seen in some widgets
if (!dialog->isVisible()) {
d->internalTogglePopup();
}
const int popupDuration = d->autohideTimer ? d->autohideTimer->interval() : 0;
//kDebug() << "popupDuration is:" << (d->autohideTimer ? d->autohideTimer->interval() : 0);
if (popupDuration > 0) {
d->autohideTimer->start();
} else if (d->autohideTimer) {
d->autohideTimer->stop();
}
}
} else if (event->timerId() == d->showDialogTimer.timerId()) {
d->showDialogTimer.stop();
d->showDialog();
} else {
Applet::timerEvent(event);
}
}
void PopupApplet::hidePopup()
{
d->showDialogTimer.stop();
d->delayedShowTimer.stop();
Dialog *dialog = d->dialogPtr.data();
if (dialog && dialog->isVisible()) {
if (location() != Floating) {
dialog->animatedHide(locationToInverseDirection(location()));
} else {
dialog->hide();
}
}
}
void PopupApplet::togglePopup()
{
d->internalTogglePopup();
}
Plasma::PopupPlacement PopupApplet::popupPlacement() const
{
return d->popupPlacement;
}
void PopupApplet::setPopupAlignment(Qt::AlignmentFlag alignment)
{
d->popupAlignment = alignment;
}
Qt::AlignmentFlag PopupApplet::popupAlignment() const
{
return d->popupAlignment;
}
void PopupApplet::popupEvent(bool popped)
{
if (Applet::d->script) {
emit Applet::d->script->popupEvent(popped);
}
}
void PopupApplet::setPassivePopup(bool passive)
{
d->passive = passive;
}
bool PopupApplet::isPassivePopup() const
{
return d->passive;
}
bool PopupApplet::isPopupShowing() const
{
return d->dialogPtr && d->dialogPtr.data()->isVisible();
}
bool PopupApplet::isIconified() const
{
return d->dialogPtr;
}
PopupAppletPrivate::PopupAppletPrivate(PopupApplet *applet)
: q(applet),
icon(0),
widget(0),
popupPlacement(Plasma::FloatingPopup),
popupAlignment(Qt::AlignLeft),
savedAspectRatio(Plasma::InvalidAspectRatioMode),
autohideTimer(0),
preShowStatus(UnknownStatus),
popupLostFocus(false),
passive(false)
{
int iconSize = IconSize(KIconLoader::Desktop);
q->resize(iconSize, iconSize);
q->setAcceptDrops(true);
QObject::disconnect(q, SIGNAL(activate()), static_cast<Applet*>(q), SLOT(setFocus()));
QObject::connect(q, SIGNAL(activate()), q, SLOT(appletActivated()));
QObject::connect(KGlobalSettings::self(), SIGNAL(iconChanged(int)), q, SLOT(iconSizeChanged(int)));
}
PopupAppletPrivate::~PopupAppletPrivate()
{
if (proxy) {
proxy.data()->setWidget(0);
}
delete dialogPtr.data();
delete icon;
}
void PopupAppletPrivate::iconSizeChanged(int group)
{
if (icon && (group == KIconLoader::Desktop || group == KIconLoader::Panel)) {
q->updateGeometry();
}
}
void PopupAppletPrivate::internalTogglePopup(bool fromActivatedSignal)
{
if (autohideTimer) {
autohideTimer->stop();
}
delayedShowTimer.stop();
Plasma::Dialog *dialog = dialogPtr.data();
if (!dialog) {
q->setFocus(Qt::ShortcutFocusReason);
if (!fromActivatedSignal) {
QObject::disconnect(q, SIGNAL(activate()), q, SLOT(appletActivated()));
emit q->activate();
QObject::connect(q, SIGNAL(activate()), q, SLOT(appletActivated()));
}
return;
}
if (!q->view()) {
return;
}
if (dialog->isVisible()) {
if (q->location() != Floating) {
dialog->animatedHide(locationToInverseDirection(q->location()));
} else {
dialog->hide();
}
dialog->clearFocus();
} else {
if (q->graphicsWidget() &&
q->graphicsWidget() == static_cast<Applet*>(q)->d->extender.data() &&
static_cast<Applet*>(q)->d->extender.data()->isEmpty()) {
// we have nothing to show, so let's not.
if (!fromActivatedSignal) {
QObject::disconnect(q, SIGNAL(activate()), q, SLOT(appletActivated()));
emit q->activate();
QObject::connect(q, SIGNAL(activate()), q, SLOT(appletActivated()));
}
return;
}
ToolTipManager::self()->hide(q);
showDialogTimer.start(0, q);
}
}
void PopupAppletPrivate::showDialog()
{
Plasma::Dialog *dialog = dialogPtr.data();
if (!dialog) {
return;
}
updateDialogPosition();
KWindowSystem::setOnAllDesktops(dialog->winId(), true);
KWindowSystem::setState(dialog->winId(), NET::SkipTaskbar | NET::SkipPager);
if (icon) {
dialog->setAspectRatioMode(savedAspectRatio);
}
if (q->location() != Floating) {
dialog->animatedShow(locationToDirection(q->location()));
} else {
dialog->show();
}
if (!(dialog->windowFlags() & Qt::X11BypassWindowManagerHint)) {
KWindowSystem::activateWindow(dialog->winId());
}
}
void PopupAppletPrivate::hideTimedPopup()
{
autohideTimer->stop();
q->hidePopup();
}
void PopupAppletPrivate::clearPopupLostFocus()
{
if (!icon || !icon->isDown()) {
q->hidePopup();
}
popupLostFocus = false;
}
KConfigGroup PopupAppletPrivate::popupConfigGroup()
{
KConfigGroup *mainGroup = static_cast<Applet*>(q)->d->mainConfigGroup();
return KConfigGroup(mainGroup, "PopupApplet");
}
void PopupAppletPrivate::dialogSizeChanged()
{
//Reposition the dialog
Plasma::Dialog *dialog = dialogPtr.data();
if (dialog) {
KConfigGroup sizeGroup = popupConfigGroup();
sizeGroup.writeEntry("DialogHeight", dialog->height());
sizeGroup.writeEntry("DialogWidth", dialog->width());
updateDialogPosition(!dialog->isUserResizing());
emit q->configNeedsSaving();
emit q->appletTransformedByUser();
}
}
void PopupAppletPrivate::dialogStatusChanged(bool shown)
{
if (shown) {
preShowStatus = q->status();
q->setStatus(NeedsAttentionStatus);
QObject::connect(q, SIGNAL(newStatus(Plasma::ItemStatus)),
q, SLOT(statusChangeWhileShown(Plasma::ItemStatus)),
Qt::UniqueConnection);
} else {
QObject::disconnect(q, SIGNAL(newStatus(Plasma::ItemStatus)),
q, SLOT(statusChangeWhileShown(Plasma::ItemStatus)));
q->setStatus(preShowStatus);
}
q->popupEvent(shown);
}
void PopupAppletPrivate::statusChangeWhileShown(Plasma::ItemStatus status)
{
preShowStatus = status;
}
void PopupAppletPrivate::createIconWidget()
{
if (icon) {
return;
}
icon = new Plasma::IconWidget(q);
QObject::connect(icon, SIGNAL(clicked()), q, SLOT(internalTogglePopup()));
QGraphicsLinearLayout *layout = new QGraphicsLinearLayout();
layout->setContentsMargins(0, 0, 0, 0);
layout->setSpacing(0);
layout->setOrientation(Qt::Horizontal);
layout->addItem(icon);
layout->setAlignment(icon, Qt::AlignCenter);
q->setLayout(layout);
}
void PopupAppletPrivate::restoreDialogSize()
{
Plasma::Dialog *dialog = dialogPtr.data();
if (!dialog) {
return;
}
Corona *corona = qobject_cast<Corona *>(q->scene());
if (!corona) {
return;
}
KConfigGroup sizeGroup = popupConfigGroup();
int preferredWidth = 0;
int preferredHeight = 0;
QGraphicsWidget *gWidget = dialog->graphicsWidget();
if (gWidget) {
preferredWidth = gWidget->preferredSize().width();
preferredHeight = gWidget->preferredSize().height();
}
const int width = qMin(sizeGroup.readEntry("DialogWidth", preferredWidth),
corona->screenGeometry(-1).width() - 50);
const int height = qMin(sizeGroup.readEntry("DialogHeight", preferredHeight),
corona->screenGeometry(-1).height() - 50);
QSize saved(width, height);
if (saved.isNull()) {
saved = dialog->sizeHint();
} else {
saved = saved.expandedTo(dialog->minimumSizeHint());
}
if (saved.width() != dialog->width() || saved.height() != dialog->height()) {
dialog->resize(saved);
/*if (gWidget) {
gWidget->resize(saved);
}*/
}
}
void PopupAppletPrivate::updateDialogPosition(bool move)
{
Plasma::Dialog *dialog = dialogPtr.data();
if (!dialog) {
return;
}
Corona *corona = qobject_cast<Corona *>(q->scene());
if (!corona) {
return;
}
QGraphicsView *view = q->view();
if (!view) {
return;
}
const QPoint appletPos = view->mapToGlobal(view->mapFromScene(q->scenePos()));
- QPoint dialogPos;
- if (!q->containment() || view == q->containment()->view()) {
- kDebug() << "requesting with" << q->scenePos();
- dialogPos = corona->popupPosition(q, dialog->size(), popupAlignment);
- } else {
- kDebug() << "requesting with" << q->parentItem();
- dialogPos = corona->popupPosition(q->parentItem(), dialog->size(), popupAlignment);
+ QPoint dialogPos = dialog->pos();
+ if (move) {
+ if (!q->containment() || view == q->containment()->view()) {
+ dialogPos = corona->popupPosition(q, dialog->size(), popupAlignment);
+ } else {
+ dialogPos = corona->popupPosition(q->parentItem(), dialog->size(), popupAlignment);
+ }
}
- kDebug() << "dialog position is" << dialogPos <<" with location" << q->location() << "<<<<<<<<<<<<<<<<<<<<<<<<";
bool reverse = false;
if (q->formFactor() == Plasma::Vertical) {
reverse = (appletPos.y() + (q->size().height() / 2)) < (dialogPos.y() + (dialog->size().height() / 2));
dialog->setMinimumResizeLimits(-1, appletPos.y(), -1, appletPos.y() + q->size().height());
} else {
reverse = (appletPos.x() + (q->size().width() / 2)) < (dialogPos.x() + (dialog->size().width() / 2));
dialog->setMinimumResizeLimits(appletPos.x(), -1, appletPos.x() + q->size().width(), -1);
}
Dialog::ResizeCorners resizeCorners = Dialog::NoCorner;
switch (q->location()) {
case BottomEdge:
resizeCorners = Dialog::NorthEast | Dialog::NorthWest;
popupPlacement = reverse ? TopPosedLeftAlignedPopup : TopPosedRightAlignedPopup;
break;
case TopEdge:
resizeCorners = Dialog::SouthEast | Dialog::SouthWest;
popupPlacement = reverse ? Plasma::BottomPosedLeftAlignedPopup : Plasma::BottomPosedRightAlignedPopup;
break;
case LeftEdge:
resizeCorners = Dialog::SouthEast | Dialog::NorthEast;
popupPlacement = reverse ? RightPosedTopAlignedPopup : RightPosedBottomAlignedPopup;
break;
case RightEdge:
resizeCorners = Dialog::SouthWest | Dialog::NorthWest;
popupPlacement = reverse ? LeftPosedTopAlignedPopup : LeftPosedBottomAlignedPopup;
break;
default:
popupPlacement = FloatingPopup;
resizeCorners = Dialog::All;
break;
}
dialog->setResizeHandleCorners(resizeCorners);
if (move) {
dialog->move(dialogPos);
}
}
} // Plasma namespace
#include "popupapplet.moc"
diff --git a/plasma/tests/packagemetadatatest.desktop b/plasma/tests/packagemetadatatest.desktop
index 069943718a..793f65ca04 100644
--- a/plasma/tests/packagemetadatatest.desktop
+++ b/plasma/tests/packagemetadatatest.desktop
@@ -1,161 +1,163 @@
[Desktop Entry]
Name=Package metadata test file
Name[ar]=ملف اختبار البيانات الوصفية للحزمة
Name[as]=সৰঞ্জাম মিটাডাটাৰ পৰীক্ষাৰ নথিপত্ৰ
Name[ast]=Ficheru de prueba de metadatos de paquete
Name[be@latin]=Fajł spraŭdžvańnia metaźviestak pakunka
Name[bg]=Пробен файл за пакетни метаданни
Name[bs]=Test datoteka paketa metapodataka
Name[ca]=Fitxer de proves de metadades de paquet
Name[ca@valencia]=Fitxer de proves de metadades de paquet
Name[cs]=Testovací soubor metadat balíčku
Name[da]=Testfil til pakke-metadata
Name[de]=Testdatei für Paket-Metadaten
Name[el]=Δοκιμαστικό αρχείο μεταδεδομένων του πακέτου
Name[en_GB]=Package metadata test file
Name[eo]=Pakaĵa meta-datuma testdosiero
Name[es]=Archivo de pruebas de metadatos de paquete
Name[et]=Plasma metaandmete testfail
Name[eu]=Paketeen metadatuen proba fitxategia
Name[fi]=Pakettimetatietojen testitiedosto
Name[fr]=Fichier de test des métadonnées de paquetage
Name[fy]=Package metadata testtriem
Name[ga]=Comhad tástála le haghaidh PackageMetaData
Name[gl]=Ficheiro de proba de metadatos de paquete
Name[gu]=પેકેજ મેટાડેટા ચકાસણી ફાઇલ
Name[he]=חבילת בדיקה של מטה־מידע
Name[hne]=पैकेज मेटाडाटा जांच फाइल
Name[hr]=Paketna, metapodatkovna, probna datoteka
Name[hsb]=Testowa dataja za metadata pakćika
Name[hu]=PackageMetaData tesztfájl
Name[ia]=File de prova del pacchetto metadata
Name[id]=Berkas tes metadata paket
Name[is]=Package metagagna prófunarskrá
Name[it]=File di prova metadati pacchetto
Name[ja]=パッケージメタデータテストファイル
Name[kk]=Десте метадеректер сынақ файлы
Name[km]=ឯកសារ​សាកល្បង​ទិន្នន័យ​មេតា​កញ្ចប់
Name[kn]=ಕಂತೆ (ಪ್ಯಾಕೇಜ್) ಪ್ರದತ್ತ (ಮೆಟಾಡಾಟಾ) ಪರೀಕ್ಷಣಾ ಕಡತ
Name[ko]=패키지 메타데이터 테스트 파일
Name[ku]=Pela ceribandinê ya serdana yê pakêtê
Name[lt]=Paketo metaduomenų bandomasis failas
Name[lv]=Pakotņu metadatu testa fails
Name[mai]=संकुलक मेटाडाटा जाँचि फाइल
Name[ml]=പാക്കേജ് മെറ്റാഡാറ്റാ പരിശോധനാ ഫയല്‍
Name[nb]=Testfil for Package metadata
Name[nds]=Paketmetadaten-Testdatei
Name[nl]=Testbestand voor pakketmetadata
Name[nn]=Testfil for pakkemetadata
Name[pa]=ਪੈਕੇਜ ਮੇਟਾਡਾਟਾ ਟੈਸਟ ਫਾਇਲ
Name[pl]=Plik tekstowy metadanych pakietu
Name[pt]=Ficheiro de testes de meta-dados dos pacotes
Name[pt_BR]=Arquivo de teste dos metadados do pacote
Name[ro]=Fișier de testat metadatele pachetelor
Name[ru]=Тестовый файл метаданных пакета
Name[se]=Páhkametedáhtaid geahččalanfiila
Name[sk]=Testovací súbor metadát balíčku
Name[sl]=Datoteka za test metapodatkov paketa
Name[sr]=Пробни фајл метаподатака пакета
Name[sr@ijekavian]=Пробни фајл метаподатака пакета
Name[sr@ijekavianlatin]=Probni fajl metapodataka paketa
Name[sr@latin]=Probni fajl metapodataka paketa
Name[sv]=Testfil för paketmetadata
Name[ta]=பொதியின் மூலத்தரவு சோதனைக் கோப்பு
Name[tg]=Файли санҷишии стсетмаи metadata
Name[th]=แฟ้มทดสอบข้อมูลกำกับแพกเกจ
Name[tr]=Paket metadata test dosyası
-Name[ug]=بوغچا مېتا سانلىق-مەلۇمات سىناق ھۆججەت
+Name[ug]=بوغچا مېتا سانلىق مەلۇمات سىناق ھۆججەت
Name[uk]=Файл перевірки метаданих пакунка
+Name[vi]=Tập tin kiểm tra dữ liệu lý lịch Plasma
Name[wa]=Fitchî d' asprouvaedje des meta-dnêyes do pacaedje
Name[x-test]=xxPackage metadata test filexx
Name[zh_CN]=工具包元数据测试文件
Name[zh_TW]=套件中繼資料測試檔
Comment=A test desktop file to test the PackageMetaData class.
Comment[ar]=ملف اختبار سطح المكتب لاختبار صف PackageMetaData
Comment[as]=PackageMetaData class পৰীক্ষা কৰিবলৈ এটা ডেষ্কট'প পৰীক্ষাৰ নথিপত্ৰ ।
Comment[ast]=Un ficheru d'escritoriu de prueba pa comprobar la clase PackageMetaData.
Comment[be@latin]=Testavy fajł rabočaha stała dla spraŭdžvańnia klasy „PackageMetaData”.
Comment[bg]=Пробен файл за работиня плот за тестване на класа PackageMetaData
Comment[bs]=Probna .desktop datoteka za klasu PackageMetaData.
Comment[ca]=Un fitxer d'escriptori de proves per provar la classe PackageMetaData.
Comment[ca@valencia]=Un fitxer d'escriptori de proves per provar la classe PackageMetaData.
Comment[cs]=Testovací soubor plochy pro otestování třídy PackageMetaData.
Comment[da]=En desktop-testfil til test af PackageMetaData-klassen.
Comment[de]=Eine Test-Desktop-Datei zum Testen der Klasse „PackageMetaData“.
Comment[el]=Ένα δοκιμαστικό αρχείο desktop για τον έλεγχο τς κλάσης PackageMetaData.
Comment[en_GB]=A test desktop file to test the PackageMetaData class.
Comment[eo]=Testa tabula dosiero por testi la klason PackageMetaData.
Comment[es]=Un archivo de escritorio para probar la clase PackageMetaData.
Comment[et]=Testtöölauafail klassi PackageMetaData testimiseks.
Comment[eu]=PackageMetaData klasea probatzeko probako mahaigain fitxategia.
Comment[fi]=Kokeellinen työpöytätiedosto PackageMetaData-luokan testaamiseen.
Comment[fr]=Un fichier de bureau de démonstration pour tester la classe PackageMetaData.
Comment[fy]=In test burblêdtriem om de PackageMetaData class te testen.
Comment[ga]=Comhad tástála deisce a úsáidtear chun aicme PackageMetaData a thástáil.
Comment[gl]=Un ficheiro de escritorio de proba para probar a clase PackageMetaData.
Comment[gu]=પેકેજમેટાડેટા વર્ગ ચકાસવા માટે ચકાસણી ડેસ્કટોપ ફાઇલ.
Comment[he]=קובץ desktop לבדיקה של מחלקה PackageMetaData.
Comment[hne]=पैकेज मेटाडाटा क्लास ल जांचे बर जांच डेस्कटाप फाइल
Comment[hr]=Probna desktop datoteka za isprobavanje klase PackageMetaData.
Comment[hsb]=Testowa dataja za dźěłowy powjerch za testowanje klasy PackageMetaData.
Comment[hu]=Tesztfájl a PackageMetaData osztályhoz.
Comment[ia]=Un file de prova del scriptorio pro provar le classe PackageMetaData.
Comment[id]=Berkas destop tes untuk menguji kelas PackageMetaData.
Comment[is]=Skjáborðsskrá til prófunar á PackageMetaData class
Comment[it]=Un file desktop di prova per verificare la classe PackageMetaData.
Comment[ja]=PackageMetaData クラスをテストするためのテストデスクトップファイル。
Comment[kk]=PackageMetaData класын сынайтын desktop сынақ файлы.
Comment[km]=ឯកសារ​ផ្ទៃតុ​សាកល្បង​ ដើម្បី​សាកល្បង​ថ្នាក់​របស់ PackageMetaData ។
Comment[kn]=PackageMetaData ವರ್ಗವನ್ನು ಪರೀಕ್ಷಿಸಲು ಒಂದು ಪರೀಕ್ಷಾರ್ಥ ಗಣಕತೆರೆ ಕಡತ.
Comment[ko]=PackageMetaData 클래스를 테스트하는 데스크톱 파일.
Comment[ku]=Pela ceribandina sermasê ku beşên SerDanayêPakêtê diceribîne.
Comment[lt]=Bandomasis desktop failas skirtas PackageMetaData klasei.
Comment[lv]=Testa .dekstop fails, lai pārbaudītu PackageMetaData klasi.
Comment[mai]=PackageMetaData वर्गक जाँचबाक लेल एकटा जाँचि डेस्कटाप फाइल.
Comment[ml]=പാക്കേജ്മെറ്റാഡാറ്റാ ക്ലാസ് പരിശോധിയ്ക്കാനുള്ള പരിശോധനാ പണിയിട ഫയല്‍.
Comment[nb]=En skrivebordsfil med testdata for klassen PackageMetaData.
Comment[nds]=En Test-Schriefdischdatei för't Utproberen vun de Klass "PackageMetaData".
Comment[nl]=Een desktop-bestand voor het testen van de PackageMetaData-klasse.
Comment[nn]=Ei .desktop-fil for testing av PackageMetaData-klassen.
Comment[pa]=PackageMetaData ਕਲਾਸ ਟੈਸਟ ਕਰਨ ਲਈ ਟੈਸਟ ਡੈਸਕਟਾਪ ਫਾਇਲ
Comment[pl]=Plik testowy desktop do testowania klasy PackageMetaData.
Comment[pt]=Um ficheiro 'desktop' de testes da classe PackageMetaData.
Comment[pt_BR]=Um arquivo desktop de testes para a classe PackageMetaData.
Comment[ro]=Un fișier de probă pentru a verifica clasa PackageMetadata.
Comment[ru]=Тестовый файл .desktop для проверки класса PackageMetaData.
Comment[se]=Geahččalan desktop-fiilla mainna geahččala PackageMeta-luohká.
Comment[sk]=Testovací súbor plochy na testovanie triedy PackageMetaData.
Comment[sl]=Namizna datoteka za test razreda PackageMetaData.
Comment[sr]=Пробни .десктоп фајл за класу PackageMetaData.
Comment[sr@ijekavian]=Пробни .десктоп фајл за класу PackageMetaData.
Comment[sr@ijekavianlatin]=Probni .desktop fajl za klasu PackageMetaData.
Comment[sr@latin]=Probni .desktop fajl za klasu PackageMetaData.
Comment[sv]=En skrivbordsfil för att testa klassen PackageMetaData.
Comment[ta]=PackageMetaData class தனை சோதிப்பதற்கான சோதனை திரைமேசைக் கோப்பு.
Comment[tg]=Файли санҷишии мизи корӣ барои санҷиши системаи PackageMetaData.
Comment[th]=แฟ้มทดสอบพื้นที่ทำงาน สำหรับทดสอบคลาส PackageMetaData
Comment[tr]=PackageMetaData sınıfını test etmek için bir desktop dosyası.
Comment[ug]=PackageMetaData خىلىدىكى سىناشقا ئىشلىتىدىغان desktop تىپىدىكى ھۆججەت.
Comment[uk]=Тестовий стільничний файл для перевірки класу PackageMetaData.
+Comment[vi]=Một tập tin thử để kiểm tra lớp PackageMetaData.
Comment[wa]=On fitchî desktop di saye pos asprouver l' classe PackageMetaData.
Comment[x-test]=xxA test desktop file to test the PackageMetaData class.xx
Comment[zh_CN]=用于测试 PackageMetaData 类的 desktop 类型文件。
Comment[zh_TW]=測試 PackageMetaData 類別的桌面檔
Icon=test
Type=Service
X-KDE-ServiceTypes=Plasma/Applet
X-KDE-Screenshot=a_not_default_file.svg
X-KDE-Library=some_test_library
X-KDE-PluginInfo-Author=Bertjan Broeksema
X-KDE-PluginInfo-Email=b.broeksema@kdemail.net
X-KDE-PluginInfo-Name=test
X-KDE-PluginInfo-Version=pre0.1
X-KDE-PluginInfo-Website=http://plasma.kde.org/
X-KDE-PluginInfo-Category=System test
X-KDE-PluginInfo-Depends=some_test_dep
X-KDE-PluginInfo-License=GPL
X-KDE-PluginInfo-EnabledByDefault=true
X-KDE-ParentApp=A Test name
diff --git a/plasma/tests/testcontainmentactionsplugin/plasma-containmentactions-test.desktop b/plasma/tests/testcontainmentactionsplugin/plasma-containmentactions-test.desktop
index 87582b8d9c..6d12204b88 100644
--- a/plasma/tests/testcontainmentactionsplugin/plasma-containmentactions-test.desktop
+++ b/plasma/tests/testcontainmentactionsplugin/plasma-containmentactions-test.desktop
@@ -1,122 +1,124 @@
[Desktop Entry]
Name=Test
Name[bg]=Проба
Name[bs]=Test
Name[ca]=Prova
Name[ca@valencia]=Prova
Name[cs]=Test
Name[da]=Test
Name[de]=Test
Name[el]=Δοκιμή
Name[en_GB]=Test
Name[es]=Prueba
Name[et]=Test
Name[eu]=Proba
Name[fa]=آزمون
Name[fi]=Testi
Name[fr]=Test
Name[gl]=Proba
Name[hr]=Test
Name[hu]=Teszt
Name[ia]=Essayo
Name[is]=Prófun
Name[it]=Prova
Name[ja]=テスト
Name[kk]=Сынақ
Name[km]=សាកល្បង
Name[ko]=테스트
Name[ku]=Bicaribîne
Name[lt]=Testas
Name[lv]=Tests
Name[nb]=Test
Name[nds]=Utproberen
Name[nl]=Test
Name[pa]=ਟੈਸਟ
Name[pl]=Test
Name[pt]=Teste
Name[pt_BR]=Teste
Name[ro]=Test
Name[ru]=Проверка
Name[se]=Geahččaleapmi
Name[si]=පරීක්‍ෂණය
Name[sk]=Test
Name[sr]=Проба
Name[sr@ijekavian]=Проба
Name[sr@ijekavianlatin]=Proba
Name[sr@latin]=Proba
Name[sv]=Test
Name[th]=ทดสอบ
Name[tr]=Deneme
-Name[ug]=سىناق
+Name[ug]=سىنا
Name[uk]=Тест
+Name[vi]=Kiểm tra
Name[wa]=Sayî
Name[x-test]=xxTestxx
Name[zh_CN]=测试
Name[zh_TW]=測試
Comment=A dummy plugin for testing
Comment[bg]=Празна приставка за изпробване
Comment[bs]=Lažni priključak za probe
Comment[ca]=Un connector fals per a provar
Comment[ca@valencia]=Un connector fals per a provar
Comment[cs]=Prázdný zásuvný modul pro testování
Comment[da]=Et attrap-plugin til testformål
Comment[de]=Ein Dummy-Modul zum Testen.
Comment[el]=Ένα "χαζό" πρόσθετο για δοκιμές
Comment[en_GB]=A dummy plugin for testing
Comment[es]=Un complemento de pruebas
Comment[et]=Libaplugin testimiseks
Comment[eu]=Probatarako gezurretazko plugin bat
Comment[fi]=Tyhjä testausliitännäinen
Comment[fr]=Un module factice de test
Comment[gl]=Un engadido para probas
Comment[hr]=Lažan priključak za testiranje
Comment[hu]=Üres bővítmény teszteléshez
Comment[ia]=Un plugin vacue pro essayar
Comment[is]=Tilraunaíforrit fyrir prófanir
Comment[it]=Una estensione fittizia di prova
Comment[ja]=テスト用のダミープラグイン
Comment[kk]=Сынақ үшін бос плагині
Comment[km]=កម្មវិធី​ជំនួយ​ដំបូង​សម្រាប់​សាកល្បង
Comment[ko]=테스트를 위한 뼈대 플러그인
Comment[ku]=Pêvekekî hêsan ji bo ceribandinê
Comment[lt]=Netikras priedas testavimui
Comment[lv]=Testēšanai paredzēts spraudnis
Comment[nb]=Et attrapp-programtillegg for testing
Comment[nds]=En Platzholler-Moduul för't Utproberen
Comment[nl]=Een dummy plugin voor testen
Comment[pa]=ਟੈਸਟ ਕਰਨ ਲਈ ਫਰਜ਼ੀ ਪਲੱਗਇਨ
Comment[pl]=Prosta wtyczka testowa
Comment[pt]=Um 'plugin' de exemplo para testes
Comment[pt_BR]=Um plug-in fictício para testes
Comment[ro]=Modul fictiv pentru testare
Comment[ru]=Расширение для тестирования
Comment[se]=Geahččalanlassemodula
Comment[sk]=Ukážkový modul pre testovanie
Comment[sr]=Лажни прикључак за пробе
Comment[sr@ijekavian]=Лажни прикључак за пробе
Comment[sr@ijekavianlatin]=Lažni priključak za probe
Comment[sr@latin]=Lažni priključak za probe
Comment[sv]=Ett exempelinsticksprogram för test
Comment[th]=โปรแกรมเสริมเทียมสำหรับทดสอบ
Comment[tr]=Denemek için sahte bir eklenti
Comment[ug]=سىناشقا ئىشلىتىدىغان قىستۇرما
Comment[uk]=Додаток для тестування
+Comment[vi]=Một phần bổ sung giả để kiểm thử
Comment[wa]=On fås tchôke-divins po l' asprouvaedje
Comment[x-test]=xxA dummy plugin for testingxx
Comment[zh_CN]=测试用插件
Comment[zh_TW]=測試用外掛程式
Type=Service
Icon=preferences-desktop-color
ServiceTypes=Plasma/ContainmentActions
X-KDE-Library=plasma_containmentactions_test
X-KDE-PluginInfo-Author=Chani
X-KDE-PluginInfo-Email=chani@kde.org
X-KDE-PluginInfo-Name=test
X-KDE-PluginInfo-Version=pre0.1
X-KDE-PluginInfo-Website=http://plasma.kde.org/
X-KDE-PluginInfo-Depends=
X-KDE-PluginInfo-License=GPL
X-KDE-PluginInfo-EnabledByDefault=true
X-Plasma-HasConfigurationInterface=true
diff --git a/plasma/tests/testengine/plasma-dataengine-testengine.desktop b/plasma/tests/testengine/plasma-dataengine-testengine.desktop
index 734aadfe68..feadb0ade0 100644
--- a/plasma/tests/testengine/plasma-dataengine-testengine.desktop
+++ b/plasma/tests/testengine/plasma-dataengine-testengine.desktop
@@ -1,80 +1,81 @@
[Desktop Entry]
Name=Test Data Engine
Name[ar]=محرك بيانات الاختبار
Name[as]=পৰীক্ষা তথ্যৰ কলঘৰ
Name[ast]=Motor de datos de prueba
Name[be@latin]=Systema spraŭdžvańnia dla źviestak
Name[bg]=Пробно ядро за данни
Name[bn]=টেস্ট ডাটা ইঞ্জিন
Name[bs]=Probni pogon za podatke
Name[ca]=Motor de dades de prova
Name[ca@valencia]=Motor de dades de prova
Name[cs]=Testovací datový nástroj
Name[da]=Test datamotor
Name[de]=Test-Datenmodul
Name[el]=Μηχανή δεδομένων ελέγχου
Name[en_GB]=Test Data Engine
Name[eo]=Testa Datuma motoro
Name[es]=Motor de datos de prueba
Name[et]=Testandmemootor
Name[eu]=Proba datuen motorra
Name[fi]=Testitietomoottori
Name[fr]=Moteur de données de test
Name[fy]=Test gegevensmotor
Name[ga]=Inneall Sonraí Tástála
Name[gl]=Motor de datos de probas
Name[gu]=ચકાસણી માહિતી એન્જિન
Name[he]=בדיקה למנוע מידע
Name[hne]=जांच डाटा इंजिन
Name[hr]=Provjeri podatkovni mehanizam
Name[hsb]=Test Data Engine
Name[hu]=Az adatkezelő modul tesztje
Name[ia]=Motor del essayo de datos
Name[id]=Mesin Data Tes
Name[is]=Gagnaprófunarvél
Name[it]=Motore dati di prova
Name[ja]=テストデータエンジン
Name[kk]=Сынақ деректер тетігі
Name[km]=សាកល្បង​ម៉ាស៊ីន​ទិន្នន័យ
Name[kn]=ಪರೀಕ್ಷಾ ದತ್ತ ಯಂತ್ರ
Name[ko]=테스트 데이터 엔진
Name[ku]=Motora Dane Ceribandinê
Name[lt]=Bandomasis duomenų variklis
Name[lv]=Testēšanas datu dzinējs
Name[mai]=जाँचि डाटा इंडन
Name[ml]=പരിശോധനാ ഡാറ്റാ എഞ്ചിന്‍
Name[nb]=Testdata-motor
Name[nds]=Test-Datenkarn
Name[nl]=Testgegevensengine
Name[nn]=Testdatamotor
Name[pa]=ਟੈਸਟ ਡਾਟਾ ਇੰਜਣ
Name[pl]=Silnik testów danych
Name[pt]=Motor de Dados de Teste
Name[pt_BR]=Mecanismo de dados de teste
Name[ro]=Motor de date pentru teste
Name[ru]=Тестовый источник данных
Name[se]=Geahččalandáhtamohtor
Name[si]=පරීක්‍ෂණ දත්ත එන්ජිම
Name[sk]=Testovací dátový nástroj
Name[sl]=Preizkusni pogon s podatki
Name[sq]=Motor i Testimit të të Dhënave
Name[sr]=пробни датомотор података
Name[sr@ijekavian]=пробни датомотор података
Name[sr@ijekavianlatin]=probni datomotor podataka
Name[sr@latin]=probni datomotor podataka
Name[sv]=Testdatagränssnitt
Name[ta]=சோதனை தரவு இயந்திரம்
Name[tg]=Системаи санҷиши маълумот
Name[th]=กลไกทดสอบข้อมูล
Name[tr]=Test Veri Motoru
Name[ug]=سىناققا ئىشلىتىدىغان ماتور
Name[uk]=Перевірка рушія даних
+Name[vi]=Cơ chế kiểm tra dữ liệu
Name[wa]=Moteur di dnêyes d' asprouvaedje
Name[x-test]=xxTest Data Enginexx
Name[zh_CN]=测试用数据引擎
Name[zh_TW]=測試資料引擎
X-KDE-ServiceTypes=Plasma/DataEngine
Type=Service
Icon=unknown
X-KDE-Library=plasma_engine_testengine
X-Plasma-EngineName=testengine
diff --git a/security/crypto/crypto.desktop b/security/crypto/crypto.desktop
index 68f3b2903b..3d34da5396 100644
--- a/security/crypto/crypto.desktop
+++ b/security/crypto/crypto.desktop
@@ -1,212 +1,202 @@
[Desktop Entry]
Icon=preferences-desktop-cryptography
Type=Service
X-KDE-ServiceTypes=KCModule
Exec=kcmshell4 crypto
X-DocPath=kcontrol/crypto/index.html
X-KDE-Library=kcm_crypto
X-KDE-ParentApp=kcontrol
Name=Crypto
Name[af]=Crypto
Name[ar]=التشفير
Name[as]=Crypto
Name[ast]=Cifráu
Name[be@latin]=Šyfravańnie
Name[bg]=Шифриране
Name[bn]=ক্রিপ্টো
Name[bn_IN]=Crypto
Name[bs]=Šifrovanje
Name[ca]=Criptografia
Name[ca@valencia]=Criptografia
Name[cs]=Šifrování
Name[csb]=Crypto
Name[da]=Kryptering
Name[de]=Krypto
Name[el]=Κρυπτογράφηση
Name[en_GB]=Crypto
Name[eo]=Crypto
Name[es]=Criptografía
Name[et]=Krüpto
Name[eu]=Kriptografia
Name[fa]=رمز
Name[fi]=Salaukset
Name[fr]=Chiffrement
Name[fy]=Crypto
Name[ga]=Crypto
Name[gl]=Criptografía
Name[gu]=ક્રાય્પ્ટો
Name[he]=הצפנה
Name[hi]=क्रिप्टो
Name[hne]=क्रिप्टो
Name[hr]=Crypto
Name[hsb]=Crypto
Name[hu]=Titkosítás
Name[ia]=Crypto
Name[id]=Crypto
Name[is]=Dulkóðun
Name[it]=Crittografia
Name[ja]=暗号
Name[kk]=Crypto
Name[km]=Crypto
Name[kn]=ಕ್ರಿಪ್ಟೋ
Name[ko]=암호화
Name[ku]=Veşartî
Name[lt]=Šifravimas
Name[lv]=Kriptogrāfija
Name[mai]=क्रिप्टो
Name[mk]=Криптографија
Name[ml]=ക്രിപ്റ്റോ
Name[mr]=क्रिप्टो
Name[nb]=Kryptering
Name[nds]=Crypto
Name[ne]=गुप्त
Name[nl]=Crypto
Name[nn]=Kryptotenester
Name[or]=ଗୁପ୍ତ
Name[pa]=ਕਰਿਪਟੂ
Name[pl]=Kryptografia
Name[pt]=Cifra
Name[pt_BR]=Criptografia
Name[ro]=Cripto
Name[ru]=Шифрование
Name[se]=Krypteren
Name[si]=Crypto
Name[sk]=Šifrovanie
Name[sl]=Šifriranje
Name[sq]=Crypto
Name[sr]=Шифровање
Name[sr@ijekavian]=Шифровање
Name[sr@ijekavianlatin]=Šifrovanje
Name[sr@latin]=Šifrovanje
Name[sv]=Krypto
Name[ta]=Crypto
Name[tg]=Рамзгузорӣ
Name[th]=การเข้ารหัส
Name[tr]=Şifreleme
Name[ug]=شىفىرلا
Name[uk]=Шифрування
Name[vi]=Mật mã
Name[wa]=Criptografeye
Name[x-test]=xxCryptoxx
Name[zh_CN]=加密算法
Name[zh_TW]=Crypto
Comment=Configure SSL, manage certificates, and other cryptography settings
Comment[af]=Konfigureer SSL, hanteer sertifikate, en ander kriptografieverstellings
Comment[ar]=اضبط SSL، وأدر الشهادات وإعدادات تشفير أخرى
Comment[as]=SSL বিন্যাস কৰক, প্ৰমাণপত্ৰ পৰিচালনা কৰক, আৰু অন্যান্য ক্ৰিপ্টোগ্ৰাফিৰ পছন্দ
Comment[ast]=Configurar SSL, xestionar certificaos, y otros axustes criptográficos
Comment[be@latin]=Naładžvaje SSL, kiruje sertyfikatami, inšyja nałady šyfravańnia
Comment[bg]=SSL, управление на сертификати и други настройки за шифроване
Comment[bn]=এস-এস-এল কনফিগারেশন, সার্টিফিকেট তত্বাবধান, এবং অন্যান্য ক্রিপ্টোগ্রাফি সেটিংস
Comment[bn_IN]=SSL কনফিগারেশন, সার্টিফিকেট পরিচালনা ও ক্রিপ্টোগ্রাফি সংক্রান্ত বিবিধ বৈশিষ্ট্য কনফিগার করুন
Comment[bs]=Podešavanje SSL‑a, upravljanje sertifikatima, i druge kriptografske postavke
Comment[ca]=Configura l'SSL, gestiona certificats, i altres arranjaments de criptografia
Comment[ca@valencia]=Configura l'SSL, gestiona certificats, i altres arranjaments de criptografia
Comment[cs]=Nastavení SSL, správa certifikátů a ostatní nastavení šifrování
Comment[csb]=Kònfigùracëjô SSL, sprôwianié certifikatama ë jinszëma ùstôwóma kriptografiji
Comment[da]=Konfigurér SSL, håndtér certifikater og andre kryptografiske indstillinger
Comment[de]=Einrichtung von SSL, Zertifikat-Verwaltung und weitere kryptografische Einstellungen
Comment[el]=Ρύθμιση SSL, διαχείριση πιστοποιητικών, και άλλες ρυθμίσεις κρυπτογραφίας
Comment[en_GB]=Configure SSL, manage certificates and other cryptography settings
Comment[eo]=Agordi SSLon, administri atestilojn, kaj aliajn kriptografiajn agordojn
Comment[es]=Configurar SSL, gestionar certificados y otras preferencias de criptografía
Comment[et]=SSL-i seadistamine, sertifikaatide haldamine ja muud krüptoseadistused
Comment[eu]=SSL konfiguratu, ziurtagiriak kudeatu eta bestelako kriptografiako ezarpenak
Comment[fa]=پیکربندی SSL، مدیریت گواهی‌نامه‌ها، و تنظیمات رمزنگاری دیگر
Comment[fi]=Muokkaa SSL-asetuksia ja hallitse varmenteita sekä muita salausasetuksia
Comment[fr]=Configure le chiffrement SSL, gère les certificats et autres paramètres liés au chiffrement
Comment[fy]=Stel SSL yn, behear sertifikaten en konfigurearje oare kryptografyske ynstellings
Comment[ga]=Cumraigh SSL, bainistigh teastais, agus socruithe cripteagrafaíochta eile
Comment[gl]=Configurar o SSL, xestionar os certificados e outras opcións de cifrado
Comment[gu]=SSL રુપરેખાંકન, પ્રમાણપત્ર સંચાલન અને અન્ય ક્રાય્પ્ટોગ્રાફી ગોઠવણીઓ કરો
Comment[he]=שינוי הגדרות SSL, ניהול תעודות והגדרות הצפנה אחרות
Comment[hi]=एसएसएल कॉन्फ़िगर, प्रमाणपत्र प्रबंधन, तथा अन्य क्रिप्टोग्राफ़िक सेटिंग
Comment[hne]=एसएसएल कान्फिगर, प्रमानपत्र प्रबंधन, अउ दुसरा क्रिप्टोग्राफी सेटिंग
Comment[hr]=Podešavanje SSL-a, upravljanje certifikatima i ostala kriptografska podešavanja
Comment[hsb]=Konfigurowanje SSL, zastaranje certifikatow a druhe kryptografiske nastajenja
Comment[hu]=SSL-beállítások, tanúsítványkezelés és további titkosítási lehetőségek
Comment[ia]=Configura SSL, manea certificatos e altere fixationes cryptographic
Comment[id]=Konfigurasi SSL, atur sertifikat, dan pengaturan kriptografi lainnya
Comment[is]=Stilla SSL, stýra skírteinum, og aðrar dulkóðunarstillingar
Comment[it]=Configura SSL, gestisce i certificati ed altre impostazioni di crittografia
Comment[ja]=SSL の設定、証明書の管理、その他の暗号作成形式の設定
Comment[kk]=SSL баптаулары, күаліктерді басқару және басқа криптография параметрлері
Comment[km]=កំណត់​រចនា​សម្ព័ន្ធ SSL, គ្រប់គ្រង​វិញ្ញាបនបត្រ និង​ការ​កំណត់​កូដសាស្ដ្រ
Comment[kn]=SSL ಅನ್ನು ಸಂರಚಿಸು, ಪ್ರಮಾಣಪತ್ರಗಳನ್ನು ನಿಭಾಯಿಸು, ಮತ್ತು ಇತರ ಗೂಢಲಿಪಿಶಾಸ್ತ್ರ (ಕ್ರಿಪ್ಟೋಗ್ರಫಿ) ಸಂಯೋಜನೆಗಳು
Comment[ko]=SSL과 같은 암호화를 설정하고, 인증서를 관리합니다
Comment[ku]=SSL, rêveberê belge kirinê, û mîhengên din yê bişîfre kirinê veava bike
Comment[lt]=Derina SSL, tvarko liudijimus ir kitus šifravimo parametrus
Comment[lv]=Konfigurēt SSL, pārvaldīt sertifikātus un citus kriptogrāfijas iestatījumus
Comment[mai]=एसएसएल बिन्यस्त करू, प्रमाणपत्र आओर आन क्रिप्टोग्राफिक सेटिंगक प्रबंधित करू
Comment[mk]=Конфигурација на SSL, менаџмент на сертификати\nи други криптографски поставувања
Comment[ml]=എസ്എസ്എല്‍ ക്രമീകരിയ്ക്കുക, സാക്ഷ്യപത്ര നടത്തിപ്പുകാരന്‍, പിന്നെ ക്രിപ്റ്റോഗ്രഫി സജ്ജീകരണം
Comment[mr]=SSL, प्रमाणपत्र प्रबंधन, तथा अन्य क्रिप्टोग्राफ़िक संयोजना संयोजीत करा
Comment[nb]=Oppsett av SSL, behandling av sertifikater og andre innstillinger for kryptering
Comment[nds]=SSL inrichten, Zertifikaten plegen un anner Verslötel-Instellen
Comment[ne]=SSL कन्फिगरेसन, प्रमाणपत्र प्रबन्ध, र अन्य गुप्तिकरण सेटिङ
Comment[nl]=Stel SSL in, beheer certificaten en configureer andere cryptografische instellingen
Comment[nn]=Set opp SSL, sertifikat og andre krypteringsinnstillingar
Comment[or]=SSL ବିନ୍ୟାସ କରନ୍ତୁ, ପ୍ରମାଣପତ୍ର ପରିଚାଳନ, ଏବଂ ଅନ୍ୟ ଗୁଢଲେଖନ ବିନ୍ୟାସଗୁଡିକ
Comment[pa]=SSL ਸੰਰਚਨਾ, ਸਰਟੀਫਿਕੇਟ ਪਰਬੰਧ, ਅਤੇ ਹੋਰ ਕਰਿਪਟੋਗਰਾਫ਼ੀ ਸੈਟਿੰਘ
Comment[pl]=Konfiguracja SSL, zarządzanie certyfikatami i inne ustawienia kryptografii
Comment[pt]=Configurar o SSL, gerir os certificados e outras opções de criptografia
Comment[pt_BR]=Configura SSL, gerencia certificados e outras configurações de criptografia
Comment[ro]=Configurează SSL, administrează certificate și alte setări criptografice
Comment[ru]=Настройка SSL, управление сертификатами и другие параметры криптографии
Comment[se]=Gieđahala SSL, sertifikáhtaid ja eará krypterenheivehusaid
Comment[si]=SSL සැකසීම, සහතික කළමණාකරනය සහ වෙනත් සංකේතාන්කන සැකසුම්
Comment[sk]=Nastavenie SSL, správa certifikátov a ostatné nastavenie šifrovania
Comment[sl]=Nastavljanje SSL, upravljanje s potrdili in ostale nastavitve šifriranja
Comment[sr]=Подешавање ССЛ‑а, управљање сертификатима, и друге криптографске поставке
Comment[sr@ijekavian]=Подешавање ССЛ‑а, управљање сертификатима, и друге криптографске поставке
Comment[sr@ijekavianlatin]=Podešavanje SSL‑a, upravljanje sertifikatima, i druge kriptografske postavke
Comment[sr@latin]=Podešavanje SSL‑a, upravljanje sertifikatima, i druge kriptografske postavke
Comment[sv]=Anpassa SSL, hantera certifikat och andra kryptografiska inställningar
Comment[ta]=SSL வடிவமைக்க, சான்றுகள் நிர்வகிக்க, மற்றும் ஏனைய உருமாற்ற அமைப்புகள்
Comment[tg]=Танзимоти SSL, идоракунии иҷозатномаҳо ва танзимотҳои рамзгузории дигар
-Comment[th]=ปรับแต่ง SSL, จัดการใบรับรอง, และการตั้งค่าเกี่ยวกับการเข้ารหัสอื่นๆ
+Comment[th]=ปรับแต่ง SSL, จัดการใบรับรอง, และการตั้งค่าเกี่ยวกับการเข้ารหัสอื่น ๆ
Comment[tr]=SSL yapılandırması, sertifika yönetimi ve diğer şifreleme ayarları
Comment[ug]=SSL سەپلىمە، گۇۋاھنامە باشقۇرۇش ۋە باشقا شىفىرلاش تەڭشىكى
Comment[uk]=Налаштування SSL, керування сертифікатами та інші параметри шифрування
Comment[vi]=Cấu hình SSL, quản lý chứng nhận và các thiết lập mật mã khác
Comment[wa]=Apontyî SSL, manaedjî les acertineures, eyet ds ôtes apontiaedjes del criptografeye
Comment[x-test]=xxConfigure SSL, manage certificates, and other cryptography settingsxx
Comment[zh_CN]=配置 SSL、管理证书及其它加密设置
Comment[zh_TW]=設定 SSL、管理憑證與其他加密設定
X-KDE-Keywords=Crypto,Krypto,Cryptography,encryption,SSL,https,certificates,ciphers,TLS,secure,security
-X-KDE-Keywords[ar]=Crypto,Krypto,Cryptography,encryption,SSL,https,certificates,ciphers,TLS,secure,security,كريبتو,تعمية,شهادات,شفرات,أمان
-X-KDE-Keywords[ca]=Crypto,Krypto,Criptografia,xifratge,SSL,https,certificats,xifres,TLS,assegurar,seguretat
-X-KDE-Keywords[de]=Crypto, Krypto, Kryptographie, Verschlüsselung, SSL, https, Zertifikate, Chiffren, TLS, sicher, Sicherheit
-X-KDE-Keywords[el]=Κρυπτογράφηση,Crypto,Krypto,Cryptography,encryption,SSL,https,certificates,πιστοποιητικά,ciphers,TLS,secure,security,ασφαλές,ασφάλεια
-X-KDE-Keywords[es]=Criptografía,cifrado,SSL,https,certificados,código,códigos,TLS,seguro,seguridad
-X-KDE-Keywords[et]=Krüpto,Krüptograafia,krüptimine,SSL,https,sertificaadid,šifrid,TLS,turvalisus
-X-KDE-Keywords[fa]=رمز، Krypto، رمزنگاری، رمزبندی، SSL، https، گواهی‌نامه‌ها، رمزها، TLS، امن، امنیت
-X-KDE-Keywords[ga]=Crypto,Krypto,cripteagrafaíocht,criptiú,SSL,https,teastais,sifir,TLS,daingean,slándáil
-X-KDE-Keywords[he]=הצפנה,SSL,https,תעודות,צפנים,TLS,אבטחה
-X-KDE-Keywords[hu]=titkosítás,Krypto,kriptográfia,titkosság,SSL,https,tanúsítványok,kódolók,TLS,adatbiztonság,biztonság
-X-KDE-Keywords[it]=Cifratura,Crittografia,,SSL,https,certificati,cifrari,TLS,sicuro,sicurezza
-X-KDE-Keywords[ja]=暗号化,Krypto,暗号作成形式,暗号化,SSL,http,証明書,暗号,TLS,セキュア,セキュリティ
-X-KDE-Keywords[ko]=암호화,보안,SSL,https,인증서,TLS
-X-KDE-Keywords[lt]=Crypto,Krypto,Cryptography,kriptografija,encryption,šifravimas,SSL,https,certificates,sertifikatai,ciphers,šifrai,TLS,secure,saugus,security,saugumas,apsauga
-X-KDE-Keywords[lv]=Kriptogrāfija,šifrēšana,SSL,https,sertifikāti,čiperi,TLS,drošs,drošība
-X-KDE-Keywords[nb]=Crypto,Krypto,Kryptografi,kryptering,SSL,https,sertifikater,chifre,TLS,sikker,sikkerhet
-X-KDE-Keywords[nds]=Crypto,Krypto,Kryptografie,Verslöteln,SSL,https,Zertifikaten,Verslötelmetoden,TLS,seker,Sekerheit
-X-KDE-Keywords[nl]=Crypto,Krypto,Cryptografie,encryptie,SSL,https,certificaten,ciphers,TLS,secure,security,veiligheid,beveiliging,versleuteling,
-X-KDE-Keywords[nn]=Crypto,Krypto,kryptografi,kryptologi,kryptering,SSL,https,sertifikat,chiffer,ciphers,TLS,sikker,trygg,tryggleik
-X-KDE-Keywords[pt]=Cifra,Criptografia,encriptação,SSL,HTTPS,certificados,cifras,TLS,seguro,segurança
-X-KDE-Keywords[pt_BR]=Crypto,Krypto,Criptografia,encriptação,SSL,https,certificados,cifras,TLS,seguro,segurança
-X-KDE-Keywords[sl]=Šifriranje,šifre,šifra,SSL,HTTPS,potrdila,TLS,varnost
-X-KDE-Keywords[sr]=Crypto,Krypto,Cryptography,encryption,SSL,https,certificates,ciphers,TLS,secure,security,крипто,криптографија,шифровање,ССЛ,ХТТПС,сертификати,шифрари,ТЛС,безбедност
-X-KDE-Keywords[sr@latin]=Crypto,Krypto,Cryptography,encryption,SSL,https,certificates,ciphers,TLS,secure,security,kripto,kriptografija,šifrovanje,SSL,HTTPS,sertifikati,šifrari,TLS,bezbednost
+X-KDE-Keywords[bg]=Crypto,Krypto,Cryptography,encryption,SSL,https,certificates,ciphers,TLS,secure,security,криптография,шифриране,удостоверения,сертификати,шифри,сигурност
+X-KDE-Keywords[ca]=Criptografia,encriptatge,SSL,https,certificats,xifres,TLS,segur,seguretat
+X-KDE-Keywords[es]=Crypto,Krypto,Criptografía,cifrado,SSL,ttps,certificados,cifradores,TLS,seguro,seguridad
+X-KDE-Keywords[et]=krüpto,krüptograafia,krüptimine,SSL,https,sertifikaadid,serdid,šifrid,TLS,turvalisus,turve
+X-KDE-Keywords[gl]=Cripto,Kripto,Criptografía,cifrado,SSL,https,certificados,cifras,TLS,seguro,securidade
+X-KDE-Keywords[hu]=Titkosítás,Titkosítás,Titkosítás,titkosítás,SSL,https,tanúsítványok,titkosítók,TLS,biztonságos,biztonság
+X-KDE-Keywords[ia]=Crypto,Krypto,Cryptographia,cryptation,SSL,https,certificatos,ciphras,TLS, secur,securitate
+X-KDE-Keywords[kk]=Crypto,Krypto,Cryptography,encryption,SSL,https,certificates,ciphers,TLS,secure,security
+X-KDE-Keywords[km]=ការ​គ្រីប​,​គ្រីបតូ​,ការ​គ្រីប,​ការ​អ៊ិនគ្រីប​,SSL,https,​វិញ្ញាបនបត្រ​,ciphers,TLS,មូលប័ត្រ​,​មូលប័ត្រ
+X-KDE-Keywords[nb]=Krypto,Crypto,Kryptografi,kryptering,SSL,https,sertifikater,chiffre,TLS,sikker,sikkerhet
+X-KDE-Keywords[nds]=Verslöteln,SSL,https,Zertifikaten,Slötels,TLS,seker,Sekerheit
+X-KDE-Keywords[nl]=Crypto,Krypto,cryptografie,versleuteling,SSL,https,certificaten,ciphers,TLS,veilig,beveiliging
+X-KDE-Keywords[pa]=ਕ੍ਰਿਪਟੂ,ਕ੍ਰਿਪਟੂ,ਕ੍ਰਿਪਟੂਗਰਾਫੀ,ਇੰਕ੍ਰਿਪਸ਼ਨ,ਸਰਟੀਫਿਕੇਟ,ਸੀਫ਼ਰ,ਸੁਰੱਖਿਅਤ,ਸੁਰੱਖਿਆ,Crypto,Krypto,Cryptography,encryption,SSL,https,certificates,ciphers,TLS,secure,security
+X-KDE-Keywords[pt]=Cripto,Criptografia,encriptação,SSL,HTTPS,certificados,cifras,TLS,seguro,segurança
+X-KDE-Keywords[pt_BR]=criptografia,Krypto,criptografar,SSL,HTTPS,certificados,cifras,TLS,segurar,segurança
+X-KDE-Keywords[ro]=Criptare,Cripto,Criptografie,SSL,https,certificate,cifru,TLS,sigur,securitate
X-KDE-Keywords[sv]=Krypto,Kryptografi,kryptering,SSL,https,certifikat,chiffer,TLS,säker,säkerhet
-X-KDE-Keywords[ta]=க்ரிப்டோ,கிரிப்டோ,உருதிரிபியல்,உருதிரித்தல்,SSL,https,சான்றிகள்,சுழியங்கள்,TLS,அரணோடு,அரண்
-X-KDE-Keywords[th]=เข้า-ถอดรหัส,Krypto,เรื่องเกี่ยวกับการเข้า-ถอดรหัส,การเข้ารหัส,SSL,https,ใบรับรอง,ciphers,TLS,ปลอดภัย,ความปลอดภัย
-X-KDE-Keywords[vi]=Crypto,mật mã,mã hoá,Krypto,Cryptography,encryption,SSL,https,certificates,chứng nhận,ciphers,TLS,secure,bảo mật,security
-X-KDE-Keywords[wa]=criptografeye,ecriptaedje,SSL,https,acertineures,acertiner,acertinaedje,chifraedje,TLS,seur,seure,såvrité
+X-KDE-Keywords[uk]=Crypto,Krypto,Cryptography,encryption,SSL,https,certificates,ciphers,TLS,secure,security,криптографія,шифрування,сертифікат,сертифікати,захист,безпека,безпечний,захищений
+X-KDE-Keywords[vi]=Crypto,mật mã,mã hoá,Krypto,Cryptography,encryption,SSL,https,certificates,chứng thực,ciphers,TLS,secure,bảo mật,security
X-KDE-Keywords[x-test]=xxCrypto,Krypto,Cryptography,encryption,SSL,https,certificates,ciphers,TLS,secure,securityxx
-X-KDE-Keywords[zh_CN]=Crypto,Krypto,Cryptography,encryption,SSL,https,certificates,ciphers,TLS,secure,security,加密,证书,加密算法,安全
+X-KDE-Keywords[zh_TW]=Crypto,Krypto,Cryptography,encryption,SSL,https,certificates,ciphers,TLS,secure,security
Categories=Qt;KDE;X-KDE-settings-security;
diff --git a/security/kcert/kcertpart.desktop b/security/kcert/kcertpart.desktop
index a2d3209118..f7295aea8d 100644
--- a/security/kcert/kcertpart.desktop
+++ b/security/kcert/kcertpart.desktop
@@ -1,194 +1,194 @@
[Desktop Entry]
Type=Service
Comment=Embeddable Personal Certificate Manager
Comment[af]=Inlegbare Persoonlike Sertifikaat Bestuurder
Comment[ar]=مدير شهادات شخصي مدمج
Comment[as]=প্ৰোথিত Personal Certificate Manager
Comment[ast]=Xestor de certificaos personales encrustable
Comment[be]=Унутраны кіраўнік асабістых сертыфікатаў
Comment[be@latin]=Unutrany ŭłasny kiraŭnik sertyfikataŭ
Comment[bg]=Мениджър за вградени удостоверения
Comment[bn]=অভ্যন্তরীণ ব্যক্তিগত সার্টিফিকেট ম্যানেজার
Comment[bn_IN]=এমবেড করার যোগ্য ব্যক্তিগত সার্টিফিকেট পরিচালন ব্যবস্থা
Comment[bs]=Ugnezdivi menadžer ličnih sertifikata
Comment[ca]=Gestor encastable de certificats personals
Comment[ca@valencia]=Gestor encastable de certificats personals
Comment[cs]=Pohltitelný správce osobních certifikátů
Comment[csb]=Wbùdowóny swój menadżer certifikatów
Comment[cy]=Rheolydd Tystysgrif Bersonol Mewnadeiladadwy
Comment[da]=Indlejrbar personlig certifikathåndtering
Comment[de]=Einbettungsfähige Verwaltung für persönliche Zertifikate
Comment[el]=Ενσωματώσιμος διαχειριστής προσωπικών πιστοποιητικών
Comment[en_GB]=Embeddable Personal Certificate Manager
Comment[eo]=Enkorpigebla administrilo por personaj atestiloj
Comment[es]=Gestor personal de certificados empotrable
Comment[et]=Põimitav personaalsete sertifikaatide haldur
Comment[eu]=Ziurtagiri pertsonalen kudeatzaile kapsulagarria
Comment[fa]=مدیر گواهی‌نامه شخصی نهفته
Comment[fi]=Upotettava henkilökohtaisten varmenteiden hallinta
Comment[fr]=Gestionnaire de certificats personnels intégrable
Comment[fy]=Yn te sluten Persoanlik-sertifikaatbehearder
Comment[ga]=Bainisteoir Teastas Pearsanta Inleabaithe
Comment[gl]=Xestor persoal de certificados integrábel
Comment[gu]=જડિત ખાનગી પ્રમાણપત્ર વ્યવસ્થાપક
Comment[he]=מנהל תעודות אישי הניתן לשיבוץ
Comment[hi]=अंतर्निर्मित व्यक्तिगत प्रमाणपत्र प्रबंधक
Comment[hne]=भीतर मं बने निजी प्रमानपत्र प्रबंधक
Comment[hr]=Ugradivi upravitelj osobnim potvrdama
Comment[hsb]=Integrujomny Personal Certificate Manager
Comment[hu]=Beágyazható személyes tanúsítványkezelő
Comment[ia]=Administrator de Certificato Personal Incorporabile
Comment[id]=Manajer Sertifikat Personal Dapat Dibenamkan
Comment[is]=Ívefjanlegur einkaskírteina-stjóri
Comment[it]=Gestione integrabile dei certificati personali
Comment[ja]=埋め込み可能な個人証明書マネージャ
Comment[kk]=Ендірілетін дербес куәлік менеджері
Comment[km]=កម្មវិធី​គ្រប់គ្រង​វិញ្ញាបនបត្រ​ឯកជន​ដែល​អាច​បង្កប់​បាន
Comment[kn]=ಹುದುಗಿಸಬಹುದಾದ (ಎಂಬೆಡಬಲ್) ವೈಯಕ್ತಿಕ ಪ್ರಮಾಣಪತ್ರ ವ್ಯವಸ್ಥಾಪಕ
Comment[ko]=첨부할 수 있는 개인 인증서 관리자
Comment[ku]=Rêveberê Belge Kirina Şexsî yê Dibe Jixwe Heyî
Comment[lb]=Abettbare perséinlechen Zertifikatsmanager
Comment[lt]=Įdedama asmeninių liudijimų tvarkyklė
Comment[lv]=Iegulstams personīgo sertifikātu pārvaldnieks
Comment[mai]=अंतर्निर्मित व्यक्तिगत प्रमाणपत्र प्रबंधक
Comment[mk]=Вгнездлив менаџер на лични сертификати
Comment[ml]=എംബെഡ് ചെയ്യാവുന്ന സ്വകാര്യ സാക്ഷ്യപത്ര നടത്തിപ്പുകാരന്‍
Comment[mr]=अंतर्भूतीत खाजगी प्रमाणपत्र व्यवस्थापक
Comment[ms]=Pengurus Sijil Peribadi Boleh Serta
Comment[nb]=Innebygget personlig sertifikathåndterer
Comment[nds]=Inbettbor Pleger för persöönlich Zertifikaten
Comment[ne]=सम्मिलित व्यक्तिगत प्रमाणपत्र प्रबन्धक
Comment[nl]=Ingebedde Persoonlijke Certificaat-beheerder
Comment[nn]=Innebyggbar handsamar av personlege sertifikat
Comment[or]=ସନ୍ନିବେଶଯୋଗ୍ୟ ବ୍ୟକ୍ତିଗତ ପ୍ରମାଣପତ୍ର ପରିଚାଳକ
Comment[pa]=ਨਿੱਜੀ ਸਰਟੀਫਕੇਟ ਮੈਨੇਜਰ ਸ਼ਾਮਿਲ ਹੋਣਯੋਗ
Comment[pl]=Osobisty menedżer certyfikatów
Comment[pt]=Gestor de Certificados Pessoais Incorporado
Comment[pt_BR]=Gerenciador pessoal de certificados integrável
Comment[ro]=Componentă manager de certificate personale
Comment[ru]=Управление личными сертификатами
Comment[se]=Vuojuhanláhkái persuvnnalaš duođaštusaid gieđahalli
Comment[si]=ඇතෘලත් කළ හැකි පෞද්ගලික සහතික කළමණාකරු
Comment[sk]=Zabudovaný správca osobných certifikátov
Comment[sl]=Vgradljivi osebni upravljalnik certifikatov
Comment[sr]=Угнездиви менаџер личних сертификата
Comment[sr@ijekavian]=Угњездиви менаџер личних сертификата
Comment[sr@ijekavianlatin]=Ugnjezdivi menadžer ličnih sertifikata
Comment[sr@latin]=Ugnezdivi menadžer ličnih sertifikata
Comment[sv]=Inbäddningsbar personlig certifikatshanterare
Comment[ta]=உட்பொதிந்த சுய சான்றிதழ் மேலாளர்
Comment[te]=పొదగబడె వక్తిగత ప్రమాణ పత్రాల అభికర్త
Comment[tg]=Мудири иҷозатномаҳои дарунсохташудаи шахсӣ
Comment[th]=ตัวจัดการใบรับรองส่วนบุคคลแบบฝังตัวได้
Comment[tr]=Gömülebilir Kişisel Sertifika Yöneticisi
Comment[ug]=سىڭدۈرۈشچان شەخسىي گۇۋاھنامە باشقۇرغۇچ
Comment[uk]=Менеджер персональних сертифікатів, який можна вбудовувати
Comment[uz]=Ichiga oʻrnatib boʻladigan shaxsiy sertifikat boshqaruvchisi
Comment[uz@cyrillic]=Ичига ўрнатиб бўладиган шахсий сертификат бошқарувчиси
Comment[vi]=Bộ Quản lý Chứng nhận Cá nhân có khả năng nhúng
Comment[wa]=Ravalé manaedjeu d' acertineures da vosse
-Comment[x-test]=xxEmbeddable Personal Certificate Managerxx
Comment[xh]=Umphathi Wesiqinisekiso Sobuntu bakho Obulungiselelweyo
+Comment[x-test]=xxEmbeddable Personal Certificate Managerxx
Comment[zh_CN]=可嵌入的个人证书管理器
Comment[zh_HK]=可嵌入的個人證書管理工具
Comment[zh_TW]=嵌入式個人憑證管理員
MimeType=application/x-pkcs12;application/x-x509-ca-cert;
Icon=system-lock-screen
Name=KCertPart
Name[af]=Kcertpart
Name[ar]=جزء ك للشهادات
Name[as]=KCertPart
Name[ast]=KCertPart
Name[be]=KCertPart
Name[be@latin]=KCertPart
Name[bg]=KCertPart
Name[bn]=কে-সার্ট-পার্ট
Name[bn_IN]=KCertPart
Name[br]=KCertPart
Name[bs]=Sertifikatski dio
Name[ca]=KCertPart
Name[ca@valencia]=KCertPart
Name[cs]=KCertPart
Name[csb]=KCertPart
Name[cy]=KRhanTyst
Name[da]=KCertPart
Name[de]=KCertPart
Name[el]=KCertPart
Name[en_GB]=KCertPart
Name[eo]=Atestilo-parto
Name[es]=KCertPart
Name[et]=KCertPart
Name[eu]=KCertPart
Name[fa]=KCertPart
Name[fi]=KCertPart
Name[fr]=KCertPart
Name[fy]=KCertPart
Name[ga]=KCertPart
Name[gl]=KCertPart
Name[gu]=KCertPart
Name[he]=KCertPart
Name[hi]=के-सर्ट-पार्ट
Name[hne]=के-सर्ट-पार्ट
Name[hr]=KCertPart
Name[hsb]=KCertPart
Name[hu]=KCertPart
Name[ia]=KcertPart
Name[id]=KCertPart
Name[is]=KCertPart
Name[it]=KCertPart
Name[ja]=KCertPart
Name[kk]=KCertPart
Name[km]=KCertPart
Name[kn]=ಕೆಸರ್ಟ್ ಪಾರ್ಟ್
Name[ko]=KCertPart
Name[ku]=KCertPart
Name[lb]=KCertPart
Name[lt]=KCertPart
Name[lv]=KCertPart
Name[mai]=के-सर्ट-पार्ट
Name[mk]=KCertPart
Name[ml]=കെസെര്‍ട്ട്പാര്‍ട്ട്
Name[mr]=KCertPart
Name[ms]=KCertPart
Name[nb]=KCertPart
Name[nds]=KCertPart
Name[ne]=KCertPart
Name[nl]=KCertPart
Name[nn]=KCertPart
Name[or]=KCertPart
Name[pa]=KCertPart
Name[pl]=KCertPart
Name[ps]=KCertPart
Name[pt]=KCertPart
Name[pt_BR]=KCertPart
Name[ro]=KCertPart
Name[ru]=KCertPart
Name[se]=KCertPart
Name[si]=KCertPart
Name[sk]=KCertPart
Name[sl]=KCertPart
Name[sq]=KCertPart
Name[sr]=Сертификатски део
Name[sr@ijekavian]=Сертификатски део
Name[sr@ijekavianlatin]=Sertifikatski deo
Name[sr@latin]=Sertifikatski deo
Name[sv]=Kcertpart
Name[ta]=KCertPart
Name[te]=కెసెర్ట్ పార్ట్
Name[tg]=KCertPart
Name[th]=KCertPart
Name[tr]=KCertPart
Name[ug]=KCertPart
Name[uk]=KCertPart
Name[uz]=KCertPart
Name[uz@cyrillic]=KCertPart
Name[vi]=KCertPart
Name[wa]=KCertPart
-Name[x-test]=xxKCertPartxx
Name[xh]=KCertPart
+Name[x-test]=xxKCertPartxx
Name[zh_CN]=KCertPart
Name[zh_HK]=KCertPart
Name[zh_TW]=KCertPart
X-KDE-ServiceTypes=KParts/ReadWritePart
X-KDE-Library=kcertpart
InitialPreference=15
diff --git a/sonnet/plugins/hunspell/kspell_hunspell.desktop b/sonnet/plugins/hunspell/kspell_hunspell.desktop
index ada7b67cf7..82805bd2d2 100644
--- a/sonnet/plugins/hunspell/kspell_hunspell.desktop
+++ b/sonnet/plugins/hunspell/kspell_hunspell.desktop
@@ -1,78 +1,80 @@
[Desktop Entry]
Type=Service
X-KDE-ServiceTypes=Sonnet/SpellClient
X-KDE-Library=kspell_hunspell
X-KDE-PluginInfo-Author=Montel Laurent
X-KDE-PluginInfo-Email=montel@kde.org
X-KDE-PluginInfo-Name=kspell_hunspell
X-KDE-PluginInfo-Version=0.0.1
X-KDE-PluginInfo-Website=http://www.kde.org
X-KDE-PluginInfo-Category=Clients
X-KDE-PluginInfo-Depends=
X-KDE-PluginInfo-License=LGPL
X-KDE-PluginInfo-EnabledByDefault=true
Name=Hunspell
Name[ar]=ه‍نسبل
Name[ast]=Hunspell
Name[bg]=Hunspell
Name[bn]=Hunspell
Name[bs]=Hunspell
Name[ca]=Hunspell
Name[ca@valencia]=Hunspell
Name[cs]=Hunspell
Name[da]=Hunspell
Name[de]=Hunspell
Name[el]=Hunspell
Name[en_GB]=Hunspell
Name[eo]=Hunspell
Name[es]=Hunspell
Name[et]=Hunspell
Name[eu]=Hunspell
+Name[fa]=Hunspell
Name[fi]=Hunspell
Name[fr]=Hunspell
Name[ga]=Hunspell
Name[gl]=Hunspell
Name[hr]=Hunspell
Name[hu]=Hunspell
Name[ia]=Hunspell
Name[id]=Hunspell
Name[is]=Hunspell
Name[it]=Hunspell
Name[ja]=Hunspell
Name[kk]=Hunspell
Name[km]=Hunspell
Name[kn]=ಹನ್‌ಸ್ಪೆಲ್
Name[ko]=Hunspell
Name[ku]=Hunspell
Name[lt]=Hunspell
Name[lv]=Hunspell
Name[ms]=Hunspell
Name[nb]=Hunspell
Name[nds]=Hunspell
Name[nl]=Hunspell
Name[nn]=Hunspell
Name[pa]=Hunspell
Name[pl]=Hunspell
Name[pt]=Hunspell
Name[pt_BR]=Hunspell
Name[ro]=Hunspell
Name[ru]=Hunspell
Name[se]=Hunspell
Name[si]=Hunspell
Name[sk]=Hunspell
Name[sl]=Hunspell
Name[sr]=Ханспел
Name[sr@ijekavian]=Ханспел
Name[sr@ijekavianlatin]=Hunspell
Name[sr@latin]=Hunspell
Name[sv]=Hunspell
Name[ta]=Hunspell
Name[tg]=Hunspell
Name[th]=Hunspell
Name[tr]=Hunspell
Name[ug]=Hunspell
Name[uk]=Hunspell
+Name[vi]=Hunspell
Name[wa]=Hunspell
Name[x-test]=xxHunspellxx
Name[zh_CN]=Hunspell
Name[zh_TW]=Hunspell

File Metadata

Mime Type
text/x-diff
Expires
Fri, Nov 1, 8:11 AM (1 d, 3 h)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
c0/33/2bdbf92540afc74cbee4625955dc
Default Alt Text
(1 MB)

Event Timeline