03gettext_xs.t 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. #! /usr/local/bin/perl -w
  2. # vim: syntax=perl
  3. # vim: tabstop=4
  4. use strict;
  5. use Test;
  6. use constant NUM_TESTS => 8;
  7. use Locale::Messages qw (bindtextdomain textdomain gettext);
  8. require POSIX;
  9. require File::Spec;
  10. BEGIN {
  11. my $package;
  12. if ($0 =~ /_pp\.t$/) {
  13. $package = 'gettext_pp';
  14. } else {
  15. $package = 'gettext_xs';
  16. }
  17. my $selected = Locale::Messages->select_package ($package);
  18. if ($selected ne $package && 'gettext_xs' eq $package) {
  19. print "1..0 # Skip: Locale::$package not available here.\n";
  20. exit 0;
  21. }
  22. plan tests => NUM_TESTS;
  23. }
  24. my $locale_dir = $0;
  25. $locale_dir =~ s,[^\\/]+$,, or $locale_dir = '.';
  26. $locale_dir .= '/LocaleData';
  27. my $textdomain = 'existing';
  28. Locale::Messages::nl_putenv ("LANGUAGE=de_AT");
  29. Locale::Messages::nl_putenv ("LC_ALL=de_AT");
  30. Locale::Messages::nl_putenv ("LANG=de_AT");
  31. Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT");
  32. Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1");
  33. my $missing_locale = 'locale de_AT missing';
  34. my $setlocale = POSIX::setlocale (POSIX::LC_ALL() => '');
  35. if ($setlocale && $setlocale =~ /(?:austria|at)/i) {
  36. $missing_locale = '';
  37. } else {
  38. require Locale::Util;
  39. $setlocale = Locale::Util::set_locale (POSIX::LC_ALL(), 'de', 'AT');
  40. if ($setlocale && $setlocale =~ /(?:austria|at)/i) {
  41. $missing_locale = '';
  42. }
  43. }
  44. my $bound_dir = bindtextdomain $textdomain => $locale_dir;
  45. ok defined $bound_dir;
  46. ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($bound_dir));
  47. my $bound_domain = textdomain $textdomain;
  48. ok defined $bound_domain;
  49. ok $bound_domain, $textdomain;
  50. # Default case.
  51. ok gettext ('December'), 'Dezember';
  52. # msgid eq msgstr.
  53. ok gettext ('September'), 'September';
  54. # Unknown.
  55. ok gettext ('Not translated'), 'Not translated';
  56. # Special translation for Austrian German.
  57. skip $missing_locale, gettext ('January'), 'Jänner';
  58. __END__
  59. Local Variables:
  60. mode: perl
  61. perl-indent-level: 4
  62. perl-continued-statement-offset: 4
  63. perl-continued-brace-offset: 0
  64. perl-brace-offset: -4
  65. perl-brace-imaginary-offset: 0
  66. perl-label-offset: -4
  67. cperl-indent-level: 4
  68. cperl-continued-statement-offset: 2
  69. tab-width: 4
  70. End: