[shotwell] Use Unicode in translatable strings



commit 7c0ad89676d662965388080f61d61359fd65fe35
Author: Piotr Drąg <piotrdrag gmail com>
Date:   Sun Oct 2 18:05:33 2016 +0200

    Use Unicode in translatable strings
    
    See https://developer.gnome.org/hig/stable/typography.html
    
    https://bugzilla.gnome.org/show_bug.cgi?id=772339

 misc/org.yorba.shotwell.gschema.xml                |   10 ++--
 misc/shotwell.appdata.xml.in                       |    2 +-
 .../GalleryConnector.vala                          |    6 +-
 .../RajcePublishing.vala                           |    2 +-
 .../TumblrPublishing.vala                          |   16 ++++----
 .../shotwell-publishing/FacebookPublishing.vala    |    8 ++--
 plugins/shotwell-publishing/FlickrPublishing.vala  |   16 ++++----
 plugins/shotwell-publishing/PicasaPublishing.vala  |   12 +++---
 plugins/shotwell-publishing/PiwigoPublishing.vala  |   10 ++--
 plugins/shotwell-publishing/YouTubePublishing.vala |    4 +-
 src/AppWindow.vala                                 |    2 +-
 src/Commands.vala                                  |    2 +-
 src/Dialogs.vala                                   |   18 ++++----
 src/MediaPage.vala                                 |    2 +-
 src/Printing.vala                                  |   28 ++++++------
 src/Resources.vala                                 |   44 ++++++++++----------
 src/camera/ImportPage.vala                         |    2 +-
 src/data_imports/DataImportsPluginHost.vala        |    4 +-
 src/editing_tools/EditingTools.vala                |   40 +++++++++---------
 src/main.vala                                      |   10 ++--
 src/publishing/PublishingPluginHost.vala           |    2 +-
 21 files changed, 120 insertions(+), 120 deletions(-)
---
diff --git a/misc/org.yorba.shotwell.gschema.xml b/misc/org.yorba.shotwell.gschema.xml
index 16ba868..963a31e 100644
--- a/misc/org.yorba.shotwell.gschema.xml
+++ b/misc/org.yorba.shotwell.gschema.xml
@@ -74,7 +74,7 @@
     <key name="display-photo-ratings" type="b">
         <default>true</default>
         <summary>display photo ratings</summary>
-        <description>True if a photo's rating should be displayed as overlaid trinket, false 
otherwise.</description>
+        <description>True if a photo’s rating should be displayed as overlaid trinket, false 
otherwise.</description>
     </key>
     
     <key name="photo-rating-filter" type="i">
@@ -163,8 +163,8 @@
     
     <key name="hide-photos-already-imported" type="b">
         <default>false</default>
-        <summary>Selection state of "hide photos" option</summary>
-        <description>Last used selection state of the "hide photos already imported" option in the import 
page.</description>
+        <summary>Selection state of “hide photos” option</summary>
+        <description>Last used selection state of the “hide photos already imported” option in the import 
page.</description>
     </key>
 </schema>
 
@@ -290,12 +290,12 @@
     </key>
     <key name="last-crop-width" type="i">
         <default>1</default>
-        <summary>Most-recently-used crop custom aspect ratio's numerator.</summary>
+        <summary>Most-recently-used crop custom aspect ratio’s numerator.</summary>
         <description>A nonzero, positive integer representing the width part of the last custom crop ratio 
the user entered.</description>
     </key>
     <key name="last-crop-height" type="i">
         <default>1</default>
-        <summary>Most-recently-used crop custom aspect ratio's denominator.</summary>
+        <summary>Most-recently-used crop custom aspect ratio’s denominator.</summary>
         <description>A nonzero, positive integer representing the height part of the last custom crop ratio 
the user entered.</description>
     </key>
 </schema>
diff --git a/misc/shotwell.appdata.xml.in b/misc/shotwell.appdata.xml.in
index 955ec1c..15a8e92 100644
--- a/misc/shotwell.appdata.xml.in
+++ b/misc/shotwell.appdata.xml.in
@@ -12,7 +12,7 @@
       Shotwell is an easy-to-use, fast photo organizer designed for the GNOME desktop.
       It allows you to import photos from your camera or disk, organize them by date and subject
       matter, even ratings.  It also offers basic photo editing, like crop, red-eye correction,
-      color adjustments, and straighten.  Shotwell's non-destructive photo editor does not alter
+      color adjustments, and straighten.  Shotwell’s non-destructive photo editor does not alter
       your master photos, making it easy to experiment and correct errors.
     </p>
     <p>
