Commit e9f5eefa authored by Charles Lindsay's avatar Charles Lindsay

Merge po files, set up for intltool and l10n.gnome.org

This removes the custom .pot file setup we had before, making it easy to
translate Shotwell using the standard intltool workflow.

This also merges the two separate core/extras gettext domains into one,
to keep things simple.  I hope I've merged all the po files correctly,
but I wouldn't bet money I did it perfectly.

We also set up the help to be able to be translated on l10n.gnome.org.

Closes: bgo #718783
parent c767099e
......@@ -30,14 +30,7 @@ ifndef LIBEXECDIR
LIBEXECDIR=$(PREFIX)/libexec/shotwell
endif
CORE_SUPPORTED_LANGUAGES= ia hi te fr de it es pl et sv sk lv pt bg bn nl da zh_CN \
el ru pa hu en_GB uk ja fi zh_TW cs nb id th sl hr ar ast ro sr lt gl tr ca ko kk pt_BR \
eu he mk ta vi or km af as gu kn ml mr bn_IN ky nn
EXTRAS_SUPPORTED_LANGUAGES=fr de it es pl et sv sk lv pt bg bn nl da zh_CN el ru pa hu en_GB uk \
ja fi zh_TW cs nb id th sl hr ar ast ro sr lt gl tr ca ko kk pt_BR eu he mk te ta eo or hi \
as kn ml mr bn_IN gu nn vi
CORE_SUPPORTED_LANGUAGES=$(shell cat po/LINGUAS)
LOCAL_LANG_DIR=locale-langpack
SYSTEM_LANG_DIR := $(DESTDIR)$(PREFIX)/share/locale
......@@ -396,8 +389,7 @@ EXPANDED_THUMBNAILER_SRC_FILES := $(foreach file, $(THUMBNAILER_SRC_FILES), $(TH
MIGRATOR_DIR := settings-migrator
MIGRATOR_BIN := $(MIGRATOR_DIR)/$(PROGRAM_MIGRATOR)
EXPANDED_CORE_PO_FILES := $(foreach po,$(CORE_SUPPORTED_LANGUAGES),po/shotwell-core/$(po).po)
EXPANDED_EXTRAS_PO_FILES := $(foreach po,$(EXTRAS_SUPPORTED_LANGUAGES),po/shotwell-extras/$(po).po)
EXPANDED_CORE_PO_FILES := $(foreach po,$(CORE_SUPPORTED_LANGUAGES),po/$(po).po)
EXPANDED_SRC_FILES := $(UNITIZED_SRC_FILES) $(foreach src,$(UNUNITIZED_SRC_FILES),src/$(src)) \
$(UNITIZE_INITS) $(UNITIZE_ENTRIES)
......@@ -421,12 +413,11 @@ PC_FILE := $(PC_INPUT:.m4=.pc)
DIST_FILES = Makefile configure chkver $(EXPANDED_DIST_SRC_FILES) $(EXPANDED_VAPI_FILES) \
$(EXPANDED_DEPS_FILES) $(EXPANDED_SRC_HEADER_FILES) $(EXPANDED_RESOURCE_FILES) $(TEXT_FILES) \
$(EXPANDED_ICON_FILES) $(EXPANDED_SYS_INTEGRATION_FILES) $(EXPANDED_CORE_PO_FILES) \
$(EXPANDED_EXTRAS_PO_FILES) \
po/shotwell-core/shotwell.pot po/shotwell-extras/shotwell-extras.pot \
po/LINGUAS po/POTFILES.in po/POTFILES.skip \
$(EXPANDED_HELP_FILES) $(EXPANDED_HELP_IMAGES) apport/shotwell.py $(UNIT_RESOURCES) $(UNIT_MKS) \
unitize.mk units.mk $(PC_INPUT) $(PLUGINS_DIST_FILES) \
vapi/gphoto-2.5/libgphoto2.vapi vapi/gphoto-2.4/libgphoto2.vapi \
$(EXPANDED_THUMBNAILER_SRC_FILES) $(MIGRATOR_BIN) potgen-shotwell
$(EXPANDED_THUMBNAILER_SRC_FILES) $(MIGRATOR_BIN)
DIST_TAR = $(PROGRAM)-$(VERSION).tar
DIST_TAR_XZ = $(DIST_TAR).xz
......@@ -472,11 +463,9 @@ endif
include src/plugins/mk/interfaces.mk
$(LANG_STAMP): $(EXPANDED_CORE_PO_FILES) $(EXPANDED_EXTRAS_PO_FILES)
$(LANG_STAMP): $(EXPANDED_CORE_PO_FILES)
@$(foreach po,$(CORE_SUPPORTED_LANGUAGES),`mkdir -p $(LOCAL_LANG_DIR)/$(po)/LC_MESSAGES ; \
msgfmt -c -o $(LOCAL_LANG_DIR)/$(po)/LC_MESSAGES/shotwell.mo po/shotwell-core/$(po).po`)
@$(foreach po,$(EXTRAS_SUPPORTED_LANGUAGES),`mkdir -p $(LOCAL_LANG_DIR)/$(po)/LC_MESSAGES ; \
msgfmt -c -o $(LOCAL_LANG_DIR)/$(po)/LC_MESSAGES/shotwell-extras.mo po/shotwell-extras/$(po).po`)
msgfmt -c -o $(LOCAL_LANG_DIR)/$(po)/LC_MESSAGES/shotwell.mo po/$(po).po`)
@touch $(LANG_STAMP)
clean:
......@@ -513,9 +502,6 @@ package:
cp $(DIST_TAR_XZ) $(PACKAGE_ORIG_XZ)
rm -f $(DIST_TAR_XZ)
pot_file:
./potgen-shotwell
misc/shotwell.desktop: misc/shotwell.desktop.head $(EXPANDED_CORE_PO_FILES)
cp misc/shotwell.desktop.head misc/shotwell.desktop
@ $(foreach lang,$(CORE_SUPPORTED_LANGUAGES), echo X-GNOME-FullName[$(lang)]=`TEXTDOMAINDIR=locale-langpack \
......@@ -620,9 +606,6 @@ endif
-$(foreach lang,$(CORE_SUPPORTED_LANGUAGES),`mkdir -p $(SYSTEM_LANG_DIR)/$(lang)/LC_MESSAGES ; \
$(INSTALL_DATA) $(LOCAL_LANG_DIR)/$(lang)/LC_MESSAGES/shotwell.mo \
$(SYSTEM_LANG_DIR)/$(lang)/LC_MESSAGES/shotwell.mo`)
-$(foreach lang,$(EXTRAS_SUPPORTED_LANGUAGES),`mkdir -p $(SYSTEM_LANG_DIR)/$(lang)/LC_MESSAGES ; \
$(INSTALL_DATA) $(LOCAL_LANG_DIR)/$(lang)/LC_MESSAGES/shotwell-extras.mo \
$(SYSTEM_LANG_DIR)/$(lang)/LC_MESSAGES/shotwell-extras.mo`)
mkdir -p $(DESTDIR)$(PREFIX)/$(LIB)/shotwell/plugins/builtin
$(INSTALL_PROGRAM) $(PLUGINS_SO) $(DESTDIR)$(PREFIX)/$(LIB)/shotwell/plugins/builtin
ifdef PLUGINS_RC
......@@ -668,7 +651,6 @@ ifdef ENABLE_APPORT_HOOK_INSTALL
rm -f $(DESTDIR)$(PREFIX)/share/apport/package-hooks/shotwell.py
endif
$(foreach lang,$(CORE_SUPPORTED_LANGUAGES),`rm -f $(SYSTEM_LANG_DIR)/$(lang)/LC_MESSAGES/shotwell.mo`)
$(foreach lang,$(EXTRAS_SUPPORTED_LANGUAGES),`rm -f $(SYSTEM_LANG_DIR)/$(lang)/LC_MESSAGES/shotwell-extras.mo`)
rm -rf $(DESTDIR)$(PREFIX)/$(LIB)/shotwell/plugins/builtin
ifdef INSTALL_HEADERS
rm -rf $(DESTDIR)$(PREFIX)/include/shotwell
......
# Dummy Makefile.am to allow the help to be translated on l10n.gnome.org.
# This isn't actually processed by automake.
DOC_ID = shotwell
DOC_PAGES = \
edit-adjustments.page \
edit-crop.page \
edit-enhance.page \
edit-external.page \
edit-nondestructive.page \
edit-redeye.page \
edit-rotate.page \
edit-straighten.page \
edit-time-date.page \
edit-undo.page \
formats.page \
import-camera.page \
import-file.page \
import-f-spot.page \
import-memorycard.page \
index.page \
organize-event.page \
organize-flag.page \
organize-rating.page \
organize-remove.page \
organize-search.page \
organize-tag.page \
organize-title.page \
other-files.page \
other-missing.page \
other-multiple.page \
other-plugins.page \
raw.page \
running.page \
share-background.page \
share-export.page \
share-print.page \
share-send.page \
share-slideshow.page \
share-upload.page \
view-displaying.page \
view-information.page \
view-sidebar.page
DOC_LINGUAS =
......@@ -6,9 +6,6 @@
*/
using Publishing.Extras;
extern string hmac_sha1(string key, string message);
public class TumblrService : Object, Spit.Pluggable, Spit.Publishing.Service {
private const string ICON_FILENAME = "tumblr.png";
......@@ -35,7 +32,7 @@ public class TumblrService : Object, Spit.Pluggable, Spit.Publishing.Service {
public void get_info(ref Spit.PluggableInfo info) {
info.authors = "Jeroen Arnoldus";
info.copyright = _t("Copyright 2012 BJA Electronics");
info.copyright = _("Copyright 2012 BJA Electronics");
info.translators = Resources.TRANSLATORS;
info.version = _VERSION;
info.website_name = Resources.WEBSITE_NAME;
......@@ -104,9 +101,9 @@ public class TumblrPublisher : Spit.Publishing.Publisher, GLib.Object {
private SizeEntry[] create_sizes() {
SizeEntry[] result = new SizeEntry[0];
result += new SizeEntry(_t("500 x 375 pixels"), 500);
result += new SizeEntry(_t("1024 x 768 pixels"), 1024);
result += new SizeEntry(_t("1280 x 853 pixels"), 1280);
result += new SizeEntry(_("500 x 375 pixels"), 500);
result += new SizeEntry(_("1024 x 768 pixels"), 1024);
result += new SizeEntry(_("1280 x 853 pixels"), 1280);
//Larger images make no sense for Tumblr
// result += new SizeEntry(_("2048 x 1536 pixels"), 2048);
// result += new SizeEntry(_("4096 x 3072 pixels"), 4096);
......@@ -310,7 +307,7 @@ public class TumblrPublisher : Spit.Publishing.Publisher, GLib.Object {
if (split_pair.length != 2)
host.post_error(new Spit.Publishing.PublishingError.MALFORMED_RESPONSE(
_t("'%s' isn't a valid response to an OAuth authentication request")));
_("'%s' isn't a valid response to an OAuth authentication request")));
if (split_pair[0] == "oauth_token")
oauth_token = split_pair[1];
......@@ -320,7 +317,7 @@ public class TumblrPublisher : Spit.Publishing.Publisher, GLib.Object {
if (oauth_token == null || oauth_token_secret == null)
host.post_error(new Spit.Publishing.PublishingError.MALFORMED_RESPONSE(
_t("'%s' isn't a valid response to an OAuth authentication request")));
_("'%s' isn't a valid response to an OAuth authentication request")));
session.set_access_phase_credentials(oauth_token, oauth_token_secret);
}
......@@ -558,7 +555,7 @@ public class TumblrPublisher : Spit.Publishing.Publisher, GLib.Object {
return;
if (was_started)
error(_t("TumblrPublisher: start( ): can't start; this publisher is not restartable."));
error(_("TumblrPublisher: start( ): can't start; this publisher is not restartable."));
debug("TumblrPublisher: starting interaction.");
......@@ -586,8 +583,8 @@ internal class AuthenticationPane : Spit.Publishing.DialogPane, Object {
INTRO,
FAILED_RETRY_USER
}
private static string INTRO_MESSAGE = _t("Enter the username and password associated with your Tumblr account.");
private static string FAILED_RETRY_USER_MESSAGE = _t("Username and/or password invalid. Please try again");
private static string INTRO_MESSAGE = _("Enter the username and password associated with your Tumblr account.");
private static string FAILED_RETRY_USER_MESSAGE = _("Username and/or password invalid. Please try again");
private Gtk.Box pane_widget = null;
private Gtk.Builder builder;
......@@ -616,7 +613,7 @@ internal class AuthenticationPane : Spit.Publishing.DialogPane, Object {
break;
case Mode.FAILED_RETRY_USER:
message_label.set_markup("<b>%s</b>\n\n%s".printf(_t(
message_label.set_markup("<b>%s</b>\n\n%s".printf(_(
"Invalid User Name or Password"), FAILED_RETRY_USER_MESSAGE));
break;
}
......@@ -636,7 +633,7 @@ internal class AuthenticationPane : Spit.Publishing.DialogPane, Object {
align.reparent(pane_widget);
publisher.get_host().set_dialog_default_widget(login_button);
} catch (Error e) {
warning(_t("Could not load UI: %s"), e.message);
warning(_("Could not load UI: %s"), e.message);
}
}
......@@ -739,7 +736,7 @@ internal class PublishingOptionsPane : Spit.Publishing.DialogPane, GLib.Object {
blog_label = (Gtk.Label) this.builder.get_object("blog_label");
string upload_label_text = _t("You are logged into Tumblr as %s.\n\n").printf(this.username);
string upload_label_text = _("You are logged into Tumblr as %s.\n\n").printf(this.username);
upload_info_label.set_label(upload_label_text);
populate_blog_combo();
......@@ -757,7 +754,7 @@ internal class PublishingOptionsPane : Spit.Publishing.DialogPane, GLib.Object {
logout_button.clicked.connect(on_logout_clicked);
publish_button.clicked.connect(on_publish_clicked);
} catch (Error e) {
warning(_t("Could not load UI: %s"), e.message);
warning(_("Could not load UI: %s"), e.message);
}
}
......@@ -968,7 +965,7 @@ internal class UploadTransaction : Publishing.RESTSupport.UploadTransaction {
} catch (FileError e) {
throw new Spit.Publishing.PublishingError.LOCAL_FILE_ERROR(
_t("A temporary file needed for publishing is unavailable"));
_("A temporary file needed for publishing is unavailable"));
}
......
......@@ -4,8 +4,6 @@
* See the COPYING file in this distribution.
*/
using Publishing.Extras;
public class YandexService : Object, Spit.Pluggable, Spit.Publishing.Service {
public int get_pluggable_interface(int min_host_interface, int max_host_interface) {
return Spit.negotiate_interfaces(min_host_interface, max_host_interface, Spit.Publishing.CURRENT_INTERFACE);
......@@ -21,10 +19,10 @@ public class YandexService : Object, Spit.Pluggable, Spit.Publishing.Service {
public void get_info(ref Spit.PluggableInfo info) {
info.authors = "Evgeniy Polyakov <zbr@ioremap.net>";
info.copyright = _t("Copyright 2010+ Evgeniy Polyakov <zbr@ioremap.net>");
info.copyright = _("Copyright 2010+ Evgeniy Polyakov <zbr@ioremap.net>");
info.translators = Resources.TRANSLATORS;
info.version = _VERSION;
info.website_name = _t("Visit the Yandex.Fotki web site");
info.website_name = _("Visit the Yandex.Fotki web site");
info.website_url = "http://fotki.yandex.ru/";
info.is_license_wordwrapped = false;
info.license = Resources.LICENSE;
......@@ -217,7 +215,6 @@ internal class PublishingOptionsPane: Spit.Publishing.DialogPane, GLib.Object {
try {
builder = new Gtk.Builder();
builder.set_translation_domain(DOMAIN_NAME);
builder.add_from_file(ui_file.get_path());
builder.connect_signals(null);
Gtk.Alignment align = builder.get_object("alignment") as Gtk.Alignment;
......@@ -632,7 +629,7 @@ public class YandexPublisher : Spit.Publishing.Publisher, GLib.Object {
}
private void show_welcome_page() {
host.install_welcome_pane(_t("You are not currently logged into Yandex.Fotki."),
host.install_welcome_pane(_("You are not currently logged into Yandex.Fotki."),
start_web_auth);
}
......
......@@ -6,87 +6,6 @@
extern const string _VERSION;
namespace Publishing.Extras {
internal const string DOMAIN_NAME = "shotwell-extras";
internal const string[] LANGUAGE_SUPPORT_DIRECTORIES = {
"./locale-langpack",
"/usr/local/share/locale-langpack",
"/usr/share/locale-langpack",
"/usr/local/share/locale",
"/usr/local/share/locale-langpack"
};
internal bool is_domain_configured = false;
public void configure_translation_domain() {
if (is_domain_configured)
return;
string target = DOMAIN_NAME + ".mo";
// support installation of the shotwell-extras translations separately from the shotwell core
// translations; look for shotwell-extras translations in all 5 common locations.
string? lang_support_dir = null;
foreach (string dirpath in LANGUAGE_SUPPORT_DIRECTORIES) {
File base_dirfile = File.new_for_path(dirpath);
if (!base_dirfile.query_exists(null))
continue;
FileType base_filetype =
base_dirfile.query_file_type(FileQueryInfoFlags.NONE, null);
if (base_filetype != FileType.DIRECTORY)
continue;
try {
FileEnumerator lang_enumerator =
base_dirfile.enumerate_children("standard::name,standard::type",
FileQueryInfoFlags.NONE, null);
FileInfo info = null;
while ((info = lang_enumerator.next_file(null)) != null) {
if (info.get_file_type() == FileType.DIRECTORY) {
File message_domain_file = base_dirfile.get_child(info.get_name()).get_child(
"LC_MESSAGES").get_child(target);
if (message_domain_file.query_exists(null)) {
lang_support_dir = base_dirfile.get_path();
break;
}
}
}
} catch (Error e) {
critical("can't get location of translation file for extra plugins: " + e.message);
}
if (lang_support_dir != null)
break;
}
if (lang_support_dir != null) {
string? bound = Intl.bindtextdomain(DOMAIN_NAME, lang_support_dir);
if (bound != null)
debug("bound shotwell-extras language support directory '%s'.\n", lang_support_dir);
}
is_domain_configured = true;
}
public unowned string? _t(string msgid) {
if (!is_domain_configured)
configure_translation_domain();
return dgettext(DOMAIN_NAME, msgid);
}
public unowned string? _tn(string msgid, string msgid_plural, ulong n) {
if (!is_domain_configured)
configure_translation_domain();
return dngettext(DOMAIN_NAME, msgid, msgid_plural, n);
}
}
private class ShotwellPublishingExtraServices : Object, Spit.Module {
private Spit.Pluggable[] pluggables = new Spit.Pluggable[0];
......@@ -117,8 +36,6 @@ public Spit.Module? spit_entry_point(Spit.EntryPointParams *params) {
params->module_spit_interface = Spit.negotiate_interfaces(params->host_min_spit_interface,
params->host_max_spit_interface, Spit.CURRENT_INTERFACE);
Publishing.Extras.configure_translation_domain();
return (params->module_spit_interface != Spit.UNSUPPORTED_INTERFACE)
? new ShotwellPublishingExtraServices(params->module_file) : null;
}
......
af
ar
as
ast
bg
bn
bn_IN
ca
cs
da
de
el
en_GB
eo
es
et
eu
fi
fr
gl
gu
he
hi
hr
hu
ia
id
it
ja
kk
km
kn
ko
ky
lt
lv
mk
ml
mr
nb
nl
nn
or
pa
pl
pt
pt_BR
ro
ru
sk
sl
sr
sv
ta
te
th
tr
uk
vi
zh_CN
zh_TW
[encoding: UTF-8]
plugins/common/RESTSupport.vala
plugins/common/Resources.vala
plugins/common/SqliteSupport.vala
plugins/common/VersionNumber.vala
plugins/shotwell-data-imports/FSpotDatabase.vala
plugins/shotwell-data-imports/FSpotDatabaseBehavior.vala
plugins/shotwell-data-imports/FSpotDatabaseTable.vala
plugins/shotwell-data-imports/FSpotImporter.vala
plugins/shotwell-data-imports/FSpotMetaTable.vala
plugins/shotwell-data-imports/FSpotPhotoTagsTable.vala
plugins/shotwell-data-imports/FSpotPhotoVersionsTable.vala
plugins/shotwell-data-imports/FSpotPhotosTable.vala
plugins/shotwell-data-imports/FSpotRollsTable.vala
plugins/shotwell-data-imports/FSpotTableBehavior.vala
plugins/shotwell-data-imports/FSpotTagsTable.vala
plugins/shotwell-data-imports/shotwell-data-imports.vala
plugins/shotwell-publishing-extras/TumblrPublishing.vala
plugins/shotwell-publishing-extras/YandexPublishing.vala
plugins/shotwell-publishing-extras/shotwell-publishing-extras.vala
[type: gettext/glade]plugins/shotwell-publishing-extras/tumblr_authentication_pane.glade
[type: gettext/glade]plugins/shotwell-publishing-extras/tumblr_publishing_options_pane.glade
[type: gettext/glade]plugins/shotwell-publishing-extras/yandex_publish_model.glade
plugins/shotwell-publishing/FacebookPublishing.vala
plugins/shotwell-publishing/FlickrPublishing.vala
plugins/shotwell-publishing/PicasaPublishing.vala
plugins/shotwell-publishing/PiwigoPublishing.vala
plugins/shotwell-publishing/YouTubePublishing.vala
[type: gettext/glade]plugins/shotwell-publishing/facebook_publishing_options_pane.glade
[type: gettext/glade]plugins/shotwell-publishing/flickr_pin_entry_pane.glade
[type: gettext/glade]plugins/shotwell-publishing/flickr_publishing_options_pane.glade
[type: gettext/glade]plugins/shotwell-publishing/picasa_publishing_options_pane.glade
[type: gettext/glade]plugins/shotwell-publishing/piwigo_authentication_pane.glade
[type: gettext/glade]plugins/shotwell-publishing/piwigo_publishing_options_pane.glade
plugins/shotwell-publishing/shotwell-publishing.vala
[type: gettext/glade]plugins/shotwell-publishing/youtube_publishing_options_pane.glade
plugins/shotwell-transitions/BlindsEffect.vala
plugins/shotwell-transitions/ChessEffect.vala
plugins/shotwell-transitions/CircleEffect.vala
plugins/shotwell-transitions/CirclesEffect.vala
plugins/shotwell-transitions/ClockEffect.vala
plugins/shotwell-transitions/CrumbleEffect.vala
plugins/shotwell-transitions/FadeEffect.vala
plugins/shotwell-transitions/SlideEffect.vala
plugins/shotwell-transitions/SquaresEffect.vala
plugins/shotwell-transitions/StripesEffect.vala
plugins/shotwell-transitions/shotwell-transitions.vala
src/AppDirs.vala
src/AppWindow.vala
src/Application.vala
src/BatchImport.vala
src/Box.vala
src/CheckerboardLayout.vala
src/CollectionPage.vala
src/ColorTransformation.vala
src/CommandManager.vala
src/Commands.vala
src/CustomComponents.vala
src/Debug.vala
src/DesktopIntegration.vala
src/Dialogs.vala
src/Dimensions.vala
src/DirectoryMonitor.vala
src/Event.vala
src/Exporter.vala
src/International.vala
src/LibraryFiles.vala
src/LibraryMonitor.vala
src/MediaDataRepresentation.vala
src/MediaInterfaces.vala
src/MediaMetadata.vala
src/MediaMonitor.vala
src/MediaPage.vala
src/MediaViewTracker.vala
src/MetadataWriter.vala
src/Orientation.vala
src/Page.vala
src/Photo.vala
src/PhotoMonitor.vala
src/PhotoPage.vala
src/PixbufCache.vala
src/Printing.vala
src/Properties.vala
src/Resources.vala
src/Screensaver.vala
src/SearchFilter.vala
src/SlideshowPage.vala
src/SortedList.vala
src/Tag.vala
src/Thumbnail.vala
src/ThumbnailCache.vala
src/TimedQueue.vala
src/Tombstone.vala
src/UnityProgressBar.vala
src/Upgrades.vala
src/VideoMetadata.vala
src/VideoMonitor.vala
src/VideoSupport.vala
src/camera/Branch.vala
src/camera/Camera.vala
src/camera/CameraTable.vala
src/camera/GPhoto.vala
src/camera/ImportPage.vala
src/config/Config.vala
src/config/ConfigurationInterfaces.vala
src/config/GSettingsEngine.vala
src/core/Alteration.vala
src/core/ContainerSourceCollection.vala
src/core/Core.vala
src/core/DataCollection.vala
src/core/DataObject.vala
src/core/DataSet.vala
src/core/DataSource.vala
src/core/DataSourceTypes.vala
src/core/DataView.vala
src/core/DataViewTypes.vala
src/core/DatabaseSourceCollection.vala
src/core/SourceCollection.vala
src/core/SourceHoldingTank.vala
src/core/SourceInterfaces.vala
src/core/Tracker.vala
src/core/ViewCollection.vala
src/core/util.vala
src/data_imports/DataImportJob.vala
src/data_imports/DataImportSource.vala
src/data_imports/DataImports.vala
src/data_imports/DataImportsPluginHost.vala
src/data_imports/DataImportsUI.vala
src/db/DatabaseTable.vala
src/db/Db.vala
src/db/EventTable.vala
src/db/PhotoTable.vala
src/db/SavedSearchDBTable.vala
src/db/TagTable.vala
src/db/TombstoneTable.vala
src/db/VersionTable.vala
src/db/VideoTable.vala
src/direct/Direct.vala
src/direct/DirectPhoto.vala
src/direct/DirectPhotoPage.vala
src/direct/DirectView.vala
src/direct/DirectWindow.vala
src/editing_tools/EditingTools.vala
src/editing_tools/StraightenTool.vala
src/events/Branch.vala
src/events/EventDirectoryItem.vala
src/events/EventPage.vala
src/events/Events.vala
src/events/EventsDirectoryPage.vala
src/folders/Branch.vala
src/folders/Folders.vala
src/folders/Page.vala
src/library/Branch.vala
src/library/FlaggedBranch.vala
src/library/FlaggedPage.vala
src/library/ImportQueueBranch.vala
src/library/ImportQueuePage.vala
src/library/LastImportBranch.vala
src/library/LastImportPage.vala
src/library/Library.vala
src/library/LibraryWindow.vala
src/library/OfflineBranch.vala
src/library/OfflinePage.vala
src/library/TrashBranch.vala
src/library/TrashPage.vala
src/main.vala
src/photos/BmpSupport.vala
src/photos/GRaw.vala
src/photos/GdkSupport.vala
src/photos/JfifSupport.vala
src/photos/PhotoFileAdapter.vala
src/photos/PhotoFileFormat.vala
src/photos/PhotoFileSniffer.vala
src/photos/PhotoMetadata.vala
src/photos/Photos.vala
src/photos/PngSupport.vala
src/photos/RawSupport.vala
src/photos/TiffSupport.vala
src/plugins/DataImportsInterfaces.vala
src/plugins/ManifestWidget.vala
src/plugins/Plugins.vala
src/plugins/PublishingInterfaces.vala
src/plugins/SpitInterfaces.vala
src/plugins/StandardHostInterface.vala
src/plugins/TransitionsInterfaces.vala
src/publishing/APIGlue.vala
src/publishing/Publishing.vala
src/publishing/PublishingPluginHost.vala
src/publishing/PublishingUI.vala
src/searches/Branch.vala
src/searches/SavedSearchDialog.vala
src/searches/SavedSearchPage.vala
src/searches/SearchBoolean.vala
src/searches/Searches.vala
src/sidebar/Branch.vala
src/sidebar/Entry.vala
src/sidebar/Sidebar.vala
src/sidebar/Tree.vala
src/sidebar/common.vala
src/slideshow/Slideshow.vala
src/slideshow/TransitionEffects.vala
src/tags/Branch.vala
src/tags/HierarchicalTagIndex.vala
src/tags/HierarchicalTagUtilities.vala
src/tags/TagPage.vala
src/tags/Tags.vala
src/threads/BackgroundJob.vala
src/threads/Semaphore.vala
src/threads/Threads.vala
src/threads/Workers.vala
src/unit/Unit.vala
src/unit/rc/template.vala
src/util/KeyValueMap.vala
src/util/Util.vala
src/util/file.vala
src/util/image.vala
src/util/misc.vala
src/util/string.vala
src/util/system.vala
src/util/ui.vala
[type: gettext/glade]ui/set_background_dialog.glade
[type: gettext/glade]ui/shotwell.glade
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -2,12 +2,13 @@
# PO message string template file for Shotwell Core Components
# Copyright (C) 2009-2013 Yorba Foundation
# See COPYING for license.
#
#
#
#
# Translators:
# Rahul Ghose <hansum.rahul@gmail.com>, 2012
# Sucheta Ghoshal <sucheta.ghoshal@gmail.com>, 2012
# verayin <vera@yorba.org>, 2011
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: shotwell-0.15\n"
......@@ -15,7 +16,8 @@ msgstr ""
"POT-Creation-Date: 2013-09-20 11:55-0700\n"
"PO-Revision-Date: 2013-09-20 19:30+0000\n"
"Last-Translator: yorbajim <jim@yorba.org>\n"
"Language-Team: Bengali (http://www.transifex.com/projects/p/shotwell/language/bn/)\n"
"Language-Team: Bengali (http://www.transifex.com/projects/p/shotwell/"
"language/bn/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
......@@ -172,8 +174,7 @@ msgstr ""
#: src/camera/ImportPage.vala:1762
#, c-format
msgid "Unable to delete %d photo/video from the camera due to errors."
msgid_plural ""
"Unable to delete %d photos/videos from the camera due to errors."
msgid_plural "Unable to delete %d photos/videos from the camera due to errors."
msgstr[0] ""
msgstr[1] ""
......@@ -748,8 +749,7 @@ msgid "error message:"
msgstr ""
#: src/Dialogs.vala:582
msgid ""