diff --git a/plugins/shotwell-publishing-extras/GalleryConnector.vala 
b/plugins/shotwell-publishing-extras/GalleryConnector.vala
index ee7bd19..9932862 100644
--- a/plugins/shotwell-publishing-extras/GalleryConnector.vala
+++ b/plugins/shotwell-publishing-extras/GalleryConnector.vala
@@ -798,7 +798,7 @@ private class GalleryUploadTransaction :
 
 
 public class GalleryPublisher : Spit.Publishing.Publisher, GLib.Object {
-    private const string BAD_FILE_MSG = _("\n\nThe file \"%s\" may not be supported by or may be too large 
for this instance of Gallery3.");
+    private const string BAD_FILE_MSG = _("\n\nThe file “%s” may not be supported by or may be too large for 
this instance of Gallery3.");
     private const string BAD_MOVIE_MSG = _("\nNote that Gallery3 only supports the video types that 
Flowplayer does.");
 
     private weak Spit.Publishing.PluginHost host = null;
@@ -1018,7 +1018,7 @@ public class GalleryPublisher : Spit.Publishing.Publisher, GLib.Object {
             warning("Could not parse UI file! Error: %s.", e.message);
             host.post_error(
                 new Spit.Publishing.PublishingError.LOCAL_FILE_ERROR(
-                    _("A file required for publishing is unavailable. Publishing to %s can't continue.")
+                    _("A file required for publishing is unavailable. Publishing to %s can’t continue.")
                         .printf(SERVICE_NAME)
                 )
             );
@@ -1770,7 +1770,7 @@ internal class CredentialsPane : Spit.Publishing.DialogPane, GLib.Object {
             warning("Could not parse UI file! Error: %s.", e.message);
             host.post_error(
                 new Spit.Publishing.PublishingError.LOCAL_FILE_ERROR(
-                    _("A file required for publishing is unavailable. Publishing to %s can't continue.")
+                    _("A file required for publishing is unavailable. Publishing to %s can’t continue.")
                         .printf(SERVICE_NAME)
                     )
                 );
diff --git a/plugins/shotwell-publishing-extras/RajcePublishing.vala 
b/plugins/shotwell-publishing-extras/RajcePublishing.vala
index 4cf232c..5a223aa 100644
--- a/plugins/shotwell-publishing-extras/RajcePublishing.vala
+++ b/plugins/shotwell-publishing-extras/RajcePublishing.vala
@@ -37,7 +37,7 @@ public class RajceService : Object, Spit.Pluggable, Spit.Publishing.Service
     public void get_info(ref Spit.PluggableInfo info)
        {
         info.authors = "rajce.net developers";
-        info.copyright = _("Copyright (C) 2013 rajce.net");
+        info.copyright = _("Copyright © 2013 rajce.net");
         info.translators = Resources.TRANSLATORS;
         info.version = _VERSION;
         info.website_name = Resources.WEBSITE_NAME;
diff --git a/plugins/shotwell-publishing-extras/TumblrPublishing.vala 
b/plugins/shotwell-publishing-extras/TumblrPublishing.vala
index 3f5a2ed..bc6fcec 100644
--- a/plugins/shotwell-publishing-extras/TumblrPublishing.vala
+++ b/plugins/shotwell-publishing-extras/TumblrPublishing.vala
@@ -102,12 +102,12 @@ public class TumblrPublisher : Spit.Publishing.Publisher, GLib.Object {
     private SizeEntry[] create_sizes() {
         SizeEntry[] result = new SizeEntry[0];
 
-        result += new SizeEntry(_("500 x 375 pixels"), 500);
-        result += new SizeEntry(_("1024 x 768 pixels"), 1024);
-        result += new SizeEntry(_("1280 x 853 pixels"), 1280);
+        result += new SizeEntry(_("500 × 375 pixels"), 500);
+        result += new SizeEntry(_("1024 × 768 pixels"), 1024);
+        result += new SizeEntry(_("1280 × 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);
+//        result += new SizeEntry(_("2048 × 1536 pixels"), 2048);
+//        result += new SizeEntry(_("4096 × 3072 pixels"), 4096);
 //        result += new SizeEntry(_("Original size"), ORIGINAL_SIZE);
 
         return result;
@@ -308,7 +308,7 @@ public class TumblrPublisher : Spit.Publishing.Publisher, GLib.Object {
             
             if (split_pair.length != 2)
                 host.post_error(new Spit.Publishing.PublishingError.MALFORMED_RESPONSE(
-                    _("'%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];
@@ -318,7 +318,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(
-                _("'%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);
     }
@@ -556,7 +556,7 @@ public class TumblrPublisher : Spit.Publishing.Publisher, GLib.Object {
             return;
         
         if (was_started)
-            error(_("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.");
         
diff --git a/plugins/shotwell-publishing/FacebookPublishing.vala 
b/plugins/shotwell-publishing/FacebookPublishing.vala
index 2b0812a..6aa2014 100644
--- a/plugins/shotwell-publishing/FacebookPublishing.vala
+++ b/plugins/shotwell-publishing/FacebookPublishing.vala
@@ -61,7 +61,7 @@ internal const string USER_VISIBLE_NAME = "Facebook";
 internal const string APPLICATION_ID = "1612018629063184";
 internal const string DEFAULT_ALBUM_NAME = _("Shotwell Connect");
 internal const string SERVICE_WELCOME_MESSAGE =
-    _("You are not currently logged into Facebook.\n\nIf you don't yet have a Facebook account, you can 
create one during the login process. During login, Shotwell Connect may ask you for permission to upload 
photos and publish to your feed. These permissions are required for Shotwell Connect to function.");
+    _("You are not currently logged into Facebook.\n\nIf you don’t yet have a Facebook account, you can 
create one during the login process. During login, Shotwell Connect may ask you for permission to upload 
photos and publish to your feed. These permissions are required for Shotwell Connect to function.");
 internal const string RESTART_ERROR_MESSAGE =
     _("You have already logged in and out of Facebook during this Shotwell session.\nTo continue publishing 
to Facebook, quit and restart Shotwell, then try publishing again.");
 internal const string USER_AGENT = "Java/1.6.0_16";
@@ -252,7 +252,7 @@ public class FacebookPublisher : Spit.Publishing.Publisher, GLib.Object {
         debug("ACTION: testing connection to Facebook endpoint.");
         host.set_service_locked(true);
         
-        host.install_static_message_pane(_("Testing connection to Facebook..."));
+        host.install_static_message_pane(_("Testing connection to Facebook…"));
         
         GraphMessage endpoint_test_message = graph_session.new_endpoint_test();
         endpoint_test_message.completed.connect(on_endpoint_test_completed);
@@ -345,7 +345,7 @@ public class FacebookPublisher : Spit.Publishing.Publisher, GLib.Object {
         debug("ACTION: creating a new album named \"%s\".\n", publishing_params.new_album_name);
         
         host.set_service_locked(true);
-        host.install_static_message_pane(_("Creating album..."));
+        host.install_static_message_pane(_("Creating album…"));
         
         GraphMessage create_album_message = graph_session.new_create_album(
             publishing_params.new_album_name, publishing_params.privacy_object);
@@ -371,7 +371,7 @@ public class FacebookPublisher : Spit.Publishing.Publisher, GLib.Object {
             warning("Could not parse UI file! Error: %s.", e.message);
             host.post_error(
                 new Spit.Publishing.PublishingError.LOCAL_FILE_ERROR(
-                    _("A file required for publishing is unavailable. Publishing to Facebook can't 
continue.")));
+                    _("A file required for publishing is unavailable. Publishing to Facebook can’t 
continue.")));
             return;
         }
         
diff --git a/plugins/shotwell-publishing/FlickrPublishing.vala 
b/plugins/shotwell-publishing/FlickrPublishing.vala
index 415e36a..a4697b6 100644
--- a/plugins/shotwell-publishing/FlickrPublishing.vala
+++ b/plugins/shotwell-publishing/FlickrPublishing.vala
@@ -371,7 +371,7 @@ public class FlickrPublisher : Spit.Publishing.Publisher, GLib.Object {
         debug("ACTION: running authentication request transaction");
 
         host.set_service_locked(true);
-        host.install_static_message_pane(_("Preparing for login..."));
+        host.install_static_message_pane(_("Preparing for login…"));
 
         AuthenticationRequestTransaction txn = new AuthenticationRequestTransaction(session);
         txn.completed.connect(on_auth_request_txn_completed);
@@ -441,7 +441,7 @@ public class FlickrPublisher : Spit.Publishing.Publisher, GLib.Object {
             warning("Could not parse UI file! Error: %s.", e.message);
             host.post_error(
                 new Spit.Publishing.PublishingError.LOCAL_FILE_ERROR(
-                    _("A file required for publishing is unavailable. Publishing to Flickr can't 
continue.")));
+                    _("A file required for publishing is unavailable. Publishing to Flickr can’t 
continue.")));
             return;        
         }
         
@@ -454,7 +454,7 @@ public class FlickrPublisher : Spit.Publishing.Publisher, GLib.Object {
         debug("ACTION: validating authorization PIN %s", pin);
         
         host.set_service_locked(true);
-        host.install_static_message_pane(_("Verifying authorization..."));
+        host.install_static_message_pane(_("Verifying authorization…"));
         
         AccessTokenFetchTransaction txn = new AccessTokenFetchTransaction(session, pin);
         txn.completed.connect(on_access_token_fetch_txn_completed);
@@ -591,7 +591,7 @@ public class FlickrPublisher : Spit.Publishing.Publisher, GLib.Object {
             warning("Could not parse UI file! Error: %s.", e.message);
             host.post_error(
                 new Spit.Publishing.PublishingError.LOCAL_FILE_ERROR(
-                    _("A file required for publishing is unavailable. Publishing to Flickr can't 
continue.")));
+                    _("A file required for publishing is unavailable. Publishing to Flickr can’t 
continue.")));
             return;
         }
 
@@ -1228,10 +1228,10 @@ internal class PublishingOptionsPane : Spit.Publishing.DialogPane, GLib.Object {
     private SizeEntry[] create_sizes() {
         SizeEntry[] result = new SizeEntry[0];
 
-        result += new SizeEntry(_("500 x 375 pixels"), 500);
-        result += new SizeEntry(_("1024 x 768 pixels"), 1024);
-        result += new SizeEntry(_("2048 x 1536 pixels"), 2048);
-        result += new SizeEntry(_("4096 x 3072 pixels"), 4096);
+        result += new SizeEntry(_("500 × 375 pixels"), 500);
+        result += new SizeEntry(_("1024 × 768 pixels"), 1024);
+        result += new SizeEntry(_("2048 × 1536 pixels"), 2048);
+        result += new SizeEntry(_("4096 × 3072 pixels"), 4096);
         result += new SizeEntry(_("Original size"), ORIGINAL_SIZE);
 
         return result;
diff --git a/plugins/shotwell-publishing/PicasaPublishing.vala 
b/plugins/shotwell-publishing/PicasaPublishing.vala
index a393c08..0918467 100644
--- a/plugins/shotwell-publishing/PicasaPublishing.vala
+++ b/plugins/shotwell-publishing/PicasaPublishing.vala
@@ -358,7 +358,7 @@ public class PicasaPublisher : Publishing.RESTSupport.GooglePublisher {
             warning("Could not parse UI file! Error: %s.", e.message);
             get_host().post_error(
                 new Spit.Publishing.PublishingError.LOCAL_FILE_ERROR(
-                    _("A file required for publishing is unavailable. Publishing to Picasa can't 
continue.")));
+                    _("A file required for publishing is unavailable. Publishing to Picasa can’t 
continue.")));
             return;
         }
 
@@ -376,7 +376,7 @@ public class PicasaPublisher : Publishing.RESTSupport.GooglePublisher {
         debug("ACTION: creating new album '%s' on remote server.",
             publishing_parameters.get_target_album_name());
 
-        get_host().install_static_message_pane(_("Creating album..."));
+        get_host().install_static_message_pane(_("Creating album…"));
 
         get_host().set_service_locked(true);
 
@@ -743,10 +743,10 @@ internal class PublishingOptionsPane : Spit.Publishing.DialogPane, GLib.Object {
     private SizeDescription[] create_size_descriptions() {
         SizeDescription[] result = new SizeDescription[0];
 
-        result += new SizeDescription(_("Small (640 x 480 pixels)"), 640);
-        result += new SizeDescription(_("Medium (1024 x 768 pixels)"), 1024);
-        result += new SizeDescription(_("Recommended (1600 x 1200 pixels)"), 1600);
-        result += new SizeDescription(_("Google+ (2048 x 1536 pixels)"), 2048);
+        result += new SizeDescription(_("Small (640 × 480 pixels)"), 640);
+        result += new SizeDescription(_("Medium (1024 × 768 pixels)"), 1024);
+        result += new SizeDescription(_("Recommended (1600 × 1200 pixels)"), 1600);
+        result += new SizeDescription(_("Google+ (2048 × 1536 pixels)"), 2048);
         result += new SizeDescription(_("Original Size"), PublishingParameters.ORIGINAL_SIZE);
 
         return result;
diff --git a/plugins/shotwell-publishing/PiwigoPublishing.vala 
b/plugins/shotwell-publishing/PiwigoPublishing.vala
index c3a1bd0..e2db60c 100644
--- a/plugins/shotwell-publishing/PiwigoPublishing.vala
+++ b/plugins/shotwell-publishing/PiwigoPublishing.vala
@@ -744,7 +744,7 @@ public class PiwigoPublisher : Spit.Publishing.Publisher, GLib.Object {
         assert(category.is_local());
 
         host.set_service_locked(true);
-        host.install_static_message_pane(_("Creating album %s...").printf(category.name));
+        host.install_static_message_pane(_("Creating album %s…").printf(category.name));
 
         CategoriesAddTransaction creation_trans = new CategoriesAddTransaction(
             session, category.name.strip(), int.parse(category.uppercats), category.comment);
@@ -1227,10 +1227,10 @@ internal class PublishingOptionsPane : Spit.Publishing.DialogPane, Object {
     private SizeEntry[] create_sizes() {
         SizeEntry[] result = new SizeEntry[0];
 
-        result += new SizeEntry(500, _("500 x 375 pixels"));
-        result += new SizeEntry(1024, _("1024 x 768 pixels"));
-        result += new SizeEntry(2048, _("2048 x 1536 pixels"));
-        result += new SizeEntry(4096, _("4096 x 3072 pixels"));
+        result += new SizeEntry(500, _("500 × 375 pixels"));
+        result += new SizeEntry(1024, _("1024 × 768 pixels"));
+        result += new SizeEntry(2048, _("2048 × 1536 pixels"));
+        result += new SizeEntry(4096, _("4096 × 3072 pixels"));
         result += new SizeEntry(ORIGINAL_SIZE, _("Original size"));
 
         return result;
diff --git a/plugins/shotwell-publishing/YouTubePublishing.vala 
b/plugins/shotwell-publishing/YouTubePublishing.vala
index 7325c32..0e5da17 100644
--- a/plugins/shotwell-publishing/YouTubePublishing.vala
+++ b/plugins/shotwell-publishing/YouTubePublishing.vala
@@ -360,7 +360,7 @@ public class YouTubePublisher : Publishing.RESTSupport.GooglePublisher {
             warning("Could not parse UI file! Error: %s.", e.message);
             get_host().post_error(
                 new Spit.Publishing.PublishingError.LOCAL_FILE_ERROR(
-                    _("A file required for publishing is unavailable. Publishing to Youtube can't 
continue.")));
+                    _("A file required for publishing is unavailable. Publishing to Youtube can’t 
continue.")));
             return;
         }
 
@@ -461,7 +461,7 @@ internal class PublishingOptionsPane : Spit.Publishing.DialogPane, GLib.Object {
 
         login_identity_label.set_label(_("You are logged into YouTube as %s.").printf(
             publishing_parameters.get_user_name()));
-        publish_to_label.set_label(_("Videos will appear in '%s'").printf(
+        publish_to_label.set_label(_("Videos will appear in “%s”").printf(
             publishing_parameters.get_channel_name()));
 
         foreach(PrivacyDescription desc in privacy_descriptions) {
diff --git a/src/AppWindow.vala b/src/AppWindow.vala
index 7e521b8..f99908c 100644
--- a/src/AppWindow.vala
+++ b/src/AppWindow.vala
@@ -653,7 +653,7 @@ public abstract class AppWindow : PageWindow {
     }
     
     public static void database_error(DatabaseError err) {
-        panic(_("A fatal error occurred when accessing Shotwell's library.  Shotwell cannot 
continue.\n\n%s").printf(
+        panic(_("A fatal error occurred when accessing Shotwell’s library.  Shotwell cannot 
continue.\n\n%s").printf(
             err.message));
     }
     
diff --git a/src/Commands.vala b/src/Commands.vala
index d922c7d..73e6c8d 100644
--- a/src/Commands.vala
+++ b/src/Commands.vala
@@ -1692,7 +1692,7 @@ public class ReparentTagCommand : PageCommand {
     bool to_path_exists = false;
     
     public ReparentTagCommand(Tag tag, string new_parent_path) {
-        base (_("Move Tag \"%s\"").printf(tag.get_user_visible_name()), "");
+        base (_("Move Tag “%s”").printf(tag.get_user_visible_name()), "");
 
         this.from_path = tag.get_path();
 
diff --git a/src/Dialogs.vala b/src/Dialogs.vala
index 70b6bdb..739cff4 100644
--- a/src/Dialogs.vala
+++ b/src/Dialogs.vala
@@ -13,8 +13,8 @@ public bool confirm_delete_tag(Tag tag) {
     if (count == 0)
         return true;
     string msg = ngettext(
-        "This will remove the tag \"%s\" from one photo.  Continue?",
-        "This will remove the tag \"%s\" from %d photos.  Continue?",
+        "This will remove the tag “%s” from one photo.  Continue?",
+        "This will remove the tag “%s” from %d photos.  Continue?",
         count).printf(tag.get_user_visible_name(), count);
     
     return AppWindow.negate_affirm_question(msg, _("_Cancel"), _("_Delete"),
@@ -22,7 +22,7 @@ public bool confirm_delete_tag(Tag tag) {
 }
 
 public bool confirm_delete_saved_search(SavedSearch search) {
-    string msg = _("This will remove the saved search \"%s\".  Continue?")
+    string msg = _("This will remove the saved search “%s”.  Continue?")
         .printf(search.get_name());
     
     return AppWindow.negate_affirm_question(msg, _("_Cancel"), _("_Delete"),
@@ -113,7 +113,7 @@ public void open_external_editor_error_dialog(Error err, Photo photo) {
     if (err is IOError.PERMISSION_DENIED || err is FileError.PERM) {
          // Yes - display an alternate error message here.
          AppWindow.error_message(          
-            _("Shotwell couldn't create a file for editing this photo because you do not have permission to 
write to %s.").printf(photo.get_master_file().get_parent().get_path()));
+            _("Shotwell couldn’t create a file for editing this photo because you do not have permission to 
write to %s.").printf(photo.get_master_file().get_parent().get_path()));
     } else {
         // No - something else is wrong, display the error message 
         // the system gave us.
@@ -576,7 +576,7 @@ public string create_result_report_from_manifest(ImportManifest manifest) {
     // Files Not Imported Because They Weren't Recognized as Photos or Videos
     //
     if (manifest.skipped_files.size > 0) {
-        builder.append(_("Files Not Imported Because They Weren't Recognized as Photos or Videos:")
+        builder.append(_("Files Not Imported Because They Weren’t Recognized as Photos or Videos:")
             + "\n\n");
         
         foreach (BatchImportResult result in manifest.skipped_files) {
@@ -591,7 +591,7 @@ public string create_result_report_from_manifest(ImportManifest manifest) {
     // Photos/Videos Not Imported Because They Weren't in a Format Shotwell Understands
     //
     if (manifest.skipped_photos.size > 0) {
-        builder.append(_("Photos/Videos Not Imported Because They Weren't in a Format Shotwell Understands:")
+        builder.append(_("Photos/Videos Not Imported Because They Weren’t in a Format Shotwell Understands:")
             + "\n\n");
         
         foreach (BatchImportResult result in manifest.skipped_photos) {
@@ -606,11 +606,11 @@ public string create_result_report_from_manifest(ImportManifest manifest) {
     // Photos/Videos Not Imported Because Shotwell Couldn't Copy Them into its Library
     //
     if (manifest.write_failed.size > 0) {
-        builder.append(_("Photos/Videos Not Imported Because Shotwell Couldn't Copy Them into its Library:")
+        builder.append(_("Photos/Videos Not Imported Because Shotwell Couldn’t Copy Them into its Library:")
              + "\n\n");
         
         foreach (BatchImportResult result in manifest.write_failed) {
-            current_file_summary = (_("couldn't copy %s\n\tto %s")).printf(result.src_identifier,
+            current_file_summary = (_("couldn’t copy %s\n\tto %s")).printf(result.src_identifier,
             result.dest_identifier) + "\n\t" + _("error message:") + " " +
             result.errmsg + "\n\n";
 
@@ -2143,7 +2143,7 @@ public class WelcomeDialog : Gtk.Dialog {
         content.add(import_content);
         content.pack_start(instructions, false, false, 0);
 
-        hide_button = new Gtk.CheckButton.with_mnemonic(_("_Don't show this message again"));
+        hide_button = new Gtk.CheckButton.with_mnemonic(_("_Don’t show this message again"));
         hide_button.set_active(true);
         content.pack_start(hide_button, false, false, 6);
         
diff --git a/src/MediaPage.vala b/src/MediaPage.vala
index 1da615c..89aa2fc 100644
--- a/src/MediaPage.vala
+++ b/src/MediaPage.vala
@@ -467,7 +467,7 @@ public abstract class MediaPage : CheckerboardPage {
         Gtk.ToggleActionEntry tags = { "ViewTags", null, TRANSLATABLE, "<Ctrl><Shift>G",
             TRANSLATABLE, on_display_tags, Config.Facade.get_instance().get_display_photo_tags() };
         tags.label = _("Ta_gs");
-        tags.tooltip = _("Display each photo's tags");
+        tags.tooltip = _("Display each photo’s tags");
         toggle_actions += tags;
         
         return toggle_actions;
diff --git a/src/Printing.vala b/src/Printing.vala
index 1cae222..f099ed2 100644
--- a/src/Printing.vala
+++ b/src/Printing.vala
@@ -815,49 +815,49 @@ public class PrintManager {
     public StandardPrintSize[] get_standard_sizes() {
         StandardPrintSize[] result = new StandardPrintSize[0];
 
-        result += new StandardPrintSize(_("Wallet (2 x 3 in.)"),
+        result += new StandardPrintSize(_("Wallet (2 × 3 in.)"),
             Measurement(3, MeasurementUnit.INCHES),
             Measurement(2, MeasurementUnit.INCHES));
-        result += new StandardPrintSize(_("Notecard (3 x 5 in.)"),
+        result += new StandardPrintSize(_("Notecard (3 × 5 in.)"),
             Measurement(5, MeasurementUnit.INCHES),
             Measurement(3, MeasurementUnit.INCHES));
-        result += new StandardPrintSize(_("4 x 6 in."),
+        result += new StandardPrintSize(_("4 × 6 in."),
             Measurement(6, MeasurementUnit.INCHES),
             Measurement(4, MeasurementUnit.INCHES));
-        result += new StandardPrintSize(_("5 x 7 in."),
+        result += new StandardPrintSize(_("5 × 7 in."),
             Measurement(7, MeasurementUnit.INCHES),
             Measurement(5, MeasurementUnit.INCHES));
-        result += new StandardPrintSize(_("8 x 10 in."),
+        result += new StandardPrintSize(_("8 × 10 in."),
             Measurement(10, MeasurementUnit.INCHES),
             Measurement(8, MeasurementUnit.INCHES));
-        result += new StandardPrintSize(_("11 x 14 in."),
+        result += new StandardPrintSize(_("11 × 14 in."),
             Measurement(14, MeasurementUnit.INCHES),
             Measurement(11, MeasurementUnit.INCHES));
-        result += new StandardPrintSize(_("16 x 20 in."),
+        result += new StandardPrintSize(_("16 × 20 in."),
             Measurement(20, MeasurementUnit.INCHES),
             Measurement(16, MeasurementUnit.INCHES));
         result += new StandardPrintSize(("-"),
             Measurement(0, MeasurementUnit.INCHES),
             Measurement(0, MeasurementUnit.INCHES));
-        result += new StandardPrintSize(_("Metric Wallet (9 x 13 cm)"),
+        result += new StandardPrintSize(_("Metric Wallet (9 × 13 cm)"),
             Measurement(13, MeasurementUnit.CENTIMETERS),
             Measurement(9, MeasurementUnit.CENTIMETERS));
-        result += new StandardPrintSize(_("Postcard (10 x 15 cm)"),
+        result += new StandardPrintSize(_("Postcard (10 × 15 cm)"),
             Measurement(15, MeasurementUnit.CENTIMETERS),
             Measurement(10, MeasurementUnit.CENTIMETERS));
-        result += new StandardPrintSize(_("13 x 18 cm"),
+        result += new StandardPrintSize(_("13 × 18 cm"),
             Measurement(18, MeasurementUnit.CENTIMETERS),
             Measurement(13, MeasurementUnit.CENTIMETERS));
-        result += new StandardPrintSize(_("18 x 24 cm"),
+        result += new StandardPrintSize(_("18 × 24 cm"),
             Measurement(24, MeasurementUnit.CENTIMETERS),
             Measurement(18, MeasurementUnit.CENTIMETERS));
-        result += new StandardPrintSize(_("20 x 30 cm"),
+        result += new StandardPrintSize(_("20 × 30 cm"),
             Measurement(30, MeasurementUnit.CENTIMETERS),
             Measurement(20, MeasurementUnit.CENTIMETERS));
-        result += new StandardPrintSize(_("24 x 40 cm"),
+        result += new StandardPrintSize(_("24 × 40 cm"),
             Measurement(40, MeasurementUnit.CENTIMETERS),
             Measurement(24, MeasurementUnit.CENTIMETERS));
-        result += new StandardPrintSize(_("30 x 40 cm"),
+        result += new StandardPrintSize(_("30 × 40 cm"),
             Measurement(40, MeasurementUnit.CENTIMETERS),
             Measurement(30, MeasurementUnit.CENTIMETERS));
 
diff --git a/src/Resources.vala b/src/Resources.vala
index d517d78..138772e 100644
--- a/src/Resources.vala
+++ b/src/Resources.vala
@@ -185,7 +185,7 @@ along with Shotwell; if not, write to the Free Software Foundation, Inc.,
     
     public const string ENHANCE_MENU = _("_Enhance");
     public const string ENHANCE_LABEL = _("Enhance");
-    public const string ENHANCE_TOOLTIP = _("Automatically improve the photo's appearance");
+    public const string ENHANCE_TOOLTIP = _("Automatically improve the photo’s appearance");
     
     public const string COPY_ADJUSTMENTS_MENU = _("_Copy Color Adjustments");
     public const string COPY_ADJUSTMENTS_LABEL = _("Copy Color Adjustments");
@@ -197,7 +197,7 @@ along with Shotwell; if not, write to the Free Software Foundation, Inc.,
     
     public const string CROP_MENU = _("_Crop");
     public const string CROP_LABEL = _("Crop");
-    public const string CROP_TOOLTIP = _("Crop the photo's size");
+    public const string CROP_TOOLTIP = _("Crop the photo’s size");
 
     public const string STRAIGHTEN_MENU = _("_Straighten");
     public const string STRAIGHTEN_LABEL = _("Straighten");    
@@ -209,7 +209,7 @@ along with Shotwell; if not, write to the Free Software Foundation, Inc.,
     
     public const string ADJUST_MENU = _("_Adjust");
     public const string ADJUST_LABEL = _("Adjust");
-    public const string ADJUST_TOOLTIP = _("Adjust the photo's color and tone");
+    public const string ADJUST_TOOLTIP = _("Adjust the photo’s color and tone");
     
     public const string REVERT_MENU = _("Re_vert to Original");
     public const string REVERT_LABEL = _("Revert to Original");
@@ -277,7 +277,7 @@ along with Shotwell; if not, write to the Free Software Foundation, Inc.,
     public const string DISPLAY_UNRATED_OR_HIGHER_TOOLTIP = _("Show all photos");
 
     public const string VIEW_RATINGS_MENU = _("_Ratings");
-    public const string VIEW_RATINGS_TOOLTIP = _("Display each photo's rating");
+    public const string VIEW_RATINGS_TOOLTIP = _("Display each photo’s rating");
 
     public const string FILTER_PHOTOS_MENU = _("_Filter Photos");
     public const string FILTER_PHOTOS_LABEL = _("Filter Photos");
@@ -337,10 +337,10 @@ along with Shotwell; if not, write to the Free Software Foundation, Inc.,
     
     public string add_tags_label(string[] names) {
         if (names.length == 1) {
-            return _("Add Tag \"%s\"").printf(HierarchicalTagUtilities.get_basename(names[0]));
+            return _("Add Tag “%s”").printf(HierarchicalTagUtilities.get_basename(names[0]));
         } else if (names.length == 2) {
             // Used when adding two tags to photo(s)
-            return _("Add Tags \"%s\" and \"%s\"").printf(
+            return _("Add Tags “%s” and “%s”").printf(
                 HierarchicalTagUtilities.get_basename(names[0]),
                 HierarchicalTagUtilities.get_basename(names[1]));
         } else {
@@ -350,11 +350,11 @@ along with Shotwell; if not, write to the Free Software Foundation, Inc.,
     }
     
     public string delete_tag_menu(string name) {
-        return _("_Delete Tag \"%s\"").printf(name);
+        return _("_Delete Tag “%s”").printf(name);
     }
     
     public string delete_tag_label(string name) {
-        return _("Delete Tag \"%s\"").printf(name);
+        return _("Delete Tag “%s”").printf(name);
     }
     
     public const string DELETE_TAG_TITLE = _("Delete Tag");
@@ -363,11 +363,11 @@ along with Shotwell; if not, write to the Free Software Foundation, Inc.,
     public const string NEW_CHILD_TAG_SIDEBAR_MENU = _("_New");
     
     public string rename_tag_menu(string name) {
-        return _("Re_name Tag \"%s\"…").printf(name);
+        return _("Re_name Tag “%s”…").printf(name);
     }
     
     public string rename_tag_label(string old_name, string new_name) {
-        return _("Rename Tag \"%s\" to \"%s\"").printf(old_name, new_name);
+        return _("Rename Tag “%s” to “%s”").printf(old_name, new_name);
     }
     
     public const string RENAME_TAG_SIDEBAR_MENU = _("_Rename…");
@@ -376,30 +376,30 @@ along with Shotwell; if not, write to the Free Software Foundation, Inc.,
     public const string MODIFY_TAGS_LABEL = _("Modify Tags");
     
     public string tag_photos_label(string name, int count) {
-        return ((count == 1) ? _("Tag Photo as \"%s\"") : _("Tag Photos as \"%s\"")).printf(name);
+        return ((count == 1) ? _("Tag Photo as “%s”") : _("Tag Photos as “%s”")).printf(name);
     }
     
     public string tag_photos_tooltip(string name, int count) {
-        return ((count == 1) ? _("Tag the selected photo as \"%s\"") :
-            _("Tag the selected photos as \"%s\"")).printf(name);
+        return ((count == 1) ? _("Tag the selected photo as “%s”") :
+            _("Tag the selected photos as “%s”")).printf(name);
     }
     
     public string untag_photos_menu(string name, int count) {
-        return ((count == 1) ? _("Remove Tag \"%s\" From _Photo") :
-            _("Remove Tag \"%s\" From _Photos")).printf(name);
+        return ((count == 1) ? _("Remove Tag “%s” From _Photo") :
+            _("Remove Tag “%s” From _Photos")).printf(name);
     }
     
     public string untag_photos_label(string name, int count) {
-        return ((count == 1) ? _("Remove Tag \"%s\" From Photo") :
-            _("Remove Tag \"%s\" From Photos")).printf(name);
+        return ((count == 1) ? _("Remove Tag “%s” From Photo") :
+            _("Remove Tag “%s” From Photos")).printf(name);
     }
     
     public static string rename_tag_exists_message(string name) {
-        return _("Unable to rename tag to \"%s\" because the tag already exists.").printf(name);
+        return _("Unable to rename tag to “%s” because the tag already exists.").printf(name);
     }
     
     public static string rename_search_exists_message(string name) {
-        return _("Unable to rename search to \"%s\" because the search already exists.").printf(name);
+        return _("Unable to rename search to “%s” because the search already exists.").printf(name);
     }
     
     public const string DEFAULT_SAVED_SEARCH_NAME = _("Saved Search");
@@ -411,11 +411,11 @@ along with Shotwell; if not, write to the Free Software Foundation, Inc.,
     public const string RENAME_SEARCH_MENU = _("Re_name…");
     
     public string rename_search_label(string old_name, string new_name) {
-        return _("Rename Search \"%s\" to \"%s\"").printf(old_name, new_name);
+        return _("Rename Search “%s” to “%s”").printf(old_name, new_name);
     }
     
     public string delete_search_label(string name) {
-        return _("Delete Search \"%s\"").printf(name);
+        return _("Delete Search “%s”").printf(name);
     }
     
     private unowned string rating_menu(Rating rating) {
@@ -679,7 +679,7 @@ along with Shotwell; if not, write to the Free Software Foundation, Inc.,
     public const string RESTORE_PHOTOS_TOOLTIP = _("Move the selected photos back into the library");
     
     public const string JUMP_TO_FILE_MENU = _("Show in File Mana_ger");
-    public const string JUMP_TO_FILE_TOOLTIP = _("Open the selected photo's directory in the file manager");
+    public const string JUMP_TO_FILE_TOOLTIP = _("Open the selected photo’s directory in the file manager");
     
     public string jump_to_file_failed(Error err) {
         return _("Unable to open in file manager: %s").printf(err.message);
diff --git a/src/camera/ImportPage.vala b/src/camera/ImportPage.vala
index 08cfa72..0ad287c 100644
--- a/src/camera/ImportPage.vala
+++ b/src/camera/ImportPage.vala
@@ -1026,7 +1026,7 @@ public class ImportPage : CheckerboardPage {
                         unmount_camera(mount);
                     }
                 } else {
-                    string locked_message = _("The camera is locked by another application.  Shotwell can 
only access the camera when it's unlocked.  Please close any other application using the camera and try 
again.");
+                    string locked_message = _("The camera is locked by another application.  Shotwell can 
only access the camera when it’s unlocked.  Please close any other application using the camera and try 
again.");
 
                     // it's not mounted, so another application must have it locked
                     Gtk.MessageDialog dialog = new Gtk.MessageDialog(AppWindow.get_instance(),
diff --git a/src/data_imports/DataImportsPluginHost.vala b/src/data_imports/DataImportsPluginHost.vala
index 6939ea5..158b8f4 100644
--- a/src/data_imports/DataImportsPluginHost.vala
+++ b/src/data_imports/DataImportsPluginHost.vala
@@ -145,7 +145,7 @@ public class ConcreteDataImportsHost : Plugins.StandardHostInterface,
     }
     
     public void post_error_message(string message) {
-        string msg = _("Importing from %s can't continue because an error occurred:").printf(
+        string msg = _("Importing from %s can’t continue because an error occurred:").printf(
             active_importer.get_service().get_pluggable_name());
         msg += GLib.Markup.printf_escaped("\n\n<i>%s</i>\n\n", message);
         msg += _("To try importing from another service, select one from the above menu.");
@@ -291,7 +291,7 @@ public class WelcomeDataImportsHost : Plugins.StandardHostInterface,
     }
     
     public void post_error_message(string message) {
-        string msg = _("Importing from %s can't continue because an error occurred:").printf(
+        string msg = _("Importing from %s can’t continue because an error occurred:").printf(
             active_importer.get_service().get_pluggable_name());
         
         debug(msg);
diff --git a/src/editing_tools/EditingTools.vala b/src/editing_tools/EditingTools.vala
index 4af97d5..b2ba172 100644
--- a/src/editing_tools/EditingTools.vala
+++ b/src/editing_tools/EditingTools.vala
@@ -755,28 +755,28 @@ public class CropTool : EditingTool {
         result += new ConstraintDescription(_("Screen"), 0, 0, true, SCREEN_ASPECT_RATIO);
         result += new ConstraintDescription(_("Original Size"), 0, 0, true, ORIGINAL_ASPECT_RATIO);
         result += new ConstraintDescription(_("-"), 0, 0, false, SEPARATOR);
-        result += new ConstraintDescription(_("SD Video (4 : 3)"), 4, 3, true);
-        result += new ConstraintDescription(_("HD Video (16 : 9)"), 16, 9, true);
+        result += new ConstraintDescription(_("SD Video (4 ∶ 3)"), 4, 3, true);
+        result += new ConstraintDescription(_("HD Video (16 ∶ 9)"), 16, 9, true);
         result += new ConstraintDescription(_("-"), 0, 0, false, SEPARATOR);
-        result += new ConstraintDescription(_("Wallet (2 x 3 in.)"), 3, 2, true);
-        result += new ConstraintDescription(_("Notecard (3 x 5 in.)"), 5, 3, true);
-        result += new ConstraintDescription(_("4 x 6 in."), 6, 4, true);
-        result += new ConstraintDescription(_("5 x 7 in."), 7, 5, true);
-        result += new ConstraintDescription(_("8 x 10 in."), 10, 8, true);
-        result += new ConstraintDescription(_("Letter (8.5 x 11 in.)"), 85, 110, true);
-        result += new ConstraintDescription(_("11 x 14 in."), 14, 11, true);
-        result += new ConstraintDescription(_("Tabloid (11 x 17 in.)"), 17, 11, true);
-        result += new ConstraintDescription(_("16 x 20 in."), 20, 16, true);
+        result += new ConstraintDescription(_("Wallet (2 × 3 in.)"), 3, 2, true);
+        result += new ConstraintDescription(_("Notecard (3 × 5 in.)"), 5, 3, true);
+        result += new ConstraintDescription(_("4 × 6 in."), 6, 4, true);
+        result += new ConstraintDescription(_("5 × 7 in."), 7, 5, true);
+        result += new ConstraintDescription(_("8 × 10 in."), 10, 8, true);
+        result += new ConstraintDescription(_("Letter (8.5 × 11 in.)"), 85, 110, true);
+        result += new ConstraintDescription(_("11 × 14 in."), 14, 11, true);
+        result += new ConstraintDescription(_("Tabloid (11 × 17 in.)"), 17, 11, true);
+        result += new ConstraintDescription(_("16 × 20 in."), 20, 16, true);
         result += new ConstraintDescription(_("-"), 0, 0, false, SEPARATOR);
-        result += new ConstraintDescription(_("Metric Wallet (9 x 13 cm)"), 13, 9, true);
-        result += new ConstraintDescription(_("Postcard (10 x 15 cm)"), 15, 10, true);
-        result += new ConstraintDescription(_("13 x 18 cm"), 18, 13, true);
-        result += new ConstraintDescription(_("18 x 24 cm"), 24, 18, true);
-        result += new ConstraintDescription(_("A4 (210 x 297 mm)"), 210, 297, true);
-        result += new ConstraintDescription(_("20 x 30 cm"), 30, 20, true);
-        result += new ConstraintDescription(_("24 x 40 cm"), 40, 24, true);
-        result += new ConstraintDescription(_("30 x 40 cm"), 40, 30, true);
-        result += new ConstraintDescription(_("A3 (297 x 420 mm)"), 420, 297, true);
+        result += new ConstraintDescription(_("Metric Wallet (9 × 13 cm)"), 13, 9, true);
+        result += new ConstraintDescription(_("Postcard (10 × 15 cm)"), 15, 10, true);
+        result += new ConstraintDescription(_("13 × 18 cm"), 18, 13, true);
+        result += new ConstraintDescription(_("18 × 24 cm"), 24, 18, true);
+        result += new ConstraintDescription(_("A4 (210 × 297 mm)"), 210, 297, true);
+        result += new ConstraintDescription(_("20 × 30 cm"), 30, 20, true);
+        result += new ConstraintDescription(_("24 × 40 cm"), 40, 24, true);
+        result += new ConstraintDescription(_("30 × 40 cm"), 40, 30, true);
+        result += new ConstraintDescription(_("A3 (297 × 420 mm)"), 420, 297, true);
         result += new ConstraintDescription(_("-"), 0, 0, false, SEPARATOR);
         result += new ConstraintDescription(_("Custom"), 0, 0, true, CUSTOM_ASPECT_RATIO);
 
diff --git a/src/main.vala b/src/main.vala
index 05d5f7c..7de0059 100644
--- a/src/main.vala
+++ b/src/main.vala
@@ -68,7 +68,7 @@ void library_exec(string[] mounts) {
         break;
         
         default:
-            errormsg = _("Unknown error attempting to verify Shotwell's database: %s").printf(
+            errormsg = _("Unknown error attempting to verify Shotwell’s database: %s").printf(
                 result.to_string());
         break;
     }
@@ -291,7 +291,7 @@ public OptionEntry[] get_options() {
         return entries;
     
     OptionEntry datadir = { "datadir", 'd', 0, OptionArg.FILENAME, &data_dir,
-        _("Path to Shotwell's private data"), _("DIRECTORY") };
+        _("Path to Shotwell’s private data"), _("DIRECTORY") };
     entries += datadir;
     
     OptionEntry no_monitoring = { "no-runtime-monitoring", 0, 0, OptionArg.NONE, &no_runtime_monitoring,
@@ -299,11 +299,11 @@ public OptionEntry[] get_options() {
     entries += no_monitoring;
     
     OptionEntry no_startup = { "no-startup-progress", 0, 0, OptionArg.NONE, &no_startup_progress,
-        _("Don't display startup progress meter"), null };
+        _("Don’t display startup progress meter"), null };
     entries += no_startup;
     
     OptionEntry version = { "version", 'V', 0, OptionArg.NONE, &show_version, 
-        _("Show the application's version"), null };
+        _("Show the application’s version"), null };
     entries += version;
     
     OptionEntry terminator = { null, 0, 0, 0, null, null, null };
@@ -339,7 +339,7 @@ void main(string[] args) {
             Resources.APP_GETTEXT_PACKAGE);
     } catch (Error e) {
         print(e.message + "\n");
-        print(_("Run '%s --help' to see a full list of available command line options.\n"), args[0]);
+        print(_("Run “%s --help” to see a full list of available command line options.\n"), args[0]);
         AppDirs.terminate();
         return;
     }
diff --git a/src/publishing/PublishingPluginHost.vala b/src/publishing/PublishingPluginHost.vala
index fed3802..ca935ab 100644
--- a/src/publishing/PublishingPluginHost.vala
+++ b/src/publishing/PublishingPluginHost.vala
@@ -78,7 +78,7 @@ public class ConcretePublishingHost : Plugins.StandardHostInterface,
     }
     
     public void post_error(Error err) {
-        string msg = _("Publishing to %s can't continue because an error occurred:").printf(
+        string msg = _("Publishing to %s can’t continue because an error occurred:").printf(
             active_publisher.get_service().get_pluggable_name());
         msg += GLib.Markup.printf_escaped("\n\n<i>%s</i>\n\n", err.message);
         msg += _("To try publishing to another service, select one from the above menu.");



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